[libterralib] 01/08: upstream/4.3.0+dfsg.2 : Delete non-DFSG or duplicated src diretories: * DSDK : non-redistributable * dxflib, libjpeg, qwt tiff, zlib: packaged in Debian

Alastair McKinstry mckinstry at moszumanska.debian.org
Fri Aug 7 07:57:29 UTC 2015


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

mckinstry pushed a commit to branch master
in repository libterralib.

commit d519a8e9fcce0c3deda332de7ba528976923ef03
Author: Alastair McKinstry <mckinstry at debian.org>
Date:   Sun Aug 2 23:51:31 2015 +0100

    upstream/4.3.0+dfsg.2 : Delete non-DFSG or duplicated src diretories:
    * DSDK : non-redistributable
    * dxflib, libjpeg, qwt tiff, zlib: packaged in Debian
---
 src/DSDK/include/base/lt_cacheStatus.h             |   28 -
 src/DSDK/include/base/lt_encryptStatus.h           |   63 -
 src/DSDK/include/base/lti_bbbImageReader.h         |  154 -
 src/DSDK/include/base/lti_bbbImageWriter.h         |   71 -
 src/DSDK/include/base/lti_coreStatus.h             |  142 -
 src/DSDK/include/base/lti_delegates.h              |   97 -
 src/DSDK/include/base/lti_geoCoord.h               |  393 -
 src/DSDK/include/base/lti_geoFileImageWriter.h     |  173 -
 src/DSDK/include/base/lti_geoImageReader.h         |   71 -
 src/DSDK/include/base/lti_image.h                  |  672 --
 src/DSDK/include/base/lti_imageFilter.h            |  114 -
 src/DSDK/include/base/lti_imageReader.h            |   87 -
 src/DSDK/include/base/lti_imageStage.h             |  414 -
 src/DSDK/include/base/lti_imageStageManager.h      |   84 -
 src/DSDK/include/base/lti_imageWriter.h            |  276 -
 src/DSDK/include/base/lti_navigator.h              |  393 -
 src/DSDK/include/base/lti_pixel.h                  |  444 --
 src/DSDK/include/base/lti_pixelLookupTable.h       |  142 -
 src/DSDK/include/base/lti_rawImageReader.h         |  308 -
 src/DSDK/include/base/lti_rawImageWriter.h         |  104 -
 src/DSDK/include/base/lti_sample.h                 |  220 -
 src/DSDK/include/base/lti_scene.h                  |  488 --
 src/DSDK/include/base/lti_sceneBuffer.h            |  642 --
 src/DSDK/include/base/lti_types.h                  |  194 -
 src/DSDK/include/base/lti_utils.h                  |  202 -
 src/DSDK/include/base/lti_version.h                |   22 -
 src/DSDK/include/base/mg2_status.h                 |  332 -
 src/DSDK/include/base/mg3_status.h                 |  215 -
 src/DSDK/include/c_api/lt_ioCStream.h              |  212 -
 src/DSDK/include/c_api/ltic_api.h                  |  462 --
 src/DSDK/include/filters/lti_bandSelectFilter.h    |  208 -
 src/DSDK/include/filters/lti_colorTransformer.h    |  101 -
 src/DSDK/include/filters/lti_cropFilter.h          |  100 -
 src/DSDK/include/filters/lti_datatypeTransformer.h |   84 -
 src/DSDK/include/filters/lti_dynamicRangeFilter.h  |  148 -
 src/DSDK/include/filters/lti_embeddedImage.h       |  148 -
 src/DSDK/include/filters/lti_filtersStatus.h       |   99 -
 src/DSDK/include/filters/lti_mosaicFilter.h        |  184 -
 src/DSDK/include/filters/lti_multiresFilter.h      |  161 -
 src/DSDK/include/filters/lti_staticZoomFilter.h    |   79 -
 src/DSDK/include/filters/lti_statisticsFilter.h    |   95 -
 src/DSDK/include/filters/lti_translationFilter.h   |   80 -
 src/DSDK/include/filters/lti_viewerImageFilter.h   |   94 -
 src/DSDK/include/filters/lti_watermarkFilter.h     |   97 -
 src/DSDK/include/j2k_readers/J2KImageReader.h      |  304 -
 src/DSDK/include/j2k_readers/NITFImageManager.h    |  246 -
 src/DSDK/include/j2k_readers/NITFImageReader.h     |  170 -
 src/DSDK/include/j2k_readers/j2k_types.h           |   73 -
 src/DSDK/include/j2k_readers/lti_j2kStatus.h       |  160 -
 src/DSDK/include/j2k_readers/lti_nitfStatus.h      |  111 -
 src/DSDK/include/j2k_readers/nitf_types.h          |   73 -
 src/DSDK/include/metadata/lti_geoMetadataStatus.h  |   62 -
 src/DSDK/include/metadata/lti_metadataDatabase.h   |  269 -
 src/DSDK/include/metadata/lti_metadataDumper.h     |  109 -
 src/DSDK/include/metadata/lti_metadataReader.h     |   89 -
 src/DSDK/include/metadata/lti_metadataRecord.h     |  331 -
 src/DSDK/include/metadata/lti_metadataStatus.h     |   47 -
 src/DSDK/include/metadata/lti_metadataTypes.h      |  187 -
 src/DSDK/include/metadata/lti_metadataUtils.h      |   82 -
 src/DSDK/include/metadata/lti_metadataWriter.h     |   90 -
 .../mrsid_readers/MG3CompositeImageReader.h        |  272 -
 src/DSDK/include/mrsid_readers/MrSIDImageReader.h  |  184 -
 .../include/mrsid_readers/MrSIDImageReaderBase.h   |  235 -
 .../include/mrsid_readers/MrSIDPasswordDelegate.h  |  171 -
 .../include/mrsid_readers/lti_mrsidReadersStatus.h |   67 -
 src/DSDK/include/support/lt_base.h                 |   30 -
 src/DSDK/include/support/lt_define.h               |  154 -
 src/DSDK/include/support/lt_fileSpec.h             |  251 -
 src/DSDK/include/support/lt_ioBufferedStream.h     |   79 -
 src/DSDK/include/support/lt_ioCallbackStream.h     |  121 -
 .../include/support/lt_ioCallbackStreamTypes.h     |  133 -
 src/DSDK/include/support/lt_ioDynamicMemStream.h   |  196 -
 src/DSDK/include/support/lt_ioFile64Stream.h       |  242 -
 src/DSDK/include/support/lt_ioFileStream.h         |  249 -
 src/DSDK/include/support/lt_ioMemStream.h          |   91 -
 src/DSDK/include/support/lt_ioStatus.h             |   55 -
 src/DSDK/include/support/lt_ioStreamInf.h          |  218 -
 src/DSDK/include/support/lt_ioSubStream.h          |  233 -
 src/DSDK/include/support/lt_lib_io.h               |   63 -
 src/DSDK/include/support/lt_platform.h             |  223 -
 src/DSDK/include/support/lt_status.h               |  151 -
 src/DSDK/include/support/lt_system.h               |   94 -
 src/DSDK/include/support/lt_types.h                |  146 -
 src/DSDK/include/support/lt_utilStatus.h           |  125 -
 src/DSDK/include/support/lt_utilStatusData.h       |  169 -
 src/DSDK/include/support/lt_utilStatusStrings.h    |   86 -
 src/DSDK/include/writers/BMPImageWriter.h          |  102 -
 src/DSDK/include/writers/GeoTIFFImageWriter.h      |   57 -
 src/DSDK/include/writers/JpegImageWriter.h         |   94 -
 src/DSDK/include/writers/PNGImageWriter.h          |   75 -
 src/DSDK/include/writers/TIFFImageWriter.h         |   91 -
 src/DSDK/include/writers/lti_writersStatus.h       |  104 -
 src/dxflib/dl_attributes.h                         |  182 -
 src/dxflib/dl_codes.h                              |  542 --
 src/dxflib/dl_creationadapter.h                    |  102 -
 src/dxflib/dl_creationinterface.h                  |  266 -
 src/dxflib/dl_dxf.cpp                              | 5070 ------------
 src/dxflib/dl_dxf.h                                |  430 -
 src/dxflib/dl_entities.h                           | 1451 ----
 src/dxflib/dl_exception.h                          |   55 -
 src/dxflib/dl_extrusion.h                          |  144 -
 src/dxflib/dl_writer.h                             |  618 --
 src/dxflib/dl_writer_ascii.cpp                     |  153 -
 src/dxflib/dl_writer_ascii.h                       |   75 -
 src/libjpeg/ansi2knr.c                             |  693 --
 src/libjpeg/cderror.h                              |  132 -
 src/libjpeg/cdjpeg.h                               |  184 -
 src/libjpeg/ckconfig.c                             |  402 -
 src/libjpeg/jcapimin.c                             |  280 -
 src/libjpeg/jcapistd.c                             |  161 -
 src/libjpeg/jccoefct.c                             |  449 --
 src/libjpeg/jccolor.c                              |  459 --
 src/libjpeg/jcdctmgr.c                             |  387 -
 src/libjpeg/jchuff.c                               |  909 ---
 src/libjpeg/jchuff.h                               |   47 -
 src/libjpeg/jcinit.c                               |   72 -
 src/libjpeg/jcmainct.c                             |  293 -
 src/libjpeg/jcmarker.c                             |  664 --
 src/libjpeg/jcmaster.c                             |  590 --
 src/libjpeg/jcomapi.c                              |  106 -
 src/libjpeg/jconfig.h                              |   45 -
 src/libjpeg/jcparam.c                              |  610 --
 src/libjpeg/jcphuff.c                              |  833 --
 src/libjpeg/jcprepct.c                             |  354 -
 src/libjpeg/jcsample.c                             |  519 --
 src/libjpeg/jctrans.c                              |  388 -
 src/libjpeg/jdapimin.c                             |  395 -
 src/libjpeg/jdapistd.c                             |  275 -
 src/libjpeg/jdatadst.c                             |  151 -
 src/libjpeg/jdatasrc.c                             |  212 -
 src/libjpeg/jdcoefct.c                             |  736 --
 src/libjpeg/jdcolor.c                              |  396 -
 src/libjpeg/jdct.h                                 |  176 -
 src/libjpeg/jddctmgr.c                             |  269 -
 src/libjpeg/jdhuff.c                               |  651 --
 src/libjpeg/jdhuff.h                               |  201 -
 src/libjpeg/jdinput.c                              |  381 -
 src/libjpeg/jdmainct.c                             |  512 --
 src/libjpeg/jdmarker.c                             | 1360 ----
 src/libjpeg/jdmaster.c                             |  557 --
 src/libjpeg/jdmerge.c                              |  400 -
 src/libjpeg/jdphuff.c                              |  668 --
 src/libjpeg/jdpostct.c                             |  290 -
 src/libjpeg/jdsample.c                             |  478 --
 src/libjpeg/jdtrans.c                              |  143 -
 src/libjpeg/jerror.c                               |  252 -
 src/libjpeg/jerror.h                               |  291 -
 src/libjpeg/jfdctflt.c                             |  168 -
 src/libjpeg/jfdctfst.c                             |  224 -
 src/libjpeg/jfdctint.c                             |  283 -
 src/libjpeg/jidctflt.c                             |  242 -
 src/libjpeg/jidctfst.c                             |  368 -
 src/libjpeg/jidctint.c                             |  389 -
 src/libjpeg/jidctred.c                             |  398 -
 src/libjpeg/jinclude.h                             |   91 -
 src/libjpeg/jmemansi.c                             |  167 -
 src/libjpeg/jmemmgr.c                              | 1118 ---
 src/libjpeg/jmemname.c                             |  276 -
 src/libjpeg/jmemnobs.c                             |  109 -
 src/libjpeg/jmemsys.h                              |  198 -
 src/libjpeg/jmorecfg.h                             |  363 -
 src/libjpeg/jpegint.h                              |  392 -
 src/libjpeg/jpeglib.h                              | 1096 ---
 src/libjpeg/jpegtran.c                             |  504 --
 src/libjpeg/jquant1.c                              |  856 --
 src/libjpeg/jquant2.c                              | 1310 ---
 src/libjpeg/jutils.c                               |  179 -
 src/libjpeg/jversion.h                             |   14 -
 src/libjpeg/rdbmp.c                                |  439 -
 src/libjpeg/rdcolmap.c                             |  253 -
 src/libjpeg/rdgif.c                                |   38 -
 src/libjpeg/rdjpgcom.c                             |  496 --
 src/libjpeg/rdppm.c                                |  458 --
 src/libjpeg/rdrle.c                                |  387 -
 src/libjpeg/rdswitch.c                             |  332 -
 src/libjpeg/rdtarga.c                              |  500 --
 src/libjpeg/transupp.c                             |  928 ---
 src/libjpeg/transupp.h                             |  135 -
 src/libjpeg/wrbmp.c                                |  442 -
 src/libjpeg/wrgif.c                                |  399 -
 src/libjpeg/wrjpgcom.c                             |  583 --
 src/libjpeg/wrppm.c                                |  268 -
 src/libjpeg/wrrle.c                                |  305 -
 src/libjpeg/wrtarga.c                              |  253 -
 src/qwt/include/qwt.h                              |   22 -
 src/qwt/include/qwt_abstract_scale.h               |   67 -
 src/qwt/include/qwt_abstract_scale_draw.h          |  141 -
 src/qwt/include/qwt_abstract_slider.h              |  182 -
 src/qwt/include/qwt_analog_clock.h                 |   85 -
 src/qwt/include/qwt_array.h                        |   29 -
 src/qwt/include/qwt_arrow_button.h                 |   54 -
 src/qwt/include/qwt_compass.h                      |   80 -
 src/qwt/include/qwt_compass_rose.h                 |   70 -
 src/qwt/include/qwt_counter.h                      |  153 -
 src/qwt/include/qwt_data.h                         |  159 -
 src/qwt/include/qwt_dial.h                         |  209 -
 src/qwt/include/qwt_dial_needle.h                  |  195 -
 src/qwt/include/qwt_double_interval.h              |  151 -
 src/qwt/include/qwt_double_range.h                 |   88 -
 src/qwt/include/qwt_double_rect.h                  |  440 -
 src/qwt/include/qwt_dyngrid_layout.h               |  101 -
 src/qwt/include/qwt_event_pattern.h                |  219 -
 src/qwt/include/qwt_global.h                       |   65 -
 src/qwt/include/qwt_interval_data.h                |   70 -
 src/qwt/include/qwt_knob.h                         |   96 -
 src/qwt/include/qwt_layout_metrics.h               |  153 -
 src/qwt/include/qwt_legend.h                       |  124 -
 src/qwt/include/qwt_legend_item.h                  |  109 -
 src/qwt/include/qwt_math.h                         |  175 -
 src/qwt/include/qwt_paint_buffer.h                 |   65 -
 src/qwt/include/qwt_painter.h                      |  140 -
 src/qwt/include/qwt_picker.h                       |  377 -
 src/qwt/include/qwt_picker_machine.h               |  152 -
 src/qwt/include/qwt_plot.h                         |  318 -
 src/qwt/include/qwt_plot_canvas.h                  |  117 -
 src/qwt/include/qwt_plot_curve.h                   |  260 -
 src/qwt/include/qwt_plot_dict.h                    |   51 -
 src/qwt/include/qwt_plot_grid.h                    |   87 -
 src/qwt/include/qwt_plot_item.h                    |  109 -
 src/qwt/include/qwt_plot_layout.h                  |   87 -
 src/qwt/include/qwt_plot_marker.h                  |  103 -
 src/qwt/include/qwt_plot_picker.h                  |  122 -
 src/qwt/include/qwt_plot_printfilter.h             |   79 -
 src/qwt/include/qwt_plot_zoomer.h                  |  127 -
 src/qwt/include/qwt_rect.h                         |   50 -
 src/qwt/include/qwt_round_scale_draw.h             |   72 -
 src/qwt/include/qwt_scale_div.h                    |  132 -
 src/qwt/include/qwt_scale_draw.h                   |  107 -
 src/qwt/include/qwt_scale_engine.h                 |  180 -
 src/qwt/include/qwt_scale_map.h                    |  167 -
 src/qwt/include/qwt_scale_widget.h                 |  105 -
 src/qwt/include/qwt_slider.h                       |  117 -
 src/qwt/include/qwt_spline.h                       |   82 -
 src/qwt/include/qwt_symbol.h                       |   66 -
 src/qwt/include/qwt_text.h                         |  112 -
 src/qwt/include/qwt_text_engine.h                  |  121 -
 src/qwt/include/qwt_text_label.h                   |   72 -
 src/qwt/include/qwt_thermo.h                       |  168 -
 src/qwt/include/qwt_wheel.h                        |   79 -
 src/qwt/qwt_abstract_scale.cpp                     |  300 -
 src/qwt/qwt_abstract_scale_draw.cpp                |  397 -
 src/qwt/qwt_abstract_slider.cpp                    |  565 --
 src/qwt/qwt_analog_clock.cpp                       |  213 -
 src/qwt/qwt_arrow_button.cpp                       |  362 -
 src/qwt/qwt_compass.cpp                            |  287 -
 src/qwt/qwt_compass_rose.cpp                       |  238 -
 src/qwt/qwt_counter.cpp                            |  603 --
 src/qwt/qwt_data.cpp                               |  294 -
 src/qwt/qwt_dial.cpp                               | 1216 ---
 src/qwt/qwt_dial_needle.cpp                        |  546 --
 src/qwt/qwt_double_interval.cpp                    |  149 -
 src/qwt/qwt_double_range.cpp                       |  389 -
 src/qwt/qwt_double_rect.cpp                        |  592 --
 src/qwt/qwt_dyngrid_layout.cpp                     |  691 --
 src/qwt/qwt_event_pattern.cpp                      |  288 -
 src/qwt/qwt_interval_data.cpp                      |   74 -
 src/qwt/qwt_knob.cpp                               |  524 --
 src/qwt/qwt_layout_metrics.cpp                     |  309 -
 src/qwt/qwt_legend.cpp                             |  595 --
 src/qwt/qwt_legend_item.cpp                        |  459 --
 src/qwt/qwt_math.cpp                               |   47 -
 src/qwt/qwt_paint_buffer.cpp                       |  201 -
 src/qwt/qwt_painter.cpp                            |  545 --
 src/qwt/qwt_picker.cpp                             | 1294 ---
 src/qwt/qwt_picker_machine.cpp                     |  371 -
 src/qwt/qwt_plot.cpp                               |  839 --
 src/qwt/qwt_plot_axis.cpp                          |  603 --
 src/qwt/qwt_plot_canvas.cpp                        |  355 -
 src/qwt/qwt_plot_curve.cpp                         | 1469 ----
 src/qwt/qwt_plot_dict.cpp                          |  185 -
 src/qwt/qwt_plot_grid.cpp                          |  349 -
 src/qwt/qwt_plot_item.cpp                          |  295 -
 src/qwt/qwt_plot_layout.cpp                        | 1165 ---
 src/qwt/qwt_plot_marker.cpp                        |  386 -
 src/qwt/qwt_plot_picker.cpp                        |  405 -
 src/qwt/qwt_plot_print.cpp                         |  487 --
 src/qwt/qwt_plot_printfilter.cpp                   |  593 --
 src/qwt/qwt_plot_zoomer.cpp                        |  637 --
 src/qwt/qwt_rect.cpp                               |  157 -
 src/qwt/qwt_round_scale_draw.cpp                   |  392 -
 src/qwt/qwt_scale_div.cpp                          |  146 -
 src/qwt/qwt_scale_draw.cpp                         |  833 --
 src/qwt/qwt_scale_engine.cpp                       |  916 ---
 src/qwt/qwt_scale_map.cpp                          |  251 -
 src/qwt/qwt_scale_widget.cpp                       |  707 --
 src/qwt/qwt_slider.cpp                             |  796 --
 src/qwt/qwt_spline.cpp                             |  381 -
 src/qwt/qwt_symbol.cpp                             |  265 -
 src/qwt/qwt_text.cpp                               |  389 -
 src/qwt/qwt_text_engine.cpp                        |  314 -
 src/qwt/qwt_text_label.cpp                         |  304 -
 src/qwt/qwt_thermo.cpp                             |  810 --
 src/qwt/qwt_wheel.cpp                              |  637 --
 src/tiff/cpl_csv.c                                 | 1016 ---
 src/tiff/cpl_csv.h                                 |   83 -
 src/tiff/cpl_serv.c                                |  596 --
 src/tiff/cpl_serv.h                                |  276 -
 src/tiff/csv/README                                |   38 -
 src/tiff/csv/alias.csv                             | 2001 -----
 src/tiff/csv/area.csv                              | 1751 ----
 src/tiff/csv/codes.csv                             |   84 -
 src/tiff/csv/compd_cs.c                            |   12 -
 src/tiff/csv/compd_cs.csv                          |    9 -
 src/tiff/csv/coordinate_axis.csv                   |   75 -
 src/tiff/csv/coordinate_axis_name.csv              |   29 -
 src/tiff/csv/coordinate_operation.csv              | 2020 -----
 src/tiff/csv/coordinate_operation_method.csv       | 1513 ----
 src/tiff/csv/coordinate_operation_parameter.csv    |   99 -
 .../csv/coordinate_operation_parameter_value.csv   | 8406 --------------------
 src/tiff/csv/coordinate_operation_path.csv         |  336 -
 src/tiff/csv/coordinate_reference_system.csv       | 2609 ------
 src/tiff/csv/coordinate_system.csv                 |   38 -
 src/tiff/csv/datum.csv                             |  332 -
 src/tiff/csv/deprecation.csv                       |  276 -
 src/tiff/csv/ellips_alias.c                        |   10 -
 src/tiff/csv/ellips_alias.csv                      |    7 -
 src/tiff/csv/ellipsoid.c                           |   42 -
 src/tiff/csv/ellipsoid.csv                         |   39 -
 src/tiff/csv/gcs.csv                               |  278 -
 src/tiff/csv/gdatum_alias.c                        |   11 -
 src/tiff/csv/gdatum_alias.csv                      |    8 -
 src/tiff/csv/geod_datum.c                          |  213 -
 src/tiff/csv/geod_datum.csv                        |  210 -
 src/tiff/csv/geod_trf.c                            |  492 --
 src/tiff/csv/geod_trf.csv                          |  489 --
 src/tiff/csv/horiz_cs.c                            | 1496 ----
 src/tiff/csv/horiz_cs.csv                          | 1493 ----
 src/tiff/csv/naming_system.csv                     |   13 -
 src/tiff/csv/p_meridian.c                          |   17 -
 src/tiff/csv/p_meridian.csv                        |   14 -
 src/tiff/csv/pcs.csv                               | 2251 ------
 src/tiff/csv/prime_meridian.csv                    |   14 -
 src/tiff/csv/projop_wparm.csv                      | 1083 ---
 src/tiff/csv/stateplane.csv                        |  258 -
 src/tiff/csv/trf_method.c                          |  205 -
 src/tiff/csv/trf_method.csv                        |  984 ---
 src/tiff/csv/trf_nonpolynomial.c                   | 1082 ---
 src/tiff/csv/trf_nonpolynomial.csv                 | 1079 ---
 src/tiff/csv/trf_path.c                            |  568 --
 src/tiff/csv/trf_path.csv                          |  565 --
 src/tiff/csv/unit_of_measure.csv                   |   64 -
 src/tiff/csv/uom_an_alias.c                        |    5 -
 src/tiff/csv/uom_an_alias.csv                      |    2 -
 src/tiff/csv/uom_angle.c                           |   18 -
 src/tiff/csv/uom_angle.csv                         |   15 -
 src/tiff/csv/uom_le_alias.c                        |   27 -
 src/tiff/csv/uom_le_alias.csv                      |   24 -
 src/tiff/csv/uom_length.c                          |   39 -
 src/tiff/csv/uom_length.csv                        |   36 -
 src/tiff/csv/uom_sc_alias.c                        |    4 -
 src/tiff/csv/uom_sc_alias.csv                      |    1 -
 src/tiff/csv/uom_scale.c                           |    6 -
 src/tiff/csv/uom_scale.csv                         |    3 -
 src/tiff/csv/version_history.csv                   |   23 -
 src/tiff/csv/vert_cs.c                             |   31 -
 src/tiff/csv/vert_cs.csv                           |   28 -
 src/tiff/csv/vert_datum.c                          |   32 -
 src/tiff/csv/vert_datum.csv                        |   29 -
 src/tiff/csv/vert_offset.c                         |    5 -
 src/tiff/csv/vert_offset.csv                       |    2 -
 src/tiff/epsg_datum.inc                            |  174 -
 src/tiff/epsg_ellipse.inc                          |   48 -
 src/tiff/epsg_gcs.inc                              |  193 -
 src/tiff/epsg_pcs.inc                              | 1012 ---
 src/tiff/epsg_pm.inc                               |   22 -
 src/tiff/epsg_proj.inc                             |  443 --
 src/tiff/epsg_units.inc                            |   35 -
 src/tiff/epsg_vertcs.inc                           |   46 -
 src/tiff/fax3sm.c                                  | 1046 ---
 src/tiff/geo_config.h                              |   24 -
 src/tiff/geo_ctrans.inc                            |   91 -
 src/tiff/geo_extra.c                               |  747 --
 src/tiff/geo_free.c                                |   62 -
 src/tiff/geo_get.c                                 |  176 -
 src/tiff/geo_keyp.h                                |   98 -
 src/tiff/geo_names.c                               |  175 -
 src/tiff/geo_new.c                                 |  242 -
 src/tiff/geo_normalize.c                           | 2402 ------
 src/tiff/geo_normalize.h                           |  238 -
 src/tiff/geo_print.c                               |  517 --
 src/tiff/geo_set.c                                 |  262 -
 src/tiff/geo_tiffp.c                               |  140 -
 src/tiff/geo_tiffp.h                               |  114 -
 src/tiff/geo_trans.c                               |  334 -
 src/tiff/geo_write.c                               |  193 -
 src/tiff/geokeys.h                                 |   54 -
 src/tiff/geokeys.inc                               |   76 -
 src/tiff/geonames.h                                |  146 -
 src/tiff/geotiff.h                                 |  117 -
 src/tiff/geotiff_proj4.c                           |  716 --
 src/tiff/geotiffio.h                               |   16 -
 src/tiff/geovalues.h                               |  120 -
 src/tiff/port.h                                    |   32 -
 src/tiff/t4.h                                      |  285 -
 src/tiff/tif_aux.c                                 |  267 -
 src/tiff/tif_close.c                               |  119 -
 src/tiff/tif_codec.c                               |  150 -
 src/tiff/tif_color.c                               |  275 -
 src/tiff/tif_compress.c                            |  286 -
 src/tiff/tif_config.h                              |   45 -
 src/tiff/tif_dir.c                                 | 1350 ----
 src/tiff/tif_dir.h                                 |  199 -
 src/tiff/tif_dirinfo.c                             |  846 --
 src/tiff/tif_dirread.c                             | 1789 -----
 src/tiff/tif_dirwrite.c                            | 1243 ---
 src/tiff/tif_dumpmode.c                            |  117 -
 src/tiff/tif_error.c                               |   73 -
 src/tiff/tif_extension.c                           |  111 -
 src/tiff/tif_fax3.c                                | 1566 ----
 src/tiff/tif_fax3.h                                |  525 --
 src/tiff/tif_fax3sm.c                              | 1253 ---
 src/tiff/tif_flush.c                               |   67 -
 src/tiff/tif_getimage.c                            | 2598 ------
 src/tiff/tif_jpeg.c                                | 1942 -----
 src/tiff/tif_luv.c                                 | 1606 ----
 src/tiff/tif_lzw.c                                 | 1084 ---
 src/tiff/tif_machdep.c                             |  186 -
 src/tiff/tif_next.c                                |  144 -
 src/tiff/tif_open.c                                |  683 --
 src/tiff/tif_packbits.c                            |  293 -
 src/tiff/tif_pixarlog.c                            | 1342 ----
 src/tiff/tif_predict.c                             |  626 --
 src/tiff/tif_predict.h                             |   64 -
 src/tiff/tif_print.c                               |  639 --
 src/tiff/tif_read.c                                |  650 --
 src/tiff/tif_strip.c                               |  294 -
 src/tiff/tif_swab.c                                |  235 -
 src/tiff/tif_thunder.c                             |  158 -
 src/tiff/tif_tile.c                                |  273 -
 src/tiff/tif_unix.c                                |  293 -
 src/tiff/tif_version.c                             |   33 -
 src/tiff/tif_warning.c                             |   74 -
 src/tiff/tif_win32.c                               |  393 -
 src/tiff/tif_write.c                               |  725 --
 src/tiff/tif_zip.c                                 |  378 -
 src/tiff/tiff.h                                    |  647 --
 src/tiff/tiffcomp.h                                |  221 -
 src/tiff/tiffconf.h                                |  101 -
 src/tiff/tiffio.h                                  |  517 --
 src/tiff/tiffiop.h                                 |  323 -
 src/tiff/tiffvers.h                                |    9 -
 src/tiff/uvcode.h                                  |  173 -
 src/tiff/xtiff.c                                   |  198 -
 src/tiff/xtiffio.h                                 |   72 -
 src/tiff/xtiffiop.h                                |   90 -
 src/zlib/zconf.h                                   |  332 -
 src/zlib/zlib.h                                    | 1357 ----
 447 files changed, 165301 deletions(-)

diff --git a/src/DSDK/include/base/lt_cacheStatus.h b/src/DSDK/include/base/lt_cacheStatus.h
deleted file mode 100644
index 0b0bfa6..0000000
--- a/src/DSDK/include/base/lt_cacheStatus.h
+++ /dev/null
@@ -1,28 +0,0 @@
-/* $Id: lt_cacheStatus.h 5124 2006-10-27 11:40:40Z lubia $ */
-/* //////////////////////////////////////////////////////////////////////////
-//                                                                         //
-// This code is Copyright (c) 2005 LizardTech, Inc, 1008 Western Avenue,   //
-// Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         //
-// prohibited.  Access to and use of this code is permitted only under     //
-// license from LizardTech, Inc.  Portions of the code are protected by    //
-// US and foreign patents and other filings. All Rights Reserved.          //
-//                                                                         //
-////////////////////////////////////////////////////////////////////////// */     
-/* PUBLIC */
-
-#ifndef LT_CACHESTATUS_H
-#define LT_CACHESTATUS_H
-
-// lt_lib_base
-#include "lt_base.h"
-
-
-#define LT_STS_CACHE_BASE                        16000
-LT_STATUSSTRING_ADD(LT_STS_CACHE_BASE, "lt_lib_cache BASE")
-
-
-#define LT_STS_CACHE_MAX                        16999
-LT_STATUSSTRING_ADD(LT_STS_CACHE_MAX, "lt_lib_cache MAX")
-
-
-#endif // LT_CACHESTATUS_H
diff --git a/src/DSDK/include/base/lt_encryptStatus.h b/src/DSDK/include/base/lt_encryptStatus.h
deleted file mode 100644
index ccc5d7b..0000000
--- a/src/DSDK/include/base/lt_encryptStatus.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/* $Id: lt_encryptStatus.h 5124 2006-10-27 11:40:40Z lubia $ */
-/* //////////////////////////////////////////////////////////////////////////
-//                                                                         //
-// This code is Copyright (c) 2005 LizardTech, Inc, 1008 Western Avenue,   //
-// Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         //
-// prohibited.  Access to and use of this code is permitted only under     //
-// license from LizardTech, Inc.  Portions of the code are protected by    //
-// US and foreign patents and other filings. All Rights Reserved.          //
-//                                                                         //
-////////////////////////////////////////////////////////////////////////// */     
-/* PUBLIC */
-
-
-#ifndef ENCRYPTSTATUS_H
-#define ENCRYPTSTATUS_H
-
-// lt_lib_base
-#include "lt_base.h"
-
-
-#define LT_STS_EncryptBase                                     4000
-LT_STATUSSTRING_ADD(LT_STS_EncryptBase, "BASE")
-
-#define LT_STS_EncryptDISABLED                                 4001
-LT_STATUSSTRING_ADD(LT_STS_EncryptDISABLED, "security disabled")
-
-#define LT_STS_EncryptLOCK_ALREADY_LOCKED                      4002
-LT_STATUSSTRING_ADD(LT_STS_EncryptLOCK_ALREADY_LOCKED, "can't lock an already-locked image")
-#define LT_STS_EncryptUNLOCK_NOT_LOCKED                        4003
-LT_STATUSSTRING_ADD(LT_STS_EncryptUNLOCK_NOT_LOCKED, "can't unlock an unlocked imaged")
-#define LT_STS_EncryptLOCK_NEED_KEY                            4004
-LT_STATUSSTRING_ADD(LT_STS_EncryptLOCK_NEED_KEY, "can't lock an image without a key")
-
-#define LT_STS_EncryptUNLOCK_NEED_KEY                          4005
-LT_STATUSSTRING_ADD(LT_STS_EncryptUNLOCK_NEED_KEY, "can't unlock a locked image without a key")
-#define LT_STS_EncryptUNLOCK_WRONG_KEY                         4006
-LT_STATUSSTRING_ADD(LT_STS_EncryptUNLOCK_WRONG_KEY, "key is valid but doesn't match image's lock")
-#define LT_STS_EncryptINVALID_LICENSE                          4007
-LT_STATUSSTRING_ADD(LT_STS_EncryptINVALID_LICENSE, "License is invalid")
-#define LT_STS_EncryptBAD_PASSWORD                             4008
-LT_STATUSSTRING_ADD(LT_STS_EncryptBAD_PASSWORD, "Password is invalid")
-#define LT_STS_EncryptBAD_KEY                                  4009
-LT_STATUSSTRING_ADD(LT_STS_EncryptBAD_KEY, "key is invalid (violates definition of key)")
-#define LT_STS_EncryptLOCK_NO_KEY_PROVIDER                     4010
-LT_STATUSSTRING_ADD(LT_STS_EncryptLOCK_NO_KEY_PROVIDER, "can't lock without a key provider")
-#define LT_STS_EncryptUNLOCK_NO_KEY_PROVIDER                   4011
-LT_STATUSSTRING_ADD(LT_STS_EncryptUNLOCK_NO_KEY_PROVIDER, "can't unlock without a key provider")
-#define LT_STS_EncryptTYPE_KEY_PROVIDER_DEFINED                4012
-LT_STATUSSTRING_ADD(LT_STS_EncryptTYPE_KEY_PROVIDER_DEFINED, "UNLOCK_WRONG_KEY with KeyProvider specific msg")
-#define LT_STS_EncryptPromptToENCRYPT                          4013
-LT_STATUSSTRING_ADD(LT_STS_EncryptPromptToENCRYPT, "Prompt to encrypt")
-#define LT_STS_EncryptPromptToDECRYPT                          4014
-LT_STATUSSTRING_ADD(LT_STS_EncryptPromptToDECRYPT, "Prompt to decrypt")
-#define LT_STS_EncryptUnused4015                               4015
-
-#define LT_STS_EncryptInternalError                            4100
-LT_STATUSSTRING_ADD(LT_STS_EncryptInternalError, "Internal error")
-
-#define LT_STS_EncryptMax                                      4999
-LT_STATUSSTRING_ADD(LT_STS_EncryptMax, "MAX")
-
-
-#endif // ENCRYPTSTATUS_H
diff --git a/src/DSDK/include/base/lti_bbbImageReader.h b/src/DSDK/include/base/lti_bbbImageReader.h
deleted file mode 100644
index 9196cd6..0000000
--- a/src/DSDK/include/base/lti_bbbImageReader.h
+++ /dev/null
@@ -1,154 +0,0 @@
-/* $Id: lti_bbbImageReader.h 5124 2006-10-27 11:40:40Z lubia $ */
-/* //////////////////////////////////////////////////////////////////////////
-//                                                                         //
-// This code is Copyright (c) 2004 LizardTech, Inc, 1008 Western Avenue,   //
-// Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         //
-// prohibited.  Access to and use of this code is permitted only under     //
-// license from LizardTech, Inc.  Portions of the code are protected by    //
-// US and foreign patents and other filings. All Rights Reserved.          //
-//                                                                         //
-////////////////////////////////////////////////////////////////////////// */
-/* PUBLIC */
-
-#ifndef LTI_BBB_IMAGE_READER_H
-#define LTI_BBB_IMAGE_READER_H
-
-// lt_lib_mrsid_core
-#include "lti_rawImageReader.h"
-
-// system
-#include <stdio.h>  // for FILE*
-
-LT_BEGIN_NAMESPACE(LizardTech)
-
-class LTIOStreamInf;
-class LTIReusableBSQBuffer;
-class LTIBBBHeaderReader;
-
-/**
- * read an image from a BBB file
- *
- * This class provides support for reading BBB files, i.e. a raw file with a
- * BIL/BIP/BSQ-style header.
- *
- */
-class LTIBBBImageReader : public LTIRawImageReader
-{
-public:
-   /**
-    * constructor
-    *
-    * This function creates an image from a BBB file.
-    *
-    * @param fileSpec      the image file to read from
-    * @param useWorldFile  use world file information if available
-    */
-   LTIBBBImageReader(const LTFileSpec& fileSpec, bool useWorldFile = true);
-
-   /**
-    * constructor
-    *
-    * This function creates an image from a BBB file.
-    *
-    * @param file          the image file to read from
-    * @param useWorldFile  use world file information if available
-    */
-   LTIBBBImageReader(const char* file, bool useWorldFile = true);
-
-   /**
-    * destructor
-    */
-   ~LTIBBBImageReader();
-
-   /**
-    * intializer
-    */
-   LT_STATUS initialize();
-
-private:
-   LT_STATUS checkWorldFile(LTIGeoCoord*&);
-   LT_STATUS doImagineMetadata();
-
-   LTIBBBHeaderReader* m_header;
-
-   // nope
-   LTIBBBImageReader();
-   LTIBBBImageReader(LTIBBBImageReader&);
-   LTIBBBImageReader& operator=(const LTIBBBImageReader&);
-};
-
-
-class LTIBBBHeaderReader
-{
-public:
-   LTIBBBHeaderReader(const LTFileSpec&);
-   ~LTIBBBHeaderReader();
-   LT_STATUS read();
-
-public:
-   int            m_width;
-   int            m_height;
-   LTIDataType    m_dataType;
-   LTIColorSpace  m_colorSpace;
-   int            m_numBands;
-   LTILayout      m_layout;
-   char*          m_byteOrder;
-   int            m_numBits;
-   LTIEndian      m_endian;
-
-   double         m_window;
-   double         m_level;
-   double         m_drMin;
-   double         m_drMax;
-   bool           m_hasWindow;
-   bool           m_hasLevel;
-   bool           m_hasDRMin;
-   bool           m_hasDRMax;
-
-   int            m_bandgapbytes;
-   int            m_bandrowbytes;
-   int            m_totalrowbytes;
-   int            m_skipbytes;
-
-   bool           m_hasUlxmap;
-   bool           m_hasUlymap;
-   bool           m_hasXdim;
-   bool           m_hasYdim;
-   double         m_ulxmap;
-   double         m_ulymap;
-   double         m_xdim;
-   double         m_ydim;
-
-   // Imagine header data
-   bool        m_bFromImagine; //indicates whether to display Imagine Metadata
-   char*       m_projname;
-   char*       m_sphereName;
-   char*       m_units;
-   int         m_proZone;
-   double*     m_projParams;
-   double      m_sphereMajor;
-   double      m_sphereMinor;
-   double      m_sphereEccentricitySquared;
-   double      m_sphereRadius;
-
-private:
-   LT_STATUS init();
-   LT_STATUS finish();
-   LT_STATUS readLines();
-   LT_STATUS readLine(int& offset_last, bool& done);
-   LT_STATUS nextLine();
-   LT_STATUS readInt(int&);
-   LT_STATUS readDouble(double&);
-   LT_STATUS readString(char*);
-
-   const LTFileSpec& m_fileSpec;
-   FILE* m_fp;
-   
-   LTIBBBHeaderReader(const LTIBBBHeaderReader &);
-   LTIBBBHeaderReader &operator=(const LTIBBBHeaderReader &);
-};
-
-
-LT_END_NAMESPACE(LizardTech)
-
-#endif // LTI_BBB_IMAGE_READER_H
diff --git a/src/DSDK/include/base/lti_bbbImageWriter.h b/src/DSDK/include/base/lti_bbbImageWriter.h
deleted file mode 100644
index 643d0a9..0000000
--- a/src/DSDK/include/base/lti_bbbImageWriter.h
+++ /dev/null
@@ -1,71 +0,0 @@
-/* $Id: lti_bbbImageWriter.h 5124 2006-10-27 11:40:40Z lubia $ */
-/* //////////////////////////////////////////////////////////////////////////
-//                                                                         //
-// This code is Copyright (c) 2004 LizardTech, Inc, 1008 Western Avenue,   //
-// Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         //
-// prohibited.  Access to and use of this code is permitted only under     //
-// license from LizardTech, Inc.  Portions of the code are protected by    //
-// US and foreign patents and other filings. All Rights Reserved.          //
-//                                                                         //
-////////////////////////////////////////////////////////////////////////// */
-/* PUBLIC */
-
-#ifndef LTI_BBBIMAGEWRITER_H
-#define LTI_BBBIMAGEWRITER_H
-
-// lt_lib_mrsid_core
-#include "lti_rawImageWriter.h"
-
-LT_BEGIN_NAMESPACE(LizardTech)
-
-#if defined(LT_COMPILER_MS)
-   #pragma warning(push,4)
-#endif
-
-/**
- * writes an image stage to a BBB file
- *
- * This class provides support for writing BBB files, i.e. a raw file with a BBB-style
- * header.
- */
-class LTIBBBImageWriter : public LTIRawImageWriter
-{
-public:
-   /**
-    * constructor
-    *
-    * Creates a writer for BBB images.
-    *
-    * @param  image   the image to write from
-    */
-   LTIBBBImageWriter(LTIImageStage* image);
-
-   virtual ~LTIBBBImageWriter();
-
-   LT_STATUS writeBegin(const LTIScene& scene);
-
-   static LT_STATUS writeHeader(const LTFileSpec& fileSpec,
-                                const LTIImage& image,
-                                const LTIScene* userScene,
-                                LTIEndian byteOrder,
-                                LTILayout layout);
-
-private:
-   LT_STATUS checkImpedance() const;
-
-   LT_STATUS writeHeader(const LTIScene&);
-
-   // nope
-   LTIBBBImageWriter();
-   LTIBBBImageWriter(LTIBBBImageWriter&);
-   LTIBBBImageWriter& operator=(const LTIBBBImageWriter&);
-};
-
-
-LT_END_NAMESPACE(LizardTech)
-
-#if defined(LT_COMPILER_MS)
-	#pragma warning(pop)
-#endif
-
-#endif // LTI_BBBIMAGEWRITER_H
diff --git a/src/DSDK/include/base/lti_coreStatus.h b/src/DSDK/include/base/lti_coreStatus.h
deleted file mode 100644
index 2dbc27f..0000000
--- a/src/DSDK/include/base/lti_coreStatus.h
+++ /dev/null
@@ -1,142 +0,0 @@
-/* $Id: lti_coreStatus.h 5124 2006-10-27 11:40:40Z lubia $ */
-/* //////////////////////////////////////////////////////////////////////////
-//                                                                         //
-// This code is Copyright (c) 2004 LizardTech, Inc, 1008 Western Avenue,   //
-// Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         //
-// prohibited.  Access to and use of this code is permitted only under     //
-// license from LizardTech, Inc.  Portions of the code are protected by    //
-// US and foreign patents and other filings. All Rights Reserved.          //
-//                                                                         //
-////////////////////////////////////////////////////////////////////////// */
-/* PUBLIC */
-
-#ifndef LTI_CORESTATUS_H
-#define LTI_CORESTATUS_H
-
-#include "lt_base.h"
-
-#define LTI_STS_Core_Base                          50000
-LT_STATUSSTRING_ADD(LTI_STS_Core_Base, "lt_lib_mrsid_core base")
-
-
-#define LTI_STS_Core_UnsupDataType                 50001
-LT_STATUSSTRING_ADD(LTI_STS_Core_UnsupDataType, "unsupported datatype")
-
-#define LTI_STS_Core_OperationNotSupported         50002
-LT_STATUSSTRING_ADD(LTI_STS_Core_OperationNotSupported, "requested operation not supported")
-
-#define LTI_STS_Core_InvalidArgument               50003
-LT_STATUSSTRING_ADD(LTI_STS_Core_InvalidArgument, "invalid argument to function")
-
-#define LTI_STS_Core_ErrorOpeningFile              50004    // NIT: add filename string
-LT_STATUSSTRING_ADD(LTI_STS_Core_ErrorOpeningFile, "error opening file")
-
-#define LTI_STS_Core_ErrorWritingFile              50005    // NIT: add filename string
-LT_STATUSSTRING_ADD(LTI_STS_Core_ErrorWritingFile, "error writing file")
-
-#define LTI_STS_Core_ErrorReadingFile              50006    // NIT: add filename string
-LT_STATUSSTRING_ADD(LTI_STS_Core_ErrorReadingFile, "error reading file")
-
-#define LTI_STS_Core_InternalError                 50007
-LT_STATUSSTRING_ADD(LTI_STS_Core_InternalError, "internal error")
-
-#define LTI_STS_Core_AllocFailed                   50008
-LT_STATUSSTRING_ADD(LTI_STS_Core_AllocFailed, "memory allocation failed")
-
-
-#define LTI_STS_Core_WorldFileNameError            50010    // NIT: add filename string
-LT_STATUSSTRING_ADD(LTI_STS_Core_WorldFileNameError, "error in world file name")
-
-#define LTI_STS_Core_OutputNotSpecified            50011
-LT_STATUSSTRING_ADD(LTI_STS_Core_OutputNotSpecified, "output target not specified")
-
-#define LTI_STS_Core_SceneTooLarge                 50012
-LT_STATUSSTRING_ADD(LTI_STS_Core_SceneTooLarge, "scene larger than 2GB")
-
-#define LTI_STS_Core_InvalidScene                  50013
-LT_STATUSSTRING_ADD(LTI_STS_Core_InvalidScene, "invalid or empty scene specified")
-
-#define LTI_STS_Core_SceneOutOfRange               50014
-LT_STATUSSTRING_ADD(LTI_STS_Core_SceneOutOfRange, "specified scene out of range of image")
-
-#define LTI_STS_Core_MagRangeError                 50015
-LT_STATUSSTRING_ADD(LTI_STS_Core_MagRangeError, "scene magnification out of range")
-
-#define LTI_STS_Core_ImpedanceMismatchDataType     50016
-LT_STATUSSTRING_ADD(LTI_STS_Core_ImpedanceMismatchDataType, "impedance mismatch - datatype")
-
-#define LTI_STS_Core_ImpedanceMismatchColorSpace   50017
-LT_STATUSSTRING_ADD(LTI_STS_Core_ImpedanceMismatchColorSpace, "impedance mismatch - colorspace")
-
-#define LTI_STS_Core_ImpedanceMismatchNumBands     50018
-LT_STATUSSTRING_ADD(LTI_STS_Core_ImpedanceMismatchNumBands, "impedance mismatch - number of bands")
-
-#define LTI_STS_Core_UnsupColorSpace               50019
-LT_STATUSSTRING_ADD(LTI_STS_Core_UnsupColorSpace, "unsupported colorspace")
-
-#define LTI_STS_Core_UnsupNumBands                 50020
-LT_STATUSSTRING_ADD(LTI_STS_Core_UnsupNumBands, "unsupported number of bands")
-
-#define LTI_STS_Core_DatatypeMismatch              50021
-LT_STATUSSTRING_ADD(LTI_STS_Core_DatatypeMismatch, "datatype mismatch")
-
-#define LTI_STS_Core_Unused1                       50022
-#define LTI_STS_Core_Unused2                       50023
-#define LTI_STS_Core_Unused3                       50024
-
-#define LTI_STS_Core_RawImageSizeError             50025
-LT_STATUSSTRING_ADD(LTI_STS_Core_RawImageSizeError, "actual size of raw image file not equal to expected size")
-
-#define LTI_STS_Core_MetadataReadError             50026
-LT_STATUSSTRING_ADD(LTI_STS_Core_MetadataReadError, "error reading metadata")
-
-#define LTI_STS_Core_SceneBufferMismatch           50027
-LT_STATUSSTRING_ADD(LTI_STS_Core_SceneBufferMismatch, "specified scene size differs from buffer size")
-
-#define LT_STS_Core_BBBImageDimsIncorrect            50100
-LT_STATUSSTRING_ADD(LT_STS_Core_BBBImageDimsIncorrect, "incorrect BBB image dimensions")
-
-#define LT_STS_Core_BBBDomainBitsIncorrect           50101
-LT_STATUSSTRING_ADD(LT_STS_Core_BBBDomainBitsIncorrect, "incorrect BBB domain bits")
-
-#define LT_STS_Core_BBBWordLength                    50102
-LT_STATUSSTRING_ADD(LT_STS_Core_BBBWordLength, "incorrect BBB word length")
-
-#define LT_STS_Core_BBBNot1Or3Banded                 50103
-LT_STATUSSTRING_ADD(LT_STS_Core_BBBNot1Or3Banded, "BBB image not 1 or 3 bands")
-
-#define LT_STS_Core_BBBUnknownLayout                 50104
-LT_STATUSSTRING_ADD(LT_STS_Core_BBBUnknownLayout, "unknown BBB image layout")
-
-#define LT_STS_Core_BBBUnknownByteOrder              50105
-LT_STATUSSTRING_ADD(LT_STS_Core_BBBUnknownByteOrder, "incorrect BBB byte order")
-
-#define LT_STS_Core_BBBMissingNBANDS                 50106
-LT_STATUSSTRING_ADD(LT_STS_Core_BBBMissingNBANDS, "BBB missing NBANDS")
-
-#define LT_STS_Core_BBBMissingNCOLS                  50107
-LT_STATUSSTRING_ADD(LT_STS_Core_BBBMissingNCOLS, "BBB missing NCOLS")
-
-#define LT_STS_Core_BBBMissingNROWS                  50108
-LT_STATUSSTRING_ADD(LT_STS_Core_BBBMissingNROWS, "BBB missing NROWS")
-
-#define LT_STS_Core_BBBBadFormat                     50109
-LT_STATUSSTRING_ADD(LT_STS_Core_BBBBadFormat, "invalid BBB header format")
-
-#define LT_STS_Core_BBBInvalidLayout                 50110
-LT_STATUSSTRING_ADD(LT_STS_Core_BBBInvalidLayout, "BBB incorrect layout")
-
-#define LT_STS_Core_BBBBadColorSpace                 50111
-LT_STATUSSTRING_ADD(LT_STS_Core_BBBBadColorSpace, "BBB bad colorspace")
-
-#define LT_STS_Core_AOINotRectangular							50112
-LT_STATUSSTRING_ADD(LT_STS_Core_AOINotRectangular, "area of interest (AOI) not rectangular")
-
-#define LTI_STS_Core_UnsupMaskDataType              50113
-LT_STATUSSTRING_ADD(LTI_STS_Core_UnsupMaskDataType, "unsupported datatype in shape mask")
-
-#define LTI_STS_Core_Max                           50199
-LT_STATUSSTRING_ADD(LTI_STS_Core_Base, "lt_lib_mrsid_core max")
-
-
-#endif // LTI_CORESTATUS_H
diff --git a/src/DSDK/include/base/lti_delegates.h b/src/DSDK/include/base/lti_delegates.h
deleted file mode 100644
index 9391843..0000000
--- a/src/DSDK/include/base/lti_delegates.h
+++ /dev/null
@@ -1,97 +0,0 @@
-/* $Id: lti_delegates.h 5124 2006-10-27 11:40:40Z lubia $ */
-/* //////////////////////////////////////////////////////////////////////////
-//                                                                         //
-// This code is Copyright (c) 2004 LizardTech, Inc, 1008 Western Avenue,   //
-// Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         //
-// prohibited.  Access to and use of this code is permitted only under     //
-// license from LizardTech, Inc.  Portions of the code are protected by    //
-// US and foreign patents and other filings. All Rights Reserved.          //
-//                                                                         //
-////////////////////////////////////////////////////////////////////////// */
-/* PUBLIC */
-
-#ifndef LTI_DELEGATES_H
-#define LTI_DELEGATES_H
-
-// lt_lib_base
-#include "lt_base.h"
-
-
-LT_BEGIN_NAMESPACE(LizardTech)
-
-#if defined(LT_COMPILER_MS)
-   #pragma warning(push,4)
-#endif
-
-
-/**
- * interrupt delegate (callback) base class
- *
- * This abstract class is used for implementing a mechanism to determine if
- * a potentially long-running operation is to be interrupted, such as
- * LTIImageStage::read() or LTIImageWriter::write().  During these sorts of
- * operations, an object which has an interrupt delegate may periodically
- * call the delegate's getInterruptStatus() method to determine if the
- * operation should be aborted.  If this function returns a value other than
- * LT_STS_Success, then the object will abort the operation  and return that
- * status value.
- *
- * Interrupt delegates are typically used in environments such as GUI encoders.
- *
- * A "delegate" is simply an object-oriented version of a callback function.
- */
-class LTIInterruptDelegate
-{
-public:
-   /**
-    * check for interrupt
-    *
-    * This function should be implemented to indicate whether some user-defined
-    * event indicates that the operation should be terminated.  If an interrupt
-    * is requested, a value other than LT_STS_Success should be returned.
-    *
-    * @return LT_STS_Success if no interrupt requested; any other (nonzero)
-    *         value if an interrupt is requested
-    */
-   virtual LT_STATUS getInterruptStatus() = 0;
-};
-
-
-/**
- * progress delegate (callback) base class
- *
- * This abstract class is used for implementing a mechanism to report the
- * progress (percent complete) of a potentially long-running operation. 
- * During these sorts of operations, an object which has a progress delegate
- * may periodically call the delegate's setProgressStatus() method to report
- * the percent of the operation completed.
- *
- * Progress delegates are typically used in GUI environments as a means of
- * displaying percent-complete or time-remaining.
- *
- * A "delegate" is simply an object-oriented version of a callback function.
- */
-class LTIProgressDelegate
-{
-public:
-   /**
-    * set percent completed
-    *
-    * This function should be implemented to report to the client application
-    * the progress of a long-running operation.
-    *
-    * @param percentComplete the percent complete; this must be a value in the
-    *                        range 0.0 to 1.0 inclusive 
-    * @return LT_STS_Success if function succeeded, nonzero if some error occurred
-    */
-   virtual LT_STATUS setProgressStatus(float percentComplete) = 0;
-};
-
-
-LT_END_NAMESPACE(LizardTech)
-
-#if defined(LT_COMPILER_MS)
-	#pragma warning(pop)
-#endif
-
-#endif // LTI_DELEGATES_H
diff --git a/src/DSDK/include/base/lti_geoCoord.h b/src/DSDK/include/base/lti_geoCoord.h
deleted file mode 100644
index 59f1b9b..0000000
--- a/src/DSDK/include/base/lti_geoCoord.h
+++ /dev/null
@@ -1,393 +0,0 @@
-/* $Id: lti_geoCoord.h 5124 2006-10-27 11:40:40Z lubia $ */
-/* //////////////////////////////////////////////////////////////////////////
-//                                                                         //
-// This code is Copyright (c) 2004 LizardTech, Inc, 1008 Western Avenue,   //
-// Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         //
-// prohibited.  Access to and use of this code is permitted only under     //
-// license from LizardTech, Inc.  Portions of the code are protected by    //
-// US and foreign patents and other filings. All Rights Reserved.          //
-//                                                                         //
-////////////////////////////////////////////////////////////////////////// */
-/* PUBLIC */
-
-#ifndef LTI_GEOCOORD_H
-#define LTI_GEOCOORD_H
-
-// lt_lib_base
-#include "lt_base.h"
-#include "lti_scene.h"
-
-#include <stdlib.h>
-
-#if defined(LT_COMPILER_MS)
-	#pragma warning(push,4)
-#endif
-
-
-LT_BEGIN_NAMESPACE(LizardTech)
-
-
-class LTFileSpec;
-class LTIOStreamInf;
-class LTIMetadataDatabase;
-
-/**
- * represents a geographic coordinate
- *
- * The LTIGeoCoord class contains geographic coordinate information: x and
- * y resolution, upper left point, and x and y rotation.
- *
- * @note As per the conventions for georeferenced images, the Y resolution is
- * typically a negative value.
- */
-class LTIGeoCoord
-{
-public:
-   /**
-    * constructor
-    *
-    * Creates an LTIGeoCoord object with the given coordinate information.
-    *
-    * @param xUL   upper-left x position 
-    * @param yUL   upper-left y position 
-    * @param xRes  x resolution 
-    * @param yRes  y resolution 
-    * @param xRot  x rotation 
-    * @param yRot  y rotation 
-    * @param wkt   Well Known Text string 
-    */
-   LTIGeoCoord(double xUL, double yUL, 
-               double xRes, double yRes,
-               double xRot, double yRot,
-               const char *wkt = NULL);
-
-   /**
-    * default constructor
-    */
-   LTIGeoCoord();
-
-   /**
-    * copy constructor
-    */
-   LTIGeoCoord(const LTIGeoCoord&);
-
-  /**
-    * destructor
-    */
-   ~LTIGeoCoord();
-
-   /**
-    * assignment operator
-    */
-   LTIGeoCoord& operator=(const LTIGeoCoord&);
-
-   /**
-    * equality operator
-    */
-   bool operator==(const LTIGeoCoord&) const;
-
-   /**
-    * inequality operator
-    */
-   bool operator!=(const LTIGeoCoord&) const;
-
-   /**
-    * get the upper-left X position
-    *
-    * Returns the upper-left X position.
-    *
-    * @return the upper-left X position
-    */
-   double getX() const;
-
-   /**
-    * get the upper-left Y position
-    *
-    * Returns the upper-left Y position.
-    *
-    * @return the upper-left Y position
-    */
-   double getY() const;
-
-   /**
-    * get the X resolution
-    *
-    * Returns the X resolution
-    *
-    * @return the X resolution
-    */
-   double getXRes() const;
-
-   /**
-    * get the Y resolution
-    *
-    * Returns the Y resolution
-    *
-    * @return the Y resolution
-    */
-   double getYRes() const;
-
-   /**
-    * get the X rotation
-    *
-    * Returns the X rotation
-    *
-    * @return the X rotation
-    */
-   double getXRot() const;
-
-   /**
-    * get the Y rotation
-    *
-    * Returns the Y rotation
-    *
-    * @return the Y rotation
-    */
-   double getYRot() const;
-
-   /**
-    * get the Well Known Text (WKT)
-    *
-    * Returns the WKT
-    *
-    * @return the WKT
-    */
-   const char *getWKT() const;
-
-
-
-   /**
-    * get the coordinate information
-    *
-    * Returns all the coordinate information.  This is equivalent to calling
-    * getXUL(), getXRes(), etc.
-    *
-    * @param xUL   upper-left x position 
-    * @param yUL   upper-left y position 
-    * @param xRes  x resolution 
-    * @param yRes  y resolution 
-    * @param xRot  x rotation 
-    * @param yRot  y rotation 
-    */
-   void get(double& xUL, double& yUL,
-            double& xRes, double& yRes,
-            double& xRot, double& yRot) const;
-
-   /**
-    * convert a pixel coordinate to geo coordinate
-    *
-    * @param pixelX  x pixel position 
-    * @param pixelY  y pixel position 
-    * @param mag     magnification level (pixelX, pixelY) are in 
-    * @param geoX    x geo position 
-    * @param geoY    y geo position 
-    * @return        status code indicating success or failure
-    */
-   LT_STATUS pixelToGeo(double pixelX, double pixelY, double mag,
-                        double &geoX, double &geoY) const;
-
-   /**
-    * convert a geo coordinate to pixel coordinate
-    *
-    * @param geoX    x geo position 
-    * @param geoY    y geo position 
-    * @param mag     magnification level (pixelX, pixelY) will be in 
-    * @param pixelX  x pixel position 
-    * @param pixelY  y pixel position 
-    * @return        status code indicating success or failure
-    */
-   LT_STATUS geoToPixel(double geoX, double geoY, double mag,
-                        double &pixelX, double &pixelY) const;
-
-   /**
-    * get the coordinate information for a given scene
-    *
-    * Return a LTIGeoCoord object for the center of the upper-left
-    *  pixel of the given scene. 
-    *
-    * @param scene scene
-    * @return a LTIGeoCoord object for scene
-    */
-   LTIGeoCoord getGeoCoordForScene(const LTIScene &scene) const;
-
-   /**
-    * set the upper-left X position
-    *
-    * Sets the upper-left X position.
-    *
-    * @param x the upper-left X position 
-    */
-   void setX(double x);
-
-   /**
-    * set the upper-left Y position
-    *
-    * Sets the upper-left Y position.
-    *
-    * @param y the upper-left Y position 
-    */
-   void setY(double y);
-
-   /**
-    * set the X resolution
-    *
-    * Sets the X resolution
-    *
-    * @param xRes the X resolution 
-    */
-   void setXRes(double xRes);
-
-   /**
-    * set the Y resolution
-    *
-    * Sets the Y resolution
-    *
-    * @param yRes the Y resolution 
-    */
-   void setYRes(double yRes);
-
-   /**
-    * set the X rotation
-    *
-    * Sets the X rotation
-    *
-    * @param xRot the X rotation 
-    */
-   void setXRot(double xRot);
-
-   /**
-    * set the Y rotation
-    *
-    * Sets the Y rotation
-    *
-    * @param yRot the Y rotation 
-    */
-   void setYRot(double yRot);
-
-   /**
-    * set the coordinate information
-    *
-    * Sets the coordinate information.  This is equivalent to calling
-    * setX(), setXRes(), etc.
-    *
-    * @param xUL   upper-left x position 
-    * @param yUL   upper-left y position 
-    * @param xRes  x resolution 
-    * @param yRes  y resolution 
-    * @param xRot  x rotation 
-    * @param yRot  y rotation 
-    */
-   void set(double xUL, double yUL,
-            double xRes, double yRes,
-            double xRot, double yRot);
-
-   /**
-    * set the WKT
-    *
-    * Sets the WKT
-    *
-    * @param wkt the WKT 
-    */
-   void setWKT(const char *wkt);
-
-   /**
-    * write data to world file
-    *
-    * This function writes the geographic data out in "world file" format
-    * to the specified file.  If \a extension is not NULL, the extension
-    * will be used to replace the extension in the filename.
-    *
-    * @param fileSpec the name of the world file to write to 
-    * @param   determineExtension  if true, replace extension in \a fileSpec; otherwise, just use \a fileSpec 
-    * @return status code indicating success or failure
-    */
-   LT_STATUS writeWorldFile(const LTFileSpec& fileSpec,
-                            bool determineExtension) const;
-
-   /**
-    * read data from world file
-    *
-    * This function reads the geographic data in from the given "world file", if file present.  If no world
-    * file found, \a fileFound set to false and returns LT_STS_Success.
-    *
-    * @param   fileSpec   the name of the world file to read from  
-    * @param   determineExtension  if true, replace extension in \a fileSpec; otherwise, just use \a fileSpec  
-    * @param   fileFound  will be if true, if world file was found and read  
-    * @return  status code indicating success or failure
-    */
-   LT_STATUS readWorldFile(const LTFileSpec& fileSpec,
-                           bool determineExtension,
-                           bool& fileFound);
-
-   /**
-    * read data from world file, via a stream
-    *
-    * This function reads the geographic data in from the given "world file",
-    * using an LTIOStreamInf interface.
-    *
-    * @param   stream   the world file data read from  
-    * @return  status code indicating success or failure
-    */
-   LT_STATUS readWorldFile(LTIOStreamInf& stream);
-
-   /**
-    * get file extension text
-    *
-    * This function computes the "official" world file extension for the
-    * given image file name.  Typically this is formed by concatenating the
-    * first and last letters of the image file extension and a 'w', e.g.
-    * "foo.jpg" returns "jgw".
-    *
-    * If the first and last characters of the extension are both uppercase,
-    * then the 'W' is uppercase, e.g. "foo.JPG" return "JPW".
-    *
-    * The \c ext parameter must be allocated to be at least 4 bytes prior to
-    * the call.
-    *
-    * @param   fileSpec the name of the image file  
-    * @param   ext       an array of (at least) 4 bytes 
-    * @return  status code indicating success or failure
-    */
-   static LT_STATUS getWorldFileExtension(const LTFileSpec& fileSpec,
-                                          char* ext);
-
-
-   /**
-    * write data to metadata
-    *
-    * This function writes the geographic data out to the metadata.
-    *
-    * @param metadata the metadata database to write to 
-    * @return status code indicating success or failure
-    */
-   LT_STATUS writeMetadata(LTIMetadataDatabase &metadata) const;
-
-   /**
-    * read data from metadata
-    *
-    * This function reads the geographic data in from the given metadata database.
-    *
-    * @param   metadata   the metadata database to read from  
-    * @param   found  will be if true, if metadata has geographic data  
-    * @return  status code indicating success or failure
-    */
-   LT_STATUS readMetadata(const LTIMetadataDatabase &metadata, bool &found);
-
-private:
-   double m_xUL;
-   double m_yUL;
-   double m_xRes;
-   double m_yRes;
-   double m_xRot;
-   double m_yRot;
-
-   char *m_wkt;
-};
-
-LT_END_NAMESPACE(LizardTech)
-
-#if defined(LT_COMPILER_MS)
-	#pragma warning(pop)
-#endif
-
-#endif // LTI_GEOCOORD_H
diff --git a/src/DSDK/include/base/lti_geoFileImageWriter.h b/src/DSDK/include/base/lti_geoFileImageWriter.h
deleted file mode 100644
index 7219ff1..0000000
--- a/src/DSDK/include/base/lti_geoFileImageWriter.h
+++ /dev/null
@@ -1,173 +0,0 @@
-/* $Id: lti_geoFileImageWriter.h 5124 2006-10-27 11:40:40Z lubia $ */
-/* //////////////////////////////////////////////////////////////////////////
-//                                                                         //
-// This code is Copyright (c) 2004 LizardTech, Inc, 1008 Western Avenue,   //
-// Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         //
-// prohibited.  Access to and use of this code is permitted only under     //
-// license from LizardTech, Inc.  Portions of the code are protected by    //
-// US and foreign patents and other filings. All Rights Reserved.          //
-//                                                                         //
-////////////////////////////////////////////////////////////////////////// */
-/* PUBLIC */
-
-#ifndef LTI_GEOFILEIMAGEWRITER_H
-#define LTI_GEOFILEIMAGEWRITER_H
-
-// lt_lib_base
-#include "lt_base.h"
-
-// lt_lib_mrsid_core
-#include "lti_imageWriter.h"
-#include "lti_scene.h"
-
-LT_BEGIN_NAMESPACE(LizardTech)
-
-#if defined(LT_COMPILER_MS)
-   #pragma warning(push,4)
-#endif
-
-class LTFileSpec;
-class LTIOStreamInf;
-
-/**
- * class for writing geographic images to files or streams
- *
- * This abstract class extends LTIImageWriter by adding functions for
- * controlling the output form (either a file or a stream) and world file
- * generation.
- */
-class LTIGeoFileImageWriter : public LTIImageWriter
-{
-public:
-   /**
-    * constructor
-    *
-    * Constructs a writer which will write to files or streams.  The 
-    * \c supportsStreams parameter is used to indicate whether the
-    * derived class can write directly to a stream or only to files.
-    *
-    * @param  image            the source of image data to be written  
-    * @param  supportsStreams  set to true if output to streams is allowed 
-    */
-   LTIGeoFileImageWriter(LTIImageStage* image,
-                         bool supportsStreams);
-
-   virtual ~LTIGeoFileImageWriter();
-
-   virtual LT_STATUS writeBegin(const LTIScene& scene);
-   virtual LT_STATUS writeStrip(LTISceneBuffer& stripBuffer,
-                                const LTIScene& stripScene) = 0;
-   virtual LT_STATUS writeEnd();
-
-
-   /**
-    * set output file name
-    *
-    * Sets the output target to the given filename.  Must be called prior to
-    * calling write().
-    *
-    * @param fileSpec the name of the file to write to 
-    * @return status code indicating success or failure
-    */
-   virtual LT_STATUS setOutputFileSpec(const LTFileSpec& fileSpec);
-
-   /**
-    * set output file name
-    *
-    * Sets the output target to the given filename.  Must be called prior to
-    * calling write().
-    *
-    * @param fileSpec the name of the file to write to 
-    * @return success or failure
-    */
-   virtual LT_STATUS setOutputFileSpec(const char* fileSpec);
-
-   /**
-    * set output file stream
-    *
-    * Sets the output target to the given stream.  Must be called prior to
-    * calling write().
-    *
-    * This operation will only succeed if the derived class has set the
-    * \c supportsStream parameter to the LTIGeoFileImageWriter ctor to true.
-    *
-    * @param stream the stream to write to (may not be NULL) 
-    * @return status code indicating success or failure
-    */
-   virtual LT_STATUS setOutputStream(LTIOStreamInf* stream);
-
-   /**
-    * enable writing of world file
-    *
-    * Enables or disables automatic generation of a world file.  Only
-    * applicable when the output target is a filename.
-    *
-    * The default is to not generate a world file.
-    *
-    * @param enabled set to true for world file generation
-    */
-   virtual void setWorldFileSupport(bool enabled);
-
-   /**
-    * enable writing of large files
-    *
-    * Enables or disables use of 64-bit safe file output.  Only
-    * applicable when the output target is a filename.
-    *
-    * The default is to not use 64-bit file modes (as this may incur a
-    * performance penalty under certain circumstances).
-    *
-    * @param enabled set to true for large file support
-    */
-   void setFileStream64(bool enabled); // default false
-
-protected:
-   /**
-    * get underlying stream
-    *
-    * Returns the stream being written to.
-    *
-    * If the output target is a filename, the returned stream will  be NULL
-    * until the write() sequence has begun.
-    *
-    * @return the stream (may be NULL)
-    */
-   LTIOStreamInf* getStream() const;
-
-   /**
-    * get target filename
-    *
-    * Returns the name of the file being written to.
-    *
-    * If the output target is set by the user to be a stream, the returned filename
-    * will  be NULL.
-    *
-    * @return the filename (may be NULL)
-    */
-   LTFileSpec* getFileSpec() const;
-
-private:
-   bool m_supportsStreams;
-   LTFileSpec* m_fileSpec;
-   LTIOStreamInf* m_stream;
-   bool m_ownStream;
-
-   bool m_worldFileEnabled;
-
-   bool m_useFileStream64;
-   LTIScene m_fullScene;
-
-   // nope
-   LTIGeoFileImageWriter();
-   LTIGeoFileImageWriter(LTIGeoFileImageWriter&);
-   LTIGeoFileImageWriter& operator=(const LTIGeoFileImageWriter&);
-};
-
-
-LT_END_NAMESPACE(LizardTech)
-
-#if defined(LT_COMPILER_MS)
-	#pragma warning(pop)
-#endif
-
-#endif // LTI_GEOFILEIMAGEWRITER_H
diff --git a/src/DSDK/include/base/lti_geoImageReader.h b/src/DSDK/include/base/lti_geoImageReader.h
deleted file mode 100644
index 6c28585..0000000
--- a/src/DSDK/include/base/lti_geoImageReader.h
+++ /dev/null
@@ -1,71 +0,0 @@
-/* $Id: lti_geoImageReader.h 5124 2006-10-27 11:40:40Z lubia $ */
-/* //////////////////////////////////////////////////////////////////////////
-//                                                                         //
-// This code is Copyright (c) 2004 LizardTech, Inc, 1008 Western Avenue,   //
-// Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         //
-// prohibited.  Access to and use of this code is permitted only under     //
-// license from LizardTech, Inc.  Portions of the code are protected by    //
-// US and foreign patents and other filings. All Rights Reserved.          //
-//                                                                         //
-////////////////////////////////////////////////////////////////////////// */
-/* PUBLIC */
-
-#ifndef LTI_GEOIMAGEREADER_H
-#define LTI_GEOIMAGEREADER_H
-
-// lt_lib_mrsid_core
-#include "lti_imageReader.h"
-
-
-LT_BEGIN_NAMESPACE(LizardTech)
-
-#if defined(LT_COMPILER_MS)
-   #pragma warning(push,4)
-#endif
-
-class LTFileSpec;
-class LTIOStreamInf;
-
-/**
- * abstract class for implementing a geo image reader
- *
- * The LTIGeoImageReader abstract class extends the LTIImageReader so that it
- * allows whether world files are used or ignored for setting up geo 
- * information.
- */
-class LTIGeoImageReader : public LTIImageReader
-{
-public:
-   /**
-    * constructor
-    */
-   LTIGeoImageReader(bool useWorldFile);
-
-   /**
-    * destructor
-    */
-   virtual ~LTIGeoImageReader();
-
-protected:
-   bool getUseWorldFile() const;
-
-   LT_STATUS readWorldFile(const LTFileSpec& file, bool& bFound);
-   LT_STATUS readWorldFile(const LTFileSpec *file,
-                           LTIOStreamInf *stream,
-                           bool &foundWorldFile);
-private:
-   bool m_useWorldFile;
-
-   // nope
-   LTIGeoImageReader(LTIGeoImageReader&);
-   LTIGeoImageReader& operator=(const LTIGeoImageReader&);
-};
-
-
-LT_END_NAMESPACE(LizardTech)
-
-#if defined(LT_COMPILER_MS)
-	#pragma warning(pop)
-#endif
-
-#endif // LTI_GEOIMAGEREADER_H
diff --git a/src/DSDK/include/base/lti_image.h b/src/DSDK/include/base/lti_image.h
deleted file mode 100644
index 3b8de11..0000000
--- a/src/DSDK/include/base/lti_image.h
+++ /dev/null
@@ -1,672 +0,0 @@
-/* $Id: lti_image.h 5124 2006-10-27 11:40:40Z lubia $ */
-/* //////////////////////////////////////////////////////////////////////////
-//                                                                         //
-// This code is Copyright (c) 2004 LizardTech, Inc, 1008 Western Avenue,   //
-// Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         //
-// prohibited.  Access to and use of this code is permitted only under     //
-// license from LizardTech, Inc.  Portions of the code are protected by    //
-// US and foreign patents and other filings. All Rights Reserved.          //
-//                                                                         //
-////////////////////////////////////////////////////////////////////////// */
-/* PUBLIC */
-
-#ifndef LTI_IMAGE_H
-#define LTI_IMAGE_H
-
-// lt_lib_mrsid_core
-#include "lti_types.h"
-
-
-LT_BEGIN_NAMESPACE(LizardTech)
-
-#if defined(LT_COMPILER_MS)
-   #pragma warning(push,4)
-#endif
-
-
-class LTIPixel;
-class LTIMetadataDatabase;
-class LTIGeoCoord;
-class LTIPixelLookupTable;
-
-
-/**
- * abstract class representing an image
- *
- * The LTIImage abstract class represents the basic properties of an image,
- * including dimensions, data type, background color, etc.   
- *
- * LTIImage does not support extraction of pixels (decoding); that
- * functionality is provided by the derived class LTIImageStage.
- */
-class LTIImage
-{
-public:
-   /**
-    * constructor
-    *
-    * Constructs an LTIImage object with no data members (image properties)
-    * set.
-    *
-    * The initialize() method should be called immediately after the object
-    * is constructed.
-    */
-   LTIImage();
-
-   /**
-    * destructor
-    */
-   virtual ~LTIImage();
-
-   /**
-    * initialize the image object
-    *
-    * Derived classes should override this function.  This function must 
-    * do the following (in order):
-    *
-    * \li call the initialize() function of the parent class
-    * \li call the LTIImage::setPixelProps() function
-    *     to set the required datatype, colorspace, and number of bands
-    * \li call the LTIImage::setDimensions() function
-    *     to set the required image width and height
-    * \li call any optional "set" functions in LTIImage
-    *     to set the additional image properties for the derived image type
-    *
-    * Status codes must be checked and handled appropriately after each of
-    * these operations.
-    *
-    * This function is to be called by users immediately after the object is
-    * constructed.
-    *
-   * @return status code indicating success or failure
-    */
-   virtual LT_STATUS initialize();
-
-   /**
-    * get image width
-    *
-    * This function returns the width of the image, in pixels.
-    *
-    * @return the image width
-    */
-   lt_uint32 getWidth() const;
-
-   /**
-    * get image height
-    *
-    * This function returns the height of the image, in pixels.
-    *
-    * @return the image height
-    */
-   lt_uint32 getHeight() const;
-   
-   /**
-    * get image width and height at given magnification
-    *
-    * This function returns the width and height of the image, in pixels,
-    * relative to the given magnification.
-    *
-    * @param  mag    magnification to determine width at 
-    * @param  width  the image width at the magnification 
-    * @param  height the image height at the magnification 
-    * @return status code indicating success or failure
-    */
-   virtual LT_STATUS getDimsAtMag(double mag,
-                                  lt_uint32& width,
-                                  lt_uint32& height) const;
-
-   /**
-    * get number of bands
-    *
-    * This function returns the number of bands (colors) in the image.  This
-    * value is closely related to the colorspace of the image.
-    *
-    * This function is equivalent to getPixelProps().getNumBands().
-    *
-    * @return the number of bands in the image
-    */
-   lt_uint16 getNumBands() const;
-
-   /**
-    * get colorspace
-    *
-    * This function returns the colorspace of the image, e.g. RGB or greyscale.
-    *
-    * This function is equivalent to getPixelProps().getColorSpace().
-    *
-    * @return the colorspace of the image
-    */
-   LTIColorSpace getColorSpace() const;
-
-   /**
-    * get data type
-    *
-    * This function returns the data type of the samples in the image, e.g.
-    * unsigned byte or 32-bit float.
-    *
-    * This function is equivalent to getPixelProps().getDataType().
-    *
-    * @return the datatype of the image
-    */
-   LTIDataType getDataType() const;
-
-   /**
-    * get the pixel properties of the image
-    *
-    * This function returns an object which describes the basic properties
-    * of a pixel in the image.
-    *
-    * @return the pixel properties of the image
-    */
-   const LTIPixel& getPixelProps() const;
-
-   /**
-    * get the values of the background pixel
-    *
-    * This function returns a pointer to an object containing the
-    * values of the background pixel of the image.  If the pointer
-    * is NULL, no background color has been set for the image.
-    *
-    * @return pointer to the background pixel 
-    */
-   const LTIPixel* getBackgroundPixel() const;
-
-   /**
-    * get the values of the "no data" (transparency) pixel
-    *
-    * This function returns a pointer to an object containing the
-    * values of the no data pixel of the image.  If the pointer
-    * is NULL, no transparency color has been set for the image.
-    *
-    * @return pointer to the no data pixel 
-    */
-   const LTIPixel* getNoDataPixel() const;
-
-   /**
-    * get the color lookup table, if any
-    *
-    * This function returns a pointer the color lookup table, used for
-    * indexed or palletized images.  Will return NULL if no table
-    * is used.
-    *
-    * @return pointer to the pixel lookup table
-    */
-   const LTIPixelLookupTable* getPixelLookupTable() const;
-
-   /**
-    * get the minimum dynamic range value of image
-    *
-    * This function returns the pixels of minimum value of the 
-    * dynamic range of the image.
-    *
-    * @return  pixel object with the minimum dynamic range values
-    */
-   const LTIPixel& getMinDynamicRange() const;
-
-   /**
-    * get the maximum dynamic range value of image
-    *
-    * This function returns the pixels of maximum value of the 
-    * dynamic range of the image.
-    *
-    * @return  pixel object with the maximum dynamic range values
-    */
-   const LTIPixel& getMaxDynamicRange() const;
-
-   /**
-    * check if the range is "complete" or not
-    *
-    * This function returns true if the dynamic range min/max values for the
-    * image correspond to the full range of the underlying datatype.
-    *
-    * @return  true if range spans the datatype's range
-    */
-   bool isNaturalDynamicRange() const;
-   
-   /**
-    * get the geographic coordinates of the image
-    *
-    * This function returns the geographic coordinates of the image.
-    *
-    * Note that if the image has no explicit geographic coordinate information,
-    * e.g. stored within the metadata of a file, the geographic coordinates
-    * are implicitly set (upperleft is (0,-height), resolution is (1,-1))
-    *
-    * @return a pointer to an object containing the geographic coordinates
-    */
-   const LTIGeoCoord& getGeoCoord() const;
-
-   /**
-    * is geo information "real" or not
-    *
-    * This function returns true if the geo information is implicit, i.e.
-    * the source image did not have native geo coord info.
-    *
-    * @return true if and only if the geo information is not "real"
-    */
-   bool isGeoCoordImplicit() const;
-
-   /**
-    * get the metadata associated with the image
-    *
-    * This function returns a reference to the object containing the
-    * metadata associated with the image.
-    *
-    * @return a reference to the metadata database
-    */
-   const LTIMetadataDatabase& getMetadata() const;
-
-   /**
-    * get a modifiable reference to the metadata associated with the image
-    *
-    * This function returns a reference to the object containing the
-    * metadata associated with the image.  This function returns
-    * a non-const reference, so it may be used by derived classes to
-    * set metadata on the image.
-    *
-    * @return a reference to the metadata database
-    */
-   LTIMetadataDatabase& getMetadataRef() const;
-
-   /**
-    * get the minimum magnification
-    *
-    * This function returns the minimum magnification
-    * of the image.  Images that do not support "zooming out" will return
-    * 1.0; images that contain "overviews", e.g. MrSID, will return a
-    * value greater than 1.0.
-    *
-    * @return the minimum magnification
-    */
-   double getMinMagnification() const;
-
-   /**
-    * get the maximum magnification
-    *
-    * This function returns the maximum magnification
-    * of the image.  Images that do not support "zooming in" will return
-    * 1.0; images that support "res-up", e.g. MrSID, will return a
-    * value less than 1.0.
-    *
-    * @return the maximum magnification
-    */
-   double getMaxMagnification() const;
-
-   /**
-    * get the physical (disk) size of the image
-    *
-    * Returns the number of bytes in the actual file (or stream) to the extent
-    * possible and practical.  Note this value may be substantially different
-    * than the "nominal" image size returned by getNominalImageSize(), e.g.
-    * due to compression or sparse mosaics.
-    *
-    * This number should not be considered an exact representation:
-    * \li if the actual value cannot be known, e.g. for streamed data, a value of 0
-    *     will be returned
-    * \li the returned value may or may not include bytes due to subsidiary files, e.g.
-    *     BBB headers or World files
-    * \li for "filter" image classes that perform some operation on an underlying image,
-    *     the value returned is typically just the value of the underlying image
-    * \li for "mosaic" image classes that wrap one or more underlying image
-    *     classes, the value returned is typically the sum of the child images
-    *
-    * @return the physical size of the image, in bytes
-    */
-   virtual lt_int64 getPhysicalFileSize() const = 0;
-
-   /**
-    * get the nominal size of the image
-    *
-    * Returns number of bytes of actual data in the image, e.g. as if the image were
-    * a raw file.  This value is simply the product of:
-    * \li image width,
-    * \li image height,
-    * \li samples per pixel, and
-    * \li bytes per sample.
-    *
-    * Note this value may be substantially different
-    * than the "physical" image size returned by getPhysicalFileSize(), e.g.
-    * due to compression or sparse mosaics.
-    *
-    * @return the nominal size of the image, in bytes
-    */
-   lt_int64 getNominalImageSize() const;
-
-   /**
-    * get the "name" of the image
-    *
-    * Returns a string representing the "name" of the image.  The name
-    * corresponds roughly to the underlying file used, and should only
-    * be used for debugging purposes.
-    *
-    * @return the name of the image
-    */
-   const lt_utf8* getName() const;
-
-   /**
-    * get position of a named point
-    *
-    * Returns the (x,y) position of the given named point.
-    *
-    * @param  position  the position to be returned 
-    * @param  x         the x-position of the point 
-    * @param  y         the y-position of the point 
-    */
-   void getGeoPoint(LTIPosition position, double& x, double& y) const;
-
-   /**
-    * return new background pixel
-    *
-    * Creates and returns a new pixel of the correct background color for the
-    * image.  If no background color has been set, a new black pixel will be
-    * returned (unless the image is CMYK, in which case a white pixel will be
-    * returned).
-    *
-    * The caller takes ownership of the returned pixel.
-    *
-    * @return a new background pixel
-    */
-   LTIPixel* createBackgroundPixel() const;
-
-   /**
-    * @name Projection functions
-    */
-   /*@{*/
-
-  /**
-    * project a value to a given magnification
-    *
-    * Given a value, such as a point, compute and return the value when
-    * projected to the given magnification.
-    *
-    * @param  upperLeft     the value to be scaled  
-    * @param  mag           the amount to scale by  
-    * @param  newUpperLeft  the scaled value 
-    * @return status indicating success or failure
-    */
-   virtual LT_STATUS projectPointAtMag(double upperLeft,
-                                       double mag,
-                                       double& newUpperLeft) const;
-
-   /**
-    * project a dimension to a given magnification
-    *
-    * Given a value, such as a width, compute and return the value when
-    * projected to the given magnification.
-    *
-    * @param  dim     the value to be scaled  
-    * @param  mag     the amount to scale by  
-    * @param  newDim  the scaled value 
-    * @return status indicating success or failure
-    */
-   virtual LT_STATUS projectDimAtMag(double dim,
-                                     double mag,
-                                     double& newDim) const;
-
-   /*@}*/
-
-   /**
-    * check if image supports "random access" decoding
-    *
-    * Some formats, notably JPEG, do not support "selective" decoding.
-    * That is, they require that scenes being decoding must march
-    * in order down the scanlines of the image.  Formats like TIFF
-    * and MrSID, however, are "selective": any scene can be requested
-    * at any time.
-    *
-    * @return true if and only if the image supports arbitrary scene requests
-    */
-   bool isSelective() const;
-   
-   /**
-    * set standard metadata fields
-    *
-    * This function is used to populate the standard metadata fields for the
-    * image, e.g. WIDTH, HEIGHT, COLORSPACE, etc.
-    *
-    * @return status code indicating success or failure
-    */
-   LT_STATUS setClassicalMetadata();
-
-protected:
-   /**
-    * set pixel properties of the image
-    *
-    * This function is used to set the pixel properties of the image, namely
-    * the datatype, colorspace, and number of bands.
-    *
-    * Derived classes are \em required to call this function from within their
-    * initialize() method.
-    *
-    * @param pixelProps  the basic pixel properties of the image (number of
-    *                    bands, colorspace, datatype)
-    * @return status code indicating success or failure
-    */
-   LT_STATUS setPixelProps(const LTIPixel& pixelProps);
-
-   /**
-    * set width and height of the image
-    *
-    * This function is used to set the dimensions (width and height) of the image.
-    *
-    * Derived classes are \em required to call this function from within their
-    * initialize() method.
-    *
-    * @param  width       the image width, in pixels
-    * @param  height      the image height, in pixels
-    * @return status code indicating success or failure
-    */
-   LT_STATUS setDimensions(lt_uint32 width,
-                           lt_uint32 height);
-
-   /**
-    * set the background color of the image
-    *
-    * This function is used to set the background color of the image.
-    *
-    * Derived classes may choose to call this function from within their
-    * initialize() method.  If the background color is not set, or if NULL
-    * is passed in, a background color of black (sample values of 0) will
-    * be used.  (Exception: for CMYK images, the background is set to white.)
-    *
-    * @param backgroundPixel  the data for the background color
-    * @return status code indicating success or failure
-    */
-   LT_STATUS setBackgroundPixel(const LTIPixel* backgroundPixel);
-
-   /**
-    * set the "no data" (transparency) color of the image
-    *
-    * This function is used to set the "no data" or transparency color of the
-    * image.
-    *
-    * Derived classes may choose to call this function from within their
-    * initialize() method.  If the transparency color is not set, or if NULL
-    * is passed in, the image will be assumed to have no transparent pixels.
-    *
-    * @param nodataPixel  the data for the transparency color
-    * @return status code indicating success or failure
-    */
-   LT_STATUS setNoDataPixel(const LTIPixel* nodataPixel);
-
-   /**
-    * set the color lookup table
-    *
-    * This function is used to set the color used lookup table, used
-    * for indexed color (palletized) images.
-    *
-    * Derived classes may choose to call this function from within their
-    * initialize() method.  If the lookup table is not set, or if NULL
-    * is passed in, the image will be assumed to have no lookup table.
-    *
-    * The LTIImageReader makes a local copy of the lookup table.
-    *
-    * @param  pixelLookupTable  pointer to the lookup table (or NULL)
-    * @return status code indicating success or failure
-    */
-   LT_STATUS setPixelLookupTable(const LTIPixelLookupTable* pixelLookupTable);
-
-   /**
-    * set the dynamic range of the image
-    *
-    * This function is used to set the dynamic range of the image.  The
-    * dynamic range consists of the minimum and maximum value for a given
-    * sample.
-    *
-    * If both the minimum and maximum are NULL, the natural
-    * range of the sample datatype will be used.
-    *
-    * Derived classes may choose to call this function from within their
-    * initialize() method.  If the dynamic range is not set, the natural
-    * minimum and maximum of the datatype of the sample is used.
-    *
-    * @param drmin       the minimum dynamic range value
-    * @param drmax       the maximum dynamic range value
-    * @return status code indicating success or failure
-    */
-   LT_STATUS setDynamicRange(const LTIPixel& drmin,
-                             const LTIPixel& drmax);
-
-   /**
-    * set the dynamic range of the image
-    *
-    * This function is used to set the dynamic range of the image.  The
-    * dynamic range consists of the minimum and maximum value for a given
-    * sample.  This function sets these values to the natural
-    * range of the sample datatype.
-    *
-    * Derived classes may choose to call this function from within their
-    * initialize() method.  If the dynamic range is not set, the natural
-    * minimum and maximum of the datatype of the sample is used.
-    *
-    * @return status code indicating success or failure
-    */
-   LT_STATUS setDefaultDynamicRange();
-
-   /**
-    * set the minimum and maximum magnifications of the image properties
-    *
-    * This function is used to set the minimum and maximum magnifications
-    * of the image.
-    *
-    * Derived classes may choose to call this function from within their
-    * initialize() method.  If the minimum and maximum magnifications are not
-    * set, values of 1.0 are used (indicating the image may not be scaled
-    * larger or smaller).
-    *
-    * @param minMag  the minimum magnification of the image
-    * @param maxMag  the maximum magnification of the image
-    * @return status code indicating success or failure
-    */
-   LT_STATUS setMagnification(double minMag,
-                              double maxMag);
-
-   /**
-    * set the geographic coordinates of the image
-    *
-    * This function is used to set the geographic coordinates of the image.
-    *
-    * Derived classes may choose to call this function from within their
-    * initialize() method.  If the geographic coordinates are not set, the
-    * default position is assumed.
-    *
-    * @param geoCoord    the geographic coordinate information
-    * @return status code indicating success or failure
-    */
-   LT_STATUS setGeoCoord(const LTIGeoCoord& geoCoord);
-
-   /**
-    * set the geographic coordinates of the image
-    *
-    * This function is used to set the geographic coordinates of the image to
-    * a reasonable default, when there are no other geographic coordinates to
-    * use.
-    *
-    * The default coordinates used are:
-    * \li upperleft: (0.0, height-1.0)
-    * \li resolution: (1.0, -1.0)
-    * \li rotation: (0.0, 0.0)
-    *
-    * Calling this function will cause isGeoCoordImplicit() to return true.
-    *
-    * @return status code indicating success or failure
-    */
-   LT_STATUS setDefaultGeoCoord();
-
-   /**
-    * set the properties of an image based on another image
-    *
-    * This function is used to set all the properties of an image
-    * to be the same as those of another image.
-    *
-    * This function can be used by image filter classes, as a convenience
-    * function instead of explicitly calling all the various "set" functions.
-    *
-    * @param  image  the source image properties to use for this image
-    * @return status code indicating success or failure
-    */
-   LT_STATUS setAllProperties(const LTIImage& image);
-
-   /**
-    * set the "name" of the image
-    *
-    * Sets a string representing the "name" of the image.  The name
-    * should correspond roughly to the underlying file used, and should only
-    * be used for debugging purposes.
-    *
-    * @param  name  the name of this image
-    * @return status code indicating success or failure
-    */
-   LT_STATUS setName(const lt_utf8* name);
-
-   /**
-    * set image to support "random access"
-    *
-    * This function is used to indicate the image supports "selective"
-    * decoding.  See isSelective() for details.
-    *
-    * By default, all images support selective decoding.
-    *
-    * Derived classes may choose to call this function from within their
-    * initialize() method.
-    *
-    * @param  enable  set to true if and only if the image supports selective decoding
-    */
-   void setIsSelective(bool enable);
-
-   LT_STATUS inferPrecisionFromMetadata(LTIDataType,lt_uint8&);
-   lt_uint8 inferPrecisionFromMetadata2(LTIDataType);
-   LT_STATUS updateDynamicRangeMetadata(void);
-
-
-private:
-   lt_uint32 m_width;
-   lt_uint32 m_height;
-   LTIPixel* m_pixelProps;
-   LTIPixel* m_backgroundPixel;
-   LTIPixel* m_nodataPixel;
-   LTIPixel* m_drminPixel;
-   LTIPixel* m_drmaxPixel;
-   double m_minMag;
-   double m_maxMag;
-   LTIGeoCoord* m_geoCoord;
-   LTIMetadataDatabase* m_metadata;
-   LTIPixelLookupTable* m_pixelLookupTable;
-   lt_utf8* m_name;
-   bool m_isSelective;
-   bool m_geoCoordImplicit;
-
-   // nope
-   LTIImage(LTIImage&);
-   LTIImage& operator=(const LTIImage&);
-};
-
-
-
-LT_END_NAMESPACE(LizardTech)
-
-#if defined(LT_COMPILER_MS)
-	#pragma warning(pop)
-#endif
-
-#endif // LTI_IMAGE_H
diff --git a/src/DSDK/include/base/lti_imageFilter.h b/src/DSDK/include/base/lti_imageFilter.h
deleted file mode 100644
index 9fe6a4d..0000000
--- a/src/DSDK/include/base/lti_imageFilter.h
+++ /dev/null
@@ -1,114 +0,0 @@
-/* $Id: lti_imageFilter.h 5124 2006-10-27 11:40:40Z lubia $ */
-/* //////////////////////////////////////////////////////////////////////////
-//                                                                         //
-// This code is Copyright (c) 2004 LizardTech, Inc, 1008 Western Avenue,   //
-// Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         //
-// prohibited.  Access to and use of this code is permitted only under     //
-// license from LizardTech, Inc.  Portions of the code are protected by    //
-// US and foreign patents and other filings. All Rights Reserved.          //
-//                                                                         //
-////////////////////////////////////////////////////////////////////////// */
-/* PUBLIC */
-
-#ifndef LTI_IMAGEFILTER_H
-#define LTI_IMAGEFILTER_H
-
-// lt_lib_mrsid_core
-#include "lti_imageStage.h"
-
-
-LT_BEGIN_NAMESPACE(LizardTech)
-
-#if defined(LT_COMPILER_MS)
-   #pragma warning(push,4)
-#endif
-
-/**
- * abstract class for implementing an image transform
- *
- * The LTIImageFilter abstract class extends the LTIImageStage so that it can
- * be used as an intermediate stage in an image pipeline.  This is the base
- * class for such classes as the colorspace transformer, image cropper, etc.
- */
-class LTIImageFilter : public LTIImageStage
-{
-public:
-   /**
-    * constructor
-    *
-    * This is the constructor for a pipeline stage.  The previous image stage
-    * in the pipeline is passed in to this stage.
-    *
-    * @param  previousStage  the previous image stage in the pipeline 
-    * @param  takeOwnership  if true, this object will delete the parent stage
-    *                        when required 
-    */
-   LTIImageFilter(LTIImageStage* previousStage, bool takeOwnership);
-
-   /**
-    * destructor
-    */
-   virtual ~LTIImageFilter();
-
-   /**
-    * initializer
-    */
-   virtual LT_STATUS initialize();
-
-   virtual lt_uint32 getStripHeight() const;
-   virtual LT_STATUS setStripHeight(lt_uint32 stripHeight);
-
-   virtual lt_int64 getPhysicalFileSize() const;
-
-   virtual lt_int64 getEncodingCost(const LTIScene& scene) const;
-
-   virtual LT_STATUS projectPointAtMag(double upperLeft,
-                                       double mag,
-                                       double& newUpperLeft) const;
-
-   virtual LT_STATUS projectDimAtMag(double dim,
-                                     double mag,
-                                     double& newDim) const;
-
-   virtual LT_STATUS getDimsAtMag(double mag,
-                                  lt_uint32& width,
-                                  lt_uint32& height) const;
-
-   virtual bool getReaderScene(const LTIScene &decodeScene,
-                               LTIScene &readerScene) const;
-   
-   virtual LT_STATUS removeAllMetadata();
-
-protected:
-   /** true iff this stage should delete the previous stage */
-   bool m_takeOwnership;
-
-   /**
-    * get previous image in pipeline
-    *
-    * Returns the previous image in the pipeline.
-    *
-    * This function is virtual so that derived classes may override it if
-    * needed.  This is useful for classes like BMPImageWriter which need to
-    * silently insert their own transform stages into the pipeline.
-    *
-    * @return pointer to the previous stage (will not be NULL)
-    */
-   virtual LTIImageStage* getPreviousStage() const;
-
-private:
-   LTIImageStage* m_previousStage;
-
-   // nope
-   LTIImageFilter(LTIImageFilter&);
-   LTIImageFilter& operator=(const LTIImageFilter&);
-};
-
-
-LT_END_NAMESPACE(LizardTech)
-
-#if defined(LT_COMPILER_MS)
-	#pragma warning(pop)
-#endif
-
-#endif // LTI_IMAGEFILTER_H
diff --git a/src/DSDK/include/base/lti_imageReader.h b/src/DSDK/include/base/lti_imageReader.h
deleted file mode 100644
index ef21b3e..0000000
--- a/src/DSDK/include/base/lti_imageReader.h
+++ /dev/null
@@ -1,87 +0,0 @@
-/* $Id: lti_imageReader.h 5124 2006-10-27 11:40:40Z lubia $ */
-/* //////////////////////////////////////////////////////////////////////////
-//                                                                         //
-// This code is Copyright (c) 2004 LizardTech, Inc, 1008 Western Avenue,   //
-// Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         //
-// prohibited.  Access to and use of this code is permitted only under     //
-// license from LizardTech, Inc.  Portions of the code are protected by    //
-// US and foreign patents and other filings. All Rights Reserved.          //
-//                                                                         //
-////////////////////////////////////////////////////////////////////////// */
-/* PUBLIC */
-
-#ifndef LTI_IMAGEREADER_H
-#define LTI_IMAGEREADER_H
-
-// lt_lib_mrsid_core
-#include "lti_imageStage.h"
-
-
-LT_BEGIN_NAMESPACE(LizardTech)
-
-#if defined(LT_COMPILER_MS)
-   #pragma warning(push,4)
-#endif
-
-
-/**
- * abstract class for implementing an image reader
- *
- * The LTIImageReader abstract class extends the LTIImageStage so that it can
- * be used as a decoder for an image format, i.e. the "end" of an image
- * pipeline.  This is the base class for such classes as the MrSIDImageReader.
- */
-class LTIImageReader : public LTIImageStage
-{
-public:
-   /**
-    * constructor
-    */
-   LTIImageReader();
-
-   /**
-    * destructor
-    */
-   virtual ~LTIImageReader();
-   
-	/**
-    * clone the image reader
-    *
-    * This function creates a new image reader of the same type with the same
-    * initialization parameters.  The caller must call initialize() on the new
-    * reader prior to using it.
-    *
-    * The default implementation returns NULL, indicating cloning is not
-    * supported.  Derived classes may choose to override this.
-	 *	
-	 *	@return  a pointer to the new reader, or NULL if not image can not be cloned
-	*/
-	virtual LTIImageReader* duplicate();
-   
-   virtual lt_uint32 getStripHeight() const;
-   virtual LT_STATUS setStripHeight(lt_uint32 stripHeight);
-
-   virtual lt_int64 getPhysicalFileSize() const = 0;
-
-   virtual lt_int64 getEncodingCost(const LTIScene& scene) const;
-
-   virtual bool getReaderScene(const LTIScene &decodeScene,
-                               LTIScene &readerScene) const;
-
-private:
-   lt_uint32 m_stripHeight;
-
-
-   // nope
-   LTIImageReader(LTIImageReader&);
-   LTIImageReader& operator=(const LTIImageReader&);
-};
-
-
-LT_END_NAMESPACE(LizardTech)
-
-#if defined(LT_COMPILER_MS)
-	#pragma warning(pop)
-#endif
-
-#endif // LTI_IMAGEREADER_H
diff --git a/src/DSDK/include/base/lti_imageStage.h b/src/DSDK/include/base/lti_imageStage.h
deleted file mode 100644
index 5f2f1c0..0000000
--- a/src/DSDK/include/base/lti_imageStage.h
+++ /dev/null
@@ -1,414 +0,0 @@
-/* $Id: lti_imageStage.h 5124 2006-10-27 11:40:40Z lubia $ */
-/* //////////////////////////////////////////////////////////////////////////
-//                                                                         //
-// This code is Copyright (c) 2004 LizardTech, Inc, 1008 Western Avenue,   //
-// Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         //
-// prohibited.  Access to and use of this code is permitted only under     //
-// license from LizardTech, Inc.  Portions of the code are protected by    //
-// US and foreign patents and other filings. All Rights Reserved.          //
-//                                                                         //
-////////////////////////////////////////////////////////////////////////// */
-/* PUBLIC */
-
-#ifndef LTI_IMAGESTAGE_H
-#define LTI_IMAGESTAGE_H
-
-// lt_lib_mrsid_core
-#include "lti_image.h"
-
-
-LT_BEGIN_NAMESPACE(LizardTech)
-
-#if defined(LT_COMPILER_MS)
-   #pragma warning(push,4)
-#endif
-
-
-class LTIProgressDelegate;
-class LTIInterruptDelegate;
-class LTIScene;
-class LTISceneBuffer;
-
-
-
-/**
- * abstract class for decoding from an image
- *
- * The LTIImageStage abstract class extends the LTIImage class by adding
- * decode functionality, including read methods and progress and interrupt
- * functions.
- */
-class LTIImageStage : public LTIImage
-{
-public:
-   /**
-    * default constructor
-    */
-   LTIImageStage();
-
-   /**
-    * destructor
-    */
-   virtual ~LTIImageStage();
-
-   /**
-    * initializer
-    */
-   virtual LT_STATUS initialize();
-
-   /**
-    * set progress delegate
-    *
-    * This function sets the progress delegate, which is used in a callback-like
-    * fashion to report percent-complete of a read() operation back to the
-    * calling application.
-    *
-    * Passing NULL to this function should remove the LTIImageReader's current delegate,
-    * if any.
-    *
-    * Note this function does not take ownership of the delegate object.
-    *
-    * @param  delegate  a pointer to the delegate object to be used by the image reader
-    */
-   virtual void setProgressDelegate(LTIProgressDelegate* delegate);
-
-   /**
-    * set interrupt delegate
-    *
-    * This function sets the interrupt delegate, which is used in a callback-like
-    * fashion by the calling application to asynchronously indicate that a read()
-    * operation should be halted without completing.
-    *
-    * Passing NULL to this function should remove the LTIImageReader's current delegate,
-    * if any.
-    *
-    * Note this function does not take ownership of the delegate object.
-    *
-    * @param  delegate  a pointer to the delegate object to be used by the image reader
-    */
-   virtual void setInterruptDelegate(LTIInterruptDelegate* delegate);
-
-   /**
-    * read (decode) a scene from the image
-    *
-    * This function decodes a scene from the image and puts the pixels into the
-    * given buffer.
-    *
-    * The scene may NOT extend beyond the boundaries of the image.
-    *
-    * This function calls readBegin(), then calls readStrip() repeatedly
-    * until all the rows of the scene are done, then calls readEnd().
-    *
-    * Derived classes should not override this method.
-    *
-    * @param  scene  the region (and scale) of the image to be read 
-    * @param  buffer  the buffer to read the pixels into 
-    * @return status code indicating success or failure
-    */
-   LT_STATUS read(const LTIScene& scene,
-                  LTISceneBuffer& buffer);
-
-   /**
-    * start strip-based read
-    *
-    * This function is called by read() before readStrip() is called.  It
-    * should not be called directly except in certain rare circumstances.
-    *
-    * Derived classes should not override.
-    *
-    * @param scene  the full scene to be read 
-    * @return status code indicating success or failure
-    */
-   virtual LT_STATUS readBegin(const LTIScene& scene);
-
-   /**
-    * finish strip-based read
-    *
-    * This function is called by read() after readStrip() is called.  It
-    * should not be called directly except in certain rare circumstances.
-    *
-    * Derived classes should not override.
-    *
-    * @return status code indicating success or failure
-    */
-   virtual LT_STATUS readEnd();
-
-   /**
-    * read a strip from the image
-    *
-    * This function decodes a scene from the image and puts the pixels into the
-    * given buffer.  It is called by read(), and should not be called directly
-    * except in certain rare circumstances.
-    *
-    * The scene must lie within the boundaries of the image.
-    *
-    * Derived classes should not override this method.
-    *
-    * Derived classes should use the progress and interrupt delegates when
-    * the read operation can be expected to take a significant amount of time
-    * to complete.
-    *
-    * @param   buffer      the buffer to read the pixels into  
-    * @param   stripScene  the scene for this strip being decoded  
-    * @return  status code indicating success or failure  
-    */
-   virtual LT_STATUS readStrip(LTISceneBuffer& buffer, const LTIScene& stripScene);
-
-
-   /**
-    * get strip height
-    *
-    * Returns the strip height used in read() calls.
-    *
-    * Reader classes should set this.  Filter classes should inherit the
-    * stripheight of their pipeline predecessor.  A writer class will
-    * force the stripheight of the pipeline to match its stripheight.
-    *
-    * @return the strip height
-    */
-   virtual lt_uint32 getStripHeight() const = 0;
-
-   /**
-    * set the strip height
-    *
-    * Sets the strip height to be used in decoding.  This is the number
-    * of rows to be decoded in each strip of the read() sequence.
-    *
-    * Reader classes should implement this directly.  (LTIImageFilter
-    * implements this as a call to setStripHeight() on the previous stage.)
-    *
-    * @param stripHeight the number of rows to decode at one time 
-    * @return status code indicating success or failure
-    */
-   virtual LT_STATUS setStripHeight(lt_uint32 stripHeight) = 0;
-
-   virtual lt_int64 getPhysicalFileSize() const = 0;
-
-
-   /**
-    * get the cost to encode this scene
-    *
-    * Returns the "cost" to encode this scene, for use by those image writers
-    * which have usage metering enabled.  The typical cost is equal to the
-    * nominal image size (width * height * numBands * bytesPerSample), but
-    * this is overridden for special situations, e.g. the mosaic filter.
-    *
-    * @param  scene  the scene to be charged for 
-    * @return the cost to encode the given scene
-    */
-   virtual lt_int64 getEncodingCost(const LTIScene& scene) const=0;
-
-   /**
-    * get the underlying scene to be used
-    *
-    * Get the scene that will be sent to the underlying LTIImageReader.  This
-    * is useful in some complex pipelines.
-    *
-    * @param  decodeScene  the scene that would be given to read() 
-    * @param  readerScene  the scene that is the actual scene passed
-    *                      the underlying image reader 
-    * @return true if readerScene is not empty
-    */
-   virtual bool getReaderScene(const LTIScene &decodeScene,
-                               LTIScene &readerScene) const = 0;
-
-   /**
-    * get number of strips in scene
-    *
-    * After readBegin() has been called, this will return the number of
-    * strips in the given scene.
-    *
-    * @return number of strips in the current scene
-    */
-   virtual lt_uint32 getNumStrips() const;
-
-   /**
-    * get a strip for current scene
-    *
-    * After readBegin() has been called, this function can be used to return
-    * the scene corresponding to the given strip number for the current scene
-    * being decoded.
-    *
-    * @param   stripNumber  the strip to compute the scene for 
-    * @return  the scene representing the strip
-    */
-   virtual LTIScene getStripScene(lt_uint32 stripNumber) const;
-
-   /**
-    * override the background color of the image
-    *
-    * This function is used to set the background color of the image.
-    *
-    * @param backgroundPixel  the data for the background color
-    * @return status code indicating success or failure
-    */
-   virtual LT_STATUS overrideBackgroundPixel(const LTIPixel *backgroundPixel);
-
-   /**
-    * override the "no data" (transparency) color of the image
-    *
-    * This function is used to set the "no data" or transparency color of the
-    * image.
-    *
-    * @param nodataPixel  the data for the transparency color
-    * @return status code indicating success or failure
-    */
-   virtual LT_STATUS overrideNoDataPixel(const LTIPixel *nodataPixel);
-
-   /**
-    * override the geographic coordinates of the image
-    *
-    * This function is used to set the geographic coordinates of the image.
-    *
-    * @param geoCoord    the geographic coordinate information
-    * @return status code indicating success or failure
-    */
-   virtual LT_STATUS overrideGeoCoord(const LTIGeoCoord &geoCoord);
-
-   virtual LT_STATUS removeAllMetadata();
-
-protected:
-   /**
-    * fill the background of the scene
-    *
-    * This function sets the buffer to the background pixel, if any.
-    *
-    * Derived classes may choose to override this.
-    *
-    * @param   scene   the region (and scale) of the image to be read 
-    * @param   buffer  the buffer to read the pixels into 
-    * @return  status code indicating success or failure
-    */
-   LT_STATUS fillBackground(const LTIScene& scene,
-                            LTISceneBuffer& buffer);
-
-   /**
-    * fill the scene to given pixel
-    *
-    * This function sets the buffer to the given pixel.
-    *
-    * Derived classes may choose to override this.
-    *
-    * @param   scene   the region (and scale) of the image to be read 
-    * @param   buffer  the buffer to read the pixels into 
-    * @return  status code indicating success or failure
-    */
-   LT_STATUS fillBackground(const LTIScene& scene,
-                            LTISceneBuffer& buffer,
-                            const LTIPixel&);
-
-   /**
-    * read a strip from the image
-    *
-    * This function is called by readStrip() to implement the actual
-    * class-specific work for decoding a strip of the scene.
-    *
-    * Derived classes must implement this function.
-    *
-    * This function should never be called directly.
-    *
-    * @param   stripBuffer  the buffer to read the pixels into  
-    * @param   stripScene   the scene for this strip being decoded  
-    * @return  status code indicating success or failure
-    */
-   virtual LT_STATUS decodeStrip(LTISceneBuffer& stripBuffer, const LTIScene& stripScene) =0;
-
-   /**
-    * start strip-based read
-    *
-    * This function is called by readBegin() to start the actual
-    * class-specific work for decoding a scene.
-    *
-    * Derived classes must implement this function.
-    *
-    * This function should never be called directly.
-    *
-    * @param scene  the full scene to be read 
-    * @return status code indicating success or failure
-    */
-   virtual LT_STATUS decodeBegin(const LTIScene& scene) =0;
-
-   /**
-    * finish strip-based read
-    *
-    * This function is called by readEnd() to complete the actual
-    * class-specific work for decoding a scene.
-    *
-    * Derived classes must implement this function.
-    *
-    * This function should never be called directly.
-    *
-    * @return status code indicating success or failure
-    */
-   virtual LT_STATUS decodeEnd() =0;
-
-   /**
-    * get progress delegate
-    *
-    * This function returns the object's progress delegate.
-    *
-    * The function will return NULL if no delegate has been set.
-    *
-    * Derived classes should call this method from within their read()
-    * methods so that they can inform the user of the progress of the read
-    * operation.
-    *
-    * @return  a pointer to the delegate object (or NULL if no delegate has been set)
-    */
-   virtual LTIProgressDelegate* getProgressDelegate() const;
-
-   /**
-    * get interrupt delegate
-    *
-    * This function returns the object's interrupt delegate.
-    *
-    * The function will return NULL if no delegate has been set.
-    *
-    * Derived classes should call this method from within their read()
-    * methods so that they can determine if the user has requested that the read
-    * operation should be aborted.
-    *
-    * @return  a pointer to the delegate object (or NULL if no delegate has been set)
-    */
-   virtual LTIInterruptDelegate* getInterruptDelegate() const;
-
-   /**
-    * get full scene
-    *
-    * This function returns the object's scene that was passed to readBegin().
-    * Only use this function in decode{Begin, Strip, End}().
-    *
-    * @return  the scene
-    */
-   const LTIScene &getFullScene() const;
-
-private:
-   LT_STATUS validateReadRequestScene(const LTIScene& fullScene) const;
-   LT_STATUS validateReadRequestBuffer(const LTIScene& fullScene,
-                                       LTISceneBuffer& fullData) const;
-
-   LT_STATUS checkDelegates(const LTIScene*, bool);
-
-   //
-   // helper functions
-   //
-   class StripMarcher;
-   StripMarcher* m_stripMarcher;
-   LTIScene *m_fullScene;
-   
-   LTIProgressDelegate* m_progressDelegate;
-   LTIInterruptDelegate* m_interruptDelegate;
-
-   // nope
-   LTIImageStage(const LTIImageStage&);
-   LTIImageStage& operator=(const LTIImageStage&);
-};
-
-
-LT_END_NAMESPACE(LizardTech)
-
-#if defined(LT_COMPILER_MS)
-	#pragma warning(pop)
-#endif
-
-#endif // LTI_IMAGESTAGE_H
diff --git a/src/DSDK/include/base/lti_imageStageManager.h b/src/DSDK/include/base/lti_imageStageManager.h
deleted file mode 100644
index 1946e45..0000000
--- a/src/DSDK/include/base/lti_imageStageManager.h
+++ /dev/null
@@ -1,84 +0,0 @@
-/* $Id: lti_imageStageManager.h 5124 2006-10-27 11:40:40Z lubia $ */
-/* //////////////////////////////////////////////////////////////////////////
-//                                                                         //
-// This code is Copyright (c) 2004 LizardTech, Inc, 1008 Western Avenue,   //
-// Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         //
-// prohibited.  Access to and use of this code is permitted only under     //
-// license from LizardTech, Inc.  Portions of the code are protected by    //
-// US and foreign patents and other filings. All Rights Reserved.          //
-//                                                                         //
-////////////////////////////////////////////////////////////////////////// */
-/* PUBLIC */
-
-#ifndef LTI_IMAGESTAGEMANAGER_H
-#define LTI_IMAGESTAGEMANAGER_H
-
-// lt_lib_mrsid_core
-#include "lti_imageStage.h"
-
-
-LT_BEGIN_NAMESPACE(LizardTech)
-
-#if defined(LT_COMPILER_MS)
-   #pragma warning(push,4)
-#endif
-
-
-/**
- * abstract class for managing file formats with multiply images/tiles
- */
-class LTIImageStageManager
-{
-public:
-
-   /**
-    * destructor
-    */
-   virtual ~LTIImageStageManager();
-
-   /**
-    * create an image stage
-    *
-    * Note when done with the image stage call deleteImageStage() because the
-    * may cache the image stage.
-    *
-    * @param  imageNumber  id/number of the image
-    * @param  imageStage   a pointer to the created image stage
-    */
-   virtual LT_STATUS createImageStage(lt_uint32 imageNumber,
-                                      LTIImageStage *&imageStage) = 0;
-
-   /**
-    * give the image stage back to the manager
-    *
-    * @param  imageNumber  id/number of the image
-    * @param  imageStage   a pointer to the image stage to delete
-    */
-   virtual LT_STATUS deleteImageStage(lt_uint32 imageNumber,
-                                      LTIImageStage *imageStage) = 0;
-
-   /**
-    * get the number of images/tiles the object is managing
-    */
-   lt_uint32 getNumImages(void) const;
-
-protected:
-   LTIImageStageManager(void);
-   void setNumImages(lt_uint32 numImages);
-
-private:
-   lt_uint32 m_numImages;
-
-   // nope
-   LTIImageStageManager(const LTIImageStageManager &);
-   LTIImageStageManager& operator=(const LTIImageStageManager &);
-};
-
-
-LT_END_NAMESPACE(LizardTech)
-
-#if defined(LT_COMPILER_MS)
-	#pragma warning(pop)
-#endif
-
-#endif // LTI_IMAGESTAGEMANAGER_H
diff --git a/src/DSDK/include/base/lti_imageWriter.h b/src/DSDK/include/base/lti_imageWriter.h
deleted file mode 100644
index ad2334b..0000000
--- a/src/DSDK/include/base/lti_imageWriter.h
+++ /dev/null
@@ -1,276 +0,0 @@
-/* $Id: lti_imageWriter.h 5124 2006-10-27 11:40:40Z lubia $ */
-/* //////////////////////////////////////////////////////////////////////////
-//                                                                         //
-// This code is Copyright (c) 2004 LizardTech, Inc, 1008 Western Avenue,   //
-// Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         //
-// prohibited.  Access to and use of this code is permitted only under     //
-// license from LizardTech, Inc.  Portions of the code are protected by    //
-// US and foreign patents and other filings. All Rights Reserved.          //
-//                                                                         //
-////////////////////////////////////////////////////////////////////////// */
-/* PUBLIC */
-
-#ifndef LTI_IMAGEWRITER_H
-#define LTI_IMAGEWRITER_H
-
-// lt_lib_base
-#include "lt_base.h"
-
-// lt_lib_mrsid_core
-#include "lti_imageFilter.h"
-
-LT_BEGIN_NAMESPACE(LizardTech)
-
-#if defined(LT_COMPILER_MS)
-   #pragma warning(push,4)
-#endif
-
-class LTIProgressDelegate;
-class LTIInterruptDelegate;
-
-
-/**
- * abstract class for implementing an image writer
- *
- * The LTIImageWriter abstract class is used to output pixels from an image
- * pipeline to an actual image format.  The classes MG3ImageWriter,
- * TIFFImageWriter, etc, derive from this class.
- */
-class LTIImageWriter
-{
-public:
-   /**
-    * constructor
-    *
-    * This constructor creates an abstract image writer for the given
-    * image stage.
-    *
-    * Note that the pointer to the input image stage may not be NULL.
-    * The writer does not take ownership of the image stage.
-    *
-    * @param  image  the source of image data to be written
-    */
-   LTIImageWriter(LTIImageStage* image);
-
-   /**
-    * destructor
-    */
-   virtual ~LTIImageWriter();
-
-   /**
-    * initialization function
-    */
-   virtual LT_STATUS initialize();
-
-   /**
-    * write (encode) a scene to the output format
-    *
-    * This function writes the given scene to the implemented image format.
-    *
-    * The write() function just calls writeBegin() for the given scene(),
-    * then calls writeStrip() repeatedly for each strip in the scene(), then
-    * calls writeEnd().
-    *
-    * A derived classes should not override this function, unless it has
-    * special requirements for interacting with the rest of the image
-    * pipeline.
-    *
-    * @param   scene  the scene to decode and output
-    * @return  status code indicating success or failure
-    */
-   virtual LT_STATUS write(const LTIScene& scene);
-
-   /**
-    * begin an encode (write) operation
-    *
-    * This function implements the logic for beginning the encoding of the
-    * given scene.
-    *
-    * The scene must be a valid scene for the underlying image pipeline.
-    *
-    * This function is called by write().  Derived classes must implement
-    * this function.
-    *
-    * @param   scene  the scene to decode and output
-    * @return  status code indicating success or failure
-    */
-   virtual LT_STATUS writeBegin(const LTIScene& scene) =0;
-
-   /**
-    * encode one strip of the scene
-    *
-    * This function implements the logic for actually encoding a given strip
-    * of the given scene.
-    *
-    * This function is called by write().  Derived classes must implement
-    * this function.
-    *
-    * @param   stripBuffer  the pixels for the current strip
-    * @param   stripScene   the scene representing the strip being written
-    * @return  status code indicating success or failure
-    */
-   virtual LT_STATUS writeStrip(LTISceneBuffer& stripBuffer, 
-                                const LTIScene& stripScene) =0;
-
-   /**
-    * complete an encode (write) operation
-    *
-    * This function implements the logic for completing the encoding of the
-    * given scene.
-    *
-    * This function is called by write().  Derived classes must implement
-    * this function.
-    *
-    * @return  status code indicating success or failure
-    */
-   virtual LT_STATUS writeEnd() =0;
-
-   /**
-    * set the stripheight for the encode
-    *
-    * This function sets the stripheight to be used when encoding a scene,
-    * i.e. the number of rows to process at one time.  This value is used
-    * to control the decode requests from the image pipeline.
-    *
-    * @param  stripHeight  the number of rows to encode at one time
-    * @return  status code indicating success or failure
-    */
-   virtual LT_STATUS setStripHeight(lt_uint32 stripHeight);
-
-   /**
-    * get the stripheight for the encode
-    *
-    * Returns the number of rows which will be encoded at a time.
-    *
-    * @return  the stripheight setting of the encoder
-    */
-   virtual lt_uint32 getStripHeight() const;
-
-   /**
-    * get the preferred stripheight for the encode
-    *
-    * Returns the preferred stripheight for the encoder.  By default, this is
-    * just the stripheight of the underlying image pipeline.  A derived class
-    * may override this to reflect specific needs of an encoder
-    * implementation, however.
-    *
-    * @return  the preferred stripheight setting of the encoder
-    */
-   virtual lt_uint32 getDefaultStripHeight() const;
-
-   /**
-    * get the cost to encode the scene
-    *
-    * Returns the cost to encode this scene, for application using the usage
-    * metering system.  See LTIImageStage::getEncodingCost() for details.
-    *
-    * @param   scene  the scene to determine the cost for
-    * @return  the cost for the scene
-    */
-   virtual lt_int64 getEncodingCost(const LTIScene& scene) const;
-
-   /**
-    * get the approximate output filesize
-    *
-    * Returns an estimate of the number of bytes that will be output to
-    * the output file/stream.
-    *
-    * The default position is to assume the nominal size, that is
-    * width * height * bands * sample-size.  Compressed file formats
-    * should take the compression ratio into account when estimating
-    * this number.  This number may be inaccurate due to file format
-    * overhead, metatata overhead, and/or compression estimations.
-    *
-    * @param   scene  the scene to determine the output filesize for
-    * @return  the number of bytes in the output file
-    */
-   virtual lt_int64 getEstimatedOutputSize(const LTIScene& scene) const;
-
-   /**
-    * set progress delegate
-    *
-    * This function sets the progress delegate, which is used in a callback-like
-    * fashion to report percent-complete of a write() operation back to the
-    * calling application.
-    *
-    * Passing NULL to this function should remove the LTIImageWriter's current delegate,
-    * if any.
-    *
-    * Note this function does not take ownership of the delegate object.
-    *
-    * @param  delegate  a pointer to the delegate object to be used by the image writer
-    */
-   virtual void setProgressDelegate(LTIProgressDelegate* delegate);
-
-   /**
-    * set interrupt delegate
-    *
-    * This function sets the interrupt delegate, which is used in a callback-like
-    * fashion by the calling application to asynchronously indicate that a write()
-    * operation should be halted without completing.
-    *
-    * Passing NULL to this function should remove the LTIImageWriter's current delegate,
-    * if any.
-    *
-    * Note this function does not take ownership of the delegate object.
-    *
-    * @param  delegate  a pointer to the delegate object to be used by the image writer
-    */
-   virtual void setInterruptDelegate(LTIInterruptDelegate* delegate);
-
-protected:
-   /**
-    * get progress delegate
-    *
-    * This function returns the object's progress delegate.
-    *
-    * The function will return NULL if no delegate has been set.
-    *
-    * Derived classes should call this method from within their write()
-    * methods so that they can inform the user of the progress of the write
-    * operation.
-    *
-    * @return  a pointer to the delegate object (or NULL if no delegate has been set)
-    */
-   virtual LTIProgressDelegate* getProgressDelegate() const;
-
-   /**
-    * get interrupt delegate
-    *
-    * This function returns the object's interrupt delegate.
-    *
-    * The function will return NULL if no delegate has been set.
-    *
-    * Derived classes should call this method from within their write()
-    * methods so that they can determine if the user has requested that the write
-    * operation should be aborted.
-    *
-    * @return  a pointer to the delegate object (or NULL if no delegate has been set)
-    */
-   virtual LTIInterruptDelegate* getInterruptDelegate() const;
-
-   LTIImageStage* m_image;
-
-private:
-   LT_STATUS checkDelegates(const LTIScene& fullScene,
-                            const LTIScene* currScene,
-                            bool atEnd);
-
-   lt_uint32 m_stripHeight;
-
-   LTIProgressDelegate* m_progressDelegate;
-   LTIInterruptDelegate* m_interruptDelegate;
-
-   // nope
-   LTIImageWriter(LTIImageWriter&);
-   LTIImageWriter& operator=(const LTIImageWriter&);
-};
-
-
-LT_END_NAMESPACE(LizardTech)
-
-#if defined(LT_COMPILER_MS)
-	#pragma warning(pop)
-#endif
-
-#endif // LTI_IMAGEWRITER_H
diff --git a/src/DSDK/include/base/lti_navigator.h b/src/DSDK/include/base/lti_navigator.h
deleted file mode 100644
index 55d8ad4..0000000
--- a/src/DSDK/include/base/lti_navigator.h
+++ /dev/null
@@ -1,393 +0,0 @@
-/* $Id: lti_navigator.h 5124 2006-10-27 11:40:40Z lubia $ */
-/* //////////////////////////////////////////////////////////////////////////
-//                                                                         //
-// This code is Copyright (c) 2004 LizardTech, Inc, 1008 Western Avenue,   //
-// Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         //
-// prohibited.  Access to and use of this code is permitted only under     //
-// license from LizardTech, Inc.  Portions of the code are protected by    //
-// US and foreign patents and other filings. All Rights Reserved.          //
-//                                                                         //
-////////////////////////////////////////////////////////////////////////// */
-/* PUBLIC */
-
-#ifndef LTI_NAVIGATOR_H
-#define LTI_NAVIGATOR_H
-
-// lt_lib_base
-#include "lt_base.h"
-
-// lt_lib_mrsid_core
-#include "lti_scene.h"
-#include "lti_geoCoord.h"
-
-
-LT_BEGIN_NAMESPACE(LizardTech)
-
-#if defined(LT_COMPILER_MS)
-   #pragma warning(push,4)
-#endif
-
-class LTIImage;
-
-
-/**
- * provides LTIScene movement control
- *
- * Class for navigating around an image.  This class extends LTIScene by
- * adding functions for moving the scene, resizing, zooming, etc.
- */
-class LTINavigator : public LTIScene
-{
-public:
-   /**
-    * Styles for scene-setting operations.  These constants are used to
-    * define how to treat out-of-bounds conditions for scene-setting operations,
-    * i.e. when a calculated scene or magnification is not valid for our image.
-    */
-   typedef enum
-   {
-      STYLE_LAX    = 1,    /**< if invalid scene, return success anyway */
-      STYLE_STRICT = 2,    /**< if invalid scene, return an error code */
-      STYLE_CLIP   = 3     /**< if invalid scene, clip scene to image and return success */
-   } Style;
-
-public:
-   /**
-    * default constructor
-    *
-    * This constructor creates an LTINavigator whose scene corresponds
-    * to the entire given image at magnification 1.0.
-    *
-    * @param image the image to be navigated within 
-    */
-   LTINavigator(const LTIImage& image);
-
-   /**
-    * constructor
-    *
-    * This constructor creates an LTINavigator with the given scene.
-    *
-    * @param  image  the image to be navigated within 
-    * @param  scene  the initial scene 
-    */
-   LTINavigator(const LTIImage& image,
-                const LTIScene& scene);
-
-   /**
-    * destructor
-    */
-   ~LTINavigator();
-   
-   /**
-    * Returns the image the navigator is attached to.
-    *
-    * @return the navigator's image
-    */
-   const LTIImage& getImage() const;
-
-   /**
-    * is current scene is legal for the image
-    *
-    * Returns true if the current scene is legal for the image.  If any part
-    * of the scene is outside the boundaries of the image or if the
-    * magnification is not supported by the image, false will be returned.
-    *
-    * @return the navigator's image
-    */
-   bool isSceneValid() const;
-
-   /**
-    * move by specified amount
-    *
-    * Modifies the current scene by moving by the specified amount.
-    * (See also moveTo().)
-    *
-    * @param   xDelta  the number of pixels to move horizontally 
-    * @param   yDelta  the number of pixels to move vertically 
-    * @param   style   how to handle boundary conditions 
-    * @return  status code indicating success or failure
-    */
-   LT_STATUS moveBy(double xDelta, double yDelta, Style style);
-
-   /**
-    * move to specified amount
-    *
-    * Modifies the current scene by moving to the specified (x,y) position.
-    * (See also moveBy().)
-    *
-    * @param   x      the x-position to move to 
-    * @param   y      the y-position to move to 
-    * @param   style  how to handle boundary conditions 
-    * @return  status code indicating success or failure
-    */
-   LT_STATUS moveTo(double x, double y, Style style);
-
-   /**
-    * zoom by specified amount
-    *
-    * Modifies the current scene by zooming by the specified scale
-    * factor.  (See also zoomTo().)
-    * The other scene parameters (x, y, width,
-    * height) are unaffected, unless the \a style parameter is used.
-    *
-    * For example, a call zoomBy(2.0) will double the magnification.
-    *
-    * @param   delta  the zoom factor 
-    * @param   style  how to handle boundary conditions 
-    * @return  status code indicating success or failure
-    */
-   LT_STATUS zoomBy(double delta, Style style);
-
-   /**
-    * zoom to specified scale
-    *
-    * Modifies the current scene by zooming to the specified scale.
-    * (See also zoomBy().)  The other scene parameters (x, y, width,
-    * height) are unaffected, unless the \a style parameter is used.
-    *
-    * For example, a call zoomBy(2.0) will double the magnification.
-    *
-    * @param   mag    the magnification to change to 
-    * @param   style  how to handle boundary conditions 
-    * @return  status code indicating success or failure
-    */
-   LT_STATUS zoomTo(double mag, Style style);
-
-   /**
-    * return scene large enough to fit window
-    *
-    * Returns a scene which fits the image to the given size.  The scene will
-    * be the largest such that the entire image fits completely within the
-    * specified dimensions.  A failure code will be returned if the request
-    * cannot be honored.
-    *
-    * @note This function does NOT stretch, upsample, or downsample the image;
-    * it will only determine the best fit within the bounds of the resolutions
-    * that the image supports, e.g. power-of-two.
-    *
-    * @param   maxWidth   the maximum width of the scene to return 
-    * @param   maxHeight  the maximum height of the scene to return 
-    * @param   newScene   the scene which fits the request 
-    * @return  status code indicating success or failure
-    */
-   LT_STATUS bestFit(double maxWidth, double maxHeight, LTIScene& newScene);
-
-   /**
-    * round scene to integral values
-    *
-    * Modifies the current scene by performing proper integral rounding on
-    * the (x,y) position and the dimensions.
-    */
-   void roundScene();
-
-   /**
-    * clip scene to fit image
-    *
-    * This function clips the current scene to the boundaries of the image at
-    * the current magnification.
-    *
-    * @return true if the resulting scene contains any part of the image
-    */
-   bool clipToImage();
-   
-   /**
-    * clip scene to fit given scene
-    *
-    * This function clips the current scene to the boundaries of the given
-    * scene.
-    *
-    * @return true if the resulting scene contains any part of the image
-    */
-   bool clipToScene(const LTIScene& scene);
-
-   /**
-    * reset scene
-    *
-    * This function manually resets the navigator scene to the given scene.
-    *
-    * @param scene the new scene 
-    * @param style boundary condition mode 
-    * @return status code indicating success or failure
-    */
-   LT_STATUS setScene(const LTIScene& scene, Style style);
-
-
-   /**
-    * set scene to "icon"
-    *
-    * This function sets the navigator scene to the icon (the smallest
-    * magnification this image can be represented at).
-    *
-    * @return status code indicating success or failure
-    */
-   LT_STATUS setSceneToIcon();
-
-
-   /**
-    * set scene to full image
-    *
-    * This function sets the navigator scene to the entire image at full
-    * resolution.
-    *
-    * @return status code indicating success or failure
-    */
-   LT_STATUS setSceneToFull();
-
-
-   /**
-    * get current scene
-    *
-    * This function returns the current navigator scene, e.g. to be used in
-    * a call to LTIImageReader::read().
-    *
-    * Note the returned object is volatile; caller should use copy ctor as needed.
-    *
-    * @return the navigator scene
-    */
-   const LTIScene& getScene() const;
-
-   /**
-    * returns the geographic coordinates of scene
-    *
-    * Returns the geographic coordinates of the current scene.
-    *
-    * @return the geo coordinates
-    */
-   LTIGeoCoord getGeoCoord() const;
-
-   /**
-    * @name Functions to set scene explicitly
-    */
-   /*@{*/
-
-   /**
-    * set scene to given position
-    *
-    * Sets the scene to the given position.  The position is specified using
-    * upper-left/width-height values.
-    *
-    * @param   upperLeftX     the upper-left x-position of the new scene
-    * @param   upperLeftY     the upper-left y-position of the new scene
-    * @param   width          the width of the new scene
-    * @param   height         the height of the new scene
-    * @param   magnification  the magnification of the new scene
-    * @return status code indicating success or failure
-    */
-   LT_STATUS setSceneAsULWH(double upperLeftX, double upperLeftY,
-                            double width, double height,
-                            double magnification);
-
-   /**
-    * set scene to given position
-    *
-    * Sets the scene to the given position.  The position is specified using
-    * upper-left/lower-right values.
-    *
-    * @param   upperLeftX     the upper-left x-position of the new scene
-    * @param   upperLeftY     the upper-left y-position of the new scene
-    * @param   lowerRightX    the lower-right x-position of the new scene
-    * @param   lowerRightY    the lower-right y-position of the new scene
-    * @param   magnification  the magnification of the new scene
-    * @return status code indicating success or failure
-    */
-   LT_STATUS setSceneAsULLR(double upperLeftX, double upperLeftY,
-                            double lowerRightX, double lowerRightY,
-                            double magnification);
-
-   /**
-    * sets scene to the given position
-    *
-    * Sets the scene to the given position.  The position is specified using
-    * center/width-height values.
-    *
-    * @param   centerX        the center x-position of the new scene
-    * @param   centerY        the center y-position of the new scene
-    * @param   width          the width of the new scene
-    * @param   height         the height of the new scene
-    * @param   magnification  the magnification of the new scene
-    * @return status code indicating success or failure
-    */
-   LT_STATUS setSceneAsCWH(double centerX, double centerY,
-                           double width, double height,
-                           double magnification);
-   /*@}*/
-
-
-   /**
-    * @name Functions to set scene explicitly, using geographic coordinates
-    */
-   /*@{*/
-
-   /**
-    * set scene to given position
-    *
-    * Sets the scene to the given position.  The position is specified using
-    * upper-left/width-height values.  The values are in "geo" space, i.e.
-    * that of the LTIGeoCoord space.
-    *
-    * @param   upperLeftX     the upper-left x-position of the new scene
-    * @param   upperLeftY     the upper-left y-position of the new scene
-    * @param   width          the width of the new scene
-    * @param   height         the height of the new scene
-    * @param   magnification  the magnification of the new scene
-    * @return status code indicating success or failure
-    */
-   LT_STATUS setSceneAsGeoULWH(double upperLeftX, double upperLeftY,
-                               double width, double height,
-                               double magnification);
-
-   /**
-    * set scene to given position
-    *
-    * Sets the scene to the given position.  The position is specified using
-    * upper-left/lower-right values.  The values are in "geo" space, i.e.
-    * that of the LTIGeoCoord space.
-    *
-    * @param   upperLeftX     the upper-left x-position of the new scene
-    * @param   upperLeftY     the upper-left y-position of the new scene
-    * @param   lowerRightX    the lower-right x-position of the new scene
-    * @param   lowerRightY    the lower-right y-position of the new scene
-    * @param   magnification  the magnification of the new scene
-    * @return status code indicating success or failure
-    */
-   LT_STATUS setSceneAsGeoULLR(double upperLeftX, double upperLeftY,
-                               double lowerRightX, double lowerRightY,
-                               double magnification);
-
-   /**
-    * set scene to given position
-    *
-    * Sets the scene to the given position.  The position is specified using
-    * center/width-height values.  The values are in "geo" space, i.e.
-    * that of the LTIGeoCoord space.
-    *
-    * @param   centerX        the center x-position of the new scene
-    * @param   centerY        the center y-position of the new scene
-    * @param   width          the width of the new scene
-    * @param   height         the height of the new scene
-    * @param   magnification  the magnification of the new scene
-    * @return status code indicating success or failure
-    */
-   LT_STATUS setSceneAsGeoCWH(double centerX, double centerY,
-                              double width, double height,
-                              double magnification);
-   /*@}*/
-
-protected:
-   const LTIImage& m_image;
-
-private:
-   // nope
-   LTINavigator();
-   LTINavigator(LTINavigator&);
-   LTINavigator& operator=(const LTINavigator&);
-};
-
-
-LT_END_NAMESPACE(LizardTech)
-
-#if defined(LT_COMPILER_MS)
-	#pragma warning(pop)
-#endif
-
-#endif // LTI_NAVIGATOR_H
diff --git a/src/DSDK/include/base/lti_pixel.h b/src/DSDK/include/base/lti_pixel.h
deleted file mode 100644
index 54f39c0..0000000
--- a/src/DSDK/include/base/lti_pixel.h
+++ /dev/null
@@ -1,444 +0,0 @@
-/* $Id: lti_pixel.h 5124 2006-10-27 11:40:40Z lubia $ */
-/* //////////////////////////////////////////////////////////////////////////
-//                                                                         //
-// This code is Copyright (c) 2004 LizardTech, Inc, 1008 Western Avenue,   //
-// Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         //
-// prohibited.  Access to and use of this code is permitted only under     //
-// license from LizardTech, Inc.  Portions of the code are protected by    //
-// US and foreign patents and other filings. All Rights Reserved.          //
-//                                                                         //
-////////////////////////////////////////////////////////////////////////// */
-/* PUBLIC */
-
-#ifndef LTI_PIXEL_H
-#define LTI_PIXEL_H
-
-// lt_lib_mrsid_core
-#include "lti_types.h"
-
-
-#if defined(LT_COMPILER_MS)
-	#pragma warning(push,4)
-#endif
-
-LT_BEGIN_NAMESPACE(LizardTech)
-
-class LTISample;
-
-
-/**
- * basic properties of a pixel
- *
- * This class stores the basic properties of a pixel:
- * \li the number of bands
- * \li the colorspace
- * \li the datatype
- *
- * This is done by representing the pixel as a set of samples.
- * Since the colorspace cannot in general be inferred from the
- * colors in the samples, the user must declare the colorspace
- * for the pixel.
- */
-class LTIPixel
-{
-public:
-   /**
-    * constructor
-    *
-    * This constructor creates an LTIPixel object with the given
-    * properties: all the samples will be of the same type.
-    *
-    * @param  colorSpace  the pixel colorspace
-    * @param  numBands    the number of bands (samples per pixel)
-    * @param  dataType    the datatype of the samples
-    * @param  samples     optional sample objects (default is uint8 set to 0)
-    */
-   LTIPixel(LTIColorSpace colorSpace,
-            lt_uint16 numBands,
-            LTIDataType dataType,
-            const LTISample* samples=0);
-
-   /**
-    * constructor
-    *
-    * This constructor creates an LTIPixel object made up of the
-    * given sample types.  If the colorspace given is LTI_COLORSPACE_INVALID,
-    * then the function will attempt to infer the colorspace from the
-    * underlying samples; if there is no obvious colorspace, e.g. RGB,
-    * the LTI_COLORSPACE_MULTISPECTRAL will be used.
-    *
-    * @param  samples     the samples of the pixel
-    * @param  numBands    the number of bands (samples per pixel)
-    * @param  colorSpace  the overall colorspace
-    */
-   LTIPixel(const LTISample* samples,
-            lt_uint16 numBands,
-            LTIColorSpace colorSpace=LTI_COLORSPACE_INVALID);
-
-   /**
-    * copy constructor
-    */
-   LTIPixel(const LTIPixel&);
-
-   /**
-    * destructor
-    */
-   virtual ~LTIPixel();
-
-   /**
-    * assignment operator
-    */
-   virtual LTIPixel& operator=(const LTIPixel&);
-
-   /**
-    * equality operator
-    */
-   bool operator==(const LTIPixel&) const;
-
-   /**
-    * equality operator
-    */
-   bool operator!=(const LTIPixel&) const;
-
-   /**
-    * get the sample datatype
-    *
-    * This function returns the datatype of the samples.  Returns
-    * LTI_DATATYPE_INVALID if the samples are not all the same
-    * datatype.
-    *
-    * @return the datatype of the samples
-    */
-   LTIDataType getDataType() const;
-
-   /**
-    * get the colorspace
-    *
-    * This function returns the colorspace of the pixel.
-    *
-    * @return the colorspace of the pixel
-    */
-   LTIColorSpace getColorSpace() const;
-
-   /**
-    * get the number of bands
-    *
-    * This function returns the number of bands in the pixel (samples
-    * per pixel).
-    *
-    * @return the number of bands
-    */
-   lt_uint16 getNumBands() const;
-
-   /**
-    * get the size of a pixel
-    *
-    * This function returns the size of a single pixel, in bytes.
-    *
-    * This is equivalent to the sum of getBytesPerSample() for each
-    * of the samples.
-    *
-    * @return the number of bytes per pixel
-    */
-   lt_uint32 getNumBytes() const;
-
-   /**
-    * returns the largest size of any sample
-    *
-    * Returns the largest size of any sample.  This is equivalent to the
-    * computing the maximum of getBytesPerSample() for each of the samples.
-    *
-    * @return  the number of bytes per sample
-    */
-   lt_uint32 getMaxBytesPerSample() const;
-
-   /**
-    * returns status code comparing two pixels
-    *
-    * Returns status code comparing two pixels.  This is just a different
-    * version of operator==, which returns a status code instead of a bool.
-    *
-    * @param   pixel  the sample to compare this sample to
-    * @return  a specific code indicating if impedance matches
-    */
-   LT_STATUS checkImpedance(const LTIPixel& pixel) const;
-
-   LTISample* getSamples() const;
-   LTISample& getSample(lt_uint16) const;
-
-   /**
-    * @name Helper functions to get sample values
-    */
-   /*@{*/
-
-   /**
-    * returns the address of the specified sample's value
-    *
-    * Returns the address of the specified sample's value.  The caller must
-    * cast the pointer to the appropriate type before using.
-    *
-    * @param  band  the band number of the sample to use
-    * @return  the address of the sample's value
-    */
-   const void* getSampleValueAddr(lt_uint16 band) const;
-
-   /**
-    * returns the specified sample's value
-    *
-    * Returns the specified sample's value.  The sample is assumed to be
-    * known to have the UINT8 datatype.
-    *
-    * @param  band  the band number of the sample to use
-    * @return  the sample's value
-    */
-   lt_uint8 getSampleValueUint8(lt_uint16 band) const;
-
-   /**
-    * returns the specified sample's value
-    *
-    * Returns the specified sample's value.  The sample is assumed to be
-    * known to have the SINT8 datatype.
-    *
-    * @param  band  the band number of the sample to use
-    * @return  the sample's value
-    */
-   lt_int8 getSampleValueSint8(lt_uint16 band) const;
-
-   /**
-    * returns the specified sample's value
-    *
-    * Returns the specified sample's value.  The sample is assumed to be
-    * known to have the UINT16 datatype.
-    *
-    * @param  band  the band number of the sample to use
-    * @return  the sample's value
-    */
-   lt_uint16 getSampleValueUint16(lt_uint16 band) const;
-
-   /**
-    * returns the specified sample's value
-    *
-    * Returns the specified sample's value.  The sample is assumed to be
-    * known to have the SINT16 datatype.
-    *
-    * @param  band  the band number of the sample to use
-    * @return  the sample's value
-    */
-   lt_int16 getSampleValueSint16(lt_int16 band) const;
-
-   /**
-    * returns the specified sample's value
-    *
-    * Returns the specified sample's value.  The sample is assumed to be
-    * known to have the FLOAT32 datatype.
-    *
-    * @param  band  the band number of the sample to use
-    * @return  the sample's value
-    */
-   float getSampleValueFloat32(lt_uint16 band) const;
-   
-   /*@}*/
-
-   /**
-    * @name Helper functions to set sample values
-    */
-   /*@{*/
-
-   /**
-    * sets all samples to minimum
-    *
-    * Sets all samples to the minimum value of the datatype.
-    */
-   void setSampleValuesToMin();
-
-   /**
-    * sets all samples to maximum
-    *
-    * Sets all samples to the maximum value of the datatype.
-    */
-   void setSampleValuesToMax();
-   
-   /**
-    * sets sample value by address
-    *
-    * Sets sample value to value pointed to.
-    *
-    * @param  band  which sample to set
-    * @param  data  value to use
-    */
-   void setSampleValueAddr(lt_uint16 band, const void* data) const;
-
-   /**
-    * sets all samples to the given value
-    *
-    * Sets all samples to the given value of the datatype.  The samples are
-    * assumed to be known to have the UINT8 datatype.
-    *
-    * @param  value  the value to set the samples to
-    */
-   void setSampleValuesUint8(lt_uint8 value);
-
-   /**
-    * sets all samples to the given value
-    *
-    * Sets all samples to the given value of the datatype.  The samples are
-    * assumed to be known to have the SINT8 datatype.
-    *
-    * @param  value  the value to set the samples to
-    */
-   void setSampleValuesSint8(lt_int8 value);
-
-   /**
-    * sets all samples to the given value
-    *
-    * Sets all samples to the given value of the datatype.  The samples are
-    * assumed to be known to have the UINT16 datatype.
-    *
-    * @param  value  the value to set the samples to
-    */
-   void setSampleValuesUint16(lt_uint16 value);
-
-   /**
-    * sets all samples to the given value
-    *
-    * Sets all samples to the given value of the datatype.  The samples are
-    * assumed to be known to have the SINT16 datatype.
-    *
-    * @param  value  the value to set the samples to
-    */
-   void setSampleValuesSint16(lt_int16 value);
-
-   /**
-    * sets all samples to the given value
-    *
-    * Sets all samples to the given value of the datatype.  The samples are
-    * assumed to be known to have the FLOAT32 datatype.
-    *
-    * @param  value  the value to set the samples to
-    */
-   void setSampleValuesFloat32(float value);
-
-   /**
-    * sets the given sample to the given value
-    *
-    * Sets the given sample to the given value of the datatype.  The sample is
-    * assumed to be known to have the UINT8 datatype.
-    *
-    * @param  band   the band number of the sample to use
-    * @param  value  the value to set the samples to
-    */
-   void setSampleValueUint8(lt_uint16 band, lt_uint8 value);
-
-   /**
-    * sets the given sample to the given value
-    *
-    * Sets the given sample to the given value of the datatype.  The sample is
-    * assumed to be known to have the SINT8 datatype.
-    *
-    * @param  band   the band number of the sample to use
-    * @param  value  the value to set the samples to
-    */
-   void setSampleValueSint8(lt_uint16 band, lt_int8 value);
-
-   /**
-    * sets the given sample to the given value
-    *
-    * Sets the given sample to the given value of the datatype.  The sample is
-    * assumed to be known to have the UINT16 datatype.
-    *
-    * @param  band   the band number of the sample to use
-    * @param  value  the value to set the samples to
-    */
-   void setSampleValueUint16(lt_uint16 band, lt_uint16 value);
-
-   /**
-    * sets the given sample to the given value
-    *
-    * Sets the given sample to the given value of the datatype.  The sample is
-    * assumed to be known to have the SINT16 datatype.
-    *
-    * @param  band   the band number of the sample to use
-    * @param  value  the value to set the samples to
-    */
-   void setSampleValueSint16(lt_uint16 band, lt_int16 value);
-
-   /**
-    * sets the given sample to the given value
-    *
-    * Sets the given sample to the given value of the datatype.  The sample is
-    * assumed to be known to have the FLOAT32 datatype.
-    *
-    * @param  band   the band number of the sample to use
-    * @param  value  the value to set the samples to
-    */
-   void setSampleValueFloat32(lt_uint16 band, float value);
-
-   /**
-    * sets all samples to the given values
-    *
-    * Sets all samples to the given values of the datatype.  The sample is
-    * assumed to be known to have the UINT8 datatype.
-    *
-    * @param  values  the values to set the samples to
-    */
-   void setSampleValuesUint8(const lt_uint8* values);
-
-   /**
-    * sets all samples to the given values
-    *
-    * Sets all samples to the given values of the datatype.  The sample is
-    * assumed to be known to have the SINT8 datatype.
-    *
-    * @param  values  the values to set the samples to
-    */
-   void setSampleValuesSint8(const lt_int8* values);
-
-   /**
-    * sets all samples to the given values
-    *
-    * Sets all samples to the given values of the datatype.  The sample is
-    * assumed to be known to have the UINT16 datatype.
-    *
-    * @param  values  the values to set the samples to
-    */
-   void setSampleValuesUint16(const lt_uint16* values);
-
-   /**
-    * sets all samples to the given values
-    *
-    * Sets all samples to the given values of the datatype.  The sample is
-    * assumed to be known to have the SINT16 datatype.
-    *
-    * @param  values  the values to set the samples to
-    */
-   void setSampleValuesSint16(const lt_int16* values);
-
-   /**
-    * sets all samples to the given values
-    *
-    * Sets all samples to the given values of the datatype.  The sample is
-    * assumed to be known to have the FLOAT32 datatype.
-    *
-    * @param  values  the values to set the samples to
-    */
-   void setSampleValuesFloat32(const float* values);
-   /*@}*/
-
-private:
-   void createSamples(LTIDataType dt);
-   void createSamples(const LTISample*);
-   void deleteSamples();
-
-   LTISample* m_samples;
-   lt_uint16 m_numBands;
-   LTIColorSpace m_colorSpace;
-};
-
-
-LT_END_NAMESPACE(LizardTech)
-
-#if defined(LT_COMPILER_MS)
-	#pragma warning(pop)
-#endif
-
-#endif // LTI_PIXEL_H
diff --git a/src/DSDK/include/base/lti_pixelLookupTable.h b/src/DSDK/include/base/lti_pixelLookupTable.h
deleted file mode 100644
index 9f00cc4..0000000
--- a/src/DSDK/include/base/lti_pixelLookupTable.h
+++ /dev/null
@@ -1,142 +0,0 @@
-/* $Id: lti_pixelLookupTable.h 5124 2006-10-27 11:40:40Z lubia $ */
-/* //////////////////////////////////////////////////////////////////////////
-//                                                                         //
-// This code is Copyright (c) 2004 LizardTech, Inc, 1008 Western Avenue,   //
-// Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         //
-// prohibited.  Access to and use of this code is permitted only under     //
-// license from LizardTech, Inc.  Portions of the code are protected by    //
-// US and foreign patents and other filings. All Rights Reserved.          //
-//                                                                         //
-////////////////////////////////////////////////////////////////////////// */
-/* PUBLIC */
-
-#ifndef LTI_PIXELLOOKUPTABLE_H
-#define LTI_PIXELLOOKUPTABLE_H
-
-// lt_lib_mrsid_core
-#include "lti_pixel.h"
-
-
-#if defined(LT_COMPILER_MS)
-	#pragma warning(push,4)
-#endif
-
-LT_BEGIN_NAMESPACE(LizardTech)
-
-class LTIPixel;
-
-
-/**
- * color lookup table
- *
- * This class implements a color lookup table, for use with "indexed"
- * or "palletized" images.
- */
-class LTIPixelLookupTable : public LTIPixel
-{
-public:
-   /**
-    * default constructor
-    *
-    * This constructor creates an LTIPixelLookupTable object consisting of
-    * the given number of entries.
-    *
-    * @param  pixelProps  the basic properties of the pixel in this LUT
-    * @param  tableSize   the number of elements in the table
-    */
-   LTIPixelLookupTable(const LTIPixel& pixelProps,
-                       lt_uint32 tableSize);
-
-   /**
-    * copy constructor
-    */
-   LTIPixelLookupTable(const LTIPixelLookupTable&);
-
-   /**
-    * destructor
-    */
-   virtual ~LTIPixelLookupTable();
-
-   /**
-    * get table size
-    *
-    * Returns the number of entries in the table.
-    *
-    * @return the number of entries in the table
-    */
-   lt_uint32 getTableSize() const;
-
-   /**
-    * set table entry
-    *
-    * This function adds an entry to the table.  The index must be less than
-    * the number of entries.  The pixel data is copied into the table.
-    *
-    * If the table already contains an entry with the given index number, the
-    * old entry is removed in favor of the new one.
-    *
-    * @param  index      the index number of the entry
-    * @param  pixelData  the pixel data to be recorded for the index
-    */
-   void setTableEntry(lt_uint32 index,
-                      const LTIPixel& pixelData);
-
-   /** set all table entries
-    *
-    * This function sets all entries to the table.  The \a mapData parameter
-    * is expected to be a one-dimensional array of length tablesize * numbands,
-    * e.g. if the pixel datatype is UINT8 then the array should be of the form
-    * "lt_uint8 data[3 * 256]" for a 3-banded, 256-entry table.  Entry i will be
-    * referenced as data[i], data[i+256], data[i+512].
-    *
-    * @param mapData the colormap data
-    */
-   void setTableEntries(const void* mapData);
-
-   /**
-    * get table entry
-    *
-    * This function returns the entry with the given index number.
-    * The caller takes ownership of the returned object.
-    *
-    * @param   index      the index number of the entry to look up
-    * @return  pointer to the pixel data of the index (or NULL)
-    */
-   LTIPixel* getTableEntry(lt_uint32 index) const;
-
-   /**
-    * get all table entries
-    *
-    * This function returns the color map data as a one-dimensional
-    * array, according to the format described in setAllEntries().
-    */
-   const void* getTableEntries() const;
-
-private:
-   void init(const void* data);
-
-   lt_uint32 m_tableSize;
-
-   // for an RGB map, entry I is formed by: R=data[I], G=data[I+256], B=data[I+512]
-   void* m_data;
-   lt_uint8* m_data_u8;
-   lt_int8* m_data_s8;
-   lt_uint16* m_data_u16;
-   lt_int16* m_data_s16;
-   float* m_data_f32;
-
-   // nope
-   LTIPixelLookupTable();
-   LTIPixelLookupTable& operator=(const LTIPixelLookupTable&);
-   bool operator==(const LTIPixelLookupTable&) const;
-   bool operator!=(const LTIPixelLookupTable&) const;
-};
-
-
-LT_END_NAMESPACE(LizardTech)
-
-#if defined(LT_COMPILER_MS)
-	#pragma warning(pop)
-#endif
-
-#endif // LTI_PIXELLOOKUPTABLE_H
diff --git a/src/DSDK/include/base/lti_rawImageReader.h b/src/DSDK/include/base/lti_rawImageReader.h
deleted file mode 100644
index b6a95b7..0000000
--- a/src/DSDK/include/base/lti_rawImageReader.h
+++ /dev/null
@@ -1,308 +0,0 @@
-/* $Id: lti_rawImageReader.h 5124 2006-10-27 11:40:40Z lubia $ */
-/* //////////////////////////////////////////////////////////////////////////
-//                                                                         //
-// This code is Copyright (c) 2004 LizardTech, Inc, 1008 Western Avenue,   //
-// Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         //
-// prohibited.  Access to and use of this code is permitted only under     //
-// license from LizardTech, Inc.  Portions of the code are protected by    //
-// US and foreign patents and other filings. All Rights Reserved.          //
-//                                                                         //
-////////////////////////////////////////////////////////////////////////// */
-/* PUBLIC */
-
-#ifndef LTIRAWIMAGEREADER_H
-#define LTIRAWIMAGEREADER_H
-
-// lt_lib_mrsid_core
-#include "lti_geoImageReader.h"
-
-
-LT_BEGIN_NAMESPACE(LizardTech)
-
-#if defined(LT_COMPILER_MS)
-   #pragma warning(push,4)
-#endif
-
-class LTIPixel;
-class LTIOStreamInf;
-class LTFileSpec;
-class LTIGeoCoord;
-class LTIPixel;
-
-
-/**
- * class for reading RAW files
- *
- * This class reads a RAW image.
- *
- * The RAW format used is simple packed BIP form.
- */
-class LTIRawImageReader : public LTIGeoImageReader 
-{
-public:
-   /**
-    * constructor (stream)
-    *
-    * This function constructs an LTIImageReader using the data in the
-    * stream with the image properties specified.  The input taken from a
-    * stream.
-    *
-    * @param stream        stream containing the RAW image data (may not be NULL) 
-    * @param pixelProps    the pixel properties of the image (colorspace, datatype, etc) 
-    * @param width         the width of the image 
-    * @param height        the height of the image
-    * @param useWorldFile  use world file information if available
-    */
-   LTIRawImageReader(LTIOStreamInf* stream,
-                     const LTIPixel& pixelProps,
-                     lt_uint32 width,
-                     lt_uint32 height,
-                     bool useWorldFile = true);
-
-   /**
-    * constructor (FileSpec)
-    *
-    * This function constructs an LTIImageReader using the data in the
-    * stream with the image properties specified. The input taken from a
-    * stream, and the background and nodata pixels may be specified.
-    *
-    * @param fileSpec      file containing the RAW image data 
-    * @param pixelProps    the pixel properties of the image (colorspace, datatype, etc) 
-    * @param width         the width of the image 
-    * @param height        the height of the image 
-    * @param useWorldFile  use world file information if available
-    */
-   LTIRawImageReader(const LTFileSpec& fileSpec,
-                     const LTIPixel& pixelProps,
-                     lt_uint32 width,
-                     lt_uint32 height,
-                     bool useWorldFile = true);
-
-   /**
-    * constructor (char*)
-    *
-    * This function constructs an LTIImageReader using the data in the
-    * stream with the image properties specified.  The input taken from a
-    * stream, and the background and nodata pixels may be specified.
-    *
-    * @param file          file containing the RAW image data (may not be NULL) 
-    * @param pixelProps    the pixel properties of the image (colorspace, datatype, etc) 
-    * @param width         the width of the image 
-    * @param height        the height of the image 
-    * @param useWorldFile  use world file information if available
-    */
-   LTIRawImageReader(const char* file,
-                     const LTIPixel& pixelProps,
-                     lt_uint32 width,
-                     lt_uint32 height,
-                     bool useWorldFile = true);
-
-   /**
-    * destructor
-    */
-   virtual ~LTIRawImageReader();
-
-   /**
-    * initializer
-    */
-   virtual LT_STATUS initialize();
-
-
-   /**
-    * @name Properties of the RAW image
-    *
-    * These must be called prior to calling initialize(), unlike most other SDK
-    * objects.
-    */
-   /*@{*/
-
-   /**
-    * set geo coordinates
-    *
-    * Sets the geographic coordinates for the image.  If not set, the default
-    * is the normal default of (0,h-1) with resolutions (1.0,-1.0).
-    *
-    * @note This must be called prior to calling initialize().
-    *
-    * @param  geo  the geo coordinates for the image 
-    */
-   void setGeoCoordinate(const LTIGeoCoord& geo);
-
-   /**
-    * set stream ownership
-    *
-    * Sets the ownership of the stream, to indicate responsibility for
-    * deleting the stream when done. This only pertains to objects which were
-    * passed a stream in the ctor.
-    *
-    * If not set, the default is for the object to not take ownership of the
-    * stream.
-    *
-    * @note This must be called prior to calling initialize().
-    *
-    * @param  takeOwnership  set to true to have the reader delete the stream 
-    */
-   void setStreamOwnership(bool takeOwnership);
-
-    /**
-    * add classical metadata
-    *
-    * Directs the reader to populate the standard "classical" metadata tags.
-    *
-    * If not set, the default is to not add the metadata tags.
-    *
-    * @note This must be called prior to calling initialize().
-    *
-    * @param  withMetadata  set to true to have the reader add metadata 
-    */
-   void setMetadata(bool withMetadata);
-
-    /**
-    * set background color
-    *
-    * Sets the background pixel of the image.
-    *
-    * If not set, the default is to leave the background pixel unset.
-    *
-    * @note This must be called prior to calling initialize().
-    *
-    * @param  background  the new background color of the image 
-    */
-   void setBackground(const LTIPixel* background);
-
-    /**
-    * set nodata color
-    *
-    * Sets the NoData pixel of the image.
-    *
-    * If not set, the default is to leave the NoData pixel unset.
-    *
-    * @note This must be called prior to calling initialize().
-    *
-    * @param  nodata  the new nodata color of the image 
-    */
-   void setNoData(const LTIPixel* nodata);
-
-   /**
-    * sets the number of bytes in each row
-    *
-    * Sets the number of bytes in each row.  This allows for alignment
-    * padding, required by certain RAW formats.
-    *
-    * If not set, the bytes per row is simply the number of data items per
-    * row times the size of a data item.  (Note that a "data item" in this
-    * case may be either a pixel or a sample, depending on the layout being
-    * used.)
-    *
-    * @note This must be called prior to calling initialize().
-    *
-    * @param  rowBytes  the number of bytes per row 
-    */
-   void setRowBytes(lt_uint32 rowBytes);
-
-    /**
-    * sets the layout or organization of the raw data
-    *
-    * Sets the layout or organization of the raw data.
-    *
-    * If not set, the default is BIP format.
-    *
-    * @note This must be called prior to calling initialize().
-    *
-    * @param  layout  the layout of the raw data 
-    */
-   void setLayout(LTILayout layout);
-
-    /**
-    * sets the number of bytes to skip at the beginning of the file
-    *
-    * Sets the number of bytes to skip at the beginning of the file.  If not
-    * set, the default is zero (no leading bytes are skipped).
-    *
-    * No skip bytes are assumed to be at the end of the file, and this
-    * function only takes a 32-bit skip length; see the second version
-    * of setSkipBytes() for an alternative.
-    *
-    * @note This must be called prior to calling initialize().
-    *
-    * @param  skipBytes  the number of bytes to skip 
-    */
-   void setSkipBytes(lt_uint32 skipBytes);
-
-    /**
-    * sets the number of bytes to skip at the beginning and end of the file
-    *
-    * Sets the number of bytes to skip at the beginning of the file and
-    * the end of the file.  (The "ending skip bytes" property is sometimes
-    * required because LTIRawImageReader::initialize() does a sanity check
-    * to make sure the number of data bytes in the file is equal to the
-    * number of bytes needed for the given width, height, etc.
-    *
-    * @note This must be called prior to calling initialize().
-    *
-    * @param  leadingBytes  the number of bytes to skip at the top
-    * @param  trailingBytes  the number of bytes to skip at the bottom
-    */
-   void setSkipBytes(lt_int64 leadingBytes, lt_int64 trailingBytes);
-
-   /**
-    * sets endianness of output file
-    *
-    * Sets the byte order or endianness of the output file.
-    *
-    * @note This must be called prior to calling initialize().
-    *
-    * @param  byteOrder  the endian setting to use 
-    */
-   void setByteOrder(LTIEndian byteOrder);
-
-   /*@}*/
-
-   virtual LTIImageReader* duplicate();
-
-   virtual lt_int64 getPhysicalFileSize() const;
-
-protected:
-   LTIRawImageReader(const LTFileSpec& fileSpec, bool useWorldFile = true);
-   void setCtorPixelProps(const LTIPixel& pixelProps);
-   void setCtorDimensions(lt_uint32 width, lt_uint32 height);
-
-   virtual LT_STATUS decodeStrip(LTISceneBuffer& stripBuffer, const LTIScene& stripScene);
-   virtual LT_STATUS decodeBegin(const LTIScene& scene);
-   virtual LT_STATUS decodeEnd();
-
-   LTFileSpec* m_fileSpec;
-
-private:
-   LTIOStreamInf* m_stream;
-   bool m_ownsStream;
-   LTIPixel* m_pixel;
-   lt_uint32 m_width;
-   lt_uint32 m_height;
-   LTIGeoCoord* m_geoCoordArg;
-   lt_int64 m_fileSize;
-   bool m_withMetadata;
-   lt_uint32 m_rowBytes;
-   LTILayout m_layout;
-   lt_int64 m_leadingSkipBytes;
-   lt_int64 m_trailingSkipBytes;
-   LTIEndian m_byteOrder;
-
-   lt_uint8* m_rowBuffer;
-
-   const LTIPixel* m_backgroundPixel;
-   const LTIPixel* m_nodataPixel;
-   
-   // nope
-   LTIRawImageReader(LTIRawImageReader&);
-   LTIRawImageReader& operator=(const LTIRawImageReader&);
-};
-
-
-LT_END_NAMESPACE(LizardTech)
-
-#if defined(LT_COMPILER_MS)
-	#pragma warning(pop)
-#endif
-
-#endif // LTIRAWIMAGEREADER_H
diff --git a/src/DSDK/include/base/lti_rawImageWriter.h b/src/DSDK/include/base/lti_rawImageWriter.h
deleted file mode 100644
index 3d9dd90..0000000
--- a/src/DSDK/include/base/lti_rawImageWriter.h
+++ /dev/null
@@ -1,104 +0,0 @@
-/* $Id: lti_rawImageWriter.h 5124 2006-10-27 11:40:40Z lubia $ */
-/* //////////////////////////////////////////////////////////////////////////
-//                                                                         //
-// This code is Copyright (c) 2004 LizardTech, Inc, 1008 Western Avenue,   //
-// Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         //
-// prohibited.  Access to and use of this code is permitted only under     //
-// license from LizardTech, Inc.  Portions of the code are protected by    //
-// US and foreign patents and other filings. All Rights Reserved.          //
-//                                                                         //
-////////////////////////////////////////////////////////////////////////// */
-/* PUBLIC */
-
-#ifndef LTIRAWIMAGEWRITER_H
-#define LTIRAWIMAGEWRITER_H
-
-// lt_lib_mrsid_core
-#include "lti_geoFileImageWriter.h"
-
-
-LT_BEGIN_NAMESPACE(LizardTech)
-
-#if defined(LT_COMPILER_MS)
-   #pragma warning(push,4)
-#endif
-
-class LTIReusableBSQBuffer;
-
-/**
- * class for writing RAW files
- *
- * This class writes an image to a stream in RAW format.
- *
- * The RAW format used is simple packed BIP form.
- */
-class LTIRawImageWriter : public LTIGeoFileImageWriter
-{
-public:
-   /**
-    * default constructor
-    *
-    * This constructor creates an LTIRawImageWriter which will write the
-    * pixels of the given image to the given stream.
-    *
-    * @param  image   the image to be read from  
-    */
-   LTIRawImageWriter(LTIImageStage* image);
-
-   /**
-    * destructor
-    */
-   virtual ~LTIRawImageWriter();
-
-   /**
-    * initializer
-    */
-   virtual LT_STATUS initialize();
-
-   LTILayout getLayout() const { return m_layout; };
-
-   virtual LT_STATUS writeBegin(const LTIScene& scene);
-   virtual LT_STATUS writeStrip(LTISceneBuffer& stripBuffer, const LTIScene& stripScene);
-
-   /**
-    * set layout
-    *
-    * This function is used to determine the layout of the output
-    * image, i.e. BIP or BIL or BSQ.
-    *
-    * @param layout the layout to use
-    */
-   void setLayout(LTILayout layout);
-
-   /**
-    * set byte order
-    *
-    * This function is used to determine byte ordering of the output file.
-    *
-    * @param byteOrder the byte ordering to use
-    */
-   void setByteOrder(LTIEndian byteOrder);
-
-protected:
-   LTILayout m_layout;
-   LTIEndian m_byteOrder;
-
-private:
-   lt_uint32 m_fullWidth;
-   lt_uint32 m_fullHeight;
-   lt_uint32 m_curRow;
-   LTIReusableBSQBuffer* m_stripBuffer;
-
-   // nope
-   LTIRawImageWriter(LTIRawImageWriter&);
-   LTIRawImageWriter& operator=(const LTIRawImageWriter&);
-};
-
-
-LT_END_NAMESPACE(LizardTech)
-
-#if defined(LT_COMPILER_MS)
-	#pragma warning(pop)
-#endif
-
-#endif // LTIRAWIMAGEWRITER_H
diff --git a/src/DSDK/include/base/lti_sample.h b/src/DSDK/include/base/lti_sample.h
deleted file mode 100644
index 5690a20..0000000
--- a/src/DSDK/include/base/lti_sample.h
+++ /dev/null
@@ -1,220 +0,0 @@
-/* $Id: lti_sample.h 5124 2006-10-27 11:40:40Z lubia $ */
-/* //////////////////////////////////////////////////////////////////////////
-//                                                                         //
-// This code is Copyright (c) 2004 LizardTech, Inc, 1008 Western Avenue,   //
-// Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         //
-// prohibited.  Access to and use of this code is permitted only under     //
-// license from LizardTech, Inc.  Portions of the code are protected by    //
-// US and foreign patents and other filings. All Rights Reserved.          //
-//                                                                         //
-////////////////////////////////////////////////////////////////////////// */
-/* PUBLIC */
-
-#ifndef LTI_SAMPLE_H
-#define LTI_SAMPLE_H
-
-// lt_lib_mrsid_core
-#include "lti_types.h"
-
-
-#if defined(LT_COMPILER_MS)
-	#pragma warning(push,4)
-#endif
-
-LT_BEGIN_NAMESPACE(LizardTech)
-
-/**
- * basic properties of a sample
- *
- * This class stores the basic properties of a sample: the color and the
- * datatype.  A set of one or more (possibly dissimilar) LTISample objects is
- * used in the representation of a pixel (LTIPixel).
- */
-class LTISample
-{
-public:
-   /**
-    * default constructor
-    *
-    * This constructor creates an LTISample object with the given
-    * properties.
-    *
-    * @param  color       the sample's color
-    * @param  dataType    the datatype of the sample
-    * @param  data        initial data for sample value (defaults to 0)
-    */
-   LTISample(LTIColor color,
-             LTIDataType dataType,
-             const void* data=0);
-
-   LTISample();
-
-   /**
-    * copy constructor
-    */
-   LTISample(const LTISample&);
-
-   /**
-    * destructor
-    */
-   virtual ~LTISample();
-
-   /**
-    * assignment operator
-    */
-   virtual LTISample& operator=(const LTISample&);
-
-   /**
-    * equality operator
-    */
-   bool operator==(const LTISample&) const;
-
-   /**
-    * equality operator
-    */
-   bool operator!=(const LTISample&) const;
-
-   /**
-    * sets the precision of the sample
-    *
-    * Sets the precision of the sample.  By default, the number of bits of
-    * precision is equal to the number of bits in the underlying datatype.
-    *
-    * @note The data is assumed to be justified to the least significant bit
-    * of the word.
-    *
-    * @param  precision  the number of bits
-    */
-   void setPrecision(lt_uint32 precision);
-
-   /**
-    * returns the precision of the sample
-    *
-    * Returns the precision of the sample.
-    *
-    * @return  the number of bits used in the datatype
-    */
-   lt_uint32 getPrecision() const;
-
-   /**
-    * get the sample datatype
-    *
-    * This function returns the datatype of the sample.
-    *
-    * @return the datatype of the sample
-    */
-   LTIDataType getDataType() const;
-
-   /**
-    * get the color
-    *
-    * This function returns the color of the sample.
-    *
-    * @return the color of the sample
-    */
-   LTIColor getColor() const;
-
-   /**
-    * get the size of a sample
-    *
-    * This function returns the size of the sample, in bytes.
-    *
-    * This is equivalent to calling LTITypes::getNumBytes( getDataType() ).
-    *
-    * @return the number of bytes in the sample
-    */
-   lt_uint32 getNumBytes() const;
-
-   /**
-    * returns status code comparing two samples
-    *
-    * Returns status code comparing two samples.  This is just a different
-    * version of operator==, which returns a status code instead of a bool.
-    *
-    * @param   sample  the sample to compare this sample to
-    * @return  a specific code indicating if impedance matches
-    */
-   LT_STATUS checkImpedance(const LTISample& sample) const;
-
-
-   /**
-    * sets the sample value maximum
-    *
-    * Sets the sample's value to the datatype's maximum.
-    */
-   void setValueToMin();
-
-   /**
-    * sets the sample value minimum
-    *
-    * Sets the sample's value to the datatype's minimum.
-    */
-   void setValueToMax();
-
-   /**
-    * sets the sample value maximum
-    *
-    * Sets the sample's value to max of itself and the argument.
-    * (The argument sample assumed to have the same datatype.)
-    */
-   void setValueToMin(const LTISample&);
-
-   /**
-    * sets the sample value minimum
-    *
-    * Sets the sample's value to the min of itself and the argument
-    * (The argument sample assumed to have the same datatype.)
-    */
-   void setValueToMax(const LTISample&);
-
-   /**
-    * @name Sample value functions
-    *
-    * Sets the sample's value to the value given.  The sample is assumed to
-    * be known to have the given datatype.  (For the void* "addr" functions,
-    * the caller must assure datatype correctness underneath the void* pointer.)
-    */
-   /*@{*/
-   void setValueAddr(const void*);
-   const void* getValueAddr() const;
-   
-   void setValueUint8(lt_uint8);
-   void setValueUint16(lt_uint16);
-   void setValueUint32(lt_uint32);
-   void setValueUint64(lt_uint64);
-   void setValueSint8(lt_int8);
-   void setValueSint16(lt_int16);
-   void setValueSint32(lt_int32);
-   void setValueSint64(lt_int64);
-   void setValueFloat32(float);
-   void setValueFloat64(double);
-
-   lt_uint8 getValueUint8() const;
-   lt_uint16 getValueUint16() const;
-   lt_uint32 getValueUint32() const;
-   lt_uint64 getValueUint64() const;
-   lt_int8 getValueSint8() const;
-   lt_int16 getValueSint16() const;
-   lt_int32 getValueSint32() const;
-   lt_int64 getValueSint64() const;
-   float getValueFloat32() const;
-   double getValueFloat64() const;
-
-   /*@}*/
-
-private:
-   lt_uint8 *m_value;
-   lt_uint32 m_numBytes;
-   lt_uint32 m_precision;
-   LTIDataType m_dataType;
-   LTIColor m_color;
-};
-
-
-LT_END_NAMESPACE(LizardTech)
-
-#if defined(LT_COMPILER_MS)
-	#pragma warning(pop)
-#endif
-
-#endif // LTI_SAMPLE_H
diff --git a/src/DSDK/include/base/lti_scene.h b/src/DSDK/include/base/lti_scene.h
deleted file mode 100644
index 30283dc..0000000
--- a/src/DSDK/include/base/lti_scene.h
+++ /dev/null
@@ -1,488 +0,0 @@
-/* $Id: lti_scene.h 5124 2006-10-27 11:40:40Z lubia $ */
-/* //////////////////////////////////////////////////////////////////////////
-//                                                                         //
-// This code is Copyright (c) 2004 LizardTech, Inc, 1008 Western Avenue,   //
-// Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         //
-// prohibited.  Access to and use of this code is permitted only under     //
-// license from LizardTech, Inc.  Portions of the code are protected by    //
-// US and foreign patents and other filings. All Rights Reserved.          //
-//                                                                         //
-////////////////////////////////////////////////////////////////////////// */
-/* PUBLIC */
-
-#ifndef LTI_SCENE_H
-#define LTI_SCENE_H
-
-// lt_lib_base
-#include "lt_base.h"
-
-
-#if defined(LT_COMPILER_MS)
-	#pragma warning(push,4)
-#endif
-
-LT_BEGIN_NAMESPACE(LizardTech)
-
-
-/**
- * representation of a scene
- *
- * This class represents a scene within an image.  A scene contains these
- * values:
- * \li an upper-left (x,y) position
- * \li a width and a height
- * \li a magnification
- *
- * The (X,Y) point is expressed in pixel-space (mag=1.0) coordinates, relative
- * to the given magnification.  The width and height are absolutes, i.e. they
- * correspond to the buffer size the user expects.
- *
- * The scene position and dimensions are maintained as high-precision values.
- * Accessors are supplied to get the high-precision values as well as the
- * properly rounded integral values (expressed in row/col form).
- *
- * A mag value of 1.0 indicates full-size resolution.  A mag greater than 1.0
- * indicates res-up (zoom in) by a factor of two: 2.0 gives an image 2x bigger,
- * 4.0 gives an image 4x bigger, etc.  A mag value less than 1.0 indicates
- * a lower resolution: 0.5 gives a half-sized image, 0.25 gives a quarter-sized
- * image, etc.
- *
- * An LTIImageReader may not support the requested magnification: most readers
- * only support mag=1.0, and MrSID readers only support power-of-two magnifications (0.25,
- * 0.5, 1.0, 2.0, 4.0, etc).  If the mag request cannot be returned the extraction
- * will return an error.
- *
- * An LTIScene is used to express the region of an image to be decoded via a
- * call to LTIImageReader::decodeBegin(), etc.
- *
- * As an example, consider an image which is 512x512 pixels.  Then, the
- * following scenes from the image will all contain the same upper-left point
- * and all will be 100x100 pixels.  The "granularity" (resolution) of each
- * pixel, however, will differ.
- * \li <tt>const LTIScene scene(256, 256, 100, 100, 1.0);     // center point</tt>
- * \li <tt>const LTIScene scene(512, 512, 100, 100, 2.0);</tt>
- * \li <tt>const LTIScene scene(128, 128, 100, 100, 0.5);</tt>
- *
- * @note Scenes may not require a buffer larger than 2GB.
- */
-class LTIScene
-{
-public:
-   /**
-    * constructor
-    *
-    * This constructor produces a scene set to the given parameters, using double-precision.
-    *
-    * @param ulX            upper left X position of scene 
-    * @param ulY            upper left Y position of scene 
-    * @param width          width of scene 
-    * @param height         height of scene 
-    * @param magnification  resolution of scene 
-    */
-   LTIScene(double ulX, double ulY,
-            double width, double height,
-            double magnification);
-
-   /**
-    * copy constructor
-    */
-   LTIScene(const LTIScene& copy);
-
-   /**
-    * default constructor
-    *
-    * This constructor will produce a scene with "invalid" default
-    * coordinates.
-    */
-   LTIScene(void);
-
-   /**
-    * assignment operator
-    */
-   LTIScene& operator=(const LTIScene&);
-
-   /**
-    * equality operator
-    */
-   bool operator==(const LTIScene&) const;
-
-   /**
-    * equality operator
-    */
-   bool operator!=(const LTIScene&) const;
-
-
-   /**
-    * returns the magnification of the scene
-    *
-    * Returns the magnification of the scene.
-    *
-    * @return the magnification
-    */
-   double getMag() const;
-
-
-   /**
-    * @name High-precision point functions
-    */
-   /*@{*/
-
-   /**
-    * returns the x-position of the upper-left point
-    *
-    * Returns the x-position of the upper-left point.  This is a high-precision value.
-    *
-    * @return the x-position of the point
-    */
-   double getUpperLeftX() const;
-
-   /**
-    * returns the y-position of the upper-left point
-    *
-    * Returns the y-position of the upper-left point.  This is a high-precision value.
-    *
-    * @return the y-position of the point
-    */
-   double getUpperLeftY() const;
-
-   /**
-    * returns the x-position of the lower-right point
-    *
-    * Returns the x-position of the lower-right point.  This is a high-precision value.
-    *
-    * @return the x-position of the point
-    */
-   double getLowerRightX() const;
-
-   /**
-    * returns the y-position of the lower-right point
-    *
-    * Returns the y-position of the lower-right point.  This is a high-precision value.
-    *
-    * @return the y-position of the point
-    */
-   double getLowerRightY() const;
-
-   /**
-    * returns the x-position of the upper-right point
-    *
-    * Returns the x-position of the upper-right point.  This is a high-precision value.
-    *
-    * @return the x-position of the point
-    */
-   double getUpperRightX() const;
-
-   /**
-    * returns the y-position of the upper-left point
-    *
-    * Returns the y-position of the upper-left point.  This is a high-precision value.
-    *
-    * @return the y-position of the point
-    */
-   double getUpperRightY() const;
-
-   /**
-    * returns the x-position of the lower-left point
-    *
-    * Returns the x-position of the lower-left point.  This is a high-precision value.
-    *
-    * @return the x-position of the point
-    */
-   double getLowerLeftX() const;
-
-   /**
-    * returns the y-position of the lower-left point
-    *
-    * Returns the y-position of the lower-left point.  This is a high-precision value.
-    *
-    * @return the y-position of the point
-    */
-   double getLowerLeftY() const;
-
-   /**
-    * returns the x-position of the center point
-    *
-    * Returns the x-position of the center point.  This is a high-precision value.
-    *
-    * @return the x-position of the point
-    */
-   double getCenterX() const;
-
-   /**
-    * returns the x-position of the center point
-    *
-    * Returns the x-position of the center point.  This is a high-precision value.
-    *
-    * @return the x-position of the point
-    */
-   double getCenterY() const;
-
-   /*@}*/
-
-
-   /**
-    * @name Low-precision point functions
-    *
-    * These functions return properly rounded integral values, to be used
-    * only when discretizing the pixels (for example to map to a buffer in
-    * memory).
-    */
-   /*@{*/
-
-   /**
-    * returns the x-position of the upper-left point
-    *
-    * Returns the x-position of the upper-left point.  This is a low-precision value.
-    *
-    * @return the x-position of the point
-    */
-   lt_int32 getUpperLeftCol() const;
-
-   /**
-    * returns the y-position of the upper-left point
-    *
-    * Returns the y-position of the upper-left point.  This is a low-precision value.
-    *
-    * @return the y-position of the point
-    */
-   lt_int32 getUpperLeftRow() const;
-
-   /**
-    * returns the x-position of the lower-right point
-    *
-    * Returns the x-position of the lower-right point.  This is a low-precision value.
-    *
-    * @return the x-position of the point
-    */
-   lt_int32 getLowerRightCol() const;
-
-   /**
-    * returns the y-position of the lower-right point
-    *
-    * Returns the y-position of the lower-right point.  This is a low-precision value.
-    *
-    * @return the y-position of the point
-    */
-   lt_int32 getLowerRightRow() const;
-
-   /**
-    * returns the x-position of the upper-right point
-    *
-    * Returns the x-position of the upper-right point.  This is a low-precision value.
-    *
-    * @return the x-position of the point
-    */
-   lt_int32 getUpperRightCol() const;
-
-   /**
-    * returns the y-position of the upper-right point
-    *
-    * Returns the y-position of the upper-right point.  This is a low-precision value.
-    *
-    * @return the y-position of the point
-    */
-   lt_int32 getUpperRightRow() const;
-
-   /**
-    * returns the x-position of the lower-left point
-    *
-    * Returns the x-position of the lower-left point.  This is a low-precision value.
-    *
-    * @return the x-position of the point
-    */
-   lt_int32 getLowerLeftCol() const;
-
-   /**
-    * returns the y-position of the lower-left point
-    *
-    * Returns the y-position of the lower-left point.  This is a low-precision value.
-    *
-    * @return the y-position of the point
-    */
-   lt_int32 getLowerLeftRow() const;
-
-   /**
-    * returns the x-position of the center point
-    *
-    * Returns the x-position of the center point.  This is a low-precision value.
-    *
-    * @return the x-position of the point
-    */
-   lt_int32 getCenterCol() const;
-
-   /**
-    * returns the y-position of the center point
-    *
-    * Returns the y-position of the center point.  This is a low-precision value.
-    *
-    * @return the y-position of the point
-    */
-   lt_int32 getCenterRow() const;
-
-   /*@}*/
-
-
-   /**
-    * @name Dimension functions
-    *
-    */
-   /*@{*/
-
-   /**
-    * returns the width of the scene
-    *
-    * Returns the width of the scene.  This is a high-precision value.
-    *
-    * @return the width
-    */
-   double getWidth() const;
-
-   /**
-    * returns the height of the scene
-    *
-    * Returns the height of the scene.  This is a high-precision value.
-    *
-    * @return the height
-    */
-   double getHeight() const;
-
-   /**
-    * returns the width of the scene
-    *
-    * Returns the width of the scene.  This is a low-precision value.
-    *
-    * @return the width
-    */
-   lt_int32 getNumCols() const;
-
-   /**
-    * returns the height of the scene
-    *
-    * Returns the height of the scene.  This is a low-precision value.
-    *
-    * @return the height
-    */
-   lt_int32 getNumRows() const;
-
-   /*@}*/
-
-
-   /**
-    * @name Helper functions
-    *
-    */
-   /*@{*/
-
-   /**
-    * returns the x-position of the upper-left point
-    *
-    * Returns the x-position of the upper-left point, as a high-precision
-    * value.  This returns the same value as calling getUpperLeftX().
-    *
-    * @return the x-position of the point
-    */
-   double getX() const;
-
-   /**
-    * returns the y-position of the upper-left point
-    *
-    * Returns the y-position of the upper-left point, as a high-precision
-    * value.  This returns the same value as calling getUpperLeftY().
-    *
-    * @return the y-position of the point
-    */
-   double getY() const;
-
-   /**
-    * returns the (x,y) positions of the upper-left and lower-right points
-    *
-    * Returns the (x,y) positions of the upper-left and lower-right points,
-    * as high-precision values.
-    *
-    * @param  ulX  the upper-left x-position 
-    * @param  ulY  the upper-left y-position 
-    * @param  lrX  the lower-right x-position 
-    * @param  lrY  the lower-right y-position 
-    */
-   void getPoints(double& ulX, double& ulY, 
-                  double& lrX, double& lrY) const;
-
-   /**
-    * returns the (x,y) positions of the center and corner points
-    *
-    * Returns the (x,y) positions of the center and corner points,
-    * as high-precision values.
-    *
-    * @param  ulX  the upper-left x-position 
-    * @param  ulY  the upper-left y-position 
-    * @param  urX  the upper-right x-position 
-    * @param  urY  the upper-right y-position 
-    * @param  llX  the lower-left x-position 
-    * @param  llY  the lower-left y-position 
-    * @param  lrX  the lower-right x-position 
-    * @param  lrY  the lower-right y-position 
-    * @param  cX   the center x-position 
-    * @param  cY   the center y-position 
-    */
-   void getPoints(double& ulX, double& ulY,
-                  double& urX, double& urY,
-                  double& llX, double& llY,
-                  double& lrX, double& lrY,
-                  double& cX, double& cY) const;
-
-   /**
-    * returns the (x,y) positions of the upper-left and lower-right points
-    *
-    * Returns the (x,y) positions of the upper-left and lower-right points,
-    * as low-precision values.
-    *
-    * @param  ulX  the upper-left x-position 
-    * @param  ulY  the upper-left y-position 
-    * @param  lrX  the lower-right x-position 
-    * @param  lrY  the lower-right y-position 
-    */
-   void getPoints(lt_int32& ulX, lt_int32& ulY, 
-                  lt_int32& lrX, lt_int32& lrY) const;
-
-   /**
-    * returns the (x,y) positions of the center and corner points
-    *
-    * Returns the (x,y) positions of the center and corner points,
-    * as low-precision values.
-    *
-    * @param  ulX  the upper-left x-position 
-    * @param  ulY  the upper-left y-position 
-    * @param  urX  the upper-right x-position 
-    * @param  urY  the upper-right y-position 
-    * @param  llX  the lower-left x-position 
-    * @param  llY  the lower-left y-position 
-    * @param  lrX  the lower-right x-position 
-    * @param  lrY  the lower-right y-position 
-    * @param  cX   the center x-position 
-    * @param  cY   the center y-position 
-    */
-   void getPoints(lt_int32& ulX, lt_int32& ulY,
-                  lt_int32& urX, lt_int32& urY,
-                  lt_int32& llX, lt_int32& llY,
-                  lt_int32& lrX, lt_int32& lrY,
-                  lt_int32& cX, lt_int32& cY) const;
-   /*@}*/
-
-protected:
-   double m_ulX, m_ulY;
-   double m_width, m_height;
-   double m_magnification;
-
-private:
-   lt_int32 getHalfWidth_i() const;
-   lt_int32 getHalfHeight_i() const;
-};
-
-
-LT_END_NAMESPACE(LizardTech)
-
-#if defined(LT_COMPILER_MS)
-	#pragma warning(pop)
-#endif
-
-#endif // LTI_SCENE_H
diff --git a/src/DSDK/include/base/lti_sceneBuffer.h b/src/DSDK/include/base/lti_sceneBuffer.h
deleted file mode 100644
index beb63fe..0000000
--- a/src/DSDK/include/base/lti_sceneBuffer.h
+++ /dev/null
@@ -1,642 +0,0 @@
-/* $Id: lti_sceneBuffer.h 5152 2006-10-31 17:24:29Z juan $ */
-/* //////////////////////////////////////////////////////////////////////////
-//                                                                         //
-// This code is Copyright (c) 2004 LizardTech, Inc, 1008 Western Avenue,   //
-// Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         //
-// prohibited.  Access to and use of this code is permitted only under     //
-// license from LizardTech, Inc.  Portions of the code are protected by    //
-// US and foreign patents and other filings. All Rights Reserved.          //
-//                                                                         //
-////////////////////////////////////////////////////////////////////////// */
-/* PUBLIC */
-
-#ifndef LTI_SCENEBUFFER_H
-#define LTI_SCENEBUFFER_H
-
-// lt_lib_base
-#include "lt_base.h"
-
-#if defined(LT_COMPILER_MS)
-	#pragma warning(push,4)
-#endif
-
-LT_BEGIN_NAMESPACE(LizardTech)
-
-class LTIPixel;
-class LTIOStreamInf;
-
-/**
- * class to hold data passed between image stages
- *
- * This class holds a buffer of data which is used as the target of decode
- * operations in LTIImageStage.
- *
- * The data within the buffer is always represented as an array of bytes in
- * BSQ (band-sequential) format.  Each band is stored separately, so that the
- * underlying data is an array of N pointers, each array element being a
- * buffer for one band of the image.
- *
- * The dimensions of the buffer are set in the constructor.  The \b total
- * number of rows and columns represents the actual extent of the data array
- * in memory.  However, it is often desirable to only expose a subset of the
- * full rectangle, e.g. to access a large buffer in a stripwise fashion or to
- * overlay a small image into a large buffer.  This \b window may also be set
- * via the constructor, by providing a second set of row/column dimensions
- * and giving an offset for the upper-left position of the window.
- *
- * If the data pointer passed to the constructor is NULL, the class will
- * internally allocate the required memory (and retain ownership of it).
- *
- * Functions are provided to access that data within the buffer in a variety
- * of ways, relative to both the total buffer and the exposed window within
- * it.  You may also construct a buffer which is relative to another buffer.
- *
- * For convenience, a number of functions are also provided which allow the
- * user to copy data to and from an LTISceneBuffer object, using a variety of
- * formats.  For example, there are functions to import and export the data
- * in the buffer to BIP (band-interleaved) format.
- *
- * @note The pixel properties of the LTISceneBuffer must exactly match the
- * pixel properties of the image being decoded.
- */
-class LTISceneBuffer
-{
-public:
-   /**
-    * @name Constructors and destructor
-    */
-   /*@{*/
-
-   /**
-    * constructor with default window
-    *
-    * Constructs an LTISceneBuffer with the window set to the total region of
-    * the buffer.
-    *
-    * The \c data parameter may be NULL, in which case the memory will be
-    * allocated internally.
-    *
-    * @param  pixelProps    pixel type to be used in the buffer
-    * @param  totalNumCols  width of the buffer 
-    * @param  totalNumRows  height of the buffer 
-    * @param  data          pointer to the data array (may be NULL) 
-    */
-   LTISceneBuffer(const LTIPixel& pixelProps,
-                  lt_uint32 totalNumCols,
-                  lt_uint32 totalNumRows,
-                  void** data);
-
-   /**
-    * constructor with explicit window
-    *
-    * Constructs an LTISceneBuffer with the window set to the given size and
-    * positioned at the given offset.  The offset is given relative to the
-    * total region, and the window must lie entirely within the region.
-    *
-    * The \c data parameter may be NULL, in which case the memory will be
-    * allocated internally.
-    *
-    * @param  pixelProps     pixel type to be used in the buffer 
-    * @param  totalNumCols   width of the buffer 
-    * @param  totalNumRows   height of the buffer 
-    * @param  colOffset      x-position of the window 
-    * @param  rowOffset      y-position of the window 
-    * @param  windowNumCols  width of the window 
-    * @param  windowNumRows  height of the window 
-    * @param  data           pointer to the data array (may be NULL) 
-    */
-   LTISceneBuffer(const LTIPixel& pixelProps,
-                  lt_uint32 totalNumCols,
-                  lt_uint32 totalNumRows,
-                  lt_uint32 colOffset,
-                  lt_uint32 rowOffset,
-                  lt_uint32 windowNumCols,
-                  lt_uint32 windowNumRows,
-                  void** data);
-
-   /**
-    * constructor to overlay existing LTISceneBuffer
-    *
-    * Constructs an LTISceneBuffer which is a window into the given existing
-    * LTISceneBuffer object.  The window of the new buffer is set to cover the
-    * full window of the original buffer, starting at the given offset
-    * (which is relative to the window of the original buffer).
-    *
-    * @param  original   the existing buffer, to be overlaid 
-    * @param  colOffset  x-position of the new window 
-    * @param  rowOffset  y-position of the new window 
-    */
-   LTISceneBuffer(const LTISceneBuffer& original,
-                  lt_uint32 colOffset,
-                  lt_uint32 rowOffset);
-
-   /**
-    * constructor to overlay existing LTISceneBuffer
-    *
-    * Constructs an LTISceneBuffer which is a window into the given existing
-    * LTISceneBuffer object.  The window of the new buffer is set to start at
-    * the given offset (which is relative to the window of the original
-    * buffer).  The dimensions of the new window are passed in, and the new
-    * window must not extend beyond the dimensions of the original buffer.
-    *
-    * @param  original   the existing buffer, to be overlaid 
-    * @param  colOffset  x-position of the new window 
-    * @param  rowOffset  y-position of the new window 
-    * @param  windowNumCols  width of the window 
-    * @param  windowNumRows  height of the window 
-    */
-   // exposes only a window of a different bsq buffer; window may not
-   // extend outside of parent window; offset is relative to parent
-   // window
-   LTISceneBuffer(const LTISceneBuffer& original,
-                  lt_uint32 colOffset,
-                  lt_uint32 rowOffset,
-                  lt_uint32 windowNumCols,
-                  lt_uint32 windowNumRows);
-
-   /** destructor */
-   ~LTISceneBuffer();
-
-   /*@}*/
-
-
-   /**
-    * @name Buffer property accessors
-    */
-   /*@{*/
-   
-   /**
-   * get width of (entire) buffer
-   *
-   * Returns the total width of the buffer.
-   *
-   * @return the total width, in pixels
-   */
-   lt_int32 getTotalNumCols() const;
-
-   /**
-   * get height of (entire) buffer
-   *
-   * Returns the total height of the buffer.
-   *
-   * @return the total height, in pixels
-   */
-   lt_int32 getTotalNumRows() const;
-
-   /**
-   * get x-position of window
-   *
-   * Returns the x-position of the exposed window of the buffer.
-   *
-   * @return the x-position, relative to the whole buffer
-   */
-   lt_int32 getWindowColOffset() const;
-
-   /**
-   * get y-position of window
-   *
-   * Returns the y-position of the exposed window of the buffer.
-   *
-   * @return the y-position, relative to the whole buffer
-   */
-   lt_int32 getWindowRowOffset() const;
-
-   /**
-   * get width of exposed window
-   *
-   * Returns the width of the exposed window of the buffer.
-   *
-   * @return the window width, in pixels
-   */
-   lt_int32 getWindowNumCols() const;
-
-   /**
-   * get height of exposed window
-   *
-   * Returns the height of the exposed window of the buffer.
-   *
-   * @return the window height, in pixels
-   */
-   lt_int32 getWindowNumRows() const;
-
-   /**
-   * get size of (total) buffer
-   *
-   * Returns the total size of the buffer, in pixels.
-   *
-   * This is equal to getTotalNumCols() * getTotalNumRows().
-   *
-   * @return size of buffer
-   */
-   lt_int32 getTotalNumPixels() const;
-
-   /**
-   * get size of exposed window
-   *
-   * Returns the total size of the window of the buffer, in pixels.
-   *
-   * This is equal to getWindowNumCols() * getWindowNumRows().
-   *
-   * @return size of window in buffer
-   */
-   lt_int32 getWindowNumPixels() const;
-
-   /**
-   * get pixel type of buffer
-   *
-   * Returns the pixel type of the buffer.
-   *
-   * @return the pixel type
-   */
-   const LTIPixel& getPixelProps() const;
-
-   /**
-   * get number of bands
-   *
-   * Returns the number of bands of the pixel of the imager.
-   *
-   * This is the same as calling getPixelProps().getNumBands().
-   *
-   * @return the number of bands
-   */
-   lt_uint16 getNumBands() const;
-
-   /*@}*/
-
-   
-   /**
-    * @name Data buffer accessors
-    */
-   /*@{*/
-
-   /**
-    * get pointer to total buffer (for all bands)
-    *
-    * This function returns a pointer to the array of data buffers, one per
-    * band.  This returns the "base" pointer for the total region, regardless
-    * of the window setting.
-    *
-    * @return  a pointer to the array of data buffers
-    */
-   void** getTotalBSQData() const;
-
-   /**
-    * get pointer to total buffer (for 1 band)
-    *
-    * This function returns a pointer to the data buffer for the given band.
-    * This returns the "base" pointer for the total region, regardless of the
-    * window setting.
-    *
-    * @param   band  the band to access 
-    * @return  a pointer to the data buffer
-    */
-   void* getTotalBandData(lt_uint16 band) const;
-
-   /**
-    * get pointer to window data (for all bands)
-    *
-    * This function returns a pointer to the array of data buffers, one per
-    * band.  The buffer pointers are set to the start of the window within
-    * the total buffer.
-    *
-    * @return  a pointer to the array of data buffers
-    */
-   void** getWindowBSQData() const;
-
-   /**
-    * get pointer to window data (for 1 band)
-    *
-    * This function returns a pointer to the data buffer for the given band.
-    * The buffer pointer is set to the start of the window within
-    * the total buffer.
-    *
-    * @param   band  the band to access 
-    * @return  a pointer to the array of data buffers
-    */
-   void* getWindowBandData(lt_uint16 band) const;
-
-   /**
-    * get pointer to sample (total buffer)
-    *
-    * This function returns a pointer to the data for the given band of the
-    * specified pixel.  The offset is relative to the total buffer.
-    *
-    * @param   x     the x-position of the pixel 
-    * @param   y     the y-position of the pixel 
-    * @param   band  the band to access 
-    * @return  a pointer to the sample
-    */
-   void* getTotalSample(lt_uint32 x, lt_uint32 y, lt_uint16 band) const;
-
-   /**
-    * get pointer to sample (windowed)
-    *
-    * This function returns a pointer to the data for the given band of the
-    * specified pixel.  The offset is relative to the window into the buffer.
-    *
-    * @param   x     the x-position of the pixel 
-    * @param   y     the y-position of the pixel 
-    * @param   band  the band to access 
-    * @return  a pointer to the sample
-    */
-   void* getWindowSample(lt_uint32 x, lt_uint32 y, lt_uint16 band) const;
-   /*@}*/
-
-
-   /**
-    * query pixel position
-    *
-    * This function returns true if and only if the given position lies
-    * within the exposed window of the buffer.  (The position is relative
-    * to the total buffer.)
-    *
-    * @param   x     the x-position of the pixel 
-    * @param   y     the y-position of the pixel 
-    */
-   //bool LTISceneBuffer::inWindow(lt_uint32 x, lt_uint32 y) const;
-   bool inWindow(lt_uint32 x, lt_uint32 y) const;
-
-   /**
-    * @name Import functions
-    *
-    * These functions provide an easy way to copy data from a variety of
-    * layouts into an LTISceneBuffer object, in an efficient manner.
-    *
-    * The copying is performed relative to the exposed window of the buffer.
-    */
-   /*@{*/
-
-   /**
-    * import from another LTISceneBuffer, respecting NoData
-    *
-    * This function copies data from one source LTISceneBuffer object into
-    * another destination LTISceneBuffer object.  If the \c nodata parameter
-    * is set, any pixel in the source that matches the nodata pixel will not
-    * be copied to the corresponding destination pixel position.
-    *
-    * @param   sourceData   the data to be imported 
-    * @param   nodataPixel  source pixel will not be copied if matches; may be NULL 
-    * @return  status code indicating success or failure
-    */
-   LT_STATUS importData(const LTISceneBuffer& sourceData,
-                        const LTIPixel* nodataPixel);
-
-   /**
-    * import one band from another LTISceneBuffer
-    *
-    * This function copies just one band of data from one source LTISceneBuffer object into
-    * another destination LTISceneBuffer object.
-    *
-    * @param   dstBandNum   the band number of this buffer to be written to
-    * @param   sourceData   the data to be imported 
-    * @param   srcBandNum   the band number of \a sourceData to be read from
-    * @return  status code indicating success or failure
-    */
-   // just import one band -- doesn't respect nodata, doesn't do fuzzy mode
-   LT_STATUS importDataBand(lt_uint16 dstBandNum,
-                            const LTISceneBuffer& sourceData,
-                            lt_uint16 srcBandNum);
-
-   /**
-    * import from another LTISceneBuffer, respecting approximate NoData
-    *
-    * This function copies data from one source LTISceneBuffer object into
-    * another destination LTISceneBuffer object.  If the \c nodata parameter
-    * is set, any pixel in the source that matches the nodata pixel will not
-    * be copied to the corresponding destination pixel position.
-    *
-    * @param   sourceData   the data to be imported 
-    * @param   nodataPixel  source pixel will not be copied if matches; may be NULL 
-    * @param   mag          scene magnification 
-    * @return  status code indicating success or failure
-    */
-   LT_STATUS importDataFuzzyNoData(const LTISceneBuffer& sourceData,
-                                   const LTIPixel *nodataPixel,
-                                   double mag);
-
-
-   /**
-    * import from memory (BSQ)
-    *
-    * This function copies data from a buffer in memory.  The source pointer
-    * is assumed to be organized as an array of pointers to BSQ buffers, one
-    * per band.
-    *
-    * @param   data  the source data
-    * @return  status code indicating success or failure
-    */
-   LT_STATUS importDataBSQ(void** data);
-
-   /**
-    * import from memory (BSQ)
-    *
-    * This function copies data from a buffer in memory.  The source pointer
-    * is assumed to be organized as one large buffer in BSQ format.
-    *
-    * @param   data  the source data
-    * @return  status code indicating success or failure
-    */
-   LT_STATUS importDataBSQ(void* data);
-
-   /**
-    * import from memory (BIP)
-    *
-    * This function copies data from a buffer in memory.  The source pointer
-    * is assumed to be organized as one large buffer in BIP format.
-    *
-    * @param   data  the source data
-    * @return  status code indicating success or failure
-    */
-   LT_STATUS importDataBIP(void* data);
-
-   /**
-    * import from stream (BSQ)
-    *
-    * This function copies data from a buffer contained in the given stream.
-    * The data is assumed to be organized as one large buffer in BSQ format.
-    *
-    * @param   stream  the source data
-    * @return  status code indicating success or failure
-    */
-   LT_STATUS importDataBSQ(LTIOStreamInf& stream);
-
-   /**
-    * import from stream (BIP)
-    *
-    * This function copies data from a buffer contained in the given stream.
-    * The data is assumed to be organized as one large buffer in BIP format.
-    *
-    * @param   stream  the source data
-    * @return  status code indicating success or failure
-    */
-   LT_STATUS importDataBIP(LTIOStreamInf& stream);
-   /*@}*/
-
-
-   /**
-    * @name Export functions
-    *
-    * These functions provide an easy way to copy data from an LTISceneBuffer
-    * object to a variety of layouts, in an efficient manner.
-    *
-    * The copying is performed relative to the exposed window of the buffer.
-    */
-   /*@{*/
-
-   /**
-    * export to memory (BSQ)
-    *
-    * This function copies data to a buffer in memory.  The destination
-    * pointer is assumed to be organized as an array of pointers to BSQ
-    * buffers, one per band.
-    *
-    * If the \c data parameter is NULL, the function will allocate it (but not
-    * retain ownership).  In this case it is the caller's responsibility to
-    * deallocate each band using the delete[] operator.
-    *
-    * @param   data  the destination data (may be NULL) [in/out]
-    * @return  status code indicating success or failure
-    */
-   LT_STATUS exportDataBSQ(void**& data) const;
-
-   /**
-    * export to memory (BSQ)
-    *
-    * This function copies data to a buffer in memory.  The destination
-    * pointer is assumed to be organized as one large buffer in BSQ
-    * format.
-    *
-    * If the \c data parameter is NULL, the function will allocate it (but not
-    * retain ownership).  In this case it is the caller's responsibility to
-    * deallocate the buffer using the delete[] operator.
-    *
-    * @param   data  the destination data (may be NULL) [in/out]
-    * @return  status code indicating success or failure
-    */
-   LT_STATUS exportDataBSQ(void*& data) const;
-
-   /**
-    * export to memory (BIP)
-    *
-    * This function copies data to a buffer in memory.  The destination
-    * pointer is assumed to be organized as one large buffer in BIP
-    * format.
-    *
-    * If the \c data parameter is NULL, the function will allocate it (but not
-    * retain ownership).  In this case it is the caller's responsibility to
-    * deallocate the buffer using the delete[] operator.
-    *
-    * @param   data  the destination data (may be NULL) [in/out]
-    * @return  status code indicating success or failure
-    */
-
-   LT_STATUS exportDataBIP(void*& data) const;
-
-   /**
-    * export to stream (BSQ)
-    *
-    * This function copies data to a stream.  The destination is organized as
-    * one large buffer in BSQ format.
-    *
-    * @param   stream  the destination stream 
-    * @return  status code indicating success or failure
-    */
-   LT_STATUS exportDataBSQ(LTIOStreamInf& stream) const;
-
-   /**
-    * export to stream (BIP)
-    *
-    * This function copies data to a stream.  The destination is organized as
-    * one large buffer in BIP format.
-    *
-    * @param   stream  the destination stream 
-    * @return  status code indicating success or failure
-    */
-   LT_STATUS exportDataBIP(LTIOStreamInf& stream) const;
-
-   /**
-    * export to (arbitrary) memory
-    *
-    * This function copies data to a buffer.  The layout of the destination
-    * is determined by the input parameters.
-    *
-    * For example, assuming RGB/uint8 data and WxH pixels:
-    *
-    * \li BIP format: pixelBytes=3, rowBytes=W*3, bandBytes=1
-    * \li BIL: pixelBytes=1, rowBytes=W*3, bandBytes=W*1
-    * \li BSQ: pixelBytes=1, rowBytes=W*1, bandBytes=W*H*1
-    *
-    * @param   data        the destination buffer (may not be NULL) 
-    * @param   pixelBytes  width of pixel, in bytes (e.g. distance from "red" to "red")
-    * @param   rowBytes    width of buffer, in bytes
-    * @param   bandBytes   distance from sample to the next, in bytes (e.g. distance from "red" to "blue")
-    * @return  status code indicating success or failure
-    */
-   LT_STATUS exportData(void* data,
-                        lt_uint32 pixelBytes,
-                        lt_uint32 rowBytes,
-                        lt_uint32 bandBytes) const;
-   /*@}*/
-
-   void byteSwap();
-
-   /**
-    * compute alignment constraint
-    *
-    * This utility function returns a value which is equal to or greater than
-    * the given value, when aligned to the given constraint.  This is useful
-    * for determining proper row widths for certain applications.
-    *
-    * For example, given the value 99 and an alignment of 4, the function
-    * will return 100.  Given a value of 128 and an alignment of 8, the
-    * function will return 128.
-    *
-    * @param   value          the nominal buffer width
-    * @param   byteAlignment  the alignment required
-    * @return  the aligned width
-    */
-   static lt_uint32 addAlignment(lt_uint32 value, lt_uint32 byteAlignment);
-
-private:
-   void init(const LTIPixel& pixelProps,
-             lt_uint32 totalWidth,
-             lt_uint32 totalHeight,
-             lt_uint32 xOffset,
-             lt_uint32 yOffset,
-             lt_uint32 windowWidth,
-             lt_uint32 windowHeight,
-             void** data);
-
-   void** m_data;
-   void** m_windowData;
-   bool m_ownsData;
-
-   mutable void** m_tmpBands; // only used by import/export functions
-   
-   lt_int32* m_sampleSizes; // size of each sample, in bytes
-
-   LTIPixel* m_pixelProps;
-   lt_uint16 m_numBands;
-
-   lt_uint32 m_totalNumCols;
-   lt_uint32 m_totalNumRows;
-   lt_uint32 m_windowColOffset;
-   lt_uint32 m_windowRowOffset;
-   lt_uint32 m_windowNumCols;
-   lt_uint32 m_windowNumRows;
-
-   // nope
-   LTISceneBuffer(const LTISceneBuffer&);
-   LTISceneBuffer& operator=(const LTISceneBuffer&);
-   bool operator==(const LTISceneBuffer&) const;
-   bool operator!=(const LTISceneBuffer&) const;
-};
-
-
-LT_END_NAMESPACE(LizardTech)
-
-#if defined(LT_COMPILER_MS)
-	#pragma warning(pop)
-#endif
-
-#endif // LTI_SCENEBUFFER_H
diff --git a/src/DSDK/include/base/lti_types.h b/src/DSDK/include/base/lti_types.h
deleted file mode 100644
index 9176c6a..0000000
--- a/src/DSDK/include/base/lti_types.h
+++ /dev/null
@@ -1,194 +0,0 @@
-/* $Id: lti_types.h 5124 2006-10-27 11:40:40Z lubia $ */
-/* //////////////////////////////////////////////////////////////////////////
-//                                                                         //
-// This code is Copyright (c) 2004 LizardTech, Inc, 1008 Western Avenue,   //
-// Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         //
-// prohibited.  Access to and use of this code is permitted only under     //
-// license from LizardTech, Inc.  Portions of the code are protected by    //
-// US and foreign patents and other filings. All Rights Reserved.          //
-//                                                                         //
-////////////////////////////////////////////////////////////////////////// */
-/* PUBLIC - C*/
-
-#ifndef LTI_TYPES_H
-#define LTI_TYPES_H
-
-#include "lt_base.h"
-
-
-#if defined(LT_COMPILER_MS)
-   #pragma warning(push,4)
-#endif
-
-#ifdef LT_CPLUSPLUS
-extern "C" {
-#endif
-
-/**
- * @file
- *
- * This file contains a number of enums, typedefs, etc, that are used
- * throughout the MrSID SDK.
- */
-
-
-/**
- * colorspaces
- *
- * This enum is used to represent colorspaces.
- */
-typedef enum LTIColorSpace
-{
-  LTI_COLORSPACE_INVALID        = 0,
-  LTI_COLORSPACE_RGB            = 1,
-  LTI_COLORSPACE_RGBK           = 2,
-  LTI_COLORSPACE_CMYK           = 3,
-  LTI_COLORSPACE_GRAYSCALE      = 4,
-  LTI_COLORSPACE_PALETTE        = 5,
-  LTI_COLORSPACE_YIQ            = 6,
-  LTI_COLORSPACE_YIQK           = 7,
-  LTI_COLORSPACE_MULTISPECTRAL  = 8
-} LTIColorSpace;
-
-
-/**
- * colors
- *
- * This enum is used to represent colors.
- */
-typedef enum LTIColor
-{
-  LTI_COLOR_INVALID   = 0,
-  LTI_COLOR_RED       = 1,
-  LTI_COLOR_GREEN     = 2,
-  LTI_COLOR_BLUE      = 3,
-  LTI_COLOR_CYAN      = 4,
-  LTI_COLOR_MAGENTA   = 5,
-  LTI_COLOR_YELLOW    = 6,
-  LTI_COLOR_BLACK     = 7,
-  LTI_COLOR_GRAY      = 8,
-  LTI_COLOR_UNKNOWN   = 9
-} LTIColor;
-
-
-/**
- * datatypes
- *
- * This enum is used to represent datatypes.
- */
-typedef enum LTIDataType
-{
-  LTI_DATATYPE_INVALID  = 0,
-  LTI_DATATYPE_UINT8    = 1,
-  LTI_DATATYPE_SINT8    = 2,
-  LTI_DATATYPE_UINT16   = 3,
-  LTI_DATATYPE_SINT16   = 4,
-  LTI_DATATYPE_UINT32   = 5,
-  LTI_DATATYPE_SINT32   = 6,
-  LTI_DATATYPE_FLOAT32  = 7,
-  LTI_DATATYPE_FLOAT64  = 8,
-  LTI_DATATYPE_UINT64   = 9,
-  LTI_DATATYPE_SINT64   = 10,
-  LTI_DATATYPE_COMPLEX32 = 11,   // (float32 Real, float32 Imaginary)
-  LTI_DATATYPE_COMPLEX64 = 12    // (float64 Real, float64 Imaginary)
-} LTIDataType;
-
-
-
-/**
- * well-known points
- *
- * This enum is used to represent the well-known points on a rectangle.
- *
- * @note The constant name can be mentally read as "LTI_POSITION_y_x".
- */
-typedef enum LTIPosition
-{
-   LTI_POSITION_UPPER_LEFT     = 1,
-   LTI_POSITION_UPPER_CENTER   = 2,
-   LTI_POSITION_UPPER_RIGHT    = 3,
-   LTI_POSITION_LOWER_LEFT     = 4,
-   LTI_POSITION_LOWER_CENTER   = 5,
-   LTI_POSITION_LOWER_RIGHT    = 6,
-   LTI_POSITION_CENTER_LEFT    = 7,
-   LTI_POSITION_CENTER         = 8,
-   LTI_POSITION_CENTER_RIGHT   = 9
-} LTIPosition;
-
-
-/**
- * constants representing data layout
- *
- * These are used by classes like
- * LTIRawImageReader and LTIRawImageWriter.
- */
-typedef enum LTILayout
-{
-   LTI_LAYOUT_INVALID  = 0,
-   LTI_LAYOUT_BIP      = 1,   /**< band interleaved by pixel */
-   LTI_LAYOUT_BSQ      = 2,   /**< band sequential */
-   LTI_LAYOUT_BIL      = 3    /**< band interleaved by line */
-} LTILayout;
-
-
-/**
- * constants representing endianness (byte order)
- */
-typedef enum LTIEndian
-{
-   LTI_ENDIAN_INVALID = 0,
-   LTI_ENDIAN_HOST    = 1,
-   LTI_ENDIAN_LITTLE  = 2,
-   LTI_ENDIAN_BIG     = 3
-} LTIEndian;
-
-/**
- * constants representing resampling methods
- */
-
-typedef enum LTIResampleMethod
-{
-   LTI_RESAMPLE_INVALID   = 0,
-   LTI_RESAMPLE_NEAREST   = 1,
-   LTI_RESAMPLE_BILINEAR  = 2,
-   LTI_RESAMPLE_BICUBIC   = 3
-} LTIResampleMethod;
-
-
-
-#ifdef LT_CPLUSPLUS
-}
-
-LT_BEGIN_NAMESPACE(LizardTech)
-
-// fwd decls (utils)
-class LTFileSpec;
-class LTIOStreamInf;
-
-// fwd decls (SDK core)
-class LTIGeoCoord;
-class LTIImage;
-class LTIImageFilter;
-class LTIImageReader;
-class LTIImageStage;
-class LTIImageWriter;
-class LTIInterruptDelegate;
-class LTIMetadataDatabase;
-class LTINavigator;
-class LTIPixel;
-class LTIPixelLookupTable;
-class LTIProgressDelegate;
-class LTIReusableBSQBuffer;
-class LTISample;
-class LTIScene;
-class LTISceneBuffer;
-
-LT_END_NAMESPACE(LizardTech)
-
-#endif
-
-#if defined(LT_COMPILER_MS)
-	#pragma warning(pop)
-#endif
-
-#endif
diff --git a/src/DSDK/include/base/lti_utils.h b/src/DSDK/include/base/lti_utils.h
deleted file mode 100644
index e137b65..0000000
--- a/src/DSDK/include/base/lti_utils.h
+++ /dev/null
@@ -1,202 +0,0 @@
-/* $Id: lti_utils.h 5124 2006-10-27 11:40:40Z lubia $ */
-/* //////////////////////////////////////////////////////////////////////////
-//                                                                         //
-// This code is Copyright (c) 2004 LizardTech, Inc, 1008 Western Avenue,   //
-// Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         //
-// prohibited.  Access to and use of this code is permitted only under     //
-// license from LizardTech, Inc.  Portions of the code are protected by    //
-// US and foreign patents and other filings. All Rights Reserved.          //
-//                                                                         //
-////////////////////////////////////////////////////////////////////////// */
-/* PUBLIC */
-
-#ifndef LTI_UTILS_H
-#define LTI_UTILS_H
-
-// lt_lib_base
-#include "lt_base.h"
-
-// lt_lib_mrsid_core
-#include "lti_types.h"
-
-
-LT_BEGIN_NAMESPACE(LizardTech)
-
-#if defined(LT_COMPILER_MS)
-   #pragma warning(push,4)
-#endif
-
-/**
- * utility functions
- *
- * The LTIUtils class contains a number of generally useful static functions, e.g.
- * functions which operate on the enums declared in lti_types.h
- *
- * @note This is a "static" class; do not instantiate.
- */
-class LTIUtils
-{
-public:
-   /**
-    * returns number of samples per pixel
-    *
-    * This function returns the number of samples (bands) per pixel
-    * for the given colorspace, e.g. 3 for RGB.  If the number of
-    * bands is not known for a given colorspace, 0 will be returned.
-    *
-    * @param  colorspace  the colorspace to query 
-    * @return the number of bands
-    */
-	static lt_uint8 getSamplesPerPixel(LTIColorSpace colorspace);
-
-   /**
-    * returns number of bytes for a given a datatype
-    *
-    * This function returns the number of bytes for a given datatype,
-    * e.g. 1 for LTI_DATATYPE_UINT8 or 4 for LTI_DATATYPE_FLOAT32.
-    *
-    * @param  datatype  the datatype to query 
-    * @return the number of bytes
-    */
-	static lt_uint8 getNumBytes(LTIDataType datatype);
-
-   /**
-    * returns true if datatype is signed
-    *
-    * This function returns true if and only if the datatype
-    * can represent signed values.
-    *
-    * @param  datatype  the datatype to query 
-    * @return true, if signed
-    */
-   static bool isSigned(LTIDataType datatype);
-
-   /**
-    * returns true if datatype is integral
-    *
-    * This function returns true if and only if the datatype
-    * is integral, i.e. not floating point.
-    *
-    * @param  datatype  the datatype to query 
-    * @return true, if an integer datatype
-    */
-   static bool isIntegral(LTIDataType datatype);
-
-   /**
-    * @name Dynamic range conversion functions
-    */
-   /*@{*/
-
-   /**
-    * convert from window/level to min/max
-    *
-    * This function converts a "window and level" style of dynamic range
-    * to a "minimum and maximum" style.
-    *
-    * @param window  the window value 
-    * @param level   the level value 
-    * @param drmin   the dynamic range minimum value 
-    * @param drmax   the dynamic range maximum value 
-    */
-   static void convertWindowLevelToMinMax(double window, double level,
-                                          double& drmin, double& drmax);
-
-  /**
-    * convert from min/max to window/level
-    *
-    * This function converts a "minimum and maximum" style of dynamic range
-    * to a "window and level" style.
-    *
-    * The "window" is defined as the width of the range, i.e. maximum - minimum + 1.
-    * The "level" is defined as the center of the window, i.e. minimum + 1/2 * window.
-    *
-    * @param drmin   the dynamic range minimum value 
-    * @param drmax   the dynamic range maximum value 
-    * @param window  the window value  
-    * @param level   the level value 
-    */
-   static void convertMinMaxToWindowLevel(double drmin, double drmax,
-                                          double& window, double& level);
-   /*@}*/
-
-   /**
-    * @name Mag/level conversion functions
-    */
-   /*@{*/
-
-  /**
-    * convert mag to level
-    *
-    * This function converts a "magnification" value to a "level" value.
-    *
-    * Examples:
-    * \li full resolution: mag of 1.0 equals level of 0
-    * \li down-sampled: mag of 0.5 equals level of 1
-    * \li up-sampled: mag of 2.0 equals level of -1
-    *
-    * @param   mag  the magnification value to convert 
-    * @return  the magnification expressed as a level
-    */
-   static lt_int32 magToLevel(double mag);
-
-  /**
-    * convert level to mag
-    *
-    * This function converts a "level" value to a "magnification" value.
-    *
-    * See magToLevel() for examples.
-    *
-    * @param   level  the level value to convert 
-    * @return  the level expressed as a magnification
-    */
-   static double levelToMag(lt_int32 level);
-   /*@}*/
-
-   /**
-    * get SDK version information
-    *
-    * This function returns SDK version and build information.  The major,
-    * minor, and revision numbers correspond to the public SDK version
-    * number.  For this SDK series, \a major will be 4.  The revision number
-    * is used to indicate the intermediate release point, e.g. "Technology
-    * Preview 8".  The build number and branch name are for internal use by
-    * LizardTech.
-    *
-    * @param  major  the major version number
-    * @param  minor  the minor version number
-    * @param  revision  the revision number
-    * @param  build  the build number
-    * @param  branch  the branch name
-    */
-   static void getVersionInfo(lt_uint32& major,
-                              lt_uint32& minor,
-                              lt_uint32& revision,
-                              lt_uint32& build,
-                              const char*& branch);
-
-   /**
-    * get SDK version information as a string
-    *
-    * This function returns SDK version and build information as a formatted
-    * string.  The string will be of the form "SDK Version MAJOR.MINOR.REVISION.BUILD.BRANCH",
-    * using the values returned from LTIUtils::getVersionInfo().
-    *
-    * @return  the version string
-    */
-   static const char* getVersionString();
-
-private:
-   // nope
-   LTIUtils();
-   LTIUtils(const LTIUtils&);
-};
-
-
-LT_END_NAMESPACE(LizardTech)
-
-
-#if defined(LT_COMPILER_MS)
-	#pragma warning(pop)
-#endif
-
-#endif // LTI_UTILS_H
diff --git a/src/DSDK/include/base/lti_version.h b/src/DSDK/include/base/lti_version.h
deleted file mode 100644
index 7d4dba5..0000000
--- a/src/DSDK/include/base/lti_version.h
+++ /dev/null
@@ -1,22 +0,0 @@
-/* $Id: lti_version.h 5124 2006-10-27 11:40:40Z lubia $ */
-/****************************************************************************
- *                                                                          *
- *  This code is Copyright (c) 2005 LizardTech, Inc, 1008 Western Avenue,   *
- *  Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         *
- *  prohibited.  Access to and use of this code is permitted only under     *
- *  license from LizardTech, Inc.  Portions of the code are protected by    *
- *  US and foreign patents and other filings. All Rights Reserved.          *
- *                                                                          *
- ***************************************************************************/
-/* PUBLIC */
-
-#ifndef LTI_VERSION_H
-#define LTI_VERSION_H
-
-#define LTI_SDK_VERSION 0x0607
-#define LTI_SDK_MAJOR  6
-#define LTI_SDK_MINOR  0
-#define LTI_SDK_REV    7
-
-#endif // LTI_VERSION_H
-
diff --git a/src/DSDK/include/base/mg2_status.h b/src/DSDK/include/base/mg2_status.h
deleted file mode 100644
index 605476d..0000000
--- a/src/DSDK/include/base/mg2_status.h
+++ /dev/null
@@ -1,332 +0,0 @@
-/* $Id: mg2_status.h 5124 2006-10-27 11:40:40Z lubia $ */
-/* //////////////////////////////////////////////////////////////////////////
-//                                                                         //
-// This code is Copyright (c) 2005 LizardTech, Inc, 1008 Western Avenue,   //
-// Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         //
-// prohibited.  Access to and use of this code is permitted only under     //
-// license from LizardTech, Inc.  Portions of the code are protected by    //
-// US and foreign patents and other filings. All Rights Reserved.          //
-//                                                                         //
-////////////////////////////////////////////////////////////////////////// */     
-/* PUBLIC */
-
-#ifndef MG2_STATUS_H
-#define MG2_STATUS_H
-
-// lt_lib_base
-#include "lt_base.h"
-
-
-#define MG2D_STATUS_BASE                              8000
-LT_STATUSSTRING_ADD(MG2D_STATUS_BASE, "mg2d BASE")
-
-#define MG2D_STATUS_Error1Array2DCtor3                8001
-LT_STATUSSTRING_ADD(MG2D_STATUS_Error1Array2DCtor3, "mg2d internal error")
-
-#define MG2D_STATUS_NewerSID                          8002
-LT_STATUSSTRING_ADD(MG2D_STATUS_NewerSID, "MrSID version error")
-
-#define MG2D_STATUS_InvalidImageSupport               8008
-LT_STATUSSTRING_ADD(MG2D_STATUS_InvalidImageSupport, "mg2d internal error")
-
-#define MG2D_STATUS_IncompatibleScaleGreater          8009
-LT_STATUSSTRING_ADD(MG2D_STATUS_IncompatibleScaleGreater, "mg2d internal error")
-
-#define MG2D_STATUS_IncompatibleScaleLess             8010
-LT_STATUSSTRING_ADD(MG2D_STATUS_IncompatibleScaleLess, "mg2d internal error")
-
-#define MG2D_STATUS_Error1SubbandCopy                 8011
-LT_STATUSSTRING_ADD(MG2D_STATUS_Error1SubbandCopy, "mg2d internal error")
-
-#define MG2D_STATUS_Error1SubbandIntersect            8012
-LT_STATUSSTRING_ADD(MG2D_STATUS_Error1SubbandIntersect, "mg2d internal error")
-
-#define MG2D_STATUS_Error2SubbandIntersect            8013
-LT_STATUSSTRING_ADD(MG2D_STATUS_Error2SubbandIntersect, "mg2d internal error")
-
-#define MG2D_STATUS_Error3SubbandIntersect            8014
-LT_STATUSSTRING_ADD(MG2D_STATUS_Error3SubbandIntersect, "mg2d internal error")
-
-#define MG2D_STATUS_Error4SubbandIntersect            8015
-LT_STATUSSTRING_ADD(MG2D_STATUS_Error4SubbandIntersect, "mg2d internal error")
-
-#define MG2D_STATUS_Error5SubbandIntersect            8016
-LT_STATUSSTRING_ADD(MG2D_STATUS_Error5SubbandIntersect, "mg2d internal error")
-
-#define MG2D_STATUS_Error1Array2DSetBand              8017
-LT_STATUSSTRING_ADD(MG2D_STATUS_Error1Array2DSetBand, "mg2d internal error")
-
-#define MG2D_STATUS_Error1Array2DInsert               8018
-LT_STATUSSTRING_ADD(MG2D_STATUS_Error1Array2DInsert, "mg2d internal error")
-
-#define MG2D_STATUS_Error2Array2DInsert               8019
-LT_STATUSSTRING_ADD(MG2D_STATUS_Error2Array2DInsert, "mg2d internal error")
-
-#define MG2D_STATUS_Error1Array2DBSQIteratorPlus      8020
-LT_STATUSSTRING_ADD(MG2D_STATUS_Error1Array2DBSQIteratorPlus, "mg2d internal error")
-
-#define MG2D_STATUS_UnexpectedMarker                  8021
-LT_STATUSSTRING_ADD(MG2D_STATUS_UnexpectedMarker, "mg2d internal error")
-
-#define MG2D_STATUS_ErrorDecompressing                8022
-LT_STATUSSTRING_ADD(MG2D_STATUS_ErrorDecompressing, "Error decoding image")
-
-#define MG2D_STATUS_Error2SubbandCopy                 8023
-LT_STATUSSTRING_ADD(MG2D_STATUS_Error2SubbandCopy, "mg2d internal error")
-
-#define MG2D_STATUS_Error1Merge2sub                   8024
-LT_STATUSSTRING_ADD(MG2D_STATUS_Error1Merge2sub, "mg2d internal error")
-
-#define MG2D_STATUS_Error2Merge2sub                   8025
-LT_STATUSSTRING_ADD(MG2D_STATUS_Error2Merge2sub, "mg2d internal error")
-
-#define MG2D_STATUS_Error3Merge2sub                   8026
-LT_STATUSSTRING_ADD(MG2D_STATUS_Error3Merge2sub, "mg2d internal error")
-
-#define MG2D_STATUS_Error4Merge2sub                   8027
-LT_STATUSSTRING_ADD(MG2D_STATUS_Error4Merge2sub, "mg2d internal error")
-
-#define MG2D_STATUS_Error5Merge2sub                   8028
-LT_STATUSSTRING_ADD(MG2D_STATUS_Error5Merge2sub, "mg2d internal error")
-
-#define MG2D_STATUS_Error1Dth                         8029
-LT_STATUSSTRING_ADD(MG2D_STATUS_Error1Dth, "mg2d internal error")
-
-#define MG2D_STATUS_Interrupt                         8040
-LT_STATUSSTRING_ADD(MG2D_STATUS_Interrupt, "Interrupt")
-
-
-#define LT_STS_MG2_readError                          8101
-LT_STATUSSTRING_ADD(LT_STS_MG2_readError, "mg2 read error")
-
-#define LT_STS_MG2_writeError                         8102
-LT_STATUSSTRING_ADD(LT_STS_MG2_writeError, "mg2 write error")
-
-#define LT_STS_MG2_ioError                            8103
-LT_STATUSSTRING_ADD(LT_STS_MG2_ioError, "mg2 i/o error")
-
-#define LT_STS_MG2_notMrSIDFile                       8104
-LT_STATUSSTRING_ADD(LT_STS_MG2_notMrSIDFile, "not a MG2 file")
-
-#define LT_STS_MG2_unsupportedVersion                 8105
-LT_STATUSSTRING_ADD(LT_STS_MG2_unsupportedVersion, "unsupported version of mg2")
-
-#define LT_STS_MG2_badMarker                          8106
-LT_STATUSSTRING_ADD(LT_STS_MG2_badMarker, "bad mg2 file marker")
-
-#define LT_STS_MG2_blockSizeTooLarge                  8107
-LT_STATUSSTRING_ADD(LT_STS_MG2_blockSizeTooLarge, "blocksize too large")
-
-#define LT_STS_MG2_blockSizeTooSmall                  8108
-LT_STATUSSTRING_ADD(LT_STS_MG2_blockSizeTooSmall, "blocksize too small")
-
-#define LT_STS_MG2_binCountTooLarge                   8109
-LT_STATUSSTRING_ADD(LT_STS_MG2_binCountTooLarge, "binCount too large")
-
-#define LT_STS_MG2_binCountTooSmall                   8110
-LT_STATUSSTRING_ADD(LT_STS_MG2_binCountTooSmall, "binCount too small")
-
-#define LT_STS_MG2_huffmanDecodeError                 8111
-LT_STATUSSTRING_ADD(LT_STS_MG2_huffmanDecodeError, "huffman decode error")
-
-#define LT_STS_MG2_huffmanEncodeError                 8112
-LT_STATUSSTRING_ADD(LT_STS_MG2_huffmanEncodeError, "huffman encode error")
-
-#define LT_STS_MG2_outOfMemory                        8113
-LT_STATUSSTRING_ADD(LT_STS_MG2_outOfMemory, "mg2 out of memory")
-
-#define LT_STS_MG2_error                              8114
-LT_STATUSSTRING_ADD(LT_STS_MG2_error, "mg2 something went very wrong")
-
-#define LT_STS_MG2_rasterBlockNotCompatible           8115
-LT_STATUSSTRING_ADD(LT_STS_MG2_rasterBlockNotCompatible, "mg2 raster block not compatible")
-
-#define LT_STS_MG2_badLevel                           8116
-LT_STATUSSTRING_ADD(LT_STS_MG2_badLevel, "level is larger than the number of levels in image")
-
-#define LT_STS_MG2_badSupport                         8117
-LT_STATUSSTRING_ADD(LT_STS_MG2_badSupport, "support is larger than the image")
-
-#define LT_STS_MG2_badColorSpaceConvertion            8118
-LT_STATUSSTRING_ADD(LT_STS_MG2_badColorSpaceConvertion, "bad color space conversion")
-
-
-#define MG2D_STATUS_MAX                               8999
-LT_STATUSSTRING_ADD(MG2D_STATUS_MAX, "mg2d MAX")
-
-
-#define LT_STS_Image_MG2E_BASE                  9000
-LT_STATUSSTRING_ADD(LT_STS_Image_MG2E_BASE, "mg2e BASE")
-
-#define LT_STS_MG2EError1SInitSub               9001
-LT_STATUSSTRING_ADD(LT_STS_MG2EError1SInitSub, "mg2 Error1SInitSub")
-
-#define LT_STS_MG2EErrorBlockSmallGivenNlev     9002
-LT_STATUSSTRING_ADD(LT_STS_MG2EErrorBlockSmallGivenNlev, "block size too small for given scale")
-
-#define LT_STS_MG2EError1ZeroOverlapSub         9003
-LT_STATUSSTRING_ADD(LT_STS_MG2EError1ZeroOverlapSub, "mg2 Error1ZeroOverlapSub")
-
-#define LT_STS_MG2EError1PurgeBorderSub         9004
-LT_STATUSSTRING_ADD(LT_STS_MG2EError1PurgeBorderSub, "mg2 Error1PurgeBorderSub")
-
-#define LT_STS_MG2EError1CopyDataToBordersSub   9005
-LT_STATUSSTRING_ADD(LT_STS_MG2EError1CopyDataToBordersSub, "mg2 Error1CopyDataToBordersSub")
-
-#define LT_STS_MG2EError2PurgeBorderSub         9006
-LT_STATUSSTRING_ADD(LT_STS_MG2EError2PurgeBorderSub, "mg2 Error2PurgeBorderSub")
-
-#define LT_STS_MG2EErrorSetOverlap              9007
-LT_STATUSSTRING_ADD(LT_STS_MG2EErrorSetOverlap, "mg2 ErrorSetOverlap")
-
-#define LT_STS_MG2EErrorSubbandSplit            9008
-LT_STATUSSTRING_ADD(LT_STS_MG2EErrorSubbandSplit, "mg2 ErrorSubbandSplit")
-
-// 9009 unused
-
-#define LT_STS_MG2EUnknownException             9010
-LT_STATUSSTRING_ADD(LT_STS_MG2EUnknownException, "mg2 UnknownException")
-
-#define LT_STS_MG2ENlevLessEqual9               9011
-LT_STATUSSTRING_ADD(LT_STS_MG2ENlevLessEqual9, "scale too large")
-
-#define LT_STS_MG2EImageSmallGivenNLev          9012
-LT_STATUSSTRING_ADD(LT_STS_MG2EImageSmallGivenNLev, "scale too small")
-
-#define LT_STS_MG2EErrorMaxIconSize             9013
-LT_STATUSSTRING_ADD(LT_STS_MG2EErrorMaxIconSize, "mg2 icon size error")
-
-#define LT_STS_MG2EMemAlloc                     9014
-LT_STATUSSTRING_ADD(LT_STS_MG2EMemAlloc, "mg2 mem alloc error")
-
-#define LT_STS_MG2EErrorOpenOutputFile          9015
-LT_STATUSSTRING_ADD(LT_STS_MG2EErrorOpenOutputFile, "error opening output file")
-
-#define LT_STS_MG2EErrorWriteOutputFile         9016
-LT_STATUSSTRING_ADD(LT_STS_MG2EErrorWriteOutputFile, "error writing output file")
-
-#define LT_STS_MG2ETempFileError                9017
-LT_STATUSSTRING_ADD(LT_STS_MG2ETempFileError, "temp file error (%F)")
-
-#define LT_STS_MG2ETempDirError                 9018
-LT_STATUSSTRING_ADD(LT_STS_MG2ETempDirError, "temp dir error")
-
-#define LT_STS_MG2EBlockSmallGivenNlev          9019
-LT_STATUSSTRING_ADD(LT_STS_MG2EBlockSmallGivenNlev, "block size too small for scale")
-
-#define LT_STS_MG2EIllegalSampleType            9020
-LT_STATUSSTRING_ADD(LT_STS_MG2EIllegalSampleType, "illegal sample type")
-
-#define LT_STS_MG2EInterrupt                    9021
-LT_STATUSSTRING_ADD(LT_STS_MG2EInterrupt, "mg2 interrupt")
-
-#define LT_STS_MG2EWriteErrorCheckTempDir       9022
-LT_STATUSSTRING_ADD(LT_STS_MG2EWriteErrorCheckTempDir, "temp dir write error")
-
-#define LT_STS_MG2EFileOffsetErrorDecodeIndices 9023
-LT_STATUSSTRING_ADD(LT_STS_MG2EFileOffsetErrorDecodeIndices, "mg2 FileOffsetErrorDecodeIndices")
-
-#define LT_STS_MG2EInvalidLockingKey            9024
-LT_STATUSSTRING_ADD(LT_STS_MG2EInvalidLockingKey, "Invalid key")
-
-#define LT_STS_MG2EInvalidLockingPassword       9025
-LT_STATUSSTRING_ADD(LT_STS_MG2EInvalidLockingPassword, "Invalid password")
-
-#define LT_STS_RFIInvalid                       9100
-LT_STATUSSTRING_ADD(LT_STS_RFIInvalid, "RFI invalid error")
-
-
-#define LT_STS_MG2E_TableGen_MemAlloc           9200
-LT_STATUSSTRING_ADD(LT_STS_MG2E_TableGen_MemAlloc, "memory allocation error")
-
-#define LT_STS_MG2E_Subband_MemAlloc            9201
-LT_STATUSSTRING_ADD(LT_STS_MG2E_Subband_MemAlloc, "memory allocation error")
-
-#define LT_STS_MG2E_SetOverlap_MemAlloc         9202
-LT_STATUSSTRING_ADD(LT_STS_MG2E_SetOverlap_MemAlloc, "memory allocation error")
-
-#define LT_STS_MG2E_IconBitRate_MemAlloc        9203
-LT_STATUSSTRING_ADD(LT_STS_MG2E_IconBitRate_MemAlloc, "memory allocation error")
-
-#define LT_STS_MG2E_CreateTempFile              9204
-LT_STATUSSTRING_ADD(LT_STS_MG2E_CreateTempFile, "cannot create temp file")
-
-#define LT_STS_MG2E_TempName_MemAlloc           9205
-LT_STATUSSTRING_ADD(LT_STS_MG2E_TempName_MemAlloc, "memory allocation error")
-
-#define LT_STS_MG2E_ArchUtils_MemAlloc          9206
-LT_STATUSSTRING_ADD(LT_STS_MG2E_ArchUtils_MemAlloc, "memory allocation error")
-
-#define LT_STS_MG2E_Dump_MemAlloc               9207
-LT_STATUSSTRING_ADD(LT_STS_MG2E_Dump_MemAlloc, "memory allocation error")
-
-#define LT_STS_MG2E_BlkNode_MemAlloc            9208
-LT_STATUSSTRING_ADD(LT_STS_MG2E_BlkNode_MemAlloc, "memory allocation error")
-
-#define LT_STS_MG2E_Convert_MemAlloc            9209
-LT_STATUSSTRING_ADD(LT_STS_MG2E_Convert_MemAlloc, "memory allocation error")
-
-#define LT_STS_MG2E_HuffD_MemAlloc              9210
-LT_STATUSSTRING_ADD(LT_STS_MG2E_HuffD_MemAlloc, "memory allocation error")
-
-#define LT_STS_MG2E_HuffE_MemAlloc              9211
-LT_STATUSSTRING_ADD(LT_STS_MG2E_HuffE_MemAlloc, "memory allocation error")
-
-#define LT_STS_MG2E_HuffE2_MemAlloc             9212
-LT_STATUSSTRING_ADD(LT_STS_MG2E_HuffE2_MemAlloc, "memory allocation error")
-
-#define LT_STS_MG2E_OutIcon_MemAlloc            9213
-LT_STATUSSTRING_ADD(LT_STS_MG2E_OutIcon_MemAlloc, "memory allocation error")
-
-#define LT_STS_MG2E_Purge_MemAlloc              9214
-LT_STATUSSTRING_ADD(LT_STS_MG2E_Purge_MemAlloc, "memory allocation error")
-
-#define LT_STS_MG2E_QGen_MemAlloc               9215
-LT_STATUSSTRING_ADD(LT_STS_MG2E_QGen_MemAlloc, "memory allocation error")
-
-#define LT_STS_MG2E_SQ_MemAlloc                 9216
-LT_STATUSSTRING_ADD(LT_STS_MG2E_SQ_MemAlloc, "memory allocation error")
-
-#define LT_STS_MG2E_SbInit_MemAlloc             9217
-LT_STATUSSTRING_ADD(LT_STS_MG2E_SbInit_MemAlloc, "memory allocation error")
-
-#define LT_STS_MG2E_TDWTQ_MemAlloc              9218
-LT_STATUSSTRING_ADD(LT_STS_MG2E_TDWTQ_MemAlloc, "memory allocation error")
-
-#define LT_STS_MG2E_TDWTQ_ColorSpace            9219
-LT_STATUSSTRING_ADD(LT_STS_MG2E_TDWTQ_ColorSpace, "invalid colorspace")
-
-#define LT_STS_MG2E_Convert_ReadError           9220
-LT_STATUSSTRING_ADD(LT_STS_MG2E_Convert_ReadError, "internal mg2 read error")
-
-#define LT_STS_MG2E_HuffD_ReadError             9221
-LT_STATUSSTRING_ADD(LT_STS_MG2E_HuffD_ReadError, "internal mg2 read error")
-
-#define LT_STS_MG2E_Split_MemAlloc              9222
-LT_STATUSSTRING_ADD(LT_STS_MG2E_Split_MemAlloc, "memory allocation error")
-
-#define LT_STS_MG2EAllocFailed                  9223
-LT_STATUSSTRING_ADD(LT_STS_MG2EAllocFailed, "MG2 encode memory allocation failed")
-
-#define LT_STS_Image_MG2E_MAX                   9999
-LT_STATUSSTRING_ADD(LT_STS_Image_MG2E_MAX, "mg2 MAX")
-
-
-#define LT_STS_MG2LET_BEGIN                  32000 
-
-#define LT_STS_SLT_Error                     32001
-#define LT_STS_SLT_ExtractError              32002 
-#define LT_STS_SLT_SidletClientZeroSupport   32005
-#define LT_STS_SLT_SidletClientAllDataCached 32006
-#define LT_STS_SLT_SidletClientExceptionCaught 32007
-#define LT_STS_SLT_IOError                   32008
-#define LT_STS_SLT_ErrGenRequest             32009
-#define LT_STS_SLT_ErrorParsingSidletRequest 32013
-#define LT_STS_SLT_MessageHeaderSectionCorrupt              32014
-#define LT_STS_SLT_MarkerMismatchWhileParsingSidletMessage  32016
-#define LT_STS_SLT_UnrecognizedSidletMessageSection         32017
-
-#define LT_STS_MG2LET_END 32999;
-
-
-#endif /* MG2_STATUS_H */
diff --git a/src/DSDK/include/base/mg3_status.h b/src/DSDK/include/base/mg3_status.h
deleted file mode 100644
index fee9832..0000000
--- a/src/DSDK/include/base/mg3_status.h
+++ /dev/null
@@ -1,215 +0,0 @@
-/* $Id: mg3_status.h 5124 2006-10-27 11:40:40Z lubia $ */
-/* //////////////////////////////////////////////////////////////////////////
-//                                                                         //
-// This code is Copyright (c) 2005 LizardTech, Inc, 1008 Western Avenue,   //
-// Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         //
-// prohibited.  Access to and use of this code is permitted only under     //
-// license from LizardTech, Inc.  Portions of the code are protected by    //
-// US and foreign patents and other filings. All Rights Reserved.          //
-//                                                                         //
-////////////////////////////////////////////////////////////////////////// */     
-/* PUBLIC */
-
-#ifndef MG3_STATUS_H
-#define MG3_STATUS_H
-
-// lt_lib_base
-#include "lt_base.h"
-
-//
-// On the Usage of Status Codes
-// ----------------------------
-//
-// Status codes are used to report failure modes of an "unnatural" or
-// "unexpected" nature.  They are to be used when something happens that is
-// not part of the normal course of events.  They often are used in places
-// where other, more mature programmers would throw exceptions.
-//
-// Applications that don't otherwise handle failure conditions should feel
-// free to return these status values as exit codes back out to the shell.
-// The kernel sample apps follow this convention.
-//
-// These status values are to be generally applicable across the whole
-// kernel.  They are not to be specific to a small set of cases ("the third
-// parameter to this function was greater than 10"), nor are they to be
-// overly generic ("an error occurred").
-//
-// The intent of status codes is to both signal to the user that something
-// bad happened and to provide a mechanism for aborting execution gracefully.
-// It is *not* the intent that these status codes would allow a caller to
-// programmatically diagnose the error and retry the operation -- that would
-// require a much richer semantics.  To paraphrase Nathan, the kernel is
-// designed for non-dummies.
-//
-// Status codes are *not* to be used for indicating negative success, such as
-// in a function that attempts to find within a file a packet of some
-// specified type and return a pointer to that packet.  That function should
-// return the "ok" status and use an "out" parameter to return the pointer,
-// either set properly (packet was found) or as NULL (packet was not found).
-// Finding packets in a file involves underlying I/O operations, and
-// therefore is potentially a status-code-inducing operation.  (Contrast this
-// with a function which is just looking for some element in a list -- a
-// standard list search probably won't entail any operations that might fail
-// in bad ways, so returning the pointer directly is okay.)
-//
-// By convention, status codes are only to be used as function return values,
-// never as parameters.
-//
-// If a function returns a status code, it's value MUST be checked for
-// success and handled appropriately.  If you are unsure how to handle the
-// returned result, the least you should do is pass the status code back up
-// the stack.
-//
-// Someday, we might unify these status codes with those used by Sparkle, the
-// Core, the Stream library, etc.
-//
-// If you feel the urge to add a New status code, stop and consider your
-// situation carefully.  Can you use one of the ones already there?  Could
-// your New one replace an existing one?  Will your New one be useful in some
-// case other than the current one you have in mind?  Have you talked it over
-// with the other kernel folks yet?
-//
-// There is no "unknown" status code represented.  Such a value would defeat
-// the whole purpose.  Lame-o.
-//
-// Recall that the kernel does not use explicit exception handling anywhere.
-// Ever.  At all.  Period.  We use status codes instead.
-//
-// Only the "OK" status code is given a numeric value (zero).  Programmers
-// should not rely on the numeric values or orderings of the enum values.
-//
-// The "OK()" function should always be used to test success.  The idiom of
-// choice is:
-//   stat = foo();
-//   if (!OK(stat)) return foo;
-//
-// The "invalid" status is to be used only for initializing variables of type
-// MG3Status.  No well-behaved function should ever return the "invalid"
-// status.
-//
-// Note well that the meaning of each status code is documented.  We'd like
-// to keep it that way.
-//
-
-
-// note "name()" function is declared in MG3Types class
-
-#define MG3_STATUS_BASE  2000
-LT_STATUSSTRING_ADD(MG3_STATUS_BASE, "mg3 BASE")
-
-#define MG3_STATUS_MAX   2999
-LT_STATUSSTRING_ADD(MG3_STATUS_MAX, "mg3 MAX")
-
-   // A "read" I/O operation failed: you hit EOF unexpectedly because the
-   // file was corrupt, someone unplugged your network cable on you, etc.
-#define MG3_STATUS_READ_ERROR                      2001
-LT_STATUSSTRING_ADD(MG3_STATUS_READ_ERROR, "mg3 read error")
-
-   // A "write" I/O operation failed: someone unplugged your network cable on
-   // you, you don't have write permission, the stream just ain't writable,
-   // etc.
-#define MG3_STATUS_WRITE_ERROR                     2002
-LT_STATUSSTRING_ADD(MG3_STATUS_WRITE_ERROR, "mg3 write error")
-
-   // An "open" I/O operation failed: someone unplugged your network cable
-   // (again...), you don't have permission to create the file, you don't
-   // have write access to the file, etc.
-#define MG3_STATUS_OPEN_ERROR                      2003
-LT_STATUSSTRING_ADD(MG3_STATUS_OPEN_ERROR, "mg3 open error")
-
-   // An I/O operation failed, for some reason other than read, write, or
-   // open: for example, seek() or close().
-#define MG3_STATUS_IO_ERROR                        2004
-LT_STATUSSTRING_ADD(MG3_STATUS_IO_ERROR, "mg3 IO error")
-
-   // The format the file being read was somehow broken: a field containing
-   // an enum had an illegal value, etc.  This is largely for use by those
-   // functions which need to decode specific file formats, e.g. MG3.
-#define MG3_STATUS_FORMAT_ERROR                    2005
-LT_STATUSSTRING_ADD(MG3_STATUS_FORMAT_ERROR, "mg3 format error")
-
-   // A versioning problem has occurred: you're trying to read a version that
-   // you don't have support for.  [I don't like this one much -- probably
-   // should be diagnosed more explicitly and handled more formally. BUG.]
-#define MG3_STATUS_BAD_VERSION                     2006
-LT_STATUSSTRING_ADD(MG3_STATUS_BAD_VERSION, "mg3 bad version")
-
-   // The user has requested an interrupt, e.g. via a signal from our friends
-   // as LTProcessCallback::hasBeenTerminated().
-#define MG3_STATUS_INTERRUPT                       2007
-LT_STATUSSTRING_ADD(MG3_STATUS_INTERRUPT, "mg3 interrupt")
-
-#define MG3_STATUS_RESERVED_2008                   2008
-
-   // One of the arguments to the function was incorrect: a value was out of
-   // range, a pointer was NULL, etc.  (Compare this to the "bad context"
-   // error, which is more of an implicit problem.)
-#define MG3_STATUS_BAD_ARGUMENT                    2009
-LT_STATUSSTRING_ADD(MG3_STATUS_BAD_ARGUMENT, "mg3 bad argument")
-
-   // The context in which the function was called is incorrect: for example,
-   // trying to add a certain unique packet type to the database when there
-   // is already one of that type in there -- the caller of function is not
-   // supposed to do that.  Similarly, calling initialize() twice is not
-   // allowed, nor is calling execute() with calling initialize() first.
-   // (Compare this to the "bad argument" error, which is more of an explicit
-   // problem.)
-#define MG3_STATUS_BAD_CONTEXT                     2010
-LT_STATUSSTRING_ADD(MG3_STATUS_BAD_CONTEXT, "mg3 bad context")
-
-   // We tried to do something that required a password or some such, and
-   // the operation didn't succeed.  This should only happen around calls
-   // into secuirty packets and the encryption library and those sorts of
-   // places.
-#define MG3_STATUS_SECURITY_ERROR                  2011
-LT_STATUSSTRING_ADD(MG3_STATUS_SECURITY_ERROR, "mg3 security error")
-
-   // Unlikely, but could happen.  Typically would be used by wrapping a call
-   // to a potentially large malloc() call in a try region and using this
-   // value if the catch region finds an out of memory exception.
-#define MG3_STATUS_OUT_OF_MEMORY                   2012
-LT_STATUSSTRING_ADD(MG3_STATUS_OUT_OF_MEMORY, "mg3 out of memory")
-
-   // A C++ exception occurred that we did not expect.  In some cases, the
-   // kernel will wrap a call to a foreign library in a try region so as to
-   // manually catch any errors it may throw.  This status value is used when
-   // the resulting exception is not something we can readily deal with.
-#define MG3_STATUS_UNHANDLED_EXCEPTION             2013
-LT_STATUSSTRING_ADD(MG3_STATUS_UNHANDLED_EXCEPTION, "mg3 unhandled exception")
-
-   // A theoretically unreachable piece of code was reached.  This should
-   // be used for things like the default case of a switch statement in which
-   // all possible legal values have already been handled explicitly.  This
-   // value may be used in conjunction with LT_ASSERT(0).
-#define MG3_STATUS_NOTREACHED                      2014
-LT_STATUSSTRING_ADD(MG3_STATUS_NOTREACHED, "mg3 NOTREACHED")
-
-   // Use only for initializing a variable.  Should never be returned as an
-   // actual status value.
-#define MG3_STATUS_INVALID                         2015
-LT_STATUSSTRING_ADD(MG3_STATUS_INVALID, "mg3 status invalid")
-
-   // No MSEs in the image: the image cannot be optimized or streamed.
-#define MG3_STATUS_NO_MSES                         2016
-LT_STATUSSTRING_ADD(MG3_STATUS_NO_MSES, "mg3 no MSEs")
-
-   // The streaming client made a bad request
-   // on the server side still send the reply
-#define MG3_STATUS_BAD_CLIENT_REQUEST              2017
-LT_STATUSSTRING_ADD(MG3_STATUS_BAD_CLIENT_REQUEST, "mg3 bad client request")
-
-   // The streaming server had any error: call getServerError()
-   // on the server side still send the reply
-#define MG3_STATUS_SERVER_ERROR                    2018
-LT_STATUSSTRING_ADD(MG3_STATUS_SERVER_ERROR, "mg3 server error")
-
-   // The MG3 image could not be added the client plane cache
-   // because the imageInfo does not match.
-#define MG3_STATUS_IMAGE_NOT_COMPATIBLE            2019
-LT_STATUSSTRING_ADD(MG3_STATUS_IMAGE_NOT_COMPATIBLE, "mg3 image not compatible")
-
-   // Singed integer overflowed
-#define MG3_STATUS_OVERFLOW                        2020
-LT_STATUSSTRING_ADD(MG3_STATUS_OVERFLOW, "mg3 integer overflow")
-
-#endif // MG3_STATUS_H
diff --git a/src/DSDK/include/c_api/lt_ioCStream.h b/src/DSDK/include/c_api/lt_ioCStream.h
deleted file mode 100644
index fa5e43a..0000000
--- a/src/DSDK/include/c_api/lt_ioCStream.h
+++ /dev/null
@@ -1,212 +0,0 @@
-/* $Id: lt_ioCStream.h 5124 2006-10-27 11:40:40Z lubia $ */
-/* //////////////////////////////////////////////////////////////////////////
-//                                                                         //
-// This code is Copyright (c) 2004 LizardTech, Inc, 1008 Western Avenue,   //
-// Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         //
-// prohibited.  Access to and use of this code is permitted only under     //
-// license from LizardTech, Inc.  Portions of the code are protected by    //
-// US and foreign patents and other filings. All Rights Reserved.          //
-//                                                                         //
-////////////////////////////////////////////////////////////////////////// */
-/* PUBLIC - C */
-
-#ifndef LT_IO_C_STREAM_H
-#define LT_IO_C_STREAM_H
-
-#include "lt_base.h"
-#include "lt_lib_io.h"
-#include "lt_ioCallbackStreamTypes.h"
-
-#if defined(LT_COMPILER_MS)
-	#pragma warning(push,4)
-#endif
-
-#ifdef LT_CPLUSPLUS
-extern "C" {
-#endif
-
-/**
- * @name C functions for operating on streams
- *
- * These functions are C-callable analogues to the member
- * functions in the LTIOStreamInf class.
- */
-/*@{*/
-
-/**
- * destructor for C stream
- *
- * This function must be called once the stream is no longer needed
- * to free up the stream's allocated resources, i.e. it calls the
- * destructor of the underlying LTIOCallbackStream.
- *
- * @param  stream  stream to be freed
- * @return success/failure code
- */
-LT_STATUS lt_ioCStreamDestroy(LTIOStreamH stream);
-
-
-/**
- * open C stream
- *
- * Opens a previously-created C stream.
- *
- * This function is equivalent to LTIOStreamInf::open().
- *
- * @param  stream  stream to be opened
- * @return success/failure code
- */
-LT_STATUS lt_ioCStreamOpen(LTIOStreamH stream);
-
-
-/**
- * close C stream
- *
- * Closes a C stream.  Note that lt_ioCStreamDestroy() must be
- * called once the stream is no longer needed.
- *
- * This function is equivalent to LTIOStreamInf::close().
- *
- * @param  stream  stream to be closed
- * @return success/failure code
- */
-LT_STATUS lt_ioCStreamClose(LTIOStreamH stream);
-
-
-/**
- * read C stream
- *
- * Read from a C stream.
- *
- * This function is equivalent to LTIOStreamInf::read().
- *
- * @param  stream  stream to read from
- * @param  buf     buffer to read into
- * @param  len     number of bytes to read
- * @return number of bytes read
- */
-lt_uint32 lt_ioCStreamRead(LTIOStreamH stream, lt_uint8* buf, lt_uint32 len);
-
-
-/**
- * write C stream
- *
- * Write to a C stream.
- *
- * This function is equivalent to LTIOStreamInf::write().
- *
- * @param  stream  stream to be written to
- * @param  buf     buffer to write from
- * @param  len     number of bytes to write
- * @return number of bytes written
- */
-lt_uint32 lt_ioCStreamWrite(LTIOStreamH stream, const lt_uint8* buf, lt_uint32 len);
-
-
-/**
- * seek for C stream
- *
- * Seek on a C stream.
- *
- * This function is equivalent to LTIOStreamInf::seek().
- *
- * @param  stream  stream to be seek on
- * @param  offset  distance to seek
- * @param  dir     seek direction
- * @return success/failure code
- */
-LT_STATUS lt_ioCStreamSeek(LTIOStreamH stream, lt_int64 offset, LTIOSeekDir dir);
-
-
-/**
- * tell for C stream
- *
- * Tell on a C stream.
- *
- * This function is equivalent to LTIOStreamInf::tell().
- *
- * @param  stream  stream to get offset of
- * @return stream's current offset
- */
-lt_int64 lt_ioCStreamTell(LTIOStreamH stream);
-
-
-/**
- * is end-of-file? for C stream
- *
- * Check for EOF on a C stream.
- *
- * This function is equivalent to LTIOStreamInf::isEOF().
- *
- * @param  stream  stream to query
- * @return true (1), iff the stream is at EOF
- */
-lt_uint8 lt_ioCStreamIsEOF(LTIOStreamH stream);
-
-
-/**
- * is open? for C stream
- *
- * Check for open on a C stream.
- *
- * This function is equivalent to LTIOStreamInf::isOpen().
- *
- * @param  stream  stream to query
- * @return true (1) iff the stream is open
- */
-lt_uint8 lt_ioCStreamIsOpen(LTIOStreamH stream);
-
-
-/**
- * duplicate C stream
- *
- * Duplicate a C stream.
- *
- * This function is equivalent to LTIOStreamInf::duplicate().
- *
- * @param  stream  stream to duplicate
- * @return the new stream (or NULL if cannot duplicate)
- */
-LTIOStreamH lt_ioCStreamDuplicate(LTIOStreamH stream);
-
-
-/**
- * create callback stream
- *
- * Create an LTIOCallbackStream, via C API.  The parameters correspond
- * to those used in LTIOCallbackStream::initialize().
- *
- * @param  open       user's open function
- * @param  close      user's close function
- * @param  read       user's read function
- * @param  write      user's write function
- * @param  seek       user's seek function
- * @param  tell       user's tell function
- * @param  isEOF      user's isEOF function
- * @param  isOpen     user's isOpen function
- * @param  duplicate  user's duplicate function
- * @param  userData   user's stream data
- * @return the created stream
- */
-LTIOStreamH lt_ioCallbackStreamCreate(LTIOCallbackStream_Open open,
-                                      LTIOCallbackStream_Close close,
-                                      LTIOCallbackStream_Read read,
-                                      LTIOCallbackStream_Write write,
-                                      LTIOCallbackStream_Seek seek,
-                                      LTIOCallbackStream_Tell tell,
-                                      LTIOCallbackStream_IsEOF isEOF,
-                                      LTIOCallbackStream_IsOpen isOpen,
-                                      LTIOCallbackStream_Duplicate duplicate,
-                                      void* userData);
-
-/*@}*/
-
-#ifdef LT_CPLUSPLUS
-}
-#endif
-
-#if defined(LT_COMPILER_MS)
-	#pragma warning(pop)
-#endif
-
-#endif
diff --git a/src/DSDK/include/c_api/ltic_api.h b/src/DSDK/include/c_api/ltic_api.h
deleted file mode 100644
index 5cf54c6..0000000
--- a/src/DSDK/include/c_api/ltic_api.h
+++ /dev/null
@@ -1,462 +0,0 @@
-/* $Id: ltic_api.h 5124 2006-10-27 11:40:40Z lubia $ */
-/* //////////////////////////////////////////////////////////////////////////
-//                                                                         //
-// This code is Copyright (c) 2004 LizardTech, Inc, 1008 Western Avenue,   //
-// Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         //
-// prohibited.  Access to and use of this code is permitted only under     //
-// license from LizardTech, Inc.  Portions of the code are protected by    //
-// US and foreign patents and other filings. All Rights Reserved.          //
-//                                                                         //
-////////////////////////////////////////////////////////////////////////// */
-/* PUBLIC - C */
-
-#ifndef LTI_CAPI_H
-#define LTI_CAPI_H
-
-#include "lti_types.h"
-#include "lti_metadataTypes.h"
-#include "lt_ioCStream.h"
-
-#ifdef LT_CPLUSPLUS
-extern "C" {
-#endif
-
-#if defined(LT_COMPILER_MS)
-	#pragma warning(push,4)
-#endif
-
-
-/**      
- * @file  ltic_api.h
- *
- * This file contains a simple C API to the Decode SDK.  It is essentially
- * just a wrapper around the LTIImage class and its member functions.
- */
-
-   
-/**
- * C API status codes
- */
-/*@{*/
-#define LT_STS_CAPI_BASE            ((LT_STATUS)52000)
-#define LT_STS_CAPI_BadParam        ((LT_STATUS)52001)
-#define LT_STS_CAPI_MAX             ((LT_STATUS)52099)
-/*@}*/
-
-
-/**
- * opaque pointer (handle) to an LTIImage
- */
-typedef void* LTICImageH;
-
-
-/**
- * get SDK version (C API)
- *
- * Returns the full version number of the SDK, e.g. "4.0.8.673".
- *
- * This method is part of the C API.  It is equivalent to the
- * LTIUtils::getVersionInfo() function.
- *
- * @param major     address to hold major version number
- * @param minor     address to hold minor version number
- * @param revision  address to hold revision number
- * @param build     address to hold build number
- * @param branch    address to hold string giving the branch name
- * @return status code indicating success or failure
- */
-LT_STATUS ltic_getVersion(lt_uint32* major,
-                          lt_uint32* minor,
-                          lt_uint32* revision,
-                          lt_uint32* build,
-                          const char** branch);
-
-/**
- * open MrSID image via filename (C API)
- *
- * Given the filename of a MrSID image, this function will open the image
- * and return a handle which can be used to access image information and
- * perform decodes.
- *
- * This method is part of the C API.  It is equivalent to constructing
- * a MrSIDImageReader object.
- *
- * @param image     address to hold image handle 
- * @param fileName  name of file to open
- * @return status code indicating success or failure
- */
-LT_STATUS ltic_openMrSIDImageFile(LTICImageH* image,
-                                  const char* fileName);
-
-/**
- * open MrSID image via stream (C API)
- *
- * Given a C stream containing a MrSID image, this function will open the image
- * and return a handle which can be used to access image information and
- * perform decodes.
- *
- * This method is part of the C API.  It is equivalent to constructing
- * a MrSIDImageReader object.
- *
- * @param image     address to hold image handle 
- * @param stream    C stream handle
- * @return status code indicating success or failure
- */
-LT_STATUS ltic_openMrSIDImageStream(LTICImageH* image,
-                                    LTIOStreamH stream);
-
-/**
- * open JPEG 2000 image via filename (C API)
- *
- * Given the filename of a JPEG 2000 image, this function will open the image
- * and return a handle which can be used to access image information and
- * perform decodes.
- *
- * This method is part of the C API.  It is equivalent to constructing
- * a J2KImageReader object.
- *
- * @param image     address to hold image handle 
- * @param fileName  name of file to open
- * @return status code indicating success or failure
- */
-LT_STATUS ltic_openJP2ImageFile(LTICImageH* image,
-                                const char* fileName);
-
-/**
- * open JPEG 2000 image via stream (C API)
- *
- * Given a C stream containing a JPEG 2000 image, this function will open the image
- * and return a handle which can be used to access image information and
- * perform decodes.
- *
- * This method is part of the C API.  It is equivalent to constructing
- * a J2KImageReader object.
- *
- * @param image     address to hold image handle 
- * @param stream    C stream handle
- * @return status code indicating success or failure
- */
-LT_STATUS ltic_openJP2ImageStream(LTICImageH* image,
-                                  LTIOStreamH stream);
-
-/**
- * open NITF image via filename (C API)
- *
- * Given the filename of a NITF image, this function will open the image
- * and return a handle which can be used to access image information and
- * perform decodes.
- *
- * This method is part of the C API.  It is equivalent to constructing
- * a NITFImageReader (and NITFImageManager) object.
- *
- * @param image     address to hold image handle 
- * @param fileName  name of file to open
- * @return status code indicating success or failure
- */
-LT_STATUS ltic_openNITFImageFile(LTICImageH* image,
-                                 const char* fileName);
-
-/**
- * close an image (C API)
- *
- * This function will close the given image.
- *
- * This method is part of the C API.  It is equivalent to calling
- * the LTIImage destructor.
- *
- * @param image     image to be closed
- * @return status code indicating success or failure
- */
-LT_STATUS ltic_closeImage(LTICImageH image);
-
-/**
- * get image width (C API)
- *
- * This function will return the width of the given image.
- *
- * This method is part of the C API.  It is equivalent to calling
- * LTIImage::getWidth().
- *
- * @param   image     image to query
- * @return  width in pixels
- */
-lt_uint32 ltic_getWidth(const LTICImageH image);
-
-/**
- * get image height (C API)
- *
- * This function will return the height of the given image.
- *
- * This method is part of the C API.  It is equivalent to calling
- * LTIImage::getHeight().
- *
- * @param   image     image to query
- * @return  height of image
- */
-lt_uint32 ltic_getHeight(const LTICImageH image);
-
-/**
- * get dimensions of an image at a given magnification (C API)
- *
- * This function returns the projected dimensions of an image at a given
- * magnification level.
- *
- * This method is part of the C API.  It is equivalent to calling
- * LTIImage::getDimsAtMag()
- */
-LT_STATUS ltic_getDimsAtMag(LTICImageH image,
-                            double magnification,
-                            lt_uint32 *width,
-                            lt_uint32 *height);
-
-/**
- * get image colorspace (C API)
- *
- * This function will return the colorspace of the given image.
- *
- * This method is part of the C API.  It is equivalent to calling
- * LTIImage::getColorSpace().
- *
- * @param   image     image to query
- * @return  colorspace of image
- */
-LTIColorSpace ltic_getColorSpace(const LTICImageH image);
-
-/**
- * get number of bands in trhe image (C API)
- *
- * This function will return the numbe rof bands in the given image.
- *
- * This method is part of the C API.  It is equivalent to calling
- * LTIImage::getNumBands().
- *
- * @param   image     image to query
- * @return  number of bands in the image
- */
-lt_uint16 ltic_getNumBands(const LTICImageH image);
-
-/**
- * get image datatype (C API)
- *
- * This function will return the datatype of the pixels of the image.
- *
- * This method is part of the C API.  It is equivalent to calling
- * LTIImage::getDataType().
- *
- * @param   image     image to query
- * @return  datatype of the image
- */
-LTIDataType ltic_getDataType(const LTICImageH image);
-
-/**
- * get image minimum magnifaction (C API)
- *
- * This function will return the minimum magnification of the image.
- *
- * This method is part of the C API.  It is equivalent to calling
- * LTIImage::getMinMagnification().
- *
- * @param   image     image to query
- * @return  minimum magnification of image
- */
-double ltic_getMinMagnification(const LTICImageH image);
-
-/**
- * get image maximum magnifacation (C API)
- *
- * This function will return the maximum magnification of the image.
- *
- * This method is part of the C API.  It is equivalent to calling
- * LTIImage::getMaxMagnification().
- *
- * @param   image     image to query
- * @return  maximum magnification of image
- */
-double ltic_getMaxMagnification(const LTICImageH image);
-
-/**
- * query if MrSID image is locked (C API)
- *
- * This function will return whether or not the given image is
- * locked, i.e. password protected.  The \a image handle must
- * be a MrSID image.
- *
- * This method is part of the C API.  It is equivalent to calling
- * MrSIDImageReader::isLocked().
- *
- * @param   image     MrSID image to query
- * @return  1 if locked, otherwise 0
- */
-lt_uint8 ltic_isMrSIDLocked(const LTICImageH image);
-
-/**
- * set password for decoding MrSID image (C API)
- *
- * This function will set the passward used to decode a locked MrSID
- * image.
- *
- * This method is part of the C API.  It is equivalent to calling
- * MrSIDImageReader::setPassword().
- *
- * @param   image     MrSID image to unlock
- * @param   passwd    password string for image
- * @return  success or failure status code
- */
-LT_STATUS ltic_setMrSIDPassword(LTICImageH image, const lt_utf8* passwd);
-
-/**
- * get geo X position of image (C API)
- *
- * This function will return the upper-left X position of the image.
- *
- * This method is part of the C API.  It is equivalent to calling
- * LTIImage::getGeoCoord().getX().
- *
- * @param   image     image to query
- * @return  upperleft X geo position
- */
-double ltic_getGeoXOrigin(const LTICImageH image);
-
-/**
- * get geo Y position of image (C API)
- *
- * This function will return the upper-left Y position of the image.
- *
- * This method is part of the C API.  It is equivalent to calling
- * LTIImage::getGeoCoord().getY().
- *
- * @param   image     image to query
- * @return  upperleft Y geo position
- */
-double ltic_getGeoYOrigin(const LTICImageH image);
-
-/**
- * get geo X resolution of image (C API)
- *
- * This function will return the X resolution of the image.
- *
- * This method is part of the C API.  It is equivalent to calling
- * LTIImage::getGeoCoord().getXRes().
- *
- * @param   image     image to query
- * @return  X resolution
- */
-double ltic_getGeoXResolution(const LTICImageH image);
-
-/**
- * get geo Y resolution of image (C API)
- *
- * This function will return the Y resolution of the image.
- *
- * This method is part of the C API.  It is equivalent to calling
- * LTIImage::getGeoCoord().getYRes().
- *
- * @param   image     image to query
- * @return  Y resolution
- */
-double ltic_getGeoYResolution(const LTICImageH image);
-
-/**
- * get geo X rotation term of image (C API)
- *
- * This function will return the X rotation term of the image.
- *
- * This method is part of the C API.  It is equivalent to calling
- * LTIImage::getGeoCoord().getXRot().
- *
- * @param   image     image to query
- * @return  X rotation
- */
-double ltic_getGeoXRotation(const LTICImageH image);
-
-/**
- * get geo Y rotation term of image (C API)
- *
- * This function will return the Y rotation term of the image.
- *
- * This method is part of the C API.  It is equivalent to calling
- * LTIImage::getGeoCoord().getYRot().
- *
- * @param   image     image to query
- * @return  Y rotation
- */
-double ltic_getGeoYRotation(const LTICImageH image);
-
-/**
- * decode a scene from the image (C API)
- *
- * This function decodes a scene from the image.  The output
- * is written to the given band buffers in packed form.
- *
- * This method is part of the C API.  It is equivalent to calling
- * LTIImageStage::read().  The \a xUpperLeft, \a yUpperLeft,
- * \a width, \a height, and \a magnification parameters correspond
- * to the LTIScene used in the read() call.
- *
- * @param   image     image to decode
- * @param   xUpperLeft upperleft x position of scene
- * @param   yUpperLeft upperleft y position of scene
- * @param   width      width of scene
- * @param   height     height of scene
- * @param   magnification manification of scene
- * @param   buffers   array of buffers to write to, one per band
- * @return status code indicating success or failure
- */
-LT_STATUS ltic_decode(LTICImageH image,
-                      double xUpperLeft,
-                      double yUpperLeft,
-                      double width,
-                      double height,
-                      double magnification,
-                      void** buffers);
-   
-/**
- * get number of metadata records (C API)
- *
- * This function returns the number of metadata records in the
- * image.  This number defines the range of values used with
- * ltic_metadataRecord().
- *
- * This method is part of the C API.  It is equivalent to calling
- * LTIImage::getMetadata().getIndexCount().
- *
- * @param   image     image to query
- * @return  number of records in image
- */
-lt_uint32 ltic_getNumMetadataRecords(LTICImageH image);
-
-/**
- * get a metadata record from an image (C API)
- *
- * This function returns the data contained in a given metadata
- * record.
- *
- * This method is part of the C API.  It is equivalent to calling
- * LTIImage::getMetadata().getDataByIndex().
- *
- * @param   image     image to query
- * @param   recordNum  index of record to retrieve
- * @param   tag       address to hold name of metadata tag
- * @param   datatype  address to hold datatype of record
- * @param   numDims   address to hold number of dimension in record data
- * @param   dims      address to record's dimesnion arrays
- * @param   data      address to record's data
- * @return status code indicating success or failure
- */
-LT_STATUS ltic_getMetadataRecord(LTICImageH image,
-                                 lt_uint32 recordNum,
-                                 const char** tag,
-                                 LTIMetadataDataType* datatype,
-                                 lt_uint32* numDims,
-                                 const lt_uint32** dims,
-                                 const void** data);
-
-#ifdef LT_CPLUSPLUS
-}
-#endif
-
-#if defined(LT_COMPILER_MS)
-	#pragma warning(pop)
-#endif
-
-#endif
diff --git a/src/DSDK/include/filters/lti_bandSelectFilter.h b/src/DSDK/include/filters/lti_bandSelectFilter.h
deleted file mode 100644
index 45f8302..0000000
--- a/src/DSDK/include/filters/lti_bandSelectFilter.h
+++ /dev/null
@@ -1,208 +0,0 @@
-/* $Id: lti_bandSelectFilter.h 5124 2006-10-27 11:40:40Z lubia $ */
-/* //////////////////////////////////////////////////////////////////////////
-//                                                                         //
-// This code is Copyright (c) 2005 LizardTech, Inc, 1008 Western Avenue,   //
-// Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         //
-// prohibited.  Access to and use of this code is permitted only under     //
-// license from LizardTech, Inc.  Portions of the code are protected by    //
-// US and foreign patents and other filings. All Rights Reserved.          //
-//                                                                         //
-////////////////////////////////////////////////////////////////////////// */
-/* PUBLIC */
-
-#ifndef LTI_BANDSELECTFILTER_H
-#define LTI_BANDSELECTFILTER_H
-
-// lt_lib_mrsid_core
-#include "lti_imageFilter.h"
-
-
-LT_BEGIN_NAMESPACE(LizardTech)
-
-#if defined(LT_COMPILER_MS)
-   #pragma warning(push,4)
-#endif
-
-
-/**
- * combine N different bands from M images into one N-banded image
- *
- * This class creates a single N-banded image which is a composition of N
- * different bands from a set of images.
- *
- * For example, an RGB image can be created from three (nominally grayscale)
- * images which represent the red, green, and blue bands of a dataset.
- * More generally, one can do things like construct a multispectral image 
- * from 1st and 2nd bands of one image and the 3rd and 4th bands of a second
- * image.
- */
-class LTIBandSelectFilter : public LTIImageFilter
-{
-public:
-   /**
-    * general constructor
-    *
-    * Creates an image stage which composes the specified bands of the input images.
-    *
-    * The \a srcImages and \a srcImageBands arrays each contain \a numOutputBands
-    * elements and serve to describe the bands of the desired output image.  That is,
-    * band \a i of the output image will contain band \a srcImageBands[i] from
-    * image \a srcImages[i].
-    *
-    * An element of \a srcImages may be NULL.  In this case, however, the corresponding
-    * \a srcImageBands element must be set to (int)-'Z', indicating a band of
-    * all zeros is to be used.
-    * 
-    * At least one of the \a srcImages elements must be non-NULL.
-    *
-    * Note: Data from \a srcImages and \a srcImageBands arrays are copied locally
-    * after initialize() is called.
-    *
-    * @param  srcImages       input images, for each output band
-    * @param  srcImageBands   band numbers, for each output band
-    * @param  numOutputBands  number of output bands
-    * @param  colorSpace      the colorspace of the output image
-    * @param  takeOwnership   set to true to have the filter delete the \a sourceImages
-    */
-   LTIBandSelectFilter(LTIImageStage** srcImages,
-                       const int* srcImageBands,
-                       int numOutputBands,
-                       LTIColorSpace colorSpace,
-                       bool takeOwnership);
-
-   /**
-    * single image constructor
-    *
-    * Same as the above general constructor, except that (1) a single source
-    * image is used, instead of an array of possibly different images, and (2)
-    * the output image has the same number of bands and colorspace as the input
-    * image.
-    *
-    * (This provides compatability with the old LTISampleMapTransformer class.)
-    *
-    * @param  srcImage        input image
-    * @param  srcImageBands   band numbers, for each output band
-    * @param  numOutputBands       band numbers, for each output band
-    * @param  colorSpace      the colorspace of the output image
-    * @param  takeOwnership   set to true to have the filter delete the \a sourceImages
-    */
-   LTIBandSelectFilter(LTIImageStage* srcImage,
-                       const lt_uint16* srcImageBands,
-                       lt_uint16 numOutputBands,
-                       LTIColorSpace colorSpace,
-                       bool takeOwnership);
-
-   /**
-    * LTIColorCompositeFilter constructor
-    *
-    * Same as the above general constructor, except that (1) each source image is 
-    * either a one-banded image or NULL, and (2) the \a srcImageBands array is
-    * constructed as the form [0,1,2...].
-    *
-    * (This provides compatability with the old LTIColorCompositeFilter class.)
-    *
-    * @param  srcImages    input images
-    * @param  numOutputBands       band numbers, for each output band
-    * @param  colorSpace      the colorspace of the output image
-    * @param  takeOwnership   set to true to have the filter delete the \a sourceImages
-    */
-   LTIBandSelectFilter(LTIImageStage** srcImages,
-                       lt_uint16 numOutputBands,
-                       LTIColorSpace colorSpace,
-                       bool takeOwnership);
-
-   virtual ~LTIBandSelectFilter();
-
-   virtual LT_STATUS initialize();
-
-   virtual lt_uint32 getStripHeight() const;
-   virtual lt_int64 getPhysicalFileSize() const;
-   virtual LT_STATUS setStripHeight(lt_uint32 stripHeight);
-
-   /**
-    * parse band string
-    *
-    * Given a string such as "1,3-4,2", this function will return an array
-    * like [1,3,4,2].
-    *
-    * The formal grammar of the input string is (ignoring whitespace):
-    *   string := token? (comma token)*
-    *   token  := letter | number | number hyphen number
-    *   letter := 'Z'
-    *   number := digit+
-    *   digit  := '0' | '1' | ... '9'
-    *   comma  := ','
-    *   hyphen := '-'
-    * Note that the range may be negative, i.e. "3-1" will be returned
-    * as [3,2,1].  A band value of Z indicates a band of all zeros should
-    * be used.
-    *
-    * The caller takes ownership of the returned array.
-    *
-    * Note that the caller may need to adjust the data in the returned array
-    * to be zero-based.
-    *
-    * @param inputString  the string to parse
-    * @param bandList     returned array of band numbers
-    * @param numBands     length of bandList arrat
-    * @return status code
-    */
-   static LT_STATUS parseString(const char* inputString,
-                                lt_int32*& bandList,
-                                lt_uint16& numBands);
-
-protected:
-   LT_STATUS decodeBegin(const LTIScene& scene);
-   LT_STATUS decodeEnd();
-   LT_STATUS decodeStrip(LTISceneBuffer& stripBuffer, const LTIScene& stripScene);
-
-protected:
-   LT_STATUS initArrays();
-   LT_STATUS initSourceArray();
-   LT_STATUS initOutputArray();
-   int getImageNum(const LTIImageStage* ptr) const;
-   
-   enum SourcePixel
-   {
-      NodataPixel,
-      BackgroundPixel,
-      DRMinPixel,
-      DRMaxPixel
-   };
-   void remapPixel(LTIPixel& pixel, SourcePixel name) const;
-
-   LTIColorSpace m_colorSpace;         // from ctor
-   int m_numOutputBands;               // from ctor
-   LTIImageStage** m_srcImages;        // from ctor, [0..m_numOutputBands-1]
-   const int* m_srcImageBands;         // from ctor, [0..m_numOutputBands-1]
-   const lt_uint16* m_srcImageBands16;
-
-   class OutputBandDesc;
-   OutputBandDesc* m_outputBandDescs;  // [0..m_numOutputBands-1]
-
-   class InputImageDesc;
-   InputImageDesc* m_inputImageDesc;   // [0..m_numInputImages-1]
-   int m_numInputImages;
-   
-   LTIReusableBSQBuffer* m_zeroBuffer; // strip buffer holding just 0's
-   LTIReusableBSQBuffer* m_nullBuffer; // just strip buffer, for unused buffers
-
-   LTIImageStage** m_localSrcImages;
-   int* m_localSrcImageBands;
-
-private:
-   const int m_ctor;
-
-   // nope
-   LTIBandSelectFilter(const LTIBandSelectFilter&);
-   LTIBandSelectFilter& operator=(const LTIBandSelectFilter&);
-};
-
-
-LT_END_NAMESPACE(LizardTech)
-
-#if defined(LT_COMPILER_MS)
-	#pragma warning(pop)
-#endif
-
-#endif // LTI_BANDSELECTFILTER_H
diff --git a/src/DSDK/include/filters/lti_colorTransformer.h b/src/DSDK/include/filters/lti_colorTransformer.h
deleted file mode 100644
index f881014..0000000
--- a/src/DSDK/include/filters/lti_colorTransformer.h
+++ /dev/null
@@ -1,101 +0,0 @@
-/* $Id: lti_colorTransformer.h 5124 2006-10-27 11:40:40Z lubia $ */
-/* //////////////////////////////////////////////////////////////////////////
-//                                                                         //
-// This code is Copyright (c) 2004 LizardTech, Inc, 1008 Western Avenue,   //
-// Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         //
-// prohibited.  Access to and use of this code is permitted only under     //
-// license from LizardTech, Inc.  Portions of the code are protected by    //
-// US and foreign patents and other filings. All Rights Reserved.          //
-//                                                                         //
-////////////////////////////////////////////////////////////////////////// */
-/* PUBLIC */
-
-#ifndef LTI_COLORTRANSFORMER_H
-#define LTI_COLORTRANSFORMER_H
-
-// lt_lib_mrsid_core
-#include "lti_imageFilter.h"
-
-
-LT_BEGIN_NAMESPACE(LizardTech)
-
-#if defined(LT_COMPILER_MS)
-   #pragma warning(push,4)
-#endif
-
-class LTIReusableBSQBuffer;
-
-/**
- * change the colorspace of the image
- *
- * This class changes the colorspace of the image.
- *
- * The supported color transforms are:
- * \li from RGB to CMYK, GRAYSCALE, or YIQ
- * \li from GRAYSCALE to RGB
- * \li from CMYK to RGB, RGBK, or YIQK
- * \li from YIQ to RGB
- * \li from YIQK to CMYK
- */
-class LTIColorTransformer : public LTIImageFilter
-{
-public:
-   /**
-    * constructor
-    *
-    * Creates an image stage with the given colorspace.  The sample values
-    * will undergo the requisite color transform function to map from the
-    * input colorspace to the output colorspace.
-    *
-    * @note The value of \a dstNumBands image is set according to the
-    * \a dstColorSpace, as is in the constructor for the LTIPixel class.
-    *
-    * @param  sourceImage    the base image
-    * @param  dstColorSpace  the colorspace of the new image
-    * @param  dstNumBands    the number of bands in the new image
-    * @param  takeOwnership  set to true to have the filter delete the \a sourceImage
-    */
-   LTIColorTransformer(LTIImageStage* sourceImage,
-                       LTIColorSpace dstColorSpace,
-                       lt_uint16 dstNumBands,
-                       bool takeOwnership);
-   virtual ~LTIColorTransformer();
-   virtual LT_STATUS initialize();
-
-protected:
-   LT_STATUS decodeBegin(const LTIScene& scene);
-   LT_STATUS decodeEnd();
-   LT_STATUS decodeStrip(LTISceneBuffer& stripBuffer, const LTIScene& stripScene);
-
-private:
-   bool isSupportedTransform(void) const;
-   LT_STATUS transformBuffer(LTISceneBuffer &dstData,
-                             LTISceneBuffer &srcData,
-                             lt_uint32 width,
-                             lt_uint32 height) const;
-
-   LT_STATUS transformPixel(LTIPixel &newPixel,
-                            const LTIPixel &oldPixel) const;
-
-
-   const LTIColorSpace m_dstColorSpace;
-   const lt_uint16 m_dstNumBands;
-   LTIColorSpace m_srcColorSpace;
-   lt_uint16 m_srcNumBands;
-   bool m_isIdentity;
-
-   LTIReusableBSQBuffer* m_buffer;
-
-   // nope
-   LTIColorTransformer(const LTIColorTransformer&);
-   LTIColorTransformer& operator=(const LTIColorTransformer&);
-};
-
-
-LT_END_NAMESPACE(LizardTech)
-
-#if defined(LT_COMPILER_MS)
-	#pragma warning(pop)
-#endif
-
-#endif // LTI_COLORTRANSFORMER_H
diff --git a/src/DSDK/include/filters/lti_cropFilter.h b/src/DSDK/include/filters/lti_cropFilter.h
deleted file mode 100644
index cca1a97..0000000
--- a/src/DSDK/include/filters/lti_cropFilter.h
+++ /dev/null
@@ -1,100 +0,0 @@
-/* $Id: lti_cropFilter.h 5124 2006-10-27 11:40:40Z lubia $ */
-/* //////////////////////////////////////////////////////////////////////////
-//                                                                         //
-// This code is Copyright (c) 2004 LizardTech, Inc, 1008 Western Avenue,   //
-// Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         //
-// prohibited.  Access to and use of this code is permitted only under     //
-// license from LizardTech, Inc.  Portions of the code are protected by    //
-// US and foreign patents and other filings. All Rights Reserved.          //
-//                                                                         //
-////////////////////////////////////////////////////////////////////////// */
-/* PUBLIC */
-
-#ifndef LTI_CROPFILTER_H
-#define LTI_CROPFILTER_H
-
-// lt_lib_mrsid_core
-#include "lti_imageFilter.h"
-
-
-LT_BEGIN_NAMESPACE(LizardTech)
-
-#if defined(LT_COMPILER_MS)
-   #pragma warning(push,4)
-#endif
-
-
-/**
- * crops the image stage to a smaller width and height
- *
- * This class crops the image stage to a smaller width and height.
- */
-class LTICropFilter : public LTIImageFilter
-{
-public:
-   /**
-    * constructor
-    *
-    * Creates an image stage which corresponds to a cropped subsection of the
-    * input image, according to the given offset, width, and height.
-    *
-    * @param  sourceImage    the base image
-    * @param  xOffset        x-position of the origin of the new image
-    *                        (specified relative to the input image)
-    * @param  yOffset        y-position of the origin of the new image
-    *                        (specified relative to the input image)
-    * @param  newWidth       width of the new image
-    * @param  newHeight      height of the new image
-    * @param  takeOwnership  set to true to have the filter delete the \a sourceImage
-    */
-   LTICropFilter(LTIImageStage* sourceImage,
-                 lt_int32 xOffset,
-                 lt_int32 yOffset,
-                 lt_int32 newWidth,
-                 lt_int32 newHeight,
-                 bool takeOwnership);
-   virtual ~LTICropFilter();
-   virtual LT_STATUS initialize();
-
-   LT_STATUS projectPointAtMag(double upperLeft,
-                               double mag,
-                               double& newUpperLeft) const;
-   
-   LT_STATUS projectDimAtMag(double dim,
-                             double mag,
-                             double& newDim) const;
-
-   LT_STATUS getDimsAtMag(double mag,
-                          lt_uint32& width,
-                          lt_uint32& height) const;
-
-   bool getReaderScene(const LTIScene &decodeScene, LTIScene &readerScene) const;
-   
-protected:
-   LT_STATUS decodeBegin(const LTIScene& scene);
-   LT_STATUS decodeEnd();
-   LT_STATUS decodeStrip(LTISceneBuffer& stripBuffer, const LTIScene& stripScene);
-
-   LT_STATUS getChildScene(const LTIScene &decodeScene, LTIScene &childScene) const;
-
-private:
-   typedef LTIImageFilter Super;
-
-   const lt_int32 m_xOffset;
-   const lt_int32 m_yOffset;
-   const lt_int32 m_newWidth;
-   const lt_int32 m_newHeight;
-
-   // nope
-   LTICropFilter(const LTICropFilter&);
-   LTICropFilter& operator=(const LTICropFilter&);
-};
-
-
-LT_END_NAMESPACE(LizardTech)
-
-#if defined(LT_COMPILER_MS)
-	#pragma warning(pop)
-#endif
-
-#endif // LTI_CROPFILTER_H
diff --git a/src/DSDK/include/filters/lti_datatypeTransformer.h b/src/DSDK/include/filters/lti_datatypeTransformer.h
deleted file mode 100644
index a2dfdcb..0000000
--- a/src/DSDK/include/filters/lti_datatypeTransformer.h
+++ /dev/null
@@ -1,84 +0,0 @@
-/* $Id: lti_datatypeTransformer.h 5124 2006-10-27 11:40:40Z lubia $ */
-/* //////////////////////////////////////////////////////////////////////////
-//                                                                         //
-// This code is Copyright (c) 2004 LizardTech, Inc, 1008 Western Avenue,   //
-// Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         //
-// prohibited.  Access to and use of this code is permitted only under     //
-// license from LizardTech, Inc.  Portions of the code are protected by    //
-// US and foreign patents and other filings. All Rights Reserved.          //
-//                                                                         //
-////////////////////////////////////////////////////////////////////////// */
-/* PUBLIC */
-
-#ifndef LTI_DATATYPETRANSFORMER_H
-#define LTI_DATATYPETRANSFORMER_H
-
-// lt_lib_mrsid_imageFilters
-#include "lti_dynamicRangeFilter.h"
-
-
-LT_BEGIN_NAMESPACE(LizardTech)
-
-#if defined(LT_COMPILER_MS)
-   #pragma warning(push,4)
-#endif
-
-// we support only float, uint8, uint16
-
-class LTIReusableBSQBuffer;
-
-#if defined LT_COMPILER_GCC
-#warning "** LTIDataTypeTransformer is deprecated -- use LTIDynamicRangeFilter"
-#elif defined LT_COMPILER_MS
-#pragma message( "*******************************************" )
-#pragma message( "*  LTIDataTypeTransformer is deprecated   *" )
-#pragma message( "*       use LTIDynamicRangeFilter         *" )
-#pragma message( "*******************************************" )
-#endif
-/**
- * changes the datatype of the samples of the image
- *
- * This class changes the datatype of the samples of the image.
- *
- * The values of the samples are scaled as required to meet the range of the
- * new datatype.
- */
-class LTIDataTypeTransformer : public LTIDynamicRangeFilter
-{
-public:
-   /**
-    * constructor
-    *
-    * Creates an image stage with the given datatype.  The sample values are
-    * scaled as required to meet the range of the new datatype; that is, a
-    * value of 65535 for a 16-bit datatype will map to a value of 255 for an
-    * 8-bit datatype, and a value of 127 for an 8-bit datatype will map to
-    * a value of 32767 for a 16-bit datatype.
-    *
-    * @note Only uint8, uint16, and float32 datatypes are supported.
-    *
-    * @param  sourceImage    the base image
-    * @param  dstDataType    the datatype of the new image stage
-    * @param  takeOwnership  set to true to have the filter delete the \a sourceImage
-    */
-   LTIDataTypeTransformer(LTIImageStage* sourceImage,
-                          LTIDataType dstDataType,
-                          bool takeOwnership) :
-      LTIDynamicRangeFilter(sourceImage, dstDataType, takeOwnership)
-   {
-   }
-
-private:
-   // nope
-   LTIDataTypeTransformer(const LTIDataTypeTransformer&);
-   LTIDataTypeTransformer& operator=(const LTIDataTypeTransformer&);
-};
-
-
-LT_END_NAMESPACE(LizardTech)
-
-#if defined(LT_COMPILER_MS)
-	#pragma warning(pop)
-#endif
-
-#endif // LTI_DATATYPETRANSFORMER_H
diff --git a/src/DSDK/include/filters/lti_dynamicRangeFilter.h b/src/DSDK/include/filters/lti_dynamicRangeFilter.h
deleted file mode 100644
index 49bdcbb..0000000
--- a/src/DSDK/include/filters/lti_dynamicRangeFilter.h
+++ /dev/null
@@ -1,148 +0,0 @@
-/* $Id: lti_dynamicRangeFilter.h 5124 2006-10-27 11:40:40Z lubia $ */
-/* //////////////////////////////////////////////////////////////////////////
-//                                                                         //
-// This code is Copyright (c) 2004 LizardTech, Inc, 1008 Western Avenue,   //
-// Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         //
-// prohibited.  Access to and use of this code is permitted only under     //
-// license from LizardTech, Inc.  Portions of the code are protected by    //
-// US and foreign patents and other filings. All Rights Reserved.          //
-//                                                                         //
-////////////////////////////////////////////////////////////////////////// */
-/* PUBLIC */
-
-#ifndef LTI_DYNAMIC_RANGE_FILTER_H
-#define LTI_DYNAMIC_RANGE_FILTER_H
-
-// lt_lib_mrsid_core
-#include "lti_imageFilter.h"
-
-
-LT_BEGIN_NAMESPACE(LizardTech)
-
-#if defined(LT_COMPILER_MS)
-   #pragma warning(push,4)
-#endif
-
-class LTIReusableBSQBuffer;
-
-/**
- * change dynamic range or datatype of the samples of the image
- *
- * Adjusts the sample values to fit the given dynamic range and datatype.
- */
-
-class LTIDynamicRangeFilter : public LTIImageFilter
-{
-public:
-
-   /**
-    * constructor
-    *
-    * Creates an image stage with the sample data adjusted according to the
-    * given dynamic range values.
-    *
-    * @param  sourceImage    the base image
-    * @param  srcDRMin       the min value of the sourceImage (will be mapped to the min value of dstDataType)
-    * @param  srcDRMax       the max value of the sourceImage (will be mapped to the max value of dstDataType)
-    * @param  dstDataType    the datatype of the new image stage
-    * @param  takeOwnership  set to true to have the filter delete the \a sourceImage
-    */
-   LTIDynamicRangeFilter(LTIImageStage* sourceImage,
-                         double srcDRMin,
-                         double srcDRMax,
-                         LTIDataType dstDataType,
-                         bool takeOwnership);
-
-   /**
-    * constructor (for compatibly with old LTIDynamicRangeFilter)
-    *
-    * Creates an image stage with the sample data adjusted according to the
-    * given dynamic range values.
-    *
-    * @param  sourceImage    the base image
-    * @param  window         the number of units or "width" of the desired range
-    * @param  level          the midpoint of the window; this effectively defines
-    *                        the min and max sample values
-    * @param  takeOwnership  set to true to have the filter delete the \a sourceImage
-    */
-   LTIDynamicRangeFilter(LTIImageStage* sourceImage,
-                         double window,
-                         double level,
-                         bool takeOwnership);
-
-   /**
-   * constructor  (for compatibly with old LTIDynamicRangeFilter)
-   *
-   * Creates an image stage with the sample data adjusted according to the
-   * dynamic range values inherit in the image, e.g. in the metadata.
-   *
-   * @param  sourceImage    the base image
-   * @param  takeOwnership  set to true to have the filter delete the \a sourceImage
-   */
-   LTIDynamicRangeFilter(LTIImageStage* sourceImage,
-                         bool takeOwnership);
-
-   /**
-    * constructor  (for compatibly with LTIDataTypeTransformer)
-    *
-    * Creates an image stage with the given datatype.  The sample values are
-    * scaled as required to meet the range of the new datatype; that is, a
-    * value of 65535 for a 16-bit datatype will map to a value of 255 for an
-    * 8-bit datatype, and a value of 127 for an 8-bit datatype will map to
-    * a value of 32767 for a 16-bit datatype.
-    *
-    * @note Only uint8, uint16, and float32 datatypes are supported.
-    *
-    * @param  sourceImage    the base image
-    * @param  dstDataType    the datatype of the new image stage
-    * @param  takeOwnership  set to true to have the filter delete the \a sourceImage
-    */
-   LTIDynamicRangeFilter(LTIImageStage* sourceImage,
-                         LTIDataType dstDataType,
-                         bool takeOwnership);
-
-   virtual ~LTIDynamicRangeFilter(void);
-   virtual LT_STATUS initialize(void);
-
-   LT_STATUS setSrcMinMax(double srcMin, double srcMax);
-   LT_STATUS setDstMinMax(double dstMin, double dstMax);
-
-   static double getValue(const LTIPixel &pixel);
-   
-protected:
-   LT_STATUS decodeBegin(const LTIScene& scene);
-   LT_STATUS decodeEnd();
-   LT_STATUS decodeStrip(LTISceneBuffer& stripBuffer,
-                         const LTIScene& stripScene);
-
-private:
-   LT_STATUS transformBuffer(LTISceneBuffer &dstData,
-                             LTISceneBuffer &srcData,
-                             lt_uint32 numCols,
-                             lt_uint32 numRows) const;
-   LT_STATUS transformPixel(LTIPixel &newPixel,
-                            const LTIPixel &oldPixel) const;
-
-   const LTIDataType m_dstDataType;
-   const LTIDataType m_srcDataType;
-   
-   double m_srcMin;
-   double m_srcMax;
-   double m_dstMin;
-   double m_dstMax;
-
-   LTIReusableBSQBuffer* m_buffer;
-
-   // nope
-   LTIDynamicRangeFilter(const LTIDynamicRangeFilter &);
-   LTIDynamicRangeFilter &operator=(const LTIDynamicRangeFilter &);
-};
-
-
-LT_END_NAMESPACE(LizardTech)
-
-#if defined(LT_COMPILER_MS)
-	#pragma warning(pop)
-#endif
-
-#endif // LTI_DYNAMIC_RANGE_FILTER_H
diff --git a/src/DSDK/include/filters/lti_embeddedImage.h b/src/DSDK/include/filters/lti_embeddedImage.h
deleted file mode 100644
index 74e96e8..0000000
--- a/src/DSDK/include/filters/lti_embeddedImage.h
+++ /dev/null
@@ -1,148 +0,0 @@
-/* $Id: lti_embeddedImage.h 5124 2006-10-27 11:40:40Z lubia $ */
-/* //////////////////////////////////////////////////////////////////////////
-//                                                                         //
-// This code is Copyright (c) 2004 LizardTech, Inc, 1008 Western Avenue,   //
-// Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         //
-// prohibited.  Access to and use of this code is permitted only under     //
-// license from LizardTech, Inc.  Portions of the code are protected by    //
-// US and foreign patents and other filings. All Rights Reserved.          //
-//                                                                         //
-////////////////////////////////////////////////////////////////////////// */
-/* PUBLIC */
-
-#ifndef LTI_EMBEDDEDIMAGE_H
-#define LTI_EMBEDDEDIMAGE_H
-
-// lt_lib_mrsid_core
-#include "lti_imageFilter.h"
-#include "lti_scene.h"
-
-
-LT_BEGIN_NAMESPACE(LizardTech)
-
-#if defined(LT_COMPILER_MS)
-   #pragma warning(push,4)
-#endif
-
-class LTIReusableBSQBuffer;
-
-/**
- * create a larger frame for the image
- *
- * Creates a new image stage of the given size, containing the input image
- * stage within it.
- *
- * This class is used to make an image stage "larger", e.g. to place an image
- * on a larger "canvas" for more flexible decoding.  This class is used
- * by the LTIMosaicFilter class to simplify certain computations by making
- * all the input images map to the same underlying grid shape and size.
- *
- * The embedding process honors the background and nodata pixel settings.
- *
- * The LTIGeoCoord information for the image stage is updated appropriately.
- */
-class LTIEmbeddedImage : public LTIImageFilter
-{
-public:
-   /**
-    * constructor
-    *
-    * Creates an image stage whose input image is placed within a much larger
-    * empty canvas.
-    *
-    * @param  sourceImage      the base image
-    * @param  newWidth         the width of the new image stage
-    * @param  newHeight        the height of the new image stage
-    * @param  xOffset          pixel x-position of the input image in the new image
-    * @param  yOffset          pixel y-position of the input image in the new image
-    * @param  backgroundPixel  background pixel color to use for the new image
-    *                          (may be NULL, in which case the input image's
-    *                          background is used)
-    * @param  nodataPixel      nodata pixel color to use for the new image
-    *                          (may be NULL, in which case the input image's
-    *                          nodata is used)
-    * @param takeOwnership    set to true to have the filter delete the \a sourceImage
-    */
-   LTIEmbeddedImage(LTIImageStage* sourceImage,
-                    lt_int32 newWidth,
-                    lt_int32 newHeight,
-                    double xOffset,
-                    double yOffset,
-                    const LTIPixel* backgroundPixel,
-                    const LTIPixel* nodataPixel,
-                    bool takeOwnership);
-
-   virtual ~LTIEmbeddedImage();
-   virtual LT_STATUS initialize();
-
-   virtual lt_int64 getEncodingCost(const LTIScene& scene) const;
-
-   LT_STATUS setFillingBackground(bool fill);
-   bool getFillingBackground(void) const;
-   
-   LT_STATUS setUsingFuzzyNoData(bool fuzzy);
-   bool getUsingFuzzyNoData(void) const;
-
-   LT_STATUS projectPointAtMag(double upperLeft,
-                               double mag,
-                               double& newUpperLeft) const;
-   
-   LT_STATUS projectDimAtMag(double dim,
-                             double mag,
-                             double& newDim) const;
-
-   LT_STATUS getDimsAtMag(double mag,
-                          lt_uint32& width,
-                          lt_uint32& height) const;
-
-
-   bool getReaderScene(const LTIScene &decodeScene, LTIScene &readerScene) const;
-
-   double getChildXPosAtMag(double mag) const;
-   double getChildYPosAtMag(double mag) const;
-   bool getChildScene(const LTIScene &parentScene, LTIScene &childScene) const;
-
-   LT_STATUS setWorkBuffer(LTIReusableBSQBuffer *buffer);
-protected:
-   virtual LT_STATUS decodeBegin(const LTIScene& scene);
-   virtual LT_STATUS decodeStrip(LTISceneBuffer& stripBuffer,
-                                 const LTIScene& stripScene);
-   virtual LT_STATUS decodeEnd();
-
-
-private:
-   typedef LTIImageFilter Super;
-
-   LTIGeoCoord* m_fullGeoCoord;
-   lt_int32 m_fullWidth;
-   lt_int32 m_fullHeight;
-   double m_childXPos_P;
-   double m_childYPos_P;
-   
-   LTIScene m_parentScene;
-   LTIScene m_childScene;
-   bool m_haveAnything;
-   lt_int32 m_firstStrip;
-   lt_int32 m_lastStrip;
-
-   LTIPixel* m_userBackgroundPixel;
-   LTIPixel* m_userNodataPixel;
-
-   LTIReusableBSQBuffer* m_workBuffer;
-   bool m_ownWorkBuffer;
-   bool m_fillingBackground;
-   bool m_usingFuzzyNoData;
-
-   // nope
-   LTIEmbeddedImage(const LTIEmbeddedImage&);
-   LTIEmbeddedImage& operator=(const LTIEmbeddedImage&);
-};
-
-
-LT_END_NAMESPACE(LizardTech)
-
-#if defined(LT_COMPILER_MS)
-	#pragma warning(pop)
-#endif
-
-#endif // LTI_EMBEDDEDIMAGE_H
diff --git a/src/DSDK/include/filters/lti_filtersStatus.h b/src/DSDK/include/filters/lti_filtersStatus.h
deleted file mode 100644
index 9669ccd..0000000
--- a/src/DSDK/include/filters/lti_filtersStatus.h
+++ /dev/null
@@ -1,99 +0,0 @@
-/* $Id: lti_filtersStatus.h 5124 2006-10-27 11:40:40Z lubia $ */
-/* //////////////////////////////////////////////////////////////////////////
-//                                                                         //
-// This code is Copyright (c) 2004 LizardTech, Inc, 1008 Western Avenue,   //
-// Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         //
-// prohibited.  Access to and use of this code is permitted only under     //
-// license from LizardTech, Inc.  Portions of the code are protected by    //
-// US and foreign patents and other filings. All Rights Reserved.          //
-//                                                                         //
-////////////////////////////////////////////////////////////////////////// */
-/* PUBLIC */
-
-#ifndef LTI_FILTERSSTATUS_H
-#define LTI_FILTERSSTATUS_H
-
-#include "lt_base.h"
-
-#define LTI_STS_Filters_Base                          50200
-LT_STATUSSTRING_ADD(LTI_STS_Filters_Base, "lt_lib_mrsid_imageFilters base")
-
-#define LTI_STS_Filters_UnsupDataType                 50201
-LT_STATUSSTRING_ADD(LTI_STS_Filters_UnsupDataType, "unsupported datatype")
-
-#define LTI_STS_Filters_UnsupColorTransform           50202
-LT_STATUSSTRING_ADD(LTI_STS_Filters_UnsupColorTransform, "unsupported colorspace transform")
-
-#define LTI_STS_Filters_InvalidArgument               50203
-LT_STATUSSTRING_ADD(LTI_STS_Filters_InvalidArgument, "invalid argument")
-
-#define LTI_STS_Filters_UnsupDataTypeTransform        50204
-LT_STATUSSTRING_ADD(LTI_STS_Filters_UnsupDataTypeTransform, "unsupported datatype transform")
-
-#define LTI_STS_Filters_MosaicIncompatPixelProps      50205
-LT_STATUSSTRING_ADD(LTI_STS_Filters_MosaicIncompatPixelProps, "incompatible pixel properties - bit-depth, colorspace, etc")
-
-#define LTI_STS_Filters_MosaicIncompatXRes            50206
-LT_STATUSSTRING_ADD(LTI_STS_Filters_MosaicIncompatXRes, "incompatible X resolutions")
-
-#define LTI_STS_Filters_MosaicIncompatYRes            50207
-LT_STATUSSTRING_ADD(LTI_STS_Filters_MosaicIncompatYRes, "incompatible Y resolutions")
-
-#define LTI_STS_Filters_WatermarkTooBig               50208
-LT_STATUSSTRING_ADD(LTI_STS_Filters_WatermarkTooBig, "watermark too big")
-
-#define LTI_STS_Filters_InvalidSampleMap              50209
-LT_STATUSSTRING_ADD(LTI_STS_Filters_InvalidSampleMap, "invalid sample map")
-
-#define LTI_STS_Filters_InvalidEmbedding              50210
-LT_STATUSSTRING_ADD(LTI_STS_Filters_InvalidEmbedding, "invalid embedding")
-
-#define LTI_STS_Filters_InvalidComposition            50211
-LT_STATUSSTRING_ADD(LTI_STS_Filters_InvalidComposition, "invalid composition inputs")
-
-#define LTI_STS_Filters_MosaicIncompatXResMulti       50212
-LT_STATUSSTRING_ADD(LTI_STS_Filters_MosaicIncompatXResMulti, "incompatible X resolutions - not scalable")
-
-#define LTI_STS_Filters_MosaicIncompatYResMulti       50213
-LT_STATUSSTRING_ADD(LTI_STS_Filters_MosaicIncompatYResMulti, "incompatible Y resolutions - not scalable")
-
-#define LTI_STS_Filters_MosaicIncompatXYResMulti      50214
-LT_STATUSSTRING_ADD(LTI_STS_Filters_MosaicIncompatXYResMulti, "incompatible X/Y resolutions - not scalable")
-
-#define LTI_STS_Filters_UnsupColorSpace               50215
-LT_STATUSSTRING_ADD(LTI_STS_Filters_UnsupColorSpace, "unsupported colorspace")
-
-#define LTI_STS_Filters_AllocFailed                   50216
-LT_STATUSSTRING_ADD(LTI_STS_Filters_AllocFailed, "memory allocation failed")
-
-#define LTI_STS_Filters_BandAidStringFormat           50230
-LT_STATUSSTRING_ADD(LTI_STS_Filters_BandAidStringFormat, "bad format or syntax error of band string")
-
-#define LTI_STS_Filters_BandAidBandNum                50231
-LT_STATUSSTRING_ADD(LTI_STS_Filters_BandAidBandNum, "illegal band number")
-
-#define LTI_STS_Filters_InvalidScene                  50232
-LT_STATUSSTRING_ADD(LTI_STS_Filters_InvalidScene, "invalid or empty scene specified")
-
-#define LTI_STS_Filters_FileCacheZeroFill             50233
-LT_STATUSSTRING_ADD(LTI_STS_Filters_FileCacheZeroFill, "could not zero fill cache file (disc space)")
-
-#define LTI_STS_Filters_FileCacheWriteError           50234
-LT_STATUSSTRING_ADD(LTI_STS_Filters_FileCacheWriteError, "cache file write error")
-
-#define LTI_STS_Filters_FileCacheReadError            50235
-LT_STATUSSTRING_ADD(LTI_STS_Filters_FileCacheReadError, "cache file read error")
-
-#define LTI_STS_Filters_MaskPixelMismatch             50236
-LT_STATUSSTRING_ADD(LTI_STS_Filters_MaskPixelMismatch, "mask pixel mismatch")
-
-#define LTI_STS_Filters_UnsupHistogramVersion         50237
-LT_STATUSSTRING_ADD(LTI_STS_Filters_UnsupHistogramVersion, "unsupported histogram version")
-
-#define LTI_STS_Filters_PixelCacheInterrupt				50238
-LT_STATUSSTRING_ADD(LTI_STS_Filters_PixelCacheInterrupt, "decode operation interrupted")
-
-#define LTI_STS_Filters_Max                           50299
-LT_STATUSSTRING_ADD(LTI_STS_Filters_Max, "lt_lib_mrsid_imageFilters max")
-
-#endif // LTI_FILTERSSTATUS_H
diff --git a/src/DSDK/include/filters/lti_mosaicFilter.h b/src/DSDK/include/filters/lti_mosaicFilter.h
deleted file mode 100644
index a683d27..0000000
--- a/src/DSDK/include/filters/lti_mosaicFilter.h
+++ /dev/null
@@ -1,184 +0,0 @@
-/* $Id: lti_mosaicFilter.h 5124 2006-10-27 11:40:40Z lubia $ */
-/* //////////////////////////////////////////////////////////////////////////
-//                                                                         //
-// This code is Copyright (c) 2004 LizardTech, Inc, 1008 Western Avenue,   //
-// Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         //
-// prohibited.  Access to and use of this code is permitted only under     //
-// license from LizardTech, Inc.  Portions of the code are protected by    //
-// US and foreign patents and other filings. All Rights Reserved.          //
-//                                                                         //
-////////////////////////////////////////////////////////////////////////// */
-/* PUBLIC */
-
-#ifndef LTI_MOSAICFILTER_H
-#define LTI_MOSAICFILTER_H
-
-// lt_lib_mrsid_core
-#include "lti_imageFilter.h"
-#include "lti_imageStageManager.h"
-
-
-LT_BEGIN_NAMESPACE(LizardTech)
-
-#if defined(LT_COMPILER_MS)
-   #pragma warning(push,4)
-#endif
-
-class LTIRTree;
-class LTIEmbeddedImage;
-class LTIReusableBSQBuffer;
-
-/**
- * create a single mosaicked image from a set of images
- *
- * This class create a single mosaicked image from a set of images.
- *
- * The set of input images are all assumed to be in the same coordinate
- * space.  In general, all the images must have the same resolution;
- * differences that are within a small epsilon or exactly a power of two
- * are optionally allowed.
- */
-class LTIMosaicFilter : public LTIImageFilter
-{
-public:
-   /**
-    * constructor
-    *
-    * Creates an image stage which is a mosaic of the set of input images.
-    *
-    * The "res correct" feature allows images with slightly different
-    * resolutions to be mosaicked.  This allows for proper handling of
-    * situations where one image has a resolution of 0.5000 and another has a
-    * resolution of 0.4999.
-    *
-    * The "multires" feature allows images whose resolutions which differ by
-    * a power of two to be mosaicked together.  (The LTIStaticZoomFilter class
-    * is used to implement this feature.)
-    *
-    * NoData and background pixel settings are honored by the mosaic process.
-    *
-    * @param  imageStageManager ?????
-    * @param  backgroundPixel   color of the background pixel for the new image stage
-    * @param  useResCorrect     allow images to have slightly different resolutions
-    * @param  useMultires       allow images whose resolutions differ by a power of two
-    * @param  takeOwnership     set to true to have the filter delete the \a sourceImage
-    */
-   LTIMosaicFilter(LTIImageStageManager *imageStageManager,
-                   const LTIPixel* backgroundPixel,
-                   bool useResCorrect,
-                   bool useMultires,
-                   bool takeOwnership);
-   virtual ~LTIMosaicFilter();
-   virtual LT_STATUS initialize();
-
-   void setUsingFuzzyNoData(bool fuzzy);
-   bool getUsingFuzzyNoData(void) const;
-
-   void setDeleteImages(bool deleteImages);
-   bool getDeleteImages(void) const;
-
-   lt_int64 getPhysicalFileSize() const;
-
-   lt_uint32 getStripHeight() const;
-   LT_STATUS setStripHeight(lt_uint32 stripHeight);
-
-   lt_int64 getEncodingCost(const LTIScene& scene) const;
-
-   LT_STATUS projectPointAtMag(double upperLeft,
-                               double mag,
-                               double& newUpperLeft) const;
-   
-   LT_STATUS projectDimAtMag(double dim,
-                             double mag,
-                             double& newDim) const;
-
-   LT_STATUS getDimsAtMag(double mag,
-                          lt_uint32& width,
-                          lt_uint32& height) const;
-
-   bool getReaderScene(const LTIScene &decodeScene, LTIScene &readerScene) const;
-
-   bool getReaderScene(lt_uint32 child,
-                       const LTIScene &decodeScene,
-                       LTIScene &mosaicScene,
-                       LTIScene &readerScene) const;
-#if 1
-   class InSceneCallback
-   {
-   public:
-      virtual LT_STATUS found(const LTIScene &scene,
-                              lt_uint32 imageNum,
-                              LTIEmbeddedImage &embedded,
-                              LTIImageStage &image) = 0;   
-   };
-
-   LT_STATUS forEachImageStageInScene(const LTIScene &scene,
-                                      InSceneCallback &callback);
-#endif
-   /**
-    * Check if a set of images can be mosaicked together.  The parameters to
-    * this function mirror those of the constructor: this function will
-    * return LT_STS_Success if and only if the images' resolutions are such
-    * that a mosaic can be produced.
-    *
-    * @param  imageStageManager ?????
-    * @param  useResCorrect    allow images to have slightly different resolutions
-    * @param  useMultires      allow images whose resolutions differ by a power of two
-    * @return status code indicating success or failure
-    */
-   static LT_STATUS checkResolutionConformance(LTIImageStageManager *imageStageManager,
-                                               bool useResCorrect,
-                                               bool useMultires);
-
-   // these functions are used the Callbacks
-   LT_STATUS loadImage(lt_uint32 i,
-                       LTIEmbeddedImage *&embedded,
-                       LTIImageStage *&raw);
-
-   LT_STATUS closeImage(lt_uint32 i);
-
-protected:
-   virtual LT_STATUS decodeBegin(const LTIScene& scene);
-   virtual LT_STATUS decodeStrip(LTISceneBuffer& stripBuffer, const LTIScene& stripScene);
-   virtual LT_STATUS decodeEnd();
-
-   LT_STATUS buildRTree(LTIImageStageManager &imageStageManager,
-                        LTIMetadataDatabase &metadata);
-
-private:
-   class ListImageStagesInSceneCallback;
-
-   LTIImageStageManager *m_imageStageManager;
-   LTIPixel* m_userBackgroundPixel;
-   bool m_useResCorrect;
-   bool m_useMultires;
-
-   lt_int64 m_physicalFileSize;
-
-   LTIRTree *m_rtree;
-
-   // open image book keeping
-   LTIImageStage **m_rImage;
-   LTIImageStage **m_fImage;
-   int *m_sImage;
-   bool m_fuzzyNoData;
-   bool m_deleteImages;
-   lt_uint32 m_stripHeight;
-   LTIPixel *m_zeroPixel;
-   LTIReusableBSQBuffer *m_workBuffer;
-
-   // imageInScene
-   lt_uint32 *m_inSceneList;
-
-   // nope
-   LTIMosaicFilter(const LTIMosaicFilter&);
-   LTIMosaicFilter& operator=(const LTIMosaicFilter&);
-};
-
-LT_END_NAMESPACE(LizardTech)
-
-#if defined(LT_COMPILER_MS)
-	#pragma warning(pop)
-#endif
-
-#endif // LTI_MOSAICFILTER_H
diff --git a/src/DSDK/include/filters/lti_multiresFilter.h b/src/DSDK/include/filters/lti_multiresFilter.h
deleted file mode 100644
index 394ef5b..0000000
--- a/src/DSDK/include/filters/lti_multiresFilter.h
+++ /dev/null
@@ -1,161 +0,0 @@
-/* $Id: lti_multiresFilter.h 5124 2006-10-27 11:40:40Z lubia $ */
-/* //////////////////////////////////////////////////////////////////////////
-//                                                                         //
-// This code is Copyright (c) 2004 LizardTech, Inc, 1008 Western Avenue,   //
-// Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         //
-// prohibited.  Access to and use of this code is permitted only under     //
-// license from LizardTech, Inc.  Portions of the code are protected by    //
-// US and foreign patents and other filings. All Rights Reserved.          //
-//                                                                         //
-////////////////////////////////////////////////////////////////////////// */
-/* PUBLIC */
-
-#ifndef LTI_MULTIRESFILTER_H
-#define LTI_MULTIRESFILTER_H
-
-// lt_lib_mrsid_core
-#include "lti_imageFilter.h"
-#include "lti_scene.h"
-
-#if defined(LT_COMPILER_MS)
-   #pragma warning(push,4)
-#endif
-
-LT_BEGIN_NAMESPACE(LizardTech)
-
-class LTIResampler;
-
-/**
- * add resolutions to the image
- *
- * Extends the magnification range of an image, to allow decodes at different
- * resolutions than the image stage would normally allow.
- *
- * Note that this class is not the same as at the LTIStaticZoomFilter class,
- * which scales the magnification statically for the pipeline when initially
- * constructed.  This class allows for the zoom level to be extended for an
- * individual decode operation.
- */
-class LTIMultiResFilter : public LTIImageFilter
-{
-public:
-   /**
-    * constructor
-    *
-    * Creates an image stage which can be decoded at arbitrary magnifications.
-    *
-    * Normally image stages will only support a limited set of magnification
-    * values for the LTIScene passed to LTIImageStage::read() -- often, only
-    * 1.0.  This class will perform any needed resampling on the fly so that
-    * arbitrary (power-of-two) magnifications are supported.
-    *
-    * @param  sourceImage     the base image
-    * @param takeOwnership    set to true to have the filter delete the \a sourceImage
-    */
-   LTIMultiResFilter(LTIImageStage* sourceImage, bool takeOwnership);
-   LTIMultiResFilter(LTIImageStage* sourceImage,
-                     double deltaMag,
-                     double minMag,
-                     double maxMag,
-                     bool takeOwnership);
-   
-   virtual ~LTIMultiResFilter();
-   virtual LT_STATUS initialize();
-   
-   LT_STATUS setResampleMethod(LTIResampleMethod resampleMethod);
-
-   virtual lt_int64 getEncodingCost(const LTIScene& scene) const;
-
-   LT_STATUS projectPointAtMag(double upperLeft,
-                               double mag,
-                               double& newUpperLeft) const;
-   
-   LT_STATUS projectDimAtMag(double dim,
-                             double mag,
-                             double& newDim) const;
-
-   LT_STATUS getDimsAtMag(double mag,
-                          lt_uint32& width,
-                          lt_uint32& height) const;
-
-
-   bool getReaderScene(const LTIScene &decodeScene,
-                       LTIScene &readerScene) const;
-
-
-   // call this before initialize() if you want non-sq. pixels
-   // (the deltaMag in the constructor is ignored)
-   void setDeltaMagXY(double deltaMagX, double deltaMagY);
-
-   static double magForIcon(const LTIImageStage &image,
-                            lt_uint32 iconSize);
-
-protected:
-   LT_STATUS decodeBegin(const LTIScene& scene);
-   LT_STATUS decodeStrip(LTISceneBuffer& stripBuffer,
-                         const LTIScene& stripScene);
-   LT_STATUS decodeEnd();
-
-
-   enum Mode
-   {
-      MODE_INVALID,
-      MODE_RESAMPLE,
-      MODE_PASSTHROUGH,
-      MODE_DOWNSAMPLE_FULLREAD,
-      MODE_ALL_AT_ONCE
-   };
-
-   bool getChildScene(const LTIScene &scene,
-                      Mode &mode,
-                      double &scaleX,
-                      double &scaleY,
-                      LTIScene &childScene) const;
-   
-   enum
-   {
-      // The largest possible mag is based on the 2gb
-      // scene limitation. Thus the largest scene we
-      // should ever expect is approximately the square
-      // root of (2gb / 3) pixels on a  side. If we
-      // assume the smallest image we'll ever encounter
-      // is 32x32 then the largest magnification can
-      // be calculated. It's big, but we need a real number!
-      kMaxMagnification = 512   // 51200% zoom!
-   };
-
-private:
-   struct StripCache;
-
-   double m_mrMinMag;
-   double m_mrMaxMag;
-   double m_deltaMagX;
-   double m_deltaMagY;
-
-   Mode m_mode;
-   double m_scaleX;
-   double m_scaleY;
-   LTIScene m_childScene;
-   double m_curY;
-   
-   lt_int32 m_childStrip;
-   lt_int32 m_myStrip;
-
-   StripCache *m_stripCache0;
-   StripCache *m_stripCache1;
-   
-   LTIResampler *m_resampler;
-
-   // nope
-   LTIMultiResFilter(const LTIMultiResFilter&);
-   LTIMultiResFilter& operator=(const LTIMultiResFilter&);
-};
-
-
-LT_END_NAMESPACE(LizardTech)
-
-#if defined(LT_COMPILER_MS)
-	#pragma warning(pop)
-#endif
-
-#endif // LTI_MULTIRESFILTER_H
diff --git a/src/DSDK/include/filters/lti_staticZoomFilter.h b/src/DSDK/include/filters/lti_staticZoomFilter.h
deleted file mode 100644
index a57c2f4..0000000
--- a/src/DSDK/include/filters/lti_staticZoomFilter.h
+++ /dev/null
@@ -1,79 +0,0 @@
-/* $Id: lti_staticZoomFilter.h 5124 2006-10-27 11:40:40Z lubia $ */
-/* //////////////////////////////////////////////////////////////////////////
-//                                                                         //
-// This code is Copyright (c) 2004 LizardTech, Inc, 1008 Western Avenue,   //
-// Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         //
-// prohibited.  Access to and use of this code is permitted only under     //
-// license from LizardTech, Inc.  Portions of the code are protected by    //
-// US and foreign patents and other filings. All Rights Reserved.          //
-//                                                                         //
-////////////////////////////////////////////////////////////////////////// */
-/* PUBLIC */
-
-#ifndef LTI_STATICZOOMFILTER_H
-#define LTI_STATICZOOMFILTER_H
-
-// lt_lib_mrsid_imageFilter
-#include "lti_multiresFilter.h"
-
-
-LT_BEGIN_NAMESPACE(LizardTech)
-
-#if defined(LT_COMPILER_MS)
-   #pragma warning(push,4)
-#endif
-
-/**
- * magnifies the image by a fixed amount
- *
- * This class magnifies the image by a fixed amount.  In effect this simply changes the
- * width and height of the image statically, i.e. for the life of the
- * pipeline.  The resampling is performed internally by the LTIMultiresFilter
- * class.
- */
-class LTIStaticZoomFilter : public LTIMultiResFilter
-{
-public:
-   /**
-    * constructor
-    *
-    * Magnifies the image by the scale factor given.  The image width, height,
-    * geographic resolution, etc, are all updated accordingly.
-    *
-    * A positive scale factor performs a "res-up" operation, while a negative
-    * scale factor will reduce the image.  That is, a scale factor of 2 will
-    * double the image size, e.g. from a magnification of 1.0 to 2.0, while a
-    * scale factor of -2 will halve the image size, e.g. from a magnification
-    * of 1.0 to 0.5.
-    * 
-    * @param  sourceImage   the base image
-    * @param  scaleFactor    the integer scale factor
-    * @param takeOwnership  set to true to have the filter delete the \a sourceImage
-    */
-   LTIStaticZoomFilter(LTIImageStage* sourceImage,
-                       lt_int8 scaleFactor,
-                       bool takeOwnership);
-
-   LTIStaticZoomFilter(LTIImageStage* sourceImage,
-                       double deltaMag,
-                       double minMag,
-                       double maxMag,
-                       bool takeOwnership);
-   
-protected:
-
-private:
-
-   // nope
-   LTIStaticZoomFilter(const LTIStaticZoomFilter&);
-   LTIStaticZoomFilter& operator=(const LTIStaticZoomFilter&);
-};
-
-
-LT_END_NAMESPACE(LizardTech)
-
-#if defined(LT_COMPILER_MS)
-	#pragma warning(pop)
-#endif
-
-#endif // LTI_STATICZOOMFILTER_H
diff --git a/src/DSDK/include/filters/lti_statisticsFilter.h b/src/DSDK/include/filters/lti_statisticsFilter.h
deleted file mode 100644
index d71db80..0000000
--- a/src/DSDK/include/filters/lti_statisticsFilter.h
+++ /dev/null
@@ -1,95 +0,0 @@
-/* $Id: lti_statisticsFilter.h 5124 2006-10-27 11:40:40Z lubia $ */
-/* //////////////////////////////////////////////////////////////////////////
-//                                                                         //
-// This code is Copyright (c) 2004 LizardTech, Inc, 1008 Western Avenue,   //
-// Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         //
-// prohibited.  Access to and use of this code is permitted only under     //
-// license from LizardTech, Inc.  Portions of the code are protected by    //
-// US and foreign patents and other filings. All Rights Reserved.          //
-//                                                                         //
-////////////////////////////////////////////////////////////////////////// */
-/* PUBLIC */
-
-#ifndef LTI_STATISTICSFILTER_H
-#define LTI_STATISTICSFILTER_H
-
-// lt_lib_mrsid_core
-#include "lti_imageFilter.h"
-
-
-LT_BEGIN_NAMESPACE(LizardTech)
-
-#if defined(LT_COMPILER_MS)
-   #pragma warning(push,4)
-#endif
-
-/**
- * collects basic numeric statistics about the image's samples
- *
- * This class collects basic numeric statistics about the image's samples.  The data
- * collected includes the minimum, maximum, mean, and standard deviation of
- * the samples for each band.
- *
- * This filter does not change the image or its properties in any way.
- */
-class LTIStatisticsFilter : public LTIImageFilter
-{
-public:
-   /**
-    * constructor
-    *
-    * Creates a pass-through image stage 
-    *
-    * The \a edgePadding argument is used to specify the distance (in pixels)
-    * between the watermark and the edge of the base image specified by the \a
-    * position argument.  (This argument is ignored if LTI_POSITION_CENTER is
-    * used.)
-    *
-    * @param  sourceImage     the base image
-    * @param takeOwnership    set to true to have the filter delete the \a sourceImage
-    */
-   LTIStatisticsFilter(LTIImageStage* sourceImage,
-                       bool takeOwnership);
-   virtual ~LTIStatisticsFilter();
-   virtual LT_STATUS initialize();
-
-   void getStats(const double*& minPixel,
-                 const double*& maxPixel,
-                 const double*& meanPixel,
-                 const double*& stdDeviation,
-                 lt_uint32& numPixels) const;
-
-   void clearStats();
-
-protected:
-   LT_STATUS decodeBegin(const LTIScene& scene);
-   LT_STATUS decodeEnd();
-   LT_STATUS decodeStrip(LTISceneBuffer& stripBuffer, const LTIScene& stripScene);
-
-private:
-   typedef LTIImageFilter Super;
-
-   void updateStats();
-
-   lt_uint32 m_numPixels;
-   double* m_minPixel;
-   double* m_maxPixel;
-   double* m_sumPixel;
-   double* m_sumSquaredPixel;
-   double* m_meanPixel;
-   double* m_variancePixel;
-   double* m_stdDeviationPixel;
-
-   // nope
-   LTIStatisticsFilter(const LTIStatisticsFilter&);
-   LTIStatisticsFilter& operator=(const LTIStatisticsFilter&);
-};
-
-
-LT_END_NAMESPACE(LizardTech)
-
-#if defined(LT_COMPILER_MS)
-	#pragma warning(pop)
-#endif
-
-#endif // LTI_STATISTICSFILTER_H
diff --git a/src/DSDK/include/filters/lti_translationFilter.h b/src/DSDK/include/filters/lti_translationFilter.h
deleted file mode 100644
index ea41ea6..0000000
--- a/src/DSDK/include/filters/lti_translationFilter.h
+++ /dev/null
@@ -1,80 +0,0 @@
-/* $Id: lti_translationFilter.h 5124 2006-10-27 11:40:40Z lubia $ */
-/* //////////////////////////////////////////////////////////////////////////
-//                                                                         //
-// This code is Copyright (c) 2004 LizardTech, Inc, 1008 Western Avenue,   //
-// Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         //
-// prohibited.  Access to and use of this code is permitted only under     //
-// license from LizardTech, Inc.  Portions of the code are protected by    //
-// US and foreign patents and other filings. All Rights Reserved.          //
-//                                                                         //
-////////////////////////////////////////////////////////////////////////// */
-/* PUBLIC */
-
-#ifndef LTI_TRANSLATIONFILTER_H
-#define LTI_TRANSLATIONFILTER_H
-
-// lt_lib_mrsid_core
-#include "lti_imageFilter.h"
-#include "lti_geoCoord.h"
-
-LT_BEGIN_NAMESPACE(LizardTech)
-
-#if defined(LT_COMPILER_MS)
-   #pragma warning(push,4)
-#endif
-
-
-/**
- * translates (moves) the geo coordinates of the image
- *
- * This class translates (moves) the geo coordinates of the image.
- */
-class LTITranslationFilter : public LTIImageFilter
-{
-public:
-   /**
-    * constructor
-    *
-    * This class shifts the geographic coordinates of the image by the given
-    * amount.
-    *
-    * @param  sourceImage   the base image
-    * @param  xOffset       amount to shift in the X direction
-    * @param  yOffset       amount to shift in the Y direction
-    * @param takeOwnership  set to true to have the filter delete the \a sourceImage
-    */
-   LTITranslationFilter(LTIImageStage* sourceImage,
-                        double xOffset,
-                        double yOffset,
-                        bool takeOwnership);
-
-   LTITranslationFilter(LTIImageStage* sourceImage,
-                        const LTIGeoCoord &geoCoord,
-                        bool takeOwnership);
-
-   virtual ~LTITranslationFilter();
-   virtual LT_STATUS initialize();
-
-protected:
-   LT_STATUS decodeBegin(const LTIScene& scene);
-   LT_STATUS decodeEnd();
-   LT_STATUS decodeStrip(LTISceneBuffer& stripBuffer, const LTIScene& stripScene);
-
-private:
-   typedef LTIImageFilter Super;
-
-   LTIGeoCoord m_newGeoCoord;
-
-   // nope
-   LTITranslationFilter(const LTITranslationFilter&);
-   LTITranslationFilter& operator=(const LTITranslationFilter&);
-};
-
-
-LT_END_NAMESPACE(LizardTech)
-
-#if defined(LT_COMPILER_MS)
-	#pragma warning(pop)
-#endif
-
-#endif // LTI_TRANSLATIONFILTER_H
diff --git a/src/DSDK/include/filters/lti_viewerImageFilter.h b/src/DSDK/include/filters/lti_viewerImageFilter.h
deleted file mode 100644
index 9940e02..0000000
--- a/src/DSDK/include/filters/lti_viewerImageFilter.h
+++ /dev/null
@@ -1,94 +0,0 @@
-/* $Id: lti_viewerImageFilter.h 5124 2006-10-27 11:40:40Z lubia $ */
-/* //////////////////////////////////////////////////////////////////////////
-//                                                                         //
-// This code is Copyright (c) 2004 LizardTech, Inc, 1008 Western Avenue,   //
-// Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         //
-// prohibited.  Access to and use of this code is permitted only under     //
-// license from LizardTech, Inc.  Portions of the code are protected by    //
-// US and foreign patents and other filings. All Rights Reserved.          //
-//                                                                         //
-////////////////////////////////////////////////////////////////////////// */
-/* PUBLIC */
-
-#ifndef LTIVIEWERIMAGEFILTER_H
-#define LTIVIEWERIMAGEFILTER_H
-
-// lt_lib_mrsid_core
-#include "lti_imageFilter.h"
-
-
-LT_BEGIN_NAMESPACE(LizardTech)
-
-#if defined(LT_COMPILER_MS)
-   #pragma warning(push,4)
-#endif
-
-
-/**
- * performs datatype and colorspace transforms on an image to make it displayable
- *
- * This class wraps the LTIDataType, LTIColorTransformer, and
- * LTIDynamicRangeFilter classes in order to transform the input image into
- * an unsigned 8-bit datatype with colorspace greyscale or RGB, as is required
- * by most display engines.
- */
-class LTIViewerImageFilter : public LTIImageFilter
-{
-public:
-   /**
-    * constructor
-    *
-    * Transforms the input image to unsigned 8-bit samples and a colorspace
-    * of either greyscale or RGB.  This allows the image's pixels to be more
-    * easily passed to command rendering engines.
-    *
-    * The class also allows for the dynamic range of the image to be adjusted
-    * to make the image's histogram fit the datatype width.  RGB pixels can
-    * also be remapped to be in BGR format (as is required for Windows
-    * bitmaps).
-    *
-    * @param  sourceImage      the input image
-    * @param  useDynamicRange  if set, the image data will be scaled
-    *                          according to the dynamic range metadata in the
-    *                          image (if any)
-    * @param  useBGR           if set, RGB samples will be remapped to BGR
-    *                          format
-    * @param takeOwnership     set to true to have the filter delete the \a
-    *                          sourceImage
-    */
-   LTIViewerImageFilter(LTIImageStage* sourceImage,
-                        bool useDynamicRange,
-                        bool useBGR,
-                        bool takeOwnership);
-   virtual ~LTIViewerImageFilter();
-   virtual LT_STATUS initialize();
-
-protected:
-   LT_STATUS decodeBegin(const LTIScene& scene);
-   LT_STATUS decodeEnd();
-   LT_STATUS decodeStrip(LTISceneBuffer& stripBuffer, const LTIScene& stripScene);
-
-private:
-   typedef LTIImageFilter Super;
-
-   LTIImageFilter* m_drTransform;
-   LTIImageFilter* m_csTransform;
-   LTIImageFilter* m_mapTransform;
-   LTIImageStage* m_lastStage;
-
-   bool m_useBGR;
-   bool m_useDynamicRange;
-
-   // nope
-   LTIViewerImageFilter(const LTIViewerImageFilter&);
-   LTIViewerImageFilter& operator=(const LTIViewerImageFilter&);
-};
-
-
-LT_END_NAMESPACE(LizardTech)
-
-#if defined(LT_COMPILER_MS)
-	#pragma warning(pop)
-#endif
-
-#endif // LTIVIEWERIMAGEFILTER_H
diff --git a/src/DSDK/include/filters/lti_watermarkFilter.h b/src/DSDK/include/filters/lti_watermarkFilter.h
deleted file mode 100644
index b7c1f3f..0000000
--- a/src/DSDK/include/filters/lti_watermarkFilter.h
+++ /dev/null
@@ -1,97 +0,0 @@
-/* $Id: lti_watermarkFilter.h 5124 2006-10-27 11:40:40Z lubia $ */
-/* //////////////////////////////////////////////////////////////////////////
-//                                                                         //
-// This code is Copyright (c) 2004 LizardTech, Inc, 1008 Western Avenue,   //
-// Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         //
-// prohibited.  Access to and use of this code is permitted only under     //
-// license from LizardTech, Inc.  Portions of the code are protected by    //
-// US and foreign patents and other filings. All Rights Reserved.          //
-//                                                                         //
-////////////////////////////////////////////////////////////////////////// */
-/* PUBLIC */
-
-#ifndef LTI_WATERMARKFILTER_H
-#define LTI_WATERMARKFILTER_H
-
-// lt_lib_mrsid_core
-#include "lti_imageFilter.h"
-
-
-LT_BEGIN_NAMESPACE(LizardTech)
-
-#if defined(LT_COMPILER_MS)
-   #pragma warning(push,4)
-#endif
-
-class LTIEmbeddedImage;
-
-/**
- * insert a watermark image onto an image
- *
- * Inserts a watermark image onto the current image stage.
- */
-class LTIWatermarkFilter : public LTIImageFilter
-{
-public:
-   /**
-    * constructor
-    *
-    * Creates an image stage with the \a watermarkImage overlaid over the \a
-    * sourceImage at the position specified.
-    *
-    * The \a edgePadding argument is used to specify the distance (in pixels)
-    * between the watermark and the edge of the base image specified by the \a
-    * position argument.  (This argument is ignored if LTI_POSITION_CENTER is
-    * used.)
-    *
-    * @param  sourceImage     the base image
-    * @param  watermarkImage  the watermark to be overlaid
-    * @param  position        where to insert the watermark
-    * @param  edgePadding     distance (in pixels) between the watermark and
-    *                         the base image
-    * @param  takeOwnershipWM  set to true to have the filter delete the \a watermarkImage
-    * @param  takeOwnership   set to true to have the filter delete the \a sourceImage
-    */
-   LTIWatermarkFilter(LTIImageStage* sourceImage,
-                      LTIImageStage* watermarkImage,
-                      LTIPosition position,
-                      lt_uint32 edgePadding,
-                      bool takeOwnershipWM,
-                      bool takeOwnership);
-
-   /**
-    * destructor
-    */
-   virtual ~LTIWatermarkFilter();
-
-   virtual LT_STATUS initialize();
-
-protected:
-   LT_STATUS decodeBegin(const LTIScene& scene);
-   LT_STATUS decodeEnd();
-   LT_STATUS decodeStrip(LTISceneBuffer& stripBuffer, const LTIScene& stripScene);
-
-private:
-   typedef LTIImageFilter Super;
-
-   LT_STATUS checkImpedance() const;
-
-   LTIImageStage* m_rawWatermark;
-   LTIEmbeddedImage* m_embeddedWatermark;
-   lt_uint32 m_edgePadding;
-   LTIPosition m_position;
-   bool m_takeOwnershipWM;
-
-   // nope
-   LTIWatermarkFilter(const LTIWatermarkFilter&);
-   LTIWatermarkFilter& operator=(const LTIWatermarkFilter&);
-};
-
-
-LT_END_NAMESPACE(LizardTech)
-
-#if defined(LT_COMPILER_MS)
-	#pragma warning(pop)
-#endif
-
-#endif // LTI_WATERMARKFILTER_H
diff --git a/src/DSDK/include/j2k_readers/J2KImageReader.h b/src/DSDK/include/j2k_readers/J2KImageReader.h
deleted file mode 100644
index 0582ec3..0000000
--- a/src/DSDK/include/j2k_readers/J2KImageReader.h
+++ /dev/null
@@ -1,304 +0,0 @@
-/* $Id: J2KImageReader.h 5124 2006-10-27 11:40:40Z lubia $ */
-/* //////////////////////////////////////////////////////////////////////////
-//                                                                         //
-// This code is Copyright (c) 2004 LizardTech, Inc, 1008 Western Avenue,   //
-// Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         //
-// prohibited.  Access to and use of this code is permitted only under     //
-// license from LizardTech, Inc.  Portions of the code are protected by    //
-// US and foreign patents and other filings. All Rights Reserved.          //
-//                                                                         //
-////////////////////////////////////////////////////////////////////////// */
-/* PUBLIC */
-
-#ifndef J2KIMAGEREADER_H
-#define J2KIMAGEREADER_H
-
-// lt_lib_mrsid_core
-#include "lti_geoImageReader.h"
-
-// lt_lib_mrsid_j2k
-#include "j2k_types.h"
-
-#if defined(LT_COMPILER_MS)
-   #pragma warning(push,4)
-#endif
-
-
-LT_BEGIN_NAMESPACE(LizardTech)
-
-class LTFileSpec;
-class LTIOStreamInf;
-class Jpeg2000ReaderManager;
-class Jpeg2000Reader;
-
-
-/***!!! ONLY FOR BACKWARDS COMPAT !!!***/
-
-
-/**
- * image reader for JPEG 2000 images
- *
- * This class provides support for reading JPEG 2000 images.
- *
- * @note Not all JP2/Part 1 images are supported yet.  See the release
- * notes for details.
- */
-class J2KImageReader : public LTIGeoImageReader
-{
-public:
-   /**
-    * constructor
-    *
-    * Create a JPEG 2000 image reader from a file.
-    *
-    * The \a isPersistent parameter is used as a performance hint
-    * to the underlying codec.  If you intend to do only one decode
-    * request from the image, you may set this value to false; this
-    * may result in improved memory usage and performance.  If multiple
-    * decode requests are to be made, the value must be set to true.
-    *
-    * The \a maxBpp parameter controls the number of bits per sample
-    * to decode from.  Values smaller than the number of bits per
-    * sample will produce lossy images, but generally the decode
-    * operations will be faster.  A value of -1.0 indicates all
-    * available bits are to be used.
-    * 
-    * The \a singleBand parameter, if set to a value other than -1, will
-    * attempt to open the image as if it contained only one band (component).
-    * Note if the YCbCr transform was used to encode the image, the band
-    * data will be returned still in the YCC colorspace; this is typically
-    * not what you want.
-    *
-    * @param  fileSpec      file to read from
-    * @param  isPersistent  set to true, unless only doing one decode request
-    * @param  maxBpp        set to number of bits per sample desired (or -1.0f for all bits)
-    * @param  useWorldFile  use world file information if available
-    * @param  singleBand    open as 1-banded image using given band number, unless -1
-    */
-   J2KImageReader(const LTFileSpec& fileSpec,
-                  bool isPersistent = true,
-                  float maxBpp = -1.0f,
-                  bool useWorldFile = true,
-                  lt_int32 singleBand = -1);
-
-   /**
-    * constructor
-    *
-    * Create a JPEG 2000 image reader from a stream.
-    *
-    * See file constructor for parameter descriptions.
-    *
-    * @param  stream        stream to read from
-    * @param  isPersistent  set to true, unless only doing one decode request
-    * @param  maxBpp        set to number of bits per sample desired (or -1.0f for all bits)
-    * @param  useWorldFile  use world file information if available
-    * @param  singleBand    open as 1-banded image using given band number, unless -1
-    */
-   J2KImageReader(LTIOStreamInf &stream,
-                  bool isPersistent = true,
-                  float maxBpp = -1.0f,
-                  bool useWorldFile = true,
-                  lt_int32 singleBand = -1);
-
-   /**
-    * destructor
-    */
-   virtual ~J2KImageReader();
-   
-   LT_STATUS initialize();
-
-   /**
-    * @name precision control
-    */
-   /*@{*/
-
-   /**
-    * control decoder use of bits of precision
-    *
-    * These functions allow the caller to control the number of bits of
-    * precision (or bits per sample) used in satisfying the decode request.
-    * 
-    * The default is to use all available bits.
-    *
-    * Note this allows for precision control on a per-decode basis.  The
-    * \a maxBpp constructor parameter performs a similar function, but
-    * sets the value for all decode operations on the image.
-    */
-   LT_STATUS setParameter_Precision(lt_uint32 precision);
-   lt_uint32 getParameter_Precision() const;
-   lt_uint32 getParameter_MinPrecision() const;
-   lt_uint32 getParameter_MaxPrecision() const;
-   lt_uint32 getParameter_DefaultPrecision() const;
-   /*@}*/
-
-   /**
-    * @name quality layer control
-    */
-   /*@{*/
-
-   /**
-    * control decoder use of quality layers 
-    *
-    * These functions allow the caller to control the number of quality
-    * layers used in satisfying the decode request.  Use of quality
-    * layers allow for "preset" compression ratios to be encoded into
-    * the image.
-    * 
-    * The default is to use all available layers).
-    */
-   LT_STATUS setParameter_Layers(lt_uint32 numLayers);
-   lt_uint32 getParameter_Layers() const;
-   lt_uint32 getParameter_MinLayers() const;
-   lt_uint32 getParameter_MaxLayers() const;
-   lt_uint32 getParameter_DefaultLayers() const;
-   /*@}*/
-
-   /**
-    * get image tile size
-    *
-    * Returns the size of the tile(s) used to encode the image, in pixels.
-    * An image that is "not tiled" is considered to be encoded as one
-    * large tile, the size of the entire image.
-    *
-    * @param width  tile width, in pixels
-    * @param height  tile height, in pixels
-    */
-   void getParameter_TileSize(int& width, int& height) const;
-   
-   /**
-    * get image precinct sizes
-    *
-    * Returns the size of the precinct(s) used to encode the image, in pixels.
-    * The data is returned as pointers to arrays, one width/height value for
-    * each of the \a numPrecincts precincts.
-    *
-    * @param widths   returned array of precincts widths, in pixels
-    * @param heights  returned array of precincts heights, in pixels
-    * @param numPrecincts  number of precincts in image (and length of \a widths / \a heights arrays)
-    */
-   void getParameter_Precincts(const int*& widths, const int*& heights, int& numPrecincts) const;
-
-   /**
-    * get image progression order
-    *
-    * Returns the progression order of the image.
-    *
-    * @return the progression order
-    */
-   J2KProgressionOrder getParameter_ProgressionOrder() const;
-   
-   /**
-    * get image codeblock size
-    *
-    * Returns the size of the codeblock used to encode the image, in pixels.
-    *
-    * @param width    codeblock width, in pixels
-    * @param height   codeblock width, in pixels
-    */
-   void getParameter_CodeblockSize(int& width, int& height) const;
-
-   /**
-    * query if 9-7 wavelet used
-    *
-    * Returns true if the image was encoded with the 9-7 wavelet.  The 9-7
-    * wavelet may give better image quality as compared to the 5-3 wavelet
-    * for a given compression ratio, however the 9-7 wavelet does not support
-    * lossless encoding.
-    *
-    * @return  true, if the 9-7 wavelet was used
-    */
-   bool getParameter_Wavelet97() const;
-
-   /**
-    * query if YCC transform is used
-    *
-    * Returns true if the RGB-YCbCr multiple component transform is
-    * used for this image.
-    *
-    * @return  true, if image encoded with YCC transform
-    */
-   bool getParameter_UsingYCbCr() const;
-
-   /**
-    * get number of resolution levels
-    *
-    * Returns the number of wavelet resolution levels encoded in the image.
-    * This is equivalent to the minimum magnification value, expressed
-    * as a power of two.
-    *
-    * @return  the number of resolution levels
-    */
-   lt_uint8 getNumLevels() const;
-
-   /**
-    * get metadata chunk
-    *
-    * This function is used to access the contents of a metadata box
-    * in the JPEG 2000 image, given a UUID.  The box contents are
-    * copied into a user-supplied stream.
-    *
-    * @param   uuid    the UUID of the box to read
-    * @param   stream  stream to receive the metadata
-    * @return  success or failure status code
-    */
-   LT_STATUS readMetadataBox(const lt_uint8* uuid, LTIOStreamInf& stream);
-
-   /**
-    * control ownership of underlying stream
-    *
-    * This function is used to change the ownership of the image stream.
-    *
-    * @param  takeOwnership    set to true to have object own the stream
-    */
-   void setStreamOwnership(bool takeOwnership);
-
-
-   // overrides
-   lt_int64 getPhysicalFileSize() const;
-   const LTFileSpec& getFileSpec() const;
-
-   LT_STATUS writeProfile(const LTFileSpec& file) const;
-
-   LT_STATUS projectPointAtMag(double upperLeft,
-                               double mag,
-                               double& newUpperLeft) const;
-   LT_STATUS projectDimAtMag(double dimension,
-                             double mag,
-                             double& newDim) const;
-   LT_STATUS getDimsAtMag(double mag,
-                          lt_uint32& width,
-                          lt_uint32& height) const;
-
-protected:
-   friend class J2KImageReaderImp;
-
-   // decode functions
-   LT_STATUS decodeBegin(const LTIScene& scene);
-   LT_STATUS decodeStrip(LTISceneBuffer& stripBuffer,
-                         const LTIScene& stripScene);
-   LT_STATUS decodeEnd();
-
-private:
-   LTFileSpec* m_fileSpec;
-   LTIOStreamInf* m_stream;
-   bool m_ownsStream;
-   const bool m_ctor_isPersistent;
-   const float m_ctor_maxBpp;
-   const lt_int32 m_ctor_singleBand;
-
-   Jpeg2000ReaderManager* m_manager;
-   Jpeg2000Reader* m_reader;
-
-   // nope
-   J2KImageReader(J2KImageReader&);
-   J2KImageReader& operator=(const J2KImageReader&);
-};
-
-
-LT_END_NAMESPACE(LizardTech)
-
-#if defined(LT_COMPILER_MS)
-	#pragma warning(pop)
-#endif
-
-#endif // J2KIMAGEREADER_H
diff --git a/src/DSDK/include/j2k_readers/NITFImageManager.h b/src/DSDK/include/j2k_readers/NITFImageManager.h
deleted file mode 100644
index 3f84ee1..0000000
--- a/src/DSDK/include/j2k_readers/NITFImageManager.h
+++ /dev/null
@@ -1,246 +0,0 @@
-/* $Id: NITFImageManager.h 5124 2006-10-27 11:40:40Z lubia $ */
-/* //////////////////////////////////////////////////////////////////////////
-//                                                                         //
-// This code is Copyright (c) 2005 LizardTech, Inc, 1008 Western Avenue,   //
-// Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         //
-// prohibited.  Access to and use of this code is permitted only under     //
-// license from LizardTech, Inc.  Portions of the code are protected by    //
-// US and foreign patents and other filings. All Rights Reserved.          //
-//                                                                         //
-////////////////////////////////////////////////////////////////////////// */
-/* PUBLIC */
-
-#ifndef NITFIMAGEMANAGER_H
-#define NITFIMAGEMANAGER_H
-
-// lt_lib_base
-#include "lt_base.h"
-
-// lt_lib_mrsid_core
-#include "lti_geoImageReader.h"
-
-LT_BEGIN_NAMESPACE(LizardTech)
-
-class LTFileSpec;
-class LTIOStreamInf;
-
-class NITFImageReader;
-
-class NITFFileHeader;
-class NITFImageSegment;
-class NITFGraphicSegment;
-class NITFLabelSegment;
-class NITFTextSegment;
-class NITFDataSegment;
-class NITFResSegment;
-class NITFFileMetadata;
-class NITFSecurityMetadata;
-
-/**
- * class for reading an NITF file
- *
- * This class provides support for reading an NITF file, containing
- * one or more image segments.
- *
- * This class is used in conjunction with the NITFReader class.
- *
- * THIS CLASS SUBJECT TO SIGNIFICANT CHANGE IN SUBSEQUENT RELEASES.
- */
-class NITFImageManager
-{
-public:
-   /**
-    * constructor
-    *
-    * Creates an NITFImageManager object from the given file.
-    *
-    * @param fileSpec  the NITF file to be opened
-    * @param obsolete  (not used)
-    */
-   NITFImageManager(const LTFileSpec& fileSpec, bool obsolete=true);
-
-   /**
-    * destructor
-    */
-   ~NITFImageManager();
-
-   /**
-    * initialization
-    */
-   LT_STATUS initialize();
-
-   /**
-    * creates a reader for a single segment
-    *
-    * This function is used to create an NITFImageReader for a 
-    * single given image segment, specified by number.
-    *
-    * The \a reader is allocated and initialized by this function,
-    * but the caller has ownership of the object.
-    * 
-    * @param reader  the created segment reader
-    * @param idx     index of the image segment
-    * @param useWorldFile set to true to allow world file to correct geo position
-    * @return status code
-    */
-   LT_STATUS createReader(NITFImageReader*& reader, lt_uint32 idx, bool useWorldFile=true);
-
-   /**
-    * creates a reader for all image segments
-    *
-    * This function is used to create an NITFImageReader for all
-    * the image segments; they are presented in the form of a
-    * standard SDK image mosaic.
-    *
-    * The \a stage is allocated and initialized by this function,
-    * but the caller has ownership of the object.  Note that the 
-    * \a stage is an LTIImageStage and not an NITFImageReader, as in
-    * the first form of the createReader() function.
-    * 
-    * @param stage   the created segment stage
-    * @return status code
-    */
-   LT_STATUS createReader(LTIImageStage*& stage);   // makes mosaic
-
-   // not for general use
-   void giveReaderOwnership(NITFImageReader* dummy=0);
-
-   /**
-    * COMRAT compliance control
-    *
-    * This function is used to control whether or not the COMRAT
-    * field is to be read.  The 2500C specification requires
-    * this field be present; the 2500B Note 2 specification does
-    * not.  This function is used to indicate which version
-    * of the specification this file adheres to.
-    *
-    * The default is false, i.e. 2500C formatting.
-    *
-    * This function must be called prior to initialize().
-    *
-    * @param use2500B set to true for 2500B/Note2 formatting
-    */
-   void setCompat_2500B_N2(bool use2500B);
-
-   /**
-    * COMRAT compliance setting
-    *
-    * Returns the 2500B compatability setting; see the
-    * setCompat_2500B_N2() function for details.
-    *
-    * @return true iff 200B / Note 2 formatting is being used
-    */
-   bool getCompat_2500B_N2() const;
-
-   lt_int64 getFileSize() const;
-
-   /**
-    * returns FileHeader metadata
-    */
-   const NITFFileHeader* getFileHeader() const;
-
-   /**
-    * returns number of image segments
-    */
-   lt_uint32 getNumImageSegments() const;
-
-   // not for general use
-   const NITFImageSegment* getImageSegment(lt_uint32 num) const;
-
-   /**
-    * returns the IID1 field of the given image segment
-    */
-   const char* getImageSegmentIID1(lt_uint32 num) const;
-
-   /**
-    * returns the number of graphic segments
-    */
-   lt_uint32 getNumGraphicSegments() const;
-
-   // not for general use
-   const NITFGraphicSegment* getGraphicSegment(lt_uint32 num) const;
-
-   /**
-    * returns the number of graphic segments
-    */
-   lt_uint32 getNumLabelSegments() const;
-
-   // not for general use
-   const NITFLabelSegment* getLabelSegment(lt_uint32 num) const;
-
-   /**
-    * returns the number of graphic segments
-    */
-   lt_uint32 getNumTextSegments() const;
-
-   // not for general use
-   const NITFTextSegment* getTextSegment(lt_uint32 num) const;
-
-   /**
-    * returns the number of graphic segments
-    */
-   lt_uint32 getNumDataSegments() const;
-
-   // not for general use
-   const NITFDataSegment* getDataSegment(lt_uint32 num) const;
-
-   /**
-    * returns the number of graphic segments
-    */
-   lt_uint32 getNumResSegments() const;
-
-   // not for general use
-   const NITFResSegment* getResSegment(lt_uint32 num) const;
-
-   /**
-    * returns NITF version information
-    */
-   const char* getVersionString() const;
-
-   LTFileSpec* getFileSpec() const;
-
-   /**
-    * returns the file-level metadata
-    */
-   const NITFFileMetadata* getFileMetadata() const;
-
-   /**
-    * returns file-level security metadata
-    */
-   const NITFSecurityMetadata* getSecurityMetadata() const;
-
-private:
-   LTFileSpec* m_fileSpec;
-   LTIOStreamInf* m_stream;
-   lt_int64 m_fileSize;
-   NITFImageReader* m_readerWithOwnership;
-
-   NITFFileHeader* m_fileHeader;
-   NITFImageSegment** m_imageSegments;
-   NITFGraphicSegment** m_graphicSegments;
-   NITFLabelSegment** m_labelSegments;
-   NITFTextSegment** m_textSegments;
-   NITFDataSegment** m_dataSegments;
-   NITFResSegment** m_resSegments;
-   lt_uint32 m_numImageSegments;
-   lt_uint32 m_numGraphicSegments;
-   lt_uint32 m_numLabelSegments;
-   lt_uint32 m_numTextSegments;
-   lt_uint32 m_numDataSegments;
-   lt_uint32 m_numResSegments;
-
-   NITFImageReader** m_readers;
-   lt_uint32 m_numReaders;
-
-   char* m_versionString;
-
-   bool m_compat_2500B_N2;
-
-   // nope
-   NITFImageManager(NITFImageManager&);
-   NITFImageManager& operator=(const NITFImageManager&);
-};
-
-LT_END_NAMESPACE(LizardTech)
-
-#endif // NITFIMAGEMANAGER_H
diff --git a/src/DSDK/include/j2k_readers/NITFImageReader.h b/src/DSDK/include/j2k_readers/NITFImageReader.h
deleted file mode 100644
index 260f9dd..0000000
--- a/src/DSDK/include/j2k_readers/NITFImageReader.h
+++ /dev/null
@@ -1,170 +0,0 @@
-/* $Id: NITFImageReader.h 5124 2006-10-27 11:40:40Z lubia $ */
-/* //////////////////////////////////////////////////////////////////////////
-//                                                                         //
-// This code is Copyright (c) 2005 LizardTech, Inc, 1008 Western Avenue,   //
-// Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         //
-// prohibited.  Access to and use of this code is permitted only under     //
-// license from LizardTech, Inc.  Portions of the code are protected by    //
-// US and foreign patents and other filings. All Rights Reserved.          //
-//                                                                         //
-////////////////////////////////////////////////////////////////////////// */
-/* PUBLIC */
-
-#ifndef NITFIMAGEREADER_H
-#define NITFIMAGEREADER_H
-
-// lt_lib_base
-#include "lt_base.h"
-
-// lt_lib_mrsid_core
-#include "lti_geoImageReader.h"
-
-// local
-#include "nitf_types.h"
-
-LT_BEGIN_NAMESPACE(LizardTech)
-
-class LTFileSpec;
-class LTIOStreamInf;
-class NITFFileHeader;
-class NITFImageManager;
-class NITFImageSegment;
-class LTReusableBuffer;
-class LTIReusableBSQBuffer;
-class NITFImageSegmentMetadata;
-class NITFSecurityMetadata;
-
-/**
- * class for reading an NITF JPEG 2000 image segment
- *
- * This class provides support for reading an NITF
- * image segment.  NITFImageManager objects are not
- * to be created directly; the NITFImageManager class
- * contains a createReader() function for this purpose.
- *
- * THIS CLASS SUBJECT TO SIGNIFICANT CHANGE IN SUBSEQUENT RELEASES.
- */
-class NITFImageReader : public LTIGeoImageReader
-{
-public:
-   // do not call - access only via the Manager
-   NITFImageReader(LTIOStreamInf* stream,
-                   NITFImageManager& manager,
-                   const NITFImageSegment& imageSegment,
-                   bool useWorldFile);
-
-   virtual ~NITFImageReader();
-   virtual LT_STATUS initialize() = 0;
-
-   /**
-    * returns the IID1 field for the segment
-    */
-   const char* getIID1() const;
-
-   virtual lt_int64 getPhysicalFileSize() const;
-
-   // not for general use
-   NITFImageManager& getManager() const;
-   // not for general use
-   void takeOwnershipOfManager();
-
-   /**
-    * returns the compression format of the segment
-    */
-   NITFFormat getFormat() const;
-
-   /**
-    * returns the pixel layout of the segment
-    */
-   NITFLayout getLayout() const;
-
-   /**
-    * returns true iff the image segment is in blocked form
-    */
-   bool isBlocked() const;
-
-   /**
-    * returns true iff block masking is used in the image segment
-    */
-   bool isMasked() const;
-
-   /**
-    * returns the index of this image segment 
-    */
-  int getSegmentNumber() const;
-
-   /**
-    * returns the image segment metadata object for this segment
-    */
-  const NITFImageSegmentMetadata* getImageMetadata() const;
-
-   /**
-    * returns the secuirty metadata object for this segment
-    */
-  const NITFSecurityMetadata* getSecurityMetadata() const;
-
-  virtual LT_STATUS getDimsAtMag(double mag,
-                                 lt_uint32& width,
-                                 lt_uint32& height) const =0;
-  virtual LT_STATUS projectPointAtMag(double upperLeft,
-                                      double mag,
-                                      double& newUpperLeft) const =0;
-  virtual LT_STATUS projectDimAtMag(double dim,
-                                    double mag,
-                                    double& newDim) const =0;
-
-protected:
-   LT_STATUS initializeBase();
-
-   LT_STATUS addUnderlyingMetadata(const LTIImageReader&);
-
-   virtual LT_STATUS decodeStrip(LTISceneBuffer& stripBuffer, const LTIScene& stripScene) =0;
-   virtual LT_STATUS decodeBegin(const LTIScene& scene) =0;
-   virtual LT_STATUS decodeEnd() =0;
-   
-   NITFImageManager& m_manager;
-   LTIOStreamInf* m_dataStream;
-   bool m_ownsTheManager;
-
-   const NITFFileHeader* m_fileHeader;
-   const NITFImageSegment& m_imageSegment;
-
-   bool m_useTheWorldFile;
-
-   // blocked image support
-   LTIScene computeBlockedScene(const LTIScene& scene) const;
-   LT_STATUS copyIntoUserBuffer(const LTIScene& dstScene,
-                                LTISceneBuffer& dstBuffer) const;
-   bool activeSceneContains(const LTIScene& scene) const;
-   void putBlockIntoBuffer_SEQ(LTISceneBuffer& cBuffer,
-                               lt_uint8* buf,
-                               lt_uint32 blockRow,
-                               lt_uint32 blockCol,
-                               lt_uint32 blockBand) const;
-   void putBlockIntoBuffer_BLOCK(LTISceneBuffer& cBuffer,
-                                 lt_uint8* buf,
-                                 lt_uint32 blockRow,
-                                 lt_uint32 blockCol) const;
-   void putBlockIntoBuffer_PIXEL(LTISceneBuffer& cBuffer,
-                               lt_uint8* buf,
-                               lt_uint32 blockRow,
-                               lt_uint32 blockCol) const;
-   void putBlockIntoBuffer_ROW(LTISceneBuffer& cBuffer,
-                               lt_uint8* buf,
-                               lt_uint32 blockRow,
-                               lt_uint32 blockCol) const;
-
-   LTReusableBuffer* m_reusableBuffer;
-   LTIScene* m_activeScene;
-   LTISceneBuffer* m_activeSceneBuffer;
-   LTIReusableBSQBuffer* m_activeReusableBuffer;
-
-private:
-   // nope
-   NITFImageReader(NITFImageReader&);
-   NITFImageReader& operator=(const NITFImageReader&);
-};
-
-LT_END_NAMESPACE(LizardTech)
-
-#endif // NITFIMAGEREADER_H
diff --git a/src/DSDK/include/j2k_readers/j2k_types.h b/src/DSDK/include/j2k_readers/j2k_types.h
deleted file mode 100644
index e02df2c..0000000
--- a/src/DSDK/include/j2k_readers/j2k_types.h
+++ /dev/null
@@ -1,73 +0,0 @@
-/* $Id: j2k_types.h 5124 2006-10-27 11:40:40Z lubia $ */
-/* //////////////////////////////////////////////////////////////////////////
-//                                                                         //
-// This code is Copyright (c) 2004 LizardTech, Inc, 1008 Western Avenue,   //
-// Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         //
-// prohibited.  Access to and use of this code is permitted only under     //
-// license from LizardTech, Inc.  Portions of the code are protected by    //
-// US and foreign patents and other filings. All Rights Reserved.          //
-//                                                                         //
-////////////////////////////////////////////////////////////////////////// */
-/* PUBLIC */
-
-#ifndef J2K_TYPES_H
-#define J2K_TYPES_H
-
-// lt_lib_base
-#include "lt_base.h"
-
-#if defined(LT_COMPILER_MS)
-   #pragma warning(push,4)
-#endif
-
-LT_BEGIN_NAMESPACE(LizardTech)
-
-
-/**
- * constants used to define progression orders
- */
-enum J2KProgressionOrder
-{
-   J2K_ORDER_INVALID = 0,
-   J2K_ORDER_LRCP    = 1,
-   J2K_ORDER_RLCP    = 2,
-   J2K_ORDER_RPCL    = 3,
-   J2K_ORDER_PCRL    = 4,
-   J2K_ORDER_CPRL    = 5
-};
-
-
-/**
- * constants used to define tile part styles
- */
-enum J2KTilePartFlags
-{
-   J2K_TILEPART_FLAG_NONE  = 0,
-   J2K_TILEPART_FLAG_R     = 1,
-   J2K_TILEPART_FLAG_L     = 2,
-   J2K_TILEPART_FLAG_C     = 4,
-   J2K_TILEPART_FLAG_MAX   = (J2K_TILEPART_FLAG_R | 
-                              J2K_TILEPART_FLAG_L |
-                              J2K_TILEPART_FLAG_C)
-};
-
-
-/**
- * file format (roughly)
- */
-enum J2KFileFormat
-{
-   J2K_FILEFORMAT_INVALID  = 0,
-   J2K_FILEFORMAT_JPC      = 1,
-   J2K_FILEFORMAT_JP2      = 2,
-   J2K_FILEFORMAT_JPX      = 3
-};
-
-
-LT_END_NAMESPACE(LizardTech)
-
-#if defined(LT_COMPILER_MS)
-	#pragma warning(pop)
-#endif
-
-#endif // J2K_TYPES_H
diff --git a/src/DSDK/include/j2k_readers/lti_j2kStatus.h b/src/DSDK/include/j2k_readers/lti_j2kStatus.h
deleted file mode 100644
index 47435d5..0000000
--- a/src/DSDK/include/j2k_readers/lti_j2kStatus.h
+++ /dev/null
@@ -1,160 +0,0 @@
-/* $Id: lti_j2kStatus.h 5124 2006-10-27 11:40:40Z lubia $ */
-/* //////////////////////////////////////////////////////////////////////////
-//                                                                         //
-// This code is Copyright (c) 2004 LizardTech, Inc, 1008 Western Avenue,   //
-// Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         //
-// prohibited.  Access to and use of this code is permitted only under     //
-// license from LizardTech, Inc.  Portions of the code are protected by    //
-// US and foreign patents and other filings. All Rights Reserved.          //
-//                                                                         //
-////////////////////////////////////////////////////////////////////////// */
-/* PUBLIC */
-
-#ifndef LTI_J2KSTATUS_H
-#define LTI_J2KSTATUS_H
-
-#include "lt_base.h"
-
-#define LTI_STS_J2K_Base                                          50900
-LT_STATUSSTRING_ADD(LTI_STS_J2K_Base, "lt_lib_mrsid_j2k base")
-
-#define LTI_STS_J2K_CannotWriteFile                               50901
-LT_STATUSSTRING_ADD(LTI_STS_J2K_CannotWriteFile, "JP2: cannot write to file %F")
-
-#define LTI_STS_J2K_UnsupColorSpace                               50902
-LT_STATUSSTRING_ADD(LTI_STS_J2K_UnsupColorSpace, "JP2: unsupported colorspace")
-
-#define LTI_STS_J2K_UnsupDataType                                 50903
-LT_STATUSSTRING_ADD(LTI_STS_J2K_UnsupDataType, "JP2: unsupported datatype")
-
-#define LTI_STS_J2K_LibraryError                                  50904
-LT_STATUSSTRING_ADD(LTI_STS_J2K_LibraryError, "JP2: internal error")
-
-#define LTI_STS_J2K_HandledError                                  50905
-LT_STATUSSTRING_ADD(LTI_STS_J2K_HandledError, "JP2: internal error (%s)")
-
-#define LTI_STS_J2K_InvalidRegion                                 50906
-LT_STATUSSTRING_ADD(LTI_STS_J2K_InvalidRegion, "JP2: invalid region")
-
-#define LTI_STS_J2K_InvalidDims                                   50907
-LT_STATUSSTRING_ADD(LTI_STS_J2K_InvalidDims, "JP2: invalid/unsupported dimensions")
-
-#define LTI_STS_J2K_InvalidDecodeScene                            50908
-LT_STATUSSTRING_ADD(LTI_STS_J2K_InvalidDecodeScene, "JP2: invalid scene for decode")
-
-#define LTI_STS_J2K_BadDecodeParam                                50909
-LT_STATUSSTRING_ADD(LTI_STS_J2K_BadDecodeParam, "JP2: invalid decoder parameter setting")
-
-#define LTI_STS_J2K_MetadataReadError                             50910
-LT_STATUSSTRING_ADD(LTI_STS_J2K_MetadataReadError, "JP2: error reading metadata")
-
-#define LTI_STS_J2K_MetadataUuidNotFound                          50911
-LT_STATUSSTRING_ADD(LTI_STS_J2K_MetadataUuidNotFound, "JP2: uuid not found")
-
-#define LTI_STS_J2K_BadPrecisionParam                             50912
-LT_STATUSSTRING_ADD(LTI_STS_J2K_BadPrecisionParam, "JP2: bad precision value")
-
-#define LTI_STS_J2K_BadLayersParam                                50915
-LT_STATUSSTRING_ADD(LTI_STS_J2K_BadLayersParam, "JP2: bad quality layers value")
-
-#define LTI_STS_J2K_CannotReadFile                                50916
-LT_STATUSSTRING_ADD(LTI_STS_J2K_CannotReadFile, "JP2: cannot read file")
-
-#define LTI_STS_J2K_BadTileParam                                  50917
-LT_STATUSSTRING_ADD(LTI_STS_J2K_BadTileParam, "JP2: bad tile size value (limit of 65535 tiles)")
-
-#define LTI_STS_J2K_BadFlushParam                                 50918
-LT_STATUSSTRING_ADD(LTI_STS_J2K_BadFlushParam, "JP2: bad flush period value")
-
-#define LTI_STS_J2K_BadPrecinctsParam                             50919
-LT_STATUSSTRING_ADD(LTI_STS_J2K_BadPrecinctsParam, "JP2: bad precincts values")
-
-#define LTI_STS_J2K_BadProgressionParam                           50920
-LT_STATUSSTRING_ADD(LTI_STS_J2K_BadProgressionParam, "JP2: bad progression order")
-
-#define LTI_STS_J2K_BadCodeblockParam                             50921
-LT_STATUSSTRING_ADD(LTI_STS_J2K_BadCodeblockParam, "JP2: bad codeblock value")
-
-#define LTI_STS_J2K_BadTilePartParam                             50922
-LT_STATUSSTRING_ADD(LTI_STS_J2K_BadTilePartParam, "JP2: bad tile part value")
-
-// usused 50923
-
-#define LTI_STS_J2K_UnsupSigned                                   50924
-LT_STATUSSTRING_ADD(LTI_STS_J2K_UnsupSigned, "JP2: unsupported datatype - signed")
-
-#define LTI_STS_J2K_InvalidBandNumber                             50925
-LT_STATUSSTRING_ADD(LTI_STS_J2K_InvalidBandNumber, "JP2: invalid band number")
-
-#define LTI_STS_J2K_IrregularImage                                50926
-LT_STATUSSTRING_ADD(LTI_STS_J2K_IrregularImage, "JP2: band sizes/shapes are irregular")
-
-#define LTI_STS_J2K_UnsupProfileVersion                           50927
-LT_STATUSSTRING_ADD(LTI_STS_J2K_UnsupProfileVersion, "JP2: unsupported profile version")
-
-#define LTI_STS_J2K_ProfileReadError                              50928
-LT_STATUSSTRING_ADD(LTI_STS_J2K_ProfileReadError, "JP2: error reading profile")
-
-#define LTI_STS_J2K_ProfileUnkElem                                50929
-LT_STATUSSTRING_ADD(LTI_STS_J2K_ProfileUnkElem, "JP2: unknown element in profile")
-
-#define LTI_STS_J2K_ProfileBadData                                50930
-LT_STATUSSTRING_ADD(LTI_STS_J2K_ProfileBadData, "JP2: bad data/argument in profile")
-
-#define LTI_STS_J2K_ProfileOpenError                              50931
-LT_STATUSSTRING_ADD(LTI_STS_J2K_ProfileOpenError, "JP2: error opening profile")
-
-
-#define LTI_STS_J2K_LibraryErrorB                                 50940
-LT_STATUSSTRING_ADD(LTI_STS_J2K_LibraryErrorB, "JP2: internal error")
-
-#define LTI_STS_J2K_LibraryErrorL                                 50941
-LT_STATUSSTRING_ADD(LTI_STS_J2K_LibraryErrorL, "JP2: internal error")
-
-#define LTI_STS_J2K_LibraryErrorE                                 50942
-LT_STATUSSTRING_ADD(LTI_STS_J2K_LibraryErrorE, "JP2: internal error")
-
-#define LTI_STS_J2K_ROIScene                                      50943
-LT_STATUSSTRING_ADD(LTI_STS_J2K_ROIScene, "JP2: invalid scene for ROI encoding")
-
-#define LTI_STS_J2K_AllocFailed                                   50944
-LT_STATUSSTRING_ADD(LTI_STS_J2K_AllocFailed, "JP2: memory allocation failed")
-
-#define LTI_STS_J2K_InternalROI1                                  50945
-LT_STATUSSTRING_ADD(LTI_STS_J2K_InternalROI1, "JP2: internal error processing ROI")
-
-#define LTI_STS_J2K_InternalROI2                                  50946
-LT_STATUSSTRING_ADD(LTI_STS_J2K_InternalROI2, "JP2: internal error processing ROI")
-
-#define LTI_STS_J2K_InternalSamp16                                50947
-LT_STATUSSTRING_ADD(LTI_STS_J2K_InternalSamp16, "JP2: internal error processing sample")
-
-#define LTI_STS_J2K_FileNotFound                                  50950
-LT_STATUSSTRING_ADD(LTI_STS_J2K_FileNotFound, "JP2: file not found")
-
-#define LTI_STS_J2K_ReadError                                     50951
-LT_STATUSSTRING_ADD(LTI_STS_J2K_ReadError, "JP2: error reading file")
-
-#define LTI_STS_J2K_FileNotJ2K                                    50952
-LT_STATUSSTRING_ADD(LTI_STS_J2K_FileNotJ2K, "JP2: not valid JPEG 2000 file")
-
-#define LTI_STS_J2K_NotPersistent                                 50953
-LT_STATUSSTRING_ADD(LTI_STS_J2K_NotPersistent, "JP2: attempted second decode with isPersistent==false")
-
-
-#define LTI_STS_J2K_MSIChunkError1                                50980
-LT_STATUSSTRING_ADD(LTI_STS_J2K_MSIChunkError1, "JP2: internal error 1")
-
-#define LTI_STS_J2K_MSIChunkError2                                50981
-LT_STATUSSTRING_ADD(LTI_STS_J2K_MSIChunkError2, "JP2: internal error 2")
-
-#define LTI_STS_J2K_MSIChunkError3                                50982
-LT_STATUSSTRING_ADD(LTI_STS_J2K_MSIChunkError3, "JP2: internal error 3")
-
-#define LTI_STS_J2K_MSIChunkError4                                50983
-LT_STATUSSTRING_ADD(LTI_STS_J2K_MSIChunkError4, "JP2: internal error 4")
-
-#define LTI_STS_J2K_Max                                           50999
-LT_STATUSSTRING_ADD(LTI_STS_J2K_Max, "lt_lib_mrsid_j2k max")
-
-#endif // LTI_J2KSTATUS_H
diff --git a/src/DSDK/include/j2k_readers/lti_nitfStatus.h b/src/DSDK/include/j2k_readers/lti_nitfStatus.h
deleted file mode 100644
index 076c377..0000000
--- a/src/DSDK/include/j2k_readers/lti_nitfStatus.h
+++ /dev/null
@@ -1,111 +0,0 @@
-/* $Id: lti_nitfStatus.h 5124 2006-10-27 11:40:40Z lubia $ */
-/* //////////////////////////////////////////////////////////////////////////
-//                                                                         //
-// This code is Copyright (c) 2005 LizardTech, Inc, 1008 Western Avenue,   //
-// Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         //
-// prohibited.  Access to and use of this code is permitted only under     //
-// license from LizardTech, Inc.  Portions of the code are protected by    //
-// US and foreign patents and other filings. All Rights Reserved.          //
-//                                                                         //
-////////////////////////////////////////////////////////////////////////// */
-/* PUBLIC */
-
-#ifndef LTI_NITFSTATUS_H
-#define LTI_NITFSTATUS_H
-
-#include "lt_base.h"
-
-
-#define LTI_STS_NITF_Base                                      51200
-LT_STATUSSTRING_ADD(LTI_STS_NITF_Base, "lt_lib_mrsid_nitf base")
-
-
-#define LTI_STS_NITF_UnsupDataType                             51201
-LT_STATUSSTRING_ADD(LTI_STS_NITF_UnsupDataType, "unsupported datatype")
-
-#define LTI_STS_NITF_UnsupColorSpace                           51202
-LT_STATUSSTRING_ADD(LTI_STS_NITF_UnsupColorSpace, "unsupported colorspace")
-
-#define LTI_STS_NITF_ErrorOpeningFile                          51203
-LT_STATUSSTRING_ADD(LTI_STS_NITF_ErrorOpeningFile, "error opening file")
-
-#define LTI_STS_NITF_ErrorReadingFile                          51204
-LT_STATUSSTRING_ADD(LTI_STS_NITF_ErrorReadingFile, "error reading file")
-
-#define LTI_STS_NITF_UnsupLUT                                  51205
-LT_STATUSSTRING_ADD(LTI_STS_NITF_UnsupLUT, "LUTs unsupported")
-
-#define LTI_STS_NITF_InvalidImageSegment                       51206
-LT_STATUSSTRING_ADD(LTI_STS_NITF_InvalidImageSegment, "invalid image segment number")
-
-#define LTI_STS_NITF_AllocFailed                               51207
-LT_STATUSSTRING_ADD(LTI_STS_NITF_AllocFailed, "memory allocation failed")
-
-#define LTI_STS_NITF_InvalidNITF                               51210
-LT_STATUSSTRING_ADD(LTI_STS_NITF_InvalidNITF, "file is not valid NITF 2.1 (2500C) file")
-
-#define LTI_STS_NITF_UnsupEncrypt                              51211
-LT_STATUSSTRING_ADD(LTI_STS_NITF_UnsupEncrypt, "encrypted NITF not supported")
-
-#define LTI_STS_NITF_UnsupStreaming                            51212
-LT_STATUSSTRING_ADD(LTI_STS_NITF_UnsupStreaming, "NITF STREAMING extension not supported")
-
-#define LTI_STS_NITF_UnsupV11                                  51213
-LT_STATUSSTRING_ADD(LTI_STS_NITF_UnsupV11, "NITF v1.1 not supported")
-
-#define LTI_STS_NITF_UnsupImageFormat                          51214
-LT_STATUSSTRING_ADD(LTI_STS_NITF_UnsupImageFormat, "NITF image format (IC) not supported")
-
-#define LTI_STS_NITF_UnsupImageFormatBilevel                   51215
-LT_STATUSSTRING_ADD(LTI_STS_NITF_UnsupImageFormatBilevel, "NITF bilevel image format not supported")
-
-#define LTI_STS_NITF_UnsupImageFormatJpeg                      51216
-LT_STATUSSTRING_ADD(LTI_STS_NITF_UnsupImageFormatJpeg, "NITF JPEG image format not supported")
-
-#define LTI_STS_NITF_UnsupImageFormatVQ                        51217
-LT_STATUSSTRING_ADD(LTI_STS_NITF_UnsupImageFormatVQ, "NITF VQ image format not supported")
-
-#define LTI_STS_NITF_UnsupImageFormatJpegLS                    51218
-LT_STATUSSTRING_ADD(LTI_STS_NITF_UnsupImageFormatJpegLS, "NITF lossless JPEG image format not supported")
-
-#define LTI_STS_NITF_UnsupImageFormatJpegDS                    51219
-LT_STATUSSTRING_ADD(LTI_STS_NITF_UnsupImageFormatJpegDS, "NITF downsampled JPEG image format not supported")
-
-#define LTI_STS_NITF_GraphicUnsup                              51220
-LT_STATUSSTRING_ADD(LTI_STS_NITF_GraphicUnsup, "Graphic segment version unsupported")
-
-#define LTI_STS_NITF_UnsupUnalignedData                        51221
-LT_STATUSSTRING_ADD(LTI_STS_NITF_UnsupUnalignedData, "non-byte-aligned data is unsupported")
-
-#define LTI_STS_NITF_ErrorParsingJPG                           51222
-LT_STATUSSTRING_ADD(LTI_STS_NITF_ErrorParsingJPG, "error parsing JPEG segment")
-
-#define LTI_STS_NITF_BadlyFormedString                         51223
-LT_STATUSSTRING_ADD(LTI_STS_NITF_BadlyFormedString, "badly formed string")
-
-#define LTI_STS_NITF_UnsupImageFormatJp2Block                  51224
-LT_STATUSSTRING_ADD(LTI_STS_NITF_UnsupImageFormatJp2Block, "NITF blocked JP2 image format not supported")
-
-#define LTI_STS_NITF_UnsupImagePJust                           51225
-LT_STATUSSTRING_ADD(LTI_STS_NITF_UnsupImagePJust, "PJUST=L not supported")
-
-#define LTI_STS_NITF_UnsupScene                                51226
-LT_STATUSSTRING_ADD(LTI_STS_NITF_UnsupScene, "specified scene must be entire image")
-
-#define LTI_STS_NITF_TooManySegments                           51227
-LT_STATUSSTRING_ADD(LTI_STS_NITF_TooManySegments, "maximum number of image segments exceeded")
-
-#define LTI_STS_NITF_ILOCExceeded                              51228
-LT_STATUSSTRING_ADD(LTI_STS_NITF_ILOCExceeded, "image segments out of file format range (ILOC)")
-
-#define LTI_STS_NITF_SegmentTooLarge                           51229
-LT_STATUSSTRING_ADD(LTI_STS_NITF_SegmentTooLarge, "image segment is larger than 10GB")
-
-#define LTI_STS_NITF_StreamDupError                            51230
-LT_STATUSSTRING_ADD(LTI_STS_NITF_StreamDupError, "error duplicating stream")
-
-#define LTI_STS_NITF_Max                                       51299
-LT_STATUSSTRING_ADD(LTI_STS_NITF_Max, "lt_lib_mrsid_nitf max")
-
-
-#endif // LTI_NITFSTATUS_H
diff --git a/src/DSDK/include/j2k_readers/nitf_types.h b/src/DSDK/include/j2k_readers/nitf_types.h
deleted file mode 100644
index 2192c56..0000000
--- a/src/DSDK/include/j2k_readers/nitf_types.h
+++ /dev/null
@@ -1,73 +0,0 @@
-/* $Id: nitf_types.h 5124 2006-10-27 11:40:40Z lubia $ */
-/* //////////////////////////////////////////////////////////////////////////
-//                                                                         //
-// This code is Copyright (c) 2005 LizardTech, Inc, 1008 Western Avenue,   //
-// Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         //
-// prohibited.  Access to and use of this code is permitted only under     //
-// license from LizardTech, Inc.  Portions of the code are protected by    //
-// US and foreign patents and other filings. All Rights Reserved.          //
-//                                                                         //
-////////////////////////////////////////////////////////////////////////// */
-/* PUBLIC */
-
-#ifndef NITF_TYPES_H
-#define NITF_TYPES_H
-
-// lt_lib_base
-#include "lt_base.h"
-
-// lt_lib_mrsid_core
-
-LT_BEGIN_NAMESPACE(LizardTech)
-
-
-
-/**
- * version
- *
- * This enum is used to represent the version of the NITF file.
- */
-enum NITFVersion
-{
-   NITF_VERSION_INVALID,
-   NITF_VERSION_11, 
-   NITF_VERSION_20,
-   NITF_VERSION_21
-};
-
-
-/**
- * image/compression format
- *
- * This enum is used to represent the compression format of an image segment.
- */
-enum NITFFormat    // IC field
-{
-   NITF_FORMAT_INVALID,
-   NITF_FORMAT_RAW,
-   NITF_FORMAT_BILEVEL,
-   NITF_FORMAT_JPEG,
-   NITF_FORMAT_VQ,
-   NITF_FORMAT_JPEGLS,
-   NITF_FORMAT_JPEGDS,
-   NITF_FORMAT_JP2
-};
-
-
-/**
- * layout
- *
- * This enum is used to represent the data layout of an image segment.
- */
-enum NITFLayout    // IMODE field
-{
-   NITF_LAYOUT_INVALID,
-   NITF_LAYOUT_BLOCK,      // B: interleaved by block
-   NITF_LAYOUT_PIXEL,      // P: interleaved by pixel
-   NITF_LAYOUT_ROW,        // R: interleaved by row (line)
-   NITF_LAYOUT_SEQ         // S: sequential (not interleaved)
-};
-
-LT_END_NAMESPACE(LizardTech)
-
-#endif // NITF_TYPES_H
diff --git a/src/DSDK/include/metadata/lti_geoMetadataStatus.h b/src/DSDK/include/metadata/lti_geoMetadataStatus.h
deleted file mode 100644
index 51bc099..0000000
--- a/src/DSDK/include/metadata/lti_geoMetadataStatus.h
+++ /dev/null
@@ -1,62 +0,0 @@
-/* $Id: lti_geoMetadataStatus.h 5124 2006-10-27 11:40:40Z lubia $ */
-/* //////////////////////////////////////////////////////////////////////////
-//                                                                         //
-// This code is Copyright (c) 2005 LizardTech, Inc, 1008 Western Avenue,   //
-// Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         //
-// prohibited.  Access to and use of this code is permitted only under     //
-// license from LizardTech, Inc.  Portions of the code are protected by    //
-// US and foreign patents and other filings. All Rights Reserved.          //
-//                                                                         //
-////////////////////////////////////////////////////////////////////////// */     
-/* PUBLIC */
-
-#ifndef LTI_GEOMETADATASTATUS_H
-#define LTI_GEOMETADATASTATUS_H
-
-#include "lt_base.h"
-
-#define LTI_STS_GeoMetadata_Base                        51300
-LT_STATUSSTRING_ADD(LTI_STS_GeoMetadata_Base, "lt_lib_mrsid_geoMetadata base")
-
-#define LTI_STS_GeoMetadata_BadTIFFIFDRead              51301
-LT_STATUSSTRING_ADD(LTI_STS_GeoMetadata_BadTIFFIFDRead, "bad TIFF IFD read")
-
-#define LTI_STS_GeoMetadata_BadTIFFIFDWrite             51302
-LT_STATUSSTRING_ADD(LTI_STS_GeoMetadata_BadTIFFIFDWrite, "bad TIFF IFD write")
-
-#define LTI_STS_GeoMetadata_BadGeoTIFFDir               51303
-LT_STATUSSTRING_ADD(LTI_STS_GeoMetadata_BadGeoTIFFDir, "bad GeoTIFF Directory")
-
-#define LTI_STS_GeoMetadata_InvalidSRS                  51304
-LT_STATUSSTRING_ADD(LTI_STS_GeoMetadata_InvalidSRS, "invalid SRS")
-
-#define LTI_STS_GeoMetadata_InvalidDOQMetadata          51305
-LT_STATUSSTRING_ADD(LTI_STS_GeoMetadata_InvalidDOQMetadata, "invalid DOQ metadata")
-
-#define LTI_STS_GeoMetadata_GDALDATANotSet              51306
-LT_STATUSSTRING_ADD(LTI_STS_GeoMetadata_GDALDATANotSet, "GDAL_DATA not set")
-
-#define LTI_STS_GeoMetadata_PROJSONotSet                51307
-LT_STATUSSTRING_ADD(LTI_STS_GeoMetadata_PROJSONotSet, "PROJSO not set")
-
-#define LTI_STS_GeoMetadata_NITFMGRSError               51308
-LT_STATUSSTRING_ADD(LTI_STS_GeoMetadata_NITFMGRSError, "MGRS conversion error")
-
-#define LTI_STS_GeoMetadata_NITFUnsupIGEOLO             51309
-LT_STATUSSTRING_ADD(LTI_STS_GeoMetadata_NITFUnsupIGEOLO, "unsupported IGEOLO setting")
-
-#define LTI_STS_GeoMetadata_CouldNotCreateTransformer   51310
-LT_STATUSSTRING_ADD(LTI_STS_GeoMetadata_CouldNotCreateTransformer, "could not create coordinate transformer")
-
-#define LT_STS_GeoMetadata_ReprojectionErr              51311
-LT_STATUSSTRING_ADD(LT_STS_GeoMetadata_ReprojectionErr, "coordinate reprojection error")
-
-#define LTI_STS_GeoMetadata_InvalidWKT                  51312
-LT_STATUSSTRING_ADD(LTI_STS_GeoMetadata_InvalidWKT, "invalid WKT")
-
-#define LTI_STS_GeoMetadata_Max                         51399
-LT_STATUSSTRING_ADD(LTI_STS_GeoMetadata_Max, "lt_lib_mrsid_geoMetadata max")
-
-
-
-#endif // LTI_GEOMETADATASTATUS_H
diff --git a/src/DSDK/include/metadata/lti_metadataDatabase.h b/src/DSDK/include/metadata/lti_metadataDatabase.h
deleted file mode 100644
index 8cd819c..0000000
--- a/src/DSDK/include/metadata/lti_metadataDatabase.h
+++ /dev/null
@@ -1,269 +0,0 @@
-/* $Id: lti_metadataDatabase.h 5124 2006-10-27 11:40:40Z lubia $ */
-/* //////////////////////////////////////////////////////////////////////////
-//                                                                         //
-// This code is Copyright (c) 2004 LizardTech, Inc, 1008 Western Avenue,   //
-// Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         //
-// prohibited.  Access to and use of this code is permitted only under     //
-// license from LizardTech, Inc.  Portions of the code are protected by    //
-// US and foreign patents and other filings. All Rights Reserved.          //
-//                                                                         //
-////////////////////////////////////////////////////////////////////////// */
-/* PUBLIC */
-
-#ifndef LTIMETADATADATABASE_H
-#define LTIMETADATADATABASE_H
-
-// lt_lib_base
-#include "lt_base.h"
-
-// lt_lib_mrsid_metadata
-#include "lti_metadataTypes.h"
-
-
-LT_BEGIN_NAMESPACE(LizardTech)
-
-#if defined(LT_COMPILER_MS)
-   #pragma warning(push,4)
-#endif
-
-class LTIMetadataRecord;
-
-
-/**
- * class for storing metadata associated with an image
- *
- * This class implements a simple database which holds a set of
- * LTIMetadataRecords.  Each record has a unique tag associated with it.
- *
- * Each LTIImage object contains an LTIMetadataDatabase
- * for the metadata associated with that image.
- *
- * The database (and records) are stored in memory in a format-neutral
- * manner.  For importing or exporting metadata records to permanent
- * storage, see the LTIMetadataReader and LTIMetadataWriter classes.
- */
-class LTIMetadataDatabase
-{
-public:
-   /**
-    * default constructor
-    *
-    * This constructor creates an empty metadata database.
-    */
-   LTIMetadataDatabase();
-
-   /**
-    * copy constructor
-    */
-   LTIMetadataDatabase(const LTIMetadataDatabase&);
-
-   /**
-    * destructor
-    */
-   virtual ~LTIMetadataDatabase();
-
-
-   /**
-    * @name Add functions
-    */
-   /*@{*/
-
-   /**
-    * add a record
-    *
-    * This function adds the given record to the metadata database.
-    *
-    * If the database already contains a record with the given tag,
-    * a status code of LT_STS_LTIMetadata_DuplicateTag is returned.
-    *
-    * @param record the record to add 
-    * @return status code indicating success or failure
-    */
-   LT_STATUS add(const LTIMetadataRecord& record);
-
-   /**
-    * add all the records from a database
-    *
-    * This function adds all the records from the given database to this
-    * database.
-    *
-    * If the database already contains a record with the same tag as one
-    * of the records in the database being added, no records are added and
-    * a status code of LT_STS_LTIMetadata_DuplicateTag is returned.
-    *
-    * @param database the database containing the records to add 
-    * @return status code indicating success or failure
-    */
-   LT_STATUS add(const LTIMetadataDatabase& database);
-
-   /*@}*/
-
-
-   /**
-    * @name Retrieval functions
-    */
-   /*@{*/
-
-   /**
-    * retrieve a record, given a tag name
-    *
-    * This function returns a pointer to the (first) record in the database
-    * that matches the given tag name.
-    *
-    * If the tag is not found, the pointer will be set to NULL and
-    * a status of LT_STS_LTIMetadata_TagNotFound will be returned.
-    *
-    * @param   tagName  the name of the tag of the record to retrieve 
-    * @param   record   pointer to the retrieved record 
-    * @return  status code indicating success or failure
-    */
-   LT_STATUS get(const char* tagName,
-                 const LTIMetadataRecord*& record) const;
-
-   /**
-    * retrieve a record, given a tag number
-    *
-    * This function returns a pointer to the (first) record in the database
-    * that matches the given tag number.
-    *
-    * If the tag is not found, the pointer will be set to NULL and
-    * a status of LT_STS_LTIMetadata_TagNotFound will be returned.
-    *
-    * @param   tag     the number of the tag of the record to retrieve 
-    * @param   record  pointer to the retrieved record 
-    * @return  status code indicating success or failure
-    */
-   LT_STATUS get(LTIMetadataTag tag,
-                 const LTIMetadataRecord*& record) const;
-
-   /**
-    * lookup a record, given a tag name
-    *
-    * This function returns a boolean indicating whether the database
-    * contains a record with the given tag.
-    *
-    * @param   tagName  the name of the tag of the record to look up 
-    * @return  true if the tag is found, otherwise false
-    */
-   bool has(const char* tagName) const;
-
-   /**
-    * lookup a record, given a tag number
-    *
-    * This function returns a boolean indicating whether the database
-    * contains a record with the given tag.
-    *
-    * @param   tag  the number of the tag of the record to look up 
-    * @return  true if the tag is found, otherwise false
-    */
-   bool has(LTIMetadataTag tag) const;
-
-   /**
-    * retrieve a record, given an index number
-    *
-    * This function returns a pointer to the (first) record in the database
-    * that matches the given index number.
-    *
-    * In combination with getIndexCount(), this function can be used
-    * to iterate through all the records in the database.  (However, removing
-    * a record will change the index numbers, so be careful if iterating
-    * and removing in the same loop.)
-    *
-    * If the index number is not found, the pointer will be set to NULL and
-    * a status of LT_STS_LTIMetadata_TagNotFound will be returned.
-    *
-    * @param   index  the index number of the record to retrieve 
-    * @param   record  pointer to the retrieved record 
-    * @return  status code indicating success or failure
-    */
-   LT_STATUS getDataByIndex(lt_uint32 index,
-                            const LTIMetadataRecord*& record) const;
-
-   /**
-    * get number of records
-    *
-    * This function will return the number of records in the database.
-    *
-    * @return  the number of records
-    */
-   lt_uint32 getIndexCount() const;
-
-   /*@}*/
-
-
-   /**
-    * @name Removal functions
-    */
-   /*@{*/
-
-   /**
-    * remove a record, given a tag name
-    *
-    * This function will remove the record with the given tag from the
-    * database.
-    *
-    * If the tag is not found, a status of LT_STS_LTIMetadata_TagNotFound
-    * will be returned.
-    *
-    * @param   tagName  the name of the tag of the record to remove 
-    * @return  status code indicating success or failure
-    */
-   LT_STATUS remove(const char* tagName);
-
-   /**
-    * remove a record, given a tag number
-    *
-    * This function will remove the record with the given tag from the
-    * database.
-    *
-    * If the tag is not found, a status of LT_STS_LTIMetadata_TagNotFound
-    * will be returned.
-    *
-    * @param   tag  the number of the tag of the record to remove 
-    * @return  status code indicating success or failure
-    */
-   LT_STATUS remove(LTIMetadataTag tag);
-
-   /**
-    * remove all records
-    *
-    * This function will remove all the records from the database.
-    *
-    * @return  status code indicating success or failure
-    */
-   LT_STATUS removeAll();
-
-   /*@}*/
-
-   /**
-    * get size of metadata database
-    *
-    * This function will return a close-enough estimate of the size of the
-    * metadata database, as if it were to be written directly to disk.
-    *
-    * @return  size in bytes of the metadata database
-    */
-   lt_int32 getApproximateSize() const;
-
-   /**
-    * Sorts the database records by tag name.  This can be useful in certain
-    * debugging and validation scenarios.
-    */
-   void sort(void);
-
-private:
-   class RecordListX;
-   RecordListX* m_recordList;
-
-   // nope
-   LTIMetadataDatabase& operator=(const LTIMetadataDatabase&);
-};
-
-
-LT_END_NAMESPACE(LizardTech)
-
-#if defined(LT_COMPILER_MS)
-	#pragma warning(pop)
-#endif
-
-#endif // LTIMETADATADATABASE_H
diff --git a/src/DSDK/include/metadata/lti_metadataDumper.h b/src/DSDK/include/metadata/lti_metadataDumper.h
deleted file mode 100644
index b3baf6b..0000000
--- a/src/DSDK/include/metadata/lti_metadataDumper.h
+++ /dev/null
@@ -1,109 +0,0 @@
-/* $Id: lti_metadataDumper.h 5124 2006-10-27 11:40:40Z lubia $ */
-/* //////////////////////////////////////////////////////////////////////////
-//                                                                         //
-// This code is Copyright (c) 2004 LizardTech, Inc, 1008 Western Avenue,   //
-// Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         //
-// prohibited.  Access to and use of this code is permitted only under     //
-// license from LizardTech, Inc.  Portions of the code are protected by    //
-// US and foreign patents and other filings. All Rights Reserved.          //
-//                                                                         //
-////////////////////////////////////////////////////////////////////////// */
-/* PUBLIC */
-
-#ifndef LTIMETADATADUMPER_H
-#define LTIMETADATADUMPER_H
-
-// lt_lib_mrsid_metadata
-#include "lti_metadataWriter.h"
-
-LT_BEGIN_NAMESPACE(LizardTech)
-
-#if defined(LT_COMPILER_MS)
-   #pragma warning(push,4)
-#endif
-
-class LTIOStreamInf;
-class LTIMetadataRecord;
-
-
-/**
- * dumps contents of database in text form
- *
- * This class writes the given database in ASCII text, readable format
- * to a stream or stdout.
- */
-class LTIMetadataDumper: public LTIMetadataWriter
-{
-public:
-   /**
-    * constructor
-    *
-    * This constructor creates an LTIMetadataWriter which will pretty-print
-    * the records in the database to a stream or to stdout.
-    *
-    * @param database the database to write from
-    * @param stream the stream to write to; if NULL, will write to stdout
-    * @param abbreviated dump only the first several elements of each record
-    */
-   LTIMetadataDumper(const LTIMetadataDatabase& database,
-                     LTIOStreamInf* stream,
-                     bool abbreviated=false);
-
-   /**
-    * destructor
-    */
-   ~LTIMetadataDumper();
-
-   /**
-    * write records to stream
-    */
-   LT_STATUS write() const;
-
-   /**
-    * write a single record to stream
-    *
-    * This function writes (pretty-prints) the given record to the stream.
-    *
-    * It is public and static because it is useful on its own for debugging.
-    *
-    * @param record the record to write
-    * @param stream the stream to write to
-    * @param abbreviated dump only the first several elements of the record
-    * @return status code indicating success or failure
-    */
-   static LT_STATUS writeRecord(const LTIMetadataRecord& record,
-                                LTIOStreamInf& stream,
-                                bool abbreviated=false);
-
-
-   /**
-    * INPUT_NAME metadata control
-    *
-    * Control if the IMAGE::INPUT_NAME tag is written out.
-    * This can useful for certain debugging and validation situations.
-    *
-    * The default is to always write the INPUT_NAME tag.
-    *
-    * @param  enable  set to true to not skip the INPUT_NAME tag
-    */
-   void setWriteInputFilename(bool enable); 
-
-private:
-   LTIOStreamInf* m_stream;
-   bool m_ownsStream;
-   bool m_writeInputFilename;
-   const bool m_abbreviated;
-
-   // nope
-   LTIMetadataDumper(const LTIMetadataDumper&);
-   LTIMetadataDumper& operator=(const LTIMetadataDumper&);
-};
-
-
-LT_END_NAMESPACE(LizardTech)
-
-#if defined(LT_COMPILER_MS)
-	#pragma warning(pop)
-#endif
-
-#endif // LTIMETADATADUMPER_H
diff --git a/src/DSDK/include/metadata/lti_metadataReader.h b/src/DSDK/include/metadata/lti_metadataReader.h
deleted file mode 100644
index 8c7ef25..0000000
--- a/src/DSDK/include/metadata/lti_metadataReader.h
+++ /dev/null
@@ -1,89 +0,0 @@
-/* $Id: lti_metadataReader.h 5124 2006-10-27 11:40:40Z lubia $ */
-/* //////////////////////////////////////////////////////////////////////////
-//                                                                         //
-// This code is Copyright (c) 2004 LizardTech, Inc, 1008 Western Avenue,   //
-// Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         //
-// prohibited.  Access to and use of this code is permitted only under     //
-// license from LizardTech, Inc.  Portions of the code are protected by    //
-// US and foreign patents and other filings. All Rights Reserved.          //
-//                                                                         //
-////////////////////////////////////////////////////////////////////////// */
-/* PUBLIC */
-
-#ifndef LTIMETADATAREADER_H
-#define LTIMETADATAREADER_H
-
-// lt_lib_base
-#include "lt_base.h"
-
-LT_BEGIN_NAMESPACE(LizardTech)
-
-#if defined(LT_COMPILER_MS)
-   #pragma warning(push,4)
-#endif
-
-
-class LTIMetadataDatabase;
-
-/**
- * abstract class for populating a metadata database
- *
- * This abstract class provides an interface for importing metadata records
- * from a foreign source into an LTIMetadataDatabase.
- *
- * This is used, for example, to provide a mechanism for reading the TIFF
- * tag style metadata from a MrSID file into the format-neutral, in-memory
- * database.
- */
-class LTIMetadataReader
-{
-public:
-   /**
-    * default constructor
-    *
-    * This base constructor creates a reader object which can insert
-    * records into a database from some foreign source.
-    *
-    * @param database the database to be read into
-    */
-   LTIMetadataReader(LTIMetadataDatabase& database);
-
-   /**
-    * destructor
-    */
-   virtual ~LTIMetadataReader();
-
-   /**
-    * read records into database
-    *
-    * This function must be implemented in the derived class.  It should
-    * read the metadata content from the foreign metadata source, express
-    * it as LTIMetadataRecord objects, and add them to the database.
-    *
-    * @return status code indicating success or failure
-    */
-   virtual LT_STATUS read() = 0;
-
-protected:
-   /**
-    * the database to be read into
-    *
-    * This is the database to be read into.  Derived classes may access it
-    * directly.
-    */
-   LTIMetadataDatabase& m_database;
-
-private:
-   // nope
-   LTIMetadataReader(const LTIMetadataReader&);
-   LTIMetadataReader& operator=(const LTIMetadataReader&);
-};
-
-
-LT_END_NAMESPACE(LizardTech)
-
-#if defined(LT_COMPILER_MS)
-	#pragma warning(pop)
-#endif
-
-#endif // LTIMETADATAREADER_H
diff --git a/src/DSDK/include/metadata/lti_metadataRecord.h b/src/DSDK/include/metadata/lti_metadataRecord.h
deleted file mode 100644
index 996353a..0000000
--- a/src/DSDK/include/metadata/lti_metadataRecord.h
+++ /dev/null
@@ -1,331 +0,0 @@
-/* $Id: lti_metadataRecord.h 5124 2006-10-27 11:40:40Z lubia $ */
-/* //////////////////////////////////////////////////////////////////////////
-//                                                                         //
-// This code is Copyright (c) 2004 LizardTech, Inc, 1008 Western Avenue,   //
-// Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         //
-// prohibited.  Access to and use of this code is permitted only under     //
-// license from LizardTech, Inc.  Portions of the code are protected by    //
-// US and foreign patents and other filings. All Rights Reserved.          //
-//                                                                         //
-////////////////////////////////////////////////////////////////////////// */
-/* PUBLIC */
-
-#ifndef LTIMETADATARECORD_H
-#define LTIMETADATARECORD_H
-
-// lt_lib_base
-#include "lt_base.h"
-
-// lt_lib_mrsid_metadata
-#include "lti_metadataTypes.h"
-
-LT_BEGIN_NAMESPACE(LizardTech)
-
-#if defined(LT_COMPILER_MS)
-   #pragma warning(push,4)
-#endif
-
-
-/**
- * representation of a metadata record
- *
- * This class stores the data associated with a single record in the database.
- * The data consists of:
- *   - the tag (a string), used to uniquely identify the record
- *   - the type of the data, e.g. string, byte, etc
- *   - the dimensionality of the data, e.g. scalar, 2x3 array, etc
- *   - the actual data
- *
- * It is assumed each record has only a single set of data of a single datatype.
- * (That is, a record can't contain both a float and two ints.)
- *
- * Some of the functions for operating on records are cast in the guise
- * of scalar, vector, or array data.  This is for notational convenience only;
- * the internal representation does not distinguish and treats everything as
- * a (possibly degenerate) array.
- */
-class LTIMetadataRecord
-{
-public:
-   /**
-    * default constructor for scalar data
-    *
-    * The constructor creates a record containing a scalar data value.
-    *
-    * Note that the object makes a local copy of the data passed into the
-    * record.
-    *
-    * @param tag the tag number of the record 
-    * @param type datatype of the data in the record 
-    * @param data pointer to the data to insert into the record 
-    */
-   LTIMetadataRecord(LTIMetadataTag tag,
-                     LTIMetadataDataType type,
-                     const void* data);
-
-   /**
-    * default constructor for scalar data
-    *
-    * The constructor creates a record containing a scalar data value.
-    *
-    * Note that the object makes a local copy of the data passed into the
-    * record.
-    *
-    * @param tagName the tag number of the record 
-    * @param type datatype of the data in the record 
-    * @param data pointer to the data to insert into the record 
-    */
-   LTIMetadataRecord(const char* tagName,
-                     LTIMetadataDataType type,
-                     const void* data);
-   
-   /**
-    * default constructor for vector data
-    *
-    * The constructor creates a record containing a vector of data values.
-    *
-    * Note that the object makes a local copy of the data passed into the
-    * record.
-    *
-    * @param tag the tag number of the record 
-    * @param type datatype of the data in the record 
-    * @param data pointer to the data to insert into the record 
-    * @param vecLen the length of the data vector 
-    */
-   LTIMetadataRecord(LTIMetadataTag tag,
-                     LTIMetadataDataType type,
-                     const void* data,
-                     lt_uint32 vecLen);
-   /**
-    * default constructor for vector data
-    *
-    * The constructor creates a record containing a vector of data values.
-    *
-    * Note that the object makes a local copy of the data passed into the
-    * record.
-    *
-    * @param tagName the tag number of the record 
-    * @param type datatype of the data in the record 
-    * @param data pointer to the data to insert into the record 
-    * @param vecLen the length of the data vector 
-    */
-   LTIMetadataRecord(const char* tagName,
-                     LTIMetadataDataType type,
-                     const void* data,
-                     lt_uint32 vecLen);
-
-   /**
-    * default constructor for array data
-    *
-    * The constructor creates a record containing an array of data values.
-    *
-    * Note that the object makes a local copy of the data passed into the
-    * record.
-    *
-    * @param tag the tag number of the record 
-    * @param type datatype of the data in the record 
-    * @param data pointer to the data to insert into the record 
-    * @param numDims the length of the \a dims array 
-    * @param dims the dimensionality of the data 
-    */
-   LTIMetadataRecord(LTIMetadataTag tag,
-                     LTIMetadataDataType type,
-                     const void* data,
-                     lt_uint32 numDims,
-                     const lt_uint32* dims);
-
-   /**
-    * default constructor for array data
-    *
-    * The constructor creates a record containing an array of data values.
-    *
-    * Note that the object makes a local copy of the data passed into the
-    * record.
-    *
-    * @param tagName the tag number of the record 
-    * @param type datatype of the data in the record 
-    * @param data pointer to the data to insert into the record 
-    * @param numDims the length of the \a dims array 
-    * @param dims the dimensionality of the data 
-    */
-   LTIMetadataRecord(const char* tagName,
-                     LTIMetadataDataType type,
-                     const void* data,
-                     lt_uint32 numDims,
-                     const lt_uint32* dims);
-
-   /**
-    * copy constructor
-    */
-   LTIMetadataRecord(const LTIMetadataRecord&);
-
-   /**
-    * destructor
-    */
-   ~LTIMetadataRecord();
-
-   /**
-    * get tag
-    *
-    * This function returns the tag number (enum) associated with the record.
-    *
-    * @return the tag
-    */
-   LTIMetadataTag getTag() const;
-
-   /**
-    * get tag name
-    *
-    * This function returns the tag name (string) associated with the record.
-    *
-    * @return the tag name
-    */
-   const char* getTagName() const;
-
-   /**
-    * get datatype
-    *
-    * This function returns the datatype of the data in the record.
-    *
-    * @return the datatype
-    */
-   LTIMetadataDataType getDataType() const;
-
-   /**
-    * get number of dimensions of the data set
-    *
-    * This function returns the number of dimensions in the dimensionality
-    * of the dataset.
-    *
-    * This is the length of the array returned by the getDims() function.
-    *
-    * @return the number of dimensions
-    */
-   lt_uint32 getNumDims() const;
-
-   /**
-    * get dimensionality of the data set
-    *
-    * This function returns an array with the length of each dimension of the
-    * dataset.
-    *
-    * For example, a 2x3 dataset would return an array of length two with the
-    * values {2,3}.
-    *
-    * This is the length of the returned array is equal to getNumDims().
-    *
-    * @return the number of dimensions
-    */
-   const lt_uint32* getDims() const;
-
-   /**
-    * is dataset a scalar?
-    *
-    * This function returns true iff the record's dataset consists only of a
-    * single element.
-    *
-    * @return true if record data is a scalar value
-    */
-   bool isScalar() const;
-
-   /**
-    * is dataset a vector?
-    *
-    * This function returns true iff the record's dataset is a 1-D array.
-    *
-    * @return true if record data is a vector of values
-    */
-   bool isVector() const;
-
-   /**
-    * is dataset an array?
-    *
-    * This function returns true iff the record's dataset is neither
-    * a scalar nor a vector.
-    *
-    * @return true if record data is not scalar or vector
-    */
-   bool isArray() const;
-
-   /**
-    * get scalar data value
-    *
-    * This function returns the record's data as a scalar value.  It is
-    * the caller's responsibility to assure that the record does indeed
-    * contain a scalar dataset.
-    *
-    * The user is responsible for casting the returned value to the correct
-    * datatype.
-    *
-    * @return a pointer to the scalar data value
-    */
-   const void* getScalarData() const;
-
-   /**
-    * get vector data values
-    *
-    * This function returns the record's data as a vector of values.  It is
-    * the caller's responsibility to assure that the record does indeed
-    * contain a vector dataset.
-    *
-    * The user is responsible for casting the returned value to an array
-    * of the correct datatype.
-    *
-    * @param vecLen the length of the returned vector 
-    * @return a pointer to the vector of data values
-    */
-   const void* getVectorData(lt_uint32& vecLen) const;
-
-   /**
-    * get array data values
-    *
-    * This function returns the record's data as an array of values.
-    *
-    * Note the function returns via its parameters the same information as
-    * getNumDims() and getDims().
-    *
-    * The user is responsible for casting the returned value to an array
-    * of the correct datatype.
-    *
-    * @param numDims the number of dimensions in the \a dims parameter 
-    * @param dims the dimensionality array 
-    * @return a pointer to the array of data values
-    */
-   const void* getArrayData(lt_uint32& numDims, const lt_uint32*& dims) const;
-
-   /**
-    * get size of metadata record
-    *
-    * This function will return a close-enough estimate of the size of the
-    * record, as if it were to be written directly to disk.
-    *
-    * @return  size in bytes of the record
-    */
-   lt_int32 getApproximateSize() const;
-
-private:
-   void initialize(LTIMetadataTag tag,
-                   const void* data, const lt_uint32* dims);
-   void initialize(const char* tagName,
-                   const void* data, const lt_uint32* dims);
-
-   lt_uint32 computeLen() const;
-
-   char* m_tagName;
-   LTIMetadataDataType m_type;
-   lt_uint32 m_numDims;
-   lt_uint32* m_dims;
-   lt_uint8* m_data;
-   
-   // nope
-   LTIMetadataRecord& operator=(const LTIMetadataRecord&);
-};
-
-
-LT_END_NAMESPACE(LizardTech)
-
-#if defined(LT_COMPILER_MS)
-	#pragma warning(pop)
-#endif
-
-#endif // LTIMETADATARECORD_H
diff --git a/src/DSDK/include/metadata/lti_metadataStatus.h b/src/DSDK/include/metadata/lti_metadataStatus.h
deleted file mode 100644
index f37922b..0000000
--- a/src/DSDK/include/metadata/lti_metadataStatus.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/* $Id: lti_metadataStatus.h 5124 2006-10-27 11:40:40Z lubia $ */
-/* //////////////////////////////////////////////////////////////////////////
-//                                                                         //
-// This code is Copyright (c) 2004 LizardTech, Inc, 1008 Western Avenue,   //
-// Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         //
-// prohibited.  Access to and use of this code is permitted only under     //
-// license from LizardTech, Inc.  Portions of the code are protected by    //
-// US and foreign patents and other filings. All Rights Reserved.          //
-//                                                                         //
-////////////////////////////////////////////////////////////////////////// */
-/* PUBLIC */
-
-#ifndef LTI_METADATASTATUS_H
-#define LTI_METADATASTATUS_H
-
-#include "lt_base.h"
-
-#define LTI_STS_Metadata_Base                               50500
-LT_STATUSSTRING_ADD(LTI_STS_Metadata_Base, "lt_lib_mrsid_metadata base")
-
-
-#define LTI_STS_Metadata_InternalError                      50501
-LT_STATUSSTRING_ADD(LTI_STS_Metadata_InternalError, "internal error")
-
-#define LTI_STS_Metadata_UnsupDataType                      50502
-LT_STATUSSTRING_ADD(LTI_STS_Metadata_UnsupDataType, "unsupported datatype")
-
-#define LTI_STS_Metadata_TagNotFound                        50503
-LT_STATUSSTRING_ADD(LTI_STS_Metadata_TagNotFound, "tag not found")
-
-#define LTI_STS_Metadata_DuplicateTag                       50504
-LT_STATUSSTRING_ADD(LTI_STS_Metadata_DuplicateTag, "duplicate tag")
-
-#define LTI_STS_Metadata_OldMetadataError                   50505
-LT_STATUSSTRING_ADD(LTI_STS_Metadata_OldMetadataError, "internal error - from old Metadata")
-
-#define LTI_STS_Metadata_ScalarAsciiOnly                    50506
-LT_STATUSSTRING_ADD(LTI_STS_Metadata_ScalarAsciiOnly, "only scalar ASCII records supported")
-
-#define LTI_STS_Metadata_BadFormatForTag                    50507
-LT_STATUSSTRING_ADD(LTI_STS_Metadata_BadFormatForTag, "bad format for given tag")
-
-#define LTI_STS_Metadata_Max                                50599
-LT_STATUSSTRING_ADD(LTI_STS_Metadata_Max, "lt_lib_mrsid_metadata max")
-
-
-#endif // LTI_METADATASTATUS_H
diff --git a/src/DSDK/include/metadata/lti_metadataTypes.h b/src/DSDK/include/metadata/lti_metadataTypes.h
deleted file mode 100644
index b8285c0..0000000
--- a/src/DSDK/include/metadata/lti_metadataTypes.h
+++ /dev/null
@@ -1,187 +0,0 @@
-/* $Id: lti_metadataTypes.h 5124 2006-10-27 11:40:40Z lubia $ */
-/* //////////////////////////////////////////////////////////////////////////
-//                                                                         //
-// This code is Copyright (c) 2004 LizardTech, Inc, 1008 Western Avenue,   //
-// Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         //
-// prohibited.  Access to and use of this code is permitted only under     //
-// license from LizardTech, Inc.  Portions of the code are protected by    //
-// US and foreign patents and other filings. All Rights Reserved.          //
-//                                                                         //
-////////////////////////////////////////////////////////////////////////// */
-/* PUBLIC - C */
-
-#ifndef LTI_METADATATYPES_H
-#define LTI_METADATATYPES_H
-
-#include "lt_base.h"
-
-#if defined(LT_COMPILER_MS)
-   #pragma warning(push,4)
-#endif
-
-#ifdef LT_CPLUSPLUS
-extern "C" {
-#endif
-
-/**
- * enums corresponding to tag strings
- *
- * These constants are enums that may be used in place of the text strings
- * used as tag names.
- */
-typedef enum LTIMetadataTag
-{
-#ifndef DOXYGEN_EXCLUDE
-   LTI_METADATA_TAG_INVALID                              = 0,
-   LTI_METADATA_TAG_Unknown                              = 1,
-   LTI_METADATA_TAG_TestScalar                           = 2,
-   LTI_METADATA_TAG_TestVector                           = 3,
-   LTI_METADATA_TAG_TestArray                            = 4,
-
-   LTI_METADATA_TAG_IMAGE__SOM                           = 10,    /* short */
-   LTI_METADATA_TAG_IMAGE__EOM                           = 11,    /* short */
-
-   LTI_METADATA_TAG_IMAGE__INPUT_FORMAT                  = 100,   /* ascii */
-   LTI_METADATA_TAG_IMAGE__CREATION_DATE                 = 101,   /* ascii */
-   LTI_METADATA_TAG_IMAGE__INPUT_NAME                    = 102,   /* ascii */
-   LTI_METADATA_TAG_IMAGE__NO_DATA_VALUE                 = 103,   /* byte */
-   LTI_METADATA_TAG_IMAGE__INPUT_LUT                     = 104,   /* byte */
-   LTI_METADATA_TAG_IMAGE__NO_DITHER                     = 105,   /* byte */
-   LTI_METADATA_TAG_IMAGE__INPUT_FILE_SIZE               = 106,   /* double */
-   LTI_METADATA_TAG_IMAGE__DYNAMIC_RANGE_WINDOW          = 107,   /* double */
-   LTI_METADATA_TAG_IMAGE__DYNAMIC_RANGE_LEVEL           = 108,   /* double */
-   LTI_METADATA_TAG_IMAGE__TARGET_COMPRESSION_RATIO      = 109,   /* float */
-   LTI_METADATA_TAG_IMAGE__COMPRESSION_WEIGHT            = 110,   /* float */
-   LTI_METADATA_TAG_IMAGE__COMPRESSION_KWEIGHT           = 111,   /* float */
-   LTI_METADATA_TAG_IMAGE__COMPRESSION_GAMMA             = 112,   /* float */
-   LTI_METADATA_TAG_IMAGE__WIDTH                         = 113,   /* long */
-   LTI_METADATA_TAG_IMAGE__HEIGHT                        = 114,   /* long */
-   LTI_METADATA_TAG_IMAGE__COMPRESSION_BLOCK_SIZE        = 115,   /* long */
-   LTI_METADATA_TAG_IMAGE__COLOR_SCHEME                  = 116,   /* long */
-   LTI_METADATA_TAG_IMAGE__COMPRESSION_NLEV              = 117,   /* long */
-   LTI_METADATA_TAG_IMAGE__COMPRESSION_VERSION           = 118,   /* slong */
-   LTI_METADATA_TAG_IMAGE__DEFAULT_DATA_VALUE            = 119,   /* float or short or byte */
-   LTI_METADATA_TAG_IMAGE__TRANSPARENT_DATA_VALUE        = 120,   /* float or short or byte */
-   LTI_METADATA_TAG_IMAGE__FILE_IS_LOCKED                = 121,   /* byte */
-   LTI_METADATA_TAG_IMAGE__KEY                           = 122,   /* byte */
-   LTI_METADATA_TAG_IMAGE__SIGNATURE                     = 123,   /* byte */
-   LTI_METADATA_TAG_IMAGE__XY_ORIGIN                     = 124,   /* double */
-   LTI_METADATA_TAG_IMAGE__Z_ORIGIN                      = 125,   /* double */
-   LTI_METADATA_TAG_IMAGE__X_RESOLUTION                  = 126,   /* double */
-   LTI_METADATA_TAG_IMAGE__Y_RESOLUTION                  = 127,   /* double */
-   LTI_METADATA_TAG_IMAGE__Z_RESOLUTION                  = 128,   /* double */
-   LTI_METADATA_TAG_IMAGE__X_ROTATION                    = 129,	/* double */
-   LTI_METADATA_TAG_IMAGE__BITS_PER_SAMPLE               = 130,   /* short */
-   LTI_METADATA_TAG_IMAGE__HORIZONTAL_UNITS              = 131,   /* short */
-   LTI_METADATA_TAG_IMAGE__VERTICAL_UNITS                = 132,   /* short */
-   LTI_METADATA_TAG_IMAGE__DATA_TYPE                     = 133,   /* long */
-   LTI_METADATA_TAG_IMAGE__Z_UNITS                       = 134,   /* (unknown type) */
-   LTI_METADATA_TAG_IMAGE__Y_ROTATION                    = 135,	/* double */
-   LTI_METADATA_TAG_IMAGE__WKT                           = 137,	/* ascii */
-   LTI_METADATA_TAG_IMAGE__ENCODING_APPLICATION          = 138,	/* ascii */
-   LTI_METADATA_TAG_IMAGE__LTI_ESDK_VERSION              = 139,	/* ascii */
-
-   LTI_METADATA_TAG_GEO__PCSCitationGeoKey               = 200,   /* ascii */
-   LTI_METADATA_TAG_GEO__HORIZONTAL_DATUM                = 201,   /* short */
-   LTI_METADATA_TAG_GEO__ModelTypeGeoKey                 = 202,   /* short */
-   LTI_METADATA_TAG_GEO__ProjectedCSTypeGeoKey           = 203,   /* short */
-   LTI_METADATA_TAG_GEO__HORIZONTAL_COORDSYSTEMZONE      = 204,   /* (unknown type) */
-
-   LTI_METADATA_TAG_USGS__QUADCOMMENT                    = 300,   /* ascii */
-   LTI_METADATA_TAG_USGS__QUADRECT                       = 301,   /* double */
-
-   LTI_METADATA_TAG_IMG__CLASS_NAME                      = 400,   /* ascii */
-   LTI_METADATA_TAG_IMG__HORIZONTAL_UNITS                = 401,   /* ascii */
-   LTI_METADATA_TAG_IMG__TIME_STAMP                      = 402,   /* ascii */
-   LTI_METADATA_TAG_IMG__PROJECTION_NAME                 = 403,   /* ascii */
-   LTI_METADATA_TAG_IMG__PROJECTION_TYPE                 = 404,   /* ascii */
-   LTI_METADATA_TAG_IMG__PROJECTION_PARAMETERS           = 405,   /* ascii */
-   LTI_METADATA_TAG_IMG__SPHEROID_NAME                   = 406,   /* ascii */
-   LTI_METADATA_TAG_IMG__BYTEORDER                       = 407,	/* ascii */
-
-   LTI_METADATA_TAG_IMG__SPHEROID_SEMI_MAJOR_AXIS        = 408,   /* double */
-   LTI_METADATA_TAG_IMG__SPHEROID_SEMI_MINOR_AXIS        = 409,   /* double */
-   LTI_METADATA_TAG_IMG__SPHEROID_ECCENTRICITY_SQUARED   = 410,   /* double */
-   LTI_METADATA_TAG_IMG__SPHEROID_RADIUS                 = 411,   /* double */
-   LTI_METADATA_TAG_IMG__STATISTICS_MEAN                 = 412,   /* double */
-   LTI_METADATA_TAG_IMG__STATISTICS_MEDIAN               = 413,   /* double */
-   LTI_METADATA_TAG_IMG__STATISTICS_MODE                 = 414,   /* double */
-   LTI_METADATA_TAG_IMG__STATISTICS_STDDEV               = 415,   /* double */
-
-   LTI_METADATA_TAG_IMG__PROJECTION_NUMBER               = 416,   /* short */
-   LTI_METADATA_TAG_IMG__PROJECTION_ZONE                 = 417,   /* short */
-
-   LTI_METADATA_TAG_ICC__Profile                         = 500,   /* (unknown type) */
-   LTI_METADATA_TAG_PShop__ImageResources                = 501,   /* (unknown type) */
-
-   LTI_METADATA_TAG_USER__COMPANYNAME                    = 600,   /* ascii */
-   LTI_METADATA_TAG_USER__COPYRIGHT                      = 601,   /* ascii */
-   LTI_METADATA_TAG_USER__CREDIT                         = 602,   /* ascii */
-   LTI_METADATA_TAG_USER__SUMMARY                        = 603,   /* ascii */
-   LTI_METADATA_TAG_USER__KEYWORDS                       = 604,   /* ascii */
-   LTI_METADATA_TAG_USER__COMMENTS                       = 605,   /* ascii */
-   LTI_METADATA_TAG_USER__IMAGEID                        = 606,   /* ascii */
-   LTI_METADATA_TAG_USER__IMAGINGDATE                    = 607,   /* ascii */
-   LTI_METADATA_TAG_USER__IMAGINGTIME                    = 608,   /* ascii */
-   LTI_METADATA_TAG_USER__SOURCEDEVICE                   = 609,   /* ascii */
-   LTI_METADATA_TAG_USER__SCANINFO                       = 610,   /* ascii */
-   LTI_METADATA_TAG_USER__GEOGRAPHICLOCATION             = 611,   /* ascii */
-
-   LTI_METADATA_TAG_ASCII__COMMENT                       = 700,   /* ascii */
-
-   LTI_METADATA_TAG_GDAL__COORDINATE_SYSTEM              = 800,   /* 6 doubles */
-
-   LTI_METADATA_TAG_IMAGE__STATISTICS_MIN                = 900,   /* vector (pixel type) */
-   LTI_METADATA_TAG_IMAGE__STATISTICS_MAX                = 901,   /* vector (pixel type) */
-   LTI_METADATA_TAG_IMAGE__STATISTICS_MEAN               = 902,   /* double vector */
-   LTI_METADATA_TAG_IMAGE__STATISTICS_STANDARD_DEVIATION = 903,   /* double vector */
-
-   LTI_METADATA_TAG_LAST                                 = 10000
-#endif
-} LTIMetadataTag;
-
-
-/**
- * datatypes used in database records
- *
- * These enums are used to represent the datatypes of values stored
- * in LTIMetadataRecords.
- */
-typedef enum LTIMetadataDataType
-{
-  LTI_METADATA_DATATYPE_INVALID           =   0,
-
-  LTI_METADATA_DATATYPE_UINT8             =   1,
-  LTI_METADATA_DATATYPE_SINT8             =   2,
-  LTI_METADATA_DATATYPE_UINT16            =   3,
-  LTI_METADATA_DATATYPE_SINT16            =   4,
-  LTI_METADATA_DATATYPE_UINT32            =   5,
-  LTI_METADATA_DATATYPE_SINT32            =   6,
-  LTI_METADATA_DATATYPE_UINT64            =   7,
-  LTI_METADATA_DATATYPE_SINT64            =   8,
-  LTI_METADATA_DATATYPE_FLOAT32           =   9,
-  LTI_METADATA_DATATYPE_FLOAT64           =  10,
-  LTI_METADATA_DATATYPE_ASCII             =  11,
-  
-  LTI_METADATA_TYPE_LAST                  = 0xffffffff
-} LTIMetadataDataType;
-
-
-typedef enum LTIClassicalMetadataConst
-{
-   LTI_CLASSICAL_METADATA_VERSION_MAJOR = 1,
-   LTI_CLASSICAL_METADATA_VERSION_MINOR = 0,
-   LTI_CLASSICAL_METADATA_MAX_KEY_NAME_SIZE = 100,
-   LTI_CLASSICAL_METADATA_MAX_DIMENSIONS = 10
-} LTIClassicalMetadataConst;
-
-
-#ifdef LT_CPLUSPLUS
-}
-#endif
-
-#if defined(LT_COMPILER_MS)
-	#pragma warning(pop)
-#endif
-
-#endif
diff --git a/src/DSDK/include/metadata/lti_metadataUtils.h b/src/DSDK/include/metadata/lti_metadataUtils.h
deleted file mode 100644
index 021efca..0000000
--- a/src/DSDK/include/metadata/lti_metadataUtils.h
+++ /dev/null
@@ -1,82 +0,0 @@
-/* $Id: lti_metadataUtils.h 5124 2006-10-27 11:40:40Z lubia $ */
-/* //////////////////////////////////////////////////////////////////////////
-//                                                                         //
-// This code is Copyright (c) 2004 LizardTech, Inc, 1008 Western Avenue,   //
-// Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         //
-// prohibited.  Access to and use of this code is permitted only under     //
-// license from LizardTech, Inc.  Portions of the code are protected by    //
-// US and foreign patents and other filings. All Rights Reserved.          //
-//                                                                         //
-////////////////////////////////////////////////////////////////////////// */
-/* PUBLIC */
-
-#ifndef LTI_METADATAUTILS_H
-#define LTI_METADATAUTILS_H
-
-// lt_lib_base
-#include "lt_base.h"
-
-// lt_lib_mrsid_metadata
-#include "lti_metadataTypes.h"
-
-
-LT_BEGIN_NAMESPACE(LizardTech)
-
-#if defined(LT_COMPILER_MS)
-   #pragma warning(push,4)
-#endif
-
-
-
-/**
- * useful metadata type and tag functions
- *
- * This class contains several static utility functions useful for
- * operating with tag names, tag numbers, and datatypes.
- */
-class LTIMetadataUtils
-{
-public:
-   /**
-    * get numeric value of tag name
-    *
-    * This function returns the enum associated with a given tag name.
-    * It will return LTI_METADATA_TAG_Unknown if the string is not known.
-    *
-    * @param tagName the tagName
-    * @return the enum corresponding to \a tagName
-    */
-   static LTIMetadataTag lookupTag(const char* tagName);
-
-   /**
-    * get string value of numeric tag name
-    *
-    * This function returns the string associated with a given tag enum.
-    * It will return NULL if the tag enum is not known.
-    *
-    * @param tag the tag number
-    * @return the string corresponding to \a tag
-    */
-   static const char* lookupName(LTIMetadataTag tag);
-
-   /**
-    * get string representation of datatype
-    *
-    * This function returns a string representation of the given datatype,
-    * useful for debugging.
-    *
-    * @param dataType the datatype to use
-    * @return the string version of the given datatype
-    */
-   static const char* name(LTIMetadataDataType dataType);
-};
-
-
-
-LT_END_NAMESPACE(LizardTech)
-
-#if defined(LT_COMPILER_MS)
-	#pragma warning(pop)
-#endif
-
-#endif // LTI_METADATAUTILS_H
diff --git a/src/DSDK/include/metadata/lti_metadataWriter.h b/src/DSDK/include/metadata/lti_metadataWriter.h
deleted file mode 100644
index 115de0d..0000000
--- a/src/DSDK/include/metadata/lti_metadataWriter.h
+++ /dev/null
@@ -1,90 +0,0 @@
-/* $Id: lti_metadataWriter.h 5124 2006-10-27 11:40:40Z lubia $ */
-/* //////////////////////////////////////////////////////////////////////////
-//                                                                         //
-// This code is Copyright (c) 2004 LizardTech, Inc, 1008 Western Avenue,   //
-// Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         //
-// prohibited.  Access to and use of this code is permitted only under     //
-// license from LizardTech, Inc.  Portions of the code are protected by    //
-// US and foreign patents and other filings. All Rights Reserved.          //
-//                                                                         //
-////////////////////////////////////////////////////////////////////////// */
-/* PUBLIC */
-
-#ifndef LTI_METADATA_WRITER_H
-#define LTI_METADATA_WRITER_H
-
-// lt_lib_base
-#include "lt_base.h"
-
-LT_BEGIN_NAMESPACE(LizardTech)
-
-#if defined(LT_COMPILER_MS)
-   #pragma warning(push,4)
-#endif
-
-
-class LTIMetadataDatabase;
-
-
-/**
- * abstract class for exporting a metadata database
- *
- * This abstract class provides an interface for exporting metadata records
- * from an LTIMetadataDatabase to a foreign source.
- *
- * This is used, for example, to provide a mechanism for writing the
- * format-neutral, in-memory database into binary TIFF tag format.  it
- * is also used to dump the database to plain-text format (for debugging).
- */
-class LTIMetadataWriter
-{
-public:
-   /**
-    * default constructor
-    *
-    * This base constructor creates a writer object which can export
-    * records from a database to some foreign format.
-    *
-    * @param database the database to be read into
-    */
-   LTIMetadataWriter(const LTIMetadataDatabase& database);
-
-   /**
-    * destructor
-    */
-   virtual ~LTIMetadataWriter();
-
-   /**
-    * write records out from database
-    *
-    * This function must be implemented in the derived class.  It should
-    * write each of the LTIMetadataRecord objects in the database out to
-    * the foreign format.
-    *
-    * @return status code indicating success or failure
-    */
-   virtual LT_STATUS write() const = 0;
-
-protected:
-   /**
-    * the database to be written from
-    *
-    * This is the database to be written out from.  Derived classes may access
-    * it directly.
-    */
-   const LTIMetadataDatabase& m_database;
-
-private:
-   // nope
-   LTIMetadataWriter(const LTIMetadataWriter&);
-   LTIMetadataWriter& operator=(const LTIMetadataWriter&);
-};
-
-
-LT_END_NAMESPACE(LizardTech)
-
-#if defined(LT_COMPILER_MS)
-	#pragma warning(pop)
-#endif
-
-#endif // LTI_METADATA_WRITER_H
diff --git a/src/DSDK/include/mrsid_readers/MG3CompositeImageReader.h b/src/DSDK/include/mrsid_readers/MG3CompositeImageReader.h
deleted file mode 100644
index 8dc1c7d..0000000
--- a/src/DSDK/include/mrsid_readers/MG3CompositeImageReader.h
+++ /dev/null
@@ -1,272 +0,0 @@
-/* $Id: MG3CompositeImageReader.h 5124 2006-10-27 11:40:40Z lubia $ */
-/* //////////////////////////////////////////////////////////////////////////
-//                                                                         //
-// This code is Copyright (c) 2004 LizardTech, Inc, 1008 Western Avenue,   //
-// Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         //
-// prohibited.  Access to and use of this code is permitted only under     //
-// license from LizardTech, Inc.  Portions of the code are protected by    //
-// US and foreign patents and other filings. All Rights Reserved.          //
-//                                                                         //
-////////////////////////////////////////////////////////////////////////// */
-/* PUBLIC */
-
-#ifndef MG3COMPOSITEIMAGEREADER_H
-#define MG3COMPOSITEIMAGEREADER_H
-
-// lt_lib_mrsid_mrsidReaders
-#include "MrSIDImageReaderBase.h"
-
-// lt_lib_mrsid_core
-#include "lti_imageStageManager.h"
-
-LT_BEGIN_NAMESPACE(LizardTech)
-
-#if defined(LT_COMPILER_MS)
-   #pragma warning(push,4)
-#endif
-
-class MG3Container;
-class MG3SingleImageReader;
-class MG2ImageReader;
-
-/**
- * reader for MrSID/MG3 images
- *
- * This class supports reading MrSID/MG3 images.
- *
- * @note MrSID/MG2 images are not supported with this class.
- */
-class MG3CompositeImageReader : public MrSIDImageReaderBase,
-                                public LTIImageStageManager
-{
-public:
-   /**
-    * constructor
-    *
-    * Create an MG3 reader from the given file.
-    *
-    * The \a imageNumber array allows for control over
-    * which tiles in the image should be opened to form
-    * the composite (mosaic) image.  If NULL is passed,
-    * all tiles will be used.
-    *
-    * To determine the tiles available in the image,
-    * you can use the static getCompositeImageInfo()
-    * member function.
-    *
-    * @param fileSpec      file containing MrSID image
-    * @param imageNumber   array of image tile numbers
-    * @param numImages     size of \a imageNumber array
-    * @param useWorldFile  incorporate world file data when reading image
-    * @param memoryUsage   control memory resource usage
-    * @param streamUsage   control stream resource usage
-    */
-   MG3CompositeImageReader(const LTFileSpec& fileSpec,
-                           const lt_uint32* imageNumber,
-                           lt_uint32 numImages,
-                           bool useWorldFile,
-                           MrSIDMemoryUsage memoryUsage,
-                           MrSIDStreamUsage streamUsage);
-
-   /**
-    * constructor
-    *
-    * Construct an MG3 image from a stream.  (See file-based
-    * constructor for details.)
-    *
-    * @param stream           stream containing MrSID image (may not be NULL)
-    * @param imageNumber      array of image tile numbers
-    * @param numImages        size of \a imageNumber array
-    * @param worldFileStream  stream containing world file data (may be NULL)
-    * @param memoryUsage      control memory resource usage
-    * @param streamUsage      control stream resource usage
-    */
-   MG3CompositeImageReader(LTIOStreamInf* stream,
-                           const lt_uint32* imageNumber,
-                           lt_uint32 numImages,
-                           LTIOStreamInf* worldFileStream,
-                           MrSIDMemoryUsage memoryUsage,
-                           MrSIDStreamUsage streamUsage);
-
-   MG3CompositeImageReader(MG3Container* container,
-                           const lt_uint32* imageNumber,
-                           lt_uint32 numImages,
-                           LTIOStreamInf* worldFileStream,
-                           MrSIDMemoryUsage memoryUsage,
-                           MrSIDStreamUsage streamUsage);
-
-   virtual ~MG3CompositeImageReader();
-   LT_STATUS initialize();
-
-   LT_STATUS setStripHeight(lt_uint32 stripHeight);
-   lt_uint32 getStripHeight() const;
-
-   lt_uint8 getNumLevels() const;
-   bool isLocked() const;
-
-   void getVersion(lt_uint8& major, lt_uint8& minor, lt_uint8& tweak, char& letter) const;
-
-   /**
-    * query if is optimizable
-    *
-    * Returns true if and only if the image can be further compressed.
-    *
-    * @return true, if and only if the image may be compressed
-    */
-   bool isOptimizable() const;
-
-   /**
-    * tile type queries
-    *
-    * This function are used to determine whether any of the tiles
-    * in the image are MG2.
-    */
-   /*@{*/
-   bool hasMG2Data() const;
-   /*@}*/
-
-   lt_uint32 getMinBlockSize() const;
-   lt_uint32 getMaxBlockSize() const;
-
-   void setInterruptDelegate(LTIInterruptDelegate* delegate);
-
-   lt_int64 getPhysicalFileSize() const;
-
-   /**
-    * file format type of image tile
-    */
-   enum CompositeImageType
-   {
-      COMPOSITETYPE_MG2 = 1,
-      COMPOSITETYPE_MG3 = 2
-   };
-
-   /**
-    * structure representing tiled image
-    */
-   struct CompositeImageInfo
-   {
-      /** image tile number */
-      lt_uint32 imageId;
-
-      /** x-position of tile in the mosaic */
-      double xPos;
-
-      /** y-position of tile in the mosaic */
-      double yPos;
-
-      /** type of image tile */
-      CompositeImageType imageType;
-   };
-
-   /**
-    * query tile information
-    *
-    * This function is used to collect information about the tiles in the
-    * image.
-    *
-    * The caller takes ownership of the returned \a tileInfo array.
-    *
-    * @param  tileInfo  array of tile information structures to be set
-    * @param  numTiles  number of tiles
-    * @return status code indicating success or failure
-    */
-   LT_STATUS getTileInfo(CompositeImageInfo *&tileInfo, lt_uint32 &numTiles) const;
-
-   /**
-    * query tile information
-    *
-    * This function is used to collect information about the tiles in
-    * the image contained in the given file.
-    *
-    * The caller takes ownership of the returned \a info array.
-    *
-    * @param  fileSpec  name of image to query
-    * @param  tileInfo  array of tile information structures to be set
-    * @param  numTiles  number of tiles
-    * @return status code indicating success or failure
-    */
-   static LT_STATUS getCompositeImageInfo(const LTFileSpec &fileSpec,
-                                          CompositeImageInfo *&tileInfo,
-                                          lt_uint32 &numTiles);
-
-   /**
-    * query tile information
-    *
-    * This function is used to collect information about the tiles in
-    * the image contained in the given stream.
-    *
-    * The caller takes ownership of the returned \a info array.
-    *
-    * @param  stream    stream containing image to query
-    * @param  tileInfo  array of tile information structures to be set
-    * @param  numTiles  number of tiles
-    * @return status code indicating success or failure
-    */
-   static LT_STATUS getCompositeImageInfo(LTIOStreamInf &stream,
-                                          CompositeImageInfo *&tileInfo,
-                                          lt_uint32 &numTiles);
-
-   static LT_STATUS getCompositeImageInfo(const MG3Container &container,
-                                          CompositeImageInfo *&tileInfo,
-                                          lt_uint32 &numTiles);
-
-
-   bool getReaderScene(lt_uint32 imageIndex,
-                       const LTIScene &scene,
-                       LTIScene &mosaicScene,
-                       LTIScene &readerScene) const;
-
-   LT_STATUS projectPointAtMag(double upperLeft,
-                               double mag,
-                               double& newUpperLeft) const;
-   
-   LT_STATUS projectDimAtMag(double dim,
-                             double mag,
-                             double& newDim) const;
-
-   LT_STATUS getDimsAtMag(double mag,
-                          lt_uint32& width,
-                          lt_uint32& height) const;
-
-
-protected:
-   LT_STATUS decodeBegin(const LTIScene& scene);
-   LT_STATUS decodeStrip(LTISceneBuffer& stripBuffer,
-                         const LTIScene& stripScene);
-   LT_STATUS decodeEnd();
-
-   LT_STATUS init(void);
-
-   virtual LT_STATUS createMG2Reader(lt_uint32 imageNumber,
-                                       MG2ImageReader *&mg2Reader);
-   virtual LT_STATUS createMG3Reader(lt_uint32 imageNumber,
-                                       MG3SingleImageReader *&mg3Reader);
-                              
-   virtual LT_STATUS updateMemoryModel();
-
-   LT_STATUS createImageStage(lt_uint32 imageNumber,
-                              LTIImageStage *&imageStage);
-
-   LT_STATUS deleteImageStage(lt_uint32 imageNumber,
-                              LTIImageStage *imageStage);
-
-   struct Data;
-   Data *m_dat;
-
-private:
-   typedef MrSIDImageReaderBase Super;
-
-   // nope
-   MG3CompositeImageReader(const MG3CompositeImageReader&);
-   MG3CompositeImageReader& operator=(const MG3CompositeImageReader&);
-};
-
-
-LT_END_NAMESPACE(LizardTech)
-
-#if defined(LT_COMPILER_MS)
-	#pragma warning(pop)
-#endif
-
-#endif // MG3COMPOSITEIMAGEREADER_H
diff --git a/src/DSDK/include/mrsid_readers/MrSIDImageReader.h b/src/DSDK/include/mrsid_readers/MrSIDImageReader.h
deleted file mode 100644
index 6f07fc3..0000000
--- a/src/DSDK/include/mrsid_readers/MrSIDImageReader.h
+++ /dev/null
@@ -1,184 +0,0 @@
-/* $Id: MrSIDImageReader.h 5124 2006-10-27 11:40:40Z lubia $ */
-/* //////////////////////////////////////////////////////////////////////////
-//                                                                         //
-// This code is Copyright (c) 2004 LizardTech, Inc, 1008 Western Avenue,   //
-// Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         //
-// prohibited.  Access to and use of this code is permitted only under     //
-// license from LizardTech, Inc.  Portions of the code are protected by    //
-// US and foreign patents and other filings. All Rights Reserved.          //
-//                                                                         //
-////////////////////////////////////////////////////////////////////////// */
-/* PUBLIC */
-
-#ifndef MRSIDIMAGEREADER_H
-#define MRSIDIMAGEREADER_H
-
-// lt_lib_mrsid_mrsidReader
-#include "MrSIDImageReaderBase.h"
-
-
-LT_BEGIN_NAMESPACE(LizardTech)
-
-#if defined(LT_COMPILER_MS)
-   #pragma warning(push,4)
-#endif
-
-class LTFileSpec;
-class LTIOStreamInf;
-class MG2ImageReader;
-class MG3SingleImageReader;
-class MG3CompositeImageReader;
-class MG3Container;
-
-
-/**
- * reader for MrSID images (MG2 and MG3)
- *
- * This class supports reading MrSID/MG2 and MrSID/MG3 images, including
- * composite MG3 images.
- */
-class MrSIDImageReader : public MrSIDImageReaderBase
-{
-public:
-   /**
-    * constructor
-    *
-    * Construct a MrSID reader from the given file.
-    *
-    * @param  fileSpec      file containing MrSID image
-    * @param  useWorldFile  incorporate world file data when reading image
-    * @param  memoryUsage   control memory resource usage
-    * @param  streamUsage   control stream resource usage
-    */
-   MrSIDImageReader(const LTFileSpec& fileSpec,
-                    bool useWorldFile = false,
-                    MrSIDMemoryUsage memoryUsage=MRSID_MEMORY_USAGE_DEFAULT,
-                    MrSIDStreamUsage streamUsage=MRSID_STREAM_USAGE_DEFAULT);
-
-   /**
-    * constructor
-    *
-    * Construct a MrSID reader from the given stream.
-    *
-    * @param  stream        stream containing MrSID image (may not be NULL)
-    * @param  worldFileStream  stream containing world file data (may be NULL)
-    * @param  memoryUsage   control memory resource usage
-    * @param  streamUsage   control stream resource usage
-    */
-   MrSIDImageReader(LTIOStreamInf* stream,
-                    LTIOStreamInf* worldFileStream = 0,
-                    MrSIDMemoryUsage memoryUsage=MRSID_MEMORY_USAGE_DEFAULT,
-                    MrSIDStreamUsage streamUsage=MRSID_STREAM_USAGE_DEFAULT);
-
-   virtual ~MrSIDImageReader();
-
-   virtual LT_STATUS initialize();
-
-   /**
-    * number of levels
-    * 
-    * Return the number of resolution levels in the image.  (This is similar to querying
-    * getMinMagnificaton(), but expressed as an integer.)
-    *
-    * @return the number of levels in the image
-    */
-   virtual lt_uint8 getNumLevels() const;
-
-   /**
-    * query for image encryption
-    * 
-    * Return true if the image is password-protected.
-    *
-    * @return true, if and only if the image is encrypted
-    */
-   virtual bool isLocked() const;
-
-   /**
-    * query for file format version
-    * 
-    * This functions returns detailed version information for the
-    * MG2 or MG3 file.
-    *
-    * @param major the major version number
-    * @param minor the minor version number
-    * @param tweak the reversion number
-    * @param letter the format letter (MG3 only)
-    */
-   virtual void getVersion(lt_uint8& major, lt_uint8& minor, lt_uint8& tweak, char& letter) const;
-
-   virtual lt_int64 getPhysicalFileSize() const;
-
-   virtual LT_STATUS setStripHeight(lt_uint32 stripHeight);
-   virtual lt_uint32 getStripHeight() const;
-
-   // not for the faint of heart
-   MG2ImageReader* getMG2Reader() const;
-   MG3SingleImageReader* getMG3SingleReader() const;
-   MG3CompositeImageReader* getMG3CompositeReader() const;
-
-   virtual LT_STATUS projectPointAtMag(double upperLeft,
-                                       double mag,
-                                       double& newUpperLeft) const;
-   virtual LT_STATUS projectDimAtMag(double dim,
-                                     double mag,
-                                     double& newDim) const;
-
-   virtual LT_STATUS getDimsAtMag(double mag,
-                                  lt_uint32& width,
-                                  lt_uint32& height) const;
-
-   void setProgressDelegate(LTIProgressDelegate* delegate);
-   void setInterruptDelegate(LTIInterruptDelegate* delegate);
-
-protected:
-   virtual LT_STATUS decodeBegin(const LTIScene& scene);
-   virtual LT_STATUS decodeStrip(LTISceneBuffer& stripBuffer,
-                                 const LTIScene& stripScene);
-   virtual LT_STATUS decodeEnd();
-
-   virtual LT_STATUS createMG2Reader(void);
-   virtual LT_STATUS createMG3Reader(void);
-
-#ifndef DOXYGEN_EXCLUDE
-   struct Data
-   {
-      ~Data(void);
-      Data(const LTFileSpec *fileSpec,
-           LTIOStreamInf *stream,
-           MG3Container* container,
-           LTIOStreamInf* worldFileStream);
-   
-      LTIOStreamInf* m_stream;
-      LTFileSpec* m_fileSpec;
-      bool m_ownStream;
-      LTIOStreamInf* m_worldFileStream;
-      MG3Container* m_container;
-      MrSIDImageReaderBase *m_mrsidReader;
-      enum MrSIDType
-      {
-         MRSID_TYPE_MG2 = 2,
-         MRSID_TYPE_MG3S = 3,
-         MRSID_TYPE_MG3C = 4
-      };
-      MrSIDType m_mrsidType;
-   };
-      
-#endif
-   Data *m_dat;
-
-private:
-   typedef MrSIDImageReaderBase Super;
-
-   // nope
-   MrSIDImageReader(const MrSIDImageReader&);
-   MrSIDImageReader& operator=(const MrSIDImageReader&);
-};
-
-
-LT_END_NAMESPACE(LizardTech)
-
-#if defined(LT_COMPILER_MS)
-	#pragma warning(pop)
-#endif
-
-#endif // MRSIDIMAGEREADER_H
diff --git a/src/DSDK/include/mrsid_readers/MrSIDImageReaderBase.h b/src/DSDK/include/mrsid_readers/MrSIDImageReaderBase.h
deleted file mode 100644
index 49f6bff..0000000
--- a/src/DSDK/include/mrsid_readers/MrSIDImageReaderBase.h
+++ /dev/null
@@ -1,235 +0,0 @@
-/* $Id: MrSIDImageReaderBase.h 5124 2006-10-27 11:40:40Z lubia $ */
-/* //////////////////////////////////////////////////////////////////////////
-//                                                                         //
-// This code is Copyright (c) 2004 LizardTech, Inc, 1008 Western Avenue,   //
-// Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         //
-// prohibited.  Access to and use of this code is permitted only under     //
-// license from LizardTech, Inc.  Portions of the code are protected by    //
-// US and foreign patents and other filings. All Rights Reserved.          //
-//                                                                         //
-////////////////////////////////////////////////////////////////////////// */
-/* PUBLIC */
-
-#ifndef MRSIDIMAGEREADERBASE_H
-#define MRSIDIMAGEREADERBASE_H
-
-// lt_lib_mrsid_core
-#include "lti_geoImageReader.h"
-
-
-LT_BEGIN_NAMESPACE(LizardTech)
-
-#if defined(LT_COMPILER_MS)
-   #pragma warning(push,4)
-#endif
-
-class LTFileSpec;
-class LTIOStreamInf;
-class MrSIDPasswordDelegate;
-class MrSIDSimplePasswordDelegate;
-
-/*
- * memory settings for creating MrSID decoders
- *
- * "Small", "medium", and "large" refer to how much memory the
- * decoder will use when opening the image and constructing certain
- * internal data structures and tables.  In general, decode
- * performance will increase if more memory can be used.
- */
-enum MrSIDMemoryUsage
-{
-   MRSID_MEMORY_USAGE_INVALID    = 0,
-   MRSID_MEMORY_USAGE_DEFAULT    = 1,
-   MRSID_MEMORY_USAGE_SMALL      = 2,
-   MRSID_MEMORY_USAGE_MEDIUM     = 3,
-   MRSID_MEMORY_USAGE_LARGE      = 4
-};
-
-/*
- * stream settings for creating MrSID decoders
- *
- * Normally, the stream used by the decoder is
- * only opened when doing actual decode work, as resources like
- * file handles can be a scarce resource in some environments.  This
- * obviously incurs a performance penalty; the "KeepStreamOpen" modes
- * can be used to change the behaviour.
- */
-enum MrSIDStreamUsage
-{
-   MRSID_STREAM_USAGE_INVALID    = 0,
-   MRSID_STREAM_USAGE_KEEPOPEN   = 2,
-   MRSID_STREAM_USAGE_KEEPCLOSED = 3,
-   MRSID_STREAM_USAGE_DEFAULT    = MRSID_STREAM_USAGE_KEEPCLOSED
-};
-
-
-/**
- * base class for MrSID image readers
- *
- * All the MrSID image readers (MrSIDImageReader, MG3CompositeImageReader, etc)
- * inherit from this class.
- */
-class MrSIDImageReaderBase : public LTIGeoImageReader
-{
-public:
-   /**
-    * constructor
-    *
-    * Creates a MrSIDImageReaderBase object.
-    *
-    * @param  memoryUsage   the memory model to use
-    * @param  streamUsage   the stream model to use
-    * @param  useWorldFile  whether or not a world file is being used
-    */
-   MrSIDImageReaderBase(MrSIDMemoryUsage memoryUsage,
-                        MrSIDStreamUsage streamUsage,
-                        bool useWorldFile);
-   virtual ~MrSIDImageReaderBase();
-   virtual LT_STATUS initialize();
-
-   /**
-    * get number of resolution levels
-    *
-    * Returns the number of resolution levels supported by the image.
-    * This value returned corresponds to the LTIImage::getMinMagnification()
-    * function.
-    *
-    * @return the number of resolution levels in the MrSID image
-    */
-   virtual lt_uint8 getNumLevels() const =0;
-
-   /**
-    * image encryption query
-    *
-    * Returns true iff the image is password-protected.  If the image is
-    * locked, the setPasswordDelegate() or setPassword() function must be
-    * used to provide the decoder with information to decrypt the image
-    * as decode requests are processed.
-    *
-    * @return true, if image is password-protected
-    */
-   virtual bool isLocked() const =0;
-
-   /**
-    * get MrSID image version
-    *
-    * Returns detailed version information for the MrSID image.  Typical
-    * version numbers will be 1.0.1 for MG2 (the \a letter value is not
-    * used) and 3.0.26.q for MG3.  Most developers need only consider the
-    * \a major number, which will be either 2 or 3..
-    *
-    * See also getSidVersion().
-    *
-    * @param major  the major version number
-    * @param minor  the minor version number
-    * @param tweak  the revision number
-    * @param letter  the revision build number (MG3 only)
-    */
-   virtual void getVersion(lt_uint8& major, lt_uint8& minor, lt_uint8& tweak, char& letter) const=0;
-
-   /**
-    * set password handler
-    *
-    * This function is used to set up a password delegate, which will be
-    * automatically called form within the internal decoder logic to obtain
-    * a text password, if one is needed for decoded the image.
-    *
-    * Alternatively, the more direct setPassword() function may be used.
-    *
-    * See the isLocked() function for more details.
-    * 
-    * @param  passwordDelegate  the delegate to be called
-    */
-   void setPasswordDelegate(MrSIDPasswordDelegate* passwordDelegate);
-
-   /**
-    * set password handler
-    *
-    * This function is set the password used by the decoder logic
-    * to decode the image, if one is needed.
-    *
-    * The password must be set prior to performing any decode (read)
-    * requests; for more flexibility, the setPasswordDelegate() function
-    * may be used.
-    *
-    * See the isLocked() function for more details.
-    * 
-    * @param  password  the password for the image
-    */
-   void setPassword(const lt_utf8* password);
-
-public:
-   /**
-    * get MrSID version information
-    *
-    * Returns version information for a specific MrSID image.  This is
-    * a static function, which is passed a filename; the getVersion()
-    * function operates on the image represented by this MrSIDImageReaderBase
-    * image and returns more detailed information.
-    *
-    * The \a ver value returned will be 2 (for MrSID/MG2), 3 (for MrSID/MG3),
-    * or 0 (if error).
-    *
-    * @param fileSpec  the file to get the version of
-    * @param ver       the major version number
-    * @return status code indicating success or failure
-    */
-   static LT_STATUS getSidVersion(const LTFileSpec& fileSpec, lt_uint8& ver);
-
-   /**
-    * MrSID version information
-    *
-    * Returns version information for a specific MrSID image.  This is
-    * a static function, which is passed a stream; the getVersion()
-    * function operates on the image represented by this MrSIDImageReaderBase
-    * image and returns more detailed information.
-    *
-    * The \a ver value returned will be 2 (for MrSID/MG2), 3 (for MrSID/MG3),
-    * or 0 (if error).
-    *
-    * @param stream  the file to get the version of
-    * @param ver       the major version number
-    * @return status code indicating success or failure
-    */
-   static LT_STATUS getSidVersion(LTIOStreamInf& stream, lt_uint8& ver);
-
-protected:
-
-   LT_STATUS setupDynamicRangeFromMetadata(bool& gotThem,
-                                           double& min,
-                                           double& max);
-
-   static LT_STATUS setupClutFromMetadata(const LTIMetadataDatabase& metadata,
-                                          LTIPixelLookupTable*& clut);
-
-   static LT_STATUS setupDefaultPixelFromMetadata(LTIMetadataDatabase& metadata,
-                                                  const LTIPixel& pixelProps,
-                                                  LTIPixel*& backgroundPixel,
-                                                  LTIPixel*& nodataPixel);
-
-   LT_STATUS updateGeoCoordFromMetadata(void);
-
-   LT_STATUS updateGeoMetadata();
-
-   MrSIDMemoryUsage m_memoryUsage;
-   MrSIDStreamUsage m_streamUsage;
-
-private:
-   typedef LTIImageReader Super;
-
-   MrSIDPasswordDelegate* m_pwdDelegate;
-   MrSIDSimplePasswordDelegate* m_localPwdDelegate;
-
-   // nope
-   MrSIDImageReaderBase(const MrSIDImageReaderBase&);
-   MrSIDImageReaderBase& operator=(const MrSIDImageReaderBase&);
-};
-
-
-LT_END_NAMESPACE(LizardTech)
-
-#if defined(LT_COMPILER_MS)
-	#pragma warning(pop)
-#endif
-
-#endif // MRSIDIMAGEREADERBASE_H
diff --git a/src/DSDK/include/mrsid_readers/MrSIDPasswordDelegate.h b/src/DSDK/include/mrsid_readers/MrSIDPasswordDelegate.h
deleted file mode 100644
index fe339ba..0000000
--- a/src/DSDK/include/mrsid_readers/MrSIDPasswordDelegate.h
+++ /dev/null
@@ -1,171 +0,0 @@
-/* $Id: MrSIDPasswordDelegate.h 5124 2006-10-27 11:40:40Z lubia $ */
-/* //////////////////////////////////////////////////////////////////////////
-//                                                                         //
-// This code is Copyright (c) 2004 LizardTech, Inc, 1008 Western Avenue,   //
-// Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         //
-// prohibited.  Access to and use of this code is permitted only under     //
-// license from LizardTech, Inc.  Portions of the code are protected by    //
-// US and foreign patents and other filings. All Rights Reserved.          //
-//                                                                         //
-////////////////////////////////////////////////////////////////////////// */
-/* PUBLIC */
-
-#ifndef MRSIDPASSWORDDELEGATE_H
-#define MRSIDPASSWORDDELEGATE_H
-
-// lt_lib_base
-#include "lt_base.h"
-
-
-LT_BEGIN_NAMESPACE(LizardTech)
-
-#if defined(LT_COMPILER_MS)
-   #pragma warning(push,4)
-#endif
-
-
-class EncryptImp;
-class MrSIDImageReaderBase;
-class MG2ImageWriter;
-class MG3ImageWriter;
-
-
-/**
- * delegate for locked MrSID images
- *
- * This abstract class is used with MrSIDImageReaderBase::setPasswordDelegate()
- * to supply a user-callback mechanism for supplying text passwords to
- * the internal MrSID decoder logic.
- *
- * Users should derive their own class from this, supplying their own
- * reportIncorrectPassword() and getPassword() methods.
- */
-class MrSIDPasswordDelegate
-{
-public:
-   /**
-    * constructor
-    */
-   MrSIDPasswordDelegate();
-
-   /**
-    * destructor
-    */
-   virtual ~MrSIDPasswordDelegate();
-
-   /**
-    * user function for user notification
-    *
-    * This function is called by the decoder if the password
-    * entered was incorrect.  Derived classes must implement
-    * this function, e.g. to pop up a message box, abort the
-    * operation, etc.
-    *
-    * @return success or failure in reporting to user
-    */
-   virtual LT_STATUS reportIncorrectPassword() = 0;
-
-   /**
-    * user function for getting the password
-    *
-    * This function is called by the decoder to request a password
-    * from the user.  Derived classes must implement
-    * this function, e.g. to pop up a text-entry dialog box.
-    *
-    * The implementation of this function must copy the password
-    * into the buffer pointed by getPasswordBuffer().
-    *
-    * @return success or failure in getting password from user
-    */
-   virtual LT_STATUS getPassword() = 0;
-
-protected:
-   /**
-    * get password buffer
-    *
-    * This function returns a pointer to the allocated area for the
-    * password obtained from the user.
-    *
-    * @return  pointer to the password buffer
-    */
-   char* getPasswordBuffer();
-
-   /**
-    * get password buffer length
-    *
-    * This function returns the length of the buffer returned from
-    * getPasswordBuffer().
-    *
-    * @return  length of the password buffer
-    */
-   lt_uint32 getPasswordBufferLength();
-
-private:
-   friend class EncryptImp;
-   EncryptImp* m_encryptImp;
-   char* m_passwordBuffer;
-   
-   static const lt_uint32 s_passwordBufferLength;
-
-   friend class MrSIDImageReaderBase;
-   friend class MG2ImageWriter;
-   friend class MG3ImageWriter;
-   void registerProvider();
-
-   // nope
-   MrSIDPasswordDelegate(const MrSIDPasswordDelegate&);
-   MrSIDPasswordDelegate& operator=(const MrSIDPasswordDelegate&);
-};
-
-
-/**
- * simple concrete delegate for locked MrSID images
- *
- * This class is a concrete password delegate class which just
- * takes a fixed string in its ctor.
- */
-class MrSIDSimplePasswordDelegate : public MrSIDPasswordDelegate
-{
-public:
-   /**
-    * constructor
-    * 
-    * Create a password delegate, using the given string.
-    *
-    * @param password the password to use to unlock the image
-    */
-   MrSIDSimplePasswordDelegate(const char* password);
-
-   /**
-    * failure user notification
-    *
-    * This function just returns LT_STS_Failure.
-    *
-    * @return always LT_STS_Failure
-    */
-   LT_STATUS reportIncorrectPassword();
-
-   /**
-    * get the password
-    *
-    * This function does nothing, as the password is fixed (determined
-    * by parameter to constructor).
-    *
-    * @return always LT_STS_Success
-    */
-   LT_STATUS getPassword();
-
-private:
-   // nope
-   MrSIDSimplePasswordDelegate(const MrSIDSimplePasswordDelegate&);
-   MrSIDSimplePasswordDelegate& operator=(const MrSIDSimplePasswordDelegate&);
-};
-
-
-LT_END_NAMESPACE(LizardTech)
-
-#if defined(LT_COMPILER_MS)
-	#pragma warning(pop)
-#endif
-
-#endif // MRSIDPASSWORDDELEGATE_H
diff --git a/src/DSDK/include/mrsid_readers/lti_mrsidReadersStatus.h b/src/DSDK/include/mrsid_readers/lti_mrsidReadersStatus.h
deleted file mode 100644
index 0887a6f..0000000
--- a/src/DSDK/include/mrsid_readers/lti_mrsidReadersStatus.h
+++ /dev/null
@@ -1,67 +0,0 @@
-/* $Id: lti_mrsidReadersStatus.h 5124 2006-10-27 11:40:40Z lubia $ */
-/* //////////////////////////////////////////////////////////////////////////
-//                                                                         //
-// This code is Copyright (c) 2004 LizardTech, Inc, 1008 Western Avenue,   //
-// Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         //
-// prohibited.  Access to and use of this code is permitted only under     //
-// license from LizardTech, Inc.  Portions of the code are protected by    //
-// US and foreign patents and other filings. All Rights Reserved.          //
-//                                                                         //
-////////////////////////////////////////////////////////////////////////// */
-/* PUBLIC */
-
-#ifndef LTI_MRSIDREADERSSTATUS_H
-#define LTI_MRSIDREADERSSTATUS_H
-
-#include "lt_base.h"
-
-
-#define LTI_STS_MrSIDReaders_Base                           50600
-LT_STATUSSTRING_ADD(LTI_STS_MrSIDReaders_Base, "lt_lib_mrsid_mrsidReaders base")
-
-#define LTI_STS_MrSIDReaders_UnsupColorSpace                50601
-LT_STATUSSTRING_ADD(LTI_STS_MrSIDReaders_UnsupColorSpace, "unsupported colorspace")
-
-#define LTI_STS_MrSIDReaders_UnsupDataType                  50602
-LT_STATUSSTRING_ADD(LTI_STS_MrSIDReaders_UnsupDataType, "unsupported datatype")
-
-#define LTI_STS_MrSIDReaders_InvalidMemoryModel             50603
-LT_STATUSSTRING_ADD(LTI_STS_MrSIDReaders_InvalidMemoryModel, "invalid memory model")
-
-#define LTI_STS_MrSIDReaders_InvalidMetadata                50604
-LT_STATUSSTRING_ADD(LTI_STS_MrSIDReaders_InvalidMetadata, "invalid metadata")
-
-#define LTI_STS_MrSIDReaders_MetadataReadError              50605
-LT_STATUSSTRING_ADD(LTI_STS_MrSIDReaders_MetadataReadError, "error reading metadata")
-
-#define LTI_STS_MrSIDReaders_InvalidStripHeight             50606
-LT_STATUSSTRING_ADD(LTI_STS_MrSIDReaders_InvalidStripHeight, "invalid stripheight")
-
-#define LTI_STS_MrSIDReaders_BadFileFormat                  50607
-LT_STATUSSTRING_ADD(LTI_STS_MrSIDReaders_BadFileFormat, "invalid mrsid file format")
-
-
-#define LTI_STS_MrSIDReaders_BadMG2letInit                  50608
-LT_STATUSSTRING_ADD(LTI_STS_MrSIDReaders_BadMG2letInit, "mg2let init error")
-
-#define LTI_STS_MrSIDReaders_BadMG3letInit                  50609
-LT_STATUSSTRING_ADD(LTI_STS_MrSIDReaders_BadMG3letInit, "mg3let init error")
-
-#define LTI_STS_MrSIDReaders_MG2Error                       50610
-LT_STATUSSTRING_ADD(LTI_STS_MrSIDReaders_MG2Error, "error decoding MG2 file")
-
-#define LTI_STS_MrSIDReaders_BadSidletFormat                50611
-LT_STATUSSTRING_ADD(LTI_STS_MrSIDReaders_BadSidletFormat, "invalid sidlet message")
-
-#define LTI_STS_MrSIDReaders_UnknownTileImageFormat         50612
-LT_STATUSSTRING_ADD(LTI_STS_MrSIDReaders_UnknownTileImageFormat, "unknown tile image format")
-
-#define LTI_STS_MrSIDReaders_CannotOpenFile                 50613
-LT_STATUSSTRING_ADD(LTI_STS_MrSIDReaders_CannotOpenFile, "can't open file: %F")
-
-
-#define LTI_STS_MrSIDReaders_Max                            50699
-LT_STATUSSTRING_ADD(LTI_STS_MrSIDReaders_Max, "lt_lib_mrsid_mrsidReaders max")
-
-
-#endif // LTI_MRSIDREADERSSTATUS_H
diff --git a/src/DSDK/include/support/lt_base.h b/src/DSDK/include/support/lt_base.h
deleted file mode 100644
index 36ef027..0000000
--- a/src/DSDK/include/support/lt_base.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/* $Id: lt_base.h 5124 2006-10-27 11:40:40Z lubia $ */
-/* //////////////////////////////////////////////////////////////////////////
-//                                                                         //
-// This code is Copyright (c) 2004 LizardTech, Inc, 1008 Western Avenue,   //
-// Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         //
-// prohibited.  Access to and use of this code is permitted only under     //
-// license from LizardTech, Inc.  Portions of the code are protected by    //
-// US and foreign patents and other filings. All Rights Reserved.          //
-//                                                                         //
-////////////////////////////////////////////////////////////////////////// */
-/* PUBLIC */
-
-/**
- * @file
- *
- * Include file for all LizardTech sources.  This file should be included
- * before any other LizardTech headers.
- *
- * @note This file is C-callable.
- */
-
-#ifndef LT_BASE_H
-#define LT_BASE_H
-
-#include "lt_platform.h"
-#include "lt_define.h"
-#include "lt_types.h"
-#include "lt_status.h"
-
-#endif /* LT_BASE_H */
diff --git a/src/DSDK/include/support/lt_define.h b/src/DSDK/include/support/lt_define.h
deleted file mode 100644
index d8b7e20..0000000
--- a/src/DSDK/include/support/lt_define.h
+++ /dev/null
@@ -1,154 +0,0 @@
-/* $Id: lt_define.h 5124 2006-10-27 11:40:40Z lubia $ */
-/* //////////////////////////////////////////////////////////////////////////
-//                                                                         //
-// This code is Copyright (c) 2004 LizardTech, Inc, 1008 Western Avenue,   //
-// Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         //
-// prohibited.  Access to and use of this code is permitted only under     //
-// license from LizardTech, Inc.  Portions of the code are protected by    //
-// US and foreign patents and other filings. All Rights Reserved.          //
-//                                                                         //
-////////////////////////////////////////////////////////////////////////// */
-/* PUBLIC */
-
-/**
- * @file
- *
- * Preprocessor definitions used throughout LizardTech sources.  This file
- * should not be included directly; use lt_base.h instead.
- *
- * @note This file is C-callable.
- */
-
-#ifndef LT_DEFINE_H
-#define LT_DEFINE_H
-
-#include "lt_platform.h"
-
-#if defined(LT_COMPILER_MS)
-   #pragma warning(push,4) 
-#endif
-
-
-/**
- * @name Language settings
- */
-/*@{*/
-
-#if defined(__cplusplus)
-   /** compiler supports C++ (as opposed to straight C) */
-   #define LT_CPLUSPLUS
-#endif
-
-/*}@*/
-
-
-/**
- * @name C++ namespace settings
- */
-/*@{*/
-
-#if defined(__cplusplus) && \
-    ( defined(LT_COMPILER_MS) || \
-      defined(LT_COMPILER_GNU) || \
-      defined(LT_COMPILER_SUN) || \
-      defined(_USE_NAMESPACE_) )
-   /** compiler supports namespaces */
-   #define LT_NAMESPACE_SUPPORT
-#else
-   /** compiler does not support namespaces */
-   #undef LT_NAMESPACE_SUPPORT
-#endif
-
-#ifdef LT_NAMESPACE_SUPPORT
-   /** declare start of namespace, for declarations */
-   #define LT_BEGIN_NAMESPACE( theNameSpace ) namespace theNameSpace {
-   /** declare end of namespace, for declarations */
-   #define LT_END_NAMESPACE( theNameSpace )   }
-
-   /** declare start of nameless namespace, for declarations */
-   #define LT_BEGIN_NAMELESS_NAMESPACE namespace {
-   /** declare end of nameless namespace, for declarations */
-   #define LT_END_NAMELESS_NAMESPACE   }
-
-   /** declare use of namespace */
-   #define LT_USE_NAMESPACE( theNameSpace ) using namespace theNameSpace;
-   /** declare use of name */
-   #define LT_USE_NAME( theName ) using theName;
-#else
-   #define LT_BEGIN_NAMESPACE( theNameSpace )
-   #define LT_END_NAMESPACE( theNameSpace )
-
-   #define LT_BEGIN_NAMELESS_NAMESPACE 
-   #define LT_END_NAMELESS_NAMESPACE  
-
-   #define LT_USE_NAMESPACE( theNameSpace ) 
-   #define LT_USE_NAME( theName ) 
-#endif
-
-/*@}*/
-
-
-/**
- * @name Debug settings
- */
-/*@{*/
-
-#if (defined(LT_OS_WIN) && defined(_DEBUG))
-   /** symbol for enabling debug code */
-   #define LT_DEBUG
-#endif
-
-/*@}*/
-
-
-/**
- * @name Miscellaneous macros
- */
-/*@{*/
-
-/** macro turns its argument into a quoted string */
-#define LT_STRINGIFY(x) #x
-/** macro expands its argument, and it into a quoted string */
-#define LT_XSTRINGIFY(x) LT_STRINGIFY(x)
-
-/** return lesser of two parameters */
-#define LT_MIN(A,B) ((A) < (B) ? (A) : (B))
-/** return greater of two parameters */
-#define LT_MAX(A,B) ((A) > (B) ? (A) : (B))
-
-/*@}*/
-
-
-
-
-
-/**
- * @name Support for status string generation
- */
-/*@{*/
-
-#if defined(LT_STATUSSTRING_GENERATE)
-   #define LT_STATUSSTRING_ADD(NUM,STR)    { NUM, STR },
-#else
-   #define LT_STATUSSTRING_ADD(NUM,STR)
-#endif
-
-typedef struct { int code; const char* str; } LTStatusStringTable;
-/*@}*/
-
-
-#if defined(LT_COMPILER_MS)
-   #pragma warning(pop) 
-#endif
-
-
-/* globally disable spurious VC++ warning resulting from use of templates  */
-#ifdef LT_COMPILER_MS
-   #pragma warning(disable:4786)
-#endif
-
-
-/* other includes to provide users of lt_define.h */
-#include "lt_types.h"
-
-#endif /* LT_DEFINE_H */
diff --git a/src/DSDK/include/support/lt_fileSpec.h b/src/DSDK/include/support/lt_fileSpec.h
deleted file mode 100644
index d4c20a7..0000000
--- a/src/DSDK/include/support/lt_fileSpec.h
+++ /dev/null
@@ -1,251 +0,0 @@
-/* $Id: lt_fileSpec.h 5124 2006-10-27 11:40:40Z lubia $ */
-/* //////////////////////////////////////////////////////////////////////////
-//                                                                         //
-// This code is Copyright (c) 2004 LizardTech, Inc, 1008 Western Avenue,   //
-// Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         //
-// prohibited.  Access to and use of this code is permitted only under     //
-// license from LizardTech, Inc.  Portions of the code are protected by    //
-// US and foreign patents and other filings. All Rights Reserved.          //
-//                                                                         //
-////////////////////////////////////////////////////////////////////////// */
-/* PUBLIC */
-
-#ifndef LT_FILESPEC_H
-#define LT_FILESPEC_H
-
-// lt_lib_base
-#include "lt_base.h"
-#include "lt_system.h"
-
-#if defined(LT_COMPILER_MS)
-   #pragma warning(push,4)
-#endif
-
-LT_BEGIN_NAMESPACE(LizardTech)
-
-/**
- * Max length of a path
- */
-#ifdef LT_OS_WIN
-#define LT_UTIL_MAX_PATH _MAX_PATH
-#else
-#define LT_UTIL_MAX_PATH 2048
-#endif
-
-/**
- * Represents a file or directory path
- */
-class LTFileSpec
-{
-public:
-   enum
-   {
-      fSlash = '/',
-      bSlash = '\\',
-#ifdef LT_OS_WIN
-      platformSlash = '\\'
-#else
-      platformSlash = '/'
-#endif
-   };
-
-
-public:
-   /**
-    * default constructor
-    */
-   LTFileSpec(void);
-
-   /**
-    * destructor
-    */
-   ~LTFileSpec(void);
-
-   /**
-    * native constructor
-    *
-    * @param   p1    first part of the path could be directory or filename
-    * @param   p2    second part of the path could be directory or filename or NULL
-    * @param   p3    last part of the path could be a filename or NULL
-    *
-    * @note On Win32 the file system treats a (char *) as a multibyte string
-    *       On Unix/Linux the file system treats a (char *) as a utf8 string
-    */
-   explicit LTFileSpec(const char *p1, const char *p2 = NULL, const char *p3 = NULL);
-
-   /**
-    * wchar constructor
-    * @note See native constructor for arguments
-    * @note On Win32 wchar_t is a UTF16 string. On unix it is UTF32
-    */
-   explicit LTFileSpec(const wchar_t *p1, const wchar_t *p2 = NULL, const wchar_t *p3 = NULL);
-
-   /*@{*/
-   /**
-    * LTFileSpec constructor
-    * @note See native constructor for arguments
-    * @note See above for notes on (char *) and (wchar_t *) types
-    */
-   LTFileSpec(const LTFileSpec &copy);
-   LTFileSpec(const LTFileSpec &p1, const char *p2, const char *p3 = NULL);
-   LTFileSpec(const LTFileSpec &p1, const wchar_t *p2, const wchar_t *p3 = NULL);
-
-   LTFileSpec(const LTFileSpec &p1, const LTFileSpec &p2, const char *p3 = NULL);
-   LTFileSpec(const LTFileSpec &p1, const LTFileSpec &p2, const wchar_t *p3);
-
-   LTFileSpec(const LTFileSpec &p1, const LTFileSpec &p2, const LTFileSpec &p3);
-   /*@}*/
-
-   /**
-    * assignment operator
-    */
-   LTFileSpec& operator=(const LTFileSpec& copy);
-
-   /**
-    * inequality operator
-    */
-   bool operator!=(const LTFileSpec& fs) const;
-
-   /**
-    * equality operator
-    */
-   bool operator==(const LTFileSpec& fs) const;
-
-   /**
-    * Initialization from Native strings
-    * 
-    * See Native contructor for arguments
-    */
-   void set(const char *p1, const char *p2 = NULL, const char *p3 = NULL);
-
-   /**
-    * Initialization from UTF8 strings
-    * 
-    * See Native contructor for arguments
-    */
-   void setUTF8(const lt_utf8 *p1, const lt_utf8 *p2 = NULL, const lt_utf8 *p3 = NULL);
-
-   /**
-    * Initialization from Wide strings
-    * 
-    * See Native contructor for arguments
-    */
-   void setWide(const wchar_t *p1, const wchar_t *p2 = NULL, const wchar_t *p3 = NULL);
-
-   /**
-    * Return the parent directory
-    *
-    * The semantics are similar to the standard Unix dirname.
-    *
-    * Examples:
-    * - "/usr/lib" -> "/usr"
-    * - "/usr/"    -> "/"
-    * - "usr"      -> "."
-    * - "/"        -> "/"
-    * - "C:/"      -> "C:/"
-    * - "."        -> "."
-    * - ".."       -> "."
-    */
-   LTFileSpec dirname(void) const;
-
-   /**
-    * Return the base filename
-    *
-    * The semantics are similar to the standard Unix basename.
-    *
-    * Examples:
-    * - "/usr/lib" -> "lib"
-    * - "/usr/"    -> "usr/"  (not the same as the unix basename)
-    * - "usr"      -> "usr"
-    * - "/"        -> "/"
-    * - "C:/"      -> "C:/"
-    * - "."        -> "."
-    * - ".."       -> ".."
-    */
-   const lt_utf8 *basename(void) const;
-
-   /**
-    * Function to convert the path to native format.
-    *
-    * @note On Win32 this returns a multi-byte string.
-    * @note On Unix this returns a UTF8 string.
-    */
-   const char *n_str(void) const;
-   
-   /**
-    * Function to convert the path to Wide format.
-    *
-    * @note On Win32 this returns a 16bit UTF16 string. 
-    * @note On Unix this returns a 32bit UTF32 string.
-    */
-   const wchar_t *w_str(void) const;
-
-   /**
-    * Function to convert the path to a UTF8 format.
-    *
-    * @note On Win32 this returns a 16bit UTF16 string. 
-    * @note On Unix this returns a 32bit UTF32 string.
-    */
-   const lt_utf8* utf8(void) const { return m_path8; }
-
-   /**
-    * returns suffix (in utf8)
-    *
-    * Examples:
-    * - "foo.bar" -> "bar"
-    * - "foo." -> ""
-    * - "foo" -> ""
-    */
-   const lt_utf8* getSuffix() const;
-
-   /**
-    * replaces suffix (extension)
-    *
-    * Note that \a ext should not include the ".".
-    * If \a ext is null, the suffix is removed.
-    *
-    * Examples:
-    * - "foo.bar" with "baz" -> "foo.baz"
-    * - "foo.bar" with ".baz" -> "foo..baz"
-    * - "foo.bar" with "" -> "foo."
-    * - "foo" with "baz" -> "foo.baz"
-    */
-   void replaceSuffix(const lt_utf8* ext);
-
-   /**
-    * remove the suffix (extension)
-    *
-    * Note this also removes the ".".
-    *
-    * Examples:
-    * - "foo.bar" -> "foo"
-    * - "foo." -> "foo"
-    * - "foo" -> "foo"
-    */
-   void removeSuffix();
-
-   /**
-    * returns true if path is absolute, false if relative
-    */
-   bool absolute() const;
-
-protected:
-
-private:
-   // using a utf8 string to hold the path because it is the easiest
-   // to play with (we can look for bSlashs and not have to worry 
-   // about lead btyes.
-   lt_utf8 *m_path8;
-
-   mutable char *m_pathA;     // this will be updated in n_str()
-   mutable wchar_t *m_pathW;  // this will be updated in w_str()
-};
-
-
-LT_END_NAMESPACE(LizardTech)
-
-#if defined(LT_COMPILER_MS)
-	#pragma warning(pop)
-#endif
-
-#endif // LT_FILESPEC_H
diff --git a/src/DSDK/include/support/lt_ioBufferedStream.h b/src/DSDK/include/support/lt_ioBufferedStream.h
deleted file mode 100644
index e349b49..0000000
--- a/src/DSDK/include/support/lt_ioBufferedStream.h
+++ /dev/null
@@ -1,79 +0,0 @@
-/* $Id: lt_ioBufferedStream.h 5124 2006-10-27 11:40:40Z lubia $ */
-/* //////////////////////////////////////////////////////////////////////////
-//                                                                         //
-// This code is Copyright (c) 2004 LizardTech, Inc, 1008 Western Avenue,   //
-// Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         //
-// prohibited.  Access to and use of this code is permitted only under     //
-// license from LizardTech, Inc.  Portions of the code are protected by    //
-// US and foreign patents and other filings. All Rights Reserved.          //
-//                                                                         //
-////////////////////////////////////////////////////////////////////////// */
-/* PUBLIC */
-
-#ifndef LT_IO_BUFFERED_STREAM_H
-#define LT_IO_BUFFERED_STREAM_H
-
-#include "lt_ioStreamInf.h"
-
-LT_BEGIN_NAMESPACE( LizardTech )
-
-class LTIOBufPage;
-class LTIOBufPageCache;
-
-/**
- * Stream which wraps an array of bytes in memory.
- *
- * The buffer is of a fixed size and does not grow or shrink.
- */
-class LTIOBufferedStream : public LTIOStreamInf
-{
-public:
-   LTIOBufferedStream();
-   virtual ~LTIOBufferedStream();
-
-   /**
-    * Initializes the stream
-    *
-    * @param   src 		source stream; this instance takes ownership of it
-    * @param   pageSize size of each page in bytes
-    * @param   numPages number of pages to keep cached in memory
-	 *	@param	tempDir	temp directory to store unused pages; this instance
-	 *							does not clean them up
-    */
-   virtual LT_STATUS initialize(	LTIOStreamInf* src,
-											lt_uint32 pageSize=1024,
-											lt_uint32 numPages = 10,
-											const char* tempDir = 0L);
-
-
-	virtual bool isEOF();
-	virtual bool isOpen();
-	virtual LT_STATUS open();
-	virtual LT_STATUS close();
-   virtual lt_uint32 read( lt_uint8 *pDest, lt_uint32 numBytes );
-   virtual lt_uint32 write( const lt_uint8 *pSrc, lt_uint32 numBytes );
-   virtual LT_STATUS seek( lt_int64 offset, LTIOSeekDir origin );
-   virtual lt_int64 tell();
-	virtual LTIOStreamInf* duplicate();
-	virtual LT_STATUS getLastError() const;
-	virtual const char* getID() const;
-
-private:
-	const LTIOBufPage* getPage( lt_uint64 pageIndex );
-
-protected:
-   lt_uint32		m_pageSize;
-	lt_uint32		m_numPages;
-	LTIOBufPageCache*		m_buffer;
-	LTIOStreamInf*	m_src;
-	lt_uint64		m_cur;
-	bool 				m_eof;
-	char*				m_tempDir;
-};
-
-
-
-LT_END_NAMESPACE( LizardTech )
-
-
-#endif	// LT_IO_BUFFERED_STREAM_H
diff --git a/src/DSDK/include/support/lt_ioCallbackStream.h b/src/DSDK/include/support/lt_ioCallbackStream.h
deleted file mode 100644
index 0b9d896..0000000
--- a/src/DSDK/include/support/lt_ioCallbackStream.h
+++ /dev/null
@@ -1,121 +0,0 @@
-/* $Id: lt_ioCallbackStream.h 5124 2006-10-27 11:40:40Z lubia $ */
-/* //////////////////////////////////////////////////////////////////////////
-//                                                                         //
-// This code is Copyright (c) 2004 LizardTech, Inc, 1008 Western Avenue,   //
-// Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         //
-// prohibited.  Access to and use of this code is permitted only under     //
-// license from LizardTech, Inc.  Portions of the code are protected by    //
-// US and foreign patents and other filings. All Rights Reserved.          //
-//                                                                         //
-////////////////////////////////////////////////////////////////////////// */
-/* PUBLIC */
-
-#ifndef LT_IO_CALLBACK_STREAM_H
-#define LT_IO_CALLBACK_STREAM_H
-
-#include "lt_ioCallbackStreamTypes.h"
-#include "lt_ioStreamInf.h"
-
-#if defined(LT_COMPILER_MS)
-	#pragma warning(push,4)
-#endif
-
-LT_BEGIN_NAMESPACE( LizardTech )
-
-
-/**
- * Stream driven entirely by user-defined callbacks
- *
- * This class implements a stream whose operations -- read(), write(), open(),
- * close(), etc -- are all defined by functions passed in from the user.
- *
- * This class can be used as an alternative to deriving custom stream classes
- * from LTIOStreamInf.  This class also forms the basis for the C-callable
- * stream defined in lt_ioCStream.h.
- */
-class LTIOCallbackStream : public LTIOStreamInf
-{
-public:
-   LTIOCallbackStream();
-
-   virtual ~LTIOCallbackStream();
-
-   /**
-    * initialize
-    *
-    * The parameters to this function are a set of function pointers
-    * which implement all the required operations needed to support
-    * a stream.  Their semantics exactly mirror the semantics of the
-    * corresponding member functions in LTIOStreamInf.
-    *
-    * The \a user parameter is a pointer to a user-defined area
-    * containing information about the stream itself, e.g. the
-    * filename and a FILE*.  This pointer is passed as the first
-    * argument to each of the user's stream functions.  This class
-    * never attempts to interpret this data directly.
-    *
-    * Note that the implementation of the \a duplicate function
-    * is required to create a new copy of this user-defined data by
-    * whatever means appropriate.  The user retains ownership of the
-    * copied user data.
-    *
-    * @param  open       pointer to user's open function
-    * @param  close      pointer to user's close function
-    * @param  read       pointer to user's read function
-    * @param  write      pointer to user's write function
-    * @param  seek       pointer to user's seek function
-    * @param  tell       pointer to user's tell function
-    * @param  isEOF      pointer to user's isEOF function
-    * @param  isOpen     pointer to user's isOpen function
-    * @param  duplicate  pointer to user's duplicate function
-    * @param  user       pointer to user-defined stream data
-    * @return status code indicating success or failure
-    */
-   virtual LT_STATUS initialize(LTIOCallbackStream_Open open,
-                                LTIOCallbackStream_Close close,
-                                LTIOCallbackStream_Read read,
-                                LTIOCallbackStream_Write write,
-                                LTIOCallbackStream_Seek seek,
-                                LTIOCallbackStream_Tell tell,
-                                LTIOCallbackStream_IsEOF isEOF,
-                                LTIOCallbackStream_IsOpen isOpen,
-                                LTIOCallbackStream_Duplicate duplicate,
-                                void* user);
-
-	virtual bool isEOF();
-	virtual bool isOpen();
-
-   virtual LT_STATUS open();
-	virtual LT_STATUS close();
-
-   virtual lt_uint32 read( lt_uint8 *pDest, lt_uint32 numBytes );
-   virtual lt_uint32 write( const lt_uint8 *pSrc, lt_uint32 numBytes );
-
-   virtual LT_STATUS seek( lt_int64 offset, LTIOSeekDir origin );
-   virtual lt_int64 tell();
-
-   virtual LTIOStreamInf* duplicate();
-	virtual LT_STATUS getLastError() const;
-	virtual const char* getID() const;
-
-private:
-   LTIOCallbackStream_Open m_open;
-   LTIOCallbackStream_Close m_close;
-   LTIOCallbackStream_Read m_read;
-   LTIOCallbackStream_Write m_write;
-   LTIOCallbackStream_Seek m_seek;
-   LTIOCallbackStream_Tell m_tell;
-   LTIOCallbackStream_IsEOF m_isEOF;
-   LTIOCallbackStream_IsOpen m_isOpen;
-   LTIOCallbackStream_Duplicate m_duplicate;
-
-   void* m_user;
-};
-
-LT_END_NAMESPACE( LizardTech )
-
-#if defined(LT_COMPILER_MS)
-	#pragma warning(pop)
-#endif
-
-#endif // LT_IO_CALLBACK_STREAM_H
diff --git a/src/DSDK/include/support/lt_ioCallbackStreamTypes.h b/src/DSDK/include/support/lt_ioCallbackStreamTypes.h
deleted file mode 100644
index 2e1737f..0000000
--- a/src/DSDK/include/support/lt_ioCallbackStreamTypes.h
+++ /dev/null
@@ -1,133 +0,0 @@
-/* $Id: lt_ioCallbackStreamTypes.h 5124 2006-10-27 11:40:40Z lubia $ */
-/* //////////////////////////////////////////////////////////////////////////
-//                                                                         //
-// This code is Copyright (c) 2004 LizardTech, Inc, 1008 Western Avenue,   //
-// Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         //
-// prohibited.  Access to and use of this code is permitted only under     //
-// license from LizardTech, Inc.  Portions of the code are protected by    //
-// US and foreign patents and other filings. All Rights Reserved.          //
-//                                                                         //
-////////////////////////////////////////////////////////////////////////// */
-/* PUBLIC - C */
-
-#ifndef LT_IO_CALLBACK_STREAM_TYPES_H
-#define LT_IO_CALLBACK_STREAM_TYPES_H
-
-#include "lt_base.h"
-#include "lt_lib_io.h"
-
-#if defined(LT_COMPILER_MS)
-	#pragma warning(push,4)
-#endif
-
-#ifdef LT_CPLUSPLUS
-extern "C" {
-#endif
-
-
-/**
- * opaque pointer to an LTIOStreamInf
- */
-typedef void* LTIOStreamH;
-
-/**
- * @name types specifically for use with LTIOCallbackStream
- */
-/*@{*/
-
-/**
- * typedef for callback stream open function
- *
- * The parameter is a void* (user data).
- *
- * A status code is returned.
- */
-typedef LT_STATUS (*LTIOCallbackStream_Open)(void*);
-
-/**
- * typedef for callback stream close function
- *
- * The parameter is a void* (user data).
- *
- * A status code is returned.
- */
-typedef LT_STATUS (*LTIOCallbackStream_Close)(void*);
-
-/**
- * typedef for callback stream read function
- *
- * The parameters are a void* (user data), a pointer to the buffer to
- * read from, and the number of bytes to read.
- *
- * The number of bytes actually read is returned.
- */
-typedef lt_uint32 (*LTIOCallbackStream_Read)(void*, lt_uint8*, lt_uint32);
-
-/**
- * typedef for callback stream write function
- *
- * The parameters are a void* (user data), a pointer to the buffer to
- * write to, and the number of bytes to write.
- *
- * The number of bytes actually written is returned.
- */
-typedef lt_uint32 (*LTIOCallbackStream_Write)(void*, const lt_uint8*, lt_uint32);
-
-/**
- * typedef for callback stream seek function
- *
- * The parameters are a void* (user data), the number of bytes to
- * seek, and the seek direction.
- *
- * A status code is returned.
- */
-typedef LT_STATUS (*LTIOCallbackStream_Seek)(void*, lt_int64, LTIOSeekDir);
-
-/**
- * typedef for callback stream tell function
- *
- * The parameter is a void* (user data).
- *
- * The current offset is returned.
- */
-typedef lt_int64 (*LTIOCallbackStream_Tell)(void*);
-
-/**
- * typedef for callback stream isEOF function
- *
- * The parameter is a void* (user data).
- *
- * A boolean value (0 or 1) is returned.
- */
-typedef lt_uint8 (*LTIOCallbackStream_IsEOF)(void*);
-
-/**
- * typedef for callback stream isOpen function
- *
- * The parameter is a void* (user data).
- *
- * A boolean value (0 or 1) is returned.
- */
-typedef lt_uint8 (*LTIOCallbackStream_IsOpen)(void*);
-
-/**
- * typedef for callback stream duplicate function
- *
- * The parameter is a void* (user data).
- *
- * A pointer to the new stream is returned.
- */
-typedef LTIOStreamH (*LTIOCallbackStream_Duplicate)(void*);
-
-/*@}*/
-
-
-#ifdef LT_CPLUSPLUS
-}
-#endif
-
-#if defined(LT_COMPILER_MS)
-	#pragma warning(pop)
-#endif
-
-#endif
diff --git a/src/DSDK/include/support/lt_ioDynamicMemStream.h b/src/DSDK/include/support/lt_ioDynamicMemStream.h
deleted file mode 100644
index 3a05312..0000000
--- a/src/DSDK/include/support/lt_ioDynamicMemStream.h
+++ /dev/null
@@ -1,196 +0,0 @@
-/* $Id: lt_ioDynamicMemStream.h 5124 2006-10-27 11:40:40Z lubia $ */
-/* //////////////////////////////////////////////////////////////////////////
-//                                                                         //
-// This code is Copyright (c) 2004 LizardTech, Inc, 1008 Western Avenue,   //
-// Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         //
-// prohibited.  Access to and use of this code is permitted only under     //
-// license from LizardTech, Inc.  Portions of the code are protected by    //
-// US and foreign patents and other filings. All Rights Reserved.          //
-//                                                                         //
-////////////////////////////////////////////////////////////////////////// */
-/* PUBLIC */
-
-
-#ifndef LT_IO_DYNAMIC_MEM_STREAM_H
-#define LT_IO_DYNAMIC_MEM_STREAM_H
-
-#include "lt_ioStreamInf.h"
-#include <stdlib.h>
-
-LT_BEGIN_NAMESPACE( LizardTech )
-
-
-/**
- *
- * holds a memory buffer of variable size
- *
- * Unlike LTIOMemStream, which uses a fixed-size buffer, this class will
- * grow its buffer as you write past the end of it.  It is most suitable
- * for use as an internal "temp stream".  The stream is initially empty.
- *
- * The stream cannot hold more than 2^32 bytes of data.
- */
-class LTIODynamicMemStream : public LTIOStreamInf
-{
-public:
-   /** @name Memory Allocation and Deallocation Functions */
-   //@{
-#if defined(LT_OS_WINCE)
-	typedef void* (__cdecl * Allocator)(size_t);
-	typedef void(__cdecl *Deallocator)(void*);
-	typedef void*(__cdecl *Reallocator)(void*,size_t);
-#else
-	typedef void*(*Allocator)(size_t);
-	typedef void(*Deallocator)(void*);
-	typedef void*(*Reallocator)(void*,size_t);
-#endif
-   //@}
-
-public:
-   LTIODynamicMemStream();
-   virtual ~LTIODynamicMemStream();
-
-   /** 
-    * @name Initialization functions
-    */
-   /*@{*/
-   /**
-    * Initializes the stream
-    * 
-    * @param   size  initial size of buffer in bytes
-    * @param   growthRate factor of growth Valid Values: [1-2)
-    */
-   virtual LT_STATUS initialize( lt_uint32 size = 4096, float growthRate=2 );
-
-   /**
-    * Initializes the stream, with custom memory management
-    * 
-    * The allocator function should return NULL in the event of failure,
-    * as opposed to throwing an exception -- that is, be like malloc()
-    * and not like new.
-    *
-    * @param   size    initial size of buffer in bytes
-    * @param   allo    user-defined memory allocator
-    * @param   deallo  user-defined memory deallocator
-    * @param   reallo  user-defined memory reallocator
-    * @param   growthRate factor of growth Valid Values: [1-2)
-    */
-   virtual LT_STATUS initialize( lt_uint32 size,
-                                 Allocator allo, Deallocator deallo,
-                                 Reallocator reallo=NULL, float growthRate=2 );
-
-   /*@}*/
-
-	virtual bool isEOF();
-	virtual bool isOpen();
-	virtual LT_STATUS open();
-	virtual LT_STATUS close();
-   virtual lt_uint32 read( lt_uint8 *pDest, lt_uint32 numBytes );
-   virtual lt_uint32 write( const lt_uint8 *pSrc, lt_uint32 numBytes );
-   virtual LT_STATUS seek( lt_int64 offset, LTIOSeekDir origin );
-   virtual lt_int64 tell();
-
-
-   /** 
-    * @name Memory Management
-    */
-   /*@{*/
-   /**
-    * Returns the allocator function pointer
-    */
-   Allocator getAllocator() const         {  return m_alloc; }
-   
-   /**
-    * Returns the deallocator function pointer
-    */
-   Deallocator getDeallocator() const    {  return m_dealloc; } 
-
-   /**
-    * Returns the reallocator function pointer
-    */
-   Reallocator getReallocator() const    {  return m_realloc; } 
-
-   /**
-    * Get the underlying buffer
-    *
-    * The pointer is guaranteed to be good until
-    * the next call to write(), or close()
-    *
-    * @return  pointer to underlying buffer
-    */
-   const lt_uint8* getData() const  {  return m_data; }
-
-   
-   /**
-    * Detach the underlying buffer from the stream,
-    * and closes the stream. The caller is responsible 
-    * for deallocating the buffer.  (Note that you must
-    * use the Deallocator method, not delete[].) 
-    *
-    * @param data receives pointer to underlying buffer
-    *
-    * @return  LT_STS_Success upon success
-    */
-   LT_STATUS detachAndClose(lt_uint8*& data);
-
-   /**
-    * Returns the number of bytes which are in the
-    * stream. This may be smaller than the amount
-    * actually allocated.
-    *
-    * @return  size (in bytes) of stream
-    */
-   lt_uint64 size() const           {  return m_userSize; }
-
-   /*@}*/
-
-	virtual LTIOStreamInf* duplicate();
-	virtual LT_STATUS getLastError() const;
-	virtual const char* getID() const;
- 
-protected:
-   /**   extend size of data buffer if required */
-   bool grow(lt_uint32 numBytes);
-
-   /**   pointer to buffer */
-   lt_uint8*   m_data;
-
-   /**   initial size of buffer */
-   lt_uint32   m_initialSize;
-
-   /**   size of buffer as allocated */
-   lt_uint32   m_bufferSize;
-
-   /**   size of buffer as accessible by user */
-   lt_uint32   m_userSize;
-
-   /**   current position  */
-   lt_uint32   m_cur;
-
-   /**   openness */
-   bool        m_isOpen; 
-
-   /**   allocator function */
-   Allocator m_alloc;
-
-   /**   deallocator */
-   Deallocator m_dealloc;
-
-   /**   reallocator */
-   Reallocator m_realloc;
-
-	void* defaultRealloc(void*,size_t);
-
-   LT_STATUS m_lastError;
-
-   bool m_isEOF;
-   
-   /** the factor of growth of the memory [1-2): */
-   float m_growthRate;
-};
-
-
-LT_END_NAMESPACE( LizardTech )
-
-
-#endif	// LT_IO_DYNAMIC_MEM_STREAM_H
diff --git a/src/DSDK/include/support/lt_ioFile64Stream.h b/src/DSDK/include/support/lt_ioFile64Stream.h
deleted file mode 100644
index 6c2a491..0000000
--- a/src/DSDK/include/support/lt_ioFile64Stream.h
+++ /dev/null
@@ -1,242 +0,0 @@
-/* $Id: lt_ioFile64Stream.h 5124 2006-10-27 11:40:40Z lubia $ */
-/* //////////////////////////////////////////////////////////////////////////
-//                                                                         //
-// This code is Copyright (c) 2004 LizardTech, Inc, 1008 Western Avenue,   //
-// Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         //
-// prohibited.  Access to and use of this code is permitted only under     //
-// license from LizardTech, Inc.  Portions of the code are protected by    //
-// US and foreign patents and other filings. All Rights Reserved.          //
-//                                                                         //
-////////////////////////////////////////////////////////////////////////// */
-/* PUBLIC */
-
-#ifndef LT_IOFILE64STREAM_H
-#define LT_IOFILE64STREAM_H
-
-#include "lt_ioStreamInf.h"
-#include "lt_fileSpec.h"
-
-#if defined(LT_OS_WIN)
-   #include <Windows.h>
-#elif defined(LT_OS_SUNOS) || defined(LT_OS_LINUX) || defined(LT_OS_DARWIN)
-   #include <stdio.h>
-#else
-   #error Platform not yet supported.
-#endif
-
-
-LT_BEGIN_NAMESPACE( LizardTech )
-
-/**
- * File stream for large files
- *
- * This class implements a file-based stream.  It works correctly for large
- * files (greater than 2GB), although on some systems performance may be less
- * than the normal file stream (LTFileStream).
- */
-class LTIOFile64Stream : public LTIOStreamInf
-{
-public:
-   /** 
-    * @name Construction, destruction, initialization
-    */
-   //@{
-
-   /**   
-    * Default Constructor
-    */
-   LTIOFile64Stream();
-
-   /**   
-    * Destructor
-    */
-   virtual ~LTIOFile64Stream();
-
-   /**
-    * Initializes the stream
-    *
-    * @param   path  A LTFileSpec to the file
-    * @param   mode  mode (see stdio.h)
-    */
-   virtual LT_STATUS initialize( const LTFileSpec &path, const char* mode );
-   virtual LT_STATUS initialize( const char *path, const char* mode );
-
-   //@}
-
-   /** 
-    * @name Status accessors
-    */
-   //@{
-
-	/**
-    * Indicates whether the stream is at the end of its data or not.
-    *
-	 *	@return  true     the stream is valid and at the end of its data.  
-    * @retval false     otherwise
-	 */
-	virtual bool isEOF();
-
-
-   /** 
-    * @name Opening and closing
-    */
-   //@{
-
-	/**
-    * Is the stream open?
-    *
-	 *	@retval  true  the stream is valid and in a state that allows data access.
-    * @retval  false otherwise
-	 */
-	virtual bool isOpen();
-
-	/**
-	 *	Opens the stream.
-    *
-    * Opening a stream puts it in a state that allows data access based on cached
-	 *	initialization parameters.
-    *
-	 * @retval  LT_STS_IOStreamUninitialized  The stream has not been initialized with enough
-	 *		                                    information to open the stream
-	 *	@retval  LT_STS_IOStreamInvalidState   The the stream is already open
-	 *	@retval  LT_STS_Success                On success.
-	 *	@retval  LT_STS_Failure                Otherwise.
-	 */
-	virtual LT_STATUS open();
-	
-	/**
-	 *	Closes the stream.
-    *
-	 *	Puts the stream in a state that does not allow data access.  May
-	 *	free up resources, but only in such a way that doesn't inhibit
-	 *	successful future calls to open()
-    *
-	 *	@retval  LT_STS_Success                On success, or if the stream is already closed.
-	 *	@retval  LT_STS_Failure                Otherwise.
-	 */
-	virtual LT_STATUS close();
-
-   //@}
-
-
-   /** 
-    * @name Data access
-    */
-   //@{
-
-	/**
-	 * Retrieve the specified number of bytes from the data source and
-	 *	place them in pDest.
-	 *	
-	 *	@param   pDest         buffer in which to store read data
-	 *	@param   numBytes      number of bytes to read from stream
-    *
-	 *	@retval numBytes        The number of bytes actually read
-	 */
-   virtual lt_uint32 read( lt_uint8 *pDest, lt_uint32 numBytes );
-	
-	/**
-	 * Store the specified number of bytes in the data source.  
-    *
-	 *	@param   pSrc        buffer from which to store data
-	 *	@param   numBytes    number of bytes to write to stream
-    *
-	 *	@retval  numBytes    number of bytes actually written
-	 */
-   virtual lt_uint32 write( const lt_uint8 *pSrc, lt_uint32 numBytes );
-
-   //@}
-
-   /** 
-    * @name Positioning
-    */
-   //@{
-
-	/**
-	 *	Moves the the data access position to origin + offset
-    * 
-	 *	@param   offset   number of bytes from origin at which to the next read or write will take place
-	 *	@param   origin   place in stream from which to seek
-    *
-	 *	@retval  LT_STS_IOStreamUnsupported    The stream is not seekable
-	 *	@retval  LT_STS_IOStreamInvalidArgs    The offset and origin do not specify a valid location in the stream
-	 *	@retval  LT_STS_Success                On success
-	 *	@retval  LT_STS_Failure                Otherwise
-	*/
-   virtual LT_STATUS seek( lt_int64 offset, LTIOSeekDir origin );
-
-	/**
-	 *	Returns the current data access position as an offset from the start of the data
-    *
-	 *	@retval  postion     Number of bytes from the start of the data  
-	 *	@retval  -1          On error.  
-	 */
-   virtual lt_int64 tell();
-
-   //@}
-
-   /** 
-    * @name Other operations
-    */
-   //@{
-
-	/**
-    * @brief   Clone the stream
-    *
-    * Create new stream of the same type with the same initialization parameters.  
-	 *	The transmission of these parameters is the responsibility of the derived type.
-	 *	The new stream should initially return false for isOpen().
-	 *	
-	 *	@retval  NULL  the stream could not be duplicated; valid LTIOStreamInf* otherwise.
-	*/
-	virtual LTIOStreamInf* duplicate();
-
-	virtual LT_STATUS getLastError() const;
-
-	virtual const char* getID() const;
-
-   //@}
-private:
-
-   /**   cleanup method */
-   void cleanup();
-   /**   sets url id */
-   void setID();
-
-protected:
-
-   /**   pointer to open file */
-#if defined(LT_OS_WIN)
-   HANDLE m_file;
-   // The win32 I/O primitives have different semantics than the Unix file
-   // primitives, which are our reference model -- so we need to track the
-   // EOF condition ourselves.
-   bool m_isEOF;
-#elif defined(LT_OS_SUNOS) || defined(LT_OS_LINUX) || defined(LT_OS_DARWIN)
-   FILE * m_file;
-#else
-   #error Platform not yet supported.
-#endif
-
-   /**   path  */
-   LTFileSpec m_path;
-
-   /**   mode  */
-   char *m_mode;
-   char *m_uri;
-
-   // (state code taken copied from LTIOFileStream)
-   enum
-   {
-      unknown_state = 1,
-      reading_state = 2,
-      writing_state = 3
-   } m_state;
-};
-
-
-
-LT_END_NAMESPACE( LizardTech )
-
-
-#endif	// LT_IOFILE64STREAM_H
diff --git a/src/DSDK/include/support/lt_ioFileStream.h b/src/DSDK/include/support/lt_ioFileStream.h
deleted file mode 100644
index 4593ca5..0000000
--- a/src/DSDK/include/support/lt_ioFileStream.h
+++ /dev/null
@@ -1,249 +0,0 @@
-/* $Id: lt_ioFileStream.h 5124 2006-10-27 11:40:40Z lubia $ */
-/* //////////////////////////////////////////////////////////////////////////
-//                                                                         //
-// This code is Copyright (c) 2004 LizardTech, Inc, 1008 Western Avenue,   //
-// Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         //
-// prohibited.  Access to and use of this code is permitted only under     //
-// license from LizardTech, Inc.  Portions of the code are protected by    //
-// US and foreign patents and other filings. All Rights Reserved.          //
-//                                                                         //
-////////////////////////////////////////////////////////////////////////// */
-/* PUBLIC */
-
-#ifndef LT_IO_FILE_STREAM_H
-#define LT_IO_FILE_STREAM_H
-
-#include "lt_ioStreamInf.h"
-#include "lt_fileSpec.h"
-#include <stdio.h>
-
-LT_BEGIN_NAMESPACE( LizardTech )
-
-
-/**
- * File stream
- *
- * This class implements a file-based stream.
- *
- * @note This class only works with 32-bit streams (see LTFile64Stream for
- * large-file support).
- */
-class LTIOFileStream : public LTIOStreamInf
-{
-public:
-
-   /** 
-    * @name Construction, destruction, initialization
-    */
-   //@{
-
-   /**   
-    * Default Constructor
-    */
-   LTIOFileStream();
-
-   /**   
-    * Destructor
-    */
-   virtual ~LTIOFileStream();
-
-   /**
-    * Initializes the stream from a file spec
-    *
-    * @param   fs		file spec
-    * @param   mode  mode (see stdio.h)
-    */
-	virtual LT_STATUS initialize( const LTFileSpec& fs, const char* mode );
-	
-	virtual LT_STATUS initialize( const char* path, const char* mode );
-	virtual LT_STATUS initializeUTF8( const char* path, const char* mode );
-   virtual LT_STATUS initializeUTF16( const wchar_t* path, const wchar_t* mode);
-   //@}
-
-   /** 
-    * @name Status accessors
-    */
-   //@{
-
-	/**
-    * Indicates whether the stream is at the end of its data or not.
-    *
-	 *	@return  true     the stream is valid and at the end of its data.  
-    * @retval false     otherwise
-	 */
-	virtual bool isEOF();
-
-   /**
-    * Returns underlying stdio error code
-    */
-   int stdio_ferror();
-
-   /**
-    * Clears underlying stdio error code
-    */
-   void stdio_clearerr();
-   //@}
-
-	/**
-	 *	Set buffering - may be called only after open() but before
-	 *	the first read/write operation.
-	 *	@param	buf	buffer to use; if NULL then one is allocated
-	 *	@param	mode	one of the following:
-	 *						_IONBF (unbuffered)
-	 *						_IOLBF (line buffered)
-	 *						_IOFBF (fully buffered)
-	 *	@param	size	size of buffer
-	 */
-	int stdio_setvbuf( lt_uint8* buf, lt_uint32 mode, lt_uint32 size  );
-
-   /** 
-    * @name Opening and closing
-    */
-   //@{
-
-	/**
-    * Is the stream open?
-    *
-	 *	@retval  true  the stream is valid and in a state that allows data access.
-    * @retval  false otherwise
-	 */
-	virtual bool isOpen();
-
-	/**
-	 *	Opens the stream.
-    *
-    * Opening a stream puts it in a state that allows data access based on cached
-	 *	initialization parameters.
-    *
-	 * @retval  LT_STS_IOStreamUninitialized  The stream has not been initialized with enough
-	 *		                                    information to open the stream
-	 *	@retval  LT_STS_IOStreamInvalidState   The the stream is already open
-	 *	@retval  LT_STS_Success                On success.
-	 *	@retval  LT_STS_Failure                Otherwise.
-	 */
-	virtual LT_STATUS open();
-	
-
-	/**
-	 *	Closes the stream.
-    *
-	 *	Puts the stream in a state that does not allow data access.  May
-	 *	free up resources, but only in such a way that doesn't inhibit
-	 *	successful future calls to open()
-    *
-	 *	@retval  LT_STS_Success                On success, or if the stream is already closed.
-	 *	@retval  LT_STS_Failure                Otherwise.
-	 */
-	virtual LT_STATUS close();
-
-   //@}
-
-
-   /** 
-    * @name Data access
-    */
-   //@{
-
-	/**
-	 * Retrieve the specified number of bytes from the data source and
-	 *	place them in pDest.
-	 *	
-	 *	@param   pDest         buffer in which to store read data
-	 *	@param   numBytes      number of bytes to read from stream
-    *
-	 *	@retval numBytes        The number of bytes actually read
-	 */
-   virtual lt_uint32 read( lt_uint8 *pDest, lt_uint32 numBytes );
-	
-	/**
-	 * Store the specified number of bytes in the data source.  
-    *
-	 *	@param   pSrc        buffer from which to store data
-	 *	@param   numBytes    number of bytes to write to stream
-    *
-	 *	@retval  numBytes    number of bytes actually written
-	 */
-   virtual lt_uint32 write( const lt_uint8 *pSrc, lt_uint32 numBytes );
-
-   //@}
-
-   /** 
-    * @name Positioning
-    */
-   //@{
-
-	/**
-	 *	Moves the the data access position to origin + offset
-    * 
-	 *	@param   offset   number of bytes from origin at which to the next read or write will take place
-	 *	@param   origin   place in stream from which to seek
-    *
-	 *	@retval  LT_STS_IOStreamUnsupported    The stream is not seekable
-	 *	@retval  LT_STS_IOStreamInvalidArgs    The offset and origin do not specify a valid location in the stream
-	 *	@retval  LT_STS_Success                On success
-	 *	@retval  LT_STS_Failure                Otherwise
-	*/
-   virtual LT_STATUS seek( lt_int64 offset, LTIOSeekDir origin );
-
-	/**
-	 *	Returns the current data access position as an offset from the start of the data
-    *
-	 *	@retval  postion     Number of bytes from the start of the data  
-	 *	@retval  -1          On error.  
-	 */
-   virtual lt_int64 tell();
-
-   //@}
-
-   /** 
-    * @name Other operations
-    */
-   //@{
-
-	/**
-    * @brief   Clone the stream
-    *
-    * Create new stream of the same type with the same initialization parameters.  
-	 *	The transmission of these parameters is the responsibility of the derived type.
-	 *	The new stream should initially return false for isOpen().
-	 *	
-	 *	@retval  NULL  the stream could not be duplicated; valid LTIOStreamInf* otherwise.
-	*/
-	virtual LTIOStreamInf* duplicate();
-
-	virtual LT_STATUS getLastError() const;
-
-	virtual const char* getID() const;
-
-   //@}
-private:
-
-   /**   cleanup method */
-   void cleanup();
-
-   /**   sets url id */
-   void setID();
-
-protected:
-
-   /**   pointer to open file */
-   FILE* m_file;
-   
-   enum
-   {
-      unknown_state = 1,
-      reading_state = 2,
-      writing_state = 3
-   } m_state;
-
-   LTFileSpec	m_path;
-   char *m_mode;
-   char *m_uri;
-};
-
-
-
-LT_END_NAMESPACE( LizardTech )
-
-
-#endif	// LT_STREAMINF_H
diff --git a/src/DSDK/include/support/lt_ioMemStream.h b/src/DSDK/include/support/lt_ioMemStream.h
deleted file mode 100644
index 7f3381c..0000000
--- a/src/DSDK/include/support/lt_ioMemStream.h
+++ /dev/null
@@ -1,91 +0,0 @@
-/* $Id: lt_ioMemStream.h 5124 2006-10-27 11:40:40Z lubia $ */
-/* //////////////////////////////////////////////////////////////////////////
-//                                                                         //
-// This code is Copyright (c) 2004 LizardTech, Inc, 1008 Western Avenue,   //
-// Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         //
-// prohibited.  Access to and use of this code is permitted only under     //
-// license from LizardTech, Inc.  Portions of the code are protected by    //
-// US and foreign patents and other filings. All Rights Reserved.          //
-//                                                                         //
-////////////////////////////////////////////////////////////////////////// */
-/* PUBLIC */
-
-
-#ifndef LT_IO_MEM_STREAM_H
-#define LT_IO_MEM_STREAM_H
-
-#include "lt_ioStreamInf.h"
-
-LT_BEGIN_NAMESPACE( LizardTech )
-
-
-/**
- * Stream which wraps an array of bytes in memory.
- *
- * The buffer is of a fixed size and does not grow or shrink.
- */
-class LTIOMemStream : public LTIOStreamInf
-{
-public:
-   LTIOMemStream();
-   virtual ~LTIOMemStream();
-
-   /** 
-    * @name Initialization functions
-    */
-   /*@{*/
-   /**
-    * Initializes the stream
-    *
-    * @param   data  pointer to start of buffer
-    * @param   size  size of buffer in bytes
-    */
-   virtual LT_STATUS initialize( void* data, lt_uint32 size );
-
-   /**
-    * Initializes the stream
-    *
-    * This version internally allocates a buffer of the specified size.
-    * 
-    * @param   size  size of buffer in bytes
-    */
-   virtual LT_STATUS initialize( lt_uint32 size );
-   /*@}*/
-
-	virtual bool isEOF();
-	virtual bool isOpen();
-	virtual LT_STATUS open();
-	virtual LT_STATUS close();
-   virtual lt_uint32 read( lt_uint8 *pDest, lt_uint32 numBytes );
-   virtual lt_uint32 write( const lt_uint8 *pSrc, lt_uint32 numBytes );
-   virtual LT_STATUS seek( lt_int64 offset, LTIOSeekDir origin );
-   virtual lt_int64 tell();
-	virtual LTIOStreamInf* duplicate();
-	virtual LT_STATUS getLastError() const;
-	virtual const char* getID() const;
-
-protected:
-
-   /**   pointer to buffer */
-   lt_uint8*   m_data;
-
-   /**   size of buffer */
-   lt_uint32   m_size;
-
-   /**   current position  */
-   lt_uint32   m_cur;
-
-   /**   data ownership */
-   bool        m_ownsData;
-
-   /**   openness */
-   bool        m_isOpen;
-
-   bool m_isEOF;
-};
-
-
-LT_END_NAMESPACE( LizardTech )
-
-
-#endif	// LT_IO_MEM_STREAM_H
diff --git a/src/DSDK/include/support/lt_ioStatus.h b/src/DSDK/include/support/lt_ioStatus.h
deleted file mode 100644
index 772cbcb..0000000
--- a/src/DSDK/include/support/lt_ioStatus.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/* $Id: lt_ioStatus.h 5124 2006-10-27 11:40:40Z lubia $ */
-/* //////////////////////////////////////////////////////////////////////////
-//                                                                         //
-// This code is Copyright (c) 2004 LizardTech, Inc, 1008 Western Avenue,   //
-// Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         //
-// prohibited.  Access to and use of this code is permitted only under     //
-// license from LizardTech, Inc.  Portions of the code are protected by    //
-// US and foreign patents and other filings. All Rights Reserved.          //
-//                                                                         //
-////////////////////////////////////////////////////////////////////////// */
-/* PUBLIC */
-
-#ifndef LT_IOSTATUS_H
-#define LT_IOSTATUS_H
-
-#include "lt_base.h"
-
-/** Base value for stream error codes  */
-#define LT_STS_IOBas                            145000
-LT_STATUSSTRING_ADD(LT_STS_IOBas, "lt_lib_mrsid_core base")
-
-/**  Indicates that a stream has not been initialized with a data source */
-#define LT_STS_IOStreamUninitialized            145003
-LT_STATUSSTRING_ADD(LT_STS_IOStreamUninitialized, "stream not initialized")
-
-/**  Indicates that a requested operation is not supported by a stream */
-#define LT_STS_IOStreamUnsupported              145010
-LT_STATUSSTRING_ADD(LT_STS_IOStreamUnsupported, "operation unsupported")
-
-/**  Indicates that the supplied arguments are invalid or unintelligible */
-#define LT_STS_IOInvalidArgs		               145011
-LT_STATUSSTRING_ADD(LT_STS_IOInvalidArgs, "invalid arguments")
-
-/**  Indicates that a stream is in a state that disallows the requested action */
-#define LT_STS_IOStreamInvalidState	            145012
-LT_STATUSSTRING_ADD(LT_STS_IOStreamInvalidState, "stream in invalid state")
-
-/**  Out of memory */
-#define LT_STS_IOOutOfMemory	                  145013
-LT_STATUSSTRING_ADD(LT_STS_IOOutOfMemory, "out of memory")
-
-/** Unable to get file lock */
-#define LT_STS_IOFileLock                       145014
-LT_STATUSSTRING_ADD(LT_STS_IOFileLock, "unable to get file lock")
-
-/** Could not unlock file */
-#define LT_STS_IOFileUnlock                     145015
-LT_STATUSSTRING_ADD(LT_STS_IOFileUnlock, "could not unlock file")
-
-/** Upper limit for stream error codes  */
-#define LT_STS_IOMax           	               145999
-LT_STATUSSTRING_ADD(LT_STS_IOMax, "lt_lib_io max")
-
-
-#endif // LT_IOSTATUS_H
diff --git a/src/DSDK/include/support/lt_ioStreamInf.h b/src/DSDK/include/support/lt_ioStreamInf.h
deleted file mode 100644
index 1005bfa..0000000
--- a/src/DSDK/include/support/lt_ioStreamInf.h
+++ /dev/null
@@ -1,218 +0,0 @@
-/* $Id: lt_ioStreamInf.h 5124 2006-10-27 11:40:40Z lubia $ */
-/* //////////////////////////////////////////////////////////////////////////
-//                                                                         //
-// This code is Copyright (c) 2004 LizardTech, Inc, 1008 Western Avenue,   //
-// Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         //
-// prohibited.  Access to and use of this code is permitted only under     //
-// license from LizardTech, Inc.  Portions of the code are protected by    //
-// US and foreign patents and other filings. All Rights Reserved.          //
-//                                                                         //
-////////////////////////////////////////////////////////////////////////// */
-/* PUBLIC */
-
-#ifndef LT_STREAMINF_H
-#define LT_STREAMINF_H
-
-#include "lt_lib_io.h"
-
-
-LT_BEGIN_NAMESPACE( LizardTech )
-
-
-
-/**
- * Abstract definition of a stream.
- *
- * This class is intentionally very sparse, and completely abstract to 
- * facilitate COM usage.  The semantics of the LTIOStreamInf class are
- * very similar to the unix stdio model.
- */
-class LTIOStreamInf
-{
-public:
-   // The following is a pure virtual destructor with an empty definition.
-   // It might look broken to you, but this is a well-known practice and
-   // is explicitly allowed by the standard for very good, technical reasons.
-   // (Do a google search for "pure virtual destructor" for details.)
-#if defined(LT_COMPILER_GNU) || defined(LT_COMPILER_SUN)
-   // gcc doesn't allow the declaration to be in the class body,
-   // so we put the member function "definition" in lt_ioStreamInf.cpp
-   virtual ~LTIOStreamInf() =0;
-#else
-   virtual ~LTIOStreamInf() =0 {}
-#endif
-  
-   /** 
-    * @name Status accessors
-    */
-   //@{
-
-	/**
-    * Test for end-of-stream
-    *
-    * Returns true after the first read operation that attempts to 
-    * read past the end of the stream. It returns false if the current 
-    * position is not end of stream.
-    *
-	 *	@retval  true     end of stream  
-    * @retval  false    otherwise
-	 */
-	virtual bool isEOF() =0;
-
-	/**
-    * Test for stream openness.
-    *
-	 *	@retval  true     The stream is open
-    * @retval  false    otherwise
-	 */
-	virtual bool isOpen() =0;
-
-   //@}
-
-
-   /** 
-    * @name Opening and closing
-    */
-   //@{
-
-	/**
-	 *	Opens the stream.
-    *
-    * Opening a stream puts it in a state that allows data access based on cached
-	 *	initialization parameters. 
-    *
-	 * @retval  LT_STS_IOStreamUninitialized  The stream has not been initialized with enough
-	 *		                                    information to open the stream
-	 *	@retval  LT_STS_IOStreamInvalidState   The stream is already open
-	 *	@retval  LT_STS_Success                On success.
-	 *	@retval  LT_STS_Failure                Failure.
-    * @retval  other                         Implementations may return other codes
-	 */
-	virtual LT_STATUS open() =0;
-	
-	/**
-	 *	Closes the stream.
-    *
-	 *	Puts the stream in a state that does not allow data access.  May
-	 *	free up resources, but only in such a way that doesn't inhibit
-	 *	successful future calls to open()
-    *
-	 *	@retval  LT_STS_Success                On success, or if the stream is already closed.
-	 *	@retval  LT_STS_Failure                Otherwise.
-	 */
-	virtual LT_STATUS close() =0;
-
-   //@}
-
-
-   /** 
-    * @name Data access
-    */
-   //@{
-
-	/**
-	 * Retrieve the specified number of bytes from the data source and
-	 *	place them in pDest.
-	 *	
-	 *	@param   pDest         buffer in which to store read data
-	 *	@param   numBytes      number of bytes to read from stream
-    *
-	 *	@retval numBytes        The number of bytes actually read
-	 */
-   virtual lt_uint32 read( lt_uint8 *pDest, lt_uint32 numBytes ) = 0;
-	
-	/**
-	 * Store the specified number of bytes in the data source.  
-    *
-	 *	@param   pSrc        buffer from which to store data
-	 *	@param   numBytes    number of bytes to write to stream
-    *
-	 *	@retval  numBytes    number of bytes actually written
-	 */
-   virtual lt_uint32 write( const lt_uint8 *pSrc, lt_uint32 numBytes ) = 0;
-
-   //@}
-
-   /** 
-    * @name Positioning
-    */
-   //@{
-
-	/**
-	 *	Moves the data access position to origin + offset
-    * 
-	 *	@param   offset   number of bytes from origin at which to the next read or write will take place
-	 *	@param   origin   place in stream from which to seek
-    *
-	 *	@retval  LT_STS_IOStreamUnsupported    The stream is not seekable
-	 *	@retval  LT_STS_IOStreamInvalidArgs    The offset and origin do not specify a valid location in the stream
-	 *	@retval  LT_STS_Success                On success
-	 *	@retval  LT_STS_Failure                Otherwise
-    * @retval  other                         Implementations may return other codes
-	 */
-   virtual LT_STATUS seek( lt_int64 offset, LTIOSeekDir origin ) =0;
-
-	/**
-	 *	Returns the current data access position as an offset from the start of the data
-    *
-	 *	@retval  postion     Number of bytes from the start of the data  
-	 *	@retval  -1          On error.  
-    * @retval  other       Implementations may return other codes
-	 */
-   virtual lt_int64 tell() =0;
-
-   //@}
-
-   /** 
-    * @name Other operations
-    */
-   //@{
-
-	/**
-    * @brief   Clone the stream
-    *
-    * Create new stream of the same type with the same initialization parameters.  
-	 *	The transmission of these parameters is the responsibility of the derived type.
-	 *	The new stream should initially return false for isOpen().
-	 *	
-	 *	@retval  NULL  the stream could not be duplicated; valid LTIOStreamInf* otherwise.
-	*/
-	virtual LTIOStreamInf* duplicate() =0;
-
-
-	/**
-    * @brief   Get status code of last error event.
-    *
-    * read(), write(), tell(), and duplicate() do not explicitly return status codes
-    * in the event of an error.  When an error has occurred, this function returns
-    * the appropriate status code.  Note calling this function after a successful
-    * I/O operation will return an undefined value. 
-	 *	
-	 *	@retval  status  the error code
-	*/
-	virtual LT_STATUS getLastError() const =0;
-
-
-	/**
-    * @brief   Get a URI describing the stream object.
-    *
-    * This function returns a UTF-8, null-terminated string which is a
-    * URI describing the origin of the stream object -- for example,
-    * "file://foo.txt" or "lt_memstream:".  This string is only intended
-    * for diagnostic purposes, i.e. it may not be valid to pass it
-    * to the ctor in an attempt to reopen the stream. 
-	 *	
-	 *	@retval  uri  the uri string
-	*/
-	virtual const char* getID() const =0;
-
-   //@}
-
-};
-
-
-
-LT_END_NAMESPACE( LizardTech )
-
-
-#endif	// LT_STREAMINF_H
diff --git a/src/DSDK/include/support/lt_ioSubStream.h b/src/DSDK/include/support/lt_ioSubStream.h
deleted file mode 100644
index 0240ffa..0000000
--- a/src/DSDK/include/support/lt_ioSubStream.h
+++ /dev/null
@@ -1,233 +0,0 @@
-/* $Id: lt_ioSubStream.h 5124 2006-10-27 11:40:40Z lubia $ */
-/* //////////////////////////////////////////////////////////////////////////
-//                                                                         //
-// This code is Copyright (c) 2004 LizardTech, Inc, 1008 Western Avenue,   //
-// Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         //
-// prohibited.  Access to and use of this code is permitted only under     //
-// license from LizardTech, Inc.  Portions of the code are protected by    //
-// US and foreign patents and other filings. All Rights Reserved.          //
-//                                                                         //
-////////////////////////////////////////////////////////////////////////// */
-/* PUBLIC */
-
-
-#ifndef LT_IOSUBSTREAM_H
-#define LT_IOSUBSTREAM_H
-
-#include "lt_ioStreamInf.h"
-#include <stdio.h>
-
-LT_BEGIN_NAMESPACE( LizardTech )
-
-
-
-/**
- * LTIOSubStream
- *
- * A SubStream is a stream which wraps another stream, but provides access
- * to only a (contiguous) subset of the bytes of the parent stream -- without
- * revealing any of the surrounding bytes.
- *
- * Consider the following situation: the MG2 decoder always assumes byte 0 of
- * the image stream given to it is the start of the image, but you have an
- * image embedded in some larger stream -- say from byte offset 100 to 2100.
- * By creating a substream from the larger stream and giving that to the
- * decoder, the decoder will be doing the right thing when it naively issues
- * a "seek-to-beginning" request.
- *
- * Note that the SubStream does NOT take ownership of the stream given to it.
- * The caller should duplicate() the main stream first, if needed.  Closing
- * the substream will close the parent stream, but deleting the substream will
- * not delete the parent stream.
- *
- * Note that the results might be undefined if the parent or child stream is
- * modified at any point -- try to avoid such situations.
- */
-class LTIOSubStream : public LTIOStreamInf
-{
-public:
-
-   /** 
-    * @name Construction, destruction, initialization
-    */
-   //@{
-
-   /**   
-    * Default Constructor
-    */
-   LTIOSubStream();
-
-   /**   
-    * Destructor
-    */
-   virtual ~LTIOSubStream();
-
-   /**
-    * Initializes the stream
-    *
-    * @param   stream  the parent stream to be subsetted
-    * @param   start   the byte offset to be byte 0 of the subset stream 
-    * @param   end     the byte offset to be the last byte of the subset
-    *                  stream: reading or writing past this byte will be
-    *                  handled as an EOF condition
-    * @param   takeOwnership   if true, this object will take ownership
-    *                  of \a stream and delete it
-    */
-   virtual LT_STATUS initialize(LTIOStreamInf* stream,
-                                lt_int64 start,
-                                lt_int64 end,
-                                bool takeOwnership=false);
-
-   /** 
-    * @name Status accessors
-    */
-   //@{
-
-	/**
-    * Indicates whether the stream is at the end of its data or not.
-    *
-	 *	@return  true     the stream is valid and at the end of its data.  
-    * @retval false     otherwise
-	 */
-	virtual bool isEOF();
-
-
-   /** 
-    * @name Opening and closing
-    */
-   //@{
-
-	/**
-    * Is the stream open?
-    *
-	 *	@retval  true  the stream is valid and in a state that allows data access.
-    * @retval  false otherwise
-	 */
-	virtual bool isOpen();
-
-	/**
-	 *	Opens the stream.
-    *
-    * Opening a stream puts it in a state that allows data access based on cached
-	 *	initialization parameters.
-    *
-	 * @retval  LT_STS_IOStreamUninitialized  The stream has not been initialized with enough
-	 *		                                    information to open the stream
-	 *	@retval  LT_STS_IOStreamInvalidState   The the stream is already open
-	 *	@retval  LT_STS_Success                On success.
-	 *	@retval  LT_STS_Failure                Otherwise.
-	 */
-	virtual LT_STATUS open();
-	
-	/**
-	 *	Closes the stream.
-    *
-	 *	Puts the stream in a state that does not allow data access.  May
-	 *	free up resources, but only in such a way that doesn't inhibit
-	 *	successful future calls to open()
-    *
-	 *	@retval  LT_STS_Success                On success, or if the stream is already closed.
-	 *	@retval  LT_STS_Failure                Otherwise.
-	 */
-	virtual LT_STATUS close();
-
-   //@}
-
-
-   /** 
-    * @name Data access
-    */
-   //@{
-
-	/**
-	 * Retrieve the specified number of bytes from the data source and
-	 *	place them in pDest.
-	 *	
-	 *	@param   pDest         buffer in which to store read data
-	 *	@param   numBytes      number of bytes to read from stream
-    *
-	 *	@retval numBytes        The number of bytes actually read
-	 */
-   virtual lt_uint32 read( lt_uint8 *pDest, lt_uint32 numBytes );
-	
-	/**
-	 * Store the specified number of bytes in the data source.  
-    *
-	 *	@param   pSrc        buffer from which to store data
-	 *	@param   numBytes    number of bytes to write to stream
-    *
-	 *	@retval  numBytes    number of bytes actually written
-	 */
-   virtual lt_uint32 write( const lt_uint8 *pSrc, lt_uint32 numBytes );
-
-   //@}
-
-   /** 
-    * @name Positioning
-    */
-   //@{
-
-	/**
-	 *	Moves the the data access position to origin + offset
-    * 
-	 *	@param   offset   number of bytes from origin at which to the next read or write will take place
-	 *	@param   origin   place in stream from which to seek
-    *
-	 *	@retval  LT_STS_IOStreamUnsupported    The stream is not seekable
-	 *	@retval  LT_STS_IOStreamInvalidArgs    The offset and origin do not specify a valid location in the stream
-	 *	@retval  LT_STS_Success                On success
-	 *	@retval  LT_STS_Failure                Otherwise
-	*/
-   virtual LT_STATUS seek( lt_int64 offset, LTIOSeekDir origin );
-
-	/**
-	 *	Returns the current data access position as an offset from the start of the data
-    *
-	 *	@retval  postion     Number of bytes from the start of the data  
-	 *	@retval  -1          On error.  
-	 */
-   virtual lt_int64 tell();
-
-   //@}
-
-   /** 
-    * @name Other operations
-    */
-   //@{
-
-	/**
-    * @brief   Clone the stream
-    *
-    * Create new stream of the same type with the same initialization parameters.  
-	 *	The transmission of these parameters is the responsibility of the derived type.
-	 *	The new stream should initially return false for isOpen().
-	 *	
-	 *	@retval  NULL  the stream could not be duplicated; valid LTIOStreamInf* otherwise.
-	*/
-	virtual LTIOStreamInf* duplicate();
-
-	virtual LT_STATUS getLastError() const;
-
-	virtual const char* getID() const;
-
-   //@}
-
-
-protected:
-   /**   cleanup method */
-   void cleanup();
-
-   LTIOStreamInf* m_stream;
-   bool m_ownsStream;
-   lt_int64 m_startOffset;
-   lt_int64 m_endOffset;
-
-   bool m_isEOF;
-};
-
-
-
-LT_END_NAMESPACE( LizardTech )
-
-
-#endif	// LT_IOSUBSTREAM_H
diff --git a/src/DSDK/include/support/lt_lib_io.h b/src/DSDK/include/support/lt_lib_io.h
deleted file mode 100644
index e7dd39c..0000000
--- a/src/DSDK/include/support/lt_lib_io.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/* $Id: lt_lib_io.h 5124 2006-10-27 11:40:40Z lubia $ */
-/* //////////////////////////////////////////////////////////////////////////
-//                                                                         //
-// This code is Copyright (c) 2004 LizardTech, Inc, 1008 Western Avenue,   //
-// Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         //
-// prohibited.  Access to and use of this code is permitted only under     //
-// license from LizardTech, Inc.  Portions of the code are protected by    //
-// US and foreign patents and other filings. All Rights Reserved.          //
-//                                                                         //
-////////////////////////////////////////////////////////////////////////// */
-/* PUBLIC - C */
- 
-/**       
- * @file
- * 
- * Support for the IO classes.
- */
-#ifndef LT_LIB_IO_H
-#define LT_LIB_IO_H
-
-#include "lt_base.h"
-
-#ifdef LT_CPLUSPLUS
-extern "C" {
-#endif
-
-/**
- *	Stream seek directions.
- */
-typedef enum LTIOSeekDir
-{
-   /**   error */
-	LTIO_SEEK_DIR_ERROR = 1,
-	
-	/** Offset from the beginning of the file */
-	LTIO_SEEK_DIR_BEG = 2,
-
-	/** Offset from the current read/write position */
-	LTIO_SEEK_DIR_CUR = 3,
-
-	/** Offset from the end of the file (offsets need to be negative to be valid) */
-	LTIO_SEEK_DIR_END = 4,
-
-   /** Marker */
-	LTIO_SEEK_DIR_MAX = 5
-} LTIOSeekDir;
-
-//	status codes
-#include "lt_ioStatus.h"
-
-//	macros
-#define LTIO_HR_FAILED(hr)  ((long)(hr)<0)
-
-#ifdef LT_OS_MAC
-#error Unsupported platform
-#endif
-
-
-#ifdef LT_CPLUSPLUS
-}
-#endif
-
-#endif
diff --git a/src/DSDK/include/support/lt_platform.h b/src/DSDK/include/support/lt_platform.h
deleted file mode 100644
index 13e2310..0000000
--- a/src/DSDK/include/support/lt_platform.h
+++ /dev/null
@@ -1,223 +0,0 @@
-/* $Id: lt_platform.h 5124 2006-10-27 11:40:40Z lubia $ */
-/* //////////////////////////////////////////////////////////////////////////
-//                                                                         //
-// This code is Copyright (c) 2004 LizardTech, Inc, 1008 Western Avenue,   //
-// Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         //
-// prohibited.  Access to and use of this code is permitted only under     //
-// license from LizardTech, Inc.  Portions of the code are protected by    //
-// US and foreign patents and other filings. All Rights Reserved.          //
-//                                                                         //
-////////////////////////////////////////////////////////////////////////// */
-/* PUBLIC */
-
-
-/**      
- * @file
- *
- * Preprocessor symbols for canonical identification of OS, architecture,
- * and compiler.  Scrupulous use of these and only these symbols avoids
- * portability problems due to inconsistent platform tests.
- * 
- * For a given target platform XYZ, we define three symbols with the value 1:
- *
- * \li \c LT_OS_XYZ defines the operating system
- * \li \c LT_COMPILER_XYZ defines the compiler
- * \li \c LT_ARCH_XYZ defines the HW architecture
- *
- * Note for Windows, we treat WIN32, WIN64, and WinCE as distinct OS's, but
- * both will define LT_OS_WIN for the typical cases.
- *
- * See the file lt_platform.h for full details.
- *
- * @note This file is C-callable.
- */
-
-
-#ifndef LT_PLATFORM_H
-#define LT_PLATFORM_H
-
-/*
- */
-
-
-/*
- * Check for Cross Platform Macros
- */
-
-/*  Check for GCC, Intel, of MSVC */
-#if defined(__GNUC__) || defined(__GNUG__)   /* GNU's GCC */
-   #define LT_COMPILER_GNU 1
-   #if defined(__GNUC__)
-      #define LT_COMPILER_GCC 1
-   #endif
-   #if defined(__GNUG__)
-      #define LT_COMPILER_GXX 1
-   #endif
-   #if(__GNUC__ == 2)
-      #define LT_COMPILER_GCC2 1
-   #elif(__GNUC__ == 3)
-      #define LT_COMPILER_GCC3 1
-   #elif(__GNUC__ == 4)
-      #define LT_COMPILER_GCC4 1
-   #else
-      #error PLATFORM ERROR: Unsupported version of GCC 
-   #endif
-#elif defined(__ECL) || defined(__LCL)  /* Intel's VTune */
-   #define LT_COMPILER_INTEL 1
-#elif defined(_MSC_VER)    /* MS Visual C/C++ */
-   #define LT_COMPILER_MS 1
-   #if _MSC_VER == 1300 || _MSC_VER == 1310
-      #define LT_COMPILER_MS7 1
-   #endif
-   #if _MSC_VER == 1400 || _MSC_VER == 1410
-      #define LT_COMPILER_MS8 1
-      #define _CRT_SECURE_NO_DEPRECATE
-      /* disable deprecation warnings (4996) */
-      #pragma warning(disable:4996)
-   #endif
-#endif
-
-#if defined(_WIN64) || defined(WIN64)
-
-   #define LT_OS_WIN 1
-   #define LT_OS_WIN64 1
-
-   #if !defined(_M_IX86)
-      #define LT_ARCH_IA64 1
-   #else
-      #error PLATFORM ERROR: WIN64, but unknown architecture
-   #endif
-
-   #if !defined(LT_COMPILER_INTEL) && !defined(LT_COMPILER_MS)
-      #error PLATFORM ERROR: WIN64, but unknown compiler
-   #endif
-
-#elif defined(_WIN32_WCE)
-
-   #define LT_OS_WIN 1
-   #define LT_OS_WINCE 1
-  
-   #if defined(ARM) || defined(_ARM_)  
-      #define LT_ARCH_ARM 1
-   #elif defined(MIPS) || defined(_MIPS_)
-      #define LT_ARCH_MIPS 1
-   #elif defined(SH3) || defined(_SH3_)
-      #define LT_ARCH_SH3 1
-   #elif defined(SH4) || defined(_SH4_)
-      #define LT_ARCH_SH4 1
-   #elif defined(_X86_) || defined(x86)
-      #define LT_ARCH_IA32 1
-   #else
-      #error PLATFORM ERROR: WINCE, but unknown architecture
-   #endif
-
-   #if !defined(LT_COMPILER_MS)
-      #error PLATFORM ERROR: WINCE, but unknown compiler
-   #endif
-
-#elif defined(_WIN32) || defined(WIN32)
-
-   #define LT_OS_WIN 1
-   #define LT_OS_WIN32 1
-
-   #if defined(_M_IX86)
-      #define LT_ARCH_IA32 1
-   #else
-      #error PLATFORM ERROR: WIN32, but unknown architecture
-   #endif
-
-   #if !defined(LT_COMPILER_INTEL) && !defined(LT_COMPILER_MS)
-      #error PLATFORM ERROR: WIN32, but unknown compiler
-   #endif
-
-#elif defined(__APPLE__) && defined(__MACH__)
-
-   #define LT_OS_UNIX 1
-   #define LT_OS_DARWIN 1
-
-   #if defined(__ppc__)
-      #define LT_ARCH_PPC 1
-   #elif defined(i386)
-      #define LT_ARCH_IA32 1
-   #else
-      #error PLATFORM ERROR: DARWIN, but unknown architecture
-   #endif
-
-   #if !defined(LT_COMPILER_GNU)
-      #error PLATFORM ERROR: DARWIN, but unknown compiler
-   #endif
-
-#elif defined (__sun)
-
-   #define LT_OS_UNIX 1
-   #define LT_OS_SUNOS 1
-
-   #if defined(__sparc)
-      #define LT_ARCH_SPARC 1
-   #elif defined(i386)
-      #define LT_ARCH_IA32 1
-   #else
-      #error PLATFORM ERROR: SUNOS, but unknown architecture
-   #endif
-
-   #if defined (__SUNPRO_CC)
-      #define LT_COMPILER_SUN 1
-      #define LT_COMPILER_SUNPRO_CC 1
-   #elif defined(__SUNPRO_C)
-      #define LT_COMPILER_SUN 1
-      #define LT_COMPILER_SUNPRO_C 1
-   #elif !defined(LT_COMPILER_GNU)
-      #error PLATFORM ERROR: SUNOS, but unknown compiler
-   #endif
-
-#elif defined (linux) || defined (__linux__) || defined (__linux)
-
-   #define LT_OS_UNIX 1
-   #define LT_OS_LINUX 1
-
-   #if defined(i386)
-      #define LT_ARCH_IA32 1
-   #else
-      #error PLATFORM ERROR: LINUX, but unknown architecture
-   #endif
-
-   #if !defined(LT_COMPILER_GNU)
-      #error PLATFORM ERROR: DARWIN, but unknown compiler
-   #endif
-
-#else
-   #error PLATFORM ERROR: unsupported target platform
-#endif
-
-#if !defined(LT_OS_WIN) && !defined(LT_OS_UNIX)
-   #error PLATFORM ERROR: set LT_OS_WIN or LT_OS_UNIX
-#endif
-
-/*
- * Endian-ness
- */
-
-#if defined(LT_ARCH_IA32) || defined(LT_ARCH_IA64) || defined(LT_ARCH_ARM)
-   #define LT_LITTLE_ENDIAN
-#elif defined(LT_ARCH_PPC) || defined(LT_ARCH_SPARC)
-   /* We do not define LT_BIG_ENDIAN, as that would just confuse things;
-      either you're little endian, or you're not. */
-#else
-   #error PLATFORM ERROR: unknown architecture
-#endif
-
-/*
- * backwards compatability, deprecated stuff
- */
-
-#if defined(LT_LITTLE_ENDIAN) && !defined(_LITTLE_ENDIAN)
-   /* this is deprecated! */
-   #define _LITTLE_ENDIAN
-#endif
-
-#ifdef LT_OS_UNIX
-   #define LT_UNIX 1
-#endif
-
-#endif /* LT_PLATFORM_H */
-
diff --git a/src/DSDK/include/support/lt_status.h b/src/DSDK/include/support/lt_status.h
deleted file mode 100644
index e80213d..0000000
--- a/src/DSDK/include/support/lt_status.h
+++ /dev/null
@@ -1,151 +0,0 @@
-/* $Id: lt_status.h 5124 2006-10-27 11:40:40Z lubia $ */
-/* //////////////////////////////////////////////////////////////////////////
-//                                                                         //
-// This code is Copyright (c) 2004 LizardTech, Inc, 1008 Western Avenue,   //
-// Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         //
-// prohibited.  Access to and use of this code is permitted only under     //
-// license from LizardTech, Inc.  Portions of the code are protected by    //
-// US and foreign patents and other filings. All Rights Reserved.          //
-//                                                                         //
-////////////////////////////////////////////////////////////////////////// */
-/* PUBLIC */
-
-/**      
- * @file
- *
- * Declaration of the LT_STATUS type and some commonly used status codes.
- *
- * @note This file is C-callable.
- */
-
-#ifndef LT_STATUS_H
-#define LT_STATUS_H
-
-#if defined(LT_COMPILER_MS)
-   #pragma warning(push,4) 
-#endif
-
-/**
- * @typedef LT_STATUS
- *
- * An integral status code.
- *
- * This value is explicitly sized, i.e. lt_uint32 and not an "unsigned
- * long", so it can be passed safely between pre-compiled libraries.  Each
- * LizardTech project/library is assigned ranges of values, e.g. 1000-1999,
- * for project-specific, local usage.  Values 0-100 are general,
- * LizardTech-wide codes.  Values 65000-65535 are reserved for customer use.
- */
-typedef lt_uint32 LT_STATUS;
-
-
-/**
- * @name Common status codes
- */
-/*@{*/
-
-/**
- * status code indicating success
- *
- * This status code indicates the function completed sucessfully.
- */
-#define LT_STS_Success ((LT_STATUS)0)
-
-/**
- * status code indicating failure
- *
- * This status code indicates general, nonspecific failure.  Use sparingly;
- * project-specific codes are preferred where possible.
- */
-#define LT_STS_Failure ((LT_STATUS)1)
-
-/**
- * status code indicating unintialized variable
- *
- * This status code is only used as a sentinal value for initializing
- * LT_STATUS variables: it is the "-1" for status codes.  A conformant
- * function should _never_ return this value.
- */
-#define LT_STS_Uninit ((LT_STATUS)2)
-      
-/**
- * status code indicating bad function parameter
- *
- * This status code indicates that one of the parameters passed to the
- * function was invalid, according to the documented interface rules.
- * Examples: an integer value is out of the allowed range, or a pointer
- * 
- */
-#define LT_STS_BadParam ((LT_STATUS)3)
-      
-/**
- * status code indicating bad calling context for function
- *
- * This status code indicates that the function was called in some
- * unexpected fashion: not that there was anything wrong with the
- * parameters per se, it's just that the world was not set up for
- * you to make this particular call in this particular way right now --
- * you've violated a documented  execution constraint of some sort.
- * Examples: calling a class's member function before calling initialize(),
- * calling decode before setting a scene or an output buffer, etc.
- * (Contrast this with LT_STS_BadParam, which is a more specific
- * kind of problem.)
- */
-#define LT_STS_BadContext ((LT_STATUS)4)
-
-/**
- * status code indicating 3rd-party library error
- *
- * This status code indicates an unknown or otherwise undiagnosable
- * exception or error was generated by a call into a 3rd party library.
- */
-#define LT_STS_ForeignError ((LT_STATUS)5)
-      
-/**
- * status code indicating unreachable code
- *
- * This status code is used for code that by definition should not or
- * cannot be reached, e.g. the default case in a switch statement for
- * which you think you've covered the full range of legal case values,
- * where you're left with a dangling return statement.  A return of
- * LT_STS_NotReached is often preceeded by "LT_ASSERT(false)".
- */
-#define LT_STS_NotReached ((LT_STATUS)6)
-      
-/**
- * status code indicating bad NULL pointer dereference
- *
- * This status code is used when checking a pointer to make sure that
- * it is not NULL, prior to dereferencing it.
- */
-#define LT_STS_NullPointer ((LT_STATUS)7)
-
-/**
- * status code indicating new/malloc/calloc failed
- *
- * This status code is used when allocating memory returns a NULL 
- * pointer.
- */
-#define LT_STS_OutOfMemory ((LT_STATUS)8)
-
-/*@}*/
-      
-
-/**
- * @name Macros for checking status codes
- */
-/*@{*/
-
-/** checks return value for success status */
-#define LT_SUCCESS( err ) ((err)==LT_STS_Success)
-/** checks return value for failure status */
-#define LT_FAILURE( err ) ((err)!=LT_STS_Success)
-
-/*@}*/
-
-
-#if defined(LT_COMPILER_MS)
-   #pragma warning(pop) 
-#endif
-
-#endif /* LT_STATUS_H */
diff --git a/src/DSDK/include/support/lt_system.h b/src/DSDK/include/support/lt_system.h
deleted file mode 100644
index e6037cc..0000000
--- a/src/DSDK/include/support/lt_system.h
+++ /dev/null
@@ -1,94 +0,0 @@
-/* $Id: lt_system.h 5124 2006-10-27 11:40:40Z lubia $ */
-/* //////////////////////////////////////////////////////////////////////////
-//                                                                         //
-// This code is Copyright (c) 2005 LizardTech, Inc, 1008 Western Avenue,   //
-// Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         //
-// prohibited.  Access to and use of this code is permitted only under     //
-// license from LizardTech, Inc.  Portions of the code are protected by    //
-// US and foreign patents and other filings. All Rights Reserved.          //
-//                                                                         //
-////////////////////////////////////////////////////////////////////////// */
-/* PUBLIC */
-
-/**      
- *  @file  lt_system.h
- *
- *  @brief Declaration of standard system headers in a C-interface.
- * 
- *  $Date: 2006-10-27 08:40:40 -0300 (sex, 27 out 2006) $
- *  $Revision: 5124 $
- */
-
-
-#ifndef LT_SYSTEM_H
-#define LT_SYSTEM_H
-
-#include "lt_platform.h"
-
-/*
- * justifications for inclusions are that we want:
- *
- *   NULL
- *   memcpy() ...
- *   malloc() ...
- *   strlen() ...
- *   isdigit() ...
- *   printf() ...
- *   posix
- */
-
-
-/* common to all platforms */
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <math.h>
-#include <stddef.h>
-#include <ctype.h>
-#include <limits.h>
-#include <float.h>
-
-
-#if defined(LT_OS_LINUX)
-
-   #include <unistd.h>
-   #include <strings.h>
-   #include <time.h>
-   #include <wchar.h>
-
-#elif defined(LT_OS_SUNOS)
-
-   #include <unistd.h>
-   #include <strings.h>
-   #include <time.h>
-   #include <wchar.h>
-
-#elif defined(LT_OS_DARWIN)
-
-   #include <unistd.h>
-   #include <strings.h>
-   #include <time.h>
-   
-   #if defined(LT_OS_DARWIN6)
-   	#include <wcstring.h>
-   #else
-   	#include <wchar.h>
-   #endif
-
-#elif defined(LT_OS_WINCE)
-
-   /* (nothing special for now) */
-
-#elif defined(LT_OS_WIN32)
-
-   #include <time.h>
-   #include <wchar.h>
-
-#else
-
-   #error Port me!
-
-#endif
-
-
-#endif /* LT_SYSTEM_H */
diff --git a/src/DSDK/include/support/lt_types.h b/src/DSDK/include/support/lt_types.h
deleted file mode 100644
index e7612df..0000000
--- a/src/DSDK/include/support/lt_types.h
+++ /dev/null
@@ -1,146 +0,0 @@
-/* $Id: lt_types.h 5124 2006-10-27 11:40:40Z lubia $ */
-/* //////////////////////////////////////////////////////////////////////////
-//                                                                         //
-// This code is Copyright (c) 2004 LizardTech, Inc, 1008 Western Avenue,   //
-// Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         //
-// prohibited.  Access to and use of this code is permitted only under     //
-// license from LizardTech, Inc.  Portions of the code are protected by    //
-// US and foreign patents and other filings. All Rights Reserved.          //
-//                                                                         //
-////////////////////////////////////////////////////////////////////////// */
-/* PUBLIC */
-
-/**      
- * @file
- *
- * Declaration of standard types and limits in a C-interface.
- * 
- * @note This file is C-callable.
- */
-
-
-#ifndef LT_TYPES_H
-#define LT_TYPES_H
-
-#include <limits.h>
-#include <float.h>
-
-#include "lt_platform.h"
-
-
-#if defined(LT_COMPILER_MS)
-   #pragma warning(push,4) 
-#endif
-
-/**
- * @name Fundamental types
- *
- * We provide typdefs for all the basic C datatypes.
- *
- * @note 80 and 128-bit floats are inherently unportable, so we do not use them.
- */
-/*@{*/
-/** signed 8-bit integer */
-typedef signed char     lt_int8;
-/** unsigned 8-bit integer */
-typedef unsigned char   lt_uint8;
-/** signed 16-bit integer */
-typedef signed short    lt_int16;
-/** unsigned 16-bit integer */
-typedef unsigned short  lt_uint16;
-/** signed 32-bit integer */
-typedef signed int      lt_int32;
-/** unsigned 32-bit integer */
-typedef unsigned int    lt_uint32;
-/** 32-bit floating point (\b DEPRECATED) */
-typedef float           lt_float32;
-/** 64-bit floating point (\b DEPRECATED) */
-typedef double          lt_float64;
-
-#if defined(LT_COMPILER_MS)
-   /** signed 64-bit integer */
-   typedef signed __int64     lt_int64;
-   /** unsigned 64-bit integer */
-   typedef unsigned __int64   lt_uint64;
-#elif defined ( LT_COMPILER_GNU ) || \
-      defined ( LT_COMPILER_SUN )
-   /** signed 64-bit integer */
-   typedef long long int              lt_int64;
-   /** unsigned 64-bit integer */
-   typedef unsigned long long int     lt_uint64;
-#else
-   #error NOT YET PORTED TO TARGET COMPILER
-#endif
-/*@}*/
-
-
-#ifndef DOXYGEN_EXCLUDE
-
-#define LT_CHAR_MAX ((char)CHAR_MAX) 
-#define LT_CHAR_MIN ((char)CHAR_MIN) 
-#define LT_SCHAR_MAX ((signed char)SCHAR_MAX) 
-#define LT_SCHAR_MIN ((signed char)SCHAR_MIN) 
-#define LT_UCHAR_MAX ((unsigned char)UCHAR_MAX) 
-
-#define LT_SHRT_MAX ((short int)SHRT_MAX) 
-#define LT_SHRT_MIN ((short int)SHRT_MIN) 
-#define LT_USHRT_MAX ((unsigned short int)USHRT_MAX) 
-
-#define LT_INT_MAX ((int)INT_MAX) 
-#define LT_INT_MIN ((int)INT_MIN) 
-#define LT_UINT_MAX ((unsigned int)UINT_MAX) 
-
-#define LT_LONG_MAX ((long int)LONG_MAX) 
-#define LT_LONG_MIN ((long int)LONG_MIN) 
-#define LT_ULONG_MAX ((unsigned long int)ULONG_MAX) 
-
-#define LT_FLT_MIN ((float)FLT_MIN)
-#define LT_FLT_MAX ((float)FLT_MAX)
-#define LT_FLOAT_MIN (LT_FLT_MIN)
-#define LT_FLOAT_MAX (LT_FLT_MAX)
-
-#define LT_DBL_MIN ((double)DBL_MIN)
-#define LT_DBL_MAX ((double)DBL_MAX)
-#define LT_DOUBLE_MIN (LT_DBL_MIN)
-#define LT_DOUBLE_MAX (LT_DBL_MAX)
-
-#define LT_INT8_MAX      ((lt_int8)127)                     /*  2^7 - 1  */
-#define LT_INT8_MIN      ((lt_int8)(-LT_INT8_MAX - 1))      /*  -2^7     */
-#define LT_UINT8_MAX     ((lt_uint8)255U)                   /*  2^8 - 1  */
-#define LT_UINT8_MIN     (0)
-#define LT_INT16_MAX     ((lt_int16)32767)                  /*  2^15 - 1 */
-#define LT_INT16_MIN     ((lt_int16)-LT_INT16_MAX - 1)      /*  -2^15    */
-#define LT_UINT16_MAX    ((lt_uint16)65535U)                /*  2^16 - 1 */
-#define LT_UINT16_MIN    (0)
-#define LT_INT32_MAX     ((lt_int32)2147483647)             /* 2^31 - 1 */
-#define LT_INT32_MIN     ((lt_int32)(-LT_INT32_MAX - 1))    /* -2^31    */
-#define LT_UINT32_MAX    ((lt_uint32)4294967295U)           /* 2^32 - 1 */
-#define LT_UINT32_MIN    (0)
-#define LT_INT64_MIN     ((lt_int64)-LT_INT64_MAX - 1)      /* -2^63    */
-#define LT_UINT64_MIN    (0)
-
-// GNU wants these constants suffixed, windows does not
-#if defined(LT_COMPILER_GNU) || \
-    defined(LT_COMPILER_SUN)
-	#define LT_INT64_MAX     ((lt_int64)9223372036854775807LL)    /* 2^63 - 1 */
-	#define LT_UINT64_MAX    ((lt_uint64)18446744073709551615ULL)  /* 2^64 - 1 */
-#elif defined(LT_COMPILER_MS)
-	#define LT_INT64_MAX     ((lt_int64)9223372036854775807)    /* 2^63 - 1 */
-	#define LT_UINT64_MAX    ((lt_uint64)18446744073709551615)  /* 2^64 - 1 */
-#else
-   #error NOT YET PORTED TO TARGET COMPILER
-#endif
-
-#endif /* DOXYGEN_EXCLUDE */
-
-
-/** (\b DEPRECATED) */
-typedef char lt_utf8;
-#define LT_UTF8STR(str) ((lt_utf8 *)(str))
-
-
-#if defined(LT_COMPILER_MS)
-   #pragma warning(pop) 
-#endif
-
-#endif /* LT_TYPES_H */
diff --git a/src/DSDK/include/support/lt_utilStatus.h b/src/DSDK/include/support/lt_utilStatus.h
deleted file mode 100644
index 1f715ce..0000000
--- a/src/DSDK/include/support/lt_utilStatus.h
+++ /dev/null
@@ -1,125 +0,0 @@
-/* $Id: lt_utilStatus.h 5124 2006-10-27 11:40:40Z lubia $ */
-/* //////////////////////////////////////////////////////////////////////////
-//                                                                         //
-// This code is Copyright (c) 2004 LizardTech, Inc, 1008 Western Avenue,   //
-// Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         //
-// prohibited.  Access to and use of this code is permitted only under     //
-// license from LizardTech, Inc.  Portions of the code are protected by    //
-// US and foreign patents and other filings. All Rights Reserved.          //
-//                                                                         //
-////////////////////////////////////////////////////////////////////////// */
-/* PUBLIC */
-
-#ifndef LT_UTILSTATUS_H
-#define LT_UTILSTATUS_H
-
-#include "lt_base.h"
-
-// these should be in lt_define.h
-LT_STATUSSTRING_ADD(LT_STS_Success, "Success")
-LT_STATUSSTRING_ADD(LT_STS_Failure, "Failure")
-
-// these are only used for testing
-LT_STATUSSTRING_ADD(910, "status test uint32=%u")
-LT_STATUSSTRING_ADD(911, "status test int32=%d")
-LT_STATUSSTRING_ADD(912, "status test double=%f")
-LT_STATUSSTRING_ADD(913, "status test string=%s")
-LT_STATUSSTRING_ADD(914, "status test uint=%u uint=%u double=%f string=%s string=%s string=%s foo")
-LT_STATUSSTRING_ADD(915, "status test filespec=%F")
-
-/** Base value for util library error codes  */
-#define LTUTIL_STATUS_BASE                         3000
-LT_STATUSSTRING_ADD(LTUTIL_STATUS_BASE, "lt_lib_utils BASE")
-
-/** Max value for util library error codes  */
-#define LTUTIL_STATUS_MAX                          3999
-LT_STATUSSTRING_ADD(LTUTIL_STATUS_MAX, "lt_lib_utils MAX")
-
-#define LTUTIL_STS_NULL_POINTER                    3001
-LT_STATUSSTRING_ADD(LTUTIL_STS_NULL_POINTER, "NULL pointer dereferenced")
-#define LTUTIL_STS_NOT_FOUND                       3002
-LT_STATUSSTRING_ADD(LTUTIL_STS_NOT_FOUND, "The specified resource was not found")
-
-// caller failed to call initialize() (or called it twice)
-#define LTUTIL_STS_CRITICAL_SECTION_INIT           3010
-LT_STATUSSTRING_ADD(LTUTIL_STS_CRITICAL_SECTION_INIT, "critical section initialization failure")
-
-// problem closing mutex
-#define LTUTIL_STS_MUTEX_CLOSE_ERROR               3020
-LT_STATUSSTRING_ADD(LTUTIL_STS_MUTEX_CLOSE_ERROR, "mutex close error")
-#define LTUTIL_STS_MUTEX_LOCK_ERROR                3021
-LT_STATUSSTRING_ADD(LTUTIL_STS_MUTEX_LOCK_ERROR, "mutex lock error")
-#define LTUTIL_STS_MUTEX_UNLOCK_ERROR              3022
-LT_STATUSSTRING_ADD(LTUTIL_STS_MUTEX_UNLOCK_ERROR, "mutex unlock error")
-
-// LTFileUtils
-#define LTUTIL_STS_DELETE_ERROR                    3030
-LT_STATUSSTRING_ADD(LTUTIL_STS_DELETE_ERROR, "delete error")
-#define LTUTIL_STS_MOVE_ERROR                      3031
-LT_STATUSSTRING_ADD(LTUTIL_STS_MOVE_ERROR, "move error")
-#define LTUTIL_STS_CREATEDIR_ERROR                 3032
-LT_STATUSSTRING_ADD(LTUTIL_STS_CREATEDIR_ERROR, "createdir error")
-#define LTUTIL_STS_INVALIDFILESPEC_ERROR           3033
-LT_STATUSSTRING_ADD(LTUTIL_STS_INVALIDFILESPEC_ERROR, "invalid filespec error")
-#define LTUTIL_STS_ERR_TEMPNAM_FAIL                3034
-LT_STATUSSTRING_ADD(LTUTIL_STS_ERR_TEMPNAM_FAIL, "tempnam error")
-#define LTUTIL_STS_FILE_NOT_FOUND                  3035
-LT_STATUSSTRING_ADD(LTUTIL_STS_FILE_NOT_FOUND, "The file was not found")
-#define LTUTIL_STS_DIR_NOT_FOUND                   3036
-LT_STATUSSTRING_ADD(LTUTIL_STS_DIR_NOT_FOUND, "The directory was not found")
-#define LTUTIL_STS_ERR_MKTEMP_FAIL                 3037
-LT_STATUSSTRING_ADD(LTUTIL_STS_ERR_MKTEMP_FAIL, "mktemp error")
-
-// lt_winUtils.cpp
-#define LT_STS_UTIL_ExtractRegistryText                     3040
-LT_STATUSSTRING_ADD(LT_STS_UTIL_ExtractRegistryText, "error extracting registry text - %s")
-
-
-#define LTUTIL_STS_InvalidProtocol                          3050
-LT_STATUSSTRING_ADD(LTUTIL_STS_InvalidProtocol, "Invalid protocol")
-
-// lt_utilShell.cpp
-#define LT_STS_UTIL_ShellRedirectCannotOpenFile             3060
-LT_STATUSSTRING_ADD(LT_STS_UTIL_ShellRedirectCannotOpenFile, "ShellRedirectCannotOpenFile")
-#define LT_STS_UTIL_ShellRedirectDUPError1                  3061
-LT_STATUSSTRING_ADD(LT_STS_UTIL_ShellRedirectDUPError1, "ShellRedirectDUPError1")
-#define LT_STS_UTIL_ShellRedirectDUPError2                  3062
-LT_STATUSSTRING_ADD(LT_STS_UTIL_ShellRedirectDUPError2, "ShellRedirectDUPError2")
-#define LT_STS_UTIL_ShellRedirectDUPError3                  3063
-LT_STATUSSTRING_ADD(LT_STS_UTIL_ShellRedirectDUPError3, "ShellRedirectDUPError3")
-#define LT_STS_UTIL_ShellRedirectCannotCloseFile            3064
-LT_STATUSSTRING_ADD(LT_STS_UTIL_ShellRedirectCannotCloseFile, "ShellRedirectCannotCloseFile")
-
-// lt_utilStatusData.cpp
-/** indicates StatusData initialization error */
-#define LT_STS_UTIL_StatusDataInitialized                   3070
-LT_STATUSSTRING_ADD(LT_STS_UTIL_StatusDataInitialized, "StatusData initialization error")
-/** indicates StatusData data type error */
-#define LT_STS_UTIL_StatusDataTypeError                     3071
-LT_STATUSSTRING_ADD(LT_STS_UTIL_StatusDataTypeError, "StatusData data type error")
-
-// lt_packageInfo.cpp
-#define LT_STS_UTIL_PackageHomeNotFound                     3080
-LT_STATUSSTRING_ADD(LT_STS_UTIL_PackageHomeNotFound, "package home not found")
-#define LT_STS_UTIL_PackageDirNotFound                      3081
-LT_STATUSSTRING_ADD(LT_STS_UTIL_PackageDirNotFound, "package directory not found")
-#define LT_STS_UTIL_PackageFileNotFound                     3082
-LT_STATUSSTRING_ADD(LT_STS_UTIL_PackageFileNotFound, "package file not found")
-#define LT_STS_UTIL_PackageHomeRegKeyNotFound               3083
-LT_STATUSSTRING_ADD(LT_STS_UTIL_PackageHomeRegKeyNotFound, "package home registry key not found")
-#define LT_STS_UTIL_PackageHomeEnvVarUndefined              3084
-LT_STATUSSTRING_ADD(LT_STS_UTIL_PackageHomeEnvVarUndefined, "package home environment variable not defined")
-
-// lt_utilTimer.cpp
-#define LT_STS_UTIL_TimeUnknown                             3090
-LT_STATUSSTRING_ADD(LT_STS_UTIL_TimeUnknown, "time could not be determined")
-
-// lt_utilLocale.h
-#define LT_STS_UTIL_LocaleNotSet                            3100
-LT_STATUSSTRING_ADD(LT_STS_UTIL_LocaleNotSet, "locale could not be set")
-
-//	lt_utilThread.h
-#define LT_STS_UTIL_ThreadAlreadyRunning                    3110
-LT_STATUSSTRING_ADD(LT_STS_UTIL_ThreadAlreadyRunning,		"thread is already running")
-
-#endif // LT_UTILSTATUS_H
diff --git a/src/DSDK/include/support/lt_utilStatusData.h b/src/DSDK/include/support/lt_utilStatusData.h
deleted file mode 100644
index 5b23633..0000000
--- a/src/DSDK/include/support/lt_utilStatusData.h
+++ /dev/null
@@ -1,169 +0,0 @@
-/* $Id: lt_utilStatusData.h 5124 2006-10-27 11:40:40Z lubia $ */
-/* //////////////////////////////////////////////////////////////////////////
-//                                                                         //
-// This code is Copyright (c) 2004 LizardTech, Inc, 1008 Western Avenue,   //
-// Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         //
-// prohibited.  Access to and use of this code is permitted only under     //
-// license from LizardTech, Inc.  Portions of the code are protected by    //
-// US and foreign patents and other filings. All Rights Reserved.          //
-//                                                                         //
-////////////////////////////////////////////////////////////////////////// */
-/* PUBLIC */
-
-#ifndef LT_UTILSTATUSDATA_H
-#define LT_UTILSTATUSDATA_H
-
-// lt_lib_base
-#include "lt_base.h"
-
-// system
-#include <stdlib.h>
-
-
-#if defined(LT_COMPILER_MS)
-   #pragma warning(push,4) 
-#endif
-
-
-LT_BEGIN_NAMESPACE(LizardTech)
-
-class LTFileSpec;
-
-
-/**
- * Interface to the error data stack.
- *
- * This class provides functions for pushing and popping data to and from the
- * "error stack", used to pass information to accompany a simple status code.
- *
- * @note For most users, the functions provided in the file
- * lt_utilStatusStrings.h are sufficient for error reporting.  Only
- * applications which need to add their own error strings or perform
- * internationalization need to use this class.
- *
- * @note This error management system is expected to be substantially changed
- * in a future release.
- *
- * Example usage:
- *
- * @verbatim
-// IN APPLICATION
-LTUtilStatus::initialize();
-...
-
-// IN SOME LIBRARY
-LT_STATUS sts = someFunction("foo.txt",99);
-if (!LT_SUCCESS(sts))
-{
-  LTUtilStatusData::pushBegin(sts);
-  LTUtilStatusData::pushString("foo.txt");
-  LTUtilStatusData::pushEnd();
-  return sts;
-}
-...
-
-// IN LT_LIB_UTILS
-LT_STATUS sts;
-char* str;
-int i;
-LTUtilStatusData::popBegin(sts);
-// parse string for code sts to determine needed data items...
-LTUtilStatusData::popString(str);
-LTUtilStatusData::popInt32(i);
-LTUtilStatusData::popEnd();
-...
-
-// IN APPLICATION
-LTUtilStatusData::terminate();
- * @endverbatim
- *
- * To set error data, you must first do pushBegin(), then push zero or
- * more other data items (called Records), then do a pushEnd().
- *
- * To retrieve error data, you must first do a popBegin(), followed by
- * pops of whatever you pushed, then do a popEnd().
- *
- * Note it is assumed the popper knows the order and type of things to be
- * popped off.  (This is not really a problem, since the status code is
- * associated with a string which will contain %d, %s, etc telling him what
- * to do.  Furthermore, the only person who should ever need to use the pop
- * calls will be lt_lib_statusStrings.)
- *
- * If you do not call initialize(), the push and pop operations will do
- * nothing.  This way, apps need not use the StatusData system if they do
- * not wish to.
- */
-class LTUtilStatusData
-{
-public:
-   /**
-    * initialize the error stack
-    *
-    * Applications should call this once prior to any other LizardTech
-    * functions, to enable the error reporting system.  If not called, then
-    * any calls to pushData() will be no-ops, and the integral status code
-    * will map to an unintepretted string.
-    *
-    * @return success or failure status code
-    */
-   static LT_STATUS initialize();
-
-   /**
-    * cleanup
-    *
-    * Applications should call this once after all other LizardTech functions
-    * have been called, to clean up memory.
-    *
-    * @return success or failure success code
-    */
-   static LT_STATUS terminate();
-
-   // returns true iff initialize() was called, e.g. system is being used
-   static bool isActive();
-
-   // push data associated with an error onto the error frame stack
-   // do begin(), data..., end()
-   static void pushBegin(LT_STATUS);
-   static void pushUint32(lt_uint32);
-   static void pushInt32(lt_int32);
-   static void pushString(const char*);
-   static void pushDouble(double);
-   static void pushFileSpec(const LTFileSpec&);
-   static void pushEnd();
-
-   // get the top data item off the error frame stack
-   // returns failure if the data itemis not of the specified type
-   static LT_STATUS popBegin(LT_STATUS&);
-   static LT_STATUS popUint32(lt_uint32&);
-   static LT_STATUS popInt32(lt_int32&);
-   static LT_STATUS popString(char*&);         // caller takes ownership of string
-   static LT_STATUS popDouble(double&);
-   static LT_STATUS popFileSpec(LTFileSpec&);
-   static LT_STATUS popEnd();
-
-   // pop off all data items from current frame
-   // used in an emergency, when the top frame is not the one you want
-   //   (and you have no way of knowing how many data items need to be
-   //   popped off)
-   static LT_STATUS popRemainder();
-
-   // remove the current error frame, if any (this is like doing the pop
-   // begin/end sequence, if there is an active frame)
-   static void clear();
-
-private:
-   // nope
-   LTUtilStatusData();
-   ~LTUtilStatusData();
-   LTUtilStatusData(const LTUtilStatusData&);
-   LTUtilStatusData& operator=(const LTUtilStatusData&);
-};
-
-
-LT_END_NAMESPACE(LizardTech)
-
-#if defined(LT_COMPILER_MS)
-   #pragma warning(pop) 
-#endif
-
-#endif // LT_UTILSTATUSDATA_H
diff --git a/src/DSDK/include/support/lt_utilStatusStrings.h b/src/DSDK/include/support/lt_utilStatusStrings.h
deleted file mode 100644
index d8e3b4c..0000000
--- a/src/DSDK/include/support/lt_utilStatusStrings.h
+++ /dev/null
@@ -1,86 +0,0 @@
-/* $Id: lt_utilStatusStrings.h 5124 2006-10-27 11:40:40Z lubia $ */
-/* //////////////////////////////////////////////////////////////////////////
-//                                                                         //
-// This code is Copyright (c) 2004 LizardTech, Inc, 1008 Western Avenue,   //
-// Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         //
-// prohibited.  Access to and use of this code is permitted only under     //
-// license from LizardTech, Inc.  Portions of the code are protected by    //
-// US and foreign patents and other filings. All Rights Reserved.          //
-//                                                                         //
-////////////////////////////////////////////////////////////////////////// */
-/* PUBLIC */
-
-#ifndef LT_UTILSTATUSSTRINGS_H
-#define LT_UTILSTATUSSTRINGS_H
-
-// lt_lib_base
-#include "lt_base.h"
-
-/**
- * @file
- *
- * Status code / error string support.
- *
- * These functions allow the user to access strings which correspond to
- * status codes returned by LizardTech functions.
- */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * return a "raw" status string
- *
- * This function returns the string for the given status code.  Any format
- * specifiers in the string will not be interpolated using the error stack
- * (see LTUtilStatusData).
- *
- * @param   code  the status code
- * @return  the string for the status code
- */
-extern const char* getRawStatusString(LT_STATUS code);
-
-
-/**
- * return a formatted status string
- *
- * This function returns the string for the given status code.  Any format
- * specifiers in the string will be expanded (interpolated) using the data
- * on the error stack (see LTUtilStatusData).
- *
- * @param   code  the status code
- * @return  the string for the status code
- */
-extern const char* getLastStatusString(LT_STATUS code);
-
-
-/**
-  * initialize the status strings reporting system
-  *
-  * Applications should call this once prior to any other LizardTech
-  * functions, to enable the error reporting system.  If not called, then
-  * any calls to pushData() will be no-ops, and the integral status code
-  * will map to an unintepreted string.
-  *
-  * @return success or failure status code
-  */
-extern LT_STATUS initializeStatusStrings();
-
-
-/**
-  * close out the status strings reporting system
-  *
-  * Applications should call this once after all other LizardTech functions
-  * have been called, to clean up memory.
-  *
-  * @return success or failure success code
-  */
-extern LT_STATUS terminateStatusStrings();
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif // LT_UTILSTATUSSTRINGS_H
diff --git a/src/DSDK/include/writers/BMPImageWriter.h b/src/DSDK/include/writers/BMPImageWriter.h
deleted file mode 100644
index a93d69c..0000000
--- a/src/DSDK/include/writers/BMPImageWriter.h
+++ /dev/null
@@ -1,102 +0,0 @@
-/* $Id: BMPImageWriter.h 5124 2006-10-27 11:40:40Z lubia $ */
-/* //////////////////////////////////////////////////////////////////////////
-//                                                                         //
-// This code is Copyright (c) 2004 LizardTech, Inc, 1008 Western Avenue,   //
-// Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         //
-// prohibited.  Access to and use of this code is permitted only under     //
-// license from LizardTech, Inc.  Portions of the code are protected by    //
-// US and foreign patents and other filings. All Rights Reserved.          //
-//                                                                         //
-////////////////////////////////////////////////////////////////////////// */
-/* PUBLIC */
-
-#ifndef BMPIMAGEWRITER_H
-#define BMPIMAGEWRITER_H
-
-// lt_lib_mrsid_core
-#include "lti_geoFileImageWriter.h"
-
-// lt_lib_utils
-#include "lti_imageWriter.h"
-
-
-LT_BEGIN_NAMESPACE(LizardTech)
-
-#if defined(LT_COMPILER_MS)
-   #pragma warning(push,4)
-#endif
-
-class LTReusableBuffer;
-
-/**
- * writes an image stage to a Windows BMP file
- *
- * This class writes an image stage to a Windows BMP file.
- */
-class BMPImageWriter : public LTIGeoFileImageWriter
-{
-public:
-   /**
-    * constructor
-    *
-    * Creates a writer for Windows BMP images.
-    *
-    * @param  image  the image to write from
-    */
-   BMPImageWriter(LTIImageStage* image);
-   virtual ~BMPImageWriter();
-   LT_STATUS initialize();
-
-   LT_STATUS writeBegin(const LTIScene& scene);
-   LT_STATUS writeStrip(LTISceneBuffer& stripBuffer, const LTIScene& stripScene);
-   LT_STATUS writeEnd();
-
-private:
-   typedef LTIGeoFileImageWriter Super;
-
-   LT_STATUS checkImpedance() const;
-
-   // override from LTIImageFilter
-   LTIImageStage* getPreviousStage() const;
-
-   LT_STATUS normalizeProperties(lt_uint32 width, lt_uint32 height);
-   LT_STATUS initFile(lt_uint32 width, lt_uint32 height);
-   LT_STATUS writeHeaders(lt_uint32 width, lt_uint32 height);
-   LT_STATUS initBitmapHeader(lt_uint32 width, lt_uint32 height);
-   LT_STATUS initEndian();
-   LT_STATUS writeStrip(lt_uint32 stripHeight,
-                        const lt_uint8* buf);
-
-   LTIImageStage* m_mapTransform;
-
-   lt_uint32 m_alignedRowBytes;
-   lt_uint32 m_unalignedRowBytes;
-   lt_uint8* m_padding;
-   lt_uint32 m_padsize;
-
-   struct bitmapFileHeaderType;
-   struct bitmapHeaderType;
-
-   bitmapFileHeaderType* m_bmpFileHeader;
-   bitmapHeaderType* m_bmpHeader;
-
-   //  This will provide a marker so the image doesn't write over itself
-   // I need to know how far back to seek.
-   lt_int32 m_seekBackTo;
-
-   LTReusableBuffer* m_stripBuffer;
-
-   // nope
-   BMPImageWriter();
-   BMPImageWriter(BMPImageWriter&);
-   BMPImageWriter& operator=(const BMPImageWriter&);
-};
-
-
-LT_END_NAMESPACE(LizardTech)
-
-#if defined(LT_COMPILER_MS)
-	#pragma warning(pop)
-#endif
-
-#endif // BMPIMAGEWRITER_H
diff --git a/src/DSDK/include/writers/GeoTIFFImageWriter.h b/src/DSDK/include/writers/GeoTIFFImageWriter.h
deleted file mode 100644
index 5ee79c0..0000000
--- a/src/DSDK/include/writers/GeoTIFFImageWriter.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/* $Id: GeoTIFFImageWriter.h 5124 2006-10-27 11:40:40Z lubia $ */
-/* //////////////////////////////////////////////////////////////////////////
-//                                                                         //
-// This code is Copyright (c) 2004 LizardTech, Inc, 1008 Western Avenue,   //
-// Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         //
-// prohibited.  Access to and use of this code is permitted only under     //
-// license from LizardTech, Inc.  Portions of the code are protected by    //
-// US and foreign patents and other filings. All Rights Reserved.          //
-//                                                                         //
-////////////////////////////////////////////////////////////////////////// */
-/* PUBLIC */
-
-#ifndef GEOTIFFIMAGEWRITER_H
-#define GEOTIFFIMAGEWRITER_H
-
-// lt_lib_mrsid_imageWriters
-#include "TIFFImageWriter.h"
-
-#if defined(LT_COMPILER_MS)
-   #pragma warning(push,4)
-#endif
-
-LT_BEGIN_NAMESPACE(LizardTech)
-
-/**
- * writes an image stage to a GeoTIFF file
- *
- * This class writes an image stage to a GeoTIFF file.
- */
-class GeoTIFFImageWriter : public TIFFImageWriter
-{
-public:
-   /**
-    * constructor
-    *
-    * Creates a writer for GeoTIFF images.
-    *
-    * @param  image  the image to write from
-    */
-   GeoTIFFImageWriter(LTIImageStage* image);
-
-private:
-   typedef TIFFImageWriter Super;
-
-   // nope
-   GeoTIFFImageWriter(GeoTIFFImageWriter&);
-   GeoTIFFImageWriter& operator=(const GeoTIFFImageWriter&);
-};
-
-
-LT_END_NAMESPACE(LizardTech)
-
-#if defined(LT_COMPILER_MS)
-	#pragma warning(pop)
-#endif
-
-#endif // GEOTIFFIMAGEWRITER_H
diff --git a/src/DSDK/include/writers/JpegImageWriter.h b/src/DSDK/include/writers/JpegImageWriter.h
deleted file mode 100644
index 0da24fe..0000000
--- a/src/DSDK/include/writers/JpegImageWriter.h
+++ /dev/null
@@ -1,94 +0,0 @@
-/* $Id: JpegImageWriter.h 5124 2006-10-27 11:40:40Z lubia $ */
-/* //////////////////////////////////////////////////////////////////////////
-//                                                                         //
-// This code is Copyright (c) 2004 LizardTech, Inc, 1008 Western Avenue,   //
-// Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         //
-// prohibited.  Access to and use of this code is permitted only under     //
-// license from LizardTech, Inc.  Portions of the code are protected by    //
-// US and foreign patents and other filings. All Rights Reserved.          //
-//                                                                         //
-////////////////////////////////////////////////////////////////////////// */
-/* PUBLIC */
-
-#ifndef JPEGIMAGEWRITER_H
-#define JPEGIMAGEWRITER_H
-
-// lt_lib_mrsid_core
-#include "lti_geoFileImageWriter.h"
-
-#if defined(LT_COMPILER_MS)
-   #pragma warning(push,4)
-#endif
-
-struct jpeg_compress_struct;
-struct jpeg_error_mgr;
-
-LT_BEGIN_NAMESPACE(LizardTech)
-
-class LTFileSpec;
-class LTReusableBuffer;
-
-/**
- * writes an image stage to a JPEG file
- *
- * This class writes an image stage to a JPEG file.
- *
- * NOTE: getEstimatedOutputSize() will return the nominal
- * size for the output, not the compression size (which
- * cannot easily be estimated).
- */
-class JpegImageWriter : public LTIGeoFileImageWriter
-{
-public:
-   /**
-    * constructor
-    *
-    * Creates a writer for JPEG images.
-    *
-    * @param  image      the image to write from
-    * @param  quality    sets the JPEG "quality" encoding parameter;
-    *                    this is a value between 0 and 100
-    * @param  smoothing  sets the JPEG "smoothing" encoding parameter;
-    *                    this is a value between 0 and 100
-    */
-   JpegImageWriter(LTIImageStage* image,
-                   lt_int32 quality = 0,          // 0-100
-                   lt_int32 smoothing = 0);       // 0-100
-   virtual ~JpegImageWriter();
-   LT_STATUS initialize();
-
-   LT_STATUS writeBegin(const LTIScene& scene);
-   LT_STATUS writeStrip(LTISceneBuffer& stripBuffer, const LTIScene& stripScene);
-   LT_STATUS writeEnd();
-
-private:
-   typedef LTIGeoFileImageWriter Super;
-
-   LT_STATUS checkImpedance() const;
-
-   //struct that contains the JPEG compression parameters
-   struct jpeg_compress_struct* m_jpegObject;
-
-   //struct to handle error messages 
-   struct jpeg_error_mgr* m_jpegErr;
-
-   //two parameters for setting compression quality
-   lt_int32 m_quality;
-   lt_int32 m_smoothingFactor;
-
-   LTReusableBuffer* m_stripBuffer;
-
-   // nope
-   JpegImageWriter();
-   JpegImageWriter(JpegImageWriter&);
-   JpegImageWriter& operator=(const JpegImageWriter&);
-};
-
-
-LT_END_NAMESPACE(LizardTech)
-
-#if defined(LT_COMPILER_MS)
-	#pragma warning(pop)
-#endif
-
-#endif // JPEGIMAGEWRITER_H
diff --git a/src/DSDK/include/writers/PNGImageWriter.h b/src/DSDK/include/writers/PNGImageWriter.h
deleted file mode 100644
index b5cb913..0000000
--- a/src/DSDK/include/writers/PNGImageWriter.h
+++ /dev/null
@@ -1,75 +0,0 @@
-/* $Id: PNGImageWriter.h 5124 2006-10-27 11:40:40Z lubia $ */
-/* //////////////////////////////////////////////////////////////////////////
-//                                                                         //
-// This code is Copyright (c) 2005 LizardTech, Inc, 1008 Western Avenue,   //
-// Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         //
-// prohibited.  Access to and use of this code is permitted only under     //
-// license from LizardTech, Inc.  Portions of the code are protected by    //
-// US and foreign patents and other filings. All Rights Reserved.          //
-//                                                                         //
-////////////////////////////////////////////////////////////////////////// */
-/* PUBLIC */
-
-#ifndef PNGIMAGEWRITER_H
-#define PNGIMAGEWRITER_H
-
-// lt_lib_mrsid_core
-#include "lti_geoFileImageWriter.h"
-
-#if defined(LT_COMPILER_MS)
-   #pragma warning(push,4)
-#endif
-
-struct png_struct_def;
-struct png_info_struct;
-
-LT_BEGIN_NAMESPACE(LizardTech)
-
-class LTFileSpec;
-class LTReusableBuffer;
-
-/**
- * writes an image stage to a PNG file
- *
- * This class writes an image stage to a PNG file.
- */
-class PNGImageWriter : public LTIGeoFileImageWriter
-{
-public:
-   PNGImageWriter(LTIImageStage* image);
-   virtual ~PNGImageWriter();
-   
-   LT_STATUS initialize();
-
-   LT_STATUS setWriteTransparencyColor(bool write);
-
-
-   LT_STATUS writeBegin(const LTIScene& scene);
-   LT_STATUS writeStrip(LTISceneBuffer& stripBuffer, const LTIScene& stripScene);
-   LT_STATUS writeEnd();
-
-private:
-   typedef LTIGeoFileImageWriter Super;
-
-   LT_STATUS checkImpedance() const;
-
-   struct png_struct_def *m_png;
-   struct png_info_struct *m_info;
-   bool m_writeTransparencyColor;
-   char *m_errorMessage;
-
-   LTReusableBuffer *m_stripBuffer;
-
-   // nope
-   PNGImageWriter(PNGImageWriter&);
-   PNGImageWriter& operator=(const PNGImageWriter&);
-};
-
-
-LT_END_NAMESPACE(LizardTech)
-
-#if defined(LT_COMPILER_MS)
-	#pragma warning(pop)
-#endif
-
-#endif // PNGIMAGEWRITER_H
diff --git a/src/DSDK/include/writers/TIFFImageWriter.h b/src/DSDK/include/writers/TIFFImageWriter.h
deleted file mode 100644
index 2f1cbff..0000000
--- a/src/DSDK/include/writers/TIFFImageWriter.h
+++ /dev/null
@@ -1,91 +0,0 @@
-/* $Id: TIFFImageWriter.h 5124 2006-10-27 11:40:40Z lubia $ */
-/* //////////////////////////////////////////////////////////////////////////
-//                                                                         //
-// This code is Copyright (c) 2004 LizardTech, Inc, 1008 Western Avenue,   //
-// Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         //
-// prohibited.  Access to and use of this code is permitted only under     //
-// license from LizardTech, Inc.  Portions of the code are protected by    //
-// US and foreign patents and other filings. All Rights Reserved.          //
-//                                                                         //
-////////////////////////////////////////////////////////////////////////// */
-/* PUBLIC */
-
-#ifndef TIFFIMAGEWRITER_H
-#define TIFFIMAGEWRITER_H
-
-// lt_lib_mrsid_core
-#include "lti_geoFileImageWriter.h"
-
-struct tiff;
-
-
-LT_BEGIN_NAMESPACE(LizardTech)
-
-#if defined(LT_COMPILER_MS)
-   #pragma warning(push,4)
-#endif
-
-class LTIPixelLookupTable;
-class LTReusableBuffer;
-
-
-/**
- * writes an image stage to a TIFF file
- *
- * This class writes an image stage to a TIFF file.
- */
-class TIFFImageWriter : public LTIGeoFileImageWriter
-{
-public:
-   /**
-    * constructor
-    *
-    * Creates a writer for TIFF images.
-    *
-    * @param  image  the image to write from
-    * @param  writeGeoTIFF  if true the writer will include GeoTIFF tags
-    */
-   TIFFImageWriter(LTIImageStage *image, bool writeGeoTIFF = false);
-
-   virtual ~TIFFImageWriter();
-   virtual LT_STATUS initialize();
-
-   /**
-    * Output resolution information.  Set this to false to prevent writing
-    * normal TIFF resolution information.
-    *
-    * The default is to write this information.
-    *
-    * @param enable set to true to write resolution information
-    */
-   void setWriteResolution(bool enable);
-
-   LT_STATUS writeBegin(const LTIScene& scene);
-   LT_STATUS writeStrip(LTISceneBuffer& stripBuffer, const LTIScene& stripScene);
-   LT_STATUS writeEnd();
-
-private:
-   typedef LTIGeoFileImageWriter Super;
-   static LT_STATUS getLibtiffError(void);
-
-   struct tiff *m_tiff;
-   bool m_writeResolution;
-   bool m_writeGeoTIFF;
-
-   long m_currentRow;
-   lt_int32 m_compression;
-   LTReusableBuffer* m_stripBuffer;
-
-   // nope
-   TIFFImageWriter(TIFFImageWriter&);
-   TIFFImageWriter& operator=(const TIFFImageWriter&);
-};
-
-
-LT_END_NAMESPACE(LizardTech)
-
-#if defined(LT_COMPILER_MS)
-	#pragma warning(pop)
-#endif
-
-#endif // TIFFIMAGEWRITER_H
diff --git a/src/DSDK/include/writers/lti_writersStatus.h b/src/DSDK/include/writers/lti_writersStatus.h
deleted file mode 100644
index d6dc0a1..0000000
--- a/src/DSDK/include/writers/lti_writersStatus.h
+++ /dev/null
@@ -1,104 +0,0 @@
-/* $Id: lti_writersStatus.h 5124 2006-10-27 11:40:40Z lubia $ */
-/* //////////////////////////////////////////////////////////////////////////
-//                                                                         //
-// This code is Copyright (c) 2004 LizardTech, Inc, 1008 Western Avenue,   //
-// Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         //
-// prohibited.  Access to and use of this code is permitted only under     //
-// license from LizardTech, Inc.  Portions of the code are protected by    //
-// US and foreign patents and other filings. All Rights Reserved.          //
-//                                                                         //
-////////////////////////////////////////////////////////////////////////// */
-/* PUBLIC */
-
-#ifndef LTI_WRITERSSTATUS_H
-#define LTI_WRITERSSTATUS_H
-
-#include "lt_base.h"
-
-#define LTI_STS_Writers_Base                                      50400
-LT_STATUSSTRING_ADD(LTI_STS_Writers_Base, "lt_lib_mrsid_imageWriters base")
-
-#define LTI_STS_Writers_CannotWriteFile                           50401
-LT_STATUSSTRING_ADD(LTI_STS_Writers_CannotWriteFile, "Cannot write to file %F")
-
-#define LTI_STS_Writers_UnsupColorSpace                           50402
-LT_STATUSSTRING_ADD(LTI_STS_Writers_UnsupColorSpace, "unsupported colorspace")
-
-#define LTI_STS_Writers_UnsupDataType                             50403
-LT_STATUSSTRING_ADD(LTI_STS_Writers_UnsupDataType, "unsupported datatype")
-
-#define LTI_STS_Writers_AllocFailed                               50404
-LT_STATUSSTRING_ADD(LTI_STS_Writers_AllocFailed, "memory allocation failed")
-
-
-#define LTI_STS_Writers_TIFFFieldInfoNotSet                       50410
-LT_STATUSSTRING_ADD(LTI_STS_Writers_TIFFFieldInfoNotSet, "TIFF: field info not set")
-
-#define LTI_STS_Writers_TIFFLibraryError                          50411
-LT_STATUSSTRING_ADD(LTI_STS_Writers_TIFFLibraryError, "TIFF: library error - %s")
-
-#define LTI_STS_Writers_TIFFLibraryWarning                        50412
-LT_STATUSSTRING_ADD(LTI_STS_Writers_TIFFLibraryWarning, "TIFF: library warning - %s")
-
-#define LTI_STS_Writers_TIFFUnsupOutputFormat                     50413
-LT_STATUSSTRING_ADD(LTI_STS_Writers_TIFFUnsupOutputFormat, "TIFF: unsupported output format")
-
-#define LTI_STS_Writers_TIFFWriteDataFailed                       50414
-LT_STATUSSTRING_ADD(LTI_STS_Writers_TIFFWriteDataFailed, "TIFF: write data failed")
-
-#define LTI_STS_Writers_TIFFUnsupClutType                         50415
-LT_STATUSSTRING_ADD(LTI_STS_Writers_TIFFUnsupClutType, "TIFF: unsupported CLUT type")
-
-#define LTI_STS_Writers_TIFFMetadataError                         50416
-LT_STATUSSTRING_ADD(LTI_STS_Writers_TIFFMetadataError, "TIFF: metadata error")
-
-#define LTI_STS_Writers_TIFFToLarge                         50417
-LT_STATUSSTRING_ADD(LTI_STS_Writers_TIFFToLarge, "TIFF: Resulting tiff file is too large: > 4GB")
-
-
-#define LTI_STS_Writers_GDALErrorMessage                          50420
-LT_STATUSSTRING_ADD(LTI_STS_Writers_GDALErrorMessage, "GDAL error: %s - %d")
-
-
-#define LTI_STS_Writers_GeoTIFFBadKeyDims                         50430
-LT_STATUSSTRING_ADD(LTI_STS_Writers_GeoTIFFBadKeyDims, "GeoTIFF: bad metadata key format")
-
-#define LTI_STS_Writers_GeoTIFFUnableToSetKey                     504131
-LT_STATUSSTRING_ADD(LTI_STS_Writers_GeoTIFFUnableToSetKey, "GeoTIFF: unable to set key")
-
-#define LTI_STS_Writers_GeoTIFFOpenFileError                      50432
-LT_STATUSSTRING_ADD(LTI_STS_Writers_GeoTIFFUnableToSetKey, "GeoTIFF: error opening file")
-
-
-#define LTI_STS_Writers_BBBCannotWriteFile                        50440
-LT_STATUSSTRING_ADD(LTI_STS_Writers_BBBCannotWriteFile, "BBB: cannot write to file")
-
-
-#define LTI_STS_Writers_BMPCannotWriteFile                        50450
-LT_STATUSSTRING_ADD(LTI_STS_Writers_BMPCannotWriteFile, "BMP: cannot write to file")
-
-
-#define LTI_STS_Writers_JPEGErrorMessage                          50460
-LT_STATUSSTRING_ADD(LTI_STS_Writers_JPEGErrorMessage, "JPEG error: %s")
-
-#define LTI_STS_Writers_JPEGOpenFileError                         50461
-LT_STATUSSTRING_ADD(LTI_STS_Writers_JPEGOpenFileError, "JPEG: error opening file")
-
-
-#define LTI_STS_Writers_GIFCannotWriteFile                        50462
-LT_STATUSSTRING_ADD(LTI_STS_Writers_GIFCannotWriteFile, "GIF: cannot write to file")
-
-#define LTI_STS_Writers_GIFImageFormattingError                   50463
-LT_STATUSSTRING_ADD(LTI_STS_Writers_GIFImageFormattingError, "GIF: error while composing file")
-
-#define LTI_STS_Writers_PNGOutOfMemory                            50464
-LT_STATUSSTRING_ADD(LTI_STS_Writers_PNGOutOfMemory, "PNG: out of memory")
-
-#define LTI_STS_Writers_PNGLibraryError                           50465
-LT_STATUSSTRING_ADD(LTI_STS_Writers_PNGLibraryError, "PNG: libpng error '%s'")
-
-#define LTI_STS_Writers_Max                                       50499
-LT_STATUSSTRING_ADD(LTI_STS_Writers_Max, "lt_lib_mrsid_imageWriters max")
-
-
-#endif // LTI_WRITERSSTATUS_H
diff --git a/src/dxflib/dl_attributes.h b/src/dxflib/dl_attributes.h
deleted file mode 100644
index 6d8aebb..0000000
--- a/src/dxflib/dl_attributes.h
+++ /dev/null
@@ -1,182 +0,0 @@
-/****************************************************************************
-** $Id: dl_attributes.h 8171 2009-12-11 12:31:36Z fredbed $
-**
-** Copyright (C) 2001-2003 RibbonSoft. All rights reserved.
-**
-** This file is part of the dxflib project.
-**
-** This file may be distributed and/or modified under the terms of the
-** GNU General Public License version 2 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file.
-**
-** Licensees holding valid dxflib Professional Edition licenses may use 
-** this file in accordance with the dxflib Commercial License
-** Agreement provided with the Software.
-**
-** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
-** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-**
-** See http://www.ribbonsoft.com for further details.
-**
-** Contact info at ribbonsoft.com if any conditions of this licensing are
-** not clear to you.
-**
-**********************************************************************/
-
-#ifndef DL_ATTRIBUTES_H
-#define DL_ATTRIBUTES_H
-
-#include <string>
-using std::string;
-
-#include "dl_codes.h"
-
-/**
- * Storing and passing around attributes. Attributes
- * are the layer name, color, width and line type.
- *
- * @author Andrew Mustun
- */
-class DL_Attributes {
-
-public:
-
-    /**
-     * Default constructor.
-     */
-    DL_Attributes() {
-        setLayer("");
-        setColor(0);
-        setWidth(0);
-        setLineType("BYLAYER");
-    }
-
-
-
-    /**
-     * Constructor for DXF attributes.
-     *
-     * @param layer Layer name for this entity or NULL for no layer
-     *              (every entity should be on a named layer!).
-     * @param color Color number (0..256). 0 = BYBLOCK, 256 = BYLAYER.
-     * @param width Line thickness. Defaults to zero. -1 = BYLAYER, 
-     *               -2 = BYBLOCK, -3 = default width
-     * @param lineType Line type name or "BYLAYER" or "BYBLOCK". Defaults
-     *              to "BYLAYER"
-     */
-    DL_Attributes(const string& layer,
-                  int color, int width,
-                  const string& lineType) {
-        setLayer(layer);
-        setColor(color);
-        setWidth(width);
-        setLineType(lineType);
-    }
-
-
-
-    /**
-     * Sets the layer. If the given pointer points to NULL, the
-     *  new layer name will be an empty but valid string.
-     */
-    void setLayer(const string& layer) {
-        this->layer = layer;
-    }
-
-
-
-    /**
-     * @return Layer name.
-     */
-    string getLayer() const {
-        return layer;
-    }
-
-
-
-    /**
-     * Sets the color.
-     *
-     * @see DL_Codes, dxfColors
-     */
-    void setColor(int color) {
-        this->color = color;
-    }
-
-
-
-    /**
-     * @return Color.
-     *
-     * @see DL_Codes, dxfColors
-     */
-    int getColor() const {
-        return color;
-    }
-
-
-
-    /**
-     * Sets the width.
-     */
-    void setWidth(int width) {
-        this->width = width;
-    }
-
-
-
-    /**
-     * @return Width.
-     */
-    int getWidth() const {
-        return width;
-    }
-
-
-
-    /**
-     * Sets the line type. This can be any string and is not
-     *  checked to be a valid line type. 
-     */
-    void setLineType(const string& lineType) {
-        this->lineType = lineType;
-    }
-
-
-
-    /**
-     * @return Line type.
-     */
-    string getLineType() const {
-        if (lineType.length()==0) {
-            return "BYLAYER";
-        } else {
-            return lineType;
-        }
-    }
-
-
-
-    /**
-     * Copies attributes (deep copies) from another attribute object.
-     */
-    DL_Attributes operator = (const DL_Attributes& attrib) {
-        setLayer(attrib.layer);
-        setColor(attrib.color);
-        setWidth(attrib.width);
-        setLineType(attrib.lineType);
-
-        return *this;
-    }
-
-private:
-    string layer;
-    int color;
-    int width;
-    string lineType;
-};
-
-#endif
-
-// EOF
diff --git a/src/dxflib/dl_codes.h b/src/dxflib/dl_codes.h
deleted file mode 100644
index 8021879..0000000
--- a/src/dxflib/dl_codes.h
+++ /dev/null
@@ -1,542 +0,0 @@
-/****************************************************************************
-** $Id: dl_codes.h 8171 2009-12-11 12:31:36Z fredbed $
-**
-** Copyright (C) 2001-2003 RibbonSoft. All rights reserved.
-** Copyright (C) 2001 Robert J. Campbell Jr.
-**
-** This file is part of the dxflib project.
-**
-** This file may be distributed and/or modified under the terms of the
-** GNU General Public License version 2 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file.
-**
-** Licensees holding valid dxflib Professional Edition licenses may use 
-** this file in accordance with the dxflib Commercial License
-** Agreement provided with the Software.
-**
-** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
-** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-**
-** See http://www.ribbonsoft.com for further details.
-**
-** Contact info at ribbonsoft.com if any conditions of this licensing are
-** not clear to you.
-**
-**********************************************************************/
-
-/**
- * Defines common DXF codes and constants.
- */
-
-#ifndef DXF_CODES_H
-#define DXF_CODES_H
-
-#if _MSC_VER > 1000
-#pragma once
-#endif // _MSC_VER > 1000
-
-#if defined(__OS2__)||defined(__EMX__)
-#define strcasecmp(s,t) stricmp(s,t)
-#endif
-
-#if defined(_WIN32)
-#define strcasecmp(s,t) _stricmp(s,t)
-#endif
-
-
-#ifdef _WIN32
-#undef M_PI
-#define M_PI   3.14159265358979323846
-#pragma warning(disable : 4800)
-#endif
-
-#ifndef M_PI
-#define M_PI 3.1415926535897932384626433832795
-#endif
-
-#define DL_DXF_MAXLINE 1024
-#define DL_DXF_MAXGROUPCODE 1100
-
-// used to mark invalid vectors:
-//#define DL_DXF_MAXDOUBLE 1.0E+10
-
-/**
- * Codes for colors and DXF versions.
- */
-class DL_Codes {
-public:
-    /**
-     * Standard DXF colors.
-     */
-    enum color {
-        black = 250,
-        green = 3,
-        red = 1,
-        brown = 15,
-        yellow = 2,
-        cyan = 4,
-        magenta = 6,
-        gray = 8,
-        blue = 5,
-        l_blue = 163,
-        l_green = 121,
-        l_cyan = 131,
-        l_red = 23,
-        l_magenta = 221,
-        l_gray = 252,
-        white = 7,
-        bylayer = 256,
-        byblock = 0
-    };
-
-    /**
-     * Version numbers for the DXF Format.
-     */
-    enum version {
-        AC1009, AC1012, AC1014, AC1015
-    };
-};
-
-
-// Extended color palette:
-// The first entry is only for direct indexing starting with [1]
-// Color 1 is red (1,0,0)
-const double dxfColors[][3] = {
-                                  {0,0,0},                // unused
-                                  {1,0,0},                // 1
-                                  {1,1,0},
-                                  {0,1,0},
-                                  {0,1,1},
-                                  {0,0,1},
-                                  {1,0,1},
-                                  {1,1,1},                // black or white
-                                  {0.5,0.5,0.5},
-                                  {0.75,0.75,0.75},
-                                  {1,0,0},                // 10
-                                  {1,0.5,0.5},
-                                  {0.65,0,0},
-                                  {0.65,0.325,0.325},
-                                  {0.5,0,0},
-                                  {0.5,0.25,0.25},
-                                  {0.3,0,0},
-                                  {0.3,0.15,0.15},
-                                  {0.15,0,0},
-                                  {0.15,0.075,0.075},
-                                  {1,0.25,0},             // 20
-                                  {1,0.625,0.5},
-                                  {0.65,0.1625,0},
-                                  {0.65,0.4063,0.325},
-                                  {0.5,0.125,0},
-                                  {0.5,0.3125,0.25},
-                                  {0.3,0.075,0},
-                                  {0.3,0.1875,0.15},
-                                  {0.15,0.0375,0},
-                                  {0.15,0.0938,0.075},
-                                  {1,0.5,0},              // 30
-                                  {1,0.75,0.5},
-                                  {0.65,0.325,0},
-                                  {0.65,0.4875,0.325},
-                                  {0.5,0.25,0},
-                                  {0.5,0.375,0.25},
-                                  {0.3,0.15,0},
-                                  {0.3,0.225,0.15},
-                                  {0.15,0.075,0},
-                                  {0.15,0.1125,0.075},
-                                  {1,0.75,0},             // 40
-                                  {1,0.875,0.5},
-                                  {0.65,0.4875,0},
-                                  {0.65,0.5688,0.325},
-                                  {0.5,0.375,0},
-                                  {0.5,0.4375,0.25},
-                                  {0.3,0.225,0},
-                                  {0.3,0.2625,0.15},
-                                  {0.15,0.1125,0},
-                                  {0.15,0.1313,0.075},
-                                  {1,1,0},                // 50
-                                  {1,1,0.5},
-                                  {0.65,0.65,0},
-                                  {0.65,0.65,0.325},
-                                  {0.5,0.5,0},
-                                  {0.5,0.5,0.25},
-                                  {0.3,0.3,0},
-                                  {0.3,0.3,0.15},
-                                  {0.15,0.15,0},
-                                  {0.15,0.15,0.075},
-                                  {0.75,1,0},             // 60
-                                  {0.875,1,0.5},
-                                  {0.4875,0.65,0},
-                                  {0.5688,0.65,0.325},
-                                  {0.375,0.5,0},
-                                  {0.4375,0.5,0.25},
-                                  {0.225,0.3,0},
-                                  {0.2625,0.3,0.15},
-                                  {0.1125,0.15,0},
-                                  {0.1313,0.15,0.075},
-                                  {0.5,1,0},              // 70
-                                  {0.75,1,0.5},
-                                  {0.325,0.65,0},
-                                  {0.4875,0.65,0.325},
-                                  {0.25,0.5,0},
-                                  {0.375,0.5,0.25},
-                                  {0.15,0.3,0},
-                                  {0.225,0.3,0.15},
-                                  {0.075,0.15,0},
-                                  {0.1125,0.15,0.075},
-                                  {0.25,1,0},             // 80
-                                  {0.625,1,0.5},
-                                  {0.1625,0.65,0},
-                                  {0.4063,0.65,0.325},
-                                  {0.125,0.5,0},
-                                  {0.3125,0.5,0.25},
-                                  {0.075,0.3,0},
-                                  {0.1875,0.3,0.15},
-                                  {0.0375,0.15,0},
-                                  {0.0938,0.15,0.075},
-                                  {0,1,0},                // 90
-                                  {0.5,1,0.5},
-                                  {0,0.65,0},
-                                  {0.325,0.65,0.325},
-                                  {0,0.5,0},
-                                  {0.25,0.5,0.25},
-                                  {0,0.3,0},
-                                  {0.15,0.3,0.15},
-                                  {0,0.15,0},
-                                  {0.075,0.15,0.075},
-                                  {0,1,0.25},             // 100
-                                  {0.5,1,0.625},
-                                  {0,0.65,0.1625},
-                                  {0.325,0.65,0.4063},
-                                  {0,0.5,0.125},
-                                  {0.25,0.5,0.3125},
-                                  {0,0.3,0.075},
-                                  {0.15,0.3,0.1875},
-                                  {0,0.15,0.0375},
-                                  {0.075,0.15,0.0938},
-                                  {0,1,0.5},              // 110
-                                  {0.5,1,0.75},
-                                  {0,0.65,0.325},
-                                  {0.325,0.65,0.4875},
-                                  {0,0.5,0.25},
-                                  {0.25,0.5,0.375},
-                                  {0,0.3,0.15},
-                                  {0.15,0.3,0.225},
-                                  {0,0.15,0.075},
-                                  {0.075,0.15,0.1125},
-                                  {0,1,0.75},             // 120
-                                  {0.5,1,0.875},
-                                  {0,0.65,0.4875},
-                                  {0.325,0.65,0.5688},
-                                  {0,0.5,0.375},
-                                  {0.25,0.5,0.4375},
-                                  {0,0.3,0.225},
-                                  {0.15,0.3,0.2625},
-                                  {0,0.15,0.1125},
-                                  {0.075,0.15,0.1313},
-                                  {0,1,1},                // 130
-                                  {0.5,1,1},
-                                  {0,0.65,0.65},
-                                  {0.325,0.65,0.65},
-                                  {0,0.5,0.5},
-                                  {0.25,0.5,0.5},
-                                  {0,0.3,0.3},
-                                  {0.15,0.3,0.3},
-                                  {0,0.15,0.15},
-                                  {0.075,0.15,0.15},
-                                  {0,0.75,1},             // 140
-                                  {0.5,0.875,1},
-                                  {0,0.4875,0.65},
-                                  {0.325,0.5688,0.65},
-                                  {0,0.375,0.5},
-                                  {0.25,0.4375,0.5},
-                                  {0,0.225,0.3},
-                                  {0.15,0.2625,0.3},
-                                  {0,0.1125,0.15},
-                                  {0.075,0.1313,0.15},
-                                  {0,0.5,1},              // 150
-                                  {0.5,0.75,1},
-                                  {0,0.325,0.65},
-                                  {0.325,0.4875,0.65},
-                                  {0,0.25,0.5},
-                                  {0.25,0.375,0.5},
-                                  {0,0.15,0.3},
-                                  {0.15,0.225,0.3},
-                                  {0,0.075,0.15},
-                                  {0.075,0.1125,0.15},
-                                  {0,0.25,1},             // 160
-                                  {0.5,0.625,1},
-                                  {0,0.1625,0.65},
-                                  {0.325,0.4063,0.65},
-                                  {0,0.125,0.5},
-                                  {0.25,0.3125,0.5},
-                                  {0,0.075,0.3},
-                                  {0.15,0.1875,0.3},
-                                  {0,0.0375,0.15},
-                                  {0.075,0.0938,0.15},
-                                  {0,0,1},                // 170
-                                  {0.5,0.5,1},
-                                  {0,0,0.65},
-                                  {0.325,0.325,0.65},
-                                  {0,0,0.5},
-                                  {0.25,0.25,0.5},
-                                  {0,0,0.3},
-                                  {0.15,0.15,0.3},
-                                  {0,0,0.15},
-                                  {0.075,0.075,0.15},
-                                  {0.25,0,1},             // 180
-                                  {0.625,0.5,1},
-                                  {0.1625,0,0.65},
-                                  {0.4063,0.325,0.65},
-                                  {0.125,0,0.5},
-                                  {0.3125,0.25,0.5},
-                                  {0.075,0,0.3},
-                                  {0.1875,0.15,0.3},
-                                  {0.0375,0,0.15},
-                                  {0.0938,0.075,0.15},
-                                  {0.5,0,1},              // 190
-                                  {0.75,0.5,1},
-                                  {0.325,0,0.65},
-                                  {0.4875,0.325,0.65},
-                                  {0.25,0,0.5},
-                                  {0.375,0.25,0.5},
-                                  {0.15,0,0.3},
-                                  {0.225,0.15,0.3},
-                                  {0.075,0,0.15},
-                                  {0.1125,0.075,0.15},
-                                  {0.75,0,1},             // 200
-                                  {0.875,0.5,1},
-                                  {0.4875,0,0.65},
-                                  {0.5688,0.325,0.65},
-                                  {0.375,0,0.5},
-                                  {0.4375,0.25,0.5},
-                                  {0.225,0,0.3},
-                                  {0.2625,0.15,0.3},
-                                  {0.1125,0,0.15},
-                                  {0.1313,0.075,0.15},
-                                  {1,0,1},                // 210
-                                  {1,0.5,1},
-                                  {0.65,0,0.65},
-                                  {0.65,0.325,0.65},
-                                  {0.5,0,0.5},
-                                  {0.5,0.25,0.5},
-                                  {0.3,0,0.3},
-                                  {0.3,0.15,0.3},
-                                  {0.15,0,0.15},
-                                  {0.15,0.075,0.15},
-                                  {1,0,0.75},             // 220
-                                  {1,0.5,0.875},
-                                  {0.65,0,0.4875},
-                                  {0.65,0.325,0.5688},
-                                  {0.5,0,0.375},
-                                  {0.5,0.25,0.4375},
-                                  {0.3,0,0.225},
-                                  {0.3,0.15,0.2625},
-                                  {0.15,0,0.1125},
-                                  {0.15,0.075,0.1313},
-                                  {1,0,0.5},              // 230
-                                  {1,0.5,0.75},
-                                  {0.65,0,0.325},
-                                  {0.65,0.325,0.4875},
-                                  {0.5,0,0.25},
-                                  {0.5,0.25,0.375},
-                                  {0.3,0,0.15},
-                                  {0.3,0.15,0.225},
-                                  {0.15,0,0.075},
-                                  {0.15,0.075,0.1125},
-                                  {1,0,0.25},             // 240
-                                  {1,0.5,0.625},
-                                  {0.65,0,0.1625},
-                                  {0.65,0.325,0.4063},
-                                  {0.5,0,0.125},
-                                  {0.5,0.25,0.3125},
-                                  {0.3,0,0.075},
-                                  {0.3,0.15,0.1875},
-                                  {0.15,0,0.0375},
-                                  {0.15,0.075,0.0938},
-                                  {0.33,0.33,0.33},       // 250
-                                  {0.464,0.464,0.464},
-                                  {0.598,0.598,0.598},
-                                  {0.732,0.732,0.732},
-                                  {0.866,0.866,0.866},
-                                  {1,1,1}                 // 255
-                              }
-                              ;
-
-
-// AutoCAD VERSION aliases
-#define VER_R12    DL_Codes::AC1009
-#define VER_LT2    DL_Codes::AC1009
-#define VER_R13    DL_Codes::AC1012   // not supported yet
-#define VER_LT95   DL_Codes::AC1012   // not supported yet
-#define VER_R14    DL_Codes::AC1014   // not supported yet
-#define VER_LT97   DL_Codes::AC1014   // not supported yet
-#define VER_LT98   DL_Codes::AC1014   // not supported yet
-#define VER_2000   DL_Codes::AC1015
-#define VER_2002   DL_Codes::AC1015
-
-
-// DXF Group Codes:
-
-// Strings
-#define STRGRP_START      0
-#define STRGRP_END        9
-
-// Coordinates
-#define CRDGRP_START     10
-#define CRDGRP_END       19
-
-// Real values
-#define RLGRP_START      38
-#define RLGRP_END        59
-
-// Short integer values
-#define SHOGRP_START     60
-#define SHOGRP_END       79
-
-// New in Release 13,
-#define SUBCLASS        100
-
-// More coordinates
-#define CRD2GRP_START   210
-#define CRD2GRP_END     239
-
-// Extended data strings
-#define ESTRGRP_START  1000
-#define ESTRGRP_END    1009
-
-// Extended data reals
-#define ERLGRP_START   1010
-#define ERLGRP_END     1059
-
-
-#define Y8_COORD_CODE       28
-#define Z0_COORD_CODE       30
-#define Z8_COORD_CODE       38
-
-#define POINT_COORD_CODE    10
-#define INSERT_COORD_CODE   10
-
-#define CRD2GRP_START      210
-#define CRD2GRP_END        239
-
-#define THICKNESS            39
-#define FIRST_REAL_CODE      THICKNESS
-#define LAST_REAL_CODE       59
-#define FIRST_INT_CODE       60
-#define ATTFLAGS_CODE        70
-#define PLINE_FLAGS_CODE     70
-#define LAYER_FLAGS_CODE     70
-#define FLD_LEN_CODE         73 // Inside ATTRIB resbuf
-#define LAST_INT_CODE        79
-#define X_EXTRU_CODE        210
-#define Y_EXTRU_CODE        220
-#define Z_EXTRU_CODE        230
-#define COMMENT_CODE        999
-
-// Start and endpoints of a line
-#define LINE_START_CODE      10  // Followed by x coord
-#define LINE_END_CODE        11  // Followed by x coord
-
-// Some codes used by blocks
-#define BLOCK_FLAGS_CODE     70  // An int containing flags
-#define BLOCK_BASE_CODE      10  // Origin of block definition
-#define XREF_DEPENDENT       16  // If a block contains an XREF
-#define XREF_RESOLVED        32  // If a XREF resolved ok
-#define REFERENCED           64  // If a block is ref'd in DWG
-
-#define XSCALE_CODE          41
-#define YSCALE_CODE          42
-#define ANGLE_CODE           50
-#define INS_POINT_CODE       10  // Followed by x of ins pnt
-#define NAME2_CODE            3  // Second appearance of name
-
-// Some codes used by circle entities
-#define CENTER_CODE          10  // Followed by x of center
-#define RADIUS_CODE          40  // Followd by radius of circle
-
-#define COND_OP_CODE         -4  // Conditional op,ads_ssget
-
-// When using ads_buildlist you MUST use RTDXF0 instead of these
-#define ENTITY_TYPE_CODE      0  // Then there is LINE, 3DFACE..
-#define SES_CODE              0  // Start End String Code
-#define FILE_SEP_CODE         0  // File separator
-#define SOT_CODE              0  // Start Of Table
-#define TEXTVAL_CODE          1
-#define NAME_CODE             2
-#define BLOCK_NAME_CODE       2
-#define SECTION_NAME_CODE     2
-#define ENT_HAND_CODE         5  // What follows is hexa string
-#define TXT_STYLE_CODE        7  // Inside attributes
-#define LAYER_NAME_CODE       8  // What follows is layer name
-#define FIRST_XCOORD_CODE    10  // Group code x of 1st coord
-#define FIRST_YCOORD_CODE    20  // Group code y of 1st coord
-#define FIRST_ZCOORD_CODE    30  // Group code z of 1st coord
-#define L_START_CODE         10
-#define L_END_CODE           11
-#define TXTHI_CODE           40
-#define SCALE_X_CODE         41
-#define SCALE_Y_CODE         42
-#define SCALE_Z_CODE         43
-#define BULGE_CODE           42  // Used in PLINE verts for arcs
-#define ROTATION_CODE        50
-#define COLOUR_CODE          62  // What follows is a color int
-#define LTYPE_CODE            6  // What follows is a linetype
-
-
-// Attribute flags
-#define ATTS_FOLLOW_CODE     66
-#define ATT_TAG_CODE          2
-#define ATT_VAL_CODE          1
-#define ATT_FLAGS_CODE       70  // 4 1 bit flags as follows...
-#define ATT_INVIS_FLAG        1
-#define ATT_CONST_FLAG        2
-#define ATT_VERIFY_FLAG       4 // Prompt and verify
-#define ATT_PRESET_FLAG       8 // No prompt and no verify
-
-// PLINE defines
-// Flags
-#define OPEN_PLINE       0x00
-#define CLOSED_PLINE     0x01
-#define POLYLINE3D       0x80
-#define PFACE_MESH       0x40
-#define PGON_MESH        0x10
-// Vertices follow entity, required in POLYLINES
-#define VERTS_FOLLOW_CODE   66 // Value should always be 1
-#define VERTEX_COORD_CODE   10
-
-
-// LAYER flags
-#define FROZEN           1
-#define FROZEN_BY_DEF    2
-#define LOCKED           4
-#define OBJECT_USED     64   // Object is ref'd in the dwg
-
-#define BLOCK_EN_CODE   -2   // Block entity definition
-#define E_NAME          -1   // Entity name
-
-// Extended data codes
-#define EXTD_SENTINEL    (-3)
-#define EXTD_STR         1000
-#define EXTD_APP_NAME    1001
-#define EXTD_CTL_STR     1002
-#define EXTD_LYR_STR     1003
-#define EXTD_CHUNK       1004
-#define EXTD_HANDLE      1005
-#define EXTD_POINT       1010
-#define EXTD_POS         1011
-#define EXTD_DISP        1012
-#define EXTD_DIR         1013
-#define EXTD_FLOAT       1040
-#define EXTD_DIST        1041
-#define EXTD_SCALE       1042
-#define EXTD_INT16       1070
-#define EXTD_INT32       1071
-
-// UCS codes for use in ads_trans
-#define WCS_TRANS_CODE      0
-#define UCS_TRANS_CODE      1
-#define DCS_TRANS_CODE      2
-#define PCS_TRANS_CODE      3
-
-#endif
-
diff --git a/src/dxflib/dl_creationadapter.h b/src/dxflib/dl_creationadapter.h
deleted file mode 100644
index f2877e8..0000000
--- a/src/dxflib/dl_creationadapter.h
+++ /dev/null
@@ -1,102 +0,0 @@
-/****************************************************************************
-** $Id: dl_creationadapter.h 8171 2009-12-11 12:31:36Z fredbed $
-**
-** Copyright (C) 2001-2003 RibbonSoft. All rights reserved.
-**
-** This file is part of the dxflib project.
-**
-** This file may be distributed and/or modified under the terms of the
-** GNU General Public License version 2 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file.
-**
-** Licensees holding valid dxflib Professional Edition licenses may use 
-** this file in accordance with the dxflib Commercial License
-** Agreement provided with the Software.
-**
-** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
-** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-**
-** See http://www.ribbonsoft.com for further details.
-**
-** Contact info at ribbonsoft.com if any conditions of this licensing are
-** not clear to you.
-**
-**********************************************************************/
-
-#ifndef DL_CREATIONADAPTER_H
-#define DL_CREATIONADAPTER_H
-
-#include "dl_creationinterface.h"
-
-/**
- * An abstract adapter class for receiving DXF events when a DXF file is being read. 
- * The methods in this class are empty. This class exists as convenience for creating 
- * listener objects.
- *
- * @author Andrew Mustun
- */
-class DL_CreationAdapter : public DL_CreationInterface {
-public:
-    DL_CreationAdapter() {}
-    virtual ~DL_CreationAdapter() {}
-    virtual void addLayer(const DL_LayerData&) {}
-    virtual void addBlock(const DL_BlockData&) {}
-    virtual void endBlock() {}
-    virtual void addPoint(const DL_PointData&) {}
-    virtual void addLine(const DL_LineData&) {}
-    virtual void addArc(const DL_ArcData&) {}
-    virtual void addCircle(const DL_CircleData&) {}
-    virtual void addEllipse(const DL_EllipseData&) {}
-	
-    virtual void addPolyline(const DL_PolylineData&) {}
-    virtual void addVertex(const DL_VertexData&) {}
-	
-    virtual void addSpline(const DL_SplineData&) {}
-    virtual void addControlPoint(const DL_ControlPointData&) {}
-    virtual void addKnot(const DL_KnotData&) {}
-	
-    virtual void addInsert(const DL_InsertData&) {}
-	
-    virtual void addMText(const DL_MTextData&) {}
-    virtual void addMTextChunk(const char*) {}
-    virtual void addText(const DL_TextData&) {}
-	
-    virtual void addDimAlign(const DL_DimensionData&,
-                             const DL_DimAlignedData&) {}
-    virtual void addDimLinear(const DL_DimensionData&,
-                              const DL_DimLinearData&) {}
-    virtual void addDimRadial(const DL_DimensionData&,
-                              const DL_DimRadialData&) {}
-    virtual void addDimDiametric(const DL_DimensionData&,
-                              const DL_DimDiametricData&) {}
-    virtual void addDimAngular(const DL_DimensionData&,
-                              const DL_DimAngularData&) {}
-    virtual void addDimAngular3P(const DL_DimensionData&,
-                              const DL_DimAngular3PData&) {}
-    virtual void addDimOrdinate(const DL_DimensionData&,
-                             const DL_DimOrdinateData&) {}
-    virtual void addLeader(const DL_LeaderData&) {}
-    virtual void addLeaderVertex(const DL_LeaderVertexData&) {}
-	
-    virtual void addHatch(const DL_HatchData&) {}
-
-    virtual void addTrace(const DL_TraceData&) {}
-    virtual void add3dFace(const DL_3dFaceData&) {}
-    virtual void addSolid(const DL_SolidData&) {}
-	
-    virtual void addImage(const DL_ImageData&) {}
-	virtual void linkImage(const DL_ImageDefData&) {}
-    virtual void addHatchLoop(const DL_HatchLoopData&) {}
-    virtual void addHatchEdge(const DL_HatchEdgeData&) {}
-    virtual void endEntity() {}
-    virtual void addComment(const char* comment) {}
-    virtual void setVariableVector(const char*, 
-	               double, double, double, int) {}
-    virtual void setVariableString(const char*, const char*, int) {}
-    virtual void setVariableInt(const char*, int, int) {}
-    virtual void setVariableDouble(const char*, double, int) {}
-    virtual void endSequence() {}
-};
-
-#endif
diff --git a/src/dxflib/dl_creationinterface.h b/src/dxflib/dl_creationinterface.h
deleted file mode 100644
index 6ae5dc4..0000000
--- a/src/dxflib/dl_creationinterface.h
+++ /dev/null
@@ -1,266 +0,0 @@
-/****************************************************************************
-** $Id: dl_creationinterface.h 8171 2009-12-11 12:31:36Z fredbed $
-**
-** Copyright (C) 2001-2003 RibbonSoft. All rights reserved.
-**
-** This file is part of the dxflib project.
-**
-** This file may be distributed and/or modified under the terms of the
-** GNU General Public License version 2 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file.
-**
-** Licensees holding valid dxflib Professional Edition licenses may use 
-** this file in accordance with the dxflib Commercial License
-** Agreement provided with the Software.
-**
-** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
-** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-**
-** See http://www.ribbonsoft.com for further details.
-**
-** Contact info at ribbonsoft.com if any conditions of this licensing are
-** not clear to you.
-**
-**********************************************************************/
-
-#ifndef DL_CREATIONINTERFACE_H
-#define DL_CREATIONINTERFACE_H
-
-#include <string.h>
-
-#include "dl_attributes.h"
-#include "dl_codes.h"
-#include "dl_entities.h"
-#include "dl_extrusion.h"
-
-/**
- * Abstract class (interface) for the creation of new entities.
- * Inherit your class which takes care of the entities in the 
- * processed DXF file from this interface. 
- *
- * Double arrays passed to your implementation contain 3 double 
- * values for x, y, z coordinates unless stated differently.
- *
- * @author Andrew Mustun
- */
-class DL_CreationInterface {
-public:
-    DL_CreationInterface() {
-        extrusion = new DL_Extrusion;
-    }
-    virtual ~DL_CreationInterface() {
-        delete extrusion;
-    }
-
-    /**
-     * Called for every layer.
-     */
-    virtual void addLayer(const DL_LayerData& data) = 0;
-
-    /**
-     * Called for every block. Note: all entities added after this
-     * command go into this block until endBlock() is called.
-    *
-     * @see endBlock()
-     */
-    virtual void addBlock(const DL_BlockData& data) = 0;
-
-    /** Called to end the current block */
-    virtual void endBlock() = 0;
-
-    /** Called for every point */
-    virtual void addPoint(const DL_PointData& data) = 0;
-
-    /** Called for every line */
-    virtual void addLine(const DL_LineData& data) = 0;
-
-    /** Called for every arc */
-    virtual void addArc(const DL_ArcData& data) = 0;
-
-    /** Called for every circle */
-    virtual void addCircle(const DL_CircleData& data) = 0;
-
-    /** Called for every ellipse */
-    virtual void addEllipse(const DL_EllipseData& data) = 0;
-
-    /** Called for every polyline start */
-    virtual void addPolyline(const DL_PolylineData& data) = 0;
-
-    /** Called for every polyline vertex */
-    virtual void addVertex(const DL_VertexData& data) = 0;
-	
-	/** Called for every spline */
-    virtual void addSpline(const DL_SplineData& data) = 0;
-	
-	/** Called for every spline control point */
-    virtual void addControlPoint(const DL_ControlPointData& data) = 0;
-	
-	/** Called for every spline knot value */
-    virtual void addKnot(const DL_KnotData& data) = 0;
-
-    /** Called for every insert. */
-    virtual void addInsert(const DL_InsertData& data) = 0;
-    
-    /** Called for every trace start */
-    virtual void addTrace(const DL_TraceData& data) = 0;
-    
-    /** Called for every 3dface start */
-    virtual void add3dFace(const DL_3dFaceData& data) = 0;
-
-    /** Called for every solid start */
-    virtual void addSolid(const DL_SolidData& data) = 0;
-
-
-    /** Called for every Multi Text entity. */
-    virtual void addMText(const DL_MTextData& data) = 0;
-
-    /**
-     * Called for additional text chunks for MTEXT entities.
-     * The chunks come at 250 character in size each. Note that 
-     * those chunks come <b>before</b> the actual MTEXT entity.
-     */
-    virtual void addMTextChunk(const char* text) = 0;
-
-    /** Called for every Text entity. */
-    virtual void addText(const DL_TextData& data) = 0;
-
-    /**
-     * Called for every aligned dimension entity. 
-     */
-    virtual void addDimAlign(const DL_DimensionData& data,
-                             const DL_DimAlignedData& edata) = 0;
-    /**
-     * Called for every linear or rotated dimension entity. 
-     */
-    virtual void addDimLinear(const DL_DimensionData& data,
-                              const DL_DimLinearData& edata) = 0;
-
-	/**
-     * Called for every radial dimension entity. 
-     */
-    virtual void addDimRadial(const DL_DimensionData& data,
-                              const DL_DimRadialData& edata) = 0;
-
-	/**
-     * Called for every diametric dimension entity. 
-     */
-    virtual void addDimDiametric(const DL_DimensionData& data,
-                              const DL_DimDiametricData& edata) = 0;
-
-	/**
-     * Called for every angular dimension (2 lines version) entity. 
-     */
-    virtual void addDimAngular(const DL_DimensionData& data,
-                              const DL_DimAngularData& edata) = 0;
-
-	/**
-     * Called for every angular dimension (3 points version) entity. 
-     */
-    virtual void addDimAngular3P(const DL_DimensionData& data,
-                              const DL_DimAngular3PData& edata) = 0;
-	
-    /**
-     * Called for every ordinate dimension entity. 
-     */
-    virtual void addDimOrdinate(const DL_DimensionData& data,
-                             const DL_DimOrdinateData& edata) = 0;
-    
-    /** 
-	 * Called for every leader start. 
-	 */
-    virtual void addLeader(const DL_LeaderData& data) = 0;
-	
-	/** 
-	 * Called for every leader vertex 
-	 */
-    virtual void addLeaderVertex(const DL_LeaderVertexData& data) = 0;
-	
-	/** 
-	 * Called for every hatch entity. 
-	 */
-    virtual void addHatch(const DL_HatchData& data) = 0;
-	
-	/** 
-	 * Called for every image entity. 
-	 */
-    virtual void addImage(const DL_ImageData& data) = 0;
-
-	/**
-	 * Called for every image definition.
-	 */
-	virtual void linkImage(const DL_ImageDefData& data) = 0;
-
-	/** 
-	 * Called for every hatch loop. 
-	 */
-    virtual void addHatchLoop(const DL_HatchLoopData& data) = 0;
-
-	/** 
-	 * Called for every hatch edge entity. 
-	 */
-    virtual void addHatchEdge(const DL_HatchEdgeData& data) = 0;
-	
-	/** 
-	 * Called after an entity has been completed.  
-	 */
-    virtual void endEntity() = 0;
-    
-    /**
-     * Called for every comment in the DXF file (code 999).
-     */
-    virtual void addComment(const char* comment) = 0;
-
-    /**
-     * Called for every vector variable in the DXF file (e.g. "$EXTMIN").
-     */
-    virtual void setVariableVector(const char* key, 
-	               double v1, double v2, double v3, int code) = 0;
-	
-    /**
-     * Called for every string variable in the DXF file (e.g. "$ACADVER").
-     */
-    virtual void setVariableString(const char* key, const char* value, int code) = 0;
-	
-    /**
-     * Called for every int variable in the DXF file (e.g. "$ACADMAINTVER").
-     */
-    virtual void setVariableInt(const char* key, int value, int code) = 0;
-	
-    /**
-     * Called for every double variable in the DXF file (e.g. "$DIMEXO").
-     */
-    virtual void setVariableDouble(const char* key, double value, int code) = 0;
-	
-     /**
-      * Called when a SEQEND occurs (when a POLYLINE or ATTRIB is done)
-      */
-     virtual void endSequence() = 0;
-
-    /** Sets the current attributes for entities. */
-    void setAttributes(const DL_Attributes& attrib) {
-        attributes = attrib;
-    }
-
-    /** @return the current attributes used for new entities. */
-    DL_Attributes getAttributes() {
-        return attributes;
-    }
-
-    /** Sets the current attributes for entities. */
-    void setExtrusion(double dx, double dy, double dz, double elevation) {
-        extrusion->setDirection(dx, dy, dz);
-		extrusion->setElevation(elevation);
-    }
-
-    /** @return the current attributes used for new entities. */
-    DL_Extrusion* getExtrusion() {
-        return extrusion;
-    }
-
-protected:
-    DL_Attributes attributes;
-    DL_Extrusion *extrusion;
-};
-
-#endif
diff --git a/src/dxflib/dl_dxf.cpp b/src/dxflib/dl_dxf.cpp
deleted file mode 100644
index 208313c..0000000
--- a/src/dxflib/dl_dxf.cpp
+++ /dev/null
@@ -1,5070 +0,0 @@
-/****************************************************************************
-** $Id: dl_dxf.cpp 8171 2009-12-11 12:31:36Z fredbed $
-**
-** Copyright (C) 2001-2003 RibbonSoft. All rights reserved.
-**
-** This file is part of the dxflib project.
-**
-** This file may be distributed and/or modified under the terms of the
-** GNU General Public License version 2 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file.
-**
-** Licensees holding valid dxflib Professional Edition licenses may use 
-** this file in accordance with the dxflib Commercial License
-** Agreement provided with the Software.
-**
-** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
-** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-**
-** See http://www.ribbonsoft.com for further details.
-**
-** Contact info at ribbonsoft.com if any conditions of this licensing are
-** not clear to you.
-**
-**********************************************************************/
-
-#include "dl_dxf.h"
-
-#include <algorithm>
-#include <string>
-#include <cstdio>
-#include <cassert>
-#include <cmath>
-
-#include "dl_attributes.h"
-#include "dl_codes.h"
-#include "dl_creationinterface.h"
-#include "dl_writer_ascii.h"
-
-
-/**
- * Default constructor.
- */
-DL_Dxf::DL_Dxf() {
-    styleHandleStd = 0;
-    version = VER_2000;
-
-    vertices = NULL;
-    maxVertices = 0;
-    vertexIndex = 0;
-
-    knots = NULL;
-    maxKnots = 0;
-    knotIndex = 0;
-
-    controlPoints = NULL;
-    maxControlPoints = 0;
-    controlPointIndex = 0;
-
-    leaderVertices = NULL;
-    maxLeaderVertices = 0;
-    leaderVertexIndex = 0;
-
-    hatchLoops = NULL;
-    maxHatchLoops = 0;
-    hatchLoopIndex = -1;
-    hatchEdges = NULL;
-    maxHatchEdges = NULL;
-    hatchEdgeIndex = NULL;
-    dropEdges = false;
-}
-
-
-
-/**
- * Destructor.
- */
-DL_Dxf::~DL_Dxf() {
-    if (vertices!=NULL) {
-        delete[] vertices;
-    }
-    if (knots!=NULL) {
-        delete[] knots;
-    }
-    if (controlPoints!=NULL) {
-        delete[] controlPoints;
-    }
-    if (leaderVertices!=NULL) {
-        delete[] leaderVertices;
-    }
-    if (hatchLoops!=NULL) {
-        delete[] hatchLoops;
-    }
-    if (hatchEdges!=NULL) {
-        for (int i=0; i<maxHatchLoops; ++i) {
-            if (hatchEdges[i]!=NULL) {
-                delete[] hatchEdges[i];
-            }
-        }
-        delete[] hatchEdges;
-    }
-    if (maxHatchEdges!=NULL) {
-        delete[] maxHatchEdges;
-    }
-    if (hatchEdgeIndex!=NULL) {
-        delete[] hatchEdgeIndex;
-    }
-}
-
-
-
-/**
- * @brief Reads the given file and calls the appropriate functions in
- * the given creation interface for every entity found in the file.
- *
- * @param file Input
- *		Path and name of file to read
- * @param creationInterface
- *		Pointer to the class which takes care of the entities in the file.
- *
- * @retval true If \p file could be opened.
- * @retval false If \p file could not be opened.
- */
-bool DL_Dxf::in(const string& file, DL_CreationInterface* creationInterface) {
-    FILE *fp;
-    firstCall = true;
-    currentEntity = DL_UNKNOWN;
-    int errorCounter = 0;
-
-    fp = fopen(file.c_str(), "rt");
-    if (fp) {
-        while (readDxfGroups(fp, creationInterface, &errorCounter)) {}
-        fclose(fp);
-        if (errorCounter>0) {
-            std::cerr << "DXF Filter: There have been " << errorCounter <<
-            " errors. The drawing might be incomplete / incorrect.\n";
-        }
-        return true;
-    }
-
-    return false;
-}
-
-
-
-/**
- * Reads a DXF file from an existing stream.
- *
- * @param stream The string stream.
- * @param creationInterface
- *		Pointer to the class which takes care of the entities in the file.
- *
- * @retval true If \p file could be opened.
- * @retval false If \p file could not be opened.
- */
-#ifndef __GCC2x__
-bool DL_Dxf::in(std::stringstream& stream,
-                DL_CreationInterface* creationInterface) {
-    
-    int errorCounter = 0;
-
-    if (stream.good()) {
-        firstCall=true;
-        currentEntity = DL_UNKNOWN;
-        while (readDxfGroups(stream, creationInterface, &errorCounter)) {}
-        if (errorCounter>0) {
-            std::cerr << "DXF Filter: There have been " << errorCounter <<
-            " errors. The drawing might be incomplete / incorrect.\n";
-        }
-        return true;
-    }
-    return false;
-}
-#endif
-
-
-
-/**
- * @brief Reads a group couplet from a DXF file.  Calls another function
- * to process it.
- *
- * A group couplet consists of two lines that represent a single
- * piece of data.  An integer constant on the first line indicates
- * the type of data.  The value is on the next line.\n
- *
- * This function reads a couplet, determines the type of data, and
- * passes the value to the the appropriate handler function of
- * \p creationInterface.\n
- * 
- * \p fp is advanced so that the next call to \p readDXFGroups() reads
- * the next couplet in the file.
- *
- * @param fp Handle of input file
- * @param creationInterface Handle of class which processes entities
- *		in the file
- *
- * @retval true If EOF not reached.
- * @retval false If EOF reached.
- */
-bool DL_Dxf::readDxfGroups(FILE *fp, DL_CreationInterface* creationInterface,
-                           int* errorCounter) {
-
-    bool ok = true;
-    static int line = 1;
-
-    // Read one group of the DXF file and chop the lines:
-    if (DL_Dxf::getChoppedLine(groupCodeTmp, DL_DXF_MAXLINE, fp) &&
-            DL_Dxf::getChoppedLine(groupValue, DL_DXF_MAXLINE, fp) ) {
-
-        groupCode = (unsigned int)stringToInt(groupCodeTmp, &ok);
-
-        if (ok) {
-            //std::cerr << groupCode << "\n";
-            //std::cerr << groupValue << "\n";
-            line+=2;
-            processDXFGroup(creationInterface, groupCode, groupValue);
-        } else {
-            std::cerr << "DXF read error: Line: " << line << "\n";
-            if (errorCounter!=NULL) {
-                (*errorCounter)++;
-            }
-            // try to fix:
-            std::cerr << "DXF read error: trying to fix..\n";
-            // drop a line to sync:
-            DL_Dxf::getChoppedLine(groupCodeTmp, DL_DXF_MAXLINE, fp);
-        }
-    }
-
-    return !feof(fp);
-}
-
-
-
-/**
- * Same as above but for stringstreams.
- */
-#ifndef __GCC2x__
-bool DL_Dxf::readDxfGroups(std::stringstream& stream,
-                           DL_CreationInterface* creationInterface,
-                           int* errorCounter) {
-
-    bool ok = true;
-    static int line = 1;
-
-    // Read one group of the DXF file and chop the lines:
-    if (DL_Dxf::getChoppedLine(groupCodeTmp, DL_DXF_MAXLINE, stream) &&
-            DL_Dxf::getChoppedLine(groupValue, DL_DXF_MAXLINE, stream) ) {
-
-        groupCode = (unsigned int)stringToInt(groupCodeTmp, &ok);
-
-        if (ok) {
-            //std::cout << "group code: " << groupCode << "\n";
-            //std::cout << "group value: " << groupValue << "\n";
-            line+=2;
-            processDXFGroup(creationInterface, groupCode, groupValue);
-        } else {
-            std::cerr << "DXF read error: Line: " << line << "\n";
-            if (errorCounter!=NULL) {
-                (*errorCounter)++;
-            }
-            // try to fix:
-            //std::cerr << "DXF read error: trying to fix..\n";
-            // drop a line to sync:
-            //DL_Dxf::getChoppedLine(groupCodeTmp, DL_DXF_MAXLINE, stream);
-        }
-    }
-    return !stream.eof();
-}
-#endif
-
-
-
-/**
- * @brief Reads line from file & strips whitespace at start and newline 
- * at end.
- *
- * @param s Output\n
- *		Pointer to character array that chopped line will be returned in.
- * @param size Size of \p s.  (Including space for NULL.)
- * @param fp Input\n
- *		Handle of input file.
- *
- * @retval true if line could be read
- * @retval false if \p fp is already at end of file
- *
- * @todo Change function to use safer FreeBSD strl* functions
- * @todo Is it a problem if line is blank (i.e., newline only)?
- *		Then, when function returns, (s==NULL).
- */
-bool DL_Dxf::getChoppedLine(char *s, unsigned int size, FILE *fp) {
-    if (!feof(fp)) {
-        // The whole line in the file.  Includes space for NULL.
-        char* wholeLine = new char[size];
-        // Only the useful part of the line
-        char* line;
-
-        line = fgets(wholeLine, size, fp);
-
-        if (line!=NULL && line[0] != '\0') { // Evaluates to fgets() retval
-            // line == wholeLine at this point.
-            // Both guaranteed to be NULL terminated.
-
-            // Strip leading whitespace and trailing CR/LF.
-            stripWhiteSpace(&line);
-
-            strncpy(s, line, size);
-            s[size] = '\0';
-            // s should always be NULL terminated, because:
-            assert(size > strlen(line));
-        }
-
-        delete[] wholeLine; // Done with wholeLine
-
-        return true;
-    } else {
-        s[0] = '\0';
-        return false;
-    }
-}
-
-
-
-/**
- * Same as above but for stringstreams.
- */
-#ifndef __GCC2x__
-bool DL_Dxf::getChoppedLine(char *s, unsigned int size,
-                            std::stringstream& stream) {
-
-    if (!stream.eof()) {
-        // Only the useful part of the line
-        char* line = new char[size+1];
-        char* oriLine = line;
-        stream.getline(line, size);
-        stripWhiteSpace(&line);
-        strncpy(s, line, size);
-        s[size] = '\0';
-        assert(size > strlen(s));
-        delete[] oriLine;
-        return true;
-    } else {
-        s[0] = '\0';
-        return false;
-    }
-}
-#endif
-
-
-
-/**
- * @brief Strips leading whitespace and trailing Carriage Return (CR)
- * and Line Feed (LF) from NULL terminated string.
- *
- * @param s Input and output.
- *		NULL terminates string.
- *
- * @retval true if \p s is non-NULL
- * @retval false if \p s is NULL
- */
-bool DL_Dxf::stripWhiteSpace(char** s) {
-    // last non-NULL char:
-    int lastChar = strlen(*s) - 1;
-
-    // Is last character CR or LF?
-    while ( (lastChar >= 0) &&
-            (((*s)[lastChar] == 10) || ((*s)[lastChar] == 13) ||
-             ((*s)[lastChar] == ' ' || ((*s)[lastChar] == '\t'))) ) {
-        (*s)[lastChar] = '\0';
-        lastChar--;
-    }
-
-    // Skip whitespace, excluding \n, at beginning of line
-    while ((*s)[0]==' ' || (*s)[0]=='\t') {
-        ++(*s);
-    }
-    
-    return ((*s) ? true : false);
-}
-
-
-
-/**
- * Processes a group (pair of group code and value).
- *
- * @param creationInterface Handle to class that creates entities and
- * other CAD data from DXF group codes
- *
- * @param groupCode Constant indicating the data type of the group.
- * @param groupValue The data value.
- *
- * @retval true if done processing current entity and new entity begun
- * @retval false if not done processing current entity
-*/
-bool DL_Dxf::processDXFGroup(DL_CreationInterface* creationInterface,
-                             int groupCode, const char *groupValue) {
-
-    // Init on first call
-    if (firstCall) {
-        for (int i=0; i<DL_DXF_MAXGROUPCODE; ++i) {
-            values[i][0] = '\0';
-        }
-        settingValue[0] = '\0';
-        firstCall=false;
-    }
-
-    // Indicates comment or dxflib version:
-    if (groupCode==999) {
-        if (groupValue!=NULL) {
-            if (!strncmp(groupValue, "dxflib", 6)) {
-                libVersion = getLibVersion(&groupValue[7]);
-            }
-            
-            addComment(creationInterface, groupValue);
-        }
-    }
-
-    // Indicates start of new entity or var
-    else if (groupCode==0 || groupCode==9) {
-
-        // If new entity is encountered, the last one must be complete
-        // prepare attributes which can be used for most entities:
-        char name[DL_DXF_MAXLINE+1];
-        if ((values[8])[0]!='\0') {
-            strcpy(name, values[8]);
-        }
-        // defaults to layer '0':
-        else {
-            strcpy(name, "0");
-        }
-
-        int width;
-        // Compatibillity with qcad1:
-        if ((values[39])[0]!='\0' &&
-                (values[370])[0]=='\0') {
-            width = toInt(values[39], -1);
-        }
-        // since autocad 2002:
-        else if ((values[370])[0]!='\0') {
-            width = toInt(values[370], -1);
-        }
-        // default to BYLAYER:
-        else {
-            width = -1;
-        }
-
-        int color;
-        color = toInt(values[62], 256);
-
-        char linetype[DL_DXF_MAXLINE+1];
-        strcpy(linetype, toString(values[6], "BYLAYER"));
-
-        attrib = DL_Attributes(values[8],          // layer
-                               color,              // color
-                               width,              // width
-                               linetype);          // linetype
-        creationInterface->setAttributes(attrib);
-
-        creationInterface->setExtrusion(toReal(values[210], 0.0),
-                                        toReal(values[220], 0.0),
-                                        toReal(values[230], 1.0),
-                                        toReal(values[30], 0.0));
-
-        // Add the last entity via creationInterface
-        switch (currentEntity) {
-        case DL_SETTING:
-            addSetting(creationInterface);
-            break;
-
-        case DL_LAYER:
-            addLayer(creationInterface);
-            break;
-
-        case DL_BLOCK:
-            addBlock(creationInterface);
-            break;
-
-        case DL_ENDBLK:
-            endBlock(creationInterface);
-            break;
-
-        case DL_ENTITY_POINT:
-            addPoint(creationInterface);
-            break;
-
-        case DL_ENTITY_LINE:
-            addLine(creationInterface);
-            break;
-
-        case DL_ENTITY_POLYLINE:
-            //bulge = toReal(values[42]);
-            // fall through
-        case DL_ENTITY_LWPOLYLINE:
-            addPolyline(creationInterface);
-            break;
-
-        case DL_ENTITY_VERTEX:
-            addVertex(creationInterface);
-            break;
-
-        case DL_ENTITY_SPLINE:
-            addSpline(creationInterface);
-            break;
-
-        case DL_ENTITY_ARC:
-            addArc(creationInterface);
-            break;
-
-        case DL_ENTITY_CIRCLE:
-            addCircle(creationInterface);
-            break;
-
-        case DL_ENTITY_ELLIPSE:
-            addEllipse(creationInterface);
-            break;
-
-        case DL_ENTITY_INSERT:
-            addInsert(creationInterface);
-            break;
-
-        case DL_ENTITY_MTEXT:
-            addMText(creationInterface);
-            break;
-
-        case DL_ENTITY_TEXT:
-            addText(creationInterface);
-            break;
-
-        case DL_ENTITY_ATTRIB:
-            addAttrib(creationInterface);
-            break;
-
-        case DL_ENTITY_DIMENSION: {
-                int type = (toInt(values[70], 0)&0x07);
-
-                switch (type) {
-                case 0:
-                    addDimLinear(creationInterface);
-                    break;
-
-                case 1:
-                    addDimAligned(creationInterface);
-                    break;
-
-                case 2:
-                    addDimAngular(creationInterface);
-                    break;
-
-                case 3:
-                    addDimDiametric(creationInterface);
-                    break;
-
-                case 4:
-                    addDimRadial(creationInterface);
-                    break;
-
-                case 5:
-                    addDimAngular3P(creationInterface);
-                    break;
-                
-                case 6:
-                    addDimOrdinate(creationInterface);
-                    break;
-
-                default:
-                    break;
-                }
-            }
-            break;
-
-        case DL_ENTITY_LEADER:
-            addLeader(creationInterface);
-            break;
-
-        case DL_ENTITY_HATCH:
-            addHatch(creationInterface);
-            break;
-
-        case DL_ENTITY_IMAGE:
-            addImage(creationInterface);
-            break;
-
-        case DL_ENTITY_IMAGEDEF:
-            addImageDef(creationInterface);
-            break;
-
-        case DL_ENTITY_TRACE:
-            addTrace(creationInterface);
-            break;
-        
-        case DL_ENTITY_3DFACE:
-            add3dFace(creationInterface);
-            break;
-
-        case DL_ENTITY_SOLID:
-            addSolid(creationInterface);
-            break;
-
-        case DL_ENTITY_SEQEND:
-            endSequence(creationInterface);
-            break;
-        
-        default:
-            break;
-        }
-
-
-        // reset all values (they are not persistent and only this
-        //  way we can detect default values for unstored settings)
-        for (int i=0; i<DL_DXF_MAXGROUPCODE; ++i) {
-            values[i][0] = '\0';
-        }
-        settingValue[0] = '\0';
-        settingKey[0] = '\0';
-
-
-        // Last DXF entity or setting has been handled
-        // Now determine what the next entity or setting type is
-
-		int prevEntity = currentEntity;
-
-        // Read DXF settings:
-        if (groupValue[0]=='$') {
-            currentEntity = DL_SETTING;
-            strncpy(settingKey, groupValue, DL_DXF_MAXLINE);
-            settingKey[DL_DXF_MAXLINE] = '\0';
-        }
-        // Read Layers:
-        else if (!strcmp(groupValue, "LAYER")) {
-            currentEntity = DL_LAYER;
-
-        }
-        // Read Blocks:
-        else if (!strcmp(groupValue, "BLOCK")) {
-            currentEntity = DL_BLOCK;
-        } else if (!strcmp(groupValue, "ENDBLK")) {
-            currentEntity = DL_ENDBLK;
-
-        }
-        // Read entities:
-        else if (!strcmp(groupValue, "POINT")) {
-            currentEntity = DL_ENTITY_POINT;
-        } else if (!strcmp(groupValue, "LINE")) {
-            currentEntity = DL_ENTITY_LINE;
-        } else if (!strcmp(groupValue, "POLYLINE")) {
-            currentEntity = DL_ENTITY_POLYLINE;
-        } else if (!strcmp(groupValue, "LWPOLYLINE")) {
-            currentEntity = DL_ENTITY_LWPOLYLINE;
-        } else if (!strcmp(groupValue, "VERTEX")) {
-            currentEntity = DL_ENTITY_VERTEX;
-        } else if (!strcmp(groupValue, "SPLINE")) {
-            currentEntity = DL_ENTITY_SPLINE;
-        } else if (!strcmp(groupValue, "ARC")) {
-            currentEntity = DL_ENTITY_ARC;
-        } else if (!strcmp(groupValue, "ELLIPSE")) {
-            currentEntity = DL_ENTITY_ELLIPSE;
-        } else if (!strcmp(groupValue, "CIRCLE")) {
-            currentEntity = DL_ENTITY_CIRCLE;
-        } else if (!strcmp(groupValue, "INSERT")) {
-            currentEntity = DL_ENTITY_INSERT;
-        } else if (!strcmp(groupValue, "TEXT")) {
-            currentEntity = DL_ENTITY_TEXT;
-        } else if (!strcmp(groupValue, "MTEXT")) {
-            currentEntity = DL_ENTITY_MTEXT;
-        } else if (!strcmp(groupValue, "ATTRIB")) {
-            currentEntity = DL_ENTITY_ATTRIB;
-        } else if (!strcmp(groupValue, "DIMENSION")) {
-            currentEntity = DL_ENTITY_DIMENSION;
-        } else if (!strcmp(groupValue, "LEADER")) {
-            currentEntity = DL_ENTITY_LEADER;
-        } else if (!strcmp(groupValue, "HATCH")) {
-            currentEntity = DL_ENTITY_HATCH;
-        } else if (!strcmp(groupValue, "IMAGE")) {
-            currentEntity = DL_ENTITY_IMAGE;
-        } else if (!strcmp(groupValue, "IMAGEDEF")) {
-            currentEntity = DL_ENTITY_IMAGEDEF;
-        } else if (!strcmp(groupValue, "TRACE")) {
-           currentEntity = DL_ENTITY_TRACE;
-        } else if (!strcmp(groupValue, "SOLID")) {
-           currentEntity = DL_ENTITY_SOLID;
-        } else if (!strcmp(groupValue, "3DFACE")) {
-           currentEntity = DL_ENTITY_3DFACE;
-        } else if (!strcmp(groupValue, "SEQEND")) {
-            currentEntity = DL_ENTITY_SEQEND;
-        } else {
-            currentEntity = DL_UNKNOWN;
-        }
-
-		// end of old style POLYLINE entity
-		if (prevEntity==DL_ENTITY_VERTEX && currentEntity!=DL_ENTITY_VERTEX) {
-			endEntity(creationInterface);
-		}
-
-        return true;
-
-    } else {
-        // Group code does not indicate start of new entity or setting,
-        // so this group must be continuation of data for the current
-        // one.
-        if (groupCode<DL_DXF_MAXGROUPCODE) {
-
-            bool handled = false;
-
-            switch (currentEntity) {
-            case DL_ENTITY_MTEXT:
-                handled = handleMTextData(creationInterface);
-                break;
-
-            case DL_ENTITY_LWPOLYLINE:
-                handled = handleLWPolylineData(creationInterface);
-                break;
-
-            case DL_ENTITY_SPLINE:
-                handled = handleSplineData(creationInterface);
-                break;
-
-            case DL_ENTITY_LEADER:
-                handled = handleLeaderData(creationInterface);
-                break;
-
-            case DL_ENTITY_HATCH:
-                handled = handleHatchData(creationInterface);
-                break;
-
-            default:
-                break;
-            }
-
-            if (!handled) {
-                // Normal group / value pair:
-                strncpy(values[groupCode], groupValue, DL_DXF_MAXLINE);
-                values[groupCode][DL_DXF_MAXLINE] = '\0';
-            }
-        }
-
-        return false;
-    }
-    return false;
-}
-
-
-
-/**
- * Adds a comment from the DXF file.
- */
-void DL_Dxf::addComment(DL_CreationInterface* creationInterface, const char* comment) {
-    creationInterface->addComment(comment);
-}
-
-
-
-/**
- * Adds a variable from the DXF file.
- */
-void DL_Dxf::addSetting(DL_CreationInterface* creationInterface) {
-    int c = -1;
-    for (int i=0; i<=380; ++i) {
-        if (values[i][0]!='\0') {
-            c = i;
-            break;
-        }
-    }
-
-    // string
-    if (c>=0 && c<=9) {
-        creationInterface->setVariableString(settingKey,
-                                             values[c], c);
-    }
-    // vector
-    else if (c>=10 && c<=39) {
-        if (c==10) {
-            creationInterface->setVariableVector(
-                settingKey,
-                toReal(values[c]),
-                toReal(values[c+10]),
-                toReal(values[c+20]),
-                c);
-        }
-    }
-    // double
-    else if (c>=40 && c<=59) {
-        creationInterface->setVariableDouble(settingKey,
-                                             toReal(values[c]),
-                                             c);
-    }
-    // int
-    else if (c>=60 && c<=99) {
-        creationInterface->setVariableInt(settingKey,
-                                          toInt(values[c]),
-                                          c);
-    }
-    // misc
-    else if (c>=0) {
-        creationInterface->setVariableString(settingKey,
-                                             values[c],
-                                             c);
-    }
-}
-
-
-
-/**
- * Adds a layer that was read from the file via the creation interface.
- */
-void DL_Dxf::addLayer(DL_CreationInterface* creationInterface) {
-    // correct some impossible attributes for layers:
-    attrib = creationInterface->getAttributes();
-    if (attrib.getColor()==256 || attrib.getColor()==0) {
-        attrib.setColor(7);
-    }
-    if (attrib.getWidth()<0) {
-        attrib.setWidth(1);
-    }
-    if (!strcasecmp(attrib.getLineType().c_str(), "BYLAYER") ||
-            !strcasecmp(attrib.getLineType().c_str(), "BYBLOCK")) {
-        attrib.setLineType("CONTINUOUS");
-    }
-
-    // add layer
-    creationInterface->addLayer(DL_LayerData(values[2],
-                                toInt(values[70])));
-}
-
-
-
-/**
- * Adds a block that was read from the file via the creation interface.
- */
-void DL_Dxf::addBlock(DL_CreationInterface* creationInterface) {
-    DL_BlockData d(
-        // Name:
-        values[2],
-        // flags:
-        toInt(values[70]),
-        // base point:
-        toReal(values[10]),
-        toReal(values[20]),
-        toReal(values[30]));
-
-    creationInterface->addBlock(d);
-}
-
-
-
-/**
- * Ends a block that was read from the file via the creation interface.
- */
-void DL_Dxf::endBlock(DL_CreationInterface* creationInterface) {
-    creationInterface->endBlock();
-}
-
-
-
-/**
- * Adds a point entity that was read from the file via the creation interface.
- */
-void DL_Dxf::addPoint(DL_CreationInterface* creationInterface) {
-    DL_PointData d(toReal(values[10]),
-                   toReal(values[20]),
-                   toReal(values[30]));
-    creationInterface->addPoint(d);
-}
-
-
-
-/**
- * Adds a line entity that was read from the file via the creation interface.
- */
-void DL_Dxf::addLine(DL_CreationInterface* creationInterface) {
-    DL_LineData d(toReal(values[10]),
-                  toReal(values[20]),
-                  toReal(values[30]),
-                  toReal(values[11]),
-                  toReal(values[21]),
-                  toReal(values[31]));
-
-    creationInterface->addLine(d);
-}
-
-
-
-/**
- * Adds a polyline entity that was read from the file via the creation interface.
- */
-void DL_Dxf::addPolyline(DL_CreationInterface* creationInterface) {
-    DL_PolylineData pd(maxVertices, toInt(values[71], 0), toInt(values[72], 0), toInt(values[70], 0));
-    creationInterface->addPolyline(pd);
-
-    if (currentEntity==DL_ENTITY_LWPOLYLINE) {
-        for (int i=0; i<maxVertices; i++) {
-            DL_VertexData d(vertices[i*4],
-                            vertices[i*4+1],
-                            vertices[i*4+2],
-                            vertices[i*4+3]);
-
-            creationInterface->addVertex(d);
-        }
-		creationInterface->endEntity();
-    }
-}
-
-
-
-/**
- * Adds a polyline vertex entity that was read from the file 
- * via the creation interface.
- */
-void DL_Dxf::addVertex(DL_CreationInterface* creationInterface) {
-    DL_VertexData d(toReal(values[10]),
-                    toReal(values[20]),
-                    toReal(values[30]),
-                    //bulge);
-                    toReal(values[42]));
-
-    //bulge = toReal(values[42]);
-
-    creationInterface->addVertex(d);
-}
-
-
-
-/**
- * Adds a spline entity that was read from the file via the creation interface.
- */
-void DL_Dxf::addSpline(DL_CreationInterface* creationInterface) {
-    DL_SplineData sd(toInt(values[71], 3), 
-                     maxKnots, 
-                     maxControlPoints, 
-                     toInt(values[70], 4));
-    /*DL_SplineData sd(toInt(values[71], 3), toInt(values[72], 0),
-                     toInt(values[73], 0), toInt(values[70], 4));*/
-    creationInterface->addSpline(sd);
-
-    int i;
-    for (i=0; i<maxControlPoints; i++) {
-        DL_ControlPointData d(controlPoints[i*3],
-                              controlPoints[i*3+1],
-                              controlPoints[i*3+2]);
-
-        creationInterface->addControlPoint(d);
-    }
-    for (i=0; i<maxKnots; i++) {
-      DL_KnotData k(knots[i]);
-
-      creationInterface->addKnot(k);
-    }
-}
-
-
-
-/**
- * Adds an arc entity that was read from the file via the creation interface.
- */
-void DL_Dxf::addArc(DL_CreationInterface* creationInterface) {
-    DL_ArcData d(toReal(values[10]),
-                 toReal(values[20]),
-                 toReal(values[30]),
-                 toReal(values[40]),
-                 toReal(values[50]),
-                 toReal(values[51]));
-
-    creationInterface->addArc(d);
-}
-
-
-
-/**
- * Adds a circle entity that was read from the file via the creation interface.
- */
-void DL_Dxf::addCircle(DL_CreationInterface* creationInterface) {
-    DL_CircleData d(toReal(values[10]),
-                    toReal(values[20]),
-                    toReal(values[30]),
-                    toReal(values[40]));
-
-    creationInterface->addCircle(d);
-}
-
-
-
-/**
- * Adds an ellipse entity that was read from the file via the creation interface.
- */
-void DL_Dxf::addEllipse(DL_CreationInterface* creationInterface) {
-    DL_EllipseData d(toReal(values[10]),
-                     toReal(values[20]),
-                     toReal(values[30]),
-                     toReal(values[11]),
-                     toReal(values[21]),
-                     toReal(values[31]),
-                     toReal(values[40], 1.0),
-                     toReal(values[41], 0.0),
-                     toReal(values[42], 2*M_PI));
-
-    creationInterface->addEllipse(d);
-}
-
-
-
-/**
- * Adds an insert entity that was read from the file via the creation interface.
- */
-void DL_Dxf::addInsert(DL_CreationInterface* creationInterface) {
-    DL_InsertData d(values[2],
-                    // insertion point
-                    toReal(values[10], 0.0),
-                    toReal(values[20], 0.0),
-                    toReal(values[30], 0.0),
-                    // scale:
-                    toReal(values[41], 1.0),
-                    toReal(values[42], 1.0),
-                    toReal(values[43], 1.0),
-                    // angle:
-                    toReal(values[50], 0.0),
-                    // cols / rows:
-                    toInt(values[70], 1),
-                    toInt(values[71], 1),
-                    // spacing:
-                    toReal(values[44], 0.0),
-                    toReal(values[45], 0.0));
-
-    creationInterface->addInsert(d);
-}
-
-
-
-/**
- * Adds a trace entity (4 edge closed polyline) that was read from the file via the creation interface.
- *
- * @author AHM
- */
-void DL_Dxf::addTrace(DL_CreationInterface* creationInterface) {
-    DL_TraceData td;
-    
-    for (int k = 0; k < 4; k++) {
-       td.x[k] = toReal(values[10 + k]);
-       td.y[k] = toReal(values[20 + k]);
-       td.z[k] = toReal(values[30 + k]);
-    }
-    creationInterface->addTrace(td);
-}
-
-
-
-/**
- * Adds a 3dface entity that was read from the file via the creation interface.
- */
-void DL_Dxf::add3dFace(DL_CreationInterface* creationInterface) {
-    DL_3dFaceData td;
-    
-    for (int k = 0; k < 4; k++) {
-       td.x[k] = toReal(values[10 + k]);
-       td.y[k] = toReal(values[20 + k]);
-       td.z[k] = toReal(values[30 + k]);
-    }
-    creationInterface->add3dFace(td);
-}
-
-
-
-/**
- * Adds a solid entity (filled trace) that was read from the file via the creation interface.
- * 
- * @author AHM
- */
-void DL_Dxf::addSolid(DL_CreationInterface* creationInterface) {
-    DL_SolidData sd;
-    
-    for (int k = 0; k < 4; k++) {
-       sd.x[k] = toReal(values[10 + k]);
-       sd.y[k] = toReal(values[20 + k]);
-       sd.z[k] = toReal(values[30 + k]);
-    }
-    creationInterface->addSolid(sd);
-}
-
-
-/**
- * Adds an MText entity that was read from the file via the creation interface.
- */
-void DL_Dxf::addMText(DL_CreationInterface* creationInterface) {
-    double angle = 0.0;
-
-    if (values[50][0]!='\0') {
-        if (libVersion<=0x02000200) {
-            // wrong but compatible with dxflib <=2.0.2.0:
-            angle = toReal(values[50], 0.0);
-        } else {
-            angle = (toReal(values[50], 0.0)*2*M_PI)/360.0;
-        }
-    } else if (values[11][0]!='\0' && values[21][0]!='\0') {
-        double x = toReal(values[11], 0.0);
-        double y = toReal(values[21], 0.0);
-
-        if (fabs(x)<1.0e-6) {
-            if (y>0.0) {
-                angle = M_PI/2.0;
-            } else {
-                angle = M_PI/2.0*3.0;
-            }
-        } else {
-            angle = atan(y/x);
-        }
-    }
-
-    DL_MTextData d(
-        // insertion point
-        toReal(values[10], 0.0),
-        toReal(values[20], 0.0),
-        toReal(values[30], 0.0),
-        // height
-        toReal(values[40], 2.5),
-        // width
-        toReal(values[41], 100.0),
-        // attachment point
-        toInt(values[71], 1),
-        // drawing direction
-        toInt(values[72], 1),
-        // line spacing style
-        toInt(values[73], 1),
-        // line spacing factor
-        toReal(values[44], 1.0),
-        // text
-        values[1],
-        // style
-        values[7],
-        // angle
-        angle);
-    creationInterface->addMText(d);
-}
-
-
-
-/**
- * Handles additional MText data.
- */
-bool DL_Dxf::handleMTextData(DL_CreationInterface* creationInterface) {
-    // Special handling of text chunks for MTEXT entities:
-    if (groupCode==3) {
-        creationInterface->addMTextChunk(groupValue);
-        return true;
-    }
-
-    return false;
-}
-
-
-
-/**
- * Handles additional polyline data.
- */
-bool DL_Dxf::handleLWPolylineData(DL_CreationInterface* /*creationInterface*/) {
-    // Allocate LWPolyline vertices (group code 90):
-    if (groupCode==90) {
-        maxVertices = toInt(groupValue);
-        if (maxVertices>0) {
-            if (vertices!=NULL) {
-                delete[] vertices;
-            }
-            vertices = new double[4*maxVertices];
-            for (int i=0; i<maxVertices; ++i) {
-                vertices[i*4] = 0.0;
-                vertices[i*4+1] = 0.0;
-                vertices[i*4+2] = 0.0;
-                vertices[i*4+3] = 0.0;
-            }
-        }
-        vertexIndex=-1;
-        return true;
-    }
-
-    // Compute LWPolylines vertices (group codes 10/20/30/42):
-    else if (groupCode==10 || groupCode==20 ||
-             groupCode==30 || groupCode==42) {
-
-        if (vertexIndex<maxVertices-1 && groupCode==10) {
-            vertexIndex++;
-        }
-
-        if (groupCode<=30) {
-            if (vertexIndex>=0 && vertexIndex<maxVertices) {
-                vertices[4*vertexIndex + (groupCode/10-1)]
-                = toReal(groupValue);
-            }
-        } else if (groupCode==42 && vertexIndex<maxVertices) {
-            vertices[4*vertexIndex + 3] = toReal(groupValue);
-        }
-        return true;
-    }
-    return false;
-}
-
-
-
-/**
- * Handles additional spline data.
- */
-bool DL_Dxf::handleSplineData(DL_CreationInterface* /*creationInterface*/) {
-    // Allocate Spline knots (group code 72):
-    if (groupCode==72) {
-        maxKnots = toInt(groupValue);
-        if (maxKnots>0) {
-            if (knots!=NULL) {
-                delete[] knots;
-            }
-            knots = new double[maxKnots];
-            for (int i=0; i<maxKnots; ++i) {
-                knots[i] = 0.0;
-            }
-        }
-        knotIndex=-1;
-        return true;
-    }
-
-    // Allocate Spline control points (group code 73):
-    else if (groupCode==73) {
-        maxControlPoints = toInt(groupValue);
-        if (maxControlPoints>0) {
-            if (controlPoints!=NULL) {
-                delete[] controlPoints;
-            }
-            controlPoints = new double[3*maxControlPoints];
-            for (int i=0; i<maxControlPoints; ++i) {
-                controlPoints[i*3] = 0.0;
-                controlPoints[i*3+1] = 0.0;
-                controlPoints[i*3+2] = 0.0;
-            }
-        }
-        controlPointIndex=-1;
-        return true;
-    }
-
-    // Compute spline knot vertices (group code 40):
-    else if (groupCode==40) {
-        if (knotIndex<maxKnots-1) {
-            knotIndex++;
-            knots[knotIndex] = toReal(groupValue);
-        }
-        return true;
-    }
-
-    // Compute spline control points (group codes 10/20/30):
-    else if (groupCode==10 || groupCode==20 ||
-             groupCode==30) {
-
-        if (controlPointIndex<maxControlPoints-1 && groupCode==10) {
-            controlPointIndex++;
-        }
-
-        if (controlPointIndex>=0 && controlPointIndex<maxControlPoints) {
-            controlPoints[3*controlPointIndex + (groupCode/10-1)]
-            = toReal(groupValue);
-        }
-        return true;
-    }
-    return false;
-}
-
-
-
-/**
- * Handles additional leader data.
- */
-bool DL_Dxf::handleLeaderData(DL_CreationInterface* /*creationInterface*/) {
-    // Allocate Leader vertices (group code 76):
-    if (groupCode==76) {
-        maxLeaderVertices = toInt(groupValue);
-        if (maxLeaderVertices>0) {
-            if (leaderVertices!=NULL) {
-                delete[] leaderVertices;
-            }
-            leaderVertices = new double[3*maxLeaderVertices];
-            for (int i=0; i<maxLeaderVertices; ++i) {
-                leaderVertices[i*3] = 0.0;
-                leaderVertices[i*3+1] = 0.0;
-                leaderVertices[i*3+2] = 0.0;
-            }
-        }
-        leaderVertexIndex=-1;
-        return true;
-    }
-
-    // Compute Leader vertices (group codes 10/20/30):
-    else if (groupCode==10 || groupCode==20 || groupCode==30) {
-
-        if (leaderVertexIndex<maxLeaderVertices-1 && groupCode==10) {
-            leaderVertexIndex++;
-        }
-
-        if (groupCode<=30) {
-            if (leaderVertexIndex>=0 &&
-                    leaderVertexIndex<maxLeaderVertices) {
-                leaderVertices[3*leaderVertexIndex + (groupCode/10-1)]
-                = toReal(groupValue);
-            }
-        }
-        return true;
-    }
-
-    return false;
-}
-
-
-
-/**
- * Handles additional hatch data.
- */
-bool DL_Dxf::handleHatchData(DL_CreationInterface* /*creationInterface*/) {
-
-    static int firstPolylineStatus = 0;
-
-    // Allocate hatch loops (group code 91):
-    if (groupCode==91 && toInt(groupValue)>0) {
-
-        if (hatchLoops!=NULL) {
-            delete[] hatchLoops;
-            hatchLoops = NULL;
-        }
-        if (maxHatchEdges!=NULL) {
-            delete[] maxHatchEdges;
-            maxHatchEdges = NULL;
-        }
-        if (hatchEdgeIndex!=NULL) {
-            delete[] hatchEdgeIndex;
-            hatchEdgeIndex = NULL;
-        }
-        if (hatchEdges!=NULL) {
-            for (int i=0; i<maxHatchLoops; ++i) {
-                delete[] hatchEdges[i];
-            }
-            delete[] hatchEdges;
-            hatchEdges = NULL;
-        }
-        maxHatchLoops = toInt(groupValue);
-
-        if (maxHatchLoops>0) {
-            hatchLoops = new DL_HatchLoopData[maxHatchLoops];
-            maxHatchEdges = new int[maxHatchLoops];
-            hatchEdgeIndex = new int[maxHatchLoops];
-            hatchEdges = new DL_HatchEdgeData*[maxHatchLoops];
-            for (int i=0; i<maxHatchLoops; ++i) {
-                hatchEdges[i] = NULL;
-                maxHatchEdges[i] = 0;
-            }
-            hatchLoopIndex = -1;
-            dropEdges = false;
-        }
-        return true;
-    }
-
-    // Allocate hatch edges, group code 93
-    if (groupCode==93 && toInt(groupValue)>0) {
-        if (hatchLoopIndex<maxHatchLoops-1 && hatchLoops!=NULL &&
-                maxHatchEdges!=NULL && hatchEdgeIndex!=NULL &&
-                hatchEdges!=NULL) {
-
-            dropEdges = false;
-
-            hatchLoopIndex++;
-            hatchLoops[hatchLoopIndex]
-            = DL_HatchLoopData(toInt(groupValue));
-
-            maxHatchEdges[hatchLoopIndex] = toInt(groupValue);
-            hatchEdgeIndex[hatchLoopIndex] = -1;
-            hatchEdges[hatchLoopIndex]
-                = new DL_HatchEdgeData[toInt(groupValue)];
-            firstPolylineStatus = 0;
-        } else {
-            dropEdges = true;
-        }
-        return true;
-    }
-
-    // Init hatch edge for non-polyline boundary (group code 72)
-    if (hatchEdges!=NULL &&
-            hatchEdgeIndex!=NULL &&
-            maxHatchEdges!=NULL &&
-            hatchLoopIndex>=0 &&
-            hatchLoopIndex<maxHatchLoops &&
-            hatchEdgeIndex[hatchLoopIndex] <
-            maxHatchEdges[hatchLoopIndex] &&
-            (atoi(values[92])&2)==0 &&   // not a polyline
-            groupCode==72 &&
-            !dropEdges) {
-
-        hatchEdgeIndex[hatchLoopIndex]++;
-
-        hatchEdges[hatchLoopIndex][hatchEdgeIndex[hatchLoopIndex]]
-        .type = toInt(groupValue);
-        hatchEdges[hatchLoopIndex][hatchEdgeIndex[hatchLoopIndex]]
-        .defined = false;
-
-        return true;
-    }
-
-    // Handle hatch edges for non-polyline boundaries
-    //   (group codes 10, 20, 11, 21, 40, 50, 51, 73)
-    if (!dropEdges &&
-            hatchEdges!=NULL &&
-            hatchEdgeIndex!=NULL &&
-            hatchLoopIndex>=0 &&
-            hatchLoopIndex<maxHatchLoops &&
-            hatchEdges[hatchLoopIndex]!=NULL &&
-            hatchEdgeIndex[hatchLoopIndex]>=0 &&
-            hatchEdgeIndex[hatchLoopIndex] <
-            maxHatchEdges[hatchLoopIndex] &&
-            ((atoi(values[92])&2)==0) &&        // not a polyline
-            (groupCode==10 || groupCode==20 ||
-             groupCode==11 || groupCode==21 ||
-             groupCode==40 || groupCode==50 ||
-             groupCode==51 || groupCode==73)) {
-
-        if (hatchEdges[hatchLoopIndex]
-                [hatchEdgeIndex[hatchLoopIndex]].defined==false) {
-            if (hatchEdges[hatchLoopIndex]
-                    [hatchEdgeIndex[hatchLoopIndex]].type==1) {
-                switch (groupCode) {
-                case 10:
-                    hatchEdges[hatchLoopIndex]
-                    [hatchEdgeIndex[hatchLoopIndex]].x1
-                    = toReal(groupValue);
-                    break;
-                case 20:
-                    hatchEdges[hatchLoopIndex]
-                    [hatchEdgeIndex[hatchLoopIndex]].y1
-                    = toReal(groupValue);
-                    break;
-                case 11:
-                    hatchEdges[hatchLoopIndex]
-                    [hatchEdgeIndex[hatchLoopIndex]].x2
-                    = toReal(groupValue);
-                    break;
-                case 21:
-                    hatchEdges[hatchLoopIndex]
-                    [hatchEdgeIndex[hatchLoopIndex]].y2
-                    = toReal(groupValue);
-                    hatchEdges[hatchLoopIndex]
-                    [hatchEdgeIndex[hatchLoopIndex]].defined = true;
-                    break;
-                default:
-                    break;
-                }
-            }
-
-            if (hatchEdges[hatchLoopIndex]
-                    [hatchEdgeIndex[hatchLoopIndex]].type==2) {
-                switch (groupCode) {
-                case 10:
-                    hatchEdges[hatchLoopIndex]
-                    [hatchEdgeIndex[hatchLoopIndex]].cx
-                    = toReal(groupValue);
-                    break;
-                case 20:
-                    hatchEdges[hatchLoopIndex]
-                    [hatchEdgeIndex[hatchLoopIndex]].cy
-                    = toReal(groupValue);
-                    break;
-                case 40:
-                    hatchEdges[hatchLoopIndex]
-                    [hatchEdgeIndex[hatchLoopIndex]].radius
-                    = toReal(groupValue);
-                    break;
-                case 50:
-                    hatchEdges[hatchLoopIndex]
-                    [hatchEdgeIndex[hatchLoopIndex]].angle1
-                    = toReal(groupValue)/360.0*2*M_PI;
-                    break;
-                case 51:
-                    hatchEdges[hatchLoopIndex]
-                    [hatchEdgeIndex[hatchLoopIndex]].angle2
-                    = toReal(groupValue)/360.0*2*M_PI;
-                    break;
-                case 73:
-                    hatchEdges[hatchLoopIndex]
-                    [hatchEdgeIndex[hatchLoopIndex]].ccw
-                    = (bool)toInt(groupValue);
-                    hatchEdges[hatchLoopIndex]
-                    [hatchEdgeIndex[hatchLoopIndex]].defined = true;
-                    break;
-                default:
-                    break;
-                }
-            }
-        }
-        return true;
-    }
-
-    /*
-    // 2003/12/31: polyline hatches can be extremely slow and are rarely used
-    //
-       // Handle hatch edges for polyline boundaries
-       //  (group codes 10, 20, 42)
-       if (!dropEdges &&
-               hatchEdges!=NULL &&
-               hatchEdgeIndex!=NULL &&
-               hatchLoopIndex>=0 &&
-               hatchLoopIndex<maxHatchLoops &&
-               hatchEdges[hatchLoopIndex]!=NULL &&
-               //hatchEdgeIndex[hatchLoopIndex]>=0 &&
-               hatchEdgeIndex[hatchLoopIndex] <
-               maxHatchEdges[hatchLoopIndex] &&
-               ((atoi(values[92])&2)==2)) {        // a polyline
-
-           if (groupCode==10 || groupCode==20 ||
-                   groupCode==42) {
-
-               std::cout << "  found polyline edge data: " << groupCode << "\n";
-               std::cout << "     value: " << toReal(groupValue) << "\n";
-
-               static double lastX = 0.0;
-               static double lastY = 0.0;
-               static double lastB = 0.0;
-
-               if (firstPolylineStatus<2) {
-                   switch (groupCode) {
-                   case 10:
-                       firstPolylineStatus++;
-                       if (firstPolylineStatus==1) {
-                           lastX = toReal(groupValue);
-                           std::cout << "     firstX: " << lastX << "\n";
-                       }
-                       break;
-
-                   case 20:
-                       lastY = toReal(groupValue);
-                       std::cout << "     firstY: " << lastY << "\n";
-                       break;
-
-                   case 42:
-                       lastB = toReal(groupValue);
-                       break;
-
-                   default:
-                       break;
-                   }
-
-                   if (firstPolylineStatus!=2) {
-                       return true;
-                   }
-               }
-
-
-               switch (groupCode) {
-               case 10:
-                   hatchEdgeIndex[hatchLoopIndex]++;
-                   hatchEdges[hatchLoopIndex]
-                   [hatchEdgeIndex[hatchLoopIndex]].type = 1;
-                   hatchEdges[hatchLoopIndex]
-                   [hatchEdgeIndex[hatchLoopIndex]].x1
-                   = lastX;
-                   hatchEdges[hatchLoopIndex]
-                   [hatchEdgeIndex[hatchLoopIndex]].x2
-                   = lastX = toReal(groupValue);
-                   std::cout << "     X: " << lastX << "\n";
-                   break;
-               case 20:
-                   hatchEdges[hatchLoopIndex]
-                   [hatchEdgeIndex[hatchLoopIndex]].y1
-                   = lastY;
-                   hatchEdges[hatchLoopIndex]
-                   [hatchEdgeIndex[hatchLoopIndex]].y2
-                   = lastY = toReal(groupValue);
-                   std::cout << "     Y: " << lastY << "\n";
-                   break;
-                   / *
-                               case 42: {
-                   	// convert to arc:
-                   	double x1 = hatchEdges[hatchLoopIndex]
-                   		[hatchEdgeIndex[hatchLoopIndex]].x1;
-                   	double y1 = hatchEdges[hatchLoopIndex]
-                   		[hatchEdgeIndex[hatchLoopIndex]].y1;
-                   	double x2 = hatchEdges[hatchLoopIndex]
-                   		[hatchEdgeIndex[hatchLoopIndex]].x2;
-                   	double y2 = hatchEdges[hatchLoopIndex]
-                   		[hatchEdgeIndex[hatchLoopIndex]].y2;
-
-                   	double bulge = toReal(groupValue);
-
-                   	bool reversed = (bulge<0.0);
-                   	double alpha = atan(bulge)*4.0;
-                   	double radius;
-                             double cx;
-                             double cy;
-                   	double a1;
-                   	double a2;
-                             double mx = (x2+x1)/2.0;
-                             double my = (y2+y1)/2.0;
-                   	double dist = sqrt(pow(x2-x1,2) + pow(y2-y1,2)) / 2.0;
-
-                   	// alpha can't be 0.0 at this point
-                             radius = fabs(dist / sin(alpha/2.0));
-
-                             double wu = fabs(pow(radius, 2.0) - pow(dist, 2.0));
-                             double h = sqrt(wu);
-                   	double angle = acos((x2-x1) / dist);
-
-                             if (bulge>0.0) {
-                       		        angle+=M_PI/2.0;
-                             } else {
-                                 angle-=M_PI/2.0;
-                             }
-
-                             if (fabs(alpha)>M_PI) {
-                                 h*=-1.0;
-                             }
-
-                   	cx = mx + cos(angle) * h;
-                   	cy = my + sin(angle) * h;
-
-                   	a1 = hatchEdges[hatchLoopIndex]
-                                   	[hatchEdgeIndex[hatchLoopIndex]].type = 2;
-                                   hatchEdges[hatchLoopIndex]
-                                   	[hatchEdgeIndex[hatchLoopIndex]].ccw = (toReal(groupValue)>0.0);
-                                   hatchEdges[hatchLoopIndex]
-                                   	[hatchEdgeIndex[hatchLoopIndex]].cx = cx;
-                                   hatchEdges[hatchLoopIndex]
-                                   	[hatchEdgeIndex[hatchLoopIndex]].cy = cy;
-                                   hatchEdges[hatchLoopIndex]
-                                   	[hatchEdgeIndex[hatchLoopIndex]].radius = radius;
-                                   } break;
-                   	* /
-
-               default:
-                   break;
-               }
-           } else {
-               // end polyline boundary
-               dropEdges = true;
-           }
-
-           return true;
-       }
-    */
-
-    return false;
-}
-
-
-
-
-/**
- * Adds an text entity that was read from the file via the creation interface.
- */
-void DL_Dxf::addText(DL_CreationInterface* creationInterface) {
-    DL_TextData d(
-        // insertion point
-        toReal(values[10], 0.0),
-        toReal(values[20], 0.0),
-        toReal(values[30], 0.0),
-        // alignment point
-        toReal(values[11], 0.0),
-        toReal(values[21], 0.0),
-        toReal(values[31], 0.0),
-        // height
-        toReal(values[40], 2.5),
-        // x scale
-        toReal(values[41], 1.0),
-        // generation flags
-        toInt(values[71], 0),
-        // h just
-        toInt(values[72], 0),
-        // v just
-        toInt(values[73], 0),
-        // text
-        values[1],
-        // style
-        values[7],
-        // angle
-        (toReal(values[50], 0.0)*2*M_PI)/360.0);
-
-    creationInterface->addText(d);
-}
-
-
-
-/**
- * Adds an attrib entity that was read from the file via the creation interface.
- * @todo add attrib instead of normal text
- */
-void DL_Dxf::addAttrib(DL_CreationInterface* creationInterface) {
-    DL_TextData d(
-        // insertion point
-        toReal(values[10], 0.0),
-        toReal(values[20], 0.0),
-        toReal(values[30], 0.0),
-        // alignment point
-        toReal(values[11], 0.0),
-        toReal(values[21], 0.0),
-        toReal(values[31], 0.0),
-        // height
-        toReal(values[40], 2.5),
-        // x scale
-        toReal(values[41], 1.0),
-        // generation flags
-        toInt(values[71], 0),
-        // h just
-        toInt(values[72], 0),
-        // v just
-        toInt(values[74], 0),
-        // text
-        values[1],
-        // style
-        values[7],
-        // angle
-        (toReal(values[50], 0.0)*2*M_PI)/360.0);
-
-    creationInterface->addText(d);
-}
-
-
-
-/**
- * @return dimension data from current values.
- */
-DL_DimensionData DL_Dxf::getDimData() {
-    // generic dimension data:
-    return DL_DimensionData(
-               // def point
-               toReal(values[10], 0.0),
-               toReal(values[20], 0.0),
-               toReal(values[30], 0.0),
-               // text middle point
-               toReal(values[11], 0.0),
-               toReal(values[21], 0.0),
-               toReal(values[31], 0.0),
-               // type
-               toInt(values[70], 0),
-               // attachment point
-               toInt(values[71], 5),
-               // line sp. style
-               toInt(values[72], 1),
-               // line sp. factor
-               toReal(values[41], 1.0),
-               // text
-               values[1],
-               // style
-               values[3],
-               // angle
-               toReal(values[53], 0.0));
-}
-
-
-
-/**
- * Adds a linear dimension entity that was read from the file via the creation interface.
- */
-void DL_Dxf::addDimLinear(DL_CreationInterface* creationInterface) {
-    DL_DimensionData d = getDimData();
-
-    // horizontal / vertical / rotated dimension:
-    DL_DimLinearData dl(
-        // definition point 1
-        toReal(values[13], 0.0),
-        toReal(values[23], 0.0),
-        toReal(values[33], 0.0),
-        // definition point 2
-        toReal(values[14], 0.0),
-        toReal(values[24], 0.0),
-        toReal(values[34], 0.0),
-        // angle
-        toReal(values[50], 0.0),
-        // oblique
-        toReal(values[52], 0.0));
-    creationInterface->addDimLinear(d, dl);
-}
-
-
-
-/**
- * Adds an aligned dimension entity that was read from the file via the creation interface.
- */
-void DL_Dxf::addDimAligned(DL_CreationInterface* creationInterface) {
-    DL_DimensionData d = getDimData();
-
-    // aligned dimension:
-    DL_DimAlignedData da(
-        // extension point 1
-        toReal(values[13], 0.0),
-        toReal(values[23], 0.0),
-        toReal(values[33], 0.0),
-        // extension point 2
-        toReal(values[14], 0.0),
-        toReal(values[24], 0.0),
-        toReal(values[34], 0.0));
-    creationInterface->addDimAlign(d, da);
-}
-
-
-
-/**
- * Adds a radial dimension entity that was read from the file via the creation interface.
- */
-void DL_Dxf::addDimRadial(DL_CreationInterface* creationInterface) {
-    DL_DimensionData d = getDimData();
-
-    DL_DimRadialData dr(
-        // definition point
-        toReal(values[15], 0.0),
-        toReal(values[25], 0.0),
-        toReal(values[35], 0.0),
-        // leader length:
-        toReal(values[40], 0.0));
-    creationInterface->addDimRadial(d, dr);
-}
-
-
-
-/**
- * Adds a diametric dimension entity that was read from the file via the creation interface.
- */
-void DL_Dxf::addDimDiametric(DL_CreationInterface* creationInterface) {
-    DL_DimensionData d = getDimData();
-
-    // diametric dimension:
-    DL_DimDiametricData dr(
-        // definition point
-        toReal(values[15], 0.0),
-        toReal(values[25], 0.0),
-        toReal(values[35], 0.0),
-        // leader length:
-        toReal(values[40], 0.0));
-    creationInterface->addDimDiametric(d, dr);
-}
-
-
-
-/**
- * Adds an angular dimension entity that was read from the file via the creation interface.
- */
-void DL_Dxf::addDimAngular(DL_CreationInterface* creationInterface) {
-    DL_DimensionData d = getDimData();
-
-    // angular dimension:
-    DL_DimAngularData da(
-        // definition point 1
-        toReal(values[13], 0.0),
-        toReal(values[23], 0.0),
-        toReal(values[33], 0.0),
-        // definition point 2
-        toReal(values[14], 0.0),
-        toReal(values[24], 0.0),
-        toReal(values[34], 0.0),
-        // definition point 3
-        toReal(values[15], 0.0),
-        toReal(values[25], 0.0),
-        toReal(values[35], 0.0),
-        // definition point 4
-        toReal(values[16], 0.0),
-        toReal(values[26], 0.0),
-        toReal(values[36], 0.0));
-    creationInterface->addDimAngular(d, da);
-}
-
-
-/**
- * Adds an angular dimension entity that was read from the file via the creation interface.
- */
-void DL_Dxf::addDimAngular3P(DL_CreationInterface* creationInterface) {
-    DL_DimensionData d = getDimData();
-
-    // angular dimension (3P):
-    DL_DimAngular3PData da(
-        // definition point 1
-        toReal(values[13], 0.0),
-        toReal(values[23], 0.0),
-        toReal(values[33], 0.0),
-        // definition point 2
-        toReal(values[14], 0.0),
-        toReal(values[24], 0.0),
-        toReal(values[34], 0.0),
-        // definition point 3
-        toReal(values[15], 0.0),
-        toReal(values[25], 0.0),
-        toReal(values[35], 0.0));
-    creationInterface->addDimAngular3P(d, da);
-}
-
-
-
-/**
- * Adds an ordinate dimension entity that was read from the file via the creation interface.
- */
-void DL_Dxf::addDimOrdinate(DL_CreationInterface* creationInterface) {
-    DL_DimensionData d = getDimData();
-
-    // ordinate dimension:
-    DL_DimOrdinateData dl(
-        // definition point 1
-        toReal(values[13], 0.0),
-        toReal(values[23], 0.0),
-        toReal(values[33], 0.0),
-        // definition point 2
-        toReal(values[14], 0.0),
-        toReal(values[24], 0.0),
-        toReal(values[34], 0.0),
-        (toInt(values[70])&64)==64         // true: X-type, false: Y-type
-    );
-    creationInterface->addDimOrdinate(d, dl);
-}
-
-
-
-/**
- * Adds a leader entity that was read from the file via the creation interface.
- */
-void DL_Dxf::addLeader(DL_CreationInterface* creationInterface) {
-    // leader (arrow)
-    DL_LeaderData le(
-        // arrow head flag
-        toInt(values[71], 1),
-        // leader path type
-        toInt(values[72], 0),
-        // Leader creation flag
-        toInt(values[73], 3),
-        // Hookline direction flag
-        toInt(values[74], 1),
-        // Hookline flag
-        toInt(values[75], 0),
-        // Text annotation height
-        toReal(values[40], 1.0),
-        // Text annotation width
-        toReal(values[41], 1.0),
-        // Number of vertices in leader
-        toInt(values[76], 0)
-    );
-    creationInterface->addLeader(le);
-
-    for (int i=0; i<maxLeaderVertices; i++) {
-        DL_LeaderVertexData d(leaderVertices[i*3],
-                              leaderVertices[i*3+1],
-                              leaderVertices[i*3+2]);
-
-        creationInterface->addLeaderVertex(d);
-    }
-}
-
-
-
-/**
- * Adds a hatch entity that was read from the file via the creation interface.
- */
-void DL_Dxf::addHatch(DL_CreationInterface* creationInterface) {
-    DL_HatchData hd(toInt(values[91], 1),
-                    toInt(values[70], 0),
-                    toReal(values[41], 1.0),
-                    toReal(values[52], 0.0),
-                    values[2]);
-    creationInterface->addHatch(hd);
-
-    for (int l=0; l<maxHatchLoops; l++) {
-        DL_HatchLoopData ld(maxHatchEdges[l]);
-        creationInterface->addHatchLoop(ld);
-        for (int b=0; b<maxHatchEdges[l]; b++) {
-            creationInterface->addHatchEdge(hatchEdges[l][b]);
-        }
-    }
-    creationInterface->endEntity();
-    currentEntity = DL_UNKNOWN;
-}
-
-
-
-/**
- * Adds an image entity that was read from the file via the creation interface.
- */
-void DL_Dxf::addImage(DL_CreationInterface* creationInterface) {
-    DL_ImageData id(// pass ref insead of name we don't have yet
-        values[340],
-        // ins point:
-        toReal(values[10], 0.0),
-        toReal(values[20], 0.0),
-        toReal(values[30], 0.0),
-        // u vector:
-        toReal(values[11], 1.0),
-        toReal(values[21], 0.0),
-        toReal(values[31], 0.0),
-        // v vector:
-        toReal(values[12], 0.0),
-        toReal(values[22], 1.0),
-        toReal(values[32], 0.0),
-        // image size (pixel):
-        toInt(values[13], 1),
-        toInt(values[23], 1),
-        // brightness, contrast, fade
-        toInt(values[281], 50),
-        toInt(values[282], 50),
-        toInt(values[283], 0));
-
-    creationInterface->addImage(id);
-    creationInterface->endEntity();
-    currentEntity = DL_UNKNOWN;
-}
-
-
-
-/**
- * Adds an image definition that was read from the file via the creation interface.
- */
-void DL_Dxf::addImageDef(DL_CreationInterface* creationInterface) {
-    DL_ImageDefData id(// handle
-        values[5],
-        values[1]);
-
-    creationInterface->linkImage(id);
-    creationInterface->endEntity();
-    currentEntity = DL_UNKNOWN;
-}
-
-
-
-/**
- * Ends some special entities like hatches or old style polylines.
- */
-void DL_Dxf::endEntity(DL_CreationInterface* creationInterface) {
-	creationInterface->endEntity();
-}
-
-
-/**
- * Ends a sequence and notifies the creation interface.
- */
-void DL_Dxf::endSequence(DL_CreationInterface* creationInterface) {
-    creationInterface->endSequence();
-}
-
-
-/**
- * Converts the given string into an int.
- * ok is set to false if there was an error.
- */
-int DL_Dxf::stringToInt(const char* s, bool* ok) {
-    if (ok!=NULL) {
-        // check string:
-        *ok = true;
-        int i=0;
-        bool dot = false;
-        do {
-            if (s[i]=='\0') {
-                break;
-            } else if (s[i]=='.') {
-                if (dot==true) {
-                    //std::cerr << "two dots\n";
-                    *ok = false;
-                } else {
-                    dot = true;
-                }
-            } else if (s[i]<'0' || s[i]>'9') {
-                //std::cerr << "NaN: '" << s[i] << "'\n";
-                *ok = false;
-            }
-            i++;
-        } while(s[i]!='\0' && *ok==true);
-    }
-
-    return atoi(s);
-}
-
-
-/**
- * @brief Opens the given file for writing and returns a pointer
- * to the dxf writer. This pointer needs to be passed on to other
- * writing functions.
- *
- * @param file Full path of the file to open.
- *
- * @return Pointer to an ascii dxf writer object.
- */
-DL_WriterA* DL_Dxf::out(const char* file, DL_Codes::version version) {
-    char* f = new char[strlen(file)+1];
-    strcpy(f, file);
-    this->version = version;
-
-    DL_WriterA* dw = new DL_WriterA(f, version);
-    if (dw->openFailed()) {
-        delete dw;
-        delete[] f;
-        return NULL;
-    } else {
-        delete[] f;
-        return dw;
-    }
-}
-
-
-
-/**
- * @brief Writes a DXF header to the file currently opened 
- * by the given DXF writer object.
- */
-void DL_Dxf::writeHeader(DL_WriterA& dw) {
-    dw.comment("dxflib " DL_VERSION);
-    dw.sectionHeader();
-
-    dw.dxfString(9, "$ACADVER");
-    switch (version) {
-    case DL_Codes::AC1009:
-        dw.dxfString(1, "AC1009");
-        break;
-    case DL_Codes::AC1012:
-        dw.dxfString(1, "AC1012");
-        break;
-    case DL_Codes::AC1014:
-        dw.dxfString(1, "AC1014");
-        break;
-    case DL_Codes::AC1015:
-        dw.dxfString(1, "AC1015");
-        break;
-    }
-
-    // Newer version require that (otherwise a*cad crashes..)
-    if (version==VER_2000) {
-        dw.dxfString(9, "$HANDSEED");
-        dw.dxfHex(5, 0xFFFF);
-    }
-
-    //dw.sectionEnd();
-}
-
-
-
-
-/**
- * Writes a point entity to the file.
- *
- * @param dw DXF writer
- * @param data Entity data from the file
- * @param attrib Attributes
- */
-void DL_Dxf::writePoint(DL_WriterA& dw,
-                        const DL_PointData& data,
-                        const DL_Attributes& attrib) {
-    dw.entity("POINT");
-    if (version==VER_2000) {
-        dw.dxfString(100, "AcDbEntity");
-        dw.dxfString(100, "AcDbPoint");
-    }
-    dw.entityAttributes(attrib);
-    dw.coord(POINT_COORD_CODE, data.x, data.y);
-}
-
-
-
-/**
- * Writes a line entity to the file.
- *
- * @param dw DXF writer
- * @param data Entity data from the file
- * @param attrib Attributes
- */
-void DL_Dxf::writeLine(DL_WriterA& dw,
-                       const DL_LineData& data,
-                       const DL_Attributes& attrib) {
-    dw.entity("LINE");
-    if (version==VER_2000) {
-        dw.dxfString(100, "AcDbEntity");
-        dw.dxfString(100, "AcDbLine");
-    }
-    dw.entityAttributes(attrib);
-    dw.coord(LINE_START_CODE, data.x1, data.y1);
-    dw.coord(LINE_END_CODE, data.x2, data.y2);
-}
-
-
-
-/**
- * Writes a polyline entity to the file.
- *
- * @param dw DXF writer
- * @param data Entity data from the file
- * @param attrib Attributes
- * @see writeVertex
- */
-void DL_Dxf::writePolyline(DL_WriterA& dw,
-                           const DL_PolylineData& data,
-                           const DL_Attributes& attrib) {
-    if (version==VER_2000) {
-        dw.entity("LWPOLYLINE");
-        dw.entityAttributes(attrib);
-        dw.dxfString(100, "AcDbEntity");
-        dw.dxfString(100, "AcDbPolyline");
-        dw.dxfInt(90, (int)data.number);
-        dw.dxfInt(70, data.flags);
-    } else {
-        dw.entity("POLYLINE");
-        dw.entityAttributes(attrib);
-		polylineLayer = attrib.getLayer();
-        dw.dxfInt(66, 1);
-        dw.dxfInt(70, data.flags);
-        dw.coord(VERTEX_COORD_CODE, 0.0, 0.0);
-    }
-}
-
-
-
-/**
- * Writes a single vertex of a polyline to the file.
- *
- * @param dw DXF writer
- * @param data Entity data from the file
- * @param attrib Attributes
- */
-void DL_Dxf::writeVertex(DL_WriterA& dw,
-                         const DL_VertexData& data) {
-
-
-    if (version==VER_2000) {
-        dw.dxfReal(10, data.x);
-        dw.dxfReal(20, data.y);
-        if (fabs(data.bulge)>1.0e-10) {
-            dw.dxfReal(42, data.bulge);
-        }
-    } else {
-        dw.entity("VERTEX");
-        //dw.entityAttributes(attrib);
-    	dw.dxfString(8, polylineLayer);
-        dw.coord(VERTEX_COORD_CODE, data.x, data.y);
-        if (fabs(data.bulge)>1.0e-10) {
-            dw.dxfReal(42, data.bulge);
-        }
-    }
-}
-
-    
-	
-/**
- * Writes the polyline end. Only needed for DXF R12.
- */
-void DL_Dxf::writePolylineEnd(DL_WriterA& dw) {
-    if (version==VER_2000) {
-    } else {
-        dw.entity("SEQEND");
-    }
-}
-
-
-/**
- * Writes a spline entity to the file.
- *
- * @param dw DXF writer
- * @param data Entity data from the file
- * @param attrib Attributes
- * @see writeControlPoint
- */
-void DL_Dxf::writeSpline(DL_WriterA& dw,
-                         const DL_SplineData& data,
-                         const DL_Attributes& attrib) {
-
-    dw.entity("SPLINE");
-    dw.entityAttributes(attrib);
-    if (version==VER_2000) {
-        dw.dxfString(100, "AcDbEntity");
-        dw.dxfString(100, "AcDbSpline");
-    }
-    dw.dxfInt(70, data.flags);
-    dw.dxfInt(71, data.degree);
-    dw.dxfInt(72, data.nKnots);            // number of knots
-    dw.dxfInt(73, data.nControl);          // number of control points
-    dw.dxfInt(74, 0);                      // number of fit points
-}
-
-
-
-/**
- * Writes a single control point of a spline to the file.
- *
- * @param dw DXF writer
- * @param data Entity data from the file
- * @param attrib Attributes
- */
-void DL_Dxf::writeControlPoint(DL_WriterA& dw,
-                               const DL_ControlPointData& data) {
-
-    dw.dxfReal(10, data.x);
-    dw.dxfReal(20, data.y);
-    dw.dxfReal(30, data.z);
-}
-
-
-
-/**
- * Writes a single knot of a spline to the file.
- *
- * @param dw DXF writer
- * @param data Entity data from the file
- * @param attrib Attributes
- */
-void DL_Dxf::writeKnot(DL_WriterA& dw,
-                       const DL_KnotData& data) {
-
-    dw.dxfReal(40, data.k);
-}
-
-
-
-/**
- * Writes a circle entity to the file.
- *
- * @param dw DXF writer
- * @param data Entity data from the file
- * @param attrib Attributes
- */
-void DL_Dxf::writeCircle(DL_WriterA& dw,
-                         const DL_CircleData& data,
-                         const DL_Attributes& attrib) {
-    dw.entity("CIRCLE");
-    if (version==VER_2000) {
-        dw.dxfString(100, "AcDbEntity");
-        dw.dxfString(100, "AcDbCircle");
-    }
-    dw.entityAttributes(attrib);
-    dw.coord(10, data.cx, data.cy);
-    dw.dxfReal(40, data.radius);
-}
-
-
-
-/**
- * Writes an arc entity to the file.
- *
- * @param dw DXF writer
- * @param data Entity data from the file
- * @param attrib Attributes
- */
-void DL_Dxf::writeArc(DL_WriterA& dw,
-                      const DL_ArcData& data,
-                      const DL_Attributes& attrib) {
-    dw.entity("ARC");
-    if (version==VER_2000) {
-        dw.dxfString(100, "AcDbEntity");
-    }
-    dw.entityAttributes(attrib);
-    if (version==VER_2000) {
-        dw.dxfString(100, "AcDbCircle");
-    }
-    dw.coord(10, data.cx, data.cy);
-    dw.dxfReal(40, data.radius);
-    if (version==VER_2000) {
-        dw.dxfString(100, "AcDbArc");
-    }
-    dw.dxfReal(50, data.angle1);
-    dw.dxfReal(51, data.angle2);
-}
-
-
-
-/**
- * Writes an ellipse entity to the file.
- *
- * @param dw DXF writer
- * @param data Entity data from the file
- * @param attrib Attributes
- */
-void DL_Dxf::writeEllipse(DL_WriterA& dw,
-                          const DL_EllipseData& data,
-                          const DL_Attributes& attrib) {
-
-    if (version>VER_R12) {
-        dw.entity("ELLIPSE");
-        if (version==VER_2000) {
-            dw.dxfString(100, "AcDbEntity");
-            dw.dxfString(100, "AcDbEllipse");
-        }
-        dw.entityAttributes(attrib);
-        dw.coord(10, data.cx, data.cy);
-        dw.coord(11, data.mx, data.my);
-        dw.dxfReal(40, data.ratio);
-        dw.dxfReal(41, data.angle1);
-        dw.dxfReal(42, data.angle2);
-    }
-}
-    
-    
-
-/**
- * Writes a solid entity to the file.
- *
- * @param dw DXF writer
- * @param data Entity data from the file
- * @param attrib Attributes
- */
-void DL_Dxf::writeSolid(DL_WriterA& dw,
-                   const DL_SolidData& data,
-                   const DL_Attributes& attrib) {
-    dw.entity("SOLID");
-    if (version==VER_2000) {
-        dw.dxfString(100, "AcDbEntity");
-        dw.dxfString(100, "AcDbTrace");
-    }
-    dw.entityAttributes(attrib);
-    dw.coord(10, data.x[0], data.y[0], data.z[0]);
-    dw.coord(11, data.x[1], data.y[1], data.z[1]);
-    dw.coord(12, data.x[2], data.y[2], data.z[2]);
-    dw.coord(13, data.x[3], data.y[3], data.z[3]);
-    dw.dxfReal(39, data.thickness);
-}
-
-
-
-/**
- * Writes a 3d face entity to the file.
- *
- * @param dw DXF writer
- * @param data Entity data from the file
- * @param attrib Attributes
- */
-void DL_Dxf::write3dFace(DL_WriterA& dw,
-                   const DL_3dFaceData& data,
-                   const DL_Attributes& attrib) {
-    dw.entity("3DFACE");
-    if (version==VER_2000) {
-        dw.dxfString(100, "AcDbEntity");
-        dw.dxfString(100, "AcDbFace");
-    }
-    dw.entityAttributes(attrib);
-    dw.coord(10, data.x[0], data.y[0], data.z[0]);
-    dw.coord(11, data.x[1], data.y[1], data.z[1]);
-    dw.coord(12, data.x[2], data.y[2], data.z[2]);
-    dw.coord(13, data.x[3], data.y[3], data.z[3]);
-}
-
-
-
-/**
- * Writes an insert to the file.
- *
- * @param dw DXF writer
- * @param data Entity data from the file
- * @param attrib Attributes
- */
-void DL_Dxf::writeInsert(DL_WriterA& dw,
-                         const DL_InsertData& data,
-                         const DL_Attributes& attrib) {
-
-    if (data.name.empty()) {
-        std::cerr << "DL_Dxf::writeInsert: "
-        << "Block name must not be empty\n";
-        return;
-    }
-
-    dw.entity("INSERT");
-    if (version==VER_2000) {
-        dw.dxfString(100, "AcDbEntity");
-        dw.dxfString(100, "AcDbBlockReference");
-    }
-    dw.entityAttributes(attrib);
-    dw.dxfString(2, data.name);
-    dw.dxfReal(10, data.ipx);
-    dw.dxfReal(20, data.ipy);
-    dw.dxfReal(30, 0.0);
-    if (data.sx!=1.0 || data.sy!=1.0) {
-        dw.dxfReal(41, data.sx);
-        dw.dxfReal(42, data.sy);
-        dw.dxfReal(43, 1.0);
-    }
-    if (data.angle!=0.0) {
-        dw.dxfReal(50, data.angle);
-    }
-    if (data.cols!=1 || data.rows!=1) {
-        dw.dxfInt(70, data.cols);
-        dw.dxfInt(71, data.rows);
-    }
-    if (data.colSp!=0.0 || data.rowSp!=0.0) {
-        dw.dxfReal(44, data.colSp);
-        dw.dxfReal(45, data.rowSp);
-    }
-
-}
-
-
-
-/**
- * Writes a multi text entity to the file.
- *
- * @param dw DXF writer
- * @param data Entity data from the file
- * @param attrib Attributes
- */
-void DL_Dxf::writeMText(DL_WriterA& dw,
-                        const DL_MTextData& data,
-                        const DL_Attributes& attrib) {
-
-    dw.entity("MTEXT");
-    if (version==VER_2000) {
-        dw.dxfString(100, "AcDbEntity");
-        dw.dxfString(100, "AcDbMText");
-    }
-    dw.entityAttributes(attrib);
-    dw.dxfReal(10, data.ipx);
-    dw.dxfReal(20, data.ipy);
-    dw.dxfReal(30, 0.0);
-    dw.dxfReal(40, data.height);
-    dw.dxfReal(41, data.width);
-
-    dw.dxfInt(71, data.attachmentPoint);
-    dw.dxfInt(72, data.drawingDirection);
-
-    // Creare text chunks of 250 characters each:
-    int length = data.text.length();
-    char chunk[251];
-    int i;
-    for (i=250; i<length; i+=250) {
-        strncpy(chunk, &data.text.c_str()[i-250], 250);
-        chunk[250]='\0';
-        dw.dxfString(3, chunk);
-    }
-    strncpy(chunk, &data.text.c_str()[i-250], 250);
-    chunk[250]='\0';
-    dw.dxfString(1, chunk);
-
-    dw.dxfString(7, data.style);
-
-    // since dxflib 2.0.2.1: degrees not rad (error in autodesk dxf doc)
-    dw.dxfReal(50, data.angle/(2.0*M_PI)*360.0);
-
-    dw.dxfInt(73, data.lineSpacingStyle);
-    dw.dxfReal(44, data.lineSpacingFactor);
-}
-
-
-
-/**
- * Writes a text entity to the file.
- *
- * @param dw DXF writer
- * @param data Entity data from the file
- * @param attrib Attributes
- */
-void DL_Dxf::writeText(DL_WriterA& dw,
-                       const DL_TextData& data,
-                       const DL_Attributes& attrib) {
-
-    dw.entity("TEXT");
-    if (version==VER_2000) {
-        dw.dxfString(100, "AcDbEntity");
-        dw.dxfString(100, "AcDbText");
-    }
-    dw.entityAttributes(attrib);
-    dw.dxfReal(10, data.ipx);
-    dw.dxfReal(20, data.ipy);
-    dw.dxfReal(30, 0.0);
-    dw.dxfReal(40, data.height);
-    dw.dxfString(1, data.text);
-    dw.dxfReal(50, data.angle/(2*M_PI)*360.0);
-    dw.dxfReal(41, data.xScaleFactor);
-    dw.dxfString(7, data.style);
-
-    dw.dxfInt(71, data.textGenerationFlags);
-    dw.dxfInt(72, data.hJustification);
-
-    dw.dxfReal(11, data.apx);
-    dw.dxfReal(21, data.apy);
-    dw.dxfReal(31, 0.0);
-
-    dw.dxfInt(73, data.vJustification);
-}
-
-
-/**
- * Writes an aligned dimension entity to the file.
- *
- * @param dw DXF writer
- * @param data Generic dimension data for from the file
- * @param data Specific aligned dimension data from the file
- * @param attrib Attributes
- */
-void DL_Dxf::writeDimAligned(DL_WriterA& dw,
-                             const DL_DimensionData& data,
-                             const DL_DimAlignedData& edata,
-                             const DL_Attributes& attrib) {
-
-    dw.entity("DIMENSION");
-
-    if (version==VER_2000) {
-        dw.dxfString(100, "AcDbEntity");
-    }
-    dw.entityAttributes(attrib);
-    if (version==VER_2000) {
-        dw.dxfString(100, "AcDbDimension");
-    }
-
-    dw.dxfReal(10, data.dpx);
-    dw.dxfReal(20, data.dpy);
-    dw.dxfReal(30, 0.0);
-
-    dw.dxfReal(11, data.mpx);
-    dw.dxfReal(21, data.mpy);
-    dw.dxfReal(31, 0.0);
-
-    dw.dxfInt(70, 1);
-    if (version>VER_R12) {
-        dw.dxfInt(71, data.attachmentPoint);
-        dw.dxfInt(72, data.lineSpacingStyle); // opt
-        dw.dxfReal(41, data.lineSpacingFactor); // opt
-    }
-
-    dw.dxfReal(42, data.angle);
-
-    dw.dxfString(1, data.text);   // opt
-    //dw.dxfString(3, data.style);
-    dw.dxfString(3, "Standard");
-
-    if (version==VER_2000) {
-        dw.dxfString(100, "AcDbAlignedDimension");
-    }
-
-    dw.dxfReal(13, edata.epx1);
-    dw.dxfReal(23, edata.epy1);
-    dw.dxfReal(33, 0.0);
-
-    dw.dxfReal(14, edata.epx2);
-    dw.dxfReal(24, edata.epy2);
-    dw.dxfReal(34, 0.0);
-}
-
-
-
-/**
- * Writes a linear dimension entity to the file.
- *
- * @param dw DXF writer
- * @param data Generic dimension data for from the file
- * @param data Specific linear dimension data from the file
- * @param attrib Attributes
- */
-void DL_Dxf::writeDimLinear(DL_WriterA& dw,
-                            const DL_DimensionData& data,
-                            const DL_DimLinearData& edata,
-                            const DL_Attributes& attrib) {
-
-    dw.entity("DIMENSION");
-
-    if (version==VER_2000) {
-        dw.dxfString(100, "AcDbEntity");
-    }
-    dw.entityAttributes(attrib);
-    if (version==VER_2000) {
-        dw.dxfString(100, "AcDbDimension");
-    }
-
-    dw.dxfReal(10, data.dpx);
-    dw.dxfReal(20, data.dpy);
-    dw.dxfReal(30, 0.0);
-
-    dw.dxfReal(11, data.mpx);
-    dw.dxfReal(21, data.mpy);
-    dw.dxfReal(31, 0.0);
-
-    dw.dxfInt(70, 0);
-    if (version>VER_R12) {
-        dw.dxfInt(71, data.attachmentPoint);
-        dw.dxfInt(72, data.lineSpacingStyle); // opt
-        dw.dxfReal(41, data.lineSpacingFactor); // opt
-    }
-
-    dw.dxfReal(42, data.angle);
-
-    dw.dxfString(1, data.text);   // opt
-    //dw.dxfString(3, data.style);
-    dw.dxfString(3, "Standard");
-
-    if (version==VER_2000) {
-        dw.dxfString(100, "AcDbAlignedDimension");
-    }
-
-    dw.dxfReal(13, edata.dpx1);
-    dw.dxfReal(23, edata.dpy1);
-    dw.dxfReal(33, 0.0);
-
-    dw.dxfReal(14, edata.dpx2);
-    dw.dxfReal(24, edata.dpy2);
-    dw.dxfReal(34, 0.0);
-
-    dw.dxfReal(50, edata.angle/(2.0*M_PI)*360.0);
-
-    if (version==VER_2000) {
-        dw.dxfString(100, "AcDbRotatedDimension");
-        /*
-        dw.dxfString(1001, "ACAD");
-        dw.dxfString(1000, "DSTYLE");
-        dw.dxfString(1002, "{");
-        dw.dxfInt(1070, 340);
-        dw.dxfInt(1005, 11);
-        dw.dxfString(1002, "}");
-        */
-    }
-}
-
-
-
-/**
- * Writes a radial dimension entity to the file.
- *
- * @param dw DXF writer
- * @param data Generic dimension data for from the file
- * @param data Specific radial dimension data from the file
- * @param attrib Attributes
- */
-void DL_Dxf::writeDimRadial(DL_WriterA& dw,
-                            const DL_DimensionData& data,
-                            const DL_DimRadialData& edata,
-                            const DL_Attributes& attrib) {
-
-    dw.entity("DIMENSION");
-
-    if (version==VER_2000) {
-        dw.dxfString(100, "AcDbEntity");
-    }
-    dw.entityAttributes(attrib);
-    if (version==VER_2000) {
-        dw.dxfString(100, "AcDbDimension");
-    }
-
-    dw.dxfReal(10, data.dpx);
-    dw.dxfReal(20, data.dpy);
-    dw.dxfReal(30, 0.0);
-
-    dw.dxfReal(11, data.mpx);
-    dw.dxfReal(21, data.mpy);
-    dw.dxfReal(31, 0.0);
-
-    dw.dxfInt(70, 4);
-    if (version>VER_R12) {
-        dw.dxfInt(71, data.attachmentPoint);
-        dw.dxfInt(72, data.lineSpacingStyle); // opt
-        dw.dxfReal(41, data.lineSpacingFactor); // opt
-    }
-
-    dw.dxfReal(42, data.angle);
-
-    dw.dxfString(1, data.text);   // opt
-    //dw.dxfString(3, data.style);
-    dw.dxfString(3, "Standard");
-
-    if (version==VER_2000) {
-        dw.dxfString(100, "AcDbRadialDimension");
-    }
-
-    dw.dxfReal(15, edata.dpx);
-    dw.dxfReal(25, edata.dpy);
-    dw.dxfReal(35, 0.0);
-
-    dw.dxfReal(40, edata.leader);
-}
-
-
-
-/**
- * Writes a diametric dimension entity to the file.
- *
- * @param dw DXF writer
- * @param data Generic dimension data for from the file
- * @param data Specific diametric dimension data from the file
- * @param attrib Attributes
- */
-void DL_Dxf::writeDimDiametric(DL_WriterA& dw,
-                               const DL_DimensionData& data,
-                               const DL_DimDiametricData& edata,
-                               const DL_Attributes& attrib) {
-
-    dw.entity("DIMENSION");
-
-    if (version==VER_2000) {
-        dw.dxfString(100, "AcDbEntity");
-    }
-    dw.entityAttributes(attrib);
-    if (version==VER_2000) {
-        dw.dxfString(100, "AcDbDimension");
-    }
-
-    dw.dxfReal(10, data.dpx);
-    dw.dxfReal(20, data.dpy);
-    dw.dxfReal(30, 0.0);
-
-    dw.dxfReal(11, data.mpx);
-    dw.dxfReal(21, data.mpy);
-    dw.dxfReal(31, 0.0);
-
-    dw.dxfInt(70, 3);
-    if (version>VER_R12) {
-        dw.dxfInt(71, data.attachmentPoint);
-        dw.dxfInt(72, data.lineSpacingStyle); // opt
-        dw.dxfReal(41, data.lineSpacingFactor); // opt
-    }
-
-    dw.dxfReal(42, data.angle);
-
-    dw.dxfString(1, data.text);   // opt
-    //dw.dxfString(3, data.style);
-    dw.dxfString(3, "Standard");
-
-    if (version==VER_2000) {
-        dw.dxfString(100, "AcDbDiametricDimension");
-    }
-
-    dw.dxfReal(15, edata.dpx);
-    dw.dxfReal(25, edata.dpy);
-    dw.dxfReal(35, 0.0);
-
-    dw.dxfReal(40, edata.leader);
-}
-
-
-
-/**
- * Writes an angular dimension entity to the file.
- *
- * @param dw DXF writer
- * @param data Generic dimension data for from the file
- * @param data Specific angular dimension data from the file
- * @param attrib Attributes
- */
-void DL_Dxf::writeDimAngular(DL_WriterA& dw,
-                             const DL_DimensionData& data,
-                             const DL_DimAngularData& edata,
-                             const DL_Attributes& attrib) {
-
-    dw.entity("DIMENSION");
-
-    if (version==VER_2000) {
-        dw.dxfString(100, "AcDbEntity");
-    }
-    dw.entityAttributes(attrib);
-    if (version==VER_2000) {
-        dw.dxfString(100, "AcDbDimension");
-    }
-
-    dw.dxfReal(10, data.dpx);
-    dw.dxfReal(20, data.dpy);
-    dw.dxfReal(30, 0.0);
-
-    dw.dxfReal(11, data.mpx);
-    dw.dxfReal(21, data.mpy);
-    dw.dxfReal(31, 0.0);
-
-    dw.dxfInt(70, 2);
-    if (version>VER_R12) {
-        dw.dxfInt(71, data.attachmentPoint);
-        dw.dxfInt(72, data.lineSpacingStyle); // opt
-        dw.dxfReal(41, data.lineSpacingFactor); // opt
-    }
-
-    dw.dxfReal(42, data.angle);
-
-    dw.dxfString(1, data.text);   // opt
-    //dw.dxfString(3, data.style);
-    dw.dxfString(3, "Standard");
-
-    if (version==VER_2000) {
-        dw.dxfString(100, "AcDb2LineAngularDimension");
-    }
-
-    dw.dxfReal(13, edata.dpx1);
-    dw.dxfReal(23, edata.dpy1);
-    dw.dxfReal(33, 0.0);
-
-    dw.dxfReal(14, edata.dpx2);
-    dw.dxfReal(24, edata.dpy2);
-    dw.dxfReal(34, 0.0);
-
-    dw.dxfReal(15, edata.dpx3);
-    dw.dxfReal(25, edata.dpy3);
-    dw.dxfReal(35, 0.0);
-
-    dw.dxfReal(16, edata.dpx4);
-    dw.dxfReal(26, edata.dpy4);
-    dw.dxfReal(36, 0.0);
-}
-
-
-
-/**
- * Writes an angular dimension entity (3 points version) to the file.
- *
- * @param dw DXF writer
- * @param data Generic dimension data for from the file
- * @param data Specific angular dimension data from the file
- * @param attrib Attributes
- */
-void DL_Dxf::writeDimAngular3P(DL_WriterA& dw,
-                               const DL_DimensionData& data,
-                               const DL_DimAngular3PData& edata,
-                               const DL_Attributes& attrib) {
-
-    dw.entity("DIMENSION");
-
-    if (version==VER_2000) {
-        dw.dxfString(100, "AcDbEntity");
-    }
-    dw.entityAttributes(attrib);
-    if (version==VER_2000) {
-        dw.dxfString(100, "AcDbDimension");
-    }
-
-    dw.dxfReal(10, data.dpx);
-    dw.dxfReal(20, data.dpy);
-    dw.dxfReal(30, 0.0);
-
-    dw.dxfReal(11, data.mpx);
-    dw.dxfReal(21, data.mpy);
-    dw.dxfReal(31, 0.0);
-
-    dw.dxfInt(70, 5);
-    if (version>VER_R12) {
-        dw.dxfInt(71, data.attachmentPoint);
-        dw.dxfInt(72, data.lineSpacingStyle); // opt
-        dw.dxfReal(41, data.lineSpacingFactor); // opt
-    }
-
-    dw.dxfReal(42, data.angle);
-
-    dw.dxfString(1, data.text);   // opt
-    //dw.dxfString(3, data.style);
-    dw.dxfString(3, "Standard");
-
-    if (version==VER_2000) {
-        dw.dxfString(100, "AcDb3PointAngularDimension");
-    }
-
-    dw.dxfReal(13, edata.dpx1);
-    dw.dxfReal(23, edata.dpy1);
-    dw.dxfReal(33, 0.0);
-
-    dw.dxfReal(14, edata.dpx2);
-    dw.dxfReal(24, edata.dpy2);
-    dw.dxfReal(34, 0.0);
-
-    dw.dxfReal(15, edata.dpx3);
-    dw.dxfReal(25, edata.dpy3);
-    dw.dxfReal(35, 0.0);
-}
-
-
-
-
-/**
- * Writes an ordinate dimension entity to the file.
- *
- * @param dw DXF writer
- * @param data Generic dimension data for from the file
- * @param data Specific ordinate dimension data from the file
- * @param attrib Attributes
- */
-void DL_Dxf::writeDimOrdinate(DL_WriterA& dw,
-                             const DL_DimensionData& data,
-                             const DL_DimOrdinateData& edata,
-                             const DL_Attributes& attrib) {
-
-    dw.entity("DIMENSION");
-
-    if (version==VER_2000) {
-        dw.dxfString(100, "AcDbEntity");
-    }
-    dw.entityAttributes(attrib);
-    if (version==VER_2000) {
-        dw.dxfString(100, "AcDbDimension");
-    }
-
-    dw.dxfReal(10, data.dpx);
-    dw.dxfReal(20, data.dpy);
-    dw.dxfReal(30, 0.0);
-
-    dw.dxfReal(11, data.mpx);
-    dw.dxfReal(21, data.mpy);
-    dw.dxfReal(31, 0.0);
-
-    int type = 6;
-    if (edata.xtype) {
-        type+=64;
-    }
-
-    dw.dxfInt(70, type);
-    if (version>VER_R12) {
-        dw.dxfInt(71, data.attachmentPoint);
-        dw.dxfInt(72, data.lineSpacingStyle); // opt
-        dw.dxfReal(41, data.lineSpacingFactor); // opt
-    }
-
-    dw.dxfString(1, data.text);   // opt
-    //dw.dxfString(3, data.style);
-    dw.dxfString(3, "Standard");
-
-    if (version==VER_2000) {
-        dw.dxfString(100, "AcDbOrdinateDimension");
-    }
-
-    dw.dxfReal(13, edata.dpx1);
-    dw.dxfReal(23, edata.dpy1);
-    dw.dxfReal(33, 0.0);
-
-    dw.dxfReal(14, edata.dpx2);
-    dw.dxfReal(24, edata.dpy2);
-    dw.dxfReal(34, 0.0);
-}
-
-
-
-/**
- * Writes a leader entity to the file.
- *
- * @param dw DXF writer
- * @param data Entity data from the file
- * @param attrib Attributes
- * @see writeVertex
- */
-void DL_Dxf::writeLeader(DL_WriterA& dw,
-                         const DL_LeaderData& data,
-                         const DL_Attributes& attrib) {
-    if (version>VER_R12) {
-        dw.entity("LEADER");
-        dw.entityAttributes(attrib);
-        if (version==VER_2000) {
-            dw.dxfString(100, "AcDbEntity");
-            dw.dxfString(100, "AcDbLeader");
-        }
-        dw.dxfString(3, "Standard");
-        dw.dxfInt(71, data.arrowHeadFlag);
-        dw.dxfInt(72, data.leaderPathType);
-        dw.dxfInt(73, data.leaderCreationFlag);
-        dw.dxfInt(74, data.hooklineDirectionFlag);
-        dw.dxfInt(75, data.hooklineFlag);
-        dw.dxfReal(40, data.textAnnotationHeight);
-        dw.dxfReal(41, data.textAnnotationWidth);
-        dw.dxfInt(76, data.number);
-    }
-}
-
-
-
-/**
- * Writes a single vertex of a leader to the file.
- *
- * @param dw DXF writer
- * @param data Entity data
- */
-void DL_Dxf::writeLeaderVertex(DL_WriterA& dw,
-                               const DL_LeaderVertexData& data) {
-    if (version>VER_R12) {
-        dw.dxfReal(10, data.x);
-        dw.dxfReal(20, data.y);
-    }
-}
-
-
-
-/**
- * Writes the beginning of a hatch entity to the file.
- * This must be followed by one or more writeHatchLoop()
- * calls and a writeHatch2() call.
- *
- * @param dw DXF writer
- * @param data Entity data.
- * @param attrib Attributes
- */
-void DL_Dxf::writeHatch1(DL_WriterA& dw,
-                         const DL_HatchData& data,
-                         const DL_Attributes& attrib) {
-
-    dw.entity("HATCH");
-    dw.entityAttributes(attrib);
-    if (version==VER_2000) {
-        dw.dxfString(100, "AcDbEntity");
-        dw.dxfString(100, "AcDbHatch");
-    }
-    dw.dxfReal(10, 0.0);             // elevation
-    dw.dxfReal(20, 0.0);
-    dw.dxfReal(30, 0.0);
-    dw.dxfReal(210, 0.0);             // extrusion dir.
-    dw.dxfReal(220, 0.0);
-    dw.dxfReal(230, 1.0);
-    if (data.solid==false) {
-        dw.dxfString(2, data.pattern);
-    } else {
-        dw.dxfString(2, "SOLID");
-    }
-    dw.dxfInt(70, (int)data.solid);
-    dw.dxfInt(71, 0);                // associative
-    dw.dxfInt(91, data.numLoops);
-}
-
-
-
-/**
- * Writes the end of a hatch entity to the file.
- *
- * @param dw DXF writer
- * @param data Entity data.
- * @param attrib Attributes
- */
-void DL_Dxf::writeHatch2(DL_WriterA& dw,
-                         const DL_HatchData& data,
-                         const DL_Attributes& /*attrib*/) {
-
-    dw.dxfInt(75, 0);                // odd parity
-    dw.dxfInt(76, 1);                // pattern type
-    if (data.solid==false) {
-        dw.dxfReal(52, data.angle);
-        dw.dxfReal(41, data.scale);
-        dw.dxfInt(77, 0);            // not double
-        //dw.dxfInt(78, 0);
-        dw.dxfInt(78, 1);
-        dw.dxfReal(53, 45.0);
-        dw.dxfReal(43, 0.0);
-        dw.dxfReal(44, 0.0);
-        dw.dxfReal(45, -0.0883883476483184);
-        dw.dxfReal(46, 0.0883883476483185);
-        dw.dxfInt(79, 0);
-    }
-    dw.dxfInt(98, 0);
-}
-
-
-
-/**
- * Writes the beginning of a hatch loop to the file. This
- * must happen after writing the beginning of a hatch entity.
- *
- * @param dw DXF writer
- * @param data Entity data.
- * @param attrib Attributes
- */
-void DL_Dxf::writeHatchLoop1(DL_WriterA& dw,
-                             const DL_HatchLoopData& data) {
-
-    dw.dxfInt(92, 1);
-    dw.dxfInt(93, data.numEdges);
-    //dw.dxfInt(97, 0);
-}
-
-
-
-/**
- * Writes the end of a hatch loop to the file.
- *
- * @param dw DXF writer
- * @param data Entity data.
- * @param attrib Attributes
- */
-void DL_Dxf::writeHatchLoop2(DL_WriterA& dw,
-                             const DL_HatchLoopData& /*data*/) {
-
-    dw.dxfInt(97, 0);
-}
-
-
-/**
- * Writes the beginning of a hatch entity to the file.
- *
- * @param dw DXF writer
- * @param data Entity data.
- * @param attrib Attributes
- */
-void DL_Dxf::writeHatchEdge(DL_WriterA& dw,
-                            const DL_HatchEdgeData& data) {
-
-    dw.dxfInt(72, data.type);
-
-    switch (data.type) {
-    case 1:
-        dw.dxfReal(10, data.x1);
-        dw.dxfReal(20, data.y1);
-        dw.dxfReal(11, data.x2);
-        dw.dxfReal(21, data.y2);
-        break;
-    case 2:
-        dw.dxfReal(10, data.cx);
-        dw.dxfReal(20, data.cy);
-        dw.dxfReal(40, data.radius);
-        dw.dxfReal(50, data.angle1/(2*M_PI)*360.0);
-        dw.dxfReal(51, data.angle2/(2*M_PI)*360.0);
-        dw.dxfInt(73, (int)(data.ccw));
-        break;
-    default:
-        break;
-    }
-}
-
-
-
-/**
- * Writes an image entity.
- *
- * @return IMAGEDEF handle. Needed for the IMAGEDEF counterpart.
- */
-int DL_Dxf::writeImage(DL_WriterA& dw,
-                       const DL_ImageData& data,
-                       const DL_Attributes& attrib) {
-
-    /*if (data.file.empty()) {
-        std::cerr << "DL_Dxf::writeImage: "
-        << "Image file must not be empty\n";
-        return;
-}*/
-
-    dw.entity("IMAGE");
-
-    dw.entityAttributes(attrib);
-    if (version==VER_2000) {
-        dw.dxfString(100, "AcDbEntity");
-        dw.dxfString(100, "AcDbRasterImage");
-        dw.dxfInt(90, 0);
-    }
-    // insertion point
-    dw.dxfReal(10, data.ipx);
-    dw.dxfReal(20, data.ipy);
-    dw.dxfReal(30, 0.0);
-
-    // vector along bottom side (1 pixel long)
-    dw.dxfReal(11, data.ux);
-    dw.dxfReal(21, data.uy);
-    dw.dxfReal(31, 0.0);
-
-    // vector along left side (1 pixel long)
-    dw.dxfReal(12, data.vx);
-    dw.dxfReal(22, data.vy);
-    dw.dxfReal(32, 0.0);
-
-    // image size in pixel
-    dw.dxfReal(13, data.width);
-    dw.dxfReal(23, data.height);
-
-    // handle of IMAGEDEF object
-    int handle = dw.incHandle();
-    dw.dxfHex(340, handle);
-
-    // flags
-    dw.dxfInt(70, 15);
-
-    // clipping:
-    dw.dxfInt(280, 0);
-
-    // brightness, contrast, fade
-    dw.dxfInt(281, data.brightness);
-    dw.dxfInt(282, data.contrast);
-    dw.dxfInt(283, data.fade);
-
-    return handle;
-}
-
-
-
-/**
- * Writes an image definiition entity.
- */
-void DL_Dxf::writeImageDef(DL_WriterA& dw,
-                           int handle,
-                           const DL_ImageData& data) {
-
-    /*if (data.file.empty()) {
-        std::cerr << "DL_Dxf::writeImage: "
-        << "Image file must not be empty\n";
-        return;
-}*/
-
-    dw.dxfString(0, "IMAGEDEF");
-    if (version==VER_2000) {
-    	dw.dxfHex(5, handle);
-	}
-
-    if (version==VER_2000) {
-        dw.dxfString(100, "AcDbRasterImageDef");
-        dw.dxfInt(90, 0);
-    }
-    // file name:
-    dw.dxfString(1, data.ref);
-
-    // image size in pixel
-    dw.dxfReal(10, data.width);
-    dw.dxfReal(20, data.height);
-
-    dw.dxfReal(11, 1.0);
-    dw.dxfReal(21, 1.0);
-
-    // loaded:
-    dw.dxfInt(280, 1);
-    // units:
-    dw.dxfInt(281, 0);
-}
-
-
-/**
- * Writes a layer to the file. Layers are stored in the 
- * tables section of a DXF file.
- *
- * @param dw DXF writer
- * @param data Entity data from the file
- * @param attrib Attributes
- */
-void DL_Dxf::writeLayer(DL_WriterA& dw,
-                        const DL_LayerData& data,
-                        const DL_Attributes& attrib) {
-
-    if (data.name.empty()) {
-        std::cerr << "DL_Dxf::writeLayer: "
-        << "Layer name must not be empty\n";
-        return;
-    }
-
-    int color = attrib.getColor();
-    if (color>=256) {
-        std::cerr << "Layer color cannot be " << color << ". Changed to 7.\n";
-        color = 7;
-    }
-
-    if (data.name == "0") {
-        dw.tableLayerEntry(0x10);
-    } else {
-        dw.tableLayerEntry();
-    }
-
-    dw.dxfString(2, data.name);
-    dw.dxfInt(70, data.flags);
-    dw.dxfInt(62, color);
-
-    dw.dxfString(6, (attrib.getLineType().length()==0 ?
-                     string("CONTINUOUS") : attrib.getLineType()));
-
-    if (version>=VER_2000) {
-        // layer defpoints cannot be plotted
-        std::string lstr = data.name;
-        std::transform(lstr.begin(), lstr.end(), lstr.begin(), tolower);
-        if (lstr=="defpoints") {
-            dw.dxfInt(290, 0);
-        }
-    }
-    if (version>=VER_2000 && attrib.getWidth()!=-1) {
-        dw.dxfInt(370, attrib.getWidth());
-    }
-    if (version>=VER_2000) {
-        dw.dxfHex(390, 0xF);
-    }
-}
-
-
-
-/**
- * Writes a line type to the file. Line types are stored in the 
- * tables section of a DXF file.
- */
-void DL_Dxf::writeLineType(DL_WriterA& dw,
-                           const DL_LineTypeData& data) {
-    //const char* description,
-    //int elements,
-    //double patternLength) {
-
-    if (data.name.empty()) {
-        std::cerr << "DL_Dxf::writeLineType: "
-        << "Line type name must not be empty\n";
-        return;
-    }
-
-	// ignore BYLAYER, BYBLOCK for R12
-	if (version<VER_2000) {
-		if (!strcasecmp(data.name.c_str(), "BYBLOCK") ||
-		    !strcasecmp(data.name.c_str(), "BYLAYER")) {
-			return;
-		}
-	}
-
-	// write id (not for R12)
-    if (!strcasecmp(data.name.c_str(), "BYBLOCK")) {
-        dw.tableLineTypeEntry(0x14);
-    } else if (!strcasecmp(data.name.c_str(), "BYLAYER")) {
-        dw.tableLineTypeEntry(0x15);
-    } else if (!strcasecmp(data.name.c_str(), "CONTINUOUS")) {
-        dw.tableLineTypeEntry(0x16);
-    } else {
-        dw.tableLineTypeEntry();
-    }
-
-    dw.dxfString(2, data.name);
-	//if (version>=VER_2000) {
-    	dw.dxfInt(70, data.flags);
-	//}
-
-    if (!strcasecmp(data.name.c_str(), "BYBLOCK")) {
-        dw.dxfString(3, "");
-        dw.dxfInt(72, 65);
-        dw.dxfInt(73, 0);
-        dw.dxfReal(40, 0.0);
-    } else if (!strcasecmp(data.name.c_str(), "BYLAYER")) {
-        dw.dxfString(3, "");
-        dw.dxfInt(72, 65);
-        dw.dxfInt(73, 0);
-        dw.dxfReal(40, 0.0);
-    } else if (!strcasecmp(data.name.c_str(), "CONTINUOUS")) {
-        dw.dxfString(3, "Solid line");
-        dw.dxfInt(72, 65);
-        dw.dxfInt(73, 0);
-        dw.dxfReal(40, 0.0);
-    } else if (!strcasecmp(data.name.c_str(), "ACAD_ISO02W100")) {
-        dw.dxfString(3, "ISO Dashed __ __ __ __ __ __ __ __ __ __ _");
-        dw.dxfInt(72, 65);
-        dw.dxfInt(73, 2);
-        dw.dxfReal(40, 15.0);
-        dw.dxfReal(49, 12.0);
-        if (version>=VER_R13)
-            dw.dxfInt(74, 0);
-        dw.dxfReal(49, -3.0);
-        if (version>=VER_R13)
-            dw.dxfInt(74, 0);
-    } else if (!strcasecmp(data.name.c_str(), "ACAD_ISO03W100")) {
-        dw.dxfString(3, "ISO Dashed with Distance __    __    __    _");
-        dw.dxfInt(72, 65);
-        dw.dxfInt(73, 2);
-        dw.dxfReal(40, 30.0);
-        dw.dxfReal(49, 12.0);
-        if (version>=VER_R13)
-            dw.dxfInt(74, 0);
-        dw.dxfReal(49, -18.0);
-        if (version>=VER_R13)
-            dw.dxfInt(74, 0);
-    } else if (!strcasecmp(data.name.c_str(), "ACAD_ISO04W100")) {
-        dw.dxfString(3, "ISO Long Dashed Dotted ____ . ____ . __");
-        dw.dxfInt(72, 65);
-        dw.dxfInt(73, 4);
-        dw.dxfReal(40, 30.0);
-        dw.dxfReal(49, 24.0);
-        if (version>=VER_R13)
-            dw.dxfInt(74, 0);
-        dw.dxfReal(49, -3.0);
-        if (version>=VER_R13)
-            dw.dxfInt(74, 0);
-        dw.dxfReal(49, 0.0);
-        if (version>=VER_R13)
-            dw.dxfInt(74, 0);
-        dw.dxfReal(49, -3.0);
-        if (version>=VER_R13)
-            dw.dxfInt(74, 0);
-    } else if (!strcasecmp(data.name.c_str(), "ACAD_ISO05W100")) {
-        dw.dxfString(3, "ISO Long Dashed Double Dotted ____ .. __");
-        dw.dxfInt(72, 65);
-        dw.dxfInt(73, 6);
-        dw.dxfReal(40, 33.0);
-        dw.dxfReal(49, 24.0);
-        if (version>=VER_R13)
-            dw.dxfInt(74, 0);
-        dw.dxfReal(49, -3.0);
-        if (version>=VER_R13)
-            dw.dxfInt(74, 0);
-        dw.dxfReal(49, 0.0);
-        if (version>=VER_R13)
-            dw.dxfInt(74, 0);
-        dw.dxfReal(49, -3.0);
-        if (version>=VER_R13)
-            dw.dxfInt(74, 0);
-        dw.dxfReal(49, 0.0);
-        if (version>=VER_R13)
-            dw.dxfInt(74, 0);
-        dw.dxfReal(49, -3.0);
-        if (version>=VER_R13)
-            dw.dxfInt(74, 0);
-    } else if (!strcasecmp(data.name.c_str(), "BORDER")) {
-        dw.dxfString(3, "Border __ __ . __ __ . __ __ . __ __ . __ __ .");
-        dw.dxfInt(72, 65);
-        dw.dxfInt(73, 6);
-        dw.dxfReal(40, 44.45);
-        dw.dxfReal(49, 12.7);
-        if (version>=VER_R13)
-            dw.dxfInt(74, 0);
-        dw.dxfReal(49, -6.35);
-        if (version>=VER_R13)
-            dw.dxfInt(74, 0);
-        dw.dxfReal(49, 12.7);
-        if (version>=VER_R13)
-            dw.dxfInt(74, 0);
-        dw.dxfReal(49, -6.35);
-        if (version>=VER_R13)
-            dw.dxfInt(74, 0);
-        dw.dxfReal(49, 0.0);
-        if (version>=VER_R13)
-            dw.dxfInt(74, 0);
-        dw.dxfReal(49, -6.35);
-        if (version>=VER_R13)
-            dw.dxfInt(74, 0);
-    } else if (!strcasecmp(data.name.c_str(), "BORDER2")) {
-        dw.dxfString(3, "Border (.5x) __.__.__.__.__.__.__.__.__.__.__.");
-        dw.dxfInt(72, 65);
-        dw.dxfInt(73, 6);
-        dw.dxfReal(40, 22.225);
-        dw.dxfReal(49, 6.35);
-        if (version>=VER_R13)
-            dw.dxfInt(74, 0);
-        dw.dxfReal(49, -3.175);
-        if (version>=VER_R13)
-            dw.dxfInt(74, 0);
-        dw.dxfReal(49, 6.35);
-        if (version>=VER_R13)
-            dw.dxfInt(74, 0);
-        dw.dxfReal(49, -3.175);
-        if (version>=VER_R13)
-            dw.dxfInt(74, 0);
-        dw.dxfReal(49, 0.0);
-        if (version>=VER_R13)
-            dw.dxfInt(74, 0);
-        dw.dxfReal(49, -3.175);
-        if (version>=VER_R13)
-            dw.dxfInt(74, 0);
-    } else if (!strcasecmp(data.name.c_str(), "BORDERX2")) {
-        dw.dxfString(3, "Border (2x) ____  ____  .  ____  ____  .  ___");
-        dw.dxfInt(72, 65);
-        dw.dxfInt(73, 6);
-        dw.dxfReal(40, 88.9);
-        dw.dxfReal(49, 25.4);
-        if (version>=VER_R13)
-            dw.dxfInt(74, 0);
-        dw.dxfReal(49, -12.7);
-        if (version>=VER_R13)
-            dw.dxfInt(74, 0);
-        dw.dxfReal(49, 25.4);
-        if (version>=VER_R13)
-            dw.dxfInt(74, 0);
-        dw.dxfReal(49, -12.7);
-        if (version>=VER_R13)
-            dw.dxfInt(74, 0);
-        dw.dxfReal(49, 0.0);
-        if (version>=VER_R13)
-            dw.dxfInt(74, 0);
-        dw.dxfReal(49, -12.7);
-        if (version>=VER_R13)
-            dw.dxfInt(74, 0);
-    } else if (!strcasecmp(data.name.c_str(), "CENTER")) {
-        dw.dxfString(3, "Center ____ _ ____ _ ____ _ ____ _ ____ _ ____");
-        dw.dxfInt(72, 65);
-        dw.dxfInt(73, 4);
-        dw.dxfReal(40, 50.8);
-        dw.dxfReal(49, 31.75);
-        if (version>=VER_R13)
-            dw.dxfInt(74, 0);
-        dw.dxfReal(49, -6.35);
-        if (version>=VER_R13)
-            dw.dxfInt(74, 0);
-        dw.dxfReal(49, 6.35);
-        if (version>=VER_R13)
-            dw.dxfInt(74, 0);
-        dw.dxfReal(49, -6.35);
-        if (version>=VER_R13)
-            dw.dxfInt(74, 0);
-    } else if (!strcasecmp(data.name.c_str(), "CENTER2")) {
-        dw.dxfString(3, "Center (.5x) ___ _ ___ _ ___ _ ___ _ ___ _ ___");
-        dw.dxfInt(72, 65);
-        dw.dxfInt(73, 4);
-        dw.dxfReal(40, 28.575);
-        dw.dxfReal(49, 19.05);
-        if (version>=VER_R13)
-            dw.dxfInt(74, 0);
-        dw.dxfReal(49, -3.175);
-        if (version>=VER_R13)
-            dw.dxfInt(74, 0);
-        dw.dxfReal(49, 3.175);
-        if (version>=VER_R13)
-            dw.dxfInt(74, 0);
-        dw.dxfReal(49, -3.175);
-        if (version>=VER_R13)
-            dw.dxfInt(74, 0);
-    } else if (!strcasecmp(data.name.c_str(), "CENTERX2")) {
-        dw.dxfString(3, "Center (2x) ________  __  ________  __  _____");
-        dw.dxfInt(72, 65);
-        dw.dxfInt(73, 4);
-        dw.dxfReal(40, 101.6);
-        dw.dxfReal(49, 63.5);
-        if (version>=VER_R13)
-            dw.dxfInt(74, 0);
-        dw.dxfReal(49, -12.7);
-        if (version>=VER_R13)
-            dw.dxfInt(74, 0);
-        dw.dxfReal(49, 12.7);
-        if (version>=VER_R13)
-            dw.dxfInt(74, 0);
-        dw.dxfReal(49, -12.7);
-        if (version>=VER_R13)
-            dw.dxfInt(74, 0);
-    } else if (!strcasecmp(data.name.c_str(), "DASHDOT")) {
-        dw.dxfString(3, "Dash dot __ . __ . __ . __ . __ . __ . __ . __");
-        dw.dxfInt(72, 65);
-        dw.dxfInt(73, 4);
-        dw.dxfReal(40, 25.4);
-        dw.dxfReal(49, 12.7);
-        if (version>=VER_R13)
-            dw.dxfInt(74, 0);
-        dw.dxfReal(49, -6.35);
-        if (version>=VER_R13)
-            dw.dxfInt(74, 0);
-        dw.dxfReal(49, 0.0);
-        if (version>=VER_R13)
-            dw.dxfInt(74, 0);
-        dw.dxfReal(49, -6.35);
-        if (version>=VER_R13)
-            dw.dxfInt(74, 0);
-    } else if (!strcasecmp(data.name.c_str(), "DASHDOT2")) {
-        dw.dxfString(3, "Dash dot (.5x) _._._._._._._._._._._._._._._.");
-        dw.dxfInt(72, 65);
-        dw.dxfInt(73, 4);
-        dw.dxfReal(40, 12.7);
-        dw.dxfReal(49, 6.35);
-        if (version>=VER_R13)
-            dw.dxfInt(74, 0);
-        dw.dxfReal(49, -3.175);
-        if (version>=VER_R13)
-            dw.dxfInt(74, 0);
-        dw.dxfReal(49, 0.0);
-        if (version>=VER_R13)
-            dw.dxfInt(74, 0);
-        dw.dxfReal(49, -3.175);
-        if (version>=VER_R13)
-            dw.dxfInt(74, 0);
-    } else if (!strcasecmp(data.name.c_str(), "DASHDOTX2")) {
-        dw.dxfString(3, "Dash dot (2x) ____  .  ____  .  ____  .  ___");
-        dw.dxfInt(72, 65);
-        dw.dxfInt(73, 4);
-        dw.dxfReal(40, 50.8);
-        dw.dxfReal(49, 25.4);
-        if (version>=VER_R13)
-            dw.dxfInt(74, 0);
-        dw.dxfReal(49, -12.7);
-        if (version>=VER_R13)
-            dw.dxfInt(74, 0);
-        dw.dxfReal(49, 0.0);
-        if (version>=VER_R13)
-            dw.dxfInt(74, 0);
-        dw.dxfReal(49, -12.7);
-        if (version>=VER_R13)
-            dw.dxfInt(74, 0);
-    } else if (!strcasecmp(data.name.c_str(), "DASHED")) {
-        dw.dxfString(3, "Dashed __ __ __ __ __ __ __ __ __ __ __ __ __ _");
-        dw.dxfInt(72, 65);
-        dw.dxfInt(73, 2);
-        dw.dxfReal(40, 19.05);
-        dw.dxfReal(49, 12.7);
-        if (version>=VER_R13)
-            dw.dxfInt(74, 0);
-        dw.dxfReal(49, -6.35);
-        if (version>=VER_R13)
-            dw.dxfInt(74, 0);
-    } else if (!strcasecmp(data.name.c_str(), "DASHED2")) {
-        dw.dxfString(3, "Dashed (.5x) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _");
-        dw.dxfInt(72, 65);
-        dw.dxfInt(73, 2);
-        dw.dxfReal(40, 9.525);
-        dw.dxfReal(49, 6.35);
-        if (version>=VER_R13)
-            dw.dxfInt(74, 0);
-        dw.dxfReal(49, -3.175);
-        if (version>=VER_R13)
-            dw.dxfInt(74, 0);
-    } else if (!strcasecmp(data.name.c_str(), "DASHEDX2")) {
-        dw.dxfString(3, "Dashed (2x) ____  ____  ____  ____  ____  ___");
-        dw.dxfInt(72, 65);
-        dw.dxfInt(73, 2);
-        dw.dxfReal(40, 38.1);
-        dw.dxfReal(49, 25.4);
-        if (version>=VER_R13)
-            dw.dxfInt(74, 0);
-        dw.dxfReal(49, -12.7);
-        if (version>=VER_R13)
-            dw.dxfInt(74, 0);
-    } else if (!strcasecmp(data.name.c_str(), "DIVIDE")) {
-        dw.dxfString(3, "Divide ____ . . ____ . . ____ . . ____ . . ____");
-        dw.dxfInt(72, 65);
-        dw.dxfInt(73, 6);
-        dw.dxfReal(40, 31.75);
-        dw.dxfReal(49, 12.7);
-        if (version>=VER_R13)
-            dw.dxfInt(74, 0);
-        dw.dxfReal(49, -6.35);
-        if (version>=VER_R13)
-            dw.dxfInt(74, 0);
-        dw.dxfReal(49, 0.0);
-        if (version>=VER_R13)
-            dw.dxfInt(74, 0);
-        dw.dxfReal(49, -6.35);
-        if (version>=VER_R13)
-            dw.dxfInt(74, 0);
-        dw.dxfReal(49, 0.0);
-        if (version>=VER_R13)
-            dw.dxfInt(74, 0);
-        dw.dxfReal(49, -6.35);
-        if (version>=VER_R13)
-            dw.dxfInt(74, 0);
-    } else if (!strcasecmp(data.name.c_str(), "DIVIDE2")) {
-        dw.dxfString(3, "Divide (.5x) __..__..__..__..__..__..__..__.._");
-        dw.dxfInt(72, 65);
-        dw.dxfInt(73, 6);
-        dw.dxfReal(40, 15.875);
-        dw.dxfReal(49, 6.35);
-        if (version>=VER_R13)
-            dw.dxfInt(74, 0);
-        dw.dxfReal(49, -3.175);
-        if (version>=VER_R13)
-            dw.dxfInt(74, 0);
-        dw.dxfReal(49, 0.0);
-        if (version>=VER_R13)
-            dw.dxfInt(74, 0);
-        dw.dxfReal(49, -3.175);
-        if (version>=VER_R13)
-            dw.dxfInt(74, 0);
-        dw.dxfReal(49, 0.0);
-        if (version>=VER_R13)
-            dw.dxfInt(74, 0);
-        dw.dxfReal(49, -3.175);
-        if (version>=VER_R13)
-            dw.dxfInt(74, 0);
-    } else if (!strcasecmp(data.name.c_str(), "DIVIDEX2")) {
-        dw.dxfString(3, "Divide (2x) ________  .  .  ________  .  .  _");
-        dw.dxfInt(72, 65);
-        dw.dxfInt(73, 6);
-        dw.dxfReal(40, 63.5);
-        dw.dxfReal(49, 25.4);
-        if (version>=VER_R13)
-            dw.dxfInt(74, 0);
-        dw.dxfReal(49, -12.7);
-        if (version>=VER_R13)
-            dw.dxfInt(74, 0);
-        dw.dxfReal(49, 0.0);
-        if (version>=VER_R13)
-            dw.dxfInt(74, 0);
-        dw.dxfReal(49, -12.7);
-        if (version>=VER_R13)
-            dw.dxfInt(74, 0);
-        dw.dxfReal(49, 0.0);
-        if (version>=VER_R13)
-            dw.dxfInt(74, 0);
-        dw.dxfReal(49, -12.7);
-        if (version>=VER_R13)
-            dw.dxfInt(74, 0);
-    } else if (!strcasecmp(data.name.c_str(), "DOT")) {
-        dw.dxfString(3, "Dot . . . . . . . . . . . . . . . . . . . . . .");
-        dw.dxfInt(72, 65);
-        dw.dxfInt(73, 2);
-        dw.dxfReal(40, 6.35);
-        dw.dxfReal(49, 0.0);
-        if (version>=VER_R13)
-            dw.dxfInt(74, 0);
-        dw.dxfReal(49, -6.35);
-        if (version>=VER_R13)
-            dw.dxfInt(74, 0);
-    } else if (!strcasecmp(data.name.c_str(), "DOT2")) {
-        dw.dxfString(3, "Dot (.5x) .....................................");
-        dw.dxfInt(72, 65);
-        dw.dxfInt(73, 2);
-        dw.dxfReal(40, 3.175);
-        dw.dxfReal(49, 0.0);
-        if (version>=VER_R13)
-            dw.dxfInt(74, 0);
-        dw.dxfReal(49, -3.175);
-        if (version>=VER_R13)
-            dw.dxfInt(74, 0);
-    } else if (!strcasecmp(data.name.c_str(), "DOTX2")) {
-        dw.dxfString(3, "Dot (2x) .  .  .  .  .  .  .  .  .  .  .  .  .");
-        dw.dxfInt(72, 65);
-        dw.dxfInt(73, 2);
-        dw.dxfReal(40, 12.7);
-        dw.dxfReal(49, 0.0);
-        if (version>=VER_R13)
-            dw.dxfInt(74, 0);
-        dw.dxfReal(49, -12.7);
-        if (version>=VER_R13)
-            dw.dxfInt(74, 0);
-    } else {
-        std::cerr << "dxflib warning: DL_Dxf::writeLineType: Unknown Line Type\n";
-    }
-}
-
-
-
-/**
- * Writes the APPID section to the DXF file.
- *
- * @param name Application name
- */
-void DL_Dxf::writeAppid(DL_WriterA& dw, const string& name) {
-    if (name.empty()) {
-        std::cerr << "DL_Dxf::writeAppid: "
-        << "Application  name must not be empty\n";
-        return;
-    }
-
-    if (!strcasecmp(name.c_str(), "ACAD")) {
-        dw.tableAppidEntry(0x12);
-    } else {
-        dw.tableAppidEntry();
-    }
-    dw.dxfString(2, name);
-    dw.dxfInt(70, 0);
-}
-
-
-
-/**
- * Writes a block's definition (no entities) to the DXF file.
- */
-void DL_Dxf::writeBlock(DL_WriterA& dw, const DL_BlockData& data) {
-    if (data.name.empty()) {
-        std::cerr << "DL_Dxf::writeBlock: "
-        << "Block name must not be empty\n";
-        return;
-    }
-
-    //bool paperSpace = !strcasecmp(name, "*paper_space");
-    //!strcasecmp(name, "*paper_space0");
-
-    if (!strcasecmp(data.name.c_str(), "*paper_space")) {
-        dw.sectionBlockEntry(0x1C);
-    } else if (!strcasecmp(data.name.c_str(), "*model_space")) {
-        dw.sectionBlockEntry(0x20);
-    } else if (!strcasecmp(data.name.c_str(), "*paper_space0")) {
-        dw.sectionBlockEntry(0x24);
-    } else {
-        dw.sectionBlockEntry();
-    }
-    dw.dxfString(2, data.name);
-    dw.dxfInt(70, 0);
-    dw.coord(10, data.bpx, data.bpy);
-    dw.dxfString(3, data.name);
-    dw.dxfString(1, "");
-}
-
-
-
-/**
- * Writes a block end.
- *
- * @param name Block name
- */
-void DL_Dxf::writeEndBlock(DL_WriterA& dw, const string& name) {
-    if (!strcasecmp(name.c_str(), "*paper_space")) {
-        dw.sectionBlockEntryEnd(0x1D);
-    } else if (!strcasecmp(name.c_str(), "*model_space")) {
-        dw.sectionBlockEntryEnd(0x21);
-    } else if (!strcasecmp(name.c_str(), "*paper_space0")) {
-        dw.sectionBlockEntryEnd(0x25);
-    } else {
-        dw.sectionBlockEntryEnd();
-    }
-}
-
-
-
-/**
- * Writes a viewport section. This section is needed in VER_R13.
- * Note that this method currently only writes a faked VPORT section
- * to make the file readable by Aut*cad.
- */
-void DL_Dxf::writeVPort(DL_WriterA& dw) {
-    dw.dxfString(0, "TABLE");
-    dw.dxfString(2, "VPORT");
-    if (version==VER_2000) {
-        dw.dxfHex(5, 0x8);
-    }
-    //dw.dxfHex(330, 0);
-    if (version==VER_2000) {
-        dw.dxfString(100, "AcDbSymbolTable");
-    }
-    dw.dxfInt(70, 1);
-    dw.dxfString(0, "VPORT");
-    //dw.dxfHex(5, 0x2F);
-    if (version==VER_2000) {
-        dw.handle();
-    }
-    //dw.dxfHex(330, 8);
-    if (version==VER_2000) {
-        dw.dxfString(100, "AcDbSymbolTableRecord");
-        dw.dxfString(100, "AcDbViewportTableRecord");
-    }
-    dw.dxfString(  2, "*Active");
-    dw.dxfInt( 70, 0);
-    dw.dxfReal( 10, 0.0);
-    dw.dxfReal( 20, 0.0);
-    dw.dxfReal( 11, 1.0);
-    dw.dxfReal( 21, 1.0);
-    dw.dxfReal( 12, 286.3055555555555);
-    dw.dxfReal( 22, 148.5);
-    dw.dxfReal( 13, 0.0);
-    dw.dxfReal( 23, 0.0);
-    dw.dxfReal( 14, 10.0);
-    dw.dxfReal( 24, 10.0);
-    dw.dxfReal( 15, 10.0);
-    dw.dxfReal( 25, 10.0);
-    dw.dxfReal( 16, 0.0);
-    dw.dxfReal( 26, 0.0);
-    dw.dxfReal( 36, 1.0);
-    dw.dxfReal( 17, 0.0);
-    dw.dxfReal( 27, 0.0);
-    dw.dxfReal( 37, 0.0);
-    dw.dxfReal( 40, 297.0);
-    dw.dxfReal( 41, 1.92798353909465);
-    dw.dxfReal( 42, 50.0);
-    dw.dxfReal( 43, 0.0);
-    dw.dxfReal( 44, 0.0);
-    dw.dxfReal( 50, 0.0);
-    dw.dxfReal( 51, 0.0);
-    dw.dxfInt( 71, 0);
-    dw.dxfInt( 72, 100);
-    dw.dxfInt( 73, 1);
-    dw.dxfInt( 74, 3);
-    dw.dxfInt( 75, 1);
-    dw.dxfInt( 76, 1);
-    dw.dxfInt( 77, 0);
-    dw.dxfInt( 78, 0);
-
-    if (version==VER_2000) {
-        dw.dxfInt(281, 0);
-        dw.dxfInt( 65, 1);
-        dw.dxfReal(110, 0.0);
-        dw.dxfReal(120, 0.0);
-        dw.dxfReal(130, 0.0);
-        dw.dxfReal(111, 1.0);
-        dw.dxfReal(121, 0.0);
-        dw.dxfReal(131, 0.0);
-        dw.dxfReal(112, 0.0);
-        dw.dxfReal(122, 1.0);
-        dw.dxfReal(132, 0.0);
-        dw.dxfInt( 79, 0);
-        dw.dxfReal(146, 0.0);
-    }
-    dw.dxfString(  0, "ENDTAB");
-}
-
-
-
-/**
- * Writes a style section. This section is needed in VER_R13.
- * Note that this method currently only writes a faked STYLE section
- * to make the file readable by Aut*cad.
- */
-void DL_Dxf::writeStyle(DL_WriterA& dw) {
-    dw.dxfString(  0, "TABLE");
-    dw.dxfString(  2, "STYLE");
-    if (version==VER_2000) {
-    	dw.dxfHex(5, 3);
-	}
-    //dw.dxfHex(330, 0);
-    if (version==VER_2000) {
-        dw.dxfString(100, "AcDbSymbolTable");
-    }
-    dw.dxfInt( 70, 1);
-    dw.dxfString(  0, "STYLE");
-    if (version==VER_2000) {
-    	dw.dxfHex(5, 0x11);
-	}
-    //styleHandleStd = dw.handle();
-    //dw.dxfHex(330, 3);
-    if (version==VER_2000) {
-        dw.dxfString(100, "AcDbSymbolTableRecord");
-        dw.dxfString(100, "AcDbTextStyleTableRecord");
-    }
-    dw.dxfString(  2, "Standard");
-    dw.dxfInt( 70, 0);
-    dw.dxfReal( 40, 0.0);
-    dw.dxfReal( 41, 0.75);
-    dw.dxfReal( 50, 0.0);
-    dw.dxfInt( 71, 0);
-    dw.dxfReal( 42, 2.5);
-    dw.dxfString(  3, "txt");
-    dw.dxfString(  4, "");
-    dw.dxfString(  0, "ENDTAB");
-}
-
-
-
-/**
- * Writes a view section. This section is needed in VER_R13.
- * Note that this method currently only writes a faked VIEW section
- * to make the file readable by Aut*cad.
- */
-void DL_Dxf::writeView(DL_WriterA& dw) {
-    dw.dxfString(  0, "TABLE");
-    dw.dxfString(  2, "VIEW");
-    if (version==VER_2000) {
-    	dw.dxfHex(5, 6);
-	}
-    //dw.dxfHex(330, 0);
-    if (version==VER_2000) {
-        dw.dxfString(100, "AcDbSymbolTable");
-    }
-    dw.dxfInt( 70, 0);
-    dw.dxfString(  0, "ENDTAB");
-}
-
-
-
-/**
- * Writes a ucs section. This section is needed in VER_R13.
- * Note that this method currently only writes a faked UCS section
- * to make the file readable by Aut*cad.
- */
-void DL_Dxf::writeUcs(DL_WriterA& dw) {
-    dw.dxfString(  0, "TABLE");
-    dw.dxfString(  2, "UCS");
-    if (version==VER_2000) {
-    	dw.dxfHex(5, 7);
-	}
-    //dw.dxfHex(330, 0);
-    if (version==VER_2000) {
-        dw.dxfString(100, "AcDbSymbolTable");
-    }
-    dw.dxfInt( 70, 0);
-    dw.dxfString(  0, "ENDTAB");
-}
-
-
-
-/**
- * Writes a dimstyle section. This section is needed in VER_R13.
- * Note that this method currently only writes a faked DIMSTYLE section
- * to make the file readable by Aut*cad.
- */
-void DL_Dxf::writeDimStyle(DL_WriterA& dw, 
-					double dimasz, double dimexe, double dimexo,
-                       double dimgap, double dimtxt) {
-
-    dw.dxfString(  0, "TABLE");
-    dw.dxfString(  2, "DIMSTYLE");
-    if (version==VER_2000) {
-        dw.dxfHex(5, 0xA);
-        dw.dxfString(100, "AcDbSymbolTable");
-    }
-    dw.dxfInt( 70, 1);
-    if (version==VER_2000) {
-        dw.dxfString(100, "AcDbDimStyleTable");
-        dw.dxfInt( 71, 0);
-    }
-
-
-    dw.dxfString(  0, "DIMSTYLE");
-    if (version==VER_2000) {
-        dw.dxfHex(105, 0x27);
-    }
-    //dw.handle(105);
-    //dw.dxfHex(330, 0xA);
-    if (version==VER_2000) {
-        dw.dxfString(100, "AcDbSymbolTableRecord");
-        dw.dxfString(100, "AcDbDimStyleTableRecord");
-    }
-    dw.dxfString(  2, "Standard");
-    if (version==VER_R12) {
-        dw.dxfString(  3, "");
-        dw.dxfString(  4, "");
-        dw.dxfString(  5, "");
-        dw.dxfString(  6, "");
-        dw.dxfString(  7, "");
-        dw.dxfReal( 40, 1.0);
-    }
-
-    dw.dxfReal( 41, dimasz);
-    dw.dxfReal( 42, dimexo);
-    dw.dxfReal( 43, 3.75);
-    dw.dxfReal( 44, dimexe);
-    if (version==VER_R12) {
-        dw.dxfReal( 45, 0.0);
-        dw.dxfReal( 46, 0.0);
-        dw.dxfReal( 47, 0.0);
-        dw.dxfReal( 48, 0.0);
-    }
-    dw.dxfInt( 70, 0);
-    if (version==VER_R12) {
-        dw.dxfInt( 71, 0);
-        dw.dxfInt( 72, 0);
-    }
-    dw.dxfInt( 73, 0);
-    dw.dxfInt( 74, 0);
-    if (version==VER_R12) {
-        dw.dxfInt( 75, 0);
-        dw.dxfInt( 76, 0);
-    }
-    dw.dxfInt( 77, 1);
-    dw.dxfInt( 78, 8);
-    dw.dxfReal(140, dimtxt);
-    dw.dxfReal(141, 2.5);
-    if (version==VER_R12) {
-        dw.dxfReal(142, 0.0);
-    }
-    dw.dxfReal(143, 0.03937007874016);
-    if (version==VER_R12) {
-        dw.dxfReal(144, 1.0);
-        dw.dxfReal(145, 0.0);
-        dw.dxfReal(146, 1.0);
-    }
-    dw.dxfReal(147, dimgap);
-    if (version==VER_R12) {
-        dw.dxfInt(170, 0);
-    }
-    dw.dxfInt(171, 3);
-    dw.dxfInt(172, 1);
-    if (version==VER_R12) {
-        dw.dxfInt(173, 0);
-        dw.dxfInt(174, 0);
-        dw.dxfInt(175, 0);
-        dw.dxfInt(176, 0);
-        dw.dxfInt(177, 0);
-        dw.dxfInt(178, 0);
-    }
-    if (version==VER_2000) {
-        dw.dxfInt(271, 2);
-        dw.dxfInt(272, 2);
-        dw.dxfInt(274, 3);
-        dw.dxfInt(278, 44);
-        dw.dxfInt(283, 0);
-        dw.dxfInt(284, 8);
-        //dw.dxfHex(340, styleHandleStd);
-        dw.dxfHex(340, 0x11);
-    }
-    // * /
-    dw.dxfString(  0, "ENDTAB");
-}
-
-
-
-/**
- * Writes a blockrecord section. This section is needed in VER_R13.
- * Note that this method currently only writes a faked BLOCKRECORD section
- * to make the file readable by Aut*cad.
- */
-void DL_Dxf::writeBlockRecord(DL_WriterA& dw) {
-    dw.dxfString(  0, "TABLE");
-    dw.dxfString(  2, "BLOCK_RECORD");
-    if (version==VER_2000) {
-    	dw.dxfHex(5, 1);
-	}
-    //dw.dxfHex(330, 0);
-    if (version==VER_2000) {
-        dw.dxfString(100, "AcDbSymbolTable");
-    }
-    dw.dxfInt( 70, 1);
-
-    dw.dxfString(  0, "BLOCK_RECORD");
-    if (version==VER_2000) {
-    	dw.dxfHex(5, 0x1F);
-	}
-    //int msh = dw.handle();
-    //dw.setModelSpaceHandle(msh);
-    //dw.dxfHex(330, 1);
-    if (version==VER_2000) {
-        dw.dxfString(100, "AcDbSymbolTableRecord");
-        dw.dxfString(100, "AcDbBlockTableRecord");
-    }
-    dw.dxfString(  2, "*Model_Space");
-    dw.dxfHex(340, 0x22);
-
-    dw.dxfString(  0, "BLOCK_RECORD");
-    if (version==VER_2000) {
-    	dw.dxfHex(5, 0x1B);
-	}
-    //int psh = dw.handle();
-    //dw.setPaperSpaceHandle(psh);
-    //dw.dxfHex(330, 1);
-    if (version==VER_2000) {
-        dw.dxfString(100, "AcDbSymbolTableRecord");
-        dw.dxfString(100, "AcDbBlockTableRecord");
-    }
-    dw.dxfString(  2, "*Paper_Space");
-    dw.dxfHex(340, 0x1E);
-
-    dw.dxfString(  0, "BLOCK_RECORD");
-    if (version==VER_2000) {
-    	dw.dxfHex(5, 0x23);
-	}
-    //int ps0h = dw.handle();
-    //dw.setPaperSpace0Handle(ps0h);
-    //dw.dxfHex(330, 1);
-    if (version==VER_2000) {
-        dw.dxfString(100, "AcDbSymbolTableRecord");
-        dw.dxfString(100, "AcDbBlockTableRecord");
-    }
-    dw.dxfString(  2, "*Paper_Space0");
-    dw.dxfHex(340, 0x26);
-
-    //dw.dxfString(  0, "ENDTAB");
-}
-
-
-
-/**
- * Writes a single block record with the given name.
- */
-void DL_Dxf::writeBlockRecord(DL_WriterA& dw, const string& name) {
-    dw.dxfString(  0, "BLOCK_RECORD");
-    if (version==VER_2000) {
-    	dw.handle();
-	}
-    //dw->dxfHex(330, 1);
-    if (version==VER_2000) {
-        dw.dxfString(100, "AcDbSymbolTableRecord");
-        dw.dxfString(100, "AcDbBlockTableRecord");
-    }
-    dw.dxfString(  2, name);
-    dw.dxfHex(340, 0);
-}
-
-
-
-/**
- * Writes a objects section. This section is needed in VER_R13.
- * Note that this method currently only writes a faked OBJECTS section
- * to make the file readable by Aut*cad.
- */
-void DL_Dxf::writeObjects(DL_WriterA& dw) {
-    //int dicId, dicId2, dicId3, dicId4, dicId5;
-    //int dicId5;
-
-    dw.dxfString(  0, "SECTION");
-    dw.dxfString(  2, "OBJECTS");
-    dw.dxfString(  0, "DICTIONARY");
-    dw.dxfHex(5, 0xC);                            // C
-    //dw.dxfHex(330, 0);
-    dw.dxfString(100, "AcDbDictionary");
-    dw.dxfInt(280, 0);
-    dw.dxfInt(281, 1);
-    dw.dxfString(  3, "ACAD_GROUP");
-    //dw.dxfHex(350, dw.getNextHandle());          // D
-    dw.dxfHex(350, 0xD);          // D
-    dw.dxfString(  3, "ACAD_LAYOUT");
-    dw.dxfHex(350, 0x1A);
-    //dw.dxfHex(350, dw.getNextHandle()+0);        // 1A
-    dw.dxfString(  3, "ACAD_MLINESTYLE");
-    dw.dxfHex(350, 0x17);
-    //dw.dxfHex(350, dw.getNextHandle()+1);        // 17
-    dw.dxfString(  3, "ACAD_PLOTSETTINGS");
-    dw.dxfHex(350, 0x19);
-    //dw.dxfHex(350, dw.getNextHandle()+2);        // 19
-    dw.dxfString(  3, "ACAD_PLOTSTYLENAME");
-    dw.dxfHex(350, 0xE);
-    //dw.dxfHex(350, dw.getNextHandle()+3);        // E
-    dw.dxfString(  3, "AcDbVariableDictionary");
-    dw.dxfHex(350, dw.getNextHandle());        // 2C
-    dw.dxfString(  0, "DICTIONARY");
-    dw.dxfHex(5, 0xD);
-    //dw.handle();                                    // D
-    //dw.dxfHex(330, 0xC);
-    dw.dxfString(100, "AcDbDictionary");
-    dw.dxfInt(280, 0);
-    dw.dxfInt(281, 1);
-    dw.dxfString(  0, "ACDBDICTIONARYWDFLT");
-    dw.dxfHex(5, 0xE);
-    //dicId4 = dw.handle();                           // E
-    //dw.dxfHex(330, 0xC);                       // C
-    dw.dxfString(100, "AcDbDictionary");
-    dw.dxfInt(281, 1);
-    dw.dxfString(  3, "Normal");
-    dw.dxfHex(350, 0xF);
-    //dw.dxfHex(350, dw.getNextHandle()+5);        // F
-    dw.dxfString(100, "AcDbDictionaryWithDefault");
-    dw.dxfHex(340, 0xF);
-    //dw.dxfHex(340, dw.getNextHandle()+5);        // F
-    dw.dxfString(  0, "ACDBPLACEHOLDER");
-    dw.dxfHex(5, 0xF);
-    //dw.handle();                                    // F
-    //dw.dxfHex(330, dicId4);                      // E
-    dw.dxfString(  0, "DICTIONARY");
-    //dicId3 = dw.handle();                           // 17
-    dw.dxfHex(5, 0x17);
-    //dw.dxfHex(330, 0xC);                       // C
-    dw.dxfString(100, "AcDbDictionary");
-    dw.dxfInt(280, 0);
-    dw.dxfInt(281, 1);
-    dw.dxfString(  3, "Standard");
-    dw.dxfHex(350, 0x18);
-    //dw.dxfHex(350, dw.getNextHandle()+5);        // 18
-    dw.dxfString(  0, "MLINESTYLE");
-    dw.dxfHex(5, 0x18);
-    //dw.handle();                                    // 18
-    //dw.dxfHex(330, dicId3);                      // 17
-    dw.dxfString(100, "AcDbMlineStyle");
-    dw.dxfString(  2, "STANDARD");
-    dw.dxfInt( 70, 0);
-    dw.dxfString(  3, "");
-    dw.dxfInt( 62, 256);
-    dw.dxfReal( 51, 90.0);
-    dw.dxfReal( 52, 90.0);
-    dw.dxfInt( 71, 2);
-    dw.dxfReal( 49, 0.5);
-    dw.dxfInt( 62, 256);
-    dw.dxfString(  6, "BYLAYER");
-    dw.dxfReal( 49, -0.5);
-    dw.dxfInt( 62, 256);
-    dw.dxfString(  6, "BYLAYER");
-    dw.dxfString(  0, "DICTIONARY");
-    dw.dxfHex(5, 0x19);
-    //dw.handle();                           // 17
-    //dw.dxfHex(330, 0xC);                       // C
-    dw.dxfString(100, "AcDbDictionary");
-    dw.dxfInt(280, 0);
-    dw.dxfInt(281, 1);
-    dw.dxfString(  0, "DICTIONARY");
-    //dicId2 = dw.handle();                           // 1A
-    dw.dxfHex(5, 0x1A);
-    //dw.dxfHex(330, 0xC);
-    dw.dxfString(100, "AcDbDictionary");
-    dw.dxfInt(281, 1);
-    dw.dxfString(  3, "Layout1");
-    dw.dxfHex(350, 0x1E);
-    //dw.dxfHex(350, dw.getNextHandle()+2);        // 1E
-    dw.dxfString(  3, "Layout2");
-    dw.dxfHex(350, 0x26);
-    //dw.dxfHex(350, dw.getNextHandle()+4);        // 26
-    dw.dxfString(  3, "Model");
-    dw.dxfHex(350, 0x22);
-    //dw.dxfHex(350, dw.getNextHandle()+5);        // 22
-
-    dw.dxfString(  0, "LAYOUT");
-    dw.dxfHex(5, 0x1E);
-    //dw.handle();                                    // 1E
-    //dw.dxfHex(330, dicId2);                      // 1A
-    dw.dxfString(100, "AcDbPlotSettings");
-    dw.dxfString(  1, "");
-    dw.dxfString(  2, "C:\\Program Files\\AutoCAD 2002\\plotters\\DWF ePlot (optimized for plotting).pc3");
-    dw.dxfString(  4, "");
-    dw.dxfString(  6, "");
-    dw.dxfReal( 40, 0.0);
-    dw.dxfReal( 41, 0.0);
-    dw.dxfReal( 42, 0.0);
-    dw.dxfReal( 43, 0.0);
-    dw.dxfReal( 44, 0.0);
-    dw.dxfReal( 45, 0.0);
-    dw.dxfReal( 46, 0.0);
-    dw.dxfReal( 47, 0.0);
-    dw.dxfReal( 48, 0.0);
-    dw.dxfReal( 49, 0.0);
-    dw.dxfReal(140, 0.0);
-    dw.dxfReal(141, 0.0);
-    dw.dxfReal(142, 1.0);
-    dw.dxfReal(143, 1.0);
-    dw.dxfInt( 70, 688);
-    dw.dxfInt( 72, 0);
-    dw.dxfInt( 73, 0);
-    dw.dxfInt( 74, 5);
-    dw.dxfString(  7, "");
-    dw.dxfInt( 75, 16);
-    dw.dxfReal(147, 1.0);
-    dw.dxfReal(148, 0.0);
-    dw.dxfReal(149, 0.0);
-    dw.dxfString(100, "AcDbLayout");
-    dw.dxfString(  1, "Layout1");
-    dw.dxfInt( 70, 1);
-    dw.dxfInt( 71, 1);
-    dw.dxfReal( 10, 0.0);
-    dw.dxfReal( 20, 0.0);
-    dw.dxfReal( 11, 420.0);
-    dw.dxfReal( 21, 297.0);
-    dw.dxfReal( 12, 0.0);
-    dw.dxfReal( 22, 0.0);
-    dw.dxfReal( 32, 0.0);
-    dw.dxfReal( 14, 1.000000000000000E+20);
-    dw.dxfReal( 24, 1.000000000000000E+20);
-    dw.dxfReal( 34, 1.000000000000000E+20);
-    dw.dxfReal( 15, -1.000000000000000E+20);
-    dw.dxfReal( 25, -1.000000000000000E+20);
-    dw.dxfReal( 35, -1.000000000000000E+20);
-    dw.dxfReal(146, 0.0);
-    dw.dxfReal( 13, 0.0);
-    dw.dxfReal( 23, 0.0);
-    dw.dxfReal( 33, 0.0);
-    dw.dxfReal( 16, 1.0);
-    dw.dxfReal( 26, 0.0);
-    dw.dxfReal( 36, 0.0);
-    dw.dxfReal( 17, 0.0);
-    dw.dxfReal( 27, 1.0);
-    dw.dxfReal( 37, 0.0);
-    dw.dxfInt( 76, 0);
-    //dw.dxfHex(330, dw.getPaperSpaceHandle());    // 1B
-    dw.dxfHex(330, 0x1B);
-    dw.dxfString(  0, "LAYOUT");
-    dw.dxfHex(5, 0x22);
-    //dw.handle();                                    // 22
-    //dw.dxfHex(330, dicId2);                      // 1A
-    dw.dxfString(100, "AcDbPlotSettings");
-    dw.dxfString(  1, "");
-    dw.dxfString(  2, "C:\\Program Files\\AutoCAD 2002\\plotters\\DWF ePlot (optimized for plotting).pc3");
-    dw.dxfString(  4, "");
-    dw.dxfString(  6, "");
-    dw.dxfReal( 40, 0.0);
-    dw.dxfReal( 41, 0.0);
-    dw.dxfReal( 42, 0.0);
-    dw.dxfReal( 43, 0.0);
-    dw.dxfReal( 44, 0.0);
-    dw.dxfReal( 45, 0.0);
-    dw.dxfReal( 46, 0.0);
-    dw.dxfReal( 47, 0.0);
-    dw.dxfReal( 48, 0.0);
-    dw.dxfReal( 49, 0.0);
-    dw.dxfReal(140, 0.0);
-    dw.dxfReal(141, 0.0);
-    dw.dxfReal(142, 1.0);
-    dw.dxfReal(143, 1.0);
-    dw.dxfInt( 70, 1712);
-    dw.dxfInt( 72, 0);
-    dw.dxfInt( 73, 0);
-    dw.dxfInt( 74, 0);
-    dw.dxfString(  7, "");
-    dw.dxfInt( 75, 0);
-    dw.dxfReal(147, 1.0);
-    dw.dxfReal(148, 0.0);
-    dw.dxfReal(149, 0.0);
-    dw.dxfString(100, "AcDbLayout");
-    dw.dxfString(  1, "Model");
-    dw.dxfInt( 70, 1);
-    dw.dxfInt( 71, 0);
-    dw.dxfReal( 10, 0.0);
-    dw.dxfReal( 20, 0.0);
-    dw.dxfReal( 11, 12.0);
-    dw.dxfReal( 21, 9.0);
-    dw.dxfReal( 12, 0.0);
-    dw.dxfReal( 22, 0.0);
-    dw.dxfReal( 32, 0.0);
-    dw.dxfReal( 14, 0.0);
-    dw.dxfReal( 24, 0.0);
-    dw.dxfReal( 34, 0.0);
-    dw.dxfReal( 15, 0.0);
-    dw.dxfReal( 25, 0.0);
-    dw.dxfReal( 35, 0.0);
-    dw.dxfReal(146, 0.0);
-    dw.dxfReal( 13, 0.0);
-    dw.dxfReal( 23, 0.0);
-    dw.dxfReal( 33, 0.0);
-    dw.dxfReal( 16, 1.0);
-    dw.dxfReal( 26, 0.0);
-    dw.dxfReal( 36, 0.0);
-    dw.dxfReal( 17, 0.0);
-    dw.dxfReal( 27, 1.0);
-    dw.dxfReal( 37, 0.0);
-    dw.dxfInt( 76, 0);
-    //dw.dxfHex(330, dw.getModelSpaceHandle());    // 1F
-    dw.dxfHex(330, 0x1F);
-    dw.dxfString(  0, "LAYOUT");
-    //dw.handle();                                    // 26
-    dw.dxfHex(5, 0x26);
-    //dw.dxfHex(330, dicId2);                      // 1A
-    dw.dxfString(100, "AcDbPlotSettings");
-    dw.dxfString(  1, "");
-    dw.dxfString(  2, "C:\\Program Files\\AutoCAD 2002\\plotters\\DWF ePlot (optimized for plotting).pc3");
-    dw.dxfString(  4, "");
-    dw.dxfString(  6, "");
-    dw.dxfReal( 40, 0.0);
-    dw.dxfReal( 41, 0.0);
-    dw.dxfReal( 42, 0.0);
-    dw.dxfReal( 43, 0.0);
-    dw.dxfReal( 44, 0.0);
-    dw.dxfReal( 45, 0.0);
-    dw.dxfReal( 46, 0.0);
-    dw.dxfReal( 47, 0.0);
-    dw.dxfReal( 48, 0.0);
-    dw.dxfReal( 49, 0.0);
-    dw.dxfReal(140, 0.0);
-    dw.dxfReal(141, 0.0);
-    dw.dxfReal(142, 1.0);
-    dw.dxfReal(143, 1.0);
-    dw.dxfInt( 70, 688);
-    dw.dxfInt( 72, 0);
-    dw.dxfInt( 73, 0);
-    dw.dxfInt( 74, 5);
-    dw.dxfString(  7, "");
-    dw.dxfInt( 75, 16);
-    dw.dxfReal(147, 1.0);
-    dw.dxfReal(148, 0.0);
-    dw.dxfReal(149, 0.0);
-    dw.dxfString(100, "AcDbLayout");
-    dw.dxfString(  1, "Layout2");
-    dw.dxfInt( 70, 1);
-    dw.dxfInt( 71, 2);
-    dw.dxfReal( 10, 0.0);
-    dw.dxfReal( 20, 0.0);
-    dw.dxfReal( 11, 12.0);
-    dw.dxfReal( 21, 9.0);
-    dw.dxfReal( 12, 0.0);
-    dw.dxfReal( 22, 0.0);
-    dw.dxfReal( 32, 0.0);
-    dw.dxfReal( 14, 0.0);
-    dw.dxfReal( 24, 0.0);
-    dw.dxfReal( 34, 0.0);
-    dw.dxfReal( 15, 0.0);
-    dw.dxfReal( 25, 0.0);
-    dw.dxfReal( 35, 0.0);
-    dw.dxfReal(146, 0.0);
-    dw.dxfReal( 13, 0.0);
-    dw.dxfReal( 23, 0.0);
-    dw.dxfReal( 33, 0.0);
-    dw.dxfReal( 16, 1.0);
-    dw.dxfReal( 26, 0.0);
-    dw.dxfReal( 36, 0.0);
-    dw.dxfReal( 17, 0.0);
-    dw.dxfReal( 27, 1.0);
-    dw.dxfReal( 37, 0.0);
-    dw.dxfInt( 76, 0);
-    //dw.dxfHex(330, dw.getPaperSpace0Handle());   // 23
-    dw.dxfHex(330, 0x23);
-    dw.dxfString(  0, "DICTIONARY");
-    //dw.dxfHex(5, 0x2C);
-    //dicId5 =
-    dw.handle();                           // 2C
-    //dw.dxfHex(330, 0xC);                       // C
-    dw.dxfString(100, "AcDbDictionary");
-    dw.dxfInt(281, 1);
-    dw.dxfString(  3, "DIMASSOC");
-    //dw.dxfHex(350, 0x2F);
-    dw.dxfHex(350, dw.getNextHandle()+1);        // 2E
-    dw.dxfString(  3, "HIDETEXT");
-    //dw.dxfHex(350, 0x2E);
-    dw.dxfHex(350, dw.getNextHandle());        // 2D
-    dw.dxfString(  0, "DICTIONARYVAR");
-    //dw.dxfHex(5, 0x2E);
-    dw.handle();                                    // 2E
-    //dw.dxfHex(330, dicId5);                      // 2C
-    dw.dxfString(100, "DictionaryVariables");
-    dw.dxfInt(280, 0);
-    dw.dxfInt(  1, 2);
-    dw.dxfString(  0, "DICTIONARYVAR");
-    //dw.dxfHex(5, 0x2D);
-    dw.handle();                                    // 2D
-    //dw.dxfHex(330, dicId5);                      // 2C
-    dw.dxfString(100, "DictionaryVariables");
-    dw.dxfInt(280, 0);
-    dw.dxfInt(  1, 1);
-}
-
-
-/**
- * Writes the end of the objects section. This section is needed in VER_R13.
- * Note that this method currently only writes a faked OBJECTS section
- * to make the file readable by Aut*cad.
- */
-void DL_Dxf::writeObjectsEnd(DL_WriterA& dw) {
-    dw.dxfString(  0, "ENDSEC");
-}
-
-    
-
-/**
- * Writes a comment to the DXF file.
- */
-void DL_Dxf::writeComment(DL_WriterA& dw, const string& comment) {
-    dw.dxfString(999, comment);
-}
-
-
-/**
- * Checks if the given variable is known by the given DXF version.
- */
-bool DL_Dxf::checkVariable(const char* var, DL_Codes::version version) {
-    if (version>=VER_2000) {
-        return true;
-    } else if (version==VER_R12) {
-        // these are all the variables recognized by dxf r12:
-        if (!strcmp(var, "$ACADVER")) {
-            return true;
-        }
-        if (!strcmp(var, "$ACADVER")) {
-            return true;
-        }
-        if (!strcmp(var, "$ANGBASE")) {
-            return true;
-        }
-        if (!strcmp(var, "$ANGDIR")) {
-            return true;
-        }
-        if (!strcmp(var, "$ATTDIA")) {
-            return true;
-        }
-        if (!strcmp(var, "$ATTMODE")) {
-            return true;
-        }
-        if (!strcmp(var, "$ATTREQ")) {
-            return true;
-        }
-        if (!strcmp(var, "$AUNITS")) {
-            return true;
-        }
-        if (!strcmp(var, "$AUPREC")) {
-            return true;
-        }
-        if (!strcmp(var, "$AXISMODE")) {
-            return true;
-        }
-        if (!strcmp(var, "$AXISUNIT")) {
-            return true;
-        }
-        if (!strcmp(var, "$BLIPMODE")) {
-            return true;
-        }
-        if (!strcmp(var, "$CECOLOR")) {
-            return true;
-        }
-        if (!strcmp(var, "$CELTYPE")) {
-            return true;
-        }
-        if (!strcmp(var, "$CHAMFERA")) {
-            return true;
-        }
-        if (!strcmp(var, "$CHAMFERB")) {
-            return true;
-        }
-        if (!strcmp(var, "$CLAYER")) {
-            return true;
-        }
-        if (!strcmp(var, "$COORDS")) {
-            return true;
-        }
-        if (!strcmp(var, "$DIMALT")) {
-            return true;
-        }
-        if (!strcmp(var, "$DIMALTD")) {
-            return true;
-        }
-        if (!strcmp(var, "$DIMALTF")) {
-            return true;
-        }
-        if (!strcmp(var, "$DIMAPOST")) {
-            return true;
-        }
-        if (!strcmp(var, "$DIMASO")) {
-            return true;
-        }
-        if (!strcmp(var, "$DIMASZ")) {
-            return true;
-        }
-        if (!strcmp(var, "$DIMBLK")) {
-            return true;
-        }
-        if (!strcmp(var, "$DIMBLK1")) {
-            return true;
-        }
-        if (!strcmp(var, "$DIMBLK2")) {
-            return true;
-        }
-        if (!strcmp(var, "$DIMCEN")) {
-            return true;
-        }
-        if (!strcmp(var, "$DIMCLRD")) {
-            return true;
-        }
-        if (!strcmp(var, "$DIMCLRE")) {
-            return true;
-        }
-        if (!strcmp(var, "$DIMCLRT")) {
-            return true;
-        }
-        if (!strcmp(var, "$DIMDLE")) {
-            return true;
-        }
-        if (!strcmp(var, "$DIMDLI")) {
-            return true;
-        }
-        if (!strcmp(var, "$DIMEXE")) {
-            return true;
-        }
-        if (!strcmp(var, "$DIMEXO")) {
-            return true;
-        }
-        if (!strcmp(var, "$DIMGAP")) {
-            return true;
-        }
-        if (!strcmp(var, "$DIMLFAC")) {
-            return true;
-        }
-        if (!strcmp(var, "$DIMLIM")) {
-            return true;
-        }
-        if (!strcmp(var, "$DIMPOST")) {
-            return true;
-        }
-        if (!strcmp(var, "$DIMRND")) {
-            return true;
-        }
-        if (!strcmp(var, "$DIMSAH")) {
-            return true;
-        }
-        if (!strcmp(var, "$DIMSCALE")) {
-            return true;
-        }
-        if (!strcmp(var, "$DIMSE1")) {
-            return true;
-        }
-        if (!strcmp(var, "$DIMSE2")) {
-            return true;
-        }
-        if (!strcmp(var, "$DIMSHO")) {
-            return true;
-        }
-        if (!strcmp(var, "$DIMSOXD")) {
-            return true;
-        }
-        if (!strcmp(var, "$DIMSTYLE")) {
-            return true;
-        }
-        if (!strcmp(var, "$DIMTAD")) {
-            return true;
-        }
-        if (!strcmp(var, "$DIMTFAC")) {
-            return true;
-        }
-        if (!strcmp(var, "$DIMTIH")) {
-            return true;
-        }
-        if (!strcmp(var, "$DIMTIX")) {
-            return true;
-        }
-        if (!strcmp(var, "$DIMTM")) {
-            return true;
-        }
-        if (!strcmp(var, "$DIMTOFL")) {
-            return true;
-        }
-        if (!strcmp(var, "$DIMTOH")) {
-            return true;
-        }
-        if (!strcmp(var, "$DIMTOL")) {
-            return true;
-        }
-        if (!strcmp(var, "$DIMTP")) {
-            return true;
-        }
-        if (!strcmp(var, "$DIMTSZ")) {
-            return true;
-        }
-        if (!strcmp(var, "$DIMTVP")) {
-            return true;
-        }
-        if (!strcmp(var, "$DIMTXT")) {
-            return true;
-        }
-        if (!strcmp(var, "$DIMZIN")) {
-            return true;
-        }
-        if (!strcmp(var, "$DWGCODEPAGE")) {
-            return true;
-        }
-        if (!strcmp(var, "$DRAGMODE")) {
-            return true;
-        }
-        if (!strcmp(var, "$ELEVATION")) {
-            return true;
-        }
-        if (!strcmp(var, "$EXTMAX")) {
-            return true;
-        }
-        if (!strcmp(var, "$EXTMIN")) {
-            return true;
-        }
-        if (!strcmp(var, "$FILLETRAD")) {
-            return true;
-        }
-        if (!strcmp(var, "$FILLMODE")) {
-            return true;
-        }
-        if (!strcmp(var, "$HANDLING")) {
-            return true;
-        }
-        if (!strcmp(var, "$HANDSEED")) {
-            return true;
-        }
-        if (!strcmp(var, "$INSBASE")) {
-            return true;
-        }
-        if (!strcmp(var, "$LIMCHECK")) {
-            return true;
-        }
-        if (!strcmp(var, "$LIMMAX")) {
-            return true;
-        }
-        if (!strcmp(var, "$LIMMIN")) {
-            return true;
-        }
-        if (!strcmp(var, "$LTSCALE")) {
-            return true;
-        }
-        if (!strcmp(var, "$LUNITS")) {
-            return true;
-        }
-        if (!strcmp(var, "$LUPREC")) {
-            return true;
-        }
-        if (!strcmp(var, "$MAXACTVP")) {
-            return true;
-        }
-        if (!strcmp(var, "$MENU")) {
-            return true;
-        }
-        if (!strcmp(var, "$MIRRTEXT")) {
-            return true;
-        }
-        if (!strcmp(var, "$ORTHOMODE")) {
-            return true;
-        }
-        if (!strcmp(var, "$OSMODE")) {
-            return true;
-        }
-        if (!strcmp(var, "$PDMODE")) {
-            return true;
-        }
-        if (!strcmp(var, "$PDSIZE")) {
-            return true;
-        }
-        if (!strcmp(var, "$PELEVATION")) {
-            return true;
-        }
-        if (!strcmp(var, "$PEXTMAX")) {
-            return true;
-        }
-        if (!strcmp(var, "$PEXTMIN")) {
-            return true;
-        }
-        if (!strcmp(var, "$PLIMCHECK")) {
-            return true;
-        }
-        if (!strcmp(var, "$PLIMMAX")) {
-            return true;
-        }
-        if (!strcmp(var, "$PLIMMIN")) {
-            return true;
-        }
-        if (!strcmp(var, "$PLINEGEN")) {
-            return true;
-        }
-        if (!strcmp(var, "$PLINEWID")) {
-            return true;
-        }
-        if (!strcmp(var, "$PSLTSCALE")) {
-            return true;
-        }
-        if (!strcmp(var, "$PUCSNAME")) {
-            return true;
-        }
-        if (!strcmp(var, "$PUCSORG")) {
-            return true;
-        }
-        if (!strcmp(var, "$PUCSXDIR")) {
-            return true;
-        }
-        if (!strcmp(var, "$PUCSYDIR")) {
-            return true;
-        }
-        if (!strcmp(var, "$QTEXTMODE")) {
-            return true;
-        }
-        if (!strcmp(var, "$REGENMODE")) {
-            return true;
-        }
-        if (!strcmp(var, "$SHADEDGE")) {
-            return true;
-        }
-        if (!strcmp(var, "$SHADEDIF")) {
-            return true;
-        }
-        if (!strcmp(var, "$SKETCHINC")) {
-            return true;
-        }
-        if (!strcmp(var, "$SKPOLY")) {
-            return true;
-        }
-        if (!strcmp(var, "$SPLFRAME")) {
-            return true;
-        }
-        if (!strcmp(var, "$SPLINESEGS")) {
-            return true;
-        }
-        if (!strcmp(var, "$SPLINETYPE")) {
-            return true;
-        }
-        if (!strcmp(var, "$SURFTAB1")) {
-            return true;
-        }
-        if (!strcmp(var, "$SURFTAB2")) {
-            return true;
-        }
-        if (!strcmp(var, "$SURFTYPE")) {
-            return true;
-        }
-        if (!strcmp(var, "$SURFU")) {
-            return true;
-        }
-        if (!strcmp(var, "$SURFV")) {
-            return true;
-        }
-        if (!strcmp(var, "$TDCREATE")) {
-            return true;
-        }
-        if (!strcmp(var, "$TDINDWG")) {
-            return true;
-        }
-        if (!strcmp(var, "$TDUPDATE")) {
-            return true;
-        }
-        if (!strcmp(var, "$TDUSRTIMER")) {
-            return true;
-        }
-        if (!strcmp(var, "$TEXTSIZE")) {
-            return true;
-        }
-        if (!strcmp(var, "$TEXTSTYLE")) {
-            return true;
-        }
-        if (!strcmp(var, "$THICKNESS")) {
-            return true;
-        }
-        if (!strcmp(var, "$TILEMODE")) {
-            return true;
-        }
-        if (!strcmp(var, "$TRACEWID")) {
-            return true;
-        }
-        if (!strcmp(var, "$UCSNAME")) {
-            return true;
-        }
-        if (!strcmp(var, "$UCSORG")) {
-            return true;
-        }
-        if (!strcmp(var, "$UCSXDIR")) {
-            return true;
-        }
-        if (!strcmp(var, "$UCSYDIR")) {
-            return true;
-        }
-        if (!strcmp(var, "$UNITMODE")) {
-            return true;
-        }
-        if (!strcmp(var, "$USERI1")) {
-            return true;
-        }
-        if (!strcmp(var, "$USERR1")) {
-            return true;
-        }
-        if (!strcmp(var, "$USRTIMER")) {
-            return true;
-        }
-        if (!strcmp(var, "$VISRETAIN")) {
-            return true;
-        }
-        if (!strcmp(var, "$WORLDVIEW")) {
-            return true;
-        }
-        if (!strcmp(var, "$FASTZOOM")) {
-            return true;
-        }
-        if (!strcmp(var, "$GRIDMODE")) {
-            return true;
-        }
-        if (!strcmp(var, "$GRIDUNIT")) {
-            return true;
-        }
-        if (!strcmp(var, "$SNAPANG")) {
-            return true;
-        }
-        if (!strcmp(var, "$SNAPBASE")) {
-            return true;
-        }
-        if (!strcmp(var, "$SNAPISOPAIR")) {
-            return true;
-        }
-        if (!strcmp(var, "$SNAPMODE")) {
-            return true;
-        }
-        if (!strcmp(var, "$SNAPSTYLE")) {
-            return true;
-        }
-        if (!strcmp(var, "$SNAPUNIT")) {
-            return true;
-        }
-        if (!strcmp(var, "$VIEWCTR")) {
-            return true;
-        }
-        if (!strcmp(var, "$VIEWDIR")) {
-            return true;
-        }
-        if (!strcmp(var, "$VIEWSIZE")) {
-            return true;
-        }
-        return false;
-    }
-
-    return false;
-}
-
-
-
-/**
- * @returns the library version as int (4 bytes, each byte one version number).
- * e.g. if str = "2.0.2.0" getLibVersion returns 0x02000200
- */
-int DL_Dxf::getLibVersion(const char* str) {
-    int d[4];
-    int idx = 0;
-    char v[4][5];
-    int ret = 0;
-
-    for (unsigned int i=0; i<strlen(str) && idx<3; ++i) {
-        if (str[i]=='.') {
-            d[idx] = i;
-            idx++;
-        }
-    }
-
-    if (idx==3) {
-        d[3] = strlen(str);
-
-        strncpy(v[0], str, d[0]);
-        v[0][d[0]] = '\0';
-
-        strncpy(v[1], &str[d[0]+1], d[1]-d[0]-1);
-        v[1][d[1]-d[0]-1] = '\0';
-
-        strncpy(v[2], &str[d[1]+1], d[2]-d[1]-1);
-        v[2][d[2]-d[1]-1] = '\0';
-
-        strncpy(v[3], &str[d[2]+1], d[3]-d[2]-1);
-        v[3][d[3]-d[2]-1] = '\0';
-
-        ret = (atoi(v[0])<<(3*8)) +
-              (atoi(v[1])<<(2*8)) +
-              (atoi(v[2])<<(1*8)) +
-              (atoi(v[3])<<(0*8));
-
-        return ret;
-    } else {
-        std::cerr << "DL_Dxf::getLibVersion: invalid version number: " << str << "\n";
-        return 0;
-    }
-}
-
-
-
-/**
- * Some test routines.
- */
-void DL_Dxf::test() {
-    char* buf1;
-    char* buf2;
-    char* buf3;
-    char* buf4;
-    char* buf5;
-    char* buf6;
-
-    buf1 = new char[10];
-    buf2 = new char[10];
-    buf3 = new char[10];
-    buf4 = new char[10];
-    buf5 = new char[10];
-    buf6 = new char[10];
-
-    strcpy(buf1, "  10\n");
-    strcpy(buf2, "10");
-    strcpy(buf3, "10\n");
-    strcpy(buf4, "  10 \n");
-    strcpy(buf5, "  10 \r");
-    strcpy(buf6, "\t10 \n");
-
-    std::cout << "1 buf1: '" << buf1 << "'\n";
-    stripWhiteSpace(&buf1);
-    std::cout << "2 buf1: '" << buf1 << "'\n";
-    //assert(!strcmp(buf1, "10"));
-
-    std::cout << "1 buf2: '" << buf2 << "'\n";
-    stripWhiteSpace(&buf2);
-    std::cout << "2 buf2: '" << buf2 << "'\n";
-
-    std::cout << "1 buf3: '" << buf3 << "'\n";
-    stripWhiteSpace(&buf3);
-    std::cout << "2 buf3: '" << buf3 << "'\n";
-
-    std::cout << "1 buf4: '" << buf4 << "'\n";
-    stripWhiteSpace(&buf4);
-    std::cout << "2 buf4: '" << buf4 << "'\n";
-
-    std::cout << "1 buf5: '" << buf5 << "'\n";
-    stripWhiteSpace(&buf5);
-    std::cout << "2 buf5: '" << buf5 << "'\n";
-
-    std::cout << "1 buf6: '" << buf6 << "'\n";
-    stripWhiteSpace(&buf6);
-    std::cout << "2 buf6: '" << buf6 << "'\n";
-
-}
-
-
diff --git a/src/dxflib/dl_dxf.h b/src/dxflib/dl_dxf.h
deleted file mode 100644
index 4b952ad..0000000
--- a/src/dxflib/dl_dxf.h
+++ /dev/null
@@ -1,430 +0,0 @@
-/****************************************************************************
-** $Id: dl_dxf.h 8171 2009-12-11 12:31:36Z fredbed $
-**
-** Copyright (C) 2001-2003 RibbonSoft. All rights reserved.
-**
-** This file is part of the dxflib project.
-**
-** This file may be distributed and/or modified under the terms of the
-** GNU General Public License version 2 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file.
-**
-** Licensees holding valid dxflib Professional Edition licenses may use 
-** this file in accordance with the dxflib Commercial License
-** Agreement provided with the Software.
-**
-** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
-** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-**
-** See http://www.ribbonsoft.com for further details.
-**
-** Contact info at ribbonsoft.com if any conditions of this licensing are
-** not clear to you.
-**
-**********************************************************************/
-
-#ifndef DL_DXF_H
-#define DL_DXF_H
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#ifndef __GCC2x__
-#include <sstream>
-#endif
-
-#include "dl_attributes.h"
-#include "dl_codes.h"
-#include "dl_entities.h"
-#include "dl_writer_ascii.h"
-
-#ifdef _WIN32
-#undef M_PI
-#define M_PI   3.14159265358979323846
-#pragma warning(disable : 4800)
-#endif
-
-#ifndef M_PI
-#define M_PI 3.1415926535897932384626433832795
-#endif
-
-class DL_CreationInterface;
-class DL_WriterA;
-
-
-#define DL_VERSION     "2.2.0.0"
-
-#define DL_UNKNOWN               0
-#define DL_LAYER                10
-#define DL_BLOCK                11
-#define DL_ENDBLK               12
-#define DL_LINETYPE             13
-#define DL_SETTING              50
-#define DL_ENTITY_POINT        100
-#define DL_ENTITY_LINE         101
-#define DL_ENTITY_POLYLINE     102
-#define DL_ENTITY_LWPOLYLINE   103
-#define DL_ENTITY_VERTEX       104
-#define DL_ENTITY_SPLINE       105
-#define DL_ENTITY_KNOT         106
-#define DL_ENTITY_CONTROLPOINT 107
-#define DL_ENTITY_ARC          108
-#define DL_ENTITY_CIRCLE       109
-#define DL_ENTITY_ELLIPSE      110
-#define DL_ENTITY_INSERT       111
-#define DL_ENTITY_TEXT         112
-#define DL_ENTITY_MTEXT        113
-#define DL_ENTITY_DIMENSION    114
-#define DL_ENTITY_LEADER       115
-#define DL_ENTITY_HATCH        116
-#define DL_ENTITY_ATTRIB       117
-#define DL_ENTITY_IMAGE        118
-#define DL_ENTITY_IMAGEDEF     119
-#define DL_ENTITY_TRACE        120
-#define DL_ENTITY_SOLID        121
-#define DL_ENTITY_3DFACE       122
-#define DL_ENTITY_SEQEND       123
-
-
-/**
- * Reading and writing of DXF files.
- *
- * This class can read in a DXF file and calls methods from the 
- * interface DL_EntityContainer to add the entities to the
- * contianer provided by the user of the library.
- *
- * It can also be used to write DXF files to a certain extent.
- *
- * When saving entities, special values for colors and linetypes 
- * can be used:
- *
- * Special colors are 0 (=BYBLOCK) and 256 (=BYLAYER).
- * Special linetypes are "BYLAYER" and "BYBLOCK".
- *
- * @author Andrew Mustun
- */
-class DL_Dxf {
-public:
-    DL_Dxf();
-    ~DL_Dxf();
-
-    bool in(const string& file,
-            DL_CreationInterface* creationInterface);
-    bool readDxfGroups(FILE* fp,
-                       DL_CreationInterface* creationInterface,
-					   int* errorCounter = NULL);
-    static bool getChoppedLine(char* s, unsigned int size,
-                               FILE *stream);
-    
-#ifndef __GCC2x__
-    bool readDxfGroups(std::stringstream &stream,
-                       DL_CreationInterface* creationInterface,
-					   int* errorCounter = NULL);
-    bool in(std::stringstream &stream,
-            DL_CreationInterface* creationInterface);
-    static bool getChoppedLine(char *s, unsigned int size,
-                               std::stringstream &stream);
-#endif
-
-    static bool stripWhiteSpace(char** s);
-
-    bool processDXFGroup(DL_CreationInterface* creationInterface,
-                         int groupCode, const char* groupValue);
-    void addSetting(DL_CreationInterface* creationInterface);
-    void addLayer(DL_CreationInterface* creationInterface);
-    void addBlock(DL_CreationInterface* creationInterface);
-    void endBlock(DL_CreationInterface* creationInterface);
-
-    void addPoint(DL_CreationInterface* creationInterface);
-    void addLine(DL_CreationInterface* creationInterface);
-	
-    void addPolyline(DL_CreationInterface* creationInterface);
-    void addVertex(DL_CreationInterface* creationInterface);
-	
-    void addSpline(DL_CreationInterface* creationInterface);
-    //void addKnot(DL_CreationInterface* creationInterface);
-    //void addControlPoint(DL_CreationInterface* creationInterface);
-	
-    void addArc(DL_CreationInterface* creationInterface);
-    void addCircle(DL_CreationInterface* creationInterface);
-    void addEllipse(DL_CreationInterface* creationInterface);
-    void addInsert(DL_CreationInterface* creationInterface);
-    
-    void addTrace(DL_CreationInterface* creationInterface);
-    void add3dFace(DL_CreationInterface* creationInterface);
-    void addSolid(DL_CreationInterface* creationInterface);
-
-    void addMText(DL_CreationInterface* creationInterface);
-	bool handleMTextData(DL_CreationInterface* creationInterface);
-	bool handleLWPolylineData(DL_CreationInterface* creationInterface);
-	bool handleSplineData(DL_CreationInterface* creationInterface);
-	bool handleLeaderData(DL_CreationInterface* creationInterface);
-	bool handleHatchData(DL_CreationInterface* creationInterface);
-	
-    void addText(DL_CreationInterface* creationInterface);
-    void addAttrib(DL_CreationInterface* creationInterface);
-    DL_DimensionData getDimData();
-    void addDimLinear(DL_CreationInterface* creationInterface);
-    void addDimAligned(DL_CreationInterface* creationInterface);
-    void addDimRadial(DL_CreationInterface* creationInterface);
-    void addDimDiametric(DL_CreationInterface* creationInterface);
-    void addDimAngular(DL_CreationInterface* creationInterface);
-    void addDimAngular3P(DL_CreationInterface* creationInterface);
-    void addDimOrdinate(DL_CreationInterface* creationInterface);
-    void addLeader(DL_CreationInterface* creationInterface);
-    void addHatch(DL_CreationInterface* creationInterface);
-    void addImage(DL_CreationInterface* creationInterface);
-    void addImageDef(DL_CreationInterface* creationInterface);
-    
-    void addComment(DL_CreationInterface* creationInterface, const char* comment);
-
-	void endEntity(DL_CreationInterface* creationInterface);
-	
-    void endSequence(DL_CreationInterface* creationInterface);
-	
-	int  stringToInt(const char* s, bool* ok=NULL);	
-
-    DL_WriterA* out(const char* file,
-                    DL_Codes::version version=VER_2000);
-
-    void writeHeader(DL_WriterA& dw);
-
-    void writePoint(DL_WriterA& dw,
-                    const DL_PointData& data,
-                    const DL_Attributes& attrib);
-    void writeLine(DL_WriterA& dw,
-                   const DL_LineData& data,
-                   const DL_Attributes& attrib);
-    void writePolyline(DL_WriterA& dw,
-                       const DL_PolylineData& data,
-                       const DL_Attributes& attrib);
-    void writeVertex(DL_WriterA& dw,
-                     const DL_VertexData& data);
-    void writePolylineEnd(DL_WriterA& dw);
-    void writeSpline(DL_WriterA& dw,
-                       const DL_SplineData& data,
-                       const DL_Attributes& attrib);
-    void writeControlPoint(DL_WriterA& dw,
-                     const DL_ControlPointData& data);
-    void writeKnot(DL_WriterA& dw,
-                     const DL_KnotData& data);
-    void writeCircle(DL_WriterA& dw,
-                     const DL_CircleData& data,
-                     const DL_Attributes& attrib);
-    void writeArc(DL_WriterA& dw,
-                  const DL_ArcData& data,
-                  const DL_Attributes& attrib);
-    void writeEllipse(DL_WriterA& dw,
-                      const DL_EllipseData& data,
-                      const DL_Attributes& attrib);
-    void writeSolid(DL_WriterA& dw,
-                   const DL_SolidData& data,
-                   const DL_Attributes& attrib);
-    void write3dFace(DL_WriterA& dw,
-                   const DL_3dFaceData& data,
-                   const DL_Attributes& attrib);
-    void writeInsert(DL_WriterA& dw,
-                     const DL_InsertData& data,
-                     const DL_Attributes& attrib);
-    void writeMText(DL_WriterA& dw,
-                    const DL_MTextData& data,
-                    const DL_Attributes& attrib);
-    void writeText(DL_WriterA& dw,
-                    const DL_TextData& data,
-                    const DL_Attributes& attrib);
-    void writeDimAligned(DL_WriterA& dw,
-                         const DL_DimensionData& data,
-                         const DL_DimAlignedData& edata,
-                         const DL_Attributes& attrib);
-    void writeDimLinear(DL_WriterA& dw,
-                        const DL_DimensionData& data,
-                        const DL_DimLinearData& edata,
-                        const DL_Attributes& attrib);
-    void writeDimRadial(DL_WriterA& dw,
-                        const DL_DimensionData& data,
-                        const DL_DimRadialData& edata,
-                        const DL_Attributes& attrib);
-    void writeDimDiametric(DL_WriterA& dw,
-                           const DL_DimensionData& data,
-                           const DL_DimDiametricData& edata,
-                           const DL_Attributes& attrib);
-    void writeDimAngular(DL_WriterA& dw,
-                         const DL_DimensionData& data,
-                         const DL_DimAngularData& edata,
-                         const DL_Attributes& attrib);
-    void writeDimAngular3P(DL_WriterA& dw,
-                           const DL_DimensionData& data,
-                           const DL_DimAngular3PData& edata,
-                           const DL_Attributes& attrib);
-    void writeDimOrdinate(DL_WriterA& dw,
-                         const DL_DimensionData& data,
-                         const DL_DimOrdinateData& edata,
-                         const DL_Attributes& attrib);
-    void writeLeader(DL_WriterA& dw,
-                     const DL_LeaderData& data,
-                     const DL_Attributes& attrib);
-    void writeLeaderVertex(DL_WriterA& dw,
-                           const DL_LeaderVertexData& data);
-    void writeHatch1(DL_WriterA& dw,
-                     const DL_HatchData& data,
-                     const DL_Attributes& attrib);
-    void writeHatch2(DL_WriterA& dw,
-                     const DL_HatchData& data,
-                     const DL_Attributes& attrib);
-    void writeHatchLoop1(DL_WriterA& dw,
-                         const DL_HatchLoopData& data);
-    void writeHatchLoop2(DL_WriterA& dw,
-                         const DL_HatchLoopData& data);
-    void writeHatchEdge(DL_WriterA& dw,
-                        const DL_HatchEdgeData& data);
-
-    int writeImage(DL_WriterA& dw,
-                   const DL_ImageData& data,
-                   const DL_Attributes& attrib);
-
-    void writeImageDef(DL_WriterA& dw, int handle,
-                       const DL_ImageData& data);
-
-    void writeLayer(DL_WriterA& dw,
-                    const DL_LayerData& data,
-                    const DL_Attributes& attrib);
-
-    void writeLineType(DL_WriterA& dw,
-                       const DL_LineTypeData& data);
-
-    void writeAppid(DL_WriterA& dw, const string& name);
-
-    void writeBlock(DL_WriterA& dw,
-                    const DL_BlockData& data);
-    void writeEndBlock(DL_WriterA& dw, const string& name);
-
-    void writeVPort(DL_WriterA& dw);
-    void writeStyle(DL_WriterA& dw);
-    void writeView(DL_WriterA& dw);
-    void writeUcs(DL_WriterA& dw);
-    void writeDimStyle(DL_WriterA& dw, 
-	                   double dimasz, double dimexe, double dimexo,
-					   double dimgap, double dimtxt);
-    void writeBlockRecord(DL_WriterA& dw);
-    void writeBlockRecord(DL_WriterA& dw, const string& name);
-    void writeObjects(DL_WriterA& dw);
-    void writeObjectsEnd(DL_WriterA& dw);
-    
-    void writeComment(DL_WriterA& dw, const string& comment);
-
-    /**
-     * Converts the given string into a double or returns the given 
-     * default valud (def) if value is NULL or empty.
-     */
-    static double toReal(const char* value, double def=0.0) {
-       if (value!=NULL && value[0] != '\0') {
-            double ret;
-            if (strchr(value, ',') != NULL) {
-               char* tmp = new char[strlen(value)+1];
-               strcpy(tmp, value);
-               DL_WriterA::strReplace(tmp, ',', '.');
-               ret = atof(tmp);
-      		   delete[] tmp;
-            }
-            else {
-               ret = atof(value);
-            }
-			return ret;
-        } else {
-            return def;
-        }
-    }
-    /**
-     * Converts the given string into an int or returns the given 
-     * default valud (def) if value is NULL or empty.
-     */
-    static int toInt(const char* value, int def=0) {
-        if (value!=NULL && value[0] != '\0') {
-            return atoi(value);
-        } else {
-            return def;
-        }
-    }
-    /**
-     * Converts the given string into a string or returns the given 
-     * default valud (def) if value is NULL or empty.
-     */
-    static const char* toString(const char* value, const char* def="") {
-        if (value!=NULL && value[0] != '\0') {
-            return value;
-        } else {
-            return def;
-        }
-    }
-
-	static bool checkVariable(const char* var, DL_Codes::version version);
-
-	DL_Codes::version getVersion() {
-		return version;
-	}
-
-	int getLibVersion(const char* str);
-
-	static void test();
-
-private:
-    DL_Codes::version version;
-    unsigned long styleHandleStd;
-
-	string polylineLayer;
-    double* vertices;
-    int maxVertices;
-    int vertexIndex;
-	
-    double* knots;
-    int maxKnots;
-    int knotIndex;
-	
-    double* controlPoints;
-    int maxControlPoints;
-    int controlPointIndex;
-
-    double* leaderVertices;
-    int maxLeaderVertices;
-    int leaderVertexIndex;
-
-    // array of hatch loops
-    DL_HatchLoopData* hatchLoops;
-    int maxHatchLoops;
-    int hatchLoopIndex;
-    // array in format [loop#][edge#]
-    DL_HatchEdgeData** hatchEdges;
-    int* maxHatchEdges;
-    int* hatchEdgeIndex;
-    bool dropEdges;
-
-    // Bulge for the next vertex.
-    double bulge;
-
-    // Only the useful part of the group code
-    char groupCodeTmp[DL_DXF_MAXLINE+1];
-    // ...same as integer
-    unsigned int groupCode;
-    // Only the useful part of the group value
-    char groupValue[DL_DXF_MAXLINE+1];
-    // Current entity type
-    int currentEntity;
-    // Value of the current setting
-    char settingValue[DL_DXF_MAXLINE+1];
-    // Key of the current setting (e.g. "$ACADVER")
-    char settingKey[DL_DXF_MAXLINE+1];
-    // Stores the group codes
-    char values[DL_DXF_MAXGROUPCODE][DL_DXF_MAXLINE+1];
-    // First call of this method. We initialize all group values in
-    //  the first call.
-    bool firstCall;
-    // Attributes of the current entity (layer, color, width, line type)
-    DL_Attributes attrib;
-	// library version. hex: 0x20003001 = 2.0.3.1
-	int libVersion;
-};
-
-#endif
-
-// EOF
diff --git a/src/dxflib/dl_entities.h b/src/dxflib/dl_entities.h
deleted file mode 100644
index 42b68cd..0000000
--- a/src/dxflib/dl_entities.h
+++ /dev/null
@@ -1,1451 +0,0 @@
-/****************************************************************************
-** $Id: dl_entities.h 8171 2009-12-11 12:31:36Z fredbed $
-**
-** Copyright (C) 2001-2003 RibbonSoft. All rights reserved.
-**
-** This file is part of the dxflib project.
-**
-** This file may be distributed and/or modified under the terms of the
-** GNU General Public License version 2 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file.
-**
-** Licensees holding valid dxflib Professional Edition licenses may use 
-** this file in accordance with the dxflib Commercial License
-** Agreement provided with the Software.
-**
-** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
-** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-**
-** See http://www.ribbonsoft.com for further details.
-**
-** Contact info at ribbonsoft.com if any conditions of this licensing are
-** not clear to you.
-**
-**********************************************************************/
-
-#ifndef DL_ENTITIES_H
-#define DL_ENTITIES_H
-
-
-#include <string>
-using std::string;
-
-/**
- * Layer Data.
- *
- * @author Andrew Mustun
- */
-struct DL_LayerData {
-    /**
-     * Constructor.
-     * Parameters: see member variables.
-     */
-    DL_LayerData(const string& lName,
-                 int lFlags) {
-        name = lName;
-        flags = lFlags;
-    }
-
-    /** Layer name. */
-    string name;
-    /** Layer flags. (1 = frozen, 2 = frozen by default, 4 = locked) */
-    int flags;
-};
-
-
-
-/**
- * Block Data.
- *
- * @author Andrew Mustun
- */
-struct DL_BlockData {
-    /**
-     * Constructor.
-     * Parameters: see member variables.
-     */
-    DL_BlockData(const string& bName,
-                 int bFlags,
-                 double bbpx, double bbpy, double bbpz) {
-        name = bName;
-        flags = bFlags;
-        bpx = bbpx;
-        bpy = bbpy;
-        bpz = bbpz;
-    }
-
-    /** Block name. */
-    string name;
-    /** Block flags. (not used currently) */
-    int flags;
-    /** X Coordinate of base point. */
-    double bpx;
-    /** Y Coordinate of base point. */
-    double bpy;
-    /** Z Coordinate of base point. */
-    double bpz;
-};
-
-
-
-/**
- * Line Type Data.
- *
- * @author Andrew Mustun
- */
-struct DL_LineTypeData {
-    /**
-     * Constructor.
-     * Parameters: see member variables.
-     */
-    DL_LineTypeData(const string& lName,
-                    int lFlags) {
-        name = lName;
-        flags = lFlags;
-    }
-
-    /** Line type name. */
-    string name;
-    /** Line type flags. */
-    int flags;
-};
-
-
-
-/**
- * Point Data.
- *
- * @author Andrew Mustun
- */
-struct DL_PointData {
-    /**
-     * Constructor.
-     * Parameters: see member variables.
-     */
-    DL_PointData(double px=0.0, double py=0.0, double pz=0.0) {
-        x = px;
-        y = py;
-        z = pz;
-    }
-
-    /*! X Coordinate of the point. */
-    double x;
-    /*! Y Coordinate of the point. */
-    double y;
-    /*! Z Coordinate of the point. */
-    double z;
-};
-
-
-
-/**
- * Line Data.
- *
- * @author Andrew Mustun
- */
-struct DL_LineData {
-    /**
-     * Constructor.
-     * Parameters: see member variables.
-     */
-    DL_LineData(double lx1, double ly1, double lz1,
-                double lx2, double ly2, double lz2) {
-        x1 = lx1;
-        y1 = ly1;
-        z1 = lz1;
-
-        x2 = lx2;
-        y2 = ly2;
-        z2 = lz2;
-    }
-
-    /*! X Start coordinate of the point. */
-    double x1;
-    /*! Y Start coordinate of the point. */
-    double y1;
-    /*! Z Start coordinate of the point. */
-    double z1;
-
-    /*! X End coordinate of the point. */
-    double x2;
-    /*! Y End coordinate of the point. */
-    double y2;
-    /*! Z End coordinate of the point. */
-    double z2;
-};
-
-
-
-/**
- * Arc Data.
- *
- * @author Andrew Mustun
- */
-struct DL_ArcData {
-    /**
-     * Constructor.
-     * Parameters: see member variables.
-     */
-    DL_ArcData(double acx, double acy, double acz,
-               double aRadius,
-               double aAngle1, double aAngle2) {
-
-        cx = acx;
-        cy = acy;
-        cz = acz;
-        radius = aRadius;
-        angle1 = aAngle1;
-        angle2 = aAngle2;
-    }
-
-    /*! X Coordinate of center point. */
-    double cx;
-    /*! Y Coordinate of center point. */
-    double cy;
-    /*! Z Coordinate of center point. */
-    double cz;
-
-    /*! Radius of arc. */
-    double radius;
-    /*! Startangle of arc in degrees. */
-    double angle1;
-    /*! Endangle of arc in degrees. */
-    double angle2;
-};
-
-
-
-/**
- * Circle Data.
- *
- * @author Andrew Mustun
- */
-struct DL_CircleData {
-    /**
-     * Constructor.
-     * Parameters: see member variables.
-     */
-    DL_CircleData(double acx, double acy, double acz,
-                  double aRadius) {
-
-        cx = acx;
-        cy = acy;
-        cz = acz;
-        radius = aRadius;
-    }
-
-    /*! X Coordinate of center point. */
-    double cx;
-    /*! Y Coordinate of center point. */
-    double cy;
-    /*! Z Coordinate of center point. */
-    double cz;
-
-    /*! Radius of arc. */
-    double radius;
-};
-
-
-
-/**
- * Polyline Data.
- *
- * @author Andrew Mustun
- */
-struct DL_PolylineData {
-    /**
-     * Constructor.
-     * Parameters: see member variables.
-     */
-    DL_PolylineData(int pNumber, int pMVerteces, int pNVerteces, int pFlags) {
-        number = pNumber;
-        m = pMVerteces;
-        n = pNVerteces;
-        flags = pFlags;
-    }
-
-    /*! Number of vertices in this polyline. */
-    unsigned int number;
-
-    /*! Number of vertices in m direction if polyline is a polygon mesh. */
-    unsigned int m;
-
-    /*! Number of vertices in n direction if polyline is a polygon mesh. */
-    unsigned int n;
-
-    /*! Flags */
-    int flags;
-};
-
-
-
-/**
- * Vertex Data.
- *
- * @author Andrew Mustun
- */
-struct DL_VertexData {
-    /**
-     * Constructor.
-     * Parameters: see member variables.
-     */
-    DL_VertexData(double px=0.0, double py=0.0, double pz=0.0,
-                  double pBulge=0.0) {
-        x = px;
-        y = py;
-        z = pz;
-        bulge = pBulge;
-    }
-
-    /*! X Coordinate of the vertex. */
-    double x;
-    /*! Y Coordinate of the vertex. */
-    double y;
-    /*! Z Coordinate of the vertex. */
-    double z;
-    /*! Bulge of vertex.
-     * (The tangent of 1/4 of the arc angle or 0 for lines) */
-    double bulge;
-};
-
-
-/**
- * Trace Data / solid data / 3d face data.
- *
- * @author Andrew Mustun
- */
-struct DL_TraceData {
-    DL_TraceData() {
-        thickness = 0.0;
-        for (int i=0; i<4; i++) {
-            x[i] = 0.0;
-            y[i] = 0.0;
-            z[i] = 0.0;
-        }
-    }
-    
-    /**
-     * Constructor.
-     * Parameters: see member variables.
-     */
-    DL_TraceData(double sx1, double sy1, double sz1,
-                double sx2, double sy2, double sz2,
-                double sx3, double sy3, double sz3,
-                double sx4, double sy4, double sz4,
-                double sthickness=0.0) {
-
-        thickness = sthickness;
-
-        x[0] = sx1;
-        y[0] = sy1;
-        z[0] = sz1;
-
-        x[1] = sx2;
-        y[1] = sy2;
-        z[1] = sz2;
-        
-        x[2] = sx3;
-        y[2] = sy3;
-        z[2] = sz3;
-        
-        x[3] = sx4;
-        y[3] = sy4;
-        z[3] = sz4;
-    }
-
-    /*! Thickness */
-    double thickness;
-    
-    /*! Points */
-    double x[4];
-    double y[4];
-    double z[4];
-};
-
-
-
-
-
-/**
- * Solid Data.
- *
- * @author AHM
- */
-typedef DL_TraceData DL_SolidData;
-
-
-/**
- * 3dface Data.
- */
-typedef DL_TraceData DL_3dFaceData;
-
-
-/**
- * Spline Data.
- *
- * @author Andrew Mustun
- */
-struct DL_SplineData {
-    /**
-     * Constructor.
-     * Parameters: see member variables.
-     */
-    DL_SplineData(int pDegree, int pNKnots, int pNControl, int pFlags) {
-		degree = pDegree;
-		nKnots = pNKnots;
-		nControl = pNControl;
-        flags = pFlags;
-    }
-
-    /*! Degree of the spline curve. */
-    unsigned int degree;
-
-    /*! Number of knots. */
-    unsigned int nKnots;
-
-    /*! Number of control points. */
-    unsigned int nControl;
-
-    /*! Flags */
-    int flags;
-};
-
-
-
-/**
- * Spline knot data.
- *
- * @author Andrew Mustun
- */
-struct DL_KnotData {
-    DL_KnotData() {}
-    /**
-     * Constructor.
-     * Parameters: see member variables.
-     */
-    DL_KnotData(double pk) {
-        k = pk;
-    }
-
-    /*! Knot value. */
-    double k;
-};
-
-
-
-/**
- * Spline control point data.
- *
- * @author Andrew Mustun
- */
-struct DL_ControlPointData {
-    /**
-     * Constructor.
-     * Parameters: see member variables.
-     */
-    DL_ControlPointData(double px, double py, double pz) {
-        x = px;
-        y = py;
-        z = pz;
-    }
-
-    /*! X coordinate of the control point. */
-    double x;
-    /*! Y coordinate of the control point. */
-    double y;
-    /*! Z coordinate of the control point. */
-    double z;
-};
-
-
-/**
- * Ellipse Data.
- *
- * @author Andrew Mustun
- */
-struct DL_EllipseData {
-    /**
-     * Constructor.
-     * Parameters: see member variables.
-     */
-    DL_EllipseData(double ecx, double ecy, double ecz,
-                   double emx, double emy, double emz,
-                   double eRatio,
-                   double eAngle1, double eAngle2) {
-
-        cx = ecx;
-        cy = ecy;
-        cz = ecz;
-        mx = emx;
-        my = emy;
-        mz = emz;
-        ratio = eRatio;
-        angle1 = eAngle1;
-        angle2 = eAngle2;
-    }
-
-    /*! X Coordinate of center point. */
-    double cx;
-    /*! Y Coordinate of center point. */
-    double cy;
-    /*! Z Coordinate of center point. */
-    double cz;
-
-    /*! X coordinate of the endpoint of the major axis. */
-    double mx;
-    /*! Y coordinate of the endpoint of the major axis. */
-    double my;
-    /*! Z coordinate of the endpoint of the major axis. */
-    double mz;
-
-    /*! Ratio of minor axis to major axis.. */
-    double ratio;
-    /*! Startangle of ellipse in rad. */
-    double angle1;
-    /*! Endangle of ellipse in rad. */
-    double angle2;
-};
-
-
-
-/**
- * Insert Data.
- *
- * @author Andrew Mustun
- */
-struct DL_InsertData {
-    /**
-     * Constructor.
-     * Parameters: see member variables.
-     */
-    DL_InsertData(const string& iName,
-                  double iipx, double iipy, double iipz,
-                  double isx, double isy, double isz,
-                  double iAngle,
-                  int iCols, int iRows,
-                  double iColSp, double iRowSp) {
-        name = iName;
-        ipx = iipx;
-        ipy = iipy;
-        ipz = iipz;
-        sx = isx;
-        sy = isy;
-        sz = isz;
-        angle = iAngle;
-        cols = iCols;
-        rows = iRows;
-        colSp = iColSp;
-        rowSp = iRowSp;
-    }
-
-    /*! Name of the referred block. */
-    string name;
-    /*! X Coordinate of insertion point. */
-    double ipx;
-    /*! Y Coordinate of insertion point. */
-    double ipy;
-    /*! Z Coordinate of insertion point. */
-    double ipz;
-    /*! X Scale factor. */
-    double sx;
-    /*! Y Scale factor. */
-    double sy;
-    /*! Z Scale factor. */
-    double sz;
-    /*! Rotation angle in rad. */
-    double angle;
-    /*! Number of colums if we insert an array of the block or 1. */
-    int cols;
-    /*! Number of rows if we insert an array of the block or 1. */
-    int rows;
-    /*! Values for the spacing between cols. */
-    double colSp;
-    /*! Values for the spacing between rows. */
-    double rowSp;
-};
-
-
-
-/**
- * MText Data.
- *
- * @author Andrew Mustun
- */
-struct DL_MTextData {
-    /**
-     * Constructor.
-     * Parameters: see member variables.
-     */
-    DL_MTextData(double tipx, double tipy, double tipz,
-                 double tHeight, double tWidth,
-                 int tAttachmentPoint,
-                 int tDrawingDirection,
-                 int tLineSpacingStyle,
-                 double tLineSpacingFactor,
-                 const string& tText,
-                 const string& tStyle,
-                 double tAngle) {
-        ipx = tipx;
-        ipy = tipy;
-        ipz = tipz;
-
-        height = tHeight;
-        width = tWidth;
-        attachmentPoint = tAttachmentPoint;
-        drawingDirection = tDrawingDirection;
-        lineSpacingStyle = tLineSpacingStyle;
-        lineSpacingFactor = tLineSpacingFactor;
-        text = tText;
-        style = tStyle;
-        angle = tAngle;
-    }
-
-    /*! X Coordinate of insertion point. */
-    double ipx;
-    /*! Y Coordinate of insertion point. */
-    double ipy;
-    /*! Z Coordinate of insertion point. */
-    double ipz;
-    /*! Text height */
-    double height;
-    /*! Width of the text box. */
-    double width;
-    /**
-     * Attachment point.
-     *
-     * 1 = Top left, 2 = Top center, 3 = Top right,
-     * 4 = Middle left, 5 = Middle center, 6 = Middle right,
-     * 7 = Bottom left, 8 = Bottom center, 9 = Bottom right
-     */
-    int attachmentPoint;
-    /**
-     * Drawing direction.
-     *
-     * 1 = left to right, 3 = top to bottom, 5 = by style
-     */
-    int drawingDirection;
-    /**
-     * Line spacing style.
-     *
-     * 1 = at least, 2 = exact
-     */
-    int lineSpacingStyle;
-    /**
-     * Line spacing factor. 0.25 .. 4.0  
-     */
-    double lineSpacingFactor;
-    /*! Text string. */
-    string text;
-    /*! Style string. */
-    string style;
-    /*! Rotation angle. */
-    double angle;
-};
-
-
-
-/**
- * Text Data.
- *
- * @author Andrew Mustun
- */
-struct DL_TextData {
-    /**
-     * Constructor.
-     * Parameters: see member variables.
-     */
-    DL_TextData(double tipx, double tipy, double tipz,
-                double tapx, double tapy, double tapz,
-                double tHeight, double tXScaleFactor,
-                int tTextGenerationFlags,
-                int tHJustification,
-                int tVJustification,
-                const string& tText,
-                const string& tStyle,
-                double tAngle) {
-        ipx = tipx;
-        ipy = tipy;
-        ipz = tipz;
-
-        apx = tapx;
-        apy = tapy;
-        apz = tapz;
-
-        height = tHeight;
-        xScaleFactor = tXScaleFactor;
-        textGenerationFlags = tTextGenerationFlags;
-        hJustification = tHJustification;
-        vJustification = tVJustification;
-        text = tText;
-        style = tStyle;
-        angle = tAngle;
-    }
-
-    /*! X Coordinate of insertion point. */
-    double ipx;
-    /*! Y Coordinate of insertion point. */
-    double ipy;
-    /*! Z Coordinate of insertion point. */
-    double ipz;
-
-    /*! X Coordinate of alignment point. */
-    double apx;
-    /*! Y Coordinate of alignment point. */
-    double apy;
-    /*! Z Coordinate of alignment point. */
-    double apz;
-
-    /*! Text height */
-    double height;
-    /*! Relative X scale factor. */
-    double xScaleFactor;
-    /*! 0 = default, 2 = Backwards, 4 = Upside down */
-    int textGenerationFlags;
-    /**
-     * Horizontal justification.
-     * 
-     * 0 = Left (default), 1 = Center, 2 = Right,
-     * 3 = Aligned, 4 = Middle, 5 = Fit
-     * For 3, 4, 5 the vertical alignment has to be 0.
-     */
-    int hJustification;
-    /**
-     * Vertical justification. 
-     *
-     * 0 = Baseline (default), 1 = Bottom, 2 = Middle, 3= Top
-     */
-    int vJustification;
-    /*! Text string. */
-    string text;
-    /*! Style (font). */
-    string style;
-    /*! Rotation angle of dimension text away from default orientation. */
-    double angle;
-};
-
-
-
-/**
- * Generic Dimension Data.
- *
- * @author Andrew Mustun
- */
-struct DL_DimensionData {
-    /**
-    * Constructor.
-    * Parameters: see member variables.
-    */
-    DL_DimensionData(double ddpx, double ddpy, double ddpz,
-                     double dmpx, double dmpy, double dmpz,
-                     int dType,
-                     int dAttachmentPoint,
-                     int dLineSpacingStyle,
-                     double dLineSpacingFactor,
-                     const string& dText,
-                     const string& dStyle,
-                     double dAngle) {
-
-        dpx = ddpx;
-        dpy = ddpy;
-        dpz = ddpz;
-
-        mpx = dmpx;
-        mpy = dmpy;
-        mpz = dmpz;
-
-        type = dType;
-
-        attachmentPoint = dAttachmentPoint;
-        lineSpacingStyle = dLineSpacingStyle;
-        lineSpacingFactor = dLineSpacingFactor;
-        text = dText;
-        style = dStyle;
-        angle = dAngle;
-    }
-
-    /*! X Coordinate of definition point. */
-    double dpx;
-    /*! Y Coordinate of definition point. */
-    double dpy;
-    /*! Z Coordinate of definition point. */
-    double dpz;
-    /*! X Coordinate of middle point of the text. */
-    double mpx;
-    /*! Y Coordinate of middle point of the text. */
-    double mpy;
-    /*! Z Coordinate of middle point of the text. */
-    double mpz;
-    /**
-     * Dimension type.
-     *
-     * 0   Rotated, horizontal, or vertical            
-     * 1   Aligned                                     
-     * 2   Angular                                     
-     * 3   Diametric                                    
-     * 4   Radius                                      
-     * 5   Angular 3-point                             
-     * 6   Ordinate                                    
-     * 64  Ordinate type. This is a bit value (bit 7)  
-     *     used only with integer value 6. If set,     
-     *     ordinate is X-type; if not set, ordinate is 
-     *     Y-type                                      
-     * 128 This is a bit value (bit 8) added to the    
-     *     other group 70 values if the dimension text 
-     *     has been positioned at a user-defined       
-     *    location rather than at the default location
-     */
-    int type;
-    /**
-     * Attachment point.
-     *
-     * 1 = Top left, 2 = Top center, 3 = Top right,
-     * 4 = Middle left, 5 = Middle center, 6 = Middle right,
-     * 7 = Bottom left, 8 = Bottom center, 9 = Bottom right,
-     */
-    int attachmentPoint;
-    /**
-     * Line spacing style.
-     *
-     * 1 = at least, 2 = exact
-     */
-    int lineSpacingStyle;
-    /**
-     * Line spacing factor. 0.25 .. 4.0  
-     */
-    double lineSpacingFactor;
-    /**
-     * Text string. 
-     *
-     * Text string entered explicitly by user or null
-     * or "<>" for the actual measurement or " " (one blank space).
-     * for supressing the text.
-     */
-    string text;
-    /*! Dimension style (font name). */
-    string style;
-    /**
-    * Rotation angle of dimension text away from
-     * default orientation.
-    */
-    double angle;
-};
-
-
-
-/**
- * Aligned Dimension Data.
- *
- * @author Andrew Mustun
- */
-struct DL_DimAlignedData {
-    /**
-     * Constructor.
-     * Parameters: see member variables.
-     */
-    DL_DimAlignedData(double depx1, double depy1, double depz1,
-                      double depx2, double depy2, double depz2) {
-
-        epx1 = depx1;
-        epy1 = depy1;
-        epz1 = depz1;
-
-        epx2 = depx2;
-        epy2 = depy2;
-        epz2 = depz2;
-    }
-
-    /*! X Coordinate of Extension point 1. */
-    double epx1;
-    /*! Y Coordinate of Extension point 1. */
-    double epy1;
-    /*! Z Coordinate of Extension point 1. */
-    double epz1;
-
-    /*! X Coordinate of Extension point 2. */
-    double epx2;
-    /*! Y Coordinate of Extension point 2. */
-    double epy2;
-    /*! Z Coordinate of Extension point 2. */
-    double epz2;
-};
-
-
-
-/**
- * Linear Dimension Data.
- *
- * @author Andrew Mustun
- */
-struct DL_DimLinearData {
-    /**
-     * Constructor.
-     * Parameters: see member variables.
-     */
-    DL_DimLinearData(double ddpx1, double ddpy1, double ddpz1,
-                     double ddpx2, double ddpy2, double ddpz2,
-                     double dAngle, double dOblique) {
-
-        dpx1 = ddpx1;
-        dpy1 = ddpy1;
-        dpz1 = ddpz1;
-
-        dpx2 = ddpx2;
-        dpy2 = ddpy2;
-        dpz2 = ddpz2;
-
-        angle = dAngle;
-        oblique = dOblique;
-    }
-
-    /*! X Coordinate of Extension point 1. */
-    double dpx1;
-    /*! Y Coordinate of Extension point 1. */
-    double dpy1;
-    /*! Z Coordinate of Extension point 1. */
-    double dpz1;
-
-    /*! X Coordinate of Extension point 2. */
-    double dpx2;
-    /*! Y Coordinate of Extension point 2. */
-    double dpy2;
-    /*! Z Coordinate of Extension point 2. */
-    double dpz2;
-
-    /*! Rotation angle (angle of dimension line) in degrees. */
-    double angle;
-    /*! Oblique angle in degrees. */
-    double oblique;
-};
-
-
-
-/**
- * Radial Dimension Data.
- *
- * @author Andrew Mustun
- */
-struct DL_DimRadialData {
-    /**
-     * Constructor.
-     * Parameters: see member variables.
-     */
-    DL_DimRadialData(double ddpx, double ddpy, double ddpz, double dleader) {
-        dpx = ddpx;
-        dpy = ddpy;
-        dpz = ddpz;
-
-        leader = dleader;
-    }
-
-    /*! X Coordinate of definition point. */
-    double dpx;
-    /*! Y Coordinate of definition point. */
-    double dpy;
-    /*! Z Coordinate of definition point. */
-    double dpz;
-
-    /*! Leader length */
-    double leader;
-};
-
-
-
-/**
- * Diametric Dimension Data.
- *
- * @author Andrew Mustun
- */
-struct DL_DimDiametricData {
-    /**
-     * Constructor.
-     * Parameters: see member variables.
-     */
-    DL_DimDiametricData(double ddpx, double ddpy, double ddpz, double dleader) {
-        dpx = ddpx;
-        dpy = ddpy;
-        dpz = ddpz;
-
-        leader = dleader;
-    }
-
-    /*! X Coordinate of definition point. */
-    double dpx;
-    /*! Y Coordinate of definition point. */
-    double dpy;
-    /*! Z Coordinate of definition point. */
-    double dpz;
-
-    /*! Leader length */
-    double leader;
-};
-
-
-
-/**
- * Angular Dimension Data.
- *
- * @author Andrew Mustun
- */
-struct DL_DimAngularData {
-    /**
-     * Constructor.
-     * Parameters: see member variables.
-     */
-    DL_DimAngularData(double ddpx1, double ddpy1, double ddpz1,
-                      double ddpx2, double ddpy2, double ddpz2,
-                      double ddpx3, double ddpy3, double ddpz3,
-                      double ddpx4, double ddpy4, double ddpz4) {
-
-        dpx1 = ddpx1;
-        dpy1 = ddpy1;
-        dpz1 = ddpz1;
-
-        dpx2 = ddpx2;
-        dpy2 = ddpy2;
-        dpz2 = ddpz2;
-
-        dpx3 = ddpx3;
-        dpy3 = ddpy3;
-        dpz3 = ddpz3;
-
-        dpx4 = ddpx4;
-        dpy4 = ddpy4;
-        dpz4 = ddpz4;
-    }
-
-    /*! X Coordinate of definition point 1. */
-    double dpx1;
-    /*! Y Coordinate of definition point 1. */
-    double dpy1;
-    /*! Z Coordinate of definition point 1. */
-    double dpz1;
-
-    /*! X Coordinate of definition point 2. */
-    double dpx2;
-    /*! Y Coordinate of definition point 2. */
-    double dpy2;
-    /*! Z Coordinate of definition point 2. */
-    double dpz2;
-
-    /*! X Coordinate of definition point 3. */
-    double dpx3;
-    /*! Y Coordinate of definition point 3. */
-    double dpy3;
-    /*! Z Coordinate of definition point 3. */
-    double dpz3;
-
-    /*! X Coordinate of definition point 4. */
-    double dpx4;
-    /*! Y Coordinate of definition point 4. */
-    double dpy4;
-    /*! Z Coordinate of definition point 4. */
-    double dpz4;
-};
-
-
-/**
- * Angular Dimension Data (3 points version).
- *
- * @author Andrew Mustun
- */
-struct DL_DimAngular3PData {
-    /**
-     * Constructor.
-     * Parameters: see member variables.
-     */
-    DL_DimAngular3PData(double ddpx1, double ddpy1, double ddpz1,
-                        double ddpx2, double ddpy2, double ddpz2,
-                        double ddpx3, double ddpy3, double ddpz3) {
-
-        dpx1 = ddpx1;
-        dpy1 = ddpy1;
-        dpz1 = ddpz1;
-
-        dpx2 = ddpx2;
-        dpy2 = ddpy2;
-        dpz2 = ddpz2;
-
-        dpx3 = ddpx3;
-        dpy3 = ddpy3;
-        dpz3 = ddpz3;
-    }
-
-    /*! X Coordinate of definition point 1. */
-    double dpx1;
-    /*! Y Coordinate of definition point 1. */
-    double dpy1;
-    /*! Z Coordinate of definition point 1. */
-    double dpz1;
-
-    /*! X Coordinate of definition point 2. */
-    double dpx2;
-    /*! Y Coordinate of definition point 2. */
-    double dpy2;
-    /*! Z Coordinate of definition point 2. */
-    double dpz2;
-
-    /*! X Coordinate of definition point 3. */
-    double dpx3;
-    /*! Y Coordinate of definition point 3. */
-    double dpy3;
-    /*! Z Coordinate of definition point 3. */
-    double dpz3;
-};
-
-
-
-/**
- * Ordinate Dimension Data.
- *
- * @author Andrew Mustun
- */
-struct DL_DimOrdinateData {
-    /**
-     * Constructor.
-     * Parameters: see member variables.
-     */
-    DL_DimOrdinateData(double ddpx1, double ddpy1, double ddpz1,
-                      double ddpx2, double ddpy2, double ddpz2,
-                      bool dxtype) {
-
-        dpx1 = ddpx1;
-        dpy1 = ddpy1;
-        dpz1 = ddpz1;
-
-        dpx2 = ddpx2;
-        dpy2 = ddpy2;
-        dpz2 = ddpz2;
-
-        xtype = dxtype;
-    }
-
-    /*! X Coordinate of definition point 1. */
-    double dpx1;
-    /*! Y Coordinate of definition point 1. */
-    double dpy1;
-    /*! Z Coordinate of definition point 1. */
-    double dpz1;
-
-    /*! X Coordinate of definition point 2. */
-    double dpx2;
-    /*! Y Coordinate of definition point 2. */
-    double dpy2;
-    /*! Z Coordinate of definition point 2. */
-    double dpz2;
-
-    /*! True if the dimension indicates the X-value, false for Y-value */
-    bool xtype;
-};
-
-
-
-/**
- * Leader (arrow).
- *
- * @author Andrew Mustun
- */
-struct DL_LeaderData {
-    /**
-     * Constructor.
-     * Parameters: see member variables.
-     */
-    DL_LeaderData(int lArrowHeadFlag,
-                  int lLeaderPathType,
-                  int lLeaderCreationFlag,
-                  int lHooklineDirectionFlag,
-                  int lHooklineFlag,
-                  double lTextAnnotationHeight,
-                  double lTextAnnotationWidth,
-                  int lNumber) {
-
-        arrowHeadFlag = lArrowHeadFlag;
-        leaderPathType = lLeaderPathType;
-        leaderCreationFlag = lLeaderCreationFlag;
-        hooklineDirectionFlag = lHooklineDirectionFlag;
-        hooklineFlag = lHooklineFlag;
-        textAnnotationHeight = lTextAnnotationHeight;
-        textAnnotationWidth = lTextAnnotationWidth;
-        number = lNumber;
-    }
-
-    /*! Arrow head flag (71). */
-    int arrowHeadFlag;
-    /*! Leader path type (72). */
-    int leaderPathType;
-    /*! Leader creation flag (73). */
-    int leaderCreationFlag;
-    /*! Hookline direction flag (74). */
-    int hooklineDirectionFlag;
-    /*! Hookline flag (75) */
-    int hooklineFlag;
-    /*! Text annotation height (40). */
-    double textAnnotationHeight;
-    /*! Text annotation width (41) */
-    double textAnnotationWidth;
-    /*! Number of vertices in leader (76). */
-    int number;
-};
-
-
-
-/**
- * Leader Vertex Data.
- *
- * @author Andrew Mustun
- */
-struct DL_LeaderVertexData {
-    /**
-     * Constructor.
-     * Parameters: see member variables.
-     */
-    DL_LeaderVertexData(double px=0.0, double py=0.0, double pz=0.0) {
-        x = px;
-        y = py;
-        z = pz;
-    }
-
-    /*! X Coordinate of the vertex. */
-    double x;
-    /*! Y Coordinate of the vertex. */
-    double y;
-    /*! Z Coordinate of the vertex. */
-    double z;
-};
-
-
-
-/**
- * Hatch data.
- */
-struct DL_HatchData {
-    /**
-     * Default constructor.
-     */
-    DL_HatchData() {}
-
-    /**
-     * Constructor.
-     * Parameters: see member variables.
-     */
-    DL_HatchData(int hNumLoops,
-                 bool hSolid,
-                 double hScale,
-                 double hAngle,
-                 const string& hPattern) {
-        numLoops = hNumLoops;
-        solid = hSolid;
-        scale = hScale;
-        angle = hAngle;
-        pattern = hPattern;
-    }
-
-    /*! Number of boundary paths (loops). */
-    int numLoops;
-    /*! Solid fill flag (true=solid, false=pattern). */
-    bool solid;
-    /*! Pattern scale or spacing */
-    double scale;
-    /*! Pattern angle */
-    double angle;
-    /*! Pattern name. */
-    string pattern;
-};
-
-
-
-/**
- * Hatch boundary path (loop) data.
- */
-struct DL_HatchLoopData {
-    /**
-     * Default constructor.
-     */
-    DL_HatchLoopData() {}
-    /**
-     * Constructor.
-     * Parameters: see member variables.
-     */
-    DL_HatchLoopData(int hNumEdges) {
-        numEdges = hNumEdges;
-    }
-
-    /*! Number of edges in this loop. */
-    int numEdges;
-};
-
-
-
-/**
- * Hatch edge data.
- */
-struct DL_HatchEdgeData {
-    /**
-     * Default constructor.
-     */
-    DL_HatchEdgeData() {
-        defined = false;
-    }
-
-    /**
-     * Constructor for a line edge.
-     * Parameters: see member variables.
-     */
-    DL_HatchEdgeData(double lx1, double ly1,
-                     double lx2, double ly2) {
-        x1 = lx1;
-        y1 = ly1;
-        x2 = lx2;
-        y2 = ly2;
-        type = 1;
-        defined = true;
-    }
-
-    /**
-     * Constructor for an arc edge.
-     * Parameters: see member variables.
-     */
-    DL_HatchEdgeData(double acx, double acy,
-                     double aRadius,
-                     double aAngle1, double aAngle2,
-                     bool aCcw) {
-        cx = acx;
-        cy = acy;
-        radius = aRadius;
-        angle1 = aAngle1;
-        angle2 = aAngle2;
-        ccw = aCcw;
-        type = 2;
-        defined = true;
-    }
-
-    /**
-     * Edge type. 1=line, 2=arc.
-     */
-    int type;
-
-    /**
-     * Set to true if this edge is fully defined.
-     */
-    bool defined;
-
-    /*! Start point (X). */
-    double x1;
-    /*! Start point (Y). */
-    double y1;
-    /*! End point (X). */
-    double x2;
-    /*! End point (Y). */
-    double y2;
-    /*! Center point of arc (X). */
-    double cx;
-    /*! Center point of arc (Y). */
-    double cy;
-    /*! Arc radius. */
-    double radius;
-    /*! Start angle. */
-    double angle1;
-    /*! End angle. */
-    double angle2;
-    /*! Counterclockwise flag. */
-    bool ccw;
-};
-
-
-
-/**
- * Image Data.
- *
- * @author Andrew Mustun
- */
-struct DL_ImageData {
-    /**
-     * Constructor.
-     * Parameters: see member variables.
-     */
-    DL_ImageData(const string& iref,
-                  double iipx, double iipy, double iipz,
-				  double iux, double iuy, double iuz,
-				  double ivx, double ivy, double ivz,
-				  int iwidth, int iheight,
-				  int ibrightness, int icontrast, int ifade) {
-        ref = iref;
-        ipx = iipx;
-        ipy = iipy;
-        ipz = iipz;
-		ux = iux;
-		uy = iuy;
-		uz = iuz;
-		vx = ivx;
-		vy = ivy;
-		vz = ivz;
-		width = iwidth;
-		height = iheight;
-		brightness = ibrightness;
-		contrast = icontrast;
-		fade = ifade;
-    }
-
-    /*! Reference to the image file 
-	    (unique, used to refer to the image def object). */
-    string ref;
-    /*! X Coordinate of insertion point. */
-    double ipx;
-    /*! Y Coordinate of insertion point. */
-    double ipy;
-    /*! Z Coordinate of insertion point. */
-    double ipz;
-	/*! X Coordinate of u vector along bottom of image. */
-	double ux;
-	/*! Y Coordinate of u vector along bottom of image. */
-	double uy;
-	/*! Z Coordinate of u vector along bottom of image. */
-	double uz;
-	/*! X Coordinate of v vector along left side of image. */
-	double vx;
-	/*! Y Coordinate of v vector along left side of image. */
-	double vy;
-	/*! Z Coordinate of v vector along left side of image. */
-	double vz;
-	/*! Width of image in pixel. */
-	int width;
-	/*! Height of image in pixel. */
-	int height;
-	/*! Brightness (0..100, default = 50). */
-	int brightness;
-	/*! Contrast (0..100, default = 50). */
-	int contrast;
-	/*! Fade (0..100, default = 0). */
-	int fade;
-};
-
-
-
-/**
- * Image Definition Data.
- *
- * @author Andrew Mustun
- */
-struct DL_ImageDefData {
-    /**
-     * Constructor.
-     * Parameters: see member variables.
-     */
-    DL_ImageDefData(const string& iref,
-				 const string& ifile) {
-        ref = iref;
-		file = ifile;
-    }
-
-    /*! Reference to the image file 
-	    (unique, used to refer to the image def object). */
-    string ref;
-
-	/*! Image file */
-	string file;
-};
-
-#endif
-
-// EOF
-
diff --git a/src/dxflib/dl_exception.h b/src/dxflib/dl_exception.h
deleted file mode 100644
index 553a447..0000000
--- a/src/dxflib/dl_exception.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/****************************************************************************
-** $Id: dl_exception.h 8171 2009-12-11 12:31:36Z fredbed $
-**
-** Copyright (C) 2001-2003 RibbonSoft. All rights reserved.
-** Copyright (C) 2001 Robert J. Campbell Jr.
-**
-** This file is part of the dxflib project.
-**
-** This file may be distributed and/or modified under the terms of the
-** GNU General Public License version 2 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file.
-**
-** Licensees holding valid dxflib Professional Edition licenses may use 
-** this file in accordance with the dxflib Commercial License
-** Agreement provided with the Software.
-**
-** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
-** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-**
-** See http://www.ribbonsoft.com for further details.
-**
-** Contact info at ribbonsoft.com if any conditions of this licensing are
-** not clear to you.
-**
-**********************************************************************/
-
-#ifndef DL_EXCEPTION_H
-#define DL_EXCEPTION_H
-
-#if _MSC_VER > 1000
-#pragma once
-#endif // _MSC_VER > 1000
-
-/**
- * Used for exception handling.
- */
-class DL_Exception {}
-;
-
-/**
- * Used for exception handling.
- */
-class DL_NullStrExc : public DL_Exception {}
-;
-
-/**
- * Used for exception handling.
- */
-class DL_GroupCodeExc : public DL_Exception {
-    DL_GroupCodeExc(int gc=0) : groupCode(gc) {}
-    int groupCode;
-};
-#endif
-
diff --git a/src/dxflib/dl_extrusion.h b/src/dxflib/dl_extrusion.h
deleted file mode 100644
index 750123d..0000000
--- a/src/dxflib/dl_extrusion.h
+++ /dev/null
@@ -1,144 +0,0 @@
-/****************************************************************************
-** $Id: dl_extrusion.h 8171 2009-12-11 12:31:36Z fredbed $
-**
-** Copyright (C) 2001-2003 RibbonSoft. All rights reserved.
-**
-** This file is part of the dxflib project.
-**
-** This file may be distributed and/or modified under the terms of the
-** GNU General Public License version 2 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file.
-**
-** Licensees holding valid dxflib Professional Edition licenses may use 
-** this file in accordance with the dxflib Commercial License
-** Agreement provided with the Software.
-**
-** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
-** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-**
-** See http://www.ribbonsoft.com for further details.
-**
-** Contact info at ribbonsoft.com if any conditions of this licensing are
-** not clear to you.
-**
-**********************************************************************/
-
-#ifndef DL_EXTRUSION_H
-#define DL_EXTRUSION_H
-
-#include <math.h>
-
-
-/**
- * Storing and passing around attributes. Attributes
- * are the layer name, color, width and line type.
- *
- * @author Andrew Mustun
- */
-class DL_Extrusion {
-
-public:
-
-    /**
-     * Default constructor.
-     */
-    DL_Extrusion() {
-		direction = new double[3];
-        setDirection(0.0, 0.0, 1.0);
-        setElevation(0.0);
-    }
-
-
-    /**
-     * Destructor.
-     */
-	~DL_Extrusion() {
-		delete direction ;
-    }
-
-
-    /**
-     * Constructor for DXF extrusion.
-     *
-     * @param direction Vector of axis along which the entity shall be extruded
-	 *                  this is also the Z axis of the Entity coordinate system
-     * @param elevation Distance of the entities XY plane from the origin of the
-	 *                  world coordinate system
-     */
-    DL_Extrusion(double dx, double dy, double dz, double elevation) {
-		direction = new double[3];
-		setDirection(dx, dy, dz);
-        setElevation(elevation);
-    }
-
-
-
-    /**
-     * Sets the direction vector. 
-     */
-    void setDirection(double dx, double dy, double dz) {
-		direction[0]=dx;
-        direction[1]=dy;
-        direction[2]=dz;
-    }
-
-
-
-    /**
-     * @return direction vector.
-     */
-    double* getDirection() const {
-        return direction;
-    }
-
-
-
-    /**
-     * @return direction vector.
-     */
-    void getDirection(double dir[]) const {
-        dir[0]=direction[0];
-        dir[1]=direction[1];
-        dir[2]=direction[2];
-    }
-
-
-
-    /**
-     * Sets the elevation.
-     */
-    void setElevation(double elevation) {
-        this->elevation = elevation;
-    }
-
-
-
-    /**
-     * @return Elevation.
-     */
-    double getElevation() const {
-        return elevation;
-    }
-
-
-
-    /**
-     * Copies extrusion (deep copies) from another extrusion object.
-     */
-    DL_Extrusion operator = (const DL_Extrusion& extru) {
-        setDirection(extru.direction[0], extru.direction[1], extru.direction[2]);
-        setElevation(extru.elevation);
-
-        return *this;
-    }
-
-
-
-private:
-	double *direction;
-	double elevation;
-};
-
-#endif
-
diff --git a/src/dxflib/dl_writer.h b/src/dxflib/dl_writer.h
deleted file mode 100644
index 429ac5c..0000000
--- a/src/dxflib/dl_writer.h
+++ /dev/null
@@ -1,618 +0,0 @@
-/****************************************************************************
-** $Id: dl_writer.h 8171 2009-12-11 12:31:36Z fredbed $
-**
-** Copyright (C) 2001-2003 RibbonSoft. All rights reserved.
-** Copyright (C) 2001 Robert J. Campbell Jr.
-**
-** This file is part of the dxflib project.
-**
-** This file may be distributed and/or modified under the terms of the
-** GNU General Public License version 2 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file.
-**
-** Licensees holding valid dxflib Professional Edition licenses may use 
-** this file in accordance with the dxflib Commercial License
-** Agreement provided with the Software.
-**
-** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
-** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-**
-** See http://www.ribbonsoft.com for further details.
-**
-** Contact info at ribbonsoft.com if any conditions of this licensing are
-** not clear to you.
-**
-**********************************************************************/
-
-#ifndef DL_WRITER_H
-#define DL_WRITER_H
-
-#if _MSC_VER > 1000
-#pragma once
-#endif // _MSC_VER > 1000
-
-#if defined(__OS2__)||defined(__EMX__)
-#define strcasecmp(s,t) stricmp(s,t)
-#endif
-
-#if defined(WIN32)
-#define strcasecmp(s,t) _stricmp(s,t)
-#endif
-
-#include <iostream>
-
-#include "dl_attributes.h"
-#include "dl_codes.h"
-
-#include <cstring>
-
-/**
- * Defines interface for writing low level DXF constructs to
- * a file. Implementation is defined in derived classes that write
- * to binary or ASCII files.
- * 
- * Implements functions that write higher level constructs in terms of
- * the low level ones.
- *
- * @todo Add error checking for string/entry length.
- */
-class DL_Writer {
-public:
-    /**
-     * @para version DXF version. Defaults to VER_2002.
-     */
-    DL_Writer(DL_Codes::version version) : m_handle(0x30) {
-        this->version = version;
-        modelSpaceHandle = 0;
-        paperSpaceHandle = 0;
-        paperSpace0Handle = 0;
-    }
-
-    virtual ~DL_Writer() {}
-    ;
-
-    /** Generic section for section 'name'.
-     *
-     * <pre>
-     *   0
-     *  SECTION
-     *   2
-     *  name
-     * </pre>
-     */
-    void section(const char* name) const {
-        dxfString(0, "SECTION");
-        dxfString(2, name);
-    }
-
-    /**
-     * Section HEADER
-     *
-     * <pre>
-     *   0
-     *  SECTION
-     *   2
-     *  HEADER
-     * </pre>
-     */
-    void sectionHeader() const {
-        section("HEADER");
-    }
-
-    /**
-     * Section TABLES
-     *
-     * <pre>
-     *   0
-     *  SECTION
-     *   2
-     *  TABLES
-     * </pre>
-     */
-    void sectionTables() const {
-        section("TABLES");
-    }
-
-    /**
-     * Section BLOCKS
-     *
-     * <pre>
-     *   0
-     *  SECTION
-     *   2
-     *  BLOCKS
-     * </pre>
-     */
-    void sectionBlocks() const {
-        section("BLOCKS");
-    }
-
-    /**
-     * Section ENTITIES
-     *
-     * <pre>
-     *   0
-     *  SECTION
-     *   2
-     *  ENTITIES
-     * </pre>
-     */
-    void sectionEntities() const {
-        section("ENTITIES");
-    }
-
-    /**
-     * Section CLASSES
-     *
-     * <pre>
-     *   0
-     *  SECTION
-     *   2
-     *  CLASSES
-     * </pre>
-     */
-    void sectionClasses() const {
-        section("CLASSES");
-    }
-
-    /**
-     * Section OBJECTS
-     *
-     * <pre>
-     *   0
-     *  SECTION
-     *   2
-     *  OBJECTS
-     * </pre>
-     */
-    void sectionObjects() const {
-        section("OBJECTS");
-    }
-
-    /**
-     * End of a section.
-     *
-     * <pre>
-     *   0
-     *  ENDSEC
-     * </pre>
-     */
-    void sectionEnd() const {
-        dxfString(0, "ENDSEC");
-    }
-
-    /**
-     * Generic table for table 'name' with 'num' entries:
-     *
-     * <pre>
-     *   0
-     *  TABLE
-     *   2
-     *  name
-     *  70
-     *   num
-     * </pre>
-     */
-    void table(const char* name, int num, int handle) const {
-        dxfString(0, "TABLE");
-        dxfString(2, name);
-        if (version>=VER_2000) {
-            dxfHex(5, handle);
-            dxfString(100, "AcDbSymbolTable");
-        }
-        dxfInt(70, num);
-    }
-
-    /** Table for layers.
-     *
-     * @param num Number of layers in total.
-     *
-     * <pre>
-     *   0
-     *  TABLE
-     *   2
-     *  LAYER
-     *   70
-     *      num
-     * </pre>
-     */
-    void tableLayers(int num) const {
-        table("LAYER", num, 2);
-    }
-
-    /** Table for line types.
-     *
-     * @param num Number of line types in total.
-     *
-     * <pre>
-     *   0
-     *  TABLE
-     *   2
-     *  LTYPE
-     *   70
-     *      num
-     * </pre>
-     */
-    void tableLineTypes(int num) const {
-        //lineTypeHandle = 5;
-        table("LTYPE", num, 5);
-    }
-
-    /** Table for application id.
-     *
-     * @param num Number of registered applications in total.
-     *
-     * <pre>
-     *   0
-     *  TABLE
-     *   2
-     *  APPID
-     *   70
-     *      num
-     * </pre>
-     */
-    void tableAppid(int num) const {
-        table("APPID", num, 9);
-    }
-
-    /**
-     * End of a table.
-     *
-     * <pre>
-     *   0
-     *  ENDTAB
-     * </pre>
-     */
-    void tableEnd() const {
-        dxfString(0, "ENDTAB");
-    }
-
-    /**
-     * End of the DXF file.
-     *
-     * <pre>
-     *   0
-     *  EOF
-     * </pre>
-     */
-    void dxfEOF() const {
-        dxfString(0, "EOF");
-    }
-
-    /**
-     * Comment.
-     *
-     * <pre>
-     *  999
-     *  text
-     * </pre>
-     */
-    void comment(const char* text) const {
-        dxfString(999, text);
-    }
-
-    /**
-     * Entity.
-     *
-     * <pre>
-     *   0
-     *  entTypeName
-     * </pre>
-	 *
-	 * @return Unique handle or 0.
-     */
-    void entity(const char* entTypeName) const {
-        dxfString(0, entTypeName);
-        if (version>=VER_2000) {
-            handle();
-        }
-    }
-
-    /**
-     * Attributes of an entity.
-     *
-     * <pre>
-     *   8
-     *  layer
-     *  62
-     *  color
-     *  39
-     *  width
-     *   6
-     *  linetype
-     * </pre>
-     */
-    void entityAttributes(const DL_Attributes& attrib) const {
-	
-		// layer name:
-        dxfString(8, attrib.getLayer());
-		
-		// R12 doesn't accept BYLAYER values. The value has to be missing
-		//   in that case.
-        if (version>=VER_2000 || 
-			attrib.getColor()!=256) {
-        	dxfInt(62, attrib.getColor());
-		}
-        if (version>=VER_2000) {
-            dxfInt(370, attrib.getWidth());
-        }
-        if (version>=VER_2000 || 
-			strcasecmp(attrib.getLineType().c_str(), "BYLAYER")) {
-	        dxfString(6, attrib.getLineType());
-		}
-    }
-
-    /**
-     * Subclass.
-     */
-    void subClass(const char* sub) const {
-        dxfString(100, sub);
-    }
-
-    /**
-     * Layer (must be in the TABLES section LAYER).
-     *
-     * <pre>
-     *   0
-     *  LAYER
-     * </pre>
-     */
-    void tableLayerEntry(unsigned long int h=0)  const {
-        dxfString(0, "LAYER");
-        if (version>=VER_2000) {
-            if (h==0) {
-                handle();
-            } else {
-                dxfHex(5, h);
-            }
-            dxfString(100, "AcDbSymbolTableRecord");
-            dxfString(100, "AcDbLayerTableRecord");
-        }
-    }
-
-    /**
-     * Line type (must be in the TABLES section LTYPE).
-     *
-     * <pre>
-     *   0
-     *  LTYPE
-     * </pre>
-     */
-    void tableLineTypeEntry(unsigned long int h=0)  const {
-        dxfString(0, "LTYPE");
-        if (version>=VER_2000) {
-            if (h==0) {
-                handle();
-            } else {
-                dxfHex(5, h);
-            }
-            //dxfHex(330, 0x5);
-            dxfString(100, "AcDbSymbolTableRecord");
-            dxfString(100, "AcDbLinetypeTableRecord");
-        }
-    }
-
-    /**
-     * Appid (must be in the TABLES section APPID).
-     *
-     * <pre>
-     *   0
-     *  APPID
-     * </pre>
-     */
-    void tableAppidEntry(unsigned long int h=0)  const {
-        dxfString(0, "APPID");
-        if (version>=VER_2000) {
-            if (h==0) {
-                handle();
-            } else {
-                dxfHex(5, h);
-            }
-            //dxfHex(330, 0x9);
-            dxfString(100, "AcDbSymbolTableRecord");
-            dxfString(100, "AcDbRegAppTableRecord");
-        }
-    }
-
-    /**
-     * Block (must be in the section BLOCKS).
-     *
-     * <pre>
-     *   0
-     *  BLOCK
-     * </pre>
-     */
-    void sectionBlockEntry(unsigned long int h=0)  const {
-        dxfString(0, "BLOCK");
-        if (version>=VER_2000) {
-            if (h==0) {
-                handle();
-            } else {
-                dxfHex(5, h);
-            }
-            //dxfHex(330, blockHandle);
-            dxfString(100, "AcDbEntity");
-            if (h==0x1C) {
-                dxfInt(67, 1);
-            }
-            dxfString(8, "0");                 // TODO: Layer for block
-            dxfString(100, "AcDbBlockBegin");
-        }
-    }
-
-    /**
-     * End of Block (must be in the section BLOCKS).
-     *
-     * <pre>
-     *   0
-     *  ENDBLK
-     * </pre>
-     */
-    void sectionBlockEntryEnd(unsigned long int h=0)  const {
-        dxfString(0, "ENDBLK");
-        if (version>=VER_2000) {
-            if (h==0) {
-                handle();
-            } else {
-                dxfHex(5, h);
-            }
-            //dxfHex(330, blockHandle);
-            dxfString(100, "AcDbEntity");
-            if (h==0x1D) {
-                dxfInt(67, 1);
-            }
-            dxfString(8, "0");                 // TODO: Layer for block
-            dxfString(100, "AcDbBlockEnd");
-        }
-    }
-
-    void color(int col=256) const {
-        dxfInt(62, col);
-    }
-    void lineType(const char *lt) const {
-        dxfString(6, lt);
-    }
-    void lineTypeScale(double scale) const {
-        dxfReal(48, scale);
-    }
-    void lineWeight(int lw) const {
-        dxfInt(370, lw);
-    }
-
-    void coord(int gc, double x, double y, double z=0) const {
-        dxfReal(gc, x);
-        dxfReal(gc+10, y);
-        dxfReal(gc+20, z);
-    }
-
-    void coordTriplet(int gc, const double* value) const {
-        if (value) {
-            dxfReal(gc, *value++);
-            dxfReal(gc+10, *value++);
-            dxfReal(gc+20, *value++);
-        }
-    }
-
-    void resetHandle() const {
-        m_handle = 1;
-    }
-
-    /**
-     * Writes a unique handle and returns it.
-     */
-    unsigned long handle(int gc=5) const {
-        // handle has to be hex
-        dxfHex(gc, m_handle);
-        return m_handle++;
-    }
-
-    /**
-     * @return Next handle that will be written.
-     */
-    unsigned long getNextHandle() const {
-        return m_handle;
-    }
-	
-    /**
-     * Increases handle, so that the handle returned remains available.
-     */
-    unsigned long incHandle() const {
-        return m_handle++;
-    }
-
-    /**
-     * Sets the handle of the model space. Entities refer to 
-     * this handle.
-     */
-    void setModelSpaceHandle(unsigned long h) {
-        modelSpaceHandle = h;
-    }
-
-    unsigned long getModelSpaceHandle() {
-        return modelSpaceHandle;
-    }
-
-    /**
-     * Sets the handle of the paper space. Some special blocks refer to 
-     * this handle.
-     */
-    void setPaperSpaceHandle(unsigned long h) {
-        paperSpaceHandle = h;
-    }
-
-    unsigned long getPaperSpaceHandle() {
-        return paperSpaceHandle;
-    }
-
-    /**
-     * Sets the handle of the paper space 0. Some special blocks refer to 
-     * this handle.
-     */
-    void setPaperSpace0Handle(unsigned long h) {
-        paperSpace0Handle = h;
-    }
-
-    unsigned long getPaperSpace0Handle() {
-        return paperSpace0Handle;
-    }
-
-    /**
-     * Must be overwritten by the implementing class to write a
-     * real value to the file.
-     *
-     * @param gc Group code.
-     * @param value The real value.
-     */
-    virtual void dxfReal(int gc, double value) const = 0;
-
-    /**
-     * Must be overwritten by the implementing class to write an
-     * int value to the file.
-     *
-     * @param gc Group code.
-     * @param value The int value.
-     */
-    virtual void dxfInt(int gc, int value) const = 0;
-
-    /**
-     * Must be overwritten by the implementing class to write an
-     * int value (hex) to the file.
-     *
-     * @param gc Group code.
-     * @param value The int value.
-     */
-    virtual void dxfHex(int gc, int value) const = 0;
-
-    /**
-     * Must be overwritten by the implementing class to write a
-     * string to the file.
-     *
-     * @param gc Group code.
-     * @param value The string.
-     */
-    virtual void dxfString(int gc, const char* value) const = 0;
-
-    /**
-     * Must be overwritten by the implementing class to write a
-     * string to the file.
-     *
-     * @param gc Group code.
-     * @param value The string.
-     */
-    virtual void dxfString(int gc, const string& value) const = 0;
-
-protected:
-    mutable unsigned long m_handle;
-    mutable unsigned long modelSpaceHandle;
-    mutable unsigned long paperSpaceHandle;
-    mutable unsigned long paperSpace0Handle;
-
-    /**
-     * DXF version to be created.
-     */
-    DL_Codes::version version;
-private:
-};
-
-#endif
diff --git a/src/dxflib/dl_writer_ascii.cpp b/src/dxflib/dl_writer_ascii.cpp
deleted file mode 100644
index aa115b3..0000000
--- a/src/dxflib/dl_writer_ascii.cpp
+++ /dev/null
@@ -1,153 +0,0 @@
-/****************************************************************************
-** $Id: dl_writer_ascii.cpp 8171 2009-12-11 12:31:36Z fredbed $
-**
-** Copyright (C) 2001-2003 RibbonSoft. All rights reserved.
-** Copyright (C) 2001 Robert J. Campbell Jr.
-**
-** This file is part of the dxflib project.
-**
-** This file may be distributed and/or modified under the terms of the
-** GNU General Public License version 2 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file.
-**
-** Licensees holding valid dxflib Professional Edition licenses may use 
-** this file in accordance with the dxflib Commercial License
-** Agreement provided with the Software.
-**
-** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
-** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-**
-** See http://www.ribbonsoft.com for further details.
-**
-** Contact info at ribbonsoft.com if any conditions of this licensing are
-** not clear to you.
-**
-**********************************************************************/
-
-#if _MSC_VER > 1000
-#pragma once
-#endif // _MSC_VER > 1000
-
-#include <stdio.h>
-
-#include "dl_writer_ascii.h"
-#include "dl_exception.h"
-
-
-/**
- * Closes the output file.
- */
-void DL_WriterA::close() const {
-    m_ofile.close();
-}
-
-
-/**
- * @retval true Opening file has failed.
- * @retval false Otherwise.
- */
-bool DL_WriterA::openFailed() const {
-	return m_ofile.fail();
-}
-
-
-
-/**
- * Writes a real (double) variable to the DXF file.
- *
- * @param gc Group code.
- * @param value Double value
- */
-void DL_WriterA::dxfReal(int gc, double value) const {
-    char str[256];
-    sprintf(str, "%.16lf", value);
-	
-	// fix for german locale:
-	strReplace(str, ',', '.');
-
-    // Cut away those zeros at the end:
-    bool dot = false;
-    int end = -1;
-    for (unsigned int i=0; i<strlen(str); ++i) {
-        if (str[i]=='.') {
-            dot = true;
-            end = i+2;
-            continue;
-        } else if (dot && str[i]!='0') {
-            end = i+1;
-        }
-    }
-    if (end>0 && end<(int)strlen(str)) {
-        str[end] = '\0';
-    }
-
-    dxfString(gc, str);
-    m_ofile.flush();
-}
-
-
-
-/**
- * Writes an int variable to the DXF file.
- *
- * @param gc Group code.
- * @param value Int value
- */
-void DL_WriterA::dxfInt(int gc, int value) const {
-    m_ofile << (gc<10 ? "  " : (gc<100 ? " " : "")) << gc << "\n"
-    << value << "\n";
-}
-
-
-
-/**
- * Writes a hex int variable to the DXF file.
- *
- * @param gc Group code.
- * @param value Int value
- */
-void DL_WriterA::dxfHex(int gc, int value) const {
-    char str[12];
-    sprintf(str, "%0X", value);
-    dxfString(gc, str);
-}
-
-
-
-/**
- * Writes a string variable to the DXF file.
- *
- * @param gc Group code.
- * @param value String
- */
-void DL_WriterA::dxfString(int gc, const char* value) const {
-    if (value==NULL) {
-#ifndef __GCC2x__
-        //throw DL_NullStrExc();
-#endif
-    }
-    m_ofile << (gc<10 ? "  " : (gc<100 ? " " : "")) << gc << "\n"
-    << value << "\n";
-}
-
-
-
-void DL_WriterA::dxfString(int gc, const string& value) const {
-    m_ofile << (gc<10 ? "  " : (gc<100 ? " " : "")) << gc << "\n"
-    << value << "\n";
-}
-
-
-/**
- * Replaces every occurence of src with dest in the null terminated str.
- */
-void DL_WriterA::strReplace(char* str, char src, char dest) {
-	size_t i;
-	for	(i=0; i<strlen(str); i++) {
-		if (str[i]==src) {
-			str[i] = dest;
-		}
-	}
-}
-
diff --git a/src/dxflib/dl_writer_ascii.h b/src/dxflib/dl_writer_ascii.h
deleted file mode 100644
index 387127f..0000000
--- a/src/dxflib/dl_writer_ascii.h
+++ /dev/null
@@ -1,75 +0,0 @@
-/****************************************************************************
-** $Id: dl_writer_ascii.h 8171 2009-12-11 12:31:36Z fredbed $
-**
-** Copyright (C) 2001-2003 RibbonSoft. All rights reserved.
-** Copyright (C) 2001 Robert J. Campbell Jr.
-**
-** This file is part of the dxflib project.
-**
-** This file may be distributed and/or modified under the terms of the
-** GNU General Public License version 2 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file.
-**
-** Licensees holding valid dxflib Professional Edition licenses may use 
-** this file in accordance with the dxflib Commercial License
-** Agreement provided with the Software.
-**
-** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
-** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-**
-** See http://www.ribbonsoft.com for further details.
-**
-** Contact info at ribbonsoft.com if any conditions of this licensing are
-** not clear to you.
-**
-**********************************************************************/
-
-#ifndef DL_WRITER_ASCII_H
-#define DL_WRITER_ASCII_H
-
-#if _MSC_VER > 1000
-#pragma once
-#endif // _MSC_VER > 1000
-
-#include "dl_writer.h"
-#include <fstream>
-#include <string>
-using std::string;
-
-/**
- * Implements functions defined in DL_Writer for writing low
- *   level DXF constructs to an ASCII format DXF file.
- * 
- * @para fname File name of the file to be created.
- * @para version DXF version. Defaults to VER_2002.
- *
- * @todo What if \c fname is NULL?  Or \c fname can't be opened for
- * another reason?
- */
-class DL_WriterA : public DL_Writer {
-public:
-    DL_WriterA(const char* fname, DL_Codes::version version=VER_2000)
-            : DL_Writer(version), m_ofile(fname) {}
-    virtual ~DL_WriterA() {}
-
-	bool openFailed() const;
-    void close() const;
-    void dxfReal(int gc, double value) const;
-    void dxfInt(int gc, int value) const;
-    void dxfHex(int gc, int value) const;
-    void dxfString(int gc, const char* value) const;
-    void dxfString(int gc, const string& value) const;
-
-	static void strReplace(char* str, char src, char dest);
-
-private:
-    /**
-     * DXF file to be created.
-     */
-    mutable std::ofstream m_ofile;
-
-};
-
-#endif
-
diff --git a/src/libjpeg/ansi2knr.c b/src/libjpeg/ansi2knr.c
deleted file mode 100644
index 0e3ab13..0000000
--- a/src/libjpeg/ansi2knr.c
+++ /dev/null
@@ -1,693 +0,0 @@
-/* ansi2knr.c */
-/* Convert ANSI C function definitions to K&R ("traditional C") syntax */
-
-/*
-ansi2knr is distributed in the hope that it will be useful, but WITHOUT ANY
-WARRANTY.  No author or distributor accepts responsibility to anyone for the
-consequences of using it or for whether it serves any particular purpose or
-works at all, unless he says so in writing.  Refer to the GNU General Public
-License (the "GPL") for full details.
-
-Everyone is granted permission to copy, modify and redistribute ansi2knr,
-but only under the conditions described in the GPL.  A copy of this license
-is supposed to have been given to you along with ansi2knr so you can know
-your rights and responsibilities.  It should be in a file named COPYLEFT.
-[In the IJG distribution, the GPL appears below, not in a separate file.]
-Among other things, the copyright notice and this notice must be preserved
-on all copies.
-
-We explicitly state here what we believe is already implied by the GPL: if
-the ansi2knr program is distributed as a separate set of sources and a
-separate executable file which are aggregated on a storage medium together
-with another program, this in itself does not bring the other program under
-the GPL, nor does the mere fact that such a program or the procedures for
-constructing it invoke the ansi2knr executable bring any other part of the
-program under the GPL.
-*/
-
-/*
----------- Here is the GNU GPL file COPYLEFT, referred to above ----------
------ These terms do NOT apply to the JPEG software itself; see README ------
-
-		    GHOSTSCRIPT GENERAL PUBLIC LICENSE
-		    (Clarified 11 Feb 1988)
-
- Copyright (C) 1988 Richard M. Stallman
- Everyone is permitted to copy and distribute verbatim copies of this
- license, but changing it is not allowed.  You can also use this wording
- to make the terms for other programs.
-
-  The license agreements of most software companies keep you at the
-mercy of those companies.  By contrast, our general public license is
-intended to give everyone the right to share Ghostscript.  To make sure
-that you get the rights we want you to have, we need to make
-restrictions that forbid anyone to deny you these rights or to ask you
-to surrender the rights.  Hence this license agreement.
-
-  Specifically, we want to make sure that you have the right to give
-away copies of Ghostscript, that you receive source code or else can get
-it if you want it, that you can change Ghostscript or use pieces of it
-in new free programs, and that you know you can do these things.
-
-  To make sure that everyone has such rights, we have to forbid you to
-deprive anyone else of these rights.  For example, if you distribute
-copies of Ghostscript, 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 tell them their rights.
-
-  Also, for our own protection, we must make certain that everyone finds
-out that there is no warranty for Ghostscript.  If Ghostscript is
-modified by someone else and passed on, we want its recipients to know
-that what they have is not what we distributed, so that any problems
-introduced by others will not reflect on our reputation.
-
-  Therefore we (Richard M. Stallman and the Free Software Foundation,
-Inc.) make the following terms which say what you must do to be allowed
-to distribute or change Ghostscript.
-
-
-			COPYING POLICIES
-
-  1. You may copy and distribute verbatim copies of Ghostscript source
-code as you receive it, in any medium, provided that you conspicuously
-and appropriately publish on each copy a valid copyright and license
-notice "Copyright (C) 1989 Aladdin Enterprises.  All rights reserved.
-Distributed by Free Software Foundation, Inc." (or with whatever year is
-appropriate); keep intact the notices on all files that refer to this
-License Agreement and to the absence of any warranty; and give any other
-recipients of the Ghostscript program a copy of this License Agreement
-along with the program.  You may charge a distribution fee for the
-physical act of transferring a copy.
-
-  2. You may modify your copy or copies of Ghostscript or any portion of
-it, and copy and distribute such modifications under the terms of
-Paragraph 1 above, provided that you also do the following:
-
-    a) cause the modified files to carry prominent notices stating
-    that you changed the files and the date of any change; and
-
-    b) cause the whole of any work that you distribute or publish,
-    that in whole or in part contains or is a derivative of Ghostscript
-    or any part thereof, to be licensed at no charge to all third
-    parties on terms identical to those contained in this License
-    Agreement (except that you may choose to grant more extensive
-    warranty protection to some or all third parties, at your option).
-
-    c) You may charge a distribution fee for the physical act of
-    transferring a copy, and you may at your option offer warranty
-    protection in exchange for a fee.
-
-Mere aggregation of another unrelated program with this program (or its
-derivative) on a volume of a storage or distribution medium does not bring
-the other program under the scope of these terms.
-
-  3. You may copy and distribute Ghostscript (or a portion or derivative
-of it, under Paragraph 2) in object code or executable form under the
-terms of Paragraphs 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
-    Paragraphs 1 and 2 above; or,
-
-    b) accompany it with a written offer, valid for at least three
-    years, to give any third party free (except for a nominal
-    shipping charge) a complete machine-readable copy of the
-    corresponding source code, to be distributed under the terms of
-    Paragraphs 1 and 2 above; or,
-
-    c) accompany it with the information you received as to where the
-    corresponding source code may be obtained.  (This alternative is
-    allowed only for noncommercial distribution and only if you
-    received the program in object code or executable form alone.)
-
-For an executable file, complete source code means all the source code for
-all modules it contains; but, as a special exception, it need not include
-source code for modules which are standard libraries that accompany the
-operating system on which the executable file runs.
-
-  4. You may not copy, sublicense, distribute or transfer Ghostscript
-except as expressly provided under this License Agreement.  Any attempt
-otherwise to copy, sublicense, distribute or transfer Ghostscript is
-void and your rights to use the program under this License agreement
-shall be automatically terminated.  However, parties who have received
-computer software programs from you with this License Agreement will not
-have their licenses terminated so long as such parties remain in full
-compliance.
-
-  5. If you wish to incorporate parts of Ghostscript into other free
-programs whose distribution conditions are different, write to the Free
-Software Foundation at 675 Mass Ave, Cambridge, MA 02139.  We have not
-yet worked out a simple rule that can be stated here, but we will often
-permit this.  We 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.
-
-Your comments and suggestions about our licensing policies and our
-software are welcome!  Please contact the Free Software Foundation,
-Inc., 675 Mass Ave, Cambridge, MA 02139, or call (617) 876-3296.
-
-		       NO WARRANTY
-
-  BECAUSE GHOSTSCRIPT IS LICENSED FREE OF CHARGE, WE PROVIDE ABSOLUTELY
-NO WARRANTY, TO THE EXTENT PERMITTED BY APPLICABLE STATE LAW.  EXCEPT
-WHEN OTHERWISE STATED IN WRITING, FREE SOFTWARE FOUNDATION, INC, RICHARD
-M. STALLMAN, ALADDIN ENTERPRISES, L. PETER DEUTSCH, AND/OR OTHER PARTIES
-PROVIDE GHOSTSCRIPT "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 GHOSTSCRIPT IS WITH
-YOU.  SHOULD GHOSTSCRIPT PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL
-NECESSARY SERVICING, REPAIR OR CORRECTION.
-
-  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW WILL RICHARD M.
-STALLMAN, THE FREE SOFTWARE FOUNDATION, INC., L. PETER DEUTSCH, ALADDIN
-ENTERPRISES, AND/OR ANY OTHER PARTY WHO MAY MODIFY AND REDISTRIBUTE
-GHOSTSCRIPT AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING
-ANY LOST PROFITS, LOST MONIES, OR OTHER SPECIAL, INCIDENTAL OR
-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE
-(INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED
-INACCURATE OR LOSSES SUSTAINED BY THIRD PARTIES OR A FAILURE OF THE
-PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS) GHOSTSCRIPT, EVEN IF YOU
-HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES, OR FOR ANY CLAIM
-BY ANY OTHER PARTY.
-
--------------------- End of file COPYLEFT ------------------------------
-*/
-
-/*
- * Usage:
-	ansi2knr input_file [output_file]
- * If no output_file is supplied, output goes to stdout.
- * There are no error messages.
- *
- * ansi2knr recognizes function definitions by seeing a non-keyword
- * identifier at the left margin, followed by a left parenthesis,
- * with a right parenthesis as the last character on the line,
- * and with a left brace as the first token on the following line
- * (ignoring possible intervening comments).
- * It will recognize a multi-line header provided that no intervening
- * line ends with a left or right brace or a semicolon.
- * These algorithms ignore whitespace and comments, except that
- * the function name must be the first thing on the line.
- * The following constructs will confuse it:
- *	- Any other construct that starts at the left margin and
- *	    follows the above syntax (such as a macro or function call).
- *	- Some macros that tinker with the syntax of the function header.
- */
-
-/*
- * The original and principal author of ansi2knr is L. Peter Deutsch
- * <ghost at aladdin.com>.  Other authors are noted in the change history
- * that follows (in reverse chronological order):
-	lpd 96-01-21 added code to cope with not HAVE_CONFIG_H and with
-		compilers that don't understand void, as suggested by
-		Tom Lane
-	lpd 96-01-15 changed to require that the first non-comment token
-		on the line following a function header be a left brace,
-		to reduce sensitivity to macros, as suggested by Tom Lane
-		<tgl at sss.pgh.pa.us>
-	lpd 95-06-22 removed #ifndefs whose sole purpose was to define
-		undefined preprocessor symbols as 0; changed all #ifdefs
-		for configuration symbols to #ifs
-	lpd 95-04-05 changed copyright notice to make it clear that
-		including ansi2knr in a program does not bring the entire
-		program under the GPL
-	lpd 94-12-18 added conditionals for systems where ctype macros
-		don't handle 8-bit characters properly, suggested by
-		Francois Pinard <pinard at iro.umontreal.ca>;
-		removed --varargs switch (this is now the default)
-	lpd 94-10-10 removed CONFIG_BROKETS conditional
-	lpd 94-07-16 added some conditionals to help GNU `configure',
-		suggested by Francois Pinard <pinard at iro.umontreal.ca>;
-		properly erase prototype args in function parameters,
-		contributed by Jim Avera <jima at netcom.com>;
-		correct error in writeblanks (it shouldn't erase EOLs)
-	lpd 89-xx-xx original version
- */
-
-/* Most of the conditionals here are to make ansi2knr work with */
-/* or without the GNU configure machinery. */
-
-#if HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include <stdio.h>
-#include <ctype.h>
-
-#if HAVE_CONFIG_H
-
-/*
-   For properly autoconfiguring ansi2knr, use AC_CONFIG_HEADER(config.h).
-   This will define HAVE_CONFIG_H and so, activate the following lines.
- */
-
-# if STDC_HEADERS || HAVE_STRING_H
-#  include <string.h>
-# else
-#  include <strings.h>
-# endif
-
-#else /* not HAVE_CONFIG_H */
-
-/* Otherwise do it the hard way */
-
-# ifdef BSD
-#  include <strings.h>
-# else
-#  ifdef VMS
-    extern int strlen(), strncmp();
-#  else
-#   include <string.h>
-#  endif
-# endif
-
-#endif /* not HAVE_CONFIG_H */
-
-#if STDC_HEADERS
-# include <stdlib.h>
-#else
-/*
-   malloc and free should be declared in stdlib.h,
-   but if you've got a K&R compiler, they probably aren't.
- */
-# ifdef MSDOS
-#  include <malloc.h>
-# else
-#  ifdef VMS
-     extern char *malloc();
-     extern void free();
-#  else
-     extern char *malloc();
-     extern int free();
-#  endif
-# endif
-
-#endif
-
-/*
- * The ctype macros don't always handle 8-bit characters correctly.
- * Compensate for this here.
- */
-#ifdef isascii
-#  undef HAVE_ISASCII		/* just in case */
-#  define HAVE_ISASCII 1
-#else
-#endif
-#if STDC_HEADERS || !HAVE_ISASCII
-#  define is_ascii(c) 1
-#else
-#  define is_ascii(c) isascii(c)
-#endif
-
-#define is_space(c) (is_ascii(c) && isspace(c))
-#define is_alpha(c) (is_ascii(c) && isalpha(c))
-#define is_alnum(c) (is_ascii(c) && isalnum(c))
-
-/* Scanning macros */
-#define isidchar(ch) (is_alnum(ch) || (ch) == '_')
-#define isidfirstchar(ch) (is_alpha(ch) || (ch) == '_')
-
-/* Forward references */
-char *skipspace();
-int writeblanks();
-int test1();
-int convert1();
-
-/* The main program */
-int
-main(argc, argv)
-    int argc;
-    char *argv[];
-{	FILE *in, *out;
-#define bufsize 5000			/* arbitrary size */
-	char *buf;
-	char *line;
-	char *more;
-	/*
-	 * In previous versions, ansi2knr recognized a --varargs switch.
-	 * If this switch was supplied, ansi2knr would attempt to convert
-	 * a ... argument to va_alist and va_dcl; if this switch was not
-	 * supplied, ansi2knr would simply drop any such arguments.
-	 * Now, ansi2knr always does this conversion, and we only
-	 * check for this switch for backward compatibility.
-	 */
-	int convert_varargs = 1;
-
-	if ( argc > 1 && argv[1][0] == '-' )
-	  {	if ( !strcmp(argv[1], "--varargs") )
-		  {	convert_varargs = 1;
-			argc--;
-			argv++;
-		  }
-		else
-		  {	fprintf(stderr, "Unrecognized switch: %s\n", argv[1]);
-			exit(1);
-		  }
-	  }
-	switch ( argc )
-	   {
-	default:
-		printf("Usage: ansi2knr input_file [output_file]\n");
-		exit(0);
-	case 2:
-		out = stdout;
-		break;
-	case 3:
-		out = fopen(argv[2], "w");
-		if ( out == NULL )
-		   {	fprintf(stderr, "Cannot open output file %s\n", argv[2]);
-			exit(1);
-		   }
-	   }
-	in = fopen(argv[1], "r");
-	if ( in == NULL )
-	   {	fprintf(stderr, "Cannot open input file %s\n", argv[1]);
-		exit(1);
-	   }
-	fprintf(out, "#line 1 \"%s\"\n", argv[1]);
-	buf = malloc(bufsize);
-	line = buf;
-	while ( fgets(line, (unsigned)(buf + bufsize - line), in) != NULL )
-	   {
-test:		line += strlen(line);
-		switch ( test1(buf) )
-		   {
-		case 2:			/* a function header */
-			convert1(buf, out, 1, convert_varargs);
-			break;
-		case 1:			/* a function */
-			/* Check for a { at the start of the next line. */
-			more = ++line;
-f:			if ( line >= buf + (bufsize - 1) ) /* overflow check */
-			  goto wl;
-			if ( fgets(line, (unsigned)(buf + bufsize - line), in) == NULL )
-			  goto wl;
-			switch ( *skipspace(more, 1) )
-			  {
-			  case '{':
-			    /* Definitely a function header. */
-			    convert1(buf, out, 0, convert_varargs);
-			    fputs(more, out);
-			    break;
-			  case 0:
-			    /* The next line was blank or a comment: */
-			    /* keep scanning for a non-comment. */
-			    line += strlen(line);
-			    goto f;
-			  default:
-			    /* buf isn't a function header, but */
-			    /* more might be. */
-			    fputs(buf, out);
-			    strcpy(buf, more);
-			    line = buf;
-			    goto test;
-			  }
-			break;
-		case -1:		/* maybe the start of a function */
-			if ( line != buf + (bufsize - 1) ) /* overflow check */
-			  continue;
-			/* falls through */
-		default:		/* not a function */
-wl:			fputs(buf, out);
-			break;
-		   }
-		line = buf;
-	   }
-	if ( line != buf )
-	  fputs(buf, out);
-	free(buf);
-	fclose(out);
-	fclose(in);
-	return 0;
-}
-
-/* Skip over space and comments, in either direction. */
-char *
-skipspace(p, dir)
-    register char *p;
-    register int dir;			/* 1 for forward, -1 for backward */
-{	for ( ; ; )
-	   {	while ( is_space(*p) )
-		  p += dir;
-		if ( !(*p == '/' && p[dir] == '*') )
-		  break;
-		p += dir;  p += dir;
-		while ( !(*p == '*' && p[dir] == '/') )
-		   {	if ( *p == 0 )
-			  return p;	/* multi-line comment?? */
-			p += dir;
-		   }
-		p += dir;  p += dir;
-	   }
-	return p;
-}
-
-/*
- * Write blanks over part of a string.
- * Don't overwrite end-of-line characters.
- */
-int
-writeblanks(start, end)
-    char *start;
-    char *end;
-{	char *p;
-	for ( p = start; p < end; p++ )
-	  if ( *p != '\r' && *p != '\n' )
-	    *p = ' ';
-	return 0;
-}
-
-/*
- * Test whether the string in buf is a function definition.
- * The string may contain and/or end with a newline.
- * Return as follows:
- *	0 - definitely not a function definition;
- *	1 - definitely a function definition;
- *	2 - definitely a function prototype (NOT USED);
- *	-1 - may be the beginning of a function definition,
- *		append another line and look again.
- * The reason we don't attempt to convert function prototypes is that
- * Ghostscript's declaration-generating macros look too much like
- * prototypes, and confuse the algorithms.
- */
-int
-test1(buf)
-    char *buf;
-{	register char *p = buf;
-	char *bend;
-	char *endfn;
-	int contin;
-
-	if ( !isidfirstchar(*p) )
-	  return 0;		/* no name at left margin */
-	bend = skipspace(buf + strlen(buf) - 1, -1);
-	switch ( *bend )
-	   {
-	   case ';': contin = 0 /*2*/; break;
-	   case ')': contin = 1; break;
-	   case '{': return 0;		/* not a function */
-	   case '}': return 0;		/* not a function */
-	   default: contin = -1;
-	   }
-	while ( isidchar(*p) )
-	  p++;
-	endfn = p;
-	p = skipspace(p, 1);
-	if ( *p++ != '(' )
-	  return 0;		/* not a function */
-	p = skipspace(p, 1);
-	if ( *p == ')' )
-	  return 0;		/* no parameters */
-	/* Check that the apparent function name isn't a keyword. */
-	/* We only need to check for keywords that could be followed */
-	/* by a left parenthesis (which, unfortunately, is most of them). */
-	   {	static char *words[] =
-		   {	"asm", "auto", "case", "char", "const", "double",
-			"extern", "float", "for", "if", "int", "long",
-			"register", "return", "short", "signed", "sizeof",
-			"static", "switch", "typedef", "unsigned",
-			"void", "volatile", "while", 0
-		   };
-		char **key = words;
-		char *kp;
-		int len = endfn - buf;
-
-		while ( (kp = *key) != 0 )
-		   {	if ( strlen(kp) == len && !strncmp(kp, buf, len) )
-			  return 0;	/* name is a keyword */
-			key++;
-		   }
-	   }
-	return contin;
-}
-
-/* Convert a recognized function definition or header to K&R syntax. */
-int
-convert1(buf, out, header, convert_varargs)
-    char *buf;
-    FILE *out;
-    int header;			/* Boolean */
-    int convert_varargs;	/* Boolean */
-{	char *endfn;
-	register char *p;
-	char **breaks;
-	unsigned num_breaks = 2;	/* for testing */
-	char **btop;
-	char **bp;
-	char **ap;
-	char *vararg = 0;
-
-	/* Pre-ANSI implementations don't agree on whether strchr */
-	/* is called strchr or index, so we open-code it here. */
-	for ( endfn = buf; *(endfn++) != '('; )
-	  ;
-top:	p = endfn;
-	breaks = (char **)malloc(sizeof(char *) * num_breaks * 2);
-	if ( breaks == 0 )
-	   {	/* Couldn't allocate break table, give up */
-		fprintf(stderr, "Unable to allocate break table!\n");
-		fputs(buf, out);
-		return -1;
-	   }
-	btop = breaks + num_breaks * 2 - 2;
-	bp = breaks;
-	/* Parse the argument list */
-	do
-	   {	int level = 0;
-		char *lp = NULL;
-		char *rp;
-		char *end = NULL;
-
-		if ( bp >= btop )
-		   {	/* Filled up break table. */
-			/* Allocate a bigger one and start over. */
-			free((char *)breaks);
-			num_breaks <<= 1;
-			goto top;
-		   }
-		*bp++ = p;
-		/* Find the end of the argument */
-		for ( ; end == NULL; p++ )
-		   {	switch(*p)
-			   {
-			   case ',':
-				if ( !level ) end = p;
-				break;
-			   case '(':
-				if ( !level ) lp = p;
-				level++;
-				break;
-			   case ')':
-				if ( --level < 0 ) end = p;
-				else rp = p;
-				break;
-			   case '/':
-				p = skipspace(p, 1) - 1;
-				break;
-			   default:
-				;
-			   }
-		   }
-		/* Erase any embedded prototype parameters. */
-		if ( lp )
-		  writeblanks(lp + 1, rp);
-		p--;			/* back up over terminator */
-		/* Find the name being declared. */
-		/* This is complicated because of procedure and */
-		/* array modifiers. */
-		for ( ; ; )
-		   {	p = skipspace(p - 1, -1);
-			switch ( *p )
-			   {
-			   case ']':	/* skip array dimension(s) */
-			   case ')':	/* skip procedure args OR name */
-			   {	int level = 1;
-				while ( level )
-				 switch ( *--p )
-				   {
-				   case ']': case ')': level++; break;
-				   case '[': case '(': level--; break;
-				   case '/': p = skipspace(p, -1) + 1; break;
-				   default: ;
-				   }
-			   }
-				if ( *p == '(' && *skipspace(p + 1, 1) == '*' )
-				   {	/* We found the name being declared */
-					while ( !isidfirstchar(*p) )
-					  p = skipspace(p, 1) + 1;
-					goto found;
-				   }
-				break;
-			   default:
-				goto found;
-			   }
-		   }
-found:		if ( *p == '.' && p[-1] == '.' && p[-2] == '.' )
-		  {	if ( convert_varargs )
-			  {	*bp++ = "va_alist";
-				vararg = p-2;
-			  }
-			else
-			  {	p++;
-				if ( bp == breaks + 1 )	/* sole argument */
-				  writeblanks(breaks[0], p);
-				else
-				  writeblanks(bp[-1] - 1, p);
-				bp--;
-			  }
-		   }
-		else
-		   {	while ( isidchar(*p) ) p--;
-			*bp++ = p+1;
-		   }
-		p = end;
-	   }
-	while ( *p++ == ',' );
-	*bp = p;
-	/* Make a special check for 'void' arglist */
-	if ( bp == breaks+2 )
-	   {	p = skipspace(breaks[0], 1);
-		if ( !strncmp(p, "void", 4) )
-		   {	p = skipspace(p+4, 1);
-			if ( p == breaks[2] - 1 )
-			   {	bp = breaks;	/* yup, pretend arglist is empty */
-				writeblanks(breaks[0], p + 1);
-			   }
-		   }
-	   }
-	/* Put out the function name and left parenthesis. */
-	p = buf;
-	while ( p != endfn ) putc(*p, out), p++;
-	/* Put out the declaration. */
-	if ( header )
-	  {	fputs(");", out);
-		for ( p = breaks[0]; *p; p++ )
-		  if ( *p == '\r' || *p == '\n' )
-		    putc(*p, out);
-	  }
-	else
-	  {	for ( ap = breaks+1; ap < bp; ap += 2 )
-		  {	p = *ap;
-			while ( isidchar(*p) )
-			  putc(*p, out), p++;
-			if ( ap < bp - 1 )
-			  fputs(", ", out);
-		  }
-		fputs(")  ", out);
-		/* Put out the argument declarations */
-		for ( ap = breaks+2; ap <= bp; ap += 2 )
-		  (*ap)[-1] = ';';
-		if ( vararg != 0 )
-		  {	*vararg = 0;
-			fputs(breaks[0], out);		/* any prior args */
-			fputs("va_dcl", out);		/* the final arg */
-			fputs(bp[0], out);
-		  }
-		else
-		  fputs(breaks[0], out);
-	  }
-	free((char *)breaks);
-	return 0;
-}
diff --git a/src/libjpeg/cderror.h b/src/libjpeg/cderror.h
deleted file mode 100644
index c19d38f..0000000
--- a/src/libjpeg/cderror.h
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * cderror.h
- *
- * Copyright (C) 1994-1997, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file defines the error and message codes for the cjpeg/djpeg
- * applications.  These strings are not needed as part of the JPEG library
- * proper.
- * Edit this file to add new codes, or to translate the message strings to
- * some other language.
- */
-
-/*
- * To define the enum list of message codes, include this file without
- * defining macro JMESSAGE.  To create a message string table, include it
- * again with a suitable JMESSAGE definition (see jerror.c for an example).
- */
-#ifndef JMESSAGE
-#ifndef CDERROR_H
-#define CDERROR_H
-/* First time through, define the enum list */
-#define JMAKE_ENUM_LIST
-#else
-/* Repeated inclusions of this file are no-ops unless JMESSAGE is defined */
-#define JMESSAGE(code,string)
-#endif /* CDERROR_H */
-#endif /* JMESSAGE */
-
-#ifdef JMAKE_ENUM_LIST
-
-typedef enum {
-
-#define JMESSAGE(code,string)	code ,
-
-#endif /* JMAKE_ENUM_LIST */
-
-JMESSAGE(JMSG_FIRSTADDONCODE=1000, NULL) /* Must be first entry! */
-
-#ifdef BMP_SUPPORTED
-JMESSAGE(JERR_BMP_BADCMAP, "Unsupported BMP colormap format")
-JMESSAGE(JERR_BMP_BADDEPTH, "Only 8- and 24-bit BMP files are supported")
-JMESSAGE(JERR_BMP_BADHEADER, "Invalid BMP file: bad header length")
-JMESSAGE(JERR_BMP_BADPLANES, "Invalid BMP file: biPlanes not equal to 1")
-JMESSAGE(JERR_BMP_COLORSPACE, "BMP output must be grayscale or RGB")
-JMESSAGE(JERR_BMP_COMPRESSED, "Sorry, compressed BMPs not yet supported")
-JMESSAGE(JERR_BMP_NOT, "Not a BMP file - does not start with BM")
-JMESSAGE(JTRC_BMP, "%ux%u 24-bit BMP image")
-JMESSAGE(JTRC_BMP_MAPPED, "%ux%u 8-bit colormapped BMP image")
-JMESSAGE(JTRC_BMP_OS2, "%ux%u 24-bit OS2 BMP image")
-JMESSAGE(JTRC_BMP_OS2_MAPPED, "%ux%u 8-bit colormapped OS2 BMP image")
-#endif /* BMP_SUPPORTED */
-
-#ifdef GIF_SUPPORTED
-JMESSAGE(JERR_GIF_BUG, "GIF output got confused")
-JMESSAGE(JERR_GIF_CODESIZE, "Bogus GIF codesize %d")
-JMESSAGE(JERR_GIF_COLORSPACE, "GIF output must be grayscale or RGB")
-JMESSAGE(JERR_GIF_IMAGENOTFOUND, "Too few images in GIF file")
-JMESSAGE(JERR_GIF_NOT, "Not a GIF file")
-JMESSAGE(JTRC_GIF, "%ux%ux%d GIF image")
-JMESSAGE(JTRC_GIF_BADVERSION,
-	 "Warning: unexpected GIF version number '%c%c%c'")
-JMESSAGE(JTRC_GIF_EXTENSION, "Ignoring GIF extension block of type 0x%02x")
-JMESSAGE(JTRC_GIF_NONSQUARE, "Caution: nonsquare pixels in input")
-JMESSAGE(JWRN_GIF_BADDATA, "Corrupt data in GIF file")
-JMESSAGE(JWRN_GIF_CHAR, "Bogus char 0x%02x in GIF file, ignoring")
-JMESSAGE(JWRN_GIF_ENDCODE, "Premature end of GIF image")
-JMESSAGE(JWRN_GIF_NOMOREDATA, "Ran out of GIF bits")
-#endif /* GIF_SUPPORTED */
-
-#ifdef PPM_SUPPORTED
-JMESSAGE(JERR_PPM_COLORSPACE, "PPM output must be grayscale or RGB")
-JMESSAGE(JERR_PPM_NONNUMERIC, "Nonnumeric data in PPM file")
-JMESSAGE(JERR_PPM_NOT, "Not a PPM/PGM file")
-JMESSAGE(JTRC_PGM, "%ux%u PGM image")
-JMESSAGE(JTRC_PGM_TEXT, "%ux%u text PGM image")
-JMESSAGE(JTRC_PPM, "%ux%u PPM image")
-JMESSAGE(JTRC_PPM_TEXT, "%ux%u text PPM image")
-#endif /* PPM_SUPPORTED */
-
-#ifdef RLE_SUPPORTED
-JMESSAGE(JERR_RLE_BADERROR, "Bogus error code from RLE library")
-JMESSAGE(JERR_RLE_COLORSPACE, "RLE output must be grayscale or RGB")
-JMESSAGE(JERR_RLE_DIMENSIONS, "Image dimensions (%ux%u) too large for RLE")
-JMESSAGE(JERR_RLE_EMPTY, "Empty RLE file")
-JMESSAGE(JERR_RLE_EOF, "Premature EOF in RLE header")
-JMESSAGE(JERR_RLE_MEM, "Insufficient memory for RLE header")
-JMESSAGE(JERR_RLE_NOT, "Not an RLE file")
-JMESSAGE(JERR_RLE_TOOMANYCHANNELS, "Cannot handle %d output channels for RLE")
-JMESSAGE(JERR_RLE_UNSUPPORTED, "Cannot handle this RLE setup")
-JMESSAGE(JTRC_RLE, "%ux%u full-color RLE file")
-JMESSAGE(JTRC_RLE_FULLMAP, "%ux%u full-color RLE file with map of length %d")
-JMESSAGE(JTRC_RLE_GRAY, "%ux%u grayscale RLE file")
-JMESSAGE(JTRC_RLE_MAPGRAY, "%ux%u grayscale RLE file with map of length %d")
-JMESSAGE(JTRC_RLE_MAPPED, "%ux%u colormapped RLE file with map of length %d")
-#endif /* RLE_SUPPORTED */
-
-#ifdef TARGA_SUPPORTED
-JMESSAGE(JERR_TGA_BADCMAP, "Unsupported Targa colormap format")
-JMESSAGE(JERR_TGA_BADPARMS, "Invalid or unsupported Targa file")
-JMESSAGE(JERR_TGA_COLORSPACE, "Targa output must be grayscale or RGB")
-JMESSAGE(JTRC_TGA, "%ux%u RGB Targa image")
-JMESSAGE(JTRC_TGA_GRAY, "%ux%u grayscale Targa image")
-JMESSAGE(JTRC_TGA_MAPPED, "%ux%u colormapped Targa image")
-#else
-JMESSAGE(JERR_TGA_NOTCOMP, "Targa support was not compiled")
-#endif /* TARGA_SUPPORTED */
-
-JMESSAGE(JERR_BAD_CMAP_FILE,
-	 "Color map file is invalid or of unsupported format")
-JMESSAGE(JERR_TOO_MANY_COLORS,
-	 "Output file format cannot handle %d colormap entries")
-JMESSAGE(JERR_UNGETC_FAILED, "ungetc failed")
-#ifdef TARGA_SUPPORTED
-JMESSAGE(JERR_UNKNOWN_FORMAT,
-	 "Unrecognized input file format --- perhaps you need -targa")
-#else
-JMESSAGE(JERR_UNKNOWN_FORMAT, "Unrecognized input file format")
-#endif
-JMESSAGE(JERR_UNSUPPORTED_FORMAT, "Unsupported output file format")
-
-#ifdef JMAKE_ENUM_LIST
-
-  JMSG_LASTADDONCODE
-} ADDON_MESSAGE_CODE;
-
-#undef JMAKE_ENUM_LIST
-#endif /* JMAKE_ENUM_LIST */
-
-/* Zap JMESSAGE macro so that future re-inclusions do nothing by default */
-#undef JMESSAGE
diff --git a/src/libjpeg/cdjpeg.h b/src/libjpeg/cdjpeg.h
deleted file mode 100644
index 1574e0b..0000000
--- a/src/libjpeg/cdjpeg.h
+++ /dev/null
@@ -1,184 +0,0 @@
-/*
- * cdjpeg.h
- *
- * Copyright (C) 1994-1997, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains common declarations for the sample applications
- * cjpeg and djpeg.  It is NOT used by the core JPEG library.
- */
-
-#define JPEG_CJPEG_DJPEG	/* define proper options in jconfig.h */
-#define JPEG_INTERNAL_OPTIONS	/* cjpeg.c,djpeg.c need to see xxx_SUPPORTED */
-#include "jinclude.h"
-#include "jpeglib.h"
-#include "jerror.h"		/* get library error codes too */
-#include "cderror.h"		/* get application-specific error codes */
-
-
-/*
- * Object interface for cjpeg's source file decoding modules
- */
-
-typedef struct cjpeg_source_struct * cjpeg_source_ptr;
-
-struct cjpeg_source_struct {
-  JMETHOD(void, start_input, (j_compress_ptr cinfo,
-			      cjpeg_source_ptr sinfo));
-  JMETHOD(JDIMENSION, get_pixel_rows, (j_compress_ptr cinfo,
-				       cjpeg_source_ptr sinfo));
-  JMETHOD(void, finish_input, (j_compress_ptr cinfo,
-			       cjpeg_source_ptr sinfo));
-
-  FILE *input_file;
-
-  JSAMPARRAY buffer;
-  JDIMENSION buffer_height;
-};
-
-
-/*
- * Object interface for djpeg's output file encoding modules
- */
-
-typedef struct djpeg_dest_struct * djpeg_dest_ptr;
-
-struct djpeg_dest_struct {
-  /* start_output is called after jpeg_start_decompress finishes.
-   * The color map will be ready at this time, if one is needed.
-   */
-  JMETHOD(void, start_output, (j_decompress_ptr cinfo,
-			       djpeg_dest_ptr dinfo));
-  /* Emit the specified number of pixel rows from the buffer. */
-  JMETHOD(void, put_pixel_rows, (j_decompress_ptr cinfo,
-				 djpeg_dest_ptr dinfo,
-				 JDIMENSION rows_supplied));
-  /* Finish up at the end of the image. */
-  JMETHOD(void, finish_output, (j_decompress_ptr cinfo,
-				djpeg_dest_ptr dinfo));
-
-  /* Target file spec; filled in by djpeg.c after object is created. */
-  FILE * output_file;
-
-  /* Output pixel-row buffer.  Created by module init or start_output.
-   * Width is cinfo->output_width * cinfo->output_components;
-   * height is buffer_height.
-   */
-  JSAMPARRAY buffer;
-  JDIMENSION buffer_height;
-};
-
-
-/*
- * cjpeg/djpeg may need to perform extra passes to convert to or from
- * the source/destination file format.  The JPEG library does not know
- * about these passes, but we'd like them to be counted by the progress
- * monitor.  We use an expanded progress monitor object to hold the
- * additional pass count.
- */
-
-struct cdjpeg_progress_mgr {
-  struct jpeg_progress_mgr pub;	/* fields known to JPEG library */
-  int completed_extra_passes;	/* extra passes completed */
-  int total_extra_passes;	/* total extra */
-  /* last printed percentage stored here to avoid multiple printouts */
-  int percent_done;
-};
-
-typedef struct cdjpeg_progress_mgr * cd_progress_ptr;
-
-
-/* Short forms of external names for systems with brain-damaged linkers. */
-
-#ifdef NEED_SHORT_EXTERNAL_NAMES
-#define jinit_read_bmp		jIRdBMP
-#define jinit_write_bmp		jIWrBMP
-#define jinit_read_gif		jIRdGIF
-#define jinit_write_gif		jIWrGIF
-#define jinit_read_ppm		jIRdPPM
-#define jinit_write_ppm		jIWrPPM
-#define jinit_read_rle		jIRdRLE
-#define jinit_write_rle		jIWrRLE
-#define jinit_read_targa	jIRdTarga
-#define jinit_write_targa	jIWrTarga
-#define read_quant_tables	RdQTables
-#define read_scan_script	RdScnScript
-#define set_quant_slots		SetQSlots
-#define set_sample_factors	SetSFacts
-#define read_color_map		RdCMap
-#define enable_signal_catcher	EnSigCatcher
-#define start_progress_monitor	StProgMon
-#define end_progress_monitor	EnProgMon
-#define read_stdin		RdStdin
-#define write_stdout		WrStdout
-#endif /* NEED_SHORT_EXTERNAL_NAMES */
-
-/* Module selection routines for I/O modules. */
-
-EXTERN(cjpeg_source_ptr) jinit_read_bmp JPP((j_compress_ptr cinfo));
-EXTERN(djpeg_dest_ptr) jinit_write_bmp JPP((j_decompress_ptr cinfo,
-					    boolean is_os2));
-EXTERN(cjpeg_source_ptr) jinit_read_gif JPP((j_compress_ptr cinfo));
-EXTERN(djpeg_dest_ptr) jinit_write_gif JPP((j_decompress_ptr cinfo));
-EXTERN(cjpeg_source_ptr) jinit_read_ppm JPP((j_compress_ptr cinfo));
-EXTERN(djpeg_dest_ptr) jinit_write_ppm JPP((j_decompress_ptr cinfo));
-EXTERN(cjpeg_source_ptr) jinit_read_rle JPP((j_compress_ptr cinfo));
-EXTERN(djpeg_dest_ptr) jinit_write_rle JPP((j_decompress_ptr cinfo));
-EXTERN(cjpeg_source_ptr) jinit_read_targa JPP((j_compress_ptr cinfo));
-EXTERN(djpeg_dest_ptr) jinit_write_targa JPP((j_decompress_ptr cinfo));
-
-/* cjpeg support routines (in rdswitch.c) */
-
-EXTERN(boolean) read_quant_tables JPP((j_compress_ptr cinfo, char * filename,
-				    int scale_factor, boolean force_baseline));
-EXTERN(boolean) read_scan_script JPP((j_compress_ptr cinfo, char * filename));
-EXTERN(boolean) set_quant_slots JPP((j_compress_ptr cinfo, char *arg));
-EXTERN(boolean) set_sample_factors JPP((j_compress_ptr cinfo, char *arg));
-
-/* djpeg support routines (in rdcolmap.c) */
-
-EXTERN(void) read_color_map JPP((j_decompress_ptr cinfo, FILE * infile));
-
-/* common support routines (in cdjpeg.c) */
-
-EXTERN(void) enable_signal_catcher JPP((j_common_ptr cinfo));
-EXTERN(void) start_progress_monitor JPP((j_common_ptr cinfo,
-					 cd_progress_ptr progress));
-EXTERN(void) end_progress_monitor JPP((j_common_ptr cinfo));
-EXTERN(boolean) keymatch JPP((char * arg, const char * keyword, int minchars));
-EXTERN(FILE *) read_stdin JPP((void));
-EXTERN(FILE *) write_stdout JPP((void));
-
-/* miscellaneous useful macros */
-
-#ifdef DONT_USE_B_MODE		/* define mode parameters for fopen() */
-#define READ_BINARY	"r"
-#define WRITE_BINARY	"w"
-#else
-#ifdef VMS			/* VMS is very nonstandard */
-#define READ_BINARY	"rb", "ctx=stm"
-#define WRITE_BINARY	"wb", "ctx=stm"
-#else				/* standard ANSI-compliant case */
-#define READ_BINARY	"rb"
-#define WRITE_BINARY	"wb"
-#endif
-#endif
-
-#ifndef EXIT_FAILURE		/* define exit() codes if not provided */
-#define EXIT_FAILURE  1
-#endif
-#ifndef EXIT_SUCCESS
-#ifdef VMS
-#define EXIT_SUCCESS  1		/* VMS is very nonstandard */
-#else
-#define EXIT_SUCCESS  0
-#endif
-#endif
-#ifndef EXIT_WARNING
-#ifdef VMS
-#define EXIT_WARNING  1		/* VMS is very nonstandard */
-#else
-#define EXIT_WARNING  2
-#endif
-#endif
diff --git a/src/libjpeg/ckconfig.c b/src/libjpeg/ckconfig.c
deleted file mode 100644
index 58e9c17..0000000
--- a/src/libjpeg/ckconfig.c
+++ /dev/null
@@ -1,402 +0,0 @@
-/*
- * ckconfig.c
- *
- * Copyright (C) 1991-1994, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- */
-
-/*
- * This program is intended to help you determine how to configure the JPEG
- * software for installation on a particular system.  The idea is to try to
- * compile and execute this program.  If your compiler fails to compile the
- * program, make changes as indicated in the comments below.  Once you can
- * compile the program, run it, and it will produce a "jconfig.h" file for
- * your system.
- *
- * As a general rule, each time you try to compile this program,
- * pay attention only to the *first* error message you get from the compiler.
- * Many C compilers will issue lots of spurious error messages once they
- * have gotten confused.  Go to the line indicated in the first error message,
- * and read the comments preceding that line to see what to change.
- *
- * Almost all of the edits you may need to make to this program consist of
- * changing a line that reads "#define SOME_SYMBOL" to "#undef SOME_SYMBOL",
- * or vice versa.  This is called defining or undefining that symbol.
- */
-
-
-/* First we must see if your system has the include files we need.
- * We start out with the assumption that your system has all the ANSI-standard
- * include files.  If you get any error trying to include one of these files,
- * undefine the corresponding HAVE_xxx symbol.
- */
-
-#define HAVE_STDDEF_H		/* replace 'define' by 'undef' if error here */
-#ifdef HAVE_STDDEF_H		/* next line will be skipped if you undef... */
-#include <stddef.h>
-#endif
-
-#define HAVE_STDLIB_H		/* same thing for stdlib.h */
-#ifdef HAVE_STDLIB_H
-#include <stdlib.h>
-#endif
-
-#include <stdio.h>		/* If you ain't got this, you ain't got C. */
-
-/* We have to see if your string functions are defined by
- * strings.h (old BSD convention) or string.h (everybody else).
- * We try the non-BSD convention first; define NEED_BSD_STRINGS
- * if the compiler says it can't find string.h.
- */
-
-#undef NEED_BSD_STRINGS
-
-#ifdef NEED_BSD_STRINGS
-#include <strings.h>
-#else
-#include <string.h>
-#endif
-
-/* On some systems (especially older Unix machines), type size_t is
- * defined only in the include file <sys/types.h>.  If you get a failure
- * on the size_t test below, try defining NEED_SYS_TYPES_H.
- */
-
-#undef NEED_SYS_TYPES_H		/* start by assuming we don't need it */
-#ifdef NEED_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-
-
-/* Usually type size_t is defined in one of the include files we've included
- * above.  If not, you'll get an error on the "typedef size_t my_size_t;" line.
- * In that case, first try defining NEED_SYS_TYPES_H just above.
- * If that doesn't work, you'll have to search through your system library
- * to figure out which include file defines "size_t".  Look for a line that
- * says "typedef something-or-other size_t;".  Then, change the line below
- * that says "#include <someincludefile.h>" to instead include the file
- * you found size_t in, and define NEED_SPECIAL_INCLUDE.  If you can't find
- * type size_t anywhere, try replacing "#include <someincludefile.h>" with
- * "typedef unsigned int size_t;".
- */
-
-#undef NEED_SPECIAL_INCLUDE	/* assume we DON'T need it, for starters */
-
-#ifdef NEED_SPECIAL_INCLUDE
-#include <someincludefile.h>
-#endif
-
-typedef size_t my_size_t;	/* The payoff: do we have size_t now? */
-
-
-/* The next question is whether your compiler supports ANSI-style function
- * prototypes.  You need to know this in order to choose between using
- * makefile.ansi and using makefile.unix.
- * The #define line below is set to assume you have ANSI function prototypes.
- * If you get an error in this group of lines, undefine HAVE_PROTOTYPES.
- */
-
-#define HAVE_PROTOTYPES
-
-#ifdef HAVE_PROTOTYPES
-int testfunction (int arg1, int * arg2); /* check prototypes */
-
-struct methods_struct {		/* check method-pointer declarations */
-  int (*error_exit) (char *msgtext);
-  int (*trace_message) (char *msgtext);
-  int (*another_method) (void);
-};
-
-int testfunction (int arg1, int * arg2) /* check definitions */
-{
-  return arg2[arg1];
-}
-
-int test2function (void)	/* check void arg list */
-{
-  return 0;
-}
-#endif
-
-
-/* Now we want to find out if your compiler knows what "unsigned char" means.
- * If you get an error on the "unsigned char un_char;" line,
- * then undefine HAVE_UNSIGNED_CHAR.
- */
-
-#define HAVE_UNSIGNED_CHAR
-
-#ifdef HAVE_UNSIGNED_CHAR
-unsigned char un_char;
-#endif
-
-
-/* Now we want to find out if your compiler knows what "unsigned short" means.
- * If you get an error on the "unsigned short un_short;" line,
- * then undefine HAVE_UNSIGNED_SHORT.
- */
-
-#define HAVE_UNSIGNED_SHORT
-
-#ifdef HAVE_UNSIGNED_SHORT
-unsigned short un_short;
-#endif
-
-
-/* Now we want to find out if your compiler understands type "void".
- * If you get an error anywhere in here, undefine HAVE_VOID.
- */
-
-#define HAVE_VOID
-
-#ifdef HAVE_VOID
-/* Caution: a C++ compiler will insist on complete prototypes */
-typedef void * void_ptr;	/* check void * */
-#ifdef HAVE_PROTOTYPES		/* check ptr to function returning void */
-typedef void (*void_func) (int a, int b);
-#else
-typedef void (*void_func) ();
-#endif
-
-#ifdef HAVE_PROTOTYPES		/* check void function result */
-void test3function (void_ptr arg1, void_func arg2)
-#else
-void test3function (arg1, arg2)
-     void_ptr arg1;
-     void_func arg2;
-#endif
-{
-  char * locptr = (char *) arg1; /* check casting to and from void * */
-  arg1 = (void *) locptr;
-  (*arg2) (1, 2);		/* check call of fcn returning void */
-}
-#endif
-
-
-/* Now we want to find out if your compiler knows what "const" means.
- * If you get an error here, undefine HAVE_CONST.
- */
-
-#define HAVE_CONST
-
-#ifdef HAVE_CONST
-static const int carray[3] = {1, 2, 3};
-
-#ifdef HAVE_PROTOTYPES
-int test4function (const int arg1)
-#else
-int test4function (arg1)
-     const int arg1;
-#endif
-{
-  return carray[arg1];
-}
-#endif
-
-
-/* If you get an error or warning about this structure definition,
- * define INCOMPLETE_TYPES_BROKEN.
- */
-
-#undef INCOMPLETE_TYPES_BROKEN
-
-#ifndef INCOMPLETE_TYPES_BROKEN
-typedef struct undefined_structure * undef_struct_ptr;
-#endif
-
-
-/* If you get an error about duplicate names,
- * define NEED_SHORT_EXTERNAL_NAMES.
- */
-
-#undef NEED_SHORT_EXTERNAL_NAMES
-
-#ifndef NEED_SHORT_EXTERNAL_NAMES
-
-int possibly_duplicate_function ()
-{
-  return 0;
-}
-
-int possibly_dupli_function ()
-{
-  return 1;
-}
-
-#endif
-
-
-
-/************************************************************************
- *  OK, that's it.  You should not have to change anything beyond this
- *  point in order to compile and execute this program.  (You might get
- *  some warnings, but you can ignore them.)
- *  When you run the program, it will make a couple more tests that it
- *  can do automatically, and then it will create jconfig.h and print out
- *  any additional suggestions it has.
- ************************************************************************
- */
-
-
-#ifdef HAVE_PROTOTYPES
-int is_char_signed (int arg)
-#else
-int is_char_signed (arg)
-     int arg;
-#endif
-{
-  if (arg == 189) {		/* expected result for unsigned char */
-    return 0;			/* type char is unsigned */
-  }
-  else if (arg != -67) {	/* expected result for signed char */
-    printf("Hmm, it seems 'char' is not eight bits wide on your machine.\n");
-    printf("I fear the JPEG software will not work at all.\n\n");
-  }
-  return 1;			/* assume char is signed otherwise */
-}
-
-
-#ifdef HAVE_PROTOTYPES
-int is_shifting_signed (long arg)
-#else
-int is_shifting_signed (arg)
-     long arg;
-#endif
-/* See whether right-shift on a long is signed or not. */
-{
-  long res = arg >> 4;
-
-  if (res == -0x7F7E80CL) {	/* expected result for signed shift */
-    return 1;			/* right shift is signed */
-  }
-  /* see if unsigned-shift hack will fix it. */
-  /* we can't just test exact value since it depends on width of long... */
-  res |= (~0L) << (32-4);
-  if (res == -0x7F7E80CL) {	/* expected result now? */
-    return 0;			/* right shift is unsigned */
-  }
-  printf("Right shift isn't acting as I expect it to.\n");
-  printf("I fear the JPEG software will not work at all.\n\n");
-  return 0;			/* try it with unsigned anyway */
-}
-
-
-#ifdef HAVE_PROTOTYPES
-int main (int argc, char ** argv)
-#else
-int main (argc, argv)
-     int argc;
-     char ** argv;
-#endif
-{
-  char signed_char_check = (char) (-67);
-  FILE *outfile;
-
-  /* Attempt to write jconfig.h */
-  if ((outfile = fopen("jconfig.h", "w")) == NULL) {
-    printf("Failed to write jconfig.h\n");
-    return 1;
-  }
-
-  /* Write out all the info */
-  fprintf(outfile, "/* jconfig.h --- generated by ckconfig.c */\n");
-  fprintf(outfile, "/* see jconfig.doc for explanations */\n\n");
-#ifdef HAVE_PROTOTYPES
-  fprintf(outfile, "#define HAVE_PROTOTYPES\n");
-#else
-  fprintf(outfile, "#undef HAVE_PROTOTYPES\n");
-#endif
-#ifdef HAVE_UNSIGNED_CHAR
-  fprintf(outfile, "#define HAVE_UNSIGNED_CHAR\n");
-#else
-  fprintf(outfile, "#undef HAVE_UNSIGNED_CHAR\n");
-#endif
-#ifdef HAVE_UNSIGNED_SHORT
-  fprintf(outfile, "#define HAVE_UNSIGNED_SHORT\n");
-#else
-  fprintf(outfile, "#undef HAVE_UNSIGNED_SHORT\n");
-#endif
-#ifdef HAVE_VOID
-  fprintf(outfile, "/* #define void char */\n");
-#else
-  fprintf(outfile, "#define void char\n");
-#endif
-#ifdef HAVE_CONST
-  fprintf(outfile, "/* #define const */\n");
-#else
-  fprintf(outfile, "#define const\n");
-#endif
-  if (is_char_signed((int) signed_char_check))
-    fprintf(outfile, "#undef CHAR_IS_UNSIGNED\n");
-  else
-    fprintf(outfile, "#define CHAR_IS_UNSIGNED\n");
-#ifdef HAVE_STDDEF_H
-  fprintf(outfile, "#define HAVE_STDDEF_H\n");
-#else
-  fprintf(outfile, "#undef HAVE_STDDEF_H\n");
-#endif
-#ifdef HAVE_STDLIB_H
-  fprintf(outfile, "#define HAVE_STDLIB_H\n");
-#else
-  fprintf(outfile, "#undef HAVE_STDLIB_H\n");
-#endif
-#ifdef NEED_BSD_STRINGS
-  fprintf(outfile, "#define NEED_BSD_STRINGS\n");
-#else
-  fprintf(outfile, "#undef NEED_BSD_STRINGS\n");
-#endif
-#ifdef NEED_SYS_TYPES_H
-  fprintf(outfile, "#define NEED_SYS_TYPES_H\n");
-#else
-  fprintf(outfile, "#undef NEED_SYS_TYPES_H\n");
-#endif
-  fprintf(outfile, "#undef NEED_FAR_POINTERS\n");
-#ifdef NEED_SHORT_EXTERNAL_NAMES
-  fprintf(outfile, "#define NEED_SHORT_EXTERNAL_NAMES\n");
-#else
-  fprintf(outfile, "#undef NEED_SHORT_EXTERNAL_NAMES\n");
-#endif
-#ifdef INCOMPLETE_TYPES_BROKEN
-  fprintf(outfile, "#define INCOMPLETE_TYPES_BROKEN\n");
-#else
-  fprintf(outfile, "#undef INCOMPLETE_TYPES_BROKEN\n");
-#endif
-  fprintf(outfile, "\n#ifdef JPEG_INTERNALS\n\n");
-  if (is_shifting_signed(-0x7F7E80B1L))
-    fprintf(outfile, "#undef RIGHT_SHIFT_IS_UNSIGNED\n");
-  else
-    fprintf(outfile, "#define RIGHT_SHIFT_IS_UNSIGNED\n");
-  fprintf(outfile, "\n#endif /* JPEG_INTERNALS */\n");
-  fprintf(outfile, "\n#ifdef JPEG_CJPEG_DJPEG\n\n");
-  fprintf(outfile, "#define BMP_SUPPORTED		/* BMP image file format */\n");
-  fprintf(outfile, "#define GIF_SUPPORTED		/* GIF image file format */\n");
-  fprintf(outfile, "#define PPM_SUPPORTED		/* PBMPLUS PPM/PGM image file format */\n");
-  fprintf(outfile, "#undef RLE_SUPPORTED		/* Utah RLE image file format */\n");
-  fprintf(outfile, "#define TARGA_SUPPORTED		/* Targa image file format */\n\n");
-  fprintf(outfile, "#undef TWO_FILE_COMMANDLINE	/* You may need this on non-Unix systems */\n");
-  fprintf(outfile, "#undef NEED_SIGNAL_CATCHER	/* Define this if you use jmemname.c */\n");
-  fprintf(outfile, "#undef DONT_USE_B_MODE\n");
-  fprintf(outfile, "/* #define PROGRESS_REPORT */	/* optional */\n");
-  fprintf(outfile, "\n#endif /* JPEG_CJPEG_DJPEG */\n");
-
-  /* Close the jconfig.h file */
-  fclose(outfile);
-
-  /* User report */
-  printf("Configuration check for Independent JPEG Group's software done.\n");
-  printf("\nI have written the jconfig.h file for you.\n\n");
-#ifdef HAVE_PROTOTYPES
-  printf("You should use makefile.ansi as the starting point for your Makefile.\n");
-#else
-  printf("You should use makefile.unix as the starting point for your Makefile.\n");
-#endif
-
-#ifdef NEED_SPECIAL_INCLUDE
-  printf("\nYou'll need to change jconfig.h to include the system include file\n");
-  printf("that you found type size_t in, or add a direct definition of type\n");
-  printf("size_t if that's what you used.  Just add it to the end.\n");
-#endif
-
-  return 0;
-}
diff --git a/src/libjpeg/jcapimin.c b/src/libjpeg/jcapimin.c
deleted file mode 100644
index 493af5c..0000000
--- a/src/libjpeg/jcapimin.c
+++ /dev/null
@@ -1,280 +0,0 @@
-/*
- * jcapimin.c
- *
- * Copyright (C) 1994-1998, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains application interface code for the compression half
- * of the JPEG library.  These are the "minimum" API routines that may be
- * needed in either the normal full-compression case or the transcoding-only
- * case.
- *
- * Most of the routines intended to be called directly by an application
- * are in this file or in jcapistd.c.  But also see jcparam.c for
- * parameter-setup helper routines, jcomapi.c for routines shared by
- * compression and decompression, and jctrans.c for the transcoding case.
- */
-
-#define JPEG_INTERNALS
-#include "jinclude.h"
-#include "jpeglib.h"
-
-
-/*
- * Initialization of a JPEG compression object.
- * The error manager must already be set up (in case memory manager fails).
- */
-
-GLOBAL(void)
-jpeg_CreateCompress (j_compress_ptr cinfo, int version, size_t structsize)
-{
-  int i;
-
-  /* Guard against version mismatches between library and caller. */
-  cinfo->mem = NULL;		/* so jpeg_destroy knows mem mgr not called */
-  if (version != JPEG_LIB_VERSION)
-    ERREXIT2(cinfo, JERR_BAD_LIB_VERSION, JPEG_LIB_VERSION, version);
-  if (structsize != SIZEOF(struct jpeg_compress_struct))
-    ERREXIT2(cinfo, JERR_BAD_STRUCT_SIZE, 
-	     (int) SIZEOF(struct jpeg_compress_struct), (int) structsize);
-
-  /* For debugging purposes, we zero the whole master structure.
-   * But the application has already set the err pointer, and may have set
-   * client_data, so we have to save and restore those fields.
-   * Note: if application hasn't set client_data, tools like Purify may
-   * complain here.
-   */
-  {
-    struct jpeg_error_mgr * err = cinfo->err;
-    void * client_data = cinfo->client_data; /* ignore Purify complaint here */
-    MEMZERO(cinfo, SIZEOF(struct jpeg_compress_struct));
-    cinfo->err = err;
-    cinfo->client_data = client_data;
-  }
-  cinfo->is_decompressor = FALSE;
-
-  /* Initialize a memory manager instance for this object */
-  jinit_memory_mgr((j_common_ptr) cinfo);
-
-  /* Zero out pointers to permanent structures. */
-  cinfo->progress = NULL;
-  cinfo->dest = NULL;
-
-  cinfo->comp_info = NULL;
-
-  for (i = 0; i < NUM_QUANT_TBLS; i++)
-    cinfo->quant_tbl_ptrs[i] = NULL;
-
-  for (i = 0; i < NUM_HUFF_TBLS; i++) {
-    cinfo->dc_huff_tbl_ptrs[i] = NULL;
-    cinfo->ac_huff_tbl_ptrs[i] = NULL;
-  }
-
-  cinfo->script_space = NULL;
-
-  cinfo->input_gamma = 1.0;	/* in case application forgets */
-
-  /* OK, I'm ready */
-  cinfo->global_state = CSTATE_START;
-}
-
-
-/*
- * Destruction of a JPEG compression object
- */
-
-GLOBAL(void)
-jpeg_destroy_compress (j_compress_ptr cinfo)
-{
-  jpeg_destroy((j_common_ptr) cinfo); /* use common routine */
-}
-
-
-/*
- * Abort processing of a JPEG compression operation,
- * but don't destroy the object itself.
- */
-
-GLOBAL(void)
-jpeg_abort_compress (j_compress_ptr cinfo)
-{
-  jpeg_abort((j_common_ptr) cinfo); /* use common routine */
-}
-
-
-/*
- * Forcibly suppress or un-suppress all quantization and Huffman tables.
- * Marks all currently defined tables as already written (if suppress)
- * or not written (if !suppress).  This will control whether they get emitted
- * by a subsequent jpeg_start_compress call.
- *
- * This routine is exported for use by applications that want to produce
- * abbreviated JPEG datastreams.  It logically belongs in jcparam.c, but
- * since it is called by jpeg_start_compress, we put it here --- otherwise
- * jcparam.o would be linked whether the application used it or not.
- */
-
-GLOBAL(void)
-jpeg_suppress_tables (j_compress_ptr cinfo, boolean suppress)
-{
-  int i;
-  JQUANT_TBL * qtbl;
-  JHUFF_TBL * htbl;
-
-  for (i = 0; i < NUM_QUANT_TBLS; i++) {
-    if ((qtbl = cinfo->quant_tbl_ptrs[i]) != NULL)
-      qtbl->sent_table = suppress;
-  }
-
-  for (i = 0; i < NUM_HUFF_TBLS; i++) {
-    if ((htbl = cinfo->dc_huff_tbl_ptrs[i]) != NULL)
-      htbl->sent_table = suppress;
-    if ((htbl = cinfo->ac_huff_tbl_ptrs[i]) != NULL)
-      htbl->sent_table = suppress;
-  }
-}
-
-
-/*
- * Finish JPEG compression.
- *
- * If a multipass operating mode was selected, this may do a great deal of
- * work including most of the actual output.
- */
-
-GLOBAL(void)
-jpeg_finish_compress (j_compress_ptr cinfo)
-{
-  JDIMENSION iMCU_row;
-
-  if (cinfo->global_state == CSTATE_SCANNING ||
-      cinfo->global_state == CSTATE_RAW_OK) {
-    /* Terminate first pass */
-    if (cinfo->next_scanline < cinfo->image_height)
-      ERREXIT(cinfo, JERR_TOO_LITTLE_DATA);
-    (*cinfo->master->finish_pass) (cinfo);
-  } else if (cinfo->global_state != CSTATE_WRCOEFS)
-    ERREXIT1(cinfo, JERR_BAD_STATE, cinfo->global_state);
-  /* Perform any remaining passes */
-  while (! cinfo->master->is_last_pass) {
-    (*cinfo->master->prepare_for_pass) (cinfo);
-    for (iMCU_row = 0; iMCU_row < cinfo->total_iMCU_rows; iMCU_row++) {
-      if (cinfo->progress != NULL) {
-	cinfo->progress->pass_counter = (long) iMCU_row;
-	cinfo->progress->pass_limit = (long) cinfo->total_iMCU_rows;
-	(*cinfo->progress->progress_monitor) ((j_common_ptr) cinfo);
-      }
-      /* We bypass the main controller and invoke coef controller directly;
-       * all work is being done from the coefficient buffer.
-       */
-      if (! (*cinfo->coef->compress_data) (cinfo, (JSAMPIMAGE) NULL))
-	ERREXIT(cinfo, JERR_CANT_SUSPEND);
-    }
-    (*cinfo->master->finish_pass) (cinfo);
-  }
-  /* Write EOI, do final cleanup */
-  (*cinfo->marker->write_file_trailer) (cinfo);
-  (*cinfo->dest->term_destination) (cinfo);
-  /* We can use jpeg_abort to release memory and reset global_state */
-  jpeg_abort((j_common_ptr) cinfo);
-}
-
-
-/*
- * Write a special marker.
- * This is only recommended for writing COM or APPn markers.
- * Must be called after jpeg_start_compress() and before
- * first call to jpeg_write_scanlines() or jpeg_write_raw_data().
- */
-
-GLOBAL(void)
-jpeg_write_marker (j_compress_ptr cinfo, int marker,
-		   const JOCTET *dataptr, unsigned int datalen)
-{
-  JMETHOD(void, write_marker_byte, (j_compress_ptr info, int val));
-
-  if (cinfo->next_scanline != 0 ||
-      (cinfo->global_state != CSTATE_SCANNING &&
-       cinfo->global_state != CSTATE_RAW_OK &&
-       cinfo->global_state != CSTATE_WRCOEFS))
-    ERREXIT1(cinfo, JERR_BAD_STATE, cinfo->global_state);
-
-  (*cinfo->marker->write_marker_header) (cinfo, marker, datalen);
-  write_marker_byte = cinfo->marker->write_marker_byte;	/* copy for speed */
-  while (datalen--) {
-    (*write_marker_byte) (cinfo, *dataptr);
-    dataptr++;
-  }
-}
-
-/* Same, but piecemeal. */
-
-GLOBAL(void)
-jpeg_write_m_header (j_compress_ptr cinfo, int marker, unsigned int datalen)
-{
-  if (cinfo->next_scanline != 0 ||
-      (cinfo->global_state != CSTATE_SCANNING &&
-       cinfo->global_state != CSTATE_RAW_OK &&
-       cinfo->global_state != CSTATE_WRCOEFS))
-    ERREXIT1(cinfo, JERR_BAD_STATE, cinfo->global_state);
-
-  (*cinfo->marker->write_marker_header) (cinfo, marker, datalen);
-}
-
-GLOBAL(void)
-jpeg_write_m_byte (j_compress_ptr cinfo, int val)
-{
-  (*cinfo->marker->write_marker_byte) (cinfo, val);
-}
-
-
-/*
- * Alternate compression function: just write an abbreviated table file.
- * Before calling this, all parameters and a data destination must be set up.
- *
- * To produce a pair of files containing abbreviated tables and abbreviated
- * image data, one would proceed as follows:
- *
- *		initialize JPEG object
- *		set JPEG parameters
- *		set destination to table file
- *		jpeg_write_tables(cinfo);
- *		set destination to image file
- *		jpeg_start_compress(cinfo, FALSE);
- *		write data...
- *		jpeg_finish_compress(cinfo);
- *
- * jpeg_write_tables has the side effect of marking all tables written
- * (same as jpeg_suppress_tables(..., TRUE)).  Thus a subsequent start_compress
- * will not re-emit the tables unless it is passed write_all_tables=TRUE.
- */
-
-GLOBAL(void)
-jpeg_write_tables (j_compress_ptr cinfo)
-{
-  if (cinfo->global_state != CSTATE_START)
-    ERREXIT1(cinfo, JERR_BAD_STATE, cinfo->global_state);
-
-  /* (Re)initialize error mgr and destination modules */
-  (*cinfo->err->reset_error_mgr) ((j_common_ptr) cinfo);
-  (*cinfo->dest->init_destination) (cinfo);
-  /* Initialize the marker writer ... bit of a crock to do it here. */
-  jinit_marker_writer(cinfo);
-  /* Write them tables! */
-  (*cinfo->marker->write_tables_only) (cinfo);
-  /* And clean up. */
-  (*cinfo->dest->term_destination) (cinfo);
-  /*
-   * In library releases up through v6a, we called jpeg_abort() here to free
-   * any working memory allocated by the destination manager and marker
-   * writer.  Some applications had a problem with that: they allocated space
-   * of their own from the library memory manager, and didn't want it to go
-   * away during write_tables.  So now we do nothing.  This will cause a
-   * memory leak if an app calls write_tables repeatedly without doing a full
-   * compression cycle or otherwise resetting the JPEG object.  However, that
-   * seems less bad than unexpectedly freeing memory in the normal case.
-   * An app that prefers the old behavior can call jpeg_abort for itself after
-   * each call to jpeg_write_tables().
-   */
-}
diff --git a/src/libjpeg/jcapistd.c b/src/libjpeg/jcapistd.c
deleted file mode 100644
index fed66ca..0000000
--- a/src/libjpeg/jcapistd.c
+++ /dev/null
@@ -1,161 +0,0 @@
-/*
- * jcapistd.c
- *
- * Copyright (C) 1994-1996, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains application interface code for the compression half
- * of the JPEG library.  These are the "standard" API routines that are
- * used in the normal full-compression case.  They are not used by a
- * transcoding-only application.  Note that if an application links in
- * jpeg_start_compress, it will end up linking in the entire compressor.
- * We thus must separate this file from jcapimin.c to avoid linking the
- * whole compression library into a transcoder.
- */
-
-#define JPEG_INTERNALS
-#include "jinclude.h"
-#include "jpeglib.h"
-
-
-/*
- * Compression initialization.
- * Before calling this, all parameters and a data destination must be set up.
- *
- * We require a write_all_tables parameter as a failsafe check when writing
- * multiple datastreams from the same compression object.  Since prior runs
- * will have left all the tables marked sent_table=TRUE, a subsequent run
- * would emit an abbreviated stream (no tables) by default.  This may be what
- * is wanted, but for safety's sake it should not be the default behavior:
- * programmers should have to make a deliberate choice to emit abbreviated
- * images.  Therefore the documentation and examples should encourage people
- * to pass write_all_tables=TRUE; then it will take active thought to do the
- * wrong thing.
- */
-
-GLOBAL(void)
-jpeg_start_compress (j_compress_ptr cinfo, boolean write_all_tables)
-{
-  if (cinfo->global_state != CSTATE_START)
-    ERREXIT1(cinfo, JERR_BAD_STATE, cinfo->global_state);
-
-  if (write_all_tables)
-    jpeg_suppress_tables(cinfo, FALSE);	/* mark all tables to be written */
-
-  /* (Re)initialize error mgr and destination modules */
-  (*cinfo->err->reset_error_mgr) ((j_common_ptr) cinfo);
-  (*cinfo->dest->init_destination) (cinfo);
-  /* Perform master selection of active modules */
-  jinit_compress_master(cinfo);
-  /* Set up for the first pass */
-  (*cinfo->master->prepare_for_pass) (cinfo);
-  /* Ready for application to drive first pass through jpeg_write_scanlines
-   * or jpeg_write_raw_data.
-   */
-  cinfo->next_scanline = 0;
-  cinfo->global_state = (cinfo->raw_data_in ? CSTATE_RAW_OK : CSTATE_SCANNING);
-}
-
-
-/*
- * Write some scanlines of data to the JPEG compressor.
- *
- * The return value will be the number of lines actually written.
- * This should be less than the supplied num_lines only in case that
- * the data destination module has requested suspension of the compressor,
- * or if more than image_height scanlines are passed in.
- *
- * Note: we warn about excess calls to jpeg_write_scanlines() since
- * this likely signals an application programmer error.  However,
- * excess scanlines passed in the last valid call are *silently* ignored,
- * so that the application need not adjust num_lines for end-of-image
- * when using a multiple-scanline buffer.
- */
-
-GLOBAL(JDIMENSION)
-jpeg_write_scanlines (j_compress_ptr cinfo, JSAMPARRAY scanlines,
-		      JDIMENSION num_lines)
-{
-  JDIMENSION row_ctr, rows_left;
-
-  if (cinfo->global_state != CSTATE_SCANNING)
-    ERREXIT1(cinfo, JERR_BAD_STATE, cinfo->global_state);
-  if (cinfo->next_scanline >= cinfo->image_height)
-    WARNMS(cinfo, JWRN_TOO_MUCH_DATA);
-
-  /* Call progress monitor hook if present */
-  if (cinfo->progress != NULL) {
-    cinfo->progress->pass_counter = (long) cinfo->next_scanline;
-    cinfo->progress->pass_limit = (long) cinfo->image_height;
-    (*cinfo->progress->progress_monitor) ((j_common_ptr) cinfo);
-  }
-
-  /* Give master control module another chance if this is first call to
-   * jpeg_write_scanlines.  This lets output of the frame/scan headers be
-   * delayed so that application can write COM, etc, markers between
-   * jpeg_start_compress and jpeg_write_scanlines.
-   */
-  if (cinfo->master->call_pass_startup)
-    (*cinfo->master->pass_startup) (cinfo);
-
-  /* Ignore any extra scanlines at bottom of image. */
-  rows_left = cinfo->image_height - cinfo->next_scanline;
-  if (num_lines > rows_left)
-    num_lines = rows_left;
-
-  row_ctr = 0;
-  (*cinfo->main->process_data) (cinfo, scanlines, &row_ctr, num_lines);
-  cinfo->next_scanline += row_ctr;
-  return row_ctr;
-}
-
-
-/*
- * Alternate entry point to write raw data.
- * Processes exactly one iMCU row per call, unless suspended.
- */
-
-GLOBAL(JDIMENSION)
-jpeg_write_raw_data (j_compress_ptr cinfo, JSAMPIMAGE data,
-		     JDIMENSION num_lines)
-{
-  JDIMENSION lines_per_iMCU_row;
-
-  if (cinfo->global_state != CSTATE_RAW_OK)
-    ERREXIT1(cinfo, JERR_BAD_STATE, cinfo->global_state);
-  if (cinfo->next_scanline >= cinfo->image_height) {
-    WARNMS(cinfo, JWRN_TOO_MUCH_DATA);
-    return 0;
-  }
-
-  /* Call progress monitor hook if present */
-  if (cinfo->progress != NULL) {
-    cinfo->progress->pass_counter = (long) cinfo->next_scanline;
-    cinfo->progress->pass_limit = (long) cinfo->image_height;
-    (*cinfo->progress->progress_monitor) ((j_common_ptr) cinfo);
-  }
-
-  /* Give master control module another chance if this is first call to
-   * jpeg_write_raw_data.  This lets output of the frame/scan headers be
-   * delayed so that application can write COM, etc, markers between
-   * jpeg_start_compress and jpeg_write_raw_data.
-   */
-  if (cinfo->master->call_pass_startup)
-    (*cinfo->master->pass_startup) (cinfo);
-
-  /* Verify that at least one iMCU row has been passed. */
-  lines_per_iMCU_row = cinfo->max_v_samp_factor * DCTSIZE;
-  if (num_lines < lines_per_iMCU_row)
-    ERREXIT(cinfo, JERR_BUFFER_SIZE);
-
-  /* Directly compress the row. */
-  if (! (*cinfo->coef->compress_data) (cinfo, data)) {
-    /* If compressor did not consume the whole row, suspend processing. */
-    return 0;
-  }
-
-  /* OK, we processed one iMCU row. */
-  cinfo->next_scanline += lines_per_iMCU_row;
-  return lines_per_iMCU_row;
-}
diff --git a/src/libjpeg/jccoefct.c b/src/libjpeg/jccoefct.c
deleted file mode 100644
index c713b85..0000000
--- a/src/libjpeg/jccoefct.c
+++ /dev/null
@@ -1,449 +0,0 @@
-/*
- * jccoefct.c
- *
- * Copyright (C) 1994-1997, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains the coefficient buffer controller for compression.
- * This controller is the top level of the JPEG compressor proper.
- * The coefficient buffer lies between forward-DCT and entropy encoding steps.
- */
-
-#define JPEG_INTERNALS
-#include "jinclude.h"
-#include "jpeglib.h"
-
-
-/* We use a full-image coefficient buffer when doing Huffman optimization,
- * and also for writing multiple-scan JPEG files.  In all cases, the DCT
- * step is run during the first pass, and subsequent passes need only read
- * the buffered coefficients.
- */
-#ifdef ENTROPY_OPT_SUPPORTED
-#define FULL_COEF_BUFFER_SUPPORTED
-#else
-#ifdef C_MULTISCAN_FILES_SUPPORTED
-#define FULL_COEF_BUFFER_SUPPORTED
-#endif
-#endif
-
-
-/* Private buffer controller object */
-
-typedef struct {
-  struct jpeg_c_coef_controller pub; /* public fields */
-
-  JDIMENSION iMCU_row_num;	/* iMCU row # within image */
-  JDIMENSION mcu_ctr;		/* counts MCUs processed in current row */
-  int MCU_vert_offset;		/* counts MCU rows within iMCU row */
-  int MCU_rows_per_iMCU_row;	/* number of such rows needed */
-
-  /* For single-pass compression, it's sufficient to buffer just one MCU
-   * (although this may prove a bit slow in practice).  We allocate a
-   * workspace of C_MAX_BLOCKS_IN_MCU coefficient blocks, and reuse it for each
-   * MCU constructed and sent.  (On 80x86, the workspace is FAR even though
-   * it's not really very big; this is to keep the module interfaces unchanged
-   * when a large coefficient buffer is necessary.)
-   * In multi-pass modes, this array points to the current MCU's blocks
-   * within the virtual arrays.
-   */
-  JBLOCKROW MCU_buffer[C_MAX_BLOCKS_IN_MCU];
-
-  /* In multi-pass modes, we need a virtual block array for each component. */
-  jvirt_barray_ptr whole_image[MAX_COMPONENTS];
-} my_coef_controller;
-
-typedef my_coef_controller * my_coef_ptr;
-
-
-/* Forward declarations */
-METHODDEF(boolean) compress_data
-    JPP((j_compress_ptr cinfo, JSAMPIMAGE input_buf));
-#ifdef FULL_COEF_BUFFER_SUPPORTED
-METHODDEF(boolean) compress_first_pass
-    JPP((j_compress_ptr cinfo, JSAMPIMAGE input_buf));
-METHODDEF(boolean) compress_output
-    JPP((j_compress_ptr cinfo, JSAMPIMAGE input_buf));
-#endif
-
-
-LOCAL(void)
-start_iMCU_row (j_compress_ptr cinfo)
-/* Reset within-iMCU-row counters for a new row */
-{
-  my_coef_ptr coef = (my_coef_ptr) cinfo->coef;
-
-  /* In an interleaved scan, an MCU row is the same as an iMCU row.
-   * In a noninterleaved scan, an iMCU row has v_samp_factor MCU rows.
-   * But at the bottom of the image, process only what's left.
-   */
-  if (cinfo->comps_in_scan > 1) {
-    coef->MCU_rows_per_iMCU_row = 1;
-  } else {
-    if (coef->iMCU_row_num < (cinfo->total_iMCU_rows-1))
-      coef->MCU_rows_per_iMCU_row = cinfo->cur_comp_info[0]->v_samp_factor;
-    else
-      coef->MCU_rows_per_iMCU_row = cinfo->cur_comp_info[0]->last_row_height;
-  }
-
-  coef->mcu_ctr = 0;
-  coef->MCU_vert_offset = 0;
-}
-
-
-/*
- * Initialize for a processing pass.
- */
-
-METHODDEF(void)
-start_pass_coef (j_compress_ptr cinfo, J_BUF_MODE pass_mode)
-{
-  my_coef_ptr coef = (my_coef_ptr) cinfo->coef;
-
-  coef->iMCU_row_num = 0;
-  start_iMCU_row(cinfo);
-
-  switch (pass_mode) {
-  case JBUF_PASS_THRU:
-    if (coef->whole_image[0] != NULL)
-      ERREXIT(cinfo, JERR_BAD_BUFFER_MODE);
-    coef->pub.compress_data = compress_data;
-    break;
-#ifdef FULL_COEF_BUFFER_SUPPORTED
-  case JBUF_SAVE_AND_PASS:
-    if (coef->whole_image[0] == NULL)
-      ERREXIT(cinfo, JERR_BAD_BUFFER_MODE);
-    coef->pub.compress_data = compress_first_pass;
-    break;
-  case JBUF_CRANK_DEST:
-    if (coef->whole_image[0] == NULL)
-      ERREXIT(cinfo, JERR_BAD_BUFFER_MODE);
-    coef->pub.compress_data = compress_output;
-    break;
-#endif
-  default:
-    ERREXIT(cinfo, JERR_BAD_BUFFER_MODE);
-    break;
-  }
-}
-
-
-/*
- * Process some data in the single-pass case.
- * We process the equivalent of one fully interleaved MCU row ("iMCU" row)
- * per call, ie, v_samp_factor block rows for each component in the image.
- * Returns TRUE if the iMCU row is completed, FALSE if suspended.
- *
- * NB: input_buf contains a plane for each component in image,
- * which we index according to the component's SOF position.
- */
-
-METHODDEF(boolean)
-compress_data (j_compress_ptr cinfo, JSAMPIMAGE input_buf)
-{
-  my_coef_ptr coef = (my_coef_ptr) cinfo->coef;
-  JDIMENSION MCU_col_num;	/* index of current MCU within row */
-  JDIMENSION last_MCU_col = cinfo->MCUs_per_row - 1;
-  JDIMENSION last_iMCU_row = cinfo->total_iMCU_rows - 1;
-  int blkn, bi, ci, yindex, yoffset, blockcnt;
-  JDIMENSION ypos, xpos;
-  jpeg_component_info *compptr;
-
-  /* Loop to write as much as one whole iMCU row */
-  for (yoffset = coef->MCU_vert_offset; yoffset < coef->MCU_rows_per_iMCU_row;
-       yoffset++) {
-    for (MCU_col_num = coef->mcu_ctr; MCU_col_num <= last_MCU_col;
-	 MCU_col_num++) {
-      /* Determine where data comes from in input_buf and do the DCT thing.
-       * Each call on forward_DCT processes a horizontal row of DCT blocks
-       * as wide as an MCU; we rely on having allocated the MCU_buffer[] blocks
-       * sequentially.  Dummy blocks at the right or bottom edge are filled in
-       * specially.  The data in them does not matter for image reconstruction,
-       * so we fill them with values that will encode to the smallest amount of
-       * data, viz: all zeroes in the AC entries, DC entries equal to previous
-       * block's DC value.  (Thanks to Thomas Kinsman for this idea.)
-       */
-      blkn = 0;
-      for (ci = 0; ci < cinfo->comps_in_scan; ci++) {
-	compptr = cinfo->cur_comp_info[ci];
-	blockcnt = (MCU_col_num < last_MCU_col) ? compptr->MCU_width
-						: compptr->last_col_width;
-	xpos = MCU_col_num * compptr->MCU_sample_width;
-	ypos = yoffset * DCTSIZE; /* ypos == (yoffset+yindex) * DCTSIZE */
-	for (yindex = 0; yindex < compptr->MCU_height; yindex++) {
-	  if (coef->iMCU_row_num < last_iMCU_row ||
-	      yoffset+yindex < compptr->last_row_height) {
-	    (*cinfo->fdct->forward_DCT) (cinfo, compptr,
-					 input_buf[compptr->component_index],
-					 coef->MCU_buffer[blkn],
-					 ypos, xpos, (JDIMENSION) blockcnt);
-	    if (blockcnt < compptr->MCU_width) {
-	      /* Create some dummy blocks at the right edge of the image. */
-	      jzero_far((void FAR *) coef->MCU_buffer[blkn + blockcnt],
-			(compptr->MCU_width - blockcnt) * SIZEOF(JBLOCK));
-	      for (bi = blockcnt; bi < compptr->MCU_width; bi++) {
-		coef->MCU_buffer[blkn+bi][0][0] = coef->MCU_buffer[blkn+bi-1][0][0];
-	      }
-	    }
-	  } else {
-	    /* Create a row of dummy blocks at the bottom of the image. */
-	    jzero_far((void FAR *) coef->MCU_buffer[blkn],
-		      compptr->MCU_width * SIZEOF(JBLOCK));
-	    for (bi = 0; bi < compptr->MCU_width; bi++) {
-	      coef->MCU_buffer[blkn+bi][0][0] = coef->MCU_buffer[blkn-1][0][0];
-	    }
-	  }
-	  blkn += compptr->MCU_width;
-	  ypos += DCTSIZE;
-	}
-      }
-      /* Try to write the MCU.  In event of a suspension failure, we will
-       * re-DCT the MCU on restart (a bit inefficient, could be fixed...)
-       */
-      if (! (*cinfo->entropy->encode_mcu) (cinfo, coef->MCU_buffer)) {
-	/* Suspension forced; update state counters and exit */
-	coef->MCU_vert_offset = yoffset;
-	coef->mcu_ctr = MCU_col_num;
-	return FALSE;
-      }
-    }
-    /* Completed an MCU row, but perhaps not an iMCU row */
-    coef->mcu_ctr = 0;
-  }
-  /* Completed the iMCU row, advance counters for next one */
-  coef->iMCU_row_num++;
-  start_iMCU_row(cinfo);
-  return TRUE;
-}
-
-
-#ifdef FULL_COEF_BUFFER_SUPPORTED
-
-/*
- * Process some data in the first pass of a multi-pass case.
- * We process the equivalent of one fully interleaved MCU row ("iMCU" row)
- * per call, ie, v_samp_factor block rows for each component in the image.
- * This amount of data is read from the source buffer, DCT'd and quantized,
- * and saved into the virtual arrays.  We also generate suitable dummy blocks
- * as needed at the right and lower edges.  (The dummy blocks are constructed
- * in the virtual arrays, which have been padded appropriately.)  This makes
- * it possible for subsequent passes not to worry about real vs. dummy blocks.
- *
- * We must also emit the data to the entropy encoder.  This is conveniently
- * done by calling compress_output() after we've loaded the current strip
- * of the virtual arrays.
- *
- * NB: input_buf contains a plane for each component in image.  All
- * components are DCT'd and loaded into the virtual arrays in this pass.
- * However, it may be that only a subset of the components are emitted to
- * the entropy encoder during this first pass; be careful about looking
- * at the scan-dependent variables (MCU dimensions, etc).
- */
-
-METHODDEF(boolean)
-compress_first_pass (j_compress_ptr cinfo, JSAMPIMAGE input_buf)
-{
-  my_coef_ptr coef = (my_coef_ptr) cinfo->coef;
-  JDIMENSION last_iMCU_row = cinfo->total_iMCU_rows - 1;
-  JDIMENSION blocks_across, MCUs_across, MCUindex;
-  int bi, ci, h_samp_factor, block_row, block_rows, ndummy;
-  JCOEF lastDC;
-  jpeg_component_info *compptr;
-  JBLOCKARRAY buffer;
-  JBLOCKROW thisblockrow, lastblockrow;
-
-  for (ci = 0, compptr = cinfo->comp_info; ci < cinfo->num_components;
-       ci++, compptr++) {
-    /* Align the virtual buffer for this component. */
-    buffer = (*cinfo->mem->access_virt_barray)
-      ((j_common_ptr) cinfo, coef->whole_image[ci],
-       coef->iMCU_row_num * compptr->v_samp_factor,
-       (JDIMENSION) compptr->v_samp_factor, TRUE);
-    /* Count non-dummy DCT block rows in this iMCU row. */
-    if (coef->iMCU_row_num < last_iMCU_row)
-      block_rows = compptr->v_samp_factor;
-    else {
-      /* NB: can't use last_row_height here, since may not be set! */
-      block_rows = (int) (compptr->height_in_blocks % compptr->v_samp_factor);
-      if (block_rows == 0) block_rows = compptr->v_samp_factor;
-    }
-    blocks_across = compptr->width_in_blocks;
-    h_samp_factor = compptr->h_samp_factor;
-    /* Count number of dummy blocks to be added at the right margin. */
-    ndummy = (int) (blocks_across % h_samp_factor);
-    if (ndummy > 0)
-      ndummy = h_samp_factor - ndummy;
-    /* Perform DCT for all non-dummy blocks in this iMCU row.  Each call
-     * on forward_DCT processes a complete horizontal row of DCT blocks.
-     */
-    for (block_row = 0; block_row < block_rows; block_row++) {
-      thisblockrow = buffer[block_row];
-      (*cinfo->fdct->forward_DCT) (cinfo, compptr,
-				   input_buf[ci], thisblockrow,
-				   (JDIMENSION) (block_row * DCTSIZE),
-				   (JDIMENSION) 0, blocks_across);
-      if (ndummy > 0) {
-	/* Create dummy blocks at the right edge of the image. */
-	thisblockrow += blocks_across; /* => first dummy block */
-	jzero_far((void FAR *) thisblockrow, ndummy * SIZEOF(JBLOCK));
-	lastDC = thisblockrow[-1][0];
-	for (bi = 0; bi < ndummy; bi++) {
-	  thisblockrow[bi][0] = lastDC;
-	}
-      }
-    }
-    /* If at end of image, create dummy block rows as needed.
-     * The tricky part here is that within each MCU, we want the DC values
-     * of the dummy blocks to match the last real block's DC value.
-     * This squeezes a few more bytes out of the resulting file...
-     */
-    if (coef->iMCU_row_num == last_iMCU_row) {
-      blocks_across += ndummy;	/* include lower right corner */
-      MCUs_across = blocks_across / h_samp_factor;
-      for (block_row = block_rows; block_row < compptr->v_samp_factor;
-	   block_row++) {
-	thisblockrow = buffer[block_row];
-	lastblockrow = buffer[block_row-1];
-	jzero_far((void FAR *) thisblockrow,
-		  (size_t) (blocks_across * SIZEOF(JBLOCK)));
-	for (MCUindex = 0; MCUindex < MCUs_across; MCUindex++) {
-	  lastDC = lastblockrow[h_samp_factor-1][0];
-	  for (bi = 0; bi < h_samp_factor; bi++) {
-	    thisblockrow[bi][0] = lastDC;
-	  }
-	  thisblockrow += h_samp_factor; /* advance to next MCU in row */
-	  lastblockrow += h_samp_factor;
-	}
-      }
-    }
-  }
-  /* NB: compress_output will increment iMCU_row_num if successful.
-   * A suspension return will result in redoing all the work above next time.
-   */
-
-  /* Emit data to the entropy encoder, sharing code with subsequent passes */
-  return compress_output(cinfo, input_buf);
-}
-
-
-/*
- * Process some data in subsequent passes of a multi-pass case.
- * We process the equivalent of one fully interleaved MCU row ("iMCU" row)
- * per call, ie, v_samp_factor block rows for each component in the scan.
- * The data is obtained from the virtual arrays and fed to the entropy coder.
- * Returns TRUE if the iMCU row is completed, FALSE if suspended.
- *
- * NB: input_buf is ignored; it is likely to be a NULL pointer.
- */
-
-METHODDEF(boolean)
-compress_output (j_compress_ptr cinfo, JSAMPIMAGE input_buf)
-{
-  my_coef_ptr coef = (my_coef_ptr) cinfo->coef;
-  JDIMENSION MCU_col_num;	/* index of current MCU within row */
-  int blkn, ci, xindex, yindex, yoffset;
-  JDIMENSION start_col;
-  JBLOCKARRAY buffer[MAX_COMPS_IN_SCAN];
-  JBLOCKROW buffer_ptr;
-  jpeg_component_info *compptr;
-
-  /* Align the virtual buffers for the components used in this scan.
-   * NB: during first pass, this is safe only because the buffers will
-   * already be aligned properly, so jmemmgr.c won't need to do any I/O.
-   */
-  for (ci = 0; ci < cinfo->comps_in_scan; ci++) {
-    compptr = cinfo->cur_comp_info[ci];
-    buffer[ci] = (*cinfo->mem->access_virt_barray)
-      ((j_common_ptr) cinfo, coef->whole_image[compptr->component_index],
-       coef->iMCU_row_num * compptr->v_samp_factor,
-       (JDIMENSION) compptr->v_samp_factor, FALSE);
-  }
-
-  /* Loop to process one whole iMCU row */
-  for (yoffset = coef->MCU_vert_offset; yoffset < coef->MCU_rows_per_iMCU_row;
-       yoffset++) {
-    for (MCU_col_num = coef->mcu_ctr; MCU_col_num < cinfo->MCUs_per_row;
-	 MCU_col_num++) {
-      /* Construct list of pointers to DCT blocks belonging to this MCU */
-      blkn = 0;			/* index of current DCT block within MCU */
-      for (ci = 0; ci < cinfo->comps_in_scan; ci++) {
-	compptr = cinfo->cur_comp_info[ci];
-	start_col = MCU_col_num * compptr->MCU_width;
-	for (yindex = 0; yindex < compptr->MCU_height; yindex++) {
-	  buffer_ptr = buffer[ci][yindex+yoffset] + start_col;
-	  for (xindex = 0; xindex < compptr->MCU_width; xindex++) {
-	    coef->MCU_buffer[blkn++] = buffer_ptr++;
-	  }
-	}
-      }
-      /* Try to write the MCU. */
-      if (! (*cinfo->entropy->encode_mcu) (cinfo, coef->MCU_buffer)) {
-	/* Suspension forced; update state counters and exit */
-	coef->MCU_vert_offset = yoffset;
-	coef->mcu_ctr = MCU_col_num;
-	return FALSE;
-      }
-    }
-    /* Completed an MCU row, but perhaps not an iMCU row */
-    coef->mcu_ctr = 0;
-  }
-  /* Completed the iMCU row, advance counters for next one */
-  coef->iMCU_row_num++;
-  start_iMCU_row(cinfo);
-  return TRUE;
-}
-
-#endif /* FULL_COEF_BUFFER_SUPPORTED */
-
-
-/*
- * Initialize coefficient buffer controller.
- */
-
-GLOBAL(void)
-jinit_c_coef_controller (j_compress_ptr cinfo, boolean need_full_buffer)
-{
-  my_coef_ptr coef;
-
-  coef = (my_coef_ptr)
-    (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
-				SIZEOF(my_coef_controller));
-  cinfo->coef = (struct jpeg_c_coef_controller *) coef;
-  coef->pub.start_pass = start_pass_coef;
-
-  /* Create the coefficient buffer. */
-  if (need_full_buffer) {
-#ifdef FULL_COEF_BUFFER_SUPPORTED
-    /* Allocate a full-image virtual array for each component, */
-    /* padded to a multiple of samp_factor DCT blocks in each direction. */
-    int ci;
-    jpeg_component_info *compptr;
-
-    for (ci = 0, compptr = cinfo->comp_info; ci < cinfo->num_components;
-	 ci++, compptr++) {
-      coef->whole_image[ci] = (*cinfo->mem->request_virt_barray)
-	((j_common_ptr) cinfo, JPOOL_IMAGE, FALSE,
-	 (JDIMENSION) jround_up((long) compptr->width_in_blocks,
-				(long) compptr->h_samp_factor),
-	 (JDIMENSION) jround_up((long) compptr->height_in_blocks,
-				(long) compptr->v_samp_factor),
-	 (JDIMENSION) compptr->v_samp_factor);
-    }
-#else
-    ERREXIT(cinfo, JERR_BAD_BUFFER_MODE);
-#endif
-  } else {
-    /* We only need a single-MCU buffer. */
-    JBLOCKROW buffer;
-    int i;
-
-    buffer = (JBLOCKROW)
-      (*cinfo->mem->alloc_large) ((j_common_ptr) cinfo, JPOOL_IMAGE,
-				  C_MAX_BLOCKS_IN_MCU * SIZEOF(JBLOCK));
-    for (i = 0; i < C_MAX_BLOCKS_IN_MCU; i++) {
-      coef->MCU_buffer[i] = buffer + i;
-    }
-    coef->whole_image[0] = NULL; /* flag for no virtual arrays */
-  }
-}
diff --git a/src/libjpeg/jccolor.c b/src/libjpeg/jccolor.c
deleted file mode 100644
index 2663724..0000000
--- a/src/libjpeg/jccolor.c
+++ /dev/null
@@ -1,459 +0,0 @@
-/*
- * jccolor.c
- *
- * Copyright (C) 1991-1996, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains input colorspace conversion routines.
- */
-
-#define JPEG_INTERNALS
-#include "jinclude.h"
-#include "jpeglib.h"
-
-
-/* Private subobject */
-
-typedef struct {
-  struct jpeg_color_converter pub; /* public fields */
-
-  /* Private state for RGB->YCC conversion */
-  INT32 * rgb_ycc_tab;		/* => table for RGB to YCbCr conversion */
-} my_color_converter;
-
-typedef my_color_converter * my_cconvert_ptr;
-
-
-/**************** RGB -> YCbCr conversion: most common case **************/
-
-/*
- * YCbCr is defined per CCIR 601-1, except that Cb and Cr are
- * normalized to the range 0..MAXJSAMPLE rather than -0.5 .. 0.5.
- * The conversion equations to be implemented are therefore
- *	Y  =  0.29900 * R + 0.58700 * G + 0.11400 * B
- *	Cb = -0.16874 * R - 0.33126 * G + 0.50000 * B  + CENTERJSAMPLE
- *	Cr =  0.50000 * R - 0.41869 * G - 0.08131 * B  + CENTERJSAMPLE
- * (These numbers are derived from TIFF 6.0 section 21, dated 3-June-92.)
- * Note: older versions of the IJG code used a zero offset of MAXJSAMPLE/2,
- * rather than CENTERJSAMPLE, for Cb and Cr.  This gave equal positive and
- * negative swings for Cb/Cr, but meant that grayscale values (Cb=Cr=0)
- * were not represented exactly.  Now we sacrifice exact representation of
- * maximum red and maximum blue in order to get exact grayscales.
- *
- * To avoid floating-point arithmetic, we represent the fractional constants
- * as integers scaled up by 2^16 (about 4 digits precision); we have to divide
- * the products by 2^16, with appropriate rounding, to get the correct answer.
- *
- * For even more speed, we avoid doing any multiplications in the inner loop
- * by precalculating the constants times R,G,B for all possible values.
- * For 8-bit JSAMPLEs this is very reasonable (only 256 entries per table);
- * for 12-bit samples it is still acceptable.  It's not very reasonable for
- * 16-bit samples, but if you want lossless storage you shouldn't be changing
- * colorspace anyway.
- * The CENTERJSAMPLE offsets and the rounding fudge-factor of 0.5 are included
- * in the tables to save adding them separately in the inner loop.
- */
-
-#define SCALEBITS	16	/* speediest right-shift on some machines */
-#define CBCR_OFFSET	((INT32) CENTERJSAMPLE << SCALEBITS)
-#define ONE_HALF	((INT32) 1 << (SCALEBITS-1))
-#define FIX(x)		((INT32) ((x) * (1L<<SCALEBITS) + 0.5))
-
-/* We allocate one big table and divide it up into eight parts, instead of
- * doing eight alloc_small requests.  This lets us use a single table base
- * address, which can be held in a register in the inner loops on many
- * machines (more than can hold all eight addresses, anyway).
- */
-
-#define R_Y_OFF		0			/* offset to R => Y section */
-#define G_Y_OFF		(1*(MAXJSAMPLE+1))	/* offset to G => Y section */
-#define B_Y_OFF		(2*(MAXJSAMPLE+1))	/* etc. */
-#define R_CB_OFF	(3*(MAXJSAMPLE+1))
-#define G_CB_OFF	(4*(MAXJSAMPLE+1))
-#define B_CB_OFF	(5*(MAXJSAMPLE+1))
-#define R_CR_OFF	B_CB_OFF		/* B=>Cb, R=>Cr are the same */
-#define G_CR_OFF	(6*(MAXJSAMPLE+1))
-#define B_CR_OFF	(7*(MAXJSAMPLE+1))
-#define TABLE_SIZE	(8*(MAXJSAMPLE+1))
-
-
-/*
- * Initialize for RGB->YCC colorspace conversion.
- */
-
-METHODDEF(void)
-rgb_ycc_start (j_compress_ptr cinfo)
-{
-  my_cconvert_ptr cconvert = (my_cconvert_ptr) cinfo->cconvert;
-  INT32 * rgb_ycc_tab;
-  INT32 i;
-
-  /* Allocate and fill in the conversion tables. */
-  cconvert->rgb_ycc_tab = rgb_ycc_tab = (INT32 *)
-    (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
-				(TABLE_SIZE * SIZEOF(INT32)));
-
-  for (i = 0; i <= MAXJSAMPLE; i++) {
-    rgb_ycc_tab[i+R_Y_OFF] = FIX(0.29900) * i;
-    rgb_ycc_tab[i+G_Y_OFF] = FIX(0.58700) * i;
-    rgb_ycc_tab[i+B_Y_OFF] = FIX(0.11400) * i     + ONE_HALF;
-    rgb_ycc_tab[i+R_CB_OFF] = (-FIX(0.16874)) * i;
-    rgb_ycc_tab[i+G_CB_OFF] = (-FIX(0.33126)) * i;
-    /* We use a rounding fudge-factor of 0.5-epsilon for Cb and Cr.
-     * This ensures that the maximum output will round to MAXJSAMPLE
-     * not MAXJSAMPLE+1, and thus that we don't have to range-limit.
-     */
-    rgb_ycc_tab[i+B_CB_OFF] = FIX(0.50000) * i    + CBCR_OFFSET + ONE_HALF-1;
-/*  B=>Cb and R=>Cr tables are the same
-    rgb_ycc_tab[i+R_CR_OFF] = FIX(0.50000) * i    + CBCR_OFFSET + ONE_HALF-1;
-*/
-    rgb_ycc_tab[i+G_CR_OFF] = (-FIX(0.41869)) * i;
-    rgb_ycc_tab[i+B_CR_OFF] = (-FIX(0.08131)) * i;
-  }
-}
-
-
-/*
- * Convert some rows of samples to the JPEG colorspace.
- *
- * Note that we change from the application's interleaved-pixel format
- * to our internal noninterleaved, one-plane-per-component format.
- * The input buffer is therefore three times as wide as the output buffer.
- *
- * A starting row offset is provided only for the output buffer.  The caller
- * can easily adjust the passed input_buf value to accommodate any row
- * offset required on that side.
- */
-
-METHODDEF(void)
-rgb_ycc_convert (j_compress_ptr cinfo,
-		 JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
-		 JDIMENSION output_row, int num_rows)
-{
-  my_cconvert_ptr cconvert = (my_cconvert_ptr) cinfo->cconvert;
-  register int r, g, b;
-  register INT32 * ctab = cconvert->rgb_ycc_tab;
-  register JSAMPROW inptr;
-  register JSAMPROW outptr0, outptr1, outptr2;
-  register JDIMENSION col;
-  JDIMENSION num_cols = cinfo->image_width;
-
-  while (--num_rows >= 0) {
-    inptr = *input_buf++;
-    outptr0 = output_buf[0][output_row];
-    outptr1 = output_buf[1][output_row];
-    outptr2 = output_buf[2][output_row];
-    output_row++;
-    for (col = 0; col < num_cols; col++) {
-      r = GETJSAMPLE(inptr[RGB_RED]);
-      g = GETJSAMPLE(inptr[RGB_GREEN]);
-      b = GETJSAMPLE(inptr[RGB_BLUE]);
-      inptr += RGB_PIXELSIZE;
-      /* If the inputs are 0..MAXJSAMPLE, the outputs of these equations
-       * must be too; we do not need an explicit range-limiting operation.
-       * Hence the value being shifted is never negative, and we don't
-       * need the general RIGHT_SHIFT macro.
-       */
-      /* Y */
-      outptr0[col] = (JSAMPLE)
-		((ctab[r+R_Y_OFF] + ctab[g+G_Y_OFF] + ctab[b+B_Y_OFF])
-		 >> SCALEBITS);
-      /* Cb */
-      outptr1[col] = (JSAMPLE)
-		((ctab[r+R_CB_OFF] + ctab[g+G_CB_OFF] + ctab[b+B_CB_OFF])
-		 >> SCALEBITS);
-      /* Cr */
-      outptr2[col] = (JSAMPLE)
-		((ctab[r+R_CR_OFF] + ctab[g+G_CR_OFF] + ctab[b+B_CR_OFF])
-		 >> SCALEBITS);
-    }
-  }
-}
-
-
-/**************** Cases other than RGB -> YCbCr **************/
-
-
-/*
- * Convert some rows of samples to the JPEG colorspace.
- * This version handles RGB->grayscale conversion, which is the same
- * as the RGB->Y portion of RGB->YCbCr.
- * We assume rgb_ycc_start has been called (we only use the Y tables).
- */
-
-METHODDEF(void)
-rgb_gray_convert (j_compress_ptr cinfo,
-		  JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
-		  JDIMENSION output_row, int num_rows)
-{
-  my_cconvert_ptr cconvert = (my_cconvert_ptr) cinfo->cconvert;
-  register int r, g, b;
-  register INT32 * ctab = cconvert->rgb_ycc_tab;
-  register JSAMPROW inptr;
-  register JSAMPROW outptr;
-  register JDIMENSION col;
-  JDIMENSION num_cols = cinfo->image_width;
-
-  while (--num_rows >= 0) {
-    inptr = *input_buf++;
-    outptr = output_buf[0][output_row];
-    output_row++;
-    for (col = 0; col < num_cols; col++) {
-      r = GETJSAMPLE(inptr[RGB_RED]);
-      g = GETJSAMPLE(inptr[RGB_GREEN]);
-      b = GETJSAMPLE(inptr[RGB_BLUE]);
-      inptr += RGB_PIXELSIZE;
-      /* Y */
-      outptr[col] = (JSAMPLE)
-		((ctab[r+R_Y_OFF] + ctab[g+G_Y_OFF] + ctab[b+B_Y_OFF])
-		 >> SCALEBITS);
-    }
-  }
-}
-
-
-/*
- * Convert some rows of samples to the JPEG colorspace.
- * This version handles Adobe-style CMYK->YCCK conversion,
- * where we convert R=1-C, G=1-M, and B=1-Y to YCbCr using the same
- * conversion as above, while passing K (black) unchanged.
- * We assume rgb_ycc_start has been called.
- */
-
-METHODDEF(void)
-cmyk_ycck_convert (j_compress_ptr cinfo,
-		   JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
-		   JDIMENSION output_row, int num_rows)
-{
-  my_cconvert_ptr cconvert = (my_cconvert_ptr) cinfo->cconvert;
-  register int r, g, b;
-  register INT32 * ctab = cconvert->rgb_ycc_tab;
-  register JSAMPROW inptr;
-  register JSAMPROW outptr0, outptr1, outptr2, outptr3;
-  register JDIMENSION col;
-  JDIMENSION num_cols = cinfo->image_width;
-
-  while (--num_rows >= 0) {
-    inptr = *input_buf++;
-    outptr0 = output_buf[0][output_row];
-    outptr1 = output_buf[1][output_row];
-    outptr2 = output_buf[2][output_row];
-    outptr3 = output_buf[3][output_row];
-    output_row++;
-    for (col = 0; col < num_cols; col++) {
-      r = MAXJSAMPLE - GETJSAMPLE(inptr[0]);
-      g = MAXJSAMPLE - GETJSAMPLE(inptr[1]);
-      b = MAXJSAMPLE - GETJSAMPLE(inptr[2]);
-      /* K passes through as-is */
-      outptr3[col] = inptr[3];	/* don't need GETJSAMPLE here */
-      inptr += 4;
-      /* If the inputs are 0..MAXJSAMPLE, the outputs of these equations
-       * must be too; we do not need an explicit range-limiting operation.
-       * Hence the value being shifted is never negative, and we don't
-       * need the general RIGHT_SHIFT macro.
-       */
-      /* Y */
-      outptr0[col] = (JSAMPLE)
-		((ctab[r+R_Y_OFF] + ctab[g+G_Y_OFF] + ctab[b+B_Y_OFF])
-		 >> SCALEBITS);
-      /* Cb */
-      outptr1[col] = (JSAMPLE)
-		((ctab[r+R_CB_OFF] + ctab[g+G_CB_OFF] + ctab[b+B_CB_OFF])
-		 >> SCALEBITS);
-      /* Cr */
-      outptr2[col] = (JSAMPLE)
-		((ctab[r+R_CR_OFF] + ctab[g+G_CR_OFF] + ctab[b+B_CR_OFF])
-		 >> SCALEBITS);
-    }
-  }
-}
-
-
-/*
- * Convert some rows of samples to the JPEG colorspace.
- * This version handles grayscale output with no conversion.
- * The source can be either plain grayscale or YCbCr (since Y == gray).
- */
-
-METHODDEF(void)
-grayscale_convert (j_compress_ptr cinfo,
-		   JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
-		   JDIMENSION output_row, int num_rows)
-{
-  register JSAMPROW inptr;
-  register JSAMPROW outptr;
-  register JDIMENSION col;
-  JDIMENSION num_cols = cinfo->image_width;
-  int instride = cinfo->input_components;
-
-  while (--num_rows >= 0) {
-    inptr = *input_buf++;
-    outptr = output_buf[0][output_row];
-    output_row++;
-    for (col = 0; col < num_cols; col++) {
-      outptr[col] = inptr[0];	/* don't need GETJSAMPLE() here */
-      inptr += instride;
-    }
-  }
-}
-
-
-/*
- * Convert some rows of samples to the JPEG colorspace.
- * This version handles multi-component colorspaces without conversion.
- * We assume input_components == num_components.
- */
-
-METHODDEF(void)
-null_convert (j_compress_ptr cinfo,
-	      JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
-	      JDIMENSION output_row, int num_rows)
-{
-  register JSAMPROW inptr;
-  register JSAMPROW outptr;
-  register JDIMENSION col;
-  register int ci;
-  int nc = cinfo->num_components;
-  JDIMENSION num_cols = cinfo->image_width;
-
-  while (--num_rows >= 0) {
-    /* It seems fastest to make a separate pass for each component. */
-    for (ci = 0; ci < nc; ci++) {
-      inptr = *input_buf;
-      outptr = output_buf[ci][output_row];
-      for (col = 0; col < num_cols; col++) {
-	outptr[col] = inptr[ci]; /* don't need GETJSAMPLE() here */
-	inptr += nc;
-      }
-    }
-    input_buf++;
-    output_row++;
-  }
-}
-
-
-/*
- * Empty method for start_pass.
- */
-
-METHODDEF(void)
-null_method (j_compress_ptr cinfo)
-{
-  /* no work needed */
-}
-
-
-/*
- * Module initialization routine for input colorspace conversion.
- */
-
-GLOBAL(void)
-jinit_color_converter (j_compress_ptr cinfo)
-{
-  my_cconvert_ptr cconvert;
-
-  cconvert = (my_cconvert_ptr)
-    (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
-				SIZEOF(my_color_converter));
-  cinfo->cconvert = (struct jpeg_color_converter *) cconvert;
-  /* set start_pass to null method until we find out differently */
-  cconvert->pub.start_pass = null_method;
-
-  /* Make sure input_components agrees with in_color_space */
-  switch (cinfo->in_color_space) {
-  case JCS_GRAYSCALE:
-    if (cinfo->input_components != 1)
-      ERREXIT(cinfo, JERR_BAD_IN_COLORSPACE);
-    break;
-
-  case JCS_RGB:
-#if RGB_PIXELSIZE != 3
-    if (cinfo->input_components != RGB_PIXELSIZE)
-      ERREXIT(cinfo, JERR_BAD_IN_COLORSPACE);
-    break;
-#endif /* else share code with YCbCr */
-
-  case JCS_YCbCr:
-    if (cinfo->input_components != 3)
-      ERREXIT(cinfo, JERR_BAD_IN_COLORSPACE);
-    break;
-
-  case JCS_CMYK:
-  case JCS_YCCK:
-    if (cinfo->input_components != 4)
-      ERREXIT(cinfo, JERR_BAD_IN_COLORSPACE);
-    break;
-
-  default:			/* JCS_UNKNOWN can be anything */
-    if (cinfo->input_components < 1)
-      ERREXIT(cinfo, JERR_BAD_IN_COLORSPACE);
-    break;
-  }
-
-  /* Check num_components, set conversion method based on requested space */
-  switch (cinfo->jpeg_color_space) {
-  case JCS_GRAYSCALE:
-    if (cinfo->num_components != 1)
-      ERREXIT(cinfo, JERR_BAD_J_COLORSPACE);
-    if (cinfo->in_color_space == JCS_GRAYSCALE)
-      cconvert->pub.color_convert = grayscale_convert;
-    else if (cinfo->in_color_space == JCS_RGB) {
-      cconvert->pub.start_pass = rgb_ycc_start;
-      cconvert->pub.color_convert = rgb_gray_convert;
-    } else if (cinfo->in_color_space == JCS_YCbCr)
-      cconvert->pub.color_convert = grayscale_convert;
-    else
-      ERREXIT(cinfo, JERR_CONVERSION_NOTIMPL);
-    break;
-
-  case JCS_RGB:
-    if (cinfo->num_components != 3)
-      ERREXIT(cinfo, JERR_BAD_J_COLORSPACE);
-    if (cinfo->in_color_space == JCS_RGB && RGB_PIXELSIZE == 3)
-      cconvert->pub.color_convert = null_convert;
-    else
-      ERREXIT(cinfo, JERR_CONVERSION_NOTIMPL);
-    break;
-
-  case JCS_YCbCr:
-    if (cinfo->num_components != 3)
-      ERREXIT(cinfo, JERR_BAD_J_COLORSPACE);
-    if (cinfo->in_color_space == JCS_RGB) {
-      cconvert->pub.start_pass = rgb_ycc_start;
-      cconvert->pub.color_convert = rgb_ycc_convert;
-    } else if (cinfo->in_color_space == JCS_YCbCr)
-      cconvert->pub.color_convert = null_convert;
-    else
-      ERREXIT(cinfo, JERR_CONVERSION_NOTIMPL);
-    break;
-
-  case JCS_CMYK:
-    if (cinfo->num_components != 4)
-      ERREXIT(cinfo, JERR_BAD_J_COLORSPACE);
-    if (cinfo->in_color_space == JCS_CMYK)
-      cconvert->pub.color_convert = null_convert;
-    else
-      ERREXIT(cinfo, JERR_CONVERSION_NOTIMPL);
-    break;
-
-  case JCS_YCCK:
-    if (cinfo->num_components != 4)
-      ERREXIT(cinfo, JERR_BAD_J_COLORSPACE);
-    if (cinfo->in_color_space == JCS_CMYK) {
-      cconvert->pub.start_pass = rgb_ycc_start;
-      cconvert->pub.color_convert = cmyk_ycck_convert;
-    } else if (cinfo->in_color_space == JCS_YCCK)
-      cconvert->pub.color_convert = null_convert;
-    else
-      ERREXIT(cinfo, JERR_CONVERSION_NOTIMPL);
-    break;
-
-  default:			/* allow null conversion of JCS_UNKNOWN */
-    if (cinfo->jpeg_color_space != cinfo->in_color_space ||
-	cinfo->num_components != cinfo->input_components)
-      ERREXIT(cinfo, JERR_CONVERSION_NOTIMPL);
-    cconvert->pub.color_convert = null_convert;
-    break;
-  }
-}
diff --git a/src/libjpeg/jcdctmgr.c b/src/libjpeg/jcdctmgr.c
deleted file mode 100644
index e3f90dc..0000000
--- a/src/libjpeg/jcdctmgr.c
+++ /dev/null
@@ -1,387 +0,0 @@
-/*
- * jcdctmgr.c
- *
- * Copyright (C) 1994-1996, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains the forward-DCT management logic.
- * This code selects a particular DCT implementation to be used,
- * and it performs related housekeeping chores including coefficient
- * quantization.
- */
-
-#define JPEG_INTERNALS
-#include "jinclude.h"
-#include "jpeglib.h"
-#include "jdct.h"		/* Private declarations for DCT subsystem */
-
-
-/* Private subobject for this module */
-
-typedef struct {
-  struct jpeg_forward_dct pub;	/* public fields */
-
-  /* Pointer to the DCT routine actually in use */
-  forward_DCT_method_ptr do_dct;
-
-  /* The actual post-DCT divisors --- not identical to the quant table
-   * entries, because of scaling (especially for an unnormalized DCT).
-   * Each table is given in normal array order.
-   */
-  DCTELEM * divisors[NUM_QUANT_TBLS];
-
-#ifdef DCT_FLOAT_SUPPORTED
-  /* Same as above for the floating-point case. */
-  float_DCT_method_ptr do_float_dct;
-  FAST_FLOAT * float_divisors[NUM_QUANT_TBLS];
-#endif
-} my_fdct_controller;
-
-typedef my_fdct_controller * my_fdct_ptr;
-
-
-/*
- * Initialize for a processing pass.
- * Verify that all referenced Q-tables are present, and set up
- * the divisor table for each one.
- * In the current implementation, DCT of all components is done during
- * the first pass, even if only some components will be output in the
- * first scan.  Hence all components should be examined here.
- */
-
-METHODDEF(void)
-start_pass_fdctmgr (j_compress_ptr cinfo)
-{
-  my_fdct_ptr fdct = (my_fdct_ptr) cinfo->fdct;
-  int ci, qtblno, i;
-  jpeg_component_info *compptr;
-  JQUANT_TBL * qtbl;
-  DCTELEM * dtbl;
-
-  for (ci = 0, compptr = cinfo->comp_info; ci < cinfo->num_components;
-       ci++, compptr++) {
-    qtblno = compptr->quant_tbl_no;
-    /* Make sure specified quantization table is present */
-    if (qtblno < 0 || qtblno >= NUM_QUANT_TBLS ||
-	cinfo->quant_tbl_ptrs[qtblno] == NULL)
-      ERREXIT1(cinfo, JERR_NO_QUANT_TABLE, qtblno);
-    qtbl = cinfo->quant_tbl_ptrs[qtblno];
-    /* Compute divisors for this quant table */
-    /* We may do this more than once for same table, but it's not a big deal */
-    switch (cinfo->dct_method) {
-#ifdef DCT_ISLOW_SUPPORTED
-    case JDCT_ISLOW:
-      /* For LL&M IDCT method, divisors are equal to raw quantization
-       * coefficients multiplied by 8 (to counteract scaling).
-       */
-      if (fdct->divisors[qtblno] == NULL) {
-	fdct->divisors[qtblno] = (DCTELEM *)
-	  (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
-				      DCTSIZE2 * SIZEOF(DCTELEM));
-      }
-      dtbl = fdct->divisors[qtblno];
-      for (i = 0; i < DCTSIZE2; i++) {
-	dtbl[i] = ((DCTELEM) qtbl->quantval[i]) << 3;
-      }
-      break;
-#endif
-#ifdef DCT_IFAST_SUPPORTED
-    case JDCT_IFAST:
-      {
-	/* For AA&N IDCT method, divisors are equal to quantization
-	 * coefficients scaled by scalefactor[row]*scalefactor[col], where
-	 *   scalefactor[0] = 1
-	 *   scalefactor[k] = cos(k*PI/16) * sqrt(2)    for k=1..7
-	 * We apply a further scale factor of 8.
-	 */
-#define CONST_BITS 14
-	static const INT16 aanscales[DCTSIZE2] = {
-	  /* precomputed values scaled up by 14 bits */
-	  16384, 22725, 21407, 19266, 16384, 12873,  8867,  4520,
-	  22725, 31521, 29692, 26722, 22725, 17855, 12299,  6270,
-	  21407, 29692, 27969, 25172, 21407, 16819, 11585,  5906,
-	  19266, 26722, 25172, 22654, 19266, 15137, 10426,  5315,
-	  16384, 22725, 21407, 19266, 16384, 12873,  8867,  4520,
-	  12873, 17855, 16819, 15137, 12873, 10114,  6967,  3552,
-	   8867, 12299, 11585, 10426,  8867,  6967,  4799,  2446,
-	   4520,  6270,  5906,  5315,  4520,  3552,  2446,  1247
-	};
-	SHIFT_TEMPS
-
-	if (fdct->divisors[qtblno] == NULL) {
-	  fdct->divisors[qtblno] = (DCTELEM *)
-	    (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
-					DCTSIZE2 * SIZEOF(DCTELEM));
-	}
-	dtbl = fdct->divisors[qtblno];
-	for (i = 0; i < DCTSIZE2; i++) {
-	  dtbl[i] = (DCTELEM)
-	    DESCALE(MULTIPLY16V16((INT32) qtbl->quantval[i],
-				  (INT32) aanscales[i]),
-		    CONST_BITS-3);
-	}
-      }
-      break;
-#endif
-#ifdef DCT_FLOAT_SUPPORTED
-    case JDCT_FLOAT:
-      {
-	/* For float AA&N IDCT method, divisors are equal to quantization
-	 * coefficients scaled by scalefactor[row]*scalefactor[col], where
-	 *   scalefactor[0] = 1
-	 *   scalefactor[k] = cos(k*PI/16) * sqrt(2)    for k=1..7
-	 * We apply a further scale factor of 8.
-	 * What's actually stored is 1/divisor so that the inner loop can
-	 * use a multiplication rather than a division.
-	 */
-	FAST_FLOAT * fdtbl;
-	int row, col;
-	static const double aanscalefactor[DCTSIZE] = {
-	  1.0, 1.387039845, 1.306562965, 1.175875602,
-	  1.0, 0.785694958, 0.541196100, 0.275899379
-	};
-
-	if (fdct->float_divisors[qtblno] == NULL) {
-	  fdct->float_divisors[qtblno] = (FAST_FLOAT *)
-	    (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
-					DCTSIZE2 * SIZEOF(FAST_FLOAT));
-	}
-	fdtbl = fdct->float_divisors[qtblno];
-	i = 0;
-	for (row = 0; row < DCTSIZE; row++) {
-	  for (col = 0; col < DCTSIZE; col++) {
-	    fdtbl[i] = (FAST_FLOAT)
-	      (1.0 / (((double) qtbl->quantval[i] *
-		       aanscalefactor[row] * aanscalefactor[col] * 8.0)));
-	    i++;
-	  }
-	}
-      }
-      break;
-#endif
-    default:
-      ERREXIT(cinfo, JERR_NOT_COMPILED);
-      break;
-    }
-  }
-}
-
-
-/*
- * Perform forward DCT on one or more blocks of a component.
- *
- * The input samples are taken from the sample_data[] array starting at
- * position start_row/start_col, and moving to the right for any additional
- * blocks. The quantized coefficients are returned in coef_blocks[].
- */
-
-METHODDEF(void)
-forward_DCT (j_compress_ptr cinfo, jpeg_component_info * compptr,
-	     JSAMPARRAY sample_data, JBLOCKROW coef_blocks,
-	     JDIMENSION start_row, JDIMENSION start_col,
-	     JDIMENSION num_blocks)
-/* This version is used for integer DCT implementations. */
-{
-  /* This routine is heavily used, so it's worth coding it tightly. */
-  my_fdct_ptr fdct = (my_fdct_ptr) cinfo->fdct;
-  forward_DCT_method_ptr do_dct = fdct->do_dct;
-  DCTELEM * divisors = fdct->divisors[compptr->quant_tbl_no];
-  DCTELEM workspace[DCTSIZE2];	/* work area for FDCT subroutine */
-  JDIMENSION bi;
-
-  sample_data += start_row;	/* fold in the vertical offset once */
-
-  for (bi = 0; bi < num_blocks; bi++, start_col += DCTSIZE) {
-    /* Load data into workspace, applying unsigned->signed conversion */
-    { register DCTELEM *workspaceptr;
-      register JSAMPROW elemptr;
-      register int elemr;
-
-      workspaceptr = workspace;
-      for (elemr = 0; elemr < DCTSIZE; elemr++) {
-	elemptr = sample_data[elemr] + start_col;
-#if DCTSIZE == 8		/* unroll the inner loop */
-	*workspaceptr++ = GETJSAMPLE(*elemptr++) - CENTERJSAMPLE;
-	*workspaceptr++ = GETJSAMPLE(*elemptr++) - CENTERJSAMPLE;
-	*workspaceptr++ = GETJSAMPLE(*elemptr++) - CENTERJSAMPLE;
-	*workspaceptr++ = GETJSAMPLE(*elemptr++) - CENTERJSAMPLE;
-	*workspaceptr++ = GETJSAMPLE(*elemptr++) - CENTERJSAMPLE;
-	*workspaceptr++ = GETJSAMPLE(*elemptr++) - CENTERJSAMPLE;
-	*workspaceptr++ = GETJSAMPLE(*elemptr++) - CENTERJSAMPLE;
-	*workspaceptr++ = GETJSAMPLE(*elemptr++) - CENTERJSAMPLE;
-#else
-	{ register int elemc;
-	  for (elemc = DCTSIZE; elemc > 0; elemc--) {
-	    *workspaceptr++ = GETJSAMPLE(*elemptr++) - CENTERJSAMPLE;
-	  }
-	}
-#endif
-      }
-    }
-
-    /* Perform the DCT */
-    (*do_dct) (workspace);
-
-    /* Quantize/descale the coefficients, and store into coef_blocks[] */
-    { register DCTELEM temp, qval;
-      register int i;
-      register JCOEFPTR output_ptr = coef_blocks[bi];
-
-      for (i = 0; i < DCTSIZE2; i++) {
-	qval = divisors[i];
-	temp = workspace[i];
-	/* Divide the coefficient value by qval, ensuring proper rounding.
-	 * Since C does not specify the direction of rounding for negative
-	 * quotients, we have to force the dividend positive for portability.
-	 *
-	 * In most files, at least half of the output values will be zero
-	 * (at default quantization settings, more like three-quarters...)
-	 * so we should ensure that this case is fast.  On many machines,
-	 * a comparison is enough cheaper than a divide to make a special test
-	 * a win.  Since both inputs will be nonnegative, we need only test
-	 * for a < b to discover whether a/b is 0.
-	 * If your machine's division is fast enough, define FAST_DIVIDE.
-	 */
-#ifdef FAST_DIVIDE
-#define DIVIDE_BY(a,b)	a /= b
-#else
-#define DIVIDE_BY(a,b)	if (a >= b) a /= b; else a = 0
-#endif
-	if (temp < 0) {
-	  temp = -temp;
-	  temp += qval>>1;	/* for rounding */
-	  DIVIDE_BY(temp, qval);
-	  temp = -temp;
-	} else {
-	  temp += qval>>1;	/* for rounding */
-	  DIVIDE_BY(temp, qval);
-	}
-	output_ptr[i] = (JCOEF) temp;
-      }
-    }
-  }
-}
-
-
-#ifdef DCT_FLOAT_SUPPORTED
-
-METHODDEF(void)
-forward_DCT_float (j_compress_ptr cinfo, jpeg_component_info * compptr,
-		   JSAMPARRAY sample_data, JBLOCKROW coef_blocks,
-		   JDIMENSION start_row, JDIMENSION start_col,
-		   JDIMENSION num_blocks)
-/* This version is used for floating-point DCT implementations. */
-{
-  /* This routine is heavily used, so it's worth coding it tightly. */
-  my_fdct_ptr fdct = (my_fdct_ptr) cinfo->fdct;
-  float_DCT_method_ptr do_dct = fdct->do_float_dct;
-  FAST_FLOAT * divisors = fdct->float_divisors[compptr->quant_tbl_no];
-  FAST_FLOAT workspace[DCTSIZE2]; /* work area for FDCT subroutine */
-  JDIMENSION bi;
-
-  sample_data += start_row;	/* fold in the vertical offset once */
-
-  for (bi = 0; bi < num_blocks; bi++, start_col += DCTSIZE) {
-    /* Load data into workspace, applying unsigned->signed conversion */
-    { register FAST_FLOAT *workspaceptr;
-      register JSAMPROW elemptr;
-      register int elemr;
-
-      workspaceptr = workspace;
-      for (elemr = 0; elemr < DCTSIZE; elemr++) {
-	elemptr = sample_data[elemr] + start_col;
-#if DCTSIZE == 8		/* unroll the inner loop */
-	*workspaceptr++ = (FAST_FLOAT)(GETJSAMPLE(*elemptr++) - CENTERJSAMPLE);
-	*workspaceptr++ = (FAST_FLOAT)(GETJSAMPLE(*elemptr++) - CENTERJSAMPLE);
-	*workspaceptr++ = (FAST_FLOAT)(GETJSAMPLE(*elemptr++) - CENTERJSAMPLE);
-	*workspaceptr++ = (FAST_FLOAT)(GETJSAMPLE(*elemptr++) - CENTERJSAMPLE);
-	*workspaceptr++ = (FAST_FLOAT)(GETJSAMPLE(*elemptr++) - CENTERJSAMPLE);
-	*workspaceptr++ = (FAST_FLOAT)(GETJSAMPLE(*elemptr++) - CENTERJSAMPLE);
-	*workspaceptr++ = (FAST_FLOAT)(GETJSAMPLE(*elemptr++) - CENTERJSAMPLE);
-	*workspaceptr++ = (FAST_FLOAT)(GETJSAMPLE(*elemptr++) - CENTERJSAMPLE);
-#else
-	{ register int elemc;
-	  for (elemc = DCTSIZE; elemc > 0; elemc--) {
-	    *workspaceptr++ = (FAST_FLOAT)
-	      (GETJSAMPLE(*elemptr++) - CENTERJSAMPLE);
-	  }
-	}
-#endif
-      }
-    }
-
-    /* Perform the DCT */
-    (*do_dct) (workspace);
-
-    /* Quantize/descale the coefficients, and store into coef_blocks[] */
-    { register FAST_FLOAT temp;
-      register int i;
-      register JCOEFPTR output_ptr = coef_blocks[bi];
-
-      for (i = 0; i < DCTSIZE2; i++) {
-	/* Apply the quantization and scaling factor */
-	temp = workspace[i] * divisors[i];
-	/* Round to nearest integer.
-	 * Since C does not specify the direction of rounding for negative
-	 * quotients, we have to force the dividend positive for portability.
-	 * The maximum coefficient size is +-16K (for 12-bit data), so this
-	 * code should work for either 16-bit or 32-bit ints.
-	 */
-	output_ptr[i] = (JCOEF) ((int) (temp + (FAST_FLOAT) 16384.5) - 16384);
-      }
-    }
-  }
-}
-
-#endif /* DCT_FLOAT_SUPPORTED */
-
-
-/*
- * Initialize FDCT manager.
- */
-
-GLOBAL(void)
-jinit_forward_dct (j_compress_ptr cinfo)
-{
-  my_fdct_ptr fdct;
-  int i;
-
-  fdct = (my_fdct_ptr)
-    (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
-				SIZEOF(my_fdct_controller));
-  cinfo->fdct = (struct jpeg_forward_dct *) fdct;
-  fdct->pub.start_pass = start_pass_fdctmgr;
-
-  switch (cinfo->dct_method) {
-#ifdef DCT_ISLOW_SUPPORTED
-  case JDCT_ISLOW:
-    fdct->pub.forward_DCT = forward_DCT;
-    fdct->do_dct = jpeg_fdct_islow;
-    break;
-#endif
-#ifdef DCT_IFAST_SUPPORTED
-  case JDCT_IFAST:
-    fdct->pub.forward_DCT = forward_DCT;
-    fdct->do_dct = jpeg_fdct_ifast;
-    break;
-#endif
-#ifdef DCT_FLOAT_SUPPORTED
-  case JDCT_FLOAT:
-    fdct->pub.forward_DCT = forward_DCT_float;
-    fdct->do_float_dct = jpeg_fdct_float;
-    break;
-#endif
-  default:
-    ERREXIT(cinfo, JERR_NOT_COMPILED);
-    break;
-  }
-
-  /* Mark divisor tables unallocated */
-  for (i = 0; i < NUM_QUANT_TBLS; i++) {
-    fdct->divisors[i] = NULL;
-#ifdef DCT_FLOAT_SUPPORTED
-    fdct->float_divisors[i] = NULL;
-#endif
-  }
-}
diff --git a/src/libjpeg/jchuff.c b/src/libjpeg/jchuff.c
deleted file mode 100644
index 16d9366..0000000
--- a/src/libjpeg/jchuff.c
+++ /dev/null
@@ -1,909 +0,0 @@
-/*
- * jchuff.c
- *
- * Copyright (C) 1991-1997, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains Huffman entropy encoding routines.
- *
- * Much of the complexity here has to do with supporting output suspension.
- * If the data destination module demands suspension, we want to be able to
- * back up to the start of the current MCU.  To do this, we copy state
- * variables into local working storage, and update them back to the
- * permanent JPEG objects only upon successful completion of an MCU.
- */
-
-#define JPEG_INTERNALS
-#include "jinclude.h"
-#include "jpeglib.h"
-#include "jchuff.h"		/* Declarations shared with jcphuff.c */
-
-
-/* Expanded entropy encoder object for Huffman encoding.
- *
- * The savable_state subrecord contains fields that change within an MCU,
- * but must not be updated permanently until we complete the MCU.
- */
-
-typedef struct {
-  INT32 put_buffer;		/* current bit-accumulation buffer */
-  int put_bits;			/* # of bits now in it */
-  int last_dc_val[MAX_COMPS_IN_SCAN]; /* last DC coef for each component */
-} savable_state;
-
-/* This macro is to work around compilers with missing or broken
- * structure assignment.  You'll need to fix this code if you have
- * such a compiler and you change MAX_COMPS_IN_SCAN.
- */
-
-#ifndef NO_STRUCT_ASSIGN
-#define ASSIGN_STATE(dest,src)  ((dest) = (src))
-#else
-#if MAX_COMPS_IN_SCAN == 4
-#define ASSIGN_STATE(dest,src)  \
-	((dest).put_buffer = (src).put_buffer, \
-	 (dest).put_bits = (src).put_bits, \
-	 (dest).last_dc_val[0] = (src).last_dc_val[0], \
-	 (dest).last_dc_val[1] = (src).last_dc_val[1], \
-	 (dest).last_dc_val[2] = (src).last_dc_val[2], \
-	 (dest).last_dc_val[3] = (src).last_dc_val[3])
-#endif
-#endif
-
-
-typedef struct {
-  struct jpeg_entropy_encoder pub; /* public fields */
-
-  savable_state saved;		/* Bit buffer & DC state at start of MCU */
-
-  /* These fields are NOT loaded into local working state. */
-  unsigned int restarts_to_go;	/* MCUs left in this restart interval */
-  int next_restart_num;		/* next restart number to write (0-7) */
-
-  /* Pointers to derived tables (these workspaces have image lifespan) */
-  c_derived_tbl * dc_derived_tbls[NUM_HUFF_TBLS];
-  c_derived_tbl * ac_derived_tbls[NUM_HUFF_TBLS];
-
-#ifdef ENTROPY_OPT_SUPPORTED	/* Statistics tables for optimization */
-  long * dc_count_ptrs[NUM_HUFF_TBLS];
-  long * ac_count_ptrs[NUM_HUFF_TBLS];
-#endif
-} huff_entropy_encoder;
-
-typedef huff_entropy_encoder * huff_entropy_ptr;
-
-/* Working state while writing an MCU.
- * This struct contains all the fields that are needed by subroutines.
- */
-
-typedef struct {
-  JOCTET * next_output_byte;	/* => next byte to write in buffer */
-  size_t free_in_buffer;	/* # of byte spaces remaining in buffer */
-  savable_state cur;		/* Current bit buffer & DC state */
-  j_compress_ptr cinfo;		/* dump_buffer needs access to this */
-} working_state;
-
-
-/* Forward declarations */
-METHODDEF(boolean) encode_mcu_huff JPP((j_compress_ptr cinfo,
-					JBLOCKROW *MCU_data));
-METHODDEF(void) finish_pass_huff JPP((j_compress_ptr cinfo));
-#ifdef ENTROPY_OPT_SUPPORTED
-METHODDEF(boolean) encode_mcu_gather JPP((j_compress_ptr cinfo,
-					  JBLOCKROW *MCU_data));
-METHODDEF(void) finish_pass_gather JPP((j_compress_ptr cinfo));
-#endif
-
-
-/*
- * Initialize for a Huffman-compressed scan.
- * If gather_statistics is TRUE, we do not output anything during the scan,
- * just count the Huffman symbols used and generate Huffman code tables.
- */
-
-METHODDEF(void)
-start_pass_huff (j_compress_ptr cinfo, boolean gather_statistics)
-{
-  huff_entropy_ptr entropy = (huff_entropy_ptr) cinfo->entropy;
-  int ci, dctbl, actbl;
-  jpeg_component_info * compptr;
-
-  if (gather_statistics) {
-#ifdef ENTROPY_OPT_SUPPORTED
-    entropy->pub.encode_mcu = encode_mcu_gather;
-    entropy->pub.finish_pass = finish_pass_gather;
-#else
-    ERREXIT(cinfo, JERR_NOT_COMPILED);
-#endif
-  } else {
-    entropy->pub.encode_mcu = encode_mcu_huff;
-    entropy->pub.finish_pass = finish_pass_huff;
-  }
-
-  for (ci = 0; ci < cinfo->comps_in_scan; ci++) {
-    compptr = cinfo->cur_comp_info[ci];
-    dctbl = compptr->dc_tbl_no;
-    actbl = compptr->ac_tbl_no;
-    if (gather_statistics) {
-#ifdef ENTROPY_OPT_SUPPORTED
-      /* Check for invalid table indexes */
-      /* (make_c_derived_tbl does this in the other path) */
-      if (dctbl < 0 || dctbl >= NUM_HUFF_TBLS)
-	ERREXIT1(cinfo, JERR_NO_HUFF_TABLE, dctbl);
-      if (actbl < 0 || actbl >= NUM_HUFF_TBLS)
-	ERREXIT1(cinfo, JERR_NO_HUFF_TABLE, actbl);
-      /* Allocate and zero the statistics tables */
-      /* Note that jpeg_gen_optimal_table expects 257 entries in each table! */
-      if (entropy->dc_count_ptrs[dctbl] == NULL)
-	entropy->dc_count_ptrs[dctbl] = (long *)
-	  (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
-				      257 * SIZEOF(long));
-      MEMZERO(entropy->dc_count_ptrs[dctbl], 257 * SIZEOF(long));
-      if (entropy->ac_count_ptrs[actbl] == NULL)
-	entropy->ac_count_ptrs[actbl] = (long *)
-	  (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
-				      257 * SIZEOF(long));
-      MEMZERO(entropy->ac_count_ptrs[actbl], 257 * SIZEOF(long));
-#endif
-    } else {
-      /* Compute derived values for Huffman tables */
-      /* We may do this more than once for a table, but it's not expensive */
-      jpeg_make_c_derived_tbl(cinfo, TRUE, dctbl,
-			      & entropy->dc_derived_tbls[dctbl]);
-      jpeg_make_c_derived_tbl(cinfo, FALSE, actbl,
-			      & entropy->ac_derived_tbls[actbl]);
-    }
-    /* Initialize DC predictions to 0 */
-    entropy->saved.last_dc_val[ci] = 0;
-  }
-
-  /* Initialize bit buffer to empty */
-  entropy->saved.put_buffer = 0;
-  entropy->saved.put_bits = 0;
-
-  /* Initialize restart stuff */
-  entropy->restarts_to_go = cinfo->restart_interval;
-  entropy->next_restart_num = 0;
-}
-
-
-/*
- * Compute the derived values for a Huffman table.
- * This routine also performs some validation checks on the table.
- *
- * Note this is also used by jcphuff.c.
- */
-
-GLOBAL(void)
-jpeg_make_c_derived_tbl (j_compress_ptr cinfo, boolean isDC, int tblno,
-			 c_derived_tbl ** pdtbl)
-{
-  JHUFF_TBL *htbl;
-  c_derived_tbl *dtbl;
-  int p, i, l, lastp, si, maxsymbol;
-  char huffsize[257];
-  unsigned int huffcode[257];
-  unsigned int code;
-
-  /* Note that huffsize[] and huffcode[] are filled in code-length order,
-   * paralleling the order of the symbols themselves in htbl->huffval[].
-   */
-
-  /* Find the input Huffman table */
-  if (tblno < 0 || tblno >= NUM_HUFF_TBLS)
-    ERREXIT1(cinfo, JERR_NO_HUFF_TABLE, tblno);
-  htbl =
-    isDC ? cinfo->dc_huff_tbl_ptrs[tblno] : cinfo->ac_huff_tbl_ptrs[tblno];
-  if (htbl == NULL)
-    ERREXIT1(cinfo, JERR_NO_HUFF_TABLE, tblno);
-
-  /* Allocate a workspace if we haven't already done so. */
-  if (*pdtbl == NULL)
-    *pdtbl = (c_derived_tbl *)
-      (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
-				  SIZEOF(c_derived_tbl));
-  dtbl = *pdtbl;
-  
-  /* Figure C.1: make table of Huffman code length for each symbol */
-
-  p = 0;
-  for (l = 1; l <= 16; l++) {
-    i = (int) htbl->bits[l];
-    if (i < 0 || p + i > 256)	/* protect against table overrun */
-      ERREXIT(cinfo, JERR_BAD_HUFF_TABLE);
-    while (i--)
-      huffsize[p++] = (char) l;
-  }
-  huffsize[p] = 0;
-  lastp = p;
-  
-  /* Figure C.2: generate the codes themselves */
-  /* We also validate that the counts represent a legal Huffman code tree. */
-
-  code = 0;
-  si = huffsize[0];
-  p = 0;
-  while (huffsize[p]) {
-    while (((int) huffsize[p]) == si) {
-      huffcode[p++] = code;
-      code++;
-    }
-    /* code is now 1 more than the last code used for codelength si; but
-     * it must still fit in si bits, since no code is allowed to be all ones.
-     */
-    if (((INT32) code) >= (((INT32) 1) << si))
-      ERREXIT(cinfo, JERR_BAD_HUFF_TABLE);
-    code <<= 1;
-    si++;
-  }
-  
-  /* Figure C.3: generate encoding tables */
-  /* These are code and size indexed by symbol value */
-
-  /* Set all codeless symbols to have code length 0;
-   * this lets us detect duplicate VAL entries here, and later
-   * allows emit_bits to detect any attempt to emit such symbols.
-   */
-  MEMZERO(dtbl->ehufsi, SIZEOF(dtbl->ehufsi));
-
-  /* This is also a convenient place to check for out-of-range
-   * and duplicated VAL entries.  We allow 0..255 for AC symbols
-   * but only 0..15 for DC.  (We could constrain them further
-   * based on data depth and mode, but this seems enough.)
-   */
-  maxsymbol = isDC ? 15 : 255;
-
-  for (p = 0; p < lastp; p++) {
-    i = htbl->huffval[p];
-    if (i < 0 || i > maxsymbol || dtbl->ehufsi[i])
-      ERREXIT(cinfo, JERR_BAD_HUFF_TABLE);
-    dtbl->ehufco[i] = huffcode[p];
-    dtbl->ehufsi[i] = huffsize[p];
-  }
-}
-
-
-/* Outputting bytes to the file */
-
-/* Emit a byte, taking 'action' if must suspend. */
-#define emit_byte(state,val,action)  \
-	{ *(state)->next_output_byte++ = (JOCTET) (val);  \
-	  if (--(state)->free_in_buffer == 0)  \
-	    if (! dump_buffer(state))  \
-	      { action; } }
-
-
-LOCAL(boolean)
-dump_buffer (working_state * state)
-/* Empty the output buffer; return TRUE if successful, FALSE if must suspend */
-{
-  struct jpeg_destination_mgr * dest = state->cinfo->dest;
-
-  if (! (*dest->empty_output_buffer) (state->cinfo))
-    return FALSE;
-  /* After a successful buffer dump, must reset buffer pointers */
-  state->next_output_byte = dest->next_output_byte;
-  state->free_in_buffer = dest->free_in_buffer;
-  return TRUE;
-}
-
-
-/* Outputting bits to the file */
-
-/* Only the right 24 bits of put_buffer are used; the valid bits are
- * left-justified in this part.  At most 16 bits can be passed to emit_bits
- * in one call, and we never retain more than 7 bits in put_buffer
- * between calls, so 24 bits are sufficient.
- */
-
-INLINE
-LOCAL(boolean)
-emit_bits (working_state * state, unsigned int code, int size)
-/* Emit some bits; return TRUE if successful, FALSE if must suspend */
-{
-  /* This routine is heavily used, so it's worth coding tightly. */
-  register INT32 put_buffer = (INT32) code;
-  register int put_bits = state->cur.put_bits;
-
-  /* if size is 0, caller used an invalid Huffman table entry */
-  if (size == 0)
-    ERREXIT(state->cinfo, JERR_HUFF_MISSING_CODE);
-
-  put_buffer &= (((INT32) 1)<<size) - 1; /* mask off any extra bits in code */
-  
-  put_bits += size;		/* new number of bits in buffer */
-  
-  put_buffer <<= 24 - put_bits; /* align incoming bits */
-
-  put_buffer |= state->cur.put_buffer; /* and merge with old buffer contents */
-  
-  while (put_bits >= 8) {
-    int c = (int) ((put_buffer >> 16) & 0xFF);
-    
-    emit_byte(state, c, return FALSE);
-    if (c == 0xFF) {		/* need to stuff a zero byte? */
-      emit_byte(state, 0, return FALSE);
-    }
-    put_buffer <<= 8;
-    put_bits -= 8;
-  }
-
-  state->cur.put_buffer = put_buffer; /* update state variables */
-  state->cur.put_bits = put_bits;
-
-  return TRUE;
-}
-
-
-LOCAL(boolean)
-flush_bits (working_state * state)
-{
-  if (! emit_bits(state, 0x7F, 7)) /* fill any partial byte with ones */
-    return FALSE;
-  state->cur.put_buffer = 0;	/* and reset bit-buffer to empty */
-  state->cur.put_bits = 0;
-  return TRUE;
-}
-
-
-/* Encode a single block's worth of coefficients */
-
-LOCAL(boolean)
-encode_one_block (working_state * state, JCOEFPTR block, int last_dc_val,
-		  c_derived_tbl *dctbl, c_derived_tbl *actbl)
-{
-  register int temp, temp2;
-  register int nbits;
-  register int k, r, i;
-  
-  /* Encode the DC coefficient difference per section F.1.2.1 */
-  
-  temp = temp2 = block[0] - last_dc_val;
-
-  if (temp < 0) {
-    temp = -temp;		/* temp is abs value of input */
-    /* For a negative input, want temp2 = bitwise complement of abs(input) */
-    /* This code assumes we are on a two's complement machine */
-    temp2--;
-  }
-  
-  /* Find the number of bits needed for the magnitude of the coefficient */
-  nbits = 0;
-  while (temp) {
-    nbits++;
-    temp >>= 1;
-  }
-  /* Check for out-of-range coefficient values.
-   * Since we're encoding a difference, the range limit is twice as much.
-   */
-  if (nbits > MAX_COEF_BITS+1)
-    ERREXIT(state->cinfo, JERR_BAD_DCT_COEF);
-  
-  /* Emit the Huffman-coded symbol for the number of bits */
-  if (! emit_bits(state, dctbl->ehufco[nbits], dctbl->ehufsi[nbits]))
-    return FALSE;
-
-  /* Emit that number of bits of the value, if positive, */
-  /* or the complement of its magnitude, if negative. */
-  if (nbits)			/* emit_bits rejects calls with size 0 */
-    if (! emit_bits(state, (unsigned int) temp2, nbits))
-      return FALSE;
-
-  /* Encode the AC coefficients per section F.1.2.2 */
-  
-  r = 0;			/* r = run length of zeros */
-  
-  for (k = 1; k < DCTSIZE2; k++) {
-    if ((temp = block[jpeg_natural_order[k]]) == 0) {
-      r++;
-    } else {
-      /* if run length > 15, must emit special run-length-16 codes (0xF0) */
-      while (r > 15) {
-	if (! emit_bits(state, actbl->ehufco[0xF0], actbl->ehufsi[0xF0]))
-	  return FALSE;
-	r -= 16;
-      }
-
-      temp2 = temp;
-      if (temp < 0) {
-	temp = -temp;		/* temp is abs value of input */
-	/* This code assumes we are on a two's complement machine */
-	temp2--;
-      }
-      
-      /* Find the number of bits needed for the magnitude of the coefficient */
-      nbits = 1;		/* there must be at least one 1 bit */
-      while ((temp >>= 1))
-	nbits++;
-      /* Check for out-of-range coefficient values */
-      if (nbits > MAX_COEF_BITS)
-	ERREXIT(state->cinfo, JERR_BAD_DCT_COEF);
-      
-      /* Emit Huffman symbol for run length / number of bits */
-      i = (r << 4) + nbits;
-      if (! emit_bits(state, actbl->ehufco[i], actbl->ehufsi[i]))
-	return FALSE;
-
-      /* Emit that number of bits of the value, if positive, */
-      /* or the complement of its magnitude, if negative. */
-      if (! emit_bits(state, (unsigned int) temp2, nbits))
-	return FALSE;
-      
-      r = 0;
-    }
-  }
-
-  /* If the last coef(s) were zero, emit an end-of-block code */
-  if (r > 0)
-    if (! emit_bits(state, actbl->ehufco[0], actbl->ehufsi[0]))
-      return FALSE;
-
-  return TRUE;
-}
-
-
-/*
- * Emit a restart marker & resynchronize predictions.
- */
-
-LOCAL(boolean)
-emit_restart (working_state * state, int restart_num)
-{
-  int ci;
-
-  if (! flush_bits(state))
-    return FALSE;
-
-  emit_byte(state, 0xFF, return FALSE);
-  emit_byte(state, JPEG_RST0 + restart_num, return FALSE);
-
-  /* Re-initialize DC predictions to 0 */
-  for (ci = 0; ci < state->cinfo->comps_in_scan; ci++)
-    state->cur.last_dc_val[ci] = 0;
-
-  /* The restart counter is not updated until we successfully write the MCU. */
-
-  return TRUE;
-}
-
-
-/*
- * Encode and output one MCU's worth of Huffman-compressed coefficients.
- */
-
-METHODDEF(boolean)
-encode_mcu_huff (j_compress_ptr cinfo, JBLOCKROW *MCU_data)
-{
-  huff_entropy_ptr entropy = (huff_entropy_ptr) cinfo->entropy;
-  working_state state;
-  int blkn, ci;
-  jpeg_component_info * compptr;
-
-  /* Load up working state */
-  state.next_output_byte = cinfo->dest->next_output_byte;
-  state.free_in_buffer = cinfo->dest->free_in_buffer;
-  ASSIGN_STATE(state.cur, entropy->saved);
-  state.cinfo = cinfo;
-
-  /* Emit restart marker if needed */
-  if (cinfo->restart_interval) {
-    if (entropy->restarts_to_go == 0)
-      if (! emit_restart(&state, entropy->next_restart_num))
-	return FALSE;
-  }
-
-  /* Encode the MCU data blocks */
-  for (blkn = 0; blkn < cinfo->blocks_in_MCU; blkn++) {
-    ci = cinfo->MCU_membership[blkn];
-    compptr = cinfo->cur_comp_info[ci];
-    if (! encode_one_block(&state,
-			   MCU_data[blkn][0], state.cur.last_dc_val[ci],
-			   entropy->dc_derived_tbls[compptr->dc_tbl_no],
-			   entropy->ac_derived_tbls[compptr->ac_tbl_no]))
-      return FALSE;
-    /* Update last_dc_val */
-    state.cur.last_dc_val[ci] = MCU_data[blkn][0][0];
-  }
-
-  /* Completed MCU, so update state */
-  cinfo->dest->next_output_byte = state.next_output_byte;
-  cinfo->dest->free_in_buffer = state.free_in_buffer;
-  ASSIGN_STATE(entropy->saved, state.cur);
-
-  /* Update restart-interval state too */
-  if (cinfo->restart_interval) {
-    if (entropy->restarts_to_go == 0) {
-      entropy->restarts_to_go = cinfo->restart_interval;
-      entropy->next_restart_num++;
-      entropy->next_restart_num &= 7;
-    }
-    entropy->restarts_to_go--;
-  }
-
-  return TRUE;
-}
-
-
-/*
- * Finish up at the end of a Huffman-compressed scan.
- */
-
-METHODDEF(void)
-finish_pass_huff (j_compress_ptr cinfo)
-{
-  huff_entropy_ptr entropy = (huff_entropy_ptr) cinfo->entropy;
-  working_state state;
-
-  /* Load up working state ... flush_bits needs it */
-  state.next_output_byte = cinfo->dest->next_output_byte;
-  state.free_in_buffer = cinfo->dest->free_in_buffer;
-  ASSIGN_STATE(state.cur, entropy->saved);
-  state.cinfo = cinfo;
-
-  /* Flush out the last data */
-  if (! flush_bits(&state))
-    ERREXIT(cinfo, JERR_CANT_SUSPEND);
-
-  /* Update state */
-  cinfo->dest->next_output_byte = state.next_output_byte;
-  cinfo->dest->free_in_buffer = state.free_in_buffer;
-  ASSIGN_STATE(entropy->saved, state.cur);
-}
-
-
-/*
- * Huffman coding optimization.
- *
- * We first scan the supplied data and count the number of uses of each symbol
- * that is to be Huffman-coded. (This process MUST agree with the code above.)
- * Then we build a Huffman coding tree for the observed counts.
- * Symbols which are not needed at all for the particular image are not
- * assigned any code, which saves space in the DHT marker as well as in
- * the compressed data.
- */
-
-#ifdef ENTROPY_OPT_SUPPORTED
-
-
-/* Process a single block's worth of coefficients */
-
-LOCAL(void)
-htest_one_block (j_compress_ptr cinfo, JCOEFPTR block, int last_dc_val,
-		 long dc_counts[], long ac_counts[])
-{
-  register int temp;
-  register int nbits;
-  register int k, r;
-  
-  /* Encode the DC coefficient difference per section F.1.2.1 */
-  
-  temp = block[0] - last_dc_val;
-  if (temp < 0)
-    temp = -temp;
-  
-  /* Find the number of bits needed for the magnitude of the coefficient */
-  nbits = 0;
-  while (temp) {
-    nbits++;
-    temp >>= 1;
-  }
-  /* Check for out-of-range coefficient values.
-   * Since we're encoding a difference, the range limit is twice as much.
-   */
-  if (nbits > MAX_COEF_BITS+1)
-    ERREXIT(cinfo, JERR_BAD_DCT_COEF);
-
-  /* Count the Huffman symbol for the number of bits */
-  dc_counts[nbits]++;
-  
-  /* Encode the AC coefficients per section F.1.2.2 */
-  
-  r = 0;			/* r = run length of zeros */
-  
-  for (k = 1; k < DCTSIZE2; k++) {
-    if ((temp = block[jpeg_natural_order[k]]) == 0) {
-      r++;
-    } else {
-      /* if run length > 15, must emit special run-length-16 codes (0xF0) */
-      while (r > 15) {
-	ac_counts[0xF0]++;
-	r -= 16;
-      }
-      
-      /* Find the number of bits needed for the magnitude of the coefficient */
-      if (temp < 0)
-	temp = -temp;
-      
-      /* Find the number of bits needed for the magnitude of the coefficient */
-      nbits = 1;		/* there must be at least one 1 bit */
-      while ((temp >>= 1))
-	nbits++;
-      /* Check for out-of-range coefficient values */
-      if (nbits > MAX_COEF_BITS)
-	ERREXIT(cinfo, JERR_BAD_DCT_COEF);
-      
-      /* Count Huffman symbol for run length / number of bits */
-      ac_counts[(r << 4) + nbits]++;
-      
-      r = 0;
-    }
-  }
-
-  /* If the last coef(s) were zero, emit an end-of-block code */
-  if (r > 0)
-    ac_counts[0]++;
-}
-
-
-/*
- * Trial-encode one MCU's worth of Huffman-compressed coefficients.
- * No data is actually output, so no suspension return is possible.
- */
-
-METHODDEF(boolean)
-encode_mcu_gather (j_compress_ptr cinfo, JBLOCKROW *MCU_data)
-{
-  huff_entropy_ptr entropy = (huff_entropy_ptr) cinfo->entropy;
-  int blkn, ci;
-  jpeg_component_info * compptr;
-
-  /* Take care of restart intervals if needed */
-  if (cinfo->restart_interval) {
-    if (entropy->restarts_to_go == 0) {
-      /* Re-initialize DC predictions to 0 */
-      for (ci = 0; ci < cinfo->comps_in_scan; ci++)
-	entropy->saved.last_dc_val[ci] = 0;
-      /* Update restart state */
-      entropy->restarts_to_go = cinfo->restart_interval;
-    }
-    entropy->restarts_to_go--;
-  }
-
-  for (blkn = 0; blkn < cinfo->blocks_in_MCU; blkn++) {
-    ci = cinfo->MCU_membership[blkn];
-    compptr = cinfo->cur_comp_info[ci];
-    htest_one_block(cinfo, MCU_data[blkn][0], entropy->saved.last_dc_val[ci],
-		    entropy->dc_count_ptrs[compptr->dc_tbl_no],
-		    entropy->ac_count_ptrs[compptr->ac_tbl_no]);
-    entropy->saved.last_dc_val[ci] = MCU_data[blkn][0][0];
-  }
-
-  return TRUE;
-}
-
-
-/*
- * Generate the best Huffman code table for the given counts, fill htbl.
- * Note this is also used by jcphuff.c.
- *
- * The JPEG standard requires that no symbol be assigned a codeword of all
- * one bits (so that padding bits added at the end of a compressed segment
- * can't look like a valid code).  Because of the canonical ordering of
- * codewords, this just means that there must be an unused slot in the
- * longest codeword length category.  Section K.2 of the JPEG spec suggests
- * reserving such a slot by pretending that symbol 256 is a valid symbol
- * with count 1.  In theory that's not optimal; giving it count zero but
- * including it in the symbol set anyway should give a better Huffman code.
- * But the theoretically better code actually seems to come out worse in
- * practice, because it produces more all-ones bytes (which incur stuffed
- * zero bytes in the final file).  In any case the difference is tiny.
- *
- * The JPEG standard requires Huffman codes to be no more than 16 bits long.
- * If some symbols have a very small but nonzero probability, the Huffman tree
- * must be adjusted to meet the code length restriction.  We currently use
- * the adjustment method suggested in JPEG section K.2.  This method is *not*
- * optimal; it may not choose the best possible limited-length code.  But
- * typically only very-low-frequency symbols will be given less-than-optimal
- * lengths, so the code is almost optimal.  Experimental comparisons against
- * an optimal limited-length-code algorithm indicate that the difference is
- * microscopic --- usually less than a hundredth of a percent of total size.
- * So the extra complexity of an optimal algorithm doesn't seem worthwhile.
- */
-
-GLOBAL(void)
-jpeg_gen_optimal_table (j_compress_ptr cinfo, JHUFF_TBL * htbl, long freq[])
-{
-#define MAX_CLEN 32		/* assumed maximum initial code length */
-  UINT8 bits[MAX_CLEN+1];	/* bits[k] = # of symbols with code length k */
-  int codesize[257];		/* codesize[k] = code length of symbol k */
-  int others[257];		/* next symbol in current branch of tree */
-  int c1, c2;
-  int p, i, j;
-  long v;
-
-  /* This algorithm is explained in section K.2 of the JPEG standard */
-
-  MEMZERO(bits, SIZEOF(bits));
-  MEMZERO(codesize, SIZEOF(codesize));
-  for (i = 0; i < 257; i++)
-    others[i] = -1;		/* init links to empty */
-  
-  freq[256] = 1;		/* make sure 256 has a nonzero count */
-  /* Including the pseudo-symbol 256 in the Huffman procedure guarantees
-   * that no real symbol is given code-value of all ones, because 256
-   * will be placed last in the largest codeword category.
-   */
-
-  /* Huffman's basic algorithm to assign optimal code lengths to symbols */
-
-  for (;;) {
-    /* Find the smallest nonzero frequency, set c1 = its symbol */
-    /* In case of ties, take the larger symbol number */
-    c1 = -1;
-    v = 1000000000L;
-    for (i = 0; i <= 256; i++) {
-      if (freq[i] && freq[i] <= v) {
-	v = freq[i];
-	c1 = i;
-      }
-    }
-
-    /* Find the next smallest nonzero frequency, set c2 = its symbol */
-    /* In case of ties, take the larger symbol number */
-    c2 = -1;
-    v = 1000000000L;
-    for (i = 0; i <= 256; i++) {
-      if (freq[i] && freq[i] <= v && i != c1) {
-	v = freq[i];
-	c2 = i;
-      }
-    }
-
-    /* Done if we've merged everything into one frequency */
-    if (c2 < 0)
-      break;
-    
-    /* Else merge the two counts/trees */
-    freq[c1] += freq[c2];
-    freq[c2] = 0;
-
-    /* Increment the codesize of everything in c1's tree branch */
-    codesize[c1]++;
-    while (others[c1] >= 0) {
-      c1 = others[c1];
-      codesize[c1]++;
-    }
-    
-    others[c1] = c2;		/* chain c2 onto c1's tree branch */
-    
-    /* Increment the codesize of everything in c2's tree branch */
-    codesize[c2]++;
-    while (others[c2] >= 0) {
-      c2 = others[c2];
-      codesize[c2]++;
-    }
-  }
-
-  /* Now count the number of symbols of each code length */
-  for (i = 0; i <= 256; i++) {
-    if (codesize[i]) {
-      /* The JPEG standard seems to think that this can't happen, */
-      /* but I'm paranoid... */
-      if (codesize[i] > MAX_CLEN)
-	ERREXIT(cinfo, JERR_HUFF_CLEN_OVERFLOW);
-
-      bits[codesize[i]]++;
-    }
-  }
-
-  /* JPEG doesn't allow symbols with code lengths over 16 bits, so if the pure
-   * Huffman procedure assigned any such lengths, we must adjust the coding.
-   * Here is what the JPEG spec says about how this next bit works:
-   * Since symbols are paired for the longest Huffman code, the symbols are
-   * removed from this length category two at a time.  The prefix for the pair
-   * (which is one bit shorter) is allocated to one of the pair; then,
-   * skipping the BITS entry for that prefix length, a code word from the next
-   * shortest nonzero BITS entry is converted into a prefix for two code words
-   * one bit longer.
-   */
-  
-  for (i = MAX_CLEN; i > 16; i--) {
-    while (bits[i] > 0) {
-      j = i - 2;		/* find length of new prefix to be used */
-      while (bits[j] == 0)
-	j--;
-      
-      bits[i] -= 2;		/* remove two symbols */
-      bits[i-1]++;		/* one goes in this length */
-      bits[j+1] += 2;		/* two new symbols in this length */
-      bits[j]--;		/* symbol of this length is now a prefix */
-    }
-  }
-
-  /* Remove the count for the pseudo-symbol 256 from the largest codelength */
-  while (bits[i] == 0)		/* find largest codelength still in use */
-    i--;
-  bits[i]--;
-  
-  /* Return final symbol counts (only for lengths 0..16) */
-  MEMCOPY(htbl->bits, bits, SIZEOF(htbl->bits));
-  
-  /* Return a list of the symbols sorted by code length */
-  /* It's not real clear to me why we don't need to consider the codelength
-   * changes made above, but the JPEG spec seems to think this works.
-   */
-  p = 0;
-  for (i = 1; i <= MAX_CLEN; i++) {
-    for (j = 0; j <= 255; j++) {
-      if (codesize[j] == i) {
-	htbl->huffval[p] = (UINT8) j;
-	p++;
-      }
-    }
-  }
-
-  /* Set sent_table FALSE so updated table will be written to JPEG file. */
-  htbl->sent_table = FALSE;
-}
-
-
-/*
- * Finish up a statistics-gathering pass and create the new Huffman tables.
- */
-
-METHODDEF(void)
-finish_pass_gather (j_compress_ptr cinfo)
-{
-  huff_entropy_ptr entropy = (huff_entropy_ptr) cinfo->entropy;
-  int ci, dctbl, actbl;
-  jpeg_component_info * compptr;
-  JHUFF_TBL **htblptr;
-  boolean did_dc[NUM_HUFF_TBLS];
-  boolean did_ac[NUM_HUFF_TBLS];
-
-  /* It's important not to apply jpeg_gen_optimal_table more than once
-   * per table, because it clobbers the input frequency counts!
-   */
-  MEMZERO(did_dc, SIZEOF(did_dc));
-  MEMZERO(did_ac, SIZEOF(did_ac));
-
-  for (ci = 0; ci < cinfo->comps_in_scan; ci++) {
-    compptr = cinfo->cur_comp_info[ci];
-    dctbl = compptr->dc_tbl_no;
-    actbl = compptr->ac_tbl_no;
-    if (! did_dc[dctbl]) {
-      htblptr = & cinfo->dc_huff_tbl_ptrs[dctbl];
-      if (*htblptr == NULL)
-	*htblptr = jpeg_alloc_huff_table((j_common_ptr) cinfo);
-      jpeg_gen_optimal_table(cinfo, *htblptr, entropy->dc_count_ptrs[dctbl]);
-      did_dc[dctbl] = TRUE;
-    }
-    if (! did_ac[actbl]) {
-      htblptr = & cinfo->ac_huff_tbl_ptrs[actbl];
-      if (*htblptr == NULL)
-	*htblptr = jpeg_alloc_huff_table((j_common_ptr) cinfo);
-      jpeg_gen_optimal_table(cinfo, *htblptr, entropy->ac_count_ptrs[actbl]);
-      did_ac[actbl] = TRUE;
-    }
-  }
-}
-
-
-#endif /* ENTROPY_OPT_SUPPORTED */
-
-
-/*
- * Module initialization routine for Huffman entropy encoding.
- */
-
-GLOBAL(void)
-jinit_huff_encoder (j_compress_ptr cinfo)
-{
-  huff_entropy_ptr entropy;
-  int i;
-
-  entropy = (huff_entropy_ptr)
-    (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
-				SIZEOF(huff_entropy_encoder));
-  cinfo->entropy = (struct jpeg_entropy_encoder *) entropy;
-  entropy->pub.start_pass = start_pass_huff;
-
-  /* Mark tables unallocated */
-  for (i = 0; i < NUM_HUFF_TBLS; i++) {
-    entropy->dc_derived_tbls[i] = entropy->ac_derived_tbls[i] = NULL;
-#ifdef ENTROPY_OPT_SUPPORTED
-    entropy->dc_count_ptrs[i] = entropy->ac_count_ptrs[i] = NULL;
-#endif
-  }
-}
diff --git a/src/libjpeg/jchuff.h b/src/libjpeg/jchuff.h
deleted file mode 100644
index 8c02c09..0000000
--- a/src/libjpeg/jchuff.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * jchuff.h
- *
- * Copyright (C) 1991-1997, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains declarations for Huffman entropy encoding routines
- * that are shared between the sequential encoder (jchuff.c) and the
- * progressive encoder (jcphuff.c).  No other modules need to see these.
- */
-
-/* The legal range of a DCT coefficient is
- *  -1024 .. +1023  for 8-bit data;
- * -16384 .. +16383 for 12-bit data.
- * Hence the magnitude should always fit in 10 or 14 bits respectively.
- */
-
-#if BITS_IN_JSAMPLE == 8
-#define MAX_COEF_BITS 10
-#else
-#define MAX_COEF_BITS 14
-#endif
-
-/* Derived data constructed for each Huffman table */
-
-typedef struct {
-  unsigned int ehufco[256];	/* code for each symbol */
-  char ehufsi[256];		/* length of code for each symbol */
-  /* If no code has been allocated for a symbol S, ehufsi[S] contains 0 */
-} c_derived_tbl;
-
-/* Short forms of external names for systems with brain-damaged linkers. */
-
-#ifdef NEED_SHORT_EXTERNAL_NAMES
-#define jpeg_make_c_derived_tbl	jMkCDerived
-#define jpeg_gen_optimal_table	jGenOptTbl
-#endif /* NEED_SHORT_EXTERNAL_NAMES */
-
-/* Expand a Huffman table definition into the derived format */
-EXTERN(void) jpeg_make_c_derived_tbl
-	JPP((j_compress_ptr cinfo, boolean isDC, int tblno,
-	     c_derived_tbl ** pdtbl));
-
-/* Generate an optimal table definition given the specified counts */
-EXTERN(void) jpeg_gen_optimal_table
-	JPP((j_compress_ptr cinfo, JHUFF_TBL * htbl, long freq[]));
diff --git a/src/libjpeg/jcinit.c b/src/libjpeg/jcinit.c
deleted file mode 100644
index 19de8d0..0000000
--- a/src/libjpeg/jcinit.c
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * jcinit.c
- *
- * Copyright (C) 1991-1997, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains initialization logic for the JPEG compressor.
- * This routine is in charge of selecting the modules to be executed and
- * making an initialization call to each one.
- *
- * Logically, this code belongs in jcmaster.c.  It's split out because
- * linking this routine implies linking the entire compression library.
- * For a transcoding-only application, we want to be able to use jcmaster.c
- * without linking in the whole library.
- */
-
-#define JPEG_INTERNALS
-#include "jinclude.h"
-#include "jpeglib.h"
-
-
-/*
- * Master selection of compression modules.
- * This is done once at the start of processing an image.  We determine
- * which modules will be used and give them appropriate initialization calls.
- */
-
-GLOBAL(void)
-jinit_compress_master (j_compress_ptr cinfo)
-{
-  /* Initialize master control (includes parameter checking/processing) */
-  jinit_c_master_control(cinfo, FALSE /* full compression */);
-
-  /* Preprocessing */
-  if (! cinfo->raw_data_in) {
-    jinit_color_converter(cinfo);
-    jinit_downsampler(cinfo);
-    jinit_c_prep_controller(cinfo, FALSE /* never need full buffer here */);
-  }
-  /* Forward DCT */
-  jinit_forward_dct(cinfo);
-  /* Entropy encoding: either Huffman or arithmetic coding. */
-  if (cinfo->arith_code) {
-    ERREXIT(cinfo, JERR_ARITH_NOTIMPL);
-  } else {
-    if (cinfo->progressive_mode) {
-#ifdef C_PROGRESSIVE_SUPPORTED
-      jinit_phuff_encoder(cinfo);
-#else
-      ERREXIT(cinfo, JERR_NOT_COMPILED);
-#endif
-    } else
-      jinit_huff_encoder(cinfo);
-  }
-
-  /* Need a full-image coefficient buffer in any multi-pass mode. */
-  jinit_c_coef_controller(cinfo,
-		(boolean) (cinfo->num_scans > 1 || cinfo->optimize_coding));
-  jinit_c_main_controller(cinfo, FALSE /* never need full buffer here */);
-
-  jinit_marker_writer(cinfo);
-
-  /* We can now tell the memory manager to allocate virtual arrays. */
-  (*cinfo->mem->realize_virt_arrays) ((j_common_ptr) cinfo);
-
-  /* Write the datastream header (SOI) immediately.
-   * Frame and scan headers are postponed till later.
-   * This lets application insert special markers after the SOI.
-   */
-  (*cinfo->marker->write_file_header) (cinfo);
-}
diff --git a/src/libjpeg/jcmainct.c b/src/libjpeg/jcmainct.c
deleted file mode 100644
index 14aa4c7..0000000
--- a/src/libjpeg/jcmainct.c
+++ /dev/null
@@ -1,293 +0,0 @@
-/*
- * jcmainct.c
- *
- * Copyright (C) 1994-1996, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains the main buffer controller for compression.
- * The main buffer lies between the pre-processor and the JPEG
- * compressor proper; it holds downsampled data in the JPEG colorspace.
- */
-
-#define JPEG_INTERNALS
-#include "jinclude.h"
-#include "jpeglib.h"
-
-
-/* Note: currently, there is no operating mode in which a full-image buffer
- * is needed at this step.  If there were, that mode could not be used with
- * "raw data" input, since this module is bypassed in that case.  However,
- * we've left the code here for possible use in special applications.
- */
-#undef FULL_MAIN_BUFFER_SUPPORTED
-
-
-/* Private buffer controller object */
-
-typedef struct {
-  struct jpeg_c_main_controller pub; /* public fields */
-
-  JDIMENSION cur_iMCU_row;	/* number of current iMCU row */
-  JDIMENSION rowgroup_ctr;	/* counts row groups received in iMCU row */
-  boolean suspended;		/* remember if we suspended output */
-  J_BUF_MODE pass_mode;		/* current operating mode */
-
-  /* If using just a strip buffer, this points to the entire set of buffers
-   * (we allocate one for each component).  In the full-image case, this
-   * points to the currently accessible strips of the virtual arrays.
-   */
-  JSAMPARRAY buffer[MAX_COMPONENTS];
-
-#ifdef FULL_MAIN_BUFFER_SUPPORTED
-  /* If using full-image storage, this array holds pointers to virtual-array
-   * control blocks for each component.  Unused if not full-image storage.
-   */
-  jvirt_sarray_ptr whole_image[MAX_COMPONENTS];
-#endif
-} my_main_controller;
-
-typedef my_main_controller * my_main_ptr;
-
-
-/* Forward declarations */
-METHODDEF(void) process_data_simple_main
-	JPP((j_compress_ptr cinfo, JSAMPARRAY input_buf,
-	     JDIMENSION *in_row_ctr, JDIMENSION in_rows_avail));
-#ifdef FULL_MAIN_BUFFER_SUPPORTED
-METHODDEF(void) process_data_buffer_main
-	JPP((j_compress_ptr cinfo, JSAMPARRAY input_buf,
-	     JDIMENSION *in_row_ctr, JDIMENSION in_rows_avail));
-#endif
-
-
-/*
- * Initialize for a processing pass.
- */
-
-METHODDEF(void)
-start_pass_main (j_compress_ptr cinfo, J_BUF_MODE pass_mode)
-{
-  my_main_ptr main = (my_main_ptr) cinfo->main;
-
-  /* Do nothing in raw-data mode. */
-  if (cinfo->raw_data_in)
-    return;
-
-  main->cur_iMCU_row = 0;	/* initialize counters */
-  main->rowgroup_ctr = 0;
-  main->suspended = FALSE;
-  main->pass_mode = pass_mode;	/* save mode for use by process_data */
-
-  switch (pass_mode) {
-  case JBUF_PASS_THRU:
-#ifdef FULL_MAIN_BUFFER_SUPPORTED
-    if (main->whole_image[0] != NULL)
-      ERREXIT(cinfo, JERR_BAD_BUFFER_MODE);
-#endif
-    main->pub.process_data = process_data_simple_main;
-    break;
-#ifdef FULL_MAIN_BUFFER_SUPPORTED
-  case JBUF_SAVE_SOURCE:
-  case JBUF_CRANK_DEST:
-  case JBUF_SAVE_AND_PASS:
-    if (main->whole_image[0] == NULL)
-      ERREXIT(cinfo, JERR_BAD_BUFFER_MODE);
-    main->pub.process_data = process_data_buffer_main;
-    break;
-#endif
-  default:
-    ERREXIT(cinfo, JERR_BAD_BUFFER_MODE);
-    break;
-  }
-}
-
-
-/*
- * Process some data.
- * This routine handles the simple pass-through mode,
- * where we have only a strip buffer.
- */
-
-METHODDEF(void)
-process_data_simple_main (j_compress_ptr cinfo,
-			  JSAMPARRAY input_buf, JDIMENSION *in_row_ctr,
-			  JDIMENSION in_rows_avail)
-{
-  my_main_ptr main = (my_main_ptr) cinfo->main;
-
-  while (main->cur_iMCU_row < cinfo->total_iMCU_rows) {
-    /* Read input data if we haven't filled the main buffer yet */
-    if (main->rowgroup_ctr < DCTSIZE)
-      (*cinfo->prep->pre_process_data) (cinfo,
-					input_buf, in_row_ctr, in_rows_avail,
-					main->buffer, &main->rowgroup_ctr,
-					(JDIMENSION) DCTSIZE);
-
-    /* If we don't have a full iMCU row buffered, return to application for
-     * more data.  Note that preprocessor will always pad to fill the iMCU row
-     * at the bottom of the image.
-     */
-    if (main->rowgroup_ctr != DCTSIZE)
-      return;
-
-    /* Send the completed row to the compressor */
-    if (! (*cinfo->coef->compress_data) (cinfo, main->buffer)) {
-      /* If compressor did not consume the whole row, then we must need to
-       * suspend processing and return to the application.  In this situation
-       * we pretend we didn't yet consume the last input row; otherwise, if
-       * it happened to be the last row of the image, the application would
-       * think we were done.
-       */
-      if (! main->suspended) {
-	(*in_row_ctr)--;
-	main->suspended = TRUE;
-      }
-      return;
-    }
-    /* We did finish the row.  Undo our little suspension hack if a previous
-     * call suspended; then mark the main buffer empty.
-     */
-    if (main->suspended) {
-      (*in_row_ctr)++;
-      main->suspended = FALSE;
-    }
-    main->rowgroup_ctr = 0;
-    main->cur_iMCU_row++;
-  }
-}
-
-
-#ifdef FULL_MAIN_BUFFER_SUPPORTED
-
-/*
- * Process some data.
- * This routine handles all of the modes that use a full-size buffer.
- */
-
-METHODDEF(void)
-process_data_buffer_main (j_compress_ptr cinfo,
-			  JSAMPARRAY input_buf, JDIMENSION *in_row_ctr,
-			  JDIMENSION in_rows_avail)
-{
-  my_main_ptr main = (my_main_ptr) cinfo->main;
-  int ci;
-  jpeg_component_info *compptr;
-  boolean writing = (main->pass_mode != JBUF_CRANK_DEST);
-
-  while (main->cur_iMCU_row < cinfo->total_iMCU_rows) {
-    /* Realign the virtual buffers if at the start of an iMCU row. */
-    if (main->rowgroup_ctr == 0) {
-      for (ci = 0, compptr = cinfo->comp_info; ci < cinfo->num_components;
-	   ci++, compptr++) {
-	main->buffer[ci] = (*cinfo->mem->access_virt_sarray)
-	  ((j_common_ptr) cinfo, main->whole_image[ci],
-	   main->cur_iMCU_row * (compptr->v_samp_factor * DCTSIZE),
-	   (JDIMENSION) (compptr->v_samp_factor * DCTSIZE), writing);
-      }
-      /* In a read pass, pretend we just read some source data. */
-      if (! writing) {
-	*in_row_ctr += cinfo->max_v_samp_factor * DCTSIZE;
-	main->rowgroup_ctr = DCTSIZE;
-      }
-    }
-
-    /* If a write pass, read input data until the current iMCU row is full. */
-    /* Note: preprocessor will pad if necessary to fill the last iMCU row. */
-    if (writing) {
-      (*cinfo->prep->pre_process_data) (cinfo,
-					input_buf, in_row_ctr, in_rows_avail,
-					main->buffer, &main->rowgroup_ctr,
-					(JDIMENSION) DCTSIZE);
-      /* Return to application if we need more data to fill the iMCU row. */
-      if (main->rowgroup_ctr < DCTSIZE)
-	return;
-    }
-
-    /* Emit data, unless this is a sink-only pass. */
-    if (main->pass_mode != JBUF_SAVE_SOURCE) {
-      if (! (*cinfo->coef->compress_data) (cinfo, main->buffer)) {
-	/* If compressor did not consume the whole row, then we must need to
-	 * suspend processing and return to the application.  In this situation
-	 * we pretend we didn't yet consume the last input row; otherwise, if
-	 * it happened to be the last row of the image, the application would
-	 * think we were done.
-	 */
-	if (! main->suspended) {
-	  (*in_row_ctr)--;
-	  main->suspended = TRUE;
-	}
-	return;
-      }
-      /* We did finish the row.  Undo our little suspension hack if a previous
-       * call suspended; then mark the main buffer empty.
-       */
-      if (main->suspended) {
-	(*in_row_ctr)++;
-	main->suspended = FALSE;
-      }
-    }
-
-    /* If get here, we are done with this iMCU row.  Mark buffer empty. */
-    main->rowgroup_ctr = 0;
-    main->cur_iMCU_row++;
-  }
-}
-
-#endif /* FULL_MAIN_BUFFER_SUPPORTED */
-
-
-/*
- * Initialize main buffer controller.
- */
-
-GLOBAL(void)
-jinit_c_main_controller (j_compress_ptr cinfo, boolean need_full_buffer)
-{
-  my_main_ptr main;
-  int ci;
-  jpeg_component_info *compptr;
-
-  main = (my_main_ptr)
-    (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
-				SIZEOF(my_main_controller));
-  cinfo->main = (struct jpeg_c_main_controller *) main;
-  main->pub.start_pass = start_pass_main;
-
-  /* We don't need to create a buffer in raw-data mode. */
-  if (cinfo->raw_data_in)
-    return;
-
-  /* Create the buffer.  It holds downsampled data, so each component
-   * may be of a different size.
-   */
-  if (need_full_buffer) {
-#ifdef FULL_MAIN_BUFFER_SUPPORTED
-    /* Allocate a full-image virtual array for each component */
-    /* Note we pad the bottom to a multiple of the iMCU height */
-    for (ci = 0, compptr = cinfo->comp_info; ci < cinfo->num_components;
-	 ci++, compptr++) {
-      main->whole_image[ci] = (*cinfo->mem->request_virt_sarray)
-	((j_common_ptr) cinfo, JPOOL_IMAGE, FALSE,
-	 compptr->width_in_blocks * DCTSIZE,
-	 (JDIMENSION) jround_up((long) compptr->height_in_blocks,
-				(long) compptr->v_samp_factor) * DCTSIZE,
-	 (JDIMENSION) (compptr->v_samp_factor * DCTSIZE));
-    }
-#else
-    ERREXIT(cinfo, JERR_BAD_BUFFER_MODE);
-#endif
-  } else {
-#ifdef FULL_MAIN_BUFFER_SUPPORTED
-    main->whole_image[0] = NULL; /* flag for no virtual arrays */
-#endif
-    /* Allocate a strip buffer for each component */
-    for (ci = 0, compptr = cinfo->comp_info; ci < cinfo->num_components;
-	 ci++, compptr++) {
-      main->buffer[ci] = (*cinfo->mem->alloc_sarray)
-	((j_common_ptr) cinfo, JPOOL_IMAGE,
-	 compptr->width_in_blocks * DCTSIZE,
-	 (JDIMENSION) (compptr->v_samp_factor * DCTSIZE));
-    }
-  }
-}
diff --git a/src/libjpeg/jcmarker.c b/src/libjpeg/jcmarker.c
deleted file mode 100644
index 0d3ca5e..0000000
--- a/src/libjpeg/jcmarker.c
+++ /dev/null
@@ -1,664 +0,0 @@
-/*
- * jcmarker.c
- *
- * Copyright (C) 1991-1998, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains routines to write JPEG datastream markers.
- */
-
-#define JPEG_INTERNALS
-#include "jinclude.h"
-#include "jpeglib.h"
-
-
-typedef enum {			/* JPEG marker codes */
-  M_SOF0  = 0xc0,
-  M_SOF1  = 0xc1,
-  M_SOF2  = 0xc2,
-  M_SOF3  = 0xc3,
-  
-  M_SOF5  = 0xc5,
-  M_SOF6  = 0xc6,
-  M_SOF7  = 0xc7,
-  
-  M_JPG   = 0xc8,
-  M_SOF9  = 0xc9,
-  M_SOF10 = 0xca,
-  M_SOF11 = 0xcb,
-  
-  M_SOF13 = 0xcd,
-  M_SOF14 = 0xce,
-  M_SOF15 = 0xcf,
-  
-  M_DHT   = 0xc4,
-  
-  M_DAC   = 0xcc,
-  
-  M_RST0  = 0xd0,
-  M_RST1  = 0xd1,
-  M_RST2  = 0xd2,
-  M_RST3  = 0xd3,
-  M_RST4  = 0xd4,
-  M_RST5  = 0xd5,
-  M_RST6  = 0xd6,
-  M_RST7  = 0xd7,
-  
-  M_SOI   = 0xd8,
-  M_EOI   = 0xd9,
-  M_SOS   = 0xda,
-  M_DQT   = 0xdb,
-  M_DNL   = 0xdc,
-  M_DRI   = 0xdd,
-  M_DHP   = 0xde,
-  M_EXP   = 0xdf,
-  
-  M_APP0  = 0xe0,
-  M_APP1  = 0xe1,
-  M_APP2  = 0xe2,
-  M_APP3  = 0xe3,
-  M_APP4  = 0xe4,
-  M_APP5  = 0xe5,
-  M_APP6  = 0xe6,
-  M_APP7  = 0xe7,
-  M_APP8  = 0xe8,
-  M_APP9  = 0xe9,
-  M_APP10 = 0xea,
-  M_APP11 = 0xeb,
-  M_APP12 = 0xec,
-  M_APP13 = 0xed,
-  M_APP14 = 0xee,
-  M_APP15 = 0xef,
-  
-  M_JPG0  = 0xf0,
-  M_JPG13 = 0xfd,
-  M_COM   = 0xfe,
-  
-  M_TEM   = 0x01,
-  
-  M_ERROR = 0x100
-} JPEG_MARKER;
-
-
-/* Private state */
-
-typedef struct {
-  struct jpeg_marker_writer pub; /* public fields */
-
-  unsigned int last_restart_interval; /* last DRI value emitted; 0 after SOI */
-} my_marker_writer;
-
-typedef my_marker_writer * my_marker_ptr;
-
-
-/*
- * Basic output routines.
- *
- * Note that we do not support suspension while writing a marker.
- * Therefore, an application using suspension must ensure that there is
- * enough buffer space for the initial markers (typ. 600-700 bytes) before
- * calling jpeg_start_compress, and enough space to write the trailing EOI
- * (a few bytes) before calling jpeg_finish_compress.  Multipass compression
- * modes are not supported at all with suspension, so those two are the only
- * points where markers will be written.
- */
-
-LOCAL(void)
-emit_byte (j_compress_ptr cinfo, int val)
-/* Emit a byte */
-{
-  struct jpeg_destination_mgr * dest = cinfo->dest;
-
-  *(dest->next_output_byte)++ = (JOCTET) val;
-  if (--dest->free_in_buffer == 0) {
-    if (! (*dest->empty_output_buffer) (cinfo))
-      ERREXIT(cinfo, JERR_CANT_SUSPEND);
-  }
-}
-
-
-LOCAL(void)
-emit_marker (j_compress_ptr cinfo, JPEG_MARKER mark)
-/* Emit a marker code */
-{
-  emit_byte(cinfo, 0xFF);
-  emit_byte(cinfo, (int) mark);
-}
-
-
-LOCAL(void)
-emit_2bytes (j_compress_ptr cinfo, int value)
-/* Emit a 2-byte integer; these are always MSB first in JPEG files */
-{
-  emit_byte(cinfo, (value >> 8) & 0xFF);
-  emit_byte(cinfo, value & 0xFF);
-}
-
-
-/*
- * Routines to write specific marker types.
- */
-
-LOCAL(int)
-emit_dqt (j_compress_ptr cinfo, int index)
-/* Emit a DQT marker */
-/* Returns the precision used (0 = 8bits, 1 = 16bits) for baseline checking */
-{
-  JQUANT_TBL * qtbl = cinfo->quant_tbl_ptrs[index];
-  int prec;
-  int i;
-
-  if (qtbl == NULL)
-    ERREXIT1(cinfo, JERR_NO_QUANT_TABLE, index);
-
-  prec = 0;
-  for (i = 0; i < DCTSIZE2; i++) {
-    if (qtbl->quantval[i] > 255)
-      prec = 1;
-  }
-
-  if (! qtbl->sent_table) {
-    emit_marker(cinfo, M_DQT);
-
-    emit_2bytes(cinfo, prec ? DCTSIZE2*2 + 1 + 2 : DCTSIZE2 + 1 + 2);
-
-    emit_byte(cinfo, index + (prec<<4));
-
-    for (i = 0; i < DCTSIZE2; i++) {
-      /* The table entries must be emitted in zigzag order. */
-      unsigned int qval = qtbl->quantval[jpeg_natural_order[i]];
-      if (prec)
-	emit_byte(cinfo, (int) (qval >> 8));
-      emit_byte(cinfo, (int) (qval & 0xFF));
-    }
-
-    qtbl->sent_table = TRUE;
-  }
-
-  return prec;
-}
-
-
-LOCAL(void)
-emit_dht (j_compress_ptr cinfo, int index, boolean is_ac)
-/* Emit a DHT marker */
-{
-  JHUFF_TBL * htbl;
-  int length, i;
-  
-  if (is_ac) {
-    htbl = cinfo->ac_huff_tbl_ptrs[index];
-    index += 0x10;		/* output index has AC bit set */
-  } else {
-    htbl = cinfo->dc_huff_tbl_ptrs[index];
-  }
-
-  if (htbl == NULL)
-    ERREXIT1(cinfo, JERR_NO_HUFF_TABLE, index);
-  
-  if (! htbl->sent_table) {
-    emit_marker(cinfo, M_DHT);
-    
-    length = 0;
-    for (i = 1; i <= 16; i++)
-      length += htbl->bits[i];
-    
-    emit_2bytes(cinfo, length + 2 + 1 + 16);
-    emit_byte(cinfo, index);
-    
-    for (i = 1; i <= 16; i++)
-      emit_byte(cinfo, htbl->bits[i]);
-    
-    for (i = 0; i < length; i++)
-      emit_byte(cinfo, htbl->huffval[i]);
-    
-    htbl->sent_table = TRUE;
-  }
-}
-
-
-LOCAL(void)
-emit_dac (j_compress_ptr cinfo)
-/* Emit a DAC marker */
-/* Since the useful info is so small, we want to emit all the tables in */
-/* one DAC marker.  Therefore this routine does its own scan of the table. */
-{
-#ifdef C_ARITH_CODING_SUPPORTED
-  char dc_in_use[NUM_ARITH_TBLS];
-  char ac_in_use[NUM_ARITH_TBLS];
-  int length, i;
-  jpeg_component_info *compptr;
-  
-  for (i = 0; i < NUM_ARITH_TBLS; i++)
-    dc_in_use[i] = ac_in_use[i] = 0;
-  
-  for (i = 0; i < cinfo->comps_in_scan; i++) {
-    compptr = cinfo->cur_comp_info[i];
-    dc_in_use[compptr->dc_tbl_no] = 1;
-    ac_in_use[compptr->ac_tbl_no] = 1;
-  }
-  
-  length = 0;
-  for (i = 0; i < NUM_ARITH_TBLS; i++)
-    length += dc_in_use[i] + ac_in_use[i];
-  
-  emit_marker(cinfo, M_DAC);
-  
-  emit_2bytes(cinfo, length*2 + 2);
-  
-  for (i = 0; i < NUM_ARITH_TBLS; i++) {
-    if (dc_in_use[i]) {
-      emit_byte(cinfo, i);
-      emit_byte(cinfo, cinfo->arith_dc_L[i] + (cinfo->arith_dc_U[i]<<4));
-    }
-    if (ac_in_use[i]) {
-      emit_byte(cinfo, i + 0x10);
-      emit_byte(cinfo, cinfo->arith_ac_K[i]);
-    }
-  }
-#endif /* C_ARITH_CODING_SUPPORTED */
-}
-
-
-LOCAL(void)
-emit_dri (j_compress_ptr cinfo)
-/* Emit a DRI marker */
-{
-  emit_marker(cinfo, M_DRI);
-  
-  emit_2bytes(cinfo, 4);	/* fixed length */
-
-  emit_2bytes(cinfo, (int) cinfo->restart_interval);
-}
-
-
-LOCAL(void)
-emit_sof (j_compress_ptr cinfo, JPEG_MARKER code)
-/* Emit a SOF marker */
-{
-  int ci;
-  jpeg_component_info *compptr;
-  
-  emit_marker(cinfo, code);
-  
-  emit_2bytes(cinfo, 3 * cinfo->num_components + 2 + 5 + 1); /* length */
-
-  /* Make sure image isn't bigger than SOF field can handle */
-  if ((long) cinfo->image_height > 65535L ||
-      (long) cinfo->image_width > 65535L)
-    ERREXIT1(cinfo, JERR_IMAGE_TOO_BIG, (unsigned int) 65535);
-
-  emit_byte(cinfo, cinfo->data_precision);
-  emit_2bytes(cinfo, (int) cinfo->image_height);
-  emit_2bytes(cinfo, (int) cinfo->image_width);
-
-  emit_byte(cinfo, cinfo->num_components);
-
-  for (ci = 0, compptr = cinfo->comp_info; ci < cinfo->num_components;
-       ci++, compptr++) {
-    emit_byte(cinfo, compptr->component_id);
-    emit_byte(cinfo, (compptr->h_samp_factor << 4) + compptr->v_samp_factor);
-    emit_byte(cinfo, compptr->quant_tbl_no);
-  }
-}
-
-
-LOCAL(void)
-emit_sos (j_compress_ptr cinfo)
-/* Emit a SOS marker */
-{
-  int i, td, ta;
-  jpeg_component_info *compptr;
-  
-  emit_marker(cinfo, M_SOS);
-  
-  emit_2bytes(cinfo, 2 * cinfo->comps_in_scan + 2 + 1 + 3); /* length */
-  
-  emit_byte(cinfo, cinfo->comps_in_scan);
-  
-  for (i = 0; i < cinfo->comps_in_scan; i++) {
-    compptr = cinfo->cur_comp_info[i];
-    emit_byte(cinfo, compptr->component_id);
-    td = compptr->dc_tbl_no;
-    ta = compptr->ac_tbl_no;
-    if (cinfo->progressive_mode) {
-      /* Progressive mode: only DC or only AC tables are used in one scan;
-       * furthermore, Huffman coding of DC refinement uses no table at all.
-       * We emit 0 for unused field(s); this is recommended by the P&M text
-       * but does not seem to be specified in the standard.
-       */
-      if (cinfo->Ss == 0) {
-	ta = 0;			/* DC scan */
-	if (cinfo->Ah != 0 && !cinfo->arith_code)
-	  td = 0;		/* no DC table either */
-      } else {
-	td = 0;			/* AC scan */
-      }
-    }
-    emit_byte(cinfo, (td << 4) + ta);
-  }
-
-  emit_byte(cinfo, cinfo->Ss);
-  emit_byte(cinfo, cinfo->Se);
-  emit_byte(cinfo, (cinfo->Ah << 4) + cinfo->Al);
-}
-
-
-LOCAL(void)
-emit_jfif_app0 (j_compress_ptr cinfo)
-/* Emit a JFIF-compliant APP0 marker */
-{
-  /*
-   * Length of APP0 block	(2 bytes)
-   * Block ID			(4 bytes - ASCII "JFIF")
-   * Zero byte			(1 byte to terminate the ID string)
-   * Version Major, Minor	(2 bytes - major first)
-   * Units			(1 byte - 0x00 = none, 0x01 = inch, 0x02 = cm)
-   * Xdpu			(2 bytes - dots per unit horizontal)
-   * Ydpu			(2 bytes - dots per unit vertical)
-   * Thumbnail X size		(1 byte)
-   * Thumbnail Y size		(1 byte)
-   */
-  
-  emit_marker(cinfo, M_APP0);
-  
-  emit_2bytes(cinfo, 2 + 4 + 1 + 2 + 1 + 2 + 2 + 1 + 1); /* length */
-
-  emit_byte(cinfo, 0x4A);	/* Identifier: ASCII "JFIF" */
-  emit_byte(cinfo, 0x46);
-  emit_byte(cinfo, 0x49);
-  emit_byte(cinfo, 0x46);
-  emit_byte(cinfo, 0);
-  emit_byte(cinfo, cinfo->JFIF_major_version); /* Version fields */
-  emit_byte(cinfo, cinfo->JFIF_minor_version);
-  emit_byte(cinfo, cinfo->density_unit); /* Pixel size information */
-  emit_2bytes(cinfo, (int) cinfo->X_density);
-  emit_2bytes(cinfo, (int) cinfo->Y_density);
-  emit_byte(cinfo, 0);		/* No thumbnail image */
-  emit_byte(cinfo, 0);
-}
-
-
-LOCAL(void)
-emit_adobe_app14 (j_compress_ptr cinfo)
-/* Emit an Adobe APP14 marker */
-{
-  /*
-   * Length of APP14 block	(2 bytes)
-   * Block ID			(5 bytes - ASCII "Adobe")
-   * Version Number		(2 bytes - currently 100)
-   * Flags0			(2 bytes - currently 0)
-   * Flags1			(2 bytes - currently 0)
-   * Color transform		(1 byte)
-   *
-   * Although Adobe TN 5116 mentions Version = 101, all the Adobe files
-   * now in circulation seem to use Version = 100, so that's what we write.
-   *
-   * We write the color transform byte as 1 if the JPEG color space is
-   * YCbCr, 2 if it's YCCK, 0 otherwise.  Adobe's definition has to do with
-   * whether the encoder performed a transformation, which is pretty useless.
-   */
-  
-  emit_marker(cinfo, M_APP14);
-  
-  emit_2bytes(cinfo, 2 + 5 + 2 + 2 + 2 + 1); /* length */
-
-  emit_byte(cinfo, 0x41);	/* Identifier: ASCII "Adobe" */
-  emit_byte(cinfo, 0x64);
-  emit_byte(cinfo, 0x6F);
-  emit_byte(cinfo, 0x62);
-  emit_byte(cinfo, 0x65);
-  emit_2bytes(cinfo, 100);	/* Version */
-  emit_2bytes(cinfo, 0);	/* Flags0 */
-  emit_2bytes(cinfo, 0);	/* Flags1 */
-  switch (cinfo->jpeg_color_space) {
-  case JCS_YCbCr:
-    emit_byte(cinfo, 1);	/* Color transform = 1 */
-    break;
-  case JCS_YCCK:
-    emit_byte(cinfo, 2);	/* Color transform = 2 */
-    break;
-  default:
-    emit_byte(cinfo, 0);	/* Color transform = 0 */
-    break;
-  }
-}
-
-
-/*
- * These routines allow writing an arbitrary marker with parameters.
- * The only intended use is to emit COM or APPn markers after calling
- * write_file_header and before calling write_frame_header.
- * Other uses are not guaranteed to produce desirable results.
- * Counting the parameter bytes properly is the caller's responsibility.
- */
-
-METHODDEF(void)
-write_marker_header (j_compress_ptr cinfo, int marker, unsigned int datalen)
-/* Emit an arbitrary marker header */
-{
-  if (datalen > (unsigned int) 65533)		/* safety check */
-    ERREXIT(cinfo, JERR_BAD_LENGTH);
-
-  emit_marker(cinfo, (JPEG_MARKER) marker);
-
-  emit_2bytes(cinfo, (int) (datalen + 2));	/* total length */
-}
-
-METHODDEF(void)
-write_marker_byte (j_compress_ptr cinfo, int val)
-/* Emit one byte of marker parameters following write_marker_header */
-{
-  emit_byte(cinfo, val);
-}
-
-
-/*
- * Write datastream header.
- * This consists of an SOI and optional APPn markers.
- * We recommend use of the JFIF marker, but not the Adobe marker,
- * when using YCbCr or grayscale data.  The JFIF marker should NOT
- * be used for any other JPEG colorspace.  The Adobe marker is helpful
- * to distinguish RGB, CMYK, and YCCK colorspaces.
- * Note that an application can write additional header markers after
- * jpeg_start_compress returns.
- */
-
-METHODDEF(void)
-write_file_header (j_compress_ptr cinfo)
-{
-  my_marker_ptr marker = (my_marker_ptr) cinfo->marker;
-
-  emit_marker(cinfo, M_SOI);	/* first the SOI */
-
-  /* SOI is defined to reset restart interval to 0 */
-  marker->last_restart_interval = 0;
-
-  if (cinfo->write_JFIF_header)	/* next an optional JFIF APP0 */
-    emit_jfif_app0(cinfo);
-  if (cinfo->write_Adobe_marker) /* next an optional Adobe APP14 */
-    emit_adobe_app14(cinfo);
-}
-
-
-/*
- * Write frame header.
- * This consists of DQT and SOFn markers.
- * Note that we do not emit the SOF until we have emitted the DQT(s).
- * This avoids compatibility problems with incorrect implementations that
- * try to error-check the quant table numbers as soon as they see the SOF.
- */
-
-METHODDEF(void)
-write_frame_header (j_compress_ptr cinfo)
-{
-  int ci, prec;
-  boolean is_baseline;
-  jpeg_component_info *compptr;
-  
-  /* Emit DQT for each quantization table.
-   * Note that emit_dqt() suppresses any duplicate tables.
-   */
-  prec = 0;
-  for (ci = 0, compptr = cinfo->comp_info; ci < cinfo->num_components;
-       ci++, compptr++) {
-    prec += emit_dqt(cinfo, compptr->quant_tbl_no);
-  }
-  /* now prec is nonzero iff there are any 16-bit quant tables. */
-
-  /* Check for a non-baseline specification.
-   * Note we assume that Huffman table numbers won't be changed later.
-   */
-  if (cinfo->arith_code || cinfo->progressive_mode ||
-      cinfo->data_precision != 8) {
-    is_baseline = FALSE;
-  } else {
-    is_baseline = TRUE;
-    for (ci = 0, compptr = cinfo->comp_info; ci < cinfo->num_components;
-	 ci++, compptr++) {
-      if (compptr->dc_tbl_no > 1 || compptr->ac_tbl_no > 1)
-	is_baseline = FALSE;
-    }
-    if (prec && is_baseline) {
-      is_baseline = FALSE;
-      /* If it's baseline except for quantizer size, warn the user */
-      TRACEMS(cinfo, 0, JTRC_16BIT_TABLES);
-    }
-  }
-
-  /* Emit the proper SOF marker */
-  if (cinfo->arith_code) {
-    emit_sof(cinfo, M_SOF9);	/* SOF code for arithmetic coding */
-  } else {
-    if (cinfo->progressive_mode)
-      emit_sof(cinfo, M_SOF2);	/* SOF code for progressive Huffman */
-    else if (is_baseline)
-      emit_sof(cinfo, M_SOF0);	/* SOF code for baseline implementation */
-    else
-      emit_sof(cinfo, M_SOF1);	/* SOF code for non-baseline Huffman file */
-  }
-}
-
-
-/*
- * Write scan header.
- * This consists of DHT or DAC markers, optional DRI, and SOS.
- * Compressed data will be written following the SOS.
- */
-
-METHODDEF(void)
-write_scan_header (j_compress_ptr cinfo)
-{
-  my_marker_ptr marker = (my_marker_ptr) cinfo->marker;
-  int i;
-  jpeg_component_info *compptr;
-
-  if (cinfo->arith_code) {
-    /* Emit arith conditioning info.  We may have some duplication
-     * if the file has multiple scans, but it's so small it's hardly
-     * worth worrying about.
-     */
-    emit_dac(cinfo);
-  } else {
-    /* Emit Huffman tables.
-     * Note that emit_dht() suppresses any duplicate tables.
-     */
-    for (i = 0; i < cinfo->comps_in_scan; i++) {
-      compptr = cinfo->cur_comp_info[i];
-      if (cinfo->progressive_mode) {
-	/* Progressive mode: only DC or only AC tables are used in one scan */
-	if (cinfo->Ss == 0) {
-	  if (cinfo->Ah == 0)	/* DC needs no table for refinement scan */
-	    emit_dht(cinfo, compptr->dc_tbl_no, FALSE);
-	} else {
-	  emit_dht(cinfo, compptr->ac_tbl_no, TRUE);
-	}
-      } else {
-	/* Sequential mode: need both DC and AC tables */
-	emit_dht(cinfo, compptr->dc_tbl_no, FALSE);
-	emit_dht(cinfo, compptr->ac_tbl_no, TRUE);
-      }
-    }
-  }
-
-  /* Emit DRI if required --- note that DRI value could change for each scan.
-   * We avoid wasting space with unnecessary DRIs, however.
-   */
-  if (cinfo->restart_interval != marker->last_restart_interval) {
-    emit_dri(cinfo);
-    marker->last_restart_interval = cinfo->restart_interval;
-  }
-
-  emit_sos(cinfo);
-}
-
-
-/*
- * Write datastream trailer.
- */
-
-METHODDEF(void)
-write_file_trailer (j_compress_ptr cinfo)
-{
-  emit_marker(cinfo, M_EOI);
-}
-
-
-/*
- * Write an abbreviated table-specification datastream.
- * This consists of SOI, DQT and DHT tables, and EOI.
- * Any table that is defined and not marked sent_table = TRUE will be
- * emitted.  Note that all tables will be marked sent_table = TRUE at exit.
- */
-
-METHODDEF(void)
-write_tables_only (j_compress_ptr cinfo)
-{
-  int i;
-
-  emit_marker(cinfo, M_SOI);
-
-  for (i = 0; i < NUM_QUANT_TBLS; i++) {
-    if (cinfo->quant_tbl_ptrs[i] != NULL)
-      (void) emit_dqt(cinfo, i);
-  }
-
-  if (! cinfo->arith_code) {
-    for (i = 0; i < NUM_HUFF_TBLS; i++) {
-      if (cinfo->dc_huff_tbl_ptrs[i] != NULL)
-	emit_dht(cinfo, i, FALSE);
-      if (cinfo->ac_huff_tbl_ptrs[i] != NULL)
-	emit_dht(cinfo, i, TRUE);
-    }
-  }
-
-  emit_marker(cinfo, M_EOI);
-}
-
-
-/*
- * Initialize the marker writer module.
- */
-
-GLOBAL(void)
-jinit_marker_writer (j_compress_ptr cinfo)
-{
-  my_marker_ptr marker;
-
-  /* Create the subobject */
-  marker = (my_marker_ptr)
-    (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
-				SIZEOF(my_marker_writer));
-  cinfo->marker = (struct jpeg_marker_writer *) marker;
-  /* Initialize method pointers */
-  marker->pub.write_file_header = write_file_header;
-  marker->pub.write_frame_header = write_frame_header;
-  marker->pub.write_scan_header = write_scan_header;
-  marker->pub.write_file_trailer = write_file_trailer;
-  marker->pub.write_tables_only = write_tables_only;
-  marker->pub.write_marker_header = write_marker_header;
-  marker->pub.write_marker_byte = write_marker_byte;
-  /* Initialize private state */
-  marker->last_restart_interval = 0;
-}
diff --git a/src/libjpeg/jcmaster.c b/src/libjpeg/jcmaster.c
deleted file mode 100644
index e61138b..0000000
--- a/src/libjpeg/jcmaster.c
+++ /dev/null
@@ -1,590 +0,0 @@
-/*
- * jcmaster.c
- *
- * Copyright (C) 1991-1997, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains master control logic for the JPEG compressor.
- * These routines are concerned with parameter validation, initial setup,
- * and inter-pass control (determining the number of passes and the work 
- * to be done in each pass).
- */
-
-#define JPEG_INTERNALS
-#include "jinclude.h"
-#include "jpeglib.h"
-
-
-/* Private state */
-
-typedef enum {
-	main_pass,		/* input data, also do first output step */
-	huff_opt_pass,		/* Huffman code optimization pass */
-	output_pass		/* data output pass */
-} c_pass_type;
-
-typedef struct {
-  struct jpeg_comp_master pub;	/* public fields */
-
-  c_pass_type pass_type;	/* the type of the current pass */
-
-  int pass_number;		/* # of passes completed */
-  int total_passes;		/* total # of passes needed */
-
-  int scan_number;		/* current index in scan_info[] */
-} my_comp_master;
-
-typedef my_comp_master * my_master_ptr;
-
-
-/*
- * Support routines that do various essential calculations.
- */
-
-LOCAL(void)
-initial_setup (j_compress_ptr cinfo)
-/* Do computations that are needed before master selection phase */
-{
-  int ci;
-  jpeg_component_info *compptr;
-  long samplesperrow;
-  JDIMENSION jd_samplesperrow;
-
-  /* Sanity check on image dimensions */
-  if (cinfo->image_height <= 0 || cinfo->image_width <= 0
-      || cinfo->num_components <= 0 || cinfo->input_components <= 0)
-    ERREXIT(cinfo, JERR_EMPTY_IMAGE);
-
-  /* Make sure image isn't bigger than I can handle */
-  if ((long) cinfo->image_height > (long) JPEG_MAX_DIMENSION ||
-      (long) cinfo->image_width > (long) JPEG_MAX_DIMENSION)
-    ERREXIT1(cinfo, JERR_IMAGE_TOO_BIG, (unsigned int) JPEG_MAX_DIMENSION);
-
-  /* Width of an input scanline must be representable as JDIMENSION. */
-  samplesperrow = (long) cinfo->image_width * (long) cinfo->input_components;
-  jd_samplesperrow = (JDIMENSION) samplesperrow;
-  if ((long) jd_samplesperrow != samplesperrow)
-    ERREXIT(cinfo, JERR_WIDTH_OVERFLOW);
-
-  /* For now, precision must match compiled-in value... */
-  if (cinfo->data_precision != BITS_IN_JSAMPLE)
-    ERREXIT1(cinfo, JERR_BAD_PRECISION, cinfo->data_precision);
-
-  /* Check that number of components won't exceed internal array sizes */
-  if (cinfo->num_components > MAX_COMPONENTS)
-    ERREXIT2(cinfo, JERR_COMPONENT_COUNT, cinfo->num_components,
-	     MAX_COMPONENTS);
-
-  /* Compute maximum sampling factors; check factor validity */
-  cinfo->max_h_samp_factor = 1;
-  cinfo->max_v_samp_factor = 1;
-  for (ci = 0, compptr = cinfo->comp_info; ci < cinfo->num_components;
-       ci++, compptr++) {
-    if (compptr->h_samp_factor<=0 || compptr->h_samp_factor>MAX_SAMP_FACTOR ||
-	compptr->v_samp_factor<=0 || compptr->v_samp_factor>MAX_SAMP_FACTOR)
-      ERREXIT(cinfo, JERR_BAD_SAMPLING);
-    cinfo->max_h_samp_factor = MAX(cinfo->max_h_samp_factor,
-				   compptr->h_samp_factor);
-    cinfo->max_v_samp_factor = MAX(cinfo->max_v_samp_factor,
-				   compptr->v_samp_factor);
-  }
-
-  /* Compute dimensions of components */
-  for (ci = 0, compptr = cinfo->comp_info; ci < cinfo->num_components;
-       ci++, compptr++) {
-    /* Fill in the correct component_index value; don't rely on application */
-    compptr->component_index = ci;
-    /* For compression, we never do DCT scaling. */
-    compptr->DCT_scaled_size = DCTSIZE;
-    /* Size in DCT blocks */
-    compptr->width_in_blocks = (JDIMENSION)
-      jdiv_round_up((long) cinfo->image_width * (long) compptr->h_samp_factor,
-		    (long) (cinfo->max_h_samp_factor * DCTSIZE));
-    compptr->height_in_blocks = (JDIMENSION)
-      jdiv_round_up((long) cinfo->image_height * (long) compptr->v_samp_factor,
-		    (long) (cinfo->max_v_samp_factor * DCTSIZE));
-    /* Size in samples */
-    compptr->downsampled_width = (JDIMENSION)
-      jdiv_round_up((long) cinfo->image_width * (long) compptr->h_samp_factor,
-		    (long) cinfo->max_h_samp_factor);
-    compptr->downsampled_height = (JDIMENSION)
-      jdiv_round_up((long) cinfo->image_height * (long) compptr->v_samp_factor,
-		    (long) cinfo->max_v_samp_factor);
-    /* Mark component needed (this flag isn't actually used for compression) */
-    compptr->component_needed = TRUE;
-  }
-
-  /* Compute number of fully interleaved MCU rows (number of times that
-   * main controller will call coefficient controller).
-   */
-  cinfo->total_iMCU_rows = (JDIMENSION)
-    jdiv_round_up((long) cinfo->image_height,
-		  (long) (cinfo->max_v_samp_factor*DCTSIZE));
-}
-
-
-#ifdef C_MULTISCAN_FILES_SUPPORTED
-
-LOCAL(void)
-validate_script (j_compress_ptr cinfo)
-/* Verify that the scan script in cinfo->scan_info[] is valid; also
- * determine whether it uses progressive JPEG, and set cinfo->progressive_mode.
- */
-{
-  const jpeg_scan_info * scanptr;
-  int scanno, ncomps, ci, coefi, thisi;
-  int Ss, Se, Ah, Al;
-  boolean component_sent[MAX_COMPONENTS];
-#ifdef C_PROGRESSIVE_SUPPORTED
-  int * last_bitpos_ptr;
-  int last_bitpos[MAX_COMPONENTS][DCTSIZE2];
-  /* -1 until that coefficient has been seen; then last Al for it */
-#endif
-
-  if (cinfo->num_scans <= 0)
-    ERREXIT1(cinfo, JERR_BAD_SCAN_SCRIPT, 0);
-
-  /* For sequential JPEG, all scans must have Ss=0, Se=DCTSIZE2-1;
-   * for progressive JPEG, no scan can have this.
-   */
-  scanptr = cinfo->scan_info;
-  if (scanptr->Ss != 0 || scanptr->Se != DCTSIZE2-1) {
-#ifdef C_PROGRESSIVE_SUPPORTED
-    cinfo->progressive_mode = TRUE;
-    last_bitpos_ptr = & last_bitpos[0][0];
-    for (ci = 0; ci < cinfo->num_components; ci++) 
-      for (coefi = 0; coefi < DCTSIZE2; coefi++)
-	*last_bitpos_ptr++ = -1;
-#else
-    ERREXIT(cinfo, JERR_NOT_COMPILED);
-#endif
-  } else {
-    cinfo->progressive_mode = FALSE;
-    for (ci = 0; ci < cinfo->num_components; ci++) 
-      component_sent[ci] = FALSE;
-  }
-
-  for (scanno = 1; scanno <= cinfo->num_scans; scanptr++, scanno++) {
-    /* Validate component indexes */
-    ncomps = scanptr->comps_in_scan;
-    if (ncomps <= 0 || ncomps > MAX_COMPS_IN_SCAN)
-      ERREXIT2(cinfo, JERR_COMPONENT_COUNT, ncomps, MAX_COMPS_IN_SCAN);
-    for (ci = 0; ci < ncomps; ci++) {
-      thisi = scanptr->component_index[ci];
-      if (thisi < 0 || thisi >= cinfo->num_components)
-	ERREXIT1(cinfo, JERR_BAD_SCAN_SCRIPT, scanno);
-      /* Components must appear in SOF order within each scan */
-      if (ci > 0 && thisi <= scanptr->component_index[ci-1])
-	ERREXIT1(cinfo, JERR_BAD_SCAN_SCRIPT, scanno);
-    }
-    /* Validate progression parameters */
-    Ss = scanptr->Ss;
-    Se = scanptr->Se;
-    Ah = scanptr->Ah;
-    Al = scanptr->Al;
-    if (cinfo->progressive_mode) {
-#ifdef C_PROGRESSIVE_SUPPORTED
-      /* The JPEG spec simply gives the ranges 0..13 for Ah and Al, but that
-       * seems wrong: the upper bound ought to depend on data precision.
-       * Perhaps they really meant 0..N+1 for N-bit precision.
-       * Here we allow 0..10 for 8-bit data; Al larger than 10 results in
-       * out-of-range reconstructed DC values during the first DC scan,
-       * which might cause problems for some decoders.
-       */
-#if BITS_IN_JSAMPLE == 8
-#define MAX_AH_AL 10
-#else
-#define MAX_AH_AL 13
-#endif
-      if (Ss < 0 || Ss >= DCTSIZE2 || Se < Ss || Se >= DCTSIZE2 ||
-	  Ah < 0 || Ah > MAX_AH_AL || Al < 0 || Al > MAX_AH_AL)
-	ERREXIT1(cinfo, JERR_BAD_PROG_SCRIPT, scanno);
-      if (Ss == 0) {
-	if (Se != 0)		/* DC and AC together not OK */
-	  ERREXIT1(cinfo, JERR_BAD_PROG_SCRIPT, scanno);
-      } else {
-	if (ncomps != 1)	/* AC scans must be for only one component */
-	  ERREXIT1(cinfo, JERR_BAD_PROG_SCRIPT, scanno);
-      }
-      for (ci = 0; ci < ncomps; ci++) {
-	last_bitpos_ptr = & last_bitpos[scanptr->component_index[ci]][0];
-	if (Ss != 0 && last_bitpos_ptr[0] < 0) /* AC without prior DC scan */
-	  ERREXIT1(cinfo, JERR_BAD_PROG_SCRIPT, scanno);
-	for (coefi = Ss; coefi <= Se; coefi++) {
-	  if (last_bitpos_ptr[coefi] < 0) {
-	    /* first scan of this coefficient */
-	    if (Ah != 0)
-	      ERREXIT1(cinfo, JERR_BAD_PROG_SCRIPT, scanno);
-	  } else {
-	    /* not first scan */
-	    if (Ah != last_bitpos_ptr[coefi] || Al != Ah-1)
-	      ERREXIT1(cinfo, JERR_BAD_PROG_SCRIPT, scanno);
-	  }
-	  last_bitpos_ptr[coefi] = Al;
-	}
-      }
-#endif
-    } else {
-      /* For sequential JPEG, all progression parameters must be these: */
-      if (Ss != 0 || Se != DCTSIZE2-1 || Ah != 0 || Al != 0)
-	ERREXIT1(cinfo, JERR_BAD_PROG_SCRIPT, scanno);
-      /* Make sure components are not sent twice */
-      for (ci = 0; ci < ncomps; ci++) {
-	thisi = scanptr->component_index[ci];
-	if (component_sent[thisi])
-	  ERREXIT1(cinfo, JERR_BAD_SCAN_SCRIPT, scanno);
-	component_sent[thisi] = TRUE;
-      }
-    }
-  }
-
-  /* Now verify that everything got sent. */
-  if (cinfo->progressive_mode) {
-#ifdef C_PROGRESSIVE_SUPPORTED
-    /* For progressive mode, we only check that at least some DC data
-     * got sent for each component; the spec does not require that all bits
-     * of all coefficients be transmitted.  Would it be wiser to enforce
-     * transmission of all coefficient bits??
-     */
-    for (ci = 0; ci < cinfo->num_components; ci++) {
-      if (last_bitpos[ci][0] < 0)
-	ERREXIT(cinfo, JERR_MISSING_DATA);
-    }
-#endif
-  } else {
-    for (ci = 0; ci < cinfo->num_components; ci++) {
-      if (! component_sent[ci])
-	ERREXIT(cinfo, JERR_MISSING_DATA);
-    }
-  }
-}
-
-#endif /* C_MULTISCAN_FILES_SUPPORTED */
-
-
-LOCAL(void)
-select_scan_parameters (j_compress_ptr cinfo)
-/* Set up the scan parameters for the current scan */
-{
-  int ci;
-
-#ifdef C_MULTISCAN_FILES_SUPPORTED
-  if (cinfo->scan_info != NULL) {
-    /* Prepare for current scan --- the script is already validated */
-    my_master_ptr master = (my_master_ptr) cinfo->master;
-    const jpeg_scan_info * scanptr = cinfo->scan_info + master->scan_number;
-
-    cinfo->comps_in_scan = scanptr->comps_in_scan;
-    for (ci = 0; ci < scanptr->comps_in_scan; ci++) {
-      cinfo->cur_comp_info[ci] =
-	&cinfo->comp_info[scanptr->component_index[ci]];
-    }
-    cinfo->Ss = scanptr->Ss;
-    cinfo->Se = scanptr->Se;
-    cinfo->Ah = scanptr->Ah;
-    cinfo->Al = scanptr->Al;
-  }
-  else
-#endif
-  {
-    /* Prepare for single sequential-JPEG scan containing all components */
-    if (cinfo->num_components > MAX_COMPS_IN_SCAN)
-      ERREXIT2(cinfo, JERR_COMPONENT_COUNT, cinfo->num_components,
-	       MAX_COMPS_IN_SCAN);
-    cinfo->comps_in_scan = cinfo->num_components;
-    for (ci = 0; ci < cinfo->num_components; ci++) {
-      cinfo->cur_comp_info[ci] = &cinfo->comp_info[ci];
-    }
-    cinfo->Ss = 0;
-    cinfo->Se = DCTSIZE2-1;
-    cinfo->Ah = 0;
-    cinfo->Al = 0;
-  }
-}
-
-
-LOCAL(void)
-per_scan_setup (j_compress_ptr cinfo)
-/* Do computations that are needed before processing a JPEG scan */
-/* cinfo->comps_in_scan and cinfo->cur_comp_info[] are already set */
-{
-  int ci, mcublks, tmp;
-  jpeg_component_info *compptr;
-  
-  if (cinfo->comps_in_scan == 1) {
-    
-    /* Noninterleaved (single-component) scan */
-    compptr = cinfo->cur_comp_info[0];
-    
-    /* Overall image size in MCUs */
-    cinfo->MCUs_per_row = compptr->width_in_blocks;
-    cinfo->MCU_rows_in_scan = compptr->height_in_blocks;
-    
-    /* For noninterleaved scan, always one block per MCU */
-    compptr->MCU_width = 1;
-    compptr->MCU_height = 1;
-    compptr->MCU_blocks = 1;
-    compptr->MCU_sample_width = DCTSIZE;
-    compptr->last_col_width = 1;
-    /* For noninterleaved scans, it is convenient to define last_row_height
-     * as the number of block rows present in the last iMCU row.
-     */
-    tmp = (int) (compptr->height_in_blocks % compptr->v_samp_factor);
-    if (tmp == 0) tmp = compptr->v_samp_factor;
-    compptr->last_row_height = tmp;
-    
-    /* Prepare array describing MCU composition */
-    cinfo->blocks_in_MCU = 1;
-    cinfo->MCU_membership[0] = 0;
-    
-  } else {
-    
-    /* Interleaved (multi-component) scan */
-    if (cinfo->comps_in_scan <= 0 || cinfo->comps_in_scan > MAX_COMPS_IN_SCAN)
-      ERREXIT2(cinfo, JERR_COMPONENT_COUNT, cinfo->comps_in_scan,
-	       MAX_COMPS_IN_SCAN);
-    
-    /* Overall image size in MCUs */
-    cinfo->MCUs_per_row = (JDIMENSION)
-      jdiv_round_up((long) cinfo->image_width,
-		    (long) (cinfo->max_h_samp_factor*DCTSIZE));
-    cinfo->MCU_rows_in_scan = (JDIMENSION)
-      jdiv_round_up((long) cinfo->image_height,
-		    (long) (cinfo->max_v_samp_factor*DCTSIZE));
-    
-    cinfo->blocks_in_MCU = 0;
-    
-    for (ci = 0; ci < cinfo->comps_in_scan; ci++) {
-      compptr = cinfo->cur_comp_info[ci];
-      /* Sampling factors give # of blocks of component in each MCU */
-      compptr->MCU_width = compptr->h_samp_factor;
-      compptr->MCU_height = compptr->v_samp_factor;
-      compptr->MCU_blocks = compptr->MCU_width * compptr->MCU_height;
-      compptr->MCU_sample_width = compptr->MCU_width * DCTSIZE;
-      /* Figure number of non-dummy blocks in last MCU column & row */
-      tmp = (int) (compptr->width_in_blocks % compptr->MCU_width);
-      if (tmp == 0) tmp = compptr->MCU_width;
-      compptr->last_col_width = tmp;
-      tmp = (int) (compptr->height_in_blocks % compptr->MCU_height);
-      if (tmp == 0) tmp = compptr->MCU_height;
-      compptr->last_row_height = tmp;
-      /* Prepare array describing MCU composition */
-      mcublks = compptr->MCU_blocks;
-      if (cinfo->blocks_in_MCU + mcublks > C_MAX_BLOCKS_IN_MCU)
-	ERREXIT(cinfo, JERR_BAD_MCU_SIZE);
-      while (mcublks-- > 0) {
-	cinfo->MCU_membership[cinfo->blocks_in_MCU++] = ci;
-      }
-    }
-    
-  }
-
-  /* Convert restart specified in rows to actual MCU count. */
-  /* Note that count must fit in 16 bits, so we provide limiting. */
-  if (cinfo->restart_in_rows > 0) {
-    long nominal = (long) cinfo->restart_in_rows * (long) cinfo->MCUs_per_row;
-    cinfo->restart_interval = (unsigned int) MIN(nominal, 65535L);
-  }
-}
-
-
-/*
- * Per-pass setup.
- * This is called at the beginning of each pass.  We determine which modules
- * will be active during this pass and give them appropriate start_pass calls.
- * We also set is_last_pass to indicate whether any more passes will be
- * required.
- */
-
-METHODDEF(void)
-prepare_for_pass (j_compress_ptr cinfo)
-{
-  my_master_ptr master = (my_master_ptr) cinfo->master;
-
-  switch (master->pass_type) {
-  case main_pass:
-    /* Initial pass: will collect input data, and do either Huffman
-     * optimization or data output for the first scan.
-     */
-    select_scan_parameters(cinfo);
-    per_scan_setup(cinfo);
-    if (! cinfo->raw_data_in) {
-      (*cinfo->cconvert->start_pass) (cinfo);
-      (*cinfo->downsample->start_pass) (cinfo);
-      (*cinfo->prep->start_pass) (cinfo, JBUF_PASS_THRU);
-    }
-    (*cinfo->fdct->start_pass) (cinfo);
-    (*cinfo->entropy->start_pass) (cinfo, cinfo->optimize_coding);
-    (*cinfo->coef->start_pass) (cinfo,
-				(master->total_passes > 1 ?
-				 JBUF_SAVE_AND_PASS : JBUF_PASS_THRU));
-    (*cinfo->main->start_pass) (cinfo, JBUF_PASS_THRU);
-    if (cinfo->optimize_coding) {
-      /* No immediate data output; postpone writing frame/scan headers */
-      master->pub.call_pass_startup = FALSE;
-    } else {
-      /* Will write frame/scan headers at first jpeg_write_scanlines call */
-      master->pub.call_pass_startup = TRUE;
-    }
-    break;
-#ifdef ENTROPY_OPT_SUPPORTED
-  case huff_opt_pass:
-    /* Do Huffman optimization for a scan after the first one. */
-    select_scan_parameters(cinfo);
-    per_scan_setup(cinfo);
-    if (cinfo->Ss != 0 || cinfo->Ah == 0 || cinfo->arith_code) {
-      (*cinfo->entropy->start_pass) (cinfo, TRUE);
-      (*cinfo->coef->start_pass) (cinfo, JBUF_CRANK_DEST);
-      master->pub.call_pass_startup = FALSE;
-      break;
-    }
-    /* Special case: Huffman DC refinement scans need no Huffman table
-     * and therefore we can skip the optimization pass for them.
-     */
-    master->pass_type = output_pass;
-    master->pass_number++;
-    /*FALLTHROUGH*/
-#endif
-  case output_pass:
-    /* Do a data-output pass. */
-    /* We need not repeat per-scan setup if prior optimization pass did it. */
-    if (! cinfo->optimize_coding) {
-      select_scan_parameters(cinfo);
-      per_scan_setup(cinfo);
-    }
-    (*cinfo->entropy->start_pass) (cinfo, FALSE);
-    (*cinfo->coef->start_pass) (cinfo, JBUF_CRANK_DEST);
-    /* We emit frame/scan headers now */
-    if (master->scan_number == 0)
-      (*cinfo->marker->write_frame_header) (cinfo);
-    (*cinfo->marker->write_scan_header) (cinfo);
-    master->pub.call_pass_startup = FALSE;
-    break;
-  default:
-    ERREXIT(cinfo, JERR_NOT_COMPILED);
-  }
-
-  master->pub.is_last_pass = (master->pass_number == master->total_passes-1);
-
-  /* Set up progress monitor's pass info if present */
-  if (cinfo->progress != NULL) {
-    cinfo->progress->completed_passes = master->pass_number;
-    cinfo->progress->total_passes = master->total_passes;
-  }
-}
-
-
-/*
- * Special start-of-pass hook.
- * This is called by jpeg_write_scanlines if call_pass_startup is TRUE.
- * In single-pass processing, we need this hook because we don't want to
- * write frame/scan headers during jpeg_start_compress; we want to let the
- * application write COM markers etc. between jpeg_start_compress and the
- * jpeg_write_scanlines loop.
- * In multi-pass processing, this routine is not used.
- */
-
-METHODDEF(void)
-pass_startup (j_compress_ptr cinfo)
-{
-  cinfo->master->call_pass_startup = FALSE; /* reset flag so call only once */
-
-  (*cinfo->marker->write_frame_header) (cinfo);
-  (*cinfo->marker->write_scan_header) (cinfo);
-}
-
-
-/*
- * Finish up at end of pass.
- */
-
-METHODDEF(void)
-finish_pass_master (j_compress_ptr cinfo)
-{
-  my_master_ptr master = (my_master_ptr) cinfo->master;
-
-  /* The entropy coder always needs an end-of-pass call,
-   * either to analyze statistics or to flush its output buffer.
-   */
-  (*cinfo->entropy->finish_pass) (cinfo);
-
-  /* Update state for next pass */
-  switch (master->pass_type) {
-  case main_pass:
-    /* next pass is either output of scan 0 (after optimization)
-     * or output of scan 1 (if no optimization).
-     */
-    master->pass_type = output_pass;
-    if (! cinfo->optimize_coding)
-      master->scan_number++;
-    break;
-  case huff_opt_pass:
-    /* next pass is always output of current scan */
-    master->pass_type = output_pass;
-    break;
-  case output_pass:
-    /* next pass is either optimization or output of next scan */
-    if (cinfo->optimize_coding)
-      master->pass_type = huff_opt_pass;
-    master->scan_number++;
-    break;
-  }
-
-  master->pass_number++;
-}
-
-
-/*
- * Initialize master compression control.
- */
-
-GLOBAL(void)
-jinit_c_master_control (j_compress_ptr cinfo, boolean transcode_only)
-{
-  my_master_ptr master;
-
-  master = (my_master_ptr)
-      (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
-				  SIZEOF(my_comp_master));
-  cinfo->master = (struct jpeg_comp_master *) master;
-  master->pub.prepare_for_pass = prepare_for_pass;
-  master->pub.pass_startup = pass_startup;
-  master->pub.finish_pass = finish_pass_master;
-  master->pub.is_last_pass = FALSE;
-
-  /* Validate parameters, determine derived values */
-  initial_setup(cinfo);
-
-  if (cinfo->scan_info != NULL) {
-#ifdef C_MULTISCAN_FILES_SUPPORTED
-    validate_script(cinfo);
-#else
-    ERREXIT(cinfo, JERR_NOT_COMPILED);
-#endif
-  } else {
-    cinfo->progressive_mode = FALSE;
-    cinfo->num_scans = 1;
-  }
-
-  if (cinfo->progressive_mode)	/*  TEMPORARY HACK ??? */
-    cinfo->optimize_coding = TRUE; /* assume default tables no good for progressive mode */
-
-  /* Initialize my private state */
-  if (transcode_only) {
-    /* no main pass in transcoding */
-    if (cinfo->optimize_coding)
-      master->pass_type = huff_opt_pass;
-    else
-      master->pass_type = output_pass;
-  } else {
-    /* for normal compression, first pass is always this type: */
-    master->pass_type = main_pass;
-  }
-  master->scan_number = 0;
-  master->pass_number = 0;
-  if (cinfo->optimize_coding)
-    master->total_passes = cinfo->num_scans * 2;
-  else
-    master->total_passes = cinfo->num_scans;
-}
diff --git a/src/libjpeg/jcomapi.c b/src/libjpeg/jcomapi.c
deleted file mode 100644
index 1b1a340..0000000
--- a/src/libjpeg/jcomapi.c
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * jcomapi.c
- *
- * Copyright (C) 1994-1997, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains application interface routines that are used for both
- * compression and decompression.
- */
-
-#define JPEG_INTERNALS
-#include "jinclude.h"
-#include "jpeglib.h"
-
-
-/*
- * Abort processing of a JPEG compression or decompression operation,
- * but don't destroy the object itself.
- *
- * For this, we merely clean up all the nonpermanent memory pools.
- * Note that temp files (virtual arrays) are not allowed to belong to
- * the permanent pool, so we will be able to close all temp files here.
- * Closing a data source or destination, if necessary, is the application's
- * responsibility.
- */
-
-GLOBAL(void)
-jpeg_abort (j_common_ptr cinfo)
-{
-  int pool;
-
-  /* Do nothing if called on a not-initialized or destroyed JPEG object. */
-  if (cinfo->mem == NULL)
-    return;
-
-  /* Releasing pools in reverse order might help avoid fragmentation
-   * with some (brain-damaged) malloc libraries.
-   */
-  for (pool = JPOOL_NUMPOOLS-1; pool > JPOOL_PERMANENT; pool--) {
-    (*cinfo->mem->free_pool) (cinfo, pool);
-  }
-
-  /* Reset overall state for possible reuse of object */
-  if (cinfo->is_decompressor) {
-    cinfo->global_state = DSTATE_START;
-    /* Try to keep application from accessing now-deleted marker list.
-     * A bit kludgy to do it here, but this is the most central place.
-     */
-    ((j_decompress_ptr) cinfo)->marker_list = NULL;
-  } else {
-    cinfo->global_state = CSTATE_START;
-  }
-}
-
-
-/*
- * Destruction of a JPEG object.
- *
- * Everything gets deallocated except the master jpeg_compress_struct itself
- * and the error manager struct.  Both of these are supplied by the application
- * and must be freed, if necessary, by the application.  (Often they are on
- * the stack and so don't need to be freed anyway.)
- * Closing a data source or destination, if necessary, is the application's
- * responsibility.
- */
-
-GLOBAL(void)
-jpeg_destroy (j_common_ptr cinfo)
-{
-  /* We need only tell the memory manager to release everything. */
-  /* NB: mem pointer is NULL if memory mgr failed to initialize. */
-  if (cinfo->mem != NULL)
-    (*cinfo->mem->self_destruct) (cinfo);
-  cinfo->mem = NULL;		/* be safe if jpeg_destroy is called twice */
-  cinfo->global_state = 0;	/* mark it destroyed */
-}
-
-
-/*
- * Convenience routines for allocating quantization and Huffman tables.
- * (Would jutils.c be a more reasonable place to put these?)
- */
-
-GLOBAL(JQUANT_TBL *)
-jpeg_alloc_quant_table (j_common_ptr cinfo)
-{
-  JQUANT_TBL *tbl;
-
-  tbl = (JQUANT_TBL *)
-    (*cinfo->mem->alloc_small) (cinfo, JPOOL_PERMANENT, SIZEOF(JQUANT_TBL));
-  tbl->sent_table = FALSE;	/* make sure this is false in any new table */
-  return tbl;
-}
-
-
-GLOBAL(JHUFF_TBL *)
-jpeg_alloc_huff_table (j_common_ptr cinfo)
-{
-  JHUFF_TBL *tbl;
-
-  tbl = (JHUFF_TBL *)
-    (*cinfo->mem->alloc_small) (cinfo, JPOOL_PERMANENT, SIZEOF(JHUFF_TBL));
-  tbl->sent_table = FALSE;	/* make sure this is false in any new table */
-  return tbl;
-}
diff --git a/src/libjpeg/jconfig.h b/src/libjpeg/jconfig.h
deleted file mode 100644
index 2f4da14..0000000
--- a/src/libjpeg/jconfig.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/* jconfig.vc --- jconfig.h for Microsoft Visual C++ on Windows 95 or NT. */
-/* see jconfig.doc for explanations */
-
-#define HAVE_PROTOTYPES
-#define HAVE_UNSIGNED_CHAR
-#define HAVE_UNSIGNED_SHORT
-/* #define void char */
-/* #define const */
-#undef CHAR_IS_UNSIGNED
-#define HAVE_STDDEF_H
-#define HAVE_STDLIB_H
-#undef NEED_BSD_STRINGS
-#undef NEED_SYS_TYPES_H
-#undef NEED_FAR_POINTERS	/* we presume a 32-bit flat memory model */
-#undef NEED_SHORT_EXTERNAL_NAMES
-#undef INCOMPLETE_TYPES_BROKEN
-
-/* Define "boolean" as unsigned char, not int, per Windows custom */
-#ifndef __RPCNDR_H__		/* don't conflict if rpcndr.h already read */
-typedef unsigned char boolean;
-#endif
-#define HAVE_BOOLEAN		/* prevent jmorecfg.h from redefining it */
-
-
-#ifdef JPEG_INTERNALS
-
-#undef RIGHT_SHIFT_IS_UNSIGNED
-
-#endif /* JPEG_INTERNALS */
-
-#ifdef JPEG_CJPEG_DJPEG
-
-#define BMP_SUPPORTED		/* BMP image file format */
-#define GIF_SUPPORTED		/* GIF image file format */
-#define PPM_SUPPORTED		/* PBMPLUS PPM/PGM image file format */
-#undef RLE_SUPPORTED		/* Utah RLE image file format */
-#define TARGA_SUPPORTED		/* Targa image file format */
-
-#define TWO_FILE_COMMANDLINE	/* optional */
-#define USE_SETMODE		/* Microsoft has setmode() */
-#undef NEED_SIGNAL_CATCHER
-#undef DONT_USE_B_MODE
-#undef PROGRESS_REPORT		/* optional */
-
-#endif /* JPEG_CJPEG_DJPEG */
diff --git a/src/libjpeg/jcparam.c b/src/libjpeg/jcparam.c
deleted file mode 100644
index bbd175c..0000000
--- a/src/libjpeg/jcparam.c
+++ /dev/null
@@ -1,610 +0,0 @@
-/*
- * jcparam.c
- *
- * Copyright (C) 1991-1998, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains optional default-setting code for the JPEG compressor.
- * Applications do not have to use this file, but those that don't use it
- * must know a lot more about the innards of the JPEG code.
- */
-
-#define JPEG_INTERNALS
-#include "jinclude.h"
-#include "jpeglib.h"
-
-
-/*
- * Quantization table setup routines
- */
-
-GLOBAL(void)
-jpeg_add_quant_table (j_compress_ptr cinfo, int which_tbl,
-		      const unsigned int *basic_table,
-		      int scale_factor, boolean force_baseline)
-/* Define a quantization table equal to the basic_table times
- * a scale factor (given as a percentage).
- * If force_baseline is TRUE, the computed quantization table entries
- * are limited to 1..255 for JPEG baseline compatibility.
- */
-{
-  JQUANT_TBL ** qtblptr;
-  int i;
-  long temp;
-
-  /* Safety check to ensure start_compress not called yet. */
-  if (cinfo->global_state != CSTATE_START)
-    ERREXIT1(cinfo, JERR_BAD_STATE, cinfo->global_state);
-
-  if (which_tbl < 0 || which_tbl >= NUM_QUANT_TBLS)
-    ERREXIT1(cinfo, JERR_DQT_INDEX, which_tbl);
-
-  qtblptr = & cinfo->quant_tbl_ptrs[which_tbl];
-
-  if (*qtblptr == NULL)
-    *qtblptr = jpeg_alloc_quant_table((j_common_ptr) cinfo);
-
-  for (i = 0; i < DCTSIZE2; i++) {
-    temp = ((long) basic_table[i] * scale_factor + 50L) / 100L;
-    /* limit the values to the valid range */
-    if (temp <= 0L) temp = 1L;
-    if (temp > 32767L) temp = 32767L; /* max quantizer needed for 12 bits */
-    if (force_baseline && temp > 255L)
-      temp = 255L;		/* limit to baseline range if requested */
-    (*qtblptr)->quantval[i] = (UINT16) temp;
-  }
-
-  /* Initialize sent_table FALSE so table will be written to JPEG file. */
-  (*qtblptr)->sent_table = FALSE;
-}
-
-
-GLOBAL(void)
-jpeg_set_linear_quality (j_compress_ptr cinfo, int scale_factor,
-			 boolean force_baseline)
-/* Set or change the 'quality' (quantization) setting, using default tables
- * and a straight percentage-scaling quality scale.  In most cases it's better
- * to use jpeg_set_quality (below); this entry point is provided for
- * applications that insist on a linear percentage scaling.
- */
-{
-  /* These are the sample quantization tables given in JPEG spec section K.1.
-   * The spec says that the values given produce "good" quality, and
-   * when divided by 2, "very good" quality.
-   */
-  static const unsigned int std_luminance_quant_tbl[DCTSIZE2] = {
-    16,  11,  10,  16,  24,  40,  51,  61,
-    12,  12,  14,  19,  26,  58,  60,  55,
-    14,  13,  16,  24,  40,  57,  69,  56,
-    14,  17,  22,  29,  51,  87,  80,  62,
-    18,  22,  37,  56,  68, 109, 103,  77,
-    24,  35,  55,  64,  81, 104, 113,  92,
-    49,  64,  78,  87, 103, 121, 120, 101,
-    72,  92,  95,  98, 112, 100, 103,  99
-  };
-  static const unsigned int std_chrominance_quant_tbl[DCTSIZE2] = {
-    17,  18,  24,  47,  99,  99,  99,  99,
-    18,  21,  26,  66,  99,  99,  99,  99,
-    24,  26,  56,  99,  99,  99,  99,  99,
-    47,  66,  99,  99,  99,  99,  99,  99,
-    99,  99,  99,  99,  99,  99,  99,  99,
-    99,  99,  99,  99,  99,  99,  99,  99,
-    99,  99,  99,  99,  99,  99,  99,  99,
-    99,  99,  99,  99,  99,  99,  99,  99
-  };
-
-  /* Set up two quantization tables using the specified scaling */
-  jpeg_add_quant_table(cinfo, 0, std_luminance_quant_tbl,
-		       scale_factor, force_baseline);
-  jpeg_add_quant_table(cinfo, 1, std_chrominance_quant_tbl,
-		       scale_factor, force_baseline);
-}
-
-
-GLOBAL(int)
-jpeg_quality_scaling (int quality)
-/* Convert a user-specified quality rating to a percentage scaling factor
- * for an underlying quantization table, using our recommended scaling curve.
- * The input 'quality' factor should be 0 (terrible) to 100 (very good).
- */
-{
-  /* Safety limit on quality factor.  Convert 0 to 1 to avoid zero divide. */
-  if (quality <= 0) quality = 1;
-  if (quality > 100) quality = 100;
-
-  /* The basic table is used as-is (scaling 100) for a quality of 50.
-   * Qualities 50..100 are converted to scaling percentage 200 - 2*Q;
-   * note that at Q=100 the scaling is 0, which will cause jpeg_add_quant_table
-   * to make all the table entries 1 (hence, minimum quantization loss).
-   * Qualities 1..50 are converted to scaling percentage 5000/Q.
-   */
-  if (quality < 50)
-    quality = 5000 / quality;
-  else
-    quality = 200 - quality*2;
-
-  return quality;
-}
-
-
-GLOBAL(void)
-jpeg_set_quality (j_compress_ptr cinfo, int quality, boolean force_baseline)
-/* Set or change the 'quality' (quantization) setting, using default tables.
- * This is the standard quality-adjusting entry point for typical user
- * interfaces; only those who want detailed control over quantization tables
- * would use the preceding three routines directly.
- */
-{
-  /* Convert user 0-100 rating to percentage scaling */
-  quality = jpeg_quality_scaling(quality);
-
-  /* Set up standard quality tables */
-  jpeg_set_linear_quality(cinfo, quality, force_baseline);
-}
-
-
-/*
- * Huffman table setup routines
- */
-
-LOCAL(void)
-add_huff_table (j_compress_ptr cinfo,
-		JHUFF_TBL **htblptr, const UINT8 *bits, const UINT8 *val)
-/* Define a Huffman table */
-{
-  int nsymbols, len;
-
-  if (*htblptr == NULL)
-    *htblptr = jpeg_alloc_huff_table((j_common_ptr) cinfo);
-
-  /* Copy the number-of-symbols-of-each-code-length counts */
-  MEMCOPY((*htblptr)->bits, bits, SIZEOF((*htblptr)->bits));
-
-  /* Validate the counts.  We do this here mainly so we can copy the right
-   * number of symbols from the val[] array, without risking marching off
-   * the end of memory.  jchuff.c will do a more thorough test later.
-   */
-  nsymbols = 0;
-  for (len = 1; len <= 16; len++)
-    nsymbols += bits[len];
-  if (nsymbols < 1 || nsymbols > 256)
-    ERREXIT(cinfo, JERR_BAD_HUFF_TABLE);
-
-  MEMCOPY((*htblptr)->huffval, val, nsymbols * SIZEOF(UINT8));
-
-  /* Initialize sent_table FALSE so table will be written to JPEG file. */
-  (*htblptr)->sent_table = FALSE;
-}
-
-
-LOCAL(void)
-std_huff_tables (j_compress_ptr cinfo)
-/* Set up the standard Huffman tables (cf. JPEG standard section K.3) */
-/* IMPORTANT: these are only valid for 8-bit data precision! */
-{
-  static const UINT8 bits_dc_luminance[17] =
-    { /* 0-base */ 0, 0, 1, 5, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0 };
-  static const UINT8 val_dc_luminance[] =
-    { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 };
-  
-  static const UINT8 bits_dc_chrominance[17] =
-    { /* 0-base */ 0, 0, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0 };
-  static const UINT8 val_dc_chrominance[] =
-    { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 };
-  
-  static const UINT8 bits_ac_luminance[17] =
-    { /* 0-base */ 0, 0, 2, 1, 3, 3, 2, 4, 3, 5, 5, 4, 4, 0, 0, 1, 0x7d };
-  static const UINT8 val_ac_luminance[] =
-    { 0x01, 0x02, 0x03, 0x00, 0x04, 0x11, 0x05, 0x12,
-      0x21, 0x31, 0x41, 0x06, 0x13, 0x51, 0x61, 0x07,
-      0x22, 0x71, 0x14, 0x32, 0x81, 0x91, 0xa1, 0x08,
-      0x23, 0x42, 0xb1, 0xc1, 0x15, 0x52, 0xd1, 0xf0,
-      0x24, 0x33, 0x62, 0x72, 0x82, 0x09, 0x0a, 0x16,
-      0x17, 0x18, 0x19, 0x1a, 0x25, 0x26, 0x27, 0x28,
-      0x29, 0x2a, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39,
-      0x3a, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49,
-      0x4a, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59,
-      0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69,
-      0x6a, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79,
-      0x7a, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89,
-      0x8a, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98,
-      0x99, 0x9a, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
-      0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6,
-      0xb7, 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5,
-      0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xd2, 0xd3, 0xd4,
-      0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xe1, 0xe2,
-      0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea,
-      0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8,
-      0xf9, 0xfa };
-  
-  static const UINT8 bits_ac_chrominance[17] =
-    { /* 0-base */ 0, 0, 2, 1, 2, 4, 4, 3, 4, 7, 5, 4, 4, 0, 1, 2, 0x77 };
-  static const UINT8 val_ac_chrominance[] =
-    { 0x00, 0x01, 0x02, 0x03, 0x11, 0x04, 0x05, 0x21,
-      0x31, 0x06, 0x12, 0x41, 0x51, 0x07, 0x61, 0x71,
-      0x13, 0x22, 0x32, 0x81, 0x08, 0x14, 0x42, 0x91,
-      0xa1, 0xb1, 0xc1, 0x09, 0x23, 0x33, 0x52, 0xf0,
-      0x15, 0x62, 0x72, 0xd1, 0x0a, 0x16, 0x24, 0x34,
-      0xe1, 0x25, 0xf1, 0x17, 0x18, 0x19, 0x1a, 0x26,
-      0x27, 0x28, 0x29, 0x2a, 0x35, 0x36, 0x37, 0x38,
-      0x39, 0x3a, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48,
-      0x49, 0x4a, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58,
-      0x59, 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68,
-      0x69, 0x6a, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
-      0x79, 0x7a, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
-      0x88, 0x89, 0x8a, 0x92, 0x93, 0x94, 0x95, 0x96,
-      0x97, 0x98, 0x99, 0x9a, 0xa2, 0xa3, 0xa4, 0xa5,
-      0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4,
-      0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xc2, 0xc3,
-      0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xd2,
-      0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda,
-      0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9,
-      0xea, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8,
-      0xf9, 0xfa };
-  
-  add_huff_table(cinfo, &cinfo->dc_huff_tbl_ptrs[0],
-		 bits_dc_luminance, val_dc_luminance);
-  add_huff_table(cinfo, &cinfo->ac_huff_tbl_ptrs[0],
-		 bits_ac_luminance, val_ac_luminance);
-  add_huff_table(cinfo, &cinfo->dc_huff_tbl_ptrs[1],
-		 bits_dc_chrominance, val_dc_chrominance);
-  add_huff_table(cinfo, &cinfo->ac_huff_tbl_ptrs[1],
-		 bits_ac_chrominance, val_ac_chrominance);
-}
-
-
-/*
- * Default parameter setup for compression.
- *
- * Applications that don't choose to use this routine must do their
- * own setup of all these parameters.  Alternately, you can call this
- * to establish defaults and then alter parameters selectively.  This
- * is the recommended approach since, if we add any new parameters,
- * your code will still work (they'll be set to reasonable defaults).
- */
-
-GLOBAL(void)
-jpeg_set_defaults (j_compress_ptr cinfo)
-{
-  int i;
-
-  /* Safety check to ensure start_compress not called yet. */
-  if (cinfo->global_state != CSTATE_START)
-    ERREXIT1(cinfo, JERR_BAD_STATE, cinfo->global_state);
-
-  /* Allocate comp_info array large enough for maximum component count.
-   * Array is made permanent in case application wants to compress
-   * multiple images at same param settings.
-   */
-  if (cinfo->comp_info == NULL)
-    cinfo->comp_info = (jpeg_component_info *)
-      (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_PERMANENT,
-				  MAX_COMPONENTS * SIZEOF(jpeg_component_info));
-
-  /* Initialize everything not dependent on the color space */
-
-  cinfo->data_precision = BITS_IN_JSAMPLE;
-  /* Set up two quantization tables using default quality of 75 */
-  jpeg_set_quality(cinfo, 75, TRUE);
-  /* Set up two Huffman tables */
-  std_huff_tables(cinfo);
-
-  /* Initialize default arithmetic coding conditioning */
-  for (i = 0; i < NUM_ARITH_TBLS; i++) {
-    cinfo->arith_dc_L[i] = 0;
-    cinfo->arith_dc_U[i] = 1;
-    cinfo->arith_ac_K[i] = 5;
-  }
-
-  /* Default is no multiple-scan output */
-  cinfo->scan_info = NULL;
-  cinfo->num_scans = 0;
-
-  /* Expect normal source image, not raw downsampled data */
-  cinfo->raw_data_in = FALSE;
-
-  /* Use Huffman coding, not arithmetic coding, by default */
-  cinfo->arith_code = FALSE;
-
-  /* By default, don't do extra passes to optimize entropy coding */
-  cinfo->optimize_coding = FALSE;
-  /* The standard Huffman tables are only valid for 8-bit data precision.
-   * If the precision is higher, force optimization on so that usable
-   * tables will be computed.  This test can be removed if default tables
-   * are supplied that are valid for the desired precision.
-   */
-  if (cinfo->data_precision > 8)
-    cinfo->optimize_coding = TRUE;
-
-  /* By default, use the simpler non-cosited sampling alignment */
-  cinfo->CCIR601_sampling = FALSE;
-
-  /* No input smoothing */
-  cinfo->smoothing_factor = 0;
-
-  /* DCT algorithm preference */
-  cinfo->dct_method = JDCT_DEFAULT;
-
-  /* No restart markers */
-  cinfo->restart_interval = 0;
-  cinfo->restart_in_rows = 0;
-
-  /* Fill in default JFIF marker parameters.  Note that whether the marker
-   * will actually be written is determined by jpeg_set_colorspace.
-   *
-   * By default, the library emits JFIF version code 1.01.
-   * An application that wants to emit JFIF 1.02 extension markers should set
-   * JFIF_minor_version to 2.  We could probably get away with just defaulting
-   * to 1.02, but there may still be some decoders in use that will complain
-   * about that; saying 1.01 should minimize compatibility problems.
-   */
-  cinfo->JFIF_major_version = 1; /* Default JFIF version = 1.01 */
-  cinfo->JFIF_minor_version = 1;
-  cinfo->density_unit = 0;	/* Pixel size is unknown by default */
-  cinfo->X_density = 1;		/* Pixel aspect ratio is square by default */
-  cinfo->Y_density = 1;
-
-  /* Choose JPEG colorspace based on input space, set defaults accordingly */
-
-  jpeg_default_colorspace(cinfo);
-}
-
-
-/*
- * Select an appropriate JPEG colorspace for in_color_space.
- */
-
-GLOBAL(void)
-jpeg_default_colorspace (j_compress_ptr cinfo)
-{
-  switch (cinfo->in_color_space) {
-  case JCS_GRAYSCALE:
-    jpeg_set_colorspace(cinfo, JCS_GRAYSCALE);
-    break;
-  case JCS_RGB:
-    jpeg_set_colorspace(cinfo, JCS_YCbCr);
-    break;
-  case JCS_YCbCr:
-    jpeg_set_colorspace(cinfo, JCS_YCbCr);
-    break;
-  case JCS_CMYK:
-    jpeg_set_colorspace(cinfo, JCS_CMYK); /* By default, no translation */
-    break;
-  case JCS_YCCK:
-    jpeg_set_colorspace(cinfo, JCS_YCCK);
-    break;
-  case JCS_UNKNOWN:
-    jpeg_set_colorspace(cinfo, JCS_UNKNOWN);
-    break;
-  default:
-    ERREXIT(cinfo, JERR_BAD_IN_COLORSPACE);
-  }
-}
-
-
-/*
- * Set the JPEG colorspace, and choose colorspace-dependent default values.
- */
-
-GLOBAL(void)
-jpeg_set_colorspace (j_compress_ptr cinfo, J_COLOR_SPACE colorspace)
-{
-  jpeg_component_info * compptr;
-  int ci;
-
-#define SET_COMP(index,id,hsamp,vsamp,quant,dctbl,actbl)  \
-  (compptr = &cinfo->comp_info[index], \
-   compptr->component_id = (id), \
-   compptr->h_samp_factor = (hsamp), \
-   compptr->v_samp_factor = (vsamp), \
-   compptr->quant_tbl_no = (quant), \
-   compptr->dc_tbl_no = (dctbl), \
-   compptr->ac_tbl_no = (actbl) )
-
-  /* Safety check to ensure start_compress not called yet. */
-  if (cinfo->global_state != CSTATE_START)
-    ERREXIT1(cinfo, JERR_BAD_STATE, cinfo->global_state);
-
-  /* For all colorspaces, we use Q and Huff tables 0 for luminance components,
-   * tables 1 for chrominance components.
-   */
-
-  cinfo->jpeg_color_space = colorspace;
-
-  cinfo->write_JFIF_header = FALSE; /* No marker for non-JFIF colorspaces */
-  cinfo->write_Adobe_marker = FALSE; /* write no Adobe marker by default */
-
-  switch (colorspace) {
-  case JCS_GRAYSCALE:
-    cinfo->write_JFIF_header = TRUE; /* Write a JFIF marker */
-    cinfo->num_components = 1;
-    /* JFIF specifies component ID 1 */
-    SET_COMP(0, 1, 1,1, 0, 0,0);
-    break;
-  case JCS_RGB:
-    cinfo->write_Adobe_marker = TRUE; /* write Adobe marker to flag RGB */
-    cinfo->num_components = 3;
-    SET_COMP(0, 0x52 /* 'R' */, 1,1, 0, 0,0);
-    SET_COMP(1, 0x47 /* 'G' */, 1,1, 0, 0,0);
-    SET_COMP(2, 0x42 /* 'B' */, 1,1, 0, 0,0);
-    break;
-  case JCS_YCbCr:
-    cinfo->write_JFIF_header = TRUE; /* Write a JFIF marker */
-    cinfo->num_components = 3;
-    /* JFIF specifies component IDs 1,2,3 */
-    /* We default to 2x2 subsamples of chrominance */
-    SET_COMP(0, 1, 2,2, 0, 0,0);
-    SET_COMP(1, 2, 1,1, 1, 1,1);
-    SET_COMP(2, 3, 1,1, 1, 1,1);
-    break;
-  case JCS_CMYK:
-    cinfo->write_Adobe_marker = TRUE; /* write Adobe marker to flag CMYK */
-    cinfo->num_components = 4;
-    SET_COMP(0, 0x43 /* 'C' */, 1,1, 0, 0,0);
-    SET_COMP(1, 0x4D /* 'M' */, 1,1, 0, 0,0);
-    SET_COMP(2, 0x59 /* 'Y' */, 1,1, 0, 0,0);
-    SET_COMP(3, 0x4B /* 'K' */, 1,1, 0, 0,0);
-    break;
-  case JCS_YCCK:
-    cinfo->write_Adobe_marker = TRUE; /* write Adobe marker to flag YCCK */
-    cinfo->num_components = 4;
-    SET_COMP(0, 1, 2,2, 0, 0,0);
-    SET_COMP(1, 2, 1,1, 1, 1,1);
-    SET_COMP(2, 3, 1,1, 1, 1,1);
-    SET_COMP(3, 4, 2,2, 0, 0,0);
-    break;
-  case JCS_UNKNOWN:
-    cinfo->num_components = cinfo->input_components;
-    if (cinfo->num_components < 1 || cinfo->num_components > MAX_COMPONENTS)
-      ERREXIT2(cinfo, JERR_COMPONENT_COUNT, cinfo->num_components,
-	       MAX_COMPONENTS);
-    for (ci = 0; ci < cinfo->num_components; ci++) {
-      SET_COMP(ci, ci, 1,1, 0, 0,0);
-    }
-    break;
-  default:
-    ERREXIT(cinfo, JERR_BAD_J_COLORSPACE);
-  }
-}
-
-
-#ifdef C_PROGRESSIVE_SUPPORTED
-
-LOCAL(jpeg_scan_info *)
-fill_a_scan (jpeg_scan_info * scanptr, int ci,
-	     int Ss, int Se, int Ah, int Al)
-/* Support routine: generate one scan for specified component */
-{
-  scanptr->comps_in_scan = 1;
-  scanptr->component_index[0] = ci;
-  scanptr->Ss = Ss;
-  scanptr->Se = Se;
-  scanptr->Ah = Ah;
-  scanptr->Al = Al;
-  scanptr++;
-  return scanptr;
-}
-
-LOCAL(jpeg_scan_info *)
-fill_scans (jpeg_scan_info * scanptr, int ncomps,
-	    int Ss, int Se, int Ah, int Al)
-/* Support routine: generate one scan for each component */
-{
-  int ci;
-
-  for (ci = 0; ci < ncomps; ci++) {
-    scanptr->comps_in_scan = 1;
-    scanptr->component_index[0] = ci;
-    scanptr->Ss = Ss;
-    scanptr->Se = Se;
-    scanptr->Ah = Ah;
-    scanptr->Al = Al;
-    scanptr++;
-  }
-  return scanptr;
-}
-
-LOCAL(jpeg_scan_info *)
-fill_dc_scans (jpeg_scan_info * scanptr, int ncomps, int Ah, int Al)
-/* Support routine: generate interleaved DC scan if possible, else N scans */
-{
-  int ci;
-
-  if (ncomps <= MAX_COMPS_IN_SCAN) {
-    /* Single interleaved DC scan */
-    scanptr->comps_in_scan = ncomps;
-    for (ci = 0; ci < ncomps; ci++)
-      scanptr->component_index[ci] = ci;
-    scanptr->Ss = scanptr->Se = 0;
-    scanptr->Ah = Ah;
-    scanptr->Al = Al;
-    scanptr++;
-  } else {
-    /* Noninterleaved DC scan for each component */
-    scanptr = fill_scans(scanptr, ncomps, 0, 0, Ah, Al);
-  }
-  return scanptr;
-}
-
-
-/*
- * Create a recommended progressive-JPEG script.
- * cinfo->num_components and cinfo->jpeg_color_space must be correct.
- */
-
-GLOBAL(void)
-jpeg_simple_progression (j_compress_ptr cinfo)
-{
-  int ncomps = cinfo->num_components;
-  int nscans;
-  jpeg_scan_info * scanptr;
-
-  /* Safety check to ensure start_compress not called yet. */
-  if (cinfo->global_state != CSTATE_START)
-    ERREXIT1(cinfo, JERR_BAD_STATE, cinfo->global_state);
-
-  /* Figure space needed for script.  Calculation must match code below! */
-  if (ncomps == 3 && cinfo->jpeg_color_space == JCS_YCbCr) {
-    /* Custom script for YCbCr color images. */
-    nscans = 10;
-  } else {
-    /* All-purpose script for other color spaces. */
-    if (ncomps > MAX_COMPS_IN_SCAN)
-      nscans = 6 * ncomps;	/* 2 DC + 4 AC scans per component */
-    else
-      nscans = 2 + 4 * ncomps;	/* 2 DC scans; 4 AC scans per component */
-  }
-
-  /* Allocate space for script.
-   * We need to put it in the permanent pool in case the application performs
-   * multiple compressions without changing the settings.  To avoid a memory
-   * leak if jpeg_simple_progression is called repeatedly for the same JPEG
-   * object, we try to re-use previously allocated space, and we allocate
-   * enough space to handle YCbCr even if initially asked for grayscale.
-   */
-  if (cinfo->script_space == NULL || cinfo->script_space_size < nscans) {
-    cinfo->script_space_size = MAX(nscans, 10);
-    cinfo->script_space = (jpeg_scan_info *)
-      (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_PERMANENT,
-			cinfo->script_space_size * SIZEOF(jpeg_scan_info));
-  }
-  scanptr = cinfo->script_space;
-  cinfo->scan_info = scanptr;
-  cinfo->num_scans = nscans;
-
-  if (ncomps == 3 && cinfo->jpeg_color_space == JCS_YCbCr) {
-    /* Custom script for YCbCr color images. */
-    /* Initial DC scan */
-    scanptr = fill_dc_scans(scanptr, ncomps, 0, 1);
-    /* Initial AC scan: get some luma data out in a hurry */
-    scanptr = fill_a_scan(scanptr, 0, 1, 5, 0, 2);
-    /* Chroma data is too small to be worth expending many scans on */
-    scanptr = fill_a_scan(scanptr, 2, 1, 63, 0, 1);
-    scanptr = fill_a_scan(scanptr, 1, 1, 63, 0, 1);
-    /* Complete spectral selection for luma AC */
-    scanptr = fill_a_scan(scanptr, 0, 6, 63, 0, 2);
-    /* Refine next bit of luma AC */
-    scanptr = fill_a_scan(scanptr, 0, 1, 63, 2, 1);
-    /* Finish DC successive approximation */
-    scanptr = fill_dc_scans(scanptr, ncomps, 1, 0);
-    /* Finish AC successive approximation */
-    scanptr = fill_a_scan(scanptr, 2, 1, 63, 1, 0);
-    scanptr = fill_a_scan(scanptr, 1, 1, 63, 1, 0);
-    /* Luma bottom bit comes last since it's usually largest scan */
-    scanptr = fill_a_scan(scanptr, 0, 1, 63, 1, 0);
-  } else {
-    /* All-purpose script for other color spaces. */
-    /* Successive approximation first pass */
-    scanptr = fill_dc_scans(scanptr, ncomps, 0, 1);
-    scanptr = fill_scans(scanptr, ncomps, 1, 5, 0, 2);
-    scanptr = fill_scans(scanptr, ncomps, 6, 63, 0, 2);
-    /* Successive approximation second pass */
-    scanptr = fill_scans(scanptr, ncomps, 1, 63, 2, 1);
-    /* Successive approximation final pass */
-    scanptr = fill_dc_scans(scanptr, ncomps, 1, 0);
-    scanptr = fill_scans(scanptr, ncomps, 1, 63, 1, 0);
-  }
-}
-
-#endif /* C_PROGRESSIVE_SUPPORTED */
diff --git a/src/libjpeg/jcphuff.c b/src/libjpeg/jcphuff.c
deleted file mode 100644
index a4ee850..0000000
--- a/src/libjpeg/jcphuff.c
+++ /dev/null
@@ -1,833 +0,0 @@
-/*
- * jcphuff.c
- *
- * Copyright (C) 1995-1997, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains Huffman entropy encoding routines for progressive JPEG.
- *
- * We do not support output suspension in this module, since the library
- * currently does not allow multiple-scan files to be written with output
- * suspension.
- */
-
-#define JPEG_INTERNALS
-#include "jinclude.h"
-#include "jpeglib.h"
-#include "jchuff.h"		/* Declarations shared with jchuff.c */
-
-#ifdef C_PROGRESSIVE_SUPPORTED
-
-/* Expanded entropy encoder object for progressive Huffman encoding. */
-
-typedef struct {
-  struct jpeg_entropy_encoder pub; /* public fields */
-
-  /* Mode flag: TRUE for optimization, FALSE for actual data output */
-  boolean gather_statistics;
-
-  /* Bit-level coding status.
-   * next_output_byte/free_in_buffer are local copies of cinfo->dest fields.
-   */
-  JOCTET * next_output_byte;	/* => next byte to write in buffer */
-  size_t free_in_buffer;	/* # of byte spaces remaining in buffer */
-  INT32 put_buffer;		/* current bit-accumulation buffer */
-  int put_bits;			/* # of bits now in it */
-  j_compress_ptr cinfo;		/* link to cinfo (needed for dump_buffer) */
-
-  /* Coding status for DC components */
-  int last_dc_val[MAX_COMPS_IN_SCAN]; /* last DC coef for each component */
-
-  /* Coding status for AC components */
-  int ac_tbl_no;		/* the table number of the single component */
-  unsigned int EOBRUN;		/* run length of EOBs */
-  unsigned int BE;		/* # of buffered correction bits before MCU */
-  char * bit_buffer;		/* buffer for correction bits (1 per char) */
-  /* packing correction bits tightly would save some space but cost time... */
-
-  unsigned int restarts_to_go;	/* MCUs left in this restart interval */
-  int next_restart_num;		/* next restart number to write (0-7) */
-
-  /* Pointers to derived tables (these workspaces have image lifespan).
-   * Since any one scan codes only DC or only AC, we only need one set
-   * of tables, not one for DC and one for AC.
-   */
-  c_derived_tbl * derived_tbls[NUM_HUFF_TBLS];
-
-  /* Statistics tables for optimization; again, one set is enough */
-  long * count_ptrs[NUM_HUFF_TBLS];
-} phuff_entropy_encoder;
-
-typedef phuff_entropy_encoder * phuff_entropy_ptr;
-
-/* MAX_CORR_BITS is the number of bits the AC refinement correction-bit
- * buffer can hold.  Larger sizes may slightly improve compression, but
- * 1000 is already well into the realm of overkill.
- * The minimum safe size is 64 bits.
- */
-
-#define MAX_CORR_BITS  1000	/* Max # of correction bits I can buffer */
-
-/* IRIGHT_SHIFT is like RIGHT_SHIFT, but works on int rather than INT32.
- * We assume that int right shift is unsigned if INT32 right shift is,
- * which should be safe.
- */
-
-#ifdef RIGHT_SHIFT_IS_UNSIGNED
-#define ISHIFT_TEMPS	int ishift_temp;
-#define IRIGHT_SHIFT(x,shft)  \
-	((ishift_temp = (x)) < 0 ? \
-	 (ishift_temp >> (shft)) | ((~0) << (16-(shft))) : \
-	 (ishift_temp >> (shft)))
-#else
-#define ISHIFT_TEMPS
-#define IRIGHT_SHIFT(x,shft)	((x) >> (shft))
-#endif
-
-/* Forward declarations */
-METHODDEF(boolean) encode_mcu_DC_first JPP((j_compress_ptr cinfo,
-					    JBLOCKROW *MCU_data));
-METHODDEF(boolean) encode_mcu_AC_first JPP((j_compress_ptr cinfo,
-					    JBLOCKROW *MCU_data));
-METHODDEF(boolean) encode_mcu_DC_refine JPP((j_compress_ptr cinfo,
-					     JBLOCKROW *MCU_data));
-METHODDEF(boolean) encode_mcu_AC_refine JPP((j_compress_ptr cinfo,
-					     JBLOCKROW *MCU_data));
-METHODDEF(void) finish_pass_phuff JPP((j_compress_ptr cinfo));
-METHODDEF(void) finish_pass_gather_phuff JPP((j_compress_ptr cinfo));
-
-
-/*
- * Initialize for a Huffman-compressed scan using progressive JPEG.
- */
-
-METHODDEF(void)
-start_pass_phuff (j_compress_ptr cinfo, boolean gather_statistics)
-{  
-  phuff_entropy_ptr entropy = (phuff_entropy_ptr) cinfo->entropy;
-  boolean is_DC_band;
-  int ci, tbl;
-  jpeg_component_info * compptr;
-
-  entropy->cinfo = cinfo;
-  entropy->gather_statistics = gather_statistics;
-
-  is_DC_band = (cinfo->Ss == 0);
-
-  /* We assume jcmaster.c already validated the scan parameters. */
-
-  /* Select execution routines */
-  if (cinfo->Ah == 0) {
-    if (is_DC_band)
-      entropy->pub.encode_mcu = encode_mcu_DC_first;
-    else
-      entropy->pub.encode_mcu = encode_mcu_AC_first;
-  } else {
-    if (is_DC_band)
-      entropy->pub.encode_mcu = encode_mcu_DC_refine;
-    else {
-      entropy->pub.encode_mcu = encode_mcu_AC_refine;
-      /* AC refinement needs a correction bit buffer */
-      if (entropy->bit_buffer == NULL)
-	entropy->bit_buffer = (char *)
-	  (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
-				      MAX_CORR_BITS * SIZEOF(char));
-    }
-  }
-  if (gather_statistics)
-    entropy->pub.finish_pass = finish_pass_gather_phuff;
-  else
-    entropy->pub.finish_pass = finish_pass_phuff;
-
-  /* Only DC coefficients may be interleaved, so cinfo->comps_in_scan = 1
-   * for AC coefficients.
-   */
-  for (ci = 0; ci < cinfo->comps_in_scan; ci++) {
-    compptr = cinfo->cur_comp_info[ci];
-    /* Initialize DC predictions to 0 */
-    entropy->last_dc_val[ci] = 0;
-    /* Get table index */
-    if (is_DC_band) {
-      if (cinfo->Ah != 0)	/* DC refinement needs no table */
-	continue;
-      tbl = compptr->dc_tbl_no;
-    } else {
-      entropy->ac_tbl_no = tbl = compptr->ac_tbl_no;
-    }
-    if (gather_statistics) {
-      /* Check for invalid table index */
-      /* (make_c_derived_tbl does this in the other path) */
-      if (tbl < 0 || tbl >= NUM_HUFF_TBLS)
-        ERREXIT1(cinfo, JERR_NO_HUFF_TABLE, tbl);
-      /* Allocate and zero the statistics tables */
-      /* Note that jpeg_gen_optimal_table expects 257 entries in each table! */
-      if (entropy->count_ptrs[tbl] == NULL)
-	entropy->count_ptrs[tbl] = (long *)
-	  (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
-				      257 * SIZEOF(long));
-      MEMZERO(entropy->count_ptrs[tbl], 257 * SIZEOF(long));
-    } else {
-      /* Compute derived values for Huffman table */
-      /* We may do this more than once for a table, but it's not expensive */
-      jpeg_make_c_derived_tbl(cinfo, is_DC_band, tbl,
-			      & entropy->derived_tbls[tbl]);
-    }
-  }
-
-  /* Initialize AC stuff */
-  entropy->EOBRUN = 0;
-  entropy->BE = 0;
-
-  /* Initialize bit buffer to empty */
-  entropy->put_buffer = 0;
-  entropy->put_bits = 0;
-
-  /* Initialize restart stuff */
-  entropy->restarts_to_go = cinfo->restart_interval;
-  entropy->next_restart_num = 0;
-}
-
-
-/* Outputting bytes to the file.
- * NB: these must be called only when actually outputting,
- * that is, entropy->gather_statistics == FALSE.
- */
-
-/* Emit a byte */
-#define emit_byte(entropy,val)  \
-	{ *(entropy)->next_output_byte++ = (JOCTET) (val);  \
-	  if (--(entropy)->free_in_buffer == 0)  \
-	    dump_buffer(entropy); }
-
-
-LOCAL(void)
-dump_buffer (phuff_entropy_ptr entropy)
-/* Empty the output buffer; we do not support suspension in this module. */
-{
-  struct jpeg_destination_mgr * dest = entropy->cinfo->dest;
-
-  if (! (*dest->empty_output_buffer) (entropy->cinfo))
-    ERREXIT(entropy->cinfo, JERR_CANT_SUSPEND);
-  /* After a successful buffer dump, must reset buffer pointers */
-  entropy->next_output_byte = dest->next_output_byte;
-  entropy->free_in_buffer = dest->free_in_buffer;
-}
-
-
-/* Outputting bits to the file */
-
-/* Only the right 24 bits of put_buffer are used; the valid bits are
- * left-justified in this part.  At most 16 bits can be passed to emit_bits
- * in one call, and we never retain more than 7 bits in put_buffer
- * between calls, so 24 bits are sufficient.
- */
-
-INLINE
-LOCAL(void)
-emit_bits (phuff_entropy_ptr entropy, unsigned int code, int size)
-/* Emit some bits, unless we are in gather mode */
-{
-  /* This routine is heavily used, so it's worth coding tightly. */
-  register INT32 put_buffer = (INT32) code;
-  register int put_bits = entropy->put_bits;
-
-  /* if size is 0, caller used an invalid Huffman table entry */
-  if (size == 0)
-    ERREXIT(entropy->cinfo, JERR_HUFF_MISSING_CODE);
-
-  if (entropy->gather_statistics)
-    return;			/* do nothing if we're only getting stats */
-
-  put_buffer &= (((INT32) 1)<<size) - 1; /* mask off any extra bits in code */
-  
-  put_bits += size;		/* new number of bits in buffer */
-  
-  put_buffer <<= 24 - put_bits; /* align incoming bits */
-
-  put_buffer |= entropy->put_buffer; /* and merge with old buffer contents */
-
-  while (put_bits >= 8) {
-    int c = (int) ((put_buffer >> 16) & 0xFF);
-    
-    emit_byte(entropy, c);
-    if (c == 0xFF) {		/* need to stuff a zero byte? */
-      emit_byte(entropy, 0);
-    }
-    put_buffer <<= 8;
-    put_bits -= 8;
-  }
-
-  entropy->put_buffer = put_buffer; /* update variables */
-  entropy->put_bits = put_bits;
-}
-
-
-LOCAL(void)
-flush_bits (phuff_entropy_ptr entropy)
-{
-  emit_bits(entropy, 0x7F, 7); /* fill any partial byte with ones */
-  entropy->put_buffer = 0;     /* and reset bit-buffer to empty */
-  entropy->put_bits = 0;
-}
-
-
-/*
- * Emit (or just count) a Huffman symbol.
- */
-
-INLINE
-LOCAL(void)
-emit_symbol (phuff_entropy_ptr entropy, int tbl_no, int symbol)
-{
-  if (entropy->gather_statistics)
-    entropy->count_ptrs[tbl_no][symbol]++;
-  else {
-    c_derived_tbl * tbl = entropy->derived_tbls[tbl_no];
-    emit_bits(entropy, tbl->ehufco[symbol], tbl->ehufsi[symbol]);
-  }
-}
-
-
-/*
- * Emit bits from a correction bit buffer.
- */
-
-LOCAL(void)
-emit_buffered_bits (phuff_entropy_ptr entropy, char * bufstart,
-		    unsigned int nbits)
-{
-  if (entropy->gather_statistics)
-    return;			/* no real work */
-
-  while (nbits > 0) {
-    emit_bits(entropy, (unsigned int) (*bufstart), 1);
-    bufstart++;
-    nbits--;
-  }
-}
-
-
-/*
- * Emit any pending EOBRUN symbol.
- */
-
-LOCAL(void)
-emit_eobrun (phuff_entropy_ptr entropy)
-{
-  register int temp, nbits;
-
-  if (entropy->EOBRUN > 0) {	/* if there is any pending EOBRUN */
-    temp = entropy->EOBRUN;
-    nbits = 0;
-    while ((temp >>= 1))
-      nbits++;
-    /* safety check: shouldn't happen given limited correction-bit buffer */
-    if (nbits > 14)
-      ERREXIT(entropy->cinfo, JERR_HUFF_MISSING_CODE);
-
-    emit_symbol(entropy, entropy->ac_tbl_no, nbits << 4);
-    if (nbits)
-      emit_bits(entropy, entropy->EOBRUN, nbits);
-
-    entropy->EOBRUN = 0;
-
-    /* Emit any buffered correction bits */
-    emit_buffered_bits(entropy, entropy->bit_buffer, entropy->BE);
-    entropy->BE = 0;
-  }
-}
-
-
-/*
- * Emit a restart marker & resynchronize predictions.
- */
-
-LOCAL(void)
-emit_restart (phuff_entropy_ptr entropy, int restart_num)
-{
-  int ci;
-
-  emit_eobrun(entropy);
-
-  if (! entropy->gather_statistics) {
-    flush_bits(entropy);
-    emit_byte(entropy, 0xFF);
-    emit_byte(entropy, JPEG_RST0 + restart_num);
-  }
-
-  if (entropy->cinfo->Ss == 0) {
-    /* Re-initialize DC predictions to 0 */
-    for (ci = 0; ci < entropy->cinfo->comps_in_scan; ci++)
-      entropy->last_dc_val[ci] = 0;
-  } else {
-    /* Re-initialize all AC-related fields to 0 */
-    entropy->EOBRUN = 0;
-    entropy->BE = 0;
-  }
-}
-
-
-/*
- * MCU encoding for DC initial scan (either spectral selection,
- * or first pass of successive approximation).
- */
-
-METHODDEF(boolean)
-encode_mcu_DC_first (j_compress_ptr cinfo, JBLOCKROW *MCU_data)
-{
-  phuff_entropy_ptr entropy = (phuff_entropy_ptr) cinfo->entropy;
-  register int temp, temp2;
-  register int nbits;
-  int blkn, ci;
-  int Al = cinfo->Al;
-  JBLOCKROW block;
-  jpeg_component_info * compptr;
-  ISHIFT_TEMPS
-
-  entropy->next_output_byte = cinfo->dest->next_output_byte;
-  entropy->free_in_buffer = cinfo->dest->free_in_buffer;
-
-  /* Emit restart marker if needed */
-  if (cinfo->restart_interval)
-    if (entropy->restarts_to_go == 0)
-      emit_restart(entropy, entropy->next_restart_num);
-
-  /* Encode the MCU data blocks */
-  for (blkn = 0; blkn < cinfo->blocks_in_MCU; blkn++) {
-    block = MCU_data[blkn];
-    ci = cinfo->MCU_membership[blkn];
-    compptr = cinfo->cur_comp_info[ci];
-
-    /* Compute the DC value after the required point transform by Al.
-     * This is simply an arithmetic right shift.
-     */
-    temp2 = IRIGHT_SHIFT((int) ((*block)[0]), Al);
-
-    /* DC differences are figured on the point-transformed values. */
-    temp = temp2 - entropy->last_dc_val[ci];
-    entropy->last_dc_val[ci] = temp2;
-
-    /* Encode the DC coefficient difference per section G.1.2.1 */
-    temp2 = temp;
-    if (temp < 0) {
-      temp = -temp;		/* temp is abs value of input */
-      /* For a negative input, want temp2 = bitwise complement of abs(input) */
-      /* This code assumes we are on a two's complement machine */
-      temp2--;
-    }
-    
-    /* Find the number of bits needed for the magnitude of the coefficient */
-    nbits = 0;
-    while (temp) {
-      nbits++;
-      temp >>= 1;
-    }
-    /* Check for out-of-range coefficient values.
-     * Since we're encoding a difference, the range limit is twice as much.
-     */
-    if (nbits > MAX_COEF_BITS+1)
-      ERREXIT(cinfo, JERR_BAD_DCT_COEF);
-    
-    /* Count/emit the Huffman-coded symbol for the number of bits */
-    emit_symbol(entropy, compptr->dc_tbl_no, nbits);
-    
-    /* Emit that number of bits of the value, if positive, */
-    /* or the complement of its magnitude, if negative. */
-    if (nbits)			/* emit_bits rejects calls with size 0 */
-      emit_bits(entropy, (unsigned int) temp2, nbits);
-  }
-
-  cinfo->dest->next_output_byte = entropy->next_output_byte;
-  cinfo->dest->free_in_buffer = entropy->free_in_buffer;
-
-  /* Update restart-interval state too */
-  if (cinfo->restart_interval) {
-    if (entropy->restarts_to_go == 0) {
-      entropy->restarts_to_go = cinfo->restart_interval;
-      entropy->next_restart_num++;
-      entropy->next_restart_num &= 7;
-    }
-    entropy->restarts_to_go--;
-  }
-
-  return TRUE;
-}
-
-
-/*
- * MCU encoding for AC initial scan (either spectral selection,
- * or first pass of successive approximation).
- */
-
-METHODDEF(boolean)
-encode_mcu_AC_first (j_compress_ptr cinfo, JBLOCKROW *MCU_data)
-{
-  phuff_entropy_ptr entropy = (phuff_entropy_ptr) cinfo->entropy;
-  register int temp, temp2;
-  register int nbits;
-  register int r, k;
-  int Se = cinfo->Se;
-  int Al = cinfo->Al;
-  JBLOCKROW block;
-
-  entropy->next_output_byte = cinfo->dest->next_output_byte;
-  entropy->free_in_buffer = cinfo->dest->free_in_buffer;
-
-  /* Emit restart marker if needed */
-  if (cinfo->restart_interval)
-    if (entropy->restarts_to_go == 0)
-      emit_restart(entropy, entropy->next_restart_num);
-
-  /* Encode the MCU data block */
-  block = MCU_data[0];
-
-  /* Encode the AC coefficients per section G.1.2.2, fig. G.3 */
-  
-  r = 0;			/* r = run length of zeros */
-   
-  for (k = cinfo->Ss; k <= Se; k++) {
-    if ((temp = (*block)[jpeg_natural_order[k]]) == 0) {
-      r++;
-      continue;
-    }
-    /* We must apply the point transform by Al.  For AC coefficients this
-     * is an integer division with rounding towards 0.  To do this portably
-     * in C, we shift after obtaining the absolute value; so the code is
-     * interwoven with finding the abs value (temp) and output bits (temp2).
-     */
-    if (temp < 0) {
-      temp = -temp;		/* temp is abs value of input */
-      temp >>= Al;		/* apply the point transform */
-      /* For a negative coef, want temp2 = bitwise complement of abs(coef) */
-      temp2 = ~temp;
-    } else {
-      temp >>= Al;		/* apply the point transform */
-      temp2 = temp;
-    }
-    /* Watch out for case that nonzero coef is zero after point transform */
-    if (temp == 0) {
-      r++;
-      continue;
-    }
-
-    /* Emit any pending EOBRUN */
-    if (entropy->EOBRUN > 0)
-      emit_eobrun(entropy);
-    /* if run length > 15, must emit special run-length-16 codes (0xF0) */
-    while (r > 15) {
-      emit_symbol(entropy, entropy->ac_tbl_no, 0xF0);
-      r -= 16;
-    }
-
-    /* Find the number of bits needed for the magnitude of the coefficient */
-    nbits = 1;			/* there must be at least one 1 bit */
-    while ((temp >>= 1))
-      nbits++;
-    /* Check for out-of-range coefficient values */
-    if (nbits > MAX_COEF_BITS)
-      ERREXIT(cinfo, JERR_BAD_DCT_COEF);
-
-    /* Count/emit Huffman symbol for run length / number of bits */
-    emit_symbol(entropy, entropy->ac_tbl_no, (r << 4) + nbits);
-
-    /* Emit that number of bits of the value, if positive, */
-    /* or the complement of its magnitude, if negative. */
-    emit_bits(entropy, (unsigned int) temp2, nbits);
-
-    r = 0;			/* reset zero run length */
-  }
-
-  if (r > 0) {			/* If there are trailing zeroes, */
-    entropy->EOBRUN++;		/* count an EOB */
-    if (entropy->EOBRUN == 0x7FFF)
-      emit_eobrun(entropy);	/* force it out to avoid overflow */
-  }
-
-  cinfo->dest->next_output_byte = entropy->next_output_byte;
-  cinfo->dest->free_in_buffer = entropy->free_in_buffer;
-
-  /* Update restart-interval state too */
-  if (cinfo->restart_interval) {
-    if (entropy->restarts_to_go == 0) {
-      entropy->restarts_to_go = cinfo->restart_interval;
-      entropy->next_restart_num++;
-      entropy->next_restart_num &= 7;
-    }
-    entropy->restarts_to_go--;
-  }
-
-  return TRUE;
-}
-
-
-/*
- * MCU encoding for DC successive approximation refinement scan.
- * Note: we assume such scans can be multi-component, although the spec
- * is not very clear on the point.
- */
-
-METHODDEF(boolean)
-encode_mcu_DC_refine (j_compress_ptr cinfo, JBLOCKROW *MCU_data)
-{
-  phuff_entropy_ptr entropy = (phuff_entropy_ptr) cinfo->entropy;
-  register int temp;
-  int blkn;
-  int Al = cinfo->Al;
-  JBLOCKROW block;
-
-  entropy->next_output_byte = cinfo->dest->next_output_byte;
-  entropy->free_in_buffer = cinfo->dest->free_in_buffer;
-
-  /* Emit restart marker if needed */
-  if (cinfo->restart_interval)
-    if (entropy->restarts_to_go == 0)
-      emit_restart(entropy, entropy->next_restart_num);
-
-  /* Encode the MCU data blocks */
-  for (blkn = 0; blkn < cinfo->blocks_in_MCU; blkn++) {
-    block = MCU_data[blkn];
-
-    /* We simply emit the Al'th bit of the DC coefficient value. */
-    temp = (*block)[0];
-    emit_bits(entropy, (unsigned int) (temp >> Al), 1);
-  }
-
-  cinfo->dest->next_output_byte = entropy->next_output_byte;
-  cinfo->dest->free_in_buffer = entropy->free_in_buffer;
-
-  /* Update restart-interval state too */
-  if (cinfo->restart_interval) {
-    if (entropy->restarts_to_go == 0) {
-      entropy->restarts_to_go = cinfo->restart_interval;
-      entropy->next_restart_num++;
-      entropy->next_restart_num &= 7;
-    }
-    entropy->restarts_to_go--;
-  }
-
-  return TRUE;
-}
-
-
-/*
- * MCU encoding for AC successive approximation refinement scan.
- */
-
-METHODDEF(boolean)
-encode_mcu_AC_refine (j_compress_ptr cinfo, JBLOCKROW *MCU_data)
-{
-  phuff_entropy_ptr entropy = (phuff_entropy_ptr) cinfo->entropy;
-  register int temp;
-  register int r, k;
-  int EOB;
-  char *BR_buffer;
-  unsigned int BR;
-  int Se = cinfo->Se;
-  int Al = cinfo->Al;
-  JBLOCKROW block;
-  int absvalues[DCTSIZE2];
-
-  entropy->next_output_byte = cinfo->dest->next_output_byte;
-  entropy->free_in_buffer = cinfo->dest->free_in_buffer;
-
-  /* Emit restart marker if needed */
-  if (cinfo->restart_interval)
-    if (entropy->restarts_to_go == 0)
-      emit_restart(entropy, entropy->next_restart_num);
-
-  /* Encode the MCU data block */
-  block = MCU_data[0];
-
-  /* It is convenient to make a pre-pass to determine the transformed
-   * coefficients' absolute values and the EOB position.
-   */
-  EOB = 0;
-  for (k = cinfo->Ss; k <= Se; k++) {
-    temp = (*block)[jpeg_natural_order[k]];
-    /* We must apply the point transform by Al.  For AC coefficients this
-     * is an integer division with rounding towards 0.  To do this portably
-     * in C, we shift after obtaining the absolute value.
-     */
-    if (temp < 0)
-      temp = -temp;		/* temp is abs value of input */
-    temp >>= Al;		/* apply the point transform */
-    absvalues[k] = temp;	/* save abs value for main pass */
-    if (temp == 1)
-      EOB = k;			/* EOB = index of last newly-nonzero coef */
-  }
-
-  /* Encode the AC coefficients per section G.1.2.3, fig. G.7 */
-  
-  r = 0;			/* r = run length of zeros */
-  BR = 0;			/* BR = count of buffered bits added now */
-  BR_buffer = entropy->bit_buffer + entropy->BE; /* Append bits to buffer */
-
-  for (k = cinfo->Ss; k <= Se; k++) {
-    if ((temp = absvalues[k]) == 0) {
-      r++;
-      continue;
-    }
-
-    /* Emit any required ZRLs, but not if they can be folded into EOB */
-    while (r > 15 && k <= EOB) {
-      /* emit any pending EOBRUN and the BE correction bits */
-      emit_eobrun(entropy);
-      /* Emit ZRL */
-      emit_symbol(entropy, entropy->ac_tbl_no, 0xF0);
-      r -= 16;
-      /* Emit buffered correction bits that must be associated with ZRL */
-      emit_buffered_bits(entropy, BR_buffer, BR);
-      BR_buffer = entropy->bit_buffer; /* BE bits are gone now */
-      BR = 0;
-    }
-
-    /* If the coef was previously nonzero, it only needs a correction bit.
-     * NOTE: a straight translation of the spec's figure G.7 would suggest
-     * that we also need to test r > 15.  But if r > 15, we can only get here
-     * if k > EOB, which implies that this coefficient is not 1.
-     */
-    if (temp > 1) {
-      /* The correction bit is the next bit of the absolute value. */
-      BR_buffer[BR++] = (char) (temp & 1);
-      continue;
-    }
-
-    /* Emit any pending EOBRUN and the BE correction bits */
-    emit_eobrun(entropy);
-
-    /* Count/emit Huffman symbol for run length / number of bits */
-    emit_symbol(entropy, entropy->ac_tbl_no, (r << 4) + 1);
-
-    /* Emit output bit for newly-nonzero coef */
-    temp = ((*block)[jpeg_natural_order[k]] < 0) ? 0 : 1;
-    emit_bits(entropy, (unsigned int) temp, 1);
-
-    /* Emit buffered correction bits that must be associated with this code */
-    emit_buffered_bits(entropy, BR_buffer, BR);
-    BR_buffer = entropy->bit_buffer; /* BE bits are gone now */
-    BR = 0;
-    r = 0;			/* reset zero run length */
-  }
-
-  if (r > 0 || BR > 0) {	/* If there are trailing zeroes, */
-    entropy->EOBRUN++;		/* count an EOB */
-    entropy->BE += BR;		/* concat my correction bits to older ones */
-    /* We force out the EOB if we risk either:
-     * 1. overflow of the EOB counter;
-     * 2. overflow of the correction bit buffer during the next MCU.
-     */
-    if (entropy->EOBRUN == 0x7FFF || entropy->BE > (MAX_CORR_BITS-DCTSIZE2+1))
-      emit_eobrun(entropy);
-  }
-
-  cinfo->dest->next_output_byte = entropy->next_output_byte;
-  cinfo->dest->free_in_buffer = entropy->free_in_buffer;
-
-  /* Update restart-interval state too */
-  if (cinfo->restart_interval) {
-    if (entropy->restarts_to_go == 0) {
-      entropy->restarts_to_go = cinfo->restart_interval;
-      entropy->next_restart_num++;
-      entropy->next_restart_num &= 7;
-    }
-    entropy->restarts_to_go--;
-  }
-
-  return TRUE;
-}
-
-
-/*
- * Finish up at the end of a Huffman-compressed progressive scan.
- */
-
-METHODDEF(void)
-finish_pass_phuff (j_compress_ptr cinfo)
-{   
-  phuff_entropy_ptr entropy = (phuff_entropy_ptr) cinfo->entropy;
-
-  entropy->next_output_byte = cinfo->dest->next_output_byte;
-  entropy->free_in_buffer = cinfo->dest->free_in_buffer;
-
-  /* Flush out any buffered data */
-  emit_eobrun(entropy);
-  flush_bits(entropy);
-
-  cinfo->dest->next_output_byte = entropy->next_output_byte;
-  cinfo->dest->free_in_buffer = entropy->free_in_buffer;
-}
-
-
-/*
- * Finish up a statistics-gathering pass and create the new Huffman tables.
- */
-
-METHODDEF(void)
-finish_pass_gather_phuff (j_compress_ptr cinfo)
-{
-  phuff_entropy_ptr entropy = (phuff_entropy_ptr) cinfo->entropy;
-  boolean is_DC_band;
-  int ci, tbl;
-  jpeg_component_info * compptr;
-  JHUFF_TBL **htblptr;
-  boolean did[NUM_HUFF_TBLS];
-
-  /* Flush out buffered data (all we care about is counting the EOB symbol) */
-  emit_eobrun(entropy);
-
-  is_DC_band = (cinfo->Ss == 0);
-
-  /* It's important not to apply jpeg_gen_optimal_table more than once
-   * per table, because it clobbers the input frequency counts!
-   */
-  MEMZERO(did, SIZEOF(did));
-
-  for (ci = 0; ci < cinfo->comps_in_scan; ci++) {
-    compptr = cinfo->cur_comp_info[ci];
-    if (is_DC_band) {
-      if (cinfo->Ah != 0)	/* DC refinement needs no table */
-	continue;
-      tbl = compptr->dc_tbl_no;
-    } else {
-      tbl = compptr->ac_tbl_no;
-    }
-    if (! did[tbl]) {
-      if (is_DC_band)
-        htblptr = & cinfo->dc_huff_tbl_ptrs[tbl];
-      else
-        htblptr = & cinfo->ac_huff_tbl_ptrs[tbl];
-      if (*htblptr == NULL)
-        *htblptr = jpeg_alloc_huff_table((j_common_ptr) cinfo);
-      jpeg_gen_optimal_table(cinfo, *htblptr, entropy->count_ptrs[tbl]);
-      did[tbl] = TRUE;
-    }
-  }
-}
-
-
-/*
- * Module initialization routine for progressive Huffman entropy encoding.
- */
-
-GLOBAL(void)
-jinit_phuff_encoder (j_compress_ptr cinfo)
-{
-  phuff_entropy_ptr entropy;
-  int i;
-
-  entropy = (phuff_entropy_ptr)
-    (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
-				SIZEOF(phuff_entropy_encoder));
-  cinfo->entropy = (struct jpeg_entropy_encoder *) entropy;
-  entropy->pub.start_pass = start_pass_phuff;
-
-  /* Mark tables unallocated */
-  for (i = 0; i < NUM_HUFF_TBLS; i++) {
-    entropy->derived_tbls[i] = NULL;
-    entropy->count_ptrs[i] = NULL;
-  }
-  entropy->bit_buffer = NULL;	/* needed only in AC refinement scan */
-}
-
-#endif /* C_PROGRESSIVE_SUPPORTED */
diff --git a/src/libjpeg/jcprepct.c b/src/libjpeg/jcprepct.c
deleted file mode 100644
index fdc4bc2..0000000
--- a/src/libjpeg/jcprepct.c
+++ /dev/null
@@ -1,354 +0,0 @@
-/*
- * jcprepct.c
- *
- * Copyright (C) 1994-1996, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains the compression preprocessing controller.
- * This controller manages the color conversion, downsampling,
- * and edge expansion steps.
- *
- * Most of the complexity here is associated with buffering input rows
- * as required by the downsampler.  See the comments at the head of
- * jcsample.c for the downsampler's needs.
- */
-
-#define JPEG_INTERNALS
-#include "jinclude.h"
-#include "jpeglib.h"
-
-
-/* At present, jcsample.c can request context rows only for smoothing.
- * In the future, we might also need context rows for CCIR601 sampling
- * or other more-complex downsampling procedures.  The code to support
- * context rows should be compiled only if needed.
- */
-#ifdef INPUT_SMOOTHING_SUPPORTED
-#define CONTEXT_ROWS_SUPPORTED
-#endif
-
-
-/*
- * For the simple (no-context-row) case, we just need to buffer one
- * row group's worth of pixels for the downsampling step.  At the bottom of
- * the image, we pad to a full row group by replicating the last pixel row.
- * The downsampler's last output row is then replicated if needed to pad
- * out to a full iMCU row.
- *
- * When providing context rows, we must buffer three row groups' worth of
- * pixels.  Three row groups are physically allocated, but the row pointer
- * arrays are made five row groups high, with the extra pointers above and
- * below "wrapping around" to point to the last and first real row groups.
- * This allows the downsampler to access the proper context rows.
- * At the top and bottom of the image, we create dummy context rows by
- * copying the first or last real pixel row.  This copying could be avoided
- * by pointer hacking as is done in jdmainct.c, but it doesn't seem worth the
- * trouble on the compression side.
- */
-
-
-/* Private buffer controller object */
-
-typedef struct {
-  struct jpeg_c_prep_controller pub; /* public fields */
-
-  /* Downsampling input buffer.  This buffer holds color-converted data
-   * until we have enough to do a downsample step.
-   */
-  JSAMPARRAY color_buf[MAX_COMPONENTS];
-
-  JDIMENSION rows_to_go;	/* counts rows remaining in source image */
-  int next_buf_row;		/* index of next row to store in color_buf */
-
-#ifdef CONTEXT_ROWS_SUPPORTED	/* only needed for context case */
-  int this_row_group;		/* starting row index of group to process */
-  int next_buf_stop;		/* downsample when we reach this index */
-#endif
-} my_prep_controller;
-
-typedef my_prep_controller * my_prep_ptr;
-
-
-/*
- * Initialize for a processing pass.
- */
-
-METHODDEF(void)
-start_pass_prep (j_compress_ptr cinfo, J_BUF_MODE pass_mode)
-{
-  my_prep_ptr prep = (my_prep_ptr) cinfo->prep;
-
-  if (pass_mode != JBUF_PASS_THRU)
-    ERREXIT(cinfo, JERR_BAD_BUFFER_MODE);
-
-  /* Initialize total-height counter for detecting bottom of image */
-  prep->rows_to_go = cinfo->image_height;
-  /* Mark the conversion buffer empty */
-  prep->next_buf_row = 0;
-#ifdef CONTEXT_ROWS_SUPPORTED
-  /* Preset additional state variables for context mode.
-   * These aren't used in non-context mode, so we needn't test which mode.
-   */
-  prep->this_row_group = 0;
-  /* Set next_buf_stop to stop after two row groups have been read in. */
-  prep->next_buf_stop = 2 * cinfo->max_v_samp_factor;
-#endif
-}
-
-
-/*
- * Expand an image vertically from height input_rows to height output_rows,
- * by duplicating the bottom row.
- */
-
-LOCAL(void)
-expand_bottom_edge (JSAMPARRAY image_data, JDIMENSION num_cols,
-		    int input_rows, int output_rows)
-{
-  register int row;
-
-  for (row = input_rows; row < output_rows; row++) {
-    jcopy_sample_rows(image_data, input_rows-1, image_data, row,
-		      1, num_cols);
-  }
-}
-
-
-/*
- * Process some data in the simple no-context case.
- *
- * Preprocessor output data is counted in "row groups".  A row group
- * is defined to be v_samp_factor sample rows of each component.
- * Downsampling will produce this much data from each max_v_samp_factor
- * input rows.
- */
-
-METHODDEF(void)
-pre_process_data (j_compress_ptr cinfo,
-		  JSAMPARRAY input_buf, JDIMENSION *in_row_ctr,
-		  JDIMENSION in_rows_avail,
-		  JSAMPIMAGE output_buf, JDIMENSION *out_row_group_ctr,
-		  JDIMENSION out_row_groups_avail)
-{
-  my_prep_ptr prep = (my_prep_ptr) cinfo->prep;
-  int numrows, ci;
-  JDIMENSION inrows;
-  jpeg_component_info * compptr;
-
-  while (*in_row_ctr < in_rows_avail &&
-	 *out_row_group_ctr < out_row_groups_avail) {
-    /* Do color conversion to fill the conversion buffer. */
-    inrows = in_rows_avail - *in_row_ctr;
-    numrows = cinfo->max_v_samp_factor - prep->next_buf_row;
-    numrows = (int) MIN((JDIMENSION) numrows, inrows);
-    (*cinfo->cconvert->color_convert) (cinfo, input_buf + *in_row_ctr,
-				       prep->color_buf,
-				       (JDIMENSION) prep->next_buf_row,
-				       numrows);
-    *in_row_ctr += numrows;
-    prep->next_buf_row += numrows;
-    prep->rows_to_go -= numrows;
-    /* If at bottom of image, pad to fill the conversion buffer. */
-    if (prep->rows_to_go == 0 &&
-	prep->next_buf_row < cinfo->max_v_samp_factor) {
-      for (ci = 0; ci < cinfo->num_components; ci++) {
-	expand_bottom_edge(prep->color_buf[ci], cinfo->image_width,
-			   prep->next_buf_row, cinfo->max_v_samp_factor);
-      }
-      prep->next_buf_row = cinfo->max_v_samp_factor;
-    }
-    /* If we've filled the conversion buffer, empty it. */
-    if (prep->next_buf_row == cinfo->max_v_samp_factor) {
-      (*cinfo->downsample->downsample) (cinfo,
-					prep->color_buf, (JDIMENSION) 0,
-					output_buf, *out_row_group_ctr);
-      prep->next_buf_row = 0;
-      (*out_row_group_ctr)++;
-    }
-    /* If at bottom of image, pad the output to a full iMCU height.
-     * Note we assume the caller is providing a one-iMCU-height output buffer!
-     */
-    if (prep->rows_to_go == 0 &&
-	*out_row_group_ctr < out_row_groups_avail) {
-      for (ci = 0, compptr = cinfo->comp_info; ci < cinfo->num_components;
-	   ci++, compptr++) {
-	expand_bottom_edge(output_buf[ci],
-			   compptr->width_in_blocks * DCTSIZE,
-			   (int) (*out_row_group_ctr * compptr->v_samp_factor),
-			   (int) (out_row_groups_avail * compptr->v_samp_factor));
-      }
-      *out_row_group_ctr = out_row_groups_avail;
-      break;			/* can exit outer loop without test */
-    }
-  }
-}
-
-
-#ifdef CONTEXT_ROWS_SUPPORTED
-
-/*
- * Process some data in the context case.
- */
-
-METHODDEF(void)
-pre_process_context (j_compress_ptr cinfo,
-		     JSAMPARRAY input_buf, JDIMENSION *in_row_ctr,
-		     JDIMENSION in_rows_avail,
-		     JSAMPIMAGE output_buf, JDIMENSION *out_row_group_ctr,
-		     JDIMENSION out_row_groups_avail)
-{
-  my_prep_ptr prep = (my_prep_ptr) cinfo->prep;
-  int numrows, ci;
-  int buf_height = cinfo->max_v_samp_factor * 3;
-  JDIMENSION inrows;
-
-  while (*out_row_group_ctr < out_row_groups_avail) {
-    if (*in_row_ctr < in_rows_avail) {
-      /* Do color conversion to fill the conversion buffer. */
-      inrows = in_rows_avail - *in_row_ctr;
-      numrows = prep->next_buf_stop - prep->next_buf_row;
-      numrows = (int) MIN((JDIMENSION) numrows, inrows);
-      (*cinfo->cconvert->color_convert) (cinfo, input_buf + *in_row_ctr,
-					 prep->color_buf,
-					 (JDIMENSION) prep->next_buf_row,
-					 numrows);
-      /* Pad at top of image, if first time through */
-      if (prep->rows_to_go == cinfo->image_height) {
-	for (ci = 0; ci < cinfo->num_components; ci++) {
-	  int row;
-	  for (row = 1; row <= cinfo->max_v_samp_factor; row++) {
-	    jcopy_sample_rows(prep->color_buf[ci], 0,
-			      prep->color_buf[ci], -row,
-			      1, cinfo->image_width);
-	  }
-	}
-      }
-      *in_row_ctr += numrows;
-      prep->next_buf_row += numrows;
-      prep->rows_to_go -= numrows;
-    } else {
-      /* Return for more data, unless we are at the bottom of the image. */
-      if (prep->rows_to_go != 0)
-	break;
-      /* When at bottom of image, pad to fill the conversion buffer. */
-      if (prep->next_buf_row < prep->next_buf_stop) {
-	for (ci = 0; ci < cinfo->num_components; ci++) {
-	  expand_bottom_edge(prep->color_buf[ci], cinfo->image_width,
-			     prep->next_buf_row, prep->next_buf_stop);
-	}
-	prep->next_buf_row = prep->next_buf_stop;
-      }
-    }
-    /* If we've gotten enough data, downsample a row group. */
-    if (prep->next_buf_row == prep->next_buf_stop) {
-      (*cinfo->downsample->downsample) (cinfo,
-					prep->color_buf,
-					(JDIMENSION) prep->this_row_group,
-					output_buf, *out_row_group_ctr);
-      (*out_row_group_ctr)++;
-      /* Advance pointers with wraparound as necessary. */
-      prep->this_row_group += cinfo->max_v_samp_factor;
-      if (prep->this_row_group >= buf_height)
-	prep->this_row_group = 0;
-      if (prep->next_buf_row >= buf_height)
-	prep->next_buf_row = 0;
-      prep->next_buf_stop = prep->next_buf_row + cinfo->max_v_samp_factor;
-    }
-  }
-}
-
-
-/*
- * Create the wrapped-around downsampling input buffer needed for context mode.
- */
-
-LOCAL(void)
-create_context_buffer (j_compress_ptr cinfo)
-{
-  my_prep_ptr prep = (my_prep_ptr) cinfo->prep;
-  int rgroup_height = cinfo->max_v_samp_factor;
-  int ci, i;
-  jpeg_component_info * compptr;
-  JSAMPARRAY true_buffer, fake_buffer;
-
-  /* Grab enough space for fake row pointers for all the components;
-   * we need five row groups' worth of pointers for each component.
-   */
-  fake_buffer = (JSAMPARRAY)
-    (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
-				(cinfo->num_components * 5 * rgroup_height) *
-				SIZEOF(JSAMPROW));
-
-  for (ci = 0, compptr = cinfo->comp_info; ci < cinfo->num_components;
-       ci++, compptr++) {
-    /* Allocate the actual buffer space (3 row groups) for this component.
-     * We make the buffer wide enough to allow the downsampler to edge-expand
-     * horizontally within the buffer, if it so chooses.
-     */
-    true_buffer = (*cinfo->mem->alloc_sarray)
-      ((j_common_ptr) cinfo, JPOOL_IMAGE,
-       (JDIMENSION) (((long) compptr->width_in_blocks * DCTSIZE *
-		      cinfo->max_h_samp_factor) / compptr->h_samp_factor),
-       (JDIMENSION) (3 * rgroup_height));
-    /* Copy true buffer row pointers into the middle of the fake row array */
-    MEMCOPY(fake_buffer + rgroup_height, true_buffer,
-	    3 * rgroup_height * SIZEOF(JSAMPROW));
-    /* Fill in the above and below wraparound pointers */
-    for (i = 0; i < rgroup_height; i++) {
-      fake_buffer[i] = true_buffer[2 * rgroup_height + i];
-      fake_buffer[4 * rgroup_height + i] = true_buffer[i];
-    }
-    prep->color_buf[ci] = fake_buffer + rgroup_height;
-    fake_buffer += 5 * rgroup_height; /* point to space for next component */
-  }
-}
-
-#endif /* CONTEXT_ROWS_SUPPORTED */
-
-
-/*
- * Initialize preprocessing controller.
- */
-
-GLOBAL(void)
-jinit_c_prep_controller (j_compress_ptr cinfo, boolean need_full_buffer)
-{
-  my_prep_ptr prep;
-  int ci;
-  jpeg_component_info * compptr;
-
-  if (need_full_buffer)		/* safety check */
-    ERREXIT(cinfo, JERR_BAD_BUFFER_MODE);
-
-  prep = (my_prep_ptr)
-    (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
-				SIZEOF(my_prep_controller));
-  cinfo->prep = (struct jpeg_c_prep_controller *) prep;
-  prep->pub.start_pass = start_pass_prep;
-
-  /* Allocate the color conversion buffer.
-   * We make the buffer wide enough to allow the downsampler to edge-expand
-   * horizontally within the buffer, if it so chooses.
-   */
-  if (cinfo->downsample->need_context_rows) {
-    /* Set up to provide context rows */
-#ifdef CONTEXT_ROWS_SUPPORTED
-    prep->pub.pre_process_data = pre_process_context;
-    create_context_buffer(cinfo);
-#else
-    ERREXIT(cinfo, JERR_NOT_COMPILED);
-#endif
-  } else {
-    /* No context, just make it tall enough for one row group */
-    prep->pub.pre_process_data = pre_process_data;
-    for (ci = 0, compptr = cinfo->comp_info; ci < cinfo->num_components;
-	 ci++, compptr++) {
-      prep->color_buf[ci] = (*cinfo->mem->alloc_sarray)
-	((j_common_ptr) cinfo, JPOOL_IMAGE,
-	 (JDIMENSION) (((long) compptr->width_in_blocks * DCTSIZE *
-			cinfo->max_h_samp_factor) / compptr->h_samp_factor),
-	 (JDIMENSION) cinfo->max_v_samp_factor);
-    }
-  }
-}
diff --git a/src/libjpeg/jcsample.c b/src/libjpeg/jcsample.c
deleted file mode 100644
index fe29fca..0000000
--- a/src/libjpeg/jcsample.c
+++ /dev/null
@@ -1,519 +0,0 @@
-/*
- * jcsample.c
- *
- * Copyright (C) 1991-1996, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains downsampling routines.
- *
- * Downsampling input data is counted in "row groups".  A row group
- * is defined to be max_v_samp_factor pixel rows of each component,
- * from which the downsampler produces v_samp_factor sample rows.
- * A single row group is processed in each call to the downsampler module.
- *
- * The downsampler is responsible for edge-expansion of its output data
- * to fill an integral number of DCT blocks horizontally.  The source buffer
- * may be modified if it is helpful for this purpose (the source buffer is
- * allocated wide enough to correspond to the desired output width).
- * The caller (the prep controller) is responsible for vertical padding.
- *
- * The downsampler may request "context rows" by setting need_context_rows
- * during startup.  In this case, the input arrays will contain at least
- * one row group's worth of pixels above and below the passed-in data;
- * the caller will create dummy rows at image top and bottom by replicating
- * the first or last real pixel row.
- *
- * An excellent reference for image resampling is
- *   Digital Image Warping, George Wolberg, 1990.
- *   Pub. by IEEE Computer Society Press, Los Alamitos, CA. ISBN 0-8186-8944-7.
- *
- * The downsampling algorithm used here is a simple average of the source
- * pixels covered by the output pixel.  The hi-falutin sampling literature
- * refers to this as a "box filter".  In general the characteristics of a box
- * filter are not very good, but for the specific cases we normally use (1:1
- * and 2:1 ratios) the box is equivalent to a "triangle filter" which is not
- * nearly so bad.  If you intend to use other sampling ratios, you'd be well
- * advised to improve this code.
- *
- * A simple input-smoothing capability is provided.  This is mainly intended
- * for cleaning up color-dithered GIF input files (if you find it inadequate,
- * we suggest using an external filtering program such as pnmconvol).  When
- * enabled, each input pixel P is replaced by a weighted sum of itself and its
- * eight neighbors.  P's weight is 1-8*SF and each neighbor's weight is SF,
- * where SF = (smoothing_factor / 1024).
- * Currently, smoothing is only supported for 2h2v sampling factors.
- */
-
-#define JPEG_INTERNALS
-#include "jinclude.h"
-#include "jpeglib.h"
-
-
-/* Pointer to routine to downsample a single component */
-typedef JMETHOD(void, downsample1_ptr,
-		(j_compress_ptr cinfo, jpeg_component_info * compptr,
-		 JSAMPARRAY input_data, JSAMPARRAY output_data));
-
-/* Private subobject */
-
-typedef struct {
-  struct jpeg_downsampler pub;	/* public fields */
-
-  /* Downsampling method pointers, one per component */
-  downsample1_ptr methods[MAX_COMPONENTS];
-} my_downsampler;
-
-typedef my_downsampler * my_downsample_ptr;
-
-
-/*
- * Initialize for a downsampling pass.
- */
-
-METHODDEF(void)
-start_pass_downsample (j_compress_ptr cinfo)
-{
-  /* no work for now */
-}
-
-
-/*
- * Expand a component horizontally from width input_cols to width output_cols,
- * by duplicating the rightmost samples.
- */
-
-LOCAL(void)
-expand_right_edge (JSAMPARRAY image_data, int num_rows,
-		   JDIMENSION input_cols, JDIMENSION output_cols)
-{
-  register JSAMPROW ptr;
-  register JSAMPLE pixval;
-  register int count;
-  int row;
-  int numcols = (int) (output_cols - input_cols);
-
-  if (numcols > 0) {
-    for (row = 0; row < num_rows; row++) {
-      ptr = image_data[row] + input_cols;
-      pixval = ptr[-1];		/* don't need GETJSAMPLE() here */
-      for (count = numcols; count > 0; count--)
-	*ptr++ = pixval;
-    }
-  }
-}
-
-
-/*
- * Do downsampling for a whole row group (all components).
- *
- * In this version we simply downsample each component independently.
- */
-
-METHODDEF(void)
-sep_downsample (j_compress_ptr cinfo,
-		JSAMPIMAGE input_buf, JDIMENSION in_row_index,
-		JSAMPIMAGE output_buf, JDIMENSION out_row_group_index)
-{
-  my_downsample_ptr downsample = (my_downsample_ptr) cinfo->downsample;
-  int ci;
-  jpeg_component_info * compptr;
-  JSAMPARRAY in_ptr, out_ptr;
-
-  for (ci = 0, compptr = cinfo->comp_info; ci < cinfo->num_components;
-       ci++, compptr++) {
-    in_ptr = input_buf[ci] + in_row_index;
-    out_ptr = output_buf[ci] + (out_row_group_index * compptr->v_samp_factor);
-    (*downsample->methods[ci]) (cinfo, compptr, in_ptr, out_ptr);
-  }
-}
-
-
-/*
- * Downsample pixel values of a single component.
- * One row group is processed per call.
- * This version handles arbitrary integral sampling ratios, without smoothing.
- * Note that this version is not actually used for customary sampling ratios.
- */
-
-METHODDEF(void)
-int_downsample (j_compress_ptr cinfo, jpeg_component_info * compptr,
-		JSAMPARRAY input_data, JSAMPARRAY output_data)
-{
-  int inrow, outrow, h_expand, v_expand, numpix, numpix2, h, v;
-  JDIMENSION outcol, outcol_h;	/* outcol_h == outcol*h_expand */
-  JDIMENSION output_cols = compptr->width_in_blocks * DCTSIZE;
-  JSAMPROW inptr, outptr;
-  INT32 outvalue;
-
-  h_expand = cinfo->max_h_samp_factor / compptr->h_samp_factor;
-  v_expand = cinfo->max_v_samp_factor / compptr->v_samp_factor;
-  numpix = h_expand * v_expand;
-  numpix2 = numpix/2;
-
-  /* Expand input data enough to let all the output samples be generated
-   * by the standard loop.  Special-casing padded output would be more
-   * efficient.
-   */
-  expand_right_edge(input_data, cinfo->max_v_samp_factor,
-		    cinfo->image_width, output_cols * h_expand);
-
-  inrow = 0;
-  for (outrow = 0; outrow < compptr->v_samp_factor; outrow++) {
-    outptr = output_data[outrow];
-    for (outcol = 0, outcol_h = 0; outcol < output_cols;
-	 outcol++, outcol_h += h_expand) {
-      outvalue = 0;
-      for (v = 0; v < v_expand; v++) {
-	inptr = input_data[inrow+v] + outcol_h;
-	for (h = 0; h < h_expand; h++) {
-	  outvalue += (INT32) GETJSAMPLE(*inptr++);
-	}
-      }
-      *outptr++ = (JSAMPLE) ((outvalue + numpix2) / numpix);
-    }
-    inrow += v_expand;
-  }
-}
-
-
-/*
- * Downsample pixel values of a single component.
- * This version handles the special case of a full-size component,
- * without smoothing.
- */
-
-METHODDEF(void)
-fullsize_downsample (j_compress_ptr cinfo, jpeg_component_info * compptr,
-		     JSAMPARRAY input_data, JSAMPARRAY output_data)
-{
-  /* Copy the data */
-  jcopy_sample_rows(input_data, 0, output_data, 0,
-		    cinfo->max_v_samp_factor, cinfo->image_width);
-  /* Edge-expand */
-  expand_right_edge(output_data, cinfo->max_v_samp_factor,
-		    cinfo->image_width, compptr->width_in_blocks * DCTSIZE);
-}
-
-
-/*
- * Downsample pixel values of a single component.
- * This version handles the common case of 2:1 horizontal and 1:1 vertical,
- * without smoothing.
- *
- * A note about the "bias" calculations: when rounding fractional values to
- * integer, we do not want to always round 0.5 up to the next integer.
- * If we did that, we'd introduce a noticeable bias towards larger values.
- * Instead, this code is arranged so that 0.5 will be rounded up or down at
- * alternate pixel locations (a simple ordered dither pattern).
- */
-
-METHODDEF(void)
-h2v1_downsample (j_compress_ptr cinfo, jpeg_component_info * compptr,
-		 JSAMPARRAY input_data, JSAMPARRAY output_data)
-{
-  int outrow;
-  JDIMENSION outcol;
-  JDIMENSION output_cols = compptr->width_in_blocks * DCTSIZE;
-  register JSAMPROW inptr, outptr;
-  register int bias;
-
-  /* Expand input data enough to let all the output samples be generated
-   * by the standard loop.  Special-casing padded output would be more
-   * efficient.
-   */
-  expand_right_edge(input_data, cinfo->max_v_samp_factor,
-		    cinfo->image_width, output_cols * 2);
-
-  for (outrow = 0; outrow < compptr->v_samp_factor; outrow++) {
-    outptr = output_data[outrow];
-    inptr = input_data[outrow];
-    bias = 0;			/* bias = 0,1,0,1,... for successive samples */
-    for (outcol = 0; outcol < output_cols; outcol++) {
-      *outptr++ = (JSAMPLE) ((GETJSAMPLE(*inptr) + GETJSAMPLE(inptr[1])
-			      + bias) >> 1);
-      bias ^= 1;		/* 0=>1, 1=>0 */
-      inptr += 2;
-    }
-  }
-}
-
-
-/*
- * Downsample pixel values of a single component.
- * This version handles the standard case of 2:1 horizontal and 2:1 vertical,
- * without smoothing.
- */
-
-METHODDEF(void)
-h2v2_downsample (j_compress_ptr cinfo, jpeg_component_info * compptr,
-		 JSAMPARRAY input_data, JSAMPARRAY output_data)
-{
-  int inrow, outrow;
-  JDIMENSION outcol;
-  JDIMENSION output_cols = compptr->width_in_blocks * DCTSIZE;
-  register JSAMPROW inptr0, inptr1, outptr;
-  register int bias;
-
-  /* Expand input data enough to let all the output samples be generated
-   * by the standard loop.  Special-casing padded output would be more
-   * efficient.
-   */
-  expand_right_edge(input_data, cinfo->max_v_samp_factor,
-		    cinfo->image_width, output_cols * 2);
-
-  inrow = 0;
-  for (outrow = 0; outrow < compptr->v_samp_factor; outrow++) {
-    outptr = output_data[outrow];
-    inptr0 = input_data[inrow];
-    inptr1 = input_data[inrow+1];
-    bias = 1;			/* bias = 1,2,1,2,... for successive samples */
-    for (outcol = 0; outcol < output_cols; outcol++) {
-      *outptr++ = (JSAMPLE) ((GETJSAMPLE(*inptr0) + GETJSAMPLE(inptr0[1]) +
-			      GETJSAMPLE(*inptr1) + GETJSAMPLE(inptr1[1])
-			      + bias) >> 2);
-      bias ^= 3;		/* 1=>2, 2=>1 */
-      inptr0 += 2; inptr1 += 2;
-    }
-    inrow += 2;
-  }
-}
-
-
-#ifdef INPUT_SMOOTHING_SUPPORTED
-
-/*
- * Downsample pixel values of a single component.
- * This version handles the standard case of 2:1 horizontal and 2:1 vertical,
- * with smoothing.  One row of context is required.
- */
-
-METHODDEF(void)
-h2v2_smooth_downsample (j_compress_ptr cinfo, jpeg_component_info * compptr,
-			JSAMPARRAY input_data, JSAMPARRAY output_data)
-{
-  int inrow, outrow;
-  JDIMENSION colctr;
-  JDIMENSION output_cols = compptr->width_in_blocks * DCTSIZE;
-  register JSAMPROW inptr0, inptr1, above_ptr, below_ptr, outptr;
-  INT32 membersum, neighsum, memberscale, neighscale;
-
-  /* Expand input data enough to let all the output samples be generated
-   * by the standard loop.  Special-casing padded output would be more
-   * efficient.
-   */
-  expand_right_edge(input_data - 1, cinfo->max_v_samp_factor + 2,
-		    cinfo->image_width, output_cols * 2);
-
-  /* We don't bother to form the individual "smoothed" input pixel values;
-   * we can directly compute the output which is the average of the four
-   * smoothed values.  Each of the four member pixels contributes a fraction
-   * (1-8*SF) to its own smoothed image and a fraction SF to each of the three
-   * other smoothed pixels, therefore a total fraction (1-5*SF)/4 to the final
-   * output.  The four corner-adjacent neighbor pixels contribute a fraction
-   * SF to just one smoothed pixel, or SF/4 to the final output; while the
-   * eight edge-adjacent neighbors contribute SF to each of two smoothed
-   * pixels, or SF/2 overall.  In order to use integer arithmetic, these
-   * factors are scaled by 2^16 = 65536.
-   * Also recall that SF = smoothing_factor / 1024.
-   */
-
-  memberscale = 16384 - cinfo->smoothing_factor * 80; /* scaled (1-5*SF)/4 */
-  neighscale = cinfo->smoothing_factor * 16; /* scaled SF/4 */
-
-  inrow = 0;
-  for (outrow = 0; outrow < compptr->v_samp_factor; outrow++) {
-    outptr = output_data[outrow];
-    inptr0 = input_data[inrow];
-    inptr1 = input_data[inrow+1];
-    above_ptr = input_data[inrow-1];
-    below_ptr = input_data[inrow+2];
-
-    /* Special case for first column: pretend column -1 is same as column 0 */
-    membersum = GETJSAMPLE(*inptr0) + GETJSAMPLE(inptr0[1]) +
-		GETJSAMPLE(*inptr1) + GETJSAMPLE(inptr1[1]);
-    neighsum = GETJSAMPLE(*above_ptr) + GETJSAMPLE(above_ptr[1]) +
-	       GETJSAMPLE(*below_ptr) + GETJSAMPLE(below_ptr[1]) +
-	       GETJSAMPLE(*inptr0) + GETJSAMPLE(inptr0[2]) +
-	       GETJSAMPLE(*inptr1) + GETJSAMPLE(inptr1[2]);
-    neighsum += neighsum;
-    neighsum += GETJSAMPLE(*above_ptr) + GETJSAMPLE(above_ptr[2]) +
-		GETJSAMPLE(*below_ptr) + GETJSAMPLE(below_ptr[2]);
-    membersum = membersum * memberscale + neighsum * neighscale;
-    *outptr++ = (JSAMPLE) ((membersum + 32768) >> 16);
-    inptr0 += 2; inptr1 += 2; above_ptr += 2; below_ptr += 2;
-
-    for (colctr = output_cols - 2; colctr > 0; colctr--) {
-      /* sum of pixels directly mapped to this output element */
-      membersum = GETJSAMPLE(*inptr0) + GETJSAMPLE(inptr0[1]) +
-		  GETJSAMPLE(*inptr1) + GETJSAMPLE(inptr1[1]);
-      /* sum of edge-neighbor pixels */
-      neighsum = GETJSAMPLE(*above_ptr) + GETJSAMPLE(above_ptr[1]) +
-		 GETJSAMPLE(*below_ptr) + GETJSAMPLE(below_ptr[1]) +
-		 GETJSAMPLE(inptr0[-1]) + GETJSAMPLE(inptr0[2]) +
-		 GETJSAMPLE(inptr1[-1]) + GETJSAMPLE(inptr1[2]);
-      /* The edge-neighbors count twice as much as corner-neighbors */
-      neighsum += neighsum;
-      /* Add in the corner-neighbors */
-      neighsum += GETJSAMPLE(above_ptr[-1]) + GETJSAMPLE(above_ptr[2]) +
-		  GETJSAMPLE(below_ptr[-1]) + GETJSAMPLE(below_ptr[2]);
-      /* form final output scaled up by 2^16 */
-      membersum = membersum * memberscale + neighsum * neighscale;
-      /* round, descale and output it */
-      *outptr++ = (JSAMPLE) ((membersum + 32768) >> 16);
-      inptr0 += 2; inptr1 += 2; above_ptr += 2; below_ptr += 2;
-    }
-
-    /* Special case for last column */
-    membersum = GETJSAMPLE(*inptr0) + GETJSAMPLE(inptr0[1]) +
-		GETJSAMPLE(*inptr1) + GETJSAMPLE(inptr1[1]);
-    neighsum = GETJSAMPLE(*above_ptr) + GETJSAMPLE(above_ptr[1]) +
-	       GETJSAMPLE(*below_ptr) + GETJSAMPLE(below_ptr[1]) +
-	       GETJSAMPLE(inptr0[-1]) + GETJSAMPLE(inptr0[1]) +
-	       GETJSAMPLE(inptr1[-1]) + GETJSAMPLE(inptr1[1]);
-    neighsum += neighsum;
-    neighsum += GETJSAMPLE(above_ptr[-1]) + GETJSAMPLE(above_ptr[1]) +
-		GETJSAMPLE(below_ptr[-1]) + GETJSAMPLE(below_ptr[1]);
-    membersum = membersum * memberscale + neighsum * neighscale;
-    *outptr = (JSAMPLE) ((membersum + 32768) >> 16);
-
-    inrow += 2;
-  }
-}
-
-
-/*
- * Downsample pixel values of a single component.
- * This version handles the special case of a full-size component,
- * with smoothing.  One row of context is required.
- */
-
-METHODDEF(void)
-fullsize_smooth_downsample (j_compress_ptr cinfo, jpeg_component_info *compptr,
-			    JSAMPARRAY input_data, JSAMPARRAY output_data)
-{
-  int outrow;
-  JDIMENSION colctr;
-  JDIMENSION output_cols = compptr->width_in_blocks * DCTSIZE;
-  register JSAMPROW inptr, above_ptr, below_ptr, outptr;
-  INT32 membersum, neighsum, memberscale, neighscale;
-  int colsum, lastcolsum, nextcolsum;
-
-  /* Expand input data enough to let all the output samples be generated
-   * by the standard loop.  Special-casing padded output would be more
-   * efficient.
-   */
-  expand_right_edge(input_data - 1, cinfo->max_v_samp_factor + 2,
-		    cinfo->image_width, output_cols);
-
-  /* Each of the eight neighbor pixels contributes a fraction SF to the
-   * smoothed pixel, while the main pixel contributes (1-8*SF).  In order
-   * to use integer arithmetic, these factors are multiplied by 2^16 = 65536.
-   * Also recall that SF = smoothing_factor / 1024.
-   */
-
-  memberscale = 65536L - cinfo->smoothing_factor * 512L; /* scaled 1-8*SF */
-  neighscale = cinfo->smoothing_factor * 64; /* scaled SF */
-
-  for (outrow = 0; outrow < compptr->v_samp_factor; outrow++) {
-    outptr = output_data[outrow];
-    inptr = input_data[outrow];
-    above_ptr = input_data[outrow-1];
-    below_ptr = input_data[outrow+1];
-
-    /* Special case for first column */
-    colsum = GETJSAMPLE(*above_ptr++) + GETJSAMPLE(*below_ptr++) +
-	     GETJSAMPLE(*inptr);
-    membersum = GETJSAMPLE(*inptr++);
-    nextcolsum = GETJSAMPLE(*above_ptr) + GETJSAMPLE(*below_ptr) +
-		 GETJSAMPLE(*inptr);
-    neighsum = colsum + (colsum - membersum) + nextcolsum;
-    membersum = membersum * memberscale + neighsum * neighscale;
-    *outptr++ = (JSAMPLE) ((membersum + 32768) >> 16);
-    lastcolsum = colsum; colsum = nextcolsum;
-
-    for (colctr = output_cols - 2; colctr > 0; colctr--) {
-      membersum = GETJSAMPLE(*inptr++);
-      above_ptr++; below_ptr++;
-      nextcolsum = GETJSAMPLE(*above_ptr) + GETJSAMPLE(*below_ptr) +
-		   GETJSAMPLE(*inptr);
-      neighsum = lastcolsum + (colsum - membersum) + nextcolsum;
-      membersum = membersum * memberscale + neighsum * neighscale;
-      *outptr++ = (JSAMPLE) ((membersum + 32768) >> 16);
-      lastcolsum = colsum; colsum = nextcolsum;
-    }
-
-    /* Special case for last column */
-    membersum = GETJSAMPLE(*inptr);
-    neighsum = lastcolsum + (colsum - membersum) + colsum;
-    membersum = membersum * memberscale + neighsum * neighscale;
-    *outptr = (JSAMPLE) ((membersum + 32768) >> 16);
-
-  }
-}
-
-#endif /* INPUT_SMOOTHING_SUPPORTED */
-
-
-/*
- * Module initialization routine for downsampling.
- * Note that we must select a routine for each component.
- */
-
-GLOBAL(void)
-jinit_downsampler (j_compress_ptr cinfo)
-{
-  my_downsample_ptr downsample;
-  int ci;
-  jpeg_component_info * compptr;
-  boolean smoothok = TRUE;
-
-  downsample = (my_downsample_ptr)
-    (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
-				SIZEOF(my_downsampler));
-  cinfo->downsample = (struct jpeg_downsampler *) downsample;
-  downsample->pub.start_pass = start_pass_downsample;
-  downsample->pub.downsample = sep_downsample;
-  downsample->pub.need_context_rows = FALSE;
-
-  if (cinfo->CCIR601_sampling)
-    ERREXIT(cinfo, JERR_CCIR601_NOTIMPL);
-
-  /* Verify we can handle the sampling factors, and set up method pointers */
-  for (ci = 0, compptr = cinfo->comp_info; ci < cinfo->num_components;
-       ci++, compptr++) {
-    if (compptr->h_samp_factor == cinfo->max_h_samp_factor &&
-	compptr->v_samp_factor == cinfo->max_v_samp_factor) {
-#ifdef INPUT_SMOOTHING_SUPPORTED
-      if (cinfo->smoothing_factor) {
-	downsample->methods[ci] = fullsize_smooth_downsample;
-	downsample->pub.need_context_rows = TRUE;
-      } else
-#endif
-	downsample->methods[ci] = fullsize_downsample;
-    } else if (compptr->h_samp_factor * 2 == cinfo->max_h_samp_factor &&
-	       compptr->v_samp_factor == cinfo->max_v_samp_factor) {
-      smoothok = FALSE;
-      downsample->methods[ci] = h2v1_downsample;
-    } else if (compptr->h_samp_factor * 2 == cinfo->max_h_samp_factor &&
-	       compptr->v_samp_factor * 2 == cinfo->max_v_samp_factor) {
-#ifdef INPUT_SMOOTHING_SUPPORTED
-      if (cinfo->smoothing_factor) {
-	downsample->methods[ci] = h2v2_smooth_downsample;
-	downsample->pub.need_context_rows = TRUE;
-      } else
-#endif
-	downsample->methods[ci] = h2v2_downsample;
-    } else if ((cinfo->max_h_samp_factor % compptr->h_samp_factor) == 0 &&
-	       (cinfo->max_v_samp_factor % compptr->v_samp_factor) == 0) {
-      smoothok = FALSE;
-      downsample->methods[ci] = int_downsample;
-    } else
-      ERREXIT(cinfo, JERR_FRACT_SAMPLE_NOTIMPL);
-  }
-
-#ifdef INPUT_SMOOTHING_SUPPORTED
-  if (cinfo->smoothing_factor && !smoothok)
-    TRACEMS(cinfo, 0, JTRC_SMOOTH_NOTIMPL);
-#endif
-}
diff --git a/src/libjpeg/jctrans.c b/src/libjpeg/jctrans.c
deleted file mode 100644
index 8b36e36..0000000
--- a/src/libjpeg/jctrans.c
+++ /dev/null
@@ -1,388 +0,0 @@
-/*
- * jctrans.c
- *
- * Copyright (C) 1995-1998, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains library routines for transcoding compression,
- * that is, writing raw DCT coefficient arrays to an output JPEG file.
- * The routines in jcapimin.c will also be needed by a transcoder.
- */
-
-#define JPEG_INTERNALS
-#include "jinclude.h"
-#include "jpeglib.h"
-
-
-/* Forward declarations */
-LOCAL(void) transencode_master_selection
-	JPP((j_compress_ptr cinfo, jvirt_barray_ptr * coef_arrays));
-LOCAL(void) transencode_coef_controller
-	JPP((j_compress_ptr cinfo, jvirt_barray_ptr * coef_arrays));
-
-
-/*
- * Compression initialization for writing raw-coefficient data.
- * Before calling this, all parameters and a data destination must be set up.
- * Call jpeg_finish_compress() to actually write the data.
- *
- * The number of passed virtual arrays must match cinfo->num_components.
- * Note that the virtual arrays need not be filled or even realized at
- * the time write_coefficients is called; indeed, if the virtual arrays
- * were requested from this compression object's memory manager, they
- * typically will be realized during this routine and filled afterwards.
- */
-
-GLOBAL(void)
-jpeg_write_coefficients (j_compress_ptr cinfo, jvirt_barray_ptr * coef_arrays)
-{
-  if (cinfo->global_state != CSTATE_START)
-    ERREXIT1(cinfo, JERR_BAD_STATE, cinfo->global_state);
-  /* Mark all tables to be written */
-  jpeg_suppress_tables(cinfo, FALSE);
-  /* (Re)initialize error mgr and destination modules */
-  (*cinfo->err->reset_error_mgr) ((j_common_ptr) cinfo);
-  (*cinfo->dest->init_destination) (cinfo);
-  /* Perform master selection of active modules */
-  transencode_master_selection(cinfo, coef_arrays);
-  /* Wait for jpeg_finish_compress() call */
-  cinfo->next_scanline = 0;	/* so jpeg_write_marker works */
-  cinfo->global_state = CSTATE_WRCOEFS;
-}
-
-
-/*
- * Initialize the compression object with default parameters,
- * then copy from the source object all parameters needed for lossless
- * transcoding.  Parameters that can be varied without loss (such as
- * scan script and Huffman optimization) are left in their default states.
- */
-
-GLOBAL(void)
-jpeg_copy_critical_parameters (j_decompress_ptr srcinfo,
-			       j_compress_ptr dstinfo)
-{
-  JQUANT_TBL ** qtblptr;
-  jpeg_component_info *incomp, *outcomp;
-  JQUANT_TBL *c_quant, *slot_quant;
-  int tblno, ci, coefi;
-
-  /* Safety check to ensure start_compress not called yet. */
-  if (dstinfo->global_state != CSTATE_START)
-    ERREXIT1(dstinfo, JERR_BAD_STATE, dstinfo->global_state);
-  /* Copy fundamental image dimensions */
-  dstinfo->image_width = srcinfo->image_width;
-  dstinfo->image_height = srcinfo->image_height;
-  dstinfo->input_components = srcinfo->num_components;
-  dstinfo->in_color_space = srcinfo->jpeg_color_space;
-  /* Initialize all parameters to default values */
-  jpeg_set_defaults(dstinfo);
-  /* jpeg_set_defaults may choose wrong colorspace, eg YCbCr if input is RGB.
-   * Fix it to get the right header markers for the image colorspace.
-   */
-  jpeg_set_colorspace(dstinfo, srcinfo->jpeg_color_space);
-  dstinfo->data_precision = srcinfo->data_precision;
-  dstinfo->CCIR601_sampling = srcinfo->CCIR601_sampling;
-  /* Copy the source's quantization tables. */
-  for (tblno = 0; tblno < NUM_QUANT_TBLS; tblno++) {
-    if (srcinfo->quant_tbl_ptrs[tblno] != NULL) {
-      qtblptr = & dstinfo->quant_tbl_ptrs[tblno];
-      if (*qtblptr == NULL)
-	*qtblptr = jpeg_alloc_quant_table((j_common_ptr) dstinfo);
-      MEMCOPY((*qtblptr)->quantval,
-	      srcinfo->quant_tbl_ptrs[tblno]->quantval,
-	      SIZEOF((*qtblptr)->quantval));
-      (*qtblptr)->sent_table = FALSE;
-    }
-  }
-  /* Copy the source's per-component info.
-   * Note we assume jpeg_set_defaults has allocated the dest comp_info array.
-   */
-  dstinfo->num_components = srcinfo->num_components;
-  if (dstinfo->num_components < 1 || dstinfo->num_components > MAX_COMPONENTS)
-    ERREXIT2(dstinfo, JERR_COMPONENT_COUNT, dstinfo->num_components,
-	     MAX_COMPONENTS);
-  for (ci = 0, incomp = srcinfo->comp_info, outcomp = dstinfo->comp_info;
-       ci < dstinfo->num_components; ci++, incomp++, outcomp++) {
-    outcomp->component_id = incomp->component_id;
-    outcomp->h_samp_factor = incomp->h_samp_factor;
-    outcomp->v_samp_factor = incomp->v_samp_factor;
-    outcomp->quant_tbl_no = incomp->quant_tbl_no;
-    /* Make sure saved quantization table for component matches the qtable
-     * slot.  If not, the input file re-used this qtable slot.
-     * IJG encoder currently cannot duplicate this.
-     */
-    tblno = outcomp->quant_tbl_no;
-    if (tblno < 0 || tblno >= NUM_QUANT_TBLS ||
-	srcinfo->quant_tbl_ptrs[tblno] == NULL)
-      ERREXIT1(dstinfo, JERR_NO_QUANT_TABLE, tblno);
-    slot_quant = srcinfo->quant_tbl_ptrs[tblno];
-    c_quant = incomp->quant_table;
-    if (c_quant != NULL) {
-      for (coefi = 0; coefi < DCTSIZE2; coefi++) {
-	if (c_quant->quantval[coefi] != slot_quant->quantval[coefi])
-	  ERREXIT1(dstinfo, JERR_MISMATCHED_QUANT_TABLE, tblno);
-      }
-    }
-    /* Note: we do not copy the source's Huffman table assignments;
-     * instead we rely on jpeg_set_colorspace to have made a suitable choice.
-     */
-  }
-  /* Also copy JFIF version and resolution information, if available.
-   * Strictly speaking this isn't "critical" info, but it's nearly
-   * always appropriate to copy it if available.  In particular,
-   * if the application chooses to copy JFIF 1.02 extension markers from
-   * the source file, we need to copy the version to make sure we don't
-   * emit a file that has 1.02 extensions but a claimed version of 1.01.
-   * We will *not*, however, copy version info from mislabeled "2.01" files.
-   */
-  if (srcinfo->saw_JFIF_marker) {
-    if (srcinfo->JFIF_major_version == 1) {
-      dstinfo->JFIF_major_version = srcinfo->JFIF_major_version;
-      dstinfo->JFIF_minor_version = srcinfo->JFIF_minor_version;
-    }
-    dstinfo->density_unit = srcinfo->density_unit;
-    dstinfo->X_density = srcinfo->X_density;
-    dstinfo->Y_density = srcinfo->Y_density;
-  }
-}
-
-
-/*
- * Master selection of compression modules for transcoding.
- * This substitutes for jcinit.c's initialization of the full compressor.
- */
-
-LOCAL(void)
-transencode_master_selection (j_compress_ptr cinfo,
-			      jvirt_barray_ptr * coef_arrays)
-{
-  /* Although we don't actually use input_components for transcoding,
-   * jcmaster.c's initial_setup will complain if input_components is 0.
-   */
-  cinfo->input_components = 1;
-  /* Initialize master control (includes parameter checking/processing) */
-  jinit_c_master_control(cinfo, TRUE /* transcode only */);
-
-  /* Entropy encoding: either Huffman or arithmetic coding. */
-  if (cinfo->arith_code) {
-    ERREXIT(cinfo, JERR_ARITH_NOTIMPL);
-  } else {
-    if (cinfo->progressive_mode) {
-#ifdef C_PROGRESSIVE_SUPPORTED
-      jinit_phuff_encoder(cinfo);
-#else
-      ERREXIT(cinfo, JERR_NOT_COMPILED);
-#endif
-    } else
-      jinit_huff_encoder(cinfo);
-  }
-
-  /* We need a special coefficient buffer controller. */
-  transencode_coef_controller(cinfo, coef_arrays);
-
-  jinit_marker_writer(cinfo);
-
-  /* We can now tell the memory manager to allocate virtual arrays. */
-  (*cinfo->mem->realize_virt_arrays) ((j_common_ptr) cinfo);
-
-  /* Write the datastream header (SOI, JFIF) immediately.
-   * Frame and scan headers are postponed till later.
-   * This lets application insert special markers after the SOI.
-   */
-  (*cinfo->marker->write_file_header) (cinfo);
-}
-
-
-/*
- * The rest of this file is a special implementation of the coefficient
- * buffer controller.  This is similar to jccoefct.c, but it handles only
- * output from presupplied virtual arrays.  Furthermore, we generate any
- * dummy padding blocks on-the-fly rather than expecting them to be present
- * in the arrays.
- */
-
-/* Private buffer controller object */
-
-typedef struct {
-  struct jpeg_c_coef_controller pub; /* public fields */
-
-  JDIMENSION iMCU_row_num;	/* iMCU row # within image */
-  JDIMENSION mcu_ctr;		/* counts MCUs processed in current row */
-  int MCU_vert_offset;		/* counts MCU rows within iMCU row */
-  int MCU_rows_per_iMCU_row;	/* number of such rows needed */
-
-  /* Virtual block array for each component. */
-  jvirt_barray_ptr * whole_image;
-
-  /* Workspace for constructing dummy blocks at right/bottom edges. */
-  JBLOCKROW dummy_buffer[C_MAX_BLOCKS_IN_MCU];
-} my_coef_controller;
-
-typedef my_coef_controller * my_coef_ptr;
-
-
-LOCAL(void)
-start_iMCU_row (j_compress_ptr cinfo)
-/* Reset within-iMCU-row counters for a new row */
-{
-  my_coef_ptr coef = (my_coef_ptr) cinfo->coef;
-
-  /* In an interleaved scan, an MCU row is the same as an iMCU row.
-   * In a noninterleaved scan, an iMCU row has v_samp_factor MCU rows.
-   * But at the bottom of the image, process only what's left.
-   */
-  if (cinfo->comps_in_scan > 1) {
-    coef->MCU_rows_per_iMCU_row = 1;
-  } else {
-    if (coef->iMCU_row_num < (cinfo->total_iMCU_rows-1))
-      coef->MCU_rows_per_iMCU_row = cinfo->cur_comp_info[0]->v_samp_factor;
-    else
-      coef->MCU_rows_per_iMCU_row = cinfo->cur_comp_info[0]->last_row_height;
-  }
-
-  coef->mcu_ctr = 0;
-  coef->MCU_vert_offset = 0;
-}
-
-
-/*
- * Initialize for a processing pass.
- */
-
-METHODDEF(void)
-start_pass_coef (j_compress_ptr cinfo, J_BUF_MODE pass_mode)
-{
-  my_coef_ptr coef = (my_coef_ptr) cinfo->coef;
-
-  if (pass_mode != JBUF_CRANK_DEST)
-    ERREXIT(cinfo, JERR_BAD_BUFFER_MODE);
-
-  coef->iMCU_row_num = 0;
-  start_iMCU_row(cinfo);
-}
-
-
-/*
- * Process some data.
- * We process the equivalent of one fully interleaved MCU row ("iMCU" row)
- * per call, ie, v_samp_factor block rows for each component in the scan.
- * The data is obtained from the virtual arrays and fed to the entropy coder.
- * Returns TRUE if the iMCU row is completed, FALSE if suspended.
- *
- * NB: input_buf is ignored; it is likely to be a NULL pointer.
- */
-
-METHODDEF(boolean)
-compress_output (j_compress_ptr cinfo, JSAMPIMAGE input_buf)
-{
-  my_coef_ptr coef = (my_coef_ptr) cinfo->coef;
-  JDIMENSION MCU_col_num;	/* index of current MCU within row */
-  JDIMENSION last_MCU_col = cinfo->MCUs_per_row - 1;
-  JDIMENSION last_iMCU_row = cinfo->total_iMCU_rows - 1;
-  int blkn, ci, xindex, yindex, yoffset, blockcnt;
-  JDIMENSION start_col;
-  JBLOCKARRAY buffer[MAX_COMPS_IN_SCAN];
-  JBLOCKROW MCU_buffer[C_MAX_BLOCKS_IN_MCU];
-  JBLOCKROW buffer_ptr;
-  jpeg_component_info *compptr;
-
-  /* Align the virtual buffers for the components used in this scan. */
-  for (ci = 0; ci < cinfo->comps_in_scan; ci++) {
-    compptr = cinfo->cur_comp_info[ci];
-    buffer[ci] = (*cinfo->mem->access_virt_barray)
-      ((j_common_ptr) cinfo, coef->whole_image[compptr->component_index],
-       coef->iMCU_row_num * compptr->v_samp_factor,
-       (JDIMENSION) compptr->v_samp_factor, FALSE);
-  }
-
-  /* Loop to process one whole iMCU row */
-  for (yoffset = coef->MCU_vert_offset; yoffset < coef->MCU_rows_per_iMCU_row;
-       yoffset++) {
-    for (MCU_col_num = coef->mcu_ctr; MCU_col_num < cinfo->MCUs_per_row;
-	 MCU_col_num++) {
-      /* Construct list of pointers to DCT blocks belonging to this MCU */
-      blkn = 0;			/* index of current DCT block within MCU */
-      for (ci = 0; ci < cinfo->comps_in_scan; ci++) {
-	compptr = cinfo->cur_comp_info[ci];
-	start_col = MCU_col_num * compptr->MCU_width;
-	blockcnt = (MCU_col_num < last_MCU_col) ? compptr->MCU_width
-						: compptr->last_col_width;
-	for (yindex = 0; yindex < compptr->MCU_height; yindex++) {
-	  if (coef->iMCU_row_num < last_iMCU_row ||
-	      yindex+yoffset < compptr->last_row_height) {
-	    /* Fill in pointers to real blocks in this row */
-	    buffer_ptr = buffer[ci][yindex+yoffset] + start_col;
-	    for (xindex = 0; xindex < blockcnt; xindex++)
-	      MCU_buffer[blkn++] = buffer_ptr++;
-	  } else {
-	    /* At bottom of image, need a whole row of dummy blocks */
-	    xindex = 0;
-	  }
-	  /* Fill in any dummy blocks needed in this row.
-	   * Dummy blocks are filled in the same way as in jccoefct.c:
-	   * all zeroes in the AC entries, DC entries equal to previous
-	   * block's DC value.  The init routine has already zeroed the
-	   * AC entries, so we need only set the DC entries correctly.
-	   */
-	  for (; xindex < compptr->MCU_width; xindex++) {
-	    MCU_buffer[blkn] = coef->dummy_buffer[blkn];
-	    MCU_buffer[blkn][0][0] = MCU_buffer[blkn-1][0][0];
-	    blkn++;
-	  }
-	}
-      }
-      /* Try to write the MCU. */
-      if (! (*cinfo->entropy->encode_mcu) (cinfo, MCU_buffer)) {
-	/* Suspension forced; update state counters and exit */
-	coef->MCU_vert_offset = yoffset;
-	coef->mcu_ctr = MCU_col_num;
-	return FALSE;
-      }
-    }
-    /* Completed an MCU row, but perhaps not an iMCU row */
-    coef->mcu_ctr = 0;
-  }
-  /* Completed the iMCU row, advance counters for next one */
-  coef->iMCU_row_num++;
-  start_iMCU_row(cinfo);
-  return TRUE;
-}
-
-
-/*
- * Initialize coefficient buffer controller.
- *
- * Each passed coefficient array must be the right size for that
- * coefficient: width_in_blocks wide and height_in_blocks high,
- * with unitheight at least v_samp_factor.
- */
-
-LOCAL(void)
-transencode_coef_controller (j_compress_ptr cinfo,
-			     jvirt_barray_ptr * coef_arrays)
-{
-  my_coef_ptr coef;
-  JBLOCKROW buffer;
-  int i;
-
-  coef = (my_coef_ptr)
-    (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
-				SIZEOF(my_coef_controller));
-  cinfo->coef = (struct jpeg_c_coef_controller *) coef;
-  coef->pub.start_pass = start_pass_coef;
-  coef->pub.compress_data = compress_output;
-
-  /* Save pointer to virtual arrays */
-  coef->whole_image = coef_arrays;
-
-  /* Allocate and pre-zero space for dummy DCT blocks. */
-  buffer = (JBLOCKROW)
-    (*cinfo->mem->alloc_large) ((j_common_ptr) cinfo, JPOOL_IMAGE,
-				C_MAX_BLOCKS_IN_MCU * SIZEOF(JBLOCK));
-  jzero_far((void FAR *) buffer, C_MAX_BLOCKS_IN_MCU * SIZEOF(JBLOCK));
-  for (i = 0; i < C_MAX_BLOCKS_IN_MCU; i++) {
-    coef->dummy_buffer[i] = buffer + i;
-  }
-}
diff --git a/src/libjpeg/jdapimin.c b/src/libjpeg/jdapimin.c
deleted file mode 100644
index bd1df92..0000000
--- a/src/libjpeg/jdapimin.c
+++ /dev/null
@@ -1,395 +0,0 @@
-/*
- * jdapimin.c
- *
- * Copyright (C) 1994-1998, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains application interface code for the decompression half
- * of the JPEG library.  These are the "minimum" API routines that may be
- * needed in either the normal full-decompression case or the
- * transcoding-only case.
- *
- * Most of the routines intended to be called directly by an application
- * are in this file or in jdapistd.c.  But also see jcomapi.c for routines
- * shared by compression and decompression, and jdtrans.c for the transcoding
- * case.
- */
-
-#define JPEG_INTERNALS
-#include "jinclude.h"
-#include "jpeglib.h"
-
-
-/*
- * Initialization of a JPEG decompression object.
- * The error manager must already be set up (in case memory manager fails).
- */
-
-GLOBAL(void)
-jpeg_CreateDecompress (j_decompress_ptr cinfo, int version, size_t structsize)
-{
-  int i;
-
-  /* Guard against version mismatches between library and caller. */
-  cinfo->mem = NULL;		/* so jpeg_destroy knows mem mgr not called */
-  if (version != JPEG_LIB_VERSION)
-    ERREXIT2(cinfo, JERR_BAD_LIB_VERSION, JPEG_LIB_VERSION, version);
-  if (structsize != SIZEOF(struct jpeg_decompress_struct))
-    ERREXIT2(cinfo, JERR_BAD_STRUCT_SIZE, 
-	     (int) SIZEOF(struct jpeg_decompress_struct), (int) structsize);
-
-  /* For debugging purposes, we zero the whole master structure.
-   * But the application has already set the err pointer, and may have set
-   * client_data, so we have to save and restore those fields.
-   * Note: if application hasn't set client_data, tools like Purify may
-   * complain here.
-   */
-  {
-    struct jpeg_error_mgr * err = cinfo->err;
-    void * client_data = cinfo->client_data; /* ignore Purify complaint here */
-    MEMZERO(cinfo, SIZEOF(struct jpeg_decompress_struct));
-    cinfo->err = err;
-    cinfo->client_data = client_data;
-  }
-  cinfo->is_decompressor = TRUE;
-
-  /* Initialize a memory manager instance for this object */
-  jinit_memory_mgr((j_common_ptr) cinfo);
-
-  /* Zero out pointers to permanent structures. */
-  cinfo->progress = NULL;
-  cinfo->src = NULL;
-
-  for (i = 0; i < NUM_QUANT_TBLS; i++)
-    cinfo->quant_tbl_ptrs[i] = NULL;
-
-  for (i = 0; i < NUM_HUFF_TBLS; i++) {
-    cinfo->dc_huff_tbl_ptrs[i] = NULL;
-    cinfo->ac_huff_tbl_ptrs[i] = NULL;
-  }
-
-  /* Initialize marker processor so application can override methods
-   * for COM, APPn markers before calling jpeg_read_header.
-   */
-  cinfo->marker_list = NULL;
-  jinit_marker_reader(cinfo);
-
-  /* And initialize the overall input controller. */
-  jinit_input_controller(cinfo);
-
-  /* OK, I'm ready */
-  cinfo->global_state = DSTATE_START;
-}
-
-
-/*
- * Destruction of a JPEG decompression object
- */
-
-GLOBAL(void)
-jpeg_destroy_decompress (j_decompress_ptr cinfo)
-{
-  jpeg_destroy((j_common_ptr) cinfo); /* use common routine */
-}
-
-
-/*
- * Abort processing of a JPEG decompression operation,
- * but don't destroy the object itself.
- */
-
-GLOBAL(void)
-jpeg_abort_decompress (j_decompress_ptr cinfo)
-{
-  jpeg_abort((j_common_ptr) cinfo); /* use common routine */
-}
-
-
-/*
- * Set default decompression parameters.
- */
-
-LOCAL(void)
-default_decompress_parms (j_decompress_ptr cinfo)
-{
-  /* Guess the input colorspace, and set output colorspace accordingly. */
-  /* (Wish JPEG committee had provided a real way to specify this...) */
-  /* Note application may override our guesses. */
-  switch (cinfo->num_components) {
-  case 1:
-    cinfo->jpeg_color_space = JCS_GRAYSCALE;
-    cinfo->out_color_space = JCS_GRAYSCALE;
-    break;
-    
-  case 3:
-    if (cinfo->saw_JFIF_marker) {
-      cinfo->jpeg_color_space = JCS_YCbCr; /* JFIF implies YCbCr */
-    } else if (cinfo->saw_Adobe_marker) {
-      switch (cinfo->Adobe_transform) {
-      case 0:
-	cinfo->jpeg_color_space = JCS_RGB;
-	break;
-      case 1:
-	cinfo->jpeg_color_space = JCS_YCbCr;
-	break;
-      default:
-	WARNMS1(cinfo, JWRN_ADOBE_XFORM, cinfo->Adobe_transform);
-	cinfo->jpeg_color_space = JCS_YCbCr; /* assume it's YCbCr */
-	break;
-      }
-    } else {
-      /* Saw no special markers, try to guess from the component IDs */
-      int cid0 = cinfo->comp_info[0].component_id;
-      int cid1 = cinfo->comp_info[1].component_id;
-      int cid2 = cinfo->comp_info[2].component_id;
-
-      if (cid0 == 1 && cid1 == 2 && cid2 == 3)
-	cinfo->jpeg_color_space = JCS_YCbCr; /* assume JFIF w/out marker */
-      else if (cid0 == 82 && cid1 == 71 && cid2 == 66)
-	cinfo->jpeg_color_space = JCS_RGB; /* ASCII 'R', 'G', 'B' */
-      else {
-	TRACEMS3(cinfo, 1, JTRC_UNKNOWN_IDS, cid0, cid1, cid2);
-	cinfo->jpeg_color_space = JCS_YCbCr; /* assume it's YCbCr */
-      }
-    }
-    /* Always guess RGB is proper output colorspace. */
-    cinfo->out_color_space = JCS_RGB;
-    break;
-    
-  case 4:
-    if (cinfo->saw_Adobe_marker) {
-      switch (cinfo->Adobe_transform) {
-      case 0:
-	cinfo->jpeg_color_space = JCS_CMYK;
-	break;
-      case 2:
-	cinfo->jpeg_color_space = JCS_YCCK;
-	break;
-      default:
-	WARNMS1(cinfo, JWRN_ADOBE_XFORM, cinfo->Adobe_transform);
-	cinfo->jpeg_color_space = JCS_YCCK; /* assume it's YCCK */
-	break;
-      }
-    } else {
-      /* No special markers, assume straight CMYK. */
-      cinfo->jpeg_color_space = JCS_CMYK;
-    }
-    cinfo->out_color_space = JCS_CMYK;
-    break;
-    
-  default:
-    cinfo->jpeg_color_space = JCS_UNKNOWN;
-    cinfo->out_color_space = JCS_UNKNOWN;
-    break;
-  }
-
-  /* Set defaults for other decompression parameters. */
-  cinfo->scale_num = 1;		/* 1:1 scaling */
-  cinfo->scale_denom = 1;
-  cinfo->output_gamma = 1.0;
-  cinfo->buffered_image = FALSE;
-  cinfo->raw_data_out = FALSE;
-  cinfo->dct_method = JDCT_DEFAULT;
-  cinfo->do_fancy_upsampling = TRUE;
-  cinfo->do_block_smoothing = TRUE;
-  cinfo->quantize_colors = FALSE;
-  /* We set these in case application only sets quantize_colors. */
-  cinfo->dither_mode = JDITHER_FS;
-#ifdef QUANT_2PASS_SUPPORTED
-  cinfo->two_pass_quantize = TRUE;
-#else
-  cinfo->two_pass_quantize = FALSE;
-#endif
-  cinfo->desired_number_of_colors = 256;
-  cinfo->colormap = NULL;
-  /* Initialize for no mode change in buffered-image mode. */
-  cinfo->enable_1pass_quant = FALSE;
-  cinfo->enable_external_quant = FALSE;
-  cinfo->enable_2pass_quant = FALSE;
-}
-
-
-/*
- * Decompression startup: read start of JPEG datastream to see what's there.
- * Need only initialize JPEG object and supply a data source before calling.
- *
- * This routine will read as far as the first SOS marker (ie, actual start of
- * compressed data), and will save all tables and parameters in the JPEG
- * object.  It will also initialize the decompression parameters to default
- * values, and finally return JPEG_HEADER_OK.  On return, the application may
- * adjust the decompression parameters and then call jpeg_start_decompress.
- * (Or, if the application only wanted to determine the image parameters,
- * the data need not be decompressed.  In that case, call jpeg_abort or
- * jpeg_destroy to release any temporary space.)
- * If an abbreviated (tables only) datastream is presented, the routine will
- * return JPEG_HEADER_TABLES_ONLY upon reaching EOI.  The application may then
- * re-use the JPEG object to read the abbreviated image datastream(s).
- * It is unnecessary (but OK) to call jpeg_abort in this case.
- * The JPEG_SUSPENDED return code only occurs if the data source module
- * requests suspension of the decompressor.  In this case the application
- * should load more source data and then re-call jpeg_read_header to resume
- * processing.
- * If a non-suspending data source is used and require_image is TRUE, then the
- * return code need not be inspected since only JPEG_HEADER_OK is possible.
- *
- * This routine is now just a front end to jpeg_consume_input, with some
- * extra error checking.
- */
-
-GLOBAL(int)
-jpeg_read_header (j_decompress_ptr cinfo, boolean require_image)
-{
-  int retcode;
-
-  if (cinfo->global_state != DSTATE_START &&
-      cinfo->global_state != DSTATE_INHEADER)
-    ERREXIT1(cinfo, JERR_BAD_STATE, cinfo->global_state);
-
-  retcode = jpeg_consume_input(cinfo);
-
-  switch (retcode) {
-  case JPEG_REACHED_SOS:
-    retcode = JPEG_HEADER_OK;
-    break;
-  case JPEG_REACHED_EOI:
-    if (require_image)		/* Complain if application wanted an image */
-      ERREXIT(cinfo, JERR_NO_IMAGE);
-    /* Reset to start state; it would be safer to require the application to
-     * call jpeg_abort, but we can't change it now for compatibility reasons.
-     * A side effect is to free any temporary memory (there shouldn't be any).
-     */
-    jpeg_abort((j_common_ptr) cinfo); /* sets state = DSTATE_START */
-    retcode = JPEG_HEADER_TABLES_ONLY;
-    break;
-  case JPEG_SUSPENDED:
-    /* no work */
-    break;
-  }
-
-  return retcode;
-}
-
-
-/*
- * Consume data in advance of what the decompressor requires.
- * This can be called at any time once the decompressor object has
- * been created and a data source has been set up.
- *
- * This routine is essentially a state machine that handles a couple
- * of critical state-transition actions, namely initial setup and
- * transition from header scanning to ready-for-start_decompress.
- * All the actual input is done via the input controller's consume_input
- * method.
- */
-
-GLOBAL(int)
-jpeg_consume_input (j_decompress_ptr cinfo)
-{
-  int retcode = JPEG_SUSPENDED;
-
-  /* NB: every possible DSTATE value should be listed in this switch */
-  switch (cinfo->global_state) {
-  case DSTATE_START:
-    /* Start-of-datastream actions: reset appropriate modules */
-    (*cinfo->inputctl->reset_input_controller) (cinfo);
-    /* Initialize application's data source module */
-    (*cinfo->src->init_source) (cinfo);
-    cinfo->global_state = DSTATE_INHEADER;
-    /*FALLTHROUGH*/
-  case DSTATE_INHEADER:
-    retcode = (*cinfo->inputctl->consume_input) (cinfo);
-    if (retcode == JPEG_REACHED_SOS) { /* Found SOS, prepare to decompress */
-      /* Set up default parameters based on header data */
-      default_decompress_parms(cinfo);
-      /* Set global state: ready for start_decompress */
-      cinfo->global_state = DSTATE_READY;
-    }
-    break;
-  case DSTATE_READY:
-    /* Can't advance past first SOS until start_decompress is called */
-    retcode = JPEG_REACHED_SOS;
-    break;
-  case DSTATE_PRELOAD:
-  case DSTATE_PRESCAN:
-  case DSTATE_SCANNING:
-  case DSTATE_RAW_OK:
-  case DSTATE_BUFIMAGE:
-  case DSTATE_BUFPOST:
-  case DSTATE_STOPPING:
-    retcode = (*cinfo->inputctl->consume_input) (cinfo);
-    break;
-  default:
-    ERREXIT1(cinfo, JERR_BAD_STATE, cinfo->global_state);
-  }
-  return retcode;
-}
-
-
-/*
- * Have we finished reading the input file?
- */
-
-GLOBAL(boolean)
-jpeg_input_complete (j_decompress_ptr cinfo)
-{
-  /* Check for valid jpeg object */
-  if (cinfo->global_state < DSTATE_START ||
-      cinfo->global_state > DSTATE_STOPPING)
-    ERREXIT1(cinfo, JERR_BAD_STATE, cinfo->global_state);
-  return cinfo->inputctl->eoi_reached;
-}
-
-
-/*
- * Is there more than one scan?
- */
-
-GLOBAL(boolean)
-jpeg_has_multiple_scans (j_decompress_ptr cinfo)
-{
-  /* Only valid after jpeg_read_header completes */
-  if (cinfo->global_state < DSTATE_READY ||
-      cinfo->global_state > DSTATE_STOPPING)
-    ERREXIT1(cinfo, JERR_BAD_STATE, cinfo->global_state);
-  return cinfo->inputctl->has_multiple_scans;
-}
-
-
-/*
- * Finish JPEG decompression.
- *
- * This will normally just verify the file trailer and release temp storage.
- *
- * Returns FALSE if suspended.  The return value need be inspected only if
- * a suspending data source is used.
- */
-
-GLOBAL(boolean)
-jpeg_finish_decompress (j_decompress_ptr cinfo)
-{
-  if ((cinfo->global_state == DSTATE_SCANNING ||
-       cinfo->global_state == DSTATE_RAW_OK) && ! cinfo->buffered_image) {
-    /* Terminate final pass of non-buffered mode */
-    if (cinfo->output_scanline < cinfo->output_height)
-      ERREXIT(cinfo, JERR_TOO_LITTLE_DATA);
-    (*cinfo->master->finish_output_pass) (cinfo);
-    cinfo->global_state = DSTATE_STOPPING;
-  } else if (cinfo->global_state == DSTATE_BUFIMAGE) {
-    /* Finishing after a buffered-image operation */
-    cinfo->global_state = DSTATE_STOPPING;
-  } else if (cinfo->global_state != DSTATE_STOPPING) {
-    /* STOPPING = repeat call after a suspension, anything else is error */
-    ERREXIT1(cinfo, JERR_BAD_STATE, cinfo->global_state);
-  }
-  /* Read until EOI */
-  while (! cinfo->inputctl->eoi_reached) {
-    if ((*cinfo->inputctl->consume_input) (cinfo) == JPEG_SUSPENDED)
-      return FALSE;		/* Suspend, come back later */
-  }
-  /* Do final cleanup */
-  (*cinfo->src->term_source) (cinfo);
-  /* We can use jpeg_abort to release memory and reset global_state */
-  jpeg_abort((j_common_ptr) cinfo);
-  return TRUE;
-}
diff --git a/src/libjpeg/jdapistd.c b/src/libjpeg/jdapistd.c
deleted file mode 100644
index f6c7fff..0000000
--- a/src/libjpeg/jdapistd.c
+++ /dev/null
@@ -1,275 +0,0 @@
-/*
- * jdapistd.c
- *
- * Copyright (C) 1994-1996, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains application interface code for the decompression half
- * of the JPEG library.  These are the "standard" API routines that are
- * used in the normal full-decompression case.  They are not used by a
- * transcoding-only application.  Note that if an application links in
- * jpeg_start_decompress, it will end up linking in the entire decompressor.
- * We thus must separate this file from jdapimin.c to avoid linking the
- * whole decompression library into a transcoder.
- */
-
-#define JPEG_INTERNALS
-#include "jinclude.h"
-#include "jpeglib.h"
-
-
-/* Forward declarations */
-LOCAL(boolean) output_pass_setup JPP((j_decompress_ptr cinfo));
-
-
-/*
- * Decompression initialization.
- * jpeg_read_header must be completed before calling this.
- *
- * If a multipass operating mode was selected, this will do all but the
- * last pass, and thus may take a great deal of time.
- *
- * Returns FALSE if suspended.  The return value need be inspected only if
- * a suspending data source is used.
- */
-
-GLOBAL(boolean)
-jpeg_start_decompress (j_decompress_ptr cinfo)
-{
-  if (cinfo->global_state == DSTATE_READY) {
-    /* First call: initialize master control, select active modules */
-    jinit_master_decompress(cinfo);
-    if (cinfo->buffered_image) {
-      /* No more work here; expecting jpeg_start_output next */
-      cinfo->global_state = DSTATE_BUFIMAGE;
-      return TRUE;
-    }
-    cinfo->global_state = DSTATE_PRELOAD;
-  }
-  if (cinfo->global_state == DSTATE_PRELOAD) {
-    /* If file has multiple scans, absorb them all into the coef buffer */
-    if (cinfo->inputctl->has_multiple_scans) {
-#ifdef D_MULTISCAN_FILES_SUPPORTED
-      for (;;) {
-	int retcode;
-	/* Call progress monitor hook if present */
-	if (cinfo->progress != NULL)
-	  (*cinfo->progress->progress_monitor) ((j_common_ptr) cinfo);
-	/* Absorb some more input */
-	retcode = (*cinfo->inputctl->consume_input) (cinfo);
-	if (retcode == JPEG_SUSPENDED)
-	  return FALSE;
-	if (retcode == JPEG_REACHED_EOI)
-	  break;
-	/* Advance progress counter if appropriate */
-	if (cinfo->progress != NULL &&
-	    (retcode == JPEG_ROW_COMPLETED || retcode == JPEG_REACHED_SOS)) {
-	  if (++cinfo->progress->pass_counter >= cinfo->progress->pass_limit) {
-	    /* jdmaster underestimated number of scans; ratchet up one scan */
-	    cinfo->progress->pass_limit += (long) cinfo->total_iMCU_rows;
-	  }
-	}
-      }
-#else
-      ERREXIT(cinfo, JERR_NOT_COMPILED);
-#endif /* D_MULTISCAN_FILES_SUPPORTED */
-    }
-    cinfo->output_scan_number = cinfo->input_scan_number;
-  } else if (cinfo->global_state != DSTATE_PRESCAN)
-    ERREXIT1(cinfo, JERR_BAD_STATE, cinfo->global_state);
-  /* Perform any dummy output passes, and set up for the final pass */
-  return output_pass_setup(cinfo);
-}
-
-
-/*
- * Set up for an output pass, and perform any dummy pass(es) needed.
- * Common subroutine for jpeg_start_decompress and jpeg_start_output.
- * Entry: global_state = DSTATE_PRESCAN only if previously suspended.
- * Exit: If done, returns TRUE and sets global_state for proper output mode.
- *       If suspended, returns FALSE and sets global_state = DSTATE_PRESCAN.
- */
-
-LOCAL(boolean)
-output_pass_setup (j_decompress_ptr cinfo)
-{
-  if (cinfo->global_state != DSTATE_PRESCAN) {
-    /* First call: do pass setup */
-    (*cinfo->master->prepare_for_output_pass) (cinfo);
-    cinfo->output_scanline = 0;
-    cinfo->global_state = DSTATE_PRESCAN;
-  }
-  /* Loop over any required dummy passes */
-  while (cinfo->master->is_dummy_pass) {
-#ifdef QUANT_2PASS_SUPPORTED
-    /* Crank through the dummy pass */
-    while (cinfo->output_scanline < cinfo->output_height) {
-      JDIMENSION last_scanline;
-      /* Call progress monitor hook if present */
-      if (cinfo->progress != NULL) {
-	cinfo->progress->pass_counter = (long) cinfo->output_scanline;
-	cinfo->progress->pass_limit = (long) cinfo->output_height;
-	(*cinfo->progress->progress_monitor) ((j_common_ptr) cinfo);
-      }
-      /* Process some data */
-      last_scanline = cinfo->output_scanline;
-      (*cinfo->main->process_data) (cinfo, (JSAMPARRAY) NULL,
-				    &cinfo->output_scanline, (JDIMENSION) 0);
-      if (cinfo->output_scanline == last_scanline)
-	return FALSE;		/* No progress made, must suspend */
-    }
-    /* Finish up dummy pass, and set up for another one */
-    (*cinfo->master->finish_output_pass) (cinfo);
-    (*cinfo->master->prepare_for_output_pass) (cinfo);
-    cinfo->output_scanline = 0;
-#else
-    ERREXIT(cinfo, JERR_NOT_COMPILED);
-#endif /* QUANT_2PASS_SUPPORTED */
-  }
-  /* Ready for application to drive output pass through
-   * jpeg_read_scanlines or jpeg_read_raw_data.
-   */
-  cinfo->global_state = cinfo->raw_data_out ? DSTATE_RAW_OK : DSTATE_SCANNING;
-  return TRUE;
-}
-
-
-/*
- * Read some scanlines of data from the JPEG decompressor.
- *
- * The return value will be the number of lines actually read.
- * This may be less than the number requested in several cases,
- * including bottom of image, data source suspension, and operating
- * modes that emit multiple scanlines at a time.
- *
- * Note: we warn about excess calls to jpeg_read_scanlines() since
- * this likely signals an application programmer error.  However,
- * an oversize buffer (max_lines > scanlines remaining) is not an error.
- */
-
-GLOBAL(JDIMENSION)
-jpeg_read_scanlines (j_decompress_ptr cinfo, JSAMPARRAY scanlines,
-		     JDIMENSION max_lines)
-{
-  JDIMENSION row_ctr;
-
-  if (cinfo->global_state != DSTATE_SCANNING)
-    ERREXIT1(cinfo, JERR_BAD_STATE, cinfo->global_state);
-  if (cinfo->output_scanline >= cinfo->output_height) {
-    WARNMS(cinfo, JWRN_TOO_MUCH_DATA);
-    return 0;
-  }
-
-  /* Call progress monitor hook if present */
-  if (cinfo->progress != NULL) {
-    cinfo->progress->pass_counter = (long) cinfo->output_scanline;
-    cinfo->progress->pass_limit = (long) cinfo->output_height;
-    (*cinfo->progress->progress_monitor) ((j_common_ptr) cinfo);
-  }
-
-  /* Process some data */
-  row_ctr = 0;
-  (*cinfo->main->process_data) (cinfo, scanlines, &row_ctr, max_lines);
-  cinfo->output_scanline += row_ctr;
-  return row_ctr;
-}
-
-
-/*
- * Alternate entry point to read raw data.
- * Processes exactly one iMCU row per call, unless suspended.
- */
-
-GLOBAL(JDIMENSION)
-jpeg_read_raw_data (j_decompress_ptr cinfo, JSAMPIMAGE data,
-		    JDIMENSION max_lines)
-{
-  JDIMENSION lines_per_iMCU_row;
-
-  if (cinfo->global_state != DSTATE_RAW_OK)
-    ERREXIT1(cinfo, JERR_BAD_STATE, cinfo->global_state);
-  if (cinfo->output_scanline >= cinfo->output_height) {
-    WARNMS(cinfo, JWRN_TOO_MUCH_DATA);
-    return 0;
-  }
-
-  /* Call progress monitor hook if present */
-  if (cinfo->progress != NULL) {
-    cinfo->progress->pass_counter = (long) cinfo->output_scanline;
-    cinfo->progress->pass_limit = (long) cinfo->output_height;
-    (*cinfo->progress->progress_monitor) ((j_common_ptr) cinfo);
-  }
-
-  /* Verify that at least one iMCU row can be returned. */
-  lines_per_iMCU_row = cinfo->max_v_samp_factor * cinfo->min_DCT_scaled_size;
-  if (max_lines < lines_per_iMCU_row)
-    ERREXIT(cinfo, JERR_BUFFER_SIZE);
-
-  /* Decompress directly into user's buffer. */
-  if (! (*cinfo->coef->decompress_data) (cinfo, data))
-    return 0;			/* suspension forced, can do nothing more */
-
-  /* OK, we processed one iMCU row. */
-  cinfo->output_scanline += lines_per_iMCU_row;
-  return lines_per_iMCU_row;
-}
-
-
-/* Additional entry points for buffered-image mode. */
-
-#ifdef D_MULTISCAN_FILES_SUPPORTED
-
-/*
- * Initialize for an output pass in buffered-image mode.
- */
-
-GLOBAL(boolean)
-jpeg_start_output (j_decompress_ptr cinfo, int scan_number)
-{
-  if (cinfo->global_state != DSTATE_BUFIMAGE &&
-      cinfo->global_state != DSTATE_PRESCAN)
-    ERREXIT1(cinfo, JERR_BAD_STATE, cinfo->global_state);
-  /* Limit scan number to valid range */
-  if (scan_number <= 0)
-    scan_number = 1;
-  if (cinfo->inputctl->eoi_reached &&
-      scan_number > cinfo->input_scan_number)
-    scan_number = cinfo->input_scan_number;
-  cinfo->output_scan_number = scan_number;
-  /* Perform any dummy output passes, and set up for the real pass */
-  return output_pass_setup(cinfo);
-}
-
-
-/*
- * Finish up after an output pass in buffered-image mode.
- *
- * Returns FALSE if suspended.  The return value need be inspected only if
- * a suspending data source is used.
- */
-
-GLOBAL(boolean)
-jpeg_finish_output (j_decompress_ptr cinfo)
-{
-  if ((cinfo->global_state == DSTATE_SCANNING ||
-       cinfo->global_state == DSTATE_RAW_OK) && cinfo->buffered_image) {
-    /* Terminate this pass. */
-    /* We do not require the whole pass to have been completed. */
-    (*cinfo->master->finish_output_pass) (cinfo);
-    cinfo->global_state = DSTATE_BUFPOST;
-  } else if (cinfo->global_state != DSTATE_BUFPOST) {
-    /* BUFPOST = repeat call after a suspension, anything else is error */
-    ERREXIT1(cinfo, JERR_BAD_STATE, cinfo->global_state);
-  }
-  /* Read markers looking for SOS or EOI */
-  while (cinfo->input_scan_number <= cinfo->output_scan_number &&
-	 ! cinfo->inputctl->eoi_reached) {
-    if ((*cinfo->inputctl->consume_input) (cinfo) == JPEG_SUSPENDED)
-      return FALSE;		/* Suspend, come back later */
-  }
-  cinfo->global_state = DSTATE_BUFIMAGE;
-  return TRUE;
-}
-
-#endif /* D_MULTISCAN_FILES_SUPPORTED */
diff --git a/src/libjpeg/jdatadst.c b/src/libjpeg/jdatadst.c
deleted file mode 100644
index 2ece4e9..0000000
--- a/src/libjpeg/jdatadst.c
+++ /dev/null
@@ -1,151 +0,0 @@
-/*
- * jdatadst.c
- *
- * Copyright (C) 1994-1996, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains compression data destination routines for the case of
- * emitting JPEG data to a file (or any stdio stream).  While these routines
- * are sufficient for most applications, some will want to use a different
- * destination manager.
- * IMPORTANT: we assume that fwrite() will correctly transcribe an array of
- * JOCTETs into 8-bit-wide elements on external storage.  If char is wider
- * than 8 bits on your machine, you may need to do some tweaking.
- */
-
-/* this is not a core library module, so it doesn't define JPEG_INTERNALS */
-#include "jinclude.h"
-#include "jpeglib.h"
-#include "jerror.h"
-
-
-/* Expanded data destination object for stdio output */
-
-typedef struct {
-  struct jpeg_destination_mgr pub; /* public fields */
-
-  FILE * outfile;		/* target stream */
-  JOCTET * buffer;		/* start of buffer */
-} my_destination_mgr;
-
-typedef my_destination_mgr * my_dest_ptr;
-
-#define OUTPUT_BUF_SIZE  4096	/* choose an efficiently fwrite'able size */
-
-
-/*
- * Initialize destination --- called by jpeg_start_compress
- * before any data is actually written.
- */
-
-METHODDEF(void)
-init_destination (j_compress_ptr cinfo)
-{
-  my_dest_ptr dest = (my_dest_ptr) cinfo->dest;
-
-  /* Allocate the output buffer --- it will be released when done with image */
-  dest->buffer = (JOCTET *)
-      (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
-				  OUTPUT_BUF_SIZE * SIZEOF(JOCTET));
-
-  dest->pub.next_output_byte = dest->buffer;
-  dest->pub.free_in_buffer = OUTPUT_BUF_SIZE;
-}
-
-
-/*
- * Empty the output buffer --- called whenever buffer fills up.
- *
- * In typical applications, this should write the entire output buffer
- * (ignoring the current state of next_output_byte & free_in_buffer),
- * reset the pointer & count to the start of the buffer, and return TRUE
- * indicating that the buffer has been dumped.
- *
- * In applications that need to be able to suspend compression due to output
- * overrun, a FALSE return indicates that the buffer cannot be emptied now.
- * In this situation, the compressor will return to its caller (possibly with
- * an indication that it has not accepted all the supplied scanlines).  The
- * application should resume compression after it has made more room in the
- * output buffer.  Note that there are substantial restrictions on the use of
- * suspension --- see the documentation.
- *
- * When suspending, the compressor will back up to a convenient restart point
- * (typically the start of the current MCU). next_output_byte & free_in_buffer
- * indicate where the restart point will be if the current call returns FALSE.
- * Data beyond this point will be regenerated after resumption, so do not
- * write it out when emptying the buffer externally.
- */
-
-METHODDEF(boolean)
-empty_output_buffer (j_compress_ptr cinfo)
-{
-  my_dest_ptr dest = (my_dest_ptr) cinfo->dest;
-
-  if (JFWRITE(dest->outfile, dest->buffer, OUTPUT_BUF_SIZE) !=
-      (size_t) OUTPUT_BUF_SIZE)
-    ERREXIT(cinfo, JERR_FILE_WRITE);
-
-  dest->pub.next_output_byte = dest->buffer;
-  dest->pub.free_in_buffer = OUTPUT_BUF_SIZE;
-
-  return TRUE;
-}
-
-
-/*
- * Terminate destination --- called by jpeg_finish_compress
- * after all data has been written.  Usually needs to flush buffer.
- *
- * NB: *not* called by jpeg_abort or jpeg_destroy; surrounding
- * application must deal with any cleanup that should happen even
- * for error exit.
- */
-
-METHODDEF(void)
-term_destination (j_compress_ptr cinfo)
-{
-  my_dest_ptr dest = (my_dest_ptr) cinfo->dest;
-  size_t datacount = OUTPUT_BUF_SIZE - dest->pub.free_in_buffer;
-
-  /* Write any data remaining in the buffer */
-  if (datacount > 0) {
-    if (JFWRITE(dest->outfile, dest->buffer, datacount) != datacount)
-      ERREXIT(cinfo, JERR_FILE_WRITE);
-  }
-  fflush(dest->outfile);
-  /* Make sure we wrote the output file OK */
-  if (ferror(dest->outfile))
-    ERREXIT(cinfo, JERR_FILE_WRITE);
-}
-
-
-/*
- * Prepare for output to a stdio stream.
- * The caller must have already opened the stream, and is responsible
- * for closing it after finishing compression.
- */
-
-GLOBAL(void)
-jpeg_stdio_dest (j_compress_ptr cinfo, FILE * outfile)
-{
-  my_dest_ptr dest;
-
-  /* The destination object is made permanent so that multiple JPEG images
-   * can be written to the same file without re-executing jpeg_stdio_dest.
-   * This makes it dangerous to use this manager and a different destination
-   * manager serially with the same JPEG object, because their private object
-   * sizes may be different.  Caveat programmer.
-   */
-  if (cinfo->dest == NULL) {	/* first time for this JPEG object? */
-    cinfo->dest = (struct jpeg_destination_mgr *)
-      (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_PERMANENT,
-				  SIZEOF(my_destination_mgr));
-  }
-
-  dest = (my_dest_ptr) cinfo->dest;
-  dest->pub.init_destination = init_destination;
-  dest->pub.empty_output_buffer = empty_output_buffer;
-  dest->pub.term_destination = term_destination;
-  dest->outfile = outfile;
-}
diff --git a/src/libjpeg/jdatasrc.c b/src/libjpeg/jdatasrc.c
deleted file mode 100644
index 29b6983..0000000
--- a/src/libjpeg/jdatasrc.c
+++ /dev/null
@@ -1,212 +0,0 @@
-/*
- * jdatasrc.c
- *
- * Copyright (C) 1994-1996, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains decompression data source routines for the case of
- * reading JPEG data from a file (or any stdio stream).  While these routines
- * are sufficient for most applications, some will want to use a different
- * source manager.
- * IMPORTANT: we assume that fread() will correctly transcribe an array of
- * JOCTETs from 8-bit-wide elements on external storage.  If char is wider
- * than 8 bits on your machine, you may need to do some tweaking.
- */
-
-/* this is not a core library module, so it doesn't define JPEG_INTERNALS */
-#include "jinclude.h"
-#include "jpeglib.h"
-#include "jerror.h"
-
-
-/* Expanded data source object for stdio input */
-
-typedef struct {
-  struct jpeg_source_mgr pub;	/* public fields */
-
-  FILE * infile;		/* source stream */
-  JOCTET * buffer;		/* start of buffer */
-  boolean start_of_file;	/* have we gotten any data yet? */
-} my_source_mgr;
-
-typedef my_source_mgr * my_src_ptr;
-
-#define INPUT_BUF_SIZE  4096	/* choose an efficiently fread'able size */
-
-
-/*
- * Initialize source --- called by jpeg_read_header
- * before any data is actually read.
- */
-
-METHODDEF(void)
-init_source (j_decompress_ptr cinfo)
-{
-  my_src_ptr src = (my_src_ptr) cinfo->src;
-
-  /* We reset the empty-input-file flag for each image,
-   * but we don't clear the input buffer.
-   * This is correct behavior for reading a series of images from one source.
-   */
-  src->start_of_file = TRUE;
-}
-
-
-/*
- * Fill the input buffer --- called whenever buffer is emptied.
- *
- * In typical applications, this should read fresh data into the buffer
- * (ignoring the current state of next_input_byte & bytes_in_buffer),
- * reset the pointer & count to the start of the buffer, and return TRUE
- * indicating that the buffer has been reloaded.  It is not necessary to
- * fill the buffer entirely, only to obtain at least one more byte.
- *
- * There is no such thing as an EOF return.  If the end of the file has been
- * reached, the routine has a choice of ERREXIT() or inserting fake data into
- * the buffer.  In most cases, generating a warning message and inserting a
- * fake EOI marker is the best course of action --- this will allow the
- * decompressor to output however much of the image is there.  However,
- * the resulting error message is misleading if the real problem is an empty
- * input file, so we handle that case specially.
- *
- * In applications that need to be able to suspend compression due to input
- * not being available yet, a FALSE return indicates that no more data can be
- * obtained right now, but more may be forthcoming later.  In this situation,
- * the decompressor will return to its caller (with an indication of the
- * number of scanlines it has read, if any).  The application should resume
- * decompression after it has loaded more data into the input buffer.  Note
- * that there are substantial restrictions on the use of suspension --- see
- * the documentation.
- *
- * When suspending, the decompressor will back up to a convenient restart point
- * (typically the start of the current MCU). next_input_byte & bytes_in_buffer
- * indicate where the restart point will be if the current call returns FALSE.
- * Data beyond this point must be rescanned after resumption, so move it to
- * the front of the buffer rather than discarding it.
- */
-
-METHODDEF(boolean)
-fill_input_buffer (j_decompress_ptr cinfo)
-{
-  my_src_ptr src = (my_src_ptr) cinfo->src;
-  size_t nbytes;
-
-  nbytes = JFREAD(src->infile, src->buffer, INPUT_BUF_SIZE);
-
-  if (nbytes <= 0) {
-    if (src->start_of_file)	/* Treat empty input file as fatal error */
-      ERREXIT(cinfo, JERR_INPUT_EMPTY);
-    WARNMS(cinfo, JWRN_JPEG_EOF);
-    /* Insert a fake EOI marker */
-    src->buffer[0] = (JOCTET) 0xFF;
-    src->buffer[1] = (JOCTET) JPEG_EOI;
-    nbytes = 2;
-  }
-
-  src->pub.next_input_byte = src->buffer;
-  src->pub.bytes_in_buffer = nbytes;
-  src->start_of_file = FALSE;
-
-  return TRUE;
-}
-
-
-/*
- * Skip data --- used to skip over a potentially large amount of
- * uninteresting data (such as an APPn marker).
- *
- * Writers of suspendable-input applications must note that skip_input_data
- * is not granted the right to give a suspension return.  If the skip extends
- * beyond the data currently in the buffer, the buffer can be marked empty so
- * that the next read will cause a fill_input_buffer call that can suspend.
- * Arranging for additional bytes to be discarded before reloading the input
- * buffer is the application writer's problem.
- */
-
-METHODDEF(void)
-skip_input_data (j_decompress_ptr cinfo, long num_bytes)
-{
-  my_src_ptr src = (my_src_ptr) cinfo->src;
-
-  /* Just a dumb implementation for now.  Could use fseek() except
-   * it doesn't work on pipes.  Not clear that being smart is worth
-   * any trouble anyway --- large skips are infrequent.
-   */
-  if (num_bytes > 0) {
-    while (num_bytes > (long) src->pub.bytes_in_buffer) {
-      num_bytes -= (long) src->pub.bytes_in_buffer;
-      (void) fill_input_buffer(cinfo);
-      /* note we assume that fill_input_buffer will never return FALSE,
-       * so suspension need not be handled.
-       */
-    }
-    src->pub.next_input_byte += (size_t) num_bytes;
-    src->pub.bytes_in_buffer -= (size_t) num_bytes;
-  }
-}
-
-
-/*
- * An additional method that can be provided by data source modules is the
- * resync_to_restart method for error recovery in the presence of RST markers.
- * For the moment, this source module just uses the default resync method
- * provided by the JPEG library.  That method assumes that no backtracking
- * is possible.
- */
-
-
-/*
- * Terminate source --- called by jpeg_finish_decompress
- * after all data has been read.  Often a no-op.
- *
- * NB: *not* called by jpeg_abort or jpeg_destroy; surrounding
- * application must deal with any cleanup that should happen even
- * for error exit.
- */
-
-METHODDEF(void)
-term_source (j_decompress_ptr cinfo)
-{
-  /* no work necessary here */
-}
-
-
-/*
- * Prepare for input from a stdio stream.
- * The caller must have already opened the stream, and is responsible
- * for closing it after finishing decompression.
- */
-
-GLOBAL(void)
-jpeg_stdio_src (j_decompress_ptr cinfo, FILE * infile)
-{
-  my_src_ptr src;
-
-  /* The source object and input buffer are made permanent so that a series
-   * of JPEG images can be read from the same file by calling jpeg_stdio_src
-   * only before the first one.  (If we discarded the buffer at the end of
-   * one image, we'd likely lose the start of the next one.)
-   * This makes it unsafe to use this manager and a different source
-   * manager serially with the same JPEG object.  Caveat programmer.
-   */
-  if (cinfo->src == NULL) {	/* first time for this JPEG object? */
-    cinfo->src = (struct jpeg_source_mgr *)
-      (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_PERMANENT,
-				  SIZEOF(my_source_mgr));
-    src = (my_src_ptr) cinfo->src;
-    src->buffer = (JOCTET *)
-      (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_PERMANENT,
-				  INPUT_BUF_SIZE * SIZEOF(JOCTET));
-  }
-
-  src = (my_src_ptr) cinfo->src;
-  src->pub.init_source = init_source;
-  src->pub.fill_input_buffer = fill_input_buffer;
-  src->pub.skip_input_data = skip_input_data;
-  src->pub.resync_to_restart = jpeg_resync_to_restart; /* use default method */
-  src->pub.term_source = term_source;
-  src->infile = infile;
-  src->pub.bytes_in_buffer = 0; /* forces fill_input_buffer on first read */
-  src->pub.next_input_byte = NULL; /* until buffer loaded */
-}
diff --git a/src/libjpeg/jdcoefct.c b/src/libjpeg/jdcoefct.c
deleted file mode 100644
index 992bd10..0000000
--- a/src/libjpeg/jdcoefct.c
+++ /dev/null
@@ -1,736 +0,0 @@
-/*
- * jdcoefct.c
- *
- * Copyright (C) 1994-1997, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains the coefficient buffer controller for decompression.
- * This controller is the top level of the JPEG decompressor proper.
- * The coefficient buffer lies between entropy decoding and inverse-DCT steps.
- *
- * In buffered-image mode, this controller is the interface between
- * input-oriented processing and output-oriented processing.
- * Also, the input side (only) is used when reading a file for transcoding.
- */
-
-#define JPEG_INTERNALS
-#include "jinclude.h"
-#include "jpeglib.h"
-
-/* Block smoothing is only applicable for progressive JPEG, so: */
-#ifndef D_PROGRESSIVE_SUPPORTED
-#undef BLOCK_SMOOTHING_SUPPORTED
-#endif
-
-/* Private buffer controller object */
-
-typedef struct {
-  struct jpeg_d_coef_controller pub; /* public fields */
-
-  /* These variables keep track of the current location of the input side. */
-  /* cinfo->input_iMCU_row is also used for this. */
-  JDIMENSION MCU_ctr;		/* counts MCUs processed in current row */
-  int MCU_vert_offset;		/* counts MCU rows within iMCU row */
-  int MCU_rows_per_iMCU_row;	/* number of such rows needed */
-
-  /* The output side's location is represented by cinfo->output_iMCU_row. */
-
-  /* In single-pass modes, it's sufficient to buffer just one MCU.
-   * We allocate a workspace of D_MAX_BLOCKS_IN_MCU coefficient blocks,
-   * and let the entropy decoder write into that workspace each time.
-   * (On 80x86, the workspace is FAR even though it's not really very big;
-   * this is to keep the module interfaces unchanged when a large coefficient
-   * buffer is necessary.)
-   * In multi-pass modes, this array points to the current MCU's blocks
-   * within the virtual arrays; it is used only by the input side.
-   */
-  JBLOCKROW MCU_buffer[D_MAX_BLOCKS_IN_MCU];
-
-#ifdef D_MULTISCAN_FILES_SUPPORTED
-  /* In multi-pass modes, we need a virtual block array for each component. */
-  jvirt_barray_ptr whole_image[MAX_COMPONENTS];
-#endif
-
-#ifdef BLOCK_SMOOTHING_SUPPORTED
-  /* When doing block smoothing, we latch coefficient Al values here */
-  int * coef_bits_latch;
-#define SAVED_COEFS  6		/* we save coef_bits[0..5] */
-#endif
-} my_coef_controller;
-
-typedef my_coef_controller * my_coef_ptr;
-
-/* Forward declarations */
-METHODDEF(int) decompress_onepass
-	JPP((j_decompress_ptr cinfo, JSAMPIMAGE output_buf));
-#ifdef D_MULTISCAN_FILES_SUPPORTED
-METHODDEF(int) decompress_data
-	JPP((j_decompress_ptr cinfo, JSAMPIMAGE output_buf));
-#endif
-#ifdef BLOCK_SMOOTHING_SUPPORTED
-LOCAL(boolean) smoothing_ok JPP((j_decompress_ptr cinfo));
-METHODDEF(int) decompress_smooth_data
-	JPP((j_decompress_ptr cinfo, JSAMPIMAGE output_buf));
-#endif
-
-
-LOCAL(void)
-start_iMCU_row (j_decompress_ptr cinfo)
-/* Reset within-iMCU-row counters for a new row (input side) */
-{
-  my_coef_ptr coef = (my_coef_ptr) cinfo->coef;
-
-  /* In an interleaved scan, an MCU row is the same as an iMCU row.
-   * In a noninterleaved scan, an iMCU row has v_samp_factor MCU rows.
-   * But at the bottom of the image, process only what's left.
-   */
-  if (cinfo->comps_in_scan > 1) {
-    coef->MCU_rows_per_iMCU_row = 1;
-  } else {
-    if (cinfo->input_iMCU_row < (cinfo->total_iMCU_rows-1))
-      coef->MCU_rows_per_iMCU_row = cinfo->cur_comp_info[0]->v_samp_factor;
-    else
-      coef->MCU_rows_per_iMCU_row = cinfo->cur_comp_info[0]->last_row_height;
-  }
-
-  coef->MCU_ctr = 0;
-  coef->MCU_vert_offset = 0;
-}
-
-
-/*
- * Initialize for an input processing pass.
- */
-
-METHODDEF(void)
-start_input_pass (j_decompress_ptr cinfo)
-{
-  cinfo->input_iMCU_row = 0;
-  start_iMCU_row(cinfo);
-}
-
-
-/*
- * Initialize for an output processing pass.
- */
-
-METHODDEF(void)
-start_output_pass (j_decompress_ptr cinfo)
-{
-#ifdef BLOCK_SMOOTHING_SUPPORTED
-  my_coef_ptr coef = (my_coef_ptr) cinfo->coef;
-
-  /* If multipass, check to see whether to use block smoothing on this pass */
-  if (coef->pub.coef_arrays != NULL) {
-    if (cinfo->do_block_smoothing && smoothing_ok(cinfo))
-      coef->pub.decompress_data = decompress_smooth_data;
-    else
-      coef->pub.decompress_data = decompress_data;
-  }
-#endif
-  cinfo->output_iMCU_row = 0;
-}
-
-
-/*
- * Decompress and return some data in the single-pass case.
- * Always attempts to emit one fully interleaved MCU row ("iMCU" row).
- * Input and output must run in lockstep since we have only a one-MCU buffer.
- * Return value is JPEG_ROW_COMPLETED, JPEG_SCAN_COMPLETED, or JPEG_SUSPENDED.
- *
- * NB: output_buf contains a plane for each component in image,
- * which we index according to the component's SOF position.
- */
-
-METHODDEF(int)
-decompress_onepass (j_decompress_ptr cinfo, JSAMPIMAGE output_buf)
-{
-  my_coef_ptr coef = (my_coef_ptr) cinfo->coef;
-  JDIMENSION MCU_col_num;	/* index of current MCU within row */
-  JDIMENSION last_MCU_col = cinfo->MCUs_per_row - 1;
-  JDIMENSION last_iMCU_row = cinfo->total_iMCU_rows - 1;
-  int blkn, ci, xindex, yindex, yoffset, useful_width;
-  JSAMPARRAY output_ptr;
-  JDIMENSION start_col, output_col;
-  jpeg_component_info *compptr;
-  inverse_DCT_method_ptr inverse_DCT;
-
-  /* Loop to process as much as one whole iMCU row */
-  for (yoffset = coef->MCU_vert_offset; yoffset < coef->MCU_rows_per_iMCU_row;
-       yoffset++) {
-    for (MCU_col_num = coef->MCU_ctr; MCU_col_num <= last_MCU_col;
-	 MCU_col_num++) {
-      /* Try to fetch an MCU.  Entropy decoder expects buffer to be zeroed. */
-      jzero_far((void FAR *) coef->MCU_buffer[0],
-		(size_t) (cinfo->blocks_in_MCU * SIZEOF(JBLOCK)));
-      if (! (*cinfo->entropy->decode_mcu) (cinfo, coef->MCU_buffer)) {
-	/* Suspension forced; update state counters and exit */
-	coef->MCU_vert_offset = yoffset;
-	coef->MCU_ctr = MCU_col_num;
-	return JPEG_SUSPENDED;
-      }
-      /* Determine where data should go in output_buf and do the IDCT thing.
-       * We skip dummy blocks at the right and bottom edges (but blkn gets
-       * incremented past them!).  Note the inner loop relies on having
-       * allocated the MCU_buffer[] blocks sequentially.
-       */
-      blkn = 0;			/* index of current DCT block within MCU */
-      for (ci = 0; ci < cinfo->comps_in_scan; ci++) {
-	compptr = cinfo->cur_comp_info[ci];
-	/* Don't bother to IDCT an uninteresting component. */
-	if (! compptr->component_needed) {
-	  blkn += compptr->MCU_blocks;
-	  continue;
-	}
-	inverse_DCT = cinfo->idct->inverse_DCT[compptr->component_index];
-	useful_width = (MCU_col_num < last_MCU_col) ? compptr->MCU_width
-						    : compptr->last_col_width;
-	output_ptr = output_buf[compptr->component_index] +
-	  yoffset * compptr->DCT_scaled_size;
-	start_col = MCU_col_num * compptr->MCU_sample_width;
-	for (yindex = 0; yindex < compptr->MCU_height; yindex++) {
-	  if (cinfo->input_iMCU_row < last_iMCU_row ||
-	      yoffset+yindex < compptr->last_row_height) {
-	    output_col = start_col;
-	    for (xindex = 0; xindex < useful_width; xindex++) {
-	      (*inverse_DCT) (cinfo, compptr,
-			      (JCOEFPTR) coef->MCU_buffer[blkn+xindex],
-			      output_ptr, output_col);
-	      output_col += compptr->DCT_scaled_size;
-	    }
-	  }
-	  blkn += compptr->MCU_width;
-	  output_ptr += compptr->DCT_scaled_size;
-	}
-      }
-    }
-    /* Completed an MCU row, but perhaps not an iMCU row */
-    coef->MCU_ctr = 0;
-  }
-  /* Completed the iMCU row, advance counters for next one */
-  cinfo->output_iMCU_row++;
-  if (++(cinfo->input_iMCU_row) < cinfo->total_iMCU_rows) {
-    start_iMCU_row(cinfo);
-    return JPEG_ROW_COMPLETED;
-  }
-  /* Completed the scan */
-  (*cinfo->inputctl->finish_input_pass) (cinfo);
-  return JPEG_SCAN_COMPLETED;
-}
-
-
-/*
- * Dummy consume-input routine for single-pass operation.
- */
-
-METHODDEF(int)
-dummy_consume_data (j_decompress_ptr cinfo)
-{
-  return JPEG_SUSPENDED;	/* Always indicate nothing was done */
-}
-
-
-#ifdef D_MULTISCAN_FILES_SUPPORTED
-
-/*
- * Consume input data and store it in the full-image coefficient buffer.
- * We read as much as one fully interleaved MCU row ("iMCU" row) per call,
- * ie, v_samp_factor block rows for each component in the scan.
- * Return value is JPEG_ROW_COMPLETED, JPEG_SCAN_COMPLETED, or JPEG_SUSPENDED.
- */
-
-METHODDEF(int)
-consume_data (j_decompress_ptr cinfo)
-{
-  my_coef_ptr coef = (my_coef_ptr) cinfo->coef;
-  JDIMENSION MCU_col_num;	/* index of current MCU within row */
-  int blkn, ci, xindex, yindex, yoffset;
-  JDIMENSION start_col;
-  JBLOCKARRAY buffer[MAX_COMPS_IN_SCAN];
-  JBLOCKROW buffer_ptr;
-  jpeg_component_info *compptr;
-
-  /* Align the virtual buffers for the components used in this scan. */
-  for (ci = 0; ci < cinfo->comps_in_scan; ci++) {
-    compptr = cinfo->cur_comp_info[ci];
-    buffer[ci] = (*cinfo->mem->access_virt_barray)
-      ((j_common_ptr) cinfo, coef->whole_image[compptr->component_index],
-       cinfo->input_iMCU_row * compptr->v_samp_factor,
-       (JDIMENSION) compptr->v_samp_factor, TRUE);
-    /* Note: entropy decoder expects buffer to be zeroed,
-     * but this is handled automatically by the memory manager
-     * because we requested a pre-zeroed array.
-     */
-  }
-
-  /* Loop to process one whole iMCU row */
-  for (yoffset = coef->MCU_vert_offset; yoffset < coef->MCU_rows_per_iMCU_row;
-       yoffset++) {
-    for (MCU_col_num = coef->MCU_ctr; MCU_col_num < cinfo->MCUs_per_row;
-	 MCU_col_num++) {
-      /* Construct list of pointers to DCT blocks belonging to this MCU */
-      blkn = 0;			/* index of current DCT block within MCU */
-      for (ci = 0; ci < cinfo->comps_in_scan; ci++) {
-	compptr = cinfo->cur_comp_info[ci];
-	start_col = MCU_col_num * compptr->MCU_width;
-	for (yindex = 0; yindex < compptr->MCU_height; yindex++) {
-	  buffer_ptr = buffer[ci][yindex+yoffset] + start_col;
-	  for (xindex = 0; xindex < compptr->MCU_width; xindex++) {
-	    coef->MCU_buffer[blkn++] = buffer_ptr++;
-	  }
-	}
-      }
-      /* Try to fetch the MCU. */
-      if (! (*cinfo->entropy->decode_mcu) (cinfo, coef->MCU_buffer)) {
-	/* Suspension forced; update state counters and exit */
-	coef->MCU_vert_offset = yoffset;
-	coef->MCU_ctr = MCU_col_num;
-	return JPEG_SUSPENDED;
-      }
-    }
-    /* Completed an MCU row, but perhaps not an iMCU row */
-    coef->MCU_ctr = 0;
-  }
-  /* Completed the iMCU row, advance counters for next one */
-  if (++(cinfo->input_iMCU_row) < cinfo->total_iMCU_rows) {
-    start_iMCU_row(cinfo);
-    return JPEG_ROW_COMPLETED;
-  }
-  /* Completed the scan */
-  (*cinfo->inputctl->finish_input_pass) (cinfo);
-  return JPEG_SCAN_COMPLETED;
-}
-
-
-/*
- * Decompress and return some data in the multi-pass case.
- * Always attempts to emit one fully interleaved MCU row ("iMCU" row).
- * Return value is JPEG_ROW_COMPLETED, JPEG_SCAN_COMPLETED, or JPEG_SUSPENDED.
- *
- * NB: output_buf contains a plane for each component in image.
- */
-
-METHODDEF(int)
-decompress_data (j_decompress_ptr cinfo, JSAMPIMAGE output_buf)
-{
-  my_coef_ptr coef = (my_coef_ptr) cinfo->coef;
-  JDIMENSION last_iMCU_row = cinfo->total_iMCU_rows - 1;
-  JDIMENSION block_num;
-  int ci, block_row, block_rows;
-  JBLOCKARRAY buffer;
-  JBLOCKROW buffer_ptr;
-  JSAMPARRAY output_ptr;
-  JDIMENSION output_col;
-  jpeg_component_info *compptr;
-  inverse_DCT_method_ptr inverse_DCT;
-
-  /* Force some input to be done if we are getting ahead of the input. */
-  while (cinfo->input_scan_number < cinfo->output_scan_number ||
-	 (cinfo->input_scan_number == cinfo->output_scan_number &&
-	  cinfo->input_iMCU_row <= cinfo->output_iMCU_row)) {
-    if ((*cinfo->inputctl->consume_input)(cinfo) == JPEG_SUSPENDED)
-      return JPEG_SUSPENDED;
-  }
-
-  /* OK, output from the virtual arrays. */
-  for (ci = 0, compptr = cinfo->comp_info; ci < cinfo->num_components;
-       ci++, compptr++) {
-    /* Don't bother to IDCT an uninteresting component. */
-    if (! compptr->component_needed)
-      continue;
-    /* Align the virtual buffer for this component. */
-    buffer = (*cinfo->mem->access_virt_barray)
-      ((j_common_ptr) cinfo, coef->whole_image[ci],
-       cinfo->output_iMCU_row * compptr->v_samp_factor,
-       (JDIMENSION) compptr->v_samp_factor, FALSE);
-    /* Count non-dummy DCT block rows in this iMCU row. */
-    if (cinfo->output_iMCU_row < last_iMCU_row)
-      block_rows = compptr->v_samp_factor;
-    else {
-      /* NB: can't use last_row_height here; it is input-side-dependent! */
-      block_rows = (int) (compptr->height_in_blocks % compptr->v_samp_factor);
-      if (block_rows == 0) block_rows = compptr->v_samp_factor;
-    }
-    inverse_DCT = cinfo->idct->inverse_DCT[ci];
-    output_ptr = output_buf[ci];
-    /* Loop over all DCT blocks to be processed. */
-    for (block_row = 0; block_row < block_rows; block_row++) {
-      buffer_ptr = buffer[block_row];
-      output_col = 0;
-      for (block_num = 0; block_num < compptr->width_in_blocks; block_num++) {
-	(*inverse_DCT) (cinfo, compptr, (JCOEFPTR) buffer_ptr,
-			output_ptr, output_col);
-	buffer_ptr++;
-	output_col += compptr->DCT_scaled_size;
-      }
-      output_ptr += compptr->DCT_scaled_size;
-    }
-  }
-
-  if (++(cinfo->output_iMCU_row) < cinfo->total_iMCU_rows)
-    return JPEG_ROW_COMPLETED;
-  return JPEG_SCAN_COMPLETED;
-}
-
-#endif /* D_MULTISCAN_FILES_SUPPORTED */
-
-
-#ifdef BLOCK_SMOOTHING_SUPPORTED
-
-/*
- * This code applies interblock smoothing as described by section K.8
- * of the JPEG standard: the first 5 AC coefficients are estimated from
- * the DC values of a DCT block and its 8 neighboring blocks.
- * We apply smoothing only for progressive JPEG decoding, and only if
- * the coefficients it can estimate are not yet known to full precision.
- */
-
-/* Natural-order array positions of the first 5 zigzag-order coefficients */
-#define Q01_POS  1
-#define Q10_POS  8
-#define Q20_POS  16
-#define Q11_POS  9
-#define Q02_POS  2
-
-/*
- * Determine whether block smoothing is applicable and safe.
- * We also latch the current states of the coef_bits[] entries for the
- * AC coefficients; otherwise, if the input side of the decompressor
- * advances into a new scan, we might think the coefficients are known
- * more accurately than they really are.
- */
-
-LOCAL(boolean)
-smoothing_ok (j_decompress_ptr cinfo)
-{
-  my_coef_ptr coef = (my_coef_ptr) cinfo->coef;
-  boolean smoothing_useful = FALSE;
-  int ci, coefi;
-  jpeg_component_info *compptr;
-  JQUANT_TBL * qtable;
-  int * coef_bits;
-  int * coef_bits_latch;
-
-  if (! cinfo->progressive_mode || cinfo->coef_bits == NULL)
-    return FALSE;
-
-  /* Allocate latch area if not already done */
-  if (coef->coef_bits_latch == NULL)
-    coef->coef_bits_latch = (int *)
-      (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
-				  cinfo->num_components *
-				  (SAVED_COEFS * SIZEOF(int)));
-  coef_bits_latch = coef->coef_bits_latch;
-
-  for (ci = 0, compptr = cinfo->comp_info; ci < cinfo->num_components;
-       ci++, compptr++) {
-    /* All components' quantization values must already be latched. */
-    if ((qtable = compptr->quant_table) == NULL)
-      return FALSE;
-    /* Verify DC & first 5 AC quantizers are nonzero to avoid zero-divide. */
-    if (qtable->quantval[0] == 0 ||
-	qtable->quantval[Q01_POS] == 0 ||
-	qtable->quantval[Q10_POS] == 0 ||
-	qtable->quantval[Q20_POS] == 0 ||
-	qtable->quantval[Q11_POS] == 0 ||
-	qtable->quantval[Q02_POS] == 0)
-      return FALSE;
-    /* DC values must be at least partly known for all components. */
-    coef_bits = cinfo->coef_bits[ci];
-    if (coef_bits[0] < 0)
-      return FALSE;
-    /* Block smoothing is helpful if some AC coefficients remain inaccurate. */
-    for (coefi = 1; coefi <= 5; coefi++) {
-      coef_bits_latch[coefi] = coef_bits[coefi];
-      if (coef_bits[coefi] != 0)
-	smoothing_useful = TRUE;
-    }
-    coef_bits_latch += SAVED_COEFS;
-  }
-
-  return smoothing_useful;
-}
-
-
-/*
- * Variant of decompress_data for use when doing block smoothing.
- */
-
-METHODDEF(int)
-decompress_smooth_data (j_decompress_ptr cinfo, JSAMPIMAGE output_buf)
-{
-  my_coef_ptr coef = (my_coef_ptr) cinfo->coef;
-  JDIMENSION last_iMCU_row = cinfo->total_iMCU_rows - 1;
-  JDIMENSION block_num, last_block_column;
-  int ci, block_row, block_rows, access_rows;
-  JBLOCKARRAY buffer;
-  JBLOCKROW buffer_ptr, prev_block_row, next_block_row;
-  JSAMPARRAY output_ptr;
-  JDIMENSION output_col;
-  jpeg_component_info *compptr;
-  inverse_DCT_method_ptr inverse_DCT;
-  boolean first_row, last_row;
-  JBLOCK workspace;
-  int *coef_bits;
-  JQUANT_TBL *quanttbl;
-  INT32 Q00,Q01,Q02,Q10,Q11,Q20, num;
-  int DC1,DC2,DC3,DC4,DC5,DC6,DC7,DC8,DC9;
-  int Al, pred;
-
-  /* Force some input to be done if we are getting ahead of the input. */
-  while (cinfo->input_scan_number <= cinfo->output_scan_number &&
-	 ! cinfo->inputctl->eoi_reached) {
-    if (cinfo->input_scan_number == cinfo->output_scan_number) {
-      /* If input is working on current scan, we ordinarily want it to
-       * have completed the current row.  But if input scan is DC,
-       * we want it to keep one row ahead so that next block row's DC
-       * values are up to date.
-       */
-      JDIMENSION delta = (cinfo->Ss == 0) ? 1 : 0;
-      if (cinfo->input_iMCU_row > cinfo->output_iMCU_row+delta)
-	break;
-    }
-    if ((*cinfo->inputctl->consume_input)(cinfo) == JPEG_SUSPENDED)
-      return JPEG_SUSPENDED;
-  }
-
-  /* OK, output from the virtual arrays. */
-  for (ci = 0, compptr = cinfo->comp_info; ci < cinfo->num_components;
-       ci++, compptr++) {
-    /* Don't bother to IDCT an uninteresting component. */
-    if (! compptr->component_needed)
-      continue;
-    /* Count non-dummy DCT block rows in this iMCU row. */
-    if (cinfo->output_iMCU_row < last_iMCU_row) {
-      block_rows = compptr->v_samp_factor;
-      access_rows = block_rows * 2; /* this and next iMCU row */
-      last_row = FALSE;
-    } else {
-      /* NB: can't use last_row_height here; it is input-side-dependent! */
-      block_rows = (int) (compptr->height_in_blocks % compptr->v_samp_factor);
-      if (block_rows == 0) block_rows = compptr->v_samp_factor;
-      access_rows = block_rows; /* this iMCU row only */
-      last_row = TRUE;
-    }
-    /* Align the virtual buffer for this component. */
-    if (cinfo->output_iMCU_row > 0) {
-      access_rows += compptr->v_samp_factor; /* prior iMCU row too */
-      buffer = (*cinfo->mem->access_virt_barray)
-	((j_common_ptr) cinfo, coef->whole_image[ci],
-	 (cinfo->output_iMCU_row - 1) * compptr->v_samp_factor,
-	 (JDIMENSION) access_rows, FALSE);
-      buffer += compptr->v_samp_factor;	/* point to current iMCU row */
-      first_row = FALSE;
-    } else {
-      buffer = (*cinfo->mem->access_virt_barray)
-	((j_common_ptr) cinfo, coef->whole_image[ci],
-	 (JDIMENSION) 0, (JDIMENSION) access_rows, FALSE);
-      first_row = TRUE;
-    }
-    /* Fetch component-dependent info */
-    coef_bits = coef->coef_bits_latch + (ci * SAVED_COEFS);
-    quanttbl = compptr->quant_table;
-    Q00 = quanttbl->quantval[0];
-    Q01 = quanttbl->quantval[Q01_POS];
-    Q10 = quanttbl->quantval[Q10_POS];
-    Q20 = quanttbl->quantval[Q20_POS];
-    Q11 = quanttbl->quantval[Q11_POS];
-    Q02 = quanttbl->quantval[Q02_POS];
-    inverse_DCT = cinfo->idct->inverse_DCT[ci];
-    output_ptr = output_buf[ci];
-    /* Loop over all DCT blocks to be processed. */
-    for (block_row = 0; block_row < block_rows; block_row++) {
-      buffer_ptr = buffer[block_row];
-      if (first_row && block_row == 0)
-	prev_block_row = buffer_ptr;
-      else
-	prev_block_row = buffer[block_row-1];
-      if (last_row && block_row == block_rows-1)
-	next_block_row = buffer_ptr;
-      else
-	next_block_row = buffer[block_row+1];
-      /* We fetch the surrounding DC values using a sliding-register approach.
-       * Initialize all nine here so as to do the right thing on narrow pics.
-       */
-      DC1 = DC2 = DC3 = (int) prev_block_row[0][0];
-      DC4 = DC5 = DC6 = (int) buffer_ptr[0][0];
-      DC7 = DC8 = DC9 = (int) next_block_row[0][0];
-      output_col = 0;
-      last_block_column = compptr->width_in_blocks - 1;
-      for (block_num = 0; block_num <= last_block_column; block_num++) {
-	/* Fetch current DCT block into workspace so we can modify it. */
-	jcopy_block_row(buffer_ptr, (JBLOCKROW) workspace, (JDIMENSION) 1);
-	/* Update DC values */
-	if (block_num < last_block_column) {
-	  DC3 = (int) prev_block_row[1][0];
-	  DC6 = (int) buffer_ptr[1][0];
-	  DC9 = (int) next_block_row[1][0];
-	}
-	/* Compute coefficient estimates per K.8.
-	 * An estimate is applied only if coefficient is still zero,
-	 * and is not known to be fully accurate.
-	 */
-	/* AC01 */
-	if ((Al=coef_bits[1]) != 0 && workspace[1] == 0) {
-	  num = 36 * Q00 * (DC4 - DC6);
-	  if (num >= 0) {
-	    pred = (int) (((Q01<<7) + num) / (Q01<<8));
-	    if (Al > 0 && pred >= (1<<Al))
-	      pred = (1<<Al)-1;
-	  } else {
-	    pred = (int) (((Q01<<7) - num) / (Q01<<8));
-	    if (Al > 0 && pred >= (1<<Al))
-	      pred = (1<<Al)-1;
-	    pred = -pred;
-	  }
-	  workspace[1] = (JCOEF) pred;
-	}
-	/* AC10 */
-	if ((Al=coef_bits[2]) != 0 && workspace[8] == 0) {
-	  num = 36 * Q00 * (DC2 - DC8);
-	  if (num >= 0) {
-	    pred = (int) (((Q10<<7) + num) / (Q10<<8));
-	    if (Al > 0 && pred >= (1<<Al))
-	      pred = (1<<Al)-1;
-	  } else {
-	    pred = (int) (((Q10<<7) - num) / (Q10<<8));
-	    if (Al > 0 && pred >= (1<<Al))
-	      pred = (1<<Al)-1;
-	    pred = -pred;
-	  }
-	  workspace[8] = (JCOEF) pred;
-	}
-	/* AC20 */
-	if ((Al=coef_bits[3]) != 0 && workspace[16] == 0) {
-	  num = 9 * Q00 * (DC2 + DC8 - 2*DC5);
-	  if (num >= 0) {
-	    pred = (int) (((Q20<<7) + num) / (Q20<<8));
-	    if (Al > 0 && pred >= (1<<Al))
-	      pred = (1<<Al)-1;
-	  } else {
-	    pred = (int) (((Q20<<7) - num) / (Q20<<8));
-	    if (Al > 0 && pred >= (1<<Al))
-	      pred = (1<<Al)-1;
-	    pred = -pred;
-	  }
-	  workspace[16] = (JCOEF) pred;
-	}
-	/* AC11 */
-	if ((Al=coef_bits[4]) != 0 && workspace[9] == 0) {
-	  num = 5 * Q00 * (DC1 - DC3 - DC7 + DC9);
-	  if (num >= 0) {
-	    pred = (int) (((Q11<<7) + num) / (Q11<<8));
-	    if (Al > 0 && pred >= (1<<Al))
-	      pred = (1<<Al)-1;
-	  } else {
-	    pred = (int) (((Q11<<7) - num) / (Q11<<8));
-	    if (Al > 0 && pred >= (1<<Al))
-	      pred = (1<<Al)-1;
-	    pred = -pred;
-	  }
-	  workspace[9] = (JCOEF) pred;
-	}
-	/* AC02 */
-	if ((Al=coef_bits[5]) != 0 && workspace[2] == 0) {
-	  num = 9 * Q00 * (DC4 + DC6 - 2*DC5);
-	  if (num >= 0) {
-	    pred = (int) (((Q02<<7) + num) / (Q02<<8));
-	    if (Al > 0 && pred >= (1<<Al))
-	      pred = (1<<Al)-1;
-	  } else {
-	    pred = (int) (((Q02<<7) - num) / (Q02<<8));
-	    if (Al > 0 && pred >= (1<<Al))
-	      pred = (1<<Al)-1;
-	    pred = -pred;
-	  }
-	  workspace[2] = (JCOEF) pred;
-	}
-	/* OK, do the IDCT */
-	(*inverse_DCT) (cinfo, compptr, (JCOEFPTR) workspace,
-			output_ptr, output_col);
-	/* Advance for next column */
-	DC1 = DC2; DC2 = DC3;
-	DC4 = DC5; DC5 = DC6;
-	DC7 = DC8; DC8 = DC9;
-	buffer_ptr++, prev_block_row++, next_block_row++;
-	output_col += compptr->DCT_scaled_size;
-      }
-      output_ptr += compptr->DCT_scaled_size;
-    }
-  }
-
-  if (++(cinfo->output_iMCU_row) < cinfo->total_iMCU_rows)
-    return JPEG_ROW_COMPLETED;
-  return JPEG_SCAN_COMPLETED;
-}
-
-#endif /* BLOCK_SMOOTHING_SUPPORTED */
-
-
-/*
- * Initialize coefficient buffer controller.
- */
-
-GLOBAL(void)
-jinit_d_coef_controller (j_decompress_ptr cinfo, boolean need_full_buffer)
-{
-  my_coef_ptr coef;
-
-  coef = (my_coef_ptr)
-    (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
-				SIZEOF(my_coef_controller));
-  cinfo->coef = (struct jpeg_d_coef_controller *) coef;
-  coef->pub.start_input_pass = start_input_pass;
-  coef->pub.start_output_pass = start_output_pass;
-#ifdef BLOCK_SMOOTHING_SUPPORTED
-  coef->coef_bits_latch = NULL;
-#endif
-
-  /* Create the coefficient buffer. */
-  if (need_full_buffer) {
-#ifdef D_MULTISCAN_FILES_SUPPORTED
-    /* Allocate a full-image virtual array for each component, */
-    /* padded to a multiple of samp_factor DCT blocks in each direction. */
-    /* Note we ask for a pre-zeroed array. */
-    int ci, access_rows;
-    jpeg_component_info *compptr;
-
-    for (ci = 0, compptr = cinfo->comp_info; ci < cinfo->num_components;
-	 ci++, compptr++) {
-      access_rows = compptr->v_samp_factor;
-#ifdef BLOCK_SMOOTHING_SUPPORTED
-      /* If block smoothing could be used, need a bigger window */
-      if (cinfo->progressive_mode)
-	access_rows *= 3;
-#endif
-      coef->whole_image[ci] = (*cinfo->mem->request_virt_barray)
-	((j_common_ptr) cinfo, JPOOL_IMAGE, TRUE,
-	 (JDIMENSION) jround_up((long) compptr->width_in_blocks,
-				(long) compptr->h_samp_factor),
-	 (JDIMENSION) jround_up((long) compptr->height_in_blocks,
-				(long) compptr->v_samp_factor),
-	 (JDIMENSION) access_rows);
-    }
-    coef->pub.consume_data = consume_data;
-    coef->pub.decompress_data = decompress_data;
-    coef->pub.coef_arrays = coef->whole_image; /* link to virtual arrays */
-#else
-    ERREXIT(cinfo, JERR_NOT_COMPILED);
-#endif
-  } else {
-    /* We only need a single-MCU buffer. */
-    JBLOCKROW buffer;
-    int i;
-
-    buffer = (JBLOCKROW)
-      (*cinfo->mem->alloc_large) ((j_common_ptr) cinfo, JPOOL_IMAGE,
-				  D_MAX_BLOCKS_IN_MCU * SIZEOF(JBLOCK));
-    for (i = 0; i < D_MAX_BLOCKS_IN_MCU; i++) {
-      coef->MCU_buffer[i] = buffer + i;
-    }
-    coef->pub.consume_data = dummy_consume_data;
-    coef->pub.decompress_data = decompress_onepass;
-    coef->pub.coef_arrays = NULL; /* flag for no virtual arrays */
-  }
-}
diff --git a/src/libjpeg/jdcolor.c b/src/libjpeg/jdcolor.c
deleted file mode 100644
index fd7b138..0000000
--- a/src/libjpeg/jdcolor.c
+++ /dev/null
@@ -1,396 +0,0 @@
-/*
- * jdcolor.c
- *
- * Copyright (C) 1991-1997, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains output colorspace conversion routines.
- */
-
-#define JPEG_INTERNALS
-#include "jinclude.h"
-#include "jpeglib.h"
-
-
-/* Private subobject */
-
-typedef struct {
-  struct jpeg_color_deconverter pub; /* public fields */
-
-  /* Private state for YCC->RGB conversion */
-  int * Cr_r_tab;		/* => table for Cr to R conversion */
-  int * Cb_b_tab;		/* => table for Cb to B conversion */
-  INT32 * Cr_g_tab;		/* => table for Cr to G conversion */
-  INT32 * Cb_g_tab;		/* => table for Cb to G conversion */
-} my_color_deconverter;
-
-typedef my_color_deconverter * my_cconvert_ptr;
-
-
-/**************** YCbCr -> RGB conversion: most common case **************/
-
-/*
- * YCbCr is defined per CCIR 601-1, except that Cb and Cr are
- * normalized to the range 0..MAXJSAMPLE rather than -0.5 .. 0.5.
- * The conversion equations to be implemented are therefore
- *	R = Y                + 1.40200 * Cr
- *	G = Y - 0.34414 * Cb - 0.71414 * Cr
- *	B = Y + 1.77200 * Cb
- * where Cb and Cr represent the incoming values less CENTERJSAMPLE.
- * (These numbers are derived from TIFF 6.0 section 21, dated 3-June-92.)
- *
- * To avoid floating-point arithmetic, we represent the fractional constants
- * as integers scaled up by 2^16 (about 4 digits precision); we have to divide
- * the products by 2^16, with appropriate rounding, to get the correct answer.
- * Notice that Y, being an integral input, does not contribute any fraction
- * so it need not participate in the rounding.
- *
- * For even more speed, we avoid doing any multiplications in the inner loop
- * by precalculating the constants times Cb and Cr for all possible values.
- * For 8-bit JSAMPLEs this is very reasonable (only 256 entries per table);
- * for 12-bit samples it is still acceptable.  It's not very reasonable for
- * 16-bit samples, but if you want lossless storage you shouldn't be changing
- * colorspace anyway.
- * The Cr=>R and Cb=>B values can be rounded to integers in advance; the
- * values for the G calculation are left scaled up, since we must add them
- * together before rounding.
- */
-
-#define SCALEBITS	16	/* speediest right-shift on some machines */
-#define ONE_HALF	((INT32) 1 << (SCALEBITS-1))
-#define FIX(x)		((INT32) ((x) * (1L<<SCALEBITS) + 0.5))
-
-
-/*
- * Initialize tables for YCC->RGB colorspace conversion.
- */
-
-LOCAL(void)
-build_ycc_rgb_table (j_decompress_ptr cinfo)
-{
-  my_cconvert_ptr cconvert = (my_cconvert_ptr) cinfo->cconvert;
-  int i;
-  INT32 x;
-  SHIFT_TEMPS
-
-  cconvert->Cr_r_tab = (int *)
-    (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
-				(MAXJSAMPLE+1) * SIZEOF(int));
-  cconvert->Cb_b_tab = (int *)
-    (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
-				(MAXJSAMPLE+1) * SIZEOF(int));
-  cconvert->Cr_g_tab = (INT32 *)
-    (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
-				(MAXJSAMPLE+1) * SIZEOF(INT32));
-  cconvert->Cb_g_tab = (INT32 *)
-    (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
-				(MAXJSAMPLE+1) * SIZEOF(INT32));
-
-  for (i = 0, x = -CENTERJSAMPLE; i <= MAXJSAMPLE; i++, x++) {
-    /* i is the actual input pixel value, in the range 0..MAXJSAMPLE */
-    /* The Cb or Cr value we are thinking of is x = i - CENTERJSAMPLE */
-    /* Cr=>R value is nearest int to 1.40200 * x */
-    cconvert->Cr_r_tab[i] = (int)
-		    RIGHT_SHIFT(FIX(1.40200) * x + ONE_HALF, SCALEBITS);
-    /* Cb=>B value is nearest int to 1.77200 * x */
-    cconvert->Cb_b_tab[i] = (int)
-		    RIGHT_SHIFT(FIX(1.77200) * x + ONE_HALF, SCALEBITS);
-    /* Cr=>G value is scaled-up -0.71414 * x */
-    cconvert->Cr_g_tab[i] = (- FIX(0.71414)) * x;
-    /* Cb=>G value is scaled-up -0.34414 * x */
-    /* We also add in ONE_HALF so that need not do it in inner loop */
-    cconvert->Cb_g_tab[i] = (- FIX(0.34414)) * x + ONE_HALF;
-  }
-}
-
-
-/*
- * Convert some rows of samples to the output colorspace.
- *
- * Note that we change from noninterleaved, one-plane-per-component format
- * to interleaved-pixel format.  The output buffer is therefore three times
- * as wide as the input buffer.
- * A starting row offset is provided only for the input buffer.  The caller
- * can easily adjust the passed output_buf value to accommodate any row
- * offset required on that side.
- */
-
-METHODDEF(void)
-ycc_rgb_convert (j_decompress_ptr cinfo,
-		 JSAMPIMAGE input_buf, JDIMENSION input_row,
-		 JSAMPARRAY output_buf, int num_rows)
-{
-  my_cconvert_ptr cconvert = (my_cconvert_ptr) cinfo->cconvert;
-  register int y, cb, cr;
-  register JSAMPROW outptr;
-  register JSAMPROW inptr0, inptr1, inptr2;
-  register JDIMENSION col;
-  JDIMENSION num_cols = cinfo->output_width;
-  /* copy these pointers into registers if possible */
-  register JSAMPLE * range_limit = cinfo->sample_range_limit;
-  register int * Crrtab = cconvert->Cr_r_tab;
-  register int * Cbbtab = cconvert->Cb_b_tab;
-  register INT32 * Crgtab = cconvert->Cr_g_tab;
-  register INT32 * Cbgtab = cconvert->Cb_g_tab;
-  SHIFT_TEMPS
-
-  while (--num_rows >= 0) {
-    inptr0 = input_buf[0][input_row];
-    inptr1 = input_buf[1][input_row];
-    inptr2 = input_buf[2][input_row];
-    input_row++;
-    outptr = *output_buf++;
-    for (col = 0; col < num_cols; col++) {
-      y  = GETJSAMPLE(inptr0[col]);
-      cb = GETJSAMPLE(inptr1[col]);
-      cr = GETJSAMPLE(inptr2[col]);
-      /* Range-limiting is essential due to noise introduced by DCT losses. */
-      outptr[RGB_RED] =   range_limit[y + Crrtab[cr]];
-      outptr[RGB_GREEN] = range_limit[y +
-			      ((int) RIGHT_SHIFT(Cbgtab[cb] + Crgtab[cr],
-						 SCALEBITS))];
-      outptr[RGB_BLUE] =  range_limit[y + Cbbtab[cb]];
-      outptr += RGB_PIXELSIZE;
-    }
-  }
-}
-
-
-/**************** Cases other than YCbCr -> RGB **************/
-
-
-/*
- * Color conversion for no colorspace change: just copy the data,
- * converting from separate-planes to interleaved representation.
- */
-
-METHODDEF(void)
-null_convert (j_decompress_ptr cinfo,
-	      JSAMPIMAGE input_buf, JDIMENSION input_row,
-	      JSAMPARRAY output_buf, int num_rows)
-{
-  register JSAMPROW inptr, outptr;
-  register JDIMENSION count;
-  register int num_components = cinfo->num_components;
-  JDIMENSION num_cols = cinfo->output_width;
-  int ci;
-
-  while (--num_rows >= 0) {
-    for (ci = 0; ci < num_components; ci++) {
-      inptr = input_buf[ci][input_row];
-      outptr = output_buf[0] + ci;
-      for (count = num_cols; count > 0; count--) {
-	*outptr = *inptr++;	/* needn't bother with GETJSAMPLE() here */
-	outptr += num_components;
-      }
-    }
-    input_row++;
-    output_buf++;
-  }
-}
-
-
-/*
- * Color conversion for grayscale: just copy the data.
- * This also works for YCbCr -> grayscale conversion, in which
- * we just copy the Y (luminance) component and ignore chrominance.
- */
-
-METHODDEF(void)
-grayscale_convert (j_decompress_ptr cinfo,
-		   JSAMPIMAGE input_buf, JDIMENSION input_row,
-		   JSAMPARRAY output_buf, int num_rows)
-{
-  jcopy_sample_rows(input_buf[0], (int) input_row, output_buf, 0,
-		    num_rows, cinfo->output_width);
-}
-
-
-/*
- * Convert grayscale to RGB: just duplicate the graylevel three times.
- * This is provided to support applications that don't want to cope
- * with grayscale as a separate case.
- */
-
-METHODDEF(void)
-gray_rgb_convert (j_decompress_ptr cinfo,
-		  JSAMPIMAGE input_buf, JDIMENSION input_row,
-		  JSAMPARRAY output_buf, int num_rows)
-{
-  register JSAMPROW inptr, outptr;
-  register JDIMENSION col;
-  JDIMENSION num_cols = cinfo->output_width;
-
-  while (--num_rows >= 0) {
-    inptr = input_buf[0][input_row++];
-    outptr = *output_buf++;
-    for (col = 0; col < num_cols; col++) {
-      /* We can dispense with GETJSAMPLE() here */
-      outptr[RGB_RED] = outptr[RGB_GREEN] = outptr[RGB_BLUE] = inptr[col];
-      outptr += RGB_PIXELSIZE;
-    }
-  }
-}
-
-
-/*
- * Adobe-style YCCK->CMYK conversion.
- * We convert YCbCr to R=1-C, G=1-M, and B=1-Y using the same
- * conversion as above, while passing K (black) unchanged.
- * We assume build_ycc_rgb_table has been called.
- */
-
-METHODDEF(void)
-ycck_cmyk_convert (j_decompress_ptr cinfo,
-		   JSAMPIMAGE input_buf, JDIMENSION input_row,
-		   JSAMPARRAY output_buf, int num_rows)
-{
-  my_cconvert_ptr cconvert = (my_cconvert_ptr) cinfo->cconvert;
-  register int y, cb, cr;
-  register JSAMPROW outptr;
-  register JSAMPROW inptr0, inptr1, inptr2, inptr3;
-  register JDIMENSION col;
-  JDIMENSION num_cols = cinfo->output_width;
-  /* copy these pointers into registers if possible */
-  register JSAMPLE * range_limit = cinfo->sample_range_limit;
-  register int * Crrtab = cconvert->Cr_r_tab;
-  register int * Cbbtab = cconvert->Cb_b_tab;
-  register INT32 * Crgtab = cconvert->Cr_g_tab;
-  register INT32 * Cbgtab = cconvert->Cb_g_tab;
-  SHIFT_TEMPS
-
-  while (--num_rows >= 0) {
-    inptr0 = input_buf[0][input_row];
-    inptr1 = input_buf[1][input_row];
-    inptr2 = input_buf[2][input_row];
-    inptr3 = input_buf[3][input_row];
-    input_row++;
-    outptr = *output_buf++;
-    for (col = 0; col < num_cols; col++) {
-      y  = GETJSAMPLE(inptr0[col]);
-      cb = GETJSAMPLE(inptr1[col]);
-      cr = GETJSAMPLE(inptr2[col]);
-      /* Range-limiting is essential due to noise introduced by DCT losses. */
-      outptr[0] = range_limit[MAXJSAMPLE - (y + Crrtab[cr])];	/* red */
-      outptr[1] = range_limit[MAXJSAMPLE - (y +			/* green */
-			      ((int) RIGHT_SHIFT(Cbgtab[cb] + Crgtab[cr],
-						 SCALEBITS)))];
-      outptr[2] = range_limit[MAXJSAMPLE - (y + Cbbtab[cb])];	/* blue */
-      /* K passes through unchanged */
-      outptr[3] = inptr3[col];	/* don't need GETJSAMPLE here */
-      outptr += 4;
-    }
-  }
-}
-
-
-/*
- * Empty method for start_pass.
- */
-
-METHODDEF(void)
-start_pass_dcolor (j_decompress_ptr cinfo)
-{
-  /* no work needed */
-}
-
-
-/*
- * Module initialization routine for output colorspace conversion.
- */
-
-GLOBAL(void)
-jinit_color_deconverter (j_decompress_ptr cinfo)
-{
-  my_cconvert_ptr cconvert;
-  int ci;
-
-  cconvert = (my_cconvert_ptr)
-    (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
-				SIZEOF(my_color_deconverter));
-  cinfo->cconvert = (struct jpeg_color_deconverter *) cconvert;
-  cconvert->pub.start_pass = start_pass_dcolor;
-
-  /* Make sure num_components agrees with jpeg_color_space */
-  switch (cinfo->jpeg_color_space) {
-  case JCS_GRAYSCALE:
-    if (cinfo->num_components != 1)
-      ERREXIT(cinfo, JERR_BAD_J_COLORSPACE);
-    break;
-
-  case JCS_RGB:
-  case JCS_YCbCr:
-    if (cinfo->num_components != 3)
-      ERREXIT(cinfo, JERR_BAD_J_COLORSPACE);
-    break;
-
-  case JCS_CMYK:
-  case JCS_YCCK:
-    if (cinfo->num_components != 4)
-      ERREXIT(cinfo, JERR_BAD_J_COLORSPACE);
-    break;
-
-  default:			/* JCS_UNKNOWN can be anything */
-    if (cinfo->num_components < 1)
-      ERREXIT(cinfo, JERR_BAD_J_COLORSPACE);
-    break;
-  }
-
-  /* Set out_color_components and conversion method based on requested space.
-   * Also clear the component_needed flags for any unused components,
-   * so that earlier pipeline stages can avoid useless computation.
-   */
-
-  switch (cinfo->out_color_space) {
-  case JCS_GRAYSCALE:
-    cinfo->out_color_components = 1;
-    if (cinfo->jpeg_color_space == JCS_GRAYSCALE ||
-	cinfo->jpeg_color_space == JCS_YCbCr) {
-      cconvert->pub.color_convert = grayscale_convert;
-      /* For color->grayscale conversion, only the Y (0) component is needed */
-      for (ci = 1; ci < cinfo->num_components; ci++)
-	cinfo->comp_info[ci].component_needed = FALSE;
-    } else
-      ERREXIT(cinfo, JERR_CONVERSION_NOTIMPL);
-    break;
-
-  case JCS_RGB:
-    cinfo->out_color_components = RGB_PIXELSIZE;
-    if (cinfo->jpeg_color_space == JCS_YCbCr) {
-      cconvert->pub.color_convert = ycc_rgb_convert;
-      build_ycc_rgb_table(cinfo);
-    } else if (cinfo->jpeg_color_space == JCS_GRAYSCALE) {
-      cconvert->pub.color_convert = gray_rgb_convert;
-    } else if (cinfo->jpeg_color_space == JCS_RGB && RGB_PIXELSIZE == 3) {
-      cconvert->pub.color_convert = null_convert;
-    } else
-      ERREXIT(cinfo, JERR_CONVERSION_NOTIMPL);
-    break;
-
-  case JCS_CMYK:
-    cinfo->out_color_components = 4;
-    if (cinfo->jpeg_color_space == JCS_YCCK) {
-      cconvert->pub.color_convert = ycck_cmyk_convert;
-      build_ycc_rgb_table(cinfo);
-    } else if (cinfo->jpeg_color_space == JCS_CMYK) {
-      cconvert->pub.color_convert = null_convert;
-    } else
-      ERREXIT(cinfo, JERR_CONVERSION_NOTIMPL);
-    break;
-
-  default:
-    /* Permit null conversion to same output space */
-    if (cinfo->out_color_space == cinfo->jpeg_color_space) {
-      cinfo->out_color_components = cinfo->num_components;
-      cconvert->pub.color_convert = null_convert;
-    } else			/* unsupported non-null conversion */
-      ERREXIT(cinfo, JERR_CONVERSION_NOTIMPL);
-    break;
-  }
-
-  if (cinfo->quantize_colors)
-    cinfo->output_components = 1; /* single colormapped output component */
-  else
-    cinfo->output_components = cinfo->out_color_components;
-}
diff --git a/src/libjpeg/jdct.h b/src/libjpeg/jdct.h
deleted file mode 100644
index b664cab..0000000
--- a/src/libjpeg/jdct.h
+++ /dev/null
@@ -1,176 +0,0 @@
-/*
- * jdct.h
- *
- * Copyright (C) 1994-1996, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This include file contains common declarations for the forward and
- * inverse DCT modules.  These declarations are private to the DCT managers
- * (jcdctmgr.c, jddctmgr.c) and the individual DCT algorithms.
- * The individual DCT algorithms are kept in separate files to ease 
- * machine-dependent tuning (e.g., assembly coding).
- */
-
-
-/*
- * A forward DCT routine is given a pointer to a work area of type DCTELEM[];
- * the DCT is to be performed in-place in that buffer.  Type DCTELEM is int
- * for 8-bit samples, INT32 for 12-bit samples.  (NOTE: Floating-point DCT
- * implementations use an array of type FAST_FLOAT, instead.)
- * The DCT inputs are expected to be signed (range +-CENTERJSAMPLE).
- * The DCT outputs are returned scaled up by a factor of 8; they therefore
- * have a range of +-8K for 8-bit data, +-128K for 12-bit data.  This
- * convention improves accuracy in integer implementations and saves some
- * work in floating-point ones.
- * Quantization of the output coefficients is done by jcdctmgr.c.
- */
-
-#if BITS_IN_JSAMPLE == 8
-typedef int DCTELEM;		/* 16 or 32 bits is fine */
-#else
-typedef INT32 DCTELEM;		/* must have 32 bits */
-#endif
-
-typedef JMETHOD(void, forward_DCT_method_ptr, (DCTELEM * data));
-typedef JMETHOD(void, float_DCT_method_ptr, (FAST_FLOAT * data));
-
-
-/*
- * An inverse DCT routine is given a pointer to the input JBLOCK and a pointer
- * to an output sample array.  The routine must dequantize the input data as
- * well as perform the IDCT; for dequantization, it uses the multiplier table
- * pointed to by compptr->dct_table.  The output data is to be placed into the
- * sample array starting at a specified column.  (Any row offset needed will
- * be applied to the array pointer before it is passed to the IDCT code.)
- * Note that the number of samples emitted by the IDCT routine is
- * DCT_scaled_size * DCT_scaled_size.
- */
-
-/* typedef inverse_DCT_method_ptr is declared in jpegint.h */
-
-/*
- * Each IDCT routine has its own ideas about the best dct_table element type.
- */
-
-typedef MULTIPLIER ISLOW_MULT_TYPE; /* short or int, whichever is faster */
-#if BITS_IN_JSAMPLE == 8
-typedef MULTIPLIER IFAST_MULT_TYPE; /* 16 bits is OK, use short if faster */
-#define IFAST_SCALE_BITS  2	/* fractional bits in scale factors */
-#else
-typedef INT32 IFAST_MULT_TYPE;	/* need 32 bits for scaled quantizers */
-#define IFAST_SCALE_BITS  13	/* fractional bits in scale factors */
-#endif
-typedef FAST_FLOAT FLOAT_MULT_TYPE; /* preferred floating type */
-
-
-/*
- * Each IDCT routine is responsible for range-limiting its results and
- * converting them to unsigned form (0..MAXJSAMPLE).  The raw outputs could
- * be quite far out of range if the input data is corrupt, so a bulletproof
- * range-limiting step is required.  We use a mask-and-table-lookup method
- * to do the combined operations quickly.  See the comments with
- * prepare_range_limit_table (in jdmaster.c) for more info.
- */
-
-#define IDCT_range_limit(cinfo)  ((cinfo)->sample_range_limit + CENTERJSAMPLE)
-
-#define RANGE_MASK  (MAXJSAMPLE * 4 + 3) /* 2 bits wider than legal samples */
-
-
-/* Short forms of external names for systems with brain-damaged linkers. */
-
-#ifdef NEED_SHORT_EXTERNAL_NAMES
-#define jpeg_fdct_islow		jFDislow
-#define jpeg_fdct_ifast		jFDifast
-#define jpeg_fdct_float		jFDfloat
-#define jpeg_idct_islow		jRDislow
-#define jpeg_idct_ifast		jRDifast
-#define jpeg_idct_float		jRDfloat
-#define jpeg_idct_4x4		jRD4x4
-#define jpeg_idct_2x2		jRD2x2
-#define jpeg_idct_1x1		jRD1x1
-#endif /* NEED_SHORT_EXTERNAL_NAMES */
-
-/* Extern declarations for the forward and inverse DCT routines. */
-
-EXTERN(void) jpeg_fdct_islow JPP((DCTELEM * data));
-EXTERN(void) jpeg_fdct_ifast JPP((DCTELEM * data));
-EXTERN(void) jpeg_fdct_float JPP((FAST_FLOAT * data));
-
-EXTERN(void) jpeg_idct_islow
-    JPP((j_decompress_ptr cinfo, jpeg_component_info * compptr,
-	 JCOEFPTR coef_block, JSAMPARRAY output_buf, JDIMENSION output_col));
-EXTERN(void) jpeg_idct_ifast
-    JPP((j_decompress_ptr cinfo, jpeg_component_info * compptr,
-	 JCOEFPTR coef_block, JSAMPARRAY output_buf, JDIMENSION output_col));
-EXTERN(void) jpeg_idct_float
-    JPP((j_decompress_ptr cinfo, jpeg_component_info * compptr,
-	 JCOEFPTR coef_block, JSAMPARRAY output_buf, JDIMENSION output_col));
-EXTERN(void) jpeg_idct_4x4
-    JPP((j_decompress_ptr cinfo, jpeg_component_info * compptr,
-	 JCOEFPTR coef_block, JSAMPARRAY output_buf, JDIMENSION output_col));
-EXTERN(void) jpeg_idct_2x2
-    JPP((j_decompress_ptr cinfo, jpeg_component_info * compptr,
-	 JCOEFPTR coef_block, JSAMPARRAY output_buf, JDIMENSION output_col));
-EXTERN(void) jpeg_idct_1x1
-    JPP((j_decompress_ptr cinfo, jpeg_component_info * compptr,
-	 JCOEFPTR coef_block, JSAMPARRAY output_buf, JDIMENSION output_col));
-
-
-/*
- * Macros for handling fixed-point arithmetic; these are used by many
- * but not all of the DCT/IDCT modules.
- *
- * All values are expected to be of type INT32.
- * Fractional constants are scaled left by CONST_BITS bits.
- * CONST_BITS is defined within each module using these macros,
- * and may differ from one module to the next.
- */
-
-#define ONE	((INT32) 1)
-#define CONST_SCALE (ONE << CONST_BITS)
-
-/* Convert a positive real constant to an integer scaled by CONST_SCALE.
- * Caution: some C compilers fail to reduce "FIX(constant)" at compile time,
- * thus causing a lot of useless floating-point operations at run time.
- */
-
-#define FIX(x)	((INT32) ((x) * CONST_SCALE + 0.5))
-
-/* Descale and correctly round an INT32 value that's scaled by N bits.
- * We assume RIGHT_SHIFT rounds towards minus infinity, so adding
- * the fudge factor is correct for either sign of X.
- */
-
-#define DESCALE(x,n)  RIGHT_SHIFT((x) + (ONE << ((n)-1)), n)
-
-/* Multiply an INT32 variable by an INT32 constant to yield an INT32 result.
- * This macro is used only when the two inputs will actually be no more than
- * 16 bits wide, so that a 16x16->32 bit multiply can be used instead of a
- * full 32x32 multiply.  This provides a useful speedup on many machines.
- * Unfortunately there is no way to specify a 16x16->32 multiply portably
- * in C, but some C compilers will do the right thing if you provide the
- * correct combination of casts.
- */
-
-#ifdef SHORTxSHORT_32		/* may work if 'int' is 32 bits */
-#define MULTIPLY16C16(var,const)  (((INT16) (var)) * ((INT16) (const)))
-#endif
-#ifdef SHORTxLCONST_32		/* known to work with Microsoft C 6.0 */
-#define MULTIPLY16C16(var,const)  (((INT16) (var)) * ((INT32) (const)))
-#endif
-
-#ifndef MULTIPLY16C16		/* default definition */
-#define MULTIPLY16C16(var,const)  ((var) * (const))
-#endif
-
-/* Same except both inputs are variables. */
-
-#ifdef SHORTxSHORT_32		/* may work if 'int' is 32 bits */
-#define MULTIPLY16V16(var1,var2)  (((INT16) (var1)) * ((INT16) (var2)))
-#endif
-
-#ifndef MULTIPLY16V16		/* default definition */
-#define MULTIPLY16V16(var1,var2)  ((var1) * (var2))
-#endif
diff --git a/src/libjpeg/jddctmgr.c b/src/libjpeg/jddctmgr.c
deleted file mode 100644
index 0e44eb1..0000000
--- a/src/libjpeg/jddctmgr.c
+++ /dev/null
@@ -1,269 +0,0 @@
-/*
- * jddctmgr.c
- *
- * Copyright (C) 1994-1996, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains the inverse-DCT management logic.
- * This code selects a particular IDCT implementation to be used,
- * and it performs related housekeeping chores.  No code in this file
- * is executed per IDCT step, only during output pass setup.
- *
- * Note that the IDCT routines are responsible for performing coefficient
- * dequantization as well as the IDCT proper.  This module sets up the
- * dequantization multiplier table needed by the IDCT routine.
- */
-
-#define JPEG_INTERNALS
-#include "jinclude.h"
-#include "jpeglib.h"
-#include "jdct.h"		/* Private declarations for DCT subsystem */
-
-
-/*
- * The decompressor input side (jdinput.c) saves away the appropriate
- * quantization table for each component at the start of the first scan
- * involving that component.  (This is necessary in order to correctly
- * decode files that reuse Q-table slots.)
- * When we are ready to make an output pass, the saved Q-table is converted
- * to a multiplier table that will actually be used by the IDCT routine.
- * The multiplier table contents are IDCT-method-dependent.  To support
- * application changes in IDCT method between scans, we can remake the
- * multiplier tables if necessary.
- * In buffered-image mode, the first output pass may occur before any data
- * has been seen for some components, and thus before their Q-tables have
- * been saved away.  To handle this case, multiplier tables are preset
- * to zeroes; the result of the IDCT will be a neutral gray level.
- */
-
-
-/* Private subobject for this module */
-
-typedef struct {
-  struct jpeg_inverse_dct pub;	/* public fields */
-
-  /* This array contains the IDCT method code that each multiplier table
-   * is currently set up for, or -1 if it's not yet set up.
-   * The actual multiplier tables are pointed to by dct_table in the
-   * per-component comp_info structures.
-   */
-  int cur_method[MAX_COMPONENTS];
-} my_idct_controller;
-
-typedef my_idct_controller * my_idct_ptr;
-
-
-/* Allocated multiplier tables: big enough for any supported variant */
-
-typedef union {
-  ISLOW_MULT_TYPE islow_array[DCTSIZE2];
-#ifdef DCT_IFAST_SUPPORTED
-  IFAST_MULT_TYPE ifast_array[DCTSIZE2];
-#endif
-#ifdef DCT_FLOAT_SUPPORTED
-  FLOAT_MULT_TYPE float_array[DCTSIZE2];
-#endif
-} multiplier_table;
-
-
-/* The current scaled-IDCT routines require ISLOW-style multiplier tables,
- * so be sure to compile that code if either ISLOW or SCALING is requested.
- */
-#ifdef DCT_ISLOW_SUPPORTED
-#define PROVIDE_ISLOW_TABLES
-#else
-#ifdef IDCT_SCALING_SUPPORTED
-#define PROVIDE_ISLOW_TABLES
-#endif
-#endif
-
-
-/*
- * Prepare for an output pass.
- * Here we select the proper IDCT routine for each component and build
- * a matching multiplier table.
- */
-
-METHODDEF(void)
-start_pass (j_decompress_ptr cinfo)
-{
-  my_idct_ptr idct = (my_idct_ptr) cinfo->idct;
-  int ci, i;
-  jpeg_component_info *compptr;
-  int method = 0;
-  inverse_DCT_method_ptr method_ptr = NULL;
-  JQUANT_TBL * qtbl;
-
-  for (ci = 0, compptr = cinfo->comp_info; ci < cinfo->num_components;
-       ci++, compptr++) {
-    /* Select the proper IDCT routine for this component's scaling */
-    switch (compptr->DCT_scaled_size) {
-#ifdef IDCT_SCALING_SUPPORTED
-    case 1:
-      method_ptr = jpeg_idct_1x1;
-      method = JDCT_ISLOW;	/* jidctred uses islow-style table */
-      break;
-    case 2:
-      method_ptr = jpeg_idct_2x2;
-      method = JDCT_ISLOW;	/* jidctred uses islow-style table */
-      break;
-    case 4:
-      method_ptr = jpeg_idct_4x4;
-      method = JDCT_ISLOW;	/* jidctred uses islow-style table */
-      break;
-#endif
-    case DCTSIZE:
-      switch (cinfo->dct_method) {
-#ifdef DCT_ISLOW_SUPPORTED
-      case JDCT_ISLOW:
-	method_ptr = jpeg_idct_islow;
-	method = JDCT_ISLOW;
-	break;
-#endif
-#ifdef DCT_IFAST_SUPPORTED
-      case JDCT_IFAST:
-	method_ptr = jpeg_idct_ifast;
-	method = JDCT_IFAST;
-	break;
-#endif
-#ifdef DCT_FLOAT_SUPPORTED
-      case JDCT_FLOAT:
-	method_ptr = jpeg_idct_float;
-	method = JDCT_FLOAT;
-	break;
-#endif
-      default:
-	ERREXIT(cinfo, JERR_NOT_COMPILED);
-	break;
-      }
-      break;
-    default:
-      ERREXIT1(cinfo, JERR_BAD_DCTSIZE, compptr->DCT_scaled_size);
-      break;
-    }
-    idct->pub.inverse_DCT[ci] = method_ptr;
-    /* Create multiplier table from quant table.
-     * However, we can skip this if the component is uninteresting
-     * or if we already built the table.  Also, if no quant table
-     * has yet been saved for the component, we leave the
-     * multiplier table all-zero; we'll be reading zeroes from the
-     * coefficient controller's buffer anyway.
-     */
-    if (! compptr->component_needed || idct->cur_method[ci] == method)
-      continue;
-    qtbl = compptr->quant_table;
-    if (qtbl == NULL)		/* happens if no data yet for component */
-      continue;
-    idct->cur_method[ci] = method;
-    switch (method) {
-#ifdef PROVIDE_ISLOW_TABLES
-    case JDCT_ISLOW:
-      {
-	/* For LL&M IDCT method, multipliers are equal to raw quantization
-	 * coefficients, but are stored as ints to ensure access efficiency.
-	 */
-	ISLOW_MULT_TYPE * ismtbl = (ISLOW_MULT_TYPE *) compptr->dct_table;
-	for (i = 0; i < DCTSIZE2; i++) {
-	  ismtbl[i] = (ISLOW_MULT_TYPE) qtbl->quantval[i];
-	}
-      }
-      break;
-#endif
-#ifdef DCT_IFAST_SUPPORTED
-    case JDCT_IFAST:
-      {
-	/* For AA&N IDCT method, multipliers are equal to quantization
-	 * coefficients scaled by scalefactor[row]*scalefactor[col], where
-	 *   scalefactor[0] = 1
-	 *   scalefactor[k] = cos(k*PI/16) * sqrt(2)    for k=1..7
-	 * For integer operation, the multiplier table is to be scaled by
-	 * IFAST_SCALE_BITS.
-	 */
-	IFAST_MULT_TYPE * ifmtbl = (IFAST_MULT_TYPE *) compptr->dct_table;
-#define CONST_BITS 14
-	static const INT16 aanscales[DCTSIZE2] = {
-	  /* precomputed values scaled up by 14 bits */
-	  16384, 22725, 21407, 19266, 16384, 12873,  8867,  4520,
-	  22725, 31521, 29692, 26722, 22725, 17855, 12299,  6270,
-	  21407, 29692, 27969, 25172, 21407, 16819, 11585,  5906,
-	  19266, 26722, 25172, 22654, 19266, 15137, 10426,  5315,
-	  16384, 22725, 21407, 19266, 16384, 12873,  8867,  4520,
-	  12873, 17855, 16819, 15137, 12873, 10114,  6967,  3552,
-	   8867, 12299, 11585, 10426,  8867,  6967,  4799,  2446,
-	   4520,  6270,  5906,  5315,  4520,  3552,  2446,  1247
-	};
-	SHIFT_TEMPS
-
-	for (i = 0; i < DCTSIZE2; i++) {
-	  ifmtbl[i] = (IFAST_MULT_TYPE)
-	    DESCALE(MULTIPLY16V16((INT32) qtbl->quantval[i],
-				  (INT32) aanscales[i]),
-		    CONST_BITS-IFAST_SCALE_BITS);
-	}
-      }
-      break;
-#endif
-#ifdef DCT_FLOAT_SUPPORTED
-    case JDCT_FLOAT:
-      {
-	/* For float AA&N IDCT method, multipliers are equal to quantization
-	 * coefficients scaled by scalefactor[row]*scalefactor[col], where
-	 *   scalefactor[0] = 1
-	 *   scalefactor[k] = cos(k*PI/16) * sqrt(2)    for k=1..7
-	 */
-	FLOAT_MULT_TYPE * fmtbl = (FLOAT_MULT_TYPE *) compptr->dct_table;
-	int row, col;
-	static const double aanscalefactor[DCTSIZE] = {
-	  1.0, 1.387039845, 1.306562965, 1.175875602,
-	  1.0, 0.785694958, 0.541196100, 0.275899379
-	};
-
-	i = 0;
-	for (row = 0; row < DCTSIZE; row++) {
-	  for (col = 0; col < DCTSIZE; col++) {
-	    fmtbl[i] = (FLOAT_MULT_TYPE)
-	      ((double) qtbl->quantval[i] *
-	       aanscalefactor[row] * aanscalefactor[col]);
-	    i++;
-	  }
-	}
-      }
-      break;
-#endif
-    default:
-      ERREXIT(cinfo, JERR_NOT_COMPILED);
-      break;
-    }
-  }
-}
-
-
-/*
- * Initialize IDCT manager.
- */
-
-GLOBAL(void)
-jinit_inverse_dct (j_decompress_ptr cinfo)
-{
-  my_idct_ptr idct;
-  int ci;
-  jpeg_component_info *compptr;
-
-  idct = (my_idct_ptr)
-    (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
-				SIZEOF(my_idct_controller));
-  cinfo->idct = (struct jpeg_inverse_dct *) idct;
-  idct->pub.start_pass = start_pass;
-
-  for (ci = 0, compptr = cinfo->comp_info; ci < cinfo->num_components;
-       ci++, compptr++) {
-    /* Allocate and pre-zero a multiplier table for each component */
-    compptr->dct_table =
-      (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
-				  SIZEOF(multiplier_table));
-    MEMZERO(compptr->dct_table, SIZEOF(multiplier_table));
-    /* Mark multiplier table not yet set up for any method */
-    idct->cur_method[ci] = -1;
-  }
-}
diff --git a/src/libjpeg/jdhuff.c b/src/libjpeg/jdhuff.c
deleted file mode 100644
index b2ad66d..0000000
--- a/src/libjpeg/jdhuff.c
+++ /dev/null
@@ -1,651 +0,0 @@
-/*
- * jdhuff.c
- *
- * Copyright (C) 1991-1997, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains Huffman entropy decoding routines.
- *
- * Much of the complexity here has to do with supporting input suspension.
- * If the data source module demands suspension, we want to be able to back
- * up to the start of the current MCU.  To do this, we copy state variables
- * into local working storage, and update them back to the permanent
- * storage only upon successful completion of an MCU.
- */
-
-#define JPEG_INTERNALS
-#include "jinclude.h"
-#include "jpeglib.h"
-#include "jdhuff.h"		/* Declarations shared with jdphuff.c */
-
-
-/*
- * Expanded entropy decoder object for Huffman decoding.
- *
- * The savable_state subrecord contains fields that change within an MCU,
- * but must not be updated permanently until we complete the MCU.
- */
-
-typedef struct {
-  int last_dc_val[MAX_COMPS_IN_SCAN]; /* last DC coef for each component */
-} savable_state;
-
-/* This macro is to work around compilers with missing or broken
- * structure assignment.  You'll need to fix this code if you have
- * such a compiler and you change MAX_COMPS_IN_SCAN.
- */
-
-#ifndef NO_STRUCT_ASSIGN
-#define ASSIGN_STATE(dest,src)  ((dest) = (src))
-#else
-#if MAX_COMPS_IN_SCAN == 4
-#define ASSIGN_STATE(dest,src)  \
-	((dest).last_dc_val[0] = (src).last_dc_val[0], \
-	 (dest).last_dc_val[1] = (src).last_dc_val[1], \
-	 (dest).last_dc_val[2] = (src).last_dc_val[2], \
-	 (dest).last_dc_val[3] = (src).last_dc_val[3])
-#endif
-#endif
-
-
-typedef struct {
-  struct jpeg_entropy_decoder pub; /* public fields */
-
-  /* These fields are loaded into local variables at start of each MCU.
-   * In case of suspension, we exit WITHOUT updating them.
-   */
-  bitread_perm_state bitstate;	/* Bit buffer at start of MCU */
-  savable_state saved;		/* Other state at start of MCU */
-
-  /* These fields are NOT loaded into local working state. */
-  unsigned int restarts_to_go;	/* MCUs left in this restart interval */
-
-  /* Pointers to derived tables (these workspaces have image lifespan) */
-  d_derived_tbl * dc_derived_tbls[NUM_HUFF_TBLS];
-  d_derived_tbl * ac_derived_tbls[NUM_HUFF_TBLS];
-
-  /* Precalculated info set up by start_pass for use in decode_mcu: */
-
-  /* Pointers to derived tables to be used for each block within an MCU */
-  d_derived_tbl * dc_cur_tbls[D_MAX_BLOCKS_IN_MCU];
-  d_derived_tbl * ac_cur_tbls[D_MAX_BLOCKS_IN_MCU];
-  /* Whether we care about the DC and AC coefficient values for each block */
-  boolean dc_needed[D_MAX_BLOCKS_IN_MCU];
-  boolean ac_needed[D_MAX_BLOCKS_IN_MCU];
-} huff_entropy_decoder;
-
-typedef huff_entropy_decoder * huff_entropy_ptr;
-
-
-/*
- * Initialize for a Huffman-compressed scan.
- */
-
-METHODDEF(void)
-start_pass_huff_decoder (j_decompress_ptr cinfo)
-{
-  huff_entropy_ptr entropy = (huff_entropy_ptr) cinfo->entropy;
-  int ci, blkn, dctbl, actbl;
-  jpeg_component_info * compptr;
-
-  /* Check that the scan parameters Ss, Se, Ah/Al are OK for sequential JPEG.
-   * This ought to be an error condition, but we make it a warning because
-   * there are some baseline files out there with all zeroes in these bytes.
-   */
-  if (cinfo->Ss != 0 || cinfo->Se != DCTSIZE2-1 ||
-      cinfo->Ah != 0 || cinfo->Al != 0)
-    WARNMS(cinfo, JWRN_NOT_SEQUENTIAL);
-
-  for (ci = 0; ci < cinfo->comps_in_scan; ci++) {
-    compptr = cinfo->cur_comp_info[ci];
-    dctbl = compptr->dc_tbl_no;
-    actbl = compptr->ac_tbl_no;
-    /* Compute derived values for Huffman tables */
-    /* We may do this more than once for a table, but it's not expensive */
-    jpeg_make_d_derived_tbl(cinfo, TRUE, dctbl,
-			    & entropy->dc_derived_tbls[dctbl]);
-    jpeg_make_d_derived_tbl(cinfo, FALSE, actbl,
-			    & entropy->ac_derived_tbls[actbl]);
-    /* Initialize DC predictions to 0 */
-    entropy->saved.last_dc_val[ci] = 0;
-  }
-
-  /* Precalculate decoding info for each block in an MCU of this scan */
-  for (blkn = 0; blkn < cinfo->blocks_in_MCU; blkn++) {
-    ci = cinfo->MCU_membership[blkn];
-    compptr = cinfo->cur_comp_info[ci];
-    /* Precalculate which table to use for each block */
-    entropy->dc_cur_tbls[blkn] = entropy->dc_derived_tbls[compptr->dc_tbl_no];
-    entropy->ac_cur_tbls[blkn] = entropy->ac_derived_tbls[compptr->ac_tbl_no];
-    /* Decide whether we really care about the coefficient values */
-    if (compptr->component_needed) {
-      entropy->dc_needed[blkn] = TRUE;
-      /* we don't need the ACs if producing a 1/8th-size image */
-      entropy->ac_needed[blkn] = (compptr->DCT_scaled_size > 1);
-    } else {
-      entropy->dc_needed[blkn] = entropy->ac_needed[blkn] = FALSE;
-    }
-  }
-
-  /* Initialize bitread state variables */
-  entropy->bitstate.bits_left = 0;
-  entropy->bitstate.get_buffer = 0; /* unnecessary, but keeps Purify quiet */
-  entropy->pub.insufficient_data = FALSE;
-
-  /* Initialize restart counter */
-  entropy->restarts_to_go = cinfo->restart_interval;
-}
-
-
-/*
- * Compute the derived values for a Huffman table.
- * This routine also performs some validation checks on the table.
- *
- * Note this is also used by jdphuff.c.
- */
-
-GLOBAL(void)
-jpeg_make_d_derived_tbl (j_decompress_ptr cinfo, boolean isDC, int tblno,
-			 d_derived_tbl ** pdtbl)
-{
-  JHUFF_TBL *htbl;
-  d_derived_tbl *dtbl;
-  int p, i, l, si, numsymbols;
-  int lookbits, ctr;
-  char huffsize[257];
-  unsigned int huffcode[257];
-  unsigned int code;
-
-  /* Note that huffsize[] and huffcode[] are filled in code-length order,
-   * paralleling the order of the symbols themselves in htbl->huffval[].
-   */
-
-  /* Find the input Huffman table */
-  if (tblno < 0 || tblno >= NUM_HUFF_TBLS)
-    ERREXIT1(cinfo, JERR_NO_HUFF_TABLE, tblno);
-  htbl =
-    isDC ? cinfo->dc_huff_tbl_ptrs[tblno] : cinfo->ac_huff_tbl_ptrs[tblno];
-  if (htbl == NULL)
-    ERREXIT1(cinfo, JERR_NO_HUFF_TABLE, tblno);
-
-  /* Allocate a workspace if we haven't already done so. */
-  if (*pdtbl == NULL)
-    *pdtbl = (d_derived_tbl *)
-      (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
-				  SIZEOF(d_derived_tbl));
-  dtbl = *pdtbl;
-  dtbl->pub = htbl;		/* fill in back link */
-  
-  /* Figure C.1: make table of Huffman code length for each symbol */
-
-  p = 0;
-  for (l = 1; l <= 16; l++) {
-    i = (int) htbl->bits[l];
-    if (i < 0 || p + i > 256)	/* protect against table overrun */
-      ERREXIT(cinfo, JERR_BAD_HUFF_TABLE);
-    while (i--)
-      huffsize[p++] = (char) l;
-  }
-  huffsize[p] = 0;
-  numsymbols = p;
-  
-  /* Figure C.2: generate the codes themselves */
-  /* We also validate that the counts represent a legal Huffman code tree. */
-  
-  code = 0;
-  si = huffsize[0];
-  p = 0;
-  while (huffsize[p]) {
-    while (((int) huffsize[p]) == si) {
-      huffcode[p++] = code;
-      code++;
-    }
-    /* code is now 1 more than the last code used for codelength si; but
-     * it must still fit in si bits, since no code is allowed to be all ones.
-     */
-    if (((INT32) code) >= (((INT32) 1) << si))
-      ERREXIT(cinfo, JERR_BAD_HUFF_TABLE);
-    code <<= 1;
-    si++;
-  }
-
-  /* Figure F.15: generate decoding tables for bit-sequential decoding */
-
-  p = 0;
-  for (l = 1; l <= 16; l++) {
-    if (htbl->bits[l]) {
-      /* valoffset[l] = huffval[] index of 1st symbol of code length l,
-       * minus the minimum code of length l
-       */
-      dtbl->valoffset[l] = (INT32) p - (INT32) huffcode[p];
-      p += htbl->bits[l];
-      dtbl->maxcode[l] = huffcode[p-1]; /* maximum code of length l */
-    } else {
-      dtbl->maxcode[l] = -1;	/* -1 if no codes of this length */
-    }
-  }
-  dtbl->maxcode[17] = 0xFFFFFL; /* ensures jpeg_huff_decode terminates */
-
-  /* Compute lookahead tables to speed up decoding.
-   * First we set all the table entries to 0, indicating "too long";
-   * then we iterate through the Huffman codes that are short enough and
-   * fill in all the entries that correspond to bit sequences starting
-   * with that code.
-   */
-
-  MEMZERO(dtbl->look_nbits, SIZEOF(dtbl->look_nbits));
-
-  p = 0;
-  for (l = 1; l <= HUFF_LOOKAHEAD; l++) {
-    for (i = 1; i <= (int) htbl->bits[l]; i++, p++) {
-      /* l = current code's length, p = its index in huffcode[] & huffval[]. */
-      /* Generate left-justified code followed by all possible bit sequences */
-      lookbits = huffcode[p] << (HUFF_LOOKAHEAD-l);
-      for (ctr = 1 << (HUFF_LOOKAHEAD-l); ctr > 0; ctr--) {
-	dtbl->look_nbits[lookbits] = l;
-	dtbl->look_sym[lookbits] = htbl->huffval[p];
-	lookbits++;
-      }
-    }
-  }
-
-  /* Validate symbols as being reasonable.
-   * For AC tables, we make no check, but accept all byte values 0..255.
-   * For DC tables, we require the symbols to be in range 0..15.
-   * (Tighter bounds could be applied depending on the data depth and mode,
-   * but this is sufficient to ensure safe decoding.)
-   */
-  if (isDC) {
-    for (i = 0; i < numsymbols; i++) {
-      int sym = htbl->huffval[i];
-      if (sym < 0 || sym > 15)
-	ERREXIT(cinfo, JERR_BAD_HUFF_TABLE);
-    }
-  }
-}
-
-
-/*
- * Out-of-line code for bit fetching (shared with jdphuff.c).
- * See jdhuff.h for info about usage.
- * Note: current values of get_buffer and bits_left are passed as parameters,
- * but are returned in the corresponding fields of the state struct.
- *
- * On most machines MIN_GET_BITS should be 25 to allow the full 32-bit width
- * of get_buffer to be used.  (On machines with wider words, an even larger
- * buffer could be used.)  However, on some machines 32-bit shifts are
- * quite slow and take time proportional to the number of places shifted.
- * (This is true with most PC compilers, for instance.)  In this case it may
- * be a win to set MIN_GET_BITS to the minimum value of 15.  This reduces the
- * average shift distance at the cost of more calls to jpeg_fill_bit_buffer.
- */
-
-#ifdef SLOW_SHIFT_32
-#define MIN_GET_BITS  15	/* minimum allowable value */
-#else
-#define MIN_GET_BITS  (BIT_BUF_SIZE-7)
-#endif
-
-
-GLOBAL(boolean)
-jpeg_fill_bit_buffer (bitread_working_state * state,
-		      register bit_buf_type get_buffer, register int bits_left,
-		      int nbits)
-/* Load up the bit buffer to a depth of at least nbits */
-{
-  /* Copy heavily used state fields into locals (hopefully registers) */
-  register const JOCTET * next_input_byte = state->next_input_byte;
-  register size_t bytes_in_buffer = state->bytes_in_buffer;
-  j_decompress_ptr cinfo = state->cinfo;
-
-  /* Attempt to load at least MIN_GET_BITS bits into get_buffer. */
-  /* (It is assumed that no request will be for more than that many bits.) */
-  /* We fail to do so only if we hit a marker or are forced to suspend. */
-
-  if (cinfo->unread_marker == 0) {	/* cannot advance past a marker */
-    while (bits_left < MIN_GET_BITS) {
-      register int c;
-
-      /* Attempt to read a byte */
-      if (bytes_in_buffer == 0) {
-	if (! (*cinfo->src->fill_input_buffer) (cinfo))
-	  return FALSE;
-	next_input_byte = cinfo->src->next_input_byte;
-	bytes_in_buffer = cinfo->src->bytes_in_buffer;
-      }
-      bytes_in_buffer--;
-      c = GETJOCTET(*next_input_byte++);
-
-      /* If it's 0xFF, check and discard stuffed zero byte */
-      if (c == 0xFF) {
-	/* Loop here to discard any padding FF's on terminating marker,
-	 * so that we can save a valid unread_marker value.  NOTE: we will
-	 * accept multiple FF's followed by a 0 as meaning a single FF data
-	 * byte.  This data pattern is not valid according to the standard.
-	 */
-	do {
-	  if (bytes_in_buffer == 0) {
-	    if (! (*cinfo->src->fill_input_buffer) (cinfo))
-	      return FALSE;
-	    next_input_byte = cinfo->src->next_input_byte;
-	    bytes_in_buffer = cinfo->src->bytes_in_buffer;
-	  }
-	  bytes_in_buffer--;
-	  c = GETJOCTET(*next_input_byte++);
-	} while (c == 0xFF);
-
-	if (c == 0) {
-	  /* Found FF/00, which represents an FF data byte */
-	  c = 0xFF;
-	} else {
-	  /* Oops, it's actually a marker indicating end of compressed data.
-	   * Save the marker code for later use.
-	   * Fine point: it might appear that we should save the marker into
-	   * bitread working state, not straight into permanent state.  But
-	   * once we have hit a marker, we cannot need to suspend within the
-	   * current MCU, because we will read no more bytes from the data
-	   * source.  So it is OK to update permanent state right away.
-	   */
-	  cinfo->unread_marker = c;
-	  /* See if we need to insert some fake zero bits. */
-	  goto no_more_bytes;
-	}
-      }
-
-      /* OK, load c into get_buffer */
-      get_buffer = (get_buffer << 8) | c;
-      bits_left += 8;
-    } /* end while */
-  } else {
-  no_more_bytes:
-    /* We get here if we've read the marker that terminates the compressed
-     * data segment.  There should be enough bits in the buffer register
-     * to satisfy the request; if so, no problem.
-     */
-    if (nbits > bits_left) {
-      /* Uh-oh.  Report corrupted data to user and stuff zeroes into
-       * the data stream, so that we can produce some kind of image.
-       * We use a nonvolatile flag to ensure that only one warning message
-       * appears per data segment.
-       */
-      if (! cinfo->entropy->insufficient_data) {
-	WARNMS(cinfo, JWRN_HIT_MARKER);
-	cinfo->entropy->insufficient_data = TRUE;
-      }
-      /* Fill the buffer with zero bits */
-      get_buffer <<= MIN_GET_BITS - bits_left;
-      bits_left = MIN_GET_BITS;
-    }
-  }
-
-  /* Unload the local registers */
-  state->next_input_byte = next_input_byte;
-  state->bytes_in_buffer = bytes_in_buffer;
-  state->get_buffer = get_buffer;
-  state->bits_left = bits_left;
-
-  return TRUE;
-}
-
-
-/*
- * Out-of-line code for Huffman code decoding.
- * See jdhuff.h for info about usage.
- */
-
-GLOBAL(int)
-jpeg_huff_decode (bitread_working_state * state,
-		  register bit_buf_type get_buffer, register int bits_left,
-		  d_derived_tbl * htbl, int min_bits)
-{
-  register int l = min_bits;
-  register INT32 code;
-
-  /* HUFF_DECODE has determined that the code is at least min_bits */
-  /* bits long, so fetch that many bits in one swoop. */
-
-  CHECK_BIT_BUFFER(*state, l, return -1);
-  code = GET_BITS(l);
-
-  /* Collect the rest of the Huffman code one bit at a time. */
-  /* This is per Figure F.16 in the JPEG spec. */
-
-  while (code > htbl->maxcode[l]) {
-    code <<= 1;
-    CHECK_BIT_BUFFER(*state, 1, return -1);
-    code |= GET_BITS(1);
-    l++;
-  }
-
-  /* Unload the local registers */
-  state->get_buffer = get_buffer;
-  state->bits_left = bits_left;
-
-  /* With garbage input we may reach the sentinel value l = 17. */
-
-  if (l > 16) {
-    WARNMS(state->cinfo, JWRN_HUFF_BAD_CODE);
-    return 0;			/* fake a zero as the safest result */
-  }
-
-  return htbl->pub->huffval[ (int) (code + htbl->valoffset[l]) ];
-}
-
-
-/*
- * Figure F.12: extend sign bit.
- * On some machines, a shift and add will be faster than a table lookup.
- */
-
-#ifdef AVOID_TABLES
-
-#define HUFF_EXTEND(x,s)  ((x) < (1<<((s)-1)) ? (x) + (((-1)<<(s)) + 1) : (x))
-
-#else
-
-#define HUFF_EXTEND(x,s)  ((x) < extend_test[s] ? (x) + extend_offset[s] : (x))
-
-static const int extend_test[16] =   /* entry n is 2**(n-1) */
-  { 0, 0x0001, 0x0002, 0x0004, 0x0008, 0x0010, 0x0020, 0x0040, 0x0080,
-    0x0100, 0x0200, 0x0400, 0x0800, 0x1000, 0x2000, 0x4000 };
-
-static const int extend_offset[16] = /* entry n is (-1 << n) + 1 */
-  { 0, ((-1)<<1) + 1, ((-1)<<2) + 1, ((-1)<<3) + 1, ((-1)<<4) + 1,
-    ((-1)<<5) + 1, ((-1)<<6) + 1, ((-1)<<7) + 1, ((-1)<<8) + 1,
-    ((-1)<<9) + 1, ((-1)<<10) + 1, ((-1)<<11) + 1, ((-1)<<12) + 1,
-    ((-1)<<13) + 1, ((-1)<<14) + 1, ((-1)<<15) + 1 };
-
-#endif /* AVOID_TABLES */
-
-
-/*
- * Check for a restart marker & resynchronize decoder.
- * Returns FALSE if must suspend.
- */
-
-LOCAL(boolean)
-process_restart (j_decompress_ptr cinfo)
-{
-  huff_entropy_ptr entropy = (huff_entropy_ptr) cinfo->entropy;
-  int ci;
-
-  /* Throw away any unused bits remaining in bit buffer; */
-  /* include any full bytes in next_marker's count of discarded bytes */
-  cinfo->marker->discarded_bytes += entropy->bitstate.bits_left / 8;
-  entropy->bitstate.bits_left = 0;
-
-  /* Advance past the RSTn marker */
-  if (! (*cinfo->marker->read_restart_marker) (cinfo))
-    return FALSE;
-
-  /* Re-initialize DC predictions to 0 */
-  for (ci = 0; ci < cinfo->comps_in_scan; ci++)
-    entropy->saved.last_dc_val[ci] = 0;
-
-  /* Reset restart counter */
-  entropy->restarts_to_go = cinfo->restart_interval;
-
-  /* Reset out-of-data flag, unless read_restart_marker left us smack up
-   * against a marker.  In that case we will end up treating the next data
-   * segment as empty, and we can avoid producing bogus output pixels by
-   * leaving the flag set.
-   */
-  if (cinfo->unread_marker == 0)
-    entropy->pub.insufficient_data = FALSE;
-
-  return TRUE;
-}
-
-
-/*
- * Decode and return one MCU's worth of Huffman-compressed coefficients.
- * The coefficients are reordered from zigzag order into natural array order,
- * but are not dequantized.
- *
- * The i'th block of the MCU is stored into the block pointed to by
- * MCU_data[i].  WE ASSUME THIS AREA HAS BEEN ZEROED BY THE CALLER.
- * (Wholesale zeroing is usually a little faster than retail...)
- *
- * Returns FALSE if data source requested suspension.  In that case no
- * changes have been made to permanent state.  (Exception: some output
- * coefficients may already have been assigned.  This is harmless for
- * this module, since we'll just re-assign them on the next call.)
- */
-
-METHODDEF(boolean)
-decode_mcu (j_decompress_ptr cinfo, JBLOCKROW *MCU_data)
-{
-  huff_entropy_ptr entropy = (huff_entropy_ptr) cinfo->entropy;
-  int blkn;
-  BITREAD_STATE_VARS;
-  savable_state state;
-
-  /* Process restart marker if needed; may have to suspend */
-  if (cinfo->restart_interval) {
-    if (entropy->restarts_to_go == 0)
-      if (! process_restart(cinfo))
-	return FALSE;
-  }
-
-  /* If we've run out of data, just leave the MCU set to zeroes.
-   * This way, we return uniform gray for the remainder of the segment.
-   */
-  if (! entropy->pub.insufficient_data) {
-
-    /* Load up working state */
-    BITREAD_LOAD_STATE(cinfo,entropy->bitstate);
-    ASSIGN_STATE(state, entropy->saved);
-
-    /* Outer loop handles each block in the MCU */
-
-    for (blkn = 0; blkn < cinfo->blocks_in_MCU; blkn++) {
-      JBLOCKROW block = MCU_data[blkn];
-      d_derived_tbl * dctbl = entropy->dc_cur_tbls[blkn];
-      d_derived_tbl * actbl = entropy->ac_cur_tbls[blkn];
-      register int s, k, r;
-
-      /* Decode a single block's worth of coefficients */
-
-      /* Section F.2.2.1: decode the DC coefficient difference */
-      HUFF_DECODE(s, br_state, dctbl, return FALSE, label1);
-      if (s) {
-	CHECK_BIT_BUFFER(br_state, s, return FALSE);
-	r = GET_BITS(s);
-	s = HUFF_EXTEND(r, s);
-      }
-
-      if (entropy->dc_needed[blkn]) {
-	/* Convert DC difference to actual value, update last_dc_val */
-	int ci = cinfo->MCU_membership[blkn];
-	s += state.last_dc_val[ci];
-	state.last_dc_val[ci] = s;
-	/* Output the DC coefficient (assumes jpeg_natural_order[0] = 0) */
-	(*block)[0] = (JCOEF) s;
-      }
-
-      if (entropy->ac_needed[blkn]) {
-
-	/* Section F.2.2.2: decode the AC coefficients */
-	/* Since zeroes are skipped, output area must be cleared beforehand */
-	for (k = 1; k < DCTSIZE2; k++) {
-	  HUFF_DECODE(s, br_state, actbl, return FALSE, label2);
-      
-	  r = s >> 4;
-	  s &= 15;
-      
-	  if (s) {
-	    k += r;
-	    CHECK_BIT_BUFFER(br_state, s, return FALSE);
-	    r = GET_BITS(s);
-	    s = HUFF_EXTEND(r, s);
-	    /* Output coefficient in natural (dezigzagged) order.
-	     * Note: the extra entries in jpeg_natural_order[] will save us
-	     * if k >= DCTSIZE2, which could happen if the data is corrupted.
-	     */
-	    (*block)[jpeg_natural_order[k]] = (JCOEF) s;
-	  } else {
-	    if (r != 15)
-	      break;
-	    k += 15;
-	  }
-	}
-
-      } else {
-
-	/* Section F.2.2.2: decode the AC coefficients */
-	/* In this path we just discard the values */
-	for (k = 1; k < DCTSIZE2; k++) {
-	  HUFF_DECODE(s, br_state, actbl, return FALSE, label3);
-      
-	  r = s >> 4;
-	  s &= 15;
-      
-	  if (s) {
-	    k += r;
-	    CHECK_BIT_BUFFER(br_state, s, return FALSE);
-	    DROP_BITS(s);
-	  } else {
-	    if (r != 15)
-	      break;
-	    k += 15;
-	  }
-	}
-
-      }
-    }
-
-    /* Completed MCU, so update state */
-    BITREAD_SAVE_STATE(cinfo,entropy->bitstate);
-    ASSIGN_STATE(entropy->saved, state);
-  }
-
-  /* Account for restart interval (no-op if not using restarts) */
-  entropy->restarts_to_go--;
-
-  return TRUE;
-}
-
-
-/*
- * Module initialization routine for Huffman entropy decoding.
- */
-
-GLOBAL(void)
-jinit_huff_decoder (j_decompress_ptr cinfo)
-{
-  huff_entropy_ptr entropy;
-  int i;
-
-  entropy = (huff_entropy_ptr)
-    (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
-				SIZEOF(huff_entropy_decoder));
-  cinfo->entropy = (struct jpeg_entropy_decoder *) entropy;
-  entropy->pub.start_pass = start_pass_huff_decoder;
-  entropy->pub.decode_mcu = decode_mcu;
-
-  /* Mark tables unallocated */
-  for (i = 0; i < NUM_HUFF_TBLS; i++) {
-    entropy->dc_derived_tbls[i] = entropy->ac_derived_tbls[i] = NULL;
-  }
-}
diff --git a/src/libjpeg/jdhuff.h b/src/libjpeg/jdhuff.h
deleted file mode 100644
index 12c0747..0000000
--- a/src/libjpeg/jdhuff.h
+++ /dev/null
@@ -1,201 +0,0 @@
-/*
- * jdhuff.h
- *
- * Copyright (C) 1991-1997, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains declarations for Huffman entropy decoding routines
- * that are shared between the sequential decoder (jdhuff.c) and the
- * progressive decoder (jdphuff.c).  No other modules need to see these.
- */
-
-/* Short forms of external names for systems with brain-damaged linkers. */
-
-#ifdef NEED_SHORT_EXTERNAL_NAMES
-#define jpeg_make_d_derived_tbl	jMkDDerived
-#define jpeg_fill_bit_buffer	jFilBitBuf
-#define jpeg_huff_decode	jHufDecode
-#endif /* NEED_SHORT_EXTERNAL_NAMES */
-
-
-/* Derived data constructed for each Huffman table */
-
-#define HUFF_LOOKAHEAD	8	/* # of bits of lookahead */
-
-typedef struct {
-  /* Basic tables: (element [0] of each array is unused) */
-  INT32 maxcode[18];		/* largest code of length k (-1 if none) */
-  /* (maxcode[17] is a sentinel to ensure jpeg_huff_decode terminates) */
-  INT32 valoffset[17];		/* huffval[] offset for codes of length k */
-  /* valoffset[k] = huffval[] index of 1st symbol of code length k, less
-   * the smallest code of length k; so given a code of length k, the
-   * corresponding symbol is huffval[code + valoffset[k]]
-   */
-
-  /* Link to public Huffman table (needed only in jpeg_huff_decode) */
-  JHUFF_TBL *pub;
-
-  /* Lookahead tables: indexed by the next HUFF_LOOKAHEAD bits of
-   * the input data stream.  If the next Huffman code is no more
-   * than HUFF_LOOKAHEAD bits long, we can obtain its length and
-   * the corresponding symbol directly from these tables.
-   */
-  int look_nbits[1<<HUFF_LOOKAHEAD]; /* # bits, or 0 if too long */
-  UINT8 look_sym[1<<HUFF_LOOKAHEAD]; /* symbol, or unused */
-} d_derived_tbl;
-
-/* Expand a Huffman table definition into the derived format */
-EXTERN(void) jpeg_make_d_derived_tbl
-	JPP((j_decompress_ptr cinfo, boolean isDC, int tblno,
-	     d_derived_tbl ** pdtbl));
-
-
-/*
- * Fetching the next N bits from the input stream is a time-critical operation
- * for the Huffman decoders.  We implement it with a combination of inline
- * macros and out-of-line subroutines.  Note that N (the number of bits
- * demanded at one time) never exceeds 15 for JPEG use.
- *
- * We read source bytes into get_buffer and dole out bits as needed.
- * If get_buffer already contains enough bits, they are fetched in-line
- * by the macros CHECK_BIT_BUFFER and GET_BITS.  When there aren't enough
- * bits, jpeg_fill_bit_buffer is called; it will attempt to fill get_buffer
- * as full as possible (not just to the number of bits needed; this
- * prefetching reduces the overhead cost of calling jpeg_fill_bit_buffer).
- * Note that jpeg_fill_bit_buffer may return FALSE to indicate suspension.
- * On TRUE return, jpeg_fill_bit_buffer guarantees that get_buffer contains
- * at least the requested number of bits --- dummy zeroes are inserted if
- * necessary.
- */
-
-typedef INT32 bit_buf_type;	/* type of bit-extraction buffer */
-#define BIT_BUF_SIZE  32	/* size of buffer in bits */
-
-/* If long is > 32 bits on your machine, and shifting/masking longs is
- * reasonably fast, making bit_buf_type be long and setting BIT_BUF_SIZE
- * appropriately should be a win.  Unfortunately we can't define the size
- * with something like  #define BIT_BUF_SIZE (sizeof(bit_buf_type)*8)
- * because not all machines measure sizeof in 8-bit bytes.
- */
-
-typedef struct {		/* Bitreading state saved across MCUs */
-  bit_buf_type get_buffer;	/* current bit-extraction buffer */
-  int bits_left;		/* # of unused bits in it */
-} bitread_perm_state;
-
-typedef struct {		/* Bitreading working state within an MCU */
-  /* Current data source location */
-  /* We need a copy, rather than munging the original, in case of suspension */
-  const JOCTET * next_input_byte; /* => next byte to read from source */
-  size_t bytes_in_buffer;	/* # of bytes remaining in source buffer */
-  /* Bit input buffer --- note these values are kept in register variables,
-   * not in this struct, inside the inner loops.
-   */
-  bit_buf_type get_buffer;	/* current bit-extraction buffer */
-  int bits_left;		/* # of unused bits in it */
-  /* Pointer needed by jpeg_fill_bit_buffer. */
-  j_decompress_ptr cinfo;	/* back link to decompress master record */
-} bitread_working_state;
-
-/* Macros to declare and load/save bitread local variables. */
-#define BITREAD_STATE_VARS  \
-	register bit_buf_type get_buffer;  \
-	register int bits_left;  \
-	bitread_working_state br_state
-
-#define BITREAD_LOAD_STATE(cinfop,permstate)  \
-	br_state.cinfo = cinfop; \
-	br_state.next_input_byte = cinfop->src->next_input_byte; \
-	br_state.bytes_in_buffer = cinfop->src->bytes_in_buffer; \
-	get_buffer = permstate.get_buffer; \
-	bits_left = permstate.bits_left;
-
-#define BITREAD_SAVE_STATE(cinfop,permstate)  \
-	cinfop->src->next_input_byte = br_state.next_input_byte; \
-	cinfop->src->bytes_in_buffer = br_state.bytes_in_buffer; \
-	permstate.get_buffer = get_buffer; \
-	permstate.bits_left = bits_left
-
-/*
- * These macros provide the in-line portion of bit fetching.
- * Use CHECK_BIT_BUFFER to ensure there are N bits in get_buffer
- * before using GET_BITS, PEEK_BITS, or DROP_BITS.
- * The variables get_buffer and bits_left are assumed to be locals,
- * but the state struct might not be (jpeg_huff_decode needs this).
- *	CHECK_BIT_BUFFER(state,n,action);
- *		Ensure there are N bits in get_buffer; if suspend, take action.
- *      val = GET_BITS(n);
- *		Fetch next N bits.
- *      val = PEEK_BITS(n);
- *		Fetch next N bits without removing them from the buffer.
- *	DROP_BITS(n);
- *		Discard next N bits.
- * The value N should be a simple variable, not an expression, because it
- * is evaluated multiple times.
- */
-
-#define CHECK_BIT_BUFFER(state,nbits,action) \
-	{ if (bits_left < (nbits)) {  \
-	    if (! jpeg_fill_bit_buffer(&(state),get_buffer,bits_left,nbits))  \
-	      { action; }  \
-	    get_buffer = (state).get_buffer; bits_left = (state).bits_left; } }
-
-#define GET_BITS(nbits) \
-	(((int) (get_buffer >> (bits_left -= (nbits)))) & ((1<<(nbits))-1))
-
-#define PEEK_BITS(nbits) \
-	(((int) (get_buffer >> (bits_left -  (nbits)))) & ((1<<(nbits))-1))
-
-#define DROP_BITS(nbits) \
-	(bits_left -= (nbits))
-
-/* Load up the bit buffer to a depth of at least nbits */
-EXTERN(boolean) jpeg_fill_bit_buffer
-	JPP((bitread_working_state * state, register bit_buf_type get_buffer,
-	     register int bits_left, int nbits));
-
-
-/*
- * Code for extracting next Huffman-coded symbol from input bit stream.
- * Again, this is time-critical and we make the main paths be macros.
- *
- * We use a lookahead table to process codes of up to HUFF_LOOKAHEAD bits
- * without looping.  Usually, more than 95% of the Huffman codes will be 8
- * or fewer bits long.  The few overlength codes are handled with a loop,
- * which need not be inline code.
- *
- * Notes about the HUFF_DECODE macro:
- * 1. Near the end of the data segment, we may fail to get enough bits
- *    for a lookahead.  In that case, we do it the hard way.
- * 2. If the lookahead table contains no entry, the next code must be
- *    more than HUFF_LOOKAHEAD bits long.
- * 3. jpeg_huff_decode returns -1 if forced to suspend.
- */
-
-#define HUFF_DECODE(result,state,htbl,failaction,slowlabel) \
-{ register int nb, look; \
-  if (bits_left < HUFF_LOOKAHEAD) { \
-    if (! jpeg_fill_bit_buffer(&state,get_buffer,bits_left, 0)) {failaction;} \
-    get_buffer = state.get_buffer; bits_left = state.bits_left; \
-    if (bits_left < HUFF_LOOKAHEAD) { \
-      nb = 1; goto slowlabel; \
-    } \
-  } \
-  look = PEEK_BITS(HUFF_LOOKAHEAD); \
-  if ((nb = htbl->look_nbits[look]) != 0) { \
-    DROP_BITS(nb); \
-    result = htbl->look_sym[look]; \
-  } else { \
-    nb = HUFF_LOOKAHEAD+1; \
-slowlabel: \
-    if ((result=jpeg_huff_decode(&state,get_buffer,bits_left,htbl,nb)) < 0) \
-	{ failaction; } \
-    get_buffer = state.get_buffer; bits_left = state.bits_left; \
-  } \
-}
-
-/* Out-of-line case for Huffman code fetching */
-EXTERN(int) jpeg_huff_decode
-	JPP((bitread_working_state * state, register bit_buf_type get_buffer,
-	     register int bits_left, d_derived_tbl * htbl, int min_bits));
diff --git a/src/libjpeg/jdinput.c b/src/libjpeg/jdinput.c
deleted file mode 100644
index 2d5c747..0000000
--- a/src/libjpeg/jdinput.c
+++ /dev/null
@@ -1,381 +0,0 @@
-/*
- * jdinput.c
- *
- * Copyright (C) 1991-1997, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains input control logic for the JPEG decompressor.
- * These routines are concerned with controlling the decompressor's input
- * processing (marker reading and coefficient decoding).  The actual input
- * reading is done in jdmarker.c, jdhuff.c, and jdphuff.c.
- */
-
-#define JPEG_INTERNALS
-#include "jinclude.h"
-#include "jpeglib.h"
-
-
-/* Private state */
-
-typedef struct {
-  struct jpeg_input_controller pub; /* public fields */
-
-  boolean inheaders;		/* TRUE until first SOS is reached */
-} my_input_controller;
-
-typedef my_input_controller * my_inputctl_ptr;
-
-
-/* Forward declarations */
-METHODDEF(int) consume_markers JPP((j_decompress_ptr cinfo));
-
-
-/*
- * Routines to calculate various quantities related to the size of the image.
- */
-
-LOCAL(void)
-initial_setup (j_decompress_ptr cinfo)
-/* Called once, when first SOS marker is reached */
-{
-  int ci;
-  jpeg_component_info *compptr;
-
-  /* Make sure image isn't bigger than I can handle */
-  if ((long) cinfo->image_height > (long) JPEG_MAX_DIMENSION ||
-      (long) cinfo->image_width > (long) JPEG_MAX_DIMENSION)
-    ERREXIT1(cinfo, JERR_IMAGE_TOO_BIG, (unsigned int) JPEG_MAX_DIMENSION);
-
-  /* For now, precision must match compiled-in value... */
-  if (cinfo->data_precision != BITS_IN_JSAMPLE)
-    ERREXIT1(cinfo, JERR_BAD_PRECISION, cinfo->data_precision);
-
-  /* Check that number of components won't exceed internal array sizes */
-  if (cinfo->num_components > MAX_COMPONENTS)
-    ERREXIT2(cinfo, JERR_COMPONENT_COUNT, cinfo->num_components,
-	     MAX_COMPONENTS);
-
-  /* Compute maximum sampling factors; check factor validity */
-  cinfo->max_h_samp_factor = 1;
-  cinfo->max_v_samp_factor = 1;
-  for (ci = 0, compptr = cinfo->comp_info; ci < cinfo->num_components;
-       ci++, compptr++) {
-    if (compptr->h_samp_factor<=0 || compptr->h_samp_factor>MAX_SAMP_FACTOR ||
-	compptr->v_samp_factor<=0 || compptr->v_samp_factor>MAX_SAMP_FACTOR)
-      ERREXIT(cinfo, JERR_BAD_SAMPLING);
-    cinfo->max_h_samp_factor = MAX(cinfo->max_h_samp_factor,
-				   compptr->h_samp_factor);
-    cinfo->max_v_samp_factor = MAX(cinfo->max_v_samp_factor,
-				   compptr->v_samp_factor);
-  }
-
-  /* We initialize DCT_scaled_size and min_DCT_scaled_size to DCTSIZE.
-   * In the full decompressor, this will be overridden by jdmaster.c;
-   * but in the transcoder, jdmaster.c is not used, so we must do it here.
-   */
-  cinfo->min_DCT_scaled_size = DCTSIZE;
-
-  /* Compute dimensions of components */
-  for (ci = 0, compptr = cinfo->comp_info; ci < cinfo->num_components;
-       ci++, compptr++) {
-    compptr->DCT_scaled_size = DCTSIZE;
-    /* Size in DCT blocks */
-    compptr->width_in_blocks = (JDIMENSION)
-      jdiv_round_up((long) cinfo->image_width * (long) compptr->h_samp_factor,
-		    (long) (cinfo->max_h_samp_factor * DCTSIZE));
-    compptr->height_in_blocks = (JDIMENSION)
-      jdiv_round_up((long) cinfo->image_height * (long) compptr->v_samp_factor,
-		    (long) (cinfo->max_v_samp_factor * DCTSIZE));
-    /* downsampled_width and downsampled_height will also be overridden by
-     * jdmaster.c if we are doing full decompression.  The transcoder library
-     * doesn't use these values, but the calling application might.
-     */
-    /* Size in samples */
-    compptr->downsampled_width = (JDIMENSION)
-      jdiv_round_up((long) cinfo->image_width * (long) compptr->h_samp_factor,
-		    (long) cinfo->max_h_samp_factor);
-    compptr->downsampled_height = (JDIMENSION)
-      jdiv_round_up((long) cinfo->image_height * (long) compptr->v_samp_factor,
-		    (long) cinfo->max_v_samp_factor);
-    /* Mark component needed, until color conversion says otherwise */
-    compptr->component_needed = TRUE;
-    /* Mark no quantization table yet saved for component */
-    compptr->quant_table = NULL;
-  }
-
-  /* Compute number of fully interleaved MCU rows. */
-  cinfo->total_iMCU_rows = (JDIMENSION)
-    jdiv_round_up((long) cinfo->image_height,
-		  (long) (cinfo->max_v_samp_factor*DCTSIZE));
-
-  /* Decide whether file contains multiple scans */
-  if (cinfo->comps_in_scan < cinfo->num_components || cinfo->progressive_mode)
-    cinfo->inputctl->has_multiple_scans = TRUE;
-  else
-    cinfo->inputctl->has_multiple_scans = FALSE;
-}
-
-
-LOCAL(void)
-per_scan_setup (j_decompress_ptr cinfo)
-/* Do computations that are needed before processing a JPEG scan */
-/* cinfo->comps_in_scan and cinfo->cur_comp_info[] were set from SOS marker */
-{
-  int ci, mcublks, tmp;
-  jpeg_component_info *compptr;
-  
-  if (cinfo->comps_in_scan == 1) {
-    
-    /* Noninterleaved (single-component) scan */
-    compptr = cinfo->cur_comp_info[0];
-    
-    /* Overall image size in MCUs */
-    cinfo->MCUs_per_row = compptr->width_in_blocks;
-    cinfo->MCU_rows_in_scan = compptr->height_in_blocks;
-    
-    /* For noninterleaved scan, always one block per MCU */
-    compptr->MCU_width = 1;
-    compptr->MCU_height = 1;
-    compptr->MCU_blocks = 1;
-    compptr->MCU_sample_width = compptr->DCT_scaled_size;
-    compptr->last_col_width = 1;
-    /* For noninterleaved scans, it is convenient to define last_row_height
-     * as the number of block rows present in the last iMCU row.
-     */
-    tmp = (int) (compptr->height_in_blocks % compptr->v_samp_factor);
-    if (tmp == 0) tmp = compptr->v_samp_factor;
-    compptr->last_row_height = tmp;
-    
-    /* Prepare array describing MCU composition */
-    cinfo->blocks_in_MCU = 1;
-    cinfo->MCU_membership[0] = 0;
-    
-  } else {
-    
-    /* Interleaved (multi-component) scan */
-    if (cinfo->comps_in_scan <= 0 || cinfo->comps_in_scan > MAX_COMPS_IN_SCAN)
-      ERREXIT2(cinfo, JERR_COMPONENT_COUNT, cinfo->comps_in_scan,
-	       MAX_COMPS_IN_SCAN);
-    
-    /* Overall image size in MCUs */
-    cinfo->MCUs_per_row = (JDIMENSION)
-      jdiv_round_up((long) cinfo->image_width,
-		    (long) (cinfo->max_h_samp_factor*DCTSIZE));
-    cinfo->MCU_rows_in_scan = (JDIMENSION)
-      jdiv_round_up((long) cinfo->image_height,
-		    (long) (cinfo->max_v_samp_factor*DCTSIZE));
-    
-    cinfo->blocks_in_MCU = 0;
-    
-    for (ci = 0; ci < cinfo->comps_in_scan; ci++) {
-      compptr = cinfo->cur_comp_info[ci];
-      /* Sampling factors give # of blocks of component in each MCU */
-      compptr->MCU_width = compptr->h_samp_factor;
-      compptr->MCU_height = compptr->v_samp_factor;
-      compptr->MCU_blocks = compptr->MCU_width * compptr->MCU_height;
-      compptr->MCU_sample_width = compptr->MCU_width * compptr->DCT_scaled_size;
-      /* Figure number of non-dummy blocks in last MCU column & row */
-      tmp = (int) (compptr->width_in_blocks % compptr->MCU_width);
-      if (tmp == 0) tmp = compptr->MCU_width;
-      compptr->last_col_width = tmp;
-      tmp = (int) (compptr->height_in_blocks % compptr->MCU_height);
-      if (tmp == 0) tmp = compptr->MCU_height;
-      compptr->last_row_height = tmp;
-      /* Prepare array describing MCU composition */
-      mcublks = compptr->MCU_blocks;
-      if (cinfo->blocks_in_MCU + mcublks > D_MAX_BLOCKS_IN_MCU)
-	ERREXIT(cinfo, JERR_BAD_MCU_SIZE);
-      while (mcublks-- > 0) {
-	cinfo->MCU_membership[cinfo->blocks_in_MCU++] = ci;
-      }
-    }
-    
-  }
-}
-
-
-/*
- * Save away a copy of the Q-table referenced by each component present
- * in the current scan, unless already saved during a prior scan.
- *
- * In a multiple-scan JPEG file, the encoder could assign different components
- * the same Q-table slot number, but change table definitions between scans
- * so that each component uses a different Q-table.  (The IJG encoder is not
- * currently capable of doing this, but other encoders might.)  Since we want
- * to be able to dequantize all the components at the end of the file, this
- * means that we have to save away the table actually used for each component.
- * We do this by copying the table at the start of the first scan containing
- * the component.
- * The JPEG spec prohibits the encoder from changing the contents of a Q-table
- * slot between scans of a component using that slot.  If the encoder does so
- * anyway, this decoder will simply use the Q-table values that were current
- * at the start of the first scan for the component.
- *
- * The decompressor output side looks only at the saved quant tables,
- * not at the current Q-table slots.
- */
-
-LOCAL(void)
-latch_quant_tables (j_decompress_ptr cinfo)
-{
-  int ci, qtblno;
-  jpeg_component_info *compptr;
-  JQUANT_TBL * qtbl;
-
-  for (ci = 0; ci < cinfo->comps_in_scan; ci++) {
-    compptr = cinfo->cur_comp_info[ci];
-    /* No work if we already saved Q-table for this component */
-    if (compptr->quant_table != NULL)
-      continue;
-    /* Make sure specified quantization table is present */
-    qtblno = compptr->quant_tbl_no;
-    if (qtblno < 0 || qtblno >= NUM_QUANT_TBLS ||
-	cinfo->quant_tbl_ptrs[qtblno] == NULL)
-      ERREXIT1(cinfo, JERR_NO_QUANT_TABLE, qtblno);
-    /* OK, save away the quantization table */
-    qtbl = (JQUANT_TBL *)
-      (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
-				  SIZEOF(JQUANT_TBL));
-    MEMCOPY(qtbl, cinfo->quant_tbl_ptrs[qtblno], SIZEOF(JQUANT_TBL));
-    compptr->quant_table = qtbl;
-  }
-}
-
-
-/*
- * Initialize the input modules to read a scan of compressed data.
- * The first call to this is done by jdmaster.c after initializing
- * the entire decompressor (during jpeg_start_decompress).
- * Subsequent calls come from consume_markers, below.
- */
-
-METHODDEF(void)
-start_input_pass (j_decompress_ptr cinfo)
-{
-  per_scan_setup(cinfo);
-  latch_quant_tables(cinfo);
-  (*cinfo->entropy->start_pass) (cinfo);
-  (*cinfo->coef->start_input_pass) (cinfo);
-  cinfo->inputctl->consume_input = cinfo->coef->consume_data;
-}
-
-
-/*
- * Finish up after inputting a compressed-data scan.
- * This is called by the coefficient controller after it's read all
- * the expected data of the scan.
- */
-
-METHODDEF(void)
-finish_input_pass (j_decompress_ptr cinfo)
-{
-  cinfo->inputctl->consume_input = consume_markers;
-}
-
-
-/*
- * Read JPEG markers before, between, or after compressed-data scans.
- * Change state as necessary when a new scan is reached.
- * Return value is JPEG_SUSPENDED, JPEG_REACHED_SOS, or JPEG_REACHED_EOI.
- *
- * The consume_input method pointer points either here or to the
- * coefficient controller's consume_data routine, depending on whether
- * we are reading a compressed data segment or inter-segment markers.
- */
-
-METHODDEF(int)
-consume_markers (j_decompress_ptr cinfo)
-{
-  my_inputctl_ptr inputctl = (my_inputctl_ptr) cinfo->inputctl;
-  int val;
-
-  if (inputctl->pub.eoi_reached) /* After hitting EOI, read no further */
-    return JPEG_REACHED_EOI;
-
-  val = (*cinfo->marker->read_markers) (cinfo);
-
-  switch (val) {
-  case JPEG_REACHED_SOS:	/* Found SOS */
-    if (inputctl->inheaders) {	/* 1st SOS */
-      initial_setup(cinfo);
-      inputctl->inheaders = FALSE;
-      /* Note: start_input_pass must be called by jdmaster.c
-       * before any more input can be consumed.  jdapimin.c is
-       * responsible for enforcing this sequencing.
-       */
-    } else {			/* 2nd or later SOS marker */
-      if (! inputctl->pub.has_multiple_scans)
-	ERREXIT(cinfo, JERR_EOI_EXPECTED); /* Oops, I wasn't expecting this! */
-      start_input_pass(cinfo);
-    }
-    break;
-  case JPEG_REACHED_EOI:	/* Found EOI */
-    inputctl->pub.eoi_reached = TRUE;
-    if (inputctl->inheaders) {	/* Tables-only datastream, apparently */
-      if (cinfo->marker->saw_SOF)
-	ERREXIT(cinfo, JERR_SOF_NO_SOS);
-    } else {
-      /* Prevent infinite loop in coef ctlr's decompress_data routine
-       * if user set output_scan_number larger than number of scans.
-       */
-      if (cinfo->output_scan_number > cinfo->input_scan_number)
-	cinfo->output_scan_number = cinfo->input_scan_number;
-    }
-    break;
-  case JPEG_SUSPENDED:
-    break;
-  }
-
-  return val;
-}
-
-
-/*
- * Reset state to begin a fresh datastream.
- */
-
-METHODDEF(void)
-reset_input_controller (j_decompress_ptr cinfo)
-{
-  my_inputctl_ptr inputctl = (my_inputctl_ptr) cinfo->inputctl;
-
-  inputctl->pub.consume_input = consume_markers;
-  inputctl->pub.has_multiple_scans = FALSE; /* "unknown" would be better */
-  inputctl->pub.eoi_reached = FALSE;
-  inputctl->inheaders = TRUE;
-  /* Reset other modules */
-  (*cinfo->err->reset_error_mgr) ((j_common_ptr) cinfo);
-  (*cinfo->marker->reset_marker_reader) (cinfo);
-  /* Reset progression state -- would be cleaner if entropy decoder did this */
-  cinfo->coef_bits = NULL;
-}
-
-
-/*
- * Initialize the input controller module.
- * This is called only once, when the decompression object is created.
- */
-
-GLOBAL(void)
-jinit_input_controller (j_decompress_ptr cinfo)
-{
-  my_inputctl_ptr inputctl;
-
-  /* Create subobject in permanent pool */
-  inputctl = (my_inputctl_ptr)
-    (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_PERMANENT,
-				SIZEOF(my_input_controller));
-  cinfo->inputctl = (struct jpeg_input_controller *) inputctl;
-  /* Initialize method pointers */
-  inputctl->pub.consume_input = consume_markers;
-  inputctl->pub.reset_input_controller = reset_input_controller;
-  inputctl->pub.start_input_pass = start_input_pass;
-  inputctl->pub.finish_input_pass = finish_input_pass;
-  /* Initialize state: can't use reset_input_controller since we don't
-   * want to try to reset other modules yet.
-   */
-  inputctl->pub.has_multiple_scans = FALSE; /* "unknown" would be better */
-  inputctl->pub.eoi_reached = FALSE;
-  inputctl->inheaders = TRUE;
-}
diff --git a/src/libjpeg/jdmainct.c b/src/libjpeg/jdmainct.c
deleted file mode 100644
index 6b0f06f..0000000
--- a/src/libjpeg/jdmainct.c
+++ /dev/null
@@ -1,512 +0,0 @@
-/*
- * jdmainct.c
- *
- * Copyright (C) 1994-1996, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains the main buffer controller for decompression.
- * The main buffer lies between the JPEG decompressor proper and the
- * post-processor; it holds downsampled data in the JPEG colorspace.
- *
- * Note that this code is bypassed in raw-data mode, since the application
- * supplies the equivalent of the main buffer in that case.
- */
-
-#define JPEG_INTERNALS
-#include "jinclude.h"
-#include "jpeglib.h"
-
-
-/*
- * In the current system design, the main buffer need never be a full-image
- * buffer; any full-height buffers will be found inside the coefficient or
- * postprocessing controllers.  Nonetheless, the main controller is not
- * trivial.  Its responsibility is to provide context rows for upsampling/
- * rescaling, and doing this in an efficient fashion is a bit tricky.
- *
- * Postprocessor input data is counted in "row groups".  A row group
- * is defined to be (v_samp_factor * DCT_scaled_size / min_DCT_scaled_size)
- * sample rows of each component.  (We require DCT_scaled_size values to be
- * chosen such that these numbers are integers.  In practice DCT_scaled_size
- * values will likely be powers of two, so we actually have the stronger
- * condition that DCT_scaled_size / min_DCT_scaled_size is an integer.)
- * Upsampling will typically produce max_v_samp_factor pixel rows from each
- * row group (times any additional scale factor that the upsampler is
- * applying).
- *
- * The coefficient controller will deliver data to us one iMCU row at a time;
- * each iMCU row contains v_samp_factor * DCT_scaled_size sample rows, or
- * exactly min_DCT_scaled_size row groups.  (This amount of data corresponds
- * to one row of MCUs when the image is fully interleaved.)  Note that the
- * number of sample rows varies across components, but the number of row
- * groups does not.  Some garbage sample rows may be included in the last iMCU
- * row at the bottom of the image.
- *
- * Depending on the vertical scaling algorithm used, the upsampler may need
- * access to the sample row(s) above and below its current input row group.
- * The upsampler is required to set need_context_rows TRUE at global selection
- * time if so.  When need_context_rows is FALSE, this controller can simply
- * obtain one iMCU row at a time from the coefficient controller and dole it
- * out as row groups to the postprocessor.
- *
- * When need_context_rows is TRUE, this controller guarantees that the buffer
- * passed to postprocessing contains at least one row group's worth of samples
- * above and below the row group(s) being processed.  Note that the context
- * rows "above" the first passed row group appear at negative row offsets in
- * the passed buffer.  At the top and bottom of the image, the required
- * context rows are manufactured by duplicating the first or last real sample
- * row; this avoids having special cases in the upsampling inner loops.
- *
- * The amount of context is fixed at one row group just because that's a
- * convenient number for this controller to work with.  The existing
- * upsamplers really only need one sample row of context.  An upsampler
- * supporting arbitrary output rescaling might wish for more than one row
- * group of context when shrinking the image; tough, we don't handle that.
- * (This is justified by the assumption that downsizing will be handled mostly
- * by adjusting the DCT_scaled_size values, so that the actual scale factor at
- * the upsample step needn't be much less than one.)
- *
- * To provide the desired context, we have to retain the last two row groups
- * of one iMCU row while reading in the next iMCU row.  (The last row group
- * can't be processed until we have another row group for its below-context,
- * and so we have to save the next-to-last group too for its above-context.)
- * We could do this most simply by copying data around in our buffer, but
- * that'd be very slow.  We can avoid copying any data by creating a rather
- * strange pointer structure.  Here's how it works.  We allocate a workspace
- * consisting of M+2 row groups (where M = min_DCT_scaled_size is the number
- * of row groups per iMCU row).  We create two sets of redundant pointers to
- * the workspace.  Labeling the physical row groups 0 to M+1, the synthesized
- * pointer lists look like this:
- *                   M+1                          M-1
- * master pointer --> 0         master pointer --> 0
- *                    1                            1
- *                   ...                          ...
- *                   M-3                          M-3
- *                   M-2                           M
- *                   M-1                          M+1
- *                    M                           M-2
- *                   M+1                          M-1
- *                    0                            0
- * We read alternate iMCU rows using each master pointer; thus the last two
- * row groups of the previous iMCU row remain un-overwritten in the workspace.
- * The pointer lists are set up so that the required context rows appear to
- * be adjacent to the proper places when we pass the pointer lists to the
- * upsampler.
- *
- * The above pictures describe the normal state of the pointer lists.
- * At top and bottom of the image, we diddle the pointer lists to duplicate
- * the first or last sample row as necessary (this is cheaper than copying
- * sample rows around).
- *
- * This scheme breaks down if M < 2, ie, min_DCT_scaled_size is 1.  In that
- * situation each iMCU row provides only one row group so the buffering logic
- * must be different (eg, we must read two iMCU rows before we can emit the
- * first row group).  For now, we simply do not support providing context
- * rows when min_DCT_scaled_size is 1.  That combination seems unlikely to
- * be worth providing --- if someone wants a 1/8th-size preview, they probably
- * want it quick and dirty, so a context-free upsampler is sufficient.
- */
-
-
-/* Private buffer controller object */
-
-typedef struct {
-  struct jpeg_d_main_controller pub; /* public fields */
-
-  /* Pointer to allocated workspace (M or M+2 row groups). */
-  JSAMPARRAY buffer[MAX_COMPONENTS];
-
-  boolean buffer_full;		/* Have we gotten an iMCU row from decoder? */
-  JDIMENSION rowgroup_ctr;	/* counts row groups output to postprocessor */
-
-  /* Remaining fields are only used in the context case. */
-
-  /* These are the master pointers to the funny-order pointer lists. */
-  JSAMPIMAGE xbuffer[2];	/* pointers to weird pointer lists */
-
-  int whichptr;			/* indicates which pointer set is now in use */
-  int context_state;		/* process_data state machine status */
-  JDIMENSION rowgroups_avail;	/* row groups available to postprocessor */
-  JDIMENSION iMCU_row_ctr;	/* counts iMCU rows to detect image top/bot */
-} my_main_controller;
-
-typedef my_main_controller * my_main_ptr;
-
-/* context_state values: */
-#define CTX_PREPARE_FOR_IMCU	0	/* need to prepare for MCU row */
-#define CTX_PROCESS_IMCU	1	/* feeding iMCU to postprocessor */
-#define CTX_POSTPONED_ROW	2	/* feeding postponed row group */
-
-
-/* Forward declarations */
-METHODDEF(void) process_data_simple_main
-	JPP((j_decompress_ptr cinfo, JSAMPARRAY output_buf,
-	     JDIMENSION *out_row_ctr, JDIMENSION out_rows_avail));
-METHODDEF(void) process_data_context_main
-	JPP((j_decompress_ptr cinfo, JSAMPARRAY output_buf,
-	     JDIMENSION *out_row_ctr, JDIMENSION out_rows_avail));
-#ifdef QUANT_2PASS_SUPPORTED
-METHODDEF(void) process_data_crank_post
-	JPP((j_decompress_ptr cinfo, JSAMPARRAY output_buf,
-	     JDIMENSION *out_row_ctr, JDIMENSION out_rows_avail));
-#endif
-
-
-LOCAL(void)
-alloc_funny_pointers (j_decompress_ptr cinfo)
-/* Allocate space for the funny pointer lists.
- * This is done only once, not once per pass.
- */
-{
-  my_main_ptr main = (my_main_ptr) cinfo->main;
-  int ci, rgroup;
-  int M = cinfo->min_DCT_scaled_size;
-  jpeg_component_info *compptr;
-  JSAMPARRAY xbuf;
-
-  /* Get top-level space for component array pointers.
-   * We alloc both arrays with one call to save a few cycles.
-   */
-  main->xbuffer[0] = (JSAMPIMAGE)
-    (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
-				cinfo->num_components * 2 * SIZEOF(JSAMPARRAY));
-  main->xbuffer[1] = main->xbuffer[0] + cinfo->num_components;
-
-  for (ci = 0, compptr = cinfo->comp_info; ci < cinfo->num_components;
-       ci++, compptr++) {
-    rgroup = (compptr->v_samp_factor * compptr->DCT_scaled_size) /
-      cinfo->min_DCT_scaled_size; /* height of a row group of component */
-    /* Get space for pointer lists --- M+4 row groups in each list.
-     * We alloc both pointer lists with one call to save a few cycles.
-     */
-    xbuf = (JSAMPARRAY)
-      (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
-				  2 * (rgroup * (M + 4)) * SIZEOF(JSAMPROW));
-    xbuf += rgroup;		/* want one row group at negative offsets */
-    main->xbuffer[0][ci] = xbuf;
-    xbuf += rgroup * (M + 4);
-    main->xbuffer[1][ci] = xbuf;
-  }
-}
-
-
-LOCAL(void)
-make_funny_pointers (j_decompress_ptr cinfo)
-/* Create the funny pointer lists discussed in the comments above.
- * The actual workspace is already allocated (in main->buffer),
- * and the space for the pointer lists is allocated too.
- * This routine just fills in the curiously ordered lists.
- * This will be repeated at the beginning of each pass.
- */
-{
-  my_main_ptr main = (my_main_ptr) cinfo->main;
-  int ci, i, rgroup;
-  int M = cinfo->min_DCT_scaled_size;
-  jpeg_component_info *compptr;
-  JSAMPARRAY buf, xbuf0, xbuf1;
-
-  for (ci = 0, compptr = cinfo->comp_info; ci < cinfo->num_components;
-       ci++, compptr++) {
-    rgroup = (compptr->v_samp_factor * compptr->DCT_scaled_size) /
-      cinfo->min_DCT_scaled_size; /* height of a row group of component */
-    xbuf0 = main->xbuffer[0][ci];
-    xbuf1 = main->xbuffer[1][ci];
-    /* First copy the workspace pointers as-is */
-    buf = main->buffer[ci];
-    for (i = 0; i < rgroup * (M + 2); i++) {
-      xbuf0[i] = xbuf1[i] = buf[i];
-    }
-    /* In the second list, put the last four row groups in swapped order */
-    for (i = 0; i < rgroup * 2; i++) {
-      xbuf1[rgroup*(M-2) + i] = buf[rgroup*M + i];
-      xbuf1[rgroup*M + i] = buf[rgroup*(M-2) + i];
-    }
-    /* The wraparound pointers at top and bottom will be filled later
-     * (see set_wraparound_pointers, below).  Initially we want the "above"
-     * pointers to duplicate the first actual data line.  This only needs
-     * to happen in xbuffer[0].
-     */
-    for (i = 0; i < rgroup; i++) {
-      xbuf0[i - rgroup] = xbuf0[0];
-    }
-  }
-}
-
-
-LOCAL(void)
-set_wraparound_pointers (j_decompress_ptr cinfo)
-/* Set up the "wraparound" pointers at top and bottom of the pointer lists.
- * This changes the pointer list state from top-of-image to the normal state.
- */
-{
-  my_main_ptr main = (my_main_ptr) cinfo->main;
-  int ci, i, rgroup;
-  int M = cinfo->min_DCT_scaled_size;
-  jpeg_component_info *compptr;
-  JSAMPARRAY xbuf0, xbuf1;
-
-  for (ci = 0, compptr = cinfo->comp_info; ci < cinfo->num_components;
-       ci++, compptr++) {
-    rgroup = (compptr->v_samp_factor * compptr->DCT_scaled_size) /
-      cinfo->min_DCT_scaled_size; /* height of a row group of component */
-    xbuf0 = main->xbuffer[0][ci];
-    xbuf1 = main->xbuffer[1][ci];
-    for (i = 0; i < rgroup; i++) {
-      xbuf0[i - rgroup] = xbuf0[rgroup*(M+1) + i];
-      xbuf1[i - rgroup] = xbuf1[rgroup*(M+1) + i];
-      xbuf0[rgroup*(M+2) + i] = xbuf0[i];
-      xbuf1[rgroup*(M+2) + i] = xbuf1[i];
-    }
-  }
-}
-
-
-LOCAL(void)
-set_bottom_pointers (j_decompress_ptr cinfo)
-/* Change the pointer lists to duplicate the last sample row at the bottom
- * of the image.  whichptr indicates which xbuffer holds the final iMCU row.
- * Also sets rowgroups_avail to indicate number of nondummy row groups in row.
- */
-{
-  my_main_ptr main = (my_main_ptr) cinfo->main;
-  int ci, i, rgroup, iMCUheight, rows_left;
-  jpeg_component_info *compptr;
-  JSAMPARRAY xbuf;
-
-  for (ci = 0, compptr = cinfo->comp_info; ci < cinfo->num_components;
-       ci++, compptr++) {
-    /* Count sample rows in one iMCU row and in one row group */
-    iMCUheight = compptr->v_samp_factor * compptr->DCT_scaled_size;
-    rgroup = iMCUheight / cinfo->min_DCT_scaled_size;
-    /* Count nondummy sample rows remaining for this component */
-    rows_left = (int) (compptr->downsampled_height % (JDIMENSION) iMCUheight);
-    if (rows_left == 0) rows_left = iMCUheight;
-    /* Count nondummy row groups.  Should get same answer for each component,
-     * so we need only do it once.
-     */
-    if (ci == 0) {
-      main->rowgroups_avail = (JDIMENSION) ((rows_left-1) / rgroup + 1);
-    }
-    /* Duplicate the last real sample row rgroup*2 times; this pads out the
-     * last partial rowgroup and ensures at least one full rowgroup of context.
-     */
-    xbuf = main->xbuffer[main->whichptr][ci];
-    for (i = 0; i < rgroup * 2; i++) {
-      xbuf[rows_left + i] = xbuf[rows_left-1];
-    }
-  }
-}
-
-
-/*
- * Initialize for a processing pass.
- */
-
-METHODDEF(void)
-start_pass_main (j_decompress_ptr cinfo, J_BUF_MODE pass_mode)
-{
-  my_main_ptr main = (my_main_ptr) cinfo->main;
-
-  switch (pass_mode) {
-  case JBUF_PASS_THRU:
-    if (cinfo->upsample->need_context_rows) {
-      main->pub.process_data = process_data_context_main;
-      make_funny_pointers(cinfo); /* Create the xbuffer[] lists */
-      main->whichptr = 0;	/* Read first iMCU row into xbuffer[0] */
-      main->context_state = CTX_PREPARE_FOR_IMCU;
-      main->iMCU_row_ctr = 0;
-    } else {
-      /* Simple case with no context needed */
-      main->pub.process_data = process_data_simple_main;
-    }
-    main->buffer_full = FALSE;	/* Mark buffer empty */
-    main->rowgroup_ctr = 0;
-    break;
-#ifdef QUANT_2PASS_SUPPORTED
-  case JBUF_CRANK_DEST:
-    /* For last pass of 2-pass quantization, just crank the postprocessor */
-    main->pub.process_data = process_data_crank_post;
-    break;
-#endif
-  default:
-    ERREXIT(cinfo, JERR_BAD_BUFFER_MODE);
-    break;
-  }
-}
-
-
-/*
- * Process some data.
- * This handles the simple case where no context is required.
- */
-
-METHODDEF(void)
-process_data_simple_main (j_decompress_ptr cinfo,
-			  JSAMPARRAY output_buf, JDIMENSION *out_row_ctr,
-			  JDIMENSION out_rows_avail)
-{
-  my_main_ptr main = (my_main_ptr) cinfo->main;
-  JDIMENSION rowgroups_avail;
-
-  /* Read input data if we haven't filled the main buffer yet */
-  if (! main->buffer_full) {
-    if (! (*cinfo->coef->decompress_data) (cinfo, main->buffer))
-      return;			/* suspension forced, can do nothing more */
-    main->buffer_full = TRUE;	/* OK, we have an iMCU row to work with */
-  }
-
-  /* There are always min_DCT_scaled_size row groups in an iMCU row. */
-  rowgroups_avail = (JDIMENSION) cinfo->min_DCT_scaled_size;
-  /* Note: at the bottom of the image, we may pass extra garbage row groups
-   * to the postprocessor.  The postprocessor has to check for bottom
-   * of image anyway (at row resolution), so no point in us doing it too.
-   */
-
-  /* Feed the postprocessor */
-  (*cinfo->post->post_process_data) (cinfo, main->buffer,
-				     &main->rowgroup_ctr, rowgroups_avail,
-				     output_buf, out_row_ctr, out_rows_avail);
-
-  /* Has postprocessor consumed all the data yet? If so, mark buffer empty */
-  if (main->rowgroup_ctr >= rowgroups_avail) {
-    main->buffer_full = FALSE;
-    main->rowgroup_ctr = 0;
-  }
-}
-
-
-/*
- * Process some data.
- * This handles the case where context rows must be provided.
- */
-
-METHODDEF(void)
-process_data_context_main (j_decompress_ptr cinfo,
-			   JSAMPARRAY output_buf, JDIMENSION *out_row_ctr,
-			   JDIMENSION out_rows_avail)
-{
-  my_main_ptr main = (my_main_ptr) cinfo->main;
-
-  /* Read input data if we haven't filled the main buffer yet */
-  if (! main->buffer_full) {
-    if (! (*cinfo->coef->decompress_data) (cinfo,
-					   main->xbuffer[main->whichptr]))
-      return;			/* suspension forced, can do nothing more */
-    main->buffer_full = TRUE;	/* OK, we have an iMCU row to work with */
-    main->iMCU_row_ctr++;	/* count rows received */
-  }
-
-  /* Postprocessor typically will not swallow all the input data it is handed
-   * in one call (due to filling the output buffer first).  Must be prepared
-   * to exit and restart.  This switch lets us keep track of how far we got.
-   * Note that each case falls through to the next on successful completion.
-   */
-  switch (main->context_state) {
-  case CTX_POSTPONED_ROW:
-    /* Call postprocessor using previously set pointers for postponed row */
-    (*cinfo->post->post_process_data) (cinfo, main->xbuffer[main->whichptr],
-			&main->rowgroup_ctr, main->rowgroups_avail,
-			output_buf, out_row_ctr, out_rows_avail);
-    if (main->rowgroup_ctr < main->rowgroups_avail)
-      return;			/* Need to suspend */
-    main->context_state = CTX_PREPARE_FOR_IMCU;
-    if (*out_row_ctr >= out_rows_avail)
-      return;			/* Postprocessor exactly filled output buf */
-    /*FALLTHROUGH*/
-  case CTX_PREPARE_FOR_IMCU:
-    /* Prepare to process first M-1 row groups of this iMCU row */
-    main->rowgroup_ctr = 0;
-    main->rowgroups_avail = (JDIMENSION) (cinfo->min_DCT_scaled_size - 1);
-    /* Check for bottom of image: if so, tweak pointers to "duplicate"
-     * the last sample row, and adjust rowgroups_avail to ignore padding rows.
-     */
-    if (main->iMCU_row_ctr == cinfo->total_iMCU_rows)
-      set_bottom_pointers(cinfo);
-    main->context_state = CTX_PROCESS_IMCU;
-    /*FALLTHROUGH*/
-  case CTX_PROCESS_IMCU:
-    /* Call postprocessor using previously set pointers */
-    (*cinfo->post->post_process_data) (cinfo, main->xbuffer[main->whichptr],
-			&main->rowgroup_ctr, main->rowgroups_avail,
-			output_buf, out_row_ctr, out_rows_avail);
-    if (main->rowgroup_ctr < main->rowgroups_avail)
-      return;			/* Need to suspend */
-    /* After the first iMCU, change wraparound pointers to normal state */
-    if (main->iMCU_row_ctr == 1)
-      set_wraparound_pointers(cinfo);
-    /* Prepare to load new iMCU row using other xbuffer list */
-    main->whichptr ^= 1;	/* 0=>1 or 1=>0 */
-    main->buffer_full = FALSE;
-    /* Still need to process last row group of this iMCU row, */
-    /* which is saved at index M+1 of the other xbuffer */
-    main->rowgroup_ctr = (JDIMENSION) (cinfo->min_DCT_scaled_size + 1);
-    main->rowgroups_avail = (JDIMENSION) (cinfo->min_DCT_scaled_size + 2);
-    main->context_state = CTX_POSTPONED_ROW;
-  }
-}
-
-
-/*
- * Process some data.
- * Final pass of two-pass quantization: just call the postprocessor.
- * Source data will be the postprocessor controller's internal buffer.
- */
-
-#ifdef QUANT_2PASS_SUPPORTED
-
-METHODDEF(void)
-process_data_crank_post (j_decompress_ptr cinfo,
-			 JSAMPARRAY output_buf, JDIMENSION *out_row_ctr,
-			 JDIMENSION out_rows_avail)
-{
-  (*cinfo->post->post_process_data) (cinfo, (JSAMPIMAGE) NULL,
-				     (JDIMENSION *) NULL, (JDIMENSION) 0,
-				     output_buf, out_row_ctr, out_rows_avail);
-}
-
-#endif /* QUANT_2PASS_SUPPORTED */
-
-
-/*
- * Initialize main buffer controller.
- */
-
-GLOBAL(void)
-jinit_d_main_controller (j_decompress_ptr cinfo, boolean need_full_buffer)
-{
-  my_main_ptr main;
-  int ci, rgroup, ngroups;
-  jpeg_component_info *compptr;
-
-  main = (my_main_ptr)
-    (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
-				SIZEOF(my_main_controller));
-  cinfo->main = (struct jpeg_d_main_controller *) main;
-  main->pub.start_pass = start_pass_main;
-
-  if (need_full_buffer)		/* shouldn't happen */
-    ERREXIT(cinfo, JERR_BAD_BUFFER_MODE);
-
-  /* Allocate the workspace.
-   * ngroups is the number of row groups we need.
-   */
-  if (cinfo->upsample->need_context_rows) {
-    if (cinfo->min_DCT_scaled_size < 2) /* unsupported, see comments above */
-      ERREXIT(cinfo, JERR_NOTIMPL);
-    alloc_funny_pointers(cinfo); /* Alloc space for xbuffer[] lists */
-    ngroups = cinfo->min_DCT_scaled_size + 2;
-  } else {
-    ngroups = cinfo->min_DCT_scaled_size;
-  }
-
-  for (ci = 0, compptr = cinfo->comp_info; ci < cinfo->num_components;
-       ci++, compptr++) {
-    rgroup = (compptr->v_samp_factor * compptr->DCT_scaled_size) /
-      cinfo->min_DCT_scaled_size; /* height of a row group of component */
-    main->buffer[ci] = (*cinfo->mem->alloc_sarray)
-			((j_common_ptr) cinfo, JPOOL_IMAGE,
-			 compptr->width_in_blocks * compptr->DCT_scaled_size,
-			 (JDIMENSION) (rgroup * ngroups));
-  }
-}
diff --git a/src/libjpeg/jdmarker.c b/src/libjpeg/jdmarker.c
deleted file mode 100644
index 9811761..0000000
--- a/src/libjpeg/jdmarker.c
+++ /dev/null
@@ -1,1360 +0,0 @@
-/*
- * jdmarker.c
- *
- * Copyright (C) 1991-1998, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains routines to decode JPEG datastream markers.
- * Most of the complexity arises from our desire to support input
- * suspension: if not all of the data for a marker is available,
- * we must exit back to the application.  On resumption, we reprocess
- * the marker.
- */
-
-#define JPEG_INTERNALS
-#include "jinclude.h"
-#include "jpeglib.h"
-
-
-typedef enum {			/* JPEG marker codes */
-  M_SOF0  = 0xc0,
-  M_SOF1  = 0xc1,
-  M_SOF2  = 0xc2,
-  M_SOF3  = 0xc3,
-  
-  M_SOF5  = 0xc5,
-  M_SOF6  = 0xc6,
-  M_SOF7  = 0xc7,
-  
-  M_JPG   = 0xc8,
-  M_SOF9  = 0xc9,
-  M_SOF10 = 0xca,
-  M_SOF11 = 0xcb,
-  
-  M_SOF13 = 0xcd,
-  M_SOF14 = 0xce,
-  M_SOF15 = 0xcf,
-  
-  M_DHT   = 0xc4,
-  
-  M_DAC   = 0xcc,
-  
-  M_RST0  = 0xd0,
-  M_RST1  = 0xd1,
-  M_RST2  = 0xd2,
-  M_RST3  = 0xd3,
-  M_RST4  = 0xd4,
-  M_RST5  = 0xd5,
-  M_RST6  = 0xd6,
-  M_RST7  = 0xd7,
-  
-  M_SOI   = 0xd8,
-  M_EOI   = 0xd9,
-  M_SOS   = 0xda,
-  M_DQT   = 0xdb,
-  M_DNL   = 0xdc,
-  M_DRI   = 0xdd,
-  M_DHP   = 0xde,
-  M_EXP   = 0xdf,
-  
-  M_APP0  = 0xe0,
-  M_APP1  = 0xe1,
-  M_APP2  = 0xe2,
-  M_APP3  = 0xe3,
-  M_APP4  = 0xe4,
-  M_APP5  = 0xe5,
-  M_APP6  = 0xe6,
-  M_APP7  = 0xe7,
-  M_APP8  = 0xe8,
-  M_APP9  = 0xe9,
-  M_APP10 = 0xea,
-  M_APP11 = 0xeb,
-  M_APP12 = 0xec,
-  M_APP13 = 0xed,
-  M_APP14 = 0xee,
-  M_APP15 = 0xef,
-  
-  M_JPG0  = 0xf0,
-  M_JPG13 = 0xfd,
-  M_COM   = 0xfe,
-  
-  M_TEM   = 0x01,
-  
-  M_ERROR = 0x100
-} JPEG_MARKER;
-
-
-/* Private state */
-
-typedef struct {
-  struct jpeg_marker_reader pub; /* public fields */
-
-  /* Application-overridable marker processing methods */
-  jpeg_marker_parser_method process_COM;
-  jpeg_marker_parser_method process_APPn[16];
-
-  /* Limit on marker data length to save for each marker type */
-  unsigned int length_limit_COM;
-  unsigned int length_limit_APPn[16];
-
-  /* Status of COM/APPn marker saving */
-  jpeg_saved_marker_ptr cur_marker;	/* NULL if not processing a marker */
-  unsigned int bytes_read;		/* data bytes read so far in marker */
-  /* Note: cur_marker is not linked into marker_list until it's all read. */
-} my_marker_reader;
-
-typedef my_marker_reader * my_marker_ptr;
-
-
-/*
- * Macros for fetching data from the data source module.
- *
- * At all times, cinfo->src->next_input_byte and ->bytes_in_buffer reflect
- * the current restart point; we update them only when we have reached a
- * suitable place to restart if a suspension occurs.
- */
-
-/* Declare and initialize local copies of input pointer/count */
-#define INPUT_VARS(cinfo)  \
-	struct jpeg_source_mgr * datasrc = (cinfo)->src;  \
-	const JOCTET * next_input_byte = datasrc->next_input_byte;  \
-	size_t bytes_in_buffer = datasrc->bytes_in_buffer
-
-/* Unload the local copies --- do this only at a restart boundary */
-#define INPUT_SYNC(cinfo)  \
-	( datasrc->next_input_byte = next_input_byte,  \
-	  datasrc->bytes_in_buffer = bytes_in_buffer )
-
-/* Reload the local copies --- used only in MAKE_BYTE_AVAIL */
-#define INPUT_RELOAD(cinfo)  \
-	( next_input_byte = datasrc->next_input_byte,  \
-	  bytes_in_buffer = datasrc->bytes_in_buffer )
-
-/* Internal macro for INPUT_BYTE and INPUT_2BYTES: make a byte available.
- * Note we do *not* do INPUT_SYNC before calling fill_input_buffer,
- * but we must reload the local copies after a successful fill.
- */
-#define MAKE_BYTE_AVAIL(cinfo,action)  \
-	if (bytes_in_buffer == 0) {  \
-	  if (! (*datasrc->fill_input_buffer) (cinfo))  \
-	    { action; }  \
-	  INPUT_RELOAD(cinfo);  \
-	}
-
-/* Read a byte into variable V.
- * If must suspend, take the specified action (typically "return FALSE").
- */
-#define INPUT_BYTE(cinfo,V,action)  \
-	MAKESTMT( MAKE_BYTE_AVAIL(cinfo,action); \
-		  bytes_in_buffer--; \
-		  V = GETJOCTET(*next_input_byte++); )
-
-/* As above, but read two bytes interpreted as an unsigned 16-bit integer.
- * V should be declared unsigned int or perhaps INT32.
- */
-#define INPUT_2BYTES(cinfo,V,action)  \
-	MAKESTMT( MAKE_BYTE_AVAIL(cinfo,action); \
-		  bytes_in_buffer--; \
-		  V = ((unsigned int) GETJOCTET(*next_input_byte++)) << 8; \
-		  MAKE_BYTE_AVAIL(cinfo,action); \
-		  bytes_in_buffer--; \
-		  V += GETJOCTET(*next_input_byte++); )
-
-
-/*
- * Routines to process JPEG markers.
- *
- * Entry condition: JPEG marker itself has been read and its code saved
- *   in cinfo->unread_marker; input restart point is just after the marker.
- *
- * Exit: if return TRUE, have read and processed any parameters, and have
- *   updated the restart point to point after the parameters.
- *   If return FALSE, was forced to suspend before reaching end of
- *   marker parameters; restart point has not been moved.  Same routine
- *   will be called again after application supplies more input data.
- *
- * This approach to suspension assumes that all of a marker's parameters
- * can fit into a single input bufferload.  This should hold for "normal"
- * markers.  Some COM/APPn markers might have large parameter segments
- * that might not fit.  If we are simply dropping such a marker, we use
- * skip_input_data to get past it, and thereby put the problem on the
- * source manager's shoulders.  If we are saving the marker's contents
- * into memory, we use a slightly different convention: when forced to
- * suspend, the marker processor updates the restart point to the end of
- * what it's consumed (ie, the end of the buffer) before returning FALSE.
- * On resumption, cinfo->unread_marker still contains the marker code,
- * but the data source will point to the next chunk of marker data.
- * The marker processor must retain internal state to deal with this.
- *
- * Note that we don't bother to avoid duplicate trace messages if a
- * suspension occurs within marker parameters.  Other side effects
- * require more care.
- */
-
-
-LOCAL(boolean)
-get_soi (j_decompress_ptr cinfo)
-/* Process an SOI marker */
-{
-  int i;
-  
-  TRACEMS(cinfo, 1, JTRC_SOI);
-
-  if (cinfo->marker->saw_SOI)
-    ERREXIT(cinfo, JERR_SOI_DUPLICATE);
-
-  /* Reset all parameters that are defined to be reset by SOI */
-
-  for (i = 0; i < NUM_ARITH_TBLS; i++) {
-    cinfo->arith_dc_L[i] = 0;
-    cinfo->arith_dc_U[i] = 1;
-    cinfo->arith_ac_K[i] = 5;
-  }
-  cinfo->restart_interval = 0;
-
-  /* Set initial assumptions for colorspace etc */
-
-  cinfo->jpeg_color_space = JCS_UNKNOWN;
-  cinfo->CCIR601_sampling = FALSE; /* Assume non-CCIR sampling??? */
-
-  cinfo->saw_JFIF_marker = FALSE;
-  cinfo->JFIF_major_version = 1; /* set default JFIF APP0 values */
-  cinfo->JFIF_minor_version = 1;
-  cinfo->density_unit = 0;
-  cinfo->X_density = 1;
-  cinfo->Y_density = 1;
-  cinfo->saw_Adobe_marker = FALSE;
-  cinfo->Adobe_transform = 0;
-
-  cinfo->marker->saw_SOI = TRUE;
-
-  return TRUE;
-}
-
-
-LOCAL(boolean)
-get_sof (j_decompress_ptr cinfo, boolean is_prog, boolean is_arith)
-/* Process a SOFn marker */
-{
-  INT32 length;
-  int c, ci;
-  jpeg_component_info * compptr;
-  INPUT_VARS(cinfo);
-
-  cinfo->progressive_mode = is_prog;
-  cinfo->arith_code = is_arith;
-
-  INPUT_2BYTES(cinfo, length, return FALSE);
-
-  INPUT_BYTE(cinfo, cinfo->data_precision, return FALSE);
-  INPUT_2BYTES(cinfo, cinfo->image_height, return FALSE);
-  INPUT_2BYTES(cinfo, cinfo->image_width, return FALSE);
-  INPUT_BYTE(cinfo, cinfo->num_components, return FALSE);
-
-  length -= 8;
-
-  TRACEMS4(cinfo, 1, JTRC_SOF, cinfo->unread_marker,
-	   (int) cinfo->image_width, (int) cinfo->image_height,
-	   cinfo->num_components);
-
-  if (cinfo->marker->saw_SOF)
-    ERREXIT(cinfo, JERR_SOF_DUPLICATE);
-
-  /* We don't support files in which the image height is initially specified */
-  /* as 0 and is later redefined by DNL.  As long as we have to check that,  */
-  /* might as well have a general sanity check. */
-  if (cinfo->image_height <= 0 || cinfo->image_width <= 0
-      || cinfo->num_components <= 0)
-    ERREXIT(cinfo, JERR_EMPTY_IMAGE);
-
-  if (length != (cinfo->num_components * 3))
-    ERREXIT(cinfo, JERR_BAD_LENGTH);
-
-  if (cinfo->comp_info == NULL)	/* do only once, even if suspend */
-    cinfo->comp_info = (jpeg_component_info *) (*cinfo->mem->alloc_small)
-			((j_common_ptr) cinfo, JPOOL_IMAGE,
-			 cinfo->num_components * SIZEOF(jpeg_component_info));
-  
-  for (ci = 0, compptr = cinfo->comp_info; ci < cinfo->num_components;
-       ci++, compptr++) {
-    compptr->component_index = ci;
-    INPUT_BYTE(cinfo, compptr->component_id, return FALSE);
-    INPUT_BYTE(cinfo, c, return FALSE);
-    compptr->h_samp_factor = (c >> 4) & 15;
-    compptr->v_samp_factor = (c     ) & 15;
-    INPUT_BYTE(cinfo, compptr->quant_tbl_no, return FALSE);
-
-    TRACEMS4(cinfo, 1, JTRC_SOF_COMPONENT,
-	     compptr->component_id, compptr->h_samp_factor,
-	     compptr->v_samp_factor, compptr->quant_tbl_no);
-  }
-
-  cinfo->marker->saw_SOF = TRUE;
-
-  INPUT_SYNC(cinfo);
-  return TRUE;
-}
-
-
-LOCAL(boolean)
-get_sos (j_decompress_ptr cinfo)
-/* Process a SOS marker */
-{
-  INT32 length;
-  int i, ci, n, c, cc;
-  jpeg_component_info * compptr;
-  INPUT_VARS(cinfo);
-
-  if (! cinfo->marker->saw_SOF)
-    ERREXIT(cinfo, JERR_SOS_NO_SOF);
-
-  INPUT_2BYTES(cinfo, length, return FALSE);
-
-  INPUT_BYTE(cinfo, n, return FALSE); /* Number of components */
-
-  TRACEMS1(cinfo, 1, JTRC_SOS, n);
-
-  if (length != (n * 2 + 6) || n < 1 || n > MAX_COMPS_IN_SCAN)
-    ERREXIT(cinfo, JERR_BAD_LENGTH);
-
-  cinfo->comps_in_scan = n;
-
-  /* Collect the component-spec parameters */
-
-  for (i = 0; i < n; i++) {
-    INPUT_BYTE(cinfo, cc, return FALSE);
-    INPUT_BYTE(cinfo, c, return FALSE);
-    
-    for (ci = 0, compptr = cinfo->comp_info; ci < cinfo->num_components;
-	 ci++, compptr++) {
-      if (cc == compptr->component_id)
-	goto id_found;
-    }
-
-    ERREXIT1(cinfo, JERR_BAD_COMPONENT_ID, cc);
-
-  id_found:
-
-    cinfo->cur_comp_info[i] = compptr;
-    compptr->dc_tbl_no = (c >> 4) & 15;
-    compptr->ac_tbl_no = (c     ) & 15;
-    
-    TRACEMS3(cinfo, 1, JTRC_SOS_COMPONENT, cc,
-	     compptr->dc_tbl_no, compptr->ac_tbl_no);
-  }
-
-  /* Collect the additional scan parameters Ss, Se, Ah/Al. */
-  INPUT_BYTE(cinfo, c, return FALSE);
-  cinfo->Ss = c;
-  INPUT_BYTE(cinfo, c, return FALSE);
-  cinfo->Se = c;
-  INPUT_BYTE(cinfo, c, return FALSE);
-  cinfo->Ah = (c >> 4) & 15;
-  cinfo->Al = (c     ) & 15;
-
-  TRACEMS4(cinfo, 1, JTRC_SOS_PARAMS, cinfo->Ss, cinfo->Se,
-	   cinfo->Ah, cinfo->Al);
-
-  /* Prepare to scan data & restart markers */
-  cinfo->marker->next_restart_num = 0;
-
-  /* Count another SOS marker */
-  cinfo->input_scan_number++;
-
-  INPUT_SYNC(cinfo);
-  return TRUE;
-}
-
-
-#ifdef D_ARITH_CODING_SUPPORTED
-
-LOCAL(boolean)
-get_dac (j_decompress_ptr cinfo)
-/* Process a DAC marker */
-{
-  INT32 length;
-  int index, val;
-  INPUT_VARS(cinfo);
-
-  INPUT_2BYTES(cinfo, length, return FALSE);
-  length -= 2;
-  
-  while (length > 0) {
-    INPUT_BYTE(cinfo, index, return FALSE);
-    INPUT_BYTE(cinfo, val, return FALSE);
-
-    length -= 2;
-
-    TRACEMS2(cinfo, 1, JTRC_DAC, index, val);
-
-    if (index < 0 || index >= (2*NUM_ARITH_TBLS))
-      ERREXIT1(cinfo, JERR_DAC_INDEX, index);
-
-    if (index >= NUM_ARITH_TBLS) { /* define AC table */
-      cinfo->arith_ac_K[index-NUM_ARITH_TBLS] = (UINT8) val;
-    } else {			/* define DC table */
-      cinfo->arith_dc_L[index] = (UINT8) (val & 0x0F);
-      cinfo->arith_dc_U[index] = (UINT8) (val >> 4);
-      if (cinfo->arith_dc_L[index] > cinfo->arith_dc_U[index])
-	ERREXIT1(cinfo, JERR_DAC_VALUE, val);
-    }
-  }
-
-  if (length != 0)
-    ERREXIT(cinfo, JERR_BAD_LENGTH);
-
-  INPUT_SYNC(cinfo);
-  return TRUE;
-}
-
-#else /* ! D_ARITH_CODING_SUPPORTED */
-
-#define get_dac(cinfo)  skip_variable(cinfo)
-
-#endif /* D_ARITH_CODING_SUPPORTED */
-
-
-LOCAL(boolean)
-get_dht (j_decompress_ptr cinfo)
-/* Process a DHT marker */
-{
-  INT32 length;
-  UINT8 bits[17];
-  UINT8 huffval[256];
-  int i, index, count;
-  JHUFF_TBL **htblptr;
-  INPUT_VARS(cinfo);
-
-  INPUT_2BYTES(cinfo, length, return FALSE);
-  length -= 2;
-  
-  while (length > 16) {
-    INPUT_BYTE(cinfo, index, return FALSE);
-
-    TRACEMS1(cinfo, 1, JTRC_DHT, index);
-      
-    bits[0] = 0;
-    count = 0;
-    for (i = 1; i <= 16; i++) {
-      INPUT_BYTE(cinfo, bits[i], return FALSE);
-      count += bits[i];
-    }
-
-    length -= 1 + 16;
-
-    TRACEMS8(cinfo, 2, JTRC_HUFFBITS,
-	     bits[1], bits[2], bits[3], bits[4],
-	     bits[5], bits[6], bits[7], bits[8]);
-    TRACEMS8(cinfo, 2, JTRC_HUFFBITS,
-	     bits[9], bits[10], bits[11], bits[12],
-	     bits[13], bits[14], bits[15], bits[16]);
-
-    /* Here we just do minimal validation of the counts to avoid walking
-     * off the end of our table space.  jdhuff.c will check more carefully.
-     */
-    if (count > 256 || ((INT32) count) > length)
-      ERREXIT(cinfo, JERR_BAD_HUFF_TABLE);
-
-    for (i = 0; i < count; i++)
-      INPUT_BYTE(cinfo, huffval[i], return FALSE);
-
-    length -= count;
-
-    if (index & 0x10) {		/* AC table definition */
-      index -= 0x10;
-      htblptr = &cinfo->ac_huff_tbl_ptrs[index];
-    } else {			/* DC table definition */
-      htblptr = &cinfo->dc_huff_tbl_ptrs[index];
-    }
-
-    if (index < 0 || index >= NUM_HUFF_TBLS)
-      ERREXIT1(cinfo, JERR_DHT_INDEX, index);
-
-    if (*htblptr == NULL)
-      *htblptr = jpeg_alloc_huff_table((j_common_ptr) cinfo);
-  
-    MEMCOPY((*htblptr)->bits, bits, SIZEOF((*htblptr)->bits));
-    MEMCOPY((*htblptr)->huffval, huffval, SIZEOF((*htblptr)->huffval));
-  }
-
-  if (length != 0)
-    ERREXIT(cinfo, JERR_BAD_LENGTH);
-
-  INPUT_SYNC(cinfo);
-  return TRUE;
-}
-
-
-LOCAL(boolean)
-get_dqt (j_decompress_ptr cinfo)
-/* Process a DQT marker */
-{
-  INT32 length;
-  int n, i, prec;
-  unsigned int tmp;
-  JQUANT_TBL *quant_ptr;
-  INPUT_VARS(cinfo);
-
-  INPUT_2BYTES(cinfo, length, return FALSE);
-  length -= 2;
-
-  while (length > 0) {
-    INPUT_BYTE(cinfo, n, return FALSE);
-    prec = n >> 4;
-    n &= 0x0F;
-
-    TRACEMS2(cinfo, 1, JTRC_DQT, n, prec);
-
-    if (n >= NUM_QUANT_TBLS)
-      ERREXIT1(cinfo, JERR_DQT_INDEX, n);
-      
-    if (cinfo->quant_tbl_ptrs[n] == NULL)
-      cinfo->quant_tbl_ptrs[n] = jpeg_alloc_quant_table((j_common_ptr) cinfo);
-    quant_ptr = cinfo->quant_tbl_ptrs[n];
-
-    for (i = 0; i < DCTSIZE2; i++) {
-      if (prec)
-	INPUT_2BYTES(cinfo, tmp, return FALSE);
-      else
-	INPUT_BYTE(cinfo, tmp, return FALSE);
-      /* We convert the zigzag-order table to natural array order. */
-      quant_ptr->quantval[jpeg_natural_order[i]] = (UINT16) tmp;
-    }
-
-    if (cinfo->err->trace_level >= 2) {
-      for (i = 0; i < DCTSIZE2; i += 8) {
-	TRACEMS8(cinfo, 2, JTRC_QUANTVALS,
-		 quant_ptr->quantval[i],   quant_ptr->quantval[i+1],
-		 quant_ptr->quantval[i+2], quant_ptr->quantval[i+3],
-		 quant_ptr->quantval[i+4], quant_ptr->quantval[i+5],
-		 quant_ptr->quantval[i+6], quant_ptr->quantval[i+7]);
-      }
-    }
-
-    length -= DCTSIZE2+1;
-    if (prec) length -= DCTSIZE2;
-  }
-
-  if (length != 0)
-    ERREXIT(cinfo, JERR_BAD_LENGTH);
-
-  INPUT_SYNC(cinfo);
-  return TRUE;
-}
-
-
-LOCAL(boolean)
-get_dri (j_decompress_ptr cinfo)
-/* Process a DRI marker */
-{
-  INT32 length;
-  unsigned int tmp;
-  INPUT_VARS(cinfo);
-
-  INPUT_2BYTES(cinfo, length, return FALSE);
-  
-  if (length != 4)
-    ERREXIT(cinfo, JERR_BAD_LENGTH);
-
-  INPUT_2BYTES(cinfo, tmp, return FALSE);
-
-  TRACEMS1(cinfo, 1, JTRC_DRI, tmp);
-
-  cinfo->restart_interval = tmp;
-
-  INPUT_SYNC(cinfo);
-  return TRUE;
-}
-
-
-/*
- * Routines for processing APPn and COM markers.
- * These are either saved in memory or discarded, per application request.
- * APP0 and APP14 are specially checked to see if they are
- * JFIF and Adobe markers, respectively.
- */
-
-#define APP0_DATA_LEN	14	/* Length of interesting data in APP0 */
-#define APP14_DATA_LEN	12	/* Length of interesting data in APP14 */
-#define APPN_DATA_LEN	14	/* Must be the largest of the above!! */
-
-
-LOCAL(void)
-examine_app0 (j_decompress_ptr cinfo, JOCTET FAR * data,
-	      unsigned int datalen, INT32 remaining)
-/* Examine first few bytes from an APP0.
- * Take appropriate action if it is a JFIF marker.
- * datalen is # of bytes at data[], remaining is length of rest of marker data.
- */
-{
-  INT32 totallen = (INT32) datalen + remaining;
-
-  if (datalen >= APP0_DATA_LEN &&
-      GETJOCTET(data[0]) == 0x4A &&
-      GETJOCTET(data[1]) == 0x46 &&
-      GETJOCTET(data[2]) == 0x49 &&
-      GETJOCTET(data[3]) == 0x46 &&
-      GETJOCTET(data[4]) == 0) {
-    /* Found JFIF APP0 marker: save info */
-    cinfo->saw_JFIF_marker = TRUE;
-    cinfo->JFIF_major_version = GETJOCTET(data[5]);
-    cinfo->JFIF_minor_version = GETJOCTET(data[6]);
-    cinfo->density_unit = GETJOCTET(data[7]);
-    cinfo->X_density = (GETJOCTET(data[8]) << 8) + GETJOCTET(data[9]);
-    cinfo->Y_density = (GETJOCTET(data[10]) << 8) + GETJOCTET(data[11]);
-    /* Check version.
-     * Major version must be 1, anything else signals an incompatible change.
-     * (We used to treat this as an error, but now it's a nonfatal warning,
-     * because some bozo at Hijaak couldn't read the spec.)
-     * Minor version should be 0..2, but process anyway if newer.
-     */
-    if (cinfo->JFIF_major_version != 1)
-      WARNMS2(cinfo, JWRN_JFIF_MAJOR,
-	      cinfo->JFIF_major_version, cinfo->JFIF_minor_version);
-    /* Generate trace messages */
-    TRACEMS5(cinfo, 1, JTRC_JFIF,
-	     cinfo->JFIF_major_version, cinfo->JFIF_minor_version,
-	     cinfo->X_density, cinfo->Y_density, cinfo->density_unit);
-    /* Validate thumbnail dimensions and issue appropriate messages */
-    if (GETJOCTET(data[12]) | GETJOCTET(data[13]))
-      TRACEMS2(cinfo, 1, JTRC_JFIF_THUMBNAIL,
-	       GETJOCTET(data[12]), GETJOCTET(data[13]));
-    totallen -= APP0_DATA_LEN;
-    if (totallen !=
-	((INT32)GETJOCTET(data[12]) * (INT32)GETJOCTET(data[13]) * (INT32) 3))
-      TRACEMS1(cinfo, 1, JTRC_JFIF_BADTHUMBNAILSIZE, (int) totallen);
-  } else if (datalen >= 6 &&
-      GETJOCTET(data[0]) == 0x4A &&
-      GETJOCTET(data[1]) == 0x46 &&
-      GETJOCTET(data[2]) == 0x58 &&
-      GETJOCTET(data[3]) == 0x58 &&
-      GETJOCTET(data[4]) == 0) {
-    /* Found JFIF "JFXX" extension APP0 marker */
-    /* The library doesn't actually do anything with these,
-     * but we try to produce a helpful trace message.
-     */
-    switch (GETJOCTET(data[5])) {
-    case 0x10:
-      TRACEMS1(cinfo, 1, JTRC_THUMB_JPEG, (int) totallen);
-      break;
-    case 0x11:
-      TRACEMS1(cinfo, 1, JTRC_THUMB_PALETTE, (int) totallen);
-      break;
-    case 0x13:
-      TRACEMS1(cinfo, 1, JTRC_THUMB_RGB, (int) totallen);
-      break;
-    default:
-      TRACEMS2(cinfo, 1, JTRC_JFIF_EXTENSION,
-	       GETJOCTET(data[5]), (int) totallen);
-      break;
-    }
-  } else {
-    /* Start of APP0 does not match "JFIF" or "JFXX", or too short */
-    TRACEMS1(cinfo, 1, JTRC_APP0, (int) totallen);
-  }
-}
-
-
-LOCAL(void)
-examine_app14 (j_decompress_ptr cinfo, JOCTET FAR * data,
-	       unsigned int datalen, INT32 remaining)
-/* Examine first few bytes from an APP14.
- * Take appropriate action if it is an Adobe marker.
- * datalen is # of bytes at data[], remaining is length of rest of marker data.
- */
-{
-  unsigned int version, flags0, flags1, transform;
-
-  if (datalen >= APP14_DATA_LEN &&
-      GETJOCTET(data[0]) == 0x41 &&
-      GETJOCTET(data[1]) == 0x64 &&
-      GETJOCTET(data[2]) == 0x6F &&
-      GETJOCTET(data[3]) == 0x62 &&
-      GETJOCTET(data[4]) == 0x65) {
-    /* Found Adobe APP14 marker */
-    version = (GETJOCTET(data[5]) << 8) + GETJOCTET(data[6]);
-    flags0 = (GETJOCTET(data[7]) << 8) + GETJOCTET(data[8]);
-    flags1 = (GETJOCTET(data[9]) << 8) + GETJOCTET(data[10]);
-    transform = GETJOCTET(data[11]);
-    TRACEMS4(cinfo, 1, JTRC_ADOBE, version, flags0, flags1, transform);
-    cinfo->saw_Adobe_marker = TRUE;
-    cinfo->Adobe_transform = (UINT8) transform;
-  } else {
-    /* Start of APP14 does not match "Adobe", or too short */
-    TRACEMS1(cinfo, 1, JTRC_APP14, (int) (datalen + remaining));
-  }
-}
-
-
-METHODDEF(boolean)
-get_interesting_appn (j_decompress_ptr cinfo)
-/* Process an APP0 or APP14 marker without saving it */
-{
-  INT32 length;
-  JOCTET b[APPN_DATA_LEN];
-  unsigned int i, numtoread;
-  INPUT_VARS(cinfo);
-
-  INPUT_2BYTES(cinfo, length, return FALSE);
-  length -= 2;
-
-  /* get the interesting part of the marker data */
-  if (length >= APPN_DATA_LEN)
-    numtoread = APPN_DATA_LEN;
-  else if (length > 0)
-    numtoread = (unsigned int) length;
-  else
-    numtoread = 0;
-  for (i = 0; i < numtoread; i++)
-    INPUT_BYTE(cinfo, b[i], return FALSE);
-  length -= numtoread;
-
-  /* process it */
-  switch (cinfo->unread_marker) {
-  case M_APP0:
-    examine_app0(cinfo, (JOCTET FAR *) b, numtoread, length);
-    break;
-  case M_APP14:
-    examine_app14(cinfo, (JOCTET FAR *) b, numtoread, length);
-    break;
-  default:
-    /* can't get here unless jpeg_save_markers chooses wrong processor */
-    ERREXIT1(cinfo, JERR_UNKNOWN_MARKER, cinfo->unread_marker);
-    break;
-  }
-
-  /* skip any remaining data -- could be lots */
-  INPUT_SYNC(cinfo);
-  if (length > 0)
-    (*cinfo->src->skip_input_data) (cinfo, (long) length);
-
-  return TRUE;
-}
-
-
-#ifdef SAVE_MARKERS_SUPPORTED
-
-METHODDEF(boolean)
-save_marker (j_decompress_ptr cinfo)
-/* Save an APPn or COM marker into the marker list */
-{
-  my_marker_ptr marker = (my_marker_ptr) cinfo->marker;
-  jpeg_saved_marker_ptr cur_marker = marker->cur_marker;
-  unsigned int bytes_read, data_length;
-  JOCTET FAR * data;
-  INT32 length = 0;
-  INPUT_VARS(cinfo);
-
-  if (cur_marker == NULL) {
-    /* begin reading a marker */
-    INPUT_2BYTES(cinfo, length, return FALSE);
-    length -= 2;
-    if (length >= 0) {		/* watch out for bogus length word */
-      /* figure out how much we want to save */
-      unsigned int limit;
-      if (cinfo->unread_marker == (int) M_COM)
-	limit = marker->length_limit_COM;
-      else
-	limit = marker->length_limit_APPn[cinfo->unread_marker - (int) M_APP0];
-      if ((unsigned int) length < limit)
-	limit = (unsigned int) length;
-      /* allocate and initialize the marker item */
-      cur_marker = (jpeg_saved_marker_ptr)
-	(*cinfo->mem->alloc_large) ((j_common_ptr) cinfo, JPOOL_IMAGE,
-				    SIZEOF(struct jpeg_marker_struct) + limit);
-      cur_marker->next = NULL;
-      cur_marker->marker = (UINT8) cinfo->unread_marker;
-      cur_marker->original_length = (unsigned int) length;
-      cur_marker->data_length = limit;
-      /* data area is just beyond the jpeg_marker_struct */
-      data = cur_marker->data = (JOCTET FAR *) (cur_marker + 1);
-      marker->cur_marker = cur_marker;
-      marker->bytes_read = 0;
-      bytes_read = 0;
-      data_length = limit;
-    } else {
-      /* deal with bogus length word */
-      bytes_read = data_length = 0;
-      data = NULL;
-    }
-  } else {
-    /* resume reading a marker */
-    bytes_read = marker->bytes_read;
-    data_length = cur_marker->data_length;
-    data = cur_marker->data + bytes_read;
-  }
-
-  while (bytes_read < data_length) {
-    INPUT_SYNC(cinfo);		/* move the restart point to here */
-    marker->bytes_read = bytes_read;
-    /* If there's not at least one byte in buffer, suspend */
-    MAKE_BYTE_AVAIL(cinfo, return FALSE);
-    /* Copy bytes with reasonable rapidity */
-    while (bytes_read < data_length && bytes_in_buffer > 0) {
-      *data++ = *next_input_byte++;
-      bytes_in_buffer--;
-      bytes_read++;
-    }
-  }
-
-  /* Done reading what we want to read */
-  if (cur_marker != NULL) {	/* will be NULL if bogus length word */
-    /* Add new marker to end of list */
-    if (cinfo->marker_list == NULL) {
-      cinfo->marker_list = cur_marker;
-    } else {
-      jpeg_saved_marker_ptr prev = cinfo->marker_list;
-      while (prev->next != NULL)
-	prev = prev->next;
-      prev->next = cur_marker;
-    }
-    /* Reset pointer & calc remaining data length */
-    data = cur_marker->data;
-    length = cur_marker->original_length - data_length;
-  }
-  /* Reset to initial state for next marker */
-  marker->cur_marker = NULL;
-
-  /* Process the marker if interesting; else just make a generic trace msg */
-  switch (cinfo->unread_marker) {
-  case M_APP0:
-    examine_app0(cinfo, data, data_length, length);
-    break;
-  case M_APP14:
-    examine_app14(cinfo, data, data_length, length);
-    break;
-  default:
-    TRACEMS2(cinfo, 1, JTRC_MISC_MARKER, cinfo->unread_marker,
-	     (int) (data_length + length));
-    break;
-  }
-
-  /* skip any remaining data -- could be lots */
-  INPUT_SYNC(cinfo);		/* do before skip_input_data */
-  if (length > 0)
-    (*cinfo->src->skip_input_data) (cinfo, (long) length);
-
-  return TRUE;
-}
-
-#endif /* SAVE_MARKERS_SUPPORTED */
-
-
-METHODDEF(boolean)
-skip_variable (j_decompress_ptr cinfo)
-/* Skip over an unknown or uninteresting variable-length marker */
-{
-  INT32 length;
-  INPUT_VARS(cinfo);
-
-  INPUT_2BYTES(cinfo, length, return FALSE);
-  length -= 2;
-  
-  TRACEMS2(cinfo, 1, JTRC_MISC_MARKER, cinfo->unread_marker, (int) length);
-
-  INPUT_SYNC(cinfo);		/* do before skip_input_data */
-  if (length > 0)
-    (*cinfo->src->skip_input_data) (cinfo, (long) length);
-
-  return TRUE;
-}
-
-
-/*
- * Find the next JPEG marker, save it in cinfo->unread_marker.
- * Returns FALSE if had to suspend before reaching a marker;
- * in that case cinfo->unread_marker is unchanged.
- *
- * Note that the result might not be a valid marker code,
- * but it will never be 0 or FF.
- */
-
-LOCAL(boolean)
-next_marker (j_decompress_ptr cinfo)
-{
-  int c;
-  INPUT_VARS(cinfo);
-
-  for (;;) {
-    INPUT_BYTE(cinfo, c, return FALSE);
-    /* Skip any non-FF bytes.
-     * This may look a bit inefficient, but it will not occur in a valid file.
-     * We sync after each discarded byte so that a suspending data source
-     * can discard the byte from its buffer.
-     */
-    while (c != 0xFF) {
-      cinfo->marker->discarded_bytes++;
-      INPUT_SYNC(cinfo);
-      INPUT_BYTE(cinfo, c, return FALSE);
-    }
-    /* This loop swallows any duplicate FF bytes.  Extra FFs are legal as
-     * pad bytes, so don't count them in discarded_bytes.  We assume there
-     * will not be so many consecutive FF bytes as to overflow a suspending
-     * data source's input buffer.
-     */
-    do {
-      INPUT_BYTE(cinfo, c, return FALSE);
-    } while (c == 0xFF);
-    if (c != 0)
-      break;			/* found a valid marker, exit loop */
-    /* Reach here if we found a stuffed-zero data sequence (FF/00).
-     * Discard it and loop back to try again.
-     */
-    cinfo->marker->discarded_bytes += 2;
-    INPUT_SYNC(cinfo);
-  }
-
-  if (cinfo->marker->discarded_bytes != 0) {
-    WARNMS2(cinfo, JWRN_EXTRANEOUS_DATA, cinfo->marker->discarded_bytes, c);
-    cinfo->marker->discarded_bytes = 0;
-  }
-
-  cinfo->unread_marker = c;
-
-  INPUT_SYNC(cinfo);
-  return TRUE;
-}
-
-
-LOCAL(boolean)
-first_marker (j_decompress_ptr cinfo)
-/* Like next_marker, but used to obtain the initial SOI marker. */
-/* For this marker, we do not allow preceding garbage or fill; otherwise,
- * we might well scan an entire input file before realizing it ain't JPEG.
- * If an application wants to process non-JFIF files, it must seek to the
- * SOI before calling the JPEG library.
- */
-{
-  int c, c2;
-  INPUT_VARS(cinfo);
-
-  INPUT_BYTE(cinfo, c, return FALSE);
-  INPUT_BYTE(cinfo, c2, return FALSE);
-  if (c != 0xFF || c2 != (int) M_SOI)
-    ERREXIT2(cinfo, JERR_NO_SOI, c, c2);
-
-  cinfo->unread_marker = c2;
-
-  INPUT_SYNC(cinfo);
-  return TRUE;
-}
-
-
-/*
- * Read markers until SOS or EOI.
- *
- * Returns same codes as are defined for jpeg_consume_input:
- * JPEG_SUSPENDED, JPEG_REACHED_SOS, or JPEG_REACHED_EOI.
- */
-
-METHODDEF(int)
-read_markers (j_decompress_ptr cinfo)
-{
-  /* Outer loop repeats once for each marker. */
-  for (;;) {
-    /* Collect the marker proper, unless we already did. */
-    /* NB: first_marker() enforces the requirement that SOI appear first. */
-    if (cinfo->unread_marker == 0) {
-      if (! cinfo->marker->saw_SOI) {
-	if (! first_marker(cinfo))
-	  return JPEG_SUSPENDED;
-      } else {
-	if (! next_marker(cinfo))
-	  return JPEG_SUSPENDED;
-      }
-    }
-    /* At this point cinfo->unread_marker contains the marker code and the
-     * input point is just past the marker proper, but before any parameters.
-     * A suspension will cause us to return with this state still true.
-     */
-    switch (cinfo->unread_marker) {
-    case M_SOI:
-      if (! get_soi(cinfo))
-	return JPEG_SUSPENDED;
-      break;
-
-    case M_SOF0:		/* Baseline */
-    case M_SOF1:		/* Extended sequential, Huffman */
-      if (! get_sof(cinfo, FALSE, FALSE))
-	return JPEG_SUSPENDED;
-      break;
-
-    case M_SOF2:		/* Progressive, Huffman */
-      if (! get_sof(cinfo, TRUE, FALSE))
-	return JPEG_SUSPENDED;
-      break;
-
-    case M_SOF9:		/* Extended sequential, arithmetic */
-      if (! get_sof(cinfo, FALSE, TRUE))
-	return JPEG_SUSPENDED;
-      break;
-
-    case M_SOF10:		/* Progressive, arithmetic */
-      if (! get_sof(cinfo, TRUE, TRUE))
-	return JPEG_SUSPENDED;
-      break;
-
-    /* Currently unsupported SOFn types */
-    case M_SOF3:		/* Lossless, Huffman */
-    case M_SOF5:		/* Differential sequential, Huffman */
-    case M_SOF6:		/* Differential progressive, Huffman */
-    case M_SOF7:		/* Differential lossless, Huffman */
-    case M_JPG:			/* Reserved for JPEG extensions */
-    case M_SOF11:		/* Lossless, arithmetic */
-    case M_SOF13:		/* Differential sequential, arithmetic */
-    case M_SOF14:		/* Differential progressive, arithmetic */
-    case M_SOF15:		/* Differential lossless, arithmetic */
-      ERREXIT1(cinfo, JERR_SOF_UNSUPPORTED, cinfo->unread_marker);
-      break;
-
-    case M_SOS:
-      if (! get_sos(cinfo))
-	return JPEG_SUSPENDED;
-      cinfo->unread_marker = 0;	/* processed the marker */
-      return JPEG_REACHED_SOS;
-    
-    case M_EOI:
-      TRACEMS(cinfo, 1, JTRC_EOI);
-      cinfo->unread_marker = 0;	/* processed the marker */
-      return JPEG_REACHED_EOI;
-      
-    case M_DAC:
-      if (! get_dac(cinfo))
-	return JPEG_SUSPENDED;
-      break;
-      
-    case M_DHT:
-      if (! get_dht(cinfo))
-	return JPEG_SUSPENDED;
-      break;
-      
-    case M_DQT:
-      if (! get_dqt(cinfo))
-	return JPEG_SUSPENDED;
-      break;
-      
-    case M_DRI:
-      if (! get_dri(cinfo))
-	return JPEG_SUSPENDED;
-      break;
-      
-    case M_APP0:
-    case M_APP1:
-    case M_APP2:
-    case M_APP3:
-    case M_APP4:
-    case M_APP5:
-    case M_APP6:
-    case M_APP7:
-    case M_APP8:
-    case M_APP9:
-    case M_APP10:
-    case M_APP11:
-    case M_APP12:
-    case M_APP13:
-    case M_APP14:
-    case M_APP15:
-      if (! (*((my_marker_ptr) cinfo->marker)->process_APPn[
-		cinfo->unread_marker - (int) M_APP0]) (cinfo))
-	return JPEG_SUSPENDED;
-      break;
-      
-    case M_COM:
-      if (! (*((my_marker_ptr) cinfo->marker)->process_COM) (cinfo))
-	return JPEG_SUSPENDED;
-      break;
-
-    case M_RST0:		/* these are all parameterless */
-    case M_RST1:
-    case M_RST2:
-    case M_RST3:
-    case M_RST4:
-    case M_RST5:
-    case M_RST6:
-    case M_RST7:
-    case M_TEM:
-      TRACEMS1(cinfo, 1, JTRC_PARMLESS_MARKER, cinfo->unread_marker);
-      break;
-
-    case M_DNL:			/* Ignore DNL ... perhaps the wrong thing */
-      if (! skip_variable(cinfo))
-	return JPEG_SUSPENDED;
-      break;
-
-    default:			/* must be DHP, EXP, JPGn, or RESn */
-      /* For now, we treat the reserved markers as fatal errors since they are
-       * likely to be used to signal incompatible JPEG Part 3 extensions.
-       * Once the JPEG 3 version-number marker is well defined, this code
-       * ought to change!
-       */
-      ERREXIT1(cinfo, JERR_UNKNOWN_MARKER, cinfo->unread_marker);
-      break;
-    }
-    /* Successfully processed marker, so reset state variable */
-    cinfo->unread_marker = 0;
-  } /* end loop */
-}
-
-
-/*
- * Read a restart marker, which is expected to appear next in the datastream;
- * if the marker is not there, take appropriate recovery action.
- * Returns FALSE if suspension is required.
- *
- * This is called by the entropy decoder after it has read an appropriate
- * number of MCUs.  cinfo->unread_marker may be nonzero if the entropy decoder
- * has already read a marker from the data source.  Under normal conditions
- * cinfo->unread_marker will be reset to 0 before returning; if not reset,
- * it holds a marker which the decoder will be unable to read past.
- */
-
-METHODDEF(boolean)
-read_restart_marker (j_decompress_ptr cinfo)
-{
-  /* Obtain a marker unless we already did. */
-  /* Note that next_marker will complain if it skips any data. */
-  if (cinfo->unread_marker == 0) {
-    if (! next_marker(cinfo))
-      return FALSE;
-  }
-
-  if (cinfo->unread_marker ==
-      ((int) M_RST0 + cinfo->marker->next_restart_num)) {
-    /* Normal case --- swallow the marker and let entropy decoder continue */
-    TRACEMS1(cinfo, 3, JTRC_RST, cinfo->marker->next_restart_num);
-    cinfo->unread_marker = 0;
-  } else {
-    /* Uh-oh, the restart markers have been messed up. */
-    /* Let the data source manager determine how to resync. */
-    if (! (*cinfo->src->resync_to_restart) (cinfo,
-					    cinfo->marker->next_restart_num))
-      return FALSE;
-  }
-
-  /* Update next-restart state */
-  cinfo->marker->next_restart_num = (cinfo->marker->next_restart_num + 1) & 7;
-
-  return TRUE;
-}
-
-
-/*
- * This is the default resync_to_restart method for data source managers
- * to use if they don't have any better approach.  Some data source managers
- * may be able to back up, or may have additional knowledge about the data
- * which permits a more intelligent recovery strategy; such managers would
- * presumably supply their own resync method.
- *
- * read_restart_marker calls resync_to_restart if it finds a marker other than
- * the restart marker it was expecting.  (This code is *not* used unless
- * a nonzero restart interval has been declared.)  cinfo->unread_marker is
- * the marker code actually found (might be anything, except 0 or FF).
- * The desired restart marker number (0..7) is passed as a parameter.
- * This routine is supposed to apply whatever error recovery strategy seems
- * appropriate in order to position the input stream to the next data segment.
- * Note that cinfo->unread_marker is treated as a marker appearing before
- * the current data-source input point; usually it should be reset to zero
- * before returning.
- * Returns FALSE if suspension is required.
- *
- * This implementation is substantially constrained by wanting to treat the
- * input as a data stream; this means we can't back up.  Therefore, we have
- * only the following actions to work with:
- *   1. Simply discard the marker and let the entropy decoder resume at next
- *      byte of file.
- *   2. Read forward until we find another marker, discarding intervening
- *      data.  (In theory we could look ahead within the current bufferload,
- *      without having to discard data if we don't find the desired marker.
- *      This idea is not implemented here, in part because it makes behavior
- *      dependent on buffer size and chance buffer-boundary positions.)
- *   3. Leave the marker unread (by failing to zero cinfo->unread_marker).
- *      This will cause the entropy decoder to process an empty data segment,
- *      inserting dummy zeroes, and then we will reprocess the marker.
- *
- * #2 is appropriate if we think the desired marker lies ahead, while #3 is
- * appropriate if the found marker is a future restart marker (indicating
- * that we have missed the desired restart marker, probably because it got
- * corrupted).
- * We apply #2 or #3 if the found marker is a restart marker no more than
- * two counts behind or ahead of the expected one.  We also apply #2 if the
- * found marker is not a legal JPEG marker code (it's certainly bogus data).
- * If the found marker is a restart marker more than 2 counts away, we do #1
- * (too much risk that the marker is erroneous; with luck we will be able to
- * resync at some future point).
- * For any valid non-restart JPEG marker, we apply #3.  This keeps us from
- * overrunning the end of a scan.  An implementation limited to single-scan
- * files might find it better to apply #2 for markers other than EOI, since
- * any other marker would have to be bogus data in that case.
- */
-
-GLOBAL(boolean)
-jpeg_resync_to_restart (j_decompress_ptr cinfo, int desired)
-{
-  int marker = cinfo->unread_marker;
-  int action = 1;
-  
-  /* Always put up a warning. */
-  WARNMS2(cinfo, JWRN_MUST_RESYNC, marker, desired);
-  
-  /* Outer loop handles repeated decision after scanning forward. */
-  for (;;) {
-    if (marker < (int) M_SOF0)
-      action = 2;		/* invalid marker */
-    else if (marker < (int) M_RST0 || marker > (int) M_RST7)
-      action = 3;		/* valid non-restart marker */
-    else {
-      if (marker == ((int) M_RST0 + ((desired+1) & 7)) ||
-	  marker == ((int) M_RST0 + ((desired+2) & 7)))
-	action = 3;		/* one of the next two expected restarts */
-      else if (marker == ((int) M_RST0 + ((desired-1) & 7)) ||
-	       marker == ((int) M_RST0 + ((desired-2) & 7)))
-	action = 2;		/* a prior restart, so advance */
-      else
-	action = 1;		/* desired restart or too far away */
-    }
-    TRACEMS2(cinfo, 4, JTRC_RECOVERY_ACTION, marker, action);
-    switch (action) {
-    case 1:
-      /* Discard marker and let entropy decoder resume processing. */
-      cinfo->unread_marker = 0;
-      return TRUE;
-    case 2:
-      /* Scan to the next marker, and repeat the decision loop. */
-      if (! next_marker(cinfo))
-	return FALSE;
-      marker = cinfo->unread_marker;
-      break;
-    case 3:
-      /* Return without advancing past this marker. */
-      /* Entropy decoder will be forced to process an empty segment. */
-      return TRUE;
-    }
-  } /* end loop */
-}
-
-
-/*
- * Reset marker processing state to begin a fresh datastream.
- */
-
-METHODDEF(void)
-reset_marker_reader (j_decompress_ptr cinfo)
-{
-  my_marker_ptr marker = (my_marker_ptr) cinfo->marker;
-
-  cinfo->comp_info = NULL;		/* until allocated by get_sof */
-  cinfo->input_scan_number = 0;		/* no SOS seen yet */
-  cinfo->unread_marker = 0;		/* no pending marker */
-  marker->pub.saw_SOI = FALSE;		/* set internal state too */
-  marker->pub.saw_SOF = FALSE;
-  marker->pub.discarded_bytes = 0;
-  marker->cur_marker = NULL;
-}
-
-
-/*
- * Initialize the marker reader module.
- * This is called only once, when the decompression object is created.
- */
-
-GLOBAL(void)
-jinit_marker_reader (j_decompress_ptr cinfo)
-{
-  my_marker_ptr marker;
-  int i;
-
-  /* Create subobject in permanent pool */
-  marker = (my_marker_ptr)
-    (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_PERMANENT,
-				SIZEOF(my_marker_reader));
-  cinfo->marker = (struct jpeg_marker_reader *) marker;
-  /* Initialize public method pointers */
-  marker->pub.reset_marker_reader = reset_marker_reader;
-  marker->pub.read_markers = read_markers;
-  marker->pub.read_restart_marker = read_restart_marker;
-  /* Initialize COM/APPn processing.
-   * By default, we examine and then discard APP0 and APP14,
-   * but simply discard COM and all other APPn.
-   */
-  marker->process_COM = skip_variable;
-  marker->length_limit_COM = 0;
-  for (i = 0; i < 16; i++) {
-    marker->process_APPn[i] = skip_variable;
-    marker->length_limit_APPn[i] = 0;
-  }
-  marker->process_APPn[0] = get_interesting_appn;
-  marker->process_APPn[14] = get_interesting_appn;
-  /* Reset marker processing state */
-  reset_marker_reader(cinfo);
-}
-
-
-/*
- * Control saving of COM and APPn markers into marker_list.
- */
-
-#ifdef SAVE_MARKERS_SUPPORTED
-
-GLOBAL(void)
-jpeg_save_markers (j_decompress_ptr cinfo, int marker_code,
-		   unsigned int length_limit)
-{
-  my_marker_ptr marker = (my_marker_ptr) cinfo->marker;
-  long maxlength;
-  jpeg_marker_parser_method processor;
-
-  /* Length limit mustn't be larger than what we can allocate
-   * (should only be a concern in a 16-bit environment).
-   */
-  maxlength = cinfo->mem->max_alloc_chunk - SIZEOF(struct jpeg_marker_struct);
-  if (((long) length_limit) > maxlength)
-    length_limit = (unsigned int) maxlength;
-
-  /* Choose processor routine to use.
-   * APP0/APP14 have special requirements.
-   */
-  if (length_limit) {
-    processor = save_marker;
-    /* If saving APP0/APP14, save at least enough for our internal use. */
-    if (marker_code == (int) M_APP0 && length_limit < APP0_DATA_LEN)
-      length_limit = APP0_DATA_LEN;
-    else if (marker_code == (int) M_APP14 && length_limit < APP14_DATA_LEN)
-      length_limit = APP14_DATA_LEN;
-  } else {
-    processor = skip_variable;
-    /* If discarding APP0/APP14, use our regular on-the-fly processor. */
-    if (marker_code == (int) M_APP0 || marker_code == (int) M_APP14)
-      processor = get_interesting_appn;
-  }
-
-  if (marker_code == (int) M_COM) {
-    marker->process_COM = processor;
-    marker->length_limit_COM = length_limit;
-  } else if (marker_code >= (int) M_APP0 && marker_code <= (int) M_APP15) {
-    marker->process_APPn[marker_code - (int) M_APP0] = processor;
-    marker->length_limit_APPn[marker_code - (int) M_APP0] = length_limit;
-  } else
-    ERREXIT1(cinfo, JERR_UNKNOWN_MARKER, marker_code);
-}
-
-#endif /* SAVE_MARKERS_SUPPORTED */
-
-
-/*
- * Install a special processing method for COM or APPn markers.
- */
-
-GLOBAL(void)
-jpeg_set_marker_processor (j_decompress_ptr cinfo, int marker_code,
-			   jpeg_marker_parser_method routine)
-{
-  my_marker_ptr marker = (my_marker_ptr) cinfo->marker;
-
-  if (marker_code == (int) M_COM)
-    marker->process_COM = routine;
-  else if (marker_code >= (int) M_APP0 && marker_code <= (int) M_APP15)
-    marker->process_APPn[marker_code - (int) M_APP0] = routine;
-  else
-    ERREXIT1(cinfo, JERR_UNKNOWN_MARKER, marker_code);
-}
diff --git a/src/libjpeg/jdmaster.c b/src/libjpeg/jdmaster.c
deleted file mode 100644
index eda4b3f..0000000
--- a/src/libjpeg/jdmaster.c
+++ /dev/null
@@ -1,557 +0,0 @@
-/*
- * jdmaster.c
- *
- * Copyright (C) 1991-1997, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains master control logic for the JPEG decompressor.
- * These routines are concerned with selecting the modules to be executed
- * and with determining the number of passes and the work to be done in each
- * pass.
- */
-
-#define JPEG_INTERNALS
-#include "jinclude.h"
-#include "jpeglib.h"
-
-
-/* Private state */
-
-typedef struct {
-  struct jpeg_decomp_master pub; /* public fields */
-
-  int pass_number;		/* # of passes completed */
-
-  boolean using_merged_upsample; /* TRUE if using merged upsample/cconvert */
-
-  /* Saved references to initialized quantizer modules,
-   * in case we need to switch modes.
-   */
-  struct jpeg_color_quantizer * quantizer_1pass;
-  struct jpeg_color_quantizer * quantizer_2pass;
-} my_decomp_master;
-
-typedef my_decomp_master * my_master_ptr;
-
-
-/*
- * Determine whether merged upsample/color conversion should be used.
- * CRUCIAL: this must match the actual capabilities of jdmerge.c!
- */
-
-LOCAL(boolean)
-use_merged_upsample (j_decompress_ptr cinfo)
-{
-#ifdef UPSAMPLE_MERGING_SUPPORTED
-  /* Merging is the equivalent of plain box-filter upsampling */
-  if (cinfo->do_fancy_upsampling || cinfo->CCIR601_sampling)
-    return FALSE;
-  /* jdmerge.c only supports YCC=>RGB color conversion */
-  if (cinfo->jpeg_color_space != JCS_YCbCr || cinfo->num_components != 3 ||
-      cinfo->out_color_space != JCS_RGB ||
-      cinfo->out_color_components != RGB_PIXELSIZE)
-    return FALSE;
-  /* and it only handles 2h1v or 2h2v sampling ratios */
-  if (cinfo->comp_info[0].h_samp_factor != 2 ||
-      cinfo->comp_info[1].h_samp_factor != 1 ||
-      cinfo->comp_info[2].h_samp_factor != 1 ||
-      cinfo->comp_info[0].v_samp_factor >  2 ||
-      cinfo->comp_info[1].v_samp_factor != 1 ||
-      cinfo->comp_info[2].v_samp_factor != 1)
-    return FALSE;
-  /* furthermore, it doesn't work if we've scaled the IDCTs differently */
-  if (cinfo->comp_info[0].DCT_scaled_size != cinfo->min_DCT_scaled_size ||
-      cinfo->comp_info[1].DCT_scaled_size != cinfo->min_DCT_scaled_size ||
-      cinfo->comp_info[2].DCT_scaled_size != cinfo->min_DCT_scaled_size)
-    return FALSE;
-  /* ??? also need to test for upsample-time rescaling, when & if supported */
-  return TRUE;			/* by golly, it'll work... */
-#else
-  return FALSE;
-#endif
-}
-
-
-/*
- * Compute output image dimensions and related values.
- * NOTE: this is exported for possible use by application.
- * Hence it mustn't do anything that can't be done twice.
- * Also note that it may be called before the master module is initialized!
- */
-
-GLOBAL(void)
-jpeg_calc_output_dimensions (j_decompress_ptr cinfo)
-/* Do computations that are needed before master selection phase */
-{
-#ifdef IDCT_SCALING_SUPPORTED
-  int ci;
-  jpeg_component_info *compptr;
-#endif
-
-  /* Prevent application from calling me at wrong times */
-  if (cinfo->global_state != DSTATE_READY)
-    ERREXIT1(cinfo, JERR_BAD_STATE, cinfo->global_state);
-
-#ifdef IDCT_SCALING_SUPPORTED
-
-  /* Compute actual output image dimensions and DCT scaling choices. */
-  if (cinfo->scale_num * 8 <= cinfo->scale_denom) {
-    /* Provide 1/8 scaling */
-    cinfo->output_width = (JDIMENSION)
-      jdiv_round_up((long) cinfo->image_width, 8L);
-    cinfo->output_height = (JDIMENSION)
-      jdiv_round_up((long) cinfo->image_height, 8L);
-    cinfo->min_DCT_scaled_size = 1;
-  } else if (cinfo->scale_num * 4 <= cinfo->scale_denom) {
-    /* Provide 1/4 scaling */
-    cinfo->output_width = (JDIMENSION)
-      jdiv_round_up((long) cinfo->image_width, 4L);
-    cinfo->output_height = (JDIMENSION)
-      jdiv_round_up((long) cinfo->image_height, 4L);
-    cinfo->min_DCT_scaled_size = 2;
-  } else if (cinfo->scale_num * 2 <= cinfo->scale_denom) {
-    /* Provide 1/2 scaling */
-    cinfo->output_width = (JDIMENSION)
-      jdiv_round_up((long) cinfo->image_width, 2L);
-    cinfo->output_height = (JDIMENSION)
-      jdiv_round_up((long) cinfo->image_height, 2L);
-    cinfo->min_DCT_scaled_size = 4;
-  } else {
-    /* Provide 1/1 scaling */
-    cinfo->output_width = cinfo->image_width;
-    cinfo->output_height = cinfo->image_height;
-    cinfo->min_DCT_scaled_size = DCTSIZE;
-  }
-  /* In selecting the actual DCT scaling for each component, we try to
-   * scale up the chroma components via IDCT scaling rather than upsampling.
-   * This saves time if the upsampler gets to use 1:1 scaling.
-   * Note this code assumes that the supported DCT scalings are powers of 2.
-   */
-  for (ci = 0, compptr = cinfo->comp_info; ci < cinfo->num_components;
-       ci++, compptr++) {
-    int ssize = cinfo->min_DCT_scaled_size;
-    while (ssize < DCTSIZE &&
-	   (compptr->h_samp_factor * ssize * 2 <=
-	    cinfo->max_h_samp_factor * cinfo->min_DCT_scaled_size) &&
-	   (compptr->v_samp_factor * ssize * 2 <=
-	    cinfo->max_v_samp_factor * cinfo->min_DCT_scaled_size)) {
-      ssize = ssize * 2;
-    }
-    compptr->DCT_scaled_size = ssize;
-  }
-
-  /* Recompute downsampled dimensions of components;
-   * application needs to know these if using raw downsampled data.
-   */
-  for (ci = 0, compptr = cinfo->comp_info; ci < cinfo->num_components;
-       ci++, compptr++) {
-    /* Size in samples, after IDCT scaling */
-    compptr->downsampled_width = (JDIMENSION)
-      jdiv_round_up((long) cinfo->image_width *
-		    (long) (compptr->h_samp_factor * compptr->DCT_scaled_size),
-		    (long) (cinfo->max_h_samp_factor * DCTSIZE));
-    compptr->downsampled_height = (JDIMENSION)
-      jdiv_round_up((long) cinfo->image_height *
-		    (long) (compptr->v_samp_factor * compptr->DCT_scaled_size),
-		    (long) (cinfo->max_v_samp_factor * DCTSIZE));
-  }
-
-#else /* !IDCT_SCALING_SUPPORTED */
-
-  /* Hardwire it to "no scaling" */
-  cinfo->output_width = cinfo->image_width;
-  cinfo->output_height = cinfo->image_height;
-  /* jdinput.c has already initialized DCT_scaled_size to DCTSIZE,
-   * and has computed unscaled downsampled_width and downsampled_height.
-   */
-
-#endif /* IDCT_SCALING_SUPPORTED */
-
-  /* Report number of components in selected colorspace. */
-  /* Probably this should be in the color conversion module... */
-  switch (cinfo->out_color_space) {
-  case JCS_GRAYSCALE:
-    cinfo->out_color_components = 1;
-    break;
-  case JCS_RGB:
-#if RGB_PIXELSIZE != 3
-    cinfo->out_color_components = RGB_PIXELSIZE;
-    break;
-#endif /* else share code with YCbCr */
-  case JCS_YCbCr:
-    cinfo->out_color_components = 3;
-    break;
-  case JCS_CMYK:
-  case JCS_YCCK:
-    cinfo->out_color_components = 4;
-    break;
-  default:			/* else must be same colorspace as in file */
-    cinfo->out_color_components = cinfo->num_components;
-    break;
-  }
-  cinfo->output_components = (cinfo->quantize_colors ? 1 :
-			      cinfo->out_color_components);
-
-  /* See if upsampler will want to emit more than one row at a time */
-  if (use_merged_upsample(cinfo))
-    cinfo->rec_outbuf_height = cinfo->max_v_samp_factor;
-  else
-    cinfo->rec_outbuf_height = 1;
-}
-
-
-/*
- * Several decompression processes need to range-limit values to the range
- * 0..MAXJSAMPLE; the input value may fall somewhat outside this range
- * due to noise introduced by quantization, roundoff error, etc.  These
- * processes are inner loops and need to be as fast as possible.  On most
- * machines, particularly CPUs with pipelines or instruction prefetch,
- * a (subscript-check-less) C table lookup
- *		x = sample_range_limit[x];
- * is faster than explicit tests
- *		if (x < 0)  x = 0;
- *		else if (x > MAXJSAMPLE)  x = MAXJSAMPLE;
- * These processes all use a common table prepared by the routine below.
- *
- * For most steps we can mathematically guarantee that the initial value
- * of x is within MAXJSAMPLE+1 of the legal range, so a table running from
- * -(MAXJSAMPLE+1) to 2*MAXJSAMPLE+1 is sufficient.  But for the initial
- * limiting step (just after the IDCT), a wildly out-of-range value is 
- * possible if the input data is corrupt.  To avoid any chance of indexing
- * off the end of memory and getting a bad-pointer trap, we perform the
- * post-IDCT limiting thus:
- *		x = range_limit[x & MASK];
- * where MASK is 2 bits wider than legal sample data, ie 10 bits for 8-bit
- * samples.  Under normal circumstances this is more than enough range and
- * a correct output will be generated; with bogus input data the mask will
- * cause wraparound, and we will safely generate a bogus-but-in-range output.
- * For the post-IDCT step, we want to convert the data from signed to unsigned
- * representation by adding CENTERJSAMPLE at the same time that we limit it.
- * So the post-IDCT limiting table ends up looking like this:
- *   CENTERJSAMPLE,CENTERJSAMPLE+1,...,MAXJSAMPLE,
- *   MAXJSAMPLE (repeat 2*(MAXJSAMPLE+1)-CENTERJSAMPLE times),
- *   0          (repeat 2*(MAXJSAMPLE+1)-CENTERJSAMPLE times),
- *   0,1,...,CENTERJSAMPLE-1
- * Negative inputs select values from the upper half of the table after
- * masking.
- *
- * We can save some space by overlapping the start of the post-IDCT table
- * with the simpler range limiting table.  The post-IDCT table begins at
- * sample_range_limit + CENTERJSAMPLE.
- *
- * Note that the table is allocated in near data space on PCs; it's small
- * enough and used often enough to justify this.
- */
-
-LOCAL(void)
-prepare_range_limit_table (j_decompress_ptr cinfo)
-/* Allocate and fill in the sample_range_limit table */
-{
-  JSAMPLE * table;
-  int i;
-
-  table = (JSAMPLE *)
-    (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
-		(5 * (MAXJSAMPLE+1) + CENTERJSAMPLE) * SIZEOF(JSAMPLE));
-  table += (MAXJSAMPLE+1);	/* allow negative subscripts of simple table */
-  cinfo->sample_range_limit = table;
-  /* First segment of "simple" table: limit[x] = 0 for x < 0 */
-  MEMZERO(table - (MAXJSAMPLE+1), (MAXJSAMPLE+1) * SIZEOF(JSAMPLE));
-  /* Main part of "simple" table: limit[x] = x */
-  for (i = 0; i <= MAXJSAMPLE; i++)
-    table[i] = (JSAMPLE) i;
-  table += CENTERJSAMPLE;	/* Point to where post-IDCT table starts */
-  /* End of simple table, rest of first half of post-IDCT table */
-  for (i = CENTERJSAMPLE; i < 2*(MAXJSAMPLE+1); i++)
-    table[i] = MAXJSAMPLE;
-  /* Second half of post-IDCT table */
-  MEMZERO(table + (2 * (MAXJSAMPLE+1)),
-	  (2 * (MAXJSAMPLE+1) - CENTERJSAMPLE) * SIZEOF(JSAMPLE));
-  MEMCOPY(table + (4 * (MAXJSAMPLE+1) - CENTERJSAMPLE),
-	  cinfo->sample_range_limit, CENTERJSAMPLE * SIZEOF(JSAMPLE));
-}
-
-
-/*
- * Master selection of decompression modules.
- * This is done once at jpeg_start_decompress time.  We determine
- * which modules will be used and give them appropriate initialization calls.
- * We also initialize the decompressor input side to begin consuming data.
- *
- * Since jpeg_read_header has finished, we know what is in the SOF
- * and (first) SOS markers.  We also have all the application parameter
- * settings.
- */
-
-LOCAL(void)
-master_selection (j_decompress_ptr cinfo)
-{
-  my_master_ptr master = (my_master_ptr) cinfo->master;
-  boolean use_c_buffer;
-  long samplesperrow;
-  JDIMENSION jd_samplesperrow;
-
-  /* Initialize dimensions and other stuff */
-  jpeg_calc_output_dimensions(cinfo);
-  prepare_range_limit_table(cinfo);
-
-  /* Width of an output scanline must be representable as JDIMENSION. */
-  samplesperrow = (long) cinfo->output_width * (long) cinfo->out_color_components;
-  jd_samplesperrow = (JDIMENSION) samplesperrow;
-  if ((long) jd_samplesperrow != samplesperrow)
-    ERREXIT(cinfo, JERR_WIDTH_OVERFLOW);
-
-  /* Initialize my private state */
-  master->pass_number = 0;
-  master->using_merged_upsample = use_merged_upsample(cinfo);
-
-  /* Color quantizer selection */
-  master->quantizer_1pass = NULL;
-  master->quantizer_2pass = NULL;
-  /* No mode changes if not using buffered-image mode. */
-  if (! cinfo->quantize_colors || ! cinfo->buffered_image) {
-    cinfo->enable_1pass_quant = FALSE;
-    cinfo->enable_external_quant = FALSE;
-    cinfo->enable_2pass_quant = FALSE;
-  }
-  if (cinfo->quantize_colors) {
-    if (cinfo->raw_data_out)
-      ERREXIT(cinfo, JERR_NOTIMPL);
-    /* 2-pass quantizer only works in 3-component color space. */
-    if (cinfo->out_color_components != 3) {
-      cinfo->enable_1pass_quant = TRUE;
-      cinfo->enable_external_quant = FALSE;
-      cinfo->enable_2pass_quant = FALSE;
-      cinfo->colormap = NULL;
-    } else if (cinfo->colormap != NULL) {
-      cinfo->enable_external_quant = TRUE;
-    } else if (cinfo->two_pass_quantize) {
-      cinfo->enable_2pass_quant = TRUE;
-    } else {
-      cinfo->enable_1pass_quant = TRUE;
-    }
-
-    if (cinfo->enable_1pass_quant) {
-#ifdef QUANT_1PASS_SUPPORTED
-      jinit_1pass_quantizer(cinfo);
-      master->quantizer_1pass = cinfo->cquantize;
-#else
-      ERREXIT(cinfo, JERR_NOT_COMPILED);
-#endif
-    }
-
-    /* We use the 2-pass code to map to external colormaps. */
-    if (cinfo->enable_2pass_quant || cinfo->enable_external_quant) {
-#ifdef QUANT_2PASS_SUPPORTED
-      jinit_2pass_quantizer(cinfo);
-      master->quantizer_2pass = cinfo->cquantize;
-#else
-      ERREXIT(cinfo, JERR_NOT_COMPILED);
-#endif
-    }
-    /* If both quantizers are initialized, the 2-pass one is left active;
-     * this is necessary for starting with quantization to an external map.
-     */
-  }
-
-  /* Post-processing: in particular, color conversion first */
-  if (! cinfo->raw_data_out) {
-    if (master->using_merged_upsample) {
-#ifdef UPSAMPLE_MERGING_SUPPORTED
-      jinit_merged_upsampler(cinfo); /* does color conversion too */
-#else
-      ERREXIT(cinfo, JERR_NOT_COMPILED);
-#endif
-    } else {
-      jinit_color_deconverter(cinfo);
-      jinit_upsampler(cinfo);
-    }
-    jinit_d_post_controller(cinfo, cinfo->enable_2pass_quant);
-  }
-  /* Inverse DCT */
-  jinit_inverse_dct(cinfo);
-  /* Entropy decoding: either Huffman or arithmetic coding. */
-  if (cinfo->arith_code) {
-    ERREXIT(cinfo, JERR_ARITH_NOTIMPL);
-  } else {
-    if (cinfo->progressive_mode) {
-#ifdef D_PROGRESSIVE_SUPPORTED
-      jinit_phuff_decoder(cinfo);
-#else
-      ERREXIT(cinfo, JERR_NOT_COMPILED);
-#endif
-    } else
-      jinit_huff_decoder(cinfo);
-  }
-
-  /* Initialize principal buffer controllers. */
-  use_c_buffer = cinfo->inputctl->has_multiple_scans || cinfo->buffered_image;
-  jinit_d_coef_controller(cinfo, use_c_buffer);
-
-  if (! cinfo->raw_data_out)
-    jinit_d_main_controller(cinfo, FALSE /* never need full buffer here */);
-
-  /* We can now tell the memory manager to allocate virtual arrays. */
-  (*cinfo->mem->realize_virt_arrays) ((j_common_ptr) cinfo);
-
-  /* Initialize input side of decompressor to consume first scan. */
-  (*cinfo->inputctl->start_input_pass) (cinfo);
-
-#ifdef D_MULTISCAN_FILES_SUPPORTED
-  /* If jpeg_start_decompress will read the whole file, initialize
-   * progress monitoring appropriately.  The input step is counted
-   * as one pass.
-   */
-  if (cinfo->progress != NULL && ! cinfo->buffered_image &&
-      cinfo->inputctl->has_multiple_scans) {
-    int nscans;
-    /* Estimate number of scans to set pass_limit. */
-    if (cinfo->progressive_mode) {
-      /* Arbitrarily estimate 2 interleaved DC scans + 3 AC scans/component. */
-      nscans = 2 + 3 * cinfo->num_components;
-    } else {
-      /* For a nonprogressive multiscan file, estimate 1 scan per component. */
-      nscans = cinfo->num_components;
-    }
-    cinfo->progress->pass_counter = 0L;
-    cinfo->progress->pass_limit = (long) cinfo->total_iMCU_rows * nscans;
-    cinfo->progress->completed_passes = 0;
-    cinfo->progress->total_passes = (cinfo->enable_2pass_quant ? 3 : 2);
-    /* Count the input pass as done */
-    master->pass_number++;
-  }
-#endif /* D_MULTISCAN_FILES_SUPPORTED */
-}
-
-
-/*
- * Per-pass setup.
- * This is called at the beginning of each output pass.  We determine which
- * modules will be active during this pass and give them appropriate
- * start_pass calls.  We also set is_dummy_pass to indicate whether this
- * is a "real" output pass or a dummy pass for color quantization.
- * (In the latter case, jdapistd.c will crank the pass to completion.)
- */
-
-METHODDEF(void)
-prepare_for_output_pass (j_decompress_ptr cinfo)
-{
-  my_master_ptr master = (my_master_ptr) cinfo->master;
-
-  if (master->pub.is_dummy_pass) {
-#ifdef QUANT_2PASS_SUPPORTED
-    /* Final pass of 2-pass quantization */
-    master->pub.is_dummy_pass = FALSE;
-    (*cinfo->cquantize->start_pass) (cinfo, FALSE);
-    (*cinfo->post->start_pass) (cinfo, JBUF_CRANK_DEST);
-    (*cinfo->main->start_pass) (cinfo, JBUF_CRANK_DEST);
-#else
-    ERREXIT(cinfo, JERR_NOT_COMPILED);
-#endif /* QUANT_2PASS_SUPPORTED */
-  } else {
-    if (cinfo->quantize_colors && cinfo->colormap == NULL) {
-      /* Select new quantization method */
-      if (cinfo->two_pass_quantize && cinfo->enable_2pass_quant) {
-	cinfo->cquantize = master->quantizer_2pass;
-	master->pub.is_dummy_pass = TRUE;
-      } else if (cinfo->enable_1pass_quant) {
-	cinfo->cquantize = master->quantizer_1pass;
-      } else {
-	ERREXIT(cinfo, JERR_MODE_CHANGE);
-      }
-    }
-    (*cinfo->idct->start_pass) (cinfo);
-    (*cinfo->coef->start_output_pass) (cinfo);
-    if (! cinfo->raw_data_out) {
-      if (! master->using_merged_upsample)
-	(*cinfo->cconvert->start_pass) (cinfo);
-      (*cinfo->upsample->start_pass) (cinfo);
-      if (cinfo->quantize_colors)
-	(*cinfo->cquantize->start_pass) (cinfo, master->pub.is_dummy_pass);
-      (*cinfo->post->start_pass) (cinfo,
-	    (master->pub.is_dummy_pass ? JBUF_SAVE_AND_PASS : JBUF_PASS_THRU));
-      (*cinfo->main->start_pass) (cinfo, JBUF_PASS_THRU);
-    }
-  }
-
-  /* Set up progress monitor's pass info if present */
-  if (cinfo->progress != NULL) {
-    cinfo->progress->completed_passes = master->pass_number;
-    cinfo->progress->total_passes = master->pass_number +
-				    (master->pub.is_dummy_pass ? 2 : 1);
-    /* In buffered-image mode, we assume one more output pass if EOI not
-     * yet reached, but no more passes if EOI has been reached.
-     */
-    if (cinfo->buffered_image && ! cinfo->inputctl->eoi_reached) {
-      cinfo->progress->total_passes += (cinfo->enable_2pass_quant ? 2 : 1);
-    }
-  }
-}
-
-
-/*
- * Finish up at end of an output pass.
- */
-
-METHODDEF(void)
-finish_output_pass (j_decompress_ptr cinfo)
-{
-  my_master_ptr master = (my_master_ptr) cinfo->master;
-
-  if (cinfo->quantize_colors)
-    (*cinfo->cquantize->finish_pass) (cinfo);
-  master->pass_number++;
-}
-
-
-#ifdef D_MULTISCAN_FILES_SUPPORTED
-
-/*
- * Switch to a new external colormap between output passes.
- */
-
-GLOBAL(void)
-jpeg_new_colormap (j_decompress_ptr cinfo)
-{
-  my_master_ptr master = (my_master_ptr) cinfo->master;
-
-  /* Prevent application from calling me at wrong times */
-  if (cinfo->global_state != DSTATE_BUFIMAGE)
-    ERREXIT1(cinfo, JERR_BAD_STATE, cinfo->global_state);
-
-  if (cinfo->quantize_colors && cinfo->enable_external_quant &&
-      cinfo->colormap != NULL) {
-    /* Select 2-pass quantizer for external colormap use */
-    cinfo->cquantize = master->quantizer_2pass;
-    /* Notify quantizer of colormap change */
-    (*cinfo->cquantize->new_color_map) (cinfo);
-    master->pub.is_dummy_pass = FALSE; /* just in case */
-  } else
-    ERREXIT(cinfo, JERR_MODE_CHANGE);
-}
-
-#endif /* D_MULTISCAN_FILES_SUPPORTED */
-
-
-/*
- * Initialize master decompression control and select active modules.
- * This is performed at the start of jpeg_start_decompress.
- */
-
-GLOBAL(void)
-jinit_master_decompress (j_decompress_ptr cinfo)
-{
-  my_master_ptr master;
-
-  master = (my_master_ptr)
-      (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
-				  SIZEOF(my_decomp_master));
-  cinfo->master = (struct jpeg_decomp_master *) master;
-  master->pub.prepare_for_output_pass = prepare_for_output_pass;
-  master->pub.finish_output_pass = finish_output_pass;
-
-  master->pub.is_dummy_pass = FALSE;
-
-  master_selection(cinfo);
-}
diff --git a/src/libjpeg/jdmerge.c b/src/libjpeg/jdmerge.c
deleted file mode 100644
index 9e3a595..0000000
--- a/src/libjpeg/jdmerge.c
+++ /dev/null
@@ -1,400 +0,0 @@
-/*
- * jdmerge.c
- *
- * Copyright (C) 1994-1996, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains code for merged upsampling/color conversion.
- *
- * This file combines functions from jdsample.c and jdcolor.c;
- * read those files first to understand what's going on.
- *
- * When the chroma components are to be upsampled by simple replication
- * (ie, box filtering), we can save some work in color conversion by
- * calculating all the output pixels corresponding to a pair of chroma
- * samples at one time.  In the conversion equations
- *	R = Y           + K1 * Cr
- *	G = Y + K2 * Cb + K3 * Cr
- *	B = Y + K4 * Cb
- * only the Y term varies among the group of pixels corresponding to a pair
- * of chroma samples, so the rest of the terms can be calculated just once.
- * At typical sampling ratios, this eliminates half or three-quarters of the
- * multiplications needed for color conversion.
- *
- * This file currently provides implementations for the following cases:
- *	YCbCr => RGB color conversion only.
- *	Sampling ratios of 2h1v or 2h2v.
- *	No scaling needed at upsample time.
- *	Corner-aligned (non-CCIR601) sampling alignment.
- * Other special cases could be added, but in most applications these are
- * the only common cases.  (For uncommon cases we fall back on the more
- * general code in jdsample.c and jdcolor.c.)
- */
-
-#define JPEG_INTERNALS
-#include "jinclude.h"
-#include "jpeglib.h"
-
-#ifdef UPSAMPLE_MERGING_SUPPORTED
-
-
-/* Private subobject */
-
-typedef struct {
-  struct jpeg_upsampler pub;	/* public fields */
-
-  /* Pointer to routine to do actual upsampling/conversion of one row group */
-  JMETHOD(void, upmethod, (j_decompress_ptr cinfo,
-			   JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
-			   JSAMPARRAY output_buf));
-
-  /* Private state for YCC->RGB conversion */
-  int * Cr_r_tab;		/* => table for Cr to R conversion */
-  int * Cb_b_tab;		/* => table for Cb to B conversion */
-  INT32 * Cr_g_tab;		/* => table for Cr to G conversion */
-  INT32 * Cb_g_tab;		/* => table for Cb to G conversion */
-
-  /* For 2:1 vertical sampling, we produce two output rows at a time.
-   * We need a "spare" row buffer to hold the second output row if the
-   * application provides just a one-row buffer; we also use the spare
-   * to discard the dummy last row if the image height is odd.
-   */
-  JSAMPROW spare_row;
-  boolean spare_full;		/* T if spare buffer is occupied */
-
-  JDIMENSION out_row_width;	/* samples per output row */
-  JDIMENSION rows_to_go;	/* counts rows remaining in image */
-} my_upsampler;
-
-typedef my_upsampler * my_upsample_ptr;
-
-#define SCALEBITS	16	/* speediest right-shift on some machines */
-#define ONE_HALF	((INT32) 1 << (SCALEBITS-1))
-#define FIX(x)		((INT32) ((x) * (1L<<SCALEBITS) + 0.5))
-
-
-/*
- * Initialize tables for YCC->RGB colorspace conversion.
- * This is taken directly from jdcolor.c; see that file for more info.
- */
-
-LOCAL(void)
-build_ycc_rgb_table (j_decompress_ptr cinfo)
-{
-  my_upsample_ptr upsample = (my_upsample_ptr) cinfo->upsample;
-  int i;
-  INT32 x;
-  SHIFT_TEMPS
-
-  upsample->Cr_r_tab = (int *)
-    (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
-				(MAXJSAMPLE+1) * SIZEOF(int));
-  upsample->Cb_b_tab = (int *)
-    (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
-				(MAXJSAMPLE+1) * SIZEOF(int));
-  upsample->Cr_g_tab = (INT32 *)
-    (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
-				(MAXJSAMPLE+1) * SIZEOF(INT32));
-  upsample->Cb_g_tab = (INT32 *)
-    (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
-				(MAXJSAMPLE+1) * SIZEOF(INT32));
-
-  for (i = 0, x = -CENTERJSAMPLE; i <= MAXJSAMPLE; i++, x++) {
-    /* i is the actual input pixel value, in the range 0..MAXJSAMPLE */
-    /* The Cb or Cr value we are thinking of is x = i - CENTERJSAMPLE */
-    /* Cr=>R value is nearest int to 1.40200 * x */
-    upsample->Cr_r_tab[i] = (int)
-		    RIGHT_SHIFT(FIX(1.40200) * x + ONE_HALF, SCALEBITS);
-    /* Cb=>B value is nearest int to 1.77200 * x */
-    upsample->Cb_b_tab[i] = (int)
-		    RIGHT_SHIFT(FIX(1.77200) * x + ONE_HALF, SCALEBITS);
-    /* Cr=>G value is scaled-up -0.71414 * x */
-    upsample->Cr_g_tab[i] = (- FIX(0.71414)) * x;
-    /* Cb=>G value is scaled-up -0.34414 * x */
-    /* We also add in ONE_HALF so that need not do it in inner loop */
-    upsample->Cb_g_tab[i] = (- FIX(0.34414)) * x + ONE_HALF;
-  }
-}
-
-
-/*
- * Initialize for an upsampling pass.
- */
-
-METHODDEF(void)
-start_pass_merged_upsample (j_decompress_ptr cinfo)
-{
-  my_upsample_ptr upsample = (my_upsample_ptr) cinfo->upsample;
-
-  /* Mark the spare buffer empty */
-  upsample->spare_full = FALSE;
-  /* Initialize total-height counter for detecting bottom of image */
-  upsample->rows_to_go = cinfo->output_height;
-}
-
-
-/*
- * Control routine to do upsampling (and color conversion).
- *
- * The control routine just handles the row buffering considerations.
- */
-
-METHODDEF(void)
-merged_2v_upsample (j_decompress_ptr cinfo,
-		    JSAMPIMAGE input_buf, JDIMENSION *in_row_group_ctr,
-		    JDIMENSION in_row_groups_avail,
-		    JSAMPARRAY output_buf, JDIMENSION *out_row_ctr,
-		    JDIMENSION out_rows_avail)
-/* 2:1 vertical sampling case: may need a spare row. */
-{
-  my_upsample_ptr upsample = (my_upsample_ptr) cinfo->upsample;
-  JSAMPROW work_ptrs[2];
-  JDIMENSION num_rows;		/* number of rows returned to caller */
-
-  if (upsample->spare_full) {
-    /* If we have a spare row saved from a previous cycle, just return it. */
-    jcopy_sample_rows(& upsample->spare_row, 0, output_buf + *out_row_ctr, 0,
-		      1, upsample->out_row_width);
-    num_rows = 1;
-    upsample->spare_full = FALSE;
-  } else {
-    /* Figure number of rows to return to caller. */
-    num_rows = 2;
-    /* Not more than the distance to the end of the image. */
-    if (num_rows > upsample->rows_to_go)
-      num_rows = upsample->rows_to_go;
-    /* And not more than what the client can accept: */
-    out_rows_avail -= *out_row_ctr;
-    if (num_rows > out_rows_avail)
-      num_rows = out_rows_avail;
-    /* Create output pointer array for upsampler. */
-    work_ptrs[0] = output_buf[*out_row_ctr];
-    if (num_rows > 1) {
-      work_ptrs[1] = output_buf[*out_row_ctr + 1];
-    } else {
-      work_ptrs[1] = upsample->spare_row;
-      upsample->spare_full = TRUE;
-    }
-    /* Now do the upsampling. */
-    (*upsample->upmethod) (cinfo, input_buf, *in_row_group_ctr, work_ptrs);
-  }
-
-  /* Adjust counts */
-  *out_row_ctr += num_rows;
-  upsample->rows_to_go -= num_rows;
-  /* When the buffer is emptied, declare this input row group consumed */
-  if (! upsample->spare_full)
-    (*in_row_group_ctr)++;
-}
-
-
-METHODDEF(void)
-merged_1v_upsample (j_decompress_ptr cinfo,
-		    JSAMPIMAGE input_buf, JDIMENSION *in_row_group_ctr,
-		    JDIMENSION in_row_groups_avail,
-		    JSAMPARRAY output_buf, JDIMENSION *out_row_ctr,
-		    JDIMENSION out_rows_avail)
-/* 1:1 vertical sampling case: much easier, never need a spare row. */
-{
-  my_upsample_ptr upsample = (my_upsample_ptr) cinfo->upsample;
-
-  /* Just do the upsampling. */
-  (*upsample->upmethod) (cinfo, input_buf, *in_row_group_ctr,
-			 output_buf + *out_row_ctr);
-  /* Adjust counts */
-  (*out_row_ctr)++;
-  (*in_row_group_ctr)++;
-}
-
-
-/*
- * These are the routines invoked by the control routines to do
- * the actual upsampling/conversion.  One row group is processed per call.
- *
- * Note: since we may be writing directly into application-supplied buffers,
- * we have to be honest about the output width; we can't assume the buffer
- * has been rounded up to an even width.
- */
-
-
-/*
- * Upsample and color convert for the case of 2:1 horizontal and 1:1 vertical.
- */
-
-METHODDEF(void)
-h2v1_merged_upsample (j_decompress_ptr cinfo,
-		      JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
-		      JSAMPARRAY output_buf)
-{
-  my_upsample_ptr upsample = (my_upsample_ptr) cinfo->upsample;
-  register int y, cred, cgreen, cblue;
-  int cb, cr;
-  register JSAMPROW outptr;
-  JSAMPROW inptr0, inptr1, inptr2;
-  JDIMENSION col;
-  /* copy these pointers into registers if possible */
-  register JSAMPLE * range_limit = cinfo->sample_range_limit;
-  int * Crrtab = upsample->Cr_r_tab;
-  int * Cbbtab = upsample->Cb_b_tab;
-  INT32 * Crgtab = upsample->Cr_g_tab;
-  INT32 * Cbgtab = upsample->Cb_g_tab;
-  SHIFT_TEMPS
-
-  inptr0 = input_buf[0][in_row_group_ctr];
-  inptr1 = input_buf[1][in_row_group_ctr];
-  inptr2 = input_buf[2][in_row_group_ctr];
-  outptr = output_buf[0];
-  /* Loop for each pair of output pixels */
-  for (col = cinfo->output_width >> 1; col > 0; col--) {
-    /* Do the chroma part of the calculation */
-    cb = GETJSAMPLE(*inptr1++);
-    cr = GETJSAMPLE(*inptr2++);
-    cred = Crrtab[cr];
-    cgreen = (int) RIGHT_SHIFT(Cbgtab[cb] + Crgtab[cr], SCALEBITS);
-    cblue = Cbbtab[cb];
-    /* Fetch 2 Y values and emit 2 pixels */
-    y  = GETJSAMPLE(*inptr0++);
-    outptr[RGB_RED] =   range_limit[y + cred];
-    outptr[RGB_GREEN] = range_limit[y + cgreen];
-    outptr[RGB_BLUE] =  range_limit[y + cblue];
-    outptr += RGB_PIXELSIZE;
-    y  = GETJSAMPLE(*inptr0++);
-    outptr[RGB_RED] =   range_limit[y + cred];
-    outptr[RGB_GREEN] = range_limit[y + cgreen];
-    outptr[RGB_BLUE] =  range_limit[y + cblue];
-    outptr += RGB_PIXELSIZE;
-  }
-  /* If image width is odd, do the last output column separately */
-  if (cinfo->output_width & 1) {
-    cb = GETJSAMPLE(*inptr1);
-    cr = GETJSAMPLE(*inptr2);
-    cred = Crrtab[cr];
-    cgreen = (int) RIGHT_SHIFT(Cbgtab[cb] + Crgtab[cr], SCALEBITS);
-    cblue = Cbbtab[cb];
-    y  = GETJSAMPLE(*inptr0);
-    outptr[RGB_RED] =   range_limit[y + cred];
-    outptr[RGB_GREEN] = range_limit[y + cgreen];
-    outptr[RGB_BLUE] =  range_limit[y + cblue];
-  }
-}
-
-
-/*
- * Upsample and color convert for the case of 2:1 horizontal and 2:1 vertical.
- */
-
-METHODDEF(void)
-h2v2_merged_upsample (j_decompress_ptr cinfo,
-		      JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
-		      JSAMPARRAY output_buf)
-{
-  my_upsample_ptr upsample = (my_upsample_ptr) cinfo->upsample;
-  register int y, cred, cgreen, cblue;
-  int cb, cr;
-  register JSAMPROW outptr0, outptr1;
-  JSAMPROW inptr00, inptr01, inptr1, inptr2;
-  JDIMENSION col;
-  /* copy these pointers into registers if possible */
-  register JSAMPLE * range_limit = cinfo->sample_range_limit;
-  int * Crrtab = upsample->Cr_r_tab;
-  int * Cbbtab = upsample->Cb_b_tab;
-  INT32 * Crgtab = upsample->Cr_g_tab;
-  INT32 * Cbgtab = upsample->Cb_g_tab;
-  SHIFT_TEMPS
-
-  inptr00 = input_buf[0][in_row_group_ctr*2];
-  inptr01 = input_buf[0][in_row_group_ctr*2 + 1];
-  inptr1 = input_buf[1][in_row_group_ctr];
-  inptr2 = input_buf[2][in_row_group_ctr];
-  outptr0 = output_buf[0];
-  outptr1 = output_buf[1];
-  /* Loop for each group of output pixels */
-  for (col = cinfo->output_width >> 1; col > 0; col--) {
-    /* Do the chroma part of the calculation */
-    cb = GETJSAMPLE(*inptr1++);
-    cr = GETJSAMPLE(*inptr2++);
-    cred = Crrtab[cr];
-    cgreen = (int) RIGHT_SHIFT(Cbgtab[cb] + Crgtab[cr], SCALEBITS);
-    cblue = Cbbtab[cb];
-    /* Fetch 4 Y values and emit 4 pixels */
-    y  = GETJSAMPLE(*inptr00++);
-    outptr0[RGB_RED] =   range_limit[y + cred];
-    outptr0[RGB_GREEN] = range_limit[y + cgreen];
-    outptr0[RGB_BLUE] =  range_limit[y + cblue];
-    outptr0 += RGB_PIXELSIZE;
-    y  = GETJSAMPLE(*inptr00++);
-    outptr0[RGB_RED] =   range_limit[y + cred];
-    outptr0[RGB_GREEN] = range_limit[y + cgreen];
-    outptr0[RGB_BLUE] =  range_limit[y + cblue];
-    outptr0 += RGB_PIXELSIZE;
-    y  = GETJSAMPLE(*inptr01++);
-    outptr1[RGB_RED] =   range_limit[y + cred];
-    outptr1[RGB_GREEN] = range_limit[y + cgreen];
-    outptr1[RGB_BLUE] =  range_limit[y + cblue];
-    outptr1 += RGB_PIXELSIZE;
-    y  = GETJSAMPLE(*inptr01++);
-    outptr1[RGB_RED] =   range_limit[y + cred];
-    outptr1[RGB_GREEN] = range_limit[y + cgreen];
-    outptr1[RGB_BLUE] =  range_limit[y + cblue];
-    outptr1 += RGB_PIXELSIZE;
-  }
-  /* If image width is odd, do the last output column separately */
-  if (cinfo->output_width & 1) {
-    cb = GETJSAMPLE(*inptr1);
-    cr = GETJSAMPLE(*inptr2);
-    cred = Crrtab[cr];
-    cgreen = (int) RIGHT_SHIFT(Cbgtab[cb] + Crgtab[cr], SCALEBITS);
-    cblue = Cbbtab[cb];
-    y  = GETJSAMPLE(*inptr00);
-    outptr0[RGB_RED] =   range_limit[y + cred];
-    outptr0[RGB_GREEN] = range_limit[y + cgreen];
-    outptr0[RGB_BLUE] =  range_limit[y + cblue];
-    y  = GETJSAMPLE(*inptr01);
-    outptr1[RGB_RED] =   range_limit[y + cred];
-    outptr1[RGB_GREEN] = range_limit[y + cgreen];
-    outptr1[RGB_BLUE] =  range_limit[y + cblue];
-  }
-}
-
-
-/*
- * Module initialization routine for merged upsampling/color conversion.
- *
- * NB: this is called under the conditions determined by use_merged_upsample()
- * in jdmaster.c.  That routine MUST correspond to the actual capabilities
- * of this module; no safety checks are made here.
- */
-
-GLOBAL(void)
-jinit_merged_upsampler (j_decompress_ptr cinfo)
-{
-  my_upsample_ptr upsample;
-
-  upsample = (my_upsample_ptr)
-    (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
-				SIZEOF(my_upsampler));
-  cinfo->upsample = (struct jpeg_upsampler *) upsample;
-  upsample->pub.start_pass = start_pass_merged_upsample;
-  upsample->pub.need_context_rows = FALSE;
-
-  upsample->out_row_width = cinfo->output_width * cinfo->out_color_components;
-
-  if (cinfo->max_v_samp_factor == 2) {
-    upsample->pub.upsample = merged_2v_upsample;
-    upsample->upmethod = h2v2_merged_upsample;
-    /* Allocate a spare row buffer */
-    upsample->spare_row = (JSAMPROW)
-      (*cinfo->mem->alloc_large) ((j_common_ptr) cinfo, JPOOL_IMAGE,
-		(size_t) (upsample->out_row_width * SIZEOF(JSAMPLE)));
-  } else {
-    upsample->pub.upsample = merged_1v_upsample;
-    upsample->upmethod = h2v1_merged_upsample;
-    /* No spare row needed */
-    upsample->spare_row = NULL;
-  }
-
-  build_ycc_rgb_table(cinfo);
-}
-
-#endif /* UPSAMPLE_MERGING_SUPPORTED */
diff --git a/src/libjpeg/jdphuff.c b/src/libjpeg/jdphuff.c
deleted file mode 100644
index 2404743..0000000
--- a/src/libjpeg/jdphuff.c
+++ /dev/null
@@ -1,668 +0,0 @@
-/*
- * jdphuff.c
- *
- * Copyright (C) 1995-1997, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains Huffman entropy decoding routines for progressive JPEG.
- *
- * Much of the complexity here has to do with supporting input suspension.
- * If the data source module demands suspension, we want to be able to back
- * up to the start of the current MCU.  To do this, we copy state variables
- * into local working storage, and update them back to the permanent
- * storage only upon successful completion of an MCU.
- */
-
-#define JPEG_INTERNALS
-#include "jinclude.h"
-#include "jpeglib.h"
-#include "jdhuff.h"		/* Declarations shared with jdhuff.c */
-
-
-#ifdef D_PROGRESSIVE_SUPPORTED
-
-/*
- * Expanded entropy decoder object for progressive Huffman decoding.
- *
- * The savable_state subrecord contains fields that change within an MCU,
- * but must not be updated permanently until we complete the MCU.
- */
-
-typedef struct {
-  unsigned int EOBRUN;			/* remaining EOBs in EOBRUN */
-  int last_dc_val[MAX_COMPS_IN_SCAN];	/* last DC coef for each component */
-} savable_state;
-
-/* This macro is to work around compilers with missing or broken
- * structure assignment.  You'll need to fix this code if you have
- * such a compiler and you change MAX_COMPS_IN_SCAN.
- */
-
-#ifndef NO_STRUCT_ASSIGN
-#define ASSIGN_STATE(dest,src)  ((dest) = (src))
-#else
-#if MAX_COMPS_IN_SCAN == 4
-#define ASSIGN_STATE(dest,src)  \
-	((dest).EOBRUN = (src).EOBRUN, \
-	 (dest).last_dc_val[0] = (src).last_dc_val[0], \
-	 (dest).last_dc_val[1] = (src).last_dc_val[1], \
-	 (dest).last_dc_val[2] = (src).last_dc_val[2], \
-	 (dest).last_dc_val[3] = (src).last_dc_val[3])
-#endif
-#endif
-
-
-typedef struct {
-  struct jpeg_entropy_decoder pub; /* public fields */
-
-  /* These fields are loaded into local variables at start of each MCU.
-   * In case of suspension, we exit WITHOUT updating them.
-   */
-  bitread_perm_state bitstate;	/* Bit buffer at start of MCU */
-  savable_state saved;		/* Other state at start of MCU */
-
-  /* These fields are NOT loaded into local working state. */
-  unsigned int restarts_to_go;	/* MCUs left in this restart interval */
-
-  /* Pointers to derived tables (these workspaces have image lifespan) */
-  d_derived_tbl * derived_tbls[NUM_HUFF_TBLS];
-
-  d_derived_tbl * ac_derived_tbl; /* active table during an AC scan */
-} phuff_entropy_decoder;
-
-typedef phuff_entropy_decoder * phuff_entropy_ptr;
-
-/* Forward declarations */
-METHODDEF(boolean) decode_mcu_DC_first JPP((j_decompress_ptr cinfo,
-					    JBLOCKROW *MCU_data));
-METHODDEF(boolean) decode_mcu_AC_first JPP((j_decompress_ptr cinfo,
-					    JBLOCKROW *MCU_data));
-METHODDEF(boolean) decode_mcu_DC_refine JPP((j_decompress_ptr cinfo,
-					     JBLOCKROW *MCU_data));
-METHODDEF(boolean) decode_mcu_AC_refine JPP((j_decompress_ptr cinfo,
-					     JBLOCKROW *MCU_data));
-
-
-/*
- * Initialize for a Huffman-compressed scan.
- */
-
-METHODDEF(void)
-start_pass_phuff_decoder (j_decompress_ptr cinfo)
-{
-  phuff_entropy_ptr entropy = (phuff_entropy_ptr) cinfo->entropy;
-  boolean is_DC_band, bad;
-  int ci, coefi, tbl;
-  int *coef_bit_ptr;
-  jpeg_component_info * compptr;
-
-  is_DC_band = (cinfo->Ss == 0);
-
-  /* Validate scan parameters */
-  bad = FALSE;
-  if (is_DC_band) {
-    if (cinfo->Se != 0)
-      bad = TRUE;
-  } else {
-    /* need not check Ss/Se < 0 since they came from unsigned bytes */
-    if (cinfo->Ss > cinfo->Se || cinfo->Se >= DCTSIZE2)
-      bad = TRUE;
-    /* AC scans may have only one component */
-    if (cinfo->comps_in_scan != 1)
-      bad = TRUE;
-  }
-  if (cinfo->Ah != 0) {
-    /* Successive approximation refinement scan: must have Al = Ah-1. */
-    if (cinfo->Al != cinfo->Ah-1)
-      bad = TRUE;
-  }
-  if (cinfo->Al > 13)		/* need not check for < 0 */
-    bad = TRUE;
-  /* Arguably the maximum Al value should be less than 13 for 8-bit precision,
-   * but the spec doesn't say so, and we try to be liberal about what we
-   * accept.  Note: large Al values could result in out-of-range DC
-   * coefficients during early scans, leading to bizarre displays due to
-   * overflows in the IDCT math.  But we won't crash.
-   */
-  if (bad)
-    ERREXIT4(cinfo, JERR_BAD_PROGRESSION,
-	     cinfo->Ss, cinfo->Se, cinfo->Ah, cinfo->Al);
-  /* Update progression status, and verify that scan order is legal.
-   * Note that inter-scan inconsistencies are treated as warnings
-   * not fatal errors ... not clear if this is right way to behave.
-   */
-  for (ci = 0; ci < cinfo->comps_in_scan; ci++) {
-    int cindex = cinfo->cur_comp_info[ci]->component_index;
-    coef_bit_ptr = & cinfo->coef_bits[cindex][0];
-    if (!is_DC_band && coef_bit_ptr[0] < 0) /* AC without prior DC scan */
-      WARNMS2(cinfo, JWRN_BOGUS_PROGRESSION, cindex, 0);
-    for (coefi = cinfo->Ss; coefi <= cinfo->Se; coefi++) {
-      int expected = (coef_bit_ptr[coefi] < 0) ? 0 : coef_bit_ptr[coefi];
-      if (cinfo->Ah != expected)
-	WARNMS2(cinfo, JWRN_BOGUS_PROGRESSION, cindex, coefi);
-      coef_bit_ptr[coefi] = cinfo->Al;
-    }
-  }
-
-  /* Select MCU decoding routine */
-  if (cinfo->Ah == 0) {
-    if (is_DC_band)
-      entropy->pub.decode_mcu = decode_mcu_DC_first;
-    else
-      entropy->pub.decode_mcu = decode_mcu_AC_first;
-  } else {
-    if (is_DC_band)
-      entropy->pub.decode_mcu = decode_mcu_DC_refine;
-    else
-      entropy->pub.decode_mcu = decode_mcu_AC_refine;
-  }
-
-  for (ci = 0; ci < cinfo->comps_in_scan; ci++) {
-    compptr = cinfo->cur_comp_info[ci];
-    /* Make sure requested tables are present, and compute derived tables.
-     * We may build same derived table more than once, but it's not expensive.
-     */
-    if (is_DC_band) {
-      if (cinfo->Ah == 0) {	/* DC refinement needs no table */
-	tbl = compptr->dc_tbl_no;
-	jpeg_make_d_derived_tbl(cinfo, TRUE, tbl,
-				& entropy->derived_tbls[tbl]);
-      }
-    } else {
-      tbl = compptr->ac_tbl_no;
-      jpeg_make_d_derived_tbl(cinfo, FALSE, tbl,
-			      & entropy->derived_tbls[tbl]);
-      /* remember the single active table */
-      entropy->ac_derived_tbl = entropy->derived_tbls[tbl];
-    }
-    /* Initialize DC predictions to 0 */
-    entropy->saved.last_dc_val[ci] = 0;
-  }
-
-  /* Initialize bitread state variables */
-  entropy->bitstate.bits_left = 0;
-  entropy->bitstate.get_buffer = 0; /* unnecessary, but keeps Purify quiet */
-  entropy->pub.insufficient_data = FALSE;
-
-  /* Initialize private state variables */
-  entropy->saved.EOBRUN = 0;
-
-  /* Initialize restart counter */
-  entropy->restarts_to_go = cinfo->restart_interval;
-}
-
-
-/*
- * Figure F.12: extend sign bit.
- * On some machines, a shift and add will be faster than a table lookup.
- */
-
-#ifdef AVOID_TABLES
-
-#define HUFF_EXTEND(x,s)  ((x) < (1<<((s)-1)) ? (x) + (((-1)<<(s)) + 1) : (x))
-
-#else
-
-#define HUFF_EXTEND(x,s)  ((x) < extend_test[s] ? (x) + extend_offset[s] : (x))
-
-static const int extend_test[16] =   /* entry n is 2**(n-1) */
-  { 0, 0x0001, 0x0002, 0x0004, 0x0008, 0x0010, 0x0020, 0x0040, 0x0080,
-    0x0100, 0x0200, 0x0400, 0x0800, 0x1000, 0x2000, 0x4000 };
-
-static const int extend_offset[16] = /* entry n is (-1 << n) + 1 */
-  { 0, ((-1)<<1) + 1, ((-1)<<2) + 1, ((-1)<<3) + 1, ((-1)<<4) + 1,
-    ((-1)<<5) + 1, ((-1)<<6) + 1, ((-1)<<7) + 1, ((-1)<<8) + 1,
-    ((-1)<<9) + 1, ((-1)<<10) + 1, ((-1)<<11) + 1, ((-1)<<12) + 1,
-    ((-1)<<13) + 1, ((-1)<<14) + 1, ((-1)<<15) + 1 };
-
-#endif /* AVOID_TABLES */
-
-
-/*
- * Check for a restart marker & resynchronize decoder.
- * Returns FALSE if must suspend.
- */
-
-LOCAL(boolean)
-process_restart (j_decompress_ptr cinfo)
-{
-  phuff_entropy_ptr entropy = (phuff_entropy_ptr) cinfo->entropy;
-  int ci;
-
-  /* Throw away any unused bits remaining in bit buffer; */
-  /* include any full bytes in next_marker's count of discarded bytes */
-  cinfo->marker->discarded_bytes += entropy->bitstate.bits_left / 8;
-  entropy->bitstate.bits_left = 0;
-
-  /* Advance past the RSTn marker */
-  if (! (*cinfo->marker->read_restart_marker) (cinfo))
-    return FALSE;
-
-  /* Re-initialize DC predictions to 0 */
-  for (ci = 0; ci < cinfo->comps_in_scan; ci++)
-    entropy->saved.last_dc_val[ci] = 0;
-  /* Re-init EOB run count, too */
-  entropy->saved.EOBRUN = 0;
-
-  /* Reset restart counter */
-  entropy->restarts_to_go = cinfo->restart_interval;
-
-  /* Reset out-of-data flag, unless read_restart_marker left us smack up
-   * against a marker.  In that case we will end up treating the next data
-   * segment as empty, and we can avoid producing bogus output pixels by
-   * leaving the flag set.
-   */
-  if (cinfo->unread_marker == 0)
-    entropy->pub.insufficient_data = FALSE;
-
-  return TRUE;
-}
-
-
-/*
- * Huffman MCU decoding.
- * Each of these routines decodes and returns one MCU's worth of
- * Huffman-compressed coefficients. 
- * The coefficients are reordered from zigzag order into natural array order,
- * but are not dequantized.
- *
- * The i'th block of the MCU is stored into the block pointed to by
- * MCU_data[i].  WE ASSUME THIS AREA IS INITIALLY ZEROED BY THE CALLER.
- *
- * We return FALSE if data source requested suspension.  In that case no
- * changes have been made to permanent state.  (Exception: some output
- * coefficients may already have been assigned.  This is harmless for
- * spectral selection, since we'll just re-assign them on the next call.
- * Successive approximation AC refinement has to be more careful, however.)
- */
-
-/*
- * MCU decoding for DC initial scan (either spectral selection,
- * or first pass of successive approximation).
- */
-
-METHODDEF(boolean)
-decode_mcu_DC_first (j_decompress_ptr cinfo, JBLOCKROW *MCU_data)
-{   
-  phuff_entropy_ptr entropy = (phuff_entropy_ptr) cinfo->entropy;
-  int Al = cinfo->Al;
-  register int s, r;
-  int blkn, ci;
-  JBLOCKROW block;
-  BITREAD_STATE_VARS;
-  savable_state state;
-  d_derived_tbl * tbl;
-  jpeg_component_info * compptr;
-
-  /* Process restart marker if needed; may have to suspend */
-  if (cinfo->restart_interval) {
-    if (entropy->restarts_to_go == 0)
-      if (! process_restart(cinfo))
-	return FALSE;
-  }
-
-  /* If we've run out of data, just leave the MCU set to zeroes.
-   * This way, we return uniform gray for the remainder of the segment.
-   */
-  if (! entropy->pub.insufficient_data) {
-
-    /* Load up working state */
-    BITREAD_LOAD_STATE(cinfo,entropy->bitstate);
-    ASSIGN_STATE(state, entropy->saved);
-
-    /* Outer loop handles each block in the MCU */
-
-    for (blkn = 0; blkn < cinfo->blocks_in_MCU; blkn++) {
-      block = MCU_data[blkn];
-      ci = cinfo->MCU_membership[blkn];
-      compptr = cinfo->cur_comp_info[ci];
-      tbl = entropy->derived_tbls[compptr->dc_tbl_no];
-
-      /* Decode a single block's worth of coefficients */
-
-      /* Section F.2.2.1: decode the DC coefficient difference */
-      HUFF_DECODE(s, br_state, tbl, return FALSE, label1);
-      if (s) {
-	CHECK_BIT_BUFFER(br_state, s, return FALSE);
-	r = GET_BITS(s);
-	s = HUFF_EXTEND(r, s);
-      }
-
-      /* Convert DC difference to actual value, update last_dc_val */
-      s += state.last_dc_val[ci];
-      state.last_dc_val[ci] = s;
-      /* Scale and output the coefficient (assumes jpeg_natural_order[0]=0) */
-      (*block)[0] = (JCOEF) (s << Al);
-    }
-
-    /* Completed MCU, so update state */
-    BITREAD_SAVE_STATE(cinfo,entropy->bitstate);
-    ASSIGN_STATE(entropy->saved, state);
-  }
-
-  /* Account for restart interval (no-op if not using restarts) */
-  entropy->restarts_to_go--;
-
-  return TRUE;
-}
-
-
-/*
- * MCU decoding for AC initial scan (either spectral selection,
- * or first pass of successive approximation).
- */
-
-METHODDEF(boolean)
-decode_mcu_AC_first (j_decompress_ptr cinfo, JBLOCKROW *MCU_data)
-{   
-  phuff_entropy_ptr entropy = (phuff_entropy_ptr) cinfo->entropy;
-  int Se = cinfo->Se;
-  int Al = cinfo->Al;
-  register int s, k, r;
-  unsigned int EOBRUN;
-  JBLOCKROW block;
-  BITREAD_STATE_VARS;
-  d_derived_tbl * tbl;
-
-  /* Process restart marker if needed; may have to suspend */
-  if (cinfo->restart_interval) {
-    if (entropy->restarts_to_go == 0)
-      if (! process_restart(cinfo))
-	return FALSE;
-  }
-
-  /* If we've run out of data, just leave the MCU set to zeroes.
-   * This way, we return uniform gray for the remainder of the segment.
-   */
-  if (! entropy->pub.insufficient_data) {
-
-    /* Load up working state.
-     * We can avoid loading/saving bitread state if in an EOB run.
-     */
-    EOBRUN = entropy->saved.EOBRUN;	/* only part of saved state we need */
-
-    /* There is always only one block per MCU */
-
-    if (EOBRUN > 0)		/* if it's a band of zeroes... */
-      EOBRUN--;			/* ...process it now (we do nothing) */
-    else {
-      BITREAD_LOAD_STATE(cinfo,entropy->bitstate);
-      block = MCU_data[0];
-      tbl = entropy->ac_derived_tbl;
-
-      for (k = cinfo->Ss; k <= Se; k++) {
-	HUFF_DECODE(s, br_state, tbl, return FALSE, label2);
-	r = s >> 4;
-	s &= 15;
-	if (s) {
-	  k += r;
-	  CHECK_BIT_BUFFER(br_state, s, return FALSE);
-	  r = GET_BITS(s);
-	  s = HUFF_EXTEND(r, s);
-	  /* Scale and output coefficient in natural (dezigzagged) order */
-	  (*block)[jpeg_natural_order[k]] = (JCOEF) (s << Al);
-	} else {
-	  if (r == 15) {	/* ZRL */
-	    k += 15;		/* skip 15 zeroes in band */
-	  } else {		/* EOBr, run length is 2^r + appended bits */
-	    EOBRUN = 1 << r;
-	    if (r) {		/* EOBr, r > 0 */
-	      CHECK_BIT_BUFFER(br_state, r, return FALSE);
-	      r = GET_BITS(r);
-	      EOBRUN += r;
-	    }
-	    EOBRUN--;		/* this band is processed at this moment */
-	    break;		/* force end-of-band */
-	  }
-	}
-      }
-
-      BITREAD_SAVE_STATE(cinfo,entropy->bitstate);
-    }
-
-    /* Completed MCU, so update state */
-    entropy->saved.EOBRUN = EOBRUN;	/* only part of saved state we need */
-  }
-
-  /* Account for restart interval (no-op if not using restarts) */
-  entropy->restarts_to_go--;
-
-  return TRUE;
-}
-
-
-/*
- * MCU decoding for DC successive approximation refinement scan.
- * Note: we assume such scans can be multi-component, although the spec
- * is not very clear on the point.
- */
-
-METHODDEF(boolean)
-decode_mcu_DC_refine (j_decompress_ptr cinfo, JBLOCKROW *MCU_data)
-{   
-  phuff_entropy_ptr entropy = (phuff_entropy_ptr) cinfo->entropy;
-  int p1 = 1 << cinfo->Al;	/* 1 in the bit position being coded */
-  int blkn;
-  JBLOCKROW block;
-  BITREAD_STATE_VARS;
-
-  /* Process restart marker if needed; may have to suspend */
-  if (cinfo->restart_interval) {
-    if (entropy->restarts_to_go == 0)
-      if (! process_restart(cinfo))
-	return FALSE;
-  }
-
-  /* Not worth the cycles to check insufficient_data here,
-   * since we will not change the data anyway if we read zeroes.
-   */
-
-  /* Load up working state */
-  BITREAD_LOAD_STATE(cinfo,entropy->bitstate);
-
-  /* Outer loop handles each block in the MCU */
-
-  for (blkn = 0; blkn < cinfo->blocks_in_MCU; blkn++) {
-    block = MCU_data[blkn];
-
-    /* Encoded data is simply the next bit of the two's-complement DC value */
-    CHECK_BIT_BUFFER(br_state, 1, return FALSE);
-    if (GET_BITS(1))
-      (*block)[0] |= p1;
-    /* Note: since we use |=, repeating the assignment later is safe */
-  }
-
-  /* Completed MCU, so update state */
-  BITREAD_SAVE_STATE(cinfo,entropy->bitstate);
-
-  /* Account for restart interval (no-op if not using restarts) */
-  entropy->restarts_to_go--;
-
-  return TRUE;
-}
-
-
-/*
- * MCU decoding for AC successive approximation refinement scan.
- */
-
-METHODDEF(boolean)
-decode_mcu_AC_refine (j_decompress_ptr cinfo, JBLOCKROW *MCU_data)
-{   
-  phuff_entropy_ptr entropy = (phuff_entropy_ptr) cinfo->entropy;
-  int Se = cinfo->Se;
-  int p1 = 1 << cinfo->Al;	/* 1 in the bit position being coded */
-  int m1 = (-1) << cinfo->Al;	/* -1 in the bit position being coded */
-  register int s, k, r;
-  unsigned int EOBRUN;
-  JBLOCKROW block;
-  JCOEFPTR thiscoef;
-  BITREAD_STATE_VARS;
-  d_derived_tbl * tbl;
-  int num_newnz;
-  int newnz_pos[DCTSIZE2];
-
-  /* Process restart marker if needed; may have to suspend */
-  if (cinfo->restart_interval) {
-    if (entropy->restarts_to_go == 0)
-      if (! process_restart(cinfo))
-	return FALSE;
-  }
-
-  /* If we've run out of data, don't modify the MCU.
-   */
-  if (! entropy->pub.insufficient_data) {
-
-    /* Load up working state */
-    BITREAD_LOAD_STATE(cinfo,entropy->bitstate);
-    EOBRUN = entropy->saved.EOBRUN; /* only part of saved state we need */
-
-    /* There is always only one block per MCU */
-    block = MCU_data[0];
-    tbl = entropy->ac_derived_tbl;
-
-    /* If we are forced to suspend, we must undo the assignments to any newly
-     * nonzero coefficients in the block, because otherwise we'd get confused
-     * next time about which coefficients were already nonzero.
-     * But we need not undo addition of bits to already-nonzero coefficients;
-     * instead, we can test the current bit to see if we already did it.
-     */
-    num_newnz = 0;
-
-    /* initialize coefficient loop counter to start of band */
-    k = cinfo->Ss;
-
-    if (EOBRUN == 0) {
-      for (; k <= Se; k++) {
-	HUFF_DECODE(s, br_state, tbl, goto undoit, label3);
-	r = s >> 4;
-	s &= 15;
-	if (s) {
-	  if (s != 1)		/* size of new coef should always be 1 */
-	    WARNMS(cinfo, JWRN_HUFF_BAD_CODE);
-	  CHECK_BIT_BUFFER(br_state, 1, goto undoit);
-	  if (GET_BITS(1))
-	    s = p1;		/* newly nonzero coef is positive */
-	  else
-	    s = m1;		/* newly nonzero coef is negative */
-	} else {
-	  if (r != 15) {
-	    EOBRUN = 1 << r;	/* EOBr, run length is 2^r + appended bits */
-	    if (r) {
-	      CHECK_BIT_BUFFER(br_state, r, goto undoit);
-	      r = GET_BITS(r);
-	      EOBRUN += r;
-	    }
-	    break;		/* rest of block is handled by EOB logic */
-	  }
-	  /* note s = 0 for processing ZRL */
-	}
-	/* Advance over already-nonzero coefs and r still-zero coefs,
-	 * appending correction bits to the nonzeroes.  A correction bit is 1
-	 * if the absolute value of the coefficient must be increased.
-	 */
-	do {
-	  thiscoef = *block + jpeg_natural_order[k];
-	  if (*thiscoef != 0) {
-	    CHECK_BIT_BUFFER(br_state, 1, goto undoit);
-	    if (GET_BITS(1)) {
-	      if ((*thiscoef & p1) == 0) { /* do nothing if already set it */
-		if (*thiscoef >= 0)
-		  *thiscoef += p1;
-		else
-		  *thiscoef += m1;
-	      }
-	    }
-	  } else {
-	    if (--r < 0)
-	      break;		/* reached target zero coefficient */
-	  }
-	  k++;
-	} while (k <= Se);
-	if (s) {
-	  int pos = jpeg_natural_order[k];
-	  /* Output newly nonzero coefficient */
-	  (*block)[pos] = (JCOEF) s;
-	  /* Remember its position in case we have to suspend */
-	  newnz_pos[num_newnz++] = pos;
-	}
-      }
-    }
-
-    if (EOBRUN > 0) {
-      /* Scan any remaining coefficient positions after the end-of-band
-       * (the last newly nonzero coefficient, if any).  Append a correction
-       * bit to each already-nonzero coefficient.  A correction bit is 1
-       * if the absolute value of the coefficient must be increased.
-       */
-      for (; k <= Se; k++) {
-	thiscoef = *block + jpeg_natural_order[k];
-	if (*thiscoef != 0) {
-	  CHECK_BIT_BUFFER(br_state, 1, goto undoit);
-	  if (GET_BITS(1)) {
-	    if ((*thiscoef & p1) == 0) { /* do nothing if already changed it */
-	      if (*thiscoef >= 0)
-		*thiscoef += p1;
-	      else
-		*thiscoef += m1;
-	    }
-	  }
-	}
-      }
-      /* Count one block completed in EOB run */
-      EOBRUN--;
-    }
-
-    /* Completed MCU, so update state */
-    BITREAD_SAVE_STATE(cinfo,entropy->bitstate);
-    entropy->saved.EOBRUN = EOBRUN; /* only part of saved state we need */
-  }
-
-  /* Account for restart interval (no-op if not using restarts) */
-  entropy->restarts_to_go--;
-
-  return TRUE;
-
-undoit:
-  /* Re-zero any output coefficients that we made newly nonzero */
-  while (num_newnz > 0)
-    (*block)[newnz_pos[--num_newnz]] = 0;
-
-  return FALSE;
-}
-
-
-/*
- * Module initialization routine for progressive Huffman entropy decoding.
- */
-
-GLOBAL(void)
-jinit_phuff_decoder (j_decompress_ptr cinfo)
-{
-  phuff_entropy_ptr entropy;
-  int *coef_bit_ptr;
-  int ci, i;
-
-  entropy = (phuff_entropy_ptr)
-    (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
-				SIZEOF(phuff_entropy_decoder));
-  cinfo->entropy = (struct jpeg_entropy_decoder *) entropy;
-  entropy->pub.start_pass = start_pass_phuff_decoder;
-
-  /* Mark derived tables unallocated */
-  for (i = 0; i < NUM_HUFF_TBLS; i++) {
-    entropy->derived_tbls[i] = NULL;
-  }
-
-  /* Create progression status table */
-  cinfo->coef_bits = (int (*)[DCTSIZE2])
-    (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
-				cinfo->num_components*DCTSIZE2*SIZEOF(int));
-  coef_bit_ptr = & cinfo->coef_bits[0][0];
-  for (ci = 0; ci < cinfo->num_components; ci++) 
-    for (i = 0; i < DCTSIZE2; i++)
-      *coef_bit_ptr++ = -1;
-}
-
-#endif /* D_PROGRESSIVE_SUPPORTED */
diff --git a/src/libjpeg/jdpostct.c b/src/libjpeg/jdpostct.c
deleted file mode 100644
index 7ba9eed..0000000
--- a/src/libjpeg/jdpostct.c
+++ /dev/null
@@ -1,290 +0,0 @@
-/*
- * jdpostct.c
- *
- * Copyright (C) 1994-1996, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains the decompression postprocessing controller.
- * This controller manages the upsampling, color conversion, and color
- * quantization/reduction steps; specifically, it controls the buffering
- * between upsample/color conversion and color quantization/reduction.
- *
- * If no color quantization/reduction is required, then this module has no
- * work to do, and it just hands off to the upsample/color conversion code.
- * An integrated upsample/convert/quantize process would replace this module
- * entirely.
- */
-
-#define JPEG_INTERNALS
-#include "jinclude.h"
-#include "jpeglib.h"
-
-
-/* Private buffer controller object */
-
-typedef struct {
-  struct jpeg_d_post_controller pub; /* public fields */
-
-  /* Color quantization source buffer: this holds output data from
-   * the upsample/color conversion step to be passed to the quantizer.
-   * For two-pass color quantization, we need a full-image buffer;
-   * for one-pass operation, a strip buffer is sufficient.
-   */
-  jvirt_sarray_ptr whole_image;	/* virtual array, or NULL if one-pass */
-  JSAMPARRAY buffer;		/* strip buffer, or current strip of virtual */
-  JDIMENSION strip_height;	/* buffer size in rows */
-  /* for two-pass mode only: */
-  JDIMENSION starting_row;	/* row # of first row in current strip */
-  JDIMENSION next_row;		/* index of next row to fill/empty in strip */
-} my_post_controller;
-
-typedef my_post_controller * my_post_ptr;
-
-
-/* Forward declarations */
-METHODDEF(void) post_process_1pass
-	JPP((j_decompress_ptr cinfo,
-	     JSAMPIMAGE input_buf, JDIMENSION *in_row_group_ctr,
-	     JDIMENSION in_row_groups_avail,
-	     JSAMPARRAY output_buf, JDIMENSION *out_row_ctr,
-	     JDIMENSION out_rows_avail));
-#ifdef QUANT_2PASS_SUPPORTED
-METHODDEF(void) post_process_prepass
-	JPP((j_decompress_ptr cinfo,
-	     JSAMPIMAGE input_buf, JDIMENSION *in_row_group_ctr,
-	     JDIMENSION in_row_groups_avail,
-	     JSAMPARRAY output_buf, JDIMENSION *out_row_ctr,
-	     JDIMENSION out_rows_avail));
-METHODDEF(void) post_process_2pass
-	JPP((j_decompress_ptr cinfo,
-	     JSAMPIMAGE input_buf, JDIMENSION *in_row_group_ctr,
-	     JDIMENSION in_row_groups_avail,
-	     JSAMPARRAY output_buf, JDIMENSION *out_row_ctr,
-	     JDIMENSION out_rows_avail));
-#endif
-
-
-/*
- * Initialize for a processing pass.
- */
-
-METHODDEF(void)
-start_pass_dpost (j_decompress_ptr cinfo, J_BUF_MODE pass_mode)
-{
-  my_post_ptr post = (my_post_ptr) cinfo->post;
-
-  switch (pass_mode) {
-  case JBUF_PASS_THRU:
-    if (cinfo->quantize_colors) {
-      /* Single-pass processing with color quantization. */
-      post->pub.post_process_data = post_process_1pass;
-      /* We could be doing buffered-image output before starting a 2-pass
-       * color quantization; in that case, jinit_d_post_controller did not
-       * allocate a strip buffer.  Use the virtual-array buffer as workspace.
-       */
-      if (post->buffer == NULL) {
-	post->buffer = (*cinfo->mem->access_virt_sarray)
-	  ((j_common_ptr) cinfo, post->whole_image,
-	   (JDIMENSION) 0, post->strip_height, TRUE);
-      }
-    } else {
-      /* For single-pass processing without color quantization,
-       * I have no work to do; just call the upsampler directly.
-       */
-      post->pub.post_process_data = cinfo->upsample->upsample;
-    }
-    break;
-#ifdef QUANT_2PASS_SUPPORTED
-  case JBUF_SAVE_AND_PASS:
-    /* First pass of 2-pass quantization */
-    if (post->whole_image == NULL)
-      ERREXIT(cinfo, JERR_BAD_BUFFER_MODE);
-    post->pub.post_process_data = post_process_prepass;
-    break;
-  case JBUF_CRANK_DEST:
-    /* Second pass of 2-pass quantization */
-    if (post->whole_image == NULL)
-      ERREXIT(cinfo, JERR_BAD_BUFFER_MODE);
-    post->pub.post_process_data = post_process_2pass;
-    break;
-#endif /* QUANT_2PASS_SUPPORTED */
-  default:
-    ERREXIT(cinfo, JERR_BAD_BUFFER_MODE);
-    break;
-  }
-  post->starting_row = post->next_row = 0;
-}
-
-
-/*
- * Process some data in the one-pass (strip buffer) case.
- * This is used for color precision reduction as well as one-pass quantization.
- */
-
-METHODDEF(void)
-post_process_1pass (j_decompress_ptr cinfo,
-		    JSAMPIMAGE input_buf, JDIMENSION *in_row_group_ctr,
-		    JDIMENSION in_row_groups_avail,
-		    JSAMPARRAY output_buf, JDIMENSION *out_row_ctr,
-		    JDIMENSION out_rows_avail)
-{
-  my_post_ptr post = (my_post_ptr) cinfo->post;
-  JDIMENSION num_rows, max_rows;
-
-  /* Fill the buffer, but not more than what we can dump out in one go. */
-  /* Note we rely on the upsampler to detect bottom of image. */
-  max_rows = out_rows_avail - *out_row_ctr;
-  if (max_rows > post->strip_height)
-    max_rows = post->strip_height;
-  num_rows = 0;
-  (*cinfo->upsample->upsample) (cinfo,
-		input_buf, in_row_group_ctr, in_row_groups_avail,
-		post->buffer, &num_rows, max_rows);
-  /* Quantize and emit data. */
-  (*cinfo->cquantize->color_quantize) (cinfo,
-		post->buffer, output_buf + *out_row_ctr, (int) num_rows);
-  *out_row_ctr += num_rows;
-}
-
-
-#ifdef QUANT_2PASS_SUPPORTED
-
-/*
- * Process some data in the first pass of 2-pass quantization.
- */
-
-METHODDEF(void)
-post_process_prepass (j_decompress_ptr cinfo,
-		      JSAMPIMAGE input_buf, JDIMENSION *in_row_group_ctr,
-		      JDIMENSION in_row_groups_avail,
-		      JSAMPARRAY output_buf, JDIMENSION *out_row_ctr,
-		      JDIMENSION out_rows_avail)
-{
-  my_post_ptr post = (my_post_ptr) cinfo->post;
-  JDIMENSION old_next_row, num_rows;
-
-  /* Reposition virtual buffer if at start of strip. */
-  if (post->next_row == 0) {
-    post->buffer = (*cinfo->mem->access_virt_sarray)
-	((j_common_ptr) cinfo, post->whole_image,
-	 post->starting_row, post->strip_height, TRUE);
-  }
-
-  /* Upsample some data (up to a strip height's worth). */
-  old_next_row = post->next_row;
-  (*cinfo->upsample->upsample) (cinfo,
-		input_buf, in_row_group_ctr, in_row_groups_avail,
-		post->buffer, &post->next_row, post->strip_height);
-
-  /* Allow quantizer to scan new data.  No data is emitted, */
-  /* but we advance out_row_ctr so outer loop can tell when we're done. */
-  if (post->next_row > old_next_row) {
-    num_rows = post->next_row - old_next_row;
-    (*cinfo->cquantize->color_quantize) (cinfo, post->buffer + old_next_row,
-					 (JSAMPARRAY) NULL, (int) num_rows);
-    *out_row_ctr += num_rows;
-  }
-
-  /* Advance if we filled the strip. */
-  if (post->next_row >= post->strip_height) {
-    post->starting_row += post->strip_height;
-    post->next_row = 0;
-  }
-}
-
-
-/*
- * Process some data in the second pass of 2-pass quantization.
- */
-
-METHODDEF(void)
-post_process_2pass (j_decompress_ptr cinfo,
-		    JSAMPIMAGE input_buf, JDIMENSION *in_row_group_ctr,
-		    JDIMENSION in_row_groups_avail,
-		    JSAMPARRAY output_buf, JDIMENSION *out_row_ctr,
-		    JDIMENSION out_rows_avail)
-{
-  my_post_ptr post = (my_post_ptr) cinfo->post;
-  JDIMENSION num_rows, max_rows;
-
-  /* Reposition virtual buffer if at start of strip. */
-  if (post->next_row == 0) {
-    post->buffer = (*cinfo->mem->access_virt_sarray)
-	((j_common_ptr) cinfo, post->whole_image,
-	 post->starting_row, post->strip_height, FALSE);
-  }
-
-  /* Determine number of rows to emit. */
-  num_rows = post->strip_height - post->next_row; /* available in strip */
-  max_rows = out_rows_avail - *out_row_ctr; /* available in output area */
-  if (num_rows > max_rows)
-    num_rows = max_rows;
-  /* We have to check bottom of image here, can't depend on upsampler. */
-  max_rows = cinfo->output_height - post->starting_row;
-  if (num_rows > max_rows)
-    num_rows = max_rows;
-
-  /* Quantize and emit data. */
-  (*cinfo->cquantize->color_quantize) (cinfo,
-		post->buffer + post->next_row, output_buf + *out_row_ctr,
-		(int) num_rows);
-  *out_row_ctr += num_rows;
-
-  /* Advance if we filled the strip. */
-  post->next_row += num_rows;
-  if (post->next_row >= post->strip_height) {
-    post->starting_row += post->strip_height;
-    post->next_row = 0;
-  }
-}
-
-#endif /* QUANT_2PASS_SUPPORTED */
-
-
-/*
- * Initialize postprocessing controller.
- */
-
-GLOBAL(void)
-jinit_d_post_controller (j_decompress_ptr cinfo, boolean need_full_buffer)
-{
-  my_post_ptr post;
-
-  post = (my_post_ptr)
-    (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
-				SIZEOF(my_post_controller));
-  cinfo->post = (struct jpeg_d_post_controller *) post;
-  post->pub.start_pass = start_pass_dpost;
-  post->whole_image = NULL;	/* flag for no virtual arrays */
-  post->buffer = NULL;		/* flag for no strip buffer */
-
-  /* Create the quantization buffer, if needed */
-  if (cinfo->quantize_colors) {
-    /* The buffer strip height is max_v_samp_factor, which is typically
-     * an efficient number of rows for upsampling to return.
-     * (In the presence of output rescaling, we might want to be smarter?)
-     */
-    post->strip_height = (JDIMENSION) cinfo->max_v_samp_factor;
-    if (need_full_buffer) {
-      /* Two-pass color quantization: need full-image storage. */
-      /* We round up the number of rows to a multiple of the strip height. */
-#ifdef QUANT_2PASS_SUPPORTED
-      post->whole_image = (*cinfo->mem->request_virt_sarray)
-	((j_common_ptr) cinfo, JPOOL_IMAGE, FALSE,
-	 cinfo->output_width * cinfo->out_color_components,
-	 (JDIMENSION) jround_up((long) cinfo->output_height,
-				(long) post->strip_height),
-	 post->strip_height);
-#else
-      ERREXIT(cinfo, JERR_BAD_BUFFER_MODE);
-#endif /* QUANT_2PASS_SUPPORTED */
-    } else {
-      /* One-pass color quantization: just make a strip buffer. */
-      post->buffer = (*cinfo->mem->alloc_sarray)
-	((j_common_ptr) cinfo, JPOOL_IMAGE,
-	 cinfo->output_width * cinfo->out_color_components,
-	 post->strip_height);
-    }
-  }
-}
diff --git a/src/libjpeg/jdsample.c b/src/libjpeg/jdsample.c
deleted file mode 100644
index e0d9040..0000000
--- a/src/libjpeg/jdsample.c
+++ /dev/null
@@ -1,478 +0,0 @@
-/*
- * jdsample.c
- *
- * Copyright (C) 1991-1996, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains upsampling routines.
- *
- * Upsampling input data is counted in "row groups".  A row group
- * is defined to be (v_samp_factor * DCT_scaled_size / min_DCT_scaled_size)
- * sample rows of each component.  Upsampling will normally produce
- * max_v_samp_factor pixel rows from each row group (but this could vary
- * if the upsampler is applying a scale factor of its own).
- *
- * An excellent reference for image resampling is
- *   Digital Image Warping, George Wolberg, 1990.
- *   Pub. by IEEE Computer Society Press, Los Alamitos, CA. ISBN 0-8186-8944-7.
- */
-
-#define JPEG_INTERNALS
-#include "jinclude.h"
-#include "jpeglib.h"
-
-
-/* Pointer to routine to upsample a single component */
-typedef JMETHOD(void, upsample1_ptr,
-		(j_decompress_ptr cinfo, jpeg_component_info * compptr,
-		 JSAMPARRAY input_data, JSAMPARRAY * output_data_ptr));
-
-/* Private subobject */
-
-typedef struct {
-  struct jpeg_upsampler pub;	/* public fields */
-
-  /* Color conversion buffer.  When using separate upsampling and color
-   * conversion steps, this buffer holds one upsampled row group until it
-   * has been color converted and output.
-   * Note: we do not allocate any storage for component(s) which are full-size,
-   * ie do not need rescaling.  The corresponding entry of color_buf[] is
-   * simply set to point to the input data array, thereby avoiding copying.
-   */
-  JSAMPARRAY color_buf[MAX_COMPONENTS];
-
-  /* Per-component upsampling method pointers */
-  upsample1_ptr methods[MAX_COMPONENTS];
-
-  int next_row_out;		/* counts rows emitted from color_buf */
-  JDIMENSION rows_to_go;	/* counts rows remaining in image */
-
-  /* Height of an input row group for each component. */
-  int rowgroup_height[MAX_COMPONENTS];
-
-  /* These arrays save pixel expansion factors so that int_expand need not
-   * recompute them each time.  They are unused for other upsampling methods.
-   */
-  UINT8 h_expand[MAX_COMPONENTS];
-  UINT8 v_expand[MAX_COMPONENTS];
-} my_upsampler;
-
-typedef my_upsampler * my_upsample_ptr;
-
-
-/*
- * Initialize for an upsampling pass.
- */
-
-METHODDEF(void)
-start_pass_upsample (j_decompress_ptr cinfo)
-{
-  my_upsample_ptr upsample = (my_upsample_ptr) cinfo->upsample;
-
-  /* Mark the conversion buffer empty */
-  upsample->next_row_out = cinfo->max_v_samp_factor;
-  /* Initialize total-height counter for detecting bottom of image */
-  upsample->rows_to_go = cinfo->output_height;
-}
-
-
-/*
- * Control routine to do upsampling (and color conversion).
- *
- * In this version we upsample each component independently.
- * We upsample one row group into the conversion buffer, then apply
- * color conversion a row at a time.
- */
-
-METHODDEF(void)
-sep_upsample (j_decompress_ptr cinfo,
-	      JSAMPIMAGE input_buf, JDIMENSION *in_row_group_ctr,
-	      JDIMENSION in_row_groups_avail,
-	      JSAMPARRAY output_buf, JDIMENSION *out_row_ctr,
-	      JDIMENSION out_rows_avail)
-{
-  my_upsample_ptr upsample = (my_upsample_ptr) cinfo->upsample;
-  int ci;
-  jpeg_component_info * compptr;
-  JDIMENSION num_rows;
-
-  /* Fill the conversion buffer, if it's empty */
-  if (upsample->next_row_out >= cinfo->max_v_samp_factor) {
-    for (ci = 0, compptr = cinfo->comp_info; ci < cinfo->num_components;
-	 ci++, compptr++) {
-      /* Invoke per-component upsample method.  Notice we pass a POINTER
-       * to color_buf[ci], so that fullsize_upsample can change it.
-       */
-      (*upsample->methods[ci]) (cinfo, compptr,
-	input_buf[ci] + (*in_row_group_ctr * upsample->rowgroup_height[ci]),
-	upsample->color_buf + ci);
-    }
-    upsample->next_row_out = 0;
-  }
-
-  /* Color-convert and emit rows */
-
-  /* How many we have in the buffer: */
-  num_rows = (JDIMENSION) (cinfo->max_v_samp_factor - upsample->next_row_out);
-  /* Not more than the distance to the end of the image.  Need this test
-   * in case the image height is not a multiple of max_v_samp_factor:
-   */
-  if (num_rows > upsample->rows_to_go) 
-    num_rows = upsample->rows_to_go;
-  /* And not more than what the client can accept: */
-  out_rows_avail -= *out_row_ctr;
-  if (num_rows > out_rows_avail)
-    num_rows = out_rows_avail;
-
-  (*cinfo->cconvert->color_convert) (cinfo, upsample->color_buf,
-				     (JDIMENSION) upsample->next_row_out,
-				     output_buf + *out_row_ctr,
-				     (int) num_rows);
-
-  /* Adjust counts */
-  *out_row_ctr += num_rows;
-  upsample->rows_to_go -= num_rows;
-  upsample->next_row_out += num_rows;
-  /* When the buffer is emptied, declare this input row group consumed */
-  if (upsample->next_row_out >= cinfo->max_v_samp_factor)
-    (*in_row_group_ctr)++;
-}
-
-
-/*
- * These are the routines invoked by sep_upsample to upsample pixel values
- * of a single component.  One row group is processed per call.
- */
-
-
-/*
- * For full-size components, we just make color_buf[ci] point at the
- * input buffer, and thus avoid copying any data.  Note that this is
- * safe only because sep_upsample doesn't declare the input row group
- * "consumed" until we are done color converting and emitting it.
- */
-
-METHODDEF(void)
-fullsize_upsample (j_decompress_ptr cinfo, jpeg_component_info * compptr,
-		   JSAMPARRAY input_data, JSAMPARRAY * output_data_ptr)
-{
-  *output_data_ptr = input_data;
-}
-
-
-/*
- * This is a no-op version used for "uninteresting" components.
- * These components will not be referenced by color conversion.
- */
-
-METHODDEF(void)
-noop_upsample (j_decompress_ptr cinfo, jpeg_component_info * compptr,
-	       JSAMPARRAY input_data, JSAMPARRAY * output_data_ptr)
-{
-  *output_data_ptr = NULL;	/* safety check */
-}
-
-
-/*
- * This version handles any integral sampling ratios.
- * This is not used for typical JPEG files, so it need not be fast.
- * Nor, for that matter, is it particularly accurate: the algorithm is
- * simple replication of the input pixel onto the corresponding output
- * pixels.  The hi-falutin sampling literature refers to this as a
- * "box filter".  A box filter tends to introduce visible artifacts,
- * so if you are actually going to use 3:1 or 4:1 sampling ratios
- * you would be well advised to improve this code.
- */
-
-METHODDEF(void)
-int_upsample (j_decompress_ptr cinfo, jpeg_component_info * compptr,
-	      JSAMPARRAY input_data, JSAMPARRAY * output_data_ptr)
-{
-  my_upsample_ptr upsample = (my_upsample_ptr) cinfo->upsample;
-  JSAMPARRAY output_data = *output_data_ptr;
-  register JSAMPROW inptr, outptr;
-  register JSAMPLE invalue;
-  register int h;
-  JSAMPROW outend;
-  int h_expand, v_expand;
-  int inrow, outrow;
-
-  h_expand = upsample->h_expand[compptr->component_index];
-  v_expand = upsample->v_expand[compptr->component_index];
-
-  inrow = outrow = 0;
-  while (outrow < cinfo->max_v_samp_factor) {
-    /* Generate one output row with proper horizontal expansion */
-    inptr = input_data[inrow];
-    outptr = output_data[outrow];
-    outend = outptr + cinfo->output_width;
-    while (outptr < outend) {
-      invalue = *inptr++;	/* don't need GETJSAMPLE() here */
-      for (h = h_expand; h > 0; h--) {
-	*outptr++ = invalue;
-      }
-    }
-    /* Generate any additional output rows by duplicating the first one */
-    if (v_expand > 1) {
-      jcopy_sample_rows(output_data, outrow, output_data, outrow+1,
-			v_expand-1, cinfo->output_width);
-    }
-    inrow++;
-    outrow += v_expand;
-  }
-}
-
-
-/*
- * Fast processing for the common case of 2:1 horizontal and 1:1 vertical.
- * It's still a box filter.
- */
-
-METHODDEF(void)
-h2v1_upsample (j_decompress_ptr cinfo, jpeg_component_info * compptr,
-	       JSAMPARRAY input_data, JSAMPARRAY * output_data_ptr)
-{
-  JSAMPARRAY output_data = *output_data_ptr;
-  register JSAMPROW inptr, outptr;
-  register JSAMPLE invalue;
-  JSAMPROW outend;
-  int inrow;
-
-  for (inrow = 0; inrow < cinfo->max_v_samp_factor; inrow++) {
-    inptr = input_data[inrow];
-    outptr = output_data[inrow];
-    outend = outptr + cinfo->output_width;
-    while (outptr < outend) {
-      invalue = *inptr++;	/* don't need GETJSAMPLE() here */
-      *outptr++ = invalue;
-      *outptr++ = invalue;
-    }
-  }
-}
-
-
-/*
- * Fast processing for the common case of 2:1 horizontal and 2:1 vertical.
- * It's still a box filter.
- */
-
-METHODDEF(void)
-h2v2_upsample (j_decompress_ptr cinfo, jpeg_component_info * compptr,
-	       JSAMPARRAY input_data, JSAMPARRAY * output_data_ptr)
-{
-  JSAMPARRAY output_data = *output_data_ptr;
-  register JSAMPROW inptr, outptr;
-  register JSAMPLE invalue;
-  JSAMPROW outend;
-  int inrow, outrow;
-
-  inrow = outrow = 0;
-  while (outrow < cinfo->max_v_samp_factor) {
-    inptr = input_data[inrow];
-    outptr = output_data[outrow];
-    outend = outptr + cinfo->output_width;
-    while (outptr < outend) {
-      invalue = *inptr++;	/* don't need GETJSAMPLE() here */
-      *outptr++ = invalue;
-      *outptr++ = invalue;
-    }
-    jcopy_sample_rows(output_data, outrow, output_data, outrow+1,
-		      1, cinfo->output_width);
-    inrow++;
-    outrow += 2;
-  }
-}
-
-
-/*
- * Fancy processing for the common case of 2:1 horizontal and 1:1 vertical.
- *
- * The upsampling algorithm is linear interpolation between pixel centers,
- * also known as a "triangle filter".  This is a good compromise between
- * speed and visual quality.  The centers of the output pixels are 1/4 and 3/4
- * of the way between input pixel centers.
- *
- * A note about the "bias" calculations: when rounding fractional values to
- * integer, we do not want to always round 0.5 up to the next integer.
- * If we did that, we'd introduce a noticeable bias towards larger values.
- * Instead, this code is arranged so that 0.5 will be rounded up or down at
- * alternate pixel locations (a simple ordered dither pattern).
- */
-
-METHODDEF(void)
-h2v1_fancy_upsample (j_decompress_ptr cinfo, jpeg_component_info * compptr,
-		     JSAMPARRAY input_data, JSAMPARRAY * output_data_ptr)
-{
-  JSAMPARRAY output_data = *output_data_ptr;
-  register JSAMPROW inptr, outptr;
-  register int invalue;
-  register JDIMENSION colctr;
-  int inrow;
-
-  for (inrow = 0; inrow < cinfo->max_v_samp_factor; inrow++) {
-    inptr = input_data[inrow];
-    outptr = output_data[inrow];
-    /* Special case for first column */
-    invalue = GETJSAMPLE(*inptr++);
-    *outptr++ = (JSAMPLE) invalue;
-    *outptr++ = (JSAMPLE) ((invalue * 3 + GETJSAMPLE(*inptr) + 2) >> 2);
-
-    for (colctr = compptr->downsampled_width - 2; colctr > 0; colctr--) {
-      /* General case: 3/4 * nearer pixel + 1/4 * further pixel */
-      invalue = GETJSAMPLE(*inptr++) * 3;
-      *outptr++ = (JSAMPLE) ((invalue + GETJSAMPLE(inptr[-2]) + 1) >> 2);
-      *outptr++ = (JSAMPLE) ((invalue + GETJSAMPLE(*inptr) + 2) >> 2);
-    }
-
-    /* Special case for last column */
-    invalue = GETJSAMPLE(*inptr);
-    *outptr++ = (JSAMPLE) ((invalue * 3 + GETJSAMPLE(inptr[-1]) + 1) >> 2);
-    *outptr++ = (JSAMPLE) invalue;
-  }
-}
-
-
-/*
- * Fancy processing for the common case of 2:1 horizontal and 2:1 vertical.
- * Again a triangle filter; see comments for h2v1 case, above.
- *
- * It is OK for us to reference the adjacent input rows because we demanded
- * context from the main buffer controller (see initialization code).
- */
-
-METHODDEF(void)
-h2v2_fancy_upsample (j_decompress_ptr cinfo, jpeg_component_info * compptr,
-		     JSAMPARRAY input_data, JSAMPARRAY * output_data_ptr)
-{
-  JSAMPARRAY output_data = *output_data_ptr;
-  register JSAMPROW inptr0, inptr1, outptr;
-#if BITS_IN_JSAMPLE == 8
-  register int thiscolsum, lastcolsum, nextcolsum;
-#else
-  register INT32 thiscolsum, lastcolsum, nextcolsum;
-#endif
-  register JDIMENSION colctr;
-  int inrow, outrow, v;
-
-  inrow = outrow = 0;
-  while (outrow < cinfo->max_v_samp_factor) {
-    for (v = 0; v < 2; v++) {
-      /* inptr0 points to nearest input row, inptr1 points to next nearest */
-      inptr0 = input_data[inrow];
-      if (v == 0)		/* next nearest is row above */
-	inptr1 = input_data[inrow-1];
-      else			/* next nearest is row below */
-	inptr1 = input_data[inrow+1];
-      outptr = output_data[outrow++];
-
-      /* Special case for first column */
-      thiscolsum = GETJSAMPLE(*inptr0++) * 3 + GETJSAMPLE(*inptr1++);
-      nextcolsum = GETJSAMPLE(*inptr0++) * 3 + GETJSAMPLE(*inptr1++);
-      *outptr++ = (JSAMPLE) ((thiscolsum * 4 + 8) >> 4);
-      *outptr++ = (JSAMPLE) ((thiscolsum * 3 + nextcolsum + 7) >> 4);
-      lastcolsum = thiscolsum; thiscolsum = nextcolsum;
-
-      for (colctr = compptr->downsampled_width - 2; colctr > 0; colctr--) {
-	/* General case: 3/4 * nearer pixel + 1/4 * further pixel in each */
-	/* dimension, thus 9/16, 3/16, 3/16, 1/16 overall */
-	nextcolsum = GETJSAMPLE(*inptr0++) * 3 + GETJSAMPLE(*inptr1++);
-	*outptr++ = (JSAMPLE) ((thiscolsum * 3 + lastcolsum + 8) >> 4);
-	*outptr++ = (JSAMPLE) ((thiscolsum * 3 + nextcolsum + 7) >> 4);
-	lastcolsum = thiscolsum; thiscolsum = nextcolsum;
-      }
-
-      /* Special case for last column */
-      *outptr++ = (JSAMPLE) ((thiscolsum * 3 + lastcolsum + 8) >> 4);
-      *outptr++ = (JSAMPLE) ((thiscolsum * 4 + 7) >> 4);
-    }
-    inrow++;
-  }
-}
-
-
-/*
- * Module initialization routine for upsampling.
- */
-
-GLOBAL(void)
-jinit_upsampler (j_decompress_ptr cinfo)
-{
-  my_upsample_ptr upsample;
-  int ci;
-  jpeg_component_info * compptr;
-  boolean need_buffer, do_fancy;
-  int h_in_group, v_in_group, h_out_group, v_out_group;
-
-  upsample = (my_upsample_ptr)
-    (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
-				SIZEOF(my_upsampler));
-  cinfo->upsample = (struct jpeg_upsampler *) upsample;
-  upsample->pub.start_pass = start_pass_upsample;
-  upsample->pub.upsample = sep_upsample;
-  upsample->pub.need_context_rows = FALSE; /* until we find out differently */
-
-  if (cinfo->CCIR601_sampling)	/* this isn't supported */
-    ERREXIT(cinfo, JERR_CCIR601_NOTIMPL);
-
-  /* jdmainct.c doesn't support context rows when min_DCT_scaled_size = 1,
-   * so don't ask for it.
-   */
-  do_fancy = cinfo->do_fancy_upsampling && cinfo->min_DCT_scaled_size > 1;
-
-  /* Verify we can handle the sampling factors, select per-component methods,
-   * and create storage as needed.
-   */
-  for (ci = 0, compptr = cinfo->comp_info; ci < cinfo->num_components;
-       ci++, compptr++) {
-    /* Compute size of an "input group" after IDCT scaling.  This many samples
-     * are to be converted to max_h_samp_factor * max_v_samp_factor pixels.
-     */
-    h_in_group = (compptr->h_samp_factor * compptr->DCT_scaled_size) /
-		 cinfo->min_DCT_scaled_size;
-    v_in_group = (compptr->v_samp_factor * compptr->DCT_scaled_size) /
-		 cinfo->min_DCT_scaled_size;
-    h_out_group = cinfo->max_h_samp_factor;
-    v_out_group = cinfo->max_v_samp_factor;
-    upsample->rowgroup_height[ci] = v_in_group; /* save for use later */
-    need_buffer = TRUE;
-    if (! compptr->component_needed) {
-      /* Don't bother to upsample an uninteresting component. */
-      upsample->methods[ci] = noop_upsample;
-      need_buffer = FALSE;
-    } else if (h_in_group == h_out_group && v_in_group == v_out_group) {
-      /* Fullsize components can be processed without any work. */
-      upsample->methods[ci] = fullsize_upsample;
-      need_buffer = FALSE;
-    } else if (h_in_group * 2 == h_out_group &&
-	       v_in_group == v_out_group) {
-      /* Special cases for 2h1v upsampling */
-      if (do_fancy && compptr->downsampled_width > 2)
-	upsample->methods[ci] = h2v1_fancy_upsample;
-      else
-	upsample->methods[ci] = h2v1_upsample;
-    } else if (h_in_group * 2 == h_out_group &&
-	       v_in_group * 2 == v_out_group) {
-      /* Special cases for 2h2v upsampling */
-      if (do_fancy && compptr->downsampled_width > 2) {
-	upsample->methods[ci] = h2v2_fancy_upsample;
-	upsample->pub.need_context_rows = TRUE;
-      } else
-	upsample->methods[ci] = h2v2_upsample;
-    } else if ((h_out_group % h_in_group) == 0 &&
-	       (v_out_group % v_in_group) == 0) {
-      /* Generic integral-factors upsampling method */
-      upsample->methods[ci] = int_upsample;
-      upsample->h_expand[ci] = (UINT8) (h_out_group / h_in_group);
-      upsample->v_expand[ci] = (UINT8) (v_out_group / v_in_group);
-    } else
-      ERREXIT(cinfo, JERR_FRACT_SAMPLE_NOTIMPL);
-    if (need_buffer) {
-      upsample->color_buf[ci] = (*cinfo->mem->alloc_sarray)
-	((j_common_ptr) cinfo, JPOOL_IMAGE,
-	 (JDIMENSION) jround_up((long) cinfo->output_width,
-				(long) cinfo->max_h_samp_factor),
-	 (JDIMENSION) cinfo->max_v_samp_factor);
-    }
-  }
-}
diff --git a/src/libjpeg/jdtrans.c b/src/libjpeg/jdtrans.c
deleted file mode 100644
index 12c193c..0000000
--- a/src/libjpeg/jdtrans.c
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
- * jdtrans.c
- *
- * Copyright (C) 1995-1997, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains library routines for transcoding decompression,
- * that is, reading raw DCT coefficient arrays from an input JPEG file.
- * The routines in jdapimin.c will also be needed by a transcoder.
- */
-
-#define JPEG_INTERNALS
-#include "jinclude.h"
-#include "jpeglib.h"
-
-
-/* Forward declarations */
-LOCAL(void) transdecode_master_selection JPP((j_decompress_ptr cinfo));
-
-
-/*
- * Read the coefficient arrays from a JPEG file.
- * jpeg_read_header must be completed before calling this.
- *
- * The entire image is read into a set of virtual coefficient-block arrays,
- * one per component.  The return value is a pointer to the array of
- * virtual-array descriptors.  These can be manipulated directly via the
- * JPEG memory manager, or handed off to jpeg_write_coefficients().
- * To release the memory occupied by the virtual arrays, call
- * jpeg_finish_decompress() when done with the data.
- *
- * An alternative usage is to simply obtain access to the coefficient arrays
- * during a buffered-image-mode decompression operation.  This is allowed
- * after any jpeg_finish_output() call.  The arrays can be accessed until
- * jpeg_finish_decompress() is called.  (Note that any call to the library
- * may reposition the arrays, so don't rely on access_virt_barray() results
- * to stay valid across library calls.)
- *
- * Returns NULL if suspended.  This case need be checked only if
- * a suspending data source is used.
- */
-
-GLOBAL(jvirt_barray_ptr *)
-jpeg_read_coefficients (j_decompress_ptr cinfo)
-{
-  if (cinfo->global_state == DSTATE_READY) {
-    /* First call: initialize active modules */
-    transdecode_master_selection(cinfo);
-    cinfo->global_state = DSTATE_RDCOEFS;
-  }
-  if (cinfo->global_state == DSTATE_RDCOEFS) {
-    /* Absorb whole file into the coef buffer */
-    for (;;) {
-      int retcode;
-      /* Call progress monitor hook if present */
-      if (cinfo->progress != NULL)
-	(*cinfo->progress->progress_monitor) ((j_common_ptr) cinfo);
-      /* Absorb some more input */
-      retcode = (*cinfo->inputctl->consume_input) (cinfo);
-      if (retcode == JPEG_SUSPENDED)
-	return NULL;
-      if (retcode == JPEG_REACHED_EOI)
-	break;
-      /* Advance progress counter if appropriate */
-      if (cinfo->progress != NULL &&
-	  (retcode == JPEG_ROW_COMPLETED || retcode == JPEG_REACHED_SOS)) {
-	if (++cinfo->progress->pass_counter >= cinfo->progress->pass_limit) {
-	  /* startup underestimated number of scans; ratchet up one scan */
-	  cinfo->progress->pass_limit += (long) cinfo->total_iMCU_rows;
-	}
-      }
-    }
-    /* Set state so that jpeg_finish_decompress does the right thing */
-    cinfo->global_state = DSTATE_STOPPING;
-  }
-  /* At this point we should be in state DSTATE_STOPPING if being used
-   * standalone, or in state DSTATE_BUFIMAGE if being invoked to get access
-   * to the coefficients during a full buffered-image-mode decompression.
-   */
-  if ((cinfo->global_state == DSTATE_STOPPING ||
-       cinfo->global_state == DSTATE_BUFIMAGE) && cinfo->buffered_image) {
-    return cinfo->coef->coef_arrays;
-  }
-  /* Oops, improper usage */
-  ERREXIT1(cinfo, JERR_BAD_STATE, cinfo->global_state);
-  return NULL;			/* keep compiler happy */
-}
-
-
-/*
- * Master selection of decompression modules for transcoding.
- * This substitutes for jdmaster.c's initialization of the full decompressor.
- */
-
-LOCAL(void)
-transdecode_master_selection (j_decompress_ptr cinfo)
-{
-  /* This is effectively a buffered-image operation. */
-  cinfo->buffered_image = TRUE;
-
-  /* Entropy decoding: either Huffman or arithmetic coding. */
-  if (cinfo->arith_code) {
-    ERREXIT(cinfo, JERR_ARITH_NOTIMPL);
-  } else {
-    if (cinfo->progressive_mode) {
-#ifdef D_PROGRESSIVE_SUPPORTED
-      jinit_phuff_decoder(cinfo);
-#else
-      ERREXIT(cinfo, JERR_NOT_COMPILED);
-#endif
-    } else
-      jinit_huff_decoder(cinfo);
-  }
-
-  /* Always get a full-image coefficient buffer. */
-  jinit_d_coef_controller(cinfo, TRUE);
-
-  /* We can now tell the memory manager to allocate virtual arrays. */
-  (*cinfo->mem->realize_virt_arrays) ((j_common_ptr) cinfo);
-
-  /* Initialize input side of decompressor to consume first scan. */
-  (*cinfo->inputctl->start_input_pass) (cinfo);
-
-  /* Initialize progress monitoring. */
-  if (cinfo->progress != NULL) {
-    int nscans;
-    /* Estimate number of scans to set pass_limit. */
-    if (cinfo->progressive_mode) {
-      /* Arbitrarily estimate 2 interleaved DC scans + 3 AC scans/component. */
-      nscans = 2 + 3 * cinfo->num_components;
-    } else if (cinfo->inputctl->has_multiple_scans) {
-      /* For a nonprogressive multiscan file, estimate 1 scan per component. */
-      nscans = cinfo->num_components;
-    } else {
-      nscans = 1;
-    }
-    cinfo->progress->pass_counter = 0L;
-    cinfo->progress->pass_limit = (long) cinfo->total_iMCU_rows * nscans;
-    cinfo->progress->completed_passes = 0;
-    cinfo->progress->total_passes = 1;
-  }
-}
diff --git a/src/libjpeg/jerror.c b/src/libjpeg/jerror.c
deleted file mode 100644
index c98aed7..0000000
--- a/src/libjpeg/jerror.c
+++ /dev/null
@@ -1,252 +0,0 @@
-/*
- * jerror.c
- *
- * Copyright (C) 1991-1998, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains simple error-reporting and trace-message routines.
- * These are suitable for Unix-like systems and others where writing to
- * stderr is the right thing to do.  Many applications will want to replace
- * some or all of these routines.
- *
- * If you define USE_WINDOWS_MESSAGEBOX in jconfig.h or in the makefile,
- * you get a Windows-specific hack to display error messages in a dialog box.
- * It ain't much, but it beats dropping error messages into the bit bucket,
- * which is what happens to output to stderr under most Windows C compilers.
- *
- * These routines are used by both the compression and decompression code.
- */
-
-/* this is not a core library module, so it doesn't define JPEG_INTERNALS */
-#include "jinclude.h"
-#include "jpeglib.h"
-#include "jversion.h"
-#include "jerror.h"
-
-#ifdef USE_WINDOWS_MESSAGEBOX
-#include <windows.h>
-#endif
-
-#ifndef EXIT_FAILURE		/* define exit() codes if not provided */
-#define EXIT_FAILURE  1
-#endif
-
-
-/*
- * Create the message string table.
- * We do this from the master message list in jerror.h by re-reading
- * jerror.h with a suitable definition for macro JMESSAGE.
- * The message table is made an external symbol just in case any applications
- * want to refer to it directly.
- */
-
-#ifdef NEED_SHORT_EXTERNAL_NAMES
-#define jpeg_std_message_table	jMsgTable
-#endif
-
-#define JMESSAGE(code,string)	string ,
-
-const char * const jpeg_std_message_table[] = {
-#include "jerror.h"
-  NULL
-};
-
-
-/*
- * Error exit handler: must not return to caller.
- *
- * Applications may override this if they want to get control back after
- * an error.  Typically one would longjmp somewhere instead of exiting.
- * The setjmp buffer can be made a private field within an expanded error
- * handler object.  Note that the info needed to generate an error message
- * is stored in the error object, so you can generate the message now or
- * later, at your convenience.
- * You should make sure that the JPEG object is cleaned up (with jpeg_abort
- * or jpeg_destroy) at some point.
- */
-
-METHODDEF(void)
-error_exit (j_common_ptr cinfo)
-{
-  /* Always display the message */
-  (*cinfo->err->output_message) (cinfo);
-
-  /* Let the memory manager delete any temp files before we die */
-  jpeg_destroy(cinfo);
-
-  exit(EXIT_FAILURE);
-}
-
-
-/*
- * Actual output of an error or trace message.
- * Applications may override this method to send JPEG messages somewhere
- * other than stderr.
- *
- * On Windows, printing to stderr is generally completely useless,
- * so we provide optional code to produce an error-dialog popup.
- * Most Windows applications will still prefer to override this routine,
- * but if they don't, it'll do something at least marginally useful.
- *
- * NOTE: to use the library in an environment that doesn't support the
- * C stdio library, you may have to delete the call to fprintf() entirely,
- * not just not use this routine.
- */
-
-METHODDEF(void)
-output_message (j_common_ptr cinfo)
-{
-  char buffer[JMSG_LENGTH_MAX];
-
-  /* Create the message */
-  (*cinfo->err->format_message) (cinfo, buffer);
-
-#ifdef USE_WINDOWS_MESSAGEBOX
-  /* Display it in a message dialog box */
-  MessageBox(GetActiveWindow(), buffer, "JPEG Library Error",
-	     MB_OK | MB_ICONERROR);
-#else
-  /* Send it to stderr, adding a newline */
-  fprintf(stderr, "%s\n", buffer);
-#endif
-}
-
-
-/*
- * Decide whether to emit a trace or warning message.
- * msg_level is one of:
- *   -1: recoverable corrupt-data warning, may want to abort.
- *    0: important advisory messages (always display to user).
- *    1: first level of tracing detail.
- *    2,3,...: successively more detailed tracing messages.
- * An application might override this method if it wanted to abort on warnings
- * or change the policy about which messages to display.
- */
-
-METHODDEF(void)
-emit_message (j_common_ptr cinfo, int msg_level)
-{
-  struct jpeg_error_mgr * err = cinfo->err;
-
-  if (msg_level < 0) {
-    /* It's a warning message.  Since corrupt files may generate many warnings,
-     * the policy implemented here is to show only the first warning,
-     * unless trace_level >= 3.
-     */
-    if (err->num_warnings == 0 || err->trace_level >= 3)
-      (*err->output_message) (cinfo);
-    /* Always count warnings in num_warnings. */
-    err->num_warnings++;
-  } else {
-    /* It's a trace message.  Show it if trace_level >= msg_level. */
-    if (err->trace_level >= msg_level)
-      (*err->output_message) (cinfo);
-  }
-}
-
-
-/*
- * Format a message string for the most recent JPEG error or message.
- * The message is stored into buffer, which should be at least JMSG_LENGTH_MAX
- * characters.  Note that no '\n' character is added to the string.
- * Few applications should need to override this method.
- */
-
-METHODDEF(void)
-format_message (j_common_ptr cinfo, char * buffer)
-{
-  struct jpeg_error_mgr * err = cinfo->err;
-  int msg_code = err->msg_code;
-  const char * msgtext = NULL;
-  const char * msgptr;
-  char ch;
-  boolean isstring;
-
-  /* Look up message string in proper table */
-  if (msg_code > 0 && msg_code <= err->last_jpeg_message) {
-    msgtext = err->jpeg_message_table[msg_code];
-  } else if (err->addon_message_table != NULL &&
-	     msg_code >= err->first_addon_message &&
-	     msg_code <= err->last_addon_message) {
-    msgtext = err->addon_message_table[msg_code - err->first_addon_message];
-  }
-
-  /* Defend against bogus message number */
-  if (msgtext == NULL) {
-    err->msg_parm.i[0] = msg_code;
-    msgtext = err->jpeg_message_table[0];
-  }
-
-  /* Check for string parameter, as indicated by %s in the message text */
-  isstring = FALSE;
-  msgptr = msgtext;
-  while ((ch = *msgptr++) != '\0') {
-    if (ch == '%') {
-      if (*msgptr == 's') isstring = TRUE;
-      break;
-    }
-  }
-
-  /* Format the message into the passed buffer */
-  if (isstring)
-    sprintf(buffer, msgtext, err->msg_parm.s);
-  else
-    sprintf(buffer, msgtext,
-	    err->msg_parm.i[0], err->msg_parm.i[1],
-	    err->msg_parm.i[2], err->msg_parm.i[3],
-	    err->msg_parm.i[4], err->msg_parm.i[5],
-	    err->msg_parm.i[6], err->msg_parm.i[7]);
-}
-
-
-/*
- * Reset error state variables at start of a new image.
- * This is called during compression startup to reset trace/error
- * processing to default state, without losing any application-specific
- * method pointers.  An application might possibly want to override
- * this method if it has additional error processing state.
- */
-
-METHODDEF(void)
-reset_error_mgr (j_common_ptr cinfo)
-{
-  cinfo->err->num_warnings = 0;
-  /* trace_level is not reset since it is an application-supplied parameter */
-  cinfo->err->msg_code = 0;	/* may be useful as a flag for "no error" */
-}
-
-
-/*
- * Fill in the standard error-handling methods in a jpeg_error_mgr object.
- * Typical call is:
- *	struct jpeg_compress_struct cinfo;
- *	struct jpeg_error_mgr err;
- *
- *	cinfo.err = jpeg_std_error(&err);
- * after which the application may override some of the methods.
- */
-
-GLOBAL(struct jpeg_error_mgr *)
-jpeg_std_error (struct jpeg_error_mgr * err)
-{
-  err->error_exit = error_exit;
-  err->emit_message = emit_message;
-  err->output_message = output_message;
-  err->format_message = format_message;
-  err->reset_error_mgr = reset_error_mgr;
-
-  err->trace_level = 0;		/* default = no tracing */
-  err->num_warnings = 0;	/* no warnings emitted yet */
-  err->msg_code = 0;		/* may be useful as a flag for "no error" */
-
-  /* Initialize message table pointers */
-  err->jpeg_message_table = jpeg_std_message_table;
-  err->last_jpeg_message = (int) JMSG_LASTMSGCODE - 1;
-
-  err->addon_message_table = NULL;
-  err->first_addon_message = 0;	/* for safety */
-  err->last_addon_message = 0;
-
-  return err;
-}
diff --git a/src/libjpeg/jerror.h b/src/libjpeg/jerror.h
deleted file mode 100644
index 79084f2..0000000
--- a/src/libjpeg/jerror.h
+++ /dev/null
@@ -1,291 +0,0 @@
-/*
- * jerror.h
- *
- * Copyright (C) 1994-1997, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file defines the error and message codes for the JPEG library.
- * Edit this file to add new codes, or to translate the message strings to
- * some other language.
- * A set of error-reporting macros are defined too.  Some applications using
- * the JPEG library may wish to include this file to get the error codes
- * and/or the macros.
- */
-
-/*
- * To define the enum list of message codes, include this file without
- * defining macro JMESSAGE.  To create a message string table, include it
- * again with a suitable JMESSAGE definition (see jerror.c for an example).
- */
-#ifndef JMESSAGE
-#ifndef JERROR_H
-/* First time through, define the enum list */
-#define JMAKE_ENUM_LIST
-#else
-/* Repeated inclusions of this file are no-ops unless JMESSAGE is defined */
-#define JMESSAGE(code,string)
-#endif /* JERROR_H */
-#endif /* JMESSAGE */
-
-#ifdef JMAKE_ENUM_LIST
-
-typedef enum {
-
-#define JMESSAGE(code,string)	code ,
-
-#endif /* JMAKE_ENUM_LIST */
-
-JMESSAGE(JMSG_NOMESSAGE, "Bogus message code %d") /* Must be first entry! */
-
-/* For maintenance convenience, list is alphabetical by message code name */
-JMESSAGE(JERR_ARITH_NOTIMPL,
-	 "Sorry, there are legal restrictions on arithmetic coding")
-JMESSAGE(JERR_BAD_ALIGN_TYPE, "ALIGN_TYPE is wrong, please fix")
-JMESSAGE(JERR_BAD_ALLOC_CHUNK, "MAX_ALLOC_CHUNK is wrong, please fix")
-JMESSAGE(JERR_BAD_BUFFER_MODE, "Bogus buffer control mode")
-JMESSAGE(JERR_BAD_COMPONENT_ID, "Invalid component ID %d in SOS")
-JMESSAGE(JERR_BAD_DCT_COEF, "DCT coefficient out of range")
-JMESSAGE(JERR_BAD_DCTSIZE, "IDCT output block size %d not supported")
-JMESSAGE(JERR_BAD_HUFF_TABLE, "Bogus Huffman table definition")
-JMESSAGE(JERR_BAD_IN_COLORSPACE, "Bogus input colorspace")
-JMESSAGE(JERR_BAD_J_COLORSPACE, "Bogus JPEG colorspace")
-JMESSAGE(JERR_BAD_LENGTH, "Bogus marker length")
-JMESSAGE(JERR_BAD_LIB_VERSION,
-	 "Wrong JPEG library version: library is %d, caller expects %d")
-JMESSAGE(JERR_BAD_MCU_SIZE, "Sampling factors too large for interleaved scan")
-JMESSAGE(JERR_BAD_POOL_ID, "Invalid memory pool code %d")
-JMESSAGE(JERR_BAD_PRECISION, "Unsupported JPEG data precision %d")
-JMESSAGE(JERR_BAD_PROGRESSION,
-	 "Invalid progressive parameters Ss=%d Se=%d Ah=%d Al=%d")
-JMESSAGE(JERR_BAD_PROG_SCRIPT,
-	 "Invalid progressive parameters at scan script entry %d")
-JMESSAGE(JERR_BAD_SAMPLING, "Bogus sampling factors")
-JMESSAGE(JERR_BAD_SCAN_SCRIPT, "Invalid scan script at entry %d")
-JMESSAGE(JERR_BAD_STATE, "Improper call to JPEG library in state %d")
-JMESSAGE(JERR_BAD_STRUCT_SIZE,
-	 "JPEG parameter struct mismatch: library thinks size is %u, caller expects %u")
-JMESSAGE(JERR_BAD_VIRTUAL_ACCESS, "Bogus virtual array access")
-JMESSAGE(JERR_BUFFER_SIZE, "Buffer passed to JPEG library is too small")
-JMESSAGE(JERR_CANT_SUSPEND, "Suspension not allowed here")
-JMESSAGE(JERR_CCIR601_NOTIMPL, "CCIR601 sampling not implemented yet")
-JMESSAGE(JERR_COMPONENT_COUNT, "Too many color components: %d, max %d")
-JMESSAGE(JERR_CONVERSION_NOTIMPL, "Unsupported color conversion request")
-JMESSAGE(JERR_DAC_INDEX, "Bogus DAC index %d")
-JMESSAGE(JERR_DAC_VALUE, "Bogus DAC value 0x%x")
-JMESSAGE(JERR_DHT_INDEX, "Bogus DHT index %d")
-JMESSAGE(JERR_DQT_INDEX, "Bogus DQT index %d")
-JMESSAGE(JERR_EMPTY_IMAGE, "Empty JPEG image (DNL not supported)")
-JMESSAGE(JERR_EMS_READ, "Read from EMS failed")
-JMESSAGE(JERR_EMS_WRITE, "Write to EMS failed")
-JMESSAGE(JERR_EOI_EXPECTED, "Didn't expect more than one scan")
-JMESSAGE(JERR_FILE_READ, "Input file read error")
-JMESSAGE(JERR_FILE_WRITE, "Output file write error --- out of disk space?")
-JMESSAGE(JERR_FRACT_SAMPLE_NOTIMPL, "Fractional sampling not implemented yet")
-JMESSAGE(JERR_HUFF_CLEN_OVERFLOW, "Huffman code size table overflow")
-JMESSAGE(JERR_HUFF_MISSING_CODE, "Missing Huffman code table entry")
-JMESSAGE(JERR_IMAGE_TOO_BIG, "Maximum supported image dimension is %u pixels")
-JMESSAGE(JERR_INPUT_EMPTY, "Empty input file")
-JMESSAGE(JERR_INPUT_EOF, "Premature end of input file")
-JMESSAGE(JERR_MISMATCHED_QUANT_TABLE,
-	 "Cannot transcode due to multiple use of quantization table %d")
-JMESSAGE(JERR_MISSING_DATA, "Scan script does not transmit all data")
-JMESSAGE(JERR_MODE_CHANGE, "Invalid color quantization mode change")
-JMESSAGE(JERR_NOTIMPL, "Not implemented yet")
-JMESSAGE(JERR_NOT_COMPILED, "Requested feature was omitted at compile time")
-JMESSAGE(JERR_NO_BACKING_STORE, "Backing store not supported")
-JMESSAGE(JERR_NO_HUFF_TABLE, "Huffman table 0x%02x was not defined")
-JMESSAGE(JERR_NO_IMAGE, "JPEG datastream contains no image")
-JMESSAGE(JERR_NO_QUANT_TABLE, "Quantization table 0x%02x was not defined")
-JMESSAGE(JERR_NO_SOI, "Not a JPEG file: starts with 0x%02x 0x%02x")
-JMESSAGE(JERR_OUT_OF_MEMORY, "Insufficient memory (case %d)")
-JMESSAGE(JERR_QUANT_COMPONENTS,
-	 "Cannot quantize more than %d color components")
-JMESSAGE(JERR_QUANT_FEW_COLORS, "Cannot quantize to fewer than %d colors")
-JMESSAGE(JERR_QUANT_MANY_COLORS, "Cannot quantize to more than %d colors")
-JMESSAGE(JERR_SOF_DUPLICATE, "Invalid JPEG file structure: two SOF markers")
-JMESSAGE(JERR_SOF_NO_SOS, "Invalid JPEG file structure: missing SOS marker")
-JMESSAGE(JERR_SOF_UNSUPPORTED, "Unsupported JPEG process: SOF type 0x%02x")
-JMESSAGE(JERR_SOI_DUPLICATE, "Invalid JPEG file structure: two SOI markers")
-JMESSAGE(JERR_SOS_NO_SOF, "Invalid JPEG file structure: SOS before SOF")
-JMESSAGE(JERR_TFILE_CREATE, "Failed to create temporary file %s")
-JMESSAGE(JERR_TFILE_READ, "Read failed on temporary file")
-JMESSAGE(JERR_TFILE_SEEK, "Seek failed on temporary file")
-JMESSAGE(JERR_TFILE_WRITE,
-	 "Write failed on temporary file --- out of disk space?")
-JMESSAGE(JERR_TOO_LITTLE_DATA, "Application transferred too few scanlines")
-JMESSAGE(JERR_UNKNOWN_MARKER, "Unsupported marker type 0x%02x")
-JMESSAGE(JERR_VIRTUAL_BUG, "Virtual array controller messed up")
-JMESSAGE(JERR_WIDTH_OVERFLOW, "Image too wide for this implementation")
-JMESSAGE(JERR_XMS_READ, "Read from XMS failed")
-JMESSAGE(JERR_XMS_WRITE, "Write to XMS failed")
-JMESSAGE(JMSG_COPYRIGHT, JCOPYRIGHT)
-JMESSAGE(JMSG_VERSION, JVERSION)
-JMESSAGE(JTRC_16BIT_TABLES,
-	 "Caution: quantization tables are too coarse for baseline JPEG")
-JMESSAGE(JTRC_ADOBE,
-	 "Adobe APP14 marker: version %d, flags 0x%04x 0x%04x, transform %d")
-JMESSAGE(JTRC_APP0, "Unknown APP0 marker (not JFIF), length %u")
-JMESSAGE(JTRC_APP14, "Unknown APP14 marker (not Adobe), length %u")
-JMESSAGE(JTRC_DAC, "Define Arithmetic Table 0x%02x: 0x%02x")
-JMESSAGE(JTRC_DHT, "Define Huffman Table 0x%02x")
-JMESSAGE(JTRC_DQT, "Define Quantization Table %d  precision %d")
-JMESSAGE(JTRC_DRI, "Define Restart Interval %u")
-JMESSAGE(JTRC_EMS_CLOSE, "Freed EMS handle %u")
-JMESSAGE(JTRC_EMS_OPEN, "Obtained EMS handle %u")
-JMESSAGE(JTRC_EOI, "End Of Image")
-JMESSAGE(JTRC_HUFFBITS, "        %3d %3d %3d %3d %3d %3d %3d %3d")
-JMESSAGE(JTRC_JFIF, "JFIF APP0 marker: version %d.%02d, density %dx%d  %d")
-JMESSAGE(JTRC_JFIF_BADTHUMBNAILSIZE,
-	 "Warning: thumbnail image size does not match data length %u")
-JMESSAGE(JTRC_JFIF_EXTENSION,
-	 "JFIF extension marker: type 0x%02x, length %u")
-JMESSAGE(JTRC_JFIF_THUMBNAIL, "    with %d x %d thumbnail image")
-JMESSAGE(JTRC_MISC_MARKER, "Miscellaneous marker 0x%02x, length %u")
-JMESSAGE(JTRC_PARMLESS_MARKER, "Unexpected marker 0x%02x")
-JMESSAGE(JTRC_QUANTVALS, "        %4u %4u %4u %4u %4u %4u %4u %4u")
-JMESSAGE(JTRC_QUANT_3_NCOLORS, "Quantizing to %d = %d*%d*%d colors")
-JMESSAGE(JTRC_QUANT_NCOLORS, "Quantizing to %d colors")
-JMESSAGE(JTRC_QUANT_SELECTED, "Selected %d colors for quantization")
-JMESSAGE(JTRC_RECOVERY_ACTION, "At marker 0x%02x, recovery action %d")
-JMESSAGE(JTRC_RST, "RST%d")
-JMESSAGE(JTRC_SMOOTH_NOTIMPL,
-	 "Smoothing not supported with nonstandard sampling ratios")
-JMESSAGE(JTRC_SOF, "Start Of Frame 0x%02x: width=%u, height=%u, components=%d")
-JMESSAGE(JTRC_SOF_COMPONENT, "    Component %d: %dhx%dv q=%d")
-JMESSAGE(JTRC_SOI, "Start of Image")
-JMESSAGE(JTRC_SOS, "Start Of Scan: %d components")
-JMESSAGE(JTRC_SOS_COMPONENT, "    Component %d: dc=%d ac=%d")
-JMESSAGE(JTRC_SOS_PARAMS, "  Ss=%d, Se=%d, Ah=%d, Al=%d")
-JMESSAGE(JTRC_TFILE_CLOSE, "Closed temporary file %s")
-JMESSAGE(JTRC_TFILE_OPEN, "Opened temporary file %s")
-JMESSAGE(JTRC_THUMB_JPEG,
-	 "JFIF extension marker: JPEG-compressed thumbnail image, length %u")
-JMESSAGE(JTRC_THUMB_PALETTE,
-	 "JFIF extension marker: palette thumbnail image, length %u")
-JMESSAGE(JTRC_THUMB_RGB,
-	 "JFIF extension marker: RGB thumbnail image, length %u")
-JMESSAGE(JTRC_UNKNOWN_IDS,
-	 "Unrecognized component IDs %d %d %d, assuming YCbCr")
-JMESSAGE(JTRC_XMS_CLOSE, "Freed XMS handle %u")
-JMESSAGE(JTRC_XMS_OPEN, "Obtained XMS handle %u")
-JMESSAGE(JWRN_ADOBE_XFORM, "Unknown Adobe color transform code %d")
-JMESSAGE(JWRN_BOGUS_PROGRESSION,
-	 "Inconsistent progression sequence for component %d coefficient %d")
-JMESSAGE(JWRN_EXTRANEOUS_DATA,
-	 "Corrupt JPEG data: %u extraneous bytes before marker 0x%02x")
-JMESSAGE(JWRN_HIT_MARKER, "Corrupt JPEG data: premature end of data segment")
-JMESSAGE(JWRN_HUFF_BAD_CODE, "Corrupt JPEG data: bad Huffman code")
-JMESSAGE(JWRN_JFIF_MAJOR, "Warning: unknown JFIF revision number %d.%02d")
-JMESSAGE(JWRN_JPEG_EOF, "Premature end of JPEG file")
-JMESSAGE(JWRN_MUST_RESYNC,
-	 "Corrupt JPEG data: found marker 0x%02x instead of RST%d")
-JMESSAGE(JWRN_NOT_SEQUENTIAL, "Invalid SOS parameters for sequential JPEG")
-JMESSAGE(JWRN_TOO_MUCH_DATA, "Application transferred too many scanlines")
-
-#ifdef JMAKE_ENUM_LIST
-
-  JMSG_LASTMSGCODE
-} J_MESSAGE_CODE;
-
-#undef JMAKE_ENUM_LIST
-#endif /* JMAKE_ENUM_LIST */
-
-/* Zap JMESSAGE macro so that future re-inclusions do nothing by default */
-#undef JMESSAGE
-
-
-#ifndef JERROR_H
-#define JERROR_H
-
-/* Macros to simplify using the error and trace message stuff */
-/* The first parameter is either type of cinfo pointer */
-
-/* Fatal errors (print message and exit) */
-#define ERREXIT(cinfo,code)  \
-  ((cinfo)->err->msg_code = (code), \
-   (*(cinfo)->err->error_exit) ((j_common_ptr) (cinfo)))
-#define ERREXIT1(cinfo,code,p1)  \
-  ((cinfo)->err->msg_code = (code), \
-   (cinfo)->err->msg_parm.i[0] = (p1), \
-   (*(cinfo)->err->error_exit) ((j_common_ptr) (cinfo)))
-#define ERREXIT2(cinfo,code,p1,p2)  \
-  ((cinfo)->err->msg_code = (code), \
-   (cinfo)->err->msg_parm.i[0] = (p1), \
-   (cinfo)->err->msg_parm.i[1] = (p2), \
-   (*(cinfo)->err->error_exit) ((j_common_ptr) (cinfo)))
-#define ERREXIT3(cinfo,code,p1,p2,p3)  \
-  ((cinfo)->err->msg_code = (code), \
-   (cinfo)->err->msg_parm.i[0] = (p1), \
-   (cinfo)->err->msg_parm.i[1] = (p2), \
-   (cinfo)->err->msg_parm.i[2] = (p3), \
-   (*(cinfo)->err->error_exit) ((j_common_ptr) (cinfo)))
-#define ERREXIT4(cinfo,code,p1,p2,p3,p4)  \
-  ((cinfo)->err->msg_code = (code), \
-   (cinfo)->err->msg_parm.i[0] = (p1), \
-   (cinfo)->err->msg_parm.i[1] = (p2), \
-   (cinfo)->err->msg_parm.i[2] = (p3), \
-   (cinfo)->err->msg_parm.i[3] = (p4), \
-   (*(cinfo)->err->error_exit) ((j_common_ptr) (cinfo)))
-#define ERREXITS(cinfo,code,str)  \
-  ((cinfo)->err->msg_code = (code), \
-   strncpy((cinfo)->err->msg_parm.s, (str), JMSG_STR_PARM_MAX), \
-   (*(cinfo)->err->error_exit) ((j_common_ptr) (cinfo)))
-
-#define MAKESTMT(stuff)		do { stuff } while (0)
-
-/* Nonfatal errors (we can keep going, but the data is probably corrupt) */
-#define WARNMS(cinfo,code)  \
-  ((cinfo)->err->msg_code = (code), \
-   (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), -1))
-#define WARNMS1(cinfo,code,p1)  \
-  ((cinfo)->err->msg_code = (code), \
-   (cinfo)->err->msg_parm.i[0] = (p1), \
-   (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), -1))
-#define WARNMS2(cinfo,code,p1,p2)  \
-  ((cinfo)->err->msg_code = (code), \
-   (cinfo)->err->msg_parm.i[0] = (p1), \
-   (cinfo)->err->msg_parm.i[1] = (p2), \
-   (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), -1))
-
-/* Informational/debugging messages */
-#define TRACEMS(cinfo,lvl,code)  \
-  ((cinfo)->err->msg_code = (code), \
-   (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), (lvl)))
-#define TRACEMS1(cinfo,lvl,code,p1)  \
-  ((cinfo)->err->msg_code = (code), \
-   (cinfo)->err->msg_parm.i[0] = (p1), \
-   (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), (lvl)))
-#define TRACEMS2(cinfo,lvl,code,p1,p2)  \
-  ((cinfo)->err->msg_code = (code), \
-   (cinfo)->err->msg_parm.i[0] = (p1), \
-   (cinfo)->err->msg_parm.i[1] = (p2), \
-   (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), (lvl)))
-#define TRACEMS3(cinfo,lvl,code,p1,p2,p3)  \
-  MAKESTMT(int * _mp = (cinfo)->err->msg_parm.i; \
-	   _mp[0] = (p1); _mp[1] = (p2); _mp[2] = (p3); \
-	   (cinfo)->err->msg_code = (code); \
-	   (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), (lvl)); )
-#define TRACEMS4(cinfo,lvl,code,p1,p2,p3,p4)  \
-  MAKESTMT(int * _mp = (cinfo)->err->msg_parm.i; \
-	   _mp[0] = (p1); _mp[1] = (p2); _mp[2] = (p3); _mp[3] = (p4); \
-	   (cinfo)->err->msg_code = (code); \
-	   (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), (lvl)); )
-#define TRACEMS5(cinfo,lvl,code,p1,p2,p3,p4,p5)  \
-  MAKESTMT(int * _mp = (cinfo)->err->msg_parm.i; \
-	   _mp[0] = (p1); _mp[1] = (p2); _mp[2] = (p3); _mp[3] = (p4); \
-	   _mp[4] = (p5); \
-	   (cinfo)->err->msg_code = (code); \
-	   (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), (lvl)); )
-#define TRACEMS8(cinfo,lvl,code,p1,p2,p3,p4,p5,p6,p7,p8)  \
-  MAKESTMT(int * _mp = (cinfo)->err->msg_parm.i; \
-	   _mp[0] = (p1); _mp[1] = (p2); _mp[2] = (p3); _mp[3] = (p4); \
-	   _mp[4] = (p5); _mp[5] = (p6); _mp[6] = (p7); _mp[7] = (p8); \
-	   (cinfo)->err->msg_code = (code); \
-	   (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), (lvl)); )
-#define TRACEMSS(cinfo,lvl,code,str)  \
-  ((cinfo)->err->msg_code = (code), \
-   strncpy((cinfo)->err->msg_parm.s, (str), JMSG_STR_PARM_MAX), \
-   (*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), (lvl)))
-
-#endif /* JERROR_H */
diff --git a/src/libjpeg/jfdctflt.c b/src/libjpeg/jfdctflt.c
deleted file mode 100644
index 7ccfb38..0000000
--- a/src/libjpeg/jfdctflt.c
+++ /dev/null
@@ -1,168 +0,0 @@
-/*
- * jfdctflt.c
- *
- * Copyright (C) 1994-1996, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains a floating-point implementation of the
- * forward DCT (Discrete Cosine Transform).
- *
- * This implementation should be more accurate than either of the integer
- * DCT implementations.  However, it may not give the same results on all
- * machines because of differences in roundoff behavior.  Speed will depend
- * on the hardware's floating point capacity.
- *
- * A 2-D DCT can be done by 1-D DCT on each row followed by 1-D DCT
- * on each column.  Direct algorithms are also available, but they are
- * much more complex and seem not to be any faster when reduced to code.
- *
- * This implementation is based on Arai, Agui, and Nakajima's algorithm for
- * scaled DCT.  Their original paper (Trans. IEICE E-71(11):1095) is in
- * Japanese, but the algorithm is described in the Pennebaker & Mitchell
- * JPEG textbook (see REFERENCES section in file README).  The following code
- * is based directly on figure 4-8 in P&M.
- * While an 8-point DCT cannot be done in less than 11 multiplies, it is
- * possible to arrange the computation so that many of the multiplies are
- * simple scalings of the final outputs.  These multiplies can then be
- * folded into the multiplications or divisions by the JPEG quantization
- * table entries.  The AA&N method leaves only 5 multiplies and 29 adds
- * to be done in the DCT itself.
- * The primary disadvantage of this method is that with a fixed-point
- * implementation, accuracy is lost due to imprecise representation of the
- * scaled quantization values.  However, that problem does not arise if
- * we use floating point arithmetic.
- */
-
-#define JPEG_INTERNALS
-#include "jinclude.h"
-#include "jpeglib.h"
-#include "jdct.h"		/* Private declarations for DCT subsystem */
-
-#ifdef DCT_FLOAT_SUPPORTED
-
-
-/*
- * This module is specialized to the case DCTSIZE = 8.
- */
-
-#if DCTSIZE != 8
-  Sorry, this code only copes with 8x8 DCTs. /* deliberate syntax err */
-#endif
-
-
-/*
- * Perform the forward DCT on one block of samples.
- */
-
-GLOBAL(void)
-jpeg_fdct_float (FAST_FLOAT * data)
-{
-  FAST_FLOAT tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7;
-  FAST_FLOAT tmp10, tmp11, tmp12, tmp13;
-  FAST_FLOAT z1, z2, z3, z4, z5, z11, z13;
-  FAST_FLOAT *dataptr;
-  int ctr;
-
-  /* Pass 1: process rows. */
-
-  dataptr = data;
-  for (ctr = DCTSIZE-1; ctr >= 0; ctr--) {
-    tmp0 = dataptr[0] + dataptr[7];
-    tmp7 = dataptr[0] - dataptr[7];
-    tmp1 = dataptr[1] + dataptr[6];
-    tmp6 = dataptr[1] - dataptr[6];
-    tmp2 = dataptr[2] + dataptr[5];
-    tmp5 = dataptr[2] - dataptr[5];
-    tmp3 = dataptr[3] + dataptr[4];
-    tmp4 = dataptr[3] - dataptr[4];
-    
-    /* Even part */
-    
-    tmp10 = tmp0 + tmp3;	/* phase 2 */
-    tmp13 = tmp0 - tmp3;
-    tmp11 = tmp1 + tmp2;
-    tmp12 = tmp1 - tmp2;
-    
-    dataptr[0] = tmp10 + tmp11; /* phase 3 */
-    dataptr[4] = tmp10 - tmp11;
-    
-    z1 = (tmp12 + tmp13) * ((FAST_FLOAT) 0.707106781); /* c4 */
-    dataptr[2] = tmp13 + z1;	/* phase 5 */
-    dataptr[6] = tmp13 - z1;
-    
-    /* Odd part */
-
-    tmp10 = tmp4 + tmp5;	/* phase 2 */
-    tmp11 = tmp5 + tmp6;
-    tmp12 = tmp6 + tmp7;
-
-    /* The rotator is modified from fig 4-8 to avoid extra negations. */
-    z5 = (tmp10 - tmp12) * ((FAST_FLOAT) 0.382683433); /* c6 */
-    z2 = ((FAST_FLOAT) 0.541196100) * tmp10 + z5; /* c2-c6 */
-    z4 = ((FAST_FLOAT) 1.306562965) * tmp12 + z5; /* c2+c6 */
-    z3 = tmp11 * ((FAST_FLOAT) 0.707106781); /* c4 */
-
-    z11 = tmp7 + z3;		/* phase 5 */
-    z13 = tmp7 - z3;
-
-    dataptr[5] = z13 + z2;	/* phase 6 */
-    dataptr[3] = z13 - z2;
-    dataptr[1] = z11 + z4;
-    dataptr[7] = z11 - z4;
-
-    dataptr += DCTSIZE;		/* advance pointer to next row */
-  }
-
-  /* Pass 2: process columns. */
-
-  dataptr = data;
-  for (ctr = DCTSIZE-1; ctr >= 0; ctr--) {
-    tmp0 = dataptr[DCTSIZE*0] + dataptr[DCTSIZE*7];
-    tmp7 = dataptr[DCTSIZE*0] - dataptr[DCTSIZE*7];
-    tmp1 = dataptr[DCTSIZE*1] + dataptr[DCTSIZE*6];
-    tmp6 = dataptr[DCTSIZE*1] - dataptr[DCTSIZE*6];
-    tmp2 = dataptr[DCTSIZE*2] + dataptr[DCTSIZE*5];
-    tmp5 = dataptr[DCTSIZE*2] - dataptr[DCTSIZE*5];
-    tmp3 = dataptr[DCTSIZE*3] + dataptr[DCTSIZE*4];
-    tmp4 = dataptr[DCTSIZE*3] - dataptr[DCTSIZE*4];
-    
-    /* Even part */
-    
-    tmp10 = tmp0 + tmp3;	/* phase 2 */
-    tmp13 = tmp0 - tmp3;
-    tmp11 = tmp1 + tmp2;
-    tmp12 = tmp1 - tmp2;
-    
-    dataptr[DCTSIZE*0] = tmp10 + tmp11; /* phase 3 */
-    dataptr[DCTSIZE*4] = tmp10 - tmp11;
-    
-    z1 = (tmp12 + tmp13) * ((FAST_FLOAT) 0.707106781); /* c4 */
-    dataptr[DCTSIZE*2] = tmp13 + z1; /* phase 5 */
-    dataptr[DCTSIZE*6] = tmp13 - z1;
-    
-    /* Odd part */
-
-    tmp10 = tmp4 + tmp5;	/* phase 2 */
-    tmp11 = tmp5 + tmp6;
-    tmp12 = tmp6 + tmp7;
-
-    /* The rotator is modified from fig 4-8 to avoid extra negations. */
-    z5 = (tmp10 - tmp12) * ((FAST_FLOAT) 0.382683433); /* c6 */
-    z2 = ((FAST_FLOAT) 0.541196100) * tmp10 + z5; /* c2-c6 */
-    z4 = ((FAST_FLOAT) 1.306562965) * tmp12 + z5; /* c2+c6 */
-    z3 = tmp11 * ((FAST_FLOAT) 0.707106781); /* c4 */
-
-    z11 = tmp7 + z3;		/* phase 5 */
-    z13 = tmp7 - z3;
-
-    dataptr[DCTSIZE*5] = z13 + z2; /* phase 6 */
-    dataptr[DCTSIZE*3] = z13 - z2;
-    dataptr[DCTSIZE*1] = z11 + z4;
-    dataptr[DCTSIZE*7] = z11 - z4;
-
-    dataptr++;			/* advance pointer to next column */
-  }
-}
-
-#endif /* DCT_FLOAT_SUPPORTED */
diff --git a/src/libjpeg/jfdctfst.c b/src/libjpeg/jfdctfst.c
deleted file mode 100644
index 005a74f..0000000
--- a/src/libjpeg/jfdctfst.c
+++ /dev/null
@@ -1,224 +0,0 @@
-/*
- * jfdctfst.c
- *
- * Copyright (C) 1994-1996, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains a fast, not so accurate integer implementation of the
- * forward DCT (Discrete Cosine Transform).
- *
- * A 2-D DCT can be done by 1-D DCT on each row followed by 1-D DCT
- * on each column.  Direct algorithms are also available, but they are
- * much more complex and seem not to be any faster when reduced to code.
- *
- * This implementation is based on Arai, Agui, and Nakajima's algorithm for
- * scaled DCT.  Their original paper (Trans. IEICE E-71(11):1095) is in
- * Japanese, but the algorithm is described in the Pennebaker & Mitchell
- * JPEG textbook (see REFERENCES section in file README).  The following code
- * is based directly on figure 4-8 in P&M.
- * While an 8-point DCT cannot be done in less than 11 multiplies, it is
- * possible to arrange the computation so that many of the multiplies are
- * simple scalings of the final outputs.  These multiplies can then be
- * folded into the multiplications or divisions by the JPEG quantization
- * table entries.  The AA&N method leaves only 5 multiplies and 29 adds
- * to be done in the DCT itself.
- * The primary disadvantage of this method is that with fixed-point math,
- * accuracy is lost due to imprecise representation of the scaled
- * quantization values.  The smaller the quantization table entry, the less
- * precise the scaled value, so this implementation does worse with high-
- * quality-setting files than with low-quality ones.
- */
-
-#define JPEG_INTERNALS
-#include "jinclude.h"
-#include "jpeglib.h"
-#include "jdct.h"		/* Private declarations for DCT subsystem */
-
-#ifdef DCT_IFAST_SUPPORTED
-
-
-/*
- * This module is specialized to the case DCTSIZE = 8.
- */
-
-#if DCTSIZE != 8
-  Sorry, this code only copes with 8x8 DCTs. /* deliberate syntax err */
-#endif
-
-
-/* Scaling decisions are generally the same as in the LL&M algorithm;
- * see jfdctint.c for more details.  However, we choose to descale
- * (right shift) multiplication products as soon as they are formed,
- * rather than carrying additional fractional bits into subsequent additions.
- * This compromises accuracy slightly, but it lets us save a few shifts.
- * More importantly, 16-bit arithmetic is then adequate (for 8-bit samples)
- * everywhere except in the multiplications proper; this saves a good deal
- * of work on 16-bit-int machines.
- *
- * Again to save a few shifts, the intermediate results between pass 1 and
- * pass 2 are not upscaled, but are represented only to integral precision.
- *
- * A final compromise is to represent the multiplicative constants to only
- * 8 fractional bits, rather than 13.  This saves some shifting work on some
- * machines, and may also reduce the cost of multiplication (since there
- * are fewer one-bits in the constants).
- */
-
-#define CONST_BITS  8
-
-
-/* Some C compilers fail to reduce "FIX(constant)" at compile time, thus
- * causing a lot of useless floating-point operations at run time.
- * To get around this we use the following pre-calculated constants.
- * If you change CONST_BITS you may want to add appropriate values.
- * (With a reasonable C compiler, you can just rely on the FIX() macro...)
- */
-
-#if CONST_BITS == 8
-#define FIX_0_382683433  ((INT32)   98)		/* FIX(0.382683433) */
-#define FIX_0_541196100  ((INT32)  139)		/* FIX(0.541196100) */
-#define FIX_0_707106781  ((INT32)  181)		/* FIX(0.707106781) */
-#define FIX_1_306562965  ((INT32)  334)		/* FIX(1.306562965) */
-#else
-#define FIX_0_382683433  FIX(0.382683433)
-#define FIX_0_541196100  FIX(0.541196100)
-#define FIX_0_707106781  FIX(0.707106781)
-#define FIX_1_306562965  FIX(1.306562965)
-#endif
-
-
-/* We can gain a little more speed, with a further compromise in accuracy,
- * by omitting the addition in a descaling shift.  This yields an incorrectly
- * rounded result half the time...
- */
-
-#ifndef USE_ACCURATE_ROUNDING
-#undef DESCALE
-#define DESCALE(x,n)  RIGHT_SHIFT(x, n)
-#endif
-
-
-/* Multiply a DCTELEM variable by an INT32 constant, and immediately
- * descale to yield a DCTELEM result.
- */
-
-#define MULTIPLY(var,const)  ((DCTELEM) DESCALE((var) * (const), CONST_BITS))
-
-
-/*
- * Perform the forward DCT on one block of samples.
- */
-
-GLOBAL(void)
-jpeg_fdct_ifast (DCTELEM * data)
-{
-  DCTELEM tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7;
-  DCTELEM tmp10, tmp11, tmp12, tmp13;
-  DCTELEM z1, z2, z3, z4, z5, z11, z13;
-  DCTELEM *dataptr;
-  int ctr;
-  SHIFT_TEMPS
-
-  /* Pass 1: process rows. */
-
-  dataptr = data;
-  for (ctr = DCTSIZE-1; ctr >= 0; ctr--) {
-    tmp0 = dataptr[0] + dataptr[7];
-    tmp7 = dataptr[0] - dataptr[7];
-    tmp1 = dataptr[1] + dataptr[6];
-    tmp6 = dataptr[1] - dataptr[6];
-    tmp2 = dataptr[2] + dataptr[5];
-    tmp5 = dataptr[2] - dataptr[5];
-    tmp3 = dataptr[3] + dataptr[4];
-    tmp4 = dataptr[3] - dataptr[4];
-    
-    /* Even part */
-    
-    tmp10 = tmp0 + tmp3;	/* phase 2 */
-    tmp13 = tmp0 - tmp3;
-    tmp11 = tmp1 + tmp2;
-    tmp12 = tmp1 - tmp2;
-    
-    dataptr[0] = tmp10 + tmp11; /* phase 3 */
-    dataptr[4] = tmp10 - tmp11;
-    
-    z1 = MULTIPLY(tmp12 + tmp13, FIX_0_707106781); /* c4 */
-    dataptr[2] = tmp13 + z1;	/* phase 5 */
-    dataptr[6] = tmp13 - z1;
-    
-    /* Odd part */
-
-    tmp10 = tmp4 + tmp5;	/* phase 2 */
-    tmp11 = tmp5 + tmp6;
-    tmp12 = tmp6 + tmp7;
-
-    /* The rotator is modified from fig 4-8 to avoid extra negations. */
-    z5 = MULTIPLY(tmp10 - tmp12, FIX_0_382683433); /* c6 */
-    z2 = MULTIPLY(tmp10, FIX_0_541196100) + z5; /* c2-c6 */
-    z4 = MULTIPLY(tmp12, FIX_1_306562965) + z5; /* c2+c6 */
-    z3 = MULTIPLY(tmp11, FIX_0_707106781); /* c4 */
-
-    z11 = tmp7 + z3;		/* phase 5 */
-    z13 = tmp7 - z3;
-
-    dataptr[5] = z13 + z2;	/* phase 6 */
-    dataptr[3] = z13 - z2;
-    dataptr[1] = z11 + z4;
-    dataptr[7] = z11 - z4;
-
-    dataptr += DCTSIZE;		/* advance pointer to next row */
-  }
-
-  /* Pass 2: process columns. */
-
-  dataptr = data;
-  for (ctr = DCTSIZE-1; ctr >= 0; ctr--) {
-    tmp0 = dataptr[DCTSIZE*0] + dataptr[DCTSIZE*7];
-    tmp7 = dataptr[DCTSIZE*0] - dataptr[DCTSIZE*7];
-    tmp1 = dataptr[DCTSIZE*1] + dataptr[DCTSIZE*6];
-    tmp6 = dataptr[DCTSIZE*1] - dataptr[DCTSIZE*6];
-    tmp2 = dataptr[DCTSIZE*2] + dataptr[DCTSIZE*5];
-    tmp5 = dataptr[DCTSIZE*2] - dataptr[DCTSIZE*5];
-    tmp3 = dataptr[DCTSIZE*3] + dataptr[DCTSIZE*4];
-    tmp4 = dataptr[DCTSIZE*3] - dataptr[DCTSIZE*4];
-    
-    /* Even part */
-    
-    tmp10 = tmp0 + tmp3;	/* phase 2 */
-    tmp13 = tmp0 - tmp3;
-    tmp11 = tmp1 + tmp2;
-    tmp12 = tmp1 - tmp2;
-    
-    dataptr[DCTSIZE*0] = tmp10 + tmp11; /* phase 3 */
-    dataptr[DCTSIZE*4] = tmp10 - tmp11;
-    
-    z1 = MULTIPLY(tmp12 + tmp13, FIX_0_707106781); /* c4 */
-    dataptr[DCTSIZE*2] = tmp13 + z1; /* phase 5 */
-    dataptr[DCTSIZE*6] = tmp13 - z1;
-    
-    /* Odd part */
-
-    tmp10 = tmp4 + tmp5;	/* phase 2 */
-    tmp11 = tmp5 + tmp6;
-    tmp12 = tmp6 + tmp7;
-
-    /* The rotator is modified from fig 4-8 to avoid extra negations. */
-    z5 = MULTIPLY(tmp10 - tmp12, FIX_0_382683433); /* c6 */
-    z2 = MULTIPLY(tmp10, FIX_0_541196100) + z5; /* c2-c6 */
-    z4 = MULTIPLY(tmp12, FIX_1_306562965) + z5; /* c2+c6 */
-    z3 = MULTIPLY(tmp11, FIX_0_707106781); /* c4 */
-
-    z11 = tmp7 + z3;		/* phase 5 */
-    z13 = tmp7 - z3;
-
-    dataptr[DCTSIZE*5] = z13 + z2; /* phase 6 */
-    dataptr[DCTSIZE*3] = z13 - z2;
-    dataptr[DCTSIZE*1] = z11 + z4;
-    dataptr[DCTSIZE*7] = z11 - z4;
-
-    dataptr++;			/* advance pointer to next column */
-  }
-}
-
-#endif /* DCT_IFAST_SUPPORTED */
diff --git a/src/libjpeg/jfdctint.c b/src/libjpeg/jfdctint.c
deleted file mode 100644
index d626927..0000000
--- a/src/libjpeg/jfdctint.c
+++ /dev/null
@@ -1,283 +0,0 @@
-/*
- * jfdctint.c
- *
- * Copyright (C) 1991-1996, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains a slow-but-accurate integer implementation of the
- * forward DCT (Discrete Cosine Transform).
- *
- * A 2-D DCT can be done by 1-D DCT on each row followed by 1-D DCT
- * on each column.  Direct algorithms are also available, but they are
- * much more complex and seem not to be any faster when reduced to code.
- *
- * This implementation is based on an algorithm described in
- *   C. Loeffler, A. Ligtenberg and G. Moschytz, "Practical Fast 1-D DCT
- *   Algorithms with 11 Multiplications", Proc. Int'l. Conf. on Acoustics,
- *   Speech, and Signal Processing 1989 (ICASSP '89), pp. 988-991.
- * The primary algorithm described there uses 11 multiplies and 29 adds.
- * We use their alternate method with 12 multiplies and 32 adds.
- * The advantage of this method is that no data path contains more than one
- * multiplication; this allows a very simple and accurate implementation in
- * scaled fixed-point arithmetic, with a minimal number of shifts.
- */
-
-#define JPEG_INTERNALS
-#include "jinclude.h"
-#include "jpeglib.h"
-#include "jdct.h"		/* Private declarations for DCT subsystem */
-
-#ifdef DCT_ISLOW_SUPPORTED
-
-
-/*
- * This module is specialized to the case DCTSIZE = 8.
- */
-
-#if DCTSIZE != 8
-  Sorry, this code only copes with 8x8 DCTs. /* deliberate syntax err */
-#endif
-
-
-/*
- * The poop on this scaling stuff is as follows:
- *
- * Each 1-D DCT step produces outputs which are a factor of sqrt(N)
- * larger than the true DCT outputs.  The final outputs are therefore
- * a factor of N larger than desired; since N=8 this can be cured by
- * a simple right shift at the end of the algorithm.  The advantage of
- * this arrangement is that we save two multiplications per 1-D DCT,
- * because the y0 and y4 outputs need not be divided by sqrt(N).
- * In the IJG code, this factor of 8 is removed by the quantization step
- * (in jcdctmgr.c), NOT in this module.
- *
- * We have to do addition and subtraction of the integer inputs, which
- * is no problem, and multiplication by fractional constants, which is
- * a problem to do in integer arithmetic.  We multiply all the constants
- * by CONST_SCALE and convert them to integer constants (thus retaining
- * CONST_BITS bits of precision in the constants).  After doing a
- * multiplication we have to divide the product by CONST_SCALE, with proper
- * rounding, to produce the correct output.  This division can be done
- * cheaply as a right shift of CONST_BITS bits.  We postpone shifting
- * as long as possible so that partial sums can be added together with
- * full fractional precision.
- *
- * The outputs of the first pass are scaled up by PASS1_BITS bits so that
- * they are represented to better-than-integral precision.  These outputs
- * require BITS_IN_JSAMPLE + PASS1_BITS + 3 bits; this fits in a 16-bit word
- * with the recommended scaling.  (For 12-bit sample data, the intermediate
- * array is INT32 anyway.)
- *
- * To avoid overflow of the 32-bit intermediate results in pass 2, we must
- * have BITS_IN_JSAMPLE + CONST_BITS + PASS1_BITS <= 26.  Error analysis
- * shows that the values given below are the most effective.
- */
-
-#if BITS_IN_JSAMPLE == 8
-#define CONST_BITS  13
-#define PASS1_BITS  2
-#else
-#define CONST_BITS  13
-#define PASS1_BITS  1		/* lose a little precision to avoid overflow */
-#endif
-
-/* Some C compilers fail to reduce "FIX(constant)" at compile time, thus
- * causing a lot of useless floating-point operations at run time.
- * To get around this we use the following pre-calculated constants.
- * If you change CONST_BITS you may want to add appropriate values.
- * (With a reasonable C compiler, you can just rely on the FIX() macro...)
- */
-
-#if CONST_BITS == 13
-#define FIX_0_298631336  ((INT32)  2446)	/* FIX(0.298631336) */
-#define FIX_0_390180644  ((INT32)  3196)	/* FIX(0.390180644) */
-#define FIX_0_541196100  ((INT32)  4433)	/* FIX(0.541196100) */
-#define FIX_0_765366865  ((INT32)  6270)	/* FIX(0.765366865) */
-#define FIX_0_899976223  ((INT32)  7373)	/* FIX(0.899976223) */
-#define FIX_1_175875602  ((INT32)  9633)	/* FIX(1.175875602) */
-#define FIX_1_501321110  ((INT32)  12299)	/* FIX(1.501321110) */
-#define FIX_1_847759065  ((INT32)  15137)	/* FIX(1.847759065) */
-#define FIX_1_961570560  ((INT32)  16069)	/* FIX(1.961570560) */
-#define FIX_2_053119869  ((INT32)  16819)	/* FIX(2.053119869) */
-#define FIX_2_562915447  ((INT32)  20995)	/* FIX(2.562915447) */
-#define FIX_3_072711026  ((INT32)  25172)	/* FIX(3.072711026) */
-#else
-#define FIX_0_298631336  FIX(0.298631336)
-#define FIX_0_390180644  FIX(0.390180644)
-#define FIX_0_541196100  FIX(0.541196100)
-#define FIX_0_765366865  FIX(0.765366865)
-#define FIX_0_899976223  FIX(0.899976223)
-#define FIX_1_175875602  FIX(1.175875602)
-#define FIX_1_501321110  FIX(1.501321110)
-#define FIX_1_847759065  FIX(1.847759065)
-#define FIX_1_961570560  FIX(1.961570560)
-#define FIX_2_053119869  FIX(2.053119869)
-#define FIX_2_562915447  FIX(2.562915447)
-#define FIX_3_072711026  FIX(3.072711026)
-#endif
-
-
-/* Multiply an INT32 variable by an INT32 constant to yield an INT32 result.
- * For 8-bit samples with the recommended scaling, all the variable
- * and constant values involved are no more than 16 bits wide, so a
- * 16x16->32 bit multiply can be used instead of a full 32x32 multiply.
- * For 12-bit samples, a full 32-bit multiplication will be needed.
- */
-
-#if BITS_IN_JSAMPLE == 8
-#define MULTIPLY(var,const)  MULTIPLY16C16(var,const)
-#else
-#define MULTIPLY(var,const)  ((var) * (const))
-#endif
-
-
-/*
- * Perform the forward DCT on one block of samples.
- */
-
-GLOBAL(void)
-jpeg_fdct_islow (DCTELEM * data)
-{
-  INT32 tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7;
-  INT32 tmp10, tmp11, tmp12, tmp13;
-  INT32 z1, z2, z3, z4, z5;
-  DCTELEM *dataptr;
-  int ctr;
-  SHIFT_TEMPS
-
-  /* Pass 1: process rows. */
-  /* Note results are scaled up by sqrt(8) compared to a true DCT; */
-  /* furthermore, we scale the results by 2**PASS1_BITS. */
-
-  dataptr = data;
-  for (ctr = DCTSIZE-1; ctr >= 0; ctr--) {
-    tmp0 = dataptr[0] + dataptr[7];
-    tmp7 = dataptr[0] - dataptr[7];
-    tmp1 = dataptr[1] + dataptr[6];
-    tmp6 = dataptr[1] - dataptr[6];
-    tmp2 = dataptr[2] + dataptr[5];
-    tmp5 = dataptr[2] - dataptr[5];
-    tmp3 = dataptr[3] + dataptr[4];
-    tmp4 = dataptr[3] - dataptr[4];
-    
-    /* Even part per LL&M figure 1 --- note that published figure is faulty;
-     * rotator "sqrt(2)*c1" should be "sqrt(2)*c6".
-     */
-    
-    tmp10 = tmp0 + tmp3;
-    tmp13 = tmp0 - tmp3;
-    tmp11 = tmp1 + tmp2;
-    tmp12 = tmp1 - tmp2;
-    
-    dataptr[0] = (DCTELEM) ((tmp10 + tmp11) << PASS1_BITS);
-    dataptr[4] = (DCTELEM) ((tmp10 - tmp11) << PASS1_BITS);
-    
-    z1 = MULTIPLY(tmp12 + tmp13, FIX_0_541196100);
-    dataptr[2] = (DCTELEM) DESCALE(z1 + MULTIPLY(tmp13, FIX_0_765366865),
-				   CONST_BITS-PASS1_BITS);
-    dataptr[6] = (DCTELEM) DESCALE(z1 + MULTIPLY(tmp12, - FIX_1_847759065),
-				   CONST_BITS-PASS1_BITS);
-    
-    /* Odd part per figure 8 --- note paper omits factor of sqrt(2).
-     * cK represents cos(K*pi/16).
-     * i0..i3 in the paper are tmp4..tmp7 here.
-     */
-    
-    z1 = tmp4 + tmp7;
-    z2 = tmp5 + tmp6;
-    z3 = tmp4 + tmp6;
-    z4 = tmp5 + tmp7;
-    z5 = MULTIPLY(z3 + z4, FIX_1_175875602); /* sqrt(2) * c3 */
-    
-    tmp4 = MULTIPLY(tmp4, FIX_0_298631336); /* sqrt(2) * (-c1+c3+c5-c7) */
-    tmp5 = MULTIPLY(tmp5, FIX_2_053119869); /* sqrt(2) * ( c1+c3-c5+c7) */
-    tmp6 = MULTIPLY(tmp6, FIX_3_072711026); /* sqrt(2) * ( c1+c3+c5-c7) */
-    tmp7 = MULTIPLY(tmp7, FIX_1_501321110); /* sqrt(2) * ( c1+c3-c5-c7) */
-    z1 = MULTIPLY(z1, - FIX_0_899976223); /* sqrt(2) * (c7-c3) */
-    z2 = MULTIPLY(z2, - FIX_2_562915447); /* sqrt(2) * (-c1-c3) */
-    z3 = MULTIPLY(z3, - FIX_1_961570560); /* sqrt(2) * (-c3-c5) */
-    z4 = MULTIPLY(z4, - FIX_0_390180644); /* sqrt(2) * (c5-c3) */
-    
-    z3 += z5;
-    z4 += z5;
-    
-    dataptr[7] = (DCTELEM) DESCALE(tmp4 + z1 + z3, CONST_BITS-PASS1_BITS);
-    dataptr[5] = (DCTELEM) DESCALE(tmp5 + z2 + z4, CONST_BITS-PASS1_BITS);
-    dataptr[3] = (DCTELEM) DESCALE(tmp6 + z2 + z3, CONST_BITS-PASS1_BITS);
-    dataptr[1] = (DCTELEM) DESCALE(tmp7 + z1 + z4, CONST_BITS-PASS1_BITS);
-    
-    dataptr += DCTSIZE;		/* advance pointer to next row */
-  }
-
-  /* Pass 2: process columns.
-   * We remove the PASS1_BITS scaling, but leave the results scaled up
-   * by an overall factor of 8.
-   */
-
-  dataptr = data;
-  for (ctr = DCTSIZE-1; ctr >= 0; ctr--) {
-    tmp0 = dataptr[DCTSIZE*0] + dataptr[DCTSIZE*7];
-    tmp7 = dataptr[DCTSIZE*0] - dataptr[DCTSIZE*7];
-    tmp1 = dataptr[DCTSIZE*1] + dataptr[DCTSIZE*6];
-    tmp6 = dataptr[DCTSIZE*1] - dataptr[DCTSIZE*6];
-    tmp2 = dataptr[DCTSIZE*2] + dataptr[DCTSIZE*5];
-    tmp5 = dataptr[DCTSIZE*2] - dataptr[DCTSIZE*5];
-    tmp3 = dataptr[DCTSIZE*3] + dataptr[DCTSIZE*4];
-    tmp4 = dataptr[DCTSIZE*3] - dataptr[DCTSIZE*4];
-    
-    /* Even part per LL&M figure 1 --- note that published figure is faulty;
-     * rotator "sqrt(2)*c1" should be "sqrt(2)*c6".
-     */
-    
-    tmp10 = tmp0 + tmp3;
-    tmp13 = tmp0 - tmp3;
-    tmp11 = tmp1 + tmp2;
-    tmp12 = tmp1 - tmp2;
-    
-    dataptr[DCTSIZE*0] = (DCTELEM) DESCALE(tmp10 + tmp11, PASS1_BITS);
-    dataptr[DCTSIZE*4] = (DCTELEM) DESCALE(tmp10 - tmp11, PASS1_BITS);
-    
-    z1 = MULTIPLY(tmp12 + tmp13, FIX_0_541196100);
-    dataptr[DCTSIZE*2] = (DCTELEM) DESCALE(z1 + MULTIPLY(tmp13, FIX_0_765366865),
-					   CONST_BITS+PASS1_BITS);
-    dataptr[DCTSIZE*6] = (DCTELEM) DESCALE(z1 + MULTIPLY(tmp12, - FIX_1_847759065),
-					   CONST_BITS+PASS1_BITS);
-    
-    /* Odd part per figure 8 --- note paper omits factor of sqrt(2).
-     * cK represents cos(K*pi/16).
-     * i0..i3 in the paper are tmp4..tmp7 here.
-     */
-    
-    z1 = tmp4 + tmp7;
-    z2 = tmp5 + tmp6;
-    z3 = tmp4 + tmp6;
-    z4 = tmp5 + tmp7;
-    z5 = MULTIPLY(z3 + z4, FIX_1_175875602); /* sqrt(2) * c3 */
-    
-    tmp4 = MULTIPLY(tmp4, FIX_0_298631336); /* sqrt(2) * (-c1+c3+c5-c7) */
-    tmp5 = MULTIPLY(tmp5, FIX_2_053119869); /* sqrt(2) * ( c1+c3-c5+c7) */
-    tmp6 = MULTIPLY(tmp6, FIX_3_072711026); /* sqrt(2) * ( c1+c3+c5-c7) */
-    tmp7 = MULTIPLY(tmp7, FIX_1_501321110); /* sqrt(2) * ( c1+c3-c5-c7) */
-    z1 = MULTIPLY(z1, - FIX_0_899976223); /* sqrt(2) * (c7-c3) */
-    z2 = MULTIPLY(z2, - FIX_2_562915447); /* sqrt(2) * (-c1-c3) */
-    z3 = MULTIPLY(z3, - FIX_1_961570560); /* sqrt(2) * (-c3-c5) */
-    z4 = MULTIPLY(z4, - FIX_0_390180644); /* sqrt(2) * (c5-c3) */
-    
-    z3 += z5;
-    z4 += z5;
-    
-    dataptr[DCTSIZE*7] = (DCTELEM) DESCALE(tmp4 + z1 + z3,
-					   CONST_BITS+PASS1_BITS);
-    dataptr[DCTSIZE*5] = (DCTELEM) DESCALE(tmp5 + z2 + z4,
-					   CONST_BITS+PASS1_BITS);
-    dataptr[DCTSIZE*3] = (DCTELEM) DESCALE(tmp6 + z2 + z3,
-					   CONST_BITS+PASS1_BITS);
-    dataptr[DCTSIZE*1] = (DCTELEM) DESCALE(tmp7 + z1 + z4,
-					   CONST_BITS+PASS1_BITS);
-    
-    dataptr++;			/* advance pointer to next column */
-  }
-}
-
-#endif /* DCT_ISLOW_SUPPORTED */
diff --git a/src/libjpeg/jidctflt.c b/src/libjpeg/jidctflt.c
deleted file mode 100644
index 5fea54c..0000000
--- a/src/libjpeg/jidctflt.c
+++ /dev/null
@@ -1,242 +0,0 @@
-/*
- * jidctflt.c
- *
- * Copyright (C) 1994-1998, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains a floating-point implementation of the
- * inverse DCT (Discrete Cosine Transform).  In the IJG code, this routine
- * must also perform dequantization of the input coefficients.
- *
- * This implementation should be more accurate than either of the integer
- * IDCT implementations.  However, it may not give the same results on all
- * machines because of differences in roundoff behavior.  Speed will depend
- * on the hardware's floating point capacity.
- *
- * A 2-D IDCT can be done by 1-D IDCT on each column followed by 1-D IDCT
- * on each row (or vice versa, but it's more convenient to emit a row at
- * a time).  Direct algorithms are also available, but they are much more
- * complex and seem not to be any faster when reduced to code.
- *
- * This implementation is based on Arai, Agui, and Nakajima's algorithm for
- * scaled DCT.  Their original paper (Trans. IEICE E-71(11):1095) is in
- * Japanese, but the algorithm is described in the Pennebaker & Mitchell
- * JPEG textbook (see REFERENCES section in file README).  The following code
- * is based directly on figure 4-8 in P&M.
- * While an 8-point DCT cannot be done in less than 11 multiplies, it is
- * possible to arrange the computation so that many of the multiplies are
- * simple scalings of the final outputs.  These multiplies can then be
- * folded into the multiplications or divisions by the JPEG quantization
- * table entries.  The AA&N method leaves only 5 multiplies and 29 adds
- * to be done in the DCT itself.
- * The primary disadvantage of this method is that with a fixed-point
- * implementation, accuracy is lost due to imprecise representation of the
- * scaled quantization values.  However, that problem does not arise if
- * we use floating point arithmetic.
- */
-
-#define JPEG_INTERNALS
-#include "jinclude.h"
-#include "jpeglib.h"
-#include "jdct.h"		/* Private declarations for DCT subsystem */
-
-#ifdef DCT_FLOAT_SUPPORTED
-
-
-/*
- * This module is specialized to the case DCTSIZE = 8.
- */
-
-#if DCTSIZE != 8
-  Sorry, this code only copes with 8x8 DCTs. /* deliberate syntax err */
-#endif
-
-
-/* Dequantize a coefficient by multiplying it by the multiplier-table
- * entry; produce a float result.
- */
-
-#define DEQUANTIZE(coef,quantval)  (((FAST_FLOAT) (coef)) * (quantval))
-
-
-/*
- * Perform dequantization and inverse DCT on one block of coefficients.
- */
-
-GLOBAL(void)
-jpeg_idct_float (j_decompress_ptr cinfo, jpeg_component_info * compptr,
-		 JCOEFPTR coef_block,
-		 JSAMPARRAY output_buf, JDIMENSION output_col)
-{
-  FAST_FLOAT tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7;
-  FAST_FLOAT tmp10, tmp11, tmp12, tmp13;
-  FAST_FLOAT z5, z10, z11, z12, z13;
-  JCOEFPTR inptr;
-  FLOAT_MULT_TYPE * quantptr;
-  FAST_FLOAT * wsptr;
-  JSAMPROW outptr;
-  JSAMPLE *range_limit = IDCT_range_limit(cinfo);
-  int ctr;
-  FAST_FLOAT workspace[DCTSIZE2]; /* buffers data between passes */
-  SHIFT_TEMPS
-
-  /* Pass 1: process columns from input, store into work array. */
-
-  inptr = coef_block;
-  quantptr = (FLOAT_MULT_TYPE *) compptr->dct_table;
-  wsptr = workspace;
-  for (ctr = DCTSIZE; ctr > 0; ctr--) {
-    /* Due to quantization, we will usually find that many of the input
-     * coefficients are zero, especially the AC terms.  We can exploit this
-     * by short-circuiting the IDCT calculation for any column in which all
-     * the AC terms are zero.  In that case each output is equal to the
-     * DC coefficient (with scale factor as needed).
-     * With typical images and quantization tables, half or more of the
-     * column DCT calculations can be simplified this way.
-     */
-    
-    if (inptr[DCTSIZE*1] == 0 && inptr[DCTSIZE*2] == 0 &&
-	inptr[DCTSIZE*3] == 0 && inptr[DCTSIZE*4] == 0 &&
-	inptr[DCTSIZE*5] == 0 && inptr[DCTSIZE*6] == 0 &&
-	inptr[DCTSIZE*7] == 0) {
-      /* AC terms all zero */
-      FAST_FLOAT dcval = DEQUANTIZE(inptr[DCTSIZE*0], quantptr[DCTSIZE*0]);
-      
-      wsptr[DCTSIZE*0] = dcval;
-      wsptr[DCTSIZE*1] = dcval;
-      wsptr[DCTSIZE*2] = dcval;
-      wsptr[DCTSIZE*3] = dcval;
-      wsptr[DCTSIZE*4] = dcval;
-      wsptr[DCTSIZE*5] = dcval;
-      wsptr[DCTSIZE*6] = dcval;
-      wsptr[DCTSIZE*7] = dcval;
-      
-      inptr++;			/* advance pointers to next column */
-      quantptr++;
-      wsptr++;
-      continue;
-    }
-    
-    /* Even part */
-
-    tmp0 = DEQUANTIZE(inptr[DCTSIZE*0], quantptr[DCTSIZE*0]);
-    tmp1 = DEQUANTIZE(inptr[DCTSIZE*2], quantptr[DCTSIZE*2]);
-    tmp2 = DEQUANTIZE(inptr[DCTSIZE*4], quantptr[DCTSIZE*4]);
-    tmp3 = DEQUANTIZE(inptr[DCTSIZE*6], quantptr[DCTSIZE*6]);
-
-    tmp10 = tmp0 + tmp2;	/* phase 3 */
-    tmp11 = tmp0 - tmp2;
-
-    tmp13 = tmp1 + tmp3;	/* phases 5-3 */
-    tmp12 = (tmp1 - tmp3) * ((FAST_FLOAT) 1.414213562) - tmp13; /* 2*c4 */
-
-    tmp0 = tmp10 + tmp13;	/* phase 2 */
-    tmp3 = tmp10 - tmp13;
-    tmp1 = tmp11 + tmp12;
-    tmp2 = tmp11 - tmp12;
-    
-    /* Odd part */
-
-    tmp4 = DEQUANTIZE(inptr[DCTSIZE*1], quantptr[DCTSIZE*1]);
-    tmp5 = DEQUANTIZE(inptr[DCTSIZE*3], quantptr[DCTSIZE*3]);
-    tmp6 = DEQUANTIZE(inptr[DCTSIZE*5], quantptr[DCTSIZE*5]);
-    tmp7 = DEQUANTIZE(inptr[DCTSIZE*7], quantptr[DCTSIZE*7]);
-
-    z13 = tmp6 + tmp5;		/* phase 6 */
-    z10 = tmp6 - tmp5;
-    z11 = tmp4 + tmp7;
-    z12 = tmp4 - tmp7;
-
-    tmp7 = z11 + z13;		/* phase 5 */
-    tmp11 = (z11 - z13) * ((FAST_FLOAT) 1.414213562); /* 2*c4 */
-
-    z5 = (z10 + z12) * ((FAST_FLOAT) 1.847759065); /* 2*c2 */
-    tmp10 = ((FAST_FLOAT) 1.082392200) * z12 - z5; /* 2*(c2-c6) */
-    tmp12 = ((FAST_FLOAT) -2.613125930) * z10 + z5; /* -2*(c2+c6) */
-
-    tmp6 = tmp12 - tmp7;	/* phase 2 */
-    tmp5 = tmp11 - tmp6;
-    tmp4 = tmp10 + tmp5;
-
-    wsptr[DCTSIZE*0] = tmp0 + tmp7;
-    wsptr[DCTSIZE*7] = tmp0 - tmp7;
-    wsptr[DCTSIZE*1] = tmp1 + tmp6;
-    wsptr[DCTSIZE*6] = tmp1 - tmp6;
-    wsptr[DCTSIZE*2] = tmp2 + tmp5;
-    wsptr[DCTSIZE*5] = tmp2 - tmp5;
-    wsptr[DCTSIZE*4] = tmp3 + tmp4;
-    wsptr[DCTSIZE*3] = tmp3 - tmp4;
-
-    inptr++;			/* advance pointers to next column */
-    quantptr++;
-    wsptr++;
-  }
-  
-  /* Pass 2: process rows from work array, store into output array. */
-  /* Note that we must descale the results by a factor of 8 == 2**3. */
-
-  wsptr = workspace;
-  for (ctr = 0; ctr < DCTSIZE; ctr++) {
-    outptr = output_buf[ctr] + output_col;
-    /* Rows of zeroes can be exploited in the same way as we did with columns.
-     * However, the column calculation has created many nonzero AC terms, so
-     * the simplification applies less often (typically 5% to 10% of the time).
-     * And testing floats for zero is relatively expensive, so we don't bother.
-     */
-    
-    /* Even part */
-
-    tmp10 = wsptr[0] + wsptr[4];
-    tmp11 = wsptr[0] - wsptr[4];
-
-    tmp13 = wsptr[2] + wsptr[6];
-    tmp12 = (wsptr[2] - wsptr[6]) * ((FAST_FLOAT) 1.414213562) - tmp13;
-
-    tmp0 = tmp10 + tmp13;
-    tmp3 = tmp10 - tmp13;
-    tmp1 = tmp11 + tmp12;
-    tmp2 = tmp11 - tmp12;
-
-    /* Odd part */
-
-    z13 = wsptr[5] + wsptr[3];
-    z10 = wsptr[5] - wsptr[3];
-    z11 = wsptr[1] + wsptr[7];
-    z12 = wsptr[1] - wsptr[7];
-
-    tmp7 = z11 + z13;
-    tmp11 = (z11 - z13) * ((FAST_FLOAT) 1.414213562);
-
-    z5 = (z10 + z12) * ((FAST_FLOAT) 1.847759065); /* 2*c2 */
-    tmp10 = ((FAST_FLOAT) 1.082392200) * z12 - z5; /* 2*(c2-c6) */
-    tmp12 = ((FAST_FLOAT) -2.613125930) * z10 + z5; /* -2*(c2+c6) */
-
-    tmp6 = tmp12 - tmp7;
-    tmp5 = tmp11 - tmp6;
-    tmp4 = tmp10 + tmp5;
-
-    /* Final output stage: scale down by a factor of 8 and range-limit */
-
-    outptr[0] = range_limit[(int) DESCALE((INT32) (tmp0 + tmp7), 3)
-			    & RANGE_MASK];
-    outptr[7] = range_limit[(int) DESCALE((INT32) (tmp0 - tmp7), 3)
-			    & RANGE_MASK];
-    outptr[1] = range_limit[(int) DESCALE((INT32) (tmp1 + tmp6), 3)
-			    & RANGE_MASK];
-    outptr[6] = range_limit[(int) DESCALE((INT32) (tmp1 - tmp6), 3)
-			    & RANGE_MASK];
-    outptr[2] = range_limit[(int) DESCALE((INT32) (tmp2 + tmp5), 3)
-			    & RANGE_MASK];
-    outptr[5] = range_limit[(int) DESCALE((INT32) (tmp2 - tmp5), 3)
-			    & RANGE_MASK];
-    outptr[4] = range_limit[(int) DESCALE((INT32) (tmp3 + tmp4), 3)
-			    & RANGE_MASK];
-    outptr[3] = range_limit[(int) DESCALE((INT32) (tmp3 - tmp4), 3)
-			    & RANGE_MASK];
-    
-    wsptr += DCTSIZE;		/* advance pointer to next row */
-  }
-}
-
-#endif /* DCT_FLOAT_SUPPORTED */
diff --git a/src/libjpeg/jidctfst.c b/src/libjpeg/jidctfst.c
deleted file mode 100644
index 078b8c4..0000000
--- a/src/libjpeg/jidctfst.c
+++ /dev/null
@@ -1,368 +0,0 @@
-/*
- * jidctfst.c
- *
- * Copyright (C) 1994-1998, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains a fast, not so accurate integer implementation of the
- * inverse DCT (Discrete Cosine Transform).  In the IJG code, this routine
- * must also perform dequantization of the input coefficients.
- *
- * A 2-D IDCT can be done by 1-D IDCT on each column followed by 1-D IDCT
- * on each row (or vice versa, but it's more convenient to emit a row at
- * a time).  Direct algorithms are also available, but they are much more
- * complex and seem not to be any faster when reduced to code.
- *
- * This implementation is based on Arai, Agui, and Nakajima's algorithm for
- * scaled DCT.  Their original paper (Trans. IEICE E-71(11):1095) is in
- * Japanese, but the algorithm is described in the Pennebaker & Mitchell
- * JPEG textbook (see REFERENCES section in file README).  The following code
- * is based directly on figure 4-8 in P&M.
- * While an 8-point DCT cannot be done in less than 11 multiplies, it is
- * possible to arrange the computation so that many of the multiplies are
- * simple scalings of the final outputs.  These multiplies can then be
- * folded into the multiplications or divisions by the JPEG quantization
- * table entries.  The AA&N method leaves only 5 multiplies and 29 adds
- * to be done in the DCT itself.
- * The primary disadvantage of this method is that with fixed-point math,
- * accuracy is lost due to imprecise representation of the scaled
- * quantization values.  The smaller the quantization table entry, the less
- * precise the scaled value, so this implementation does worse with high-
- * quality-setting files than with low-quality ones.
- */
-
-#define JPEG_INTERNALS
-#include "jinclude.h"
-#include "jpeglib.h"
-#include "jdct.h"		/* Private declarations for DCT subsystem */
-
-#ifdef DCT_IFAST_SUPPORTED
-
-
-/*
- * This module is specialized to the case DCTSIZE = 8.
- */
-
-#if DCTSIZE != 8
-  Sorry, this code only copes with 8x8 DCTs. /* deliberate syntax err */
-#endif
-
-
-/* Scaling decisions are generally the same as in the LL&M algorithm;
- * see jidctint.c for more details.  However, we choose to descale
- * (right shift) multiplication products as soon as they are formed,
- * rather than carrying additional fractional bits into subsequent additions.
- * This compromises accuracy slightly, but it lets us save a few shifts.
- * More importantly, 16-bit arithmetic is then adequate (for 8-bit samples)
- * everywhere except in the multiplications proper; this saves a good deal
- * of work on 16-bit-int machines.
- *
- * The dequantized coefficients are not integers because the AA&N scaling
- * factors have been incorporated.  We represent them scaled up by PASS1_BITS,
- * so that the first and second IDCT rounds have the same input scaling.
- * For 8-bit JSAMPLEs, we choose IFAST_SCALE_BITS = PASS1_BITS so as to
- * avoid a descaling shift; this compromises accuracy rather drastically
- * for small quantization table entries, but it saves a lot of shifts.
- * For 12-bit JSAMPLEs, there's no hope of using 16x16 multiplies anyway,
- * so we use a much larger scaling factor to preserve accuracy.
- *
- * A final compromise is to represent the multiplicative constants to only
- * 8 fractional bits, rather than 13.  This saves some shifting work on some
- * machines, and may also reduce the cost of multiplication (since there
- * are fewer one-bits in the constants).
- */
-
-#if BITS_IN_JSAMPLE == 8
-#define CONST_BITS  8
-#define PASS1_BITS  2
-#else
-#define CONST_BITS  8
-#define PASS1_BITS  1		/* lose a little precision to avoid overflow */
-#endif
-
-/* Some C compilers fail to reduce "FIX(constant)" at compile time, thus
- * causing a lot of useless floating-point operations at run time.
- * To get around this we use the following pre-calculated constants.
- * If you change CONST_BITS you may want to add appropriate values.
- * (With a reasonable C compiler, you can just rely on the FIX() macro...)
- */
-
-#if CONST_BITS == 8
-#define FIX_1_082392200  ((INT32)  277)		/* FIX(1.082392200) */
-#define FIX_1_414213562  ((INT32)  362)		/* FIX(1.414213562) */
-#define FIX_1_847759065  ((INT32)  473)		/* FIX(1.847759065) */
-#define FIX_2_613125930  ((INT32)  669)		/* FIX(2.613125930) */
-#else
-#define FIX_1_082392200  FIX(1.082392200)
-#define FIX_1_414213562  FIX(1.414213562)
-#define FIX_1_847759065  FIX(1.847759065)
-#define FIX_2_613125930  FIX(2.613125930)
-#endif
-
-
-/* We can gain a little more speed, with a further compromise in accuracy,
- * by omitting the addition in a descaling shift.  This yields an incorrectly
- * rounded result half the time...
- */
-
-#ifndef USE_ACCURATE_ROUNDING
-#undef DESCALE
-#define DESCALE(x,n)  RIGHT_SHIFT(x, n)
-#endif
-
-
-/* Multiply a DCTELEM variable by an INT32 constant, and immediately
- * descale to yield a DCTELEM result.
- */
-
-#define MULTIPLY(var,const)  ((DCTELEM) DESCALE((var) * (const), CONST_BITS))
-
-
-/* Dequantize a coefficient by multiplying it by the multiplier-table
- * entry; produce a DCTELEM result.  For 8-bit data a 16x16->16
- * multiplication will do.  For 12-bit data, the multiplier table is
- * declared INT32, so a 32-bit multiply will be used.
- */
-
-#if BITS_IN_JSAMPLE == 8
-#define DEQUANTIZE(coef,quantval)  (((IFAST_MULT_TYPE) (coef)) * (quantval))
-#else
-#define DEQUANTIZE(coef,quantval)  \
-	DESCALE((coef)*(quantval), IFAST_SCALE_BITS-PASS1_BITS)
-#endif
-
-
-/* Like DESCALE, but applies to a DCTELEM and produces an int.
- * We assume that int right shift is unsigned if INT32 right shift is.
- */
-
-#ifdef RIGHT_SHIFT_IS_UNSIGNED
-#define ISHIFT_TEMPS	DCTELEM ishift_temp;
-#if BITS_IN_JSAMPLE == 8
-#define DCTELEMBITS  16		/* DCTELEM may be 16 or 32 bits */
-#else
-#define DCTELEMBITS  32		/* DCTELEM must be 32 bits */
-#endif
-#define IRIGHT_SHIFT(x,shft)  \
-    ((ishift_temp = (x)) < 0 ? \
-     (ishift_temp >> (shft)) | ((~((DCTELEM) 0)) << (DCTELEMBITS-(shft))) : \
-     (ishift_temp >> (shft)))
-#else
-#define ISHIFT_TEMPS
-#define IRIGHT_SHIFT(x,shft)	((x) >> (shft))
-#endif
-
-#ifdef USE_ACCURATE_ROUNDING
-#define IDESCALE(x,n)  ((int) IRIGHT_SHIFT((x) + (1 << ((n)-1)), n))
-#else
-#define IDESCALE(x,n)  ((int) IRIGHT_SHIFT(x, n))
-#endif
-
-
-/*
- * Perform dequantization and inverse DCT on one block of coefficients.
- */
-
-GLOBAL(void)
-jpeg_idct_ifast (j_decompress_ptr cinfo, jpeg_component_info * compptr,
-		 JCOEFPTR coef_block,
-		 JSAMPARRAY output_buf, JDIMENSION output_col)
-{
-  DCTELEM tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7;
-  DCTELEM tmp10, tmp11, tmp12, tmp13;
-  DCTELEM z5, z10, z11, z12, z13;
-  JCOEFPTR inptr;
-  IFAST_MULT_TYPE * quantptr;
-  int * wsptr;
-  JSAMPROW outptr;
-  JSAMPLE *range_limit = IDCT_range_limit(cinfo);
-  int ctr;
-  int workspace[DCTSIZE2];	/* buffers data between passes */
-  SHIFT_TEMPS			/* for DESCALE */
-  ISHIFT_TEMPS			/* for IDESCALE */
-
-  /* Pass 1: process columns from input, store into work array. */
-
-  inptr = coef_block;
-  quantptr = (IFAST_MULT_TYPE *) compptr->dct_table;
-  wsptr = workspace;
-  for (ctr = DCTSIZE; ctr > 0; ctr--) {
-    /* Due to quantization, we will usually find that many of the input
-     * coefficients are zero, especially the AC terms.  We can exploit this
-     * by short-circuiting the IDCT calculation for any column in which all
-     * the AC terms are zero.  In that case each output is equal to the
-     * DC coefficient (with scale factor as needed).
-     * With typical images and quantization tables, half or more of the
-     * column DCT calculations can be simplified this way.
-     */
-    
-    if (inptr[DCTSIZE*1] == 0 && inptr[DCTSIZE*2] == 0 &&
-	inptr[DCTSIZE*3] == 0 && inptr[DCTSIZE*4] == 0 &&
-	inptr[DCTSIZE*5] == 0 && inptr[DCTSIZE*6] == 0 &&
-	inptr[DCTSIZE*7] == 0) {
-      /* AC terms all zero */
-      int dcval = (int) DEQUANTIZE(inptr[DCTSIZE*0], quantptr[DCTSIZE*0]);
-
-      wsptr[DCTSIZE*0] = dcval;
-      wsptr[DCTSIZE*1] = dcval;
-      wsptr[DCTSIZE*2] = dcval;
-      wsptr[DCTSIZE*3] = dcval;
-      wsptr[DCTSIZE*4] = dcval;
-      wsptr[DCTSIZE*5] = dcval;
-      wsptr[DCTSIZE*6] = dcval;
-      wsptr[DCTSIZE*7] = dcval;
-      
-      inptr++;			/* advance pointers to next column */
-      quantptr++;
-      wsptr++;
-      continue;
-    }
-    
-    /* Even part */
-
-    tmp0 = DEQUANTIZE(inptr[DCTSIZE*0], quantptr[DCTSIZE*0]);
-    tmp1 = DEQUANTIZE(inptr[DCTSIZE*2], quantptr[DCTSIZE*2]);
-    tmp2 = DEQUANTIZE(inptr[DCTSIZE*4], quantptr[DCTSIZE*4]);
-    tmp3 = DEQUANTIZE(inptr[DCTSIZE*6], quantptr[DCTSIZE*6]);
-
-    tmp10 = tmp0 + tmp2;	/* phase 3 */
-    tmp11 = tmp0 - tmp2;
-
-    tmp13 = tmp1 + tmp3;	/* phases 5-3 */
-    tmp12 = MULTIPLY(tmp1 - tmp3, FIX_1_414213562) - tmp13; /* 2*c4 */
-
-    tmp0 = tmp10 + tmp13;	/* phase 2 */
-    tmp3 = tmp10 - tmp13;
-    tmp1 = tmp11 + tmp12;
-    tmp2 = tmp11 - tmp12;
-    
-    /* Odd part */
-
-    tmp4 = DEQUANTIZE(inptr[DCTSIZE*1], quantptr[DCTSIZE*1]);
-    tmp5 = DEQUANTIZE(inptr[DCTSIZE*3], quantptr[DCTSIZE*3]);
-    tmp6 = DEQUANTIZE(inptr[DCTSIZE*5], quantptr[DCTSIZE*5]);
-    tmp7 = DEQUANTIZE(inptr[DCTSIZE*7], quantptr[DCTSIZE*7]);
-
-    z13 = tmp6 + tmp5;		/* phase 6 */
-    z10 = tmp6 - tmp5;
-    z11 = tmp4 + tmp7;
-    z12 = tmp4 - tmp7;
-
-    tmp7 = z11 + z13;		/* phase 5 */
-    tmp11 = MULTIPLY(z11 - z13, FIX_1_414213562); /* 2*c4 */
-
-    z5 = MULTIPLY(z10 + z12, FIX_1_847759065); /* 2*c2 */
-    tmp10 = MULTIPLY(z12, FIX_1_082392200) - z5; /* 2*(c2-c6) */
-    tmp12 = MULTIPLY(z10, - FIX_2_613125930) + z5; /* -2*(c2+c6) */
-
-    tmp6 = tmp12 - tmp7;	/* phase 2 */
-    tmp5 = tmp11 - tmp6;
-    tmp4 = tmp10 + tmp5;
-
-    wsptr[DCTSIZE*0] = (int) (tmp0 + tmp7);
-    wsptr[DCTSIZE*7] = (int) (tmp0 - tmp7);
-    wsptr[DCTSIZE*1] = (int) (tmp1 + tmp6);
-    wsptr[DCTSIZE*6] = (int) (tmp1 - tmp6);
-    wsptr[DCTSIZE*2] = (int) (tmp2 + tmp5);
-    wsptr[DCTSIZE*5] = (int) (tmp2 - tmp5);
-    wsptr[DCTSIZE*4] = (int) (tmp3 + tmp4);
-    wsptr[DCTSIZE*3] = (int) (tmp3 - tmp4);
-
-    inptr++;			/* advance pointers to next column */
-    quantptr++;
-    wsptr++;
-  }
-  
-  /* Pass 2: process rows from work array, store into output array. */
-  /* Note that we must descale the results by a factor of 8 == 2**3, */
-  /* and also undo the PASS1_BITS scaling. */
-
-  wsptr = workspace;
-  for (ctr = 0; ctr < DCTSIZE; ctr++) {
-    outptr = output_buf[ctr] + output_col;
-    /* Rows of zeroes can be exploited in the same way as we did with columns.
-     * However, the column calculation has created many nonzero AC terms, so
-     * the simplification applies less often (typically 5% to 10% of the time).
-     * On machines with very fast multiplication, it's possible that the
-     * test takes more time than it's worth.  In that case this section
-     * may be commented out.
-     */
-    
-#ifndef NO_ZERO_ROW_TEST
-    if (wsptr[1] == 0 && wsptr[2] == 0 && wsptr[3] == 0 && wsptr[4] == 0 &&
-	wsptr[5] == 0 && wsptr[6] == 0 && wsptr[7] == 0) {
-      /* AC terms all zero */
-      JSAMPLE dcval = range_limit[IDESCALE(wsptr[0], PASS1_BITS+3)
-				  & RANGE_MASK];
-      
-      outptr[0] = dcval;
-      outptr[1] = dcval;
-      outptr[2] = dcval;
-      outptr[3] = dcval;
-      outptr[4] = dcval;
-      outptr[5] = dcval;
-      outptr[6] = dcval;
-      outptr[7] = dcval;
-
-      wsptr += DCTSIZE;		/* advance pointer to next row */
-      continue;
-    }
-#endif
-    
-    /* Even part */
-
-    tmp10 = ((DCTELEM) wsptr[0] + (DCTELEM) wsptr[4]);
-    tmp11 = ((DCTELEM) wsptr[0] - (DCTELEM) wsptr[4]);
-
-    tmp13 = ((DCTELEM) wsptr[2] + (DCTELEM) wsptr[6]);
-    tmp12 = MULTIPLY((DCTELEM) wsptr[2] - (DCTELEM) wsptr[6], FIX_1_414213562)
-	    - tmp13;
-
-    tmp0 = tmp10 + tmp13;
-    tmp3 = tmp10 - tmp13;
-    tmp1 = tmp11 + tmp12;
-    tmp2 = tmp11 - tmp12;
-
-    /* Odd part */
-
-    z13 = (DCTELEM) wsptr[5] + (DCTELEM) wsptr[3];
-    z10 = (DCTELEM) wsptr[5] - (DCTELEM) wsptr[3];
-    z11 = (DCTELEM) wsptr[1] + (DCTELEM) wsptr[7];
-    z12 = (DCTELEM) wsptr[1] - (DCTELEM) wsptr[7];
-
-    tmp7 = z11 + z13;		/* phase 5 */
-    tmp11 = MULTIPLY(z11 - z13, FIX_1_414213562); /* 2*c4 */
-
-    z5 = MULTIPLY(z10 + z12, FIX_1_847759065); /* 2*c2 */
-    tmp10 = MULTIPLY(z12, FIX_1_082392200) - z5; /* 2*(c2-c6) */
-    tmp12 = MULTIPLY(z10, - FIX_2_613125930) + z5; /* -2*(c2+c6) */
-
-    tmp6 = tmp12 - tmp7;	/* phase 2 */
-    tmp5 = tmp11 - tmp6;
-    tmp4 = tmp10 + tmp5;
-
-    /* Final output stage: scale down by a factor of 8 and range-limit */
-
-    outptr[0] = range_limit[IDESCALE(tmp0 + tmp7, PASS1_BITS+3)
-			    & RANGE_MASK];
-    outptr[7] = range_limit[IDESCALE(tmp0 - tmp7, PASS1_BITS+3)
-			    & RANGE_MASK];
-    outptr[1] = range_limit[IDESCALE(tmp1 + tmp6, PASS1_BITS+3)
-			    & RANGE_MASK];
-    outptr[6] = range_limit[IDESCALE(tmp1 - tmp6, PASS1_BITS+3)
-			    & RANGE_MASK];
-    outptr[2] = range_limit[IDESCALE(tmp2 + tmp5, PASS1_BITS+3)
-			    & RANGE_MASK];
-    outptr[5] = range_limit[IDESCALE(tmp2 - tmp5, PASS1_BITS+3)
-			    & RANGE_MASK];
-    outptr[4] = range_limit[IDESCALE(tmp3 + tmp4, PASS1_BITS+3)
-			    & RANGE_MASK];
-    outptr[3] = range_limit[IDESCALE(tmp3 - tmp4, PASS1_BITS+3)
-			    & RANGE_MASK];
-
-    wsptr += DCTSIZE;		/* advance pointer to next row */
-  }
-}
-
-#endif /* DCT_IFAST_SUPPORTED */
diff --git a/src/libjpeg/jidctint.c b/src/libjpeg/jidctint.c
deleted file mode 100644
index 4f47fe8..0000000
--- a/src/libjpeg/jidctint.c
+++ /dev/null
@@ -1,389 +0,0 @@
-/*
- * jidctint.c
- *
- * Copyright (C) 1991-1998, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains a slow-but-accurate integer implementation of the
- * inverse DCT (Discrete Cosine Transform).  In the IJG code, this routine
- * must also perform dequantization of the input coefficients.
- *
- * A 2-D IDCT can be done by 1-D IDCT on each column followed by 1-D IDCT
- * on each row (or vice versa, but it's more convenient to emit a row at
- * a time).  Direct algorithms are also available, but they are much more
- * complex and seem not to be any faster when reduced to code.
- *
- * This implementation is based on an algorithm described in
- *   C. Loeffler, A. Ligtenberg and G. Moschytz, "Practical Fast 1-D DCT
- *   Algorithms with 11 Multiplications", Proc. Int'l. Conf. on Acoustics,
- *   Speech, and Signal Processing 1989 (ICASSP '89), pp. 988-991.
- * The primary algorithm described there uses 11 multiplies and 29 adds.
- * We use their alternate method with 12 multiplies and 32 adds.
- * The advantage of this method is that no data path contains more than one
- * multiplication; this allows a very simple and accurate implementation in
- * scaled fixed-point arithmetic, with a minimal number of shifts.
- */
-
-#define JPEG_INTERNALS
-#include "jinclude.h"
-#include "jpeglib.h"
-#include "jdct.h"		/* Private declarations for DCT subsystem */
-
-#ifdef DCT_ISLOW_SUPPORTED
-
-
-/*
- * This module is specialized to the case DCTSIZE = 8.
- */
-
-#if DCTSIZE != 8
-  Sorry, this code only copes with 8x8 DCTs. /* deliberate syntax err */
-#endif
-
-
-/*
- * The poop on this scaling stuff is as follows:
- *
- * Each 1-D IDCT step produces outputs which are a factor of sqrt(N)
- * larger than the true IDCT outputs.  The final outputs are therefore
- * a factor of N larger than desired; since N=8 this can be cured by
- * a simple right shift at the end of the algorithm.  The advantage of
- * this arrangement is that we save two multiplications per 1-D IDCT,
- * because the y0 and y4 inputs need not be divided by sqrt(N).
- *
- * We have to do addition and subtraction of the integer inputs, which
- * is no problem, and multiplication by fractional constants, which is
- * a problem to do in integer arithmetic.  We multiply all the constants
- * by CONST_SCALE and convert them to integer constants (thus retaining
- * CONST_BITS bits of precision in the constants).  After doing a
- * multiplication we have to divide the product by CONST_SCALE, with proper
- * rounding, to produce the correct output.  This division can be done
- * cheaply as a right shift of CONST_BITS bits.  We postpone shifting
- * as long as possible so that partial sums can be added together with
- * full fractional precision.
- *
- * The outputs of the first pass are scaled up by PASS1_BITS bits so that
- * they are represented to better-than-integral precision.  These outputs
- * require BITS_IN_JSAMPLE + PASS1_BITS + 3 bits; this fits in a 16-bit word
- * with the recommended scaling.  (To scale up 12-bit sample data further, an
- * intermediate INT32 array would be needed.)
- *
- * To avoid overflow of the 32-bit intermediate results in pass 2, we must
- * have BITS_IN_JSAMPLE + CONST_BITS + PASS1_BITS <= 26.  Error analysis
- * shows that the values given below are the most effective.
- */
-
-#if BITS_IN_JSAMPLE == 8
-#define CONST_BITS  13
-#define PASS1_BITS  2
-#else
-#define CONST_BITS  13
-#define PASS1_BITS  1		/* lose a little precision to avoid overflow */
-#endif
-
-/* Some C compilers fail to reduce "FIX(constant)" at compile time, thus
- * causing a lot of useless floating-point operations at run time.
- * To get around this we use the following pre-calculated constants.
- * If you change CONST_BITS you may want to add appropriate values.
- * (With a reasonable C compiler, you can just rely on the FIX() macro...)
- */
-
-#if CONST_BITS == 13
-#define FIX_0_298631336  ((INT32)  2446)	/* FIX(0.298631336) */
-#define FIX_0_390180644  ((INT32)  3196)	/* FIX(0.390180644) */
-#define FIX_0_541196100  ((INT32)  4433)	/* FIX(0.541196100) */
-#define FIX_0_765366865  ((INT32)  6270)	/* FIX(0.765366865) */
-#define FIX_0_899976223  ((INT32)  7373)	/* FIX(0.899976223) */
-#define FIX_1_175875602  ((INT32)  9633)	/* FIX(1.175875602) */
-#define FIX_1_501321110  ((INT32)  12299)	/* FIX(1.501321110) */
-#define FIX_1_847759065  ((INT32)  15137)	/* FIX(1.847759065) */
-#define FIX_1_961570560  ((INT32)  16069)	/* FIX(1.961570560) */
-#define FIX_2_053119869  ((INT32)  16819)	/* FIX(2.053119869) */
-#define FIX_2_562915447  ((INT32)  20995)	/* FIX(2.562915447) */
-#define FIX_3_072711026  ((INT32)  25172)	/* FIX(3.072711026) */
-#else
-#define FIX_0_298631336  FIX(0.298631336)
-#define FIX_0_390180644  FIX(0.390180644)
-#define FIX_0_541196100  FIX(0.541196100)
-#define FIX_0_765366865  FIX(0.765366865)
-#define FIX_0_899976223  FIX(0.899976223)
-#define FIX_1_175875602  FIX(1.175875602)
-#define FIX_1_501321110  FIX(1.501321110)
-#define FIX_1_847759065  FIX(1.847759065)
-#define FIX_1_961570560  FIX(1.961570560)
-#define FIX_2_053119869  FIX(2.053119869)
-#define FIX_2_562915447  FIX(2.562915447)
-#define FIX_3_072711026  FIX(3.072711026)
-#endif
-
-
-/* Multiply an INT32 variable by an INT32 constant to yield an INT32 result.
- * For 8-bit samples with the recommended scaling, all the variable
- * and constant values involved are no more than 16 bits wide, so a
- * 16x16->32 bit multiply can be used instead of a full 32x32 multiply.
- * For 12-bit samples, a full 32-bit multiplication will be needed.
- */
-
-#if BITS_IN_JSAMPLE == 8
-#define MULTIPLY(var,const)  MULTIPLY16C16(var,const)
-#else
-#define MULTIPLY(var,const)  ((var) * (const))
-#endif
-
-
-/* Dequantize a coefficient by multiplying it by the multiplier-table
- * entry; produce an int result.  In this module, both inputs and result
- * are 16 bits or less, so either int or short multiply will work.
- */
-
-#define DEQUANTIZE(coef,quantval)  (((ISLOW_MULT_TYPE) (coef)) * (quantval))
-
-
-/*
- * Perform dequantization and inverse DCT on one block of coefficients.
- */
-
-GLOBAL(void)
-jpeg_idct_islow (j_decompress_ptr cinfo, jpeg_component_info * compptr,
-		 JCOEFPTR coef_block,
-		 JSAMPARRAY output_buf, JDIMENSION output_col)
-{
-  INT32 tmp0, tmp1, tmp2, tmp3;
-  INT32 tmp10, tmp11, tmp12, tmp13;
-  INT32 z1, z2, z3, z4, z5;
-  JCOEFPTR inptr;
-  ISLOW_MULT_TYPE * quantptr;
-  int * wsptr;
-  JSAMPROW outptr;
-  JSAMPLE *range_limit = IDCT_range_limit(cinfo);
-  int ctr;
-  int workspace[DCTSIZE2];	/* buffers data between passes */
-  SHIFT_TEMPS
-
-  /* Pass 1: process columns from input, store into work array. */
-  /* Note results are scaled up by sqrt(8) compared to a true IDCT; */
-  /* furthermore, we scale the results by 2**PASS1_BITS. */
-
-  inptr = coef_block;
-  quantptr = (ISLOW_MULT_TYPE *) compptr->dct_table;
-  wsptr = workspace;
-  for (ctr = DCTSIZE; ctr > 0; ctr--) {
-    /* Due to quantization, we will usually find that many of the input
-     * coefficients are zero, especially the AC terms.  We can exploit this
-     * by short-circuiting the IDCT calculation for any column in which all
-     * the AC terms are zero.  In that case each output is equal to the
-     * DC coefficient (with scale factor as needed).
-     * With typical images and quantization tables, half or more of the
-     * column DCT calculations can be simplified this way.
-     */
-    
-    if (inptr[DCTSIZE*1] == 0 && inptr[DCTSIZE*2] == 0 &&
-	inptr[DCTSIZE*3] == 0 && inptr[DCTSIZE*4] == 0 &&
-	inptr[DCTSIZE*5] == 0 && inptr[DCTSIZE*6] == 0 &&
-	inptr[DCTSIZE*7] == 0) {
-      /* AC terms all zero */
-      int dcval = DEQUANTIZE(inptr[DCTSIZE*0], quantptr[DCTSIZE*0]) << PASS1_BITS;
-      
-      wsptr[DCTSIZE*0] = dcval;
-      wsptr[DCTSIZE*1] = dcval;
-      wsptr[DCTSIZE*2] = dcval;
-      wsptr[DCTSIZE*3] = dcval;
-      wsptr[DCTSIZE*4] = dcval;
-      wsptr[DCTSIZE*5] = dcval;
-      wsptr[DCTSIZE*6] = dcval;
-      wsptr[DCTSIZE*7] = dcval;
-      
-      inptr++;			/* advance pointers to next column */
-      quantptr++;
-      wsptr++;
-      continue;
-    }
-    
-    /* Even part: reverse the even part of the forward DCT. */
-    /* The rotator is sqrt(2)*c(-6). */
-    
-    z2 = DEQUANTIZE(inptr[DCTSIZE*2], quantptr[DCTSIZE*2]);
-    z3 = DEQUANTIZE(inptr[DCTSIZE*6], quantptr[DCTSIZE*6]);
-    
-    z1 = MULTIPLY(z2 + z3, FIX_0_541196100);
-    tmp2 = z1 + MULTIPLY(z3, - FIX_1_847759065);
-    tmp3 = z1 + MULTIPLY(z2, FIX_0_765366865);
-    
-    z2 = DEQUANTIZE(inptr[DCTSIZE*0], quantptr[DCTSIZE*0]);
-    z3 = DEQUANTIZE(inptr[DCTSIZE*4], quantptr[DCTSIZE*4]);
-
-    tmp0 = (z2 + z3) << CONST_BITS;
-    tmp1 = (z2 - z3) << CONST_BITS;
-    
-    tmp10 = tmp0 + tmp3;
-    tmp13 = tmp0 - tmp3;
-    tmp11 = tmp1 + tmp2;
-    tmp12 = tmp1 - tmp2;
-    
-    /* Odd part per figure 8; the matrix is unitary and hence its
-     * transpose is its inverse.  i0..i3 are y7,y5,y3,y1 respectively.
-     */
-    
-    tmp0 = DEQUANTIZE(inptr[DCTSIZE*7], quantptr[DCTSIZE*7]);
-    tmp1 = DEQUANTIZE(inptr[DCTSIZE*5], quantptr[DCTSIZE*5]);
-    tmp2 = DEQUANTIZE(inptr[DCTSIZE*3], quantptr[DCTSIZE*3]);
-    tmp3 = DEQUANTIZE(inptr[DCTSIZE*1], quantptr[DCTSIZE*1]);
-    
-    z1 = tmp0 + tmp3;
-    z2 = tmp1 + tmp2;
-    z3 = tmp0 + tmp2;
-    z4 = tmp1 + tmp3;
-    z5 = MULTIPLY(z3 + z4, FIX_1_175875602); /* sqrt(2) * c3 */
-    
-    tmp0 = MULTIPLY(tmp0, FIX_0_298631336); /* sqrt(2) * (-c1+c3+c5-c7) */
-    tmp1 = MULTIPLY(tmp1, FIX_2_053119869); /* sqrt(2) * ( c1+c3-c5+c7) */
-    tmp2 = MULTIPLY(tmp2, FIX_3_072711026); /* sqrt(2) * ( c1+c3+c5-c7) */
-    tmp3 = MULTIPLY(tmp3, FIX_1_501321110); /* sqrt(2) * ( c1+c3-c5-c7) */
-    z1 = MULTIPLY(z1, - FIX_0_899976223); /* sqrt(2) * (c7-c3) */
-    z2 = MULTIPLY(z2, - FIX_2_562915447); /* sqrt(2) * (-c1-c3) */
-    z3 = MULTIPLY(z3, - FIX_1_961570560); /* sqrt(2) * (-c3-c5) */
-    z4 = MULTIPLY(z4, - FIX_0_390180644); /* sqrt(2) * (c5-c3) */
-    
-    z3 += z5;
-    z4 += z5;
-    
-    tmp0 += z1 + z3;
-    tmp1 += z2 + z4;
-    tmp2 += z2 + z3;
-    tmp3 += z1 + z4;
-    
-    /* Final output stage: inputs are tmp10..tmp13, tmp0..tmp3 */
-    
-    wsptr[DCTSIZE*0] = (int) DESCALE(tmp10 + tmp3, CONST_BITS-PASS1_BITS);
-    wsptr[DCTSIZE*7] = (int) DESCALE(tmp10 - tmp3, CONST_BITS-PASS1_BITS);
-    wsptr[DCTSIZE*1] = (int) DESCALE(tmp11 + tmp2, CONST_BITS-PASS1_BITS);
-    wsptr[DCTSIZE*6] = (int) DESCALE(tmp11 - tmp2, CONST_BITS-PASS1_BITS);
-    wsptr[DCTSIZE*2] = (int) DESCALE(tmp12 + tmp1, CONST_BITS-PASS1_BITS);
-    wsptr[DCTSIZE*5] = (int) DESCALE(tmp12 - tmp1, CONST_BITS-PASS1_BITS);
-    wsptr[DCTSIZE*3] = (int) DESCALE(tmp13 + tmp0, CONST_BITS-PASS1_BITS);
-    wsptr[DCTSIZE*4] = (int) DESCALE(tmp13 - tmp0, CONST_BITS-PASS1_BITS);
-    
-    inptr++;			/* advance pointers to next column */
-    quantptr++;
-    wsptr++;
-  }
-  
-  /* Pass 2: process rows from work array, store into output array. */
-  /* Note that we must descale the results by a factor of 8 == 2**3, */
-  /* and also undo the PASS1_BITS scaling. */
-
-  wsptr = workspace;
-  for (ctr = 0; ctr < DCTSIZE; ctr++) {
-    outptr = output_buf[ctr] + output_col;
-    /* Rows of zeroes can be exploited in the same way as we did with columns.
-     * However, the column calculation has created many nonzero AC terms, so
-     * the simplification applies less often (typically 5% to 10% of the time).
-     * On machines with very fast multiplication, it's possible that the
-     * test takes more time than it's worth.  In that case this section
-     * may be commented out.
-     */
-    
-#ifndef NO_ZERO_ROW_TEST
-    if (wsptr[1] == 0 && wsptr[2] == 0 && wsptr[3] == 0 && wsptr[4] == 0 &&
-	wsptr[5] == 0 && wsptr[6] == 0 && wsptr[7] == 0) {
-      /* AC terms all zero */
-      JSAMPLE dcval = range_limit[(int) DESCALE((INT32) wsptr[0], PASS1_BITS+3)
-				  & RANGE_MASK];
-      
-      outptr[0] = dcval;
-      outptr[1] = dcval;
-      outptr[2] = dcval;
-      outptr[3] = dcval;
-      outptr[4] = dcval;
-      outptr[5] = dcval;
-      outptr[6] = dcval;
-      outptr[7] = dcval;
-
-      wsptr += DCTSIZE;		/* advance pointer to next row */
-      continue;
-    }
-#endif
-    
-    /* Even part: reverse the even part of the forward DCT. */
-    /* The rotator is sqrt(2)*c(-6). */
-    
-    z2 = (INT32) wsptr[2];
-    z3 = (INT32) wsptr[6];
-    
-    z1 = MULTIPLY(z2 + z3, FIX_0_541196100);
-    tmp2 = z1 + MULTIPLY(z3, - FIX_1_847759065);
-    tmp3 = z1 + MULTIPLY(z2, FIX_0_765366865);
-    
-    tmp0 = ((INT32) wsptr[0] + (INT32) wsptr[4]) << CONST_BITS;
-    tmp1 = ((INT32) wsptr[0] - (INT32) wsptr[4]) << CONST_BITS;
-    
-    tmp10 = tmp0 + tmp3;
-    tmp13 = tmp0 - tmp3;
-    tmp11 = tmp1 + tmp2;
-    tmp12 = tmp1 - tmp2;
-    
-    /* Odd part per figure 8; the matrix is unitary and hence its
-     * transpose is its inverse.  i0..i3 are y7,y5,y3,y1 respectively.
-     */
-    
-    tmp0 = (INT32) wsptr[7];
-    tmp1 = (INT32) wsptr[5];
-    tmp2 = (INT32) wsptr[3];
-    tmp3 = (INT32) wsptr[1];
-    
-    z1 = tmp0 + tmp3;
-    z2 = tmp1 + tmp2;
-    z3 = tmp0 + tmp2;
-    z4 = tmp1 + tmp3;
-    z5 = MULTIPLY(z3 + z4, FIX_1_175875602); /* sqrt(2) * c3 */
-    
-    tmp0 = MULTIPLY(tmp0, FIX_0_298631336); /* sqrt(2) * (-c1+c3+c5-c7) */
-    tmp1 = MULTIPLY(tmp1, FIX_2_053119869); /* sqrt(2) * ( c1+c3-c5+c7) */
-    tmp2 = MULTIPLY(tmp2, FIX_3_072711026); /* sqrt(2) * ( c1+c3+c5-c7) */
-    tmp3 = MULTIPLY(tmp3, FIX_1_501321110); /* sqrt(2) * ( c1+c3-c5-c7) */
-    z1 = MULTIPLY(z1, - FIX_0_899976223); /* sqrt(2) * (c7-c3) */
-    z2 = MULTIPLY(z2, - FIX_2_562915447); /* sqrt(2) * (-c1-c3) */
-    z3 = MULTIPLY(z3, - FIX_1_961570560); /* sqrt(2) * (-c3-c5) */
-    z4 = MULTIPLY(z4, - FIX_0_390180644); /* sqrt(2) * (c5-c3) */
-    
-    z3 += z5;
-    z4 += z5;
-    
-    tmp0 += z1 + z3;
-    tmp1 += z2 + z4;
-    tmp2 += z2 + z3;
-    tmp3 += z1 + z4;
-    
-    /* Final output stage: inputs are tmp10..tmp13, tmp0..tmp3 */
-    
-    outptr[0] = range_limit[(int) DESCALE(tmp10 + tmp3,
-					  CONST_BITS+PASS1_BITS+3)
-			    & RANGE_MASK];
-    outptr[7] = range_limit[(int) DESCALE(tmp10 - tmp3,
-					  CONST_BITS+PASS1_BITS+3)
-			    & RANGE_MASK];
-    outptr[1] = range_limit[(int) DESCALE(tmp11 + tmp2,
-					  CONST_BITS+PASS1_BITS+3)
-			    & RANGE_MASK];
-    outptr[6] = range_limit[(int) DESCALE(tmp11 - tmp2,
-					  CONST_BITS+PASS1_BITS+3)
-			    & RANGE_MASK];
-    outptr[2] = range_limit[(int) DESCALE(tmp12 + tmp1,
-					  CONST_BITS+PASS1_BITS+3)
-			    & RANGE_MASK];
-    outptr[5] = range_limit[(int) DESCALE(tmp12 - tmp1,
-					  CONST_BITS+PASS1_BITS+3)
-			    & RANGE_MASK];
-    outptr[3] = range_limit[(int) DESCALE(tmp13 + tmp0,
-					  CONST_BITS+PASS1_BITS+3)
-			    & RANGE_MASK];
-    outptr[4] = range_limit[(int) DESCALE(tmp13 - tmp0,
-					  CONST_BITS+PASS1_BITS+3)
-			    & RANGE_MASK];
-    
-    wsptr += DCTSIZE;		/* advance pointer to next row */
-  }
-}
-
-#endif /* DCT_ISLOW_SUPPORTED */
diff --git a/src/libjpeg/jidctred.c b/src/libjpeg/jidctred.c
deleted file mode 100644
index 911899b..0000000
--- a/src/libjpeg/jidctred.c
+++ /dev/null
@@ -1,398 +0,0 @@
-/*
- * jidctred.c
- *
- * Copyright (C) 1994-1998, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains inverse-DCT routines that produce reduced-size output:
- * either 4x4, 2x2, or 1x1 pixels from an 8x8 DCT block.
- *
- * The implementation is based on the Loeffler, Ligtenberg and Moschytz (LL&M)
- * algorithm used in jidctint.c.  We simply replace each 8-to-8 1-D IDCT step
- * with an 8-to-4 step that produces the four averages of two adjacent outputs
- * (or an 8-to-2 step producing two averages of four outputs, for 2x2 output).
- * These steps were derived by computing the corresponding values at the end
- * of the normal LL&M code, then simplifying as much as possible.
- *
- * 1x1 is trivial: just take the DC coefficient divided by 8.
- *
- * See jidctint.c for additional comments.
- */
-
-#define JPEG_INTERNALS
-#include "jinclude.h"
-#include "jpeglib.h"
-#include "jdct.h"		/* Private declarations for DCT subsystem */
-
-#ifdef IDCT_SCALING_SUPPORTED
-
-
-/*
- * This module is specialized to the case DCTSIZE = 8.
- */
-
-#if DCTSIZE != 8
-  Sorry, this code only copes with 8x8 DCTs. /* deliberate syntax err */
-#endif
-
-
-/* Scaling is the same as in jidctint.c. */
-
-#if BITS_IN_JSAMPLE == 8
-#define CONST_BITS  13
-#define PASS1_BITS  2
-#else
-#define CONST_BITS  13
-#define PASS1_BITS  1		/* lose a little precision to avoid overflow */
-#endif
-
-/* Some C compilers fail to reduce "FIX(constant)" at compile time, thus
- * causing a lot of useless floating-point operations at run time.
- * To get around this we use the following pre-calculated constants.
- * If you change CONST_BITS you may want to add appropriate values.
- * (With a reasonable C compiler, you can just rely on the FIX() macro...)
- */
-
-#if CONST_BITS == 13
-#define FIX_0_211164243  ((INT32)  1730)	/* FIX(0.211164243) */
-#define FIX_0_509795579  ((INT32)  4176)	/* FIX(0.509795579) */
-#define FIX_0_601344887  ((INT32)  4926)	/* FIX(0.601344887) */
-#define FIX_0_720959822  ((INT32)  5906)	/* FIX(0.720959822) */
-#define FIX_0_765366865  ((INT32)  6270)	/* FIX(0.765366865) */
-#define FIX_0_850430095  ((INT32)  6967)	/* FIX(0.850430095) */
-#define FIX_0_899976223  ((INT32)  7373)	/* FIX(0.899976223) */
-#define FIX_1_061594337  ((INT32)  8697)	/* FIX(1.061594337) */
-#define FIX_1_272758580  ((INT32)  10426)	/* FIX(1.272758580) */
-#define FIX_1_451774981  ((INT32)  11893)	/* FIX(1.451774981) */
-#define FIX_1_847759065  ((INT32)  15137)	/* FIX(1.847759065) */
-#define FIX_2_172734803  ((INT32)  17799)	/* FIX(2.172734803) */
-#define FIX_2_562915447  ((INT32)  20995)	/* FIX(2.562915447) */
-#define FIX_3_624509785  ((INT32)  29692)	/* FIX(3.624509785) */
-#else
-#define FIX_0_211164243  FIX(0.211164243)
-#define FIX_0_509795579  FIX(0.509795579)
-#define FIX_0_601344887  FIX(0.601344887)
-#define FIX_0_720959822  FIX(0.720959822)
-#define FIX_0_765366865  FIX(0.765366865)
-#define FIX_0_850430095  FIX(0.850430095)
-#define FIX_0_899976223  FIX(0.899976223)
-#define FIX_1_061594337  FIX(1.061594337)
-#define FIX_1_272758580  FIX(1.272758580)
-#define FIX_1_451774981  FIX(1.451774981)
-#define FIX_1_847759065  FIX(1.847759065)
-#define FIX_2_172734803  FIX(2.172734803)
-#define FIX_2_562915447  FIX(2.562915447)
-#define FIX_3_624509785  FIX(3.624509785)
-#endif
-
-
-/* Multiply an INT32 variable by an INT32 constant to yield an INT32 result.
- * For 8-bit samples with the recommended scaling, all the variable
- * and constant values involved are no more than 16 bits wide, so a
- * 16x16->32 bit multiply can be used instead of a full 32x32 multiply.
- * For 12-bit samples, a full 32-bit multiplication will be needed.
- */
-
-#if BITS_IN_JSAMPLE == 8
-#define MULTIPLY(var,const)  MULTIPLY16C16(var,const)
-#else
-#define MULTIPLY(var,const)  ((var) * (const))
-#endif
-
-
-/* Dequantize a coefficient by multiplying it by the multiplier-table
- * entry; produce an int result.  In this module, both inputs and result
- * are 16 bits or less, so either int or short multiply will work.
- */
-
-#define DEQUANTIZE(coef,quantval)  (((ISLOW_MULT_TYPE) (coef)) * (quantval))
-
-
-/*
- * Perform dequantization and inverse DCT on one block of coefficients,
- * producing a reduced-size 4x4 output block.
- */
-
-GLOBAL(void)
-jpeg_idct_4x4 (j_decompress_ptr cinfo, jpeg_component_info * compptr,
-	       JCOEFPTR coef_block,
-	       JSAMPARRAY output_buf, JDIMENSION output_col)
-{
-  INT32 tmp0, tmp2, tmp10, tmp12;
-  INT32 z1, z2, z3, z4;
-  JCOEFPTR inptr;
-  ISLOW_MULT_TYPE * quantptr;
-  int * wsptr;
-  JSAMPROW outptr;
-  JSAMPLE *range_limit = IDCT_range_limit(cinfo);
-  int ctr;
-  int workspace[DCTSIZE*4];	/* buffers data between passes */
-  SHIFT_TEMPS
-
-  /* Pass 1: process columns from input, store into work array. */
-
-  inptr = coef_block;
-  quantptr = (ISLOW_MULT_TYPE *) compptr->dct_table;
-  wsptr = workspace;
-  for (ctr = DCTSIZE; ctr > 0; inptr++, quantptr++, wsptr++, ctr--) {
-    /* Don't bother to process column 4, because second pass won't use it */
-    if (ctr == DCTSIZE-4)
-      continue;
-    if (inptr[DCTSIZE*1] == 0 && inptr[DCTSIZE*2] == 0 &&
-	inptr[DCTSIZE*3] == 0 && inptr[DCTSIZE*5] == 0 &&
-	inptr[DCTSIZE*6] == 0 && inptr[DCTSIZE*7] == 0) {
-      /* AC terms all zero; we need not examine term 4 for 4x4 output */
-      int dcval = DEQUANTIZE(inptr[DCTSIZE*0], quantptr[DCTSIZE*0]) << PASS1_BITS;
-      
-      wsptr[DCTSIZE*0] = dcval;
-      wsptr[DCTSIZE*1] = dcval;
-      wsptr[DCTSIZE*2] = dcval;
-      wsptr[DCTSIZE*3] = dcval;
-      
-      continue;
-    }
-    
-    /* Even part */
-    
-    tmp0 = DEQUANTIZE(inptr[DCTSIZE*0], quantptr[DCTSIZE*0]);
-    tmp0 <<= (CONST_BITS+1);
-    
-    z2 = DEQUANTIZE(inptr[DCTSIZE*2], quantptr[DCTSIZE*2]);
-    z3 = DEQUANTIZE(inptr[DCTSIZE*6], quantptr[DCTSIZE*6]);
-
-    tmp2 = MULTIPLY(z2, FIX_1_847759065) + MULTIPLY(z3, - FIX_0_765366865);
-    
-    tmp10 = tmp0 + tmp2;
-    tmp12 = tmp0 - tmp2;
-    
-    /* Odd part */
-    
-    z1 = DEQUANTIZE(inptr[DCTSIZE*7], quantptr[DCTSIZE*7]);
-    z2 = DEQUANTIZE(inptr[DCTSIZE*5], quantptr[DCTSIZE*5]);
-    z3 = DEQUANTIZE(inptr[DCTSIZE*3], quantptr[DCTSIZE*3]);
-    z4 = DEQUANTIZE(inptr[DCTSIZE*1], quantptr[DCTSIZE*1]);
-    
-    tmp0 = MULTIPLY(z1, - FIX_0_211164243) /* sqrt(2) * (c3-c1) */
-	 + MULTIPLY(z2, FIX_1_451774981) /* sqrt(2) * (c3+c7) */
-	 + MULTIPLY(z3, - FIX_2_172734803) /* sqrt(2) * (-c1-c5) */
-	 + MULTIPLY(z4, FIX_1_061594337); /* sqrt(2) * (c5+c7) */
-    
-    tmp2 = MULTIPLY(z1, - FIX_0_509795579) /* sqrt(2) * (c7-c5) */
-	 + MULTIPLY(z2, - FIX_0_601344887) /* sqrt(2) * (c5-c1) */
-	 + MULTIPLY(z3, FIX_0_899976223) /* sqrt(2) * (c3-c7) */
-	 + MULTIPLY(z4, FIX_2_562915447); /* sqrt(2) * (c1+c3) */
-
-    /* Final output stage */
-    
-    wsptr[DCTSIZE*0] = (int) DESCALE(tmp10 + tmp2, CONST_BITS-PASS1_BITS+1);
-    wsptr[DCTSIZE*3] = (int) DESCALE(tmp10 - tmp2, CONST_BITS-PASS1_BITS+1);
-    wsptr[DCTSIZE*1] = (int) DESCALE(tmp12 + tmp0, CONST_BITS-PASS1_BITS+1);
-    wsptr[DCTSIZE*2] = (int) DESCALE(tmp12 - tmp0, CONST_BITS-PASS1_BITS+1);
-  }
-  
-  /* Pass 2: process 4 rows from work array, store into output array. */
-
-  wsptr = workspace;
-  for (ctr = 0; ctr < 4; ctr++) {
-    outptr = output_buf[ctr] + output_col;
-    /* It's not clear whether a zero row test is worthwhile here ... */
-
-#ifndef NO_ZERO_ROW_TEST
-    if (wsptr[1] == 0 && wsptr[2] == 0 && wsptr[3] == 0 &&
-	wsptr[5] == 0 && wsptr[6] == 0 && wsptr[7] == 0) {
-      /* AC terms all zero */
-      JSAMPLE dcval = range_limit[(int) DESCALE((INT32) wsptr[0], PASS1_BITS+3)
-				  & RANGE_MASK];
-      
-      outptr[0] = dcval;
-      outptr[1] = dcval;
-      outptr[2] = dcval;
-      outptr[3] = dcval;
-      
-      wsptr += DCTSIZE;		/* advance pointer to next row */
-      continue;
-    }
-#endif
-    
-    /* Even part */
-    
-    tmp0 = ((INT32) wsptr[0]) << (CONST_BITS+1);
-    
-    tmp2 = MULTIPLY((INT32) wsptr[2], FIX_1_847759065)
-	 + MULTIPLY((INT32) wsptr[6], - FIX_0_765366865);
-    
-    tmp10 = tmp0 + tmp2;
-    tmp12 = tmp0 - tmp2;
-    
-    /* Odd part */
-    
-    z1 = (INT32) wsptr[7];
-    z2 = (INT32) wsptr[5];
-    z3 = (INT32) wsptr[3];
-    z4 = (INT32) wsptr[1];
-    
-    tmp0 = MULTIPLY(z1, - FIX_0_211164243) /* sqrt(2) * (c3-c1) */
-	 + MULTIPLY(z2, FIX_1_451774981) /* sqrt(2) * (c3+c7) */
-	 + MULTIPLY(z3, - FIX_2_172734803) /* sqrt(2) * (-c1-c5) */
-	 + MULTIPLY(z4, FIX_1_061594337); /* sqrt(2) * (c5+c7) */
-    
-    tmp2 = MULTIPLY(z1, - FIX_0_509795579) /* sqrt(2) * (c7-c5) */
-	 + MULTIPLY(z2, - FIX_0_601344887) /* sqrt(2) * (c5-c1) */
-	 + MULTIPLY(z3, FIX_0_899976223) /* sqrt(2) * (c3-c7) */
-	 + MULTIPLY(z4, FIX_2_562915447); /* sqrt(2) * (c1+c3) */
-
-    /* Final output stage */
-    
-    outptr[0] = range_limit[(int) DESCALE(tmp10 + tmp2,
-					  CONST_BITS+PASS1_BITS+3+1)
-			    & RANGE_MASK];
-    outptr[3] = range_limit[(int) DESCALE(tmp10 - tmp2,
-					  CONST_BITS+PASS1_BITS+3+1)
-			    & RANGE_MASK];
-    outptr[1] = range_limit[(int) DESCALE(tmp12 + tmp0,
-					  CONST_BITS+PASS1_BITS+3+1)
-			    & RANGE_MASK];
-    outptr[2] = range_limit[(int) DESCALE(tmp12 - tmp0,
-					  CONST_BITS+PASS1_BITS+3+1)
-			    & RANGE_MASK];
-    
-    wsptr += DCTSIZE;		/* advance pointer to next row */
-  }
-}
-
-
-/*
- * Perform dequantization and inverse DCT on one block of coefficients,
- * producing a reduced-size 2x2 output block.
- */
-
-GLOBAL(void)
-jpeg_idct_2x2 (j_decompress_ptr cinfo, jpeg_component_info * compptr,
-	       JCOEFPTR coef_block,
-	       JSAMPARRAY output_buf, JDIMENSION output_col)
-{
-  INT32 tmp0, tmp10, z1;
-  JCOEFPTR inptr;
-  ISLOW_MULT_TYPE * quantptr;
-  int * wsptr;
-  JSAMPROW outptr;
-  JSAMPLE *range_limit = IDCT_range_limit(cinfo);
-  int ctr;
-  int workspace[DCTSIZE*2];	/* buffers data between passes */
-  SHIFT_TEMPS
-
-  /* Pass 1: process columns from input, store into work array. */
-
-  inptr = coef_block;
-  quantptr = (ISLOW_MULT_TYPE *) compptr->dct_table;
-  wsptr = workspace;
-  for (ctr = DCTSIZE; ctr > 0; inptr++, quantptr++, wsptr++, ctr--) {
-    /* Don't bother to process columns 2,4,6 */
-    if (ctr == DCTSIZE-2 || ctr == DCTSIZE-4 || ctr == DCTSIZE-6)
-      continue;
-    if (inptr[DCTSIZE*1] == 0 && inptr[DCTSIZE*3] == 0 &&
-	inptr[DCTSIZE*5] == 0 && inptr[DCTSIZE*7] == 0) {
-      /* AC terms all zero; we need not examine terms 2,4,6 for 2x2 output */
-      int dcval = DEQUANTIZE(inptr[DCTSIZE*0], quantptr[DCTSIZE*0]) << PASS1_BITS;
-      
-      wsptr[DCTSIZE*0] = dcval;
-      wsptr[DCTSIZE*1] = dcval;
-      
-      continue;
-    }
-    
-    /* Even part */
-    
-    z1 = DEQUANTIZE(inptr[DCTSIZE*0], quantptr[DCTSIZE*0]);
-    tmp10 = z1 << (CONST_BITS+2);
-    
-    /* Odd part */
-
-    z1 = DEQUANTIZE(inptr[DCTSIZE*7], quantptr[DCTSIZE*7]);
-    tmp0 = MULTIPLY(z1, - FIX_0_720959822); /* sqrt(2) * (c7-c5+c3-c1) */
-    z1 = DEQUANTIZE(inptr[DCTSIZE*5], quantptr[DCTSIZE*5]);
-    tmp0 += MULTIPLY(z1, FIX_0_850430095); /* sqrt(2) * (-c1+c3+c5+c7) */
-    z1 = DEQUANTIZE(inptr[DCTSIZE*3], quantptr[DCTSIZE*3]);
-    tmp0 += MULTIPLY(z1, - FIX_1_272758580); /* sqrt(2) * (-c1+c3-c5-c7) */
-    z1 = DEQUANTIZE(inptr[DCTSIZE*1], quantptr[DCTSIZE*1]);
-    tmp0 += MULTIPLY(z1, FIX_3_624509785); /* sqrt(2) * (c1+c3+c5+c7) */
-
-    /* Final output stage */
-    
-    wsptr[DCTSIZE*0] = (int) DESCALE(tmp10 + tmp0, CONST_BITS-PASS1_BITS+2);
-    wsptr[DCTSIZE*1] = (int) DESCALE(tmp10 - tmp0, CONST_BITS-PASS1_BITS+2);
-  }
-  
-  /* Pass 2: process 2 rows from work array, store into output array. */
-
-  wsptr = workspace;
-  for (ctr = 0; ctr < 2; ctr++) {
-    outptr = output_buf[ctr] + output_col;
-    /* It's not clear whether a zero row test is worthwhile here ... */
-
-#ifndef NO_ZERO_ROW_TEST
-    if (wsptr[1] == 0 && wsptr[3] == 0 && wsptr[5] == 0 && wsptr[7] == 0) {
-      /* AC terms all zero */
-      JSAMPLE dcval = range_limit[(int) DESCALE((INT32) wsptr[0], PASS1_BITS+3)
-				  & RANGE_MASK];
-      
-      outptr[0] = dcval;
-      outptr[1] = dcval;
-      
-      wsptr += DCTSIZE;		/* advance pointer to next row */
-      continue;
-    }
-#endif
-    
-    /* Even part */
-    
-    tmp10 = ((INT32) wsptr[0]) << (CONST_BITS+2);
-    
-    /* Odd part */
-
-    tmp0 = MULTIPLY((INT32) wsptr[7], - FIX_0_720959822) /* sqrt(2) * (c7-c5+c3-c1) */
-	 + MULTIPLY((INT32) wsptr[5], FIX_0_850430095) /* sqrt(2) * (-c1+c3+c5+c7) */
-	 + MULTIPLY((INT32) wsptr[3], - FIX_1_272758580) /* sqrt(2) * (-c1+c3-c5-c7) */
-	 + MULTIPLY((INT32) wsptr[1], FIX_3_624509785); /* sqrt(2) * (c1+c3+c5+c7) */
-
-    /* Final output stage */
-    
-    outptr[0] = range_limit[(int) DESCALE(tmp10 + tmp0,
-					  CONST_BITS+PASS1_BITS+3+2)
-			    & RANGE_MASK];
-    outptr[1] = range_limit[(int) DESCALE(tmp10 - tmp0,
-					  CONST_BITS+PASS1_BITS+3+2)
-			    & RANGE_MASK];
-    
-    wsptr += DCTSIZE;		/* advance pointer to next row */
-  }
-}
-
-
-/*
- * Perform dequantization and inverse DCT on one block of coefficients,
- * producing a reduced-size 1x1 output block.
- */
-
-GLOBAL(void)
-jpeg_idct_1x1 (j_decompress_ptr cinfo, jpeg_component_info * compptr,
-	       JCOEFPTR coef_block,
-	       JSAMPARRAY output_buf, JDIMENSION output_col)
-{
-  int dcval;
-  ISLOW_MULT_TYPE * quantptr;
-  JSAMPLE *range_limit = IDCT_range_limit(cinfo);
-  SHIFT_TEMPS
-
-  /* We hardly need an inverse DCT routine for this: just take the
-   * average pixel value, which is one-eighth of the DC coefficient.
-   */
-  quantptr = (ISLOW_MULT_TYPE *) compptr->dct_table;
-  dcval = DEQUANTIZE(coef_block[0], quantptr[0]);
-  dcval = (int) DESCALE((INT32) dcval, 3);
-
-  output_buf[0][output_col] = range_limit[dcval & RANGE_MASK];
-}
-
-#endif /* IDCT_SCALING_SUPPORTED */
diff --git a/src/libjpeg/jinclude.h b/src/libjpeg/jinclude.h
deleted file mode 100644
index 5ff60fe..0000000
--- a/src/libjpeg/jinclude.h
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * jinclude.h
- *
- * Copyright (C) 1991-1994, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file exists to provide a single place to fix any problems with
- * including the wrong system include files.  (Common problems are taken
- * care of by the standard jconfig symbols, but on really weird systems
- * you may have to edit this file.)
- *
- * NOTE: this file is NOT intended to be included by applications using the
- * JPEG library.  Most applications need only include jpeglib.h.
- */
-
-
-/* Include auto-config file to find out which system include files we need. */
-
-#include "jconfig.h"		/* auto configuration options */
-#define JCONFIG_INCLUDED	/* so that jpeglib.h doesn't do it again */
-
-/*
- * We need the NULL macro and size_t typedef.
- * On an ANSI-conforming system it is sufficient to include <stddef.h>.
- * Otherwise, we get them from <stdlib.h> or <stdio.h>; we may have to
- * pull in <sys/types.h> as well.
- * Note that the core JPEG library does not require <stdio.h>;
- * only the default error handler and data source/destination modules do.
- * But we must pull it in because of the references to FILE in jpeglib.h.
- * You can remove those references if you want to compile without <stdio.h>.
- */
-
-#ifdef HAVE_STDDEF_H
-#include <stddef.h>
-#endif
-
-#ifdef HAVE_STDLIB_H
-#include <stdlib.h>
-#endif
-
-#ifdef NEED_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-
-#include <stdio.h>
-
-/*
- * We need memory copying and zeroing functions, plus strncpy().
- * ANSI and System V implementations declare these in <string.h>.
- * BSD doesn't have the mem() functions, but it does have bcopy()/bzero().
- * Some systems may declare memset and memcpy in <memory.h>.
- *
- * NOTE: we assume the size parameters to these functions are of type size_t.
- * Change the casts in these macros if not!
- */
-
-#ifdef NEED_BSD_STRINGS
-
-#include <strings.h>
-#define MEMZERO(target,size)	bzero((void *)(target), (size_t)(size))
-#define MEMCOPY(dest,src,size)	bcopy((const void *)(src), (void *)(dest), (size_t)(size))
-
-#else /* not BSD, assume ANSI/SysV string lib */
-
-#include <string.h>
-#define MEMZERO(target,size)	memset((void *)(target), 0, (size_t)(size))
-#define MEMCOPY(dest,src,size)	memcpy((void *)(dest), (const void *)(src), (size_t)(size))
-
-#endif
-
-/*
- * In ANSI C, and indeed any rational implementation, size_t is also the
- * type returned by sizeof().  However, it seems there are some irrational
- * implementations out there, in which sizeof() returns an int even though
- * size_t is defined as long or unsigned long.  To ensure consistent results
- * we always use this SIZEOF() macro in place of using sizeof() directly.
- */
-
-#define SIZEOF(object)	((size_t) sizeof(object))
-
-/*
- * The modules that use fread() and fwrite() always invoke them through
- * these macros.  On some systems you may need to twiddle the argument casts.
- * CAUTION: argument order is different from underlying functions!
- */
-
-#define JFREAD(file,buf,sizeofbuf)  \
-  ((size_t) fread((void *) (buf), (size_t) 1, (size_t) (sizeofbuf), (file)))
-#define JFWRITE(file,buf,sizeofbuf)  \
-  ((size_t) fwrite((const void *) (buf), (size_t) 1, (size_t) (sizeofbuf), (file)))
diff --git a/src/libjpeg/jmemansi.c b/src/libjpeg/jmemansi.c
deleted file mode 100644
index b5da474..0000000
--- a/src/libjpeg/jmemansi.c
+++ /dev/null
@@ -1,167 +0,0 @@
-/*
- * jmemansi.c
- *
- * Copyright (C) 1992-1996, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file provides a simple generic implementation of the system-
- * dependent portion of the JPEG memory manager.  This implementation
- * assumes that you have the ANSI-standard library routine tmpfile().
- * Also, the problem of determining the amount of memory available
- * is shoved onto the user.
- */
-
-#define JPEG_INTERNALS
-#include "jinclude.h"
-#include "jpeglib.h"
-#include "jmemsys.h"		/* import the system-dependent declarations */
-
-#ifndef HAVE_STDLIB_H		/* <stdlib.h> should declare malloc(),free() */
-extern void * malloc JPP((size_t size));
-extern void free JPP((void *ptr));
-#endif
-
-#ifndef SEEK_SET		/* pre-ANSI systems may not define this; */
-#define SEEK_SET  0		/* if not, assume 0 is correct */
-#endif
-
-
-/*
- * Memory allocation and freeing are controlled by the regular library
- * routines malloc() and free().
- */
-
-GLOBAL(void *)
-jpeg_get_small (j_common_ptr cinfo, size_t sizeofobject)
-{
-  return (void *) malloc(sizeofobject);
-}
-
-GLOBAL(void)
-jpeg_free_small (j_common_ptr cinfo, void * object, size_t sizeofobject)
-{
-  free(object);
-}
-
-
-/*
- * "Large" objects are treated the same as "small" ones.
- * NB: although we include FAR keywords in the routine declarations,
- * this file won't actually work in 80x86 small/medium model; at least,
- * you probably won't be able to process useful-size images in only 64KB.
- */
-
-GLOBAL(void FAR *)
-jpeg_get_large (j_common_ptr cinfo, size_t sizeofobject)
-{
-  return (void FAR *) malloc(sizeofobject);
-}
-
-GLOBAL(void)
-jpeg_free_large (j_common_ptr cinfo, void FAR * object, size_t sizeofobject)
-{
-  free(object);
-}
-
-
-/*
- * This routine computes the total memory space available for allocation.
- * It's impossible to do this in a portable way; our current solution is
- * to make the user tell us (with a default value set at compile time).
- * If you can actually get the available space, it's a good idea to subtract
- * a slop factor of 5% or so.
- */
-
-#ifndef DEFAULT_MAX_MEM		/* so can override from makefile */
-#define DEFAULT_MAX_MEM		1000000L /* default: one megabyte */
-#endif
-
-GLOBAL(long)
-jpeg_mem_available (j_common_ptr cinfo, long min_bytes_needed,
-		    long max_bytes_needed, long already_allocated)
-{
-  return cinfo->mem->max_memory_to_use - already_allocated;
-}
-
-
-/*
- * Backing store (temporary file) management.
- * Backing store objects are only used when the value returned by
- * jpeg_mem_available is less than the total space needed.  You can dispense
- * with these routines if you have plenty of virtual memory; see jmemnobs.c.
- */
-
-
-METHODDEF(void)
-read_backing_store (j_common_ptr cinfo, backing_store_ptr info,
-		    void FAR * buffer_address,
-		    long file_offset, long byte_count)
-{
-  if (fseek(info->temp_file, file_offset, SEEK_SET))
-    ERREXIT(cinfo, JERR_TFILE_SEEK);
-  if (JFREAD(info->temp_file, buffer_address, byte_count)
-      != (size_t) byte_count)
-    ERREXIT(cinfo, JERR_TFILE_READ);
-}
-
-
-METHODDEF(void)
-write_backing_store (j_common_ptr cinfo, backing_store_ptr info,
-		     void FAR * buffer_address,
-		     long file_offset, long byte_count)
-{
-  if (fseek(info->temp_file, file_offset, SEEK_SET))
-    ERREXIT(cinfo, JERR_TFILE_SEEK);
-  if (JFWRITE(info->temp_file, buffer_address, byte_count)
-      != (size_t) byte_count)
-    ERREXIT(cinfo, JERR_TFILE_WRITE);
-}
-
-
-METHODDEF(void)
-close_backing_store (j_common_ptr cinfo, backing_store_ptr info)
-{
-  fclose(info->temp_file);
-  /* Since this implementation uses tmpfile() to create the file,
-   * no explicit file deletion is needed.
-   */
-}
-
-
-/*
- * Initial opening of a backing-store object.
- *
- * This version uses tmpfile(), which constructs a suitable file name
- * behind the scenes.  We don't have to use info->temp_name[] at all;
- * indeed, we can't even find out the actual name of the temp file.
- */
-
-GLOBAL(void)
-jpeg_open_backing_store (j_common_ptr cinfo, backing_store_ptr info,
-			 long total_bytes_needed)
-{
-  if ((info->temp_file = tmpfile()) == NULL)
-    ERREXITS(cinfo, JERR_TFILE_CREATE, "");
-  info->read_backing_store = read_backing_store;
-  info->write_backing_store = write_backing_store;
-  info->close_backing_store = close_backing_store;
-}
-
-
-/*
- * These routines take care of any system-dependent initialization and
- * cleanup required.
- */
-
-GLOBAL(long)
-jpeg_mem_init (j_common_ptr cinfo)
-{
-  return DEFAULT_MAX_MEM;	/* default for max_memory_to_use */
-}
-
-GLOBAL(void)
-jpeg_mem_term (j_common_ptr cinfo)
-{
-  /* no work */
-}
diff --git a/src/libjpeg/jmemmgr.c b/src/libjpeg/jmemmgr.c
deleted file mode 100644
index b636f1b..0000000
--- a/src/libjpeg/jmemmgr.c
+++ /dev/null
@@ -1,1118 +0,0 @@
-/*
- * jmemmgr.c
- *
- * Copyright (C) 1991-1997, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains the JPEG system-independent memory management
- * routines.  This code is usable across a wide variety of machines; most
- * of the system dependencies have been isolated in a separate file.
- * The major functions provided here are:
- *   * pool-based allocation and freeing of memory;
- *   * policy decisions about how to divide available memory among the
- *     virtual arrays;
- *   * control logic for swapping virtual arrays between main memory and
- *     backing storage.
- * The separate system-dependent file provides the actual backing-storage
- * access code, and it contains the policy decision about how much total
- * main memory to use.
- * This file is system-dependent in the sense that some of its functions
- * are unnecessary in some systems.  For example, if there is enough virtual
- * memory so that backing storage will never be used, much of the virtual
- * array control logic could be removed.  (Of course, if you have that much
- * memory then you shouldn't care about a little bit of unused code...)
- */
-
-#define JPEG_INTERNALS
-#define AM_MEMORY_MANAGER	/* we define jvirt_Xarray_control structs */
-#include "jinclude.h"
-#include "jpeglib.h"
-#include "jmemsys.h"		/* import the system-dependent declarations */
-
-#ifndef NO_GETENV
-#ifndef HAVE_STDLIB_H		/* <stdlib.h> should declare getenv() */
-extern char * getenv JPP((const char * name));
-#endif
-#endif
-
-
-/*
- * Some important notes:
- *   The allocation routines provided here must never return NULL.
- *   They should exit to error_exit if unsuccessful.
- *
- *   It's not a good idea to try to merge the sarray and barray routines,
- *   even though they are textually almost the same, because samples are
- *   usually stored as bytes while coefficients are shorts or ints.  Thus,
- *   in machines where byte pointers have a different representation from
- *   word pointers, the resulting machine code could not be the same.
- */
-
-
-/*
- * Many machines require storage alignment: longs must start on 4-byte
- * boundaries, doubles on 8-byte boundaries, etc.  On such machines, malloc()
- * always returns pointers that are multiples of the worst-case alignment
- * requirement, and we had better do so too.
- * There isn't any really portable way to determine the worst-case alignment
- * requirement.  This module assumes that the alignment requirement is
- * multiples of sizeof(ALIGN_TYPE).
- * By default, we define ALIGN_TYPE as double.  This is necessary on some
- * workstations (where doubles really do need 8-byte alignment) and will work
- * fine on nearly everything.  If your machine has lesser alignment needs,
- * you can save a few bytes by making ALIGN_TYPE smaller.
- * The only place I know of where this will NOT work is certain Macintosh
- * 680x0 compilers that define double as a 10-byte IEEE extended float.
- * Doing 10-byte alignment is counterproductive because longwords won't be
- * aligned well.  Put "#define ALIGN_TYPE long" in jconfig.h if you have
- * such a compiler.
- */
-
-#ifndef ALIGN_TYPE		/* so can override from jconfig.h */
-#define ALIGN_TYPE  double
-#endif
-
-
-/*
- * We allocate objects from "pools", where each pool is gotten with a single
- * request to jpeg_get_small() or jpeg_get_large().  There is no per-object
- * overhead within a pool, except for alignment padding.  Each pool has a
- * header with a link to the next pool of the same class.
- * Small and large pool headers are identical except that the latter's
- * link pointer must be FAR on 80x86 machines.
- * Notice that the "real" header fields are union'ed with a dummy ALIGN_TYPE
- * field.  This forces the compiler to make SIZEOF(small_pool_hdr) a multiple
- * of the alignment requirement of ALIGN_TYPE.
- */
-
-typedef union small_pool_struct * small_pool_ptr;
-
-typedef union small_pool_struct {
-  struct {
-    small_pool_ptr next;	/* next in list of pools */
-    size_t bytes_used;		/* how many bytes already used within pool */
-    size_t bytes_left;		/* bytes still available in this pool */
-  } hdr;
-  ALIGN_TYPE dummy;		/* included in union to ensure alignment */
-} small_pool_hdr;
-
-typedef union large_pool_struct FAR * large_pool_ptr;
-
-typedef union large_pool_struct {
-  struct {
-    large_pool_ptr next;	/* next in list of pools */
-    size_t bytes_used;		/* how many bytes already used within pool */
-    size_t bytes_left;		/* bytes still available in this pool */
-  } hdr;
-  ALIGN_TYPE dummy;		/* included in union to ensure alignment */
-} large_pool_hdr;
-
-
-/*
- * Here is the full definition of a memory manager object.
- */
-
-typedef struct {
-  struct jpeg_memory_mgr pub;	/* public fields */
-
-  /* Each pool identifier (lifetime class) names a linked list of pools. */
-  small_pool_ptr small_list[JPOOL_NUMPOOLS];
-  large_pool_ptr large_list[JPOOL_NUMPOOLS];
-
-  /* Since we only have one lifetime class of virtual arrays, only one
-   * linked list is necessary (for each datatype).  Note that the virtual
-   * array control blocks being linked together are actually stored somewhere
-   * in the small-pool list.
-   */
-  jvirt_sarray_ptr virt_sarray_list;
-  jvirt_barray_ptr virt_barray_list;
-
-  /* This counts total space obtained from jpeg_get_small/large */
-  long total_space_allocated;
-
-  /* alloc_sarray and alloc_barray set this value for use by virtual
-   * array routines.
-   */
-  JDIMENSION last_rowsperchunk;	/* from most recent alloc_sarray/barray */
-} my_memory_mgr;
-
-typedef my_memory_mgr * my_mem_ptr;
-
-
-/*
- * The control blocks for virtual arrays.
- * Note that these blocks are allocated in the "small" pool area.
- * System-dependent info for the associated backing store (if any) is hidden
- * inside the backing_store_info struct.
- */
-
-struct jvirt_sarray_control {
-  JSAMPARRAY mem_buffer;	/* => the in-memory buffer */
-  JDIMENSION rows_in_array;	/* total virtual array height */
-  JDIMENSION samplesperrow;	/* width of array (and of memory buffer) */
-  JDIMENSION maxaccess;		/* max rows accessed by access_virt_sarray */
-  JDIMENSION rows_in_mem;	/* height of memory buffer */
-  JDIMENSION rowsperchunk;	/* allocation chunk size in mem_buffer */
-  JDIMENSION cur_start_row;	/* first logical row # in the buffer */
-  JDIMENSION first_undef_row;	/* row # of first uninitialized row */
-  boolean pre_zero;		/* pre-zero mode requested? */
-  boolean dirty;		/* do current buffer contents need written? */
-  boolean b_s_open;		/* is backing-store data valid? */
-  jvirt_sarray_ptr next;	/* link to next virtual sarray control block */
-  backing_store_info b_s_info;	/* System-dependent control info */
-};
-
-struct jvirt_barray_control {
-  JBLOCKARRAY mem_buffer;	/* => the in-memory buffer */
-  JDIMENSION rows_in_array;	/* total virtual array height */
-  JDIMENSION blocksperrow;	/* width of array (and of memory buffer) */
-  JDIMENSION maxaccess;		/* max rows accessed by access_virt_barray */
-  JDIMENSION rows_in_mem;	/* height of memory buffer */
-  JDIMENSION rowsperchunk;	/* allocation chunk size in mem_buffer */
-  JDIMENSION cur_start_row;	/* first logical row # in the buffer */
-  JDIMENSION first_undef_row;	/* row # of first uninitialized row */
-  boolean pre_zero;		/* pre-zero mode requested? */
-  boolean dirty;		/* do current buffer contents need written? */
-  boolean b_s_open;		/* is backing-store data valid? */
-  jvirt_barray_ptr next;	/* link to next virtual barray control block */
-  backing_store_info b_s_info;	/* System-dependent control info */
-};
-
-
-#ifdef MEM_STATS		/* optional extra stuff for statistics */
-
-LOCAL(void)
-print_mem_stats (j_common_ptr cinfo, int pool_id)
-{
-  my_mem_ptr mem = (my_mem_ptr) cinfo->mem;
-  small_pool_ptr shdr_ptr;
-  large_pool_ptr lhdr_ptr;
-
-  /* Since this is only a debugging stub, we can cheat a little by using
-   * fprintf directly rather than going through the trace message code.
-   * This is helpful because message parm array can't handle longs.
-   */
-  fprintf(stderr, "Freeing pool %d, total space = %ld\n",
-	  pool_id, mem->total_space_allocated);
-
-  for (lhdr_ptr = mem->large_list[pool_id]; lhdr_ptr != NULL;
-       lhdr_ptr = lhdr_ptr->hdr.next) {
-    fprintf(stderr, "  Large chunk used %ld\n",
-	    (long) lhdr_ptr->hdr.bytes_used);
-  }
-
-  for (shdr_ptr = mem->small_list[pool_id]; shdr_ptr != NULL;
-       shdr_ptr = shdr_ptr->hdr.next) {
-    fprintf(stderr, "  Small chunk used %ld free %ld\n",
-	    (long) shdr_ptr->hdr.bytes_used,
-	    (long) shdr_ptr->hdr.bytes_left);
-  }
-}
-
-#endif /* MEM_STATS */
-
-
-LOCAL(void)
-out_of_memory (j_common_ptr cinfo, int which)
-/* Report an out-of-memory error and stop execution */
-/* If we compiled MEM_STATS support, report alloc requests before dying */
-{
-#ifdef MEM_STATS
-  cinfo->err->trace_level = 2;	/* force self_destruct to report stats */
-#endif
-  ERREXIT1(cinfo, JERR_OUT_OF_MEMORY, which);
-}
-
-
-/*
- * Allocation of "small" objects.
- *
- * For these, we use pooled storage.  When a new pool must be created,
- * we try to get enough space for the current request plus a "slop" factor,
- * where the slop will be the amount of leftover space in the new pool.
- * The speed vs. space tradeoff is largely determined by the slop values.
- * A different slop value is provided for each pool class (lifetime),
- * and we also distinguish the first pool of a class from later ones.
- * NOTE: the values given work fairly well on both 16- and 32-bit-int
- * machines, but may be too small if longs are 64 bits or more.
- */
-
-static const size_t first_pool_slop[JPOOL_NUMPOOLS] = 
-{
-	1600,			/* first PERMANENT pool */
-	16000			/* first IMAGE pool */
-};
-
-static const size_t extra_pool_slop[JPOOL_NUMPOOLS] = 
-{
-	0,			/* additional PERMANENT pools */
-	5000			/* additional IMAGE pools */
-};
-
-#define MIN_SLOP  50		/* greater than 0 to avoid futile looping */
-
-
-METHODDEF(void *)
-alloc_small (j_common_ptr cinfo, int pool_id, size_t sizeofobject)
-/* Allocate a "small" object */
-{
-  my_mem_ptr mem = (my_mem_ptr) cinfo->mem;
-  small_pool_ptr hdr_ptr, prev_hdr_ptr;
-  char * data_ptr;
-  size_t odd_bytes, min_request, slop;
-
-  /* Check for unsatisfiable request (do now to ensure no overflow below) */
-  if (sizeofobject > (size_t) (MAX_ALLOC_CHUNK-SIZEOF(small_pool_hdr)))
-    out_of_memory(cinfo, 1);	/* request exceeds malloc's ability */
-
-  /* Round up the requested size to a multiple of SIZEOF(ALIGN_TYPE) */
-  odd_bytes = sizeofobject % SIZEOF(ALIGN_TYPE);
-  if (odd_bytes > 0)
-    sizeofobject += SIZEOF(ALIGN_TYPE) - odd_bytes;
-
-  /* See if space is available in any existing pool */
-  if (pool_id < 0 || pool_id >= JPOOL_NUMPOOLS)
-    ERREXIT1(cinfo, JERR_BAD_POOL_ID, pool_id);	/* safety check */
-  prev_hdr_ptr = NULL;
-  hdr_ptr = mem->small_list[pool_id];
-  while (hdr_ptr != NULL) {
-    if (hdr_ptr->hdr.bytes_left >= sizeofobject)
-      break;			/* found pool with enough space */
-    prev_hdr_ptr = hdr_ptr;
-    hdr_ptr = hdr_ptr->hdr.next;
-  }
-
-  /* Time to make a new pool? */
-  if (hdr_ptr == NULL) {
-    /* min_request is what we need now, slop is what will be leftover */
-    min_request = sizeofobject + SIZEOF(small_pool_hdr);
-    if (prev_hdr_ptr == NULL)	/* first pool in class? */
-      slop = first_pool_slop[pool_id];
-    else
-      slop = extra_pool_slop[pool_id];
-    /* Don't ask for more than MAX_ALLOC_CHUNK */
-    if (slop > (size_t) (MAX_ALLOC_CHUNK-min_request))
-      slop = (size_t) (MAX_ALLOC_CHUNK-min_request);
-    /* Try to get space, if fail reduce slop and try again */
-    for (;;) {
-      hdr_ptr = (small_pool_ptr) jpeg_get_small(cinfo, min_request + slop);
-      if (hdr_ptr != NULL)
-	break;
-      slop /= 2;
-      if (slop < MIN_SLOP)	/* give up when it gets real small */
-	out_of_memory(cinfo, 2); /* jpeg_get_small failed */
-    }
-    mem->total_space_allocated += min_request + slop;
-    /* Success, initialize the new pool header and add to end of list */
-    hdr_ptr->hdr.next = NULL;
-    hdr_ptr->hdr.bytes_used = 0;
-    hdr_ptr->hdr.bytes_left = sizeofobject + slop;
-    if (prev_hdr_ptr == NULL)	/* first pool in class? */
-      mem->small_list[pool_id] = hdr_ptr;
-    else
-      prev_hdr_ptr->hdr.next = hdr_ptr;
-  }
-
-  /* OK, allocate the object from the current pool */
-  data_ptr = (char *) (hdr_ptr + 1); /* point to first data byte in pool */
-  data_ptr += hdr_ptr->hdr.bytes_used; /* point to place for object */
-  hdr_ptr->hdr.bytes_used += sizeofobject;
-  hdr_ptr->hdr.bytes_left -= sizeofobject;
-
-  return (void *) data_ptr;
-}
-
-
-/*
- * Allocation of "large" objects.
- *
- * The external semantics of these are the same as "small" objects,
- * except that FAR pointers are used on 80x86.  However the pool
- * management heuristics are quite different.  We assume that each
- * request is large enough that it may as well be passed directly to
- * jpeg_get_large; the pool management just links everything together
- * so that we can free it all on demand.
- * Note: the major use of "large" objects is in JSAMPARRAY and JBLOCKARRAY
- * structures.  The routines that create these structures (see below)
- * deliberately bunch rows together to ensure a large request size.
- */
-
-METHODDEF(void FAR *)
-alloc_large (j_common_ptr cinfo, int pool_id, size_t sizeofobject)
-/* Allocate a "large" object */
-{
-  my_mem_ptr mem = (my_mem_ptr) cinfo->mem;
-  large_pool_ptr hdr_ptr;
-  size_t odd_bytes;
-
-  /* Check for unsatisfiable request (do now to ensure no overflow below) */
-  if (sizeofobject > (size_t) (MAX_ALLOC_CHUNK-SIZEOF(large_pool_hdr)))
-    out_of_memory(cinfo, 3);	/* request exceeds malloc's ability */
-
-  /* Round up the requested size to a multiple of SIZEOF(ALIGN_TYPE) */
-  odd_bytes = sizeofobject % SIZEOF(ALIGN_TYPE);
-  if (odd_bytes > 0)
-    sizeofobject += SIZEOF(ALIGN_TYPE) - odd_bytes;
-
-  /* Always make a new pool */
-  if (pool_id < 0 || pool_id >= JPOOL_NUMPOOLS)
-    ERREXIT1(cinfo, JERR_BAD_POOL_ID, pool_id);	/* safety check */
-
-  hdr_ptr = (large_pool_ptr) jpeg_get_large(cinfo, sizeofobject +
-					    SIZEOF(large_pool_hdr));
-  if (hdr_ptr == NULL)
-    out_of_memory(cinfo, 4);	/* jpeg_get_large failed */
-  mem->total_space_allocated += sizeofobject + SIZEOF(large_pool_hdr);
-
-  /* Success, initialize the new pool header and add to list */
-  hdr_ptr->hdr.next = mem->large_list[pool_id];
-  /* We maintain space counts in each pool header for statistical purposes,
-   * even though they are not needed for allocation.
-   */
-  hdr_ptr->hdr.bytes_used = sizeofobject;
-  hdr_ptr->hdr.bytes_left = 0;
-  mem->large_list[pool_id] = hdr_ptr;
-
-  return (void FAR *) (hdr_ptr + 1); /* point to first data byte in pool */
-}
-
-
-/*
- * Creation of 2-D sample arrays.
- * The pointers are in near heap, the samples themselves in FAR heap.
- *
- * To minimize allocation overhead and to allow I/O of large contiguous
- * blocks, we allocate the sample rows in groups of as many rows as possible
- * without exceeding MAX_ALLOC_CHUNK total bytes per allocation request.
- * NB: the virtual array control routines, later in this file, know about
- * this chunking of rows.  The rowsperchunk value is left in the mem manager
- * object so that it can be saved away if this sarray is the workspace for
- * a virtual array.
- */
-
-METHODDEF(JSAMPARRAY)
-alloc_sarray (j_common_ptr cinfo, int pool_id,
-	      JDIMENSION samplesperrow, JDIMENSION numrows)
-/* Allocate a 2-D sample array */
-{
-  my_mem_ptr mem = (my_mem_ptr) cinfo->mem;
-  JSAMPARRAY result;
-  JSAMPROW workspace;
-  JDIMENSION rowsperchunk, currow, i;
-  long ltemp;
-
-  /* Calculate max # of rows allowed in one allocation chunk */
-  ltemp = (MAX_ALLOC_CHUNK-SIZEOF(large_pool_hdr)) /
-	  ((long) samplesperrow * SIZEOF(JSAMPLE));
-  if (ltemp <= 0)
-    ERREXIT(cinfo, JERR_WIDTH_OVERFLOW);
-  if (ltemp < (long) numrows)
-    rowsperchunk = (JDIMENSION) ltemp;
-  else
-    rowsperchunk = numrows;
-  mem->last_rowsperchunk = rowsperchunk;
-
-  /* Get space for row pointers (small object) */
-  result = (JSAMPARRAY) alloc_small(cinfo, pool_id,
-				    (size_t) (numrows * SIZEOF(JSAMPROW)));
-
-  /* Get the rows themselves (large objects) */
-  currow = 0;
-  while (currow < numrows) {
-    rowsperchunk = MIN(rowsperchunk, numrows - currow);
-    workspace = (JSAMPROW) alloc_large(cinfo, pool_id,
-	(size_t) ((size_t) rowsperchunk * (size_t) samplesperrow
-		  * SIZEOF(JSAMPLE)));
-    for (i = rowsperchunk; i > 0; i--) {
-      result[currow++] = workspace;
-      workspace += samplesperrow;
-    }
-  }
-
-  return result;
-}
-
-
-/*
- * Creation of 2-D coefficient-block arrays.
- * This is essentially the same as the code for sample arrays, above.
- */
-
-METHODDEF(JBLOCKARRAY)
-alloc_barray (j_common_ptr cinfo, int pool_id,
-	      JDIMENSION blocksperrow, JDIMENSION numrows)
-/* Allocate a 2-D coefficient-block array */
-{
-  my_mem_ptr mem = (my_mem_ptr) cinfo->mem;
-  JBLOCKARRAY result;
-  JBLOCKROW workspace;
-  JDIMENSION rowsperchunk, currow, i;
-  long ltemp;
-
-  /* Calculate max # of rows allowed in one allocation chunk */
-  ltemp = (MAX_ALLOC_CHUNK-SIZEOF(large_pool_hdr)) /
-	  ((long) blocksperrow * SIZEOF(JBLOCK));
-  if (ltemp <= 0)
-    ERREXIT(cinfo, JERR_WIDTH_OVERFLOW);
-  if (ltemp < (long) numrows)
-    rowsperchunk = (JDIMENSION) ltemp;
-  else
-    rowsperchunk = numrows;
-  mem->last_rowsperchunk = rowsperchunk;
-
-  /* Get space for row pointers (small object) */
-  result = (JBLOCKARRAY) alloc_small(cinfo, pool_id,
-				     (size_t) (numrows * SIZEOF(JBLOCKROW)));
-
-  /* Get the rows themselves (large objects) */
-  currow = 0;
-  while (currow < numrows) {
-    rowsperchunk = MIN(rowsperchunk, numrows - currow);
-    workspace = (JBLOCKROW) alloc_large(cinfo, pool_id,
-	(size_t) ((size_t) rowsperchunk * (size_t) blocksperrow
-		  * SIZEOF(JBLOCK)));
-    for (i = rowsperchunk; i > 0; i--) {
-      result[currow++] = workspace;
-      workspace += blocksperrow;
-    }
-  }
-
-  return result;
-}
-
-
-/*
- * About virtual array management:
- *
- * The above "normal" array routines are only used to allocate strip buffers
- * (as wide as the image, but just a few rows high).  Full-image-sized buffers
- * are handled as "virtual" arrays.  The array is still accessed a strip at a
- * time, but the memory manager must save the whole array for repeated
- * accesses.  The intended implementation is that there is a strip buffer in
- * memory (as high as is possible given the desired memory limit), plus a
- * backing file that holds the rest of the array.
- *
- * The request_virt_array routines are told the total size of the image and
- * the maximum number of rows that will be accessed at once.  The in-memory
- * buffer must be at least as large as the maxaccess value.
- *
- * The request routines create control blocks but not the in-memory buffers.
- * That is postponed until realize_virt_arrays is called.  At that time the
- * total amount of space needed is known (approximately, anyway), so free
- * memory can be divided up fairly.
- *
- * The access_virt_array routines are responsible for making a specific strip
- * area accessible (after reading or writing the backing file, if necessary).
- * Note that the access routines are told whether the caller intends to modify
- * the accessed strip; during a read-only pass this saves having to rewrite
- * data to disk.  The access routines are also responsible for pre-zeroing
- * any newly accessed rows, if pre-zeroing was requested.
- *
- * In current usage, the access requests are usually for nonoverlapping
- * strips; that is, successive access start_row numbers differ by exactly
- * num_rows = maxaccess.  This means we can get good performance with simple
- * buffer dump/reload logic, by making the in-memory buffer be a multiple
- * of the access height; then there will never be accesses across bufferload
- * boundaries.  The code will still work with overlapping access requests,
- * but it doesn't handle bufferload overlaps very efficiently.
- */
-
-
-METHODDEF(jvirt_sarray_ptr)
-request_virt_sarray (j_common_ptr cinfo, int pool_id, boolean pre_zero,
-		     JDIMENSION samplesperrow, JDIMENSION numrows,
-		     JDIMENSION maxaccess)
-/* Request a virtual 2-D sample array */
-{
-  my_mem_ptr mem = (my_mem_ptr) cinfo->mem;
-  jvirt_sarray_ptr result;
-
-  /* Only IMAGE-lifetime virtual arrays are currently supported */
-  if (pool_id != JPOOL_IMAGE)
-    ERREXIT1(cinfo, JERR_BAD_POOL_ID, pool_id);	/* safety check */
-
-  /* get control block */
-  result = (jvirt_sarray_ptr) alloc_small(cinfo, pool_id,
-					  SIZEOF(struct jvirt_sarray_control));
-
-  result->mem_buffer = NULL;	/* marks array not yet realized */
-  result->rows_in_array = numrows;
-  result->samplesperrow = samplesperrow;
-  result->maxaccess = maxaccess;
-  result->pre_zero = pre_zero;
-  result->b_s_open = FALSE;	/* no associated backing-store object */
-  result->next = mem->virt_sarray_list; /* add to list of virtual arrays */
-  mem->virt_sarray_list = result;
-
-  return result;
-}
-
-
-METHODDEF(jvirt_barray_ptr)
-request_virt_barray (j_common_ptr cinfo, int pool_id, boolean pre_zero,
-		     JDIMENSION blocksperrow, JDIMENSION numrows,
-		     JDIMENSION maxaccess)
-/* Request a virtual 2-D coefficient-block array */
-{
-  my_mem_ptr mem = (my_mem_ptr) cinfo->mem;
-  jvirt_barray_ptr result;
-
-  /* Only IMAGE-lifetime virtual arrays are currently supported */
-  if (pool_id != JPOOL_IMAGE)
-    ERREXIT1(cinfo, JERR_BAD_POOL_ID, pool_id);	/* safety check */
-
-  /* get control block */
-  result = (jvirt_barray_ptr) alloc_small(cinfo, pool_id,
-					  SIZEOF(struct jvirt_barray_control));
-
-  result->mem_buffer = NULL;	/* marks array not yet realized */
-  result->rows_in_array = numrows;
-  result->blocksperrow = blocksperrow;
-  result->maxaccess = maxaccess;
-  result->pre_zero = pre_zero;
-  result->b_s_open = FALSE;	/* no associated backing-store object */
-  result->next = mem->virt_barray_list; /* add to list of virtual arrays */
-  mem->virt_barray_list = result;
-
-  return result;
-}
-
-
-METHODDEF(void)
-realize_virt_arrays (j_common_ptr cinfo)
-/* Allocate the in-memory buffers for any unrealized virtual arrays */
-{
-  my_mem_ptr mem = (my_mem_ptr) cinfo->mem;
-  long space_per_minheight, maximum_space, avail_mem;
-  long minheights, max_minheights;
-  jvirt_sarray_ptr sptr;
-  jvirt_barray_ptr bptr;
-
-  /* Compute the minimum space needed (maxaccess rows in each buffer)
-   * and the maximum space needed (full image height in each buffer).
-   * These may be of use to the system-dependent jpeg_mem_available routine.
-   */
-  space_per_minheight = 0;
-  maximum_space = 0;
-  for (sptr = mem->virt_sarray_list; sptr != NULL; sptr = sptr->next) {
-    if (sptr->mem_buffer == NULL) { /* if not realized yet */
-      space_per_minheight += (long) sptr->maxaccess *
-			     (long) sptr->samplesperrow * SIZEOF(JSAMPLE);
-      maximum_space += (long) sptr->rows_in_array *
-		       (long) sptr->samplesperrow * SIZEOF(JSAMPLE);
-    }
-  }
-  for (bptr = mem->virt_barray_list; bptr != NULL; bptr = bptr->next) {
-    if (bptr->mem_buffer == NULL) { /* if not realized yet */
-      space_per_minheight += (long) bptr->maxaccess *
-			     (long) bptr->blocksperrow * SIZEOF(JBLOCK);
-      maximum_space += (long) bptr->rows_in_array *
-		       (long) bptr->blocksperrow * SIZEOF(JBLOCK);
-    }
-  }
-
-  if (space_per_minheight <= 0)
-    return;			/* no unrealized arrays, no work */
-
-  /* Determine amount of memory to actually use; this is system-dependent. */
-  avail_mem = jpeg_mem_available(cinfo, space_per_minheight, maximum_space,
-				 mem->total_space_allocated);
-
-  /* If the maximum space needed is available, make all the buffers full
-   * height; otherwise parcel it out with the same number of minheights
-   * in each buffer.
-   */
-  if (avail_mem >= maximum_space)
-    max_minheights = 1000000000L;
-  else {
-    max_minheights = avail_mem / space_per_minheight;
-    /* If there doesn't seem to be enough space, try to get the minimum
-     * anyway.  This allows a "stub" implementation of jpeg_mem_available().
-     */
-    if (max_minheights <= 0)
-      max_minheights = 1;
-  }
-
-  /* Allocate the in-memory buffers and initialize backing store as needed. */
-
-  for (sptr = mem->virt_sarray_list; sptr != NULL; sptr = sptr->next) {
-    if (sptr->mem_buffer == NULL) { /* if not realized yet */
-      minheights = ((long) sptr->rows_in_array - 1L) / sptr->maxaccess + 1L;
-      if (minheights <= max_minheights) {
-	/* This buffer fits in memory */
-	sptr->rows_in_mem = sptr->rows_in_array;
-      } else {
-	/* It doesn't fit in memory, create backing store. */
-	sptr->rows_in_mem = (JDIMENSION) (max_minheights * sptr->maxaccess);
-	jpeg_open_backing_store(cinfo, & sptr->b_s_info,
-				(long) sptr->rows_in_array *
-				(long) sptr->samplesperrow *
-				(long) SIZEOF(JSAMPLE));
-	sptr->b_s_open = TRUE;
-      }
-      sptr->mem_buffer = alloc_sarray(cinfo, JPOOL_IMAGE,
-				      sptr->samplesperrow, sptr->rows_in_mem);
-      sptr->rowsperchunk = mem->last_rowsperchunk;
-      sptr->cur_start_row = 0;
-      sptr->first_undef_row = 0;
-      sptr->dirty = FALSE;
-    }
-  }
-
-  for (bptr = mem->virt_barray_list; bptr != NULL; bptr = bptr->next) {
-    if (bptr->mem_buffer == NULL) { /* if not realized yet */
-      minheights = ((long) bptr->rows_in_array - 1L) / bptr->maxaccess + 1L;
-      if (minheights <= max_minheights) {
-	/* This buffer fits in memory */
-	bptr->rows_in_mem = bptr->rows_in_array;
-      } else {
-	/* It doesn't fit in memory, create backing store. */
-	bptr->rows_in_mem = (JDIMENSION) (max_minheights * bptr->maxaccess);
-	jpeg_open_backing_store(cinfo, & bptr->b_s_info,
-				(long) bptr->rows_in_array *
-				(long) bptr->blocksperrow *
-				(long) SIZEOF(JBLOCK));
-	bptr->b_s_open = TRUE;
-      }
-      bptr->mem_buffer = alloc_barray(cinfo, JPOOL_IMAGE,
-				      bptr->blocksperrow, bptr->rows_in_mem);
-      bptr->rowsperchunk = mem->last_rowsperchunk;
-      bptr->cur_start_row = 0;
-      bptr->first_undef_row = 0;
-      bptr->dirty = FALSE;
-    }
-  }
-}
-
-
-LOCAL(void)
-do_sarray_io (j_common_ptr cinfo, jvirt_sarray_ptr ptr, boolean writing)
-/* Do backing store read or write of a virtual sample array */
-{
-  long bytesperrow, file_offset, byte_count, rows, thisrow, i;
-
-  bytesperrow = (long) ptr->samplesperrow * SIZEOF(JSAMPLE);
-  file_offset = ptr->cur_start_row * bytesperrow;
-  /* Loop to read or write each allocation chunk in mem_buffer */
-  for (i = 0; i < (long) ptr->rows_in_mem; i += ptr->rowsperchunk) {
-    /* One chunk, but check for short chunk at end of buffer */
-    rows = MIN((long) ptr->rowsperchunk, (long) ptr->rows_in_mem - i);
-    /* Transfer no more than is currently defined */
-    thisrow = (long) ptr->cur_start_row + i;
-    rows = MIN(rows, (long) ptr->first_undef_row - thisrow);
-    /* Transfer no more than fits in file */
-    rows = MIN(rows, (long) ptr->rows_in_array - thisrow);
-    if (rows <= 0)		/* this chunk might be past end of file! */
-      break;
-    byte_count = rows * bytesperrow;
-    if (writing)
-      (*ptr->b_s_info.write_backing_store) (cinfo, & ptr->b_s_info,
-					    (void FAR *) ptr->mem_buffer[i],
-					    file_offset, byte_count);
-    else
-      (*ptr->b_s_info.read_backing_store) (cinfo, & ptr->b_s_info,
-					   (void FAR *) ptr->mem_buffer[i],
-					   file_offset, byte_count);
-    file_offset += byte_count;
-  }
-}
-
-
-LOCAL(void)
-do_barray_io (j_common_ptr cinfo, jvirt_barray_ptr ptr, boolean writing)
-/* Do backing store read or write of a virtual coefficient-block array */
-{
-  long bytesperrow, file_offset, byte_count, rows, thisrow, i;
-
-  bytesperrow = (long) ptr->blocksperrow * SIZEOF(JBLOCK);
-  file_offset = ptr->cur_start_row * bytesperrow;
-  /* Loop to read or write each allocation chunk in mem_buffer */
-  for (i = 0; i < (long) ptr->rows_in_mem; i += ptr->rowsperchunk) {
-    /* One chunk, but check for short chunk at end of buffer */
-    rows = MIN((long) ptr->rowsperchunk, (long) ptr->rows_in_mem - i);
-    /* Transfer no more than is currently defined */
-    thisrow = (long) ptr->cur_start_row + i;
-    rows = MIN(rows, (long) ptr->first_undef_row - thisrow);
-    /* Transfer no more than fits in file */
-    rows = MIN(rows, (long) ptr->rows_in_array - thisrow);
-    if (rows <= 0)		/* this chunk might be past end of file! */
-      break;
-    byte_count = rows * bytesperrow;
-    if (writing)
-      (*ptr->b_s_info.write_backing_store) (cinfo, & ptr->b_s_info,
-					    (void FAR *) ptr->mem_buffer[i],
-					    file_offset, byte_count);
-    else
-      (*ptr->b_s_info.read_backing_store) (cinfo, & ptr->b_s_info,
-					   (void FAR *) ptr->mem_buffer[i],
-					   file_offset, byte_count);
-    file_offset += byte_count;
-  }
-}
-
-
-METHODDEF(JSAMPARRAY)
-access_virt_sarray (j_common_ptr cinfo, jvirt_sarray_ptr ptr,
-		    JDIMENSION start_row, JDIMENSION num_rows,
-		    boolean writable)
-/* Access the part of a virtual sample array starting at start_row */
-/* and extending for num_rows rows.  writable is true if  */
-/* caller intends to modify the accessed area. */
-{
-  JDIMENSION end_row = start_row + num_rows;
-  JDIMENSION undef_row;
-
-  /* debugging check */
-  if (end_row > ptr->rows_in_array || num_rows > ptr->maxaccess ||
-      ptr->mem_buffer == NULL)
-    ERREXIT(cinfo, JERR_BAD_VIRTUAL_ACCESS);
-
-  /* Make the desired part of the virtual array accessible */
-  if (start_row < ptr->cur_start_row ||
-      end_row > ptr->cur_start_row+ptr->rows_in_mem) {
-    if (! ptr->b_s_open)
-      ERREXIT(cinfo, JERR_VIRTUAL_BUG);
-    /* Flush old buffer contents if necessary */
-    if (ptr->dirty) {
-      do_sarray_io(cinfo, ptr, TRUE);
-      ptr->dirty = FALSE;
-    }
-    /* Decide what part of virtual array to access.
-     * Algorithm: if target address > current window, assume forward scan,
-     * load starting at target address.  If target address < current window,
-     * assume backward scan, load so that target area is top of window.
-     * Note that when switching from forward write to forward read, will have
-     * start_row = 0, so the limiting case applies and we load from 0 anyway.
-     */
-    if (start_row > ptr->cur_start_row) {
-      ptr->cur_start_row = start_row;
-    } else {
-      /* use long arithmetic here to avoid overflow & unsigned problems */
-      long ltemp;
-
-      ltemp = (long) end_row - (long) ptr->rows_in_mem;
-      if (ltemp < 0)
-	ltemp = 0;		/* don't fall off front end of file */
-      ptr->cur_start_row = (JDIMENSION) ltemp;
-    }
-    /* Read in the selected part of the array.
-     * During the initial write pass, we will do no actual read
-     * because the selected part is all undefined.
-     */
-    do_sarray_io(cinfo, ptr, FALSE);
-  }
-  /* Ensure the accessed part of the array is defined; prezero if needed.
-   * To improve locality of access, we only prezero the part of the array
-   * that the caller is about to access, not the entire in-memory array.
-   */
-  if (ptr->first_undef_row < end_row) {
-    if (ptr->first_undef_row < start_row) {
-      if (writable)		/* writer skipped over a section of array */
-	ERREXIT(cinfo, JERR_BAD_VIRTUAL_ACCESS);
-      undef_row = start_row;	/* but reader is allowed to read ahead */
-    } else {
-      undef_row = ptr->first_undef_row;
-    }
-    if (writable)
-      ptr->first_undef_row = end_row;
-    if (ptr->pre_zero) {
-      size_t bytesperrow = (size_t) ptr->samplesperrow * SIZEOF(JSAMPLE);
-      undef_row -= ptr->cur_start_row; /* make indexes relative to buffer */
-      end_row -= ptr->cur_start_row;
-      while (undef_row < end_row) {
-	jzero_far((void FAR *) ptr->mem_buffer[undef_row], bytesperrow);
-	undef_row++;
-      }
-    } else {
-      if (! writable)		/* reader looking at undefined data */
-	ERREXIT(cinfo, JERR_BAD_VIRTUAL_ACCESS);
-    }
-  }
-  /* Flag the buffer dirty if caller will write in it */
-  if (writable)
-    ptr->dirty = TRUE;
-  /* Return address of proper part of the buffer */
-  return ptr->mem_buffer + (start_row - ptr->cur_start_row);
-}
-
-
-METHODDEF(JBLOCKARRAY)
-access_virt_barray (j_common_ptr cinfo, jvirt_barray_ptr ptr,
-		    JDIMENSION start_row, JDIMENSION num_rows,
-		    boolean writable)
-/* Access the part of a virtual block array starting at start_row */
-/* and extending for num_rows rows.  writable is true if  */
-/* caller intends to modify the accessed area. */
-{
-  JDIMENSION end_row = start_row + num_rows;
-  JDIMENSION undef_row;
-
-  /* debugging check */
-  if (end_row > ptr->rows_in_array || num_rows > ptr->maxaccess ||
-      ptr->mem_buffer == NULL)
-    ERREXIT(cinfo, JERR_BAD_VIRTUAL_ACCESS);
-
-  /* Make the desired part of the virtual array accessible */
-  if (start_row < ptr->cur_start_row ||
-      end_row > ptr->cur_start_row+ptr->rows_in_mem) {
-    if (! ptr->b_s_open)
-      ERREXIT(cinfo, JERR_VIRTUAL_BUG);
-    /* Flush old buffer contents if necessary */
-    if (ptr->dirty) {
-      do_barray_io(cinfo, ptr, TRUE);
-      ptr->dirty = FALSE;
-    }
-    /* Decide what part of virtual array to access.
-     * Algorithm: if target address > current window, assume forward scan,
-     * load starting at target address.  If target address < current window,
-     * assume backward scan, load so that target area is top of window.
-     * Note that when switching from forward write to forward read, will have
-     * start_row = 0, so the limiting case applies and we load from 0 anyway.
-     */
-    if (start_row > ptr->cur_start_row) {
-      ptr->cur_start_row = start_row;
-    } else {
-      /* use long arithmetic here to avoid overflow & unsigned problems */
-      long ltemp;
-
-      ltemp = (long) end_row - (long) ptr->rows_in_mem;
-      if (ltemp < 0)
-	ltemp = 0;		/* don't fall off front end of file */
-      ptr->cur_start_row = (JDIMENSION) ltemp;
-    }
-    /* Read in the selected part of the array.
-     * During the initial write pass, we will do no actual read
-     * because the selected part is all undefined.
-     */
-    do_barray_io(cinfo, ptr, FALSE);
-  }
-  /* Ensure the accessed part of the array is defined; prezero if needed.
-   * To improve locality of access, we only prezero the part of the array
-   * that the caller is about to access, not the entire in-memory array.
-   */
-  if (ptr->first_undef_row < end_row) {
-    if (ptr->first_undef_row < start_row) {
-      if (writable)		/* writer skipped over a section of array */
-	ERREXIT(cinfo, JERR_BAD_VIRTUAL_ACCESS);
-      undef_row = start_row;	/* but reader is allowed to read ahead */
-    } else {
-      undef_row = ptr->first_undef_row;
-    }
-    if (writable)
-      ptr->first_undef_row = end_row;
-    if (ptr->pre_zero) {
-      size_t bytesperrow = (size_t) ptr->blocksperrow * SIZEOF(JBLOCK);
-      undef_row -= ptr->cur_start_row; /* make indexes relative to buffer */
-      end_row -= ptr->cur_start_row;
-      while (undef_row < end_row) {
-	jzero_far((void FAR *) ptr->mem_buffer[undef_row], bytesperrow);
-	undef_row++;
-      }
-    } else {
-      if (! writable)		/* reader looking at undefined data */
-	ERREXIT(cinfo, JERR_BAD_VIRTUAL_ACCESS);
-    }
-  }
-  /* Flag the buffer dirty if caller will write in it */
-  if (writable)
-    ptr->dirty = TRUE;
-  /* Return address of proper part of the buffer */
-  return ptr->mem_buffer + (start_row - ptr->cur_start_row);
-}
-
-
-/*
- * Release all objects belonging to a specified pool.
- */
-
-METHODDEF(void)
-free_pool (j_common_ptr cinfo, int pool_id)
-{
-  my_mem_ptr mem = (my_mem_ptr) cinfo->mem;
-  small_pool_ptr shdr_ptr;
-  large_pool_ptr lhdr_ptr;
-  size_t space_freed;
-
-  if (pool_id < 0 || pool_id >= JPOOL_NUMPOOLS)
-    ERREXIT1(cinfo, JERR_BAD_POOL_ID, pool_id);	/* safety check */
-
-#ifdef MEM_STATS
-  if (cinfo->err->trace_level > 1)
-    print_mem_stats(cinfo, pool_id); /* print pool's memory usage statistics */
-#endif
-
-  /* If freeing IMAGE pool, close any virtual arrays first */
-  if (pool_id == JPOOL_IMAGE) {
-    jvirt_sarray_ptr sptr;
-    jvirt_barray_ptr bptr;
-
-    for (sptr = mem->virt_sarray_list; sptr != NULL; sptr = sptr->next) {
-      if (sptr->b_s_open) {	/* there may be no backing store */
-	sptr->b_s_open = FALSE;	/* prevent recursive close if error */
-	(*sptr->b_s_info.close_backing_store) (cinfo, & sptr->b_s_info);
-      }
-    }
-    mem->virt_sarray_list = NULL;
-    for (bptr = mem->virt_barray_list; bptr != NULL; bptr = bptr->next) {
-      if (bptr->b_s_open) {	/* there may be no backing store */
-	bptr->b_s_open = FALSE;	/* prevent recursive close if error */
-	(*bptr->b_s_info.close_backing_store) (cinfo, & bptr->b_s_info);
-      }
-    }
-    mem->virt_barray_list = NULL;
-  }
-
-  /* Release large objects */
-  lhdr_ptr = mem->large_list[pool_id];
-  mem->large_list[pool_id] = NULL;
-
-  while (lhdr_ptr != NULL) {
-    large_pool_ptr next_lhdr_ptr = lhdr_ptr->hdr.next;
-    space_freed = lhdr_ptr->hdr.bytes_used +
-		  lhdr_ptr->hdr.bytes_left +
-		  SIZEOF(large_pool_hdr);
-    jpeg_free_large(cinfo, (void FAR *) lhdr_ptr, space_freed);
-    mem->total_space_allocated -= space_freed;
-    lhdr_ptr = next_lhdr_ptr;
-  }
-
-  /* Release small objects */
-  shdr_ptr = mem->small_list[pool_id];
-  mem->small_list[pool_id] = NULL;
-
-  while (shdr_ptr != NULL) {
-    small_pool_ptr next_shdr_ptr = shdr_ptr->hdr.next;
-    space_freed = shdr_ptr->hdr.bytes_used +
-		  shdr_ptr->hdr.bytes_left +
-		  SIZEOF(small_pool_hdr);
-    jpeg_free_small(cinfo, (void *) shdr_ptr, space_freed);
-    mem->total_space_allocated -= space_freed;
-    shdr_ptr = next_shdr_ptr;
-  }
-}
-
-
-/*
- * Close up shop entirely.
- * Note that this cannot be called unless cinfo->mem is non-NULL.
- */
-
-METHODDEF(void)
-self_destruct (j_common_ptr cinfo)
-{
-  int pool;
-
-  /* Close all backing store, release all memory.
-   * Releasing pools in reverse order might help avoid fragmentation
-   * with some (brain-damaged) malloc libraries.
-   */
-  for (pool = JPOOL_NUMPOOLS-1; pool >= JPOOL_PERMANENT; pool--) {
-    free_pool(cinfo, pool);
-  }
-
-  /* Release the memory manager control block too. */
-  jpeg_free_small(cinfo, (void *) cinfo->mem, SIZEOF(my_memory_mgr));
-  cinfo->mem = NULL;		/* ensures I will be called only once */
-
-  jpeg_mem_term(cinfo);		/* system-dependent cleanup */
-}
-
-
-/*
- * Memory manager initialization.
- * When this is called, only the error manager pointer is valid in cinfo!
- */
-
-GLOBAL(void)
-jinit_memory_mgr (j_common_ptr cinfo)
-{
-  my_mem_ptr mem;
-  long max_to_use;
-  int pool;
-  size_t test_mac;
-
-  cinfo->mem = NULL;		/* for safety if init fails */
-
-  /* Check for configuration errors.
-   * SIZEOF(ALIGN_TYPE) should be a power of 2; otherwise, it probably
-   * doesn't reflect any real hardware alignment requirement.
-   * The test is a little tricky: for X>0, X and X-1 have no one-bits
-   * in common if and only if X is a power of 2, ie has only one one-bit.
-   * Some compilers may give an "unreachable code" warning here; ignore it.
-   */
-  if ((SIZEOF(ALIGN_TYPE) & (SIZEOF(ALIGN_TYPE)-1)) != 0)
-    ERREXIT(cinfo, JERR_BAD_ALIGN_TYPE);
-  /* MAX_ALLOC_CHUNK must be representable as type size_t, and must be
-   * a multiple of SIZEOF(ALIGN_TYPE).
-   * Again, an "unreachable code" warning may be ignored here.
-   * But a "constant too large" warning means you need to fix MAX_ALLOC_CHUNK.
-   */
-  test_mac = (size_t) MAX_ALLOC_CHUNK;
-  if ((long) test_mac != MAX_ALLOC_CHUNK ||
-      (MAX_ALLOC_CHUNK % SIZEOF(ALIGN_TYPE)) != 0)
-    ERREXIT(cinfo, JERR_BAD_ALLOC_CHUNK);
-
-  max_to_use = jpeg_mem_init(cinfo); /* system-dependent initialization */
-
-  /* Attempt to allocate memory manager's control block */
-  mem = (my_mem_ptr) jpeg_get_small(cinfo, SIZEOF(my_memory_mgr));
-
-  if (mem == NULL) {
-    jpeg_mem_term(cinfo);	/* system-dependent cleanup */
-    ERREXIT1(cinfo, JERR_OUT_OF_MEMORY, 0);
-  }
-
-  /* OK, fill in the method pointers */
-  mem->pub.alloc_small = alloc_small;
-  mem->pub.alloc_large = alloc_large;
-  mem->pub.alloc_sarray = alloc_sarray;
-  mem->pub.alloc_barray = alloc_barray;
-  mem->pub.request_virt_sarray = request_virt_sarray;
-  mem->pub.request_virt_barray = request_virt_barray;
-  mem->pub.realize_virt_arrays = realize_virt_arrays;
-  mem->pub.access_virt_sarray = access_virt_sarray;
-  mem->pub.access_virt_barray = access_virt_barray;
-  mem->pub.free_pool = free_pool;
-  mem->pub.self_destruct = self_destruct;
-
-  /* Make MAX_ALLOC_CHUNK accessible to other modules */
-  mem->pub.max_alloc_chunk = MAX_ALLOC_CHUNK;
-
-  /* Initialize working state */
-  mem->pub.max_memory_to_use = max_to_use;
-
-  for (pool = JPOOL_NUMPOOLS-1; pool >= JPOOL_PERMANENT; pool--) {
-    mem->small_list[pool] = NULL;
-    mem->large_list[pool] = NULL;
-  }
-  mem->virt_sarray_list = NULL;
-  mem->virt_barray_list = NULL;
-
-  mem->total_space_allocated = SIZEOF(my_memory_mgr);
-
-  /* Declare ourselves open for business */
-  cinfo->mem = & mem->pub;
-
-  /* Check for an environment variable JPEGMEM; if found, override the
-   * default max_memory setting from jpeg_mem_init.  Note that the
-   * surrounding application may again override this value.
-   * If your system doesn't support getenv(), define NO_GETENV to disable
-   * this feature.
-   */
-#ifndef NO_GETENV
-  { char * memenv;
-
-    if ((memenv = getenv("JPEGMEM")) != NULL) {
-      char ch = 'x';
-
-      if (sscanf(memenv, "%ld%c", &max_to_use, &ch) > 0) {
-	if (ch == 'm' || ch == 'M')
-	  max_to_use *= 1000L;
-	mem->pub.max_memory_to_use = max_to_use * 1000L;
-      }
-    }
-  }
-#endif
-
-}
diff --git a/src/libjpeg/jmemname.c b/src/libjpeg/jmemname.c
deleted file mode 100644
index e28b212..0000000
--- a/src/libjpeg/jmemname.c
+++ /dev/null
@@ -1,276 +0,0 @@
-/*
- * jmemname.c
- *
- * Copyright (C) 1992-1997, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file provides a generic implementation of the system-dependent
- * portion of the JPEG memory manager.  This implementation assumes that
- * you must explicitly construct a name for each temp file.
- * Also, the problem of determining the amount of memory available
- * is shoved onto the user.
- */
-
-#define JPEG_INTERNALS
-#include "jinclude.h"
-#include "jpeglib.h"
-#include "jmemsys.h"		/* import the system-dependent declarations */
-
-#ifndef HAVE_STDLIB_H		/* <stdlib.h> should declare malloc(),free() */
-extern void * malloc JPP((size_t size));
-extern void free JPP((void *ptr));
-#endif
-
-#ifndef SEEK_SET		/* pre-ANSI systems may not define this; */
-#define SEEK_SET  0		/* if not, assume 0 is correct */
-#endif
-
-#ifdef DONT_USE_B_MODE		/* define mode parameters for fopen() */
-#define READ_BINARY	"r"
-#define RW_BINARY	"w+"
-#else
-#ifdef VMS			/* VMS is very nonstandard */
-#define READ_BINARY	"rb", "ctx=stm"
-#define RW_BINARY	"w+b", "ctx=stm"
-#else				/* standard ANSI-compliant case */
-#define READ_BINARY	"rb"
-#define RW_BINARY	"w+b"
-#endif
-#endif
-
-
-/*
- * Selection of a file name for a temporary file.
- * This is system-dependent!
- *
- * The code as given is suitable for most Unix systems, and it is easily
- * modified for most non-Unix systems.  Some notes:
- *  1.  The temp file is created in the directory named by TEMP_DIRECTORY.
- *      The default value is /usr/tmp, which is the conventional place for
- *      creating large temp files on Unix.  On other systems you'll probably
- *      want to change the file location.  You can do this by editing the
- *      #define, or (preferred) by defining TEMP_DIRECTORY in jconfig.h.
- *
- *  2.  If you need to change the file name as well as its location,
- *      you can override the TEMP_FILE_NAME macro.  (Note that this is
- *      actually a printf format string; it must contain %s and %d.)
- *      Few people should need to do this.
- *
- *  3.  mktemp() is used to ensure that multiple processes running
- *      simultaneously won't select the same file names.  If your system
- *      doesn't have mktemp(), define NO_MKTEMP to do it the hard way.
- *      (If you don't have <errno.h>, also define NO_ERRNO_H.)
- *
- *  4.  You probably want to define NEED_SIGNAL_CATCHER so that cjpeg.c/djpeg.c
- *      will cause the temp files to be removed if you stop the program early.
- */
-
-#ifndef TEMP_DIRECTORY		/* can override from jconfig.h or Makefile */
-#define TEMP_DIRECTORY  "/usr/tmp/" /* recommended setting for Unix */
-#endif
-
-static int next_file_num;	/* to distinguish among several temp files */
-
-#ifdef NO_MKTEMP
-
-#ifndef TEMP_FILE_NAME		/* can override from jconfig.h or Makefile */
-#define TEMP_FILE_NAME  "%sJPG%03d.TMP"
-#endif
-
-#ifndef NO_ERRNO_H
-#include <errno.h>		/* to define ENOENT */
-#endif
-
-/* ANSI C specifies that errno is a macro, but on older systems it's more
- * likely to be a plain int variable.  And not all versions of errno.h
- * bother to declare it, so we have to in order to be most portable.  Thus:
- */
-#ifndef errno
-extern int errno;
-#endif
-
-
-LOCAL(void)
-select_file_name (char * fname)
-{
-  FILE * tfile;
-
-  /* Keep generating file names till we find one that's not in use */
-  for (;;) {
-    next_file_num++;		/* advance counter */
-    sprintf(fname, TEMP_FILE_NAME, TEMP_DIRECTORY, next_file_num);
-    if ((tfile = fopen(fname, READ_BINARY)) == NULL) {
-      /* fopen could have failed for a reason other than the file not
-       * being there; for example, file there but unreadable.
-       * If <errno.h> isn't available, then we cannot test the cause.
-       */
-#ifdef ENOENT
-      if (errno != ENOENT)
-	continue;
-#endif
-      break;
-    }
-    fclose(tfile);		/* oops, it's there; close tfile & try again */
-  }
-}
-
-#else /* ! NO_MKTEMP */
-
-/* Note that mktemp() requires the initial filename to end in six X's */
-#ifndef TEMP_FILE_NAME		/* can override from jconfig.h or Makefile */
-#define TEMP_FILE_NAME  "%sJPG%dXXXXXX"
-#endif
-
-LOCAL(void)
-select_file_name (char * fname)
-{
-  next_file_num++;		/* advance counter */
-  sprintf(fname, TEMP_FILE_NAME, TEMP_DIRECTORY, next_file_num);
-  mktemp(fname);		/* make sure file name is unique */
-  /* mktemp replaces the trailing XXXXXX with a unique string of characters */
-}
-
-#endif /* NO_MKTEMP */
-
-
-/*
- * Memory allocation and freeing are controlled by the regular library
- * routines malloc() and free().
- */
-
-GLOBAL(void *)
-jpeg_get_small (j_common_ptr cinfo, size_t sizeofobject)
-{
-  return (void *) malloc(sizeofobject);
-}
-
-GLOBAL(void)
-jpeg_free_small (j_common_ptr cinfo, void * object, size_t sizeofobject)
-{
-  free(object);
-}
-
-
-/*
- * "Large" objects are treated the same as "small" ones.
- * NB: although we include FAR keywords in the routine declarations,
- * this file won't actually work in 80x86 small/medium model; at least,
- * you probably won't be able to process useful-size images in only 64KB.
- */
-
-GLOBAL(void FAR *)
-jpeg_get_large (j_common_ptr cinfo, size_t sizeofobject)
-{
-  return (void FAR *) malloc(sizeofobject);
-}
-
-GLOBAL(void)
-jpeg_free_large (j_common_ptr cinfo, void FAR * object, size_t sizeofobject)
-{
-  free(object);
-}
-
-
-/*
- * This routine computes the total memory space available for allocation.
- * It's impossible to do this in a portable way; our current solution is
- * to make the user tell us (with a default value set at compile time).
- * If you can actually get the available space, it's a good idea to subtract
- * a slop factor of 5% or so.
- */
-
-#ifndef DEFAULT_MAX_MEM		/* so can override from makefile */
-#define DEFAULT_MAX_MEM		1000000L /* default: one megabyte */
-#endif
-
-GLOBAL(long)
-jpeg_mem_available (j_common_ptr cinfo, long min_bytes_needed,
-		    long max_bytes_needed, long already_allocated)
-{
-  return cinfo->mem->max_memory_to_use - already_allocated;
-}
-
-
-/*
- * Backing store (temporary file) management.
- * Backing store objects are only used when the value returned by
- * jpeg_mem_available is less than the total space needed.  You can dispense
- * with these routines if you have plenty of virtual memory; see jmemnobs.c.
- */
-
-
-METHODDEF(void)
-read_backing_store (j_common_ptr cinfo, backing_store_ptr info,
-		    void FAR * buffer_address,
-		    long file_offset, long byte_count)
-{
-  if (fseek(info->temp_file, file_offset, SEEK_SET))
-    ERREXIT(cinfo, JERR_TFILE_SEEK);
-  if (JFREAD(info->temp_file, buffer_address, byte_count)
-      != (size_t) byte_count)
-    ERREXIT(cinfo, JERR_TFILE_READ);
-}
-
-
-METHODDEF(void)
-write_backing_store (j_common_ptr cinfo, backing_store_ptr info,
-		     void FAR * buffer_address,
-		     long file_offset, long byte_count)
-{
-  if (fseek(info->temp_file, file_offset, SEEK_SET))
-    ERREXIT(cinfo, JERR_TFILE_SEEK);
-  if (JFWRITE(info->temp_file, buffer_address, byte_count)
-      != (size_t) byte_count)
-    ERREXIT(cinfo, JERR_TFILE_WRITE);
-}
-
-
-METHODDEF(void)
-close_backing_store (j_common_ptr cinfo, backing_store_ptr info)
-{
-  fclose(info->temp_file);	/* close the file */
-  unlink(info->temp_name);	/* delete the file */
-/* If your system doesn't have unlink(), use remove() instead.
- * remove() is the ANSI-standard name for this function, but if
- * your system was ANSI you'd be using jmemansi.c, right?
- */
-  TRACEMSS(cinfo, 1, JTRC_TFILE_CLOSE, info->temp_name);
-}
-
-
-/*
- * Initial opening of a backing-store object.
- */
-
-GLOBAL(void)
-jpeg_open_backing_store (j_common_ptr cinfo, backing_store_ptr info,
-			 long total_bytes_needed)
-{
-  select_file_name(info->temp_name);
-  if ((info->temp_file = fopen(info->temp_name, RW_BINARY)) == NULL)
-    ERREXITS(cinfo, JERR_TFILE_CREATE, info->temp_name);
-  info->read_backing_store = read_backing_store;
-  info->write_backing_store = write_backing_store;
-  info->close_backing_store = close_backing_store;
-  TRACEMSS(cinfo, 1, JTRC_TFILE_OPEN, info->temp_name);
-}
-
-
-/*
- * These routines take care of any system-dependent initialization and
- * cleanup required.
- */
-
-GLOBAL(long)
-jpeg_mem_init (j_common_ptr cinfo)
-{
-  next_file_num = 0;		/* initialize temp file name generator */
-  return DEFAULT_MAX_MEM;	/* default for max_memory_to_use */
-}
-
-GLOBAL(void)
-jpeg_mem_term (j_common_ptr cinfo)
-{
-  /* no work */
-}
diff --git a/src/libjpeg/jmemnobs.c b/src/libjpeg/jmemnobs.c
deleted file mode 100644
index 6aa1e92..0000000
--- a/src/libjpeg/jmemnobs.c
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * jmemnobs.c
- *
- * Copyright (C) 1992-1996, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file provides a really simple implementation of the system-
- * dependent portion of the JPEG memory manager.  This implementation
- * assumes that no backing-store files are needed: all required space
- * can be obtained from malloc().
- * This is very portable in the sense that it'll compile on almost anything,
- * but you'd better have lots of main memory (or virtual memory) if you want
- * to process big images.
- * Note that the max_memory_to_use option is ignored by this implementation.
- */
-
-#define JPEG_INTERNALS
-#include "jinclude.h"
-#include "jpeglib.h"
-#include "jmemsys.h"		/* import the system-dependent declarations */
-
-#ifndef HAVE_STDLIB_H		/* <stdlib.h> should declare malloc(),free() */
-extern void * malloc JPP((size_t size));
-extern void free JPP((void *ptr));
-#endif
-
-
-/*
- * Memory allocation and freeing are controlled by the regular library
- * routines malloc() and free().
- */
-
-GLOBAL(void *)
-jpeg_get_small (j_common_ptr cinfo, size_t sizeofobject)
-{
-  return (void *) malloc(sizeofobject);
-}
-
-GLOBAL(void)
-jpeg_free_small (j_common_ptr cinfo, void * object, size_t sizeofobject)
-{
-  free(object);
-}
-
-
-/*
- * "Large" objects are treated the same as "small" ones.
- * NB: although we include FAR keywords in the routine declarations,
- * this file won't actually work in 80x86 small/medium model; at least,
- * you probably won't be able to process useful-size images in only 64KB.
- */
-
-GLOBAL(void FAR *)
-jpeg_get_large (j_common_ptr cinfo, size_t sizeofobject)
-{
-  return (void FAR *) malloc(sizeofobject);
-}
-
-GLOBAL(void)
-jpeg_free_large (j_common_ptr cinfo, void FAR * object, size_t sizeofobject)
-{
-  free(object);
-}
-
-
-/*
- * This routine computes the total memory space available for allocation.
- * Here we always say, "we got all you want bud!"
- */
-
-GLOBAL(long)
-jpeg_mem_available (j_common_ptr cinfo, long min_bytes_needed,
-		    long max_bytes_needed, long already_allocated)
-{
-  return max_bytes_needed;
-}
-
-
-/*
- * Backing store (temporary file) management.
- * Since jpeg_mem_available always promised the moon,
- * this should never be called and we can just error out.
- */
-
-GLOBAL(void)
-jpeg_open_backing_store (j_common_ptr cinfo, backing_store_ptr info,
-			 long total_bytes_needed)
-{
-  ERREXIT(cinfo, JERR_NO_BACKING_STORE);
-}
-
-
-/*
- * These routines take care of any system-dependent initialization and
- * cleanup required.  Here, there isn't any.
- */
-
-GLOBAL(long)
-jpeg_mem_init (j_common_ptr cinfo)
-{
-  return 0;			/* just set max_memory_to_use to 0 */
-}
-
-GLOBAL(void)
-jpeg_mem_term (j_common_ptr cinfo)
-{
-  /* no work */
-}
diff --git a/src/libjpeg/jmemsys.h b/src/libjpeg/jmemsys.h
deleted file mode 100644
index 2a87961..0000000
--- a/src/libjpeg/jmemsys.h
+++ /dev/null
@@ -1,198 +0,0 @@
-/*
- * jmemsys.h
- *
- * Copyright (C) 1992-1997, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This include file defines the interface between the system-independent
- * and system-dependent portions of the JPEG memory manager.  No other
- * modules need include it.  (The system-independent portion is jmemmgr.c;
- * there are several different versions of the system-dependent portion.)
- *
- * This file works as-is for the system-dependent memory managers supplied
- * in the IJG distribution.  You may need to modify it if you write a
- * custom memory manager.  If system-dependent changes are needed in
- * this file, the best method is to #ifdef them based on a configuration
- * symbol supplied in jconfig.h, as we have done with USE_MSDOS_MEMMGR
- * and USE_MAC_MEMMGR.
- */
-
-
-/* Short forms of external names for systems with brain-damaged linkers. */
-
-#ifdef NEED_SHORT_EXTERNAL_NAMES
-#define jpeg_get_small		jGetSmall
-#define jpeg_free_small		jFreeSmall
-#define jpeg_get_large		jGetLarge
-#define jpeg_free_large		jFreeLarge
-#define jpeg_mem_available	jMemAvail
-#define jpeg_open_backing_store	jOpenBackStore
-#define jpeg_mem_init		jMemInit
-#define jpeg_mem_term		jMemTerm
-#endif /* NEED_SHORT_EXTERNAL_NAMES */
-
-
-/*
- * These two functions are used to allocate and release small chunks of
- * memory.  (Typically the total amount requested through jpeg_get_small is
- * no more than 20K or so; this will be requested in chunks of a few K each.)
- * Behavior should be the same as for the standard library functions malloc
- * and free; in particular, jpeg_get_small must return NULL on failure.
- * On most systems, these ARE malloc and free.  jpeg_free_small is passed the
- * size of the object being freed, just in case it's needed.
- * On an 80x86 machine using small-data memory model, these manage near heap.
- */
-
-EXTERN(void *) jpeg_get_small JPP((j_common_ptr cinfo, size_t sizeofobject));
-EXTERN(void) jpeg_free_small JPP((j_common_ptr cinfo, void * object,
-				  size_t sizeofobject));
-
-/*
- * These two functions are used to allocate and release large chunks of
- * memory (up to the total free space designated by jpeg_mem_available).
- * The interface is the same as above, except that on an 80x86 machine,
- * far pointers are used.  On most other machines these are identical to
- * the jpeg_get/free_small routines; but we keep them separate anyway,
- * in case a different allocation strategy is desirable for large chunks.
- */
-
-EXTERN(void FAR *) jpeg_get_large JPP((j_common_ptr cinfo,
-				       size_t sizeofobject));
-EXTERN(void) jpeg_free_large JPP((j_common_ptr cinfo, void FAR * object,
-				  size_t sizeofobject));
-
-/*
- * The macro MAX_ALLOC_CHUNK designates the maximum number of bytes that may
- * be requested in a single call to jpeg_get_large (and jpeg_get_small for that
- * matter, but that case should never come into play).  This macro is needed
- * to model the 64Kb-segment-size limit of far addressing on 80x86 machines.
- * On those machines, we expect that jconfig.h will provide a proper value.
- * On machines with 32-bit flat address spaces, any large constant may be used.
- *
- * NB: jmemmgr.c expects that MAX_ALLOC_CHUNK will be representable as type
- * size_t and will be a multiple of sizeof(align_type).
- */
-
-#ifndef MAX_ALLOC_CHUNK		/* may be overridden in jconfig.h */
-#define MAX_ALLOC_CHUNK  1000000000L
-#endif
-
-/*
- * This routine computes the total space still available for allocation by
- * jpeg_get_large.  If more space than this is needed, backing store will be
- * used.  NOTE: any memory already allocated must not be counted.
- *
- * There is a minimum space requirement, corresponding to the minimum
- * feasible buffer sizes; jmemmgr.c will request that much space even if
- * jpeg_mem_available returns zero.  The maximum space needed, enough to hold
- * all working storage in memory, is also passed in case it is useful.
- * Finally, the total space already allocated is passed.  If no better
- * method is available, cinfo->mem->max_memory_to_use - already_allocated
- * is often a suitable calculation.
- *
- * It is OK for jpeg_mem_available to underestimate the space available
- * (that'll just lead to more backing-store access than is really necessary).
- * However, an overestimate will lead to failure.  Hence it's wise to subtract
- * a slop factor from the true available space.  5% should be enough.
- *
- * On machines with lots of virtual memory, any large constant may be returned.
- * Conversely, zero may be returned to always use the minimum amount of memory.
- */
-
-EXTERN(long) jpeg_mem_available JPP((j_common_ptr cinfo,
-				     long min_bytes_needed,
-				     long max_bytes_needed,
-				     long already_allocated));
-
-
-/*
- * This structure holds whatever state is needed to access a single
- * backing-store object.  The read/write/close method pointers are called
- * by jmemmgr.c to manipulate the backing-store object; all other fields
- * are private to the system-dependent backing store routines.
- */
-
-#define TEMP_NAME_LENGTH   64	/* max length of a temporary file's name */
-
-
-#ifdef USE_MSDOS_MEMMGR		/* DOS-specific junk */
-
-typedef unsigned short XMSH;	/* type of extended-memory handles */
-typedef unsigned short EMSH;	/* type of expanded-memory handles */
-
-typedef union {
-  short file_handle;		/* DOS file handle if it's a temp file */
-  XMSH xms_handle;		/* handle if it's a chunk of XMS */
-  EMSH ems_handle;		/* handle if it's a chunk of EMS */
-} handle_union;
-
-#endif /* USE_MSDOS_MEMMGR */
-
-#ifdef USE_MAC_MEMMGR		/* Mac-specific junk */
-#include <Files.h>
-#endif /* USE_MAC_MEMMGR */
-
-
-typedef struct backing_store_struct * backing_store_ptr;
-
-typedef struct backing_store_struct {
-  /* Methods for reading/writing/closing this backing-store object */
-  JMETHOD(void, read_backing_store, (j_common_ptr cinfo,
-				     backing_store_ptr info,
-				     void FAR * buffer_address,
-				     long file_offset, long byte_count));
-  JMETHOD(void, write_backing_store, (j_common_ptr cinfo,
-				      backing_store_ptr info,
-				      void FAR * buffer_address,
-				      long file_offset, long byte_count));
-  JMETHOD(void, close_backing_store, (j_common_ptr cinfo,
-				      backing_store_ptr info));
-
-  /* Private fields for system-dependent backing-store management */
-#ifdef USE_MSDOS_MEMMGR
-  /* For the MS-DOS manager (jmemdos.c), we need: */
-  handle_union handle;		/* reference to backing-store storage object */
-  char temp_name[TEMP_NAME_LENGTH]; /* name if it's a file */
-#else
-#ifdef USE_MAC_MEMMGR
-  /* For the Mac manager (jmemmac.c), we need: */
-  short temp_file;		/* file reference number to temp file */
-  FSSpec tempSpec;		/* the FSSpec for the temp file */
-  char temp_name[TEMP_NAME_LENGTH]; /* name if it's a file */
-#else
-  /* For a typical implementation with temp files, we need: */
-  FILE * temp_file;		/* stdio reference to temp file */
-  char temp_name[TEMP_NAME_LENGTH]; /* name of temp file */
-#endif
-#endif
-} backing_store_info;
-
-
-/*
- * Initial opening of a backing-store object.  This must fill in the
- * read/write/close pointers in the object.  The read/write routines
- * may take an error exit if the specified maximum file size is exceeded.
- * (If jpeg_mem_available always returns a large value, this routine can
- * just take an error exit.)
- */
-
-EXTERN(void) jpeg_open_backing_store JPP((j_common_ptr cinfo,
-					  backing_store_ptr info,
-					  long total_bytes_needed));
-
-
-/*
- * These routines take care of any system-dependent initialization and
- * cleanup required.  jpeg_mem_init will be called before anything is
- * allocated (and, therefore, nothing in cinfo is of use except the error
- * manager pointer).  It should return a suitable default value for
- * max_memory_to_use; this may subsequently be overridden by the surrounding
- * application.  (Note that max_memory_to_use is only important if
- * jpeg_mem_available chooses to consult it ... no one else will.)
- * jpeg_mem_term may assume that all requested memory has been freed and that
- * all opened backing-store objects have been closed.
- */
-
-EXTERN(long) jpeg_mem_init JPP((j_common_ptr cinfo));
-EXTERN(void) jpeg_mem_term JPP((j_common_ptr cinfo));
diff --git a/src/libjpeg/jmorecfg.h b/src/libjpeg/jmorecfg.h
deleted file mode 100644
index c856e22..0000000
--- a/src/libjpeg/jmorecfg.h
+++ /dev/null
@@ -1,363 +0,0 @@
-/*
- * jmorecfg.h
- *
- * Copyright (C) 1991-1997, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains additional configuration options that customize the
- * JPEG software for special applications or support machine-dependent
- * optimizations.  Most users will not need to touch this file.
- */
-
-
-/*
- * Define BITS_IN_JSAMPLE as either
- *   8   for 8-bit sample values (the usual setting)
- *   12  for 12-bit sample values
- * Only 8 and 12 are legal data precisions for lossy JPEG according to the
- * JPEG standard, and the IJG code does not support anything else!
- * We do not support run-time selection of data precision, sorry.
- */
-
-#define BITS_IN_JSAMPLE  8	/* use 8 or 12 */
-
-
-/*
- * Maximum number of components (color channels) allowed in JPEG image.
- * To meet the letter of the JPEG spec, set this to 255.  However, darn
- * few applications need more than 4 channels (maybe 5 for CMYK + alpha
- * mask).  We recommend 10 as a reasonable compromise; use 4 if you are
- * really short on memory.  (Each allowed component costs a hundred or so
- * bytes of storage, whether actually used in an image or not.)
- */
-
-#define MAX_COMPONENTS  10	/* maximum number of image components */
-
-
-/*
- * Basic data types.
- * You may need to change these if you have a machine with unusual data
- * type sizes; for example, "char" not 8 bits, "short" not 16 bits,
- * or "long" not 32 bits.  We don't care whether "int" is 16 or 32 bits,
- * but it had better be at least 16.
- */
-
-/* Representation of a single sample (pixel element value).
- * We frequently allocate large arrays of these, so it's important to keep
- * them small.  But if you have memory to burn and access to char or short
- * arrays is very slow on your hardware, you might want to change these.
- */
-
-#if BITS_IN_JSAMPLE == 8
-/* JSAMPLE should be the smallest type that will hold the values 0..255.
- * You can use a signed char by having GETJSAMPLE mask it with 0xFF.
- */
-
-#ifdef HAVE_UNSIGNED_CHAR
-
-typedef unsigned char JSAMPLE;
-#define GETJSAMPLE(value)  ((int) (value))
-
-#else /* not HAVE_UNSIGNED_CHAR */
-
-typedef char JSAMPLE;
-#ifdef CHAR_IS_UNSIGNED
-#define GETJSAMPLE(value)  ((int) (value))
-#else
-#define GETJSAMPLE(value)  ((int) (value) & 0xFF)
-#endif /* CHAR_IS_UNSIGNED */
-
-#endif /* HAVE_UNSIGNED_CHAR */
-
-#define MAXJSAMPLE	255
-#define CENTERJSAMPLE	128
-
-#endif /* BITS_IN_JSAMPLE == 8 */
-
-
-#if BITS_IN_JSAMPLE == 12
-/* JSAMPLE should be the smallest type that will hold the values 0..4095.
- * On nearly all machines "short" will do nicely.
- */
-
-typedef short JSAMPLE;
-#define GETJSAMPLE(value)  ((int) (value))
-
-#define MAXJSAMPLE	4095
-#define CENTERJSAMPLE	2048
-
-#endif /* BITS_IN_JSAMPLE == 12 */
-
-
-/* Representation of a DCT frequency coefficient.
- * This should be a signed value of at least 16 bits; "short" is usually OK.
- * Again, we allocate large arrays of these, but you can change to int
- * if you have memory to burn and "short" is really slow.
- */
-
-typedef short JCOEF;
-
-
-/* Compressed datastreams are represented as arrays of JOCTET.
- * These must be EXACTLY 8 bits wide, at least once they are written to
- * external storage.  Note that when using the stdio data source/destination
- * managers, this is also the data type passed to fread/fwrite.
- */
-
-#ifdef HAVE_UNSIGNED_CHAR
-
-typedef unsigned char JOCTET;
-#define GETJOCTET(value)  (value)
-
-#else /* not HAVE_UNSIGNED_CHAR */
-
-typedef char JOCTET;
-#ifdef CHAR_IS_UNSIGNED
-#define GETJOCTET(value)  (value)
-#else
-#define GETJOCTET(value)  ((value) & 0xFF)
-#endif /* CHAR_IS_UNSIGNED */
-
-#endif /* HAVE_UNSIGNED_CHAR */
-
-
-/* These typedefs are used for various table entries and so forth.
- * They must be at least as wide as specified; but making them too big
- * won't cost a huge amount of memory, so we don't provide special
- * extraction code like we did for JSAMPLE.  (In other words, these
- * typedefs live at a different point on the speed/space tradeoff curve.)
- */
-
-/* UINT8 must hold at least the values 0..255. */
-
-#ifdef HAVE_UNSIGNED_CHAR
-typedef unsigned char UINT8;
-#else /* not HAVE_UNSIGNED_CHAR */
-#ifdef CHAR_IS_UNSIGNED
-typedef char UINT8;
-#else /* not CHAR_IS_UNSIGNED */
-typedef short UINT8;
-#endif /* CHAR_IS_UNSIGNED */
-#endif /* HAVE_UNSIGNED_CHAR */
-
-/* UINT16 must hold at least the values 0..65535. */
-
-#ifdef HAVE_UNSIGNED_SHORT
-typedef unsigned short UINT16;
-#else /* not HAVE_UNSIGNED_SHORT */
-typedef unsigned int UINT16;
-#endif /* HAVE_UNSIGNED_SHORT */
-
-/* INT16 must hold at least the values -32768..32767. */
-
-#ifndef XMD_H			/* X11/xmd.h correctly defines INT16 */
-typedef short INT16;
-#endif
-
-/* INT32 must hold at least signed 32-bit values. */
-
-#ifndef XMD_H			/* X11/xmd.h correctly defines INT32 */
-typedef long INT32;
-#endif
-
-/* Datatype used for image dimensions.  The JPEG standard only supports
- * images up to 64K*64K due to 16-bit fields in SOF markers.  Therefore
- * "unsigned int" is sufficient on all machines.  However, if you need to
- * handle larger images and you don't mind deviating from the spec, you
- * can change this datatype.
- */
-
-typedef unsigned int JDIMENSION;
-
-#define JPEG_MAX_DIMENSION  65500L  /* a tad under 64K to prevent overflows */
-
-
-/* These macros are used in all function definitions and extern declarations.
- * You could modify them if you need to change function linkage conventions;
- * in particular, you'll need to do that to make the library a Windows DLL.
- * Another application is to make all functions global for use with debuggers
- * or code profilers that require it.
- */
-
-/* a function called through method pointers: */
-#define METHODDEF(type)		static type
-/* a function used only in its module: */
-#define LOCAL(type)		static type
-/* a function referenced thru EXTERNs: */
-#define GLOBAL(type)		type
-/* a reference to a GLOBAL function: */
-#define EXTERN(type)		extern type
-
-
-/* This macro is used to declare a "method", that is, a function pointer.
- * We want to supply prototype parameters if the compiler can cope.
- * Note that the arglist parameter must be parenthesized!
- * Again, you can customize this if you need special linkage keywords.
- */
-
-#ifdef HAVE_PROTOTYPES
-#define JMETHOD(type,methodname,arglist)  type (*methodname) arglist
-#else
-#define JMETHOD(type,methodname,arglist)  type (*methodname) ()
-#endif
-
-
-/* Here is the pseudo-keyword for declaring pointers that must be "far"
- * on 80x86 machines.  Most of the specialized coding for 80x86 is handled
- * by just saying "FAR *" where such a pointer is needed.  In a few places
- * explicit coding is needed; see uses of the NEED_FAR_POINTERS symbol.
- */
-
-#ifdef NEED_FAR_POINTERS
-#define FAR  far
-#else
-#define FAR
-#endif
-
-
-/*
- * On a few systems, type boolean and/or its values FALSE, TRUE may appear
- * in standard header files.  Or you may have conflicts with application-
- * specific header files that you want to include together with these files.
- * Defining HAVE_BOOLEAN before including jpeglib.h should make it work.
- */
-
-#ifndef HAVE_BOOLEAN
-typedef int boolean;
-#endif
-#ifndef FALSE			/* in case these macros already exist */
-#define FALSE	0		/* values of boolean */
-#endif
-#ifndef TRUE
-#define TRUE	1
-#endif
-
-
-/*
- * The remaining options affect code selection within the JPEG library,
- * but they don't need to be visible to most applications using the library.
- * To minimize application namespace pollution, the symbols won't be
- * defined unless JPEG_INTERNALS or JPEG_INTERNAL_OPTIONS has been defined.
- */
-
-#ifdef JPEG_INTERNALS
-#define JPEG_INTERNAL_OPTIONS
-#endif
-
-#ifdef JPEG_INTERNAL_OPTIONS
-
-
-/*
- * These defines indicate whether to include various optional functions.
- * Undefining some of these symbols will produce a smaller but less capable
- * library.  Note that you can leave certain source files out of the
- * compilation/linking process if you've #undef'd the corresponding symbols.
- * (You may HAVE to do that if your compiler doesn't like null source files.)
- */
-
-/* Arithmetic coding is unsupported for legal reasons.  Complaints to IBM. */
-
-/* Capability options common to encoder and decoder: */
-
-#define DCT_ISLOW_SUPPORTED	/* slow but accurate integer algorithm */
-#define DCT_IFAST_SUPPORTED	/* faster, less accurate integer method */
-#define DCT_FLOAT_SUPPORTED	/* floating-point: accurate, fast on fast HW */
-
-/* Encoder capability options: */
-
-#undef  C_ARITH_CODING_SUPPORTED    /* Arithmetic coding back end? */
-#define C_MULTISCAN_FILES_SUPPORTED /* Multiple-scan JPEG files? */
-#define C_PROGRESSIVE_SUPPORTED	    /* Progressive JPEG? (Requires MULTISCAN)*/
-#define ENTROPY_OPT_SUPPORTED	    /* Optimization of entropy coding parms? */
-/* Note: if you selected 12-bit data precision, it is dangerous to turn off
- * ENTROPY_OPT_SUPPORTED.  The standard Huffman tables are only good for 8-bit
- * precision, so jchuff.c normally uses entropy optimization to compute
- * usable tables for higher precision.  If you don't want to do optimization,
- * you'll have to supply different default Huffman tables.
- * The exact same statements apply for progressive JPEG: the default tables
- * don't work for progressive mode.  (This may get fixed, however.)
- */
-#define INPUT_SMOOTHING_SUPPORTED   /* Input image smoothing option? */
-
-/* Decoder capability options: */
-
-#undef  D_ARITH_CODING_SUPPORTED    /* Arithmetic coding back end? */
-#define D_MULTISCAN_FILES_SUPPORTED /* Multiple-scan JPEG files? */
-#define D_PROGRESSIVE_SUPPORTED	    /* Progressive JPEG? (Requires MULTISCAN)*/
-#define SAVE_MARKERS_SUPPORTED	    /* jpeg_save_markers() needed? */
-#define BLOCK_SMOOTHING_SUPPORTED   /* Block smoothing? (Progressive only) */
-#define IDCT_SCALING_SUPPORTED	    /* Output rescaling via IDCT? */
-#undef  UPSAMPLE_SCALING_SUPPORTED  /* Output rescaling at upsample stage? */
-#define UPSAMPLE_MERGING_SUPPORTED  /* Fast path for sloppy upsampling? */
-#define QUANT_1PASS_SUPPORTED	    /* 1-pass color quantization? */
-#define QUANT_2PASS_SUPPORTED	    /* 2-pass color quantization? */
-
-/* more capability options later, no doubt */
-
-
-/*
- * Ordering of RGB data in scanlines passed to or from the application.
- * If your application wants to deal with data in the order B,G,R, just
- * change these macros.  You can also deal with formats such as R,G,B,X
- * (one extra byte per pixel) by changing RGB_PIXELSIZE.  Note that changing
- * the offsets will also change the order in which colormap data is organized.
- * RESTRICTIONS:
- * 1. The sample applications cjpeg,djpeg do NOT support modified RGB formats.
- * 2. These macros only affect RGB<=>YCbCr color conversion, so they are not
- *    useful if you are using JPEG color spaces other than YCbCr or grayscale.
- * 3. The color quantizer modules will not behave desirably if RGB_PIXELSIZE
- *    is not 3 (they don't understand about dummy color components!).  So you
- *    can't use color quantization if you change that value.
- */
-
-#define RGB_RED		0	/* Offset of Red in an RGB scanline element */
-#define RGB_GREEN	1	/* Offset of Green */
-#define RGB_BLUE	2	/* Offset of Blue */
-#define RGB_PIXELSIZE	3	/* JSAMPLEs per RGB scanline element */
-
-
-/* Definitions for speed-related optimizations. */
-
-
-/* If your compiler supports inline functions, define INLINE
- * as the inline keyword; otherwise define it as empty.
- */
-
-#ifndef INLINE
-#ifdef __GNUC__			/* for instance, GNU C knows about inline */
-#define INLINE __inline__
-#endif
-#ifndef INLINE
-#define INLINE			/* default is to define it as empty */
-#endif
-#endif
-
-
-/* On some machines (notably 68000 series) "int" is 32 bits, but multiplying
- * two 16-bit shorts is faster than multiplying two ints.  Define MULTIPLIER
- * as short on such a machine.  MULTIPLIER must be at least 16 bits wide.
- */
-
-#ifndef MULTIPLIER
-#define MULTIPLIER  int		/* type for fastest integer multiply */
-#endif
-
-
-/* FAST_FLOAT should be either float or double, whichever is done faster
- * by your compiler.  (Note that this type is only used in the floating point
- * DCT routines, so it only matters if you've defined DCT_FLOAT_SUPPORTED.)
- * Typically, float is faster in ANSI C compilers, while double is faster in
- * pre-ANSI compilers (because they insist on converting to double anyway).
- * The code below therefore chooses float if we have ANSI-style prototypes.
- */
-
-#ifndef FAST_FLOAT
-#ifdef HAVE_PROTOTYPES
-#define FAST_FLOAT  float
-#else
-#define FAST_FLOAT  double
-#endif
-#endif
-
-#endif /* JPEG_INTERNAL_OPTIONS */
diff --git a/src/libjpeg/jpegint.h b/src/libjpeg/jpegint.h
deleted file mode 100644
index 685a361..0000000
--- a/src/libjpeg/jpegint.h
+++ /dev/null
@@ -1,392 +0,0 @@
-/*
- * jpegint.h
- *
- * Copyright (C) 1991-1997, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file provides common declarations for the various JPEG modules.
- * These declarations are considered internal to the JPEG library; most
- * applications using the library shouldn't need to include this file.
- */
-
-
-/* Declarations for both compression & decompression */
-
-typedef enum {			/* Operating modes for buffer controllers */
-	JBUF_PASS_THRU,		/* Plain stripwise operation */
-	/* Remaining modes require a full-image buffer to have been created */
-	JBUF_SAVE_SOURCE,	/* Run source subobject only, save output */
-	JBUF_CRANK_DEST,	/* Run dest subobject only, using saved data */
-	JBUF_SAVE_AND_PASS	/* Run both subobjects, save output */
-} J_BUF_MODE;
-
-/* Values of global_state field (jdapi.c has some dependencies on ordering!) */
-#define CSTATE_START	100	/* after create_compress */
-#define CSTATE_SCANNING	101	/* start_compress done, write_scanlines OK */
-#define CSTATE_RAW_OK	102	/* start_compress done, write_raw_data OK */
-#define CSTATE_WRCOEFS	103	/* jpeg_write_coefficients done */
-#define DSTATE_START	200	/* after create_decompress */
-#define DSTATE_INHEADER	201	/* reading header markers, no SOS yet */
-#define DSTATE_READY	202	/* found SOS, ready for start_decompress */
-#define DSTATE_PRELOAD	203	/* reading multiscan file in start_decompress*/
-#define DSTATE_PRESCAN	204	/* performing dummy pass for 2-pass quant */
-#define DSTATE_SCANNING	205	/* start_decompress done, read_scanlines OK */
-#define DSTATE_RAW_OK	206	/* start_decompress done, read_raw_data OK */
-#define DSTATE_BUFIMAGE	207	/* expecting jpeg_start_output */
-#define DSTATE_BUFPOST	208	/* looking for SOS/EOI in jpeg_finish_output */
-#define DSTATE_RDCOEFS	209	/* reading file in jpeg_read_coefficients */
-#define DSTATE_STOPPING	210	/* looking for EOI in jpeg_finish_decompress */
-
-
-/* Declarations for compression modules */
-
-/* Master control module */
-struct jpeg_comp_master {
-  JMETHOD(void, prepare_for_pass, (j_compress_ptr cinfo));
-  JMETHOD(void, pass_startup, (j_compress_ptr cinfo));
-  JMETHOD(void, finish_pass, (j_compress_ptr cinfo));
-
-  /* State variables made visible to other modules */
-  boolean call_pass_startup;	/* True if pass_startup must be called */
-  boolean is_last_pass;		/* True during last pass */
-};
-
-/* Main buffer control (downsampled-data buffer) */
-struct jpeg_c_main_controller {
-  JMETHOD(void, start_pass, (j_compress_ptr cinfo, J_BUF_MODE pass_mode));
-  JMETHOD(void, process_data, (j_compress_ptr cinfo,
-			       JSAMPARRAY input_buf, JDIMENSION *in_row_ctr,
-			       JDIMENSION in_rows_avail));
-};
-
-/* Compression preprocessing (downsampling input buffer control) */
-struct jpeg_c_prep_controller {
-  JMETHOD(void, start_pass, (j_compress_ptr cinfo, J_BUF_MODE pass_mode));
-  JMETHOD(void, pre_process_data, (j_compress_ptr cinfo,
-				   JSAMPARRAY input_buf,
-				   JDIMENSION *in_row_ctr,
-				   JDIMENSION in_rows_avail,
-				   JSAMPIMAGE output_buf,
-				   JDIMENSION *out_row_group_ctr,
-				   JDIMENSION out_row_groups_avail));
-};
-
-/* Coefficient buffer control */
-struct jpeg_c_coef_controller {
-  JMETHOD(void, start_pass, (j_compress_ptr cinfo, J_BUF_MODE pass_mode));
-  JMETHOD(boolean, compress_data, (j_compress_ptr cinfo,
-				   JSAMPIMAGE input_buf));
-};
-
-/* Colorspace conversion */
-struct jpeg_color_converter {
-  JMETHOD(void, start_pass, (j_compress_ptr cinfo));
-  JMETHOD(void, color_convert, (j_compress_ptr cinfo,
-				JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
-				JDIMENSION output_row, int num_rows));
-};
-
-/* Downsampling */
-struct jpeg_downsampler {
-  JMETHOD(void, start_pass, (j_compress_ptr cinfo));
-  JMETHOD(void, downsample, (j_compress_ptr cinfo,
-			     JSAMPIMAGE input_buf, JDIMENSION in_row_index,
-			     JSAMPIMAGE output_buf,
-			     JDIMENSION out_row_group_index));
-
-  boolean need_context_rows;	/* TRUE if need rows above & below */
-};
-
-/* Forward DCT (also controls coefficient quantization) */
-struct jpeg_forward_dct {
-  JMETHOD(void, start_pass, (j_compress_ptr cinfo));
-  /* perhaps this should be an array??? */
-  JMETHOD(void, forward_DCT, (j_compress_ptr cinfo,
-			      jpeg_component_info * compptr,
-			      JSAMPARRAY sample_data, JBLOCKROW coef_blocks,
-			      JDIMENSION start_row, JDIMENSION start_col,
-			      JDIMENSION num_blocks));
-};
-
-/* Entropy encoding */
-struct jpeg_entropy_encoder {
-  JMETHOD(void, start_pass, (j_compress_ptr cinfo, boolean gather_statistics));
-  JMETHOD(boolean, encode_mcu, (j_compress_ptr cinfo, JBLOCKROW *MCU_data));
-  JMETHOD(void, finish_pass, (j_compress_ptr cinfo));
-};
-
-/* Marker writing */
-struct jpeg_marker_writer {
-  JMETHOD(void, write_file_header, (j_compress_ptr cinfo));
-  JMETHOD(void, write_frame_header, (j_compress_ptr cinfo));
-  JMETHOD(void, write_scan_header, (j_compress_ptr cinfo));
-  JMETHOD(void, write_file_trailer, (j_compress_ptr cinfo));
-  JMETHOD(void, write_tables_only, (j_compress_ptr cinfo));
-  /* These routines are exported to allow insertion of extra markers */
-  /* Probably only COM and APPn markers should be written this way */
-  JMETHOD(void, write_marker_header, (j_compress_ptr cinfo, int marker,
-				      unsigned int datalen));
-  JMETHOD(void, write_marker_byte, (j_compress_ptr cinfo, int val));
-};
-
-
-/* Declarations for decompression modules */
-
-/* Master control module */
-struct jpeg_decomp_master {
-  JMETHOD(void, prepare_for_output_pass, (j_decompress_ptr cinfo));
-  JMETHOD(void, finish_output_pass, (j_decompress_ptr cinfo));
-
-  /* State variables made visible to other modules */
-  boolean is_dummy_pass;	/* True during 1st pass for 2-pass quant */
-};
-
-/* Input control module */
-struct jpeg_input_controller {
-  JMETHOD(int, consume_input, (j_decompress_ptr cinfo));
-  JMETHOD(void, reset_input_controller, (j_decompress_ptr cinfo));
-  JMETHOD(void, start_input_pass, (j_decompress_ptr cinfo));
-  JMETHOD(void, finish_input_pass, (j_decompress_ptr cinfo));
-
-  /* State variables made visible to other modules */
-  boolean has_multiple_scans;	/* True if file has multiple scans */
-  boolean eoi_reached;		/* True when EOI has been consumed */
-};
-
-/* Main buffer control (downsampled-data buffer) */
-struct jpeg_d_main_controller {
-  JMETHOD(void, start_pass, (j_decompress_ptr cinfo, J_BUF_MODE pass_mode));
-  JMETHOD(void, process_data, (j_decompress_ptr cinfo,
-			       JSAMPARRAY output_buf, JDIMENSION *out_row_ctr,
-			       JDIMENSION out_rows_avail));
-};
-
-/* Coefficient buffer control */
-struct jpeg_d_coef_controller {
-  JMETHOD(void, start_input_pass, (j_decompress_ptr cinfo));
-  JMETHOD(int, consume_data, (j_decompress_ptr cinfo));
-  JMETHOD(void, start_output_pass, (j_decompress_ptr cinfo));
-  JMETHOD(int, decompress_data, (j_decompress_ptr cinfo,
-				 JSAMPIMAGE output_buf));
-  /* Pointer to array of coefficient virtual arrays, or NULL if none */
-  jvirt_barray_ptr *coef_arrays;
-};
-
-/* Decompression postprocessing (color quantization buffer control) */
-struct jpeg_d_post_controller {
-  JMETHOD(void, start_pass, (j_decompress_ptr cinfo, J_BUF_MODE pass_mode));
-  JMETHOD(void, post_process_data, (j_decompress_ptr cinfo,
-				    JSAMPIMAGE input_buf,
-				    JDIMENSION *in_row_group_ctr,
-				    JDIMENSION in_row_groups_avail,
-				    JSAMPARRAY output_buf,
-				    JDIMENSION *out_row_ctr,
-				    JDIMENSION out_rows_avail));
-};
-
-/* Marker reading & parsing */
-struct jpeg_marker_reader {
-  JMETHOD(void, reset_marker_reader, (j_decompress_ptr cinfo));
-  /* Read markers until SOS or EOI.
-   * Returns same codes as are defined for jpeg_consume_input:
-   * JPEG_SUSPENDED, JPEG_REACHED_SOS, or JPEG_REACHED_EOI.
-   */
-  JMETHOD(int, read_markers, (j_decompress_ptr cinfo));
-  /* Read a restart marker --- exported for use by entropy decoder only */
-  jpeg_marker_parser_method read_restart_marker;
-
-  /* State of marker reader --- nominally internal, but applications
-   * supplying COM or APPn handlers might like to know the state.
-   */
-  boolean saw_SOI;		/* found SOI? */
-  boolean saw_SOF;		/* found SOF? */
-  int next_restart_num;		/* next restart number expected (0-7) */
-  unsigned int discarded_bytes;	/* # of bytes skipped looking for a marker */
-};
-
-/* Entropy decoding */
-struct jpeg_entropy_decoder {
-  JMETHOD(void, start_pass, (j_decompress_ptr cinfo));
-  JMETHOD(boolean, decode_mcu, (j_decompress_ptr cinfo,
-				JBLOCKROW *MCU_data));
-
-  /* This is here to share code between baseline and progressive decoders; */
-  /* other modules probably should not use it */
-  boolean insufficient_data;	/* set TRUE after emitting warning */
-};
-
-/* Inverse DCT (also performs dequantization) */
-typedef JMETHOD(void, inverse_DCT_method_ptr,
-		(j_decompress_ptr cinfo, jpeg_component_info * compptr,
-		 JCOEFPTR coef_block,
-		 JSAMPARRAY output_buf, JDIMENSION output_col));
-
-struct jpeg_inverse_dct {
-  JMETHOD(void, start_pass, (j_decompress_ptr cinfo));
-  /* It is useful to allow each component to have a separate IDCT method. */
-  inverse_DCT_method_ptr inverse_DCT[MAX_COMPONENTS];
-};
-
-/* Upsampling (note that upsampler must also call color converter) */
-struct jpeg_upsampler {
-  JMETHOD(void, start_pass, (j_decompress_ptr cinfo));
-  JMETHOD(void, upsample, (j_decompress_ptr cinfo,
-			   JSAMPIMAGE input_buf,
-			   JDIMENSION *in_row_group_ctr,
-			   JDIMENSION in_row_groups_avail,
-			   JSAMPARRAY output_buf,
-			   JDIMENSION *out_row_ctr,
-			   JDIMENSION out_rows_avail));
-
-  boolean need_context_rows;	/* TRUE if need rows above & below */
-};
-
-/* Colorspace conversion */
-struct jpeg_color_deconverter {
-  JMETHOD(void, start_pass, (j_decompress_ptr cinfo));
-  JMETHOD(void, color_convert, (j_decompress_ptr cinfo,
-				JSAMPIMAGE input_buf, JDIMENSION input_row,
-				JSAMPARRAY output_buf, int num_rows));
-};
-
-/* Color quantization or color precision reduction */
-struct jpeg_color_quantizer {
-  JMETHOD(void, start_pass, (j_decompress_ptr cinfo, boolean is_pre_scan));
-  JMETHOD(void, color_quantize, (j_decompress_ptr cinfo,
-				 JSAMPARRAY input_buf, JSAMPARRAY output_buf,
-				 int num_rows));
-  JMETHOD(void, finish_pass, (j_decompress_ptr cinfo));
-  JMETHOD(void, new_color_map, (j_decompress_ptr cinfo));
-};
-
-
-/* Miscellaneous useful macros */
-
-#undef MAX
-#define MAX(a,b)	((a) > (b) ? (a) : (b))
-#undef MIN
-#define MIN(a,b)	((a) < (b) ? (a) : (b))
-
-
-/* We assume that right shift corresponds to signed division by 2 with
- * rounding towards minus infinity.  This is correct for typical "arithmetic
- * shift" instructions that shift in copies of the sign bit.  But some
- * C compilers implement >> with an unsigned shift.  For these machines you
- * must define RIGHT_SHIFT_IS_UNSIGNED.
- * RIGHT_SHIFT provides a proper signed right shift of an INT32 quantity.
- * It is only applied with constant shift counts.  SHIFT_TEMPS must be
- * included in the variables of any routine using RIGHT_SHIFT.
- */
-
-#ifdef RIGHT_SHIFT_IS_UNSIGNED
-#define SHIFT_TEMPS	INT32 shift_temp;
-#define RIGHT_SHIFT(x,shft)  \
-	((shift_temp = (x)) < 0 ? \
-	 (shift_temp >> (shft)) | ((~((INT32) 0)) << (32-(shft))) : \
-	 (shift_temp >> (shft)))
-#else
-#define SHIFT_TEMPS
-#define RIGHT_SHIFT(x,shft)	((x) >> (shft))
-#endif
-
-
-/* Short forms of external names for systems with brain-damaged linkers. */
-
-#ifdef NEED_SHORT_EXTERNAL_NAMES
-#define jinit_compress_master	jICompress
-#define jinit_c_master_control	jICMaster
-#define jinit_c_main_controller	jICMainC
-#define jinit_c_prep_controller	jICPrepC
-#define jinit_c_coef_controller	jICCoefC
-#define jinit_color_converter	jICColor
-#define jinit_downsampler	jIDownsampler
-#define jinit_forward_dct	jIFDCT
-#define jinit_huff_encoder	jIHEncoder
-#define jinit_phuff_encoder	jIPHEncoder
-#define jinit_marker_writer	jIMWriter
-#define jinit_master_decompress	jIDMaster
-#define jinit_d_main_controller	jIDMainC
-#define jinit_d_coef_controller	jIDCoefC
-#define jinit_d_post_controller	jIDPostC
-#define jinit_input_controller	jIInCtlr
-#define jinit_marker_reader	jIMReader
-#define jinit_huff_decoder	jIHDecoder
-#define jinit_phuff_decoder	jIPHDecoder
-#define jinit_inverse_dct	jIIDCT
-#define jinit_upsampler		jIUpsampler
-#define jinit_color_deconverter	jIDColor
-#define jinit_1pass_quantizer	jI1Quant
-#define jinit_2pass_quantizer	jI2Quant
-#define jinit_merged_upsampler	jIMUpsampler
-#define jinit_memory_mgr	jIMemMgr
-#define jdiv_round_up		jDivRound
-#define jround_up		jRound
-#define jcopy_sample_rows	jCopySamples
-#define jcopy_block_row		jCopyBlocks
-#define jzero_far		jZeroFar
-#define jpeg_zigzag_order	jZIGTable
-#define jpeg_natural_order	jZAGTable
-#endif /* NEED_SHORT_EXTERNAL_NAMES */
-
-
-/* Compression module initialization routines */
-EXTERN(void) jinit_compress_master JPP((j_compress_ptr cinfo));
-EXTERN(void) jinit_c_master_control JPP((j_compress_ptr cinfo,
-					 boolean transcode_only));
-EXTERN(void) jinit_c_main_controller JPP((j_compress_ptr cinfo,
-					  boolean need_full_buffer));
-EXTERN(void) jinit_c_prep_controller JPP((j_compress_ptr cinfo,
-					  boolean need_full_buffer));
-EXTERN(void) jinit_c_coef_controller JPP((j_compress_ptr cinfo,
-					  boolean need_full_buffer));
-EXTERN(void) jinit_color_converter JPP((j_compress_ptr cinfo));
-EXTERN(void) jinit_downsampler JPP((j_compress_ptr cinfo));
-EXTERN(void) jinit_forward_dct JPP((j_compress_ptr cinfo));
-EXTERN(void) jinit_huff_encoder JPP((j_compress_ptr cinfo));
-EXTERN(void) jinit_phuff_encoder JPP((j_compress_ptr cinfo));
-EXTERN(void) jinit_marker_writer JPP((j_compress_ptr cinfo));
-/* Decompression module initialization routines */
-EXTERN(void) jinit_master_decompress JPP((j_decompress_ptr cinfo));
-EXTERN(void) jinit_d_main_controller JPP((j_decompress_ptr cinfo,
-					  boolean need_full_buffer));
-EXTERN(void) jinit_d_coef_controller JPP((j_decompress_ptr cinfo,
-					  boolean need_full_buffer));
-EXTERN(void) jinit_d_post_controller JPP((j_decompress_ptr cinfo,
-					  boolean need_full_buffer));
-EXTERN(void) jinit_input_controller JPP((j_decompress_ptr cinfo));
-EXTERN(void) jinit_marker_reader JPP((j_decompress_ptr cinfo));
-EXTERN(void) jinit_huff_decoder JPP((j_decompress_ptr cinfo));
-EXTERN(void) jinit_phuff_decoder JPP((j_decompress_ptr cinfo));
-EXTERN(void) jinit_inverse_dct JPP((j_decompress_ptr cinfo));
-EXTERN(void) jinit_upsampler JPP((j_decompress_ptr cinfo));
-EXTERN(void) jinit_color_deconverter JPP((j_decompress_ptr cinfo));
-EXTERN(void) jinit_1pass_quantizer JPP((j_decompress_ptr cinfo));
-EXTERN(void) jinit_2pass_quantizer JPP((j_decompress_ptr cinfo));
-EXTERN(void) jinit_merged_upsampler JPP((j_decompress_ptr cinfo));
-/* Memory manager initialization */
-EXTERN(void) jinit_memory_mgr JPP((j_common_ptr cinfo));
-
-/* Utility routines in jutils.c */
-EXTERN(long) jdiv_round_up JPP((long a, long b));
-EXTERN(long) jround_up JPP((long a, long b));
-EXTERN(void) jcopy_sample_rows JPP((JSAMPARRAY input_array, int source_row,
-				    JSAMPARRAY output_array, int dest_row,
-				    int num_rows, JDIMENSION num_cols));
-EXTERN(void) jcopy_block_row JPP((JBLOCKROW input_row, JBLOCKROW output_row,
-				  JDIMENSION num_blocks));
-EXTERN(void) jzero_far JPP((void FAR * target, size_t bytestozero));
-/* Constant tables in jutils.c */
-#if 0				/* This table is not actually needed in v6a */
-extern const int jpeg_zigzag_order[]; /* natural coef order to zigzag order */
-#endif
-extern const int jpeg_natural_order[]; /* zigzag coef order to natural order */
-
-/* Suppress undefined-structure complaints if necessary. */
-
-#ifdef INCOMPLETE_TYPES_BROKEN
-#ifndef AM_MEMORY_MANAGER	/* only jmemmgr.c defines these */
-struct jvirt_sarray_control { long dummy; };
-struct jvirt_barray_control { long dummy; };
-#endif
-#endif /* INCOMPLETE_TYPES_BROKEN */
diff --git a/src/libjpeg/jpeglib.h b/src/libjpeg/jpeglib.h
deleted file mode 100644
index b9356f3..0000000
--- a/src/libjpeg/jpeglib.h
+++ /dev/null
@@ -1,1096 +0,0 @@
-/*
- * jpeglib.h
- *
- * Copyright (C) 1991-1998, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file defines the application interface for the JPEG library.
- * Most applications using the library need only include this file,
- * and perhaps jerror.h if they want to know the exact error codes.
- */
-
-#ifndef JPEGLIB_H
-#define JPEGLIB_H
-
-/*
- * First we include the configuration files that record how this
- * installation of the JPEG library is set up.  jconfig.h can be
- * generated automatically for many systems.  jmorecfg.h contains
- * manual configuration options that most people need not worry about.
- */
-
-#ifndef JCONFIG_INCLUDED	/* in case jinclude.h already did */
-#include "jconfig.h"		/* widely used configuration options */
-#endif
-#include "jmorecfg.h"		/* seldom changed options */
-
-
-/* Version ID for the JPEG library.
- * Might be useful for tests like "#if JPEG_LIB_VERSION >= 60".
- */
-
-#define JPEG_LIB_VERSION  62	/* Version 6b */
-
-
-/* Various constants determining the sizes of things.
- * All of these are specified by the JPEG standard, so don't change them
- * if you want to be compatible.
- */
-
-#define DCTSIZE		    8	/* The basic DCT block is 8x8 samples */
-#define DCTSIZE2	    64	/* DCTSIZE squared; # of elements in a block */
-#define NUM_QUANT_TBLS      4	/* Quantization tables are numbered 0..3 */
-#define NUM_HUFF_TBLS       4	/* Huffman tables are numbered 0..3 */
-#define NUM_ARITH_TBLS      16	/* Arith-coding tables are numbered 0..15 */
-#define MAX_COMPS_IN_SCAN   4	/* JPEG limit on # of components in one scan */
-#define MAX_SAMP_FACTOR     4	/* JPEG limit on sampling factors */
-/* Unfortunately, some bozo at Adobe saw no reason to be bound by the standard;
- * the PostScript DCT filter can emit files with many more than 10 blocks/MCU.
- * If you happen to run across such a file, you can up D_MAX_BLOCKS_IN_MCU
- * to handle it.  We even let you do this from the jconfig.h file.  However,
- * we strongly discourage changing C_MAX_BLOCKS_IN_MCU; just because Adobe
- * sometimes emits noncompliant files doesn't mean you should too.
- */
-#define C_MAX_BLOCKS_IN_MCU   10 /* compressor's limit on blocks per MCU */
-#ifndef D_MAX_BLOCKS_IN_MCU
-#define D_MAX_BLOCKS_IN_MCU   10 /* decompressor's limit on blocks per MCU */
-#endif
-
-
-/* Data structures for images (arrays of samples and of DCT coefficients).
- * On 80x86 machines, the image arrays are too big for near pointers,
- * but the pointer arrays can fit in near memory.
- */
-
-typedef JSAMPLE FAR *JSAMPROW;	/* ptr to one image row of pixel samples. */
-typedef JSAMPROW *JSAMPARRAY;	/* ptr to some rows (a 2-D sample array) */
-typedef JSAMPARRAY *JSAMPIMAGE;	/* a 3-D sample array: top index is color */
-
-typedef JCOEF JBLOCK[DCTSIZE2];	/* one block of coefficients */
-typedef JBLOCK FAR *JBLOCKROW;	/* pointer to one row of coefficient blocks */
-typedef JBLOCKROW *JBLOCKARRAY;		/* a 2-D array of coefficient blocks */
-typedef JBLOCKARRAY *JBLOCKIMAGE;	/* a 3-D array of coefficient blocks */
-
-typedef JCOEF FAR *JCOEFPTR;	/* useful in a couple of places */
-
-
-/* Types for JPEG compression parameters and working tables. */
-
-
-/* DCT coefficient quantization tables. */
-
-typedef struct {
-  /* This array gives the coefficient quantizers in natural array order
-   * (not the zigzag order in which they are stored in a JPEG DQT marker).
-   * CAUTION: IJG versions prior to v6a kept this array in zigzag order.
-   */
-  UINT16 quantval[DCTSIZE2];	/* quantization step for each coefficient */
-  /* This field is used only during compression.  It's initialized FALSE when
-   * the table is created, and set TRUE when it's been output to the file.
-   * You could suppress output of a table by setting this to TRUE.
-   * (See jpeg_suppress_tables for an example.)
-   */
-  boolean sent_table;		/* TRUE when table has been output */
-} JQUANT_TBL;
-
-
-/* Huffman coding tables. */
-
-typedef struct {
-  /* These two fields directly represent the contents of a JPEG DHT marker */
-  UINT8 bits[17];		/* bits[k] = # of symbols with codes of */
-				/* length k bits; bits[0] is unused */
-  UINT8 huffval[256];		/* The symbols, in order of incr code length */
-  /* This field is used only during compression.  It's initialized FALSE when
-   * the table is created, and set TRUE when it's been output to the file.
-   * You could suppress output of a table by setting this to TRUE.
-   * (See jpeg_suppress_tables for an example.)
-   */
-  boolean sent_table;		/* TRUE when table has been output */
-} JHUFF_TBL;
-
-
-/* Basic info about one component (color channel). */
-
-typedef struct {
-  /* These values are fixed over the whole image. */
-  /* For compression, they must be supplied by parameter setup; */
-  /* for decompression, they are read from the SOF marker. */
-  int component_id;		/* identifier for this component (0..255) */
-  int component_index;		/* its index in SOF or cinfo->comp_info[] */
-  int h_samp_factor;		/* horizontal sampling factor (1..4) */
-  int v_samp_factor;		/* vertical sampling factor (1..4) */
-  int quant_tbl_no;		/* quantization table selector (0..3) */
-  /* These values may vary between scans. */
-  /* For compression, they must be supplied by parameter setup; */
-  /* for decompression, they are read from the SOS marker. */
-  /* The decompressor output side may not use these variables. */
-  int dc_tbl_no;		/* DC entropy table selector (0..3) */
-  int ac_tbl_no;		/* AC entropy table selector (0..3) */
-  
-  /* Remaining fields should be treated as private by applications. */
-  
-  /* These values are computed during compression or decompression startup: */
-  /* Component's size in DCT blocks.
-   * Any dummy blocks added to complete an MCU are not counted; therefore
-   * these values do not depend on whether a scan is interleaved or not.
-   */
-  JDIMENSION width_in_blocks;
-  JDIMENSION height_in_blocks;
-  /* Size of a DCT block in samples.  Always DCTSIZE for compression.
-   * For decompression this is the size of the output from one DCT block,
-   * reflecting any scaling we choose to apply during the IDCT step.
-   * Values of 1,2,4,8 are likely to be supported.  Note that different
-   * components may receive different IDCT scalings.
-   */
-  int DCT_scaled_size;
-  /* The downsampled dimensions are the component's actual, unpadded number
-   * of samples at the main buffer (preprocessing/compression interface), thus
-   * downsampled_width = ceil(image_width * Hi/Hmax)
-   * and similarly for height.  For decompression, IDCT scaling is included, so
-   * downsampled_width = ceil(image_width * Hi/Hmax * DCT_scaled_size/DCTSIZE)
-   */
-  JDIMENSION downsampled_width;	 /* actual width in samples */
-  JDIMENSION downsampled_height; /* actual height in samples */
-  /* This flag is used only for decompression.  In cases where some of the
-   * components will be ignored (eg grayscale output from YCbCr image),
-   * we can skip most computations for the unused components.
-   */
-  boolean component_needed;	/* do we need the value of this component? */
-
-  /* These values are computed before starting a scan of the component. */
-  /* The decompressor output side may not use these variables. */
-  int MCU_width;		/* number of blocks per MCU, horizontally */
-  int MCU_height;		/* number of blocks per MCU, vertically */
-  int MCU_blocks;		/* MCU_width * MCU_height */
-  int MCU_sample_width;		/* MCU width in samples, MCU_width*DCT_scaled_size */
-  int last_col_width;		/* # of non-dummy blocks across in last MCU */
-  int last_row_height;		/* # of non-dummy blocks down in last MCU */
-
-  /* Saved quantization table for component; NULL if none yet saved.
-   * See jdinput.c comments about the need for this information.
-   * This field is currently used only for decompression.
-   */
-  JQUANT_TBL * quant_table;
-
-  /* Private per-component storage for DCT or IDCT subsystem. */
-  void * dct_table;
-} jpeg_component_info;
-
-
-/* The script for encoding a multiple-scan file is an array of these: */
-
-typedef struct {
-  int comps_in_scan;		/* number of components encoded in this scan */
-  int component_index[MAX_COMPS_IN_SCAN]; /* their SOF/comp_info[] indexes */
-  int Ss, Se;			/* progressive JPEG spectral selection parms */
-  int Ah, Al;			/* progressive JPEG successive approx. parms */
-} jpeg_scan_info;
-
-/* The decompressor can save APPn and COM markers in a list of these: */
-
-typedef struct jpeg_marker_struct FAR * jpeg_saved_marker_ptr;
-
-struct jpeg_marker_struct {
-  jpeg_saved_marker_ptr next;	/* next in list, or NULL */
-  UINT8 marker;			/* marker code: JPEG_COM, or JPEG_APP0+n */
-  unsigned int original_length;	/* # bytes of data in the file */
-  unsigned int data_length;	/* # bytes of data saved at data[] */
-  JOCTET FAR * data;		/* the data contained in the marker */
-  /* the marker length word is not counted in data_length or original_length */
-};
-
-/* Known color spaces. */
-
-typedef enum {
-	JCS_UNKNOWN,		/* error/unspecified */
-	JCS_GRAYSCALE,		/* monochrome */
-	JCS_RGB,		/* red/green/blue */
-	JCS_YCbCr,		/* Y/Cb/Cr (also known as YUV) */
-	JCS_CMYK,		/* C/M/Y/K */
-	JCS_YCCK		/* Y/Cb/Cr/K */
-} J_COLOR_SPACE;
-
-/* DCT/IDCT algorithm options. */
-
-typedef enum {
-	JDCT_ISLOW,		/* slow but accurate integer algorithm */
-	JDCT_IFAST,		/* faster, less accurate integer method */
-	JDCT_FLOAT		/* floating-point: accurate, fast on fast HW */
-} J_DCT_METHOD;
-
-#ifndef JDCT_DEFAULT		/* may be overridden in jconfig.h */
-#define JDCT_DEFAULT  JDCT_ISLOW
-#endif
-#ifndef JDCT_FASTEST		/* may be overridden in jconfig.h */
-#define JDCT_FASTEST  JDCT_IFAST
-#endif
-
-/* Dithering options for decompression. */
-
-typedef enum {
-	JDITHER_NONE,		/* no dithering */
-	JDITHER_ORDERED,	/* simple ordered dither */
-	JDITHER_FS		/* Floyd-Steinberg error diffusion dither */
-} J_DITHER_MODE;
-
-
-/* Common fields between JPEG compression and decompression master structs. */
-
-#define jpeg_common_fields \
-  struct jpeg_error_mgr * err;	/* Error handler module */\
-  struct jpeg_memory_mgr * mem;	/* Memory manager module */\
-  struct jpeg_progress_mgr * progress; /* Progress monitor, or NULL if none */\
-  void * client_data;		/* Available for use by application */\
-  boolean is_decompressor;	/* So common code can tell which is which */\
-  int global_state		/* For checking call sequence validity */
-
-/* Routines that are to be used by both halves of the library are declared
- * to receive a pointer to this structure.  There are no actual instances of
- * jpeg_common_struct, only of jpeg_compress_struct and jpeg_decompress_struct.
- */
-struct jpeg_common_struct {
-  jpeg_common_fields;		/* Fields common to both master struct types */
-  /* Additional fields follow in an actual jpeg_compress_struct or
-   * jpeg_decompress_struct.  All three structs must agree on these
-   * initial fields!  (This would be a lot cleaner in C++.)
-   */
-};
-
-typedef struct jpeg_common_struct * j_common_ptr;
-typedef struct jpeg_compress_struct * j_compress_ptr;
-typedef struct jpeg_decompress_struct * j_decompress_ptr;
-
-
-/* Master record for a compression instance */
-
-struct jpeg_compress_struct {
-  jpeg_common_fields;		/* Fields shared with jpeg_decompress_struct */
-
-  /* Destination for compressed data */
-  struct jpeg_destination_mgr * dest;
-
-  /* Description of source image --- these fields must be filled in by
-   * outer application before starting compression.  in_color_space must
-   * be correct before you can even call jpeg_set_defaults().
-   */
-
-  JDIMENSION image_width;	/* input image width */
-  JDIMENSION image_height;	/* input image height */
-  int input_components;		/* # of color components in input image */
-  J_COLOR_SPACE in_color_space;	/* colorspace of input image */
-
-  double input_gamma;		/* image gamma of input image */
-
-  /* Compression parameters --- these fields must be set before calling
-   * jpeg_start_compress().  We recommend calling jpeg_set_defaults() to
-   * initialize everything to reasonable defaults, then changing anything
-   * the application specifically wants to change.  That way you won't get
-   * burnt when new parameters are added.  Also note that there are several
-   * helper routines to simplify changing parameters.
-   */
-
-  int data_precision;		/* bits of precision in image data */
-
-  int num_components;		/* # of color components in JPEG image */
-  J_COLOR_SPACE jpeg_color_space; /* colorspace of JPEG image */
-
-  jpeg_component_info * comp_info;
-  /* comp_info[i] describes component that appears i'th in SOF */
-  
-  JQUANT_TBL * quant_tbl_ptrs[NUM_QUANT_TBLS];
-  /* ptrs to coefficient quantization tables, or NULL if not defined */
-  
-  JHUFF_TBL * dc_huff_tbl_ptrs[NUM_HUFF_TBLS];
-  JHUFF_TBL * ac_huff_tbl_ptrs[NUM_HUFF_TBLS];
-  /* ptrs to Huffman coding tables, or NULL if not defined */
-  
-  UINT8 arith_dc_L[NUM_ARITH_TBLS]; /* L values for DC arith-coding tables */
-  UINT8 arith_dc_U[NUM_ARITH_TBLS]; /* U values for DC arith-coding tables */
-  UINT8 arith_ac_K[NUM_ARITH_TBLS]; /* Kx values for AC arith-coding tables */
-
-  int num_scans;		/* # of entries in scan_info array */
-  const jpeg_scan_info * scan_info; /* script for multi-scan file, or NULL */
-  /* The default value of scan_info is NULL, which causes a single-scan
-   * sequential JPEG file to be emitted.  To create a multi-scan file,
-   * set num_scans and scan_info to point to an array of scan definitions.
-   */
-
-  boolean raw_data_in;		/* TRUE=caller supplies downsampled data */
-  boolean arith_code;		/* TRUE=arithmetic coding, FALSE=Huffman */
-  boolean optimize_coding;	/* TRUE=optimize entropy encoding parms */
-  boolean CCIR601_sampling;	/* TRUE=first samples are cosited */
-  int smoothing_factor;		/* 1..100, or 0 for no input smoothing */
-  J_DCT_METHOD dct_method;	/* DCT algorithm selector */
-
-  /* The restart interval can be specified in absolute MCUs by setting
-   * restart_interval, or in MCU rows by setting restart_in_rows
-   * (in which case the correct restart_interval will be figured
-   * for each scan).
-   */
-  unsigned int restart_interval; /* MCUs per restart, or 0 for no restart */
-  int restart_in_rows;		/* if > 0, MCU rows per restart interval */
-
-  /* Parameters controlling emission of special markers. */
-
-  boolean write_JFIF_header;	/* should a JFIF marker be written? */
-  UINT8 JFIF_major_version;	/* What to write for the JFIF version number */
-  UINT8 JFIF_minor_version;
-  /* These three values are not used by the JPEG code, merely copied */
-  /* into the JFIF APP0 marker.  density_unit can be 0 for unknown, */
-  /* 1 for dots/inch, or 2 for dots/cm.  Note that the pixel aspect */
-  /* ratio is defined by X_density/Y_density even when density_unit=0. */
-  UINT8 density_unit;		/* JFIF code for pixel size units */
-  UINT16 X_density;		/* Horizontal pixel density */
-  UINT16 Y_density;		/* Vertical pixel density */
-  boolean write_Adobe_marker;	/* should an Adobe marker be written? */
-  
-  /* State variable: index of next scanline to be written to
-   * jpeg_write_scanlines().  Application may use this to control its
-   * processing loop, e.g., "while (next_scanline < image_height)".
-   */
-
-  JDIMENSION next_scanline;	/* 0 .. image_height-1  */
-
-  /* Remaining fields are known throughout compressor, but generally
-   * should not be touched by a surrounding application.
-   */
-
-  /*
-   * These fields are computed during compression startup
-   */
-  boolean progressive_mode;	/* TRUE if scan script uses progressive mode */
-  int max_h_samp_factor;	/* largest h_samp_factor */
-  int max_v_samp_factor;	/* largest v_samp_factor */
-
-  JDIMENSION total_iMCU_rows;	/* # of iMCU rows to be input to coef ctlr */
-  /* The coefficient controller receives data in units of MCU rows as defined
-   * for fully interleaved scans (whether the JPEG file is interleaved or not).
-   * There are v_samp_factor * DCTSIZE sample rows of each component in an
-   * "iMCU" (interleaved MCU) row.
-   */
-  
-  /*
-   * These fields are valid during any one scan.
-   * They describe the components and MCUs actually appearing in the scan.
-   */
-  int comps_in_scan;		/* # of JPEG components in this scan */
-  jpeg_component_info * cur_comp_info[MAX_COMPS_IN_SCAN];
-  /* *cur_comp_info[i] describes component that appears i'th in SOS */
-  
-  JDIMENSION MCUs_per_row;	/* # of MCUs across the image */
-  JDIMENSION MCU_rows_in_scan;	/* # of MCU rows in the image */
-  
-  int blocks_in_MCU;		/* # of DCT blocks per MCU */
-  int MCU_membership[C_MAX_BLOCKS_IN_MCU];
-  /* MCU_membership[i] is index in cur_comp_info of component owning */
-  /* i'th block in an MCU */
-
-  int Ss, Se, Ah, Al;		/* progressive JPEG parameters for scan */
-
-  /*
-   * Links to compression subobjects (methods and private variables of modules)
-   */
-  struct jpeg_comp_master * master;
-  struct jpeg_c_main_controller * main;
-  struct jpeg_c_prep_controller * prep;
-  struct jpeg_c_coef_controller * coef;
-  struct jpeg_marker_writer * marker;
-  struct jpeg_color_converter * cconvert;
-  struct jpeg_downsampler * downsample;
-  struct jpeg_forward_dct * fdct;
-  struct jpeg_entropy_encoder * entropy;
-  jpeg_scan_info * script_space; /* workspace for jpeg_simple_progression */
-  int script_space_size;
-};
-
-
-/* Master record for a decompression instance */
-
-struct jpeg_decompress_struct {
-  jpeg_common_fields;		/* Fields shared with jpeg_compress_struct */
-
-  /* Source of compressed data */
-  struct jpeg_source_mgr * src;
-
-  /* Basic description of image --- filled in by jpeg_read_header(). */
-  /* Application may inspect these values to decide how to process image. */
-
-  JDIMENSION image_width;	/* nominal image width (from SOF marker) */
-  JDIMENSION image_height;	/* nominal image height */
-  int num_components;		/* # of color components in JPEG image */
-  J_COLOR_SPACE jpeg_color_space; /* colorspace of JPEG image */
-
-  /* Decompression processing parameters --- these fields must be set before
-   * calling jpeg_start_decompress().  Note that jpeg_read_header() initializes
-   * them to default values.
-   */
-
-  J_COLOR_SPACE out_color_space; /* colorspace for output */
-
-  unsigned int scale_num, scale_denom; /* fraction by which to scale image */
-
-  double output_gamma;		/* image gamma wanted in output */
-
-  boolean buffered_image;	/* TRUE=multiple output passes */
-  boolean raw_data_out;		/* TRUE=downsampled data wanted */
-
-  J_DCT_METHOD dct_method;	/* IDCT algorithm selector */
-  boolean do_fancy_upsampling;	/* TRUE=apply fancy upsampling */
-  boolean do_block_smoothing;	/* TRUE=apply interblock smoothing */
-
-  boolean quantize_colors;	/* TRUE=colormapped output wanted */
-  /* the following are ignored if not quantize_colors: */
-  J_DITHER_MODE dither_mode;	/* type of color dithering to use */
-  boolean two_pass_quantize;	/* TRUE=use two-pass color quantization */
-  int desired_number_of_colors;	/* max # colors to use in created colormap */
-  /* these are significant only in buffered-image mode: */
-  boolean enable_1pass_quant;	/* enable future use of 1-pass quantizer */
-  boolean enable_external_quant;/* enable future use of external colormap */
-  boolean enable_2pass_quant;	/* enable future use of 2-pass quantizer */
-
-  /* Description of actual output image that will be returned to application.
-   * These fields are computed by jpeg_start_decompress().
-   * You can also use jpeg_calc_output_dimensions() to determine these values
-   * in advance of calling jpeg_start_decompress().
-   */
-
-  JDIMENSION output_width;	/* scaled image width */
-  JDIMENSION output_height;	/* scaled image height */
-  int out_color_components;	/* # of color components in out_color_space */
-  int output_components;	/* # of color components returned */
-  /* output_components is 1 (a colormap index) when quantizing colors;
-   * otherwise it equals out_color_components.
-   */
-  int rec_outbuf_height;	/* min recommended height of scanline buffer */
-  /* If the buffer passed to jpeg_read_scanlines() is less than this many rows
-   * high, space and time will be wasted due to unnecessary data copying.
-   * Usually rec_outbuf_height will be 1 or 2, at most 4.
-   */
-
-  /* When quantizing colors, the output colormap is described by these fields.
-   * The application can supply a colormap by setting colormap non-NULL before
-   * calling jpeg_start_decompress; otherwise a colormap is created during
-   * jpeg_start_decompress or jpeg_start_output.
-   * The map has out_color_components rows and actual_number_of_colors columns.
-   */
-  int actual_number_of_colors;	/* number of entries in use */
-  JSAMPARRAY colormap;		/* The color map as a 2-D pixel array */
-
-  /* State variables: these variables indicate the progress of decompression.
-   * The application may examine these but must not modify them.
-   */
-
-  /* Row index of next scanline to be read from jpeg_read_scanlines().
-   * Application may use this to control its processing loop, e.g.,
-   * "while (output_scanline < output_height)".
-   */
-  JDIMENSION output_scanline;	/* 0 .. output_height-1  */
-
-  /* Current input scan number and number of iMCU rows completed in scan.
-   * These indicate the progress of the decompressor input side.
-   */
-  int input_scan_number;	/* Number of SOS markers seen so far */
-  JDIMENSION input_iMCU_row;	/* Number of iMCU rows completed */
-
-  /* The "output scan number" is the notional scan being displayed by the
-   * output side.  The decompressor will not allow output scan/row number
-   * to get ahead of input scan/row, but it can fall arbitrarily far behind.
-   */
-  int output_scan_number;	/* Nominal scan number being displayed */
-  JDIMENSION output_iMCU_row;	/* Number of iMCU rows read */
-
-  /* Current progression status.  coef_bits[c][i] indicates the precision
-   * with which component c's DCT coefficient i (in zigzag order) is known.
-   * It is -1 when no data has yet been received, otherwise it is the point
-   * transform (shift) value for the most recent scan of the coefficient
-   * (thus, 0 at completion of the progression).
-   * This pointer is NULL when reading a non-progressive file.
-   */
-  int (*coef_bits)[DCTSIZE2];	/* -1 or current Al value for each coef */
-
-  /* Internal JPEG parameters --- the application usually need not look at
-   * these fields.  Note that the decompressor output side may not use
-   * any parameters that can change between scans.
-   */
-
-  /* Quantization and Huffman tables are carried forward across input
-   * datastreams when processing abbreviated JPEG datastreams.
-   */
-
-  JQUANT_TBL * quant_tbl_ptrs[NUM_QUANT_TBLS];
-  /* ptrs to coefficient quantization tables, or NULL if not defined */
-
-  JHUFF_TBL * dc_huff_tbl_ptrs[NUM_HUFF_TBLS];
-  JHUFF_TBL * ac_huff_tbl_ptrs[NUM_HUFF_TBLS];
-  /* ptrs to Huffman coding tables, or NULL if not defined */
-
-  /* These parameters are never carried across datastreams, since they
-   * are given in SOF/SOS markers or defined to be reset by SOI.
-   */
-
-  int data_precision;		/* bits of precision in image data */
-
-  jpeg_component_info * comp_info;
-  /* comp_info[i] describes component that appears i'th in SOF */
-
-  boolean progressive_mode;	/* TRUE if SOFn specifies progressive mode */
-  boolean arith_code;		/* TRUE=arithmetic coding, FALSE=Huffman */
-
-  UINT8 arith_dc_L[NUM_ARITH_TBLS]; /* L values for DC arith-coding tables */
-  UINT8 arith_dc_U[NUM_ARITH_TBLS]; /* U values for DC arith-coding tables */
-  UINT8 arith_ac_K[NUM_ARITH_TBLS]; /* Kx values for AC arith-coding tables */
-
-  unsigned int restart_interval; /* MCUs per restart interval, or 0 for no restart */
-
-  /* These fields record data obtained from optional markers recognized by
-   * the JPEG library.
-   */
-  boolean saw_JFIF_marker;	/* TRUE iff a JFIF APP0 marker was found */
-  /* Data copied from JFIF marker; only valid if saw_JFIF_marker is TRUE: */
-  UINT8 JFIF_major_version;	/* JFIF version number */
-  UINT8 JFIF_minor_version;
-  UINT8 density_unit;		/* JFIF code for pixel size units */
-  UINT16 X_density;		/* Horizontal pixel density */
-  UINT16 Y_density;		/* Vertical pixel density */
-  boolean saw_Adobe_marker;	/* TRUE iff an Adobe APP14 marker was found */
-  UINT8 Adobe_transform;	/* Color transform code from Adobe marker */
-
-  boolean CCIR601_sampling;	/* TRUE=first samples are cosited */
-
-  /* Aside from the specific data retained from APPn markers known to the
-   * library, the uninterpreted contents of any or all APPn and COM markers
-   * can be saved in a list for examination by the application.
-   */
-  jpeg_saved_marker_ptr marker_list; /* Head of list of saved markers */
-
-  /* Remaining fields are known throughout decompressor, but generally
-   * should not be touched by a surrounding application.
-   */
-
-  /*
-   * These fields are computed during decompression startup
-   */
-  int max_h_samp_factor;	/* largest h_samp_factor */
-  int max_v_samp_factor;	/* largest v_samp_factor */
-
-  int min_DCT_scaled_size;	/* smallest DCT_scaled_size of any component */
-
-  JDIMENSION total_iMCU_rows;	/* # of iMCU rows in image */
-  /* The coefficient controller's input and output progress is measured in
-   * units of "iMCU" (interleaved MCU) rows.  These are the same as MCU rows
-   * in fully interleaved JPEG scans, but are used whether the scan is
-   * interleaved or not.  We define an iMCU row as v_samp_factor DCT block
-   * rows of each component.  Therefore, the IDCT output contains
-   * v_samp_factor*DCT_scaled_size sample rows of a component per iMCU row.
-   */
-
-  JSAMPLE * sample_range_limit; /* table for fast range-limiting */
-
-  /*
-   * These fields are valid during any one scan.
-   * They describe the components and MCUs actually appearing in the scan.
-   * Note that the decompressor output side must not use these fields.
-   */
-  int comps_in_scan;		/* # of JPEG components in this scan */
-  jpeg_component_info * cur_comp_info[MAX_COMPS_IN_SCAN];
-  /* *cur_comp_info[i] describes component that appears i'th in SOS */
-
-  JDIMENSION MCUs_per_row;	/* # of MCUs across the image */
-  JDIMENSION MCU_rows_in_scan;	/* # of MCU rows in the image */
-
-  int blocks_in_MCU;		/* # of DCT blocks per MCU */
-  int MCU_membership[D_MAX_BLOCKS_IN_MCU];
-  /* MCU_membership[i] is index in cur_comp_info of component owning */
-  /* i'th block in an MCU */
-
-  int Ss, Se, Ah, Al;		/* progressive JPEG parameters for scan */
-
-  /* This field is shared between entropy decoder and marker parser.
-   * It is either zero or the code of a JPEG marker that has been
-   * read from the data source, but has not yet been processed.
-   */
-  int unread_marker;
-
-  /*
-   * Links to decompression subobjects (methods, private variables of modules)
-   */
-  struct jpeg_decomp_master * master;
-  struct jpeg_d_main_controller * main;
-  struct jpeg_d_coef_controller * coef;
-  struct jpeg_d_post_controller * post;
-  struct jpeg_input_controller * inputctl;
-  struct jpeg_marker_reader * marker;
-  struct jpeg_entropy_decoder * entropy;
-  struct jpeg_inverse_dct * idct;
-  struct jpeg_upsampler * upsample;
-  struct jpeg_color_deconverter * cconvert;
-  struct jpeg_color_quantizer * cquantize;
-};
-
-
-/* "Object" declarations for JPEG modules that may be supplied or called
- * directly by the surrounding application.
- * As with all objects in the JPEG library, these structs only define the
- * publicly visible methods and state variables of a module.  Additional
- * private fields may exist after the public ones.
- */
-
-
-/* Error handler object */
-
-struct jpeg_error_mgr {
-  /* Error exit handler: does not return to caller */
-  JMETHOD(void, error_exit, (j_common_ptr cinfo));
-  /* Conditionally emit a trace or warning message */
-  JMETHOD(void, emit_message, (j_common_ptr cinfo, int msg_level));
-  /* Routine that actually outputs a trace or error message */
-  JMETHOD(void, output_message, (j_common_ptr cinfo));
-  /* Format a message string for the most recent JPEG error or message */
-  JMETHOD(void, format_message, (j_common_ptr cinfo, char * buffer));
-#define JMSG_LENGTH_MAX  200	/* recommended size of format_message buffer */
-  /* Reset error state variables at start of a new image */
-  JMETHOD(void, reset_error_mgr, (j_common_ptr cinfo));
-  
-  /* The message ID code and any parameters are saved here.
-   * A message can have one string parameter or up to 8 int parameters.
-   */
-  int msg_code;
-#define JMSG_STR_PARM_MAX  80
-  union {
-    int i[8];
-    char s[JMSG_STR_PARM_MAX];
-  } msg_parm;
-  
-  /* Standard state variables for error facility */
-  
-  int trace_level;		/* max msg_level that will be displayed */
-  
-  /* For recoverable corrupt-data errors, we emit a warning message,
-   * but keep going unless emit_message chooses to abort.  emit_message
-   * should count warnings in num_warnings.  The surrounding application
-   * can check for bad data by seeing if num_warnings is nonzero at the
-   * end of processing.
-   */
-  long num_warnings;		/* number of corrupt-data warnings */
-
-  /* These fields point to the table(s) of error message strings.
-   * An application can change the table pointer to switch to a different
-   * message list (typically, to change the language in which errors are
-   * reported).  Some applications may wish to add additional error codes
-   * that will be handled by the JPEG library error mechanism; the second
-   * table pointer is used for this purpose.
-   *
-   * First table includes all errors generated by JPEG library itself.
-   * Error code 0 is reserved for a "no such error string" message.
-   */
-  const char * const * jpeg_message_table; /* Library errors */
-  int last_jpeg_message;    /* Table contains strings 0..last_jpeg_message */
-  /* Second table can be added by application (see cjpeg/djpeg for example).
-   * It contains strings numbered first_addon_message..last_addon_message.
-   */
-  const char * const * addon_message_table; /* Non-library errors */
-  int first_addon_message;	/* code for first string in addon table */
-  int last_addon_message;	/* code for last string in addon table */
-};
-
-
-/* Progress monitor object */
-
-struct jpeg_progress_mgr {
-  JMETHOD(void, progress_monitor, (j_common_ptr cinfo));
-
-  long pass_counter;		/* work units completed in this pass */
-  long pass_limit;		/* total number of work units in this pass */
-  int completed_passes;		/* passes completed so far */
-  int total_passes;		/* total number of passes expected */
-};
-
-
-/* Data destination object for compression */
-
-struct jpeg_destination_mgr {
-  JOCTET * next_output_byte;	/* => next byte to write in buffer */
-  size_t free_in_buffer;	/* # of byte spaces remaining in buffer */
-
-  JMETHOD(void, init_destination, (j_compress_ptr cinfo));
-  JMETHOD(boolean, empty_output_buffer, (j_compress_ptr cinfo));
-  JMETHOD(void, term_destination, (j_compress_ptr cinfo));
-};
-
-
-/* Data source object for decompression */
-
-struct jpeg_source_mgr {
-  const JOCTET * next_input_byte; /* => next byte to read from buffer */
-  size_t bytes_in_buffer;	/* # of bytes remaining in buffer */
-
-  JMETHOD(void, init_source, (j_decompress_ptr cinfo));
-  JMETHOD(boolean, fill_input_buffer, (j_decompress_ptr cinfo));
-  JMETHOD(void, skip_input_data, (j_decompress_ptr cinfo, long num_bytes));
-  JMETHOD(boolean, resync_to_restart, (j_decompress_ptr cinfo, int desired));
-  JMETHOD(void, term_source, (j_decompress_ptr cinfo));
-};
-
-
-/* Memory manager object.
- * Allocates "small" objects (a few K total), "large" objects (tens of K),
- * and "really big" objects (virtual arrays with backing store if needed).
- * The memory manager does not allow individual objects to be freed; rather,
- * each created object is assigned to a pool, and whole pools can be freed
- * at once.  This is faster and more convenient than remembering exactly what
- * to free, especially where malloc()/free() are not too speedy.
- * NB: alloc routines never return NULL.  They exit to error_exit if not
- * successful.
- */
-
-#define JPOOL_PERMANENT	0	/* lasts until master record is destroyed */
-#define JPOOL_IMAGE	1	/* lasts until done with image/datastream */
-#define JPOOL_NUMPOOLS	2
-
-typedef struct jvirt_sarray_control * jvirt_sarray_ptr;
-typedef struct jvirt_barray_control * jvirt_barray_ptr;
-
-
-struct jpeg_memory_mgr {
-  /* Method pointers */
-  JMETHOD(void *, alloc_small, (j_common_ptr cinfo, int pool_id,
-				size_t sizeofobject));
-  JMETHOD(void FAR *, alloc_large, (j_common_ptr cinfo, int pool_id,
-				     size_t sizeofobject));
-  JMETHOD(JSAMPARRAY, alloc_sarray, (j_common_ptr cinfo, int pool_id,
-				     JDIMENSION samplesperrow,
-				     JDIMENSION numrows));
-  JMETHOD(JBLOCKARRAY, alloc_barray, (j_common_ptr cinfo, int pool_id,
-				      JDIMENSION blocksperrow,
-				      JDIMENSION numrows));
-  JMETHOD(jvirt_sarray_ptr, request_virt_sarray, (j_common_ptr cinfo,
-						  int pool_id,
-						  boolean pre_zero,
-						  JDIMENSION samplesperrow,
-						  JDIMENSION numrows,
-						  JDIMENSION maxaccess));
-  JMETHOD(jvirt_barray_ptr, request_virt_barray, (j_common_ptr cinfo,
-						  int pool_id,
-						  boolean pre_zero,
-						  JDIMENSION blocksperrow,
-						  JDIMENSION numrows,
-						  JDIMENSION maxaccess));
-  JMETHOD(void, realize_virt_arrays, (j_common_ptr cinfo));
-  JMETHOD(JSAMPARRAY, access_virt_sarray, (j_common_ptr cinfo,
-					   jvirt_sarray_ptr ptr,
-					   JDIMENSION start_row,
-					   JDIMENSION num_rows,
-					   boolean writable));
-  JMETHOD(JBLOCKARRAY, access_virt_barray, (j_common_ptr cinfo,
-					    jvirt_barray_ptr ptr,
-					    JDIMENSION start_row,
-					    JDIMENSION num_rows,
-					    boolean writable));
-  JMETHOD(void, free_pool, (j_common_ptr cinfo, int pool_id));
-  JMETHOD(void, self_destruct, (j_common_ptr cinfo));
-
-  /* Limit on memory allocation for this JPEG object.  (Note that this is
-   * merely advisory, not a guaranteed maximum; it only affects the space
-   * used for virtual-array buffers.)  May be changed by outer application
-   * after creating the JPEG object.
-   */
-  long max_memory_to_use;
-
-  /* Maximum allocation request accepted by alloc_large. */
-  long max_alloc_chunk;
-};
-
-
-/* Routine signature for application-supplied marker processing methods.
- * Need not pass marker code since it is stored in cinfo->unread_marker.
- */
-typedef JMETHOD(boolean, jpeg_marker_parser_method, (j_decompress_ptr cinfo));
-
-
-/* Declarations for routines called by application.
- * The JPP macro hides prototype parameters from compilers that can't cope.
- * Note JPP requires double parentheses.
- */
-
-#ifdef HAVE_PROTOTYPES
-#define JPP(arglist)	arglist
-#else
-#define JPP(arglist)	()
-#endif
-
-
-/* Short forms of external names for systems with brain-damaged linkers.
- * We shorten external names to be unique in the first six letters, which
- * is good enough for all known systems.
- * (If your compiler itself needs names to be unique in less than 15 
- * characters, you are out of luck.  Get a better compiler.)
- */
-
-#ifdef NEED_SHORT_EXTERNAL_NAMES
-#define jpeg_std_error		jStdError
-#define jpeg_CreateCompress	jCreaCompress
-#define jpeg_CreateDecompress	jCreaDecompress
-#define jpeg_destroy_compress	jDestCompress
-#define jpeg_destroy_decompress	jDestDecompress
-#define jpeg_stdio_dest		jStdDest
-#define jpeg_stdio_src		jStdSrc
-#define jpeg_set_defaults	jSetDefaults
-#define jpeg_set_colorspace	jSetColorspace
-#define jpeg_default_colorspace	jDefColorspace
-#define jpeg_set_quality	jSetQuality
-#define jpeg_set_linear_quality	jSetLQuality
-#define jpeg_add_quant_table	jAddQuantTable
-#define jpeg_quality_scaling	jQualityScaling
-#define jpeg_simple_progression	jSimProgress
-#define jpeg_suppress_tables	jSuppressTables
-#define jpeg_alloc_quant_table	jAlcQTable
-#define jpeg_alloc_huff_table	jAlcHTable
-#define jpeg_start_compress	jStrtCompress
-#define jpeg_write_scanlines	jWrtScanlines
-#define jpeg_finish_compress	jFinCompress
-#define jpeg_write_raw_data	jWrtRawData
-#define jpeg_write_marker	jWrtMarker
-#define jpeg_write_m_header	jWrtMHeader
-#define jpeg_write_m_byte	jWrtMByte
-#define jpeg_write_tables	jWrtTables
-#define jpeg_read_header	jReadHeader
-#define jpeg_start_decompress	jStrtDecompress
-#define jpeg_read_scanlines	jReadScanlines
-#define jpeg_finish_decompress	jFinDecompress
-#define jpeg_read_raw_data	jReadRawData
-#define jpeg_has_multiple_scans	jHasMultScn
-#define jpeg_start_output	jStrtOutput
-#define jpeg_finish_output	jFinOutput
-#define jpeg_input_complete	jInComplete
-#define jpeg_new_colormap	jNewCMap
-#define jpeg_consume_input	jConsumeInput
-#define jpeg_calc_output_dimensions	jCalcDimensions
-#define jpeg_save_markers	jSaveMarkers
-#define jpeg_set_marker_processor	jSetMarker
-#define jpeg_read_coefficients	jReadCoefs
-#define jpeg_write_coefficients	jWrtCoefs
-#define jpeg_copy_critical_parameters	jCopyCrit
-#define jpeg_abort_compress	jAbrtCompress
-#define jpeg_abort_decompress	jAbrtDecompress
-#define jpeg_abort		jAbort
-#define jpeg_destroy		jDestroy
-#define jpeg_resync_to_restart	jResyncRestart
-#endif /* NEED_SHORT_EXTERNAL_NAMES */
-
-
-/* Default error-management setup */
-EXTERN(struct jpeg_error_mgr *) jpeg_std_error
-	JPP((struct jpeg_error_mgr * err));
-
-/* Initialization of JPEG compression objects.
- * jpeg_create_compress() and jpeg_create_decompress() are the exported
- * names that applications should call.  These expand to calls on
- * jpeg_CreateCompress and jpeg_CreateDecompress with additional information
- * passed for version mismatch checking.
- * NB: you must set up the error-manager BEFORE calling jpeg_create_xxx.
- */
-#define jpeg_create_compress(cinfo) \
-    jpeg_CreateCompress((cinfo), JPEG_LIB_VERSION, \
-			(size_t) sizeof(struct jpeg_compress_struct))
-#define jpeg_create_decompress(cinfo) \
-    jpeg_CreateDecompress((cinfo), JPEG_LIB_VERSION, \
-			  (size_t) sizeof(struct jpeg_decompress_struct))
-EXTERN(void) jpeg_CreateCompress JPP((j_compress_ptr cinfo,
-				      int version, size_t structsize));
-EXTERN(void) jpeg_CreateDecompress JPP((j_decompress_ptr cinfo,
-					int version, size_t structsize));
-/* Destruction of JPEG compression objects */
-EXTERN(void) jpeg_destroy_compress JPP((j_compress_ptr cinfo));
-EXTERN(void) jpeg_destroy_decompress JPP((j_decompress_ptr cinfo));
-
-/* Standard data source and destination managers: stdio streams. */
-/* Caller is responsible for opening the file before and closing after. */
-EXTERN(void) jpeg_stdio_dest JPP((j_compress_ptr cinfo, FILE * outfile));
-EXTERN(void) jpeg_stdio_src JPP((j_decompress_ptr cinfo, FILE * infile));
-
-/* Default parameter setup for compression */
-EXTERN(void) jpeg_set_defaults JPP((j_compress_ptr cinfo));
-/* Compression parameter setup aids */
-EXTERN(void) jpeg_set_colorspace JPP((j_compress_ptr cinfo,
-				      J_COLOR_SPACE colorspace));
-EXTERN(void) jpeg_default_colorspace JPP((j_compress_ptr cinfo));
-EXTERN(void) jpeg_set_quality JPP((j_compress_ptr cinfo, int quality,
-				   boolean force_baseline));
-EXTERN(void) jpeg_set_linear_quality JPP((j_compress_ptr cinfo,
-					  int scale_factor,
-					  boolean force_baseline));
-EXTERN(void) jpeg_add_quant_table JPP((j_compress_ptr cinfo, int which_tbl,
-				       const unsigned int *basic_table,
-				       int scale_factor,
-				       boolean force_baseline));
-EXTERN(int) jpeg_quality_scaling JPP((int quality));
-EXTERN(void) jpeg_simple_progression JPP((j_compress_ptr cinfo));
-EXTERN(void) jpeg_suppress_tables JPP((j_compress_ptr cinfo,
-				       boolean suppress));
-EXTERN(JQUANT_TBL *) jpeg_alloc_quant_table JPP((j_common_ptr cinfo));
-EXTERN(JHUFF_TBL *) jpeg_alloc_huff_table JPP((j_common_ptr cinfo));
-
-/* Main entry points for compression */
-EXTERN(void) jpeg_start_compress JPP((j_compress_ptr cinfo,
-				      boolean write_all_tables));
-EXTERN(JDIMENSION) jpeg_write_scanlines JPP((j_compress_ptr cinfo,
-					     JSAMPARRAY scanlines,
-					     JDIMENSION num_lines));
-EXTERN(void) jpeg_finish_compress JPP((j_compress_ptr cinfo));
-
-/* Replaces jpeg_write_scanlines when writing raw downsampled data. */
-EXTERN(JDIMENSION) jpeg_write_raw_data JPP((j_compress_ptr cinfo,
-					    JSAMPIMAGE data,
-					    JDIMENSION num_lines));
-
-/* Write a special marker.  See libjpeg.doc concerning safe usage. */
-EXTERN(void) jpeg_write_marker
-	JPP((j_compress_ptr cinfo, int marker,
-	     const JOCTET * dataptr, unsigned int datalen));
-/* Same, but piecemeal. */
-EXTERN(void) jpeg_write_m_header
-	JPP((j_compress_ptr cinfo, int marker, unsigned int datalen));
-EXTERN(void) jpeg_write_m_byte
-	JPP((j_compress_ptr cinfo, int val));
-
-/* Alternate compression function: just write an abbreviated table file */
-EXTERN(void) jpeg_write_tables JPP((j_compress_ptr cinfo));
-
-/* Decompression startup: read start of JPEG datastream to see what's there */
-EXTERN(int) jpeg_read_header JPP((j_decompress_ptr cinfo,
-				  boolean require_image));
-/* Return value is one of: */
-#define JPEG_SUSPENDED		0 /* Suspended due to lack of input data */
-#define JPEG_HEADER_OK		1 /* Found valid image datastream */
-#define JPEG_HEADER_TABLES_ONLY	2 /* Found valid table-specs-only datastream */
-/* If you pass require_image = TRUE (normal case), you need not check for
- * a TABLES_ONLY return code; an abbreviated file will cause an error exit.
- * JPEG_SUSPENDED is only possible if you use a data source module that can
- * give a suspension return (the stdio source module doesn't).
- */
-
-/* Main entry points for decompression */
-EXTERN(boolean) jpeg_start_decompress JPP((j_decompress_ptr cinfo));
-EXTERN(JDIMENSION) jpeg_read_scanlines JPP((j_decompress_ptr cinfo,
-					    JSAMPARRAY scanlines,
-					    JDIMENSION max_lines));
-EXTERN(boolean) jpeg_finish_decompress JPP((j_decompress_ptr cinfo));
-
-/* Replaces jpeg_read_scanlines when reading raw downsampled data. */
-EXTERN(JDIMENSION) jpeg_read_raw_data JPP((j_decompress_ptr cinfo,
-					   JSAMPIMAGE data,
-					   JDIMENSION max_lines));
-
-/* Additional entry points for buffered-image mode. */
-EXTERN(boolean) jpeg_has_multiple_scans JPP((j_decompress_ptr cinfo));
-EXTERN(boolean) jpeg_start_output JPP((j_decompress_ptr cinfo,
-				       int scan_number));
-EXTERN(boolean) jpeg_finish_output JPP((j_decompress_ptr cinfo));
-EXTERN(boolean) jpeg_input_complete JPP((j_decompress_ptr cinfo));
-EXTERN(void) jpeg_new_colormap JPP((j_decompress_ptr cinfo));
-EXTERN(int) jpeg_consume_input JPP((j_decompress_ptr cinfo));
-/* Return value is one of: */
-/* #define JPEG_SUSPENDED	0    Suspended due to lack of input data */
-#define JPEG_REACHED_SOS	1 /* Reached start of new scan */
-#define JPEG_REACHED_EOI	2 /* Reached end of image */
-#define JPEG_ROW_COMPLETED	3 /* Completed one iMCU row */
-#define JPEG_SCAN_COMPLETED	4 /* Completed last iMCU row of a scan */
-
-/* Precalculate output dimensions for current decompression parameters. */
-EXTERN(void) jpeg_calc_output_dimensions JPP((j_decompress_ptr cinfo));
-
-/* Control saving of COM and APPn markers into marker_list. */
-EXTERN(void) jpeg_save_markers
-	JPP((j_decompress_ptr cinfo, int marker_code,
-	     unsigned int length_limit));
-
-/* Install a special processing method for COM or APPn markers. */
-EXTERN(void) jpeg_set_marker_processor
-	JPP((j_decompress_ptr cinfo, int marker_code,
-	     jpeg_marker_parser_method routine));
-
-/* Read or write raw DCT coefficients --- useful for lossless transcoding. */
-EXTERN(jvirt_barray_ptr *) jpeg_read_coefficients JPP((j_decompress_ptr cinfo));
-EXTERN(void) jpeg_write_coefficients JPP((j_compress_ptr cinfo,
-					  jvirt_barray_ptr * coef_arrays));
-EXTERN(void) jpeg_copy_critical_parameters JPP((j_decompress_ptr srcinfo,
-						j_compress_ptr dstinfo));
-
-/* If you choose to abort compression or decompression before completing
- * jpeg_finish_(de)compress, then you need to clean up to release memory,
- * temporary files, etc.  You can just call jpeg_destroy_(de)compress
- * if you're done with the JPEG object, but if you want to clean it up and
- * reuse it, call this:
- */
-EXTERN(void) jpeg_abort_compress JPP((j_compress_ptr cinfo));
-EXTERN(void) jpeg_abort_decompress JPP((j_decompress_ptr cinfo));
-
-/* Generic versions of jpeg_abort and jpeg_destroy that work on either
- * flavor of JPEG object.  These may be more convenient in some places.
- */
-EXTERN(void) jpeg_abort JPP((j_common_ptr cinfo));
-EXTERN(void) jpeg_destroy JPP((j_common_ptr cinfo));
-
-/* Default restart-marker-resync procedure for use by data source modules */
-EXTERN(boolean) jpeg_resync_to_restart JPP((j_decompress_ptr cinfo,
-					    int desired));
-
-
-/* These marker codes are exported since applications and data source modules
- * are likely to want to use them.
- */
-
-#define JPEG_RST0	0xD0	/* RST0 marker code */
-#define JPEG_EOI	0xD9	/* EOI marker code */
-#define JPEG_APP0	0xE0	/* APP0 marker code */
-#define JPEG_COM	0xFE	/* COM marker code */
-
-
-/* If we have a brain-damaged compiler that emits warnings (or worse, errors)
- * for structure definitions that are never filled in, keep it quiet by
- * supplying dummy definitions for the various substructures.
- */
-
-#ifdef INCOMPLETE_TYPES_BROKEN
-#ifndef JPEG_INTERNALS		/* will be defined in jpegint.h */
-struct jvirt_sarray_control { long dummy; };
-struct jvirt_barray_control { long dummy; };
-struct jpeg_comp_master { long dummy; };
-struct jpeg_c_main_controller { long dummy; };
-struct jpeg_c_prep_controller { long dummy; };
-struct jpeg_c_coef_controller { long dummy; };
-struct jpeg_marker_writer { long dummy; };
-struct jpeg_color_converter { long dummy; };
-struct jpeg_downsampler { long dummy; };
-struct jpeg_forward_dct { long dummy; };
-struct jpeg_entropy_encoder { long dummy; };
-struct jpeg_decomp_master { long dummy; };
-struct jpeg_d_main_controller { long dummy; };
-struct jpeg_d_coef_controller { long dummy; };
-struct jpeg_d_post_controller { long dummy; };
-struct jpeg_input_controller { long dummy; };
-struct jpeg_marker_reader { long dummy; };
-struct jpeg_entropy_decoder { long dummy; };
-struct jpeg_inverse_dct { long dummy; };
-struct jpeg_upsampler { long dummy; };
-struct jpeg_color_deconverter { long dummy; };
-struct jpeg_color_quantizer { long dummy; };
-#endif /* JPEG_INTERNALS */
-#endif /* INCOMPLETE_TYPES_BROKEN */
-
-
-/*
- * The JPEG library modules define JPEG_INTERNALS before including this file.
- * The internal structure declarations are read only when that is true.
- * Applications using the library should not include jpegint.h, but may wish
- * to include jerror.h.
- */
-
-#ifdef JPEG_INTERNALS
-#include "jpegint.h"		/* fetch private declarations */
-#include "jerror.h"		/* fetch error codes too */
-#endif
-
-#endif /* JPEGLIB_H */
diff --git a/src/libjpeg/jpegtran.c b/src/libjpeg/jpegtran.c
deleted file mode 100644
index 719aaa7..0000000
--- a/src/libjpeg/jpegtran.c
+++ /dev/null
@@ -1,504 +0,0 @@
-/*
- * jpegtran.c
- *
- * Copyright (C) 1995-1997, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains a command-line user interface for JPEG transcoding.
- * It is very similar to cjpeg.c, but provides lossless transcoding between
- * different JPEG file formats.  It also provides some lossless and sort-of-
- * lossless transformations of JPEG data.
- */
-
-#include "cdjpeg.h"		/* Common decls for cjpeg/djpeg applications */
-#include "transupp.h"		/* Support routines for jpegtran */
-#include "jversion.h"		/* for version message */
-
-#ifdef USE_CCOMMAND		/* command-line reader for Macintosh */
-#ifdef __MWERKS__
-#include <SIOUX.h>              /* Metrowerks needs this */
-#include <console.h>		/* ... and this */
-#endif
-#ifdef THINK_C
-#include <console.h>		/* Think declares it here */
-#endif
-#endif
-
-
-/*
- * Argument-parsing code.
- * The switch parser is designed to be useful with DOS-style command line
- * syntax, ie, intermixed switches and file names, where only the switches
- * to the left of a given file name affect processing of that file.
- * The main program in this file doesn't actually use this capability...
- */
-
-
-static const char * progname;	/* program name for error messages */
-static char * outfilename;	/* for -outfile switch */
-static JCOPY_OPTION copyoption;	/* -copy switch */
-static jpeg_transform_info transformoption; /* image transformation options */
-
-
-LOCAL(void)
-usage (void)
-/* complain about bad command line */
-{
-  fprintf(stderr, "usage: %s [switches] ", progname);
-#ifdef TWO_FILE_COMMANDLINE
-  fprintf(stderr, "inputfile outputfile\n");
-#else
-  fprintf(stderr, "[inputfile]\n");
-#endif
-
-  fprintf(stderr, "Switches (names may be abbreviated):\n");
-  fprintf(stderr, "  -copy none     Copy no extra markers from source file\n");
-  fprintf(stderr, "  -copy comments Copy only comment markers (default)\n");
-  fprintf(stderr, "  -copy all      Copy all extra markers\n");
-#ifdef ENTROPY_OPT_SUPPORTED
-  fprintf(stderr, "  -optimize      Optimize Huffman table (smaller file, but slow compression)\n");
-#endif
-#ifdef C_PROGRESSIVE_SUPPORTED
-  fprintf(stderr, "  -progressive   Create progressive JPEG file\n");
-#endif
-#if TRANSFORMS_SUPPORTED
-  fprintf(stderr, "Switches for modifying the image:\n");
-  fprintf(stderr, "  -grayscale     Reduce to grayscale (omit color data)\n");
-  fprintf(stderr, "  -flip [horizontal|vertical]  Mirror image (left-right or top-bottom)\n");
-  fprintf(stderr, "  -rotate [90|180|270]         Rotate image (degrees clockwise)\n");
-  fprintf(stderr, "  -transpose     Transpose image\n");
-  fprintf(stderr, "  -transverse    Transverse transpose image\n");
-  fprintf(stderr, "  -trim          Drop non-transformable edge blocks\n");
-#endif /* TRANSFORMS_SUPPORTED */
-  fprintf(stderr, "Switches for advanced users:\n");
-  fprintf(stderr, "  -restart N     Set restart interval in rows, or in blocks with B\n");
-  fprintf(stderr, "  -maxmemory N   Maximum memory to use (in kbytes)\n");
-  fprintf(stderr, "  -outfile name  Specify name for output file\n");
-  fprintf(stderr, "  -verbose  or  -debug   Emit debug output\n");
-  fprintf(stderr, "Switches for wizards:\n");
-#ifdef C_ARITH_CODING_SUPPORTED
-  fprintf(stderr, "  -arithmetic    Use arithmetic coding\n");
-#endif
-#ifdef C_MULTISCAN_FILES_SUPPORTED
-  fprintf(stderr, "  -scans file    Create multi-scan JPEG per script file\n");
-#endif
-  exit(EXIT_FAILURE);
-}
-
-
-LOCAL(void)
-select_transform (JXFORM_CODE transform)
-/* Silly little routine to detect multiple transform options,
- * which we can't handle.
- */
-{
-#if TRANSFORMS_SUPPORTED
-  if (transformoption.transform == JXFORM_NONE ||
-      transformoption.transform == transform) {
-    transformoption.transform = transform;
-  } else {
-    fprintf(stderr, "%s: can only do one image transformation at a time\n",
-	    progname);
-    usage();
-  }
-#else
-  fprintf(stderr, "%s: sorry, image transformation was not compiled\n",
-	  progname);
-  exit(EXIT_FAILURE);
-#endif
-}
-
-
-LOCAL(int)
-parse_switches (j_compress_ptr cinfo, int argc, char **argv,
-		int last_file_arg_seen, boolean for_real)
-/* Parse optional switches.
- * Returns argv[] index of first file-name argument (== argc if none).
- * Any file names with indexes <= last_file_arg_seen are ignored;
- * they have presumably been processed in a previous iteration.
- * (Pass 0 for last_file_arg_seen on the first or only iteration.)
- * for_real is FALSE on the first (dummy) pass; we may skip any expensive
- * processing.
- */
-{
-  int argn;
-  char * arg;
-  boolean simple_progressive;
-  char * scansarg = NULL;	/* saves -scans parm if any */
-
-  /* Set up default JPEG parameters. */
-  simple_progressive = FALSE;
-  outfilename = NULL;
-  copyoption = JCOPYOPT_DEFAULT;
-  transformoption.transform = JXFORM_NONE;
-  transformoption.trim = FALSE;
-  transformoption.force_grayscale = FALSE;
-  cinfo->err->trace_level = 0;
-
-  /* Scan command line options, adjust parameters */
-
-  for (argn = 1; argn < argc; argn++) {
-    arg = argv[argn];
-    if (*arg != '-') {
-      /* Not a switch, must be a file name argument */
-      if (argn <= last_file_arg_seen) {
-	outfilename = NULL;	/* -outfile applies to just one input file */
-	continue;		/* ignore this name if previously processed */
-      }
-      break;			/* else done parsing switches */
-    }
-    arg++;			/* advance past switch marker character */
-
-    if (keymatch(arg, "arithmetic", 1)) {
-      /* Use arithmetic coding. */
-#ifdef C_ARITH_CODING_SUPPORTED
-      cinfo->arith_code = TRUE;
-#else
-      fprintf(stderr, "%s: sorry, arithmetic coding not supported\n",
-	      progname);
-      exit(EXIT_FAILURE);
-#endif
-
-    } else if (keymatch(arg, "copy", 1)) {
-      /* Select which extra markers to copy. */
-      if (++argn >= argc)	/* advance to next argument */
-	usage();
-      if (keymatch(argv[argn], "none", 1)) {
-	copyoption = JCOPYOPT_NONE;
-      } else if (keymatch(argv[argn], "comments", 1)) {
-	copyoption = JCOPYOPT_COMMENTS;
-      } else if (keymatch(argv[argn], "all", 1)) {
-	copyoption = JCOPYOPT_ALL;
-      } else
-	usage();
-
-    } else if (keymatch(arg, "debug", 1) || keymatch(arg, "verbose", 1)) {
-      /* Enable debug printouts. */
-      /* On first -d, print version identification */
-      static boolean printed_version = FALSE;
-
-      if (! printed_version) {
-	fprintf(stderr, "Independent JPEG Group's JPEGTRAN, version %s\n%s\n",
-		JVERSION, JCOPYRIGHT);
-	printed_version = TRUE;
-      }
-      cinfo->err->trace_level++;
-
-    } else if (keymatch(arg, "flip", 1)) {
-      /* Mirror left-right or top-bottom. */
-      if (++argn >= argc)	/* advance to next argument */
-	usage();
-      if (keymatch(argv[argn], "horizontal", 1))
-	select_transform(JXFORM_FLIP_H);
-      else if (keymatch(argv[argn], "vertical", 1))
-	select_transform(JXFORM_FLIP_V);
-      else
-	usage();
-
-    } else if (keymatch(arg, "grayscale", 1) || keymatch(arg, "greyscale",1)) {
-      /* Force to grayscale. */
-#if TRANSFORMS_SUPPORTED
-      transformoption.force_grayscale = TRUE;
-#else
-      select_transform(JXFORM_NONE);	/* force an error */
-#endif
-
-    } else if (keymatch(arg, "maxmemory", 3)) {
-      /* Maximum memory in Kb (or Mb with 'm'). */
-      long lval;
-      char ch = 'x';
-
-      if (++argn >= argc)	/* advance to next argument */
-	usage();
-      if (sscanf(argv[argn], "%ld%c", &lval, &ch) < 1)
-	usage();
-      if (ch == 'm' || ch == 'M')
-	lval *= 1000L;
-      cinfo->mem->max_memory_to_use = lval * 1000L;
-
-    } else if (keymatch(arg, "optimize", 1) || keymatch(arg, "optimise", 1)) {
-      /* Enable entropy parm optimization. */
-#ifdef ENTROPY_OPT_SUPPORTED
-      cinfo->optimize_coding = TRUE;
-#else
-      fprintf(stderr, "%s: sorry, entropy optimization was not compiled\n",
-	      progname);
-      exit(EXIT_FAILURE);
-#endif
-
-    } else if (keymatch(arg, "outfile", 4)) {
-      /* Set output file name. */
-      if (++argn >= argc)	/* advance to next argument */
-	usage();
-      outfilename = argv[argn];	/* save it away for later use */
-
-    } else if (keymatch(arg, "progressive", 1)) {
-      /* Select simple progressive mode. */
-#ifdef C_PROGRESSIVE_SUPPORTED
-      simple_progressive = TRUE;
-      /* We must postpone execution until num_components is known. */
-#else
-      fprintf(stderr, "%s: sorry, progressive output was not compiled\n",
-	      progname);
-      exit(EXIT_FAILURE);
-#endif
-
-    } else if (keymatch(arg, "restart", 1)) {
-      /* Restart interval in MCU rows (or in MCUs with 'b'). */
-      long lval;
-      char ch = 'x';
-
-      if (++argn >= argc)	/* advance to next argument */
-	usage();
-      if (sscanf(argv[argn], "%ld%c", &lval, &ch) < 1)
-	usage();
-      if (lval < 0 || lval > 65535L)
-	usage();
-      if (ch == 'b' || ch == 'B') {
-	cinfo->restart_interval = (unsigned int) lval;
-	cinfo->restart_in_rows = 0; /* else prior '-restart n' overrides me */
-      } else {
-	cinfo->restart_in_rows = (int) lval;
-	/* restart_interval will be computed during startup */
-      }
-
-    } else if (keymatch(arg, "rotate", 2)) {
-      /* Rotate 90, 180, or 270 degrees (measured clockwise). */
-      if (++argn >= argc)	/* advance to next argument */
-	usage();
-      if (keymatch(argv[argn], "90", 2))
-	select_transform(JXFORM_ROT_90);
-      else if (keymatch(argv[argn], "180", 3))
-	select_transform(JXFORM_ROT_180);
-      else if (keymatch(argv[argn], "270", 3))
-	select_transform(JXFORM_ROT_270);
-      else
-	usage();
-
-    } else if (keymatch(arg, "scans", 1)) {
-      /* Set scan script. */
-#ifdef C_MULTISCAN_FILES_SUPPORTED
-      if (++argn >= argc)	/* advance to next argument */
-	usage();
-      scansarg = argv[argn];
-      /* We must postpone reading the file in case -progressive appears. */
-#else
-      fprintf(stderr, "%s: sorry, multi-scan output was not compiled\n",
-	      progname);
-      exit(EXIT_FAILURE);
-#endif
-
-    } else if (keymatch(arg, "transpose", 1)) {
-      /* Transpose (across UL-to-LR axis). */
-      select_transform(JXFORM_TRANSPOSE);
-
-    } else if (keymatch(arg, "transverse", 6)) {
-      /* Transverse transpose (across UR-to-LL axis). */
-      select_transform(JXFORM_TRANSVERSE);
-
-    } else if (keymatch(arg, "trim", 3)) {
-      /* Trim off any partial edge MCUs that the transform can't handle. */
-      transformoption.trim = TRUE;
-
-    } else {
-      usage();			/* bogus switch */
-    }
-  }
-
-  /* Post-switch-scanning cleanup */
-
-  if (for_real) {
-
-#ifdef C_PROGRESSIVE_SUPPORTED
-    if (simple_progressive)	/* process -progressive; -scans can override */
-      jpeg_simple_progression(cinfo);
-#endif
-
-#ifdef C_MULTISCAN_FILES_SUPPORTED
-    if (scansarg != NULL)	/* process -scans if it was present */
-      if (! read_scan_script(cinfo, scansarg))
-	usage();
-#endif
-  }
-
-  return argn;			/* return index of next arg (file name) */
-}
-
-
-/*
- * The main program.
- */
-
-int
-main (int argc, char **argv)
-{
-  struct jpeg_decompress_struct srcinfo;
-  struct jpeg_compress_struct dstinfo;
-  struct jpeg_error_mgr jsrcerr, jdsterr;
-#ifdef PROGRESS_REPORT
-  struct cdjpeg_progress_mgr progress;
-#endif
-  jvirt_barray_ptr * src_coef_arrays;
-  jvirt_barray_ptr * dst_coef_arrays;
-  int file_index;
-  FILE * input_file;
-  FILE * output_file;
-
-  /* On Mac, fetch a command line. */
-#ifdef USE_CCOMMAND
-  argc = ccommand(&argv);
-#endif
-
-  progname = argv[0];
-  if (progname == NULL || progname[0] == 0)
-    progname = "jpegtran";	/* in case C library doesn't provide it */
-
-  /* Initialize the JPEG decompression object with default error handling. */
-  srcinfo.err = jpeg_std_error(&jsrcerr);
-  jpeg_create_decompress(&srcinfo);
-  /* Initialize the JPEG compression object with default error handling. */
-  dstinfo.err = jpeg_std_error(&jdsterr);
-  jpeg_create_compress(&dstinfo);
-
-  /* Now safe to enable signal catcher.
-   * Note: we assume only the decompression object will have virtual arrays.
-   */
-#ifdef NEED_SIGNAL_CATCHER
-  enable_signal_catcher((j_common_ptr) &srcinfo);
-#endif
-
-  /* Scan command line to find file names.
-   * It is convenient to use just one switch-parsing routine, but the switch
-   * values read here are mostly ignored; we will rescan the switches after
-   * opening the input file.  Also note that most of the switches affect the
-   * destination JPEG object, so we parse into that and then copy over what
-   * needs to affects the source too.
-   */
-
-  file_index = parse_switches(&dstinfo, argc, argv, 0, FALSE);
-  jsrcerr.trace_level = jdsterr.trace_level;
-  srcinfo.mem->max_memory_to_use = dstinfo.mem->max_memory_to_use;
-
-#ifdef TWO_FILE_COMMANDLINE
-  /* Must have either -outfile switch or explicit output file name */
-  if (outfilename == NULL) {
-    if (file_index != argc-2) {
-      fprintf(stderr, "%s: must name one input and one output file\n",
-	      progname);
-      usage();
-    }
-    outfilename = argv[file_index+1];
-  } else {
-    if (file_index != argc-1) {
-      fprintf(stderr, "%s: must name one input and one output file\n",
-	      progname);
-      usage();
-    }
-  }
-#else
-  /* Unix style: expect zero or one file name */
-  if (file_index < argc-1) {
-    fprintf(stderr, "%s: only one input file\n", progname);
-    usage();
-  }
-#endif /* TWO_FILE_COMMANDLINE */
-
-  /* Open the input file. */
-  if (file_index < argc) {
-    if ((input_file = fopen(argv[file_index], READ_BINARY)) == NULL) {
-      fprintf(stderr, "%s: can't open %s\n", progname, argv[file_index]);
-      exit(EXIT_FAILURE);
-    }
-  } else {
-    /* default input file is stdin */
-    input_file = read_stdin();
-  }
-
-  /* Open the output file. */
-  if (outfilename != NULL) {
-    if ((output_file = fopen(outfilename, WRITE_BINARY)) == NULL) {
-      fprintf(stderr, "%s: can't open %s\n", progname, outfilename);
-      exit(EXIT_FAILURE);
-    }
-  } else {
-    /* default output file is stdout */
-    output_file = write_stdout();
-  }
-
-#ifdef PROGRESS_REPORT
-  start_progress_monitor((j_common_ptr) &dstinfo, &progress);
-#endif
-
-  /* Specify data source for decompression */
-  jpeg_stdio_src(&srcinfo, input_file);
-
-  /* Enable saving of extra markers that we want to copy */
-  jcopy_markers_setup(&srcinfo, copyoption);
-
-  /* Read file header */
-  (void) jpeg_read_header(&srcinfo, TRUE);
-
-  /* Any space needed by a transform option must be requested before
-   * jpeg_read_coefficients so that memory allocation will be done right.
-   */
-#if TRANSFORMS_SUPPORTED
-  jtransform_request_workspace(&srcinfo, &transformoption);
-#endif
-
-  /* Read source file as DCT coefficients */
-  src_coef_arrays = jpeg_read_coefficients(&srcinfo);
-
-  /* Initialize destination compression parameters from source values */
-  jpeg_copy_critical_parameters(&srcinfo, &dstinfo);
-
-  /* Adjust destination parameters if required by transform options;
-   * also find out which set of coefficient arrays will hold the output.
-   */
-#if TRANSFORMS_SUPPORTED
-  dst_coef_arrays = jtransform_adjust_parameters(&srcinfo, &dstinfo,
-						 src_coef_arrays,
-						 &transformoption);
-#else
-  dst_coef_arrays = src_coef_arrays;
-#endif
-
-  /* Adjust default compression parameters by re-parsing the options */
-  file_index = parse_switches(&dstinfo, argc, argv, 0, TRUE);
-
-  /* Specify data destination for compression */
-  jpeg_stdio_dest(&dstinfo, output_file);
-
-  /* Start compressor (note no image data is actually written here) */
-  jpeg_write_coefficients(&dstinfo, dst_coef_arrays);
-
-  /* Copy to the output file any extra markers that we want to preserve */
-  jcopy_markers_execute(&srcinfo, &dstinfo, copyoption);
-
-  /* Execute image transformation, if any */
-#if TRANSFORMS_SUPPORTED
-  jtransform_execute_transformation(&srcinfo, &dstinfo,
-				    src_coef_arrays,
-				    &transformoption);
-#endif
-
-  /* Finish compression and release memory */
-  jpeg_finish_compress(&dstinfo);
-  jpeg_destroy_compress(&dstinfo);
-  (void) jpeg_finish_decompress(&srcinfo);
-  jpeg_destroy_decompress(&srcinfo);
-
-  /* Close files, if we opened them */
-  if (input_file != stdin)
-    fclose(input_file);
-  if (output_file != stdout)
-    fclose(output_file);
-
-#ifdef PROGRESS_REPORT
-  end_progress_monitor((j_common_ptr) &dstinfo);
-#endif
-
-  /* All done. */
-  exit(jsrcerr.num_warnings + jdsterr.num_warnings ?EXIT_WARNING:EXIT_SUCCESS);
-  return 0;			/* suppress no-return-value warnings */
-}
diff --git a/src/libjpeg/jquant1.c b/src/libjpeg/jquant1.c
deleted file mode 100644
index aaa34a1..0000000
--- a/src/libjpeg/jquant1.c
+++ /dev/null
@@ -1,856 +0,0 @@
-/*
- * jquant1.c
- *
- * Copyright (C) 1991-1996, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains 1-pass color quantization (color mapping) routines.
- * These routines provide mapping to a fixed color map using equally spaced
- * color values.  Optional Floyd-Steinberg or ordered dithering is available.
- */
-
-#define JPEG_INTERNALS
-#include "jinclude.h"
-#include "jpeglib.h"
-
-#ifdef QUANT_1PASS_SUPPORTED
-
-
-/*
- * The main purpose of 1-pass quantization is to provide a fast, if not very
- * high quality, colormapped output capability.  A 2-pass quantizer usually
- * gives better visual quality; however, for quantized grayscale output this
- * quantizer is perfectly adequate.  Dithering is highly recommended with this
- * quantizer, though you can turn it off if you really want to.
- *
- * In 1-pass quantization the colormap must be chosen in advance of seeing the
- * image.  We use a map consisting of all combinations of Ncolors[i] color
- * values for the i'th component.  The Ncolors[] values are chosen so that
- * their product, the total number of colors, is no more than that requested.
- * (In most cases, the product will be somewhat less.)
- *
- * Since the colormap is orthogonal, the representative value for each color
- * component can be determined without considering the other components;
- * then these indexes can be combined into a colormap index by a standard
- * N-dimensional-array-subscript calculation.  Most of the arithmetic involved
- * can be precalculated and stored in the lookup table colorindex[].
- * colorindex[i][j] maps pixel value j in component i to the nearest
- * representative value (grid plane) for that component; this index is
- * multiplied by the array stride for component i, so that the
- * index of the colormap entry closest to a given pixel value is just
- *    sum( colorindex[component-number][pixel-component-value] )
- * Aside from being fast, this scheme allows for variable spacing between
- * representative values with no additional lookup cost.
- *
- * If gamma correction has been applied in color conversion, it might be wise
- * to adjust the color grid spacing so that the representative colors are
- * equidistant in linear space.  At this writing, gamma correction is not
- * implemented by jdcolor, so nothing is done here.
- */
-
-
-/* Declarations for ordered dithering.
- *
- * We use a standard 16x16 ordered dither array.  The basic concept of ordered
- * dithering is described in many references, for instance Dale Schumacher's
- * chapter II.2 of Graphics Gems II (James Arvo, ed. Academic Press, 1991).
- * In place of Schumacher's comparisons against a "threshold" value, we add a
- * "dither" value to the input pixel and then round the result to the nearest
- * output value.  The dither value is equivalent to (0.5 - threshold) times
- * the distance between output values.  For ordered dithering, we assume that
- * the output colors are equally spaced; if not, results will probably be
- * worse, since the dither may be too much or too little at a given point.
- *
- * The normal calculation would be to form pixel value + dither, range-limit
- * this to 0..MAXJSAMPLE, and then index into the colorindex table as usual.
- * We can skip the separate range-limiting step by extending the colorindex
- * table in both directions.
- */
-
-#define ODITHER_SIZE  16	/* dimension of dither matrix */
-/* NB: if ODITHER_SIZE is not a power of 2, ODITHER_MASK uses will break */
-#define ODITHER_CELLS (ODITHER_SIZE*ODITHER_SIZE)	/* # cells in matrix */
-#define ODITHER_MASK  (ODITHER_SIZE-1) /* mask for wrapping around counters */
-
-typedef int ODITHER_MATRIX[ODITHER_SIZE][ODITHER_SIZE];
-typedef int (*ODITHER_MATRIX_PTR)[ODITHER_SIZE];
-
-static const UINT8 base_dither_matrix[ODITHER_SIZE][ODITHER_SIZE] = {
-  /* Bayer's order-4 dither array.  Generated by the code given in
-   * Stephen Hawley's article "Ordered Dithering" in Graphics Gems I.
-   * The values in this array must range from 0 to ODITHER_CELLS-1.
-   */
-  {   0,192, 48,240, 12,204, 60,252,  3,195, 51,243, 15,207, 63,255 },
-  { 128, 64,176,112,140, 76,188,124,131, 67,179,115,143, 79,191,127 },
-  {  32,224, 16,208, 44,236, 28,220, 35,227, 19,211, 47,239, 31,223 },
-  { 160, 96,144, 80,172,108,156, 92,163, 99,147, 83,175,111,159, 95 },
-  {   8,200, 56,248,  4,196, 52,244, 11,203, 59,251,  7,199, 55,247 },
-  { 136, 72,184,120,132, 68,180,116,139, 75,187,123,135, 71,183,119 },
-  {  40,232, 24,216, 36,228, 20,212, 43,235, 27,219, 39,231, 23,215 },
-  { 168,104,152, 88,164,100,148, 84,171,107,155, 91,167,103,151, 87 },
-  {   2,194, 50,242, 14,206, 62,254,  1,193, 49,241, 13,205, 61,253 },
-  { 130, 66,178,114,142, 78,190,126,129, 65,177,113,141, 77,189,125 },
-  {  34,226, 18,210, 46,238, 30,222, 33,225, 17,209, 45,237, 29,221 },
-  { 162, 98,146, 82,174,110,158, 94,161, 97,145, 81,173,109,157, 93 },
-  {  10,202, 58,250,  6,198, 54,246,  9,201, 57,249,  5,197, 53,245 },
-  { 138, 74,186,122,134, 70,182,118,137, 73,185,121,133, 69,181,117 },
-  {  42,234, 26,218, 38,230, 22,214, 41,233, 25,217, 37,229, 21,213 },
-  { 170,106,154, 90,166,102,150, 86,169,105,153, 89,165,101,149, 85 }
-};
-
-
-/* Declarations for Floyd-Steinberg dithering.
- *
- * Errors are accumulated into the array fserrors[], at a resolution of
- * 1/16th of a pixel count.  The error at a given pixel is propagated
- * to its not-yet-processed neighbors using the standard F-S fractions,
- *		...	(here)	7/16
- *		3/16	5/16	1/16
- * We work left-to-right on even rows, right-to-left on odd rows.
- *
- * We can get away with a single array (holding one row's worth of errors)
- * by using it to store the current row's errors at pixel columns not yet
- * processed, but the next row's errors at columns already processed.  We
- * need only a few extra variables to hold the errors immediately around the
- * current column.  (If we are lucky, those variables are in registers, but
- * even if not, they're probably cheaper to access than array elements are.)
- *
- * The fserrors[] array is indexed [component#][position].
- * We provide (#columns + 2) entries per component; the extra entry at each
- * end saves us from special-casing the first and last pixels.
- *
- * Note: on a wide image, we might not have enough room in a PC's near data
- * segment to hold the error array; so it is allocated with alloc_large.
- */
-
-#if BITS_IN_JSAMPLE == 8
-typedef INT16 FSERROR;		/* 16 bits should be enough */
-typedef int LOCFSERROR;		/* use 'int' for calculation temps */
-#else
-typedef INT32 FSERROR;		/* may need more than 16 bits */
-typedef INT32 LOCFSERROR;	/* be sure calculation temps are big enough */
-#endif
-
-typedef FSERROR FAR *FSERRPTR;	/* pointer to error array (in FAR storage!) */
-
-
-/* Private subobject */
-
-#define MAX_Q_COMPS 4		/* max components I can handle */
-
-typedef struct {
-  struct jpeg_color_quantizer pub; /* public fields */
-
-  /* Initially allocated colormap is saved here */
-  JSAMPARRAY sv_colormap;	/* The color map as a 2-D pixel array */
-  int sv_actual;		/* number of entries in use */
-
-  JSAMPARRAY colorindex;	/* Precomputed mapping for speed */
-  /* colorindex[i][j] = index of color closest to pixel value j in component i,
-   * premultiplied as described above.  Since colormap indexes must fit into
-   * JSAMPLEs, the entries of this array will too.
-   */
-  boolean is_padded;		/* is the colorindex padded for odither? */
-
-  int Ncolors[MAX_Q_COMPS];	/* # of values alloced to each component */
-
-  /* Variables for ordered dithering */
-  int row_index;		/* cur row's vertical index in dither matrix */
-  ODITHER_MATRIX_PTR odither[MAX_Q_COMPS]; /* one dither array per component */
-
-  /* Variables for Floyd-Steinberg dithering */
-  FSERRPTR fserrors[MAX_Q_COMPS]; /* accumulated errors */
-  boolean on_odd_row;		/* flag to remember which row we are on */
-} my_cquantizer;
-
-typedef my_cquantizer * my_cquantize_ptr;
-
-
-/*
- * Policy-making subroutines for create_colormap and create_colorindex.
- * These routines determine the colormap to be used.  The rest of the module
- * only assumes that the colormap is orthogonal.
- *
- *  * select_ncolors decides how to divvy up the available colors
- *    among the components.
- *  * output_value defines the set of representative values for a component.
- *  * largest_input_value defines the mapping from input values to
- *    representative values for a component.
- * Note that the latter two routines may impose different policies for
- * different components, though this is not currently done.
- */
-
-
-LOCAL(int)
-select_ncolors (j_decompress_ptr cinfo, int Ncolors[])
-/* Determine allocation of desired colors to components, */
-/* and fill in Ncolors[] array to indicate choice. */
-/* Return value is total number of colors (product of Ncolors[] values). */
-{
-  int nc = cinfo->out_color_components; /* number of color components */
-  int max_colors = cinfo->desired_number_of_colors;
-  int total_colors, iroot, i, j;
-  boolean changed;
-  long temp;
-  static const int RGB_order[3] = { RGB_GREEN, RGB_RED, RGB_BLUE };
-
-  /* We can allocate at least the nc'th root of max_colors per component. */
-  /* Compute floor(nc'th root of max_colors). */
-  iroot = 1;
-  do {
-    iroot++;
-    temp = iroot;		/* set temp = iroot ** nc */
-    for (i = 1; i < nc; i++)
-      temp *= iroot;
-  } while (temp <= (long) max_colors); /* repeat till iroot exceeds root */
-  iroot--;			/* now iroot = floor(root) */
-
-  /* Must have at least 2 color values per component */
-  if (iroot < 2)
-    ERREXIT1(cinfo, JERR_QUANT_FEW_COLORS, (int) temp);
-
-  /* Initialize to iroot color values for each component */
-  total_colors = 1;
-  for (i = 0; i < nc; i++) {
-    Ncolors[i] = iroot;
-    total_colors *= iroot;
-  }
-  /* We may be able to increment the count for one or more components without
-   * exceeding max_colors, though we know not all can be incremented.
-   * Sometimes, the first component can be incremented more than once!
-   * (Example: for 16 colors, we start at 2*2*2, go to 3*2*2, then 4*2*2.)
-   * In RGB colorspace, try to increment G first, then R, then B.
-   */
-  do {
-    changed = FALSE;
-    for (i = 0; i < nc; i++) {
-      j = (cinfo->out_color_space == JCS_RGB ? RGB_order[i] : i);
-      /* calculate new total_colors if Ncolors[j] is incremented */
-      temp = total_colors / Ncolors[j];
-      temp *= Ncolors[j]+1;	/* done in long arith to avoid oflo */
-      if (temp > (long) max_colors)
-	break;			/* won't fit, done with this pass */
-      Ncolors[j]++;		/* OK, apply the increment */
-      total_colors = (int) temp;
-      changed = TRUE;
-    }
-  } while (changed);
-
-  return total_colors;
-}
-
-
-LOCAL(int)
-output_value (j_decompress_ptr cinfo, int ci, int j, int maxj)
-/* Return j'th output value, where j will range from 0 to maxj */
-/* The output values must fall in 0..MAXJSAMPLE in increasing order */
-{
-  /* We always provide values 0 and MAXJSAMPLE for each component;
-   * any additional values are equally spaced between these limits.
-   * (Forcing the upper and lower values to the limits ensures that
-   * dithering can't produce a color outside the selected gamut.)
-   */
-  return (int) (((INT32) j * MAXJSAMPLE + maxj/2) / maxj);
-}
-
-
-LOCAL(int)
-largest_input_value (j_decompress_ptr cinfo, int ci, int j, int maxj)
-/* Return largest input value that should map to j'th output value */
-/* Must have largest(j=0) >= 0, and largest(j=maxj) >= MAXJSAMPLE */
-{
-  /* Breakpoints are halfway between values returned by output_value */
-  return (int) (((INT32) (2*j + 1) * MAXJSAMPLE + maxj) / (2*maxj));
-}
-
-
-/*
- * Create the colormap.
- */
-
-LOCAL(void)
-create_colormap (j_decompress_ptr cinfo)
-{
-  my_cquantize_ptr cquantize = (my_cquantize_ptr) cinfo->cquantize;
-  JSAMPARRAY colormap;		/* Created colormap */
-  int total_colors;		/* Number of distinct output colors */
-  int i,j,k, nci, blksize, blkdist, ptr, val;
-
-  /* Select number of colors for each component */
-  total_colors = select_ncolors(cinfo, cquantize->Ncolors);
-
-  /* Report selected color counts */
-  if (cinfo->out_color_components == 3)
-    TRACEMS4(cinfo, 1, JTRC_QUANT_3_NCOLORS,
-	     total_colors, cquantize->Ncolors[0],
-	     cquantize->Ncolors[1], cquantize->Ncolors[2]);
-  else
-    TRACEMS1(cinfo, 1, JTRC_QUANT_NCOLORS, total_colors);
-
-  /* Allocate and fill in the colormap. */
-  /* The colors are ordered in the map in standard row-major order, */
-  /* i.e. rightmost (highest-indexed) color changes most rapidly. */
-
-  colormap = (*cinfo->mem->alloc_sarray)
-    ((j_common_ptr) cinfo, JPOOL_IMAGE,
-     (JDIMENSION) total_colors, (JDIMENSION) cinfo->out_color_components);
-
-  /* blksize is number of adjacent repeated entries for a component */
-  /* blkdist is distance between groups of identical entries for a component */
-  blkdist = total_colors;
-
-  for (i = 0; i < cinfo->out_color_components; i++) {
-    /* fill in colormap entries for i'th color component */
-    nci = cquantize->Ncolors[i]; /* # of distinct values for this color */
-    blksize = blkdist / nci;
-    for (j = 0; j < nci; j++) {
-      /* Compute j'th output value (out of nci) for component */
-      val = output_value(cinfo, i, j, nci-1);
-      /* Fill in all colormap entries that have this value of this component */
-      for (ptr = j * blksize; ptr < total_colors; ptr += blkdist) {
-	/* fill in blksize entries beginning at ptr */
-	for (k = 0; k < blksize; k++)
-	  colormap[i][ptr+k] = (JSAMPLE) val;
-      }
-    }
-    blkdist = blksize;		/* blksize of this color is blkdist of next */
-  }
-
-  /* Save the colormap in private storage,
-   * where it will survive color quantization mode changes.
-   */
-  cquantize->sv_colormap = colormap;
-  cquantize->sv_actual = total_colors;
-}
-
-
-/*
- * Create the color index table.
- */
-
-LOCAL(void)
-create_colorindex (j_decompress_ptr cinfo)
-{
-  my_cquantize_ptr cquantize = (my_cquantize_ptr) cinfo->cquantize;
-  JSAMPROW indexptr;
-  int i,j,k, nci, blksize, val, pad;
-
-  /* For ordered dither, we pad the color index tables by MAXJSAMPLE in
-   * each direction (input index values can be -MAXJSAMPLE .. 2*MAXJSAMPLE).
-   * This is not necessary in the other dithering modes.  However, we
-   * flag whether it was done in case user changes dithering mode.
-   */
-  if (cinfo->dither_mode == JDITHER_ORDERED) {
-    pad = MAXJSAMPLE*2;
-    cquantize->is_padded = TRUE;
-  } else {
-    pad = 0;
-    cquantize->is_padded = FALSE;
-  }
-
-  cquantize->colorindex = (*cinfo->mem->alloc_sarray)
-    ((j_common_ptr) cinfo, JPOOL_IMAGE,
-     (JDIMENSION) (MAXJSAMPLE+1 + pad),
-     (JDIMENSION) cinfo->out_color_components);
-
-  /* blksize is number of adjacent repeated entries for a component */
-  blksize = cquantize->sv_actual;
-
-  for (i = 0; i < cinfo->out_color_components; i++) {
-    /* fill in colorindex entries for i'th color component */
-    nci = cquantize->Ncolors[i]; /* # of distinct values for this color */
-    blksize = blksize / nci;
-
-    /* adjust colorindex pointers to provide padding at negative indexes. */
-    if (pad)
-      cquantize->colorindex[i] += MAXJSAMPLE;
-
-    /* in loop, val = index of current output value, */
-    /* and k = largest j that maps to current val */
-    indexptr = cquantize->colorindex[i];
-    val = 0;
-    k = largest_input_value(cinfo, i, 0, nci-1);
-    for (j = 0; j <= MAXJSAMPLE; j++) {
-      while (j > k)		/* advance val if past boundary */
-	k = largest_input_value(cinfo, i, ++val, nci-1);
-      /* premultiply so that no multiplication needed in main processing */
-      indexptr[j] = (JSAMPLE) (val * blksize);
-    }
-    /* Pad at both ends if necessary */
-    if (pad)
-      for (j = 1; j <= MAXJSAMPLE; j++) {
-	indexptr[-j] = indexptr[0];
-	indexptr[MAXJSAMPLE+j] = indexptr[MAXJSAMPLE];
-      }
-  }
-}
-
-
-/*
- * Create an ordered-dither array for a component having ncolors
- * distinct output values.
- */
-
-LOCAL(ODITHER_MATRIX_PTR)
-make_odither_array (j_decompress_ptr cinfo, int ncolors)
-{
-  ODITHER_MATRIX_PTR odither;
-  int j,k;
-  INT32 num,den;
-
-  odither = (ODITHER_MATRIX_PTR)
-    (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
-				SIZEOF(ODITHER_MATRIX));
-  /* The inter-value distance for this color is MAXJSAMPLE/(ncolors-1).
-   * Hence the dither value for the matrix cell with fill order f
-   * (f=0..N-1) should be (N-1-2*f)/(2*N) * MAXJSAMPLE/(ncolors-1).
-   * On 16-bit-int machine, be careful to avoid overflow.
-   */
-  den = 2 * ODITHER_CELLS * ((INT32) (ncolors - 1));
-  for (j = 0; j < ODITHER_SIZE; j++) {
-    for (k = 0; k < ODITHER_SIZE; k++) {
-      num = ((INT32) (ODITHER_CELLS-1 - 2*((int)base_dither_matrix[j][k])))
-	    * MAXJSAMPLE;
-      /* Ensure round towards zero despite C's lack of consistency
-       * about rounding negative values in integer division...
-       */
-      odither[j][k] = (int) (num<0 ? -((-num)/den) : num/den);
-    }
-  }
-  return odither;
-}
-
-
-/*
- * Create the ordered-dither tables.
- * Components having the same number of representative colors may 
- * share a dither table.
- */
-
-LOCAL(void)
-create_odither_tables (j_decompress_ptr cinfo)
-{
-  my_cquantize_ptr cquantize = (my_cquantize_ptr) cinfo->cquantize;
-  ODITHER_MATRIX_PTR odither;
-  int i, j, nci;
-
-  for (i = 0; i < cinfo->out_color_components; i++) {
-    nci = cquantize->Ncolors[i]; /* # of distinct values for this color */
-    odither = NULL;		/* search for matching prior component */
-    for (j = 0; j < i; j++) {
-      if (nci == cquantize->Ncolors[j]) {
-	odither = cquantize->odither[j];
-	break;
-      }
-    }
-    if (odither == NULL)	/* need a new table? */
-      odither = make_odither_array(cinfo, nci);
-    cquantize->odither[i] = odither;
-  }
-}
-
-
-/*
- * Map some rows of pixels to the output colormapped representation.
- */
-
-METHODDEF(void)
-color_quantize (j_decompress_ptr cinfo, JSAMPARRAY input_buf,
-		JSAMPARRAY output_buf, int num_rows)
-/* General case, no dithering */
-{
-  my_cquantize_ptr cquantize = (my_cquantize_ptr) cinfo->cquantize;
-  JSAMPARRAY colorindex = cquantize->colorindex;
-  register int pixcode, ci;
-  register JSAMPROW ptrin, ptrout;
-  int row;
-  JDIMENSION col;
-  JDIMENSION width = cinfo->output_width;
-  register int nc = cinfo->out_color_components;
-
-  for (row = 0; row < num_rows; row++) {
-    ptrin = input_buf[row];
-    ptrout = output_buf[row];
-    for (col = width; col > 0; col--) {
-      pixcode = 0;
-      for (ci = 0; ci < nc; ci++) {
-	pixcode += GETJSAMPLE(colorindex[ci][GETJSAMPLE(*ptrin++)]);
-      }
-      *ptrout++ = (JSAMPLE) pixcode;
-    }
-  }
-}
-
-
-METHODDEF(void)
-color_quantize3 (j_decompress_ptr cinfo, JSAMPARRAY input_buf,
-		 JSAMPARRAY output_buf, int num_rows)
-/* Fast path for out_color_components==3, no dithering */
-{
-  my_cquantize_ptr cquantize = (my_cquantize_ptr) cinfo->cquantize;
-  register int pixcode;
-  register JSAMPROW ptrin, ptrout;
-  JSAMPROW colorindex0 = cquantize->colorindex[0];
-  JSAMPROW colorindex1 = cquantize->colorindex[1];
-  JSAMPROW colorindex2 = cquantize->colorindex[2];
-  int row;
-  JDIMENSION col;
-  JDIMENSION width = cinfo->output_width;
-
-  for (row = 0; row < num_rows; row++) {
-    ptrin = input_buf[row];
-    ptrout = output_buf[row];
-    for (col = width; col > 0; col--) {
-      pixcode  = GETJSAMPLE(colorindex0[GETJSAMPLE(*ptrin++)]);
-      pixcode += GETJSAMPLE(colorindex1[GETJSAMPLE(*ptrin++)]);
-      pixcode += GETJSAMPLE(colorindex2[GETJSAMPLE(*ptrin++)]);
-      *ptrout++ = (JSAMPLE) pixcode;
-    }
-  }
-}
-
-
-METHODDEF(void)
-quantize_ord_dither (j_decompress_ptr cinfo, JSAMPARRAY input_buf,
-		     JSAMPARRAY output_buf, int num_rows)
-/* General case, with ordered dithering */
-{
-  my_cquantize_ptr cquantize = (my_cquantize_ptr) cinfo->cquantize;
-  register JSAMPROW input_ptr;
-  register JSAMPROW output_ptr;
-  JSAMPROW colorindex_ci;
-  int * dither;			/* points to active row of dither matrix */
-  int row_index, col_index;	/* current indexes into dither matrix */
-  int nc = cinfo->out_color_components;
-  int ci;
-  int row;
-  JDIMENSION col;
-  JDIMENSION width = cinfo->output_width;
-
-  for (row = 0; row < num_rows; row++) {
-    /* Initialize output values to 0 so can process components separately */
-    jzero_far((void FAR *) output_buf[row],
-	      (size_t) (width * SIZEOF(JSAMPLE)));
-    row_index = cquantize->row_index;
-    for (ci = 0; ci < nc; ci++) {
-      input_ptr = input_buf[row] + ci;
-      output_ptr = output_buf[row];
-      colorindex_ci = cquantize->colorindex[ci];
-      dither = cquantize->odither[ci][row_index];
-      col_index = 0;
-
-      for (col = width; col > 0; col--) {
-	/* Form pixel value + dither, range-limit to 0..MAXJSAMPLE,
-	 * select output value, accumulate into output code for this pixel.
-	 * Range-limiting need not be done explicitly, as we have extended
-	 * the colorindex table to produce the right answers for out-of-range
-	 * inputs.  The maximum dither is +- MAXJSAMPLE; this sets the
-	 * required amount of padding.
-	 */
-	*output_ptr += colorindex_ci[GETJSAMPLE(*input_ptr)+dither[col_index]];
-	input_ptr += nc;
-	output_ptr++;
-	col_index = (col_index + 1) & ODITHER_MASK;
-      }
-    }
-    /* Advance row index for next row */
-    row_index = (row_index + 1) & ODITHER_MASK;
-    cquantize->row_index = row_index;
-  }
-}
-
-
-METHODDEF(void)
-quantize3_ord_dither (j_decompress_ptr cinfo, JSAMPARRAY input_buf,
-		      JSAMPARRAY output_buf, int num_rows)
-/* Fast path for out_color_components==3, with ordered dithering */
-{
-  my_cquantize_ptr cquantize = (my_cquantize_ptr) cinfo->cquantize;
-  register int pixcode;
-  register JSAMPROW input_ptr;
-  register JSAMPROW output_ptr;
-  JSAMPROW colorindex0 = cquantize->colorindex[0];
-  JSAMPROW colorindex1 = cquantize->colorindex[1];
-  JSAMPROW colorindex2 = cquantize->colorindex[2];
-  int * dither0;		/* points to active row of dither matrix */
-  int * dither1;
-  int * dither2;
-  int row_index, col_index;	/* current indexes into dither matrix */
-  int row;
-  JDIMENSION col;
-  JDIMENSION width = cinfo->output_width;
-
-  for (row = 0; row < num_rows; row++) {
-    row_index = cquantize->row_index;
-    input_ptr = input_buf[row];
-    output_ptr = output_buf[row];
-    dither0 = cquantize->odither[0][row_index];
-    dither1 = cquantize->odither[1][row_index];
-    dither2 = cquantize->odither[2][row_index];
-    col_index = 0;
-
-    for (col = width; col > 0; col--) {
-      pixcode  = GETJSAMPLE(colorindex0[GETJSAMPLE(*input_ptr++) +
-					dither0[col_index]]);
-      pixcode += GETJSAMPLE(colorindex1[GETJSAMPLE(*input_ptr++) +
-					dither1[col_index]]);
-      pixcode += GETJSAMPLE(colorindex2[GETJSAMPLE(*input_ptr++) +
-					dither2[col_index]]);
-      *output_ptr++ = (JSAMPLE) pixcode;
-      col_index = (col_index + 1) & ODITHER_MASK;
-    }
-    row_index = (row_index + 1) & ODITHER_MASK;
-    cquantize->row_index = row_index;
-  }
-}
-
-
-METHODDEF(void)
-quantize_fs_dither (j_decompress_ptr cinfo, JSAMPARRAY input_buf,
-		    JSAMPARRAY output_buf, int num_rows)
-/* General case, with Floyd-Steinberg dithering */
-{
-  my_cquantize_ptr cquantize = (my_cquantize_ptr) cinfo->cquantize;
-  register LOCFSERROR cur;	/* current error or pixel value */
-  LOCFSERROR belowerr;		/* error for pixel below cur */
-  LOCFSERROR bpreverr;		/* error for below/prev col */
-  LOCFSERROR bnexterr;		/* error for below/next col */
-  LOCFSERROR delta;
-  register FSERRPTR errorptr;	/* => fserrors[] at column before current */
-  register JSAMPROW input_ptr;
-  register JSAMPROW output_ptr;
-  JSAMPROW colorindex_ci;
-  JSAMPROW colormap_ci;
-  int pixcode;
-  int nc = cinfo->out_color_components;
-  int dir;			/* 1 for left-to-right, -1 for right-to-left */
-  int dirnc;			/* dir * nc */
-  int ci;
-  int row;
-  JDIMENSION col;
-  JDIMENSION width = cinfo->output_width;
-  JSAMPLE *range_limit = cinfo->sample_range_limit;
-  SHIFT_TEMPS
-
-  for (row = 0; row < num_rows; row++) {
-    /* Initialize output values to 0 so can process components separately */
-    jzero_far((void FAR *) output_buf[row],
-	      (size_t) (width * SIZEOF(JSAMPLE)));
-    for (ci = 0; ci < nc; ci++) {
-      input_ptr = input_buf[row] + ci;
-      output_ptr = output_buf[row];
-      if (cquantize->on_odd_row) {
-	/* work right to left in this row */
-	input_ptr += (width-1) * nc; /* so point to rightmost pixel */
-	output_ptr += width-1;
-	dir = -1;
-	dirnc = -nc;
-	errorptr = cquantize->fserrors[ci] + (width+1); /* => entry after last column */
-      } else {
-	/* work left to right in this row */
-	dir = 1;
-	dirnc = nc;
-	errorptr = cquantize->fserrors[ci]; /* => entry before first column */
-      }
-      colorindex_ci = cquantize->colorindex[ci];
-      colormap_ci = cquantize->sv_colormap[ci];
-      /* Preset error values: no error propagated to first pixel from left */
-      cur = 0;
-      /* and no error propagated to row below yet */
-      belowerr = bpreverr = 0;
-
-      for (col = width; col > 0; col--) {
-	/* cur holds the error propagated from the previous pixel on the
-	 * current line.  Add the error propagated from the previous line
-	 * to form the complete error correction term for this pixel, and
-	 * round the error term (which is expressed * 16) to an integer.
-	 * RIGHT_SHIFT rounds towards minus infinity, so adding 8 is correct
-	 * for either sign of the error value.
-	 * Note: errorptr points to *previous* column's array entry.
-	 */
-	cur = RIGHT_SHIFT(cur + errorptr[dir] + 8, 4);
-	/* Form pixel value + error, and range-limit to 0..MAXJSAMPLE.
-	 * The maximum error is +- MAXJSAMPLE; this sets the required size
-	 * of the range_limit array.
-	 */
-	cur += GETJSAMPLE(*input_ptr);
-	cur = GETJSAMPLE(range_limit[cur]);
-	/* Select output value, accumulate into output code for this pixel */
-	pixcode = GETJSAMPLE(colorindex_ci[cur]);
-	*output_ptr += (JSAMPLE) pixcode;
-	/* Compute actual representation error at this pixel */
-	/* Note: we can do this even though we don't have the final */
-	/* pixel code, because the colormap is orthogonal. */
-	cur -= GETJSAMPLE(colormap_ci[pixcode]);
-	/* Compute error fractions to be propagated to adjacent pixels.
-	 * Add these into the running sums, and simultaneously shift the
-	 * next-line error sums left by 1 column.
-	 */
-	bnexterr = cur;
-	delta = cur * 2;
-	cur += delta;		/* form error * 3 */
-	errorptr[0] = (FSERROR) (bpreverr + cur);
-	cur += delta;		/* form error * 5 */
-	bpreverr = belowerr + cur;
-	belowerr = bnexterr;
-	cur += delta;		/* form error * 7 */
-	/* At this point cur contains the 7/16 error value to be propagated
-	 * to the next pixel on the current line, and all the errors for the
-	 * next line have been shifted over. We are therefore ready to move on.
-	 */
-	input_ptr += dirnc;	/* advance input ptr to next column */
-	output_ptr += dir;	/* advance output ptr to next column */
-	errorptr += dir;	/* advance errorptr to current column */
-      }
-      /* Post-loop cleanup: we must unload the final error value into the
-       * final fserrors[] entry.  Note we need not unload belowerr because
-       * it is for the dummy column before or after the actual array.
-       */
-      errorptr[0] = (FSERROR) bpreverr; /* unload prev err into array */
-    }
-    cquantize->on_odd_row = (cquantize->on_odd_row ? FALSE : TRUE);
-  }
-}
-
-
-/*
- * Allocate workspace for Floyd-Steinberg errors.
- */
-
-LOCAL(void)
-alloc_fs_workspace (j_decompress_ptr cinfo)
-{
-  my_cquantize_ptr cquantize = (my_cquantize_ptr) cinfo->cquantize;
-  size_t arraysize;
-  int i;
-
-  arraysize = (size_t) ((cinfo->output_width + 2) * SIZEOF(FSERROR));
-  for (i = 0; i < cinfo->out_color_components; i++) {
-    cquantize->fserrors[i] = (FSERRPTR)
-      (*cinfo->mem->alloc_large)((j_common_ptr) cinfo, JPOOL_IMAGE, arraysize);
-  }
-}
-
-
-/*
- * Initialize for one-pass color quantization.
- */
-
-METHODDEF(void)
-start_pass_1_quant (j_decompress_ptr cinfo, boolean is_pre_scan)
-{
-  my_cquantize_ptr cquantize = (my_cquantize_ptr) cinfo->cquantize;
-  size_t arraysize;
-  int i;
-
-  /* Install my colormap. */
-  cinfo->colormap = cquantize->sv_colormap;
-  cinfo->actual_number_of_colors = cquantize->sv_actual;
-
-  /* Initialize for desired dithering mode. */
-  switch (cinfo->dither_mode) {
-  case JDITHER_NONE:
-    if (cinfo->out_color_components == 3)
-      cquantize->pub.color_quantize = color_quantize3;
-    else
-      cquantize->pub.color_quantize = color_quantize;
-    break;
-  case JDITHER_ORDERED:
-    if (cinfo->out_color_components == 3)
-      cquantize->pub.color_quantize = quantize3_ord_dither;
-    else
-      cquantize->pub.color_quantize = quantize_ord_dither;
-    cquantize->row_index = 0;	/* initialize state for ordered dither */
-    /* If user changed to ordered dither from another mode,
-     * we must recreate the color index table with padding.
-     * This will cost extra space, but probably isn't very likely.
-     */
-    if (! cquantize->is_padded)
-      create_colorindex(cinfo);
-    /* Create ordered-dither tables if we didn't already. */
-    if (cquantize->odither[0] == NULL)
-      create_odither_tables(cinfo);
-    break;
-  case JDITHER_FS:
-    cquantize->pub.color_quantize = quantize_fs_dither;
-    cquantize->on_odd_row = FALSE; /* initialize state for F-S dither */
-    /* Allocate Floyd-Steinberg workspace if didn't already. */
-    if (cquantize->fserrors[0] == NULL)
-      alloc_fs_workspace(cinfo);
-    /* Initialize the propagated errors to zero. */
-    arraysize = (size_t) ((cinfo->output_width + 2) * SIZEOF(FSERROR));
-    for (i = 0; i < cinfo->out_color_components; i++)
-      jzero_far((void FAR *) cquantize->fserrors[i], arraysize);
-    break;
-  default:
-    ERREXIT(cinfo, JERR_NOT_COMPILED);
-    break;
-  }
-}
-
-
-/*
- * Finish up at the end of the pass.
- */
-
-METHODDEF(void)
-finish_pass_1_quant (j_decompress_ptr cinfo)
-{
-  /* no work in 1-pass case */
-}
-
-
-/*
- * Switch to a new external colormap between output passes.
- * Shouldn't get to this module!
- */
-
-METHODDEF(void)
-new_color_map_1_quant (j_decompress_ptr cinfo)
-{
-  ERREXIT(cinfo, JERR_MODE_CHANGE);
-}
-
-
-/*
- * Module initialization routine for 1-pass color quantization.
- */
-
-GLOBAL(void)
-jinit_1pass_quantizer (j_decompress_ptr cinfo)
-{
-  my_cquantize_ptr cquantize;
-
-  cquantize = (my_cquantize_ptr)
-    (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
-				SIZEOF(my_cquantizer));
-  cinfo->cquantize = (struct jpeg_color_quantizer *) cquantize;
-  cquantize->pub.start_pass = start_pass_1_quant;
-  cquantize->pub.finish_pass = finish_pass_1_quant;
-  cquantize->pub.new_color_map = new_color_map_1_quant;
-  cquantize->fserrors[0] = NULL; /* Flag FS workspace not allocated */
-  cquantize->odither[0] = NULL;	/* Also flag odither arrays not allocated */
-
-  /* Make sure my internal arrays won't overflow */
-  if (cinfo->out_color_components > MAX_Q_COMPS)
-    ERREXIT1(cinfo, JERR_QUANT_COMPONENTS, MAX_Q_COMPS);
-  /* Make sure colormap indexes can be represented by JSAMPLEs */
-  if (cinfo->desired_number_of_colors > (MAXJSAMPLE+1))
-    ERREXIT1(cinfo, JERR_QUANT_MANY_COLORS, MAXJSAMPLE+1);
-
-  /* Create the colormap and color index table. */
-  create_colormap(cinfo);
-  create_colorindex(cinfo);
-
-  /* Allocate Floyd-Steinberg workspace now if requested.
-   * We do this now since it is FAR storage and may affect the memory
-   * manager's space calculations.  If the user changes to FS dither
-   * mode in a later pass, we will allocate the space then, and will
-   * possibly overrun the max_memory_to_use setting.
-   */
-  if (cinfo->dither_mode == JDITHER_FS)
-    alloc_fs_workspace(cinfo);
-}
-
-#endif /* QUANT_1PASS_SUPPORTED */
diff --git a/src/libjpeg/jquant2.c b/src/libjpeg/jquant2.c
deleted file mode 100644
index 87a3920..0000000
--- a/src/libjpeg/jquant2.c
+++ /dev/null
@@ -1,1310 +0,0 @@
-/*
- * jquant2.c
- *
- * Copyright (C) 1991-1996, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains 2-pass color quantization (color mapping) routines.
- * These routines provide selection of a custom color map for an image,
- * followed by mapping of the image to that color map, with optional
- * Floyd-Steinberg dithering.
- * It is also possible to use just the second pass to map to an arbitrary
- * externally-given color map.
- *
- * Note: ordered dithering is not supported, since there isn't any fast
- * way to compute intercolor distances; it's unclear that ordered dither's
- * fundamental assumptions even hold with an irregularly spaced color map.
- */
-
-#define JPEG_INTERNALS
-#include "jinclude.h"
-#include "jpeglib.h"
-
-#ifdef QUANT_2PASS_SUPPORTED
-
-
-/*
- * This module implements the well-known Heckbert paradigm for color
- * quantization.  Most of the ideas used here can be traced back to
- * Heckbert's seminal paper
- *   Heckbert, Paul.  "Color Image Quantization for Frame Buffer Display",
- *   Proc. SIGGRAPH '82, Computer Graphics v.16 #3 (July 1982), pp 297-304.
- *
- * In the first pass over the image, we accumulate a histogram showing the
- * usage count of each possible color.  To keep the histogram to a reasonable
- * size, we reduce the precision of the input; typical practice is to retain
- * 5 or 6 bits per color, so that 8 or 4 different input values are counted
- * in the same histogram cell.
- *
- * Next, the color-selection step begins with a box representing the whole
- * color space, and repeatedly splits the "largest" remaining box until we
- * have as many boxes as desired colors.  Then the mean color in each
- * remaining box becomes one of the possible output colors.
- * 
- * The second pass over the image maps each input pixel to the closest output
- * color (optionally after applying a Floyd-Steinberg dithering correction).
- * This mapping is logically trivial, but making it go fast enough requires
- * considerable care.
- *
- * Heckbert-style quantizers vary a good deal in their policies for choosing
- * the "largest" box and deciding where to cut it.  The particular policies
- * used here have proved out well in experimental comparisons, but better ones
- * may yet be found.
- *
- * In earlier versions of the IJG code, this module quantized in YCbCr color
- * space, processing the raw upsampled data without a color conversion step.
- * This allowed the color conversion math to be done only once per colormap
- * entry, not once per pixel.  However, that optimization precluded other
- * useful optimizations (such as merging color conversion with upsampling)
- * and it also interfered with desired capabilities such as quantizing to an
- * externally-supplied colormap.  We have therefore abandoned that approach.
- * The present code works in the post-conversion color space, typically RGB.
- *
- * To improve the visual quality of the results, we actually work in scaled
- * RGB space, giving G distances more weight than R, and R in turn more than
- * B.  To do everything in integer math, we must use integer scale factors.
- * The 2/3/1 scale factors used here correspond loosely to the relative
- * weights of the colors in the NTSC grayscale equation.
- * If you want to use this code to quantize a non-RGB color space, you'll
- * probably need to change these scale factors.
- */
-
-#define R_SCALE 2		/* scale R distances by this much */
-#define G_SCALE 3		/* scale G distances by this much */
-#define B_SCALE 1		/* and B by this much */
-
-/* Relabel R/G/B as components 0/1/2, respecting the RGB ordering defined
- * in jmorecfg.h.  As the code stands, it will do the right thing for R,G,B
- * and B,G,R orders.  If you define some other weird order in jmorecfg.h,
- * you'll get compile errors until you extend this logic.  In that case
- * you'll probably want to tweak the histogram sizes too.
- */
-
-#if RGB_RED == 0
-#define C0_SCALE R_SCALE
-#endif
-#if RGB_BLUE == 0
-#define C0_SCALE B_SCALE
-#endif
-#if RGB_GREEN == 1
-#define C1_SCALE G_SCALE
-#endif
-#if RGB_RED == 2
-#define C2_SCALE R_SCALE
-#endif
-#if RGB_BLUE == 2
-#define C2_SCALE B_SCALE
-#endif
-
-
-/*
- * First we have the histogram data structure and routines for creating it.
- *
- * The number of bits of precision can be adjusted by changing these symbols.
- * We recommend keeping 6 bits for G and 5 each for R and B.
- * If you have plenty of memory and cycles, 6 bits all around gives marginally
- * better results; if you are short of memory, 5 bits all around will save
- * some space but degrade the results.
- * To maintain a fully accurate histogram, we'd need to allocate a "long"
- * (preferably unsigned long) for each cell.  In practice this is overkill;
- * we can get by with 16 bits per cell.  Few of the cell counts will overflow,
- * and clamping those that do overflow to the maximum value will give close-
- * enough results.  This reduces the recommended histogram size from 256Kb
- * to 128Kb, which is a useful savings on PC-class machines.
- * (In the second pass the histogram space is re-used for pixel mapping data;
- * in that capacity, each cell must be able to store zero to the number of
- * desired colors.  16 bits/cell is plenty for that too.)
- * Since the JPEG code is intended to run in small memory model on 80x86
- * machines, we can't just allocate the histogram in one chunk.  Instead
- * of a true 3-D array, we use a row of pointers to 2-D arrays.  Each
- * pointer corresponds to a C0 value (typically 2^5 = 32 pointers) and
- * each 2-D array has 2^6*2^5 = 2048 or 2^6*2^6 = 4096 entries.  Note that
- * on 80x86 machines, the pointer row is in near memory but the actual
- * arrays are in far memory (same arrangement as we use for image arrays).
- */
-
-#define MAXNUMCOLORS  (MAXJSAMPLE+1) /* maximum size of colormap */
-
-/* These will do the right thing for either R,G,B or B,G,R color order,
- * but you may not like the results for other color orders.
- */
-#define HIST_C0_BITS  5		/* bits of precision in R/B histogram */
-#define HIST_C1_BITS  6		/* bits of precision in G histogram */
-#define HIST_C2_BITS  5		/* bits of precision in B/R histogram */
-
-/* Number of elements along histogram axes. */
-#define HIST_C0_ELEMS  (1<<HIST_C0_BITS)
-#define HIST_C1_ELEMS  (1<<HIST_C1_BITS)
-#define HIST_C2_ELEMS  (1<<HIST_C2_BITS)
-
-/* These are the amounts to shift an input value to get a histogram index. */
-#define C0_SHIFT  (BITS_IN_JSAMPLE-HIST_C0_BITS)
-#define C1_SHIFT  (BITS_IN_JSAMPLE-HIST_C1_BITS)
-#define C2_SHIFT  (BITS_IN_JSAMPLE-HIST_C2_BITS)
-
-
-typedef UINT16 histcell;	/* histogram cell; prefer an unsigned type */
-
-typedef histcell FAR * histptr;	/* for pointers to histogram cells */
-
-typedef histcell hist1d[HIST_C2_ELEMS]; /* typedefs for the array */
-typedef hist1d FAR * hist2d;	/* type for the 2nd-level pointers */
-typedef hist2d * hist3d;	/* type for top-level pointer */
-
-
-/* Declarations for Floyd-Steinberg dithering.
- *
- * Errors are accumulated into the array fserrors[], at a resolution of
- * 1/16th of a pixel count.  The error at a given pixel is propagated
- * to its not-yet-processed neighbors using the standard F-S fractions,
- *		...	(here)	7/16
- *		3/16	5/16	1/16
- * We work left-to-right on even rows, right-to-left on odd rows.
- *
- * We can get away with a single array (holding one row's worth of errors)
- * by using it to store the current row's errors at pixel columns not yet
- * processed, but the next row's errors at columns already processed.  We
- * need only a few extra variables to hold the errors immediately around the
- * current column.  (If we are lucky, those variables are in registers, but
- * even if not, they're probably cheaper to access than array elements are.)
- *
- * The fserrors[] array has (#columns + 2) entries; the extra entry at
- * each end saves us from special-casing the first and last pixels.
- * Each entry is three values long, one value for each color component.
- *
- * Note: on a wide image, we might not have enough room in a PC's near data
- * segment to hold the error array; so it is allocated with alloc_large.
- */
-
-#if BITS_IN_JSAMPLE == 8
-typedef INT16 FSERROR;		/* 16 bits should be enough */
-typedef int LOCFSERROR;		/* use 'int' for calculation temps */
-#else
-typedef INT32 FSERROR;		/* may need more than 16 bits */
-typedef INT32 LOCFSERROR;	/* be sure calculation temps are big enough */
-#endif
-
-typedef FSERROR FAR *FSERRPTR;	/* pointer to error array (in FAR storage!) */
-
-
-/* Private subobject */
-
-typedef struct {
-  struct jpeg_color_quantizer pub; /* public fields */
-
-  /* Space for the eventually created colormap is stashed here */
-  JSAMPARRAY sv_colormap;	/* colormap allocated at init time */
-  int desired;			/* desired # of colors = size of colormap */
-
-  /* Variables for accumulating image statistics */
-  hist3d histogram;		/* pointer to the histogram */
-
-  boolean needs_zeroed;		/* TRUE if next pass must zero histogram */
-
-  /* Variables for Floyd-Steinberg dithering */
-  FSERRPTR fserrors;		/* accumulated errors */
-  boolean on_odd_row;		/* flag to remember which row we are on */
-  int * error_limiter;		/* table for clamping the applied error */
-} my_cquantizer;
-
-typedef my_cquantizer * my_cquantize_ptr;
-
-
-/*
- * Prescan some rows of pixels.
- * In this module the prescan simply updates the histogram, which has been
- * initialized to zeroes by start_pass.
- * An output_buf parameter is required by the method signature, but no data
- * is actually output (in fact the buffer controller is probably passing a
- * NULL pointer).
- */
-
-METHODDEF(void)
-prescan_quantize (j_decompress_ptr cinfo, JSAMPARRAY input_buf,
-		  JSAMPARRAY output_buf, int num_rows)
-{
-  my_cquantize_ptr cquantize = (my_cquantize_ptr) cinfo->cquantize;
-  register JSAMPROW ptr;
-  register histptr histp;
-  register hist3d histogram = cquantize->histogram;
-  int row;
-  JDIMENSION col;
-  JDIMENSION width = cinfo->output_width;
-
-  for (row = 0; row < num_rows; row++) {
-    ptr = input_buf[row];
-    for (col = width; col > 0; col--) {
-      /* get pixel value and index into the histogram */
-      histp = & histogram[GETJSAMPLE(ptr[0]) >> C0_SHIFT]
-			 [GETJSAMPLE(ptr[1]) >> C1_SHIFT]
-			 [GETJSAMPLE(ptr[2]) >> C2_SHIFT];
-      /* increment, check for overflow and undo increment if so. */
-      if (++(*histp) <= 0)
-	(*histp)--;
-      ptr += 3;
-    }
-  }
-}
-
-
-/*
- * Next we have the really interesting routines: selection of a colormap
- * given the completed histogram.
- * These routines work with a list of "boxes", each representing a rectangular
- * subset of the input color space (to histogram precision).
- */
-
-typedef struct {
-  /* The bounds of the box (inclusive); expressed as histogram indexes */
-  int c0min, c0max;
-  int c1min, c1max;
-  int c2min, c2max;
-  /* The volume (actually 2-norm) of the box */
-  INT32 volume;
-  /* The number of nonzero histogram cells within this box */
-  long colorcount;
-} box;
-
-typedef box * boxptr;
-
-
-LOCAL(boxptr)
-find_biggest_color_pop (boxptr boxlist, int numboxes)
-/* Find the splittable box with the largest color population */
-/* Returns NULL if no splittable boxes remain */
-{
-  register boxptr boxp;
-  register int i;
-  register long maxc = 0;
-  boxptr which = NULL;
-  
-  for (i = 0, boxp = boxlist; i < numboxes; i++, boxp++) {
-    if (boxp->colorcount > maxc && boxp->volume > 0) {
-      which = boxp;
-      maxc = boxp->colorcount;
-    }
-  }
-  return which;
-}
-
-
-LOCAL(boxptr)
-find_biggest_volume (boxptr boxlist, int numboxes)
-/* Find the splittable box with the largest (scaled) volume */
-/* Returns NULL if no splittable boxes remain */
-{
-  register boxptr boxp;
-  register int i;
-  register INT32 maxv = 0;
-  boxptr which = NULL;
-  
-  for (i = 0, boxp = boxlist; i < numboxes; i++, boxp++) {
-    if (boxp->volume > maxv) {
-      which = boxp;
-      maxv = boxp->volume;
-    }
-  }
-  return which;
-}
-
-
-LOCAL(void)
-update_box (j_decompress_ptr cinfo, boxptr boxp)
-/* Shrink the min/max bounds of a box to enclose only nonzero elements, */
-/* and recompute its volume and population */
-{
-  my_cquantize_ptr cquantize = (my_cquantize_ptr) cinfo->cquantize;
-  hist3d histogram = cquantize->histogram;
-  histptr histp;
-  int c0,c1,c2;
-  int c0min,c0max,c1min,c1max,c2min,c2max;
-  INT32 dist0,dist1,dist2;
-  long ccount;
-  
-  c0min = boxp->c0min;  c0max = boxp->c0max;
-  c1min = boxp->c1min;  c1max = boxp->c1max;
-  c2min = boxp->c2min;  c2max = boxp->c2max;
-  
-  if (c0max > c0min)
-    for (c0 = c0min; c0 <= c0max; c0++)
-      for (c1 = c1min; c1 <= c1max; c1++) {
-	histp = & histogram[c0][c1][c2min];
-	for (c2 = c2min; c2 <= c2max; c2++)
-	  if (*histp++ != 0) {
-	    boxp->c0min = c0min = c0;
-	    goto have_c0min;
-	  }
-      }
- have_c0min:
-  if (c0max > c0min)
-    for (c0 = c0max; c0 >= c0min; c0--)
-      for (c1 = c1min; c1 <= c1max; c1++) {
-	histp = & histogram[c0][c1][c2min];
-	for (c2 = c2min; c2 <= c2max; c2++)
-	  if (*histp++ != 0) {
-	    boxp->c0max = c0max = c0;
-	    goto have_c0max;
-	  }
-      }
- have_c0max:
-  if (c1max > c1min)
-    for (c1 = c1min; c1 <= c1max; c1++)
-      for (c0 = c0min; c0 <= c0max; c0++) {
-	histp = & histogram[c0][c1][c2min];
-	for (c2 = c2min; c2 <= c2max; c2++)
-	  if (*histp++ != 0) {
-	    boxp->c1min = c1min = c1;
-	    goto have_c1min;
-	  }
-      }
- have_c1min:
-  if (c1max > c1min)
-    for (c1 = c1max; c1 >= c1min; c1--)
-      for (c0 = c0min; c0 <= c0max; c0++) {
-	histp = & histogram[c0][c1][c2min];
-	for (c2 = c2min; c2 <= c2max; c2++)
-	  if (*histp++ != 0) {
-	    boxp->c1max = c1max = c1;
-	    goto have_c1max;
-	  }
-      }
- have_c1max:
-  if (c2max > c2min)
-    for (c2 = c2min; c2 <= c2max; c2++)
-      for (c0 = c0min; c0 <= c0max; c0++) {
-	histp = & histogram[c0][c1min][c2];
-	for (c1 = c1min; c1 <= c1max; c1++, histp += HIST_C2_ELEMS)
-	  if (*histp != 0) {
-	    boxp->c2min = c2min = c2;
-	    goto have_c2min;
-	  }
-      }
- have_c2min:
-  if (c2max > c2min)
-    for (c2 = c2max; c2 >= c2min; c2--)
-      for (c0 = c0min; c0 <= c0max; c0++) {
-	histp = & histogram[c0][c1min][c2];
-	for (c1 = c1min; c1 <= c1max; c1++, histp += HIST_C2_ELEMS)
-	  if (*histp != 0) {
-	    boxp->c2max = c2max = c2;
-	    goto have_c2max;
-	  }
-      }
- have_c2max:
-
-  /* Update box volume.
-   * We use 2-norm rather than real volume here; this biases the method
-   * against making long narrow boxes, and it has the side benefit that
-   * a box is splittable iff norm > 0.
-   * Since the differences are expressed in histogram-cell units,
-   * we have to shift back to JSAMPLE units to get consistent distances;
-   * after which, we scale according to the selected distance scale factors.
-   */
-  dist0 = ((c0max - c0min) << C0_SHIFT) * C0_SCALE;
-  dist1 = ((c1max - c1min) << C1_SHIFT) * C1_SCALE;
-  dist2 = ((c2max - c2min) << C2_SHIFT) * C2_SCALE;
-  boxp->volume = dist0*dist0 + dist1*dist1 + dist2*dist2;
-  
-  /* Now scan remaining volume of box and compute population */
-  ccount = 0;
-  for (c0 = c0min; c0 <= c0max; c0++)
-    for (c1 = c1min; c1 <= c1max; c1++) {
-      histp = & histogram[c0][c1][c2min];
-      for (c2 = c2min; c2 <= c2max; c2++, histp++)
-	if (*histp != 0) {
-	  ccount++;
-	}
-    }
-  boxp->colorcount = ccount;
-}
-
-
-LOCAL(int)
-median_cut (j_decompress_ptr cinfo, boxptr boxlist, int numboxes,
-	    int desired_colors)
-/* Repeatedly select and split the largest box until we have enough boxes */
-{
-  int n,lb;
-  int c0,c1,c2,cmax;
-  register boxptr b1,b2;
-
-  while (numboxes < desired_colors) {
-    /* Select box to split.
-     * Current algorithm: by population for first half, then by volume.
-     */
-    if (numboxes*2 <= desired_colors) {
-      b1 = find_biggest_color_pop(boxlist, numboxes);
-    } else {
-      b1 = find_biggest_volume(boxlist, numboxes);
-    }
-    if (b1 == NULL)		/* no splittable boxes left! */
-      break;
-    b2 = &boxlist[numboxes];	/* where new box will go */
-    /* Copy the color bounds to the new box. */
-    b2->c0max = b1->c0max; b2->c1max = b1->c1max; b2->c2max = b1->c2max;
-    b2->c0min = b1->c0min; b2->c1min = b1->c1min; b2->c2min = b1->c2min;
-    /* Choose which axis to split the box on.
-     * Current algorithm: longest scaled axis.
-     * See notes in update_box about scaling distances.
-     */
-    c0 = ((b1->c0max - b1->c0min) << C0_SHIFT) * C0_SCALE;
-    c1 = ((b1->c1max - b1->c1min) << C1_SHIFT) * C1_SCALE;
-    c2 = ((b1->c2max - b1->c2min) << C2_SHIFT) * C2_SCALE;
-    /* We want to break any ties in favor of green, then red, blue last.
-     * This code does the right thing for R,G,B or B,G,R color orders only.
-     */
-#if RGB_RED == 0
-    cmax = c1; n = 1;
-    if (c0 > cmax) { cmax = c0; n = 0; }
-    if (c2 > cmax) { n = 2; }
-#else
-    cmax = c1; n = 1;
-    if (c2 > cmax) { cmax = c2; n = 2; }
-    if (c0 > cmax) { n = 0; }
-#endif
-    /* Choose split point along selected axis, and update box bounds.
-     * Current algorithm: split at halfway point.
-     * (Since the box has been shrunk to minimum volume,
-     * any split will produce two nonempty subboxes.)
-     * Note that lb value is max for lower box, so must be < old max.
-     */
-    switch (n) {
-    case 0:
-      lb = (b1->c0max + b1->c0min) / 2;
-      b1->c0max = lb;
-      b2->c0min = lb+1;
-      break;
-    case 1:
-      lb = (b1->c1max + b1->c1min) / 2;
-      b1->c1max = lb;
-      b2->c1min = lb+1;
-      break;
-    case 2:
-      lb = (b1->c2max + b1->c2min) / 2;
-      b1->c2max = lb;
-      b2->c2min = lb+1;
-      break;
-    }
-    /* Update stats for boxes */
-    update_box(cinfo, b1);
-    update_box(cinfo, b2);
-    numboxes++;
-  }
-  return numboxes;
-}
-
-
-LOCAL(void)
-compute_color (j_decompress_ptr cinfo, boxptr boxp, int icolor)
-/* Compute representative color for a box, put it in colormap[icolor] */
-{
-  /* Current algorithm: mean weighted by pixels (not colors) */
-  /* Note it is important to get the rounding correct! */
-  my_cquantize_ptr cquantize = (my_cquantize_ptr) cinfo->cquantize;
-  hist3d histogram = cquantize->histogram;
-  histptr histp;
-  int c0,c1,c2;
-  int c0min,c0max,c1min,c1max,c2min,c2max;
-  long count;
-  long total = 0;
-  long c0total = 0;
-  long c1total = 0;
-  long c2total = 0;
-  
-  c0min = boxp->c0min;  c0max = boxp->c0max;
-  c1min = boxp->c1min;  c1max = boxp->c1max;
-  c2min = boxp->c2min;  c2max = boxp->c2max;
-  
-  for (c0 = c0min; c0 <= c0max; c0++)
-    for (c1 = c1min; c1 <= c1max; c1++) {
-      histp = & histogram[c0][c1][c2min];
-      for (c2 = c2min; c2 <= c2max; c2++) {
-	if ((count = *histp++) != 0) {
-	  total += count;
-	  c0total += ((c0 << C0_SHIFT) + ((1<<C0_SHIFT)>>1)) * count;
-	  c1total += ((c1 << C1_SHIFT) + ((1<<C1_SHIFT)>>1)) * count;
-	  c2total += ((c2 << C2_SHIFT) + ((1<<C2_SHIFT)>>1)) * count;
-	}
-      }
-    }
-  
-  cinfo->colormap[0][icolor] = (JSAMPLE) ((c0total + (total>>1)) / total);
-  cinfo->colormap[1][icolor] = (JSAMPLE) ((c1total + (total>>1)) / total);
-  cinfo->colormap[2][icolor] = (JSAMPLE) ((c2total + (total>>1)) / total);
-}
-
-
-LOCAL(void)
-select_colors (j_decompress_ptr cinfo, int desired_colors)
-/* Master routine for color selection */
-{
-  boxptr boxlist;
-  int numboxes;
-  int i;
-
-  /* Allocate workspace for box list */
-  boxlist = (boxptr) (*cinfo->mem->alloc_small)
-    ((j_common_ptr) cinfo, JPOOL_IMAGE, desired_colors * SIZEOF(box));
-  /* Initialize one box containing whole space */
-  numboxes = 1;
-  boxlist[0].c0min = 0;
-  boxlist[0].c0max = MAXJSAMPLE >> C0_SHIFT;
-  boxlist[0].c1min = 0;
-  boxlist[0].c1max = MAXJSAMPLE >> C1_SHIFT;
-  boxlist[0].c2min = 0;
-  boxlist[0].c2max = MAXJSAMPLE >> C2_SHIFT;
-  /* Shrink it to actually-used volume and set its statistics */
-  update_box(cinfo, & boxlist[0]);
-  /* Perform median-cut to produce final box list */
-  numboxes = median_cut(cinfo, boxlist, numboxes, desired_colors);
-  /* Compute the representative color for each box, fill colormap */
-  for (i = 0; i < numboxes; i++)
-    compute_color(cinfo, & boxlist[i], i);
-  cinfo->actual_number_of_colors = numboxes;
-  TRACEMS1(cinfo, 1, JTRC_QUANT_SELECTED, numboxes);
-}
-
-
-/*
- * These routines are concerned with the time-critical task of mapping input
- * colors to the nearest color in the selected colormap.
- *
- * We re-use the histogram space as an "inverse color map", essentially a
- * cache for the results of nearest-color searches.  All colors within a
- * histogram cell will be mapped to the same colormap entry, namely the one
- * closest to the cell's center.  This may not be quite the closest entry to
- * the actual input color, but it's almost as good.  A zero in the cache
- * indicates we haven't found the nearest color for that cell yet; the array
- * is cleared to zeroes before starting the mapping pass.  When we find the
- * nearest color for a cell, its colormap index plus one is recorded in the
- * cache for future use.  The pass2 scanning routines call fill_inverse_cmap
- * when they need to use an unfilled entry in the cache.
- *
- * Our method of efficiently finding nearest colors is based on the "locally
- * sorted search" idea described by Heckbert and on the incremental distance
- * calculation described by Spencer W. Thomas in chapter III.1 of Graphics
- * Gems II (James Arvo, ed.  Academic Press, 1991).  Thomas points out that
- * the distances from a given colormap entry to each cell of the histogram can
- * be computed quickly using an incremental method: the differences between
- * distances to adjacent cells themselves differ by a constant.  This allows a
- * fairly fast implementation of the "brute force" approach of computing the
- * distance from every colormap entry to every histogram cell.  Unfortunately,
- * it needs a work array to hold the best-distance-so-far for each histogram
- * cell (because the inner loop has to be over cells, not colormap entries).
- * The work array elements have to be INT32s, so the work array would need
- * 256Kb at our recommended precision.  This is not feasible in DOS machines.
- *
- * To get around these problems, we apply Thomas' method to compute the
- * nearest colors for only the cells within a small subbox of the histogram.
- * The work array need be only as big as the subbox, so the memory usage
- * problem is solved.  Furthermore, we need not fill subboxes that are never
- * referenced in pass2; many images use only part of the color gamut, so a
- * fair amount of work is saved.  An additional advantage of this
- * approach is that we can apply Heckbert's locality criterion to quickly
- * eliminate colormap entries that are far away from the subbox; typically
- * three-fourths of the colormap entries are rejected by Heckbert's criterion,
- * and we need not compute their distances to individual cells in the subbox.
- * The speed of this approach is heavily influenced by the subbox size: too
- * small means too much overhead, too big loses because Heckbert's criterion
- * can't eliminate as many colormap entries.  Empirically the best subbox
- * size seems to be about 1/512th of the histogram (1/8th in each direction).
- *
- * Thomas' article also describes a refined method which is asymptotically
- * faster than the brute-force method, but it is also far more complex and
- * cannot efficiently be applied to small subboxes.  It is therefore not
- * useful for programs intended to be portable to DOS machines.  On machines
- * with plenty of memory, filling the whole histogram in one shot with Thomas'
- * refined method might be faster than the present code --- but then again,
- * it might not be any faster, and it's certainly more complicated.
- */
-
-
-/* log2(histogram cells in update box) for each axis; this can be adjusted */
-#define BOX_C0_LOG  (HIST_C0_BITS-3)
-#define BOX_C1_LOG  (HIST_C1_BITS-3)
-#define BOX_C2_LOG  (HIST_C2_BITS-3)
-
-#define BOX_C0_ELEMS  (1<<BOX_C0_LOG) /* # of hist cells in update box */
-#define BOX_C1_ELEMS  (1<<BOX_C1_LOG)
-#define BOX_C2_ELEMS  (1<<BOX_C2_LOG)
-
-#define BOX_C0_SHIFT  (C0_SHIFT + BOX_C0_LOG)
-#define BOX_C1_SHIFT  (C1_SHIFT + BOX_C1_LOG)
-#define BOX_C2_SHIFT  (C2_SHIFT + BOX_C2_LOG)
-
-
-/*
- * The next three routines implement inverse colormap filling.  They could
- * all be folded into one big routine, but splitting them up this way saves
- * some stack space (the mindist[] and bestdist[] arrays need not coexist)
- * and may allow some compilers to produce better code by registerizing more
- * inner-loop variables.
- */
-
-LOCAL(int)
-find_nearby_colors (j_decompress_ptr cinfo, int minc0, int minc1, int minc2,
-		    JSAMPLE colorlist[])
-/* Locate the colormap entries close enough to an update box to be candidates
- * for the nearest entry to some cell(s) in the update box.  The update box
- * is specified by the center coordinates of its first cell.  The number of
- * candidate colormap entries is returned, and their colormap indexes are
- * placed in colorlist[].
- * This routine uses Heckbert's "locally sorted search" criterion to select
- * the colors that need further consideration.
- */
-{
-  int numcolors = cinfo->actual_number_of_colors;
-  int maxc0, maxc1, maxc2;
-  int centerc0, centerc1, centerc2;
-  int i, x, ncolors;
-  INT32 minmaxdist, min_dist, max_dist, tdist;
-  INT32 mindist[MAXNUMCOLORS];	/* min distance to colormap entry i */
-
-  /* Compute true coordinates of update box's upper corner and center.
-   * Actually we compute the coordinates of the center of the upper-corner
-   * histogram cell, which are the upper bounds of the volume we care about.
-   * Note that since ">>" rounds down, the "center" values may be closer to
-   * min than to max; hence comparisons to them must be "<=", not "<".
-   */
-  maxc0 = minc0 + ((1 << BOX_C0_SHIFT) - (1 << C0_SHIFT));
-  centerc0 = (minc0 + maxc0) >> 1;
-  maxc1 = minc1 + ((1 << BOX_C1_SHIFT) - (1 << C1_SHIFT));
-  centerc1 = (minc1 + maxc1) >> 1;
-  maxc2 = minc2 + ((1 << BOX_C2_SHIFT) - (1 << C2_SHIFT));
-  centerc2 = (minc2 + maxc2) >> 1;
-
-  /* For each color in colormap, find:
-   *  1. its minimum squared-distance to any point in the update box
-   *     (zero if color is within update box);
-   *  2. its maximum squared-distance to any point in the update box.
-   * Both of these can be found by considering only the corners of the box.
-   * We save the minimum distance for each color in mindist[];
-   * only the smallest maximum distance is of interest.
-   */
-  minmaxdist = 0x7FFFFFFFL;
-
-  for (i = 0; i < numcolors; i++) {
-    /* We compute the squared-c0-distance term, then add in the other two. */
-    x = GETJSAMPLE(cinfo->colormap[0][i]);
-    if (x < minc0) {
-      tdist = (x - minc0) * C0_SCALE;
-      min_dist = tdist*tdist;
-      tdist = (x - maxc0) * C0_SCALE;
-      max_dist = tdist*tdist;
-    } else if (x > maxc0) {
-      tdist = (x - maxc0) * C0_SCALE;
-      min_dist = tdist*tdist;
-      tdist = (x - minc0) * C0_SCALE;
-      max_dist = tdist*tdist;
-    } else {
-      /* within cell range so no contribution to min_dist */
-      min_dist = 0;
-      if (x <= centerc0) {
-	tdist = (x - maxc0) * C0_SCALE;
-	max_dist = tdist*tdist;
-      } else {
-	tdist = (x - minc0) * C0_SCALE;
-	max_dist = tdist*tdist;
-      }
-    }
-
-    x = GETJSAMPLE(cinfo->colormap[1][i]);
-    if (x < minc1) {
-      tdist = (x - minc1) * C1_SCALE;
-      min_dist += tdist*tdist;
-      tdist = (x - maxc1) * C1_SCALE;
-      max_dist += tdist*tdist;
-    } else if (x > maxc1) {
-      tdist = (x - maxc1) * C1_SCALE;
-      min_dist += tdist*tdist;
-      tdist = (x - minc1) * C1_SCALE;
-      max_dist += tdist*tdist;
-    } else {
-      /* within cell range so no contribution to min_dist */
-      if (x <= centerc1) {
-	tdist = (x - maxc1) * C1_SCALE;
-	max_dist += tdist*tdist;
-      } else {
-	tdist = (x - minc1) * C1_SCALE;
-	max_dist += tdist*tdist;
-      }
-    }
-
-    x = GETJSAMPLE(cinfo->colormap[2][i]);
-    if (x < minc2) {
-      tdist = (x - minc2) * C2_SCALE;
-      min_dist += tdist*tdist;
-      tdist = (x - maxc2) * C2_SCALE;
-      max_dist += tdist*tdist;
-    } else if (x > maxc2) {
-      tdist = (x - maxc2) * C2_SCALE;
-      min_dist += tdist*tdist;
-      tdist = (x - minc2) * C2_SCALE;
-      max_dist += tdist*tdist;
-    } else {
-      /* within cell range so no contribution to min_dist */
-      if (x <= centerc2) {
-	tdist = (x - maxc2) * C2_SCALE;
-	max_dist += tdist*tdist;
-      } else {
-	tdist = (x - minc2) * C2_SCALE;
-	max_dist += tdist*tdist;
-      }
-    }
-
-    mindist[i] = min_dist;	/* save away the results */
-    if (max_dist < minmaxdist)
-      minmaxdist = max_dist;
-  }
-
-  /* Now we know that no cell in the update box is more than minmaxdist
-   * away from some colormap entry.  Therefore, only colors that are
-   * within minmaxdist of some part of the box need be considered.
-   */
-  ncolors = 0;
-  for (i = 0; i < numcolors; i++) {
-    if (mindist[i] <= minmaxdist)
-      colorlist[ncolors++] = (JSAMPLE) i;
-  }
-  return ncolors;
-}
-
-
-LOCAL(void)
-find_best_colors (j_decompress_ptr cinfo, int minc0, int minc1, int minc2,
-		  int numcolors, JSAMPLE colorlist[], JSAMPLE bestcolor[])
-/* Find the closest colormap entry for each cell in the update box,
- * given the list of candidate colors prepared by find_nearby_colors.
- * Return the indexes of the closest entries in the bestcolor[] array.
- * This routine uses Thomas' incremental distance calculation method to
- * find the distance from a colormap entry to successive cells in the box.
- */
-{
-  int ic0, ic1, ic2;
-  int i, icolor;
-  register INT32 * bptr;	/* pointer into bestdist[] array */
-  JSAMPLE * cptr;		/* pointer into bestcolor[] array */
-  INT32 dist0, dist1;		/* initial distance values */
-  register INT32 dist2;		/* current distance in inner loop */
-  INT32 xx0, xx1;		/* distance increments */
-  register INT32 xx2;
-  INT32 inc0, inc1, inc2;	/* initial values for increments */
-  /* This array holds the distance to the nearest-so-far color for each cell */
-  INT32 bestdist[BOX_C0_ELEMS * BOX_C1_ELEMS * BOX_C2_ELEMS];
-
-  /* Initialize best-distance for each cell of the update box */
-  bptr = bestdist;
-  for (i = BOX_C0_ELEMS*BOX_C1_ELEMS*BOX_C2_ELEMS-1; i >= 0; i--)
-    *bptr++ = 0x7FFFFFFFL;
-  
-  /* For each color selected by find_nearby_colors,
-   * compute its distance to the center of each cell in the box.
-   * If that's less than best-so-far, update best distance and color number.
-   */
-  
-  /* Nominal steps between cell centers ("x" in Thomas article) */
-#define STEP_C0  ((1 << C0_SHIFT) * C0_SCALE)
-#define STEP_C1  ((1 << C1_SHIFT) * C1_SCALE)
-#define STEP_C2  ((1 << C2_SHIFT) * C2_SCALE)
-  
-  for (i = 0; i < numcolors; i++) {
-    icolor = GETJSAMPLE(colorlist[i]);
-    /* Compute (square of) distance from minc0/c1/c2 to this color */
-    inc0 = (minc0 - GETJSAMPLE(cinfo->colormap[0][icolor])) * C0_SCALE;
-    dist0 = inc0*inc0;
-    inc1 = (minc1 - GETJSAMPLE(cinfo->colormap[1][icolor])) * C1_SCALE;
-    dist0 += inc1*inc1;
-    inc2 = (minc2 - GETJSAMPLE(cinfo->colormap[2][icolor])) * C2_SCALE;
-    dist0 += inc2*inc2;
-    /* Form the initial difference increments */
-    inc0 = inc0 * (2 * STEP_C0) + STEP_C0 * STEP_C0;
-    inc1 = inc1 * (2 * STEP_C1) + STEP_C1 * STEP_C1;
-    inc2 = inc2 * (2 * STEP_C2) + STEP_C2 * STEP_C2;
-    /* Now loop over all cells in box, updating distance per Thomas method */
-    bptr = bestdist;
-    cptr = bestcolor;
-    xx0 = inc0;
-    for (ic0 = BOX_C0_ELEMS-1; ic0 >= 0; ic0--) {
-      dist1 = dist0;
-      xx1 = inc1;
-      for (ic1 = BOX_C1_ELEMS-1; ic1 >= 0; ic1--) {
-	dist2 = dist1;
-	xx2 = inc2;
-	for (ic2 = BOX_C2_ELEMS-1; ic2 >= 0; ic2--) {
-	  if (dist2 < *bptr) {
-	    *bptr = dist2;
-	    *cptr = (JSAMPLE) icolor;
-	  }
-	  dist2 += xx2;
-	  xx2 += 2 * STEP_C2 * STEP_C2;
-	  bptr++;
-	  cptr++;
-	}
-	dist1 += xx1;
-	xx1 += 2 * STEP_C1 * STEP_C1;
-      }
-      dist0 += xx0;
-      xx0 += 2 * STEP_C0 * STEP_C0;
-    }
-  }
-}
-
-
-LOCAL(void)
-fill_inverse_cmap (j_decompress_ptr cinfo, int c0, int c1, int c2)
-/* Fill the inverse-colormap entries in the update box that contains */
-/* histogram cell c0/c1/c2.  (Only that one cell MUST be filled, but */
-/* we can fill as many others as we wish.) */
-{
-  my_cquantize_ptr cquantize = (my_cquantize_ptr) cinfo->cquantize;
-  hist3d histogram = cquantize->histogram;
-  int minc0, minc1, minc2;	/* lower left corner of update box */
-  int ic0, ic1, ic2;
-  register JSAMPLE * cptr;	/* pointer into bestcolor[] array */
-  register histptr cachep;	/* pointer into main cache array */
-  /* This array lists the candidate colormap indexes. */
-  JSAMPLE colorlist[MAXNUMCOLORS];
-  int numcolors;		/* number of candidate colors */
-  /* This array holds the actually closest colormap index for each cell. */
-  JSAMPLE bestcolor[BOX_C0_ELEMS * BOX_C1_ELEMS * BOX_C2_ELEMS];
-
-  /* Convert cell coordinates to update box ID */
-  c0 >>= BOX_C0_LOG;
-  c1 >>= BOX_C1_LOG;
-  c2 >>= BOX_C2_LOG;
-
-  /* Compute true coordinates of update box's origin corner.
-   * Actually we compute the coordinates of the center of the corner
-   * histogram cell, which are the lower bounds of the volume we care about.
-   */
-  minc0 = (c0 << BOX_C0_SHIFT) + ((1 << C0_SHIFT) >> 1);
-  minc1 = (c1 << BOX_C1_SHIFT) + ((1 << C1_SHIFT) >> 1);
-  minc2 = (c2 << BOX_C2_SHIFT) + ((1 << C2_SHIFT) >> 1);
-  
-  /* Determine which colormap entries are close enough to be candidates
-   * for the nearest entry to some cell in the update box.
-   */
-  numcolors = find_nearby_colors(cinfo, minc0, minc1, minc2, colorlist);
-
-  /* Determine the actually nearest colors. */
-  find_best_colors(cinfo, minc0, minc1, minc2, numcolors, colorlist,
-		   bestcolor);
-
-  /* Save the best color numbers (plus 1) in the main cache array */
-  c0 <<= BOX_C0_LOG;		/* convert ID back to base cell indexes */
-  c1 <<= BOX_C1_LOG;
-  c2 <<= BOX_C2_LOG;
-  cptr = bestcolor;
-  for (ic0 = 0; ic0 < BOX_C0_ELEMS; ic0++) {
-    for (ic1 = 0; ic1 < BOX_C1_ELEMS; ic1++) {
-      cachep = & histogram[c0+ic0][c1+ic1][c2];
-      for (ic2 = 0; ic2 < BOX_C2_ELEMS; ic2++) {
-	*cachep++ = (histcell) (GETJSAMPLE(*cptr++) + 1);
-      }
-    }
-  }
-}
-
-
-/*
- * Map some rows of pixels to the output colormapped representation.
- */
-
-METHODDEF(void)
-pass2_no_dither (j_decompress_ptr cinfo,
-		 JSAMPARRAY input_buf, JSAMPARRAY output_buf, int num_rows)
-/* This version performs no dithering */
-{
-  my_cquantize_ptr cquantize = (my_cquantize_ptr) cinfo->cquantize;
-  hist3d histogram = cquantize->histogram;
-  register JSAMPROW inptr, outptr;
-  register histptr cachep;
-  register int c0, c1, c2;
-  int row;
-  JDIMENSION col;
-  JDIMENSION width = cinfo->output_width;
-
-  for (row = 0; row < num_rows; row++) {
-    inptr = input_buf[row];
-    outptr = output_buf[row];
-    for (col = width; col > 0; col--) {
-      /* get pixel value and index into the cache */
-      c0 = GETJSAMPLE(*inptr++) >> C0_SHIFT;
-      c1 = GETJSAMPLE(*inptr++) >> C1_SHIFT;
-      c2 = GETJSAMPLE(*inptr++) >> C2_SHIFT;
-      cachep = & histogram[c0][c1][c2];
-      /* If we have not seen this color before, find nearest colormap entry */
-      /* and update the cache */
-      if (*cachep == 0)
-	fill_inverse_cmap(cinfo, c0,c1,c2);
-      /* Now emit the colormap index for this cell */
-      *outptr++ = (JSAMPLE) (*cachep - 1);
-    }
-  }
-}
-
-
-METHODDEF(void)
-pass2_fs_dither (j_decompress_ptr cinfo,
-		 JSAMPARRAY input_buf, JSAMPARRAY output_buf, int num_rows)
-/* This version performs Floyd-Steinberg dithering */
-{
-  my_cquantize_ptr cquantize = (my_cquantize_ptr) cinfo->cquantize;
-  hist3d histogram = cquantize->histogram;
-  register LOCFSERROR cur0, cur1, cur2;	/* current error or pixel value */
-  LOCFSERROR belowerr0, belowerr1, belowerr2; /* error for pixel below cur */
-  LOCFSERROR bpreverr0, bpreverr1, bpreverr2; /* error for below/prev col */
-  register FSERRPTR errorptr;	/* => fserrors[] at column before current */
-  JSAMPROW inptr;		/* => current input pixel */
-  JSAMPROW outptr;		/* => current output pixel */
-  histptr cachep;
-  int dir;			/* +1 or -1 depending on direction */
-  int dir3;			/* 3*dir, for advancing inptr & errorptr */
-  int row;
-  JDIMENSION col;
-  JDIMENSION width = cinfo->output_width;
-  JSAMPLE *range_limit = cinfo->sample_range_limit;
-  int *error_limit = cquantize->error_limiter;
-  JSAMPROW colormap0 = cinfo->colormap[0];
-  JSAMPROW colormap1 = cinfo->colormap[1];
-  JSAMPROW colormap2 = cinfo->colormap[2];
-  SHIFT_TEMPS
-
-  for (row = 0; row < num_rows; row++) {
-    inptr = input_buf[row];
-    outptr = output_buf[row];
-    if (cquantize->on_odd_row) {
-      /* work right to left in this row */
-      inptr += (width-1) * 3;	/* so point to rightmost pixel */
-      outptr += width-1;
-      dir = -1;
-      dir3 = -3;
-      errorptr = cquantize->fserrors + (width+1)*3; /* => entry after last column */
-      cquantize->on_odd_row = FALSE; /* flip for next time */
-    } else {
-      /* work left to right in this row */
-      dir = 1;
-      dir3 = 3;
-      errorptr = cquantize->fserrors; /* => entry before first real column */
-      cquantize->on_odd_row = TRUE; /* flip for next time */
-    }
-    /* Preset error values: no error propagated to first pixel from left */
-    cur0 = cur1 = cur2 = 0;
-    /* and no error propagated to row below yet */
-    belowerr0 = belowerr1 = belowerr2 = 0;
-    bpreverr0 = bpreverr1 = bpreverr2 = 0;
-
-    for (col = width; col > 0; col--) {
-      /* curN holds the error propagated from the previous pixel on the
-       * current line.  Add the error propagated from the previous line
-       * to form the complete error correction term for this pixel, and
-       * round the error term (which is expressed * 16) to an integer.
-       * RIGHT_SHIFT rounds towards minus infinity, so adding 8 is correct
-       * for either sign of the error value.
-       * Note: errorptr points to *previous* column's array entry.
-       */
-      cur0 = RIGHT_SHIFT(cur0 + errorptr[dir3+0] + 8, 4);
-      cur1 = RIGHT_SHIFT(cur1 + errorptr[dir3+1] + 8, 4);
-      cur2 = RIGHT_SHIFT(cur2 + errorptr[dir3+2] + 8, 4);
-      /* Limit the error using transfer function set by init_error_limit.
-       * See comments with init_error_limit for rationale.
-       */
-      cur0 = error_limit[cur0];
-      cur1 = error_limit[cur1];
-      cur2 = error_limit[cur2];
-      /* Form pixel value + error, and range-limit to 0..MAXJSAMPLE.
-       * The maximum error is +- MAXJSAMPLE (or less with error limiting);
-       * this sets the required size of the range_limit array.
-       */
-      cur0 += GETJSAMPLE(inptr[0]);
-      cur1 += GETJSAMPLE(inptr[1]);
-      cur2 += GETJSAMPLE(inptr[2]);
-      cur0 = GETJSAMPLE(range_limit[cur0]);
-      cur1 = GETJSAMPLE(range_limit[cur1]);
-      cur2 = GETJSAMPLE(range_limit[cur2]);
-      /* Index into the cache with adjusted pixel value */
-      cachep = & histogram[cur0>>C0_SHIFT][cur1>>C1_SHIFT][cur2>>C2_SHIFT];
-      /* If we have not seen this color before, find nearest colormap */
-      /* entry and update the cache */
-      if (*cachep == 0)
-	fill_inverse_cmap(cinfo, cur0>>C0_SHIFT,cur1>>C1_SHIFT,cur2>>C2_SHIFT);
-      /* Now emit the colormap index for this cell */
-      { register int pixcode = *cachep - 1;
-	*outptr = (JSAMPLE) pixcode;
-	/* Compute representation error for this pixel */
-	cur0 -= GETJSAMPLE(colormap0[pixcode]);
-	cur1 -= GETJSAMPLE(colormap1[pixcode]);
-	cur2 -= GETJSAMPLE(colormap2[pixcode]);
-      }
-      /* Compute error fractions to be propagated to adjacent pixels.
-       * Add these into the running sums, and simultaneously shift the
-       * next-line error sums left by 1 column.
-       */
-      { register LOCFSERROR bnexterr, delta;
-
-	bnexterr = cur0;	/* Process component 0 */
-	delta = cur0 * 2;
-	cur0 += delta;		/* form error * 3 */
-	errorptr[0] = (FSERROR) (bpreverr0 + cur0);
-	cur0 += delta;		/* form error * 5 */
-	bpreverr0 = belowerr0 + cur0;
-	belowerr0 = bnexterr;
-	cur0 += delta;		/* form error * 7 */
-	bnexterr = cur1;	/* Process component 1 */
-	delta = cur1 * 2;
-	cur1 += delta;		/* form error * 3 */
-	errorptr[1] = (FSERROR) (bpreverr1 + cur1);
-	cur1 += delta;		/* form error * 5 */
-	bpreverr1 = belowerr1 + cur1;
-	belowerr1 = bnexterr;
-	cur1 += delta;		/* form error * 7 */
-	bnexterr = cur2;	/* Process component 2 */
-	delta = cur2 * 2;
-	cur2 += delta;		/* form error * 3 */
-	errorptr[2] = (FSERROR) (bpreverr2 + cur2);
-	cur2 += delta;		/* form error * 5 */
-	bpreverr2 = belowerr2 + cur2;
-	belowerr2 = bnexterr;
-	cur2 += delta;		/* form error * 7 */
-      }
-      /* At this point curN contains the 7/16 error value to be propagated
-       * to the next pixel on the current line, and all the errors for the
-       * next line have been shifted over.  We are therefore ready to move on.
-       */
-      inptr += dir3;		/* Advance pixel pointers to next column */
-      outptr += dir;
-      errorptr += dir3;		/* advance errorptr to current column */
-    }
-    /* Post-loop cleanup: we must unload the final error values into the
-     * final fserrors[] entry.  Note we need not unload belowerrN because
-     * it is for the dummy column before or after the actual array.
-     */
-    errorptr[0] = (FSERROR) bpreverr0; /* unload prev errs into array */
-    errorptr[1] = (FSERROR) bpreverr1;
-    errorptr[2] = (FSERROR) bpreverr2;
-  }
-}
-
-
-/*
- * Initialize the error-limiting transfer function (lookup table).
- * The raw F-S error computation can potentially compute error values of up to
- * +- MAXJSAMPLE.  But we want the maximum correction applied to a pixel to be
- * much less, otherwise obviously wrong pixels will be created.  (Typical
- * effects include weird fringes at color-area boundaries, isolated bright
- * pixels in a dark area, etc.)  The standard advice for avoiding this problem
- * is to ensure that the "corners" of the color cube are allocated as output
- * colors; then repeated errors in the same direction cannot cause cascading
- * error buildup.  However, that only prevents the error from getting
- * completely out of hand; Aaron Giles reports that error limiting improves
- * the results even with corner colors allocated.
- * A simple clamping of the error values to about +- MAXJSAMPLE/8 works pretty
- * well, but the smoother transfer function used below is even better.  Thanks
- * to Aaron Giles for this idea.
- */
-
-LOCAL(void)
-init_error_limit (j_decompress_ptr cinfo)
-/* Allocate and fill in the error_limiter table */
-{
-  my_cquantize_ptr cquantize = (my_cquantize_ptr) cinfo->cquantize;
-  int * table;
-  int in, out;
-
-  table = (int *) (*cinfo->mem->alloc_small)
-    ((j_common_ptr) cinfo, JPOOL_IMAGE, (MAXJSAMPLE*2+1) * SIZEOF(int));
-  table += MAXJSAMPLE;		/* so can index -MAXJSAMPLE .. +MAXJSAMPLE */
-  cquantize->error_limiter = table;
-
-#define STEPSIZE ((MAXJSAMPLE+1)/16)
-  /* Map errors 1:1 up to +- MAXJSAMPLE/16 */
-  out = 0;
-  for (in = 0; in < STEPSIZE; in++, out++) {
-    table[in] = out; table[-in] = -out;
-  }
-  /* Map errors 1:2 up to +- 3*MAXJSAMPLE/16 */
-  for (; in < STEPSIZE*3; in++, out += (in&1) ? 0 : 1) {
-    table[in] = out; table[-in] = -out;
-  }
-  /* Clamp the rest to final out value (which is (MAXJSAMPLE+1)/8) */
-  for (; in <= MAXJSAMPLE; in++) {
-    table[in] = out; table[-in] = -out;
-  }
-#undef STEPSIZE
-}
-
-
-/*
- * Finish up at the end of each pass.
- */
-
-METHODDEF(void)
-finish_pass1 (j_decompress_ptr cinfo)
-{
-  my_cquantize_ptr cquantize = (my_cquantize_ptr) cinfo->cquantize;
-
-  /* Select the representative colors and fill in cinfo->colormap */
-  cinfo->colormap = cquantize->sv_colormap;
-  select_colors(cinfo, cquantize->desired);
-  /* Force next pass to zero the color index table */
-  cquantize->needs_zeroed = TRUE;
-}
-
-
-METHODDEF(void)
-finish_pass2 (j_decompress_ptr cinfo)
-{
-  /* no work */
-}
-
-
-/*
- * Initialize for each processing pass.
- */
-
-METHODDEF(void)
-start_pass_2_quant (j_decompress_ptr cinfo, boolean is_pre_scan)
-{
-  my_cquantize_ptr cquantize = (my_cquantize_ptr) cinfo->cquantize;
-  hist3d histogram = cquantize->histogram;
-  int i;
-
-  /* Only F-S dithering or no dithering is supported. */
-  /* If user asks for ordered dither, give him F-S. */
-  if (cinfo->dither_mode != JDITHER_NONE)
-    cinfo->dither_mode = JDITHER_FS;
-
-  if (is_pre_scan) {
-    /* Set up method pointers */
-    cquantize->pub.color_quantize = prescan_quantize;
-    cquantize->pub.finish_pass = finish_pass1;
-    cquantize->needs_zeroed = TRUE; /* Always zero histogram */
-  } else {
-    /* Set up method pointers */
-    if (cinfo->dither_mode == JDITHER_FS)
-      cquantize->pub.color_quantize = pass2_fs_dither;
-    else
-      cquantize->pub.color_quantize = pass2_no_dither;
-    cquantize->pub.finish_pass = finish_pass2;
-
-    /* Make sure color count is acceptable */
-    i = cinfo->actual_number_of_colors;
-    if (i < 1)
-      ERREXIT1(cinfo, JERR_QUANT_FEW_COLORS, 1);
-    if (i > MAXNUMCOLORS)
-      ERREXIT1(cinfo, JERR_QUANT_MANY_COLORS, MAXNUMCOLORS);
-
-    if (cinfo->dither_mode == JDITHER_FS) {
-      size_t arraysize = (size_t) ((cinfo->output_width + 2) *
-				   (3 * SIZEOF(FSERROR)));
-      /* Allocate Floyd-Steinberg workspace if we didn't already. */
-      if (cquantize->fserrors == NULL)
-	cquantize->fserrors = (FSERRPTR) (*cinfo->mem->alloc_large)
-	  ((j_common_ptr) cinfo, JPOOL_IMAGE, arraysize);
-      /* Initialize the propagated errors to zero. */
-      jzero_far((void FAR *) cquantize->fserrors, arraysize);
-      /* Make the error-limit table if we didn't already. */
-      if (cquantize->error_limiter == NULL)
-	init_error_limit(cinfo);
-      cquantize->on_odd_row = FALSE;
-    }
-
-  }
-  /* Zero the histogram or inverse color map, if necessary */
-  if (cquantize->needs_zeroed) {
-    for (i = 0; i < HIST_C0_ELEMS; i++) {
-      jzero_far((void FAR *) histogram[i],
-		HIST_C1_ELEMS*HIST_C2_ELEMS * SIZEOF(histcell));
-    }
-    cquantize->needs_zeroed = FALSE;
-  }
-}
-
-
-/*
- * Switch to a new external colormap between output passes.
- */
-
-METHODDEF(void)
-new_color_map_2_quant (j_decompress_ptr cinfo)
-{
-  my_cquantize_ptr cquantize = (my_cquantize_ptr) cinfo->cquantize;
-
-  /* Reset the inverse color map */
-  cquantize->needs_zeroed = TRUE;
-}
-
-
-/*
- * Module initialization routine for 2-pass color quantization.
- */
-
-GLOBAL(void)
-jinit_2pass_quantizer (j_decompress_ptr cinfo)
-{
-  my_cquantize_ptr cquantize;
-  int i;
-
-  cquantize = (my_cquantize_ptr)
-    (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
-				SIZEOF(my_cquantizer));
-  cinfo->cquantize = (struct jpeg_color_quantizer *) cquantize;
-  cquantize->pub.start_pass = start_pass_2_quant;
-  cquantize->pub.new_color_map = new_color_map_2_quant;
-  cquantize->fserrors = NULL;	/* flag optional arrays not allocated */
-  cquantize->error_limiter = NULL;
-
-  /* Make sure jdmaster didn't give me a case I can't handle */
-  if (cinfo->out_color_components != 3)
-    ERREXIT(cinfo, JERR_NOTIMPL);
-
-  /* Allocate the histogram/inverse colormap storage */
-  cquantize->histogram = (hist3d) (*cinfo->mem->alloc_small)
-    ((j_common_ptr) cinfo, JPOOL_IMAGE, HIST_C0_ELEMS * SIZEOF(hist2d));
-  for (i = 0; i < HIST_C0_ELEMS; i++) {
-    cquantize->histogram[i] = (hist2d) (*cinfo->mem->alloc_large)
-      ((j_common_ptr) cinfo, JPOOL_IMAGE,
-       HIST_C1_ELEMS*HIST_C2_ELEMS * SIZEOF(histcell));
-  }
-  cquantize->needs_zeroed = TRUE; /* histogram is garbage now */
-
-  /* Allocate storage for the completed colormap, if required.
-   * We do this now since it is FAR storage and may affect
-   * the memory manager's space calculations.
-   */
-  if (cinfo->enable_2pass_quant) {
-    /* Make sure color count is acceptable */
-    int desired = cinfo->desired_number_of_colors;
-    /* Lower bound on # of colors ... somewhat arbitrary as long as > 0 */
-    if (desired < 8)
-      ERREXIT1(cinfo, JERR_QUANT_FEW_COLORS, 8);
-    /* Make sure colormap indexes can be represented by JSAMPLEs */
-    if (desired > MAXNUMCOLORS)
-      ERREXIT1(cinfo, JERR_QUANT_MANY_COLORS, MAXNUMCOLORS);
-    cquantize->sv_colormap = (*cinfo->mem->alloc_sarray)
-      ((j_common_ptr) cinfo,JPOOL_IMAGE, (JDIMENSION) desired, (JDIMENSION) 3);
-    cquantize->desired = desired;
-  } else
-    cquantize->sv_colormap = NULL;
-
-  /* Only F-S dithering or no dithering is supported. */
-  /* If user asks for ordered dither, give him F-S. */
-  if (cinfo->dither_mode != JDITHER_NONE)
-    cinfo->dither_mode = JDITHER_FS;
-
-  /* Allocate Floyd-Steinberg workspace if necessary.
-   * This isn't really needed until pass 2, but again it is FAR storage.
-   * Although we will cope with a later change in dither_mode,
-   * we do not promise to honor max_memory_to_use if dither_mode changes.
-   */
-  if (cinfo->dither_mode == JDITHER_FS) {
-    cquantize->fserrors = (FSERRPTR) (*cinfo->mem->alloc_large)
-      ((j_common_ptr) cinfo, JPOOL_IMAGE,
-       (size_t) ((cinfo->output_width + 2) * (3 * SIZEOF(FSERROR))));
-    /* Might as well create the error-limiting table too. */
-    init_error_limit(cinfo);
-  }
-}
-
-#endif /* QUANT_2PASS_SUPPORTED */
diff --git a/src/libjpeg/jutils.c b/src/libjpeg/jutils.c
deleted file mode 100644
index 286cda2..0000000
--- a/src/libjpeg/jutils.c
+++ /dev/null
@@ -1,179 +0,0 @@
-/*
- * jutils.c
- *
- * Copyright (C) 1991-1996, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains tables and miscellaneous utility routines needed
- * for both compression and decompression.
- * Note we prefix all global names with "j" to minimize conflicts with
- * a surrounding application.
- */
-
-#define JPEG_INTERNALS
-#include "jinclude.h"
-#include "jpeglib.h"
-
-
-/*
- * jpeg_zigzag_order[i] is the zigzag-order position of the i'th element
- * of a DCT block read in natural order (left to right, top to bottom).
- */
-
-#if 0				/* This table is not actually needed in v6a */
-
-const int jpeg_zigzag_order[DCTSIZE2] = {
-   0,  1,  5,  6, 14, 15, 27, 28,
-   2,  4,  7, 13, 16, 26, 29, 42,
-   3,  8, 12, 17, 25, 30, 41, 43,
-   9, 11, 18, 24, 31, 40, 44, 53,
-  10, 19, 23, 32, 39, 45, 52, 54,
-  20, 22, 33, 38, 46, 51, 55, 60,
-  21, 34, 37, 47, 50, 56, 59, 61,
-  35, 36, 48, 49, 57, 58, 62, 63
-};
-
-#endif
-
-/*
- * jpeg_natural_order[i] is the natural-order position of the i'th element
- * of zigzag order.
- *
- * When reading corrupted data, the Huffman decoders could attempt
- * to reference an entry beyond the end of this array (if the decoded
- * zero run length reaches past the end of the block).  To prevent
- * wild stores without adding an inner-loop test, we put some extra
- * "63"s after the real entries.  This will cause the extra coefficient
- * to be stored in location 63 of the block, not somewhere random.
- * The worst case would be a run-length of 15, which means we need 16
- * fake entries.
- */
-
-const int jpeg_natural_order[DCTSIZE2+16] = {
-  0,  1,  8, 16,  9,  2,  3, 10,
- 17, 24, 32, 25, 18, 11,  4,  5,
- 12, 19, 26, 33, 40, 48, 41, 34,
- 27, 20, 13,  6,  7, 14, 21, 28,
- 35, 42, 49, 56, 57, 50, 43, 36,
- 29, 22, 15, 23, 30, 37, 44, 51,
- 58, 59, 52, 45, 38, 31, 39, 46,
- 53, 60, 61, 54, 47, 55, 62, 63,
- 63, 63, 63, 63, 63, 63, 63, 63, /* extra entries for safety in decoder */
- 63, 63, 63, 63, 63, 63, 63, 63
-};
-
-
-/*
- * Arithmetic utilities
- */
-
-GLOBAL(long)
-jdiv_round_up (long a, long b)
-/* Compute a/b rounded up to next integer, ie, ceil(a/b) */
-/* Assumes a >= 0, b > 0 */
-{
-  return (a + b - 1L) / b;
-}
-
-
-GLOBAL(long)
-jround_up (long a, long b)
-/* Compute a rounded up to next multiple of b, ie, ceil(a/b)*b */
-/* Assumes a >= 0, b > 0 */
-{
-  a += b - 1L;
-  return a - (a % b);
-}
-
-
-/* On normal machines we can apply MEMCOPY() and MEMZERO() to sample arrays
- * and coefficient-block arrays.  This won't work on 80x86 because the arrays
- * are FAR and we're assuming a small-pointer memory model.  However, some
- * DOS compilers provide far-pointer versions of memcpy() and memset() even
- * in the small-model libraries.  These will be used if USE_FMEM is defined.
- * Otherwise, the routines below do it the hard way.  (The performance cost
- * is not all that great, because these routines aren't very heavily used.)
- */
-
-#ifndef NEED_FAR_POINTERS	/* normal case, same as regular macros */
-#define FMEMCOPY(dest,src,size)	MEMCOPY(dest,src,size)
-#define FMEMZERO(target,size)	MEMZERO(target,size)
-#else				/* 80x86 case, define if we can */
-#ifdef USE_FMEM
-#define FMEMCOPY(dest,src,size)	_fmemcpy((void FAR *)(dest), (const void FAR *)(src), (size_t)(size))
-#define FMEMZERO(target,size)	_fmemset((void FAR *)(target), 0, (size_t)(size))
-#endif
-#endif
-
-
-GLOBAL(void)
-jcopy_sample_rows (JSAMPARRAY input_array, int source_row,
-		   JSAMPARRAY output_array, int dest_row,
-		   int num_rows, JDIMENSION num_cols)
-/* Copy some rows of samples from one place to another.
- * num_rows rows are copied from input_array[source_row++]
- * to output_array[dest_row++]; these areas may overlap for duplication.
- * The source and destination arrays must be at least as wide as num_cols.
- */
-{
-  register JSAMPROW inptr, outptr;
-#ifdef FMEMCOPY
-  register size_t count = (size_t) (num_cols * SIZEOF(JSAMPLE));
-#else
-  register JDIMENSION count;
-#endif
-  register int row;
-
-  input_array += source_row;
-  output_array += dest_row;
-
-  for (row = num_rows; row > 0; row--) {
-    inptr = *input_array++;
-    outptr = *output_array++;
-#ifdef FMEMCOPY
-    FMEMCOPY(outptr, inptr, count);
-#else
-    for (count = num_cols; count > 0; count--)
-      *outptr++ = *inptr++;	/* needn't bother with GETJSAMPLE() here */
-#endif
-  }
-}
-
-
-GLOBAL(void)
-jcopy_block_row (JBLOCKROW input_row, JBLOCKROW output_row,
-		 JDIMENSION num_blocks)
-/* Copy a row of coefficient blocks from one place to another. */
-{
-#ifdef FMEMCOPY
-  FMEMCOPY(output_row, input_row, num_blocks * (DCTSIZE2 * SIZEOF(JCOEF)));
-#else
-  register JCOEFPTR inptr, outptr;
-  register long count;
-
-  inptr = (JCOEFPTR) input_row;
-  outptr = (JCOEFPTR) output_row;
-  for (count = (long) num_blocks * DCTSIZE2; count > 0; count--) {
-    *outptr++ = *inptr++;
-  }
-#endif
-}
-
-
-GLOBAL(void)
-jzero_far (void FAR * target, size_t bytestozero)
-/* Zero out a chunk of FAR memory. */
-/* This might be sample-array data, block-array data, or alloc_large data. */
-{
-#ifdef FMEMZERO
-  FMEMZERO(target, bytestozero);
-#else
-  register char FAR * ptr = (char FAR *) target;
-  register size_t count;
-
-  for (count = bytestozero; count > 0; count--) {
-    *ptr++ = 0;
-  }
-#endif
-}
diff --git a/src/libjpeg/jversion.h b/src/libjpeg/jversion.h
deleted file mode 100644
index dadd453..0000000
--- a/src/libjpeg/jversion.h
+++ /dev/null
@@ -1,14 +0,0 @@
-/*
- * jversion.h
- *
- * Copyright (C) 1991-1998, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains software version identification.
- */
-
-
-#define JVERSION	"6b  27-Mar-1998"
-
-#define JCOPYRIGHT	"Copyright (C) 1998, Thomas G. Lane"
diff --git a/src/libjpeg/rdbmp.c b/src/libjpeg/rdbmp.c
deleted file mode 100644
index 4f61bcf..0000000
--- a/src/libjpeg/rdbmp.c
+++ /dev/null
@@ -1,439 +0,0 @@
-/*
- * rdbmp.c
- *
- * Copyright (C) 1994-1996, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains routines to read input images in Microsoft "BMP"
- * format (MS Windows 3.x, OS/2 1.x, and OS/2 2.x flavors).
- * Currently, only 8-bit and 24-bit images are supported, not 1-bit or
- * 4-bit (feeding such low-depth images into JPEG would be silly anyway).
- * Also, we don't support RLE-compressed files.
- *
- * These routines may need modification for non-Unix environments or
- * specialized applications.  As they stand, they assume input from
- * an ordinary stdio stream.  They further assume that reading begins
- * at the start of the file; start_input may need work if the
- * user interface has already read some data (e.g., to determine that
- * the file is indeed BMP format).
- *
- * This code contributed by James Arthur Boucher.
- */
-
-#include "cdjpeg.h"		/* Common decls for cjpeg/djpeg applications */
-
-#ifdef BMP_SUPPORTED
-
-
-/* Macros to deal with unsigned chars as efficiently as compiler allows */
-
-#ifdef HAVE_UNSIGNED_CHAR
-typedef unsigned char U_CHAR;
-#define UCH(x)	((int) (x))
-#else /* !HAVE_UNSIGNED_CHAR */
-#ifdef CHAR_IS_UNSIGNED
-typedef char U_CHAR;
-#define UCH(x)	((int) (x))
-#else
-typedef char U_CHAR;
-#define UCH(x)	((int) (x) & 0xFF)
-#endif
-#endif /* HAVE_UNSIGNED_CHAR */
-
-
-#define	ReadOK(file,buffer,len)	(JFREAD(file,buffer,len) == ((size_t) (len)))
-
-
-/* Private version of data source object */
-
-typedef struct _bmp_source_struct * bmp_source_ptr;
-
-typedef struct _bmp_source_struct {
-  struct cjpeg_source_struct pub; /* public fields */
-
-  j_compress_ptr cinfo;		/* back link saves passing separate parm */
-
-  JSAMPARRAY colormap;		/* BMP colormap (converted to my format) */
-
-  jvirt_sarray_ptr whole_image;	/* Needed to reverse row order */
-  JDIMENSION source_row;	/* Current source row number */
-  JDIMENSION row_width;		/* Physical width of scanlines in file */
-
-  int bits_per_pixel;		/* remembers 8- or 24-bit format */
-} bmp_source_struct;
-
-
-LOCAL(int)
-read_byte (bmp_source_ptr sinfo)
-/* Read next byte from BMP file */
-{
-  register FILE *infile = sinfo->pub.input_file;
-  register int c;
-
-  if ((c = getc(infile)) == EOF)
-    ERREXIT(sinfo->cinfo, JERR_INPUT_EOF);
-  return c;
-}
-
-
-LOCAL(void)
-read_colormap (bmp_source_ptr sinfo, int cmaplen, int mapentrysize)
-/* Read the colormap from a BMP file */
-{
-  int i;
-
-  switch (mapentrysize) {
-  case 3:
-    /* BGR format (occurs in OS/2 files) */
-    for (i = 0; i < cmaplen; i++) {
-      sinfo->colormap[2][i] = (JSAMPLE) read_byte(sinfo);
-      sinfo->colormap[1][i] = (JSAMPLE) read_byte(sinfo);
-      sinfo->colormap[0][i] = (JSAMPLE) read_byte(sinfo);
-    }
-    break;
-  case 4:
-    /* BGR0 format (occurs in MS Windows files) */
-    for (i = 0; i < cmaplen; i++) {
-      sinfo->colormap[2][i] = (JSAMPLE) read_byte(sinfo);
-      sinfo->colormap[1][i] = (JSAMPLE) read_byte(sinfo);
-      sinfo->colormap[0][i] = (JSAMPLE) read_byte(sinfo);
-      (void) read_byte(sinfo);
-    }
-    break;
-  default:
-    ERREXIT(sinfo->cinfo, JERR_BMP_BADCMAP);
-    break;
-  }
-}
-
-
-/*
- * Read one row of pixels.
- * The image has been read into the whole_image array, but is otherwise
- * unprocessed.  We must read it out in top-to-bottom row order, and if
- * it is an 8-bit image, we must expand colormapped pixels to 24bit format.
- */
-
-METHODDEF(JDIMENSION)
-get_8bit_row (j_compress_ptr cinfo, cjpeg_source_ptr sinfo)
-/* This version is for reading 8-bit colormap indexes */
-{
-  bmp_source_ptr source = (bmp_source_ptr) sinfo;
-  register JSAMPARRAY colormap = source->colormap;
-  JSAMPARRAY image_ptr;
-  register int t;
-  register JSAMPROW inptr, outptr;
-  register JDIMENSION col;
-
-  /* Fetch next row from virtual array */
-  source->source_row--;
-  image_ptr = (*cinfo->mem->access_virt_sarray)
-    ((j_common_ptr) cinfo, source->whole_image,
-     source->source_row, (JDIMENSION) 1, FALSE);
-
-  /* Expand the colormap indexes to real data */
-  inptr = image_ptr[0];
-  outptr = source->pub.buffer[0];
-  for (col = cinfo->image_width; col > 0; col--) {
-    t = GETJSAMPLE(*inptr++);
-    *outptr++ = colormap[0][t];	/* can omit GETJSAMPLE() safely */
-    *outptr++ = colormap[1][t];
-    *outptr++ = colormap[2][t];
-  }
-
-  return 1;
-}
-
-
-METHODDEF(JDIMENSION)
-get_24bit_row (j_compress_ptr cinfo, cjpeg_source_ptr sinfo)
-/* This version is for reading 24-bit pixels */
-{
-  bmp_source_ptr source = (bmp_source_ptr) sinfo;
-  JSAMPARRAY image_ptr;
-  register JSAMPROW inptr, outptr;
-  register JDIMENSION col;
-
-  /* Fetch next row from virtual array */
-  source->source_row--;
-  image_ptr = (*cinfo->mem->access_virt_sarray)
-    ((j_common_ptr) cinfo, source->whole_image,
-     source->source_row, (JDIMENSION) 1, FALSE);
-
-  /* Transfer data.  Note source values are in BGR order
-   * (even though Microsoft's own documents say the opposite).
-   */
-  inptr = image_ptr[0];
-  outptr = source->pub.buffer[0];
-  for (col = cinfo->image_width; col > 0; col--) {
-    outptr[2] = *inptr++;	/* can omit GETJSAMPLE() safely */
-    outptr[1] = *inptr++;
-    outptr[0] = *inptr++;
-    outptr += 3;
-  }
-
-  return 1;
-}
-
-
-/*
- * This method loads the image into whole_image during the first call on
- * get_pixel_rows.  The get_pixel_rows pointer is then adjusted to call
- * get_8bit_row or get_24bit_row on subsequent calls.
- */
-
-METHODDEF(JDIMENSION)
-preload_image (j_compress_ptr cinfo, cjpeg_source_ptr sinfo)
-{
-  bmp_source_ptr source = (bmp_source_ptr) sinfo;
-  register FILE *infile = source->pub.input_file;
-  register int c;
-  register JSAMPROW out_ptr;
-  JSAMPARRAY image_ptr;
-  JDIMENSION row, col;
-  cd_progress_ptr progress = (cd_progress_ptr) cinfo->progress;
-
-  /* Read the data into a virtual array in input-file row order. */
-  for (row = 0; row < cinfo->image_height; row++) {
-    if (progress != NULL) {
-      progress->pub.pass_counter = (long) row;
-      progress->pub.pass_limit = (long) cinfo->image_height;
-      (*progress->pub.progress_monitor) ((j_common_ptr) cinfo);
-    }
-    image_ptr = (*cinfo->mem->access_virt_sarray)
-      ((j_common_ptr) cinfo, source->whole_image,
-       row, (JDIMENSION) 1, TRUE);
-    out_ptr = image_ptr[0];
-    for (col = source->row_width; col > 0; col--) {
-      /* inline copy of read_byte() for speed */
-      if ((c = getc(infile)) == EOF)
-	ERREXIT(cinfo, JERR_INPUT_EOF);
-      *out_ptr++ = (JSAMPLE) c;
-    }
-  }
-  if (progress != NULL)
-    progress->completed_extra_passes++;
-
-  /* Set up to read from the virtual array in top-to-bottom order */
-  switch (source->bits_per_pixel) {
-  case 8:
-    source->pub.get_pixel_rows = get_8bit_row;
-    break;
-  case 24:
-    source->pub.get_pixel_rows = get_24bit_row;
-    break;
-  default:
-    ERREXIT(cinfo, JERR_BMP_BADDEPTH);
-  }
-  source->source_row = cinfo->image_height;
-
-  /* And read the first row */
-  return (*source->pub.get_pixel_rows) (cinfo, sinfo);
-}
-
-
-/*
- * Read the file header; return image size and component count.
- */
-
-METHODDEF(void)
-start_input_bmp (j_compress_ptr cinfo, cjpeg_source_ptr sinfo)
-{
-  bmp_source_ptr source = (bmp_source_ptr) sinfo;
-  U_CHAR bmpfileheader[14];
-  U_CHAR bmpinfoheader[64];
-#define GET_2B(array,offset)  ((unsigned int) UCH(array[offset]) + \
-			       (((unsigned int) UCH(array[offset+1])) << 8))
-#define GET_4B(array,offset)  ((INT32) UCH(array[offset]) + \
-			       (((INT32) UCH(array[offset+1])) << 8) + \
-			       (((INT32) UCH(array[offset+2])) << 16) + \
-			       (((INT32) UCH(array[offset+3])) << 24))
-  INT32 bfOffBits;
-  INT32 headerSize;
-  INT32 biWidth = 0;		/* initialize to avoid compiler warning */
-  INT32 biHeight = 0;
-  unsigned int biPlanes;
-  INT32 biCompression;
-  INT32 biXPelsPerMeter,biYPelsPerMeter;
-  INT32 biClrUsed = 0;
-  int mapentrysize = 0;		/* 0 indicates no colormap */
-  INT32 bPad;
-  JDIMENSION row_width;
-
-  /* Read and verify the bitmap file header */
-  if (! ReadOK(source->pub.input_file, bmpfileheader, 14))
-    ERREXIT(cinfo, JERR_INPUT_EOF);
-  if (GET_2B(bmpfileheader,0) != 0x4D42) /* 'BM' */
-    ERREXIT(cinfo, JERR_BMP_NOT);
-  bfOffBits = (INT32) GET_4B(bmpfileheader,10);
-  /* We ignore the remaining fileheader fields */
-
-  /* The infoheader might be 12 bytes (OS/2 1.x), 40 bytes (Windows),
-   * or 64 bytes (OS/2 2.x).  Check the first 4 bytes to find out which.
-   */
-  if (! ReadOK(source->pub.input_file, bmpinfoheader, 4))
-    ERREXIT(cinfo, JERR_INPUT_EOF);
-  headerSize = (INT32) GET_4B(bmpinfoheader,0);
-  if (headerSize < 12 || headerSize > 64)
-    ERREXIT(cinfo, JERR_BMP_BADHEADER);
-  if (! ReadOK(source->pub.input_file, bmpinfoheader+4, headerSize-4))
-    ERREXIT(cinfo, JERR_INPUT_EOF);
-
-  switch ((int) headerSize) {
-  case 12:
-    /* Decode OS/2 1.x header (Microsoft calls this a BITMAPCOREHEADER) */
-    biWidth = (INT32) GET_2B(bmpinfoheader,4);
-    biHeight = (INT32) GET_2B(bmpinfoheader,6);
-    biPlanes = GET_2B(bmpinfoheader,8);
-    source->bits_per_pixel = (int) GET_2B(bmpinfoheader,10);
-
-    switch (source->bits_per_pixel) {
-    case 8:			/* colormapped image */
-      mapentrysize = 3;		/* OS/2 uses RGBTRIPLE colormap */
-      TRACEMS2(cinfo, 1, JTRC_BMP_OS2_MAPPED, (int) biWidth, (int) biHeight);
-      break;
-    case 24:			/* RGB image */
-      TRACEMS2(cinfo, 1, JTRC_BMP_OS2, (int) biWidth, (int) biHeight);
-      break;
-    default:
-      ERREXIT(cinfo, JERR_BMP_BADDEPTH);
-      break;
-    }
-    if (biPlanes != 1)
-      ERREXIT(cinfo, JERR_BMP_BADPLANES);
-    break;
-  case 40:
-  case 64:
-    /* Decode Windows 3.x header (Microsoft calls this a BITMAPINFOHEADER) */
-    /* or OS/2 2.x header, which has additional fields that we ignore */
-    biWidth = GET_4B(bmpinfoheader,4);
-    biHeight = GET_4B(bmpinfoheader,8);
-    biPlanes = GET_2B(bmpinfoheader,12);
-    source->bits_per_pixel = (int) GET_2B(bmpinfoheader,14);
-    biCompression = GET_4B(bmpinfoheader,16);
-    biXPelsPerMeter = GET_4B(bmpinfoheader,24);
-    biYPelsPerMeter = GET_4B(bmpinfoheader,28);
-    biClrUsed = GET_4B(bmpinfoheader,32);
-    /* biSizeImage, biClrImportant fields are ignored */
-
-    switch (source->bits_per_pixel) {
-    case 8:			/* colormapped image */
-      mapentrysize = 4;		/* Windows uses RGBQUAD colormap */
-      TRACEMS2(cinfo, 1, JTRC_BMP_MAPPED, (int) biWidth, (int) biHeight);
-      break;
-    case 24:			/* RGB image */
-      TRACEMS2(cinfo, 1, JTRC_BMP, (int) biWidth, (int) biHeight);
-      break;
-    default:
-      ERREXIT(cinfo, JERR_BMP_BADDEPTH);
-      break;
-    }
-    if (biPlanes != 1)
-      ERREXIT(cinfo, JERR_BMP_BADPLANES);
-    if (biCompression != 0)
-      ERREXIT(cinfo, JERR_BMP_COMPRESSED);
-
-    if (biXPelsPerMeter > 0 && biYPelsPerMeter > 0) {
-      /* Set JFIF density parameters from the BMP data */
-      cinfo->X_density = (UINT16) (biXPelsPerMeter/100); /* 100 cm per meter */
-      cinfo->Y_density = (UINT16) (biYPelsPerMeter/100);
-      cinfo->density_unit = 2;	/* dots/cm */
-    }
-    break;
-  default:
-    ERREXIT(cinfo, JERR_BMP_BADHEADER);
-    break;
-  }
-
-  /* Compute distance to bitmap data --- will adjust for colormap below */
-  bPad = bfOffBits - (headerSize + 14);
-
-  /* Read the colormap, if any */
-  if (mapentrysize > 0) {
-    if (biClrUsed <= 0)
-      biClrUsed = 256;		/* assume it's 256 */
-    else if (biClrUsed > 256)
-      ERREXIT(cinfo, JERR_BMP_BADCMAP);
-    /* Allocate space to store the colormap */
-    source->colormap = (*cinfo->mem->alloc_sarray)
-      ((j_common_ptr) cinfo, JPOOL_IMAGE,
-       (JDIMENSION) biClrUsed, (JDIMENSION) 3);
-    /* and read it from the file */
-    read_colormap(source, (int) biClrUsed, mapentrysize);
-    /* account for size of colormap */
-    bPad -= biClrUsed * mapentrysize;
-  }
-
-  /* Skip any remaining pad bytes */
-  if (bPad < 0)			/* incorrect bfOffBits value? */
-    ERREXIT(cinfo, JERR_BMP_BADHEADER);
-  while (--bPad >= 0) {
-    (void) read_byte(source);
-  }
-
-  /* Compute row width in file, including padding to 4-byte boundary */
-  if (source->bits_per_pixel == 24)
-    row_width = (JDIMENSION) (biWidth * 3);
-  else
-    row_width = (JDIMENSION) biWidth;
-  while ((row_width & 3) != 0) row_width++;
-  source->row_width = row_width;
-
-  /* Allocate space for inversion array, prepare for preload pass */
-  source->whole_image = (*cinfo->mem->request_virt_sarray)
-    ((j_common_ptr) cinfo, JPOOL_IMAGE, FALSE,
-     row_width, (JDIMENSION) biHeight, (JDIMENSION) 1);
-  source->pub.get_pixel_rows = preload_image;
-  if (cinfo->progress != NULL) {
-    cd_progress_ptr progress = (cd_progress_ptr) cinfo->progress;
-    progress->total_extra_passes++; /* count file input as separate pass */
-  }
-
-  /* Allocate one-row buffer for returned data */
-  source->pub.buffer = (*cinfo->mem->alloc_sarray)
-    ((j_common_ptr) cinfo, JPOOL_IMAGE,
-     (JDIMENSION) (biWidth * 3), (JDIMENSION) 1);
-  source->pub.buffer_height = 1;
-
-  cinfo->in_color_space = JCS_RGB;
-  cinfo->input_components = 3;
-  cinfo->data_precision = 8;
-  cinfo->image_width = (JDIMENSION) biWidth;
-  cinfo->image_height = (JDIMENSION) biHeight;
-}
-
-
-/*
- * Finish up at the end of the file.
- */
-
-METHODDEF(void)
-finish_input_bmp (j_compress_ptr cinfo, cjpeg_source_ptr sinfo)
-{
-  /* no work */
-}
-
-
-/*
- * The module selection routine for BMP format input.
- */
-
-GLOBAL(cjpeg_source_ptr)
-jinit_read_bmp (j_compress_ptr cinfo)
-{
-  bmp_source_ptr source;
-
-  /* Create module interface object */
-  source = (bmp_source_ptr)
-      (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
-				  SIZEOF(bmp_source_struct));
-  source->cinfo = cinfo;	/* make back link for subroutines */
-  /* Fill in method ptrs, except get_pixel_rows which start_input sets */
-  source->pub.start_input = start_input_bmp;
-  source->pub.finish_input = finish_input_bmp;
-
-  return (cjpeg_source_ptr) source;
-}
-
-#endif /* BMP_SUPPORTED */
diff --git a/src/libjpeg/rdcolmap.c b/src/libjpeg/rdcolmap.c
deleted file mode 100644
index eebf834..0000000
--- a/src/libjpeg/rdcolmap.c
+++ /dev/null
@@ -1,253 +0,0 @@
-/*
- * rdcolmap.c
- *
- * Copyright (C) 1994-1996, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file implements djpeg's "-map file" switch.  It reads a source image
- * and constructs a colormap to be supplied to the JPEG decompressor.
- *
- * Currently, these file formats are supported for the map file:
- *   GIF: the contents of the GIF's global colormap are used.
- *   PPM (either text or raw flavor): the entire file is read and
- *      each unique pixel value is entered in the map.
- * Note that reading a large PPM file will be horrendously slow.
- * Typically, a PPM-format map file should contain just one pixel
- * of each desired color.  Such a file can be extracted from an
- * ordinary image PPM file with ppmtomap(1).
- *
- * Rescaling a PPM that has a maxval unequal to MAXJSAMPLE is not
- * currently implemented.
- */
-
-#include "cdjpeg.h"		/* Common decls for cjpeg/djpeg applications */
-
-#ifdef QUANT_2PASS_SUPPORTED	/* otherwise can't quantize to supplied map */
-
-/* Portions of this code are based on the PBMPLUS library, which is:
-**
-** Copyright (C) 1988 by Jef Poskanzer.
-**
-** Permission to use, copy, modify, and distribute this software and its
-** documentation for any purpose and without fee is hereby granted, provided
-** that the above copyright notice appear in all copies and that both that
-** copyright notice and this permission notice appear in supporting
-** documentation.  This software is provided "as is" without express or
-** implied warranty.
-*/
-
-
-/*
- * Add a (potentially) new color to the color map.
- */
-
-LOCAL(void)
-add_map_entry (j_decompress_ptr cinfo, int R, int G, int B)
-{
-  JSAMPROW colormap0 = cinfo->colormap[0];
-  JSAMPROW colormap1 = cinfo->colormap[1];
-  JSAMPROW colormap2 = cinfo->colormap[2];
-  int ncolors = cinfo->actual_number_of_colors;
-  int index;
-
-  /* Check for duplicate color. */
-  for (index = 0; index < ncolors; index++) {
-    if (GETJSAMPLE(colormap0[index]) == R &&
-	GETJSAMPLE(colormap1[index]) == G &&
-	GETJSAMPLE(colormap2[index]) == B)
-      return;			/* color is already in map */
-  }
-
-  /* Check for map overflow. */
-  if (ncolors >= (MAXJSAMPLE+1))
-    ERREXIT1(cinfo, JERR_QUANT_MANY_COLORS, (MAXJSAMPLE+1));
-
-  /* OK, add color to map. */
-  colormap0[ncolors] = (JSAMPLE) R;
-  colormap1[ncolors] = (JSAMPLE) G;
-  colormap2[ncolors] = (JSAMPLE) B;
-  cinfo->actual_number_of_colors++;
-}
-
-
-/*
- * Extract color map from a GIF file.
- */
-
-LOCAL(void)
-read_gif_map (j_decompress_ptr cinfo, FILE * infile)
-{
-  int header[13];
-  int i, colormaplen;
-  int R, G, B;
-
-  /* Initial 'G' has already been read by read_color_map */
-  /* Read the rest of the GIF header and logical screen descriptor */
-  for (i = 1; i < 13; i++) {
-    if ((header[i] = getc(infile)) == EOF)
-      ERREXIT(cinfo, JERR_BAD_CMAP_FILE);
-  }
-
-  /* Verify GIF Header */
-  if (header[1] != 'I' || header[2] != 'F')
-    ERREXIT(cinfo, JERR_BAD_CMAP_FILE);
-
-  /* There must be a global color map. */
-  if ((header[10] & 0x80) == 0)
-    ERREXIT(cinfo, JERR_BAD_CMAP_FILE);
-
-  /* OK, fetch it. */
-  colormaplen = 2 << (header[10] & 0x07);
-
-  for (i = 0; i < colormaplen; i++) {
-    R = getc(infile);
-    G = getc(infile);
-    B = getc(infile);
-    if (R == EOF || G == EOF || B == EOF)
-      ERREXIT(cinfo, JERR_BAD_CMAP_FILE);
-    add_map_entry(cinfo,
-		  R << (BITS_IN_JSAMPLE-8),
-		  G << (BITS_IN_JSAMPLE-8),
-		  B << (BITS_IN_JSAMPLE-8));
-  }
-}
-
-
-/* Support routines for reading PPM */
-
-
-LOCAL(int)
-pbm_getc (FILE * infile)
-/* Read next char, skipping over any comments */
-/* A comment/newline sequence is returned as a newline */
-{
-  register int ch;
-  
-  ch = getc(infile);
-  if (ch == '#') {
-    do {
-      ch = getc(infile);
-    } while (ch != '\n' && ch != EOF);
-  }
-  return ch;
-}
-
-
-LOCAL(unsigned int)
-read_pbm_integer (j_decompress_ptr cinfo, FILE * infile)
-/* Read an unsigned decimal integer from the PPM file */
-/* Swallows one trailing character after the integer */
-/* Note that on a 16-bit-int machine, only values up to 64k can be read. */
-/* This should not be a problem in practice. */
-{
-  register int ch;
-  register unsigned int val;
-  
-  /* Skip any leading whitespace */
-  do {
-    ch = pbm_getc(infile);
-    if (ch == EOF)
-      ERREXIT(cinfo, JERR_BAD_CMAP_FILE);
-  } while (ch == ' ' || ch == '\t' || ch == '\n' || ch == '\r');
-  
-  if (ch < '0' || ch > '9')
-    ERREXIT(cinfo, JERR_BAD_CMAP_FILE);
-  
-  val = ch - '0';
-  while ((ch = pbm_getc(infile)) >= '0' && ch <= '9') {
-    val *= 10;
-    val += ch - '0';
-  }
-  return val;
-}
-
-
-/*
- * Extract color map from a PPM file.
- */
-
-LOCAL(void)
-read_ppm_map (j_decompress_ptr cinfo, FILE * infile)
-{
-  int c;
-  unsigned int w, h, maxval, row, col;
-  int R, G, B;
-
-  /* Initial 'P' has already been read by read_color_map */
-  c = getc(infile);		/* save format discriminator for a sec */
-
-  /* while we fetch the remaining header info */
-  w = read_pbm_integer(cinfo, infile);
-  h = read_pbm_integer(cinfo, infile);
-  maxval = read_pbm_integer(cinfo, infile);
-
-  if (w <= 0 || h <= 0 || maxval <= 0) /* error check */
-    ERREXIT(cinfo, JERR_BAD_CMAP_FILE);
-
-  /* For now, we don't support rescaling from an unusual maxval. */
-  if (maxval != (unsigned int) MAXJSAMPLE)
-    ERREXIT(cinfo, JERR_BAD_CMAP_FILE);
-
-  switch (c) {
-  case '3':			/* it's a text-format PPM file */
-    for (row = 0; row < h; row++) {
-      for (col = 0; col < w; col++) {
-	R = read_pbm_integer(cinfo, infile);
-	G = read_pbm_integer(cinfo, infile);
-	B = read_pbm_integer(cinfo, infile);
-	add_map_entry(cinfo, R, G, B);
-      }
-    }
-    break;
-
-  case '6':			/* it's a raw-format PPM file */
-    for (row = 0; row < h; row++) {
-      for (col = 0; col < w; col++) {
-	R = getc(infile);
-	G = getc(infile);
-	B = getc(infile);
-	if (R == EOF || G == EOF || B == EOF)
-	  ERREXIT(cinfo, JERR_BAD_CMAP_FILE);
-	add_map_entry(cinfo, R, G, B);
-      }
-    }
-    break;
-
-  default:
-    ERREXIT(cinfo, JERR_BAD_CMAP_FILE);
-    break;
-  }
-}
-
-
-/*
- * Main entry point from djpeg.c.
- *  Input: opened input file (from file name argument on command line).
- *  Output: colormap and actual_number_of_colors fields are set in cinfo.
- */
-
-GLOBAL(void)
-read_color_map (j_decompress_ptr cinfo, FILE * infile)
-{
-  /* Allocate space for a color map of maximum supported size. */
-  cinfo->colormap = (*cinfo->mem->alloc_sarray)
-    ((j_common_ptr) cinfo, JPOOL_IMAGE,
-     (JDIMENSION) (MAXJSAMPLE+1), (JDIMENSION) 3);
-  cinfo->actual_number_of_colors = 0; /* initialize map to empty */
-
-  /* Read first byte to determine file format */
-  switch (getc(infile)) {
-  case 'G':
-    read_gif_map(cinfo, infile);
-    break;
-  case 'P':
-    read_ppm_map(cinfo, infile);
-    break;
-  default:
-    ERREXIT(cinfo, JERR_BAD_CMAP_FILE);
-    break;
-  }
-}
-
-#endif /* QUANT_2PASS_SUPPORTED */
diff --git a/src/libjpeg/rdgif.c b/src/libjpeg/rdgif.c
deleted file mode 100644
index b0757e7..0000000
--- a/src/libjpeg/rdgif.c
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * rdgif.c
- *
- * Copyright (C) 1991-1997, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains routines to read input images in GIF format.
- *
- *****************************************************************************
- * NOTE: to avoid entanglements with Unisys' patent on LZW compression,      *
- * the ability to read GIF files has been removed from the IJG distribution. *
- * Sorry about that.                                                         *
- *****************************************************************************
- *
- * We are required to state that
- *    "The Graphics Interchange Format(c) is the Copyright property of
- *    CompuServe Incorporated. GIF(sm) is a Service Mark property of
- *    CompuServe Incorporated."
- */
-
-#include "cdjpeg.h"		/* Common decls for cjpeg/djpeg applications */
-
-#ifdef GIF_SUPPORTED
-
-/*
- * The module selection routine for GIF format input.
- */
-
-GLOBAL(cjpeg_source_ptr)
-jinit_read_gif (j_compress_ptr cinfo)
-{
-  fprintf(stderr, "GIF input is unsupported for legal reasons.  Sorry.\n");
-  exit(EXIT_FAILURE);
-  return NULL;			/* keep compiler happy */
-}
-
-#endif /* GIF_SUPPORTED */
diff --git a/src/libjpeg/rdjpgcom.c b/src/libjpeg/rdjpgcom.c
deleted file mode 100644
index c8b94bb..0000000
--- a/src/libjpeg/rdjpgcom.c
+++ /dev/null
@@ -1,496 +0,0 @@
-/*
- * rdjpgcom.c
- *
- * Copyright (C) 1994-1997, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains a very simple stand-alone application that displays
- * the text in COM (comment) markers in a JFIF file.
- * This may be useful as an example of the minimum logic needed to parse
- * JPEG markers.
- */
-
-#define JPEG_CJPEG_DJPEG	/* to get the command-line config symbols */
-#include "jinclude.h"		/* get auto-config symbols, <stdio.h> */
-
-#include <ctype.h>		/* to declare isupper(), tolower() */
-#ifdef USE_SETMODE
-#include <fcntl.h>		/* to declare setmode()'s parameter macros */
-/* If you have setmode() but not <io.h>, just delete this line: */
-#include <io.h>			/* to declare setmode() */
-#endif
-
-#ifdef USE_CCOMMAND		/* command-line reader for Macintosh */
-#ifdef __MWERKS__
-#include <SIOUX.h>              /* Metrowerks needs this */
-#include <console.h>		/* ... and this */
-#endif
-#ifdef THINK_C
-#include <console.h>		/* Think declares it here */
-#endif
-#endif
-
-#ifdef DONT_USE_B_MODE		/* define mode parameters for fopen() */
-#define READ_BINARY	"r"
-#else
-#ifdef VMS			/* VMS is very nonstandard */
-#define READ_BINARY	"rb", "ctx=stm"
-#else				/* standard ANSI-compliant case */
-#define READ_BINARY	"rb"
-#endif
-#endif
-
-#ifndef EXIT_FAILURE		/* define exit() codes if not provided */
-#define EXIT_FAILURE  1
-#endif
-#ifndef EXIT_SUCCESS
-#ifdef VMS
-#define EXIT_SUCCESS  1		/* VMS is very nonstandard */
-#else
-#define EXIT_SUCCESS  0
-#endif
-#endif
-
-
-/*
- * These macros are used to read the input file.
- * To reuse this code in another application, you might need to change these.
- */
-
-static FILE * infile;		/* input JPEG file */
-
-/* Return next input byte, or EOF if no more */
-#define NEXTBYTE()  getc(infile)
-
-
-/* Error exit handler */
-#define ERREXIT(msg)  (fprintf(stderr, "%s\n", msg), exit(EXIT_FAILURE))
-
-
-/* Read one byte, testing for EOF */
-static int
-read_1_byte (void)
-{
-  int c;
-
-  c = NEXTBYTE();
-  if (c == EOF)
-    ERREXIT("Premature EOF in JPEG file");
-  return c;
-}
-
-/* Read 2 bytes, convert to unsigned int */
-/* All 2-byte quantities in JPEG markers are MSB first */
-static unsigned int
-read_2_bytes (void)
-{
-  int c1, c2;
-
-  c1 = NEXTBYTE();
-  if (c1 == EOF)
-    ERREXIT("Premature EOF in JPEG file");
-  c2 = NEXTBYTE();
-  if (c2 == EOF)
-    ERREXIT("Premature EOF in JPEG file");
-  return (((unsigned int) c1) << 8) + ((unsigned int) c2);
-}
-
-
-/*
- * JPEG markers consist of one or more 0xFF bytes, followed by a marker
- * code byte (which is not an FF).  Here are the marker codes of interest
- * in this program.  (See jdmarker.c for a more complete list.)
- */
-
-#define M_SOF0  0xC0		/* Start Of Frame N */
-#define M_SOF1  0xC1		/* N indicates which compression process */
-#define M_SOF2  0xC2		/* Only SOF0-SOF2 are now in common use */
-#define M_SOF3  0xC3
-#define M_SOF5  0xC5		/* NB: codes C4 and CC are NOT SOF markers */
-#define M_SOF6  0xC6
-#define M_SOF7  0xC7
-#define M_SOF9  0xC9
-#define M_SOF10 0xCA
-#define M_SOF11 0xCB
-#define M_SOF13 0xCD
-#define M_SOF14 0xCE
-#define M_SOF15 0xCF
-#define M_SOI   0xD8		/* Start Of Image (beginning of datastream) */
-#define M_EOI   0xD9		/* End Of Image (end of datastream) */
-#define M_SOS   0xDA		/* Start Of Scan (begins compressed data) */
-#define M_APP0	0xE0		/* Application-specific marker, type N */
-#define M_APP12	0xEC		/* (we don't bother to list all 16 APPn's) */
-#define M_COM   0xFE		/* COMment */
-
-
-/*
- * Find the next JPEG marker and return its marker code.
- * We expect at least one FF byte, possibly more if the compressor used FFs
- * to pad the file.
- * There could also be non-FF garbage between markers.  The treatment of such
- * garbage is unspecified; we choose to skip over it but emit a warning msg.
- * NB: this routine must not be used after seeing SOS marker, since it will
- * not deal correctly with FF/00 sequences in the compressed image data...
- */
-
-static int
-next_marker (void)
-{
-  int c;
-  int discarded_bytes = 0;
-
-  /* Find 0xFF byte; count and skip any non-FFs. */
-  c = read_1_byte();
-  while (c != 0xFF) {
-    discarded_bytes++;
-    c = read_1_byte();
-  }
-  /* Get marker code byte, swallowing any duplicate FF bytes.  Extra FFs
-   * are legal as pad bytes, so don't count them in discarded_bytes.
-   */
-  do {
-    c = read_1_byte();
-  } while (c == 0xFF);
-
-  if (discarded_bytes != 0) {
-    fprintf(stderr, "Warning: garbage data found in JPEG file\n");
-  }
-
-  return c;
-}
-
-
-/*
- * Read the initial marker, which should be SOI.
- * For a JFIF file, the first two bytes of the file should be literally
- * 0xFF M_SOI.  To be more general, we could use next_marker, but if the
- * input file weren't actually JPEG at all, next_marker might read the whole
- * file and then return a misleading error message...
- */
-
-static int
-first_marker (void)
-{
-  int c1, c2;
-
-  c1 = NEXTBYTE();
-  c2 = NEXTBYTE();
-  if (c1 != 0xFF || c2 != M_SOI)
-    ERREXIT("Not a JPEG file");
-  return c2;
-}
-
-
-/*
- * Most types of marker are followed by a variable-length parameter segment.
- * This routine skips over the parameters for any marker we don't otherwise
- * want to process.
- * Note that we MUST skip the parameter segment explicitly in order not to
- * be fooled by 0xFF bytes that might appear within the parameter segment;
- * such bytes do NOT introduce new markers.
- */
-
-static void
-skip_variable (void)
-/* Skip over an unknown or uninteresting variable-length marker */
-{
-  unsigned int length;
-
-  /* Get the marker parameter length count */
-  length = read_2_bytes();
-  /* Length includes itself, so must be at least 2 */
-  if (length < 2)
-    ERREXIT("Erroneous JPEG marker length");
-  length -= 2;
-  /* Skip over the remaining bytes */
-  while (length > 0) {
-    (void) read_1_byte();
-    length--;
-  }
-}
-
-
-/*
- * Process a COM marker.
- * We want to print out the marker contents as legible text;
- * we must guard against non-text junk and varying newline representations.
- */
-
-static void
-process_COM (void)
-{
-  unsigned int length;
-  int ch;
-  int lastch = 0;
-
-  /* Get the marker parameter length count */
-  length = read_2_bytes();
-  /* Length includes itself, so must be at least 2 */
-  if (length < 2)
-    ERREXIT("Erroneous JPEG marker length");
-  length -= 2;
-
-  while (length > 0) {
-    ch = read_1_byte();
-    /* Emit the character in a readable form.
-     * Nonprintables are converted to \nnn form,
-     * while \ is converted to \\.
-     * Newlines in CR, CR/LF, or LF form will be printed as one newline.
-     */
-    if (ch == '\r') {
-      printf("\n");
-    } else if (ch == '\n') {
-      if (lastch != '\r')
-	printf("\n");
-    } else if (ch == '\\') {
-      printf("\\\\");
-    } else if (isprint(ch)) {
-      putc(ch, stdout);
-    } else {
-      printf("\\%03o", ch);
-    }
-    lastch = ch;
-    length--;
-  }
-  printf("\n");
-}
-
-
-/*
- * Process a SOFn marker.
- * This code is only needed if you want to know the image dimensions...
- */
-
-static void
-process_SOFn (int marker)
-{
-  unsigned int length;
-  unsigned int image_height, image_width;
-  int data_precision, num_components;
-  const char * process;
-  int ci;
-
-  length = read_2_bytes();	/* usual parameter length count */
-
-  data_precision = read_1_byte();
-  image_height = read_2_bytes();
-  image_width = read_2_bytes();
-  num_components = read_1_byte();
-
-  switch (marker) {
-  case M_SOF0:	process = "Baseline";  break;
-  case M_SOF1:	process = "Extended sequential";  break;
-  case M_SOF2:	process = "Progressive";  break;
-  case M_SOF3:	process = "Lossless";  break;
-  case M_SOF5:	process = "Differential sequential";  break;
-  case M_SOF6:	process = "Differential progressive";  break;
-  case M_SOF7:	process = "Differential lossless";  break;
-  case M_SOF9:	process = "Extended sequential, arithmetic coding";  break;
-  case M_SOF10:	process = "Progressive, arithmetic coding";  break;
-  case M_SOF11:	process = "Lossless, arithmetic coding";  break;
-  case M_SOF13:	process = "Differential sequential, arithmetic coding";  break;
-  case M_SOF14:	process = "Differential progressive, arithmetic coding"; break;
-  case M_SOF15:	process = "Differential lossless, arithmetic coding";  break;
-  default:	process = "Unknown";  break;
-  }
-
-  printf("JPEG image is %uw * %uh, %d color components, %d bits per sample\n",
-	 image_width, image_height, num_components, data_precision);
-  printf("JPEG process: %s\n", process);
-
-  if (length != (unsigned int) (8 + num_components * 3))
-    ERREXIT("Bogus SOF marker length");
-
-  for (ci = 0; ci < num_components; ci++) {
-    (void) read_1_byte();	/* Component ID code */
-    (void) read_1_byte();	/* H, V sampling factors */
-    (void) read_1_byte();	/* Quantization table number */
-  }
-}
-
-
-/*
- * Parse the marker stream until SOS or EOI is seen;
- * display any COM markers.
- * While the companion program wrjpgcom will always insert COM markers before
- * SOFn, other implementations might not, so we scan to SOS before stopping.
- * If we were only interested in the image dimensions, we would stop at SOFn.
- * (Conversely, if we only cared about COM markers, there would be no need
- * for special code to handle SOFn; we could treat it like other markers.)
- */
-
-static int
-scan_JPEG_header (int verbose)
-{
-  int marker;
-
-  /* Expect SOI at start of file */
-  if (first_marker() != M_SOI)
-    ERREXIT("Expected SOI marker first");
-
-  /* Scan miscellaneous markers until we reach SOS. */
-  for (;;) {
-    marker = next_marker();
-    switch (marker) {
-      /* Note that marker codes 0xC4, 0xC8, 0xCC are not, and must not be,
-       * treated as SOFn.  C4 in particular is actually DHT.
-       */
-    case M_SOF0:		/* Baseline */
-    case M_SOF1:		/* Extended sequential, Huffman */
-    case M_SOF2:		/* Progressive, Huffman */
-    case M_SOF3:		/* Lossless, Huffman */
-    case M_SOF5:		/* Differential sequential, Huffman */
-    case M_SOF6:		/* Differential progressive, Huffman */
-    case M_SOF7:		/* Differential lossless, Huffman */
-    case M_SOF9:		/* Extended sequential, arithmetic */
-    case M_SOF10:		/* Progressive, arithmetic */
-    case M_SOF11:		/* Lossless, arithmetic */
-    case M_SOF13:		/* Differential sequential, arithmetic */
-    case M_SOF14:		/* Differential progressive, arithmetic */
-    case M_SOF15:		/* Differential lossless, arithmetic */
-      if (verbose)
-	process_SOFn(marker);
-      else
-	skip_variable();
-      break;
-
-    case M_SOS:			/* stop before hitting compressed data */
-      return marker;
-
-    case M_EOI:			/* in case it's a tables-only JPEG stream */
-      return marker;
-
-    case M_COM:
-      process_COM();
-      break;
-
-    case M_APP12:
-      /* Some digital camera makers put useful textual information into
-       * APP12 markers, so we print those out too when in -verbose mode.
-       */
-      if (verbose) {
-	printf("APP12 contains:\n");
-	process_COM();
-      } else
-	skip_variable();
-      break;
-
-    default:			/* Anything else just gets skipped */
-      skip_variable();		/* we assume it has a parameter count... */
-      break;
-    }
-  } /* end loop */
-}
-
-
-/* Command line parsing code */
-
-static const char * progname;	/* program name for error messages */
-
-
-static void
-usage (void)
-/* complain about bad command line */
-{
-  fprintf(stderr, "rdjpgcom displays any textual comments in a JPEG file.\n");
-
-  fprintf(stderr, "Usage: %s [switches] [inputfile]\n", progname);
-
-  fprintf(stderr, "Switches (names may be abbreviated):\n");
-  fprintf(stderr, "  -verbose    Also display dimensions of JPEG image\n");
-
-  exit(EXIT_FAILURE);
-}
-
-
-static int
-keymatch (char * arg, const char * keyword, int minchars)
-/* Case-insensitive matching of (possibly abbreviated) keyword switches. */
-/* keyword is the constant keyword (must be lower case already), */
-/* minchars is length of minimum legal abbreviation. */
-{
-  register int ca, ck;
-  register int nmatched = 0;
-
-  while ((ca = *arg++) != '\0') {
-    if ((ck = *keyword++) == '\0')
-      return 0;			/* arg longer than keyword, no good */
-    if (isupper(ca))		/* force arg to lcase (assume ck is already) */
-      ca = tolower(ca);
-    if (ca != ck)
-      return 0;			/* no good */
-    nmatched++;			/* count matched characters */
-  }
-  /* reached end of argument; fail if it's too short for unique abbrev */
-  if (nmatched < minchars)
-    return 0;
-  return 1;			/* A-OK */
-}
-
-
-/*
- * The main program.
- */
-
-int
-main (int argc, char **argv)
-{
-  int argn;
-  char * arg;
-  int verbose = 0;
-
-  /* On Mac, fetch a command line. */
-#ifdef USE_CCOMMAND
-  argc = ccommand(&argv);
-#endif
-
-  progname = argv[0];
-  if (progname == NULL || progname[0] == 0)
-    progname = "rdjpgcom";	/* in case C library doesn't provide it */
-
-  /* Parse switches, if any */
-  for (argn = 1; argn < argc; argn++) {
-    arg = argv[argn];
-    if (arg[0] != '-')
-      break;			/* not switch, must be file name */
-    arg++;			/* advance over '-' */
-    if (keymatch(arg, "verbose", 1)) {
-      verbose++;
-    } else
-      usage();
-  }
-
-  /* Open the input file. */
-  /* Unix style: expect zero or one file name */
-  if (argn < argc-1) {
-    fprintf(stderr, "%s: only one input file\n", progname);
-    usage();
-  }
-  if (argn < argc) {
-    if ((infile = fopen(argv[argn], READ_BINARY)) == NULL) {
-      fprintf(stderr, "%s: can't open %s\n", progname, argv[argn]);
-      exit(EXIT_FAILURE);
-    }
-  } else {
-    /* default input file is stdin */
-#ifdef USE_SETMODE		/* need to hack file mode? */
-    setmode(fileno(stdin), O_BINARY);
-#endif
-#ifdef USE_FDOPEN		/* need to re-open in binary mode? */
-    if ((infile = fdopen(fileno(stdin), READ_BINARY)) == NULL) {
-      fprintf(stderr, "%s: can't open stdin\n", progname);
-      exit(EXIT_FAILURE);
-    }
-#else
-    infile = stdin;
-#endif
-  }
-
-  /* Scan the JPEG headers. */
-  (void) scan_JPEG_header(verbose);
-
-  /* All done. */
-  exit(EXIT_SUCCESS);
-  return 0;			/* suppress no-return-value warnings */
-}
diff --git a/src/libjpeg/rdppm.c b/src/libjpeg/rdppm.c
deleted file mode 100644
index bec0bc0..0000000
--- a/src/libjpeg/rdppm.c
+++ /dev/null
@@ -1,458 +0,0 @@
-/*
- * rdppm.c
- *
- * Copyright (C) 1991-1997, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains routines to read input images in PPM/PGM format.
- * The extended 2-byte-per-sample raw PPM/PGM formats are supported.
- * The PBMPLUS library is NOT required to compile this software
- * (but it is highly useful as a set of PPM image manipulation programs).
- *
- * These routines may need modification for non-Unix environments or
- * specialized applications.  As they stand, they assume input from
- * an ordinary stdio stream.  They further assume that reading begins
- * at the start of the file; start_input may need work if the
- * user interface has already read some data (e.g., to determine that
- * the file is indeed PPM format).
- */
-
-#include "cdjpeg.h"		/* Common decls for cjpeg/djpeg applications */
-
-#ifdef PPM_SUPPORTED
-
-
-/* Portions of this code are based on the PBMPLUS library, which is:
-**
-** Copyright (C) 1988 by Jef Poskanzer.
-**
-** Permission to use, copy, modify, and distribute this software and its
-** documentation for any purpose and without fee is hereby granted, provided
-** that the above copyright notice appear in all copies and that both that
-** copyright notice and this permission notice appear in supporting
-** documentation.  This software is provided "as is" without express or
-** implied warranty.
-*/
-
-
-/* Macros to deal with unsigned chars as efficiently as compiler allows */
-
-#ifdef HAVE_UNSIGNED_CHAR
-typedef unsigned char U_CHAR;
-#define UCH(x)	((int) (x))
-#else /* !HAVE_UNSIGNED_CHAR */
-#ifdef CHAR_IS_UNSIGNED
-typedef char U_CHAR;
-#define UCH(x)	((int) (x))
-#else
-typedef char U_CHAR;
-#define UCH(x)	((int) (x) & 0xFF)
-#endif
-#endif /* HAVE_UNSIGNED_CHAR */
-
-
-#define	ReadOK(file,buffer,len)	(JFREAD(file,buffer,len) == ((size_t) (len)))
-
-
-/*
- * On most systems, reading individual bytes with getc() is drastically less
- * efficient than buffering a row at a time with fread().  On PCs, we must
- * allocate the buffer in near data space, because we are assuming small-data
- * memory model, wherein fread() can't reach far memory.  If you need to
- * process very wide images on a PC, you might have to compile in large-memory
- * model, or else replace fread() with a getc() loop --- which will be much
- * slower.
- */
-
-
-/* Private version of data source object */
-
-typedef struct {
-  struct cjpeg_source_struct pub; /* public fields */
-
-  U_CHAR *iobuffer;		/* non-FAR pointer to I/O buffer */
-  JSAMPROW pixrow;		/* FAR pointer to same */
-  size_t buffer_width;		/* width of I/O buffer */
-  JSAMPLE *rescale;		/* => maxval-remapping array, or NULL */
-} ppm_source_struct;
-
-typedef ppm_source_struct * ppm_source_ptr;
-
-
-LOCAL(int)
-pbm_getc (FILE * infile)
-/* Read next char, skipping over any comments */
-/* A comment/newline sequence is returned as a newline */
-{
-  register int ch;
-
-  ch = getc(infile);
-  if (ch == '#') {
-    do {
-      ch = getc(infile);
-    } while (ch != '\n' && ch != EOF);
-  }
-  return ch;
-}
-
-
-LOCAL(unsigned int)
-read_pbm_integer (j_compress_ptr cinfo, FILE * infile)
-/* Read an unsigned decimal integer from the PPM file */
-/* Swallows one trailing character after the integer */
-/* Note that on a 16-bit-int machine, only values up to 64k can be read. */
-/* This should not be a problem in practice. */
-{
-  register int ch;
-  register unsigned int val;
-
-  /* Skip any leading whitespace */
-  do {
-    ch = pbm_getc(infile);
-    if (ch == EOF)
-      ERREXIT(cinfo, JERR_INPUT_EOF);
-  } while (ch == ' ' || ch == '\t' || ch == '\n' || ch == '\r');
-
-  if (ch < '0' || ch > '9')
-    ERREXIT(cinfo, JERR_PPM_NONNUMERIC);
-
-  val = ch - '0';
-  while ((ch = pbm_getc(infile)) >= '0' && ch <= '9') {
-    val *= 10;
-    val += ch - '0';
-  }
-  return val;
-}
-
-
-/*
- * Read one row of pixels.
- *
- * We provide several different versions depending on input file format.
- * In all cases, input is scaled to the size of JSAMPLE.
- *
- * A really fast path is provided for reading byte/sample raw files with
- * maxval = MAXJSAMPLE, which is the normal case for 8-bit data.
- */
-
-
-METHODDEF(JDIMENSION)
-get_text_gray_row (j_compress_ptr cinfo, cjpeg_source_ptr sinfo)
-/* This version is for reading text-format PGM files with any maxval */
-{
-  ppm_source_ptr source = (ppm_source_ptr) sinfo;
-  FILE * infile = source->pub.input_file;
-  register JSAMPROW ptr;
-  register JSAMPLE *rescale = source->rescale;
-  JDIMENSION col;
-
-  ptr = source->pub.buffer[0];
-  for (col = cinfo->image_width; col > 0; col--) {
-    *ptr++ = rescale[read_pbm_integer(cinfo, infile)];
-  }
-  return 1;
-}
-
-
-METHODDEF(JDIMENSION)
-get_text_rgb_row (j_compress_ptr cinfo, cjpeg_source_ptr sinfo)
-/* This version is for reading text-format PPM files with any maxval */
-{
-  ppm_source_ptr source = (ppm_source_ptr) sinfo;
-  FILE * infile = source->pub.input_file;
-  register JSAMPROW ptr;
-  register JSAMPLE *rescale = source->rescale;
-  JDIMENSION col;
-
-  ptr = source->pub.buffer[0];
-  for (col = cinfo->image_width; col > 0; col--) {
-    *ptr++ = rescale[read_pbm_integer(cinfo, infile)];
-    *ptr++ = rescale[read_pbm_integer(cinfo, infile)];
-    *ptr++ = rescale[read_pbm_integer(cinfo, infile)];
-  }
-  return 1;
-}
-
-
-METHODDEF(JDIMENSION)
-get_scaled_gray_row (j_compress_ptr cinfo, cjpeg_source_ptr sinfo)
-/* This version is for reading raw-byte-format PGM files with any maxval */
-{
-  ppm_source_ptr source = (ppm_source_ptr) sinfo;
-  register JSAMPROW ptr;
-  register U_CHAR * bufferptr;
-  register JSAMPLE *rescale = source->rescale;
-  JDIMENSION col;
-
-  if (! ReadOK(source->pub.input_file, source->iobuffer, source->buffer_width))
-    ERREXIT(cinfo, JERR_INPUT_EOF);
-  ptr = source->pub.buffer[0];
-  bufferptr = source->iobuffer;
-  for (col = cinfo->image_width; col > 0; col--) {
-    *ptr++ = rescale[UCH(*bufferptr++)];
-  }
-  return 1;
-}
-
-
-METHODDEF(JDIMENSION)
-get_scaled_rgb_row (j_compress_ptr cinfo, cjpeg_source_ptr sinfo)
-/* This version is for reading raw-byte-format PPM files with any maxval */
-{
-  ppm_source_ptr source = (ppm_source_ptr) sinfo;
-  register JSAMPROW ptr;
-  register U_CHAR * bufferptr;
-  register JSAMPLE *rescale = source->rescale;
-  JDIMENSION col;
-
-  if (! ReadOK(source->pub.input_file, source->iobuffer, source->buffer_width))
-    ERREXIT(cinfo, JERR_INPUT_EOF);
-  ptr = source->pub.buffer[0];
-  bufferptr = source->iobuffer;
-  for (col = cinfo->image_width; col > 0; col--) {
-    *ptr++ = rescale[UCH(*bufferptr++)];
-    *ptr++ = rescale[UCH(*bufferptr++)];
-    *ptr++ = rescale[UCH(*bufferptr++)];
-  }
-  return 1;
-}
-
-
-METHODDEF(JDIMENSION)
-get_raw_row (j_compress_ptr cinfo, cjpeg_source_ptr sinfo)
-/* This version is for reading raw-byte-format files with maxval = MAXJSAMPLE.
- * In this case we just read right into the JSAMPLE buffer!
- * Note that same code works for PPM and PGM files.
- */
-{
-  ppm_source_ptr source = (ppm_source_ptr) sinfo;
-
-  if (! ReadOK(source->pub.input_file, source->iobuffer, source->buffer_width))
-    ERREXIT(cinfo, JERR_INPUT_EOF);
-  return 1;
-}
-
-
-METHODDEF(JDIMENSION)
-get_word_gray_row (j_compress_ptr cinfo, cjpeg_source_ptr sinfo)
-/* This version is for reading raw-word-format PGM files with any maxval */
-{
-  ppm_source_ptr source = (ppm_source_ptr) sinfo;
-  register JSAMPROW ptr;
-  register U_CHAR * bufferptr;
-  register JSAMPLE *rescale = source->rescale;
-  JDIMENSION col;
-
-  if (! ReadOK(source->pub.input_file, source->iobuffer, source->buffer_width))
-    ERREXIT(cinfo, JERR_INPUT_EOF);
-  ptr = source->pub.buffer[0];
-  bufferptr = source->iobuffer;
-  for (col = cinfo->image_width; col > 0; col--) {
-    register int temp;
-    temp  = UCH(*bufferptr++);
-    temp |= UCH(*bufferptr++) << 8;
-    *ptr++ = rescale[temp];
-  }
-  return 1;
-}
-
-
-METHODDEF(JDIMENSION)
-get_word_rgb_row (j_compress_ptr cinfo, cjpeg_source_ptr sinfo)
-/* This version is for reading raw-word-format PPM files with any maxval */
-{
-  ppm_source_ptr source = (ppm_source_ptr) sinfo;
-  register JSAMPROW ptr;
-  register U_CHAR * bufferptr;
-  register JSAMPLE *rescale = source->rescale;
-  JDIMENSION col;
-
-  if (! ReadOK(source->pub.input_file, source->iobuffer, source->buffer_width))
-    ERREXIT(cinfo, JERR_INPUT_EOF);
-  ptr = source->pub.buffer[0];
-  bufferptr = source->iobuffer;
-  for (col = cinfo->image_width; col > 0; col--) {
-    register int temp;
-    temp  = UCH(*bufferptr++);
-    temp |= UCH(*bufferptr++) << 8;
-    *ptr++ = rescale[temp];
-    temp  = UCH(*bufferptr++);
-    temp |= UCH(*bufferptr++) << 8;
-    *ptr++ = rescale[temp];
-    temp  = UCH(*bufferptr++);
-    temp |= UCH(*bufferptr++) << 8;
-    *ptr++ = rescale[temp];
-  }
-  return 1;
-}
-
-
-/*
- * Read the file header; return image size and component count.
- */
-
-METHODDEF(void)
-start_input_ppm (j_compress_ptr cinfo, cjpeg_source_ptr sinfo)
-{
-  ppm_source_ptr source = (ppm_source_ptr) sinfo;
-  int c;
-  unsigned int w, h, maxval;
-  boolean need_iobuffer, use_raw_buffer, need_rescale;
-
-  if (getc(source->pub.input_file) != 'P')
-    ERREXIT(cinfo, JERR_PPM_NOT);
-
-  c = getc(source->pub.input_file); /* subformat discriminator character */
-
-  /* detect unsupported variants (ie, PBM) before trying to read header */
-  switch (c) {
-  case '2':			/* it's a text-format PGM file */
-  case '3':			/* it's a text-format PPM file */
-  case '5':			/* it's a raw-format PGM file */
-  case '6':			/* it's a raw-format PPM file */
-    break;
-  default:
-    ERREXIT(cinfo, JERR_PPM_NOT);
-    break;
-  }
-
-  /* fetch the remaining header info */
-  w = read_pbm_integer(cinfo, source->pub.input_file);
-  h = read_pbm_integer(cinfo, source->pub.input_file);
-  maxval = read_pbm_integer(cinfo, source->pub.input_file);
-
-  if (w <= 0 || h <= 0 || maxval <= 0) /* error check */
-    ERREXIT(cinfo, JERR_PPM_NOT);
-
-  cinfo->data_precision = BITS_IN_JSAMPLE; /* we always rescale data to this */
-  cinfo->image_width = (JDIMENSION) w;
-  cinfo->image_height = (JDIMENSION) h;
-
-  /* initialize flags to most common settings */
-  need_iobuffer = TRUE;		/* do we need an I/O buffer? */
-  use_raw_buffer = FALSE;	/* do we map input buffer onto I/O buffer? */
-  need_rescale = TRUE;		/* do we need a rescale array? */
-
-  switch (c) {
-  case '2':			/* it's a text-format PGM file */
-    cinfo->input_components = 1;
-    cinfo->in_color_space = JCS_GRAYSCALE;
-    TRACEMS2(cinfo, 1, JTRC_PGM_TEXT, w, h);
-    source->pub.get_pixel_rows = get_text_gray_row;
-    need_iobuffer = FALSE;
-    break;
-
-  case '3':			/* it's a text-format PPM file */
-    cinfo->input_components = 3;
-    cinfo->in_color_space = JCS_RGB;
-    TRACEMS2(cinfo, 1, JTRC_PPM_TEXT, w, h);
-    source->pub.get_pixel_rows = get_text_rgb_row;
-    need_iobuffer = FALSE;
-    break;
-
-  case '5':			/* it's a raw-format PGM file */
-    cinfo->input_components = 1;
-    cinfo->in_color_space = JCS_GRAYSCALE;
-    TRACEMS2(cinfo, 1, JTRC_PGM, w, h);
-    if (maxval > 255) {
-      source->pub.get_pixel_rows = get_word_gray_row;
-    } else if (maxval == MAXJSAMPLE && SIZEOF(JSAMPLE) == SIZEOF(U_CHAR)) {
-      source->pub.get_pixel_rows = get_raw_row;
-      use_raw_buffer = TRUE;
-      need_rescale = FALSE;
-    } else {
-      source->pub.get_pixel_rows = get_scaled_gray_row;
-    }
-    break;
-
-  case '6':			/* it's a raw-format PPM file */
-    cinfo->input_components = 3;
-    cinfo->in_color_space = JCS_RGB;
-    TRACEMS2(cinfo, 1, JTRC_PPM, w, h);
-    if (maxval > 255) {
-      source->pub.get_pixel_rows = get_word_rgb_row;
-    } else if (maxval == MAXJSAMPLE && SIZEOF(JSAMPLE) == SIZEOF(U_CHAR)) {
-      source->pub.get_pixel_rows = get_raw_row;
-      use_raw_buffer = TRUE;
-      need_rescale = FALSE;
-    } else {
-      source->pub.get_pixel_rows = get_scaled_rgb_row;
-    }
-    break;
-  }
-
-  /* Allocate space for I/O buffer: 1 or 3 bytes or words/pixel. */
-  if (need_iobuffer) {
-    source->buffer_width = (size_t) w * cinfo->input_components *
-      ((maxval<=255) ? SIZEOF(U_CHAR) : (2*SIZEOF(U_CHAR)));
-    source->iobuffer = (U_CHAR *)
-      (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
-				  source->buffer_width);
-  }
-
-  /* Create compressor input buffer. */
-  if (use_raw_buffer) {
-    /* For unscaled raw-input case, we can just map it onto the I/O buffer. */
-    /* Synthesize a JSAMPARRAY pointer structure */
-    /* Cast here implies near->far pointer conversion on PCs */
-    source->pixrow = (JSAMPROW) source->iobuffer;
-    source->pub.buffer = & source->pixrow;
-    source->pub.buffer_height = 1;
-  } else {
-    /* Need to translate anyway, so make a separate sample buffer. */
-    source->pub.buffer = (*cinfo->mem->alloc_sarray)
-      ((j_common_ptr) cinfo, JPOOL_IMAGE,
-       (JDIMENSION) w * cinfo->input_components, (JDIMENSION) 1);
-    source->pub.buffer_height = 1;
-  }
-
-  /* Compute the rescaling array if required. */
-  if (need_rescale) {
-    INT32 val, half_maxval;
-
-    /* On 16-bit-int machines we have to be careful of maxval = 65535 */
-    source->rescale = (JSAMPLE *)
-      (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
-				  (size_t) (((long) maxval + 1L) * SIZEOF(JSAMPLE)));
-    half_maxval = maxval / 2;
-    for (val = 0; val <= (INT32) maxval; val++) {
-      /* The multiplication here must be done in 32 bits to avoid overflow */
-      source->rescale[val] = (JSAMPLE) ((val*MAXJSAMPLE + half_maxval)/maxval);
-    }
-  }
-}
-
-
-/*
- * Finish up at the end of the file.
- */
-
-METHODDEF(void)
-finish_input_ppm (j_compress_ptr cinfo, cjpeg_source_ptr sinfo)
-{
-  /* no work */
-}
-
-
-/*
- * The module selection routine for PPM format input.
- */
-
-GLOBAL(cjpeg_source_ptr)
-jinit_read_ppm (j_compress_ptr cinfo)
-{
-  ppm_source_ptr source;
-
-  /* Create module interface object */
-  source = (ppm_source_ptr)
-      (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
-				  SIZEOF(ppm_source_struct));
-  /* Fill in method ptrs, except get_pixel_rows which start_input sets */
-  source->pub.start_input = start_input_ppm;
-  source->pub.finish_input = finish_input_ppm;
-
-  return (cjpeg_source_ptr) source;
-}
-
-#endif /* PPM_SUPPORTED */
diff --git a/src/libjpeg/rdrle.c b/src/libjpeg/rdrle.c
deleted file mode 100644
index df871e0..0000000
--- a/src/libjpeg/rdrle.c
+++ /dev/null
@@ -1,387 +0,0 @@
-/*
- * rdrle.c
- *
- * Copyright (C) 1991-1996, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains routines to read input images in Utah RLE format.
- * The Utah Raster Toolkit library is required (version 3.1 or later).
- *
- * These routines may need modification for non-Unix environments or
- * specialized applications.  As they stand, they assume input from
- * an ordinary stdio stream.  They further assume that reading begins
- * at the start of the file; start_input may need work if the
- * user interface has already read some data (e.g., to determine that
- * the file is indeed RLE format).
- *
- * Based on code contributed by Mike Lijewski,
- * with updates from Robert Hutchinson.
- */
-
-#include "cdjpeg.h"		/* Common decls for cjpeg/djpeg applications */
-
-#ifdef RLE_SUPPORTED
-
-/* rle.h is provided by the Utah Raster Toolkit. */
-
-#include <rle.h>
-
-/*
- * We assume that JSAMPLE has the same representation as rle_pixel,
- * to wit, "unsigned char".  Hence we can't cope with 12- or 16-bit samples.
- */
-
-#if BITS_IN_JSAMPLE != 8
-  Sorry, this code only copes with 8-bit JSAMPLEs. /* deliberate syntax err */
-#endif
-
-/*
- * We support the following types of RLE files:
- *   
- *   GRAYSCALE   - 8 bits, no colormap
- *   MAPPEDGRAY  - 8 bits, 1 channel colomap
- *   PSEUDOCOLOR - 8 bits, 3 channel colormap
- *   TRUECOLOR   - 24 bits, 3 channel colormap
- *   DIRECTCOLOR - 24 bits, no colormap
- *
- * For now, we ignore any alpha channel in the image.
- */
-
-typedef enum
-  { GRAYSCALE, MAPPEDGRAY, PSEUDOCOLOR, TRUECOLOR, DIRECTCOLOR } rle_kind;
-
-
-/*
- * Since RLE stores scanlines bottom-to-top, we have to invert the image
- * to conform to JPEG's top-to-bottom order.  To do this, we read the
- * incoming image into a virtual array on the first get_pixel_rows call,
- * then fetch the required row from the virtual array on subsequent calls.
- */
-
-typedef struct _rle_source_struct * rle_source_ptr;
-
-typedef struct _rle_source_struct {
-  struct cjpeg_source_struct pub; /* public fields */
-
-  rle_kind visual;              /* actual type of input file */
-  jvirt_sarray_ptr image;       /* virtual array to hold the image */
-  JDIMENSION row;		/* current row # in the virtual array */
-  rle_hdr header;               /* Input file information */
-  rle_pixel** rle_row;          /* holds a row returned by rle_getrow() */
-
-} rle_source_struct;
-
-
-/*
- * Read the file header; return image size and component count.
- */
-
-METHODDEF(void)
-start_input_rle (j_compress_ptr cinfo, cjpeg_source_ptr sinfo)
-{
-  rle_source_ptr source = (rle_source_ptr) sinfo;
-  JDIMENSION width, height;
-#ifdef PROGRESS_REPORT
-  cd_progress_ptr progress = (cd_progress_ptr) cinfo->progress;
-#endif
-
-  /* Use RLE library routine to get the header info */
-  source->header = *rle_hdr_init(NULL);
-  source->header.rle_file = source->pub.input_file;
-  switch (rle_get_setup(&(source->header))) {
-  case RLE_SUCCESS:
-    /* A-OK */
-    break;
-  case RLE_NOT_RLE:
-    ERREXIT(cinfo, JERR_RLE_NOT);
-    break;
-  case RLE_NO_SPACE:
-    ERREXIT(cinfo, JERR_RLE_MEM);
-    break;
-  case RLE_EMPTY:
-    ERREXIT(cinfo, JERR_RLE_EMPTY);
-    break;
-  case RLE_EOF:
-    ERREXIT(cinfo, JERR_RLE_EOF);
-    break;
-  default:
-    ERREXIT(cinfo, JERR_RLE_BADERROR);
-    break;
-  }
-
-  /* Figure out what we have, set private vars and return values accordingly */
-  
-  width  = source->header.xmax - source->header.xmin + 1;
-  height = source->header.ymax - source->header.ymin + 1;
-  source->header.xmin = 0;		/* realign horizontally */
-  source->header.xmax = width-1;
-
-  cinfo->image_width      = width;
-  cinfo->image_height     = height;
-  cinfo->data_precision   = 8;  /* we can only handle 8 bit data */
-
-  if (source->header.ncolors == 1 && source->header.ncmap == 0) {
-    source->visual     = GRAYSCALE;
-    TRACEMS2(cinfo, 1, JTRC_RLE_GRAY, width, height);
-  } else if (source->header.ncolors == 1 && source->header.ncmap == 1) {
-    source->visual     = MAPPEDGRAY;
-    TRACEMS3(cinfo, 1, JTRC_RLE_MAPGRAY, width, height,
-             1 << source->header.cmaplen);
-  } else if (source->header.ncolors == 1 && source->header.ncmap == 3) {
-    source->visual     = PSEUDOCOLOR;
-    TRACEMS3(cinfo, 1, JTRC_RLE_MAPPED, width, height,
-	     1 << source->header.cmaplen);
-  } else if (source->header.ncolors == 3 && source->header.ncmap == 3) {
-    source->visual     = TRUECOLOR;
-    TRACEMS3(cinfo, 1, JTRC_RLE_FULLMAP, width, height,
-	     1 << source->header.cmaplen);
-  } else if (source->header.ncolors == 3 && source->header.ncmap == 0) {
-    source->visual     = DIRECTCOLOR;
-    TRACEMS2(cinfo, 1, JTRC_RLE, width, height);
-  } else
-    ERREXIT(cinfo, JERR_RLE_UNSUPPORTED);
-  
-  if (source->visual == GRAYSCALE || source->visual == MAPPEDGRAY) {
-    cinfo->in_color_space   = JCS_GRAYSCALE;
-    cinfo->input_components = 1;
-  } else {
-    cinfo->in_color_space   = JCS_RGB;
-    cinfo->input_components = 3;
-  }
-
-  /*
-   * A place to hold each scanline while it's converted.
-   * (GRAYSCALE scanlines don't need converting)
-   */
-  if (source->visual != GRAYSCALE) {
-    source->rle_row = (rle_pixel**) (*cinfo->mem->alloc_sarray)
-      ((j_common_ptr) cinfo, JPOOL_IMAGE,
-       (JDIMENSION) width, (JDIMENSION) cinfo->input_components);
-  }
-
-  /* request a virtual array to hold the image */
-  source->image = (*cinfo->mem->request_virt_sarray)
-    ((j_common_ptr) cinfo, JPOOL_IMAGE, FALSE,
-     (JDIMENSION) (width * source->header.ncolors),
-     (JDIMENSION) height, (JDIMENSION) 1);
-
-#ifdef PROGRESS_REPORT
-  if (progress != NULL) {
-    /* count file input as separate pass */
-    progress->total_extra_passes++;
-  }
-#endif
-
-  source->pub.buffer_height = 1;
-}
-
-
-/*
- * Read one row of pixels.
- * Called only after load_image has read the image into the virtual array.
- * Used for GRAYSCALE, MAPPEDGRAY, TRUECOLOR, and DIRECTCOLOR images.
- */
-
-METHODDEF(JDIMENSION)
-get_rle_row (j_compress_ptr cinfo, cjpeg_source_ptr sinfo)
-{
-  rle_source_ptr source = (rle_source_ptr) sinfo;
-
-  source->row--;
-  source->pub.buffer = (*cinfo->mem->access_virt_sarray)
-    ((j_common_ptr) cinfo, source->image, source->row, (JDIMENSION) 1, FALSE);
-
-  return 1;
-}
-
-/*
- * Read one row of pixels.
- * Called only after load_image has read the image into the virtual array.
- * Used for PSEUDOCOLOR images.
- */
-
-METHODDEF(JDIMENSION)
-get_pseudocolor_row (j_compress_ptr cinfo, cjpeg_source_ptr sinfo)
-{
-  rle_source_ptr source = (rle_source_ptr) sinfo;
-  JSAMPROW src_row, dest_row;
-  JDIMENSION col;
-  rle_map *colormap;
-  int val;
-
-  colormap = source->header.cmap;
-  dest_row = source->pub.buffer[0];
-  source->row--;
-  src_row = * (*cinfo->mem->access_virt_sarray)
-    ((j_common_ptr) cinfo, source->image, source->row, (JDIMENSION) 1, FALSE);
-
-  for (col = cinfo->image_width; col > 0; col--) {
-    val = GETJSAMPLE(*src_row++);
-    *dest_row++ = (JSAMPLE) (colormap[val      ] >> 8);
-    *dest_row++ = (JSAMPLE) (colormap[val + 256] >> 8);
-    *dest_row++ = (JSAMPLE) (colormap[val + 512] >> 8);
-  }
-
-  return 1;
-}
-
-
-/*
- * Load the image into a virtual array.  We have to do this because RLE
- * files start at the lower left while the JPEG standard has them starting
- * in the upper left.  This is called the first time we want to get a row
- * of input.  What we do is load the RLE data into the array and then call
- * the appropriate routine to read one row from the array.  Before returning,
- * we set source->pub.get_pixel_rows so that subsequent calls go straight to
- * the appropriate row-reading routine.
- */
-
-METHODDEF(JDIMENSION)
-load_image (j_compress_ptr cinfo, cjpeg_source_ptr sinfo)
-{
-  rle_source_ptr source = (rle_source_ptr) sinfo;
-  JDIMENSION row, col;
-  JSAMPROW  scanline, red_ptr, green_ptr, blue_ptr;
-  rle_pixel **rle_row;
-  rle_map *colormap;
-  char channel;
-#ifdef PROGRESS_REPORT
-  cd_progress_ptr progress = (cd_progress_ptr) cinfo->progress;
-#endif
-
-  colormap = source->header.cmap;
-  rle_row = source->rle_row;
-
-  /* Read the RLE data into our virtual array.
-   * We assume here that (a) rle_pixel is represented the same as JSAMPLE,
-   * and (b) we are not on a machine where FAR pointers differ from regular.
-   */
-  RLE_CLR_BIT(source->header, RLE_ALPHA); /* don't read the alpha channel */
-
-#ifdef PROGRESS_REPORT
-  if (progress != NULL) {
-    progress->pub.pass_limit = cinfo->image_height;
-    progress->pub.pass_counter = 0;
-    (*progress->pub.progress_monitor) ((j_common_ptr) cinfo);
-  }
-#endif
-
-  switch (source->visual) {
-
-  case GRAYSCALE:
-  case PSEUDOCOLOR:
-    for (row = 0; row < cinfo->image_height; row++) {
-      rle_row = (rle_pixel **) (*cinfo->mem->access_virt_sarray)
-         ((j_common_ptr) cinfo, source->image, row, (JDIMENSION) 1, TRUE);
-      rle_getrow(&source->header, rle_row);
-#ifdef PROGRESS_REPORT
-      if (progress != NULL) {
-        progress->pub.pass_counter++;
-        (*progress->pub.progress_monitor) ((j_common_ptr) cinfo);
-      }
-#endif
-    }
-    break;
-
-  case MAPPEDGRAY:
-  case TRUECOLOR:
-    for (row = 0; row < cinfo->image_height; row++) {
-      scanline = * (*cinfo->mem->access_virt_sarray)
-        ((j_common_ptr) cinfo, source->image, row, (JDIMENSION) 1, TRUE);
-      rle_row = source->rle_row;
-      rle_getrow(&source->header, rle_row);
-
-      for (col = 0; col < cinfo->image_width; col++) {
-        for (channel = 0; channel < source->header.ncolors; channel++) {
-          *scanline++ = (JSAMPLE)
-            (colormap[GETJSAMPLE(rle_row[channel][col]) + 256 * channel] >> 8);
-        }
-      }
-
-#ifdef PROGRESS_REPORT
-      if (progress != NULL) {
-        progress->pub.pass_counter++;
-        (*progress->pub.progress_monitor) ((j_common_ptr) cinfo);
-      }
-#endif
-    }
-    break;
-
-  case DIRECTCOLOR:
-    for (row = 0; row < cinfo->image_height; row++) {
-      scanline = * (*cinfo->mem->access_virt_sarray)
-        ((j_common_ptr) cinfo, source->image, row, (JDIMENSION) 1, TRUE);
-      rle_getrow(&source->header, rle_row);
-
-      red_ptr   = rle_row[0];
-      green_ptr = rle_row[1];
-      blue_ptr  = rle_row[2];
-
-      for (col = cinfo->image_width; col > 0; col--) {
-        *scanline++ = *red_ptr++;
-        *scanline++ = *green_ptr++;
-        *scanline++ = *blue_ptr++;
-      }
-
-#ifdef PROGRESS_REPORT
-      if (progress != NULL) {
-        progress->pub.pass_counter++;
-        (*progress->pub.progress_monitor) ((j_common_ptr) cinfo);
-      }
-#endif
-    }
-  }
-
-#ifdef PROGRESS_REPORT
-  if (progress != NULL)
-    progress->completed_extra_passes++;
-#endif
-
-  /* Set up to call proper row-extraction routine in future */
-  if (source->visual == PSEUDOCOLOR) {
-    source->pub.buffer = source->rle_row;
-    source->pub.get_pixel_rows = get_pseudocolor_row;
-  } else {
-    source->pub.get_pixel_rows = get_rle_row;
-  }
-  source->row = cinfo->image_height;
-
-  /* And fetch the topmost (bottommost) row */
-  return (*source->pub.get_pixel_rows) (cinfo, sinfo);   
-}
-
-
-/*
- * Finish up at the end of the file.
- */
-
-METHODDEF(void)
-finish_input_rle (j_compress_ptr cinfo, cjpeg_source_ptr sinfo)
-{
-  /* no work */
-}
-
-
-/*
- * The module selection routine for RLE format input.
- */
-
-GLOBAL(cjpeg_source_ptr)
-jinit_read_rle (j_compress_ptr cinfo)
-{
-  rle_source_ptr source;
-
-  /* Create module interface object */
-  source = (rle_source_ptr)
-      (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
-                                  SIZEOF(rle_source_struct));
-  /* Fill in method ptrs */
-  source->pub.start_input = start_input_rle;
-  source->pub.finish_input = finish_input_rle;
-  source->pub.get_pixel_rows = load_image;
-
-  return (cjpeg_source_ptr) source;
-}
-
-#endif /* RLE_SUPPORTED */
diff --git a/src/libjpeg/rdswitch.c b/src/libjpeg/rdswitch.c
deleted file mode 100644
index b915ad9..0000000
--- a/src/libjpeg/rdswitch.c
+++ /dev/null
@@ -1,332 +0,0 @@
-/*
- * rdswitch.c
- *
- * Copyright (C) 1991-1996, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains routines to process some of cjpeg's more complicated
- * command-line switches.  Switches processed here are:
- *	-qtables file		Read quantization tables from text file
- *	-scans file		Read scan script from text file
- *	-qslots N[,N,...]	Set component quantization table selectors
- *	-sample HxV[,HxV,...]	Set component sampling factors
- */
-
-#include "cdjpeg.h"		/* Common decls for cjpeg/djpeg applications */
-#include <ctype.h>		/* to declare isdigit(), isspace() */
-
-
-LOCAL(int)
-text_getc (FILE * file)
-/* Read next char, skipping over any comments (# to end of line) */
-/* A comment/newline sequence is returned as a newline */
-{
-  register int ch;
-  
-  ch = getc(file);
-  if (ch == '#') {
-    do {
-      ch = getc(file);
-    } while (ch != '\n' && ch != EOF);
-  }
-  return ch;
-}
-
-
-LOCAL(boolean)
-read_text_integer (FILE * file, long * result, int * termchar)
-/* Read an unsigned decimal integer from a file, store it in result */
-/* Reads one trailing character after the integer; returns it in termchar */
-{
-  register int ch;
-  register long val;
-  
-  /* Skip any leading whitespace, detect EOF */
-  do {
-    ch = text_getc(file);
-    if (ch == EOF) {
-      *termchar = ch;
-      return FALSE;
-    }
-  } while (isspace(ch));
-  
-  if (! isdigit(ch)) {
-    *termchar = ch;
-    return FALSE;
-  }
-
-  val = ch - '0';
-  while ((ch = text_getc(file)) != EOF) {
-    if (! isdigit(ch))
-      break;
-    val *= 10;
-    val += ch - '0';
-  }
-  *result = val;
-  *termchar = ch;
-  return TRUE;
-}
-
-
-GLOBAL(boolean)
-read_quant_tables (j_compress_ptr cinfo, char * filename,
-		   int scale_factor, boolean force_baseline)
-/* Read a set of quantization tables from the specified file.
- * The file is plain ASCII text: decimal numbers with whitespace between.
- * Comments preceded by '#' may be included in the file.
- * There may be one to NUM_QUANT_TBLS tables in the file, each of 64 values.
- * The tables are implicitly numbered 0,1,etc.
- * NOTE: does not affect the qslots mapping, which will default to selecting
- * table 0 for luminance (or primary) components, 1 for chrominance components.
- * You must use -qslots if you want a different component->table mapping.
- */
-{
-  FILE * fp;
-  int tblno, i, termchar;
-  long val;
-  unsigned int table[DCTSIZE2];
-
-  if ((fp = fopen(filename, "r")) == NULL) {
-    fprintf(stderr, "Can't open table file %s\n", filename);
-    return FALSE;
-  }
-  tblno = 0;
-
-  while (read_text_integer(fp, &val, &termchar)) { /* read 1st element of table */
-    if (tblno >= NUM_QUANT_TBLS) {
-      fprintf(stderr, "Too many tables in file %s\n", filename);
-      fclose(fp);
-      return FALSE;
-    }
-    table[0] = (unsigned int) val;
-    for (i = 1; i < DCTSIZE2; i++) {
-      if (! read_text_integer(fp, &val, &termchar)) {
-	fprintf(stderr, "Invalid table data in file %s\n", filename);
-	fclose(fp);
-	return FALSE;
-      }
-      table[i] = (unsigned int) val;
-    }
-    jpeg_add_quant_table(cinfo, tblno, table, scale_factor, force_baseline);
-    tblno++;
-  }
-
-  if (termchar != EOF) {
-    fprintf(stderr, "Non-numeric data in file %s\n", filename);
-    fclose(fp);
-    return FALSE;
-  }
-
-  fclose(fp);
-  return TRUE;
-}
-
-
-#ifdef C_MULTISCAN_FILES_SUPPORTED
-
-LOCAL(boolean)
-read_scan_integer (FILE * file, long * result, int * termchar)
-/* Variant of read_text_integer that always looks for a non-space termchar;
- * this simplifies parsing of punctuation in scan scripts.
- */
-{
-  register int ch;
-
-  if (! read_text_integer(file, result, termchar))
-    return FALSE;
-  ch = *termchar;
-  while (ch != EOF && isspace(ch))
-    ch = text_getc(file);
-  if (isdigit(ch)) {		/* oops, put it back */
-    if (ungetc(ch, file) == EOF)
-      return FALSE;
-    ch = ' ';
-  } else {
-    /* Any separators other than ';' and ':' are ignored;
-     * this allows user to insert commas, etc, if desired.
-     */
-    if (ch != EOF && ch != ';' && ch != ':')
-      ch = ' ';
-  }
-  *termchar = ch;
-  return TRUE;
-}
-
-
-GLOBAL(boolean)
-read_scan_script (j_compress_ptr cinfo, char * filename)
-/* Read a scan script from the specified text file.
- * Each entry in the file defines one scan to be emitted.
- * Entries are separated by semicolons ';'.
- * An entry contains one to four component indexes,
- * optionally followed by a colon ':' and four progressive-JPEG parameters.
- * The component indexes denote which component(s) are to be transmitted
- * in the current scan.  The first component has index 0.
- * Sequential JPEG is used if the progressive-JPEG parameters are omitted.
- * The file is free format text: any whitespace may appear between numbers
- * and the ':' and ';' punctuation marks.  Also, other punctuation (such
- * as commas or dashes) can be placed between numbers if desired.
- * Comments preceded by '#' may be included in the file.
- * Note: we do very little validity checking here;
- * jcmaster.c will validate the script parameters.
- */
-{
-  FILE * fp;
-  int scanno, ncomps, termchar;
-  long val;
-  jpeg_scan_info * scanptr;
-#define MAX_SCANS  100		/* quite arbitrary limit */
-  jpeg_scan_info scans[MAX_SCANS];
-
-  if ((fp = fopen(filename, "r")) == NULL) {
-    fprintf(stderr, "Can't open scan definition file %s\n", filename);
-    return FALSE;
-  }
-  scanptr = scans;
-  scanno = 0;
-
-  while (read_scan_integer(fp, &val, &termchar)) {
-    if (scanno >= MAX_SCANS) {
-      fprintf(stderr, "Too many scans defined in file %s\n", filename);
-      fclose(fp);
-      return FALSE;
-    }
-    scanptr->component_index[0] = (int) val;
-    ncomps = 1;
-    while (termchar == ' ') {
-      if (ncomps >= MAX_COMPS_IN_SCAN) {
-	fprintf(stderr, "Too many components in one scan in file %s\n",
-		filename);
-	fclose(fp);
-	return FALSE;
-      }
-      if (! read_scan_integer(fp, &val, &termchar))
-	goto bogus;
-      scanptr->component_index[ncomps] = (int) val;
-      ncomps++;
-    }
-    scanptr->comps_in_scan = ncomps;
-    if (termchar == ':') {
-      if (! read_scan_integer(fp, &val, &termchar) || termchar != ' ')
-	goto bogus;
-      scanptr->Ss = (int) val;
-      if (! read_scan_integer(fp, &val, &termchar) || termchar != ' ')
-	goto bogus;
-      scanptr->Se = (int) val;
-      if (! read_scan_integer(fp, &val, &termchar) || termchar != ' ')
-	goto bogus;
-      scanptr->Ah = (int) val;
-      if (! read_scan_integer(fp, &val, &termchar))
-	goto bogus;
-      scanptr->Al = (int) val;
-    } else {
-      /* set non-progressive parameters */
-      scanptr->Ss = 0;
-      scanptr->Se = DCTSIZE2-1;
-      scanptr->Ah = 0;
-      scanptr->Al = 0;
-    }
-    if (termchar != ';' && termchar != EOF) {
-bogus:
-      fprintf(stderr, "Invalid scan entry format in file %s\n", filename);
-      fclose(fp);
-      return FALSE;
-    }
-    scanptr++, scanno++;
-  }
-
-  if (termchar != EOF) {
-    fprintf(stderr, "Non-numeric data in file %s\n", filename);
-    fclose(fp);
-    return FALSE;
-  }
-
-  if (scanno > 0) {
-    /* Stash completed scan list in cinfo structure.
-     * NOTE: for cjpeg's use, JPOOL_IMAGE is the right lifetime for this data,
-     * but if you want to compress multiple images you'd want JPOOL_PERMANENT.
-     */
-    scanptr = (jpeg_scan_info *)
-      (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
-				  scanno * SIZEOF(jpeg_scan_info));
-    MEMCOPY(scanptr, scans, scanno * SIZEOF(jpeg_scan_info));
-    cinfo->scan_info = scanptr;
-    cinfo->num_scans = scanno;
-  }
-
-  fclose(fp);
-  return TRUE;
-}
-
-#endif /* C_MULTISCAN_FILES_SUPPORTED */
-
-
-GLOBAL(boolean)
-set_quant_slots (j_compress_ptr cinfo, char *arg)
-/* Process a quantization-table-selectors parameter string, of the form
- *     N[,N,...]
- * If there are more components than parameters, the last value is replicated.
- */
-{
-  int val = 0;			/* default table # */
-  int ci;
-  char ch;
-
-  for (ci = 0; ci < MAX_COMPONENTS; ci++) {
-    if (*arg) {
-      ch = ',';			/* if not set by sscanf, will be ',' */
-      if (sscanf(arg, "%d%c", &val, &ch) < 1)
-	return FALSE;
-      if (ch != ',')		/* syntax check */
-	return FALSE;
-      if (val < 0 || val >= NUM_QUANT_TBLS) {
-	fprintf(stderr, "JPEG quantization tables are numbered 0..%d\n",
-		NUM_QUANT_TBLS-1);
-	return FALSE;
-      }
-      cinfo->comp_info[ci].quant_tbl_no = val;
-      while (*arg && *arg++ != ',') /* advance to next segment of arg string */
-	;
-    } else {
-      /* reached end of parameter, set remaining components to last table */
-      cinfo->comp_info[ci].quant_tbl_no = val;
-    }
-  }
-  return TRUE;
-}
-
-
-GLOBAL(boolean)
-set_sample_factors (j_compress_ptr cinfo, char *arg)
-/* Process a sample-factors parameter string, of the form
- *     HxV[,HxV,...]
- * If there are more components than parameters, "1x1" is assumed for the rest.
- */
-{
-  int ci, val1, val2;
-  char ch1, ch2;
-
-  for (ci = 0; ci < MAX_COMPONENTS; ci++) {
-    if (*arg) {
-      ch2 = ',';		/* if not set by sscanf, will be ',' */
-      if (sscanf(arg, "%d%c%d%c", &val1, &ch1, &val2, &ch2) < 3)
-	return FALSE;
-      if ((ch1 != 'x' && ch1 != 'X') || ch2 != ',') /* syntax check */
-	return FALSE;
-      if (val1 <= 0 || val1 > 4 || val2 <= 0 || val2 > 4) {
-	fprintf(stderr, "JPEG sampling factors must be 1..4\n");
-	return FALSE;
-      }
-      cinfo->comp_info[ci].h_samp_factor = val1;
-      cinfo->comp_info[ci].v_samp_factor = val2;
-      while (*arg && *arg++ != ',') /* advance to next segment of arg string */
-	;
-    } else {
-      /* reached end of parameter, set remaining components to 1x1 sampling */
-      cinfo->comp_info[ci].h_samp_factor = 1;
-      cinfo->comp_info[ci].v_samp_factor = 1;
-    }
-  }
-  return TRUE;
-}
diff --git a/src/libjpeg/rdtarga.c b/src/libjpeg/rdtarga.c
deleted file mode 100644
index d7ffc33..0000000
--- a/src/libjpeg/rdtarga.c
+++ /dev/null
@@ -1,500 +0,0 @@
-/*
- * rdtarga.c
- *
- * Copyright (C) 1991-1996, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains routines to read input images in Targa format.
- *
- * These routines may need modification for non-Unix environments or
- * specialized applications.  As they stand, they assume input from
- * an ordinary stdio stream.  They further assume that reading begins
- * at the start of the file; start_input may need work if the
- * user interface has already read some data (e.g., to determine that
- * the file is indeed Targa format).
- *
- * Based on code contributed by Lee Daniel Crocker.
- */
-
-#include "cdjpeg.h"		/* Common decls for cjpeg/djpeg applications */
-
-#ifdef TARGA_SUPPORTED
-
-
-/* Macros to deal with unsigned chars as efficiently as compiler allows */
-
-#ifdef HAVE_UNSIGNED_CHAR
-typedef unsigned char U_CHAR;
-#define UCH(x)	((int) (x))
-#else /* !HAVE_UNSIGNED_CHAR */
-#ifdef CHAR_IS_UNSIGNED
-typedef char U_CHAR;
-#define UCH(x)	((int) (x))
-#else
-typedef char U_CHAR;
-#define UCH(x)	((int) (x) & 0xFF)
-#endif
-#endif /* HAVE_UNSIGNED_CHAR */
-
-
-#define	ReadOK(file,buffer,len)	(JFREAD(file,buffer,len) == ((size_t) (len)))
-
-
-/* Private version of data source object */
-
-typedef struct _tga_source_struct * tga_source_ptr;
-
-typedef struct _tga_source_struct {
-  struct cjpeg_source_struct pub; /* public fields */
-
-  j_compress_ptr cinfo;		/* back link saves passing separate parm */
-
-  JSAMPARRAY colormap;		/* Targa colormap (converted to my format) */
-
-  jvirt_sarray_ptr whole_image;	/* Needed if funny input row order */
-  JDIMENSION current_row;	/* Current logical row number to read */
-
-  /* Pointer to routine to extract next Targa pixel from input file */
-  JMETHOD(void, read_pixel, (tga_source_ptr sinfo));
-
-  /* Result of read_pixel is delivered here: */
-  U_CHAR tga_pixel[4];
-
-  int pixel_size;		/* Bytes per Targa pixel (1 to 4) */
-
-  /* State info for reading RLE-coded pixels; both counts must be init to 0 */
-  int block_count;		/* # of pixels remaining in RLE block */
-  int dup_pixel_count;		/* # of times to duplicate previous pixel */
-
-  /* This saves the correct pixel-row-expansion method for preload_image */
-  JMETHOD(JDIMENSION, get_pixel_rows, (j_compress_ptr cinfo,
-				       cjpeg_source_ptr sinfo));
-} tga_source_struct;
-
-
-/* For expanding 5-bit pixel values to 8-bit with best rounding */
-
-static const UINT8 c5to8bits[32] = {
-    0,   8,  16,  25,  33,  41,  49,  58,
-   66,  74,  82,  90,  99, 107, 115, 123,
-  132, 140, 148, 156, 165, 173, 181, 189,
-  197, 206, 214, 222, 230, 239, 247, 255
-};
-
-
-
-LOCAL(int)
-read_byte (tga_source_ptr sinfo)
-/* Read next byte from Targa file */
-{
-  register FILE *infile = sinfo->pub.input_file;
-  register int c;
-
-  if ((c = getc(infile)) == EOF)
-    ERREXIT(sinfo->cinfo, JERR_INPUT_EOF);
-  return c;
-}
-
-
-LOCAL(void)
-read_colormap (tga_source_ptr sinfo, int cmaplen, int mapentrysize)
-/* Read the colormap from a Targa file */
-{
-  int i;
-
-  /* Presently only handles 24-bit BGR format */
-  if (mapentrysize != 24)
-    ERREXIT(sinfo->cinfo, JERR_TGA_BADCMAP);
-
-  for (i = 0; i < cmaplen; i++) {
-    sinfo->colormap[2][i] = (JSAMPLE) read_byte(sinfo);
-    sinfo->colormap[1][i] = (JSAMPLE) read_byte(sinfo);
-    sinfo->colormap[0][i] = (JSAMPLE) read_byte(sinfo);
-  }
-}
-
-
-/*
- * read_pixel methods: get a single pixel from Targa file into tga_pixel[]
- */
-
-METHODDEF(void)
-read_non_rle_pixel (tga_source_ptr sinfo)
-/* Read one Targa pixel from the input file; no RLE expansion */
-{
-  register FILE *infile = sinfo->pub.input_file;
-  register int i;
-
-  for (i = 0; i < sinfo->pixel_size; i++) {
-    sinfo->tga_pixel[i] = (U_CHAR) getc(infile);
-  }
-}
-
-
-METHODDEF(void)
-read_rle_pixel (tga_source_ptr sinfo)
-/* Read one Targa pixel from the input file, expanding RLE data as needed */
-{
-  register FILE *infile = sinfo->pub.input_file;
-  register int i;
-
-  /* Duplicate previously read pixel? */
-  if (sinfo->dup_pixel_count > 0) {
-    sinfo->dup_pixel_count--;
-    return;
-  }
-
-  /* Time to read RLE block header? */
-  if (--sinfo->block_count < 0) { /* decrement pixels remaining in block */
-    i = read_byte(sinfo);
-    if (i & 0x80) {		/* Start of duplicate-pixel block? */
-      sinfo->dup_pixel_count = i & 0x7F; /* number of dups after this one */
-      sinfo->block_count = 0;	/* then read new block header */
-    } else {
-      sinfo->block_count = i & 0x7F; /* number of pixels after this one */
-    }
-  }
-
-  /* Read next pixel */
-  for (i = 0; i < sinfo->pixel_size; i++) {
-    sinfo->tga_pixel[i] = (U_CHAR) getc(infile);
-  }
-}
-
-
-/*
- * Read one row of pixels.
- *
- * We provide several different versions depending on input file format.
- */
-
-
-METHODDEF(JDIMENSION)
-get_8bit_gray_row (j_compress_ptr cinfo, cjpeg_source_ptr sinfo)
-/* This version is for reading 8-bit grayscale pixels */
-{
-  tga_source_ptr source = (tga_source_ptr) sinfo;
-  register JSAMPROW ptr;
-  register JDIMENSION col;
-  
-  ptr = source->pub.buffer[0];
-  for (col = cinfo->image_width; col > 0; col--) {
-    (*source->read_pixel) (source); /* Load next pixel into tga_pixel */
-    *ptr++ = (JSAMPLE) UCH(source->tga_pixel[0]);
-  }
-  return 1;
-}
-
-METHODDEF(JDIMENSION)
-get_8bit_row (j_compress_ptr cinfo, cjpeg_source_ptr sinfo)
-/* This version is for reading 8-bit colormap indexes */
-{
-  tga_source_ptr source = (tga_source_ptr) sinfo;
-  register int t;
-  register JSAMPROW ptr;
-  register JDIMENSION col;
-  register JSAMPARRAY colormap = source->colormap;
-
-  ptr = source->pub.buffer[0];
-  for (col = cinfo->image_width; col > 0; col--) {
-    (*source->read_pixel) (source); /* Load next pixel into tga_pixel */
-    t = UCH(source->tga_pixel[0]);
-    *ptr++ = colormap[0][t];
-    *ptr++ = colormap[1][t];
-    *ptr++ = colormap[2][t];
-  }
-  return 1;
-}
-
-METHODDEF(JDIMENSION)
-get_16bit_row (j_compress_ptr cinfo, cjpeg_source_ptr sinfo)
-/* This version is for reading 16-bit pixels */
-{
-  tga_source_ptr source = (tga_source_ptr) sinfo;
-  register int t;
-  register JSAMPROW ptr;
-  register JDIMENSION col;
-  
-  ptr = source->pub.buffer[0];
-  for (col = cinfo->image_width; col > 0; col--) {
-    (*source->read_pixel) (source); /* Load next pixel into tga_pixel */
-    t = UCH(source->tga_pixel[0]);
-    t += UCH(source->tga_pixel[1]) << 8;
-    /* We expand 5 bit data to 8 bit sample width.
-     * The format of the 16-bit (LSB first) input word is
-     *     xRRRRRGGGGGBBBBB
-     */
-    ptr[2] = (JSAMPLE) c5to8bits[t & 0x1F];
-    t >>= 5;
-    ptr[1] = (JSAMPLE) c5to8bits[t & 0x1F];
-    t >>= 5;
-    ptr[0] = (JSAMPLE) c5to8bits[t & 0x1F];
-    ptr += 3;
-  }
-  return 1;
-}
-
-METHODDEF(JDIMENSION)
-get_24bit_row (j_compress_ptr cinfo, cjpeg_source_ptr sinfo)
-/* This version is for reading 24-bit pixels */
-{
-  tga_source_ptr source = (tga_source_ptr) sinfo;
-  register JSAMPROW ptr;
-  register JDIMENSION col;
-  
-  ptr = source->pub.buffer[0];
-  for (col = cinfo->image_width; col > 0; col--) {
-    (*source->read_pixel) (source); /* Load next pixel into tga_pixel */
-    *ptr++ = (JSAMPLE) UCH(source->tga_pixel[2]); /* change BGR to RGB order */
-    *ptr++ = (JSAMPLE) UCH(source->tga_pixel[1]);
-    *ptr++ = (JSAMPLE) UCH(source->tga_pixel[0]);
-  }
-  return 1;
-}
-
-/*
- * Targa also defines a 32-bit pixel format with order B,G,R,A.
- * We presently ignore the attribute byte, so the code for reading
- * these pixels is identical to the 24-bit routine above.
- * This works because the actual pixel length is only known to read_pixel.
- */
-
-#define get_32bit_row  get_24bit_row
-
-
-/*
- * This method is for re-reading the input data in standard top-down
- * row order.  The entire image has already been read into whole_image
- * with proper conversion of pixel format, but it's in a funny row order.
- */
-
-METHODDEF(JDIMENSION)
-get_memory_row (j_compress_ptr cinfo, cjpeg_source_ptr sinfo)
-{
-  tga_source_ptr source = (tga_source_ptr) sinfo;
-  JDIMENSION source_row;
-
-  /* Compute row of source that maps to current_row of normal order */
-  /* For now, assume image is bottom-up and not interlaced. */
-  /* NEEDS WORK to support interlaced images! */
-  source_row = cinfo->image_height - source->current_row - 1;
-
-  /* Fetch that row from virtual array */
-  source->pub.buffer = (*cinfo->mem->access_virt_sarray)
-    ((j_common_ptr) cinfo, source->whole_image,
-     source_row, (JDIMENSION) 1, FALSE);
-
-  source->current_row++;
-  return 1;
-}
-
-
-/*
- * This method loads the image into whole_image during the first call on
- * get_pixel_rows.  The get_pixel_rows pointer is then adjusted to call
- * get_memory_row on subsequent calls.
- */
-
-METHODDEF(JDIMENSION)
-preload_image (j_compress_ptr cinfo, cjpeg_source_ptr sinfo)
-{
-  tga_source_ptr source = (tga_source_ptr) sinfo;
-  JDIMENSION row;
-  cd_progress_ptr progress = (cd_progress_ptr) cinfo->progress;
-
-  /* Read the data into a virtual array in input-file row order. */
-  for (row = 0; row < cinfo->image_height; row++) {
-    if (progress != NULL) {
-      progress->pub.pass_counter = (long) row;
-      progress->pub.pass_limit = (long) cinfo->image_height;
-      (*progress->pub.progress_monitor) ((j_common_ptr) cinfo);
-    }
-    source->pub.buffer = (*cinfo->mem->access_virt_sarray)
-      ((j_common_ptr) cinfo, source->whole_image, row, (JDIMENSION) 1, TRUE);
-    (*source->get_pixel_rows) (cinfo, sinfo);
-  }
-  if (progress != NULL)
-    progress->completed_extra_passes++;
-
-  /* Set up to read from the virtual array in unscrambled order */
-  source->pub.get_pixel_rows = get_memory_row;
-  source->current_row = 0;
-  /* And read the first row */
-  return get_memory_row(cinfo, sinfo);
-}
-
-
-/*
- * Read the file header; return image size and component count.
- */
-
-METHODDEF(void)
-start_input_tga (j_compress_ptr cinfo, cjpeg_source_ptr sinfo)
-{
-  tga_source_ptr source = (tga_source_ptr) sinfo;
-  U_CHAR targaheader[18];
-  int idlen, cmaptype, subtype, flags, interlace_type, components;
-  unsigned int width, height, maplen;
-  boolean is_bottom_up;
-
-#define GET_2B(offset)	((unsigned int) UCH(targaheader[offset]) + \
-			 (((unsigned int) UCH(targaheader[offset+1])) << 8))
-
-  if (! ReadOK(source->pub.input_file, targaheader, 18))
-    ERREXIT(cinfo, JERR_INPUT_EOF);
-
-  /* Pretend "15-bit" pixels are 16-bit --- we ignore attribute bit anyway */
-  if (targaheader[16] == 15)
-    targaheader[16] = 16;
-
-  idlen = UCH(targaheader[0]);
-  cmaptype = UCH(targaheader[1]);
-  subtype = UCH(targaheader[2]);
-  maplen = GET_2B(5);
-  width = GET_2B(12);
-  height = GET_2B(14);
-  source->pixel_size = UCH(targaheader[16]) >> 3;
-  flags = UCH(targaheader[17]);	/* Image Descriptor byte */
-
-  is_bottom_up = ((flags & 0x20) == 0);	/* bit 5 set => top-down */
-  interlace_type = flags >> 6;	/* bits 6/7 are interlace code */
-
-  if (cmaptype > 1 ||		/* cmaptype must be 0 or 1 */
-      source->pixel_size < 1 || source->pixel_size > 4 ||
-      (UCH(targaheader[16]) & 7) != 0 || /* bits/pixel must be multiple of 8 */
-      interlace_type != 0)	/* currently don't allow interlaced image */
-    ERREXIT(cinfo, JERR_TGA_BADPARMS);
-  
-  if (subtype > 8) {
-    /* It's an RLE-coded file */
-    source->read_pixel = read_rle_pixel;
-    source->block_count = source->dup_pixel_count = 0;
-    subtype -= 8;
-  } else {
-    /* Non-RLE file */
-    source->read_pixel = read_non_rle_pixel;
-  }
-
-  /* Now should have subtype 1, 2, or 3 */
-  components = 3;		/* until proven different */
-  cinfo->in_color_space = JCS_RGB;
-
-  switch (subtype) {
-  case 1:			/* Colormapped image */
-    if (source->pixel_size == 1 && cmaptype == 1)
-      source->get_pixel_rows = get_8bit_row;
-    else
-      ERREXIT(cinfo, JERR_TGA_BADPARMS);
-    TRACEMS2(cinfo, 1, JTRC_TGA_MAPPED, width, height);
-    break;
-  case 2:			/* RGB image */
-    switch (source->pixel_size) {
-    case 2:
-      source->get_pixel_rows = get_16bit_row;
-      break;
-    case 3:
-      source->get_pixel_rows = get_24bit_row;
-      break;
-    case 4:
-      source->get_pixel_rows = get_32bit_row;
-      break;
-    default:
-      ERREXIT(cinfo, JERR_TGA_BADPARMS);
-      break;
-    }
-    TRACEMS2(cinfo, 1, JTRC_TGA, width, height);
-    break;
-  case 3:			/* Grayscale image */
-    components = 1;
-    cinfo->in_color_space = JCS_GRAYSCALE;
-    if (source->pixel_size == 1)
-      source->get_pixel_rows = get_8bit_gray_row;
-    else
-      ERREXIT(cinfo, JERR_TGA_BADPARMS);
-    TRACEMS2(cinfo, 1, JTRC_TGA_GRAY, width, height);
-    break;
-  default:
-    ERREXIT(cinfo, JERR_TGA_BADPARMS);
-    break;
-  }
-
-  if (is_bottom_up) {
-    /* Create a virtual array to buffer the upside-down image. */
-    source->whole_image = (*cinfo->mem->request_virt_sarray)
-      ((j_common_ptr) cinfo, JPOOL_IMAGE, FALSE,
-       (JDIMENSION) width * components, (JDIMENSION) height, (JDIMENSION) 1);
-    if (cinfo->progress != NULL) {
-      cd_progress_ptr progress = (cd_progress_ptr) cinfo->progress;
-      progress->total_extra_passes++; /* count file input as separate pass */
-    }
-    /* source->pub.buffer will point to the virtual array. */
-    source->pub.buffer_height = 1; /* in case anyone looks at it */
-    source->pub.get_pixel_rows = preload_image;
-  } else {
-    /* Don't need a virtual array, but do need a one-row input buffer. */
-    source->whole_image = NULL;
-    source->pub.buffer = (*cinfo->mem->alloc_sarray)
-      ((j_common_ptr) cinfo, JPOOL_IMAGE,
-       (JDIMENSION) width * components, (JDIMENSION) 1);
-    source->pub.buffer_height = 1;
-    source->pub.get_pixel_rows = source->get_pixel_rows;
-  }
-  
-  while (idlen--)		/* Throw away ID field */
-    (void) read_byte(source);
-
-  if (maplen > 0) {
-    if (maplen > 256 || GET_2B(3) != 0)
-      ERREXIT(cinfo, JERR_TGA_BADCMAP);
-    /* Allocate space to store the colormap */
-    source->colormap = (*cinfo->mem->alloc_sarray)
-      ((j_common_ptr) cinfo, JPOOL_IMAGE, (JDIMENSION) maplen, (JDIMENSION) 3);
-    /* and read it from the file */
-    read_colormap(source, (int) maplen, UCH(targaheader[7]));
-  } else {
-    if (cmaptype)		/* but you promised a cmap! */
-      ERREXIT(cinfo, JERR_TGA_BADPARMS);
-    source->colormap = NULL;
-  }
-
-  cinfo->input_components = components;
-  cinfo->data_precision = 8;
-  cinfo->image_width = width;
-  cinfo->image_height = height;
-}
-
-
-/*
- * Finish up at the end of the file.
- */
-
-METHODDEF(void)
-finish_input_tga (j_compress_ptr cinfo, cjpeg_source_ptr sinfo)
-{
-  /* no work */
-}
-
-
-/*
- * The module selection routine for Targa format input.
- */
-
-GLOBAL(cjpeg_source_ptr)
-jinit_read_targa (j_compress_ptr cinfo)
-{
-  tga_source_ptr source;
-
-  /* Create module interface object */
-  source = (tga_source_ptr)
-      (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
-				  SIZEOF(tga_source_struct));
-  source->cinfo = cinfo;	/* make back link for subroutines */
-  /* Fill in method ptrs, except get_pixel_rows which start_input sets */
-  source->pub.start_input = start_input_tga;
-  source->pub.finish_input = finish_input_tga;
-
-  return (cjpeg_source_ptr) source;
-}
-
-#endif /* TARGA_SUPPORTED */
diff --git a/src/libjpeg/transupp.c b/src/libjpeg/transupp.c
deleted file mode 100644
index 53a9940..0000000
--- a/src/libjpeg/transupp.c
+++ /dev/null
@@ -1,928 +0,0 @@
-/*
- * transupp.c
- *
- * Copyright (C) 1997, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains image transformation routines and other utility code
- * used by the jpegtran sample application.  These are NOT part of the core
- * JPEG library.  But we keep these routines separate from jpegtran.c to
- * ease the task of maintaining jpegtran-like programs that have other user
- * interfaces.
- */
-
-/* Although this file really shouldn't have access to the library internals,
- * it's helpful to let it call jround_up() and jcopy_block_row().
- */
-#define JPEG_INTERNALS
-
-#include "jinclude.h"
-#include "jpeglib.h"
-#include "transupp.h"		/* My own external interface */
-
-
-#if TRANSFORMS_SUPPORTED
-
-/*
- * Lossless image transformation routines.  These routines work on DCT
- * coefficient arrays and thus do not require any lossy decompression
- * or recompression of the image.
- * Thanks to Guido Vollbeding for the initial design and code of this feature.
- *
- * Horizontal flipping is done in-place, using a single top-to-bottom
- * pass through the virtual source array.  It will thus be much the
- * fastest option for images larger than main memory.
- *
- * The other routines require a set of destination virtual arrays, so they
- * need twice as much memory as jpegtran normally does.  The destination
- * arrays are always written in normal scan order (top to bottom) because
- * the virtual array manager expects this.  The source arrays will be scanned
- * in the corresponding order, which means multiple passes through the source
- * arrays for most of the transforms.  That could result in much thrashing
- * if the image is larger than main memory.
- *
- * Some notes about the operating environment of the individual transform
- * routines:
- * 1. Both the source and destination virtual arrays are allocated from the
- *    source JPEG object, and therefore should be manipulated by calling the
- *    source's memory manager.
- * 2. The destination's component count should be used.  It may be smaller
- *    than the source's when forcing to grayscale.
- * 3. Likewise the destination's sampling factors should be used.  When
- *    forcing to grayscale the destination's sampling factors will be all 1,
- *    and we may as well take that as the effective iMCU size.
- * 4. When "trim" is in effect, the destination's dimensions will be the
- *    trimmed values but the source's will be untrimmed.
- * 5. All the routines assume that the source and destination buffers are
- *    padded out to a full iMCU boundary.  This is true, although for the
- *    source buffer it is an undocumented property of jdcoefct.c.
- * Notes 2,3,4 boil down to this: generally we should use the destination's
- * dimensions and ignore the source's.
- */
-
-
-LOCAL(void)
-do_flip_h (j_decompress_ptr srcinfo, j_compress_ptr dstinfo,
-	   jvirt_barray_ptr *src_coef_arrays)
-/* Horizontal flip; done in-place, so no separate dest array is required */
-{
-  JDIMENSION MCU_cols, comp_width, blk_x, blk_y;
-  int ci, k, offset_y;
-  JBLOCKARRAY buffer;
-  JCOEFPTR ptr1, ptr2;
-  JCOEF temp1, temp2;
-  jpeg_component_info *compptr;
-
-  /* Horizontal mirroring of DCT blocks is accomplished by swapping
-   * pairs of blocks in-place.  Within a DCT block, we perform horizontal
-   * mirroring by changing the signs of odd-numbered columns.
-   * Partial iMCUs at the right edge are left untouched.
-   */
-  MCU_cols = dstinfo->image_width / (dstinfo->max_h_samp_factor * DCTSIZE);
-
-  for (ci = 0; ci < dstinfo->num_components; ci++) {
-    compptr = dstinfo->comp_info + ci;
-    comp_width = MCU_cols * compptr->h_samp_factor;
-    for (blk_y = 0; blk_y < compptr->height_in_blocks;
-	 blk_y += compptr->v_samp_factor) {
-      buffer = (*srcinfo->mem->access_virt_barray)
-	((j_common_ptr) srcinfo, src_coef_arrays[ci], blk_y,
-	 (JDIMENSION) compptr->v_samp_factor, TRUE);
-      for (offset_y = 0; offset_y < compptr->v_samp_factor; offset_y++) {
-	for (blk_x = 0; blk_x * 2 < comp_width; blk_x++) {
-	  ptr1 = buffer[offset_y][blk_x];
-	  ptr2 = buffer[offset_y][comp_width - blk_x - 1];
-	  /* this unrolled loop doesn't need to know which row it's on... */
-	  for (k = 0; k < DCTSIZE2; k += 2) {
-	    temp1 = *ptr1;	/* swap even column */
-	    temp2 = *ptr2;
-	    *ptr1++ = temp2;
-	    *ptr2++ = temp1;
-	    temp1 = *ptr1;	/* swap odd column with sign change */
-	    temp2 = *ptr2;
-	    *ptr1++ = -temp2;
-	    *ptr2++ = -temp1;
-	  }
-	}
-      }
-    }
-  }
-}
-
-
-LOCAL(void)
-do_flip_v (j_decompress_ptr srcinfo, j_compress_ptr dstinfo,
-	   jvirt_barray_ptr *src_coef_arrays,
-	   jvirt_barray_ptr *dst_coef_arrays)
-/* Vertical flip */
-{
-  JDIMENSION MCU_rows, comp_height, dst_blk_x, dst_blk_y;
-  int ci, i, j, offset_y;
-  JBLOCKARRAY src_buffer, dst_buffer;
-  JBLOCKROW src_row_ptr, dst_row_ptr;
-  JCOEFPTR src_ptr, dst_ptr;
-  jpeg_component_info *compptr;
-
-  /* We output into a separate array because we can't touch different
-   * rows of the source virtual array simultaneously.  Otherwise, this
-   * is a pretty straightforward analog of horizontal flip.
-   * Within a DCT block, vertical mirroring is done by changing the signs
-   * of odd-numbered rows.
-   * Partial iMCUs at the bottom edge are copied verbatim.
-   */
-  MCU_rows = dstinfo->image_height / (dstinfo->max_v_samp_factor * DCTSIZE);
-
-  for (ci = 0; ci < dstinfo->num_components; ci++) {
-    compptr = dstinfo->comp_info + ci;
-    comp_height = MCU_rows * compptr->v_samp_factor;
-    for (dst_blk_y = 0; dst_blk_y < compptr->height_in_blocks;
-	 dst_blk_y += compptr->v_samp_factor) {
-      dst_buffer = (*srcinfo->mem->access_virt_barray)
-	((j_common_ptr) srcinfo, dst_coef_arrays[ci], dst_blk_y,
-	 (JDIMENSION) compptr->v_samp_factor, TRUE);
-      if (dst_blk_y < comp_height) {
-	/* Row is within the mirrorable area. */
-	src_buffer = (*srcinfo->mem->access_virt_barray)
-	  ((j_common_ptr) srcinfo, src_coef_arrays[ci],
-	   comp_height - dst_blk_y - (JDIMENSION) compptr->v_samp_factor,
-	   (JDIMENSION) compptr->v_samp_factor, FALSE);
-      } else {
-	/* Bottom-edge blocks will be copied verbatim. */
-	src_buffer = (*srcinfo->mem->access_virt_barray)
-	  ((j_common_ptr) srcinfo, src_coef_arrays[ci], dst_blk_y,
-	   (JDIMENSION) compptr->v_samp_factor, FALSE);
-      }
-      for (offset_y = 0; offset_y < compptr->v_samp_factor; offset_y++) {
-	if (dst_blk_y < comp_height) {
-	  /* Row is within the mirrorable area. */
-	  dst_row_ptr = dst_buffer[offset_y];
-	  src_row_ptr = src_buffer[compptr->v_samp_factor - offset_y - 1];
-	  for (dst_blk_x = 0; dst_blk_x < compptr->width_in_blocks;
-	       dst_blk_x++) {
-	    dst_ptr = dst_row_ptr[dst_blk_x];
-	    src_ptr = src_row_ptr[dst_blk_x];
-	    for (i = 0; i < DCTSIZE; i += 2) {
-	      /* copy even row */
-	      for (j = 0; j < DCTSIZE; j++)
-		*dst_ptr++ = *src_ptr++;
-	      /* copy odd row with sign change */
-	      for (j = 0; j < DCTSIZE; j++)
-		*dst_ptr++ = - *src_ptr++;
-	    }
-	  }
-	} else {
-	  /* Just copy row verbatim. */
-	  jcopy_block_row(src_buffer[offset_y], dst_buffer[offset_y],
-			  compptr->width_in_blocks);
-	}
-      }
-    }
-  }
-}
-
-
-LOCAL(void)
-do_transpose (j_decompress_ptr srcinfo, j_compress_ptr dstinfo,
-	      jvirt_barray_ptr *src_coef_arrays,
-	      jvirt_barray_ptr *dst_coef_arrays)
-/* Transpose source into destination */
-{
-  JDIMENSION dst_blk_x, dst_blk_y;
-  int ci, i, j, offset_x, offset_y;
-  JBLOCKARRAY src_buffer, dst_buffer;
-  JCOEFPTR src_ptr, dst_ptr;
-  jpeg_component_info *compptr;
-
-  /* Transposing pixels within a block just requires transposing the
-   * DCT coefficients.
-   * Partial iMCUs at the edges require no special treatment; we simply
-   * process all the available DCT blocks for every component.
-   */
-  for (ci = 0; ci < dstinfo->num_components; ci++) {
-    compptr = dstinfo->comp_info + ci;
-    for (dst_blk_y = 0; dst_blk_y < compptr->height_in_blocks;
-	 dst_blk_y += compptr->v_samp_factor) {
-      dst_buffer = (*srcinfo->mem->access_virt_barray)
-	((j_common_ptr) srcinfo, dst_coef_arrays[ci], dst_blk_y,
-	 (JDIMENSION) compptr->v_samp_factor, TRUE);
-      for (offset_y = 0; offset_y < compptr->v_samp_factor; offset_y++) {
-	for (dst_blk_x = 0; dst_blk_x < compptr->width_in_blocks;
-	     dst_blk_x += compptr->h_samp_factor) {
-	  src_buffer = (*srcinfo->mem->access_virt_barray)
-	    ((j_common_ptr) srcinfo, src_coef_arrays[ci], dst_blk_x,
-	     (JDIMENSION) compptr->h_samp_factor, FALSE);
-	  for (offset_x = 0; offset_x < compptr->h_samp_factor; offset_x++) {
-	    src_ptr = src_buffer[offset_x][dst_blk_y + offset_y];
-	    dst_ptr = dst_buffer[offset_y][dst_blk_x + offset_x];
-	    for (i = 0; i < DCTSIZE; i++)
-	      for (j = 0; j < DCTSIZE; j++)
-		dst_ptr[j*DCTSIZE+i] = src_ptr[i*DCTSIZE+j];
-	  }
-	}
-      }
-    }
-  }
-}
-
-
-LOCAL(void)
-do_rot_90 (j_decompress_ptr srcinfo, j_compress_ptr dstinfo,
-	   jvirt_barray_ptr *src_coef_arrays,
-	   jvirt_barray_ptr *dst_coef_arrays)
-/* 90 degree rotation is equivalent to
- *   1. Transposing the image;
- *   2. Horizontal mirroring.
- * These two steps are merged into a single processing routine.
- */
-{
-  JDIMENSION MCU_cols, comp_width, dst_blk_x, dst_blk_y;
-  int ci, i, j, offset_x, offset_y;
-  JBLOCKARRAY src_buffer, dst_buffer;
-  JCOEFPTR src_ptr, dst_ptr;
-  jpeg_component_info *compptr;
-
-  /* Because of the horizontal mirror step, we can't process partial iMCUs
-   * at the (output) right edge properly.  They just get transposed and
-   * not mirrored.
-   */
-  MCU_cols = dstinfo->image_width / (dstinfo->max_h_samp_factor * DCTSIZE);
-
-  for (ci = 0; ci < dstinfo->num_components; ci++) {
-    compptr = dstinfo->comp_info + ci;
-    comp_width = MCU_cols * compptr->h_samp_factor;
-    for (dst_blk_y = 0; dst_blk_y < compptr->height_in_blocks;
-	 dst_blk_y += compptr->v_samp_factor) {
-      dst_buffer = (*srcinfo->mem->access_virt_barray)
-	((j_common_ptr) srcinfo, dst_coef_arrays[ci], dst_blk_y,
-	 (JDIMENSION) compptr->v_samp_factor, TRUE);
-      for (offset_y = 0; offset_y < compptr->v_samp_factor; offset_y++) {
-	for (dst_blk_x = 0; dst_blk_x < compptr->width_in_blocks;
-	     dst_blk_x += compptr->h_samp_factor) {
-	  src_buffer = (*srcinfo->mem->access_virt_barray)
-	    ((j_common_ptr) srcinfo, src_coef_arrays[ci], dst_blk_x,
-	     (JDIMENSION) compptr->h_samp_factor, FALSE);
-	  for (offset_x = 0; offset_x < compptr->h_samp_factor; offset_x++) {
-	    src_ptr = src_buffer[offset_x][dst_blk_y + offset_y];
-	    if (dst_blk_x < comp_width) {
-	      /* Block is within the mirrorable area. */
-	      dst_ptr = dst_buffer[offset_y]
-		[comp_width - dst_blk_x - offset_x - 1];
-	      for (i = 0; i < DCTSIZE; i++) {
-		for (j = 0; j < DCTSIZE; j++)
-		  dst_ptr[j*DCTSIZE+i] = src_ptr[i*DCTSIZE+j];
-		i++;
-		for (j = 0; j < DCTSIZE; j++)
-		  dst_ptr[j*DCTSIZE+i] = -src_ptr[i*DCTSIZE+j];
-	      }
-	    } else {
-	      /* Edge blocks are transposed but not mirrored. */
-	      dst_ptr = dst_buffer[offset_y][dst_blk_x + offset_x];
-	      for (i = 0; i < DCTSIZE; i++)
-		for (j = 0; j < DCTSIZE; j++)
-		  dst_ptr[j*DCTSIZE+i] = src_ptr[i*DCTSIZE+j];
-	    }
-	  }
-	}
-      }
-    }
-  }
-}
-
-
-LOCAL(void)
-do_rot_270 (j_decompress_ptr srcinfo, j_compress_ptr dstinfo,
-	    jvirt_barray_ptr *src_coef_arrays,
-	    jvirt_barray_ptr *dst_coef_arrays)
-/* 270 degree rotation is equivalent to
- *   1. Horizontal mirroring;
- *   2. Transposing the image.
- * These two steps are merged into a single processing routine.
- */
-{
-  JDIMENSION MCU_rows, comp_height, dst_blk_x, dst_blk_y;
-  int ci, i, j, offset_x, offset_y;
-  JBLOCKARRAY src_buffer, dst_buffer;
-  JCOEFPTR src_ptr, dst_ptr;
-  jpeg_component_info *compptr;
-
-  /* Because of the horizontal mirror step, we can't process partial iMCUs
-   * at the (output) bottom edge properly.  They just get transposed and
-   * not mirrored.
-   */
-  MCU_rows = dstinfo->image_height / (dstinfo->max_v_samp_factor * DCTSIZE);
-
-  for (ci = 0; ci < dstinfo->num_components; ci++) {
-    compptr = dstinfo->comp_info + ci;
-    comp_height = MCU_rows * compptr->v_samp_factor;
-    for (dst_blk_y = 0; dst_blk_y < compptr->height_in_blocks;
-	 dst_blk_y += compptr->v_samp_factor) {
-      dst_buffer = (*srcinfo->mem->access_virt_barray)
-	((j_common_ptr) srcinfo, dst_coef_arrays[ci], dst_blk_y,
-	 (JDIMENSION) compptr->v_samp_factor, TRUE);
-      for (offset_y = 0; offset_y < compptr->v_samp_factor; offset_y++) {
-	for (dst_blk_x = 0; dst_blk_x < compptr->width_in_blocks;
-	     dst_blk_x += compptr->h_samp_factor) {
-	  src_buffer = (*srcinfo->mem->access_virt_barray)
-	    ((j_common_ptr) srcinfo, src_coef_arrays[ci], dst_blk_x,
-	     (JDIMENSION) compptr->h_samp_factor, FALSE);
-	  for (offset_x = 0; offset_x < compptr->h_samp_factor; offset_x++) {
-	    dst_ptr = dst_buffer[offset_y][dst_blk_x + offset_x];
-	    if (dst_blk_y < comp_height) {
-	      /* Block is within the mirrorable area. */
-	      src_ptr = src_buffer[offset_x]
-		[comp_height - dst_blk_y - offset_y - 1];
-	      for (i = 0; i < DCTSIZE; i++) {
-		for (j = 0; j < DCTSIZE; j++) {
-		  dst_ptr[j*DCTSIZE+i] = src_ptr[i*DCTSIZE+j];
-		  j++;
-		  dst_ptr[j*DCTSIZE+i] = -src_ptr[i*DCTSIZE+j];
-		}
-	      }
-	    } else {
-	      /* Edge blocks are transposed but not mirrored. */
-	      src_ptr = src_buffer[offset_x][dst_blk_y + offset_y];
-	      for (i = 0; i < DCTSIZE; i++)
-		for (j = 0; j < DCTSIZE; j++)
-		  dst_ptr[j*DCTSIZE+i] = src_ptr[i*DCTSIZE+j];
-	    }
-	  }
-	}
-      }
-    }
-  }
-}
-
-
-LOCAL(void)
-do_rot_180 (j_decompress_ptr srcinfo, j_compress_ptr dstinfo,
-	    jvirt_barray_ptr *src_coef_arrays,
-	    jvirt_barray_ptr *dst_coef_arrays)
-/* 180 degree rotation is equivalent to
- *   1. Vertical mirroring;
- *   2. Horizontal mirroring.
- * These two steps are merged into a single processing routine.
- */
-{
-  JDIMENSION MCU_cols, MCU_rows, comp_width, comp_height, dst_blk_x, dst_blk_y;
-  int ci, i, j, offset_y;
-  JBLOCKARRAY src_buffer, dst_buffer;
-  JBLOCKROW src_row_ptr, dst_row_ptr;
-  JCOEFPTR src_ptr, dst_ptr;
-  jpeg_component_info *compptr;
-
-  MCU_cols = dstinfo->image_width / (dstinfo->max_h_samp_factor * DCTSIZE);
-  MCU_rows = dstinfo->image_height / (dstinfo->max_v_samp_factor * DCTSIZE);
-
-  for (ci = 0; ci < dstinfo->num_components; ci++) {
-    compptr = dstinfo->comp_info + ci;
-    comp_width = MCU_cols * compptr->h_samp_factor;
-    comp_height = MCU_rows * compptr->v_samp_factor;
-    for (dst_blk_y = 0; dst_blk_y < compptr->height_in_blocks;
-	 dst_blk_y += compptr->v_samp_factor) {
-      dst_buffer = (*srcinfo->mem->access_virt_barray)
-	((j_common_ptr) srcinfo, dst_coef_arrays[ci], dst_blk_y,
-	 (JDIMENSION) compptr->v_samp_factor, TRUE);
-      if (dst_blk_y < comp_height) {
-	/* Row is within the vertically mirrorable area. */
-	src_buffer = (*srcinfo->mem->access_virt_barray)
-	  ((j_common_ptr) srcinfo, src_coef_arrays[ci],
-	   comp_height - dst_blk_y - (JDIMENSION) compptr->v_samp_factor,
-	   (JDIMENSION) compptr->v_samp_factor, FALSE);
-      } else {
-	/* Bottom-edge rows are only mirrored horizontally. */
-	src_buffer = (*srcinfo->mem->access_virt_barray)
-	  ((j_common_ptr) srcinfo, src_coef_arrays[ci], dst_blk_y,
-	   (JDIMENSION) compptr->v_samp_factor, FALSE);
-      }
-      for (offset_y = 0; offset_y < compptr->v_samp_factor; offset_y++) {
-	if (dst_blk_y < comp_height) {
-	  /* Row is within the mirrorable area. */
-	  dst_row_ptr = dst_buffer[offset_y];
-	  src_row_ptr = src_buffer[compptr->v_samp_factor - offset_y - 1];
-	  /* Process the blocks that can be mirrored both ways. */
-	  for (dst_blk_x = 0; dst_blk_x < comp_width; dst_blk_x++) {
-	    dst_ptr = dst_row_ptr[dst_blk_x];
-	    src_ptr = src_row_ptr[comp_width - dst_blk_x - 1];
-	    for (i = 0; i < DCTSIZE; i += 2) {
-	      /* For even row, negate every odd column. */
-	      for (j = 0; j < DCTSIZE; j += 2) {
-		*dst_ptr++ = *src_ptr++;
-		*dst_ptr++ = - *src_ptr++;
-	      }
-	      /* For odd row, negate every even column. */
-	      for (j = 0; j < DCTSIZE; j += 2) {
-		*dst_ptr++ = - *src_ptr++;
-		*dst_ptr++ = *src_ptr++;
-	      }
-	    }
-	  }
-	  /* Any remaining right-edge blocks are only mirrored vertically. */
-	  for (; dst_blk_x < compptr->width_in_blocks; dst_blk_x++) {
-	    dst_ptr = dst_row_ptr[dst_blk_x];
-	    src_ptr = src_row_ptr[dst_blk_x];
-	    for (i = 0; i < DCTSIZE; i += 2) {
-	      for (j = 0; j < DCTSIZE; j++)
-		*dst_ptr++ = *src_ptr++;
-	      for (j = 0; j < DCTSIZE; j++)
-		*dst_ptr++ = - *src_ptr++;
-	    }
-	  }
-	} else {
-	  /* Remaining rows are just mirrored horizontally. */
-	  dst_row_ptr = dst_buffer[offset_y];
-	  src_row_ptr = src_buffer[offset_y];
-	  /* Process the blocks that can be mirrored. */
-	  for (dst_blk_x = 0; dst_blk_x < comp_width; dst_blk_x++) {
-	    dst_ptr = dst_row_ptr[dst_blk_x];
-	    src_ptr = src_row_ptr[comp_width - dst_blk_x - 1];
-	    for (i = 0; i < DCTSIZE2; i += 2) {
-	      *dst_ptr++ = *src_ptr++;
-	      *dst_ptr++ = - *src_ptr++;
-	    }
-	  }
-	  /* Any remaining right-edge blocks are only copied. */
-	  for (; dst_blk_x < compptr->width_in_blocks; dst_blk_x++) {
-	    dst_ptr = dst_row_ptr[dst_blk_x];
-	    src_ptr = src_row_ptr[dst_blk_x];
-	    for (i = 0; i < DCTSIZE2; i++)
-	      *dst_ptr++ = *src_ptr++;
-	  }
-	}
-      }
-    }
-  }
-}
-
-
-LOCAL(void)
-do_transverse (j_decompress_ptr srcinfo, j_compress_ptr dstinfo,
-	       jvirt_barray_ptr *src_coef_arrays,
-	       jvirt_barray_ptr *dst_coef_arrays)
-/* Transverse transpose is equivalent to
- *   1. 180 degree rotation;
- *   2. Transposition;
- * or
- *   1. Horizontal mirroring;
- *   2. Transposition;
- *   3. Horizontal mirroring.
- * These steps are merged into a single processing routine.
- */
-{
-  JDIMENSION MCU_cols, MCU_rows, comp_width, comp_height, dst_blk_x, dst_blk_y;
-  int ci, i, j, offset_x, offset_y;
-  JBLOCKARRAY src_buffer, dst_buffer;
-  JCOEFPTR src_ptr, dst_ptr;
-  jpeg_component_info *compptr;
-
-  MCU_cols = dstinfo->image_width / (dstinfo->max_h_samp_factor * DCTSIZE);
-  MCU_rows = dstinfo->image_height / (dstinfo->max_v_samp_factor * DCTSIZE);
-
-  for (ci = 0; ci < dstinfo->num_components; ci++) {
-    compptr = dstinfo->comp_info + ci;
-    comp_width = MCU_cols * compptr->h_samp_factor;
-    comp_height = MCU_rows * compptr->v_samp_factor;
-    for (dst_blk_y = 0; dst_blk_y < compptr->height_in_blocks;
-	 dst_blk_y += compptr->v_samp_factor) {
-      dst_buffer = (*srcinfo->mem->access_virt_barray)
-	((j_common_ptr) srcinfo, dst_coef_arrays[ci], dst_blk_y,
-	 (JDIMENSION) compptr->v_samp_factor, TRUE);
-      for (offset_y = 0; offset_y < compptr->v_samp_factor; offset_y++) {
-	for (dst_blk_x = 0; dst_blk_x < compptr->width_in_blocks;
-	     dst_blk_x += compptr->h_samp_factor) {
-	  src_buffer = (*srcinfo->mem->access_virt_barray)
-	    ((j_common_ptr) srcinfo, src_coef_arrays[ci], dst_blk_x,
-	     (JDIMENSION) compptr->h_samp_factor, FALSE);
-	  for (offset_x = 0; offset_x < compptr->h_samp_factor; offset_x++) {
-	    if (dst_blk_y < comp_height) {
-	      src_ptr = src_buffer[offset_x]
-		[comp_height - dst_blk_y - offset_y - 1];
-	      if (dst_blk_x < comp_width) {
-		/* Block is within the mirrorable area. */
-		dst_ptr = dst_buffer[offset_y]
-		  [comp_width - dst_blk_x - offset_x - 1];
-		for (i = 0; i < DCTSIZE; i++) {
-		  for (j = 0; j < DCTSIZE; j++) {
-		    dst_ptr[j*DCTSIZE+i] = src_ptr[i*DCTSIZE+j];
-		    j++;
-		    dst_ptr[j*DCTSIZE+i] = -src_ptr[i*DCTSIZE+j];
-		  }
-		  i++;
-		  for (j = 0; j < DCTSIZE; j++) {
-		    dst_ptr[j*DCTSIZE+i] = -src_ptr[i*DCTSIZE+j];
-		    j++;
-		    dst_ptr[j*DCTSIZE+i] = src_ptr[i*DCTSIZE+j];
-		  }
-		}
-	      } else {
-		/* Right-edge blocks are mirrored in y only */
-		dst_ptr = dst_buffer[offset_y][dst_blk_x + offset_x];
-		for (i = 0; i < DCTSIZE; i++) {
-		  for (j = 0; j < DCTSIZE; j++) {
-		    dst_ptr[j*DCTSIZE+i] = src_ptr[i*DCTSIZE+j];
-		    j++;
-		    dst_ptr[j*DCTSIZE+i] = -src_ptr[i*DCTSIZE+j];
-		  }
-		}
-	      }
-	    } else {
-	      src_ptr = src_buffer[offset_x][dst_blk_y + offset_y];
-	      if (dst_blk_x < comp_width) {
-		/* Bottom-edge blocks are mirrored in x only */
-		dst_ptr = dst_buffer[offset_y]
-		  [comp_width - dst_blk_x - offset_x - 1];
-		for (i = 0; i < DCTSIZE; i++) {
-		  for (j = 0; j < DCTSIZE; j++)
-		    dst_ptr[j*DCTSIZE+i] = src_ptr[i*DCTSIZE+j];
-		  i++;
-		  for (j = 0; j < DCTSIZE; j++)
-		    dst_ptr[j*DCTSIZE+i] = -src_ptr[i*DCTSIZE+j];
-		}
-	      } else {
-		/* At lower right corner, just transpose, no mirroring */
-		dst_ptr = dst_buffer[offset_y][dst_blk_x + offset_x];
-		for (i = 0; i < DCTSIZE; i++)
-		  for (j = 0; j < DCTSIZE; j++)
-		    dst_ptr[j*DCTSIZE+i] = src_ptr[i*DCTSIZE+j];
-	      }
-	    }
-	  }
-	}
-      }
-    }
-  }
-}
-
-
-/* Request any required workspace.
- *
- * We allocate the workspace virtual arrays from the source decompression
- * object, so that all the arrays (both the original data and the workspace)
- * will be taken into account while making memory management decisions.
- * Hence, this routine must be called after jpeg_read_header (which reads
- * the image dimensions) and before jpeg_read_coefficients (which realizes
- * the source's virtual arrays).
- */
-
-GLOBAL(void)
-jtransform_request_workspace (j_decompress_ptr srcinfo,
-			      jpeg_transform_info *info)
-{
-  jvirt_barray_ptr *coef_arrays = NULL;
-  jpeg_component_info *compptr;
-  int ci;
-
-  if (info->force_grayscale &&
-      srcinfo->jpeg_color_space == JCS_YCbCr &&
-      srcinfo->num_components == 3) {
-    /* We'll only process the first component */
-    info->num_components = 1;
-  } else {
-    /* Process all the components */
-    info->num_components = srcinfo->num_components;
-  }
-
-  switch (info->transform) {
-  case JXFORM_NONE:
-  case JXFORM_FLIP_H:
-    /* Don't need a workspace array */
-    break;
-  case JXFORM_FLIP_V:
-  case JXFORM_ROT_180:
-    /* Need workspace arrays having same dimensions as source image.
-     * Note that we allocate arrays padded out to the next iMCU boundary,
-     * so that transform routines need not worry about missing edge blocks.
-     */
-    coef_arrays = (jvirt_barray_ptr *)
-      (*srcinfo->mem->alloc_small) ((j_common_ptr) srcinfo, JPOOL_IMAGE,
-	SIZEOF(jvirt_barray_ptr) * info->num_components);
-    for (ci = 0; ci < info->num_components; ci++) {
-      compptr = srcinfo->comp_info + ci;
-      coef_arrays[ci] = (*srcinfo->mem->request_virt_barray)
-	((j_common_ptr) srcinfo, JPOOL_IMAGE, FALSE,
-	 (JDIMENSION) jround_up((long) compptr->width_in_blocks,
-				(long) compptr->h_samp_factor),
-	 (JDIMENSION) jround_up((long) compptr->height_in_blocks,
-				(long) compptr->v_samp_factor),
-	 (JDIMENSION) compptr->v_samp_factor);
-    }
-    break;
-  case JXFORM_TRANSPOSE:
-  case JXFORM_TRANSVERSE:
-  case JXFORM_ROT_90:
-  case JXFORM_ROT_270:
-    /* Need workspace arrays having transposed dimensions.
-     * Note that we allocate arrays padded out to the next iMCU boundary,
-     * so that transform routines need not worry about missing edge blocks.
-     */
-    coef_arrays = (jvirt_barray_ptr *)
-      (*srcinfo->mem->alloc_small) ((j_common_ptr) srcinfo, JPOOL_IMAGE,
-	SIZEOF(jvirt_barray_ptr) * info->num_components);
-    for (ci = 0; ci < info->num_components; ci++) {
-      compptr = srcinfo->comp_info + ci;
-      coef_arrays[ci] = (*srcinfo->mem->request_virt_barray)
-	((j_common_ptr) srcinfo, JPOOL_IMAGE, FALSE,
-	 (JDIMENSION) jround_up((long) compptr->height_in_blocks,
-				(long) compptr->v_samp_factor),
-	 (JDIMENSION) jround_up((long) compptr->width_in_blocks,
-				(long) compptr->h_samp_factor),
-	 (JDIMENSION) compptr->h_samp_factor);
-    }
-    break;
-  }
-  info->workspace_coef_arrays = coef_arrays;
-}
-
-
-/* Transpose destination image parameters */
-
-LOCAL(void)
-transpose_critical_parameters (j_compress_ptr dstinfo)
-{
-  int tblno, i, j, ci, itemp;
-  jpeg_component_info *compptr;
-  JQUANT_TBL *qtblptr;
-  JDIMENSION dtemp;
-  UINT16 qtemp;
-
-  /* Transpose basic image dimensions */
-  dtemp = dstinfo->image_width;
-  dstinfo->image_width = dstinfo->image_height;
-  dstinfo->image_height = dtemp;
-
-  /* Transpose sampling factors */
-  for (ci = 0; ci < dstinfo->num_components; ci++) {
-    compptr = dstinfo->comp_info + ci;
-    itemp = compptr->h_samp_factor;
-    compptr->h_samp_factor = compptr->v_samp_factor;
-    compptr->v_samp_factor = itemp;
-  }
-
-  /* Transpose quantization tables */
-  for (tblno = 0; tblno < NUM_QUANT_TBLS; tblno++) {
-    qtblptr = dstinfo->quant_tbl_ptrs[tblno];
-    if (qtblptr != NULL) {
-      for (i = 0; i < DCTSIZE; i++) {
-	for (j = 0; j < i; j++) {
-	  qtemp = qtblptr->quantval[i*DCTSIZE+j];
-	  qtblptr->quantval[i*DCTSIZE+j] = qtblptr->quantval[j*DCTSIZE+i];
-	  qtblptr->quantval[j*DCTSIZE+i] = qtemp;
-	}
-      }
-    }
-  }
-}
-
-
-/* Trim off any partial iMCUs on the indicated destination edge */
-
-LOCAL(void)
-trim_right_edge (j_compress_ptr dstinfo)
-{
-  int ci, max_h_samp_factor;
-  JDIMENSION MCU_cols;
-
-  /* We have to compute max_h_samp_factor ourselves,
-   * because it hasn't been set yet in the destination
-   * (and we don't want to use the source's value).
-   */
-  max_h_samp_factor = 1;
-  for (ci = 0; ci < dstinfo->num_components; ci++) {
-    int h_samp_factor = dstinfo->comp_info[ci].h_samp_factor;
-    max_h_samp_factor = MAX(max_h_samp_factor, h_samp_factor);
-  }
-  MCU_cols = dstinfo->image_width / (max_h_samp_factor * DCTSIZE);
-  if (MCU_cols > 0)		/* can't trim to 0 pixels */
-    dstinfo->image_width = MCU_cols * (max_h_samp_factor * DCTSIZE);
-}
-
-LOCAL(void)
-trim_bottom_edge (j_compress_ptr dstinfo)
-{
-  int ci, max_v_samp_factor;
-  JDIMENSION MCU_rows;
-
-  /* We have to compute max_v_samp_factor ourselves,
-   * because it hasn't been set yet in the destination
-   * (and we don't want to use the source's value).
-   */
-  max_v_samp_factor = 1;
-  for (ci = 0; ci < dstinfo->num_components; ci++) {
-    int v_samp_factor = dstinfo->comp_info[ci].v_samp_factor;
-    max_v_samp_factor = MAX(max_v_samp_factor, v_samp_factor);
-  }
-  MCU_rows = dstinfo->image_height / (max_v_samp_factor * DCTSIZE);
-  if (MCU_rows > 0)		/* can't trim to 0 pixels */
-    dstinfo->image_height = MCU_rows * (max_v_samp_factor * DCTSIZE);
-}
-
-
-/* Adjust output image parameters as needed.
- *
- * This must be called after jpeg_copy_critical_parameters()
- * and before jpeg_write_coefficients().
- *
- * The return value is the set of virtual coefficient arrays to be written
- * (either the ones allocated by jtransform_request_workspace, or the
- * original source data arrays).  The caller will need to pass this value
- * to jpeg_write_coefficients().
- */
-
-GLOBAL(jvirt_barray_ptr *)
-jtransform_adjust_parameters (j_decompress_ptr srcinfo,
-			      j_compress_ptr dstinfo,
-			      jvirt_barray_ptr *src_coef_arrays,
-			      jpeg_transform_info *info)
-{
-  /* If force-to-grayscale is requested, adjust destination parameters */
-  if (info->force_grayscale) {
-    /* We use jpeg_set_colorspace to make sure subsidiary settings get fixed
-     * properly.  Among other things, the target h_samp_factor & v_samp_factor
-     * will get set to 1, which typically won't match the source.
-     * In fact we do this even if the source is already grayscale; that
-     * provides an easy way of coercing a grayscale JPEG with funny sampling
-     * factors to the customary 1,1.  (Some decoders fail on other factors.)
-     */
-    if ((dstinfo->jpeg_color_space == JCS_YCbCr &&
-	 dstinfo->num_components == 3) ||
-	(dstinfo->jpeg_color_space == JCS_GRAYSCALE &&
-	 dstinfo->num_components == 1)) {
-      /* We have to preserve the source's quantization table number. */
-      int sv_quant_tbl_no = dstinfo->comp_info[0].quant_tbl_no;
-      jpeg_set_colorspace(dstinfo, JCS_GRAYSCALE);
-      dstinfo->comp_info[0].quant_tbl_no = sv_quant_tbl_no;
-    } else {
-      /* Sorry, can't do it */
-      ERREXIT(dstinfo, JERR_CONVERSION_NOTIMPL);
-    }
-  }
-
-  /* Correct the destination's image dimensions etc if necessary */
-  switch (info->transform) {
-  case JXFORM_NONE:
-    /* Nothing to do */
-    break;
-  case JXFORM_FLIP_H:
-    if (info->trim)
-      trim_right_edge(dstinfo);
-    break;
-  case JXFORM_FLIP_V:
-    if (info->trim)
-      trim_bottom_edge(dstinfo);
-    break;
-  case JXFORM_TRANSPOSE:
-    transpose_critical_parameters(dstinfo);
-    /* transpose does NOT have to trim anything */
-    break;
-  case JXFORM_TRANSVERSE:
-    transpose_critical_parameters(dstinfo);
-    if (info->trim) {
-      trim_right_edge(dstinfo);
-      trim_bottom_edge(dstinfo);
-    }
-    break;
-  case JXFORM_ROT_90:
-    transpose_critical_parameters(dstinfo);
-    if (info->trim)
-      trim_right_edge(dstinfo);
-    break;
-  case JXFORM_ROT_180:
-    if (info->trim) {
-      trim_right_edge(dstinfo);
-      trim_bottom_edge(dstinfo);
-    }
-    break;
-  case JXFORM_ROT_270:
-    transpose_critical_parameters(dstinfo);
-    if (info->trim)
-      trim_bottom_edge(dstinfo);
-    break;
-  }
-
-  /* Return the appropriate output data set */
-  if (info->workspace_coef_arrays != NULL)
-    return info->workspace_coef_arrays;
-  return src_coef_arrays;
-}
-
-
-/* Execute the actual transformation, if any.
- *
- * This must be called *after* jpeg_write_coefficients, because it depends
- * on jpeg_write_coefficients to have computed subsidiary values such as
- * the per-component width and height fields in the destination object.
- *
- * Note that some transformations will modify the source data arrays!
- */
-
-GLOBAL(void)
-jtransform_execute_transformation (j_decompress_ptr srcinfo,
-				   j_compress_ptr dstinfo,
-				   jvirt_barray_ptr *src_coef_arrays,
-				   jpeg_transform_info *info)
-{
-  jvirt_barray_ptr *dst_coef_arrays = info->workspace_coef_arrays;
-
-  switch (info->transform) {
-  case JXFORM_NONE:
-    break;
-  case JXFORM_FLIP_H:
-    do_flip_h(srcinfo, dstinfo, src_coef_arrays);
-    break;
-  case JXFORM_FLIP_V:
-    do_flip_v(srcinfo, dstinfo, src_coef_arrays, dst_coef_arrays);
-    break;
-  case JXFORM_TRANSPOSE:
-    do_transpose(srcinfo, dstinfo, src_coef_arrays, dst_coef_arrays);
-    break;
-  case JXFORM_TRANSVERSE:
-    do_transverse(srcinfo, dstinfo, src_coef_arrays, dst_coef_arrays);
-    break;
-  case JXFORM_ROT_90:
-    do_rot_90(srcinfo, dstinfo, src_coef_arrays, dst_coef_arrays);
-    break;
-  case JXFORM_ROT_180:
-    do_rot_180(srcinfo, dstinfo, src_coef_arrays, dst_coef_arrays);
-    break;
-  case JXFORM_ROT_270:
-    do_rot_270(srcinfo, dstinfo, src_coef_arrays, dst_coef_arrays);
-    break;
-  }
-}
-
-#endif /* TRANSFORMS_SUPPORTED */
-
-
-/* Setup decompression object to save desired markers in memory.
- * This must be called before jpeg_read_header() to have the desired effect.
- */
-
-GLOBAL(void)
-jcopy_markers_setup (j_decompress_ptr srcinfo, JCOPY_OPTION option)
-{
-#ifdef SAVE_MARKERS_SUPPORTED
-  int m;
-
-  /* Save comments except under NONE option */
-  if (option != JCOPYOPT_NONE) {
-    jpeg_save_markers(srcinfo, JPEG_COM, 0xFFFF);
-  }
-  /* Save all types of APPn markers iff ALL option */
-  if (option == JCOPYOPT_ALL) {
-    for (m = 0; m < 16; m++)
-      jpeg_save_markers(srcinfo, JPEG_APP0 + m, 0xFFFF);
-  }
-#endif /* SAVE_MARKERS_SUPPORTED */
-}
-
-/* Copy markers saved in the given source object to the destination object.
- * This should be called just after jpeg_start_compress() or
- * jpeg_write_coefficients().
- * Note that those routines will have written the SOI, and also the
- * JFIF APP0 or Adobe APP14 markers if selected.
- */
-
-GLOBAL(void)
-jcopy_markers_execute (j_decompress_ptr srcinfo, j_compress_ptr dstinfo,
-		       JCOPY_OPTION option)
-{
-  jpeg_saved_marker_ptr marker;
-
-  /* In the current implementation, we don't actually need to examine the
-   * option flag here; we just copy everything that got saved.
-   * But to avoid confusion, we do not output JFIF and Adobe APP14 markers
-   * if the encoder library already wrote one.
-   */
-  for (marker = srcinfo->marker_list; marker != NULL; marker = marker->next) {
-    if (dstinfo->write_JFIF_header &&
-	marker->marker == JPEG_APP0 &&
-	marker->data_length >= 5 &&
-	GETJOCTET(marker->data[0]) == 0x4A &&
-	GETJOCTET(marker->data[1]) == 0x46 &&
-	GETJOCTET(marker->data[2]) == 0x49 &&
-	GETJOCTET(marker->data[3]) == 0x46 &&
-	GETJOCTET(marker->data[4]) == 0)
-      continue;			/* reject duplicate JFIF */
-    if (dstinfo->write_Adobe_marker &&
-	marker->marker == JPEG_APP0+14 &&
-	marker->data_length >= 5 &&
-	GETJOCTET(marker->data[0]) == 0x41 &&
-	GETJOCTET(marker->data[1]) == 0x64 &&
-	GETJOCTET(marker->data[2]) == 0x6F &&
-	GETJOCTET(marker->data[3]) == 0x62 &&
-	GETJOCTET(marker->data[4]) == 0x65)
-      continue;			/* reject duplicate Adobe */
-#ifdef NEED_FAR_POINTERS
-    /* We could use jpeg_write_marker if the data weren't FAR... */
-    {
-      unsigned int i;
-      jpeg_write_m_header(dstinfo, marker->marker, marker->data_length);
-      for (i = 0; i < marker->data_length; i++)
-	jpeg_write_m_byte(dstinfo, marker->data[i]);
-    }
-#else
-    jpeg_write_marker(dstinfo, marker->marker,
-		      marker->data, marker->data_length);
-#endif
-  }
-}
diff --git a/src/libjpeg/transupp.h b/src/libjpeg/transupp.h
deleted file mode 100644
index eb0b055..0000000
--- a/src/libjpeg/transupp.h
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
- * transupp.h
- *
- * Copyright (C) 1997, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains declarations for image transformation routines and
- * other utility code used by the jpegtran sample application.  These are
- * NOT part of the core JPEG library.  But we keep these routines separate
- * from jpegtran.c to ease the task of maintaining jpegtran-like programs
- * that have other user interfaces.
- *
- * NOTE: all the routines declared here have very specific requirements
- * about when they are to be executed during the reading and writing of the
- * source and destination files.  See the comments in transupp.c, or see
- * jpegtran.c for an example of correct usage.
- */
-
-/* If you happen not to want the image transform support, disable it here */
-#ifndef TRANSFORMS_SUPPORTED
-#define TRANSFORMS_SUPPORTED 1		/* 0 disables transform code */
-#endif
-
-/* Short forms of external names for systems with brain-damaged linkers. */
-
-#ifdef NEED_SHORT_EXTERNAL_NAMES
-#define jtransform_request_workspace		jTrRequest
-#define jtransform_adjust_parameters		jTrAdjust
-#define jtransform_execute_transformation	jTrExec
-#define jcopy_markers_setup			jCMrkSetup
-#define jcopy_markers_execute			jCMrkExec
-#endif /* NEED_SHORT_EXTERNAL_NAMES */
-
-
-/*
- * Codes for supported types of image transformations.
- */
-
-typedef enum {
-	JXFORM_NONE,		/* no transformation */
-	JXFORM_FLIP_H,		/* horizontal flip */
-	JXFORM_FLIP_V,		/* vertical flip */
-	JXFORM_TRANSPOSE,	/* transpose across UL-to-LR axis */
-	JXFORM_TRANSVERSE,	/* transpose across UR-to-LL axis */
-	JXFORM_ROT_90,		/* 90-degree clockwise rotation */
-	JXFORM_ROT_180,		/* 180-degree rotation */
-	JXFORM_ROT_270		/* 270-degree clockwise (or 90 ccw) */
-} JXFORM_CODE;
-
-/*
- * Although rotating and flipping data expressed as DCT coefficients is not
- * hard, there is an asymmetry in the JPEG format specification for images
- * whose dimensions aren't multiples of the iMCU size.  The right and bottom
- * image edges are padded out to the next iMCU boundary with junk data; but
- * no padding is possible at the top and left edges.  If we were to flip
- * the whole image including the pad data, then pad garbage would become
- * visible at the top and/or left, and real pixels would disappear into the
- * pad margins --- perhaps permanently, since encoders & decoders may not
- * bother to preserve DCT blocks that appear to be completely outside the
- * nominal image area.  So, we have to exclude any partial iMCUs from the
- * basic transformation.
- *
- * Transpose is the only transformation that can handle partial iMCUs at the
- * right and bottom edges completely cleanly.  flip_h can flip partial iMCUs
- * at the bottom, but leaves any partial iMCUs at the right edge untouched.
- * Similarly flip_v leaves any partial iMCUs at the bottom edge untouched.
- * The other transforms are defined as combinations of these basic transforms
- * and process edge blocks in a way that preserves the equivalence.
- *
- * The "trim" option causes untransformable partial iMCUs to be dropped;
- * this is not strictly lossless, but it usually gives the best-looking
- * result for odd-size images.  Note that when this option is active,
- * the expected mathematical equivalences between the transforms may not hold.
- * (For example, -rot 270 -trim trims only the bottom edge, but -rot 90 -trim
- * followed by -rot 180 -trim trims both edges.)
- *
- * We also offer a "force to grayscale" option, which simply discards the
- * chrominance channels of a YCbCr image.  This is lossless in the sense that
- * the luminance channel is preserved exactly.  It's not the same kind of
- * thing as the rotate/flip transformations, but it's convenient to handle it
- * as part of this package, mainly because the transformation routines have to
- * be aware of the option to know how many components to work on.
- */
-
-typedef struct {
-  /* Options: set by caller */
-  JXFORM_CODE transform;	/* image transform operator */
-  boolean trim;			/* if TRUE, trim partial MCUs as needed */
-  boolean force_grayscale;	/* if TRUE, convert color image to grayscale */
-
-  /* Internal workspace: caller should not touch these */
-  int num_components;		/* # of components in workspace */
-  jvirt_barray_ptr * workspace_coef_arrays; /* workspace for transformations */
-} jpeg_transform_info;
-
-
-#if TRANSFORMS_SUPPORTED
-
-/* Request any required workspace */
-EXTERN(void) jtransform_request_workspace
-	JPP((j_decompress_ptr srcinfo, jpeg_transform_info *info));
-/* Adjust output image parameters */
-EXTERN(jvirt_barray_ptr *) jtransform_adjust_parameters
-	JPP((j_decompress_ptr srcinfo, j_compress_ptr dstinfo,
-	     jvirt_barray_ptr *src_coef_arrays,
-	     jpeg_transform_info *info));
-/* Execute the actual transformation, if any */
-EXTERN(void) jtransform_execute_transformation
-	JPP((j_decompress_ptr srcinfo, j_compress_ptr dstinfo,
-	     jvirt_barray_ptr *src_coef_arrays,
-	     jpeg_transform_info *info));
-
-#endif /* TRANSFORMS_SUPPORTED */
-
-
-/*
- * Support for copying optional markers from source to destination file.
- */
-
-typedef enum {
-	JCOPYOPT_NONE,		/* copy no optional markers */
-	JCOPYOPT_COMMENTS,	/* copy only comment (COM) markers */
-	JCOPYOPT_ALL		/* copy all optional markers */
-} JCOPY_OPTION;
-
-#define JCOPYOPT_DEFAULT  JCOPYOPT_COMMENTS	/* recommended default */
-
-/* Setup decompression object to save desired markers in memory */
-EXTERN(void) jcopy_markers_setup
-	JPP((j_decompress_ptr srcinfo, JCOPY_OPTION option));
-/* Copy markers saved in the given source object to the destination object */
-EXTERN(void) jcopy_markers_execute
-	JPP((j_decompress_ptr srcinfo, j_compress_ptr dstinfo,
-	     JCOPY_OPTION option));
diff --git a/src/libjpeg/wrbmp.c b/src/libjpeg/wrbmp.c
deleted file mode 100644
index 2b8146e..0000000
--- a/src/libjpeg/wrbmp.c
+++ /dev/null
@@ -1,442 +0,0 @@
-/*
- * wrbmp.c
- *
- * Copyright (C) 1994-1996, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains routines to write output images in Microsoft "BMP"
- * format (MS Windows 3.x and OS/2 1.x flavors).
- * Either 8-bit colormapped or 24-bit full-color format can be written.
- * No compression is supported.
- *
- * These routines may need modification for non-Unix environments or
- * specialized applications.  As they stand, they assume output to
- * an ordinary stdio stream.
- *
- * This code contributed by James Arthur Boucher.
- */
-
-#include "cdjpeg.h"		/* Common decls for cjpeg/djpeg applications */
-
-#ifdef BMP_SUPPORTED
-
-
-/*
- * To support 12-bit JPEG data, we'd have to scale output down to 8 bits.
- * This is not yet implemented.
- */
-
-#if BITS_IN_JSAMPLE != 8
-  Sorry, this code only copes with 8-bit JSAMPLEs. /* deliberate syntax err */
-#endif
-
-/*
- * Since BMP stores scanlines bottom-to-top, we have to invert the image
- * from JPEG's top-to-bottom order.  To do this, we save the outgoing data
- * in a virtual array during put_pixel_row calls, then actually emit the
- * BMP file during finish_output.  The virtual array contains one JSAMPLE per
- * pixel if the output is grayscale or colormapped, three if it is full color.
- */
-
-/* Private version of data destination object */
-
-typedef struct {
-  struct djpeg_dest_struct pub;	/* public fields */
-
-  boolean is_os2;		/* saves the OS2 format request flag */
-
-  jvirt_sarray_ptr whole_image;	/* needed to reverse row order */
-  JDIMENSION data_width;	/* JSAMPLEs per row */
-  JDIMENSION row_width;		/* physical width of one row in the BMP file */
-  int pad_bytes;		/* number of padding bytes needed per row */
-  JDIMENSION cur_output_row;	/* next row# to write to virtual array */
-} bmp_dest_struct;
-
-typedef bmp_dest_struct * bmp_dest_ptr;
-
-
-/* Forward declarations */
-LOCAL(void) write_colormap
-	JPP((j_decompress_ptr cinfo, bmp_dest_ptr dest,
-	     int map_colors, int map_entry_size));
-
-
-/*
- * Write some pixel data.
- * In this module rows_supplied will always be 1.
- */
-
-METHODDEF(void)
-put_pixel_rows (j_decompress_ptr cinfo, djpeg_dest_ptr dinfo,
-		JDIMENSION rows_supplied)
-/* This version is for writing 24-bit pixels */
-{
-  bmp_dest_ptr dest = (bmp_dest_ptr) dinfo;
-  JSAMPARRAY image_ptr;
-  register JSAMPROW inptr, outptr;
-  register JDIMENSION col;
-  int pad;
-
-  /* Access next row in virtual array */
-  image_ptr = (*cinfo->mem->access_virt_sarray)
-    ((j_common_ptr) cinfo, dest->whole_image,
-     dest->cur_output_row, (JDIMENSION) 1, TRUE);
-  dest->cur_output_row++;
-
-  /* Transfer data.  Note destination values must be in BGR order
-   * (even though Microsoft's own documents say the opposite).
-   */
-  inptr = dest->pub.buffer[0];
-  outptr = image_ptr[0];
-  for (col = cinfo->output_width; col > 0; col--) {
-    outptr[2] = *inptr++;	/* can omit GETJSAMPLE() safely */
-    outptr[1] = *inptr++;
-    outptr[0] = *inptr++;
-    outptr += 3;
-  }
-
-  /* Zero out the pad bytes. */
-  pad = dest->pad_bytes;
-  while (--pad >= 0)
-    *outptr++ = 0;
-}
-
-METHODDEF(void)
-put_gray_rows (j_decompress_ptr cinfo, djpeg_dest_ptr dinfo,
-	       JDIMENSION rows_supplied)
-/* This version is for grayscale OR quantized color output */
-{
-  bmp_dest_ptr dest = (bmp_dest_ptr) dinfo;
-  JSAMPARRAY image_ptr;
-  register JSAMPROW inptr, outptr;
-  register JDIMENSION col;
-  int pad;
-
-  /* Access next row in virtual array */
-  image_ptr = (*cinfo->mem->access_virt_sarray)
-    ((j_common_ptr) cinfo, dest->whole_image,
-     dest->cur_output_row, (JDIMENSION) 1, TRUE);
-  dest->cur_output_row++;
-
-  /* Transfer data. */
-  inptr = dest->pub.buffer[0];
-  outptr = image_ptr[0];
-  for (col = cinfo->output_width; col > 0; col--) {
-    *outptr++ = *inptr++;	/* can omit GETJSAMPLE() safely */
-  }
-
-  /* Zero out the pad bytes. */
-  pad = dest->pad_bytes;
-  while (--pad >= 0)
-    *outptr++ = 0;
-}
-
-
-/*
- * Startup: normally writes the file header.
- * In this module we may as well postpone everything until finish_output.
- */
-
-METHODDEF(void)
-start_output_bmp (j_decompress_ptr cinfo, djpeg_dest_ptr dinfo)
-{
-  /* no work here */
-}
-
-
-/*
- * Finish up at the end of the file.
- *
- * Here is where we really output the BMP file.
- *
- * First, routines to write the Windows and OS/2 variants of the file header.
- */
-
-LOCAL(void)
-write_bmp_header (j_decompress_ptr cinfo, bmp_dest_ptr dest)
-/* Write a Windows-style BMP file header, including colormap if needed */
-{
-  char bmpfileheader[14];
-  char bmpinfoheader[40];
-#define PUT_2B(array,offset,value)  \
-	(array[offset] = (char) ((value) & 0xFF), \
-	 array[offset+1] = (char) (((value) >> 8) & 0xFF))
-#define PUT_4B(array,offset,value)  \
-	(array[offset] = (char) ((value) & 0xFF), \
-	 array[offset+1] = (char) (((value) >> 8) & 0xFF), \
-	 array[offset+2] = (char) (((value) >> 16) & 0xFF), \
-	 array[offset+3] = (char) (((value) >> 24) & 0xFF))
-  INT32 headersize, bfSize;
-  int bits_per_pixel, cmap_entries;
-
-  /* Compute colormap size and total file size */
-  if (cinfo->out_color_space == JCS_RGB) {
-    if (cinfo->quantize_colors) {
-      /* Colormapped RGB */
-      bits_per_pixel = 8;
-      cmap_entries = 256;
-    } else {
-      /* Unquantized, full color RGB */
-      bits_per_pixel = 24;
-      cmap_entries = 0;
-    }
-  } else {
-    /* Grayscale output.  We need to fake a 256-entry colormap. */
-    bits_per_pixel = 8;
-    cmap_entries = 256;
-  }
-  /* File size */
-  headersize = 14 + 40 + cmap_entries * 4; /* Header and colormap */
-  bfSize = headersize + (INT32) dest->row_width * (INT32) cinfo->output_height;
-  
-  /* Set unused fields of header to 0 */
-  MEMZERO(bmpfileheader, SIZEOF(bmpfileheader));
-  MEMZERO(bmpinfoheader, SIZEOF(bmpinfoheader));
-
-  /* Fill the file header */
-  bmpfileheader[0] = 0x42;	/* first 2 bytes are ASCII 'B', 'M' */
-  bmpfileheader[1] = 0x4D;
-  PUT_4B(bmpfileheader, 2, bfSize); /* bfSize */
-  /* we leave bfReserved1 & bfReserved2 = 0 */
-  PUT_4B(bmpfileheader, 10, headersize); /* bfOffBits */
-
-  /* Fill the info header (Microsoft calls this a BITMAPINFOHEADER) */
-  PUT_2B(bmpinfoheader, 0, 40);	/* biSize */
-  PUT_4B(bmpinfoheader, 4, cinfo->output_width); /* biWidth */
-  PUT_4B(bmpinfoheader, 8, cinfo->output_height); /* biHeight */
-  PUT_2B(bmpinfoheader, 12, 1);	/* biPlanes - must be 1 */
-  PUT_2B(bmpinfoheader, 14, bits_per_pixel); /* biBitCount */
-  /* we leave biCompression = 0, for none */
-  /* we leave biSizeImage = 0; this is correct for uncompressed data */
-  if (cinfo->density_unit == 2) { /* if have density in dots/cm, then */
-    PUT_4B(bmpinfoheader, 24, (INT32) (cinfo->X_density*100)); /* XPels/M */
-    PUT_4B(bmpinfoheader, 28, (INT32) (cinfo->Y_density*100)); /* XPels/M */
-  }
-  PUT_2B(bmpinfoheader, 32, cmap_entries); /* biClrUsed */
-  /* we leave biClrImportant = 0 */
-
-  if (JFWRITE(dest->pub.output_file, bmpfileheader, 14) != (size_t) 14)
-    ERREXIT(cinfo, JERR_FILE_WRITE);
-  if (JFWRITE(dest->pub.output_file, bmpinfoheader, 40) != (size_t) 40)
-    ERREXIT(cinfo, JERR_FILE_WRITE);
-
-  if (cmap_entries > 0)
-    write_colormap(cinfo, dest, cmap_entries, 4);
-}
-
-
-LOCAL(void)
-write_os2_header (j_decompress_ptr cinfo, bmp_dest_ptr dest)
-/* Write an OS2-style BMP file header, including colormap if needed */
-{
-  char bmpfileheader[14];
-  char bmpcoreheader[12];
-  INT32 headersize, bfSize;
-  int bits_per_pixel, cmap_entries;
-
-  /* Compute colormap size and total file size */
-  if (cinfo->out_color_space == JCS_RGB) {
-    if (cinfo->quantize_colors) {
-      /* Colormapped RGB */
-      bits_per_pixel = 8;
-      cmap_entries = 256;
-    } else {
-      /* Unquantized, full color RGB */
-      bits_per_pixel = 24;
-      cmap_entries = 0;
-    }
-  } else {
-    /* Grayscale output.  We need to fake a 256-entry colormap. */
-    bits_per_pixel = 8;
-    cmap_entries = 256;
-  }
-  /* File size */
-  headersize = 14 + 12 + cmap_entries * 3; /* Header and colormap */
-  bfSize = headersize + (INT32) dest->row_width * (INT32) cinfo->output_height;
-  
-  /* Set unused fields of header to 0 */
-  MEMZERO(bmpfileheader, SIZEOF(bmpfileheader));
-  MEMZERO(bmpcoreheader, SIZEOF(bmpcoreheader));
-
-  /* Fill the file header */
-  bmpfileheader[0] = 0x42;	/* first 2 bytes are ASCII 'B', 'M' */
-  bmpfileheader[1] = 0x4D;
-  PUT_4B(bmpfileheader, 2, bfSize); /* bfSize */
-  /* we leave bfReserved1 & bfReserved2 = 0 */
-  PUT_4B(bmpfileheader, 10, headersize); /* bfOffBits */
-
-  /* Fill the info header (Microsoft calls this a BITMAPCOREHEADER) */
-  PUT_2B(bmpcoreheader, 0, 12);	/* bcSize */
-  PUT_2B(bmpcoreheader, 4, cinfo->output_width); /* bcWidth */
-  PUT_2B(bmpcoreheader, 6, cinfo->output_height); /* bcHeight */
-  PUT_2B(bmpcoreheader, 8, 1);	/* bcPlanes - must be 1 */
-  PUT_2B(bmpcoreheader, 10, bits_per_pixel); /* bcBitCount */
-
-  if (JFWRITE(dest->pub.output_file, bmpfileheader, 14) != (size_t) 14)
-    ERREXIT(cinfo, JERR_FILE_WRITE);
-  if (JFWRITE(dest->pub.output_file, bmpcoreheader, 12) != (size_t) 12)
-    ERREXIT(cinfo, JERR_FILE_WRITE);
-
-  if (cmap_entries > 0)
-    write_colormap(cinfo, dest, cmap_entries, 3);
-}
-
-
-/*
- * Write the colormap.
- * Windows uses BGR0 map entries; OS/2 uses BGR entries.
- */
-
-LOCAL(void)
-write_colormap (j_decompress_ptr cinfo, bmp_dest_ptr dest,
-		int map_colors, int map_entry_size)
-{
-  JSAMPARRAY colormap = cinfo->colormap;
-  int num_colors = cinfo->actual_number_of_colors;
-  FILE * outfile = dest->pub.output_file;
-  int i;
-
-  if (colormap != NULL) {
-    if (cinfo->out_color_components == 3) {
-      /* Normal case with RGB colormap */
-      for (i = 0; i < num_colors; i++) {
-	putc(GETJSAMPLE(colormap[2][i]), outfile);
-	putc(GETJSAMPLE(colormap[1][i]), outfile);
-	putc(GETJSAMPLE(colormap[0][i]), outfile);
-	if (map_entry_size == 4)
-	  putc(0, outfile);
-      }
-    } else {
-      /* Grayscale colormap (only happens with grayscale quantization) */
-      for (i = 0; i < num_colors; i++) {
-	putc(GETJSAMPLE(colormap[0][i]), outfile);
-	putc(GETJSAMPLE(colormap[0][i]), outfile);
-	putc(GETJSAMPLE(colormap[0][i]), outfile);
-	if (map_entry_size == 4)
-	  putc(0, outfile);
-      }
-    }
-  } else {
-    /* If no colormap, must be grayscale data.  Generate a linear "map". */
-    for (i = 0; i < 256; i++) {
-      putc(i, outfile);
-      putc(i, outfile);
-      putc(i, outfile);
-      if (map_entry_size == 4)
-	putc(0, outfile);
-    }
-  }
-  /* Pad colormap with zeros to ensure specified number of colormap entries */ 
-  if (i > map_colors)
-    ERREXIT1(cinfo, JERR_TOO_MANY_COLORS, i);
-  for (; i < map_colors; i++) {
-    putc(0, outfile);
-    putc(0, outfile);
-    putc(0, outfile);
-    if (map_entry_size == 4)
-      putc(0, outfile);
-  }
-}
-
-
-METHODDEF(void)
-finish_output_bmp (j_decompress_ptr cinfo, djpeg_dest_ptr dinfo)
-{
-  bmp_dest_ptr dest = (bmp_dest_ptr) dinfo;
-  register FILE * outfile = dest->pub.output_file;
-  JSAMPARRAY image_ptr;
-  register JSAMPROW data_ptr;
-  JDIMENSION row;
-  register JDIMENSION col;
-  cd_progress_ptr progress = (cd_progress_ptr) cinfo->progress;
-
-  /* Write the header and colormap */
-  if (dest->is_os2)
-    write_os2_header(cinfo, dest);
-  else
-    write_bmp_header(cinfo, dest);
-
-  /* Write the file body from our virtual array */
-  for (row = cinfo->output_height; row > 0; row--) {
-    if (progress != NULL) {
-      progress->pub.pass_counter = (long) (cinfo->output_height - row);
-      progress->pub.pass_limit = (long) cinfo->output_height;
-      (*progress->pub.progress_monitor) ((j_common_ptr) cinfo);
-    }
-    image_ptr = (*cinfo->mem->access_virt_sarray)
-      ((j_common_ptr) cinfo, dest->whole_image, row-1, (JDIMENSION) 1, FALSE);
-    data_ptr = image_ptr[0];
-    for (col = dest->row_width; col > 0; col--) {
-      putc(GETJSAMPLE(*data_ptr), outfile);
-      data_ptr++;
-    }
-  }
-  if (progress != NULL)
-    progress->completed_extra_passes++;
-
-  /* Make sure we wrote the output file OK */
-  fflush(outfile);
-  if (ferror(outfile))
-    ERREXIT(cinfo, JERR_FILE_WRITE);
-}
-
-
-/*
- * The module selection routine for BMP format output.
- */
-
-GLOBAL(djpeg_dest_ptr)
-jinit_write_bmp (j_decompress_ptr cinfo, boolean is_os2)
-{
-  bmp_dest_ptr dest;
-  JDIMENSION row_width;
-
-  /* Create module interface object, fill in method pointers */
-  dest = (bmp_dest_ptr)
-      (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
-				  SIZEOF(bmp_dest_struct));
-  dest->pub.start_output = start_output_bmp;
-  dest->pub.finish_output = finish_output_bmp;
-  dest->is_os2 = is_os2;
-
-  if (cinfo->out_color_space == JCS_GRAYSCALE) {
-    dest->pub.put_pixel_rows = put_gray_rows;
-  } else if (cinfo->out_color_space == JCS_RGB) {
-    if (cinfo->quantize_colors)
-      dest->pub.put_pixel_rows = put_gray_rows;
-    else
-      dest->pub.put_pixel_rows = put_pixel_rows;
-  } else {
-    ERREXIT(cinfo, JERR_BMP_COLORSPACE);
-  }
-
-  /* Calculate output image dimensions so we can allocate space */
-  jpeg_calc_output_dimensions(cinfo);
-
-  /* Determine width of rows in the BMP file (padded to 4-byte boundary). */
-  row_width = cinfo->output_width * cinfo->output_components;
-  dest->data_width = row_width;
-  while ((row_width & 3) != 0) row_width++;
-  dest->row_width = row_width;
-  dest->pad_bytes = (int) (row_width - dest->data_width);
-
-  /* Allocate space for inversion array, prepare for write pass */
-  dest->whole_image = (*cinfo->mem->request_virt_sarray)
-    ((j_common_ptr) cinfo, JPOOL_IMAGE, FALSE,
-     row_width, cinfo->output_height, (JDIMENSION) 1);
-  dest->cur_output_row = 0;
-  if (cinfo->progress != NULL) {
-    cd_progress_ptr progress = (cd_progress_ptr) cinfo->progress;
-    progress->total_extra_passes++; /* count file input as separate pass */
-  }
-
-  /* Create decompressor output buffer. */
-  dest->pub.buffer = (*cinfo->mem->alloc_sarray)
-    ((j_common_ptr) cinfo, JPOOL_IMAGE, row_width, (JDIMENSION) 1);
-  dest->pub.buffer_height = 1;
-
-  return (djpeg_dest_ptr) dest;
-}
-
-#endif /* BMP_SUPPORTED */
diff --git a/src/libjpeg/wrgif.c b/src/libjpeg/wrgif.c
deleted file mode 100644
index 13f953b..0000000
--- a/src/libjpeg/wrgif.c
+++ /dev/null
@@ -1,399 +0,0 @@
-/*
- * wrgif.c
- *
- * Copyright (C) 1991-1997, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains routines to write output images in GIF format.
- *
- **************************************************************************
- * NOTE: to avoid entanglements with Unisys' patent on LZW compression,   *
- * this code has been modified to output "uncompressed GIF" files.        *
- * There is no trace of the LZW algorithm in this file.                   *
- **************************************************************************
- *
- * These routines may need modification for non-Unix environments or
- * specialized applications.  As they stand, they assume output to
- * an ordinary stdio stream.
- */
-
-/*
- * This code is loosely based on ppmtogif from the PBMPLUS distribution
- * of Feb. 1991.  That file contains the following copyright notice:
- *    Based on GIFENCODE by David Rowley <mgardi at watdscu.waterloo.edu>.
- *    Lempel-Ziv compression based on "compress" by Spencer W. Thomas et al.
- *    Copyright (C) 1989 by Jef Poskanzer.
- *    Permission to use, copy, modify, and distribute this software and its
- *    documentation for any purpose and without fee is hereby granted, provided
- *    that the above copyright notice appear in all copies and that both that
- *    copyright notice and this permission notice appear in supporting
- *    documentation.  This software is provided "as is" without express or
- *    implied warranty.
- *
- * We are also required to state that
- *    "The Graphics Interchange Format(c) is the Copyright property of
- *    CompuServe Incorporated. GIF(sm) is a Service Mark property of
- *    CompuServe Incorporated."
- */
-
-#include "cdjpeg.h"		/* Common decls for cjpeg/djpeg applications */
-
-#ifdef GIF_SUPPORTED
-
-
-/* Private version of data destination object */
-
-typedef struct {
-  struct djpeg_dest_struct pub;	/* public fields */
-
-  j_decompress_ptr cinfo;	/* back link saves passing separate parm */
-
-  /* State for packing variable-width codes into a bitstream */
-  int n_bits;			/* current number of bits/code */
-  int maxcode;			/* maximum code, given n_bits */
-  INT32 cur_accum;		/* holds bits not yet output */
-  int cur_bits;			/* # of bits in cur_accum */
-
-  /* State for GIF code assignment */
-  int ClearCode;		/* clear code (doesn't change) */
-  int EOFCode;			/* EOF code (ditto) */
-  int code_counter;		/* counts output symbols */
-
-  /* GIF data packet construction buffer */
-  int bytesinpkt;		/* # of bytes in current packet */
-  char packetbuf[256];		/* workspace for accumulating packet */
-
-} gif_dest_struct;
-
-typedef gif_dest_struct * gif_dest_ptr;
-
-/* Largest value that will fit in N bits */
-#define MAXCODE(n_bits)	((1 << (n_bits)) - 1)
-
-
-/*
- * Routines to package finished data bytes into GIF data blocks.
- * A data block consists of a count byte (1..255) and that many data bytes.
- */
-
-LOCAL(void)
-flush_packet (gif_dest_ptr dinfo)
-/* flush any accumulated data */
-{
-  if (dinfo->bytesinpkt > 0) {	/* never write zero-length packet */
-    dinfo->packetbuf[0] = (char) dinfo->bytesinpkt++;
-    if (JFWRITE(dinfo->pub.output_file, dinfo->packetbuf, dinfo->bytesinpkt)
-	!= (size_t) dinfo->bytesinpkt)
-      ERREXIT(dinfo->cinfo, JERR_FILE_WRITE);
-    dinfo->bytesinpkt = 0;
-  }
-}
-
-
-/* Add a character to current packet; flush to disk if necessary */
-#define CHAR_OUT(dinfo,c)  \
-	{ (dinfo)->packetbuf[++(dinfo)->bytesinpkt] = (char) (c);  \
-	    if ((dinfo)->bytesinpkt >= 255)  \
-	      flush_packet(dinfo);  \
-	}
-
-
-/* Routine to convert variable-width codes into a byte stream */
-
-LOCAL(void)
-output (gif_dest_ptr dinfo, int code)
-/* Emit a code of n_bits bits */
-/* Uses cur_accum and cur_bits to reblock into 8-bit bytes */
-{
-  dinfo->cur_accum |= ((INT32) code) << dinfo->cur_bits;
-  dinfo->cur_bits += dinfo->n_bits;
-
-  while (dinfo->cur_bits >= 8) {
-    CHAR_OUT(dinfo, dinfo->cur_accum & 0xFF);
-    dinfo->cur_accum >>= 8;
-    dinfo->cur_bits -= 8;
-  }
-}
-
-
-/* The pseudo-compression algorithm.
- *
- * In this module we simply output each pixel value as a separate symbol;
- * thus, no compression occurs.  In fact, there is expansion of one bit per
- * pixel, because we use a symbol width one bit wider than the pixel width.
- *
- * GIF ordinarily uses variable-width symbols, and the decoder will expect
- * to ratchet up the symbol width after a fixed number of symbols.
- * To simplify the logic and keep the expansion penalty down, we emit a
- * GIF Clear code to reset the decoder just before the width would ratchet up.
- * Thus, all the symbols in the output file will have the same bit width.
- * Note that emitting the Clear codes at the right times is a mere matter of
- * counting output symbols and is in no way dependent on the LZW patent.
- *
- * With a small basic pixel width (low color count), Clear codes will be
- * needed very frequently, causing the file to expand even more.  So this
- * simplistic approach wouldn't work too well on bilevel images, for example.
- * But for output of JPEG conversions the pixel width will usually be 8 bits
- * (129 to 256 colors), so the overhead added by Clear symbols is only about
- * one symbol in every 256.
- */
-
-LOCAL(void)
-compress_init (gif_dest_ptr dinfo, int i_bits)
-/* Initialize pseudo-compressor */
-{
-  /* init all the state variables */
-  dinfo->n_bits = i_bits;
-  dinfo->maxcode = MAXCODE(dinfo->n_bits);
-  dinfo->ClearCode = (1 << (i_bits - 1));
-  dinfo->EOFCode = dinfo->ClearCode + 1;
-  dinfo->code_counter = dinfo->ClearCode + 2;
-  /* init output buffering vars */
-  dinfo->bytesinpkt = 0;
-  dinfo->cur_accum = 0;
-  dinfo->cur_bits = 0;
-  /* GIF specifies an initial Clear code */
-  output(dinfo, dinfo->ClearCode);
-}
-
-
-LOCAL(void)
-compress_pixel (gif_dest_ptr dinfo, int c)
-/* Accept and "compress" one pixel value.
- * The given value must be less than n_bits wide.
- */
-{
-  /* Output the given pixel value as a symbol. */
-  output(dinfo, c);
-  /* Issue Clear codes often enough to keep the reader from ratcheting up
-   * its symbol size.
-   */
-  if (dinfo->code_counter < dinfo->maxcode) {
-    dinfo->code_counter++;
-  } else {
-    output(dinfo, dinfo->ClearCode);
-    dinfo->code_counter = dinfo->ClearCode + 2;	/* reset the counter */
-  }
-}
-
-
-LOCAL(void)
-compress_term (gif_dest_ptr dinfo)
-/* Clean up at end */
-{
-  /* Send an EOF code */
-  output(dinfo, dinfo->EOFCode);
-  /* Flush the bit-packing buffer */
-  if (dinfo->cur_bits > 0) {
-    CHAR_OUT(dinfo, dinfo->cur_accum & 0xFF);
-  }
-  /* Flush the packet buffer */
-  flush_packet(dinfo);
-}
-
-
-/* GIF header construction */
-
-
-LOCAL(void)
-put_word (gif_dest_ptr dinfo, unsigned int w)
-/* Emit a 16-bit word, LSB first */
-{
-  putc(w & 0xFF, dinfo->pub.output_file);
-  putc((w >> 8) & 0xFF, dinfo->pub.output_file);
-}
-
-
-LOCAL(void)
-put_3bytes (gif_dest_ptr dinfo, int val)
-/* Emit 3 copies of same byte value --- handy subr for colormap construction */
-{
-  putc(val, dinfo->pub.output_file);
-  putc(val, dinfo->pub.output_file);
-  putc(val, dinfo->pub.output_file);
-}
-
-
-LOCAL(void)
-emit_header (gif_dest_ptr dinfo, int num_colors, JSAMPARRAY colormap)
-/* Output the GIF file header, including color map */
-/* If colormap==NULL, synthesize a gray-scale colormap */
-{
-  int BitsPerPixel, ColorMapSize, InitCodeSize, FlagByte;
-  int cshift = dinfo->cinfo->data_precision - 8;
-  int i;
-
-  if (num_colors > 256)
-    ERREXIT1(dinfo->cinfo, JERR_TOO_MANY_COLORS, num_colors);
-  /* Compute bits/pixel and related values */
-  BitsPerPixel = 1;
-  while (num_colors > (1 << BitsPerPixel))
-    BitsPerPixel++;
-  ColorMapSize = 1 << BitsPerPixel;
-  if (BitsPerPixel <= 1)
-    InitCodeSize = 2;
-  else
-    InitCodeSize = BitsPerPixel;
-  /*
-   * Write the GIF header.
-   * Note that we generate a plain GIF87 header for maximum compatibility.
-   */
-  putc('G', dinfo->pub.output_file);
-  putc('I', dinfo->pub.output_file);
-  putc('F', dinfo->pub.output_file);
-  putc('8', dinfo->pub.output_file);
-  putc('7', dinfo->pub.output_file);
-  putc('a', dinfo->pub.output_file);
-  /* Write the Logical Screen Descriptor */
-  put_word(dinfo, (unsigned int) dinfo->cinfo->output_width);
-  put_word(dinfo, (unsigned int) dinfo->cinfo->output_height);
-  FlagByte = 0x80;		/* Yes, there is a global color table */
-  FlagByte |= (BitsPerPixel-1) << 4; /* color resolution */
-  FlagByte |= (BitsPerPixel-1);	/* size of global color table */
-  putc(FlagByte, dinfo->pub.output_file);
-  putc(0, dinfo->pub.output_file); /* Background color index */
-  putc(0, dinfo->pub.output_file); /* Reserved (aspect ratio in GIF89) */
-  /* Write the Global Color Map */
-  /* If the color map is more than 8 bits precision, */
-  /* we reduce it to 8 bits by shifting */
-  for (i=0; i < ColorMapSize; i++) {
-    if (i < num_colors) {
-      if (colormap != NULL) {
-	if (dinfo->cinfo->out_color_space == JCS_RGB) {
-	  /* Normal case: RGB color map */
-	  putc(GETJSAMPLE(colormap[0][i]) >> cshift, dinfo->pub.output_file);
-	  putc(GETJSAMPLE(colormap[1][i]) >> cshift, dinfo->pub.output_file);
-	  putc(GETJSAMPLE(colormap[2][i]) >> cshift, dinfo->pub.output_file);
-	} else {
-	  /* Grayscale "color map": possible if quantizing grayscale image */
-	  put_3bytes(dinfo, GETJSAMPLE(colormap[0][i]) >> cshift);
-	}
-      } else {
-	/* Create a gray-scale map of num_colors values, range 0..255 */
-	put_3bytes(dinfo, (i * 255 + (num_colors-1)/2) / (num_colors-1));
-      }
-    } else {
-      /* fill out the map to a power of 2 */
-      put_3bytes(dinfo, 0);
-    }
-  }
-  /* Write image separator and Image Descriptor */
-  putc(',', dinfo->pub.output_file); /* separator */
-  put_word(dinfo, 0);		/* left/top offset */
-  put_word(dinfo, 0);
-  put_word(dinfo, (unsigned int) dinfo->cinfo->output_width); /* image size */
-  put_word(dinfo, (unsigned int) dinfo->cinfo->output_height);
-  /* flag byte: not interlaced, no local color map */
-  putc(0x00, dinfo->pub.output_file);
-  /* Write Initial Code Size byte */
-  putc(InitCodeSize, dinfo->pub.output_file);
-
-  /* Initialize for "compression" of image data */
-  compress_init(dinfo, InitCodeSize+1);
-}
-
-
-/*
- * Startup: write the file header.
- */
-
-METHODDEF(void)
-start_output_gif (j_decompress_ptr cinfo, djpeg_dest_ptr dinfo)
-{
-  gif_dest_ptr dest = (gif_dest_ptr) dinfo;
-
-  if (cinfo->quantize_colors)
-    emit_header(dest, cinfo->actual_number_of_colors, cinfo->colormap);
-  else
-    emit_header(dest, 256, (JSAMPARRAY) NULL);
-}
-
-
-/*
- * Write some pixel data.
- * In this module rows_supplied will always be 1.
- */
-
-METHODDEF(void)
-put_pixel_rows (j_decompress_ptr cinfo, djpeg_dest_ptr dinfo,
-		JDIMENSION rows_supplied)
-{
-  gif_dest_ptr dest = (gif_dest_ptr) dinfo;
-  register JSAMPROW ptr;
-  register JDIMENSION col;
-
-  ptr = dest->pub.buffer[0];
-  for (col = cinfo->output_width; col > 0; col--) {
-    compress_pixel(dest, GETJSAMPLE(*ptr++));
-  }
-}
-
-
-/*
- * Finish up at the end of the file.
- */
-
-METHODDEF(void)
-finish_output_gif (j_decompress_ptr cinfo, djpeg_dest_ptr dinfo)
-{
-  gif_dest_ptr dest = (gif_dest_ptr) dinfo;
-
-  /* Flush "compression" mechanism */
-  compress_term(dest);
-  /* Write a zero-length data block to end the series */
-  putc(0, dest->pub.output_file);
-  /* Write the GIF terminator mark */
-  putc(';', dest->pub.output_file);
-  /* Make sure we wrote the output file OK */
-  fflush(dest->pub.output_file);
-  if (ferror(dest->pub.output_file))
-    ERREXIT(cinfo, JERR_FILE_WRITE);
-}
-
-
-/*
- * The module selection routine for GIF format output.
- */
-
-GLOBAL(djpeg_dest_ptr)
-jinit_write_gif (j_decompress_ptr cinfo)
-{
-  gif_dest_ptr dest;
-
-  /* Create module interface object, fill in method pointers */
-  dest = (gif_dest_ptr)
-      (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
-				  SIZEOF(gif_dest_struct));
-  dest->cinfo = cinfo;		/* make back link for subroutines */
-  dest->pub.start_output = start_output_gif;
-  dest->pub.put_pixel_rows = put_pixel_rows;
-  dest->pub.finish_output = finish_output_gif;
-
-  if (cinfo->out_color_space != JCS_GRAYSCALE &&
-      cinfo->out_color_space != JCS_RGB)
-    ERREXIT(cinfo, JERR_GIF_COLORSPACE);
-
-  /* Force quantization if color or if > 8 bits input */
-  if (cinfo->out_color_space != JCS_GRAYSCALE || cinfo->data_precision > 8) {
-    /* Force quantization to at most 256 colors */
-    cinfo->quantize_colors = TRUE;
-    if (cinfo->desired_number_of_colors > 256)
-      cinfo->desired_number_of_colors = 256;
-  }
-
-  /* Calculate output image dimensions so we can allocate space */
-  jpeg_calc_output_dimensions(cinfo);
-
-  if (cinfo->output_components != 1) /* safety check: just one component? */
-    ERREXIT(cinfo, JERR_GIF_BUG);
-
-  /* Create decompressor output buffer. */
-  dest->pub.buffer = (*cinfo->mem->alloc_sarray)
-    ((j_common_ptr) cinfo, JPOOL_IMAGE, cinfo->output_width, (JDIMENSION) 1);
-  dest->pub.buffer_height = 1;
-
-  return (djpeg_dest_ptr) dest;
-}
-
-#endif /* GIF_SUPPORTED */
diff --git a/src/libjpeg/wrjpgcom.c b/src/libjpeg/wrjpgcom.c
deleted file mode 100644
index 7d10ee6..0000000
--- a/src/libjpeg/wrjpgcom.c
+++ /dev/null
@@ -1,583 +0,0 @@
-/*
- * wrjpgcom.c
- *
- * Copyright (C) 1994-1997, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains a very simple stand-alone application that inserts
- * user-supplied text as a COM (comment) marker in a JFIF file.
- * This may be useful as an example of the minimum logic needed to parse
- * JPEG markers.
- */
-
-#define JPEG_CJPEG_DJPEG	/* to get the command-line config symbols */
-#include "jinclude.h"		/* get auto-config symbols, <stdio.h> */
-
-#ifndef HAVE_STDLIB_H		/* <stdlib.h> should declare malloc() */
-extern void * malloc ();
-#endif
-#include <ctype.h>		/* to declare isupper(), tolower() */
-#ifdef USE_SETMODE
-#include <fcntl.h>		/* to declare setmode()'s parameter macros */
-/* If you have setmode() but not <io.h>, just delete this line: */
-#include <io.h>			/* to declare setmode() */
-#endif
-
-#ifdef USE_CCOMMAND		/* command-line reader for Macintosh */
-#ifdef __MWERKS__
-#include <SIOUX.h>              /* Metrowerks needs this */
-#include <console.h>		/* ... and this */
-#endif
-#ifdef THINK_C
-#include <console.h>		/* Think declares it here */
-#endif
-#endif
-
-#ifdef DONT_USE_B_MODE		/* define mode parameters for fopen() */
-#define READ_BINARY	"r"
-#define WRITE_BINARY	"w"
-#else
-#ifdef VMS			/* VMS is very nonstandard */
-#define READ_BINARY	"rb", "ctx=stm"
-#define WRITE_BINARY	"wb", "ctx=stm"
-#else				/* standard ANSI-compliant case */
-#define READ_BINARY	"rb"
-#define WRITE_BINARY	"wb"
-#endif
-#endif
-
-#ifndef EXIT_FAILURE		/* define exit() codes if not provided */
-#define EXIT_FAILURE  1
-#endif
-#ifndef EXIT_SUCCESS
-#ifdef VMS
-#define EXIT_SUCCESS  1		/* VMS is very nonstandard */
-#else
-#define EXIT_SUCCESS  0
-#endif
-#endif
-
-/* Reduce this value if your malloc() can't allocate blocks up to 64K.
- * On DOS, compiling in large model is usually a better solution.
- */
-
-#ifndef MAX_COM_LENGTH
-#define MAX_COM_LENGTH 65000L	/* must be <= 65533 in any case */
-#endif
-
-
-/*
- * These macros are used to read the input file and write the output file.
- * To reuse this code in another application, you might need to change these.
- */
-
-static FILE * infile;		/* input JPEG file */
-
-/* Return next input byte, or EOF if no more */
-#define NEXTBYTE()  getc(infile)
-
-static FILE * outfile;		/* output JPEG file */
-
-/* Emit an output byte */
-#define PUTBYTE(x)  putc((x), outfile)
-
-
-/* Error exit handler */
-#define ERREXIT(msg)  (fprintf(stderr, "%s\n", msg), exit(EXIT_FAILURE))
-
-
-/* Read one byte, testing for EOF */
-static int
-read_1_byte (void)
-{
-  int c;
-
-  c = NEXTBYTE();
-  if (c == EOF)
-    ERREXIT("Premature EOF in JPEG file");
-  return c;
-}
-
-/* Read 2 bytes, convert to unsigned int */
-/* All 2-byte quantities in JPEG markers are MSB first */
-static unsigned int
-read_2_bytes (void)
-{
-  int c1, c2;
-
-  c1 = NEXTBYTE();
-  if (c1 == EOF)
-    ERREXIT("Premature EOF in JPEG file");
-  c2 = NEXTBYTE();
-  if (c2 == EOF)
-    ERREXIT("Premature EOF in JPEG file");
-  return (((unsigned int) c1) << 8) + ((unsigned int) c2);
-}
-
-
-/* Routines to write data to output file */
-
-static void
-write_1_byte (int c)
-{
-  PUTBYTE(c);
-}
-
-static void
-write_2_bytes (unsigned int val)
-{
-  PUTBYTE((val >> 8) & 0xFF);
-  PUTBYTE(val & 0xFF);
-}
-
-static void
-write_marker (int marker)
-{
-  PUTBYTE(0xFF);
-  PUTBYTE(marker);
-}
-
-static void
-copy_rest_of_file (void)
-{
-  int c;
-
-  while ((c = NEXTBYTE()) != EOF)
-    PUTBYTE(c);
-}
-
-
-/*
- * JPEG markers consist of one or more 0xFF bytes, followed by a marker
- * code byte (which is not an FF).  Here are the marker codes of interest
- * in this program.  (See jdmarker.c for a more complete list.)
- */
-
-#define M_SOF0  0xC0		/* Start Of Frame N */
-#define M_SOF1  0xC1		/* N indicates which compression process */
-#define M_SOF2  0xC2		/* Only SOF0-SOF2 are now in common use */
-#define M_SOF3  0xC3
-#define M_SOF5  0xC5		/* NB: codes C4 and CC are NOT SOF markers */
-#define M_SOF6  0xC6
-#define M_SOF7  0xC7
-#define M_SOF9  0xC9
-#define M_SOF10 0xCA
-#define M_SOF11 0xCB
-#define M_SOF13 0xCD
-#define M_SOF14 0xCE
-#define M_SOF15 0xCF
-#define M_SOI   0xD8		/* Start Of Image (beginning of datastream) */
-#define M_EOI   0xD9		/* End Of Image (end of datastream) */
-#define M_SOS   0xDA		/* Start Of Scan (begins compressed data) */
-#define M_COM   0xFE		/* COMment */
-
-
-/*
- * Find the next JPEG marker and return its marker code.
- * We expect at least one FF byte, possibly more if the compressor used FFs
- * to pad the file.  (Padding FFs will NOT be replicated in the output file.)
- * There could also be non-FF garbage between markers.  The treatment of such
- * garbage is unspecified; we choose to skip over it but emit a warning msg.
- * NB: this routine must not be used after seeing SOS marker, since it will
- * not deal correctly with FF/00 sequences in the compressed image data...
- */
-
-static int
-next_marker (void)
-{
-  int c;
-  int discarded_bytes = 0;
-
-  /* Find 0xFF byte; count and skip any non-FFs. */
-  c = read_1_byte();
-  while (c != 0xFF) {
-    discarded_bytes++;
-    c = read_1_byte();
-  }
-  /* Get marker code byte, swallowing any duplicate FF bytes.  Extra FFs
-   * are legal as pad bytes, so don't count them in discarded_bytes.
-   */
-  do {
-    c = read_1_byte();
-  } while (c == 0xFF);
-
-  if (discarded_bytes != 0) {
-    fprintf(stderr, "Warning: garbage data found in JPEG file\n");
-  }
-
-  return c;
-}
-
-
-/*
- * Read the initial marker, which should be SOI.
- * For a JFIF file, the first two bytes of the file should be literally
- * 0xFF M_SOI.  To be more general, we could use next_marker, but if the
- * input file weren't actually JPEG at all, next_marker might read the whole
- * file and then return a misleading error message...
- */
-
-static int
-first_marker (void)
-{
-  int c1, c2;
-
-  c1 = NEXTBYTE();
-  c2 = NEXTBYTE();
-  if (c1 != 0xFF || c2 != M_SOI)
-    ERREXIT("Not a JPEG file");
-  return c2;
-}
-
-
-/*
- * Most types of marker are followed by a variable-length parameter segment.
- * This routine skips over the parameters for any marker we don't otherwise
- * want to process.
- * Note that we MUST skip the parameter segment explicitly in order not to
- * be fooled by 0xFF bytes that might appear within the parameter segment;
- * such bytes do NOT introduce new markers.
- */
-
-static void
-copy_variable (void)
-/* Copy an unknown or uninteresting variable-length marker */
-{
-  unsigned int length;
-
-  /* Get the marker parameter length count */
-  length = read_2_bytes();
-  write_2_bytes(length);
-  /* Length includes itself, so must be at least 2 */
-  if (length < 2)
-    ERREXIT("Erroneous JPEG marker length");
-  length -= 2;
-  /* Skip over the remaining bytes */
-  while (length > 0) {
-    write_1_byte(read_1_byte());
-    length--;
-  }
-}
-
-static void
-skip_variable (void)
-/* Skip over an unknown or uninteresting variable-length marker */
-{
-  unsigned int length;
-
-  /* Get the marker parameter length count */
-  length = read_2_bytes();
-  /* Length includes itself, so must be at least 2 */
-  if (length < 2)
-    ERREXIT("Erroneous JPEG marker length");
-  length -= 2;
-  /* Skip over the remaining bytes */
-  while (length > 0) {
-    (void) read_1_byte();
-    length--;
-  }
-}
-
-
-/*
- * Parse the marker stream until SOFn or EOI is seen;
- * copy data to output, but discard COM markers unless keep_COM is true.
- */
-
-static int
-scan_JPEG_header (int keep_COM)
-{
-  int marker;
-
-  /* Expect SOI at start of file */
-  if (first_marker() != M_SOI)
-    ERREXIT("Expected SOI marker first");
-  write_marker(M_SOI);
-
-  /* Scan miscellaneous markers until we reach SOFn. */
-  for (;;) {
-    marker = next_marker();
-    switch (marker) {
-      /* Note that marker codes 0xC4, 0xC8, 0xCC are not, and must not be,
-       * treated as SOFn.  C4 in particular is actually DHT.
-       */
-    case M_SOF0:		/* Baseline */
-    case M_SOF1:		/* Extended sequential, Huffman */
-    case M_SOF2:		/* Progressive, Huffman */
-    case M_SOF3:		/* Lossless, Huffman */
-    case M_SOF5:		/* Differential sequential, Huffman */
-    case M_SOF6:		/* Differential progressive, Huffman */
-    case M_SOF7:		/* Differential lossless, Huffman */
-    case M_SOF9:		/* Extended sequential, arithmetic */
-    case M_SOF10:		/* Progressive, arithmetic */
-    case M_SOF11:		/* Lossless, arithmetic */
-    case M_SOF13:		/* Differential sequential, arithmetic */
-    case M_SOF14:		/* Differential progressive, arithmetic */
-    case M_SOF15:		/* Differential lossless, arithmetic */
-      return marker;
-
-    case M_SOS:			/* should not see compressed data before SOF */
-      ERREXIT("SOS without prior SOFn");
-      break;
-
-    case M_EOI:			/* in case it's a tables-only JPEG stream */
-      return marker;
-
-    case M_COM:			/* Existing COM: conditionally discard */
-      if (keep_COM) {
-	write_marker(marker);
-	copy_variable();
-      } else {
-	skip_variable();
-      }
-      break;
-
-    default:			/* Anything else just gets copied */
-      write_marker(marker);
-      copy_variable();		/* we assume it has a parameter count... */
-      break;
-    }
-  } /* end loop */
-}
-
-
-/* Command line parsing code */
-
-static const char * progname;	/* program name for error messages */
-
-
-static void
-usage (void)
-/* complain about bad command line */
-{
-  fprintf(stderr, "wrjpgcom inserts a textual comment in a JPEG file.\n");
-  fprintf(stderr, "You can add to or replace any existing comment(s).\n");
-
-  fprintf(stderr, "Usage: %s [switches] ", progname);
-#ifdef TWO_FILE_COMMANDLINE
-  fprintf(stderr, "inputfile outputfile\n");
-#else
-  fprintf(stderr, "[inputfile]\n");
-#endif
-
-  fprintf(stderr, "Switches (names may be abbreviated):\n");
-  fprintf(stderr, "  -replace         Delete any existing comments\n");
-  fprintf(stderr, "  -comment \"text\"  Insert comment with given text\n");
-  fprintf(stderr, "  -cfile name      Read comment from named file\n");
-  fprintf(stderr, "Notice that you must put quotes around the comment text\n");
-  fprintf(stderr, "when you use -comment.\n");
-  fprintf(stderr, "If you do not give either -comment or -cfile on the command line,\n");
-  fprintf(stderr, "then the comment text is read from standard input.\n");
-  fprintf(stderr, "It can be multiple lines, up to %u characters total.\n",
-	  (unsigned int) MAX_COM_LENGTH);
-#ifndef TWO_FILE_COMMANDLINE
-  fprintf(stderr, "You must specify an input JPEG file name when supplying\n");
-  fprintf(stderr, "comment text from standard input.\n");
-#endif
-
-  exit(EXIT_FAILURE);
-}
-
-
-static int
-keymatch (char * arg, const char * keyword, int minchars)
-/* Case-insensitive matching of (possibly abbreviated) keyword switches. */
-/* keyword is the constant keyword (must be lower case already), */
-/* minchars is length of minimum legal abbreviation. */
-{
-  register int ca, ck;
-  register int nmatched = 0;
-
-  while ((ca = *arg++) != '\0') {
-    if ((ck = *keyword++) == '\0')
-      return 0;			/* arg longer than keyword, no good */
-    if (isupper(ca))		/* force arg to lcase (assume ck is already) */
-      ca = tolower(ca);
-    if (ca != ck)
-      return 0;			/* no good */
-    nmatched++;			/* count matched characters */
-  }
-  /* reached end of argument; fail if it's too short for unique abbrev */
-  if (nmatched < minchars)
-    return 0;
-  return 1;			/* A-OK */
-}
-
-
-/*
- * The main program.
- */
-
-int
-main (int argc, char **argv)
-{
-  int argn;
-  char * arg;
-  int keep_COM = 1;
-  char * comment_arg = NULL;
-  FILE * comment_file = NULL;
-  unsigned int comment_length = 0;
-  int marker;
-
-  /* On Mac, fetch a command line. */
-#ifdef USE_CCOMMAND
-  argc = ccommand(&argv);
-#endif
-
-  progname = argv[0];
-  if (progname == NULL || progname[0] == 0)
-    progname = "wrjpgcom";	/* in case C library doesn't provide it */
-
-  /* Parse switches, if any */
-  for (argn = 1; argn < argc; argn++) {
-    arg = argv[argn];
-    if (arg[0] != '-')
-      break;			/* not switch, must be file name */
-    arg++;			/* advance over '-' */
-    if (keymatch(arg, "replace", 1)) {
-      keep_COM = 0;
-    } else if (keymatch(arg, "cfile", 2)) {
-      if (++argn >= argc) usage();
-      if ((comment_file = fopen(argv[argn], "r")) == NULL) {
-	fprintf(stderr, "%s: can't open %s\n", progname, argv[argn]);
-	exit(EXIT_FAILURE);
-      }
-    } else if (keymatch(arg, "comment", 1)) {
-      if (++argn >= argc) usage();
-      comment_arg = argv[argn];
-      /* If the comment text starts with '"', then we are probably running
-       * under MS-DOG and must parse out the quoted string ourselves.  Sigh.
-       */
-      if (comment_arg[0] == '"') {
-	comment_arg = (char *) malloc((size_t) MAX_COM_LENGTH);
-	if (comment_arg == NULL)
-	  ERREXIT("Insufficient memory");
-	strcpy(comment_arg, argv[argn]+1);
-	for (;;) {
-	  comment_length = (unsigned int) strlen(comment_arg);
-	  if (comment_length > 0 && comment_arg[comment_length-1] == '"') {
-	    comment_arg[comment_length-1] = '\0'; /* zap terminating quote */
-	    break;
-	  }
-	  if (++argn >= argc)
-	    ERREXIT("Missing ending quote mark");
-	  strcat(comment_arg, " ");
-	  strcat(comment_arg, argv[argn]);
-	}
-      }
-      comment_length = (unsigned int) strlen(comment_arg);
-    } else
-      usage();
-  }
-
-  /* Cannot use both -comment and -cfile. */
-  if (comment_arg != NULL && comment_file != NULL)
-    usage();
-  /* If there is neither -comment nor -cfile, we will read the comment text
-   * from stdin; in this case there MUST be an input JPEG file name.
-   */
-  if (comment_arg == NULL && comment_file == NULL && argn >= argc)
-    usage();
-
-  /* Open the input file. */
-  if (argn < argc) {
-    if ((infile = fopen(argv[argn], READ_BINARY)) == NULL) {
-      fprintf(stderr, "%s: can't open %s\n", progname, argv[argn]);
-      exit(EXIT_FAILURE);
-    }
-  } else {
-    /* default input file is stdin */
-#ifdef USE_SETMODE		/* need to hack file mode? */
-    setmode(fileno(stdin), O_BINARY);
-#endif
-#ifdef USE_FDOPEN		/* need to re-open in binary mode? */
-    if ((infile = fdopen(fileno(stdin), READ_BINARY)) == NULL) {
-      fprintf(stderr, "%s: can't open stdin\n", progname);
-      exit(EXIT_FAILURE);
-    }
-#else
-    infile = stdin;
-#endif
-  }
-
-  /* Open the output file. */
-#ifdef TWO_FILE_COMMANDLINE
-  /* Must have explicit output file name */
-  if (argn != argc-2) {
-    fprintf(stderr, "%s: must name one input and one output file\n",
-	    progname);
-    usage();
-  }
-  if ((outfile = fopen(argv[argn+1], WRITE_BINARY)) == NULL) {
-    fprintf(stderr, "%s: can't open %s\n", progname, argv[argn+1]);
-    exit(EXIT_FAILURE);
-  }
-#else
-  /* Unix style: expect zero or one file name */
-  if (argn < argc-1) {
-    fprintf(stderr, "%s: only one input file\n", progname);
-    usage();
-  }
-  /* default output file is stdout */
-#ifdef USE_SETMODE		/* need to hack file mode? */
-  setmode(fileno(stdout), O_BINARY);
-#endif
-#ifdef USE_FDOPEN		/* need to re-open in binary mode? */
-  if ((outfile = fdopen(fileno(stdout), WRITE_BINARY)) == NULL) {
-    fprintf(stderr, "%s: can't open stdout\n", progname);
-    exit(EXIT_FAILURE);
-  }
-#else
-  outfile = stdout;
-#endif
-#endif /* TWO_FILE_COMMANDLINE */
-
-  /* Collect comment text from comment_file or stdin, if necessary */
-  if (comment_arg == NULL) {
-    FILE * src_file;
-    int c;
-
-    comment_arg = (char *) malloc((size_t) MAX_COM_LENGTH);
-    if (comment_arg == NULL)
-      ERREXIT("Insufficient memory");
-    comment_length = 0;
-    src_file = (comment_file != NULL ? comment_file : stdin);
-    while ((c = getc(src_file)) != EOF) {
-      if (comment_length >= (unsigned int) MAX_COM_LENGTH) {
-	fprintf(stderr, "Comment text may not exceed %u bytes\n",
-		(unsigned int) MAX_COM_LENGTH);
-	exit(EXIT_FAILURE);
-      }
-      comment_arg[comment_length++] = (char) c;
-    }
-    if (comment_file != NULL)
-      fclose(comment_file);
-  }
-
-  /* Copy JPEG headers until SOFn marker;
-   * we will insert the new comment marker just before SOFn.
-   * This (a) causes the new comment to appear after, rather than before,
-   * existing comments; and (b) ensures that comments come after any JFIF
-   * or JFXX markers, as required by the JFIF specification.
-   */
-  marker = scan_JPEG_header(keep_COM);
-  /* Insert the new COM marker, but only if nonempty text has been supplied */
-  if (comment_length > 0) {
-    write_marker(M_COM);
-    write_2_bytes(comment_length + 2);
-    while (comment_length > 0) {
-      write_1_byte(*comment_arg++);
-      comment_length--;
-    }
-  }
-  /* Duplicate the remainder of the source file.
-   * Note that any COM markers occuring after SOF will not be touched.
-   */
-  write_marker(marker);
-  copy_rest_of_file();
-
-  /* All done. */
-  exit(EXIT_SUCCESS);
-  return 0;			/* suppress no-return-value warnings */
-}
diff --git a/src/libjpeg/wrppm.c b/src/libjpeg/wrppm.c
deleted file mode 100644
index cfd4160..0000000
--- a/src/libjpeg/wrppm.c
+++ /dev/null
@@ -1,268 +0,0 @@
-/*
- * wrppm.c
- *
- * Copyright (C) 1991-1996, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains routines to write output images in PPM/PGM format.
- * The extended 2-byte-per-sample raw PPM/PGM formats are supported.
- * The PBMPLUS library is NOT required to compile this software
- * (but it is highly useful as a set of PPM image manipulation programs).
- *
- * These routines may need modification for non-Unix environments or
- * specialized applications.  As they stand, they assume output to
- * an ordinary stdio stream.
- */
-
-#include "cdjpeg.h"		/* Common decls for cjpeg/djpeg applications */
-
-#ifdef PPM_SUPPORTED
-
-
-/*
- * For 12-bit JPEG data, we either downscale the values to 8 bits
- * (to write standard byte-per-sample PPM/PGM files), or output
- * nonstandard word-per-sample PPM/PGM files.  Downscaling is done
- * if PPM_NORAWWORD is defined (this can be done in the Makefile
- * or in jconfig.h).
- * (When the core library supports data precision reduction, a cleaner
- * implementation will be to ask for that instead.)
- */
-
-#if BITS_IN_JSAMPLE == 8
-#define PUTPPMSAMPLE(ptr,v)  *ptr++ = (char) (v)
-#define BYTESPERSAMPLE 1
-#define PPM_MAXVAL 255
-#else
-#ifdef PPM_NORAWWORD
-#define PUTPPMSAMPLE(ptr,v)  *ptr++ = (char) ((v) >> (BITS_IN_JSAMPLE-8))
-#define BYTESPERSAMPLE 1
-#define PPM_MAXVAL 255
-#else
-/* The word-per-sample format always puts the LSB first. */
-#define PUTPPMSAMPLE(ptr,v)			\
-	{ register int val_ = v;		\
-	  *ptr++ = (char) (val_ & 0xFF);	\
-	  *ptr++ = (char) ((val_ >> 8) & 0xFF);	\
-	}
-#define BYTESPERSAMPLE 2
-#define PPM_MAXVAL ((1<<BITS_IN_JSAMPLE)-1)
-#endif
-#endif
-
-
-/*
- * When JSAMPLE is the same size as char, we can just fwrite() the
- * decompressed data to the PPM or PGM file.  On PCs, in order to make this
- * work the output buffer must be allocated in near data space, because we are
- * assuming small-data memory model wherein fwrite() can't reach far memory.
- * If you need to process very wide images on a PC, you might have to compile
- * in large-memory model, or else replace fwrite() with a putc() loop ---
- * which will be much slower.
- */
-
-
-/* Private version of data destination object */
-
-typedef struct {
-  struct djpeg_dest_struct pub;	/* public fields */
-
-  /* Usually these two pointers point to the same place: */
-  char *iobuffer;		/* fwrite's I/O buffer */
-  JSAMPROW pixrow;		/* decompressor output buffer */
-  size_t buffer_width;		/* width of I/O buffer */
-  JDIMENSION samples_per_row;	/* JSAMPLEs per output row */
-} ppm_dest_struct;
-
-typedef ppm_dest_struct * ppm_dest_ptr;
-
-
-/*
- * Write some pixel data.
- * In this module rows_supplied will always be 1.
- *
- * put_pixel_rows handles the "normal" 8-bit case where the decompressor
- * output buffer is physically the same as the fwrite buffer.
- */
-
-METHODDEF(void)
-put_pixel_rows (j_decompress_ptr cinfo, djpeg_dest_ptr dinfo,
-		JDIMENSION rows_supplied)
-{
-  ppm_dest_ptr dest = (ppm_dest_ptr) dinfo;
-
-  (void) JFWRITE(dest->pub.output_file, dest->iobuffer, dest->buffer_width);
-}
-
-
-/*
- * This code is used when we have to copy the data and apply a pixel
- * format translation.  Typically this only happens in 12-bit mode.
- */
-
-METHODDEF(void)
-copy_pixel_rows (j_decompress_ptr cinfo, djpeg_dest_ptr dinfo,
-		 JDIMENSION rows_supplied)
-{
-  ppm_dest_ptr dest = (ppm_dest_ptr) dinfo;
-  register char * bufferptr;
-  register JSAMPROW ptr;
-  register JDIMENSION col;
-
-  ptr = dest->pub.buffer[0];
-  bufferptr = dest->iobuffer;
-  for (col = dest->samples_per_row; col > 0; col--) {
-    PUTPPMSAMPLE(bufferptr, GETJSAMPLE(*ptr++));
-  }
-  (void) JFWRITE(dest->pub.output_file, dest->iobuffer, dest->buffer_width);
-}
-
-
-/*
- * Write some pixel data when color quantization is in effect.
- * We have to demap the color index values to straight data.
- */
-
-METHODDEF(void)
-put_demapped_rgb (j_decompress_ptr cinfo, djpeg_dest_ptr dinfo,
-		  JDIMENSION rows_supplied)
-{
-  ppm_dest_ptr dest = (ppm_dest_ptr) dinfo;
-  register char * bufferptr;
-  register int pixval;
-  register JSAMPROW ptr;
-  register JSAMPROW color_map0 = cinfo->colormap[0];
-  register JSAMPROW color_map1 = cinfo->colormap[1];
-  register JSAMPROW color_map2 = cinfo->colormap[2];
-  register JDIMENSION col;
-
-  ptr = dest->pub.buffer[0];
-  bufferptr = dest->iobuffer;
-  for (col = cinfo->output_width; col > 0; col--) {
-    pixval = GETJSAMPLE(*ptr++);
-    PUTPPMSAMPLE(bufferptr, GETJSAMPLE(color_map0[pixval]));
-    PUTPPMSAMPLE(bufferptr, GETJSAMPLE(color_map1[pixval]));
-    PUTPPMSAMPLE(bufferptr, GETJSAMPLE(color_map2[pixval]));
-  }
-  (void) JFWRITE(dest->pub.output_file, dest->iobuffer, dest->buffer_width);
-}
-
-
-METHODDEF(void)
-put_demapped_gray (j_decompress_ptr cinfo, djpeg_dest_ptr dinfo,
-		   JDIMENSION rows_supplied)
-{
-  ppm_dest_ptr dest = (ppm_dest_ptr) dinfo;
-  register char * bufferptr;
-  register JSAMPROW ptr;
-  register JSAMPROW color_map = cinfo->colormap[0];
-  register JDIMENSION col;
-
-  ptr = dest->pub.buffer[0];
-  bufferptr = dest->iobuffer;
-  for (col = cinfo->output_width; col > 0; col--) {
-    PUTPPMSAMPLE(bufferptr, GETJSAMPLE(color_map[GETJSAMPLE(*ptr++)]));
-  }
-  (void) JFWRITE(dest->pub.output_file, dest->iobuffer, dest->buffer_width);
-}
-
-
-/*
- * Startup: write the file header.
- */
-
-METHODDEF(void)
-start_output_ppm (j_decompress_ptr cinfo, djpeg_dest_ptr dinfo)
-{
-  ppm_dest_ptr dest = (ppm_dest_ptr) dinfo;
-
-  /* Emit file header */
-  switch (cinfo->out_color_space) {
-  case JCS_GRAYSCALE:
-    /* emit header for raw PGM format */
-    fprintf(dest->pub.output_file, "P5\n%ld %ld\n%d\n",
-	    (long) cinfo->output_width, (long) cinfo->output_height,
-	    PPM_MAXVAL);
-    break;
-  case JCS_RGB:
-    /* emit header for raw PPM format */
-    fprintf(dest->pub.output_file, "P6\n%ld %ld\n%d\n",
-	    (long) cinfo->output_width, (long) cinfo->output_height,
-	    PPM_MAXVAL);
-    break;
-  default:
-    ERREXIT(cinfo, JERR_PPM_COLORSPACE);
-  }
-}
-
-
-/*
- * Finish up at the end of the file.
- */
-
-METHODDEF(void)
-finish_output_ppm (j_decompress_ptr cinfo, djpeg_dest_ptr dinfo)
-{
-  /* Make sure we wrote the output file OK */
-  fflush(dinfo->output_file);
-  if (ferror(dinfo->output_file))
-    ERREXIT(cinfo, JERR_FILE_WRITE);
-}
-
-
-/*
- * The module selection routine for PPM format output.
- */
-
-GLOBAL(djpeg_dest_ptr)
-jinit_write_ppm (j_decompress_ptr cinfo)
-{
-  ppm_dest_ptr dest;
-
-  /* Create module interface object, fill in method pointers */
-  dest = (ppm_dest_ptr)
-      (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
-				  SIZEOF(ppm_dest_struct));
-  dest->pub.start_output = start_output_ppm;
-  dest->pub.finish_output = finish_output_ppm;
-
-  /* Calculate output image dimensions so we can allocate space */
-  jpeg_calc_output_dimensions(cinfo);
-
-  /* Create physical I/O buffer.  Note we make this near on a PC. */
-  dest->samples_per_row = cinfo->output_width * cinfo->out_color_components;
-  dest->buffer_width = dest->samples_per_row * (BYTESPERSAMPLE * SIZEOF(char));
-  dest->iobuffer = (char *) (*cinfo->mem->alloc_small)
-    ((j_common_ptr) cinfo, JPOOL_IMAGE, dest->buffer_width);
-
-  if (cinfo->quantize_colors || BITS_IN_JSAMPLE != 8 ||
-      SIZEOF(JSAMPLE) != SIZEOF(char)) {
-    /* When quantizing, we need an output buffer for colormap indexes
-     * that's separate from the physical I/O buffer.  We also need a
-     * separate buffer if pixel format translation must take place.
-     */
-    dest->pub.buffer = (*cinfo->mem->alloc_sarray)
-      ((j_common_ptr) cinfo, JPOOL_IMAGE,
-       cinfo->output_width * cinfo->output_components, (JDIMENSION) 1);
-    dest->pub.buffer_height = 1;
-    if (! cinfo->quantize_colors)
-      dest->pub.put_pixel_rows = copy_pixel_rows;
-    else if (cinfo->out_color_space == JCS_GRAYSCALE)
-      dest->pub.put_pixel_rows = put_demapped_gray;
-    else
-      dest->pub.put_pixel_rows = put_demapped_rgb;
-  } else {
-    /* We will fwrite() directly from decompressor output buffer. */
-    /* Synthesize a JSAMPARRAY pointer structure */
-    /* Cast here implies near->far pointer conversion on PCs */
-    dest->pixrow = (JSAMPROW) dest->iobuffer;
-    dest->pub.buffer = & dest->pixrow;
-    dest->pub.buffer_height = 1;
-    dest->pub.put_pixel_rows = put_pixel_rows;
-  }
-
-  return (djpeg_dest_ptr) dest;
-}
-
-#endif /* PPM_SUPPORTED */
diff --git a/src/libjpeg/wrrle.c b/src/libjpeg/wrrle.c
deleted file mode 100644
index 7a00c0d..0000000
--- a/src/libjpeg/wrrle.c
+++ /dev/null
@@ -1,305 +0,0 @@
-/*
- * wrrle.c
- *
- * Copyright (C) 1991-1996, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains routines to write output images in RLE format.
- * The Utah Raster Toolkit library is required (version 3.1 or later).
- *
- * These routines may need modification for non-Unix environments or
- * specialized applications.  As they stand, they assume output to
- * an ordinary stdio stream.
- *
- * Based on code contributed by Mike Lijewski,
- * with updates from Robert Hutchinson.
- */
-
-#include "cdjpeg.h"		/* Common decls for cjpeg/djpeg applications */
-
-#ifdef RLE_SUPPORTED
-
-/* rle.h is provided by the Utah Raster Toolkit. */
-
-#include <rle.h>
-
-/*
- * We assume that JSAMPLE has the same representation as rle_pixel,
- * to wit, "unsigned char".  Hence we can't cope with 12- or 16-bit samples.
- */
-
-#if BITS_IN_JSAMPLE != 8
-  Sorry, this code only copes with 8-bit JSAMPLEs. /* deliberate syntax err */
-#endif
-
-
-/*
- * Since RLE stores scanlines bottom-to-top, we have to invert the image
- * from JPEG's top-to-bottom order.  To do this, we save the outgoing data
- * in a virtual array during put_pixel_row calls, then actually emit the
- * RLE file during finish_output.
- */
-
-
-/*
- * For now, if we emit an RLE color map then it is always 256 entries long,
- * though not all of the entries need be used.
- */
-
-#define CMAPBITS	8
-#define CMAPLENGTH	(1<<(CMAPBITS))
-
-typedef struct {
-  struct djpeg_dest_struct pub; /* public fields */
-
-  jvirt_sarray_ptr image;	/* virtual array to store the output image */
-  rle_map *colormap;	 	/* RLE-style color map, or NULL if none */
-  rle_pixel **rle_row;		/* To pass rows to rle_putrow() */
-
-} rle_dest_struct;
-
-typedef rle_dest_struct * rle_dest_ptr;
-
-/* Forward declarations */
-METHODDEF(void) rle_put_pixel_rows
-    JPP((j_decompress_ptr cinfo, djpeg_dest_ptr dinfo,
-	 JDIMENSION rows_supplied));
-
-
-/*
- * Write the file header.
- *
- * In this module it's easier to wait till finish_output to write anything.
- */
-
-METHODDEF(void)
-start_output_rle (j_decompress_ptr cinfo, djpeg_dest_ptr dinfo)
-{
-  rle_dest_ptr dest = (rle_dest_ptr) dinfo;
-  size_t cmapsize;
-  int i, ci;
-#ifdef PROGRESS_REPORT
-  cd_progress_ptr progress = (cd_progress_ptr) cinfo->progress;
-#endif
-
-  /*
-   * Make sure the image can be stored in RLE format.
-   *
-   * - RLE stores image dimensions as *signed* 16 bit integers.  JPEG
-   *   uses unsigned, so we have to check the width.
-   *
-   * - Colorspace is expected to be grayscale or RGB.
-   *
-   * - The number of channels (components) is expected to be 1 (grayscale/
-   *   pseudocolor) or 3 (truecolor/directcolor).
-   *   (could be 2 or 4 if using an alpha channel, but we aren't)
-   */
-
-  if (cinfo->output_width > 32767 || cinfo->output_height > 32767)
-    ERREXIT2(cinfo, JERR_RLE_DIMENSIONS, cinfo->output_width, 
-	     cinfo->output_height);
-
-  if (cinfo->out_color_space != JCS_GRAYSCALE &&
-      cinfo->out_color_space != JCS_RGB)
-    ERREXIT(cinfo, JERR_RLE_COLORSPACE);
-
-  if (cinfo->output_components != 1 && cinfo->output_components != 3)
-    ERREXIT1(cinfo, JERR_RLE_TOOMANYCHANNELS, cinfo->num_components);
-
-  /* Convert colormap, if any, to RLE format. */
-
-  dest->colormap = NULL;
-
-  if (cinfo->quantize_colors) {
-    /* Allocate storage for RLE-style cmap, zero any extra entries */
-    cmapsize = cinfo->out_color_components * CMAPLENGTH * SIZEOF(rle_map);
-    dest->colormap = (rle_map *) (*cinfo->mem->alloc_small)
-      ((j_common_ptr) cinfo, JPOOL_IMAGE, cmapsize);
-    MEMZERO(dest->colormap, cmapsize);
-
-    /* Save away data in RLE format --- note 8-bit left shift! */
-    /* Shifting would need adjustment for JSAMPLEs wider than 8 bits. */
-    for (ci = 0; ci < cinfo->out_color_components; ci++) {
-      for (i = 0; i < cinfo->actual_number_of_colors; i++) {
-        dest->colormap[ci * CMAPLENGTH + i] =
-          GETJSAMPLE(cinfo->colormap[ci][i]) << 8;
-      }
-    }
-  }
-
-  /* Set the output buffer to the first row */
-  dest->pub.buffer = (*cinfo->mem->access_virt_sarray)
-    ((j_common_ptr) cinfo, dest->image, (JDIMENSION) 0, (JDIMENSION) 1, TRUE);
-  dest->pub.buffer_height = 1;
-
-  dest->pub.put_pixel_rows = rle_put_pixel_rows;
-
-#ifdef PROGRESS_REPORT
-  if (progress != NULL) {
-    progress->total_extra_passes++;  /* count file writing as separate pass */
-  }
-#endif
-}
-
-
-/*
- * Write some pixel data.
- *
- * This routine just saves the data away in a virtual array.
- */
-
-METHODDEF(void)
-rle_put_pixel_rows (j_decompress_ptr cinfo, djpeg_dest_ptr dinfo,
-		    JDIMENSION rows_supplied)
-{
-  rle_dest_ptr dest = (rle_dest_ptr) dinfo;
-
-  if (cinfo->output_scanline < cinfo->output_height) {
-    dest->pub.buffer = (*cinfo->mem->access_virt_sarray)
-      ((j_common_ptr) cinfo, dest->image,
-       cinfo->output_scanline, (JDIMENSION) 1, TRUE);
-  }
-}
-
-/*
- * Finish up at the end of the file.
- *
- * Here is where we really output the RLE file.
- */
-
-METHODDEF(void)
-finish_output_rle (j_decompress_ptr cinfo, djpeg_dest_ptr dinfo)
-{
-  rle_dest_ptr dest = (rle_dest_ptr) dinfo;
-  rle_hdr header;		/* Output file information */
-  rle_pixel **rle_row, *red, *green, *blue;
-  JSAMPROW output_row;
-  char cmapcomment[80];
-  int row, col;
-  int ci;
-#ifdef PROGRESS_REPORT
-  cd_progress_ptr progress = (cd_progress_ptr) cinfo->progress;
-#endif
-
-  /* Initialize the header info */
-  header = *rle_hdr_init(NULL);
-  header.rle_file = dest->pub.output_file;
-  header.xmin     = 0;
-  header.xmax     = cinfo->output_width  - 1;
-  header.ymin     = 0;
-  header.ymax     = cinfo->output_height - 1;
-  header.alpha    = 0;
-  header.ncolors  = cinfo->output_components;
-  for (ci = 0; ci < cinfo->output_components; ci++) {
-    RLE_SET_BIT(header, ci);
-  }
-  if (cinfo->quantize_colors) {
-    header.ncmap   = cinfo->out_color_components;
-    header.cmaplen = CMAPBITS;
-    header.cmap    = dest->colormap;
-    /* Add a comment to the output image with the true colormap length. */
-    sprintf(cmapcomment, "color_map_length=%d", cinfo->actual_number_of_colors);
-    rle_putcom(cmapcomment, &header);
-  }
-
-  /* Emit the RLE header and color map (if any) */
-  rle_put_setup(&header);
-
-  /* Now output the RLE data from our virtual array.
-   * We assume here that (a) rle_pixel is represented the same as JSAMPLE,
-   * and (b) we are not on a machine where FAR pointers differ from regular.
-   */
-
-#ifdef PROGRESS_REPORT
-  if (progress != NULL) {
-    progress->pub.pass_limit = cinfo->output_height;
-    progress->pub.pass_counter = 0;
-    (*progress->pub.progress_monitor) ((j_common_ptr) cinfo);
-  }
-#endif
-
-  if (cinfo->output_components == 1) {
-    for (row = cinfo->output_height-1; row >= 0; row--) {
-      rle_row = (rle_pixel **) (*cinfo->mem->access_virt_sarray)
-        ((j_common_ptr) cinfo, dest->image,
-	 (JDIMENSION) row, (JDIMENSION) 1, FALSE);
-      rle_putrow(rle_row, (int) cinfo->output_width, &header);
-#ifdef PROGRESS_REPORT
-      if (progress != NULL) {
-        progress->pub.pass_counter++;
-        (*progress->pub.progress_monitor) ((j_common_ptr) cinfo);
-      }
-#endif
-    }
-  } else {
-    for (row = cinfo->output_height-1; row >= 0; row--) {
-      rle_row = (rle_pixel **) dest->rle_row;
-      output_row = * (*cinfo->mem->access_virt_sarray)
-        ((j_common_ptr) cinfo, dest->image,
-	 (JDIMENSION) row, (JDIMENSION) 1, FALSE);
-      red = rle_row[0];
-      green = rle_row[1];
-      blue = rle_row[2];
-      for (col = cinfo->output_width; col > 0; col--) {
-        *red++ = GETJSAMPLE(*output_row++);
-        *green++ = GETJSAMPLE(*output_row++);
-        *blue++ = GETJSAMPLE(*output_row++);
-      }
-      rle_putrow(rle_row, (int) cinfo->output_width, &header);
-#ifdef PROGRESS_REPORT
-      if (progress != NULL) {
-        progress->pub.pass_counter++;
-        (*progress->pub.progress_monitor) ((j_common_ptr) cinfo);
-      }
-#endif
-    }
-  }
-
-#ifdef PROGRESS_REPORT
-  if (progress != NULL)
-    progress->completed_extra_passes++;
-#endif
-
-  /* Emit file trailer */
-  rle_puteof(&header);
-  fflush(dest->pub.output_file);
-  if (ferror(dest->pub.output_file))
-    ERREXIT(cinfo, JERR_FILE_WRITE);
-}
-
-
-/*
- * The module selection routine for RLE format output.
- */
-
-GLOBAL(djpeg_dest_ptr)
-jinit_write_rle (j_decompress_ptr cinfo)
-{
-  rle_dest_ptr dest;
-
-  /* Create module interface object, fill in method pointers */
-  dest = (rle_dest_ptr)
-      (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
-                                  SIZEOF(rle_dest_struct));
-  dest->pub.start_output = start_output_rle;
-  dest->pub.finish_output = finish_output_rle;
-
-  /* Calculate output image dimensions so we can allocate space */
-  jpeg_calc_output_dimensions(cinfo);
-
-  /* Allocate a work array for output to the RLE library. */
-  dest->rle_row = (*cinfo->mem->alloc_sarray)
-    ((j_common_ptr) cinfo, JPOOL_IMAGE,
-     cinfo->output_width, (JDIMENSION) cinfo->output_components);
-
-  /* Allocate a virtual array to hold the image. */
-  dest->image = (*cinfo->mem->request_virt_sarray)
-    ((j_common_ptr) cinfo, JPOOL_IMAGE, FALSE,
-     (JDIMENSION) (cinfo->output_width * cinfo->output_components),
-     cinfo->output_height, (JDIMENSION) 1);
-
-  return (djpeg_dest_ptr) dest;
-}
-
-#endif /* RLE_SUPPORTED */
diff --git a/src/libjpeg/wrtarga.c b/src/libjpeg/wrtarga.c
deleted file mode 100644
index 6566273..0000000
--- a/src/libjpeg/wrtarga.c
+++ /dev/null
@@ -1,253 +0,0 @@
-/*
- * wrtarga.c
- *
- * Copyright (C) 1991-1996, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains routines to write output images in Targa format.
- *
- * These routines may need modification for non-Unix environments or
- * specialized applications.  As they stand, they assume output to
- * an ordinary stdio stream.
- *
- * Based on code contributed by Lee Daniel Crocker.
- */
-
-#include "cdjpeg.h"		/* Common decls for cjpeg/djpeg applications */
-
-#ifdef TARGA_SUPPORTED
-
-
-/*
- * To support 12-bit JPEG data, we'd have to scale output down to 8 bits.
- * This is not yet implemented.
- */
-
-#if BITS_IN_JSAMPLE != 8
-  Sorry, this code only copes with 8-bit JSAMPLEs. /* deliberate syntax err */
-#endif
-
-/*
- * The output buffer needs to be writable by fwrite().  On PCs, we must
- * allocate the buffer in near data space, because we are assuming small-data
- * memory model, wherein fwrite() can't reach far memory.  If you need to
- * process very wide images on a PC, you might have to compile in large-memory
- * model, or else replace fwrite() with a putc() loop --- which will be much
- * slower.
- */
-
-
-/* Private version of data destination object */
-
-typedef struct {
-  struct djpeg_dest_struct pub;	/* public fields */
-
-  char *iobuffer;		/* physical I/O buffer */
-  JDIMENSION buffer_width;	/* width of one row */
-} tga_dest_struct;
-
-typedef tga_dest_struct * tga_dest_ptr;
-
-
-LOCAL(void)
-write_header (j_decompress_ptr cinfo, djpeg_dest_ptr dinfo, int num_colors)
-/* Create and write a Targa header */
-{
-  char targaheader[18];
-
-  /* Set unused fields of header to 0 */
-  MEMZERO(targaheader, SIZEOF(targaheader));
-
-  if (num_colors > 0) {
-    targaheader[1] = 1;		/* color map type 1 */
-    targaheader[5] = (char) (num_colors & 0xFF);
-    targaheader[6] = (char) (num_colors >> 8);
-    targaheader[7] = 24;	/* 24 bits per cmap entry */
-  }
-
-  targaheader[12] = (char) (cinfo->output_width & 0xFF);
-  targaheader[13] = (char) (cinfo->output_width >> 8);
-  targaheader[14] = (char) (cinfo->output_height & 0xFF);
-  targaheader[15] = (char) (cinfo->output_height >> 8);
-  targaheader[17] = 0x20;	/* Top-down, non-interlaced */
-
-  if (cinfo->out_color_space == JCS_GRAYSCALE) {
-    targaheader[2] = 3;		/* image type = uncompressed gray-scale */
-    targaheader[16] = 8;	/* bits per pixel */
-  } else {			/* must be RGB */
-    if (num_colors > 0) {
-      targaheader[2] = 1;	/* image type = colormapped RGB */
-      targaheader[16] = 8;
-    } else {
-      targaheader[2] = 2;	/* image type = uncompressed RGB */
-      targaheader[16] = 24;
-    }
-  }
-
-  if (JFWRITE(dinfo->output_file, targaheader, 18) != (size_t) 18)
-    ERREXIT(cinfo, JERR_FILE_WRITE);
-}
-
-
-/*
- * Write some pixel data.
- * In this module rows_supplied will always be 1.
- */
-
-METHODDEF(void)
-put_pixel_rows (j_decompress_ptr cinfo, djpeg_dest_ptr dinfo,
-		JDIMENSION rows_supplied)
-/* used for unquantized full-color output */
-{
-  tga_dest_ptr dest = (tga_dest_ptr) dinfo;
-  register JSAMPROW inptr;
-  register char * outptr;
-  register JDIMENSION col;
-
-  inptr = dest->pub.buffer[0];
-  outptr = dest->iobuffer;
-  for (col = cinfo->output_width; col > 0; col--) {
-    outptr[0] = (char) GETJSAMPLE(inptr[2]); /* RGB to BGR order */
-    outptr[1] = (char) GETJSAMPLE(inptr[1]);
-    outptr[2] = (char) GETJSAMPLE(inptr[0]);
-    inptr += 3, outptr += 3;
-  }
-  (void) JFWRITE(dest->pub.output_file, dest->iobuffer, dest->buffer_width);
-}
-
-METHODDEF(void)
-put_gray_rows (j_decompress_ptr cinfo, djpeg_dest_ptr dinfo,
-	       JDIMENSION rows_supplied)
-/* used for grayscale OR quantized color output */
-{
-  tga_dest_ptr dest = (tga_dest_ptr) dinfo;
-  register JSAMPROW inptr;
-  register char * outptr;
-  register JDIMENSION col;
-
-  inptr = dest->pub.buffer[0];
-  outptr = dest->iobuffer;
-  for (col = cinfo->output_width; col > 0; col--) {
-    *outptr++ = (char) GETJSAMPLE(*inptr++);
-  }
-  (void) JFWRITE(dest->pub.output_file, dest->iobuffer, dest->buffer_width);
-}
-
-
-/*
- * Write some demapped pixel data when color quantization is in effect.
- * For Targa, this is only applied to grayscale data.
- */
-
-METHODDEF(void)
-put_demapped_gray (j_decompress_ptr cinfo, djpeg_dest_ptr dinfo,
-		   JDIMENSION rows_supplied)
-{
-  tga_dest_ptr dest = (tga_dest_ptr) dinfo;
-  register JSAMPROW inptr;
-  register char * outptr;
-  register JSAMPROW color_map0 = cinfo->colormap[0];
-  register JDIMENSION col;
-
-  inptr = dest->pub.buffer[0];
-  outptr = dest->iobuffer;
-  for (col = cinfo->output_width; col > 0; col--) {
-    *outptr++ = (char) GETJSAMPLE(color_map0[GETJSAMPLE(*inptr++)]);
-  }
-  (void) JFWRITE(dest->pub.output_file, dest->iobuffer, dest->buffer_width);
-}
-
-
-/*
- * Startup: write the file header.
- */
-
-METHODDEF(void)
-start_output_tga (j_decompress_ptr cinfo, djpeg_dest_ptr dinfo)
-{
-  tga_dest_ptr dest = (tga_dest_ptr) dinfo;
-  int num_colors, i;
-  FILE *outfile;
-
-  if (cinfo->out_color_space == JCS_GRAYSCALE) {
-    /* Targa doesn't have a mapped grayscale format, so we will */
-    /* demap quantized gray output.  Never emit a colormap. */
-    write_header(cinfo, dinfo, 0);
-    if (cinfo->quantize_colors)
-      dest->pub.put_pixel_rows = put_demapped_gray;
-    else
-      dest->pub.put_pixel_rows = put_gray_rows;
-  } else if (cinfo->out_color_space == JCS_RGB) {
-    if (cinfo->quantize_colors) {
-      /* We only support 8-bit colormap indexes, so only 256 colors */
-      num_colors = cinfo->actual_number_of_colors;
-      if (num_colors > 256)
-	ERREXIT1(cinfo, JERR_TOO_MANY_COLORS, num_colors);
-      write_header(cinfo, dinfo, num_colors);
-      /* Write the colormap.  Note Targa uses BGR byte order */
-      outfile = dest->pub.output_file;
-      for (i = 0; i < num_colors; i++) {
-	putc(GETJSAMPLE(cinfo->colormap[2][i]), outfile);
-	putc(GETJSAMPLE(cinfo->colormap[1][i]), outfile);
-	putc(GETJSAMPLE(cinfo->colormap[0][i]), outfile);
-      }
-      dest->pub.put_pixel_rows = put_gray_rows;
-    } else {
-      write_header(cinfo, dinfo, 0);
-      dest->pub.put_pixel_rows = put_pixel_rows;
-    }
-  } else {
-    ERREXIT(cinfo, JERR_TGA_COLORSPACE);
-  }
-}
-
-
-/*
- * Finish up at the end of the file.
- */
-
-METHODDEF(void)
-finish_output_tga (j_decompress_ptr cinfo, djpeg_dest_ptr dinfo)
-{
-  /* Make sure we wrote the output file OK */
-  fflush(dinfo->output_file);
-  if (ferror(dinfo->output_file))
-    ERREXIT(cinfo, JERR_FILE_WRITE);
-}
-
-
-/*
- * The module selection routine for Targa format output.
- */
-
-GLOBAL(djpeg_dest_ptr)
-jinit_write_targa (j_decompress_ptr cinfo)
-{
-  tga_dest_ptr dest;
-
-  /* Create module interface object, fill in method pointers */
-  dest = (tga_dest_ptr)
-      (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
-				  SIZEOF(tga_dest_struct));
-  dest->pub.start_output = start_output_tga;
-  dest->pub.finish_output = finish_output_tga;
-
-  /* Calculate output image dimensions so we can allocate space */
-  jpeg_calc_output_dimensions(cinfo);
-
-  /* Create I/O buffer.  Note we make this near on a PC. */
-  dest->buffer_width = cinfo->output_width * cinfo->output_components;
-  dest->iobuffer = (char *)
-    (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
-				(size_t) (dest->buffer_width * SIZEOF(char)));
-
-  /* Create decompressor output buffer. */
-  dest->pub.buffer = (*cinfo->mem->alloc_sarray)
-    ((j_common_ptr) cinfo, JPOOL_IMAGE, dest->buffer_width, (JDIMENSION) 1);
-  dest->pub.buffer_height = 1;
-
-  return (djpeg_dest_ptr) dest;
-}
-
-#endif /* TARGA_SUPPORTED */
diff --git a/src/qwt/include/qwt.h b/src/qwt/include/qwt.h
deleted file mode 100644
index 1140d77..0000000
--- a/src/qwt/include/qwt.h
+++ /dev/null
@@ -1,22 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- * 
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-#ifndef QWT_H
-#define QWT_H
-
-#include "qwt_global.h"
-
-/*!
-  Some constants for use within Qwt.
-*/
-namespace Qwt 
-{
-};
-
-#endif
diff --git a/src/qwt/include/qwt_abstract_scale.h b/src/qwt/include/qwt_abstract_scale.h
deleted file mode 100644
index 261ca33..0000000
--- a/src/qwt/include/qwt_abstract_scale.h
+++ /dev/null
@@ -1,67 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- * 
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-#ifndef QWT_ABSTRACT_SCALE_H
-#define QWT_ABSTRACT_SCALE_H
-
-#include "qwt_global.h"
-
-class QwtScaleEngine;
-class QwtAbstractScaleDraw;
-class QwtScaleDiv;
-class QwtDoubleInterval;
-
-/*!
-  \brief An abstract base class for classes containing a scale 
-
-  QwtAbstractScale is used to provide classes with a QwtScaleDraw, 
-  and a QwtScaleDiv. The QwtScaleDiv might be set explicitely 
-  or calculated by a QwtScaleEngine.
-*/
-
-class QWT_EXPORT QwtAbstractScale
-{
-public:
-    QwtAbstractScale();
-    virtual ~QwtAbstractScale();
-    
-    void setScale(double vmin, double vmax, double step = 0.0);
-    void setScale(const QwtDoubleInterval &, double step = 0.0);
-    void setScale(const QwtScaleDiv &s);
-
-    void setAutoScale();
-    bool autoScale() const;
-
-    void setScaleMaxMajor( int ticks);
-    int scaleMaxMinor() const;
-
-    void setScaleMaxMinor( int ticks);
-    int scaleMaxMajor() const; 
-
-    void setScaleEngine(QwtScaleEngine *);
-    const QwtScaleEngine *scaleEngine() const;
-    QwtScaleEngine *scaleEngine();
-
-protected:
-    void rescale(double vmin, double vmax, double step = 0.0);
-
-    void setAbstractScaleDraw(QwtAbstractScaleDraw *);
-    const QwtAbstractScaleDraw *abstractScaleDraw() const;
-    QwtAbstractScaleDraw *abstractScaleDraw();
-
-    virtual void scaleChange();
-
-private:
-    void updateScaleDraw();
-
-    class PrivateData;
-    PrivateData *d_data;
-};
-
-#endif
diff --git a/src/qwt/include/qwt_abstract_scale_draw.h b/src/qwt/include/qwt_abstract_scale_draw.h
deleted file mode 100644
index 4705b3e..0000000
--- a/src/qwt/include/qwt_abstract_scale_draw.h
+++ /dev/null
@@ -1,141 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- * 
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-#ifndef QWT_ABSTRACT_SCALE_DRAW_H
-#define QWT_ABSTRACT_SCALE_DRAW_H
-
-#include "qwt_global.h"
-#include "qwt_scale_div.h"
-#include "qwt_text.h"
-
-
-#if QT_VERSION < 0x040000
-class QColorGroup;
-#else
-class QPalette;
-#endif
-class QPainter;
-class QFont;
-class QwtScaleTransformation;
-class QwtScaleMap;
-
-/*!
-  \brief A abstract base class for drawing scales
-
-  QwtAbstractScaleDraw can be used to draw linear or logarithmic scales.
-
-  After a scale division has been specified as a QwtScaleDiv object
-  using QwtAbstractScaleDraw::setScaleDiv(const QwtScaleDiv &s),
-  the scale can be drawn with the QwtAbstractScaleDraw::draw() member.
-*/
-class QWT_EXPORT QwtAbstractScaleDraw
-{
-public:
-
-    enum ScaleComponent
-    { 
-        /*!
-            Components of a scale
-            \sa QwtAbstractScaleDraw::enableComponent, 
-                QwtAbstractScaleDraw::hasComponent
-        */
-
-        Backbone = 1,
-        Ticks = 2,
-        Labels = 4
-    };
- 
-    QwtAbstractScaleDraw();
-    QwtAbstractScaleDraw( const QwtAbstractScaleDraw & );
-    virtual ~QwtAbstractScaleDraw();
-
-    QwtAbstractScaleDraw &operator=(const QwtAbstractScaleDraw &);
-    
-    void setScaleDiv(const QwtScaleDiv &s);
-    const QwtScaleDiv& scaleDiv() const;
-
-    void setTransformation(const QwtScaleTransformation&);
-    const QwtScaleMap &map() const;
-
-    void enableComponent(ScaleComponent, bool enable = true);
-    bool hasComponent(ScaleComponent) const;
-
-    void setTickLength(QwtScaleDiv::TickType, int length);
-    int tickLength(QwtScaleDiv::TickType) const;
-    int majTickLength() const;
-
-    void setSpacing(int margin);
-    int spacing() const;
-        
-#if QT_VERSION < 0x040000
-    virtual void draw(QPainter *, const QColorGroup &) const;
-#else
-    virtual void draw(QPainter *, const QPalette &) const;
-#endif
-
-    virtual QwtText label(double) const;
-
-    /*!  
-      Calculate the extent 
-
-      The extent is the distcance from the baseline to the outermost
-      pixel of the scale draw in opposite to its orienatation.
-      It is at least minimumExtent() pixels.
- 
-      \sa setMinimumExtent(), minimumExtent()
-    */
-    virtual int extent(const QPen &, const QFont &) const = 0;
-
-    void setMinimumExtent(int);
-    int minimumExtent() const;
-
-protected:
-    /*!
-       Draw a tick
-  
-       \param painter Painter
-       \param value Value of the tick
-       \param len Lenght of the tick
-
-       \sa drawBackbone(), drawLabel()
-    */  
-    virtual void drawTick(QPainter *painter, double value, int len) const = 0;
-
-    /*!
-      Draws the baseline of the scale
-      \param painter Painter
-
-      \sa drawTick(), drawLabel()
-    */
-    virtual void drawBackbone(QPainter *painter) const = 0;
-
-    /*!  
-        Draws the label for a major scale tick
-    
-        \param painter Painter
-        \param value Value
-
-        \sa drawTick, drawBackbone
-    */ 
-    virtual void drawLabel(QPainter *painter, double value) const = 0;
-
-    QwtScaleMap &scaleMap();
-
-    void invalidateCache();
-    const QwtText &tickLabel(const QFont &, double value) const;
-
-private:
-    int operator==(const QwtAbstractScaleDraw &) const;
-    int operator!=(const QwtAbstractScaleDraw &) const;
-
-    class PrivateData;
-    PrivateData *d_data;
-};
-
-#endif
diff --git a/src/qwt/include/qwt_abstract_slider.h b/src/qwt/include/qwt_abstract_slider.h
deleted file mode 100644
index 6412c43..0000000
--- a/src/qwt/include/qwt_abstract_slider.h
+++ /dev/null
@@ -1,182 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- * 
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-#ifndef QWT_ABSTRACT_SLIDER_H
-#define QWT_ABSTRACT_SLIDER_H
-
-#include <qwidget.h>
-#include "qwt_global.h"
-#include "qwt_double_range.h"
-
-/*!
-  \brief An abstract base class for slider widgets
-
-  QwtAbstractSlider is a base class for
-  slider widgets. It handles mouse events
-  and updates the slider's value accordingly. Derived classes
-  only have to implement the getValue() and 
-  getScrollMode() members, and should react to a
-  valueChange(), which normally requires repainting. 
-*/
-
-class QWT_EXPORT QwtAbstractSlider : public QWidget, public QwtDoubleRange
-{
-    Q_OBJECT 
-    Q_PROPERTY( bool readOnly READ isReadOnly WRITE setReadOnly )
-    Q_PROPERTY( bool valid READ isValid WRITE setValid )
-    Q_PROPERTY( double mass READ mass WRITE setMass )
-#ifndef Q_MOC_RUN // Qt3 moc
-#define QWT_PROPERTY Q_PROPERTY
-    Q_PROPERTY( Orientation orientation 
-        READ orientation WRITE setOrientation )
-#else // Qt4 moc
-// MOC_SKIP_BEGIN
-    Q_PROPERTY( Qt::Orientation orientation 
-        READ orientation WRITE setOrientation )
-// MOC_SKIP_END
-#endif
-
-public:
-    enum ScrollMode { ScrNone, ScrMouse, 
-        ScrTimer, ScrDirect, ScrPage };
-    
-    explicit QwtAbstractSlider(Qt::Orientation, QWidget *parent = NULL);
-    virtual ~QwtAbstractSlider();
-
-    void setUpdateTime(int t);
-    void stopMoving();
-    void setTracking(bool enable);
-    
-    virtual void setMass(double val);
-    virtual double mass() const;
-
-#if QT_VERSION >= 0x040000
-    virtual void setOrientation(Qt::Orientation o);
-    Qt::Orientation orientation() const;
-#else
-    virtual void setOrientation(Orientation o);
-    Orientation orientation() const;
-#endif
-
-    bool isReadOnly() const;
-
-    /* 
-        Wrappers for QwtDblRange::isValid/QwtDblRange::setValid made
-        to be available as Q_PROPERTY in the designer.
-    */
-
-    /*! 
-      \sa QwtDblRange::isValid
-    */
-    bool isValid() const { return QwtDoubleRange::isValid(); }
-
-    /*! 
-      \sa QwtDblRange::isValid
-    */
-    void setValid(bool valid) { QwtDoubleRange::setValid(valid); }
-
-public slots:
-    virtual void setValue(double val);
-    virtual void fitValue(double val);
-    virtual void incValue(int steps);
-
-    virtual void setReadOnly(bool); 
-
-signals:
-
-    /*!
-      \brief Notify a change of value.
-
-      In the default setting 
-      (tracking enabled), this signal will be emitted every 
-      time the value changes ( see setTracking() ). 
-      \param value new value
-    */
-    void valueChanged(double value);
-
-    /*!
-      This signal is emitted when the user presses the 
-      movable part of the slider (start ScrMouse Mode).
-    */
-    void sliderPressed();
-
-    /*!
-      This signal is emitted when the user releases the 
-      movable part of the slider.
-    */
-
-    void sliderReleased();
-    /*!
-      This signal is emitted when the user moves the
-      slider with the mouse.
-      \param value new value
-    */
-    void sliderMoved(double value);
-    
-protected:
-    void setPosition(const QPoint &p);
-    virtual void valueChange();
-
-    virtual void timerEvent(QTimerEvent *e);
-    virtual void mousePressEvent(QMouseEvent *e);
-    virtual void mouseReleaseEvent(QMouseEvent *e);
-    virtual void mouseMoveEvent(QMouseEvent *e);
-    virtual void keyPressEvent(QKeyEvent *e);
-    virtual void wheelEvent(QWheelEvent *e);
-
-  /*!
-    \brief Determine the value corresponding to a specified poind
-
-    This is an abstract virtual function which is called when
-    the user presses or releases a mouse button or moves the
-    mouse. It has to be implemented by the derived class.
-    \param p point 
-  */
-    virtual double getValue(const QPoint & p) = 0;
-  /*!
-    \brief Determine what to do when the user presses a mouse button.
-
-    This function is abstract and has to be implemented by derived classes.
-    It is called on a mousePress event. The derived class can determine
-    what should happen next in dependence of the position where the mouse
-    was pressed by returning scrolling mode and direction. QwtAbstractSlider
-    knows the following modes:<dl>
-    <dt>QwtAbstractSlider::ScrNone
-    <dd>Scrolling switched off. Don't change the value.
-    <dt>QwtAbstractSlider::ScrMouse
-    <dd>Change the value while the user keeps the
-        button pressed and moves the mouse.
-    <dt>QwtAbstractSlider::ScrTimer
-    <dd>Automatic scrolling. Increment the value
-        in the specified direction as long as
-    the user keeps the button pressed.
-    <dt>QwtAbstractSlider::ScrPage
-    <dd>Automatic scrolling. Same as ScrTimer, but
-        increment by page size.</dl>
-
-    \param p point where the mouse was pressed
-    \retval scrollMode The scrolling mode
-    \retval direction  direction: 1, 0, or -1.
-  */
-    virtual void getScrollMode( const QPoint &p,
-                  int &scrollMode, int &direction) = 0;
-
-    void setMouseOffset(double);
-    double mouseOffset() const;
-
-    int scrollMode() const;
-
-private:
-    void buttonReleased();
-
-    class PrivateData;
-    PrivateData *d_data;
-};
-
-#endif
diff --git a/src/qwt/include/qwt_analog_clock.h b/src/qwt/include/qwt_analog_clock.h
deleted file mode 100644
index f9d378a..0000000
--- a/src/qwt/include/qwt_analog_clock.h
+++ /dev/null
@@ -1,85 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-#ifndef QWT_ANALOG_CLOCK_H
-#define QWT_ANALOG_CLOCK_H
-
-#include <qdatetime.h>
-#include "qwt_global.h"
-#include "qwt_dial.h"
-#include "qwt_dial_needle.h"
-
-/*!
-  \brief An analog clock
-
-  \image html analogclock.gif
-
-  \par Example
-  \verbatim #include <qwt_analog_clock.h>
-
-  QwtAnalogClock *clock = new QwtAnalogClock(...);
-  clock->scaleDraw()->setPenWidth(3);
-  clock->setLineWidth(6);
-  clock->setFrameShadow(QwtDial::Sunken);
-  clock->setTime();
-
-  // update the clock every second
-  QTimer *timer = new QTimer(clock);
-  timer->connect(timer, SIGNAL(timeout()), clock, SLOT(setCurrentTime()));
-  timer->start(1000);
-
-  \endverbatim
-
-  Qwt is missing a set of good looking hands.
-  Contributions are very welcome.
-
-  \note The examples/dials example shows how to use QwtAnalogClock.
-*/
-
-class QWT_EXPORT QwtAnalogClock: public QwtDial
-{
-    Q_OBJECT
-
-public:
-    enum Hand
-    {
-        SecondHand,
-        MinuteHand,
-        HourHand,
-
-        NHands
-    };
-
-    explicit QwtAnalogClock(QWidget* parent = NULL);
-    virtual ~QwtAnalogClock();
-
-    virtual void setHand(Hand, QwtDialNeedle *);
-    const QwtDialNeedle *hand(Hand) const;
-    QwtDialNeedle *hand(Hand);
-
-public slots:
-    void setCurrentTime();
-    void setTime(const QTime & = QTime::currentTime());
-
-protected:
-    virtual QwtText scaleLabel(double) const;
-
-    virtual void drawNeedle(QPainter *, const QPoint &,
-        int radius, double direction, QPalette::ColorGroup) const;
-
-    virtual void drawHand(QPainter *, Hand, const QPoint &,
-        int radius, double direction, QPalette::ColorGroup) const;
-
-private:
-    virtual void setNeedle(QwtDialNeedle *);
-
-    QwtDialNeedle *d_hand[NHands];
-};
-
-#endif
diff --git a/src/qwt/include/qwt_array.h b/src/qwt/include/qwt_array.h
deleted file mode 100644
index 7dc5806..0000000
--- a/src/qwt/include/qwt_array.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- * 
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-// vim: expandtab
-
-#ifndef QWT_ARRAY_H
-#define QWT_ARRAY_H
-
-#include "qwt_global.h"
-
-/*!
-  \def QwtArray
- */
-
-#if QT_VERSION < 0x040000
-#include <qmemarray.h>
-#define QwtArray QMemArray
-#else
-#include <qvector.h>
-#define QwtArray QVector
-#endif
-
-#endif
diff --git a/src/qwt/include/qwt_arrow_button.h b/src/qwt/include/qwt_arrow_button.h
deleted file mode 100644
index 860b719..0000000
--- a/src/qwt/include/qwt_arrow_button.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- * 
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-#ifndef QWT_ARROW_BUTTON_H
-#define QWT_ARROW_BUTTON_H
-
-#include <qpushbutton.h>
-#include "qwt_global.h"
-
-/*!
-  \brief Arrow Button
-
-  A push button with one or more filled triangles on its front.
-  An Arrow button can have 1 to 3 arrows in a row, pointing
-  up, down, left or right.
-*/
-class QWT_EXPORT QwtArrowButton : public QPushButton
-{
-public:
-    explicit QwtArrowButton (int num, Qt::ArrowType, QWidget *parent = NULL);
-    virtual ~QwtArrowButton();
-
-    Qt::ArrowType arrowType() const;
-    int num() const;
-
-    virtual QSize sizeHint() const;
-    virtual QSize minimumSizeHint() const;
-
-protected:
-#if QT_VERSION >= 0x040000
-    virtual void paintEvent(QPaintEvent *event);
-#endif
-
-    virtual void drawButtonLabel(QPainter *p);
-    virtual void drawArrow(QPainter *, 
-        const QRect &, Qt::ArrowType) const;
-    virtual QRect labelRect() const;
-    virtual QSize arrowSize(Qt::ArrowType,
-        const QSize &boundingSize) const;
-
-    virtual void keyPressEvent(QKeyEvent *);
-
-private:
-    class PrivateData;
-    PrivateData *d_data;
-};
-
-#endif
diff --git a/src/qwt/include/qwt_compass.h b/src/qwt/include/qwt_compass.h
deleted file mode 100644
index cb0bb74..0000000
--- a/src/qwt/include/qwt_compass.h
+++ /dev/null
@@ -1,80 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-#ifndef QWT_COMPASS_H
-#define QWT_COMPASS_H 1
-
-#include <qstring.h>
-#include <qmap.h>
-#include "qwt_dial.h"
-
-#if defined(QWT_TEMPLATEDLL)
-
-#if defined(QT_NO_STL) || QT_VERSION < 0x040000 || QT_VERSION > 0x040001
-/*
-  Unfortunately Qt 4.0.0/Qt 4.0.1 contains uncompilable 
-  code in the STL adaptors of qmap.h. The declaration below 
-  instantiates this code resulting in compiler errors. 
-  If you really need the map to be exported, remove the condition above
-  and fix the qmap.h
-*/
-// MOC_SKIP_BEGIN
-template class QWT_EXPORT QMap<double, QString>;
-// MOC_SKIP_END
-#endif
-
-#endif
-
-
-class QwtCompassRose;
-
-/*!
-  \brief A Compass Widget
-
-  QwtCompass is a widget to display and enter directions. It consists
-  of a scale, an optional needle and rose. 
-
-  \image html compass.gif 
-
-  \note The examples/dials example shows how to use QwtCompass.
-*/
-
-class QWT_EXPORT QwtCompass: public QwtDial 
-{
-    Q_OBJECT
-
-public:
-    explicit QwtCompass( QWidget* parent = NULL);
-    virtual ~QwtCompass();
-
-    void setRose(QwtCompassRose *rose);
-    const QwtCompassRose *rose() const;
-    QwtCompassRose *rose();
-
-    const QMap<double, QString> &labelMap() const;
-    QMap<double, QString> &labelMap();
-    void setLabelMap(const QMap<double, QString> &map);
-
-protected:
-    virtual QwtText scaleLabel(double value) const;
-
-    virtual void drawRose(QPainter *, const QPoint &center,
-        int radius, double north, QPalette::ColorGroup) const;
-
-    virtual void drawScaleContents(QPainter *, 
-        const QPoint &center, int radius) const; 
-
-    virtual void keyPressEvent(QKeyEvent *);
-
-private:
-    class PrivateData;
-    PrivateData *d_data;
-};
-
-#endif
diff --git a/src/qwt/include/qwt_compass_rose.h b/src/qwt/include/qwt_compass_rose.h
deleted file mode 100644
index b83454d..0000000
--- a/src/qwt/include/qwt_compass_rose.h
+++ /dev/null
@@ -1,70 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- * 
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-#ifndef QWT_COMPASS_ROSE_H
-#define QWT_COMPASS_ROSE_H 1
-
-#include <qpalette.h>
-#include "qwt_global.h"
-
-class QPainter;
-
-class QWT_EXPORT QwtCompassRose
-{
-public:
-    virtual ~QwtCompassRose() {};
-
-    virtual void setPalette(const QPalette &p) { d_palette = p; }
-    const QPalette &palette() const { return d_palette; }
-
-    virtual void draw(QPainter *, const QPoint &center, 
-        int radius, double north, 
-        QPalette::ColorGroup = QPalette::Active) const = 0;
-
-private:
-    QPalette d_palette;
-};
-
-class QWT_EXPORT QwtSimpleCompassRose: public QwtCompassRose
-{
-public:
-    QwtSimpleCompassRose(int numThorns = 8, int numThornLevels = -1);
-
-    void setWidth(double w);
-    double width() const { return d_width; }
-
-    void setNumThorns(int count);
-    int numThorns() const;
-
-    void setNumThornLevels(int count);
-    int numThornLevels() const;
-
-    void setShrinkFactor(double factor) { d_shrinkFactor = factor; }
-    double shrinkFactor() const { return d_shrinkFactor; }
-
-    virtual void draw(QPainter *, const QPoint &center, int radius, 
-        double north, QPalette::ColorGroup = QPalette::Active) const;
-
-    static void drawRose(QPainter *, 
-#if QT_VERSION < 0x040000
-        const QColorGroup &,
-#else
-        const QPalette &,
-#endif
-        const QPoint &center, int radius, double origin, double width, 
-        int numThorns, int numThornLevels, double shrinkFactor);
-
-private:
-    double d_width;     
-    int d_numThorns;        
-    int d_numThornLevels; 
-    double d_shrinkFactor;
-};
-
-#endif // QWT_COMPASS_ROSE_H
diff --git a/src/qwt/include/qwt_counter.h b/src/qwt/include/qwt_counter.h
deleted file mode 100644
index c8375f2..0000000
--- a/src/qwt/include/qwt_counter.h
+++ /dev/null
@@ -1,153 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- * 
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-// vim: expandtab
-
-#ifndef QWT_COUNTER_H
-#define QWT_COUNTER_H
-
-#include <qwidget.h>
-#include "qwt_global.h"
-#include "qwt_double_range.h"
-
-/*!
-  \brief The Counter Widget
-
-  A Counter consists of a label displaying a number and
-  one ore more (up to three) push buttons on each side
-  of the label which can be used to increment or decrement
-  the counter's value.
-
-  A Counter has a range from a minimum value to a maximum value
-  and a step size. The range can be specified using
-  QwtDblRange::setRange().
-  The counter's value is an integer multiple of the step size.
-  The number of steps by which a button increments or decrements
-  the value can be specified using QwtCounter::setIncSteps().
-  The number of buttons can be changed with
-  QwtCounter::setNumButtons().
-
-  Holding the space bar down with focus on a button is the
-  fastest method to step through the counter values.
-  When the counter underflows/overflows, the focus is set
-  to the smallest up/down button and counting is disabled.
-  Counting is re-enabled on a button release event (mouse or
-  space bar).
-
-  Example:
-\code
-#include "../include/qwt_counter.h>
-
-QwtCounter *cnt;
-
-cnt = new QwtCounter(parent, name);
-
-cnt->setRange(0.0, 100.0, 1.0);             // From 0.0 to 100, step 1.0
-cnt->setNumButtons(2);                      // Two buttons each side
-cnt->setIncSteps(QwtCounter::Button1, 1);   // Button 1 increments 1 step
-cnt->setIncSteps(QwtCounter::Button2, 20);  // Button 2 increments 20 steps
-
-connect(cnt, SIGNAL(valueChanged(double)), my_class, SLOT(newValue(double)));
-\endcode
- */
-
-class QWT_EXPORT QwtCounter : public QWidget, public QwtDoubleRange
-{
-    Q_OBJECT
-
-    Q_PROPERTY( int numButtons READ numButtons WRITE setNumButtons )
-    Q_PROPERTY( double basicstep READ step WRITE setStep )
-    Q_PROPERTY( double minValue READ minVal WRITE setMinValue )
-    Q_PROPERTY( double maxValue READ maxVal WRITE setMaxValue )
-    Q_PROPERTY( int stepButton1 READ stepButton1 WRITE setStepButton1 )
-    Q_PROPERTY( int stepButton2 READ stepButton2 WRITE setStepButton2 )
-    Q_PROPERTY( int stepButton3 READ stepButton3 WRITE setStepButton3 )
-    Q_PROPERTY( double value READ value WRITE setValue )
-    Q_PROPERTY( bool editable READ editable WRITE setEditable )
-
-public:
-    /*!
-        Button index
-    */
-
-    enum Button 
-    {   
-        Button1,    
-        Button2,    
-        Button3,    
-        ButtonCnt   
-    };
-
-    explicit QwtCounter(QWidget *parent = NULL);
-    virtual ~QwtCounter();
-
-    bool editable() const;
-    void setEditable(bool);
- 
-    void setNumButtons(int n);
-    int numButtons() const;
-    
-    void setIncSteps(QwtCounter::Button btn, int nSteps);
-    int incSteps(QwtCounter::Button btn) const;
-
-    virtual void setValue(double);
-    virtual QSize sizeHint() const;
-
-    virtual void polish();
-
-    // a set of dummies to help the designer
-
-    double step() const;
-    void setStep(double s);
-    double minVal() const;
-    void setMinValue(double m);
-    double maxVal() const;
-    void setMaxValue(double m);
-    void setStepButton1(int nSteps);
-    int stepButton1() const;
-    void setStepButton2(int nSteps);
-    int stepButton2() const;
-    void setStepButton3(int nSteps);
-    int stepButton3() const;
-    virtual double value() const;
-
-signals:
-    /*!
-        This signal is emitted when a button has been released
-        \param value The new value
-    */
-    void buttonReleased (double value);  
-
-    /*!
-        This signal is emitted when the counter's value has changed
-        \param value The new value
-    */
-    void valueChanged (double value);
-
-protected:
-    virtual bool event(QEvent *);
-    virtual void wheelEvent(QWheelEvent *);
-    virtual void keyPressEvent(QKeyEvent *);
-    virtual void rangeChange();
-
-private slots:
-    void btnReleased();
-    void btnClicked();
-    void textChanged();
-
-private:
-    void updateButtons();
-    void showNum(double);
-    virtual void valueChange();
-    
-    class PrivateData;
-    PrivateData *d_data;
-};
-
-#endif
diff --git a/src/qwt/include/qwt_data.h b/src/qwt/include/qwt_data.h
deleted file mode 100644
index fc2b588..0000000
--- a/src/qwt/include/qwt_data.h
+++ /dev/null
@@ -1,159 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-// vim: expandtab
-
-#ifndef QWT_DATA_H
-#define QWT_DATA_H 1
-
-#include "qwt_global.h"
-#include "qwt_array.h"
-#include "qwt_double_rect.h"
-
-// MOC_SKIP_BEGIN
-#if defined(QWT_TEMPLATEDLL)
-template class QWT_EXPORT QwtArray<double>;
-#endif 
-// MOC_SKIP_END
-
-/*!
-  \brief QwtData defines an interface to any type of data.
-
-  Classes, derived from QwtData may:
-  - store the data in almost any type of container
-  - calculate the data on the fly instead of storing it
-  - implement data with error bars (this implies subclassing QwtPlot,
-    QwtCurve and QwtPlotCurve)
-
-  \warning In the future, "almost any type of container" may be limited to
-  containers supporting bi-directional iterators like the vector, array
-  and list classes in Qt or in the standard template library.
- */
-
-class QWT_EXPORT QwtData
-{
-public:
-    QwtData();
-    virtual ~QwtData(); 
-    /*!
-      Return a pointer to a copy (virtual copy constructor)
-     */
-    virtual QwtData *copy() const = 0;
-
-    /*!
-      Return the size of the data set
-     */
-    virtual size_t size() const = 0;
-    /*!
-      Return the x value of data point i
-      \param i Index
-      \return x X value of data point i
-     */
-    virtual double x(size_t i) const = 0;
-    /*!
-      Return the y value of data point i
-      \param i Index
-      \return y Y value of data point i
-     */
-    virtual double y(size_t i) const = 0;
-
-    virtual QwtDoubleRect boundingRect() const;
-
-protected:
-    /*!
-      Assignment operator (virtualized)
-     */
-    QwtData &operator=(const QwtData &);
-};
-
-/*!
-  \brief Data class containing a single QwtArray<QwtDoublePoint> object. 
- */
-class QWT_EXPORT QwtDoublePointData: public QwtData
-{
-public:
-    /*!
-      Constructor
-      
-      \sa QwtCurve::setData and QwtPlot::setCurveData.
-     */
-    QwtDoublePointData(const QwtArray<QwtDoublePoint> &);
-    QwtDoublePointData &operator=(const QwtDoublePointData &);
-    virtual QwtData *copy() const;
-
-    virtual size_t size() const;
-    virtual double x(size_t i) const;
-    virtual double y(size_t i) const;
-
-    const QwtArray<QwtDoublePoint> data() const;
-
-private:
-    QwtArray<QwtDoublePoint> d_data;
-};
-
-/*!
-  \brief Data class containing two QwtArray<double> objects.
- */
-
-class QWT_EXPORT QwtArrayData: public QwtData
-{
-public:
-    QwtArrayData(const QwtArray<double> &x, const QwtArray<double> &y);
-    QwtArrayData(const double *x, const double *y, size_t size);
-    QwtArrayData &operator=(const QwtArrayData &);
-    virtual QwtData *copy() const;
-
-    virtual size_t size() const;
-    virtual double x(size_t i) const;
-    virtual double y(size_t i) const;
-
-    const QwtArray<double> &xData() const;
-    const QwtArray<double> &yData() const;
-
-    virtual QwtDoubleRect boundingRect() const;
-
-private:
-    QwtArray<double> d_x;
-    QwtArray<double> d_y;
-};
-
-/*!
-  \brief Data class containing two pointers to memory blocks of doubles.
- */
-class QWT_EXPORT QwtCPointerData: public QwtData
-{
-public:
-    /*!
-      Constructor
-      
-      \warning The programmer must assure that the memory blocks referenced
-      by the pointers remain valid during the lifetime of the QwtPlotCPointer
-      object.
-      \sa QwtCurve::setRawData and QwtPlot::setCurveRawData.
-     */
-    QwtCPointerData(const double *x, const double *y, size_t size);
-    QwtCPointerData &operator=(const QwtCPointerData &);
-    virtual QwtData *copy() const;
-
-    virtual size_t size() const;
-    virtual double x(size_t i) const;
-    virtual double y(size_t i) const;
-
-    const double *xData() const;
-    const double *yData() const;
-
-    virtual QwtDoubleRect boundingRect() const;
-
-private:
-    const double *d_x;
-    const double *d_y;
-    size_t d_size;
-};
-
-#endif // !QWT_DATA
diff --git a/src/qwt/include/qwt_dial.h b/src/qwt/include/qwt_dial.h
deleted file mode 100644
index 93c0e5b..0000000
--- a/src/qwt/include/qwt_dial.h
+++ /dev/null
@@ -1,209 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-// vim: expandtab
-
-#ifndef QWT_DIAL_H
-#define QWT_DIAL_H 1
-
-#include <qframe.h>
-#include <qpalette.h>
-#include "qwt_global.h"
-#include "qwt_abstract_slider.h"
-#include "qwt_round_scale_draw.h"
-
-class QwtDialNeedle;
-class QwtDial;
-
-/*!
-  A special scale draw made for QwtDial
-  
-  \sa QwtDial, QwtCompass
-*/
-
-class QWT_EXPORT QwtDialScaleDraw: public QwtRoundScaleDraw
-{
-public:
-    explicit QwtDialScaleDraw(QwtDial *);
-    virtual QwtText label(double value) const;
-
-    void setPenWidth(uint);
-    uint penWidth() const;
-
-private:
-    QwtDial *d_parent;
-    int d_penWidth;
-};
-
-/*!
-  \brief QwtDial class provides a rounded range control. 
-
-  QwtDial is intended as base class for dial widgets like
-  speedometers, compass widgets, clocks ... 
-
-  \image html dial.gif
-
-  A dial contains a scale and a needle indicating the current value
-  of the dial. Depending on Mode one of them is fixed and the 
-  other is rotating. If not isReadOnly() the
-  dial can be rotated by dragging the mouse or using keyboard inputs 
-  (see keyPressEvent()). A dial might be wrapping, what means
-  a rotation below/above one limit continues on the other limit (f.e compass).
-  The scale might cover any arc of the dial, its values are related to
-  the origin() of the dial.
-  
-  Qwt is missing a set of good looking needles (QwtDialNeedle).
-  Contributions are very welcome.
-  
-  \sa QwtCompass, QwtAnalogClock, QwtDialNeedle
-  \note The examples/dials example shows different types of dials.
-*/
-
-class QWT_EXPORT QwtDial: public QwtAbstractSlider
-{
-    Q_OBJECT
-
-    Q_ENUMS(Shadow)
-    Q_ENUMS(Mode)
-
-    Q_PROPERTY(bool visibleBackground READ hasVisibleBackground WRITE showBackground)
-    Q_PROPERTY(int lineWidth READ lineWidth WRITE setLineWidth)
-    Q_PROPERTY(Shadow frameShadow READ frameShadow WRITE setFrameShadow)
-    Q_PROPERTY(Mode mode READ mode WRITE setMode)
-    Q_PROPERTY(double origin READ origin WRITE setOrigin)
-    Q_PROPERTY(bool wrapping READ wrapping WRITE setWrapping)
-
-    friend class QwtDialScaleDraw;
-public:
-
-    /*!
-        \brief Frame shadow
-
-         Unfortunately it is not possible to use QFrame::Shadow
-         as a property of a widget that is not derived from QFrame.
-         The following enum is made for the designer only. It is safe
-         to use QFrame::Shadow instead.
-     */
-    enum Shadow
-    {
-        Plain = QFrame::Plain,
-        Raised = QFrame::Raised,
-        Sunken = QFrame::Sunken
-    };
-
-    //! see QwtDial::setScaleOptions
-    enum ScaleOptions
-    {
-        ScaleBackbone = 1,
-        ScaleTicks = 2,
-        ScaleLabel = 4
-    };
-
-    /*!
-        In case of RotateNeedle the needle is rotating, in case of
-        RotateScale, the needle points to origin()
-        and the scale is rotating.
-    */
-    enum Mode
-    {
-        RotateNeedle,
-        RotateScale
-    };
-
-    QwtDial( QWidget* parent = NULL);
-    virtual ~QwtDial();
-
-    void setFrameShadow(Shadow);
-    Shadow frameShadow() const;
-
-    bool hasVisibleBackground() const;
-    void showBackground(bool);
-
-    void setLineWidth(int);
-    int lineWidth() const;
-
-    void setMode(Mode);
-    Mode mode() const;
-
-    virtual void setWrapping(bool);
-    bool wrapping() const;
-
-    virtual void setScale(int maxMajIntv, int maxMinIntv, double step = 0.0);
-
-    void setScaleArc(double min, double max);
-    void setScaleOptions(int);
-    void setScaleTicks(int minLen, int medLen, int majLen, int penWidth = 1);
-
-    double minScaleArc() const;
-    double maxScaleArc() const;
-
-    virtual void setOrigin(double);
-    double origin() const;
-
-    virtual void setNeedle(QwtDialNeedle *);
-    const QwtDialNeedle *needle() const;
-    QwtDialNeedle *needle();
-
-    QRect boundingRect() const;
-    QRect contentsRect() const;
-    virtual QRect scaleContentsRect() const;
-
-    virtual QSize sizeHint() const;
-    virtual QSize minimumSizeHint() const;
-
-    virtual void setScaleDraw(QwtDialScaleDraw *);
-
-    QwtDialScaleDraw *scaleDraw();
-    const QwtDialScaleDraw *scaleDraw() const;
-
-protected:
-    virtual void paintEvent(QPaintEvent *);
-    virtual void resizeEvent(QResizeEvent *);
-    virtual void keyPressEvent(QKeyEvent *);
-
-    virtual void updateMask();
-
-    virtual void drawFrame(QPainter *p);
-    virtual void drawContents(QPainter *) const;
-    virtual void drawFocusIndicator(QPainter *) const;
-
-    virtual void drawScale(QPainter *, const QPoint &center,
-        int radius, double origin, double arcMin, double arcMax) const;
-
-    /*!
-      Draw the contents inside the scale
-
-      Paints nothing.
-
-      \param painter Painter
-      \param center Center of the contents circle
-      \param radius Radius of the contents circle
-    */
-    virtual void drawScaleContents(QPainter *painter, const QPoint &center, 
-        int radius) const;
-
-    virtual void drawNeedle(QPainter *, const QPoint &, 
-        int radius, double direction, QPalette::ColorGroup) const;
-
-    virtual QwtText scaleLabel(double) const;
-    void updateScale();
-
-    virtual void rangeChange();
-    virtual void valueChange();
-
-    virtual double getValue(const QPoint &);
-    virtual void getScrollMode(const QPoint &, 
-        int &scrollMode, int &direction);
-
-private:
-    class PrivateData;
-    PrivateData *d_data;
-};
-
-#endif
diff --git a/src/qwt/include/qwt_dial_needle.h b/src/qwt/include/qwt_dial_needle.h
deleted file mode 100644
index a144678..0000000
--- a/src/qwt/include/qwt_dial_needle.h
+++ /dev/null
@@ -1,195 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- * 
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-#ifndef QWT_DIAL_NEEDLE_H
-#define QWT_DIAL_NEEDLE_H 1
-
-#include <qpalette.h>
-#include "qwt_global.h"
-
-class QPainter;
-class QPoint;
-
-/*!
-  \brief Base class for needles that can be used in a QwtDial.
-
-  QwtDialNeedle is a pointer that indicates a value by pointing 
-  to a specific direction. 
-    
-  Qwt is missing a set of good looking needles. 
-  Contributions are very welcome.
-
-  \sa QwtDial, QwtCompass
-*/
-
-class QWT_EXPORT QwtDialNeedle
-{
-public:
-    QwtDialNeedle();
-    virtual ~QwtDialNeedle();
-
-    /*!
-        Draw the needle
-
-        \param painter Painter
-        \param center Center of the dial, start position for the needle
-        \param length Length of the needle
-        \param direction Direction of the needle, in degrees counter clockwise
-        \param cg Color group, used for painting
-    */
-    virtual void draw(QPainter *painter, const QPoint &center, 
-        int length, double direction, 
-        QPalette::ColorGroup cg = QPalette::Active) const = 0;
-
-    virtual void setPalette(const QPalette &);
-    const QPalette &palette() const; 
-
-protected:
-    static void drawKnob(QPainter *, const QPoint &pos, 
-        int width, const QBrush &, bool sunken);
-
-private:
-    QPalette d_palette;
-};
-
-/*!
-  A needle for dial widgets
-
-  The following colors are used:
-  - QColorGroup::Mid\n
-    Pointer
-  - QColorGroup::base\n
-    Knob
-
-  \sa QwtDial, QwtCompass
-*/
-
-class QWT_EXPORT QwtDialSimpleNeedle: public QwtDialNeedle
-{
-public:
-    enum Style
-    {
-        Arrow,
-        Ray
-    };
-
-    QwtDialSimpleNeedle(Style, bool hasKnob = true, 
-        const QColor &mid = Qt::gray, const QColor &base = Qt::darkGray);
-
-    virtual void draw(QPainter *, const QPoint &, int length, 
-        double direction, QPalette::ColorGroup = QPalette::Active) const;
-
-    static void drawArrowNeedle(QPainter *, 
-        const QPalette&, QPalette::ColorGroup,
-        const QPoint &, int length, int width, double direction, 
-        bool hasKnob);
-
-    static void drawRayNeedle(QPainter *, 
-        const QPalette&, QPalette::ColorGroup,
-        const QPoint &, int length, int width, double direction, 
-        bool hasKnob);
-
-    void setWidth(int width);
-    int width() const;
-
-private:
-    Style d_style;
-    bool d_hasKnob;
-    int d_width;
-};
-
-/*!
-  \brief A magnet needle for compass widgets
-
-  A magnet needle points to two opposite directions indicating
-  north and south.
-
-  The following colors are used:
-  - QColorGroup::Light\n
-    Used for pointing south
-  - QColorGroup::Dark\n
-    Used for pointing north
-  - QColorGroup::Base\n
-    Knob (ThinStyle only)
-
-  \sa QwtDial, QwtCompass
-*/
-
-class QWT_EXPORT QwtCompassMagnetNeedle: public QwtDialNeedle
-{
-public:
-    enum Style
-    {
-        TriangleStyle,
-        ThinStyle
-    };
-    QwtCompassMagnetNeedle(Style = TriangleStyle,
-        const QColor &light = Qt::white, const QColor &dark = Qt::red);
-
-    virtual void draw(QPainter *, const QPoint &, int length, 
-        double direction, QPalette::ColorGroup = QPalette::Active) const;
-
-    static void drawTriangleNeedle(QPainter *, 
-        const QPalette &, QPalette::ColorGroup,
-        const QPoint &, int length, double direction); 
-
-    static void drawThinNeedle(QPainter *,
-        const QPalette &, QPalette::ColorGroup,
-        const QPoint &, int length, double direction);
-
-protected:
-    static void drawPointer(QPainter *painter, const QBrush &brush,
-        int colorOffset, const QPoint &center, 
-        int length, int width, double direction);
-
-private:
-    Style d_style;
-};
-
-/*!
-  \brief An indicator for the wind direction
-
-  QwtCompassWindArrow shows the direction where the wind comes from.
-
-  - QColorGroup::Light\n
-    Used for Style1, or the light half of Style2
-  - QColorGroup::Dark\n
-    Used for the dark half of Style2
-
-  \sa QwtDial, QwtCompass
-*/
-
-class QWT_EXPORT QwtCompassWindArrow: public QwtDialNeedle
-{
-public:
-    enum Style
-    {
-        Style1,
-        Style2
-    };
-
-    QwtCompassWindArrow(Style, const QColor &light = Qt::white,
-        const QColor &dark = Qt::gray);
-
-    virtual void draw(QPainter *, const QPoint &, int length,
-        double direction, QPalette::ColorGroup = QPalette::Active) const;
-
-    static void drawStyle1Needle(QPainter *, 
-        const QPalette &, QPalette::ColorGroup,
-        const QPoint &, int length, double direction);
-
-    static void drawStyle2Needle(QPainter *, 
-        const QPalette &, QPalette::ColorGroup,
-        const QPoint &, int length, double direction);
-
-private:
-    Style d_style;
-};
-
-#endif // QWT_DIAL_NEEDLE_H
diff --git a/src/qwt/include/qwt_double_interval.h b/src/qwt/include/qwt_double_interval.h
deleted file mode 100644
index a7b1055..0000000
--- a/src/qwt/include/qwt_double_interval.h
+++ /dev/null
@@ -1,151 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- * 
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-#ifndef QWT_DOUBLE_INTERVAL_H
-#define QWT_DOUBLE_INTERVAL_H
-
-#include "qwt_global.h"
-
-class QWT_EXPORT QwtDoubleInterval
-{
-public:
-    inline QwtDoubleInterval();
-    inline QwtDoubleInterval(double minValue, double maxValue);
-
-    inline void setInterval(double minValue, double maxValue);
-
-    QwtDoubleInterval normalized() const;
-    QwtDoubleInterval invert() const;
-    QwtDoubleInterval limit(double minValue, double maxValue) const;
-
-    inline int operator==(const QwtDoubleInterval &) const;
-    inline int operator!=(const QwtDoubleInterval &) const;
-
-    inline double minValue() const;
-    inline double maxValue() const;
-    
-    inline double width() const;
-
-    inline void setMinValue(double);
-    inline void setMaxValue(double);
-
-    bool contains(double value) const;
-
-    bool intersects(const QwtDoubleInterval &) const;
-    QwtDoubleInterval intersect(const QwtDoubleInterval &) const;
-    QwtDoubleInterval unite(const QwtDoubleInterval &) const;
-
-    inline QwtDoubleInterval operator|(const QwtDoubleInterval &) const;
-    inline QwtDoubleInterval operator&(const QwtDoubleInterval &) const;
-
-    QwtDoubleInterval &operator|=(const QwtDoubleInterval &);
-    QwtDoubleInterval &operator&=(const QwtDoubleInterval &);
-
-    QwtDoubleInterval extend(double value) const;
-    inline QwtDoubleInterval operator|(double) const;
-    QwtDoubleInterval &operator|=(double);
-
-    inline bool isValid() const;
-    inline bool isNull() const;
-    inline void invalidate();
-
-    QwtDoubleInterval symmetrize(double value) const;
-
-private:
-    double d_minValue;
-    double d_maxValue;
-};
-
-inline QwtDoubleInterval::QwtDoubleInterval():
-    d_minValue(0.0),
-    d_maxValue(-1.0)
-{
-}
-
-inline QwtDoubleInterval::QwtDoubleInterval(double minValue, double maxValue):
-    d_minValue(minValue),
-    d_maxValue(maxValue)
-{
-}
-
-inline void QwtDoubleInterval::setInterval(double minValue, double maxValue)
-{
-    d_minValue = minValue;
-    d_maxValue = maxValue;
-}
-
-inline void QwtDoubleInterval::setMinValue(double minValue)
-{   
-    d_minValue = minValue;
-}
-
-inline void QwtDoubleInterval::setMaxValue(double maxValue)
-{
-    d_maxValue = maxValue;
-}
-
-inline double QwtDoubleInterval::minValue() const 
-{ 
-    return d_minValue; 
-}
-
-inline double QwtDoubleInterval::maxValue() const 
-{ 
-    return d_maxValue; 
-}
-
-inline double QwtDoubleInterval::width() const 
-{ 
-    return isValid() ? (d_maxValue - d_minValue) : 0.0; 
-}
-
-inline QwtDoubleInterval QwtDoubleInterval::operator&(
-    const QwtDoubleInterval &interval ) const
-{
-    return intersect(interval);
-}
-
-inline QwtDoubleInterval QwtDoubleInterval::operator|(
-    const QwtDoubleInterval &interval) const
-{
-    return unite(interval);
-}
-
-inline int QwtDoubleInterval::operator==(const QwtDoubleInterval &other) const
-{
-    return (d_minValue == other.d_minValue) &&
-        (d_maxValue == other.d_maxValue);
-}
-
-inline int QwtDoubleInterval::operator!=(const QwtDoubleInterval &other) const
-{
-    return (!(*this == other));
-}
-
-inline QwtDoubleInterval QwtDoubleInterval::operator|(double value) const
-{
-    return extend(value);
-}
-
-inline bool QwtDoubleInterval::isNull() const
-{
-    return d_minValue >= d_maxValue;
-}
-
-inline bool QwtDoubleInterval::isValid() const
-{
-    return d_minValue <= d_maxValue;
-}
-
-inline void QwtDoubleInterval::invalidate()
-{
-    d_minValue = 0.0;
-    d_maxValue = -1.0;
-}
-#endif
diff --git a/src/qwt/include/qwt_double_range.h b/src/qwt/include/qwt_double_range.h
deleted file mode 100644
index dfe36e7..0000000
--- a/src/qwt/include/qwt_double_range.h
+++ /dev/null
@@ -1,88 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- * 
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-#ifndef QWT_DOUBLE_RANGE_H
-#define QWT_DOUBLE_RANGE_H
-
-#include "qwt_global.h"
-
-/*!
-  \brief A class which controls a value within an interval
-
-  This class is useful as a base class or a member for sliders.
-  It represents an interval of type double within which a value can
-  be moved. The value can be either an arbitrary point inside 
-  the interval (see QwtDoubleRange::setValue), or it can be fitted
-  into a step raster (see QwtDoubleRange::fitValue and
-  QwtDoubleRange::incValue).
-
-  As a special case, a QwtDoubleRange can be periodic, which means that
-  a value outside the interval will be mapped to a value inside the
-  interval when QwtDoubleRange::setValue(), QwtDoubleRange::fitValue(), 
-  QwtDoubleRange::incValue() or QwtDoubleRange::incPages() are called.
-*/
-
-class QWT_EXPORT QwtDoubleRange
-{
-public:
-    QwtDoubleRange();
-    virtual ~QwtDoubleRange();
-
-    void setRange(double vmin, double vmax, double vstep = 0.0,
-        int pagesize = 1);
-
-    void setValid(bool);
-    bool isValid() const;
-
-    virtual void setValue(double);
-    double value() const;
-
-    void setPeriodic(bool tf);
-    bool periodic() const;
-
-    void setStep(double);
-    double step() const;
-
-    double maxValue() const;
-    double minValue() const; 
-
-    int pageSize() const;
-
-    virtual void incValue(int);
-    virtual void incPages(int);
-    virtual void fitValue(double);
-
-protected:
-
-    double exactValue() const;
-    double exactPrevValue() const;
-    double prevValue() const;
-
-    virtual void valueChange();
-    virtual void stepChange();
-    virtual void rangeChange();
-
-private:
-    void setNewValue(double x,int align = 0);
-
-    double d_minValue;
-    double d_maxValue;
-    double d_step;
-    int d_pageSize;
-
-    bool d_isValid;
-    double d_value;
-    double d_exactValue;
-    double d_exactPrevValue;
-    double d_prevValue;
-
-    bool d_periodic;
-};
-
-#endif
diff --git a/src/qwt/include/qwt_double_rect.h b/src/qwt/include/qwt_double_rect.h
deleted file mode 100644
index af3c079..0000000
--- a/src/qwt/include/qwt_double_rect.h
+++ /dev/null
@@ -1,440 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-#ifndef QWT_DOUBLE_RECT_H
-#define QWT_DOUBLE_RECT_H 1
-
-#include "qwt_global.h"
-#include "qwt_array.h"
-
-#if QT_VERSION >= 0x040000
-
-#include <QPointF>
-#include <QSizeF>
-#include <QRectF>
-
-typedef QPointF QwtDoublePoint;
-typedef QSizeF QwtDoubleSize;
-typedef QRectF QwtDoubleRect;
-
-// MOC_SKIP_BEGIN
-#if defined(QWT_TEMPLATEDLL)
-
-#if defined(Q_CC_MSVC_NET)
-// == QVector<QPointF> 
-extern template class __declspec(dllimport) QwtArray<QPointF>;
-#else
-template class QWT_EXPORT QwtArray<QPointF>;
-#endif
-
-#endif 
-// MOC_SKIP_END
-
-#else
-
-#include <qpoint.h>
-#include <qsize.h>
-#include <qrect.h>
-
-/*!
-  The QwtDoublePoint class defines a point in double coordinates
-*/
-
-class QWT_EXPORT QwtDoublePoint
-{
-public:
-    QwtDoublePoint();
-    QwtDoublePoint(double x, double y);
-    QwtDoublePoint(const QPoint &);
-
-    QPoint toPoint() const;
-
-    bool isNull()    const;
-
-    double x() const;
-    double y() const;
-
-    double &rx();
-    double &ry();
-
-    void setX(double x);
-    void setY(double y);
-
-    bool operator==(const QwtDoublePoint &) const;
-    bool operator!=(const QwtDoublePoint &) const;
-
-    const QwtDoublePoint operator-() const;
-    const QwtDoublePoint operator+(const QwtDoublePoint &) const;
-    const QwtDoublePoint operator-(const QwtDoublePoint &) const;
-    const QwtDoublePoint operator*(double) const;
-    const QwtDoublePoint operator/(double) const;
-
-    QwtDoublePoint &operator+=(const QwtDoublePoint &);
-    QwtDoublePoint &operator-=(const QwtDoublePoint &);
-    QwtDoublePoint &operator*=(double);
-    QwtDoublePoint &operator/=(double);
-
-private:
-    double d_x;
-    double d_y;
-};
-
-/*!
-  The QwtDoubleSize class defines a size in double coordinates
-*/
-
-class QWT_EXPORT QwtDoubleSize
-{
-public:
-    QwtDoubleSize();
-    QwtDoubleSize(double width, double height);
-    QwtDoubleSize(const QSize &);
-
-    bool isNull() const;
-    bool isEmpty() const;
-    bool isValid() const;
-
-    double width() const;
-    double height() const;
-    void setWidth( double w );
-    void setHeight( double h );
-    void transpose();
-
-    QwtDoubleSize expandedTo(const QwtDoubleSize &) const;
-    QwtDoubleSize boundedTo(const QwtDoubleSize &) const;
-
-    bool operator==(const QwtDoubleSize &) const;
-    bool operator!=(const QwtDoubleSize &) const;
-
-    const QwtDoubleSize operator+(const QwtDoubleSize &) const;
-    const QwtDoubleSize operator-(const QwtDoubleSize &) const;
-    const QwtDoubleSize operator*(double) const;
-    const QwtDoubleSize operator/(double) const;
-
-    QwtDoubleSize &operator+=(const QwtDoubleSize &);
-    QwtDoubleSize &operator-=(const QwtDoubleSize &);
-    QwtDoubleSize &operator*=(double c);
-    QwtDoubleSize &operator/=(double c);
-
-private:
-    double d_width;
-    double d_height;
-};
-
-/*!
-  The QwtDoubleRect class defines a size in double coordinates.
-*/
-
-class QWT_EXPORT QwtDoubleRect  
-{
-public:
-    QwtDoubleRect();
-    QwtDoubleRect(double left, double top, double width, double height);
-    QwtDoubleRect(const QwtDoublePoint&, const QwtDoubleSize &);
-
-    bool isNull()    const;
-    bool isEmpty()   const;
-    bool isValid()   const;
-
-    QwtDoubleRect normalized() const;
-
-    double left()  const;
-    double right()  const;
-    double top()  const;
-    double bottom()  const;
-
-    void setLeft(double);
-    void setRight(double);
-    void setTop(double);
-    void setBottom(double);
-
-    QwtDoublePoint center()  const;
-
-    void moveLeft(double x);
-    void moveRight(double x);
-    void moveTop(double y );
-    void moveBottom(double y );
-    void moveTo(double x, double y);
-    void moveTo(const QwtDoublePoint &);
-    void moveBy(double dx, double dy);
-    void moveCenter(const QwtDoublePoint &);
-    void moveCenter(double dx, double dy);
-
-    void setRect(double x1, double x2, double width, double height);
-
-    double width()   const;
-    double height()  const;
-    QwtDoubleSize size() const;
-
-    void setWidth(double w );
-    void setHeight(double h );
-    void setSize(const QwtDoubleSize &);
-
-    QwtDoubleRect  operator|(const QwtDoubleRect &r) const;
-    QwtDoubleRect  operator&(const QwtDoubleRect &r) const;
-    QwtDoubleRect &operator|=(const QwtDoubleRect &r);
-    QwtDoubleRect &operator&=(const QwtDoubleRect &r);
-    bool operator==( const QwtDoubleRect &) const;
-    bool operator!=( const QwtDoubleRect &) const;
-
-    bool contains(const QwtDoublePoint &p, bool proper = false) const;
-    bool contains(double x, double y, bool proper = false) const; 
-    bool contains(const QwtDoubleRect &r, bool proper=false) const;
-
-    QwtDoubleRect unite(const QwtDoubleRect &) const;
-    QwtDoubleRect intersect(const QwtDoubleRect &) const;
-    bool intersects(const QwtDoubleRect &) const;
-
-private:
-    double d_left;
-    double d_right;
-    double d_top;
-    double d_bottom;
-};
-
-/*! 
-    Returns true if the point is null; otherwise returns false.
-
-    A point is considered to be null if both the x- and y-coordinates 
-    are equal to zero.
-*/
-inline bool QwtDoublePoint::isNull() const
-{ 
-    return d_x == 0.0 && d_y == 0.0; 
-}
-
-//! Returns the x-coordinate of the point.
-inline double QwtDoublePoint::x() const
-{ 
-    return d_x; 
-}
-
-//! Returns the y-coordinate of the point.
-inline double QwtDoublePoint::y() const
-{   
-    return d_y; 
-}
-
-//! Returns a reference to the x-coordinate of the point.
-inline double &QwtDoublePoint::rx()
-{
-    return d_x;
-}
-
-//! Returns a reference to the y-coordinate of the point.
-inline double &QwtDoublePoint::ry()
-{
-    return d_y;
-}
-
-//! Sets the x-coordinate of the point to the value specified by x.
-inline void QwtDoublePoint::setX(double x)
-{ 
-    d_x = x; 
-}
-
-//! Sets the y-coordinate of the point to the value specified by y.
-inline void QwtDoublePoint::setY(double y)
-{ 
-    d_y = y; 
-}
-
-/*!
-   Rounds the coordinates of this point to the nearest integer and 
-   returns a QPoint with these rounded coordinates.
-*/
-inline QPoint QwtDoublePoint::toPoint() const
-{
-    return QPoint(qRound(d_x), qRound(d_y));
-}
-
-/*!
-  Returns true if the width is 0 and the height is 0; 
-  otherwise returns false.
-*/
-inline bool QwtDoubleSize::isNull() const
-{ 
-    return d_width == 0.0 && d_height == 0.0; 
-}
-
-/*! 
-  Returns true if the width is <= 0.0 or the height is <= 0.0, 
-  otherwise false. 
-*/
-inline bool QwtDoubleSize::isEmpty() const
-{ 
-    return d_width <= 0.0 || d_height <= 0.0; 
-}
-
-/*!
-  Returns true if the width is equal to or greater than 0.0 and the height 
-  is equal to or greater than 0.0; otherwise returns false.
-*/
-inline bool QwtDoubleSize::isValid() const
-{ 
-    return d_width >= 0.0 && d_height >= 0.0; 
-}
-
-//! Returns the width. 
-inline double QwtDoubleSize::width() const
-{ 
-    return d_width; 
-}
-
-//! Returns the height. 
-inline double QwtDoubleSize::height() const
-{ 
-    return d_height; 
-}
-
-//! Sets the width to width. 
-inline void QwtDoubleSize::setWidth(double width)
-{ 
-    d_width = width; 
-}
-
-//! Sets the height to height. 
-inline void QwtDoubleSize::setHeight(double height)
-{ 
-    d_height = height; 
-}
-
-/*!
-    Returns true if the rectangle is a null rectangle; otherwise returns false.
-    A null rectangle has both the width and the height set to 0.
-    A null rectangle is also empty and invalid.
-
-    \sa QwtDoubleRect::isEmpty, QwtDoubleRect::isValid
-*/
-inline bool QwtDoubleRect::isNull() const
-{ 
-    return d_right == d_left && d_bottom == d_top;
-}
-
-/*!
-    Returns true if the rectangle is empty; otherwise returns false.
-    An empty rectangle has a width() <= 0 or height() <= 0.
-    An empty rectangle is not valid. isEmpty() == !isValid()
-
-    \sa QwtDoubleRect::isNull, QwtDoubleRect::isValid
-*/
-inline bool QwtDoubleRect::isEmpty() const
-{ 
-    return d_left >= d_right || d_top >= d_bottom; 
-}
-
-/*!
-    Returns true if the rectangle is valid; otherwise returns false.
-    A valid rectangle has a width() > 0 and height() > 0.
-    Note that non-trivial operations like intersections are not defined 
-    for invalid rectangles.  isValid() == !isEmpty()
-
-    \sa isNull(), isEmpty(), and normalized().
-*/
-inline bool QwtDoubleRect::isValid() const
-{ 
-    return d_left < d_right && d_top < d_bottom; 
-}
-
-//! Returns left
-inline double QwtDoubleRect::left() const
-{ 
-    return d_left; 
-}
-
-//! Returns right
-inline double QwtDoubleRect::right() const
-{ 
-    return d_right; 
-}
-
-//! Returns top
-inline double QwtDoubleRect::top() const
-{ 
-    return d_top; 
-}
-
-//! Returns bottom
-inline double QwtDoubleRect::bottom() const
-{ 
-    return d_bottom; 
-}
-
-//! Set left  
-inline void QwtDoubleRect::setLeft(double x)
-{ 
-    d_left = x;
-}
-
-//! Set right  
-inline void QwtDoubleRect::setRight(double x)
-{ 
-    d_right = x;
-}
-
-//! Set top  
-inline void QwtDoubleRect::setTop(double y)
-{ 
-    d_top = y;
-}
-
-//! Set bottom  
-inline void QwtDoubleRect::setBottom(double y)
-{ 
-    d_bottom = y;
-}
-
-//! Returns the width
-inline double QwtDoubleRect::width() const
-{ 
-    return  d_right - d_left; 
-}
-
-//! Returns the height
-inline double QwtDoubleRect::height() const
-{ 
-    return  d_bottom - d_top; 
-}
-
-//! Returns the size
-inline QwtDoubleSize QwtDoubleRect::size() const
-{ 
-    return QwtDoubleSize(width(), height());
-}
-
-//! Set the width, by right = left + w;
-inline void QwtDoubleRect::setWidth(double w)
-{
-    d_right = d_left + w;
-}
-
-//! Set the height, by bottom = top + h;
-inline void QwtDoubleRect::setHeight(double h)
-{
-    d_bottom = d_top + h;
-}
-
-/*! 
-    Moves the top left corner of the rectangle to p, 
-    without changing the rectangles size.
-*/
-inline void QwtDoubleRect::moveTo(const QwtDoublePoint &p)
-{
-    moveTo(p.x(), p.y());
-}
-
-// MOC_SKIP_BEGIN
-#if defined(QWT_TEMPLATEDLL)
-template class QWT_EXPORT QwtArray<QwtDoublePoint>;
-#endif
-// MOC_SKIP_END
-
-#endif // QT_VERSION < 0x040000
-
-#endif // QWT_DOUBLE_RECT_H
diff --git a/src/qwt/include/qwt_dyngrid_layout.h b/src/qwt/include/qwt_dyngrid_layout.h
deleted file mode 100644
index 10cc470..0000000
--- a/src/qwt/include/qwt_dyngrid_layout.h
+++ /dev/null
@@ -1,101 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-#ifndef QWT_DYNGRID_LAYOUT_H
-#define QWT_DYNGRID_LAYOUT_H
-
-#include <qlayout.h>
-#include <qsize.h>
-#if QT_VERSION >= 0x040000
-#include <qlist.h>
-#else
-#include <qvaluelist.h>
-#endif
-#include "qwt_global.h"
-#include "qwt_array.h"
-
-/*!
-  \brief The QwtDynGridLayout class lays out widgets in a grid,
-         adjusting the number of columns and rows to the current size.
-         
-  QwtDynGridLayout takes the space it gets, divides it up into rows and 
-  columns, and puts each of the widgets it manages into the correct cell(s). 
-  It lays out as many number of columns as possible (limited by maxCols()).
-*/
-
-class QWT_EXPORT QwtDynGridLayout : public QLayout
-{
-    Q_OBJECT
-public:
-    explicit QwtDynGridLayout(QWidget *, int margin = 0, int space = -1);
-#if QT_VERSION < 0x040000
-    explicit QwtDynGridLayout(QLayout *, int space = -1);
-#endif
-    explicit QwtDynGridLayout(int space = -1);
-
-    virtual ~QwtDynGridLayout();
-
-    virtual void invalidate();
-
-    void setMaxCols(uint maxCols);
-    uint maxCols() const;
-
-    uint numRows () const; 
-    uint numCols () const;
-
-    virtual void addItem(QLayoutItem *);
-
-#if QT_VERSION >= 0x040000
-    virtual QLayoutItem *itemAt( int index ) const;
-    virtual QLayoutItem *takeAt( int index );
-    virtual int count() const;
-
-    void setExpandingDirections(Qt::Orientations);
-    virtual Qt::Orientations expandingDirections() const;
-    QList<QRect> layoutItems(const QRect &, uint numCols) const;
-#else
-    virtual QLayoutIterator iterator();
-
-    void setExpanding(QSizePolicy::ExpandData);
-    virtual QSizePolicy::ExpandData expanding() const;
-    QValueList<QRect> layoutItems(const QRect &, uint numCols) const;
-#endif
-
-    virtual int maxItemWidth() const;
-
-    virtual void setGeometry(const QRect &rect);
-
-    virtual bool hasHeightForWidth() const;
-    virtual int heightForWidth(int) const;
-
-    virtual QSize sizeHint() const;
-
-    virtual bool isEmpty() const;
-    uint itemCount() const;
-
-    virtual uint columnsForWidth(int width) const;
-
-protected:
-
-    void layoutGrid(uint numCols,
-        QwtArray<int>& rowHeight, QwtArray<int>& colWidth) const;
-    void stretchGrid(const QRect &rect, uint numCols, 
-        QwtArray<int>& rowHeight, QwtArray<int>& colWidth) const;
-
-
-private:
-    void init();
-    int maxRowWidth(int numCols) const;
-    void updateLayoutCache();
-
-    class PrivateData;
-    PrivateData *d_data;
-};
-
-#endif
diff --git a/src/qwt/include/qwt_event_pattern.h b/src/qwt/include/qwt_event_pattern.h
deleted file mode 100644
index 48a8b7d..0000000
--- a/src/qwt/include/qwt_event_pattern.h
+++ /dev/null
@@ -1,219 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- * 
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-#ifndef QWT_EVENT_PATTERN
-#define QWT_EVENT_PATTERN 1
-
-#include <qnamespace.h>
-#include "qwt_array.h"
-
-class QMouseEvent;
-class QKeyEvent;
-
-/*!
-  \brief A collection of event patterns
-
-  QwtEventPattern introduces an level of indirection for mouse and
-  keyboard inputs. Those are represented by symbolic names, so 
-  the application code can be configured by individual mappings.
-
-  \sa QwtPicker, QwtPickerMachine, QwtPlotZoomer
-*/
-class QWT_EXPORT QwtEventPattern
-{
-public:
-    /*!
-      \brief Symbolic mouse input codes
-
-      The default initialization for 3 button mice is:
-      - MouseSelect1\n
-        Qt::LeftButton
-      - MouseSelect2\n
-        Qt::RightButton
-      - MouseSelect3\n
-        Qt::MidButton
-      - MouseSelect4\n
-        Qt::LeftButton + Qt::ShiftButton
-      - MouseSelect5\n
-        Qt::RightButton + Qt::ShiftButton
-      - MouseSelect6\n
-        Qt::MidButton + Qt::ShiftButton
-
-      The default initialization for 2 button mice is:
-      - MouseSelect1\n
-        Qt::LeftButton
-      - MouseSelect2\n
-        Qt::RightButton
-      - MouseSelect3\n
-        Qt::LeftButton + Qt::AltButton
-      - MouseSelect4\n
-        Qt::LeftButton + Qt::ShiftButton
-      - MouseSelect5\n
-        Qt::RightButton + Qt::ShiftButton
-      - MouseSelect6\n
-        Qt::LeftButton + Qt::AltButton + Qt::ShiftButton
-
-      The default initialization for 1 button mice is:
-      - MouseSelect1\n
-        Qt::LeftButton
-      - MouseSelect2\n
-        Qt::LeftButton + Qt::ControlButton
-      - MouseSelect3\n
-        Qt::LeftButton + Qt::AltButton
-      - MouseSelect4\n
-        Qt::LeftButton + Qt::ShiftButton
-      - MouseSelect5\n
-        Qt::LeftButton + Qt::ControlButton + Qt::ShiftButton
-      - MouseSelect6\n
-        Qt::LeftButton + Qt::AltButton + Qt::ShiftButton
-
-      \sa initMousePattern()
-    */
-
-    enum MousePatternCode
-    {
-        MouseSelect1,
-        MouseSelect2,
-        MouseSelect3,
-        MouseSelect4,
-        MouseSelect5,
-        MouseSelect6,
-
-        MousePatternCount
-    };
-
-    /*!
-      \brief Symbolic keyboard input codes
-
-      Default initialization:
-      - KeySelect1\n
-        Qt::Key_Return
-      - KeySelect2\n
-        Qt::Key_Space
-      - KeyAbort\n
-        Qt::Key_Escape
-
-      - KeyLeft\n
-        Qt::Key_Left
-      - KeyRight\n
-        Qt::Key_Right
-      - KeyUp\n
-        Qt::Key_Up
-      - KeyDown\n
-        Qt::Key_Down
-
-      - KeyUndo\n
-        Qt::Key_Minus
-      - KeyRedo\n
-        Qt::Key_Plus
-      - KeyHome\n
-        Qt::Key_Escape
-    */
-    enum KeyPatternCode
-    {
-        KeySelect1,
-        KeySelect2,
-        KeyAbort,
-
-        KeyLeft,
-        KeyRight,
-        KeyUp,
-        KeyDown,
-
-        KeyRedo,
-        KeyUndo,
-        KeyHome,
-
-        KeyPatternCount
-    };
-
-    class MousePattern
-    {
-    public:
-        MousePattern(int btn = Qt::NoButton, int st = Qt::NoButton) 
-        { 
-            button = btn;
-            state = st;
-        }
-
-        int button;
-        int state;
-    };
-
-    class KeyPattern
-    {
-    public:
-        KeyPattern(int k = 0, int st = Qt::NoButton)    
-        { 
-            key = k; 
-            state = st;
-        }
-
-        int key;
-        int state;
-    };
-
-    QwtEventPattern();
-    virtual ~QwtEventPattern();
-
-    void initMousePattern(int numButtons);
-    void initKeyPattern();
-
-    void setMousePattern(uint pattern, int button, int state = Qt::NoButton);
-    void setKeyPattern(uint pattern, int key, int state = Qt::NoButton);
-
-    void setMousePattern(const QwtArray<MousePattern> &);
-    void setKeyPattern(const QwtArray<KeyPattern> &);
-
-    const QwtArray<MousePattern> &mousePattern() const;
-    const QwtArray<KeyPattern> &keyPattern() const;
-
-    QwtArray<MousePattern> &mousePattern();
-    QwtArray<KeyPattern> &keyPattern();
-
-    bool mouseMatch(uint pattern, const QMouseEvent *) const;
-    bool keyMatch(uint pattern, const QKeyEvent *) const;
-
-protected:
-    virtual bool mouseMatch(const MousePattern &, const QMouseEvent *) const;
-    virtual bool keyMatch(const KeyPattern &, const QKeyEvent *) const;
-    
-private:
-
-#if defined(_MSC_VER)
-#pragma warning(push)
-#pragma warning(disable: 4251)
-#endif
-    QwtArray<MousePattern> d_mousePattern;
-    QwtArray<KeyPattern> d_keyPattern;
-#if defined(_MSC_VER)
-#pragma warning(pop)
-#endif
-};
-
-inline bool operator==(QwtEventPattern::MousePattern b1, 
-   QwtEventPattern::MousePattern  b2)
-{ 
-    return b1.button == b2.button && b1.state == b2.state; 
-}
-
-inline bool operator==(QwtEventPattern::KeyPattern b1, 
-   QwtEventPattern::KeyPattern  b2)
-{ 
-    return b1.key == b2.key && b1.state == b2.state; 
-}
-
-#if defined(QWT_TEMPLATEDLL)
-// MOC_SKIP_BEGIN
-template class QWT_EXPORT QwtArray<QwtEventPattern::MousePattern>;
-template class QWT_EXPORT QwtArray<QwtEventPattern::KeyPattern>;
-// MOC_SKIP_END
-#endif
-
-#endif
diff --git a/src/qwt/include/qwt_global.h b/src/qwt/include/qwt_global.h
deleted file mode 100644
index 736c3a4..0000000
--- a/src/qwt/include/qwt_global.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- * 
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-// vim: expandtab
-
-#ifndef QWT_GLOBAL_H
-#define QWT_GLOBAL_H
-
-#include <qglobal.h>
-#if QT_VERSION < 0x040000
-#include <qmodules.h>
-#endif
-
-#define QWT_VERSION       0x050000
-#define QWT_VERSION_STR   "5.0.0cvs"
-
-//
-// Create Qwt DLL if QWT_DLL is defined (Windows only)
-//
-
-#if defined(Q_WS_WIN)
-
-#if defined(_MSC_VER) /* MSVC Compiler */
-/* template-class specialization 'identifier' is already instantiated */
-#pragma warning(disable: 4660)
-#endif
-
-#if defined(QWT_NODLL)
-#undef QWT_MAKEDLL
-#undef QWT_DLL
-#undef QWT_TEMPLATEDLL
-#endif
-
-#ifdef QWT_DLL
-#if defined(QWT_MAKEDLL)     /* create a Qwt DLL library */
-#undef QWT_DLL
-#define QWT_EXPORT  __declspec(dllexport)
-#define QWT_TEMPLATEDLL
-#endif
-#endif
-
-#if defined(QWT_DLL)     /* use a Qwt DLL library */
-#define QWT_EXPORT  __declspec(dllimport)
-#define QWT_TEMPLATEDLL
-#endif
-
-#else // ! Q_WS_WIN
-#undef QWT_MAKEDLL       /* ignore these for other platforms */
-#undef QWT_DLL
-#undef QWT_TEMPLATEDLL
-#endif
-
-#ifndef QWT_EXPORT
-#define QWT_EXPORT
-#endif
-
-// #define QWT_NO_COMPAT 1 // disable withdrawn functionality
-
-#endif // QWT_GLOBAL_H
diff --git a/src/qwt/include/qwt_interval_data.h b/src/qwt/include/qwt_interval_data.h
deleted file mode 100644
index d69d372..0000000
--- a/src/qwt/include/qwt_interval_data.h
+++ /dev/null
@@ -1,70 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-#ifndef QWT_INTERVAL_DATA_H
-#define QWT_INTERVAL_DATA_H 1
-
-#include "qwt_global.h"
-#include "qwt_math.h"
-#include "qwt_array.h"
-#include "qwt_double_interval.h"
-#include "qwt_double_rect.h"
-
-#if defined(_MSC_VER) && (_MSC_VER > 1310)
-#include <string.h>
-#endif
-
-#if defined(QWT_TEMPLATEDLL)
-// MOC_SKIP_BEGIN
-template class QWT_EXPORT QwtArray<QwtDoubleInterval>;
-template class QWT_EXPORT QwtArray<double>;
-// MOC_SKIP_END
-#endif
-
-/*!
-  \brief Interval data class.
-
-*/
-class QWT_EXPORT QwtIntervalData
-{
-public:
-    QwtIntervalData();
-    QwtIntervalData(const QwtArray<QwtDoubleInterval> &, 
-        const QwtArray<double> &);
-    
-    void setData(const QwtArray<QwtDoubleInterval> &, 
-        const QwtArray<double> &);
-
-    size_t size() const;
-    const QwtDoubleInterval &interval(size_t i) const;
-    double y(size_t i) const;
-
-    QwtDoubleRect boundingRect() const;
-
-private:
-    QwtArray<QwtDoubleInterval> d_interval;
-    QwtArray<double> d_y;
-};
-
-inline size_t QwtIntervalData::size() const
-{
-    return qwtMin(d_interval.size(), d_y.size());
-}
-
-inline const QwtDoubleInterval &QwtIntervalData::interval(size_t i) const
-{
-    return d_interval[int(i)];
-}
-
-inline double QwtIntervalData::y(size_t i) const
-{
-    return d_y[int(i)];
-}
-
-#endif 
diff --git a/src/qwt/include/qwt_knob.h b/src/qwt/include/qwt_knob.h
deleted file mode 100644
index 9e3bf08..0000000
--- a/src/qwt/include/qwt_knob.h
+++ /dev/null
@@ -1,96 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-#ifndef QWT_KNOB_H
-#define QWT_KNOB_H
-
-#include "qwt_global.h"
-#include "qwt_abstract_slider.h"
-#include "qwt_abstract_scale.h"
-
-class QwtRoundScaleDraw;
-
-/*!
-  \brief The Knob Widget
-
-  The QwtKnob widget imitates look and behaviour of a volume knob on a radio.
-  It contains a scale around the knob which is set up automatically or can
-  be configured manually (see QwtAbstractScale).
-  Automatic scrolling is enabled when the user presses a mouse
-  button on the scale. For a description of signals, slots and other
-  members, see QwtAbstractSlider.
-
-  \image html knob.gif
-  \sa   QwtAbstractSlider and QwtAbstractScale for the descriptions
-    of the inherited members.
-*/
-
-class QWT_EXPORT QwtKnob : public QwtAbstractSlider, public QwtAbstractScale
-{
-    Q_OBJECT 
-    Q_ENUMS (Symbol)
-    Q_PROPERTY( int knobWidth READ knobWidth WRITE setKnobWidth )
-    Q_PROPERTY( int borderWidth READ borderWidth WRITE setBorderWidth )
-    Q_PROPERTY( double totalAngle READ totalAngle WRITE setTotalAngle )
-    Q_PROPERTY( Symbol symbol READ symbol WRITE setSymbol )
-
-public:
-    /*!
-        Symbol
-        \sa QwtKnob::QwtKnob()
-    */
-
-    enum Symbol { Line, Dot };
-
-    explicit QwtKnob(QWidget* parent = NULL);
-    virtual ~QwtKnob();
-
-    void setKnobWidth(int w);
-    int knobWidth() const;
-
-    void setTotalAngle (double angle);
-    double totalAngle() const;
-
-    void setBorderWidth(int bw);
-    int borderWidth() const;
-
-    void setSymbol(Symbol);
-    Symbol symbol() const;
-
-    virtual QSize sizeHint() const;
-    virtual QSize minimumSizeHint() const;
-    
-    void setScaleDraw(QwtRoundScaleDraw *);
-    const QwtRoundScaleDraw *scaleDraw() const;
-    QwtRoundScaleDraw *scaleDraw();
-
-protected:
-    virtual void paintEvent(QPaintEvent *e);
-    virtual void resizeEvent(QResizeEvent *e);
-
-    void draw(QPainter *p, const QRect& ur);
-    void drawKnob(QPainter *p, const QRect &r);
-    void drawMarker(QPainter *p, double arc, const QColor &c);
-
-private:
-    void layoutKnob( bool update = true );
-    double getValue(const QPoint &p);
-    void getScrollMode( const QPoint &p, int &scrollMode, int &direction );
-    void recalcAngle();
-    
-    virtual void valueChange();
-    virtual void rangeChange();
-    virtual void scaleChange();
-    virtual void fontChange(const QFont &oldFont);
-
-    class PrivateData;
-    PrivateData *d_data;
-};
-
-#endif
diff --git a/src/qwt/include/qwt_layout_metrics.h b/src/qwt/include/qwt_layout_metrics.h
deleted file mode 100644
index 9efa02c..0000000
--- a/src/qwt/include/qwt_layout_metrics.h
+++ /dev/null
@@ -1,153 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- * 
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-#ifndef QWT_LAYOUT_METRICS_H
-#define QWT_LAYOUT_METRICS_H
-
-#include <qsize.h>
-#include <qrect.h>
-#if QT_VERSION < 0x040000
-#include <qpointarray.h>
-#else
-#include <qpolygon.h>
-#endif
-#include "qwt_global.h"
-
-class QPainter;
-class QString;
-class QFontMetrics;
-#if QT_VERSION < 0x040000
-class QWMatrix;
-#else
-class QMatrix;
-#endif
-class QPaintDevice;
-
-class QWT_EXPORT QwtMetricsMap
-{
-public:
-    QwtMetricsMap();
-
-    bool isIdentity() const;
-
-    void setMetrics(const QPaintDevice *layoutMetrics,
-        const QPaintDevice *deviceMetrics);
-
-    int layoutToDeviceX(int x) const;
-    int deviceToLayoutX(int x) const;
-    int screenToLayoutX(int x) const;
-    int layoutToScreenX(int x) const;
-
-    int layoutToDeviceY(int y) const;
-    int deviceToLayoutY(int y) const;
-    int screenToLayoutY(int y) const;
-    int layoutToScreenY(int y) const;
-
-    QPoint layoutToDevice(const QPoint &, const QPainter * = NULL) const;
-    QPoint deviceToLayout(const QPoint &, const QPainter * = NULL) const;
-    QPoint screenToLayout(const QPoint &) const;
-
-    QSize layoutToDevice(const QSize &) const;
-    QSize deviceToLayout(const QSize &) const;
-    QSize screenToLayout(const QSize &) const;
-
-    QRect layoutToDevice(const QRect &, const QPainter * = NULL) const;
-    QRect deviceToLayout(const QRect &, const QPainter * = NULL) const;
-    QRect screenToLayout(const QRect &) const;
-
-#if QT_VERSION < 0x040000
-    QPointArray layoutToDevice(const QPointArray &, 
-        const QPainter * = NULL) const;
-    QPointArray deviceToLayout(const QPointArray &, 
-        const QPainter * = NULL) const;
-
-    static QPointArray translate(const QWMatrix &, const QPointArray &);
-    static QRect translate(const QWMatrix &, const QRect &);
-#else
-    QPolygon layoutToDevice(const QPolygon &, 
-        const QPainter * = NULL) const;
-    QPolygon deviceToLayout(const QPolygon &, 
-        const QPainter * = NULL) const;
-
-    static QPolygon translate(const QMatrix &, const QPolygon &);
-    static QRect translate(const QMatrix &, const QRect &);
-#endif
-
-private:
-    double d_screenToLayoutX;
-    double d_screenToLayoutY;
-
-    double d_deviceToLayoutX;
-    double d_deviceToLayoutY;
-};
-
-inline bool QwtMetricsMap::isIdentity() const
-{
-    return d_deviceToLayoutX == 1.0 && d_deviceToLayoutY == 1.0;
-}
-
-inline int QwtMetricsMap::layoutToDeviceX(int x) const
-{
-    return qRound(x / d_deviceToLayoutX);
-}
-
-inline int QwtMetricsMap::deviceToLayoutX(int x) const
-{
-    return qRound(x * d_deviceToLayoutX);
-}
-
-inline int QwtMetricsMap::screenToLayoutX(int x) const
-{
-    return qRound(x * d_screenToLayoutX);
-}
-
-inline int QwtMetricsMap::layoutToScreenX(int x) const
-{
-    return qRound(x / d_screenToLayoutX);
-}
-
-inline int QwtMetricsMap::layoutToDeviceY(int y) const
-{
-    return qRound(y / d_deviceToLayoutY);
-}
-
-inline int QwtMetricsMap::deviceToLayoutY(int y) const
-{
-    return qRound(y * d_deviceToLayoutY);
-}
-
-inline int QwtMetricsMap::screenToLayoutY(int y) const
-{
-    return qRound(y * d_screenToLayoutY);
-}
-
-inline int QwtMetricsMap::layoutToScreenY(int y) const
-{
-    return qRound(y / d_screenToLayoutY);
-}
-
-inline QSize QwtMetricsMap::layoutToDevice(const QSize &size) const
-{
-    return QSize(layoutToDeviceX(size.width()), 
-        layoutToDeviceY(size.height()));
-}
-
-inline QSize QwtMetricsMap::deviceToLayout(const QSize &size) const
-{
-    return QSize(deviceToLayoutX(size.width()), 
-        deviceToLayoutY(size.height()));
-}
-
-inline QSize QwtMetricsMap::screenToLayout(const QSize &size) const
-{
-    return QSize(screenToLayoutX(size.width()), 
-        screenToLayoutY(size.height()));
-}
-
-#endif
diff --git a/src/qwt/include/qwt_legend.h b/src/qwt/include/qwt_legend.h
deleted file mode 100644
index 98ff9ba..0000000
--- a/src/qwt/include/qwt_legend.h
+++ /dev/null
@@ -1,124 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-// vim: expandtab
-
-#ifndef QWT_LEGEND_H
-#define QWT_LEGEND_H
-
-#include <qframe.h>
-#include "qwt_global.h"
-#if QT_VERSION < 0x040000
-#include <qvaluelist.h>
-#else
-#include <qlist.h>
-#endif
-
-class QScrollBar;
-class QwtPlotItem;
-
-/*!
-  \brief The legend widget
-
-  The QwtLegend widget is a tabular arrangement of legend items. Legend
-  items might be any type of widget, but in general they will be
-  a QwtLegendItem.
-
-  \sa QwtLegendItem, QwtPlot
-*/
-
-class QWT_EXPORT QwtLegend : public QFrame
-{
-    Q_OBJECT
-
-public:
-    /*!
-      \brief Display policy
-
-       - None\n
-         the client code is responsible how to display of each legend item.
-         The Qwt library will not interfere.
-
-       - Fixed\n
-         all legend items are displayed with the QwtLegendItem::IdentifierMode
-         to be passed in 'mode'.
-
-       - Auto\n
-         each legend item is displayed with a mode that is a bitwise or of
-         - QwtLegendItem::ShowLine (if its curve is drawn with a line) and
-         - QwtLegendItem::ShowSymbol (if its curve is drawn with symbols) and
-         - QwtLegendItem::ShowText (if the has a title).
-
-       Default is LegendDisplayPolicy::Auto.
-       \sa QwtLegend::setDisplayPolicy, QwtLegend::displayPolicy,                          QwtLegendItem::IdentifierMode
-     */
-
-    enum LegendDisplayPolicy
-    {
-        None = 0,
-        Fixed = 1,
-        Auto = 2
-    };
-
-    enum LegendItemMode
-    {
-        ReadOnlyItem,
-        ClickableItem,
-        CheckableItem
-    };
-
-    explicit QwtLegend(QWidget *parent = NULL);
-    virtual ~QwtLegend();
-    
-    void setDisplayPolicy(LegendDisplayPolicy policy, int mode = -1);
-    LegendDisplayPolicy displayPolicy() const;
-
-    void setItemMode(LegendItemMode);
-    LegendItemMode itemMode() const;
-
-    int identifierMode() const;
-
-    QWidget *contentsWidget();
-    const QWidget *contentsWidget() const;
-
-    void insert(const QwtPlotItem *, QWidget *);
-    void remove(const QwtPlotItem *);
-
-    QWidget *find(const QwtPlotItem *) const;
-    QwtPlotItem *find(const QWidget *) const;
-
-#if QT_VERSION < 0x040000
-    virtual QValueList<QWidget *> legendItems() const;
-#else
-    virtual QList<QWidget *> legendItems() const;
-#endif
-
-    void clear();
-    
-    bool isEmpty() const;
-    uint itemCount() const;
-
-    virtual bool eventFilter(QObject *, QEvent *);
-
-    virtual QSize sizeHint() const;
-    virtual int heightForWidth(int w) const;
-
-    QScrollBar *horizontalScrollBar() const;
-    QScrollBar *verticalScrollBar() const;
-
-protected:
-    virtual void resizeEvent(QResizeEvent *);
-    virtual void layoutContents();
-
-private:
-    class PrivateData;
-    PrivateData *d_data;
-};
-
-#endif // QWT_LEGEND_H
diff --git a/src/qwt/include/qwt_legend_item.h b/src/qwt/include/qwt_legend_item.h
deleted file mode 100644
index cf4e0d5..0000000
--- a/src/qwt/include/qwt_legend_item.h
+++ /dev/null
@@ -1,109 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-// vim: expandtab
-
-#ifndef QWT_LEGEND_ITEM_H
-#define QWT_LEGEND_ITEM_H
-
-#include "qwt_global.h"
-#include "qwt_legend.h"
-#include "qwt_text.h"
-#include "qwt_text_label.h"
-
-class QPainter;
-class QPen;
-class QwtSymbol;
-
-/*!
-  \brief A legend label
-
-  QwtLegendItem represents a curve on a legend.
-  It displays an curve identifier with an explaining text.
-  The identifier might be a combination of curve symbol and line.
-  In readonly mode it behaves like a label, otherwise like 
-  an unstylish push button.
-
-  \sa QwtLegend, QwtCurve
-*/
-class QWT_EXPORT QwtLegendItem: public QwtTextLabel
-{
-    Q_OBJECT
-public:
-    
-    /*!
-       \brief Identifier mode
-
-       Default is ShowLine | ShowText
-       \sa QwtLegendItem::identifierMode, QwtLegendItem::setIdentifierMode
-     */
-
-    enum IdentifierMode
-    {
-        NoIdentifier = 0,
-        ShowLine = 1,
-        ShowSymbol = 2,
-        ShowText = 4
-    };
-
-    explicit QwtLegendItem(QWidget *parent = 0);
-    explicit QwtLegendItem(const QwtSymbol &, const QPen &,
-        const QwtText &, QWidget *parent = 0);
-    virtual ~QwtLegendItem();
-
-    virtual void setText(const QwtText &);
-
-    void setItemMode(QwtLegend::LegendItemMode);
-    QwtLegend::LegendItemMode itemMode() const;
-
-    void setIdentifierMode(int);
-    int identifierMode() const;
-
-    void setSymbol(const QwtSymbol &);
-    const QwtSymbol& symbol() const;
-
-    void setCurvePen(const QPen &);
-    const QPen& curvePen() const;
-
-    virtual void drawIdentifier(QPainter *, const QRect &) const;
-    virtual void drawItem(QPainter *p, const QRect &) const; 
-
-    virtual QSize sizeHint() const;
-
-    bool isChecked() const;
-
-public slots:
-    void setChecked(bool on);
-
-signals:
-    void clicked();
-    void pressed();
-    void released();
-    void checked(bool);
-
-protected:
-    void setDown(bool);
-    bool isDown() const;
-
-    virtual void paintEvent(QPaintEvent *);
-    virtual void mousePressEvent(QMouseEvent *);
-    virtual void mouseReleaseEvent(QMouseEvent *);
-    virtual void keyPressEvent(QKeyEvent *);
-    virtual void keyReleaseEvent(QKeyEvent *);
-
-    virtual void drawText(QPainter *, const QRect &);
-
-private:
-    void init(const QwtText &);
-
-    class PrivateData;
-    PrivateData *d_data;
-};
-
-#endif // QWT_LEGEND_ITEM_H
diff --git a/src/qwt/include/qwt_math.h b/src/qwt/include/qwt_math.h
deleted file mode 100644
index 1aa74e6..0000000
--- a/src/qwt/include/qwt_math.h
+++ /dev/null
@@ -1,175 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- * 
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-/*!
-  \file qwt_math.h
-  \brief A set of mathematical routines
-*/
-
-#ifndef QWT_MATH_H
-#define QWT_MATH_H
-
-#include <math.h>
-#include <qpoint.h>
-#include "qwt_global.h"
-
-#if QT_VERSION < 0x040000
-
-#define qwtMax QMAX
-#define qwtMin QMIN
-#define qwtAbs QABS
-
-#else // QT_VERSION >= 0x040000
-
-#define qwtMax qMax
-#define qwtMin qMin
-#define qwtAbs qAbs
-
-#endif
-
-#ifndef LOG10_2
-#define LOG10_2     0.30102999566398119802  /* log10(2) */
-#endif
-
-#ifndef LOG10_3
-#define LOG10_3     0.47712125471966243540  /* log10(3) */
-#endif
-
-#ifndef LOG10_5
-#define LOG10_5     0.69897000433601885749  /* log10(5) */
-#endif
-
-#ifndef M_2PI
-#define M_2PI       6.28318530717958623200  /* 2 pi */
-#endif
-
-#ifndef LOG_MIN
-//! Mininum value for logarithmic scales
-#define LOG_MIN 1.0e-100
-#endif
-
-#ifndef LOG_MAX
-//! Maximum value for logarithmic scales
-#define LOG_MAX 1.0e100
-#endif
-
-#ifndef M_E
-#define M_E            2.7182818284590452354   /* e */
-#endif
-
-#ifndef M_LOG2E
-#define M_LOG2E 1.4426950408889634074   /* log_2 e */
-#endif
-
-#ifndef M_LOG2E
-#define M_LOG10E    0.43429448190325182765  /* log_10 e */
-#endif
-
-#ifndef M_LN2
-#define M_LN2       0.69314718055994530942  /* log_e 2 */
-#endif
-
-#ifndef M_LN10
-#define M_LN10         2.30258509299404568402  /* log_e 10 */
-#endif
-
-#ifndef M_PI
-#define M_PI        3.14159265358979323846  /* pi */
-#endif
-
-#ifndef M_PI_2
-#define M_PI_2      1.57079632679489661923  /* pi/2 */
-#endif
-
-#ifndef M_PI_4
-#define M_PI_4      0.78539816339744830962  /* pi/4 */
-#endif
-
-#ifndef M_1_PI
-#define M_1_PI      0.31830988618379067154  /* 1/pi */
-#endif
-
-#ifndef M_2_PI
-#define M_2_PI      0.63661977236758134308  /* 2/pi */
-#endif
-
-#ifndef M_2_SQRTPI
-#define M_2_SQRTPI  1.12837916709551257390  /* 2/sqrt(pi) */
-#endif
-
-#ifndef M_SQRT2
-#define M_SQRT2 1.41421356237309504880  /* sqrt(2) */
-#endif
-
-#ifndef M_SQRT1_2
-#define M_SQRT1_2   0.70710678118654752440  /* 1/sqrt(2) */
-#endif
-
-QWT_EXPORT double qwtGetMin(const double *array, int size);
-QWT_EXPORT double qwtGetMax(const double *array, int size);
-
-
-//! Return the sign 
-inline int qwtSign(double x)
-{
-    if (x > 0.0)
-       return 1;
-    else if (x < 0.0)
-       return (-1);
-    else
-       return 0;
-}            
-
-//! Return the square of a number
-inline double qwtSqr(const double x)
-{
-    return x*x;
-}
-
-/*!
-  \brief Limit a value to fit into a specified interval
-  \param x Input value
-  \param x1 First interval boundary
-  \param x2 Second interval boundary  
-*/
-template <class T>
-T qwtLim(const T& x, const T& x1, const T& x2)
-{
-    T rv;
-    T xmin, xmax;
-    
-    xmin = qwtMin(x1, x2);
-    xmax = qwtMax(x1, x2);
-
-    if ( x < xmin )
-       rv = xmin;
-    else if ( x > xmax )
-       rv = xmax;
-    else
-       rv = x;
-
-    return rv;
-}
-
-inline QPoint qwtPolar2Pos(const QPoint &center,
-    double radius, double angle)
-{
-    const double x = center.x() + radius * cos(angle);
-    const double y = center.y() - radius * sin(angle);
-
-    return QPoint(qRound(x), qRound(y));
-}
-
-inline QPoint qwtDegree2Pos(const QPoint &center,
-    double radius, double angle)
-{
-    return qwtPolar2Pos(center, radius, angle / 180.0 * M_PI);
-}
-
-#endif
diff --git a/src/qwt/include/qwt_paint_buffer.h b/src/qwt/include/qwt_paint_buffer.h
deleted file mode 100644
index d128502..0000000
--- a/src/qwt/include/qwt_paint_buffer.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- * 
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-#ifndef QWT_PAINT_BUFFER_H
-#define QWT_PAINT_BUFFER_H 1
-
-#include <qglobal.h>
-#if QT_VERSION < 0x040000
-
-#include <qpixmap.h>
-#include "qwt_global.h"
-
-class QPainter;
-
-/*!
-  \brief Paint buffer for Qwt widgets
-
-  QwtPaintBuffer offers a simple way to en/disable double buffering.
-  Double buffering is enabled as default and in general there will be
-  no reason to change this. 
-*/
-
-class QWT_EXPORT QwtPaintBuffer
-{
-public:
-    explicit QwtPaintBuffer();
-    explicit QwtPaintBuffer(QPaintDevice *, const QRect &, QPainter *p = NULL);
-
-    virtual ~QwtPaintBuffer();
-
-    void open(QPaintDevice *, const QRect &, QPainter *p = NULL);
-    void close();
-
-    QPainter *painter();
-    const QPaintDevice *device();
-    
-    static void setEnabled(bool enable);
-    static bool isEnabled();
-
-    //! Return Buffer used for double buffering
-    const QPixmap &buffer() const { return d_pixBuffer; }
-
-protected:
-    void flush();
-
-private:
-    QPixmap d_pixBuffer;
-    QRect d_rect;
-
-    QPaintDevice *d_device; // use QGuardedPtr
-    QPainter *d_painter; // use QGuardedPtr
-    QPainter *d_devicePainter; // use QGuardedPtr
-
-    static bool d_enabled;
-};
-
-#endif // QT_VERSION < 0x040000
-
-#endif
diff --git a/src/qwt/include/qwt_painter.h b/src/qwt/include/qwt_painter.h
deleted file mode 100644
index bb683b2..0000000
--- a/src/qwt/include/qwt_painter.h
+++ /dev/null
@@ -1,140 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- * 
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-#ifndef QWT_PAINTER_H
-#define QWT_PAINTER_H
-
-#include <qpoint.h>
-#include <qrect.h>
-#include "qwt_global.h"
-#include "qwt_layout_metrics.h"
-
-class QPainter;
-class QBrush;
-class QColor;
-class QWidget;
-
-#if QT_VERSION < 0x040000
-class QColorGroup;
-class QSimpleRichText;
-#else
-class QPalette;
-class QTextDocument;
-#endif
-
-#if defined(Q_WS_X11)
-// Warning: QCOORD_MIN, QCOORD_MAX are wrong on X11.
-#define QWT_COORD_MAX 16384
-#define QWT_COORD_MIN (-QWT_COORD_MAX - 1)
-#else
-#define QWT_COORD_MAX 2147483647
-#define QWT_COORD_MIN -QWT_COORD_MAX - 1
-#endif
-
-/*!
-  \brief A collection of QPainter workarounds
-
-  1) Clipping to coordinate system limits (Qt3 only)
-
-  On X11 pixel coordinates are stored in shorts. Qt 
-  produces overruns when mapping QCOORDS to shorts. 
-
-  2) Scaling to device metrics
-
-  QPainter scales fonts, line and fill patterns to the metrics
-  of the paint device. Other values like the geometries of rects, points
-  remain device independend. To enable a device independent widget 
-  implementation, QwtPainter adds scaling of these geometries.
-  (Unfortunately QPainter::scale scales both types of paintings,
-   so the objects of the first type would be scaled twice).
-*/
-
-class QWT_EXPORT QwtPainter
-{
-public:
-    static void setMetricsMap(const QPaintDevice *layout,
-        const QPaintDevice *device);
-    static void setMetricsMap(const QwtMetricsMap &);
-    static void resetMetricsMap();
-    static const QwtMetricsMap &metricsMap();
-
-    static void setDeviceClipping(bool);
-    static bool deviceClipping();
-
-    static void setClipRect(QPainter *, const QRect &);
-
-    static void drawText(QPainter *, int x, int y, 
-        const QString &);
-    static void drawText(QPainter *, const QPoint &, 
-        const QString &);
-    static void drawText(QPainter *, int x, int y, int w, int h, 
-        int flags, const QString &);
-    static void drawText(QPainter *, const QRect &, 
-        int flags, const QString &);
-
-#ifndef QT_NO_RICHTEXT
-#if QT_VERSION < 0x040000
-    static void drawSimpleRichText(QPainter *, const QRect &,
-        int flags, QSimpleRichText &);
-#else
-    static void drawSimpleRichText(QPainter *, const QRect &,
-        int flags, QTextDocument &);
-#endif
-#endif
-
-    static void drawRect(QPainter *, int x, int y, int w, int h);
-    static void drawRect(QPainter *, const QRect &rect);
-    static void fillRect(QPainter *, const QRect &, const QBrush &); 
-
-    static void drawEllipse(QPainter *, const QRect &);
-
-    static void drawLine(QPainter *, int x1, int y1, int x2, int y2);
-    static void drawLine(QPainter *, const QPoint &p1, const QPoint &p2);
-#if QT_VERSION < 0x040000
-    static void drawPolygon(QPainter *, const QPointArray &pa);
-    static void drawPolyline(QPainter *, const QPointArray &pa);
-#else
-    static void drawPolygon(QPainter *, const QPolygon &pa);
-    static void drawPolyline(QPainter *, const QPolygon &pa);
-#endif
-    static void drawPoint(QPainter *, int x, int y);
-
-#if QT_VERSION < 0x040000
-    static void drawRoundFrame(QPainter *, const QRect &,
-        int width, const QColorGroup &cg, bool sunken);
-#else
-    static void drawRoundFrame(QPainter *, const QRect &,
-        int width, const QPalette &, bool sunken);
-#endif
-    static void drawFocusRect(QPainter *, QWidget *);
-    static void drawFocusRect(QPainter *, QWidget *, const QRect &);
-
-#if QT_VERSION < 0x040000
-    static QPointArray clip(const QPointArray &);
-#else
-    static QPolygon clip(const QPolygon &);
-#endif
-
-private:
-    static void drawColoredArc(QPainter *, const QRect &,
-        int peak, int arc, int intervall, const QColor &c1, const QColor &c2);
-
-    static const QRect &deviceClipRect();
-    static bool d_deviceClipping;
-    static QwtMetricsMap d_metricsMap;
-};
-
-//!  Wrapper for QPainter::drawLine()
-inline void QwtPainter::drawLine(QPainter *painter,
-    const QPoint &p1, const QPoint &p2)
-{
-    drawLine(painter, p1.x(), p1.y(), p2.x(), p2.y());
-}
-
-#endif
diff --git a/src/qwt/include/qwt_picker.h b/src/qwt/include/qwt_picker.h
deleted file mode 100644
index 16ecfdb..0000000
--- a/src/qwt/include/qwt_picker.h
+++ /dev/null
@@ -1,377 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- * 
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-#ifndef QWT_PICKER
-#define QWT_PICKER 1
-
-#include <qobject.h>
-#include <qpen.h>
-#include <qfont.h>
-#include <qrect.h>
-#include "qwt_global.h"
-#include "qwt_text.h"
-#include "qwt_event_pattern.h"
-#if QT_VERSION < 0x040000
-#include <qpointarray.h>
-#else
-#include <qpolygon.h>
-#endif
-
-class QWidget;
-class QMouseEvent;
-class QWheelEvent;
-class QKeyEvent;
-class QwtPickerMachine;
-
-/*!
-  \brief QwtPicker provides selections on a widget
-
-  QwtPicker filters all mouse and keyboard events of a widget
-  and translates them into an array of selected points. Depending
-  on the QwtPicker::SelectionType the selection might be a single point,
-  a rectangle or a polygon. The selection process is supported by 
-  optional rubberbands (rubberband selection) and position trackers. 
-
-  QwtPicker is useful for widgets where the event handlers
-  can�t be overloaded, like for components of composite widgets.
-  It offers alternative handlers for mouse and key events.
-
-  \par Example 
-  \verbatim #include <qwt_picker.h>
-
-QwtPicker *picker = new QwtPicker(widget);
-picker->setTrackerMode(QwtPicker::ActiveOnly);
-connect(picker, SIGNAL(selected(const SelectedPoints &)), ...);
-
-// emit the position of clicks on widget
-picker->setSelectionFlags(QwtPicker::PointSelection | QwtPicker::ClickSelection);
-
-    ...
-    
-// now select rectangles
-picker->setSelectionFlags(QwtPicker::RectSelection | QwtPicker::DragSelection);
-picker->setRubberBand(QwtPicker::RectRubberBand); \endverbatim\n
-
-  The selection process uses the commands begin(), append(), move() and end().
-  append() adds a new point to the selection, move() changes the position of 
-  the latest point. 
-
-  The commands are initiated from a small state machine (QwtPickerMachine) 
-  that translates mouse and key events. There are a couple of predefined 
-  state machines for point, rect and polygon selections. The selectionFlags()
-  control which one should be used. It is possible to use other machines 
-  by overloading stateMachine().
-
-  The picker is active (isActive()), between begin() and end().
-  In active state the rubberband is displayed, and the tracker is visible
-  in case of trackerMode is ActiveOnly or AlwaysOn.
-
-  The cursor can be moved using the arrow keys. All selections can be aborted
-  using the abort key. (QwtEventPattern::KeyPatternCode)
-
-  \warning In case of QWidget::NoFocus the focus policy of the observed
-           widget is set to QWidget::WheelFocus and mouse tracking
-           will be manipulated for ClickSelection while the picker is active,
-           or if trackerMode() is AlwayOn.
-*/
-
-class QWT_EXPORT QwtPicker: public QObject, public QwtEventPattern
-{
-    Q_OBJECT
-
-    Q_ENUMS(RubberBand)
-    Q_ENUMS(DisplayMode)
-    Q_ENUMS(ResizeMode)
-
-    Q_PROPERTY(int selectionFlags READ selectionFlags WRITE setSelectionFlags)
-    Q_PROPERTY(DisplayMode trackerMode READ trackerMode WRITE setTrackerMode)
-    Q_PROPERTY(QFont trackerFont READ trackerFont WRITE setTrackerFont)
-    Q_PROPERTY(RubberBand rubberBand READ rubberBand WRITE setRubberBand)
-    Q_PROPERTY(ResizeMode resizeMode READ resizeMode WRITE setResizeMode)
-    Q_PROPERTY(bool isEnabled READ isEnabled WRITE setEnabled)
-
-    Q_PROPERTY(QPen trackerPen READ trackerPen WRITE setTrackerPen)
-    Q_PROPERTY(QPen rubberBandPen READ rubberBandPen WRITE setRubberBandPen)
-
-public:
-    /*! 
-      This enum type describes the type of a selection. It can be or�d
-      with QwtPicker::RectSelectionType and QwtPicker::SelectionMode
-      and passed to QwtPicker::setSelectionFlags()
-      - NoSelection\n
-        Selection is disabled. Note this is different to the disabled
-        state, as you might have a tracker.
-      - PointSelection\n
-        Select a single point.
-      - RectSelection\n
-        Select a rectangle.
-      - PolygonSelection\n
-        Select a polygon.
-
-      The default value is NoSelection.
-      \sa QwtPicker::setSelectionFlags(), QwtPicker::selectionFlags()
-    */
-
-    enum SelectionType
-    {
-        NoSelection = 0,
-        PointSelection = 1,
-        RectSelection = 2,
-        PolygonSelection = 4
-    };
-
-    /*! 
-      \brief Selection subtype for RectSelection
-      This enum type describes the type of rectangle selections. 
-      It can be or�d with QwtPicker::RectSelectionType and 
-      QwtPicker::SelectionMode and passed to QwtPicker::setSelectionFlags().
-      - CornerToCorner\n
-        The first and the second selected point are the corners
-        of the rectangle.
-      - CenterToCorner\n
-        The first point is the center, the second a corner of the
-        rectangle.
-      - CenterToRadius\n
-        The first point is the center of a quadrat, calculated by the maximum 
-        of the x- and y-distance.
-
-      The default value is CornerToCorner.
-      \sa QwtPicker::setSelectionFlags(), QwtPicker::selectionFlags()
-    */
-    enum RectSelectionType
-    {
-        CornerToCorner = 64,
-        CenterToCorner = 128,
-        CenterToRadius = 256
-    };
-
-    /*! 
-      Values of this enum type or�d together with a SelectionType value
-      identifies which state machine should be used for the selection.
-
-      The default value is ClickSelection.
-      \sa stateMachine()
-    */
-    enum SelectionMode
-    {
-        ClickSelection = 1024,
-        DragSelection = 2048
-    };
-
-#if QT_VERSION < 0x040000
-    typedef QPointArray SelectedPoints;
-#else
-    typedef QPolygon SelectedPoints;
-#endif
-    /*! 
-      Rubberband style
-      - NoRubberBand\n
-        No rubberband.
-      - HLineRubberBand & PointSelection\n
-        A horizontal line.
-      - VLineRubberBand & PointSelection\n
-        A vertical line.
-      - CrossRubberBand & PointSelection\n
-        A horizontal and a vertical line.
-      - RectRubberBand & RectSelection\n
-        A rectangle.
-      - EllipseRubberBand & RectSelection\n
-        An ellipse.
-      - PolygonRubberBand &PolygonSelection\n
-        A polygon.
-      - UserRubberBand\n
-        Values >= UserRubberBand can be used to define additional
-        rubber bands.
-
-      The default value is NoRubberBand.
-      \sa QwtPicker::setRubberBand(), QwtPicker::rubberBand()
-    */
-
-    enum RubberBand
-    {
-        NoRubberBand = 0,
-
-        // Point
-        HLineRubberBand,
-        VLineRubberBand,
-        CrossRubberBand,
-
-        // Rect
-        RectRubberBand,
-        EllipseRubberBand,
-
-        // Polygon
-        PolygonRubberBand,
-
-        UserRubberBand = 100
-    };
-
-    /*! 
-      - AlwaysOff\n
-        Display never.
-      - AlwaysOn\n
-        Display always.
-      - ActiveOnly\n
-        Display only when the selection is active.
-
-      \sa QwtPicker::setTrackerMode(), QwtPicker::trackerMode(), 
-          QwtPicker::isActive()
-    */
-    enum DisplayMode
-    {
-        AlwaysOff,
-        AlwaysOn,
-        ActiveOnly
-    };
-
-    /*! 
-      Controls what to do with the selected points of an active
-         selection when the observed widget is resized.
-      - Stretch\n
-         All points are scaled according to the new size, 
-      - KeepSize\n
-         All points remain unchanged.
-
-      The default value is Stretch.
-      \sa QwtPicker::setResizeMode(), QwtPicker::resize()
-    */
-
-    enum ResizeMode
-    {
-        Stretch,
-        KeepSize
-    };
-
-    explicit QwtPicker(QWidget *parent);
-    explicit QwtPicker(int selectionFlags, RubberBand rubberBand,
-        DisplayMode trackerMode, QWidget *);
-
-    virtual ~QwtPicker();
-
-    virtual void setSelectionFlags(int);
-    int selectionFlags() const;
-
-    virtual void setRubberBand(RubberBand);
-    RubberBand rubberBand() const;
-
-    virtual void setTrackerMode(DisplayMode);
-    DisplayMode trackerMode() const;
-
-    virtual void setResizeMode(ResizeMode);
-    ResizeMode resizeMode() const;
-
-    virtual void setRubberBandPen(const QPen &);
-    QPen rubberBandPen() const;
-
-    virtual void setTrackerPen(const QPen &);
-    QPen trackerPen() const;
-
-    virtual void setTrackerFont(const QFont &);
-    QFont trackerFont() const;
-
-    bool isEnabled() const;
-    virtual void setEnabled(bool);
-
-    bool isActive() const;
-
-    virtual bool eventFilter(QObject *, QEvent *);
-
-    QWidget *parentWidget();
-    const QWidget *parentWidget() const;
-
-    virtual QRect pickRect() const;
-    const SelectedPoints &selection() const; 
-
-    virtual void drawRubberBand(QPainter *) const;
-    virtual void drawTracker(QPainter *) const;
-
-signals:
-    /*!
-      A signal emitting the selected points, 
-      at the end of a selection.
-
-      \param pa Selected points
-    */
-    void selected(const QwtPicker::SelectedPoints &pa);
-
-    /*!
-      A signal emitted when a point has been appended to the selection
-
-      \param pos Position of the appended point.
-      \sa append(). moved()
-    */
-    void appended(const QPoint &pos);
-
-    /*!
-      A signal emitted whenever the last appended point of the 
-      selection has been moved.
-
-      \param pos Position of the moved last point of the selection.
-      \sa move(), appended()
-    */
-    void moved(const QPoint &pos);
-
-    /*!
-      A signal emitted when the active selection has been changed.
-      This might happen when the observed widget is resized.
-
-      \param pa Changed selection
-      \sa stretchSelection()
-    */
-    void changed(const SelectedPoints &pa);
-
-protected:
-    /*!
-      \brief Validate and fixup the selection
-
-      Accepts all selections unmodified
-    
-      \param selection Selection to validate and fixup
-      \return true, when accepted, false otherwise
-    */
-    virtual bool accept(SelectedPoints &selection) const;
-
-    virtual void transition(const QEvent *);
-
-    virtual void begin();
-    virtual void append(const QPoint &);
-    virtual void move(const QPoint &);
-    virtual bool end(bool ok = true);
-
-    virtual void widgetMousePressEvent(QMouseEvent *);
-    virtual void widgetMouseReleaseEvent(QMouseEvent *);
-    virtual void widgetMouseDoubleClickEvent(QMouseEvent *); 
-    virtual void widgetMouseMoveEvent(QMouseEvent *); 
-    virtual void widgetWheelEvent(QWheelEvent *);
-    virtual void widgetKeyPressEvent(QKeyEvent *); 
-    virtual void widgetKeyReleaseEvent(QKeyEvent *); 
-
-    QRect trackerRect(QPainter *painter) const;
-
-    virtual void stretchSelection(const QSize &oldSize, 
-        const QSize &newSize);
-
-    virtual QwtText trackerText(const QPoint &pos) const;
-
-    virtual QwtPickerMachine *stateMachine(int) const;
-
-private:
-    void init(QWidget *, int selectionFlags, RubberBand rubberBand,
-        DisplayMode trackerMode);
-
-    void setStateMachine(QwtPickerMachine *);
-    void setMouseTracking(bool);
-
-    void updateDisplay();
-
-    class PrivateData;
-    PrivateData *d_data;
-};
-            
-#endif
diff --git a/src/qwt/include/qwt_picker_machine.h b/src/qwt/include/qwt_picker_machine.h
deleted file mode 100644
index 7d78a62..0000000
--- a/src/qwt/include/qwt_picker_machine.h
+++ /dev/null
@@ -1,152 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- * 
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-#ifndef QWT_PICKER_MACHINE
-#define QWT_PICKER_MACHINE 1
-
-#include "qwt_global.h"
-#if QT_VERSION < 0x040000
-#include <qvaluelist.h>
-#else
-#include <qlist.h>
-#endif
-
-class QEvent;
-class QwtEventPattern;
-
-/*!
-  \brief A state machine for QwtPicker selections
-
-  QwtPickerMachine accepts key and mouse events and translates them
-  into selection commands. 
-
-  \sa QwtEventPattern::MousePatternCode, QwtEventPattern::KeyPatternCode
-*/
-
-class QWT_EXPORT QwtPickerMachine
-{
-public:
-    enum Command
-    {
-        Begin,
-        Append,
-        Move,
-        End
-    };
-
-#if QT_VERSION < 0x040000
-    typedef QValueList<Command> CommandList;
-#else
-    typedef QList<Command> CommandList;
-#endif
-
-    virtual ~QwtPickerMachine();
-
-    //! Transition
-    virtual CommandList transition(
-        const QwtEventPattern &, const QEvent *) = 0;
-    void reset(); 
-
-protected:
-    QwtPickerMachine();
-
-    int state() const;
-    void setState(int);
-
-private:
-    int d_state;
-};
-
-/*!
-  \brief A state machine for point selections
-
-  Pressing QwtEventPattern::MouseSelect1 or 
-  QwtEventPattern::KeySelect1 selects a point.
-
-  \sa QwtEventPattern::MousePatternCode, QwtEventPattern::KeyPatternCode
-*/
-class QWT_EXPORT QwtPickerClickPointMachine: public QwtPickerMachine
-{
-public:
-    virtual CommandList transition(
-        const QwtEventPattern &, const QEvent *);
-};
-
-/*!
-  \brief A state machine for point selections
-
-  Pressing QwtEventPattern::MouseSelect1 or QwtEventPattern::KeySelect1 
-  starts the selection, releasing QwtEventPattern::MouseSelect1 or 
-  a second press of QwtEventPattern::KeySelect1 terminates it.
-*/
-class QWT_EXPORT QwtPickerDragPointMachine: public QwtPickerMachine
-{
-public:
-    virtual CommandList transition(
-        const QwtEventPattern &, const QEvent *);
-};
-
-/*!
-  \brief A state machine for rectangle selections
-
-  Pressing QwtEventPattern::MouseSelect1 starts
-  the selection, releasing it selects the first point. Pressing it
-  again selects the second point and terminates the selection.
-  Pressing QwtEventPattern::KeySelect1 also starts the 
-  selection, a second press selects the first point. A third one selects 
-  the second point and terminates the selection. 
-
-  \sa QwtEventPattern::MousePatternCode, QwtEventPattern::KeyPatternCode
-*/
-
-class QWT_EXPORT QwtPickerClickRectMachine: public QwtPickerMachine
-{
-public:
-    virtual CommandList transition(
-        const QwtEventPattern &, const QEvent *);
-};
-
-/*!
-  \brief A state machine for rectangle selections
-
-  Pressing QwtEventPattern::MouseSelect1 selects
-  the first point, releasing it the second point.
-  Pressing QwtEventPattern::KeySelect1 also selects the 
-  first point, a second press selects the second point and terminates 
-  the selection.
-
-  \sa QwtEventPattern::MousePatternCode, QwtEventPattern::KeyPatternCode
-*/
-
-class QWT_EXPORT QwtPickerDragRectMachine: public QwtPickerMachine
-{
-public:
-    virtual CommandList transition(
-        const QwtEventPattern &, const QEvent *);
-};
-
-/*!
-  \brief A state machine for polygon selections
-
-  Pressing QwtEventPattern::MouseSelect1 or QwtEventPattern::KeySelect1 
-  starts the selection and selects the first point, or appends a point. 
-  Pressing QwtEventPattern::MouseSelect2 or QwtEventPattern::KeySelect2 
-  appends the last point and terminates the selection.
-
-  \sa QwtEventPattern::MousePatternCode, QwtEventPattern::KeyPatternCode
-*/
-
-class QWT_EXPORT QwtPickerPolygonMachine: public QwtPickerMachine
-{
-public:
-    virtual CommandList transition(
-        const QwtEventPattern &, const QEvent *);
-};
-
-#endif
diff --git a/src/qwt/include/qwt_plot.h b/src/qwt/include/qwt_plot.h
deleted file mode 100644
index d9215c7..0000000
--- a/src/qwt/include/qwt_plot.h
+++ /dev/null
@@ -1,318 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-#ifndef QWT_PLOT_H
-#define QWT_PLOT_H
-
-#include <qframe.h>
-#include "qwt_global.h"
-#include "qwt_array.h"
-#include "qwt_text.h"
-#include "qwt_plot_dict.h"
-#include "qwt_scale_map.h"
-#include "qwt_plot_printfilter.h"
-
-class QwtPlotLayout;
-class QwtLegend;
-class QwtScaleWidget;
-class QwtScaleEngine;
-class QwtScaleDiv;
-class QwtScaleDraw;
-class QwtTextLabel;
-class QwtPlotCanvas;
-class QwtPlotPrintFilter;
-
-/*!
-  \brief A 2-D plotting widget
-
-  QwtPlot is a widget for plotting two-dimensional graphs.
-  An unlimited number of plot items can be displayed on 
-  its canvas. Plot items might be curves (QwtPlotCurve), markers 
-  (QwtPlotMarker), the grid (QwtPlotGrid), or anything else derived 
-  from QwtPlotItem.
-  A plot can have up to four axes, with each plot item attached to an x- and
-  a y axis. The scales at the axes can be explicitely set (QwtScaleDiv), or
-  are calculated from the plot items, using algorithms (QwtScaleEngine) which 
-  can be configured separately for each axis. 
-
-  \par Example
-  The following example shows (schematically) the most simple
-  way to use QwtPlot. By default, only the left and bottom axes are
-  visible and their scales are computed automatically.
-  \verbatim
-#include "../include/qwt_plot.h>
-#include "../include/qwt_plot_curve.h>
-
-QwtPlot *myPlot;
-double x[100], y1[100], y2[100];        // x and y values
-
-myPlot = new QwtPlot("Two Curves", parent);
-
-// add curves
-QwtPlotCurve *curve1 = new QwtPlotCurve("Curve 1");
-QwtPlotCurve *curve2 = new QwtPlotCurve("Curve 2");
-
-getSomeValues(x, y1, y2);
-
-// copy the data into the curves
-curve1->setData(x, y1, 100);
-curve2->setData(x, y2, 100);
-
-curve1->attach(myPlot);
-curve2->attach(myPlot);
-
-// finally, refresh the plot
-myPlot->replot();
-\endverbatim
-*/
-
-class QWT_EXPORT QwtPlot: public QFrame, public QwtPlotDict
-{
-    friend class QwtPlotCanvas;
-
-    Q_OBJECT
-
-    Q_ENUMS( Axis Position )
-        
-    // plot
-    Q_PROPERTY( bool autoReplot READ autoReplot WRITE setAutoReplot )
-
-    // canvas
-    Q_PROPERTY( QColor canvasBackground READ canvasBackground 
-        WRITE setCanvasBackground )
-    Q_PROPERTY( int canvasLineWidth READ canvasLineWidth 
-        WRITE setCanvasLineWidth )
-
-    // axes  
-    Q_PROPERTY( bool xBottomAxis READ xBottomAxisEnabled 
-        WRITE enableXBottomAxis )
-    Q_PROPERTY( bool xTopAxis READ xTopAxisEnabled WRITE enableXTopAxis )
-    Q_PROPERTY( bool yLeftAxis READ yLeftAxisEnabled WRITE enableYLeftAxis )
-    Q_PROPERTY( bool yRightAxis READ yRightAxisEnabled WRITE enableYRightAxis )
-
-public:
-    //! Axis index
-    enum Axis 
-    { 
-        yLeft, 
-        yRight, 
-        xBottom, 
-        xTop, 
-        axisCnt 
-    };
-
-    //! Position
-    enum LegendPosition 
-    {
-        LeftLegend,
-        RightLegend,
-        BottomLegend,
-        TopLegend
-    };
-
-    explicit QwtPlot(QWidget *p = 0);
-    explicit QwtPlot(const QwtText &title, QWidget *p = NULL);
-    virtual ~QwtPlot();
-
-    //! Designer API for enableAxis
-    void enableXBottomAxis(bool b) {enableAxis(xBottom,b);}     
-    //! Designer API for axisEnabled
-    bool xBottomAxisEnabled() const {return axisEnabled(xBottom);};
-    //! Designer API for enableAxis
-    void enableXTopAxis(bool b) {enableAxis(xTop,b);}       
-    //! Designer API for axisEnabled
-    bool xTopAxisEnabled() const {return axisEnabled(xTop);};
-    //! Designer API for enableAxis
-    void enableYRightAxis(bool b) {enableAxis(yRight,b);}       
-    //! Designer API for axisEnabled
-    bool yRightAxisEnabled() const {return axisEnabled(yRight);};
-    //! Designer API for enableAxis
-    void enableYLeftAxis(bool b) {enableAxis(yLeft,b);}     
-    //! Designer API for axisEnabled
-    bool yLeftAxisEnabled() const {return axisEnabled(yLeft);};
-
-    void setAutoReplot(bool tf = true);
-    bool autoReplot() const;
-
-    void print(QPaintDevice &p,
-        const QwtPlotPrintFilter & = QwtPlotPrintFilter()) const;
-    virtual void print(QPainter *, const QRect &rect,
-        const QwtPlotPrintFilter & = QwtPlotPrintFilter()) const;
-
-    // Layout
-
-    QwtPlotLayout *plotLayout();
-    const QwtPlotLayout *plotLayout() const;
-
-    void setMargin(int margin);
-    int margin() const;
-
-    // Title
-
-    void setTitle(const QString &);
-    void setTitle(const QwtText &t);
-    QwtText title() const;
-
-    QwtTextLabel *titleLabel();
-    const QwtTextLabel *titleLabel() const;
-
-    // Canvas
-
-    QwtPlotCanvas *canvas();
-    const QwtPlotCanvas *canvas() const;
-
-    void setCanvasBackground (const QColor &c);
-    const QColor& canvasBackground() const;
-
-    void setCanvasLineWidth(int w);
-    int canvasLineWidth() const;
-
-    virtual QwtScaleMap canvasMap(int axisId) const;
-
-    double invTransform(int axisId, int pos) const;
-    int transform(int axisId, double value) const;
-
-    // Axes
-
-    QwtScaleEngine *axisScaleEngine(int axisId);
-    const QwtScaleEngine *axisScaleEngine(int axisId) const;
-    void setAxisScaleEngine(int axisId, QwtScaleEngine *);
-
-    void setAxisAutoScale(int axisId);
-    bool axisAutoScale(int axisId) const;
-
-    void enableAxis(int axisId, bool tf = true);
-    bool axisEnabled(int axisId) const;
-
-    void setAxisFont(int axisId, const QFont &f);
-    QFont axisFont(int axisId) const;
-
-    void setAxisScale(int axisId, double min, double max, double step = 0);
-    void setAxisScaleDiv(int axisId, const QwtScaleDiv &);
-    void setAxisScaleDraw(int axisId, QwtScaleDraw *);
-
-    const QwtScaleDiv *axisScaleDiv(int axisId) const;
-    QwtScaleDiv *axisScaleDiv(int axisId);
-
-    const QwtScaleDraw *axisScaleDraw(int axisId) const;
-    QwtScaleDraw *axisScaleDraw(int axisId);
-
-    const QwtScaleWidget *axisWidget(int axisId) const;
-    QwtScaleWidget *axisWidget(int axisId);
-
-#if QT_VERSION < 0x040000
-    void setAxisLabelAlignment(int axisId, int);
-#else
-    void setAxisLabelAlignment(int axisId, Qt::Alignment);
-#endif
-    void setAxisLabelRotation(int axisId, double rotation);
-
-    void setAxisTitle(int axisId, const QString &);
-    void setAxisTitle(int axisId, const QwtText &);
-    QwtText axisTitle(int axisId) const;
-
-    void setAxisMaxMinor(int axisId, int maxMinor);
-    int axisMaxMajor(int axisId) const;
-    void setAxisMaxMajor(int axisId, int maxMajor);
-    int axisMaxMinor(int axisId) const;
-
-    // Legend 
-
-    void insertLegend(QwtLegend *, LegendPosition = QwtPlot::RightLegend,
-        double ratio = -1.0);
-
-    QwtLegend *legend();
-    const QwtLegend *legend() const;
-
-    // Misc
-
-    virtual void polish();
-    virtual QSize sizeHint() const;
-    virtual QSize minimumSizeHint() const;
-
-    void updateLayout();
-
-    virtual bool event(QEvent *);
-
-signals:
-    /*!
-      A signal which is emitted when the user has clicked on 
-      a legend item, which is in QwtLegend::ClickableItem mode. 
-
-      \param plotItem Corresponding plot item of the
-                 selected legend item
-
-      \note clicks are disabled as default
-      \sa QwtLegend::setItemMode, QwtLegend::itemMode
-     */
-    void legendClicked(QwtPlotItem *plotItem);
-
-    /*!
-      A signal which is emitted when the user has clicked on 
-      a legend item, which is in QwtLegend::CheckableItem mode
-
-      \param plotItem Corresponding plot item of the
-                 selected legend item
-      \param on True when the legen item is checked
-
-      \note clicks are disabled as default
-      \sa QwtLegend::setItemMode, QwtLegend::itemMode
-     */
-
-    void legendChecked(QwtPlotItem *plotItem, bool on);
-
-public slots:
-    void clear();
-
-    virtual void replot();
-    void autoRefresh();
-
-protected slots:
-    virtual void legendItemClicked();
-    virtual void legendItemChecked(bool);
-
-protected:
-    static bool axisValid(int axisId);
-
-    virtual void drawCanvas(QPainter *);
-    virtual void drawItems(QPainter *, const QRect &,
-        const QwtArray<QwtScaleMap> &,
-        const QwtPlotPrintFilter &) const;
-
-    virtual void updateTabOrder();
-
-    void updateAxes();
-
-    virtual void resizeEvent(QResizeEvent *e);
-
-    virtual void printLegendItem(QPainter *, 
-        const QWidget *, const QRect &) const;
-
-    virtual void printTitle(QPainter *, const QRect &) const;
-    virtual void printScale(QPainter *, int axisId, int startDist, int endDist,
-        int baseDist, const QRect &) const;
-    virtual void printCanvas(QPainter *, const QRect &,
-        const QwtArray<QwtScaleMap> &, const QwtPlotPrintFilter &) const;
-    virtual void printLegend(QPainter *, const QRect &) const;
-
-private:
-    void initAxesData();
-    void deleteAxesData();
-    void updateScaleDiv();
-
-    void initPlot(const QwtText &title);
-
-    class AxisData;
-    AxisData *d_axisData[axisCnt];
-
-    class PrivateData;
-    PrivateData *d_data;
-};
-
-#endif
diff --git a/src/qwt/include/qwt_plot_canvas.h b/src/qwt/include/qwt_plot_canvas.h
deleted file mode 100644
index 9e138e1..0000000
--- a/src/qwt/include/qwt_plot_canvas.h
+++ /dev/null
@@ -1,117 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- * 
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-// vim: expandtab
-
-#ifndef QWT_PLOT_CANVAS_H
-#define QWT_PLOT_CANVAS_H
-
-#include <qframe.h>
-#include <qpen.h>
-#include "qwt_global.h"
-
-class QwtPlot;
-class QPixmap;
-
-/*!
-  \brief Canvas of a QwtPlot. 
-
-  \sa  QwtPlot 
-*/
-
-class QWT_EXPORT QwtPlotCanvas : public QFrame
-{
-    Q_OBJECT
-    friend class QwtPlot;
-
-public:
-
-    /*!
-      \brief Paint attributes
- 
-      - PaintCached\n
-        Paint double buffered and reuse the content of the pixmap buffer 
-        for some spontaneous repaints that happen when a plot gets unhidden, 
-        deiconified or changes the focus.
-        Disabling the cache will improve the performance for
-        incremental paints (using QwtPlotCurve::draw). 
-
-      - PaintPacked\n
-        Suppress system background repaints and paint it together with 
-        the canvas contents.
-        Painting packed might avoid flickering for expensive repaints,
-        when there is a notable gap between painting the background
-        and the plot contents.
-
-      The default setting enables PaintCached and PaintPacked
-
-      \sa setPaintAttribute(), testPaintAttribute(), paintCache()
-     */
-    enum PaintAttribute
-    {
-        PaintCached = 1,
-        PaintPacked = 2
-    };
-
-    /*!
-      \brief Focus indicator
-
-      - NoFocusIndicator\n
-        Don�t paint a focus indicator
-
-      - CanvasFocusIndicator\n
-        The focus is related to the complete canvas.
-        Paint the focus indicator using paintFocus()
-
-      - ItemFocusIndicator\n
-        The focus is related to an item (curve, point, ...) on
-        the canvas. It is up to the application to display a
-        focus indication using f.e. highlighting.
-
-      \sa setFocusIndicator(), focusIndicator(), paintFocus()
-    */
-
-    enum FocusIndicator
-    {
-        NoFocusIndicator,
-        CanvasFocusIndicator,
-        ItemFocusIndicator
-    };
-
-    void setFocusIndicator(FocusIndicator);
-    FocusIndicator focusIndicator() const;
-
-    void setPaintAttribute(PaintAttribute, bool on = true);
-    bool testPaintAttribute(PaintAttribute) const;
-
-    QPixmap *paintCache();
-    const QPixmap *paintCache() const;
-    void invalidatePaintCache();
-
-protected:
-    explicit QwtPlotCanvas(QwtPlot *);
-    virtual ~QwtPlotCanvas();
-
-    virtual void hideEvent(QHideEvent *);
-
-    virtual void paintEvent(QPaintEvent *);
-
-    virtual void drawContents(QPainter *);
-    virtual void drawFocusIndicator(QPainter *);
-
-    void drawCanvas(QPainter *painter = NULL);
-
-private:    
-    void setSystemBackground(bool);
-
-    class PrivateData;
-    PrivateData *d_data;
-};
-
-#endif
diff --git a/src/qwt/include/qwt_plot_curve.h b/src/qwt/include/qwt_plot_curve.h
deleted file mode 100644
index 0d5fdef..0000000
--- a/src/qwt/include/qwt_plot_curve.h
+++ /dev/null
@@ -1,260 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-#ifndef QWT_PLOT_CURVE_H
-#define QWT_PLOT_CURVE_H
-
-#include <qpen.h>
-#include <qstring.h>
-#include "qwt_global.h"
-#include "qwt_plot_item.h"
-#include "qwt_text.h"
-#include "qwt_data.h"
-
-class QPainter;
-class QwtScaleMap;
-class QwtSymbol;
-
-#if QT_VERSION < 0x040000
-class QPointArray;
-#else
-class QPolygon;
-#endif
-
-/*!
-  \brief A class which draws curves
-
-  This class can be used to display data as a curve in the  x-y plane.
-  It supports different display styles, spline interpolation and symbols.
-
-  \par Usage
-  <dl><dt>A. Assign curve properties</dt>
-  <dd>When a curve is created, it is configured to draw black solid lines
-  with QwtPlotCurve::Lines and no symbols. You can change this by calling 
-  QwtPlotCurve::setPen(), QwtPlotCurve::setStyle() and QwtPlotCurve::setSymbol().</dd>
-  <dt>B. Assign or change data.</dt>
-  <dd>Data can be set in two ways:<ul>
-  <li>QwtPlotCurve::setData() is overloaded to initialize the x and y data by
-  copying from different data structures with different kind of copy semantics.
-  <li>QwtPlotCurve::setRawData() only stores the pointers and size information
-  and is provided for backwards compatibility.  This function is less safe (you
-  must not delete the data while they are attached), but has been more
-  efficient, and has been more convenient for dynamically changing data.
-  Use of QwtPlotCurve::setData() in combination with a problem-specific subclass
-  of QwtData is always preferrable.</ul></dd>
-  <dt>C. Draw</dt>
-  <dd>QwtPlotCurve::draw() maps the data into pixel coordinates and paints them.
-  </dd></dl>
-
-  \par Example:
-  see examples/curvdemo
-
-  \sa QwtData, QwtSymbol, QwtScaleMap
-*/
-class QWT_EXPORT QwtPlotCurve: public QwtPlotItem
-{
-public:
-    /*! 
-        Curve styles. 
-        \sa QwtPlotCurve::setStyle
-    */
-    enum CurveStyle
-    {
-        NoCurve,
-        Lines,
-        Sticks,
-        Steps,
-        Dots,
-        Spline,
-        UserCurve = 100
-    };
-
-    /*! 
-        Curve attributes. 
-        \sa QwtPlotCurve::setCurveAttribute, QwtPlotCurve::testCurveAttribute
-    */
-    enum CurveAttribute
-    {
-        Auto = 0,
-        Yfx = 1,
-        Xfy = 2,
-        Parametric = 4,
-        Periodic = 8,
-        Inverted = 16
-    };
-
-    /*! 
-        Paint attributes 
-        \sa QwtPlotCurve::setPaintAttribute, testPaintAttribute
-    */
-    enum PaintAttribute
-    {
-        PaintFiltered = 1,
-        ClipPolygons = 2
-    };
-
-    explicit QwtPlotCurve();
-    explicit QwtPlotCurve(const QwtText &title);
-    explicit QwtPlotCurve(const QString &title);
-    explicit QwtPlotCurve(const QwtPlotCurve &c);
-
-    virtual ~QwtPlotCurve();
-
-    const QwtPlotCurve& operator= (const QwtPlotCurve &c);
-
-    virtual int rtti() const;
-
-    void setPaintAttribute(PaintAttribute, bool on = true);
-    bool testPaintAttribute(PaintAttribute) const;
-
-    void setRawData(const double *x, const double *y, int size);
-    void setData(const double *xData, const double *yData, int size);
-    void setData(const QwtArray<double> &xData, const QwtArray<double> &yData);
-    void setData(const QwtArray<QwtDoublePoint> &data);
-    void setData(const QwtData &data);
-    
-    int closestPoint(const QPoint &pos, double *dist = NULL) const;
-
-    QwtData &data();
-    const QwtData &data() const;
-
-    int dataSize() const;
-    inline double x(int i) const;
-    inline double y(int i) const;
-
-    virtual QwtDoubleRect boundingRect() const;
-
-    //! boundingRect().left()
-    inline double minXValue() const { return boundingRect().left(); }
-    //! boundingRect().right()
-    inline double maxXValue() const { return boundingRect().right(); }
-    //! boundingRect().top()
-    inline double minYValue() const { return boundingRect().top(); }
-    //! boundingRect().bottom()
-    inline double maxYValue() const { return boundingRect().bottom(); }
-
-    void setCurveAttribute(CurveAttribute, bool on = true);
-    bool testCurveAttribute(CurveAttribute) const;
-
-    void setTitle(const QString &title);
-    void setTitle(const QwtText &title);
-    const QwtText &title() const;
-
-    void setPen(const QPen &);
-    const QPen &pen() const;
-
-    void setBrush(const QBrush &);
-    const QBrush &brush() const;
-
-    void setBaseline(double ref);
-    double baseline() const;
-
-    void setStyle(CurveStyle style);
-    CurveStyle style() const;
-
-    void setSymbol(const QwtSymbol &s);
-    const QwtSymbol& symbol() const;
-
-    void setSplineSize(int s);
-    int splineSize() const;
-
-    virtual void draw(QPainter *p, 
-        const QwtScaleMap &xMap, const QwtScaleMap &yMap,
-        const QRect &) const;
-
-    virtual void draw(QPainter *p, 
-        const QwtScaleMap &xMap, const QwtScaleMap &yMap,
-        int from, int to) const;
-
-    void draw(int from, int to) const;
-
-    virtual void updateLegend(QwtLegend *) const;
-
-protected:
-
-    void init(const QwtText &title);
-    void copy(const QwtPlotCurve &c);
-
-    virtual void drawCurve(QPainter *p, int style,
-        const QwtScaleMap &xMap, const QwtScaleMap &yMap,
-        int from, int to) const;
-
-    virtual void drawSymbols(QPainter *p, const QwtSymbol &,
-        const QwtScaleMap &xMap, const QwtScaleMap &yMap,
-        int from, int to) const;
-
-    void drawLines(QPainter *p,
-        const QwtScaleMap &xMap, const QwtScaleMap &yMap,
-        int from, int to) const;
-    void drawSticks(QPainter *p,
-        const QwtScaleMap &xMap, const QwtScaleMap &yMap,
-        int from, int to) const;
-    void drawDots(QPainter *p,
-        const QwtScaleMap &xMap, const QwtScaleMap &yMap,
-        int from, int to) const;
-    void drawSteps(QPainter *p,
-        const QwtScaleMap &xMap, const QwtScaleMap &yMap,
-        int from, int to) const;
-    void drawSpline(QPainter *p,
-        const QwtScaleMap &xMap, const QwtScaleMap &yMap) const;
-
-#if QT_VERSION < 0x040000
-    void fillCurve(QPainter *,
-        const QwtScaleMap &, const QwtScaleMap &,
-        QPointArray &) const;
-    void closePolyline(const QwtScaleMap &, const QwtScaleMap &,
-        QPointArray &) const;
-#else
-    void fillCurve(QPainter *,
-        const QwtScaleMap &, const QwtScaleMap &,
-        QPolygon &) const;
-    void closePolyline(const QwtScaleMap &, const QwtScaleMap &,
-        QPolygon &) const;
-#endif
-
-    int verifyRange(int &i1, int &i2) const;
-
-private:
-    QwtData *d_xy;
-
-    class PrivateData;
-    PrivateData *d_data;
-};
-
-//! \return the the curve data
-inline QwtData &QwtPlotCurve::data()
-{
-    return *d_xy;
-}
-
-//! \return the the curve data
-inline const QwtData &QwtPlotCurve::data() const
-{
-    return *d_xy;
-}
-
-/*!
-    \param i index
-    \return x-value at position i
-*/
-inline double QwtPlotCurve::x(int i) const 
-{ 
-    return d_xy->x(i); 
-}
-
-/*!
-    \param i index
-    \return y-value at position i
-*/
-inline double QwtPlotCurve::y(int i) const 
-{ 
-    return d_xy->y(i); 
-}
-
-#endif
diff --git a/src/qwt/include/qwt_plot_dict.h b/src/qwt/include/qwt_plot_dict.h
deleted file mode 100644
index 9f6e2a3..0000000
--- a/src/qwt/include/qwt_plot_dict.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-// vim: expandtab
-
-#ifndef QWT_PLOT_DICT
-#define QWT_PLOT_DICT
-
-#include "qwt_global.h"
-#include "qwt_plot_item.h"
-
-#if QT_VERSION < 0x040000
-#include <qvaluelist.h>
-typedef QValueListConstIterator<QwtPlotItem *> QwtPlotItemIterator;
-typedef QValueList<QwtPlotItem *> QwtPlotItemList;
-#else
-#include <qlist.h>
-typedef QList<QwtPlotItem *>::ConstIterator QwtPlotItemIterator;
-typedef QList<QwtPlotItem *> QwtPlotItemList;
-#endif
-
-class QWT_EXPORT QwtPlotDict
-{
-public:
-    explicit QwtPlotDict();
-    ~QwtPlotDict();
-
-    void setAutoDelete(bool);
-    bool autoDelete() const;
-
-    const QwtPlotItemList& itemList() const;
-
-    void detachItems(int rtti = QwtPlotItem::Rtti_PlotItem,
-        bool autoDelete = true);
-
-private:
-    friend class QwtPlotItem;
-
-    void attachItem(QwtPlotItem *, bool);
-
-    class PrivateData;
-    PrivateData *d_data;
-};
-
-#endif
diff --git a/src/qwt/include/qwt_plot_grid.h b/src/qwt/include/qwt_plot_grid.h
deleted file mode 100644
index 29e4f1f..0000000
--- a/src/qwt/include/qwt_plot_grid.h
+++ /dev/null
@@ -1,87 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- * 
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-#ifndef QWT_PLOT_GRID_H
-#define QWT_PLOT_GRID_H
-
-#include "qwt_global.h"
-#include "qwt_plot_item.h"
-#include "qwt_scale_div.h"
-
-class QPainter;
-class QPen;
-class QwtScaleMap;
-class QwtScaleDiv;
-
-/*!
-  \brief A class which draws a coordinate grid
-
-  The QwtPlotGrid class can be used to draw a coordinate grid.
-  A coordinate grid consists of major and minor vertical
-  and horizontal gridlines. The locations of the gridlines
-  are determined by the X and Y scale divisions which can
-  be assigned with QwtPlotGrid::setXDiv and QwtPlotGrid::setYDiv()
-  The draw() member draws the grid within a bounding
-  rectangle.
-*/
-
-class QWT_EXPORT QwtPlotGrid: public QwtPlotItem
-{
-public:
-    explicit QwtPlotGrid();
-    virtual ~QwtPlotGrid();
-
-    virtual int rtti() const;
-
-    void enableX(bool tf);
-    bool xEnabled() const;
-
-    void enableY(bool tf);
-    bool yEnabled() const;
-
-    void enableXMin(bool tf);
-    bool xMinEnabled() const;
-
-    void enableYMin(bool tf);
-    bool yMinEnabled() const;
-
-    void setXDiv(const QwtScaleDiv &sx);
-    const QwtScaleDiv &xScaleDiv() const;
-
-    void setYDiv(const QwtScaleDiv &sy);
-    const QwtScaleDiv &yScaleDiv() const;
-
-    void setPen(const QPen &p);
-
-    void setMajPen(const QPen &p);
-    const QPen& majPen() const;
-
-    void setMinPen(const QPen &p);
-    const QPen& minPen() const;
-
-    virtual void draw(QPainter *p, 
-        const QwtScaleMap &xMap, const QwtScaleMap &yMap,
-        const QRect &rect) const;
-
-    virtual void updateScaleDiv(const QwtScaleDiv&,
-        const QwtScaleDiv&);
-
-protected:
-    virtual void gridChanged();
-
-private:
-    void drawLines(QPainter *painter, const QRect &,
-        Qt::Orientation orientation, const QwtScaleMap &, 
-        const QwtTickList &) const;
-
-    class PrivateData;
-    PrivateData *d_data;
-};
-
-#endif
diff --git a/src/qwt/include/qwt_plot_item.h b/src/qwt/include/qwt_plot_item.h
deleted file mode 100644
index 39c28ba..0000000
--- a/src/qwt/include/qwt_plot_item.h
+++ /dev/null
@@ -1,109 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- * 
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-#ifndef QWT_PLOT_ITEM_H
-#define QWT_PLOT_ITEM_H
-
-#include "qwt_global.h"
-#include "qwt_double_rect.h"
-
-class QRect;
-class QPainter;
-class QWidget;
-class QwtPlot;
-class QwtLegend;
-class QwtScaleMap;
-class QwtScaleDiv;
-
-/*!
-  \brief Base class for items on the plot canvas
-*/
-
-class QWT_EXPORT QwtPlotItem
-{
-public:
-    enum RttiValues
-    { 
-        Rtti_PlotItem = 0,
-
-        Rtti_PlotGrid,
-        Rtti_PlotMarker,
-        Rtti_PlotCurve,
-        Rtti_PlotHistogram,
-
-        Rtti_PlotUserItem = 1000
-    };
-
-    enum ItemAttribute
-    {
-        Legend = 1,
-        AutoScale = 2
-    };
-
-#if QT_VERSION >= 0x040000
-    enum RenderHint
-    {
-        RenderAntialiased = 1
-    };
-#endif
-
-    explicit QwtPlotItem();
-    virtual ~QwtPlotItem();
-
-    void attach(QwtPlot *plot);
-    void detach() { attach(NULL); }
-
-    QwtPlot *plot() const;
-    
-    virtual int rtti() const;
-
-    void setItemAttribute(ItemAttribute, bool on = true);
-    bool testItemAttribute(ItemAttribute) const;
-
-#if QT_VERSION >= 0x040000
-    void setRenderHint(RenderHint, bool on = true);
-    bool testRenderHint(RenderHint) const;
-#endif
-
-    double z() const; 
-    void setZ(double z);
-
-    void show();
-    void hide();
-    virtual void setVisible(bool);
-    bool isVisible () const;
-
-    void setAxis(int xAxis, int yAxis);
-
-    void setXAxis(int axis);
-    int xAxis() const;
-
-    void setYAxis(int axis);
-    int yAxis() const;
-
-    virtual void itemChanged();
-
-    virtual void draw(QPainter *p, 
-        const QwtScaleMap &xMap, const QwtScaleMap &yMap,
-        const QRect &rect) const = 0;
-
-    virtual QwtDoubleRect boundingRect() const;
-
-    virtual void updateLegend(QwtLegend *) const;
-    virtual void updateScaleDiv(const QwtScaleDiv&,
-        const QwtScaleDiv&);
-
-    virtual QWidget *legendItem() const;
-
-private:
-    class PrivateData;
-    PrivateData *d_data;
-};
-            
-#endif
diff --git a/src/qwt/include/qwt_plot_layout.h b/src/qwt/include/qwt_plot_layout.h
deleted file mode 100644
index d0bd089..0000000
--- a/src/qwt/include/qwt_plot_layout.h
+++ /dev/null
@@ -1,87 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- * 
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-#ifndef QWT_PLOT_LAYOUT_H
-#define QWT_PLOT_LAYOUT_H
-
-#include "qwt_global.h"
-#include "qwt_plot.h"
-
-/*!
-  \brief Layout class for QwtPlot.
-
-  Organizes the geometry for the different QwtPlot components.
-*/
-
-class QWT_EXPORT QwtPlotLayout
-{
-public:
-    enum Options
-    {
-        AlignScales = 1,
-        IgnoreScrollbars = 2,
-        IgnoreFrames = 4,
-        IgnoreMargin = 8,
-        IgnoreLegend = 16
-    };
-
-    explicit QwtPlotLayout();
-    virtual ~QwtPlotLayout();
-
-    void setMargin(int);
-    int margin() const;
-
-    void setCanvasMargin(int margin, int axis = -1);
-    int canvasMargin(int axis) const;
-
-    void setAlignCanvasToScales(bool);
-    bool alignCanvasToScales() const;
-
-    void setSpacing(int);
-    int spacing() const;
-
-    void setLegendPosition(QwtPlot::LegendPosition pos, double ratio);
-    void setLegendPosition(QwtPlot::LegendPosition pos);
-    QwtPlot::LegendPosition legendPosition() const;
-
-    void setLegendRatio(double ratio);
-    double legendRatio() const;
-
-    virtual QSize minimumSizeHint(const QwtPlot *) const;    
-
-    virtual void activate(const QwtPlot *, 
-        const QRect &rect, int options = 0);
-
-    virtual void invalidate();
-
-    const QRect &titleRect() const;
-    const QRect &legendRect() const;
-    const QRect &scaleRect(int axis) const;
-    const QRect &canvasRect() const;
-
-protected:
-
-    QRect layoutLegend(int options, const QRect &) const;
-    QRect alignLegend(const QRect &canvasRect, 
-        const QRect &legendRect) const;
-
-    void expandLineBreaks(int options, const QRect &rect, 
-        int &dimTitle, int dimAxes[QwtPlot::axisCnt]) const;
-
-    void alignScales(int options, QRect &canvasRect,
-        QRect scaleRect[QwtPlot::axisCnt]) const;
-
-private:
-    class LayoutData;
-    class PrivateData;
-
-    PrivateData *d_data;
-};
-
-#endif
diff --git a/src/qwt/include/qwt_plot_marker.h b/src/qwt/include/qwt_plot_marker.h
deleted file mode 100644
index 249079c..0000000
--- a/src/qwt/include/qwt_plot_marker.h
+++ /dev/null
@@ -1,103 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- * 
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-// vim: expandtab
-
-#ifndef QWT_PLOT_MARKER_H
-#define QWT_PLOT_MARKER_H
-
-#include <qpen.h>
-#include <qfont.h>
-#include <qstring.h>
-#include <qbrush.h>
-#include "qwt_global.h"
-#include "qwt_plot_item.h"
-
-class QRect;
-class QwtText;
-class QwtSymbol;
-
-/*!
-  \brief A class for drawing markers
-
-  A marker can be a horizontal line, a vertical line,
-  a symbol, a label or any combination of them, which can
-  be drawn around a center point inside a bounding rectangle.
-
-  The QwtPlotMarker::setSymbol() member assigns a symbol to the marker.
-  The symbol is drawn at the specified point.
-
-  With QwtPlotMarker::setLabel(), a label can be assigned to the marker.
-  The QwtPlotMarker::setLabelAlignment() member specifies where the label is
-  drawn. All the Align*-constants in Qt::AlignmentFlags (see Qt documentation)
-  are valid. The interpretation of the alignment depends on the marker's
-  line style. The alignment refers to the center point of
-  the marker, which means, for example, that the label would be printed
-  left above the center point if the alignment was set to AlignLeft|AlignTop.
-*/
-
-class QWT_EXPORT QwtPlotMarker: public QwtPlotItem
-{
-public:
-
-    /*!
-        Line styles.
-        \sa QwtPlotMarker::setLineStyle, QwtPlotMarker::lineStyle
-    */
-    enum LineStyle {NoLine, HLine, VLine, Cross};
-   
-    explicit QwtPlotMarker();
-    virtual ~QwtPlotMarker();
-
-    QwtPlotMarker(const QwtPlotMarker&);
-    QwtPlotMarker &operator=(const QwtPlotMarker&);
-    
-    virtual int rtti() const;
-
-    double xValue() const;
-    double yValue() const;
-    QwtDoublePoint value() const;
-
-    void setXValue(double);
-    void setYValue(double);
-    void setValue(double, double);
-    void setValue(const QwtDoublePoint &);
-
-    void setLineStyle(LineStyle st);
-    LineStyle lineStyle() const;
-
-    void setLinePen(const QPen &p);
-    const QPen &linePen() const;
-
-    void setSymbol(const QwtSymbol &s);
-    const QwtSymbol &symbol() const;
-
-    void setLabel(const QwtText&);
-    QwtText label() const;
-
-#if QT_VERSION < 0x040000
-    void setLabelAlignment(int align);
-    int labelAlignment() const;
-#else
-    void setLabelAlignment(Qt::Alignment);
-    Qt::Alignment labelAlignment() const;
-#endif
-
-    virtual void draw(QPainter *p, 
-        const QwtScaleMap &xMap, const QwtScaleMap &yMap,
-        const QRect &) const;
-    
-    virtual QwtDoubleRect boundingRect() const;
-
-private:
-    class PrivateData;
-    PrivateData *d_data;
-};
-
-#endif
diff --git a/src/qwt/include/qwt_plot_picker.h b/src/qwt/include/qwt_plot_picker.h
deleted file mode 100644
index d601b79..0000000
--- a/src/qwt/include/qwt_plot_picker.h
+++ /dev/null
@@ -1,122 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- * 
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-// vim: expandtab
-
-#ifndef QWT_PLOT_PICKER_H
-#define QWT_PLOT_PICKER_H
-
-#include "qwt_double_rect.h"
-#include "qwt_plot_canvas.h"
-#include "qwt_picker.h"
-
-class QwtPlot;
-
-/*!
-  \brief QwtPlotPicker provides selections on a plot canvas
-
-  QwtPlotPicker is a QwtPicker tailored for selections on
-  a plot canvas. It is set to a x-Axis and y-Axis and
-  translates all pixel coordinates into this coodinate system.
-
-  \warning Calling QwtPlot::setAxisScale() while QwtPlot::autoReplot() is false
-           leaves the axis in an 'intermediate' state.
-           In this case, to prevent buggy behaviour, your must call
-       QwtPlot::replot() before calling QwtPlotPicker::scaleRect(),
-       QwtPlotZoomer::scaleRect(), QwtPlotPicker::QwtPlotPicker() or
-       QwtPlotZoomer::QwtPlotZoomer().
-           This quirk will be removed in a future release.
-*/
-
-class QWT_EXPORT QwtPlotPicker: public QwtPicker
-{
-    Q_OBJECT
-
-public:
-    explicit QwtPlotPicker(QwtPlotCanvas *);
-
-    explicit QwtPlotPicker(int xAxis, int yAxis,
-        QwtPlotCanvas *);
-
-    explicit QwtPlotPicker(int xAxis, int yAxis, int selectionFlags, 
-        RubberBand rubberBand, DisplayMode trackerMode, 
-        QwtPlotCanvas *);
-
-    virtual void setAxis(int xAxis, int yAxis);
-
-    int xAxis() const;
-    int yAxis() const;
-
-    QwtPlot *plot();
-    const QwtPlot *plot() const;
-    
-    QwtPlotCanvas *canvas();
-    const QwtPlotCanvas *canvas() const;
-
-signals:
-
-    /*!
-      A signal emitted in case of selectionFlags() & PointSelection.
-      \param pos Selected point
-    */
-    void selected(const QwtDoublePoint &pos);
-
-    /*!
-      A signal emitted in case of selectionFlags() & RectSelection.
-      \param rect Selected rectangle
-    */
-    void selected(const QwtDoubleRect &rect);
-
-    /*!
-      A signal emitting the selected points,
-      at the end of a selection.
-
-      \param pa Selected points
-    */
-    void selected(const QwtArray<QwtDoublePoint> &pa);
-
-    /*!
-      A signal emitted when a point has been appended to the selection
-
-      \param pos Position of the appended point.
-      \sa append(). moved()
-    */
-    void appended(const QwtDoublePoint &pos);
-
-    /*!
-      A signal emitted whenever the last appended point of the
-      selection has been moved.
-
-      \param pos Position of the moved last point of the selection.
-      \sa move(), appended() 
-    */
-    void moved(const QwtDoublePoint &pos);
-
-protected:
-    QwtDoubleRect scaleRect() const;
-
-    QwtDoubleRect invTransform(const QRect &) const;
-    QRect transform(const QwtDoubleRect &) const;
-
-    QwtDoublePoint invTransform(const QPoint &) const;
-    QPoint transform(const QwtDoublePoint &) const;
-
-    virtual QwtText trackerText(const QPoint &) const;
-    virtual QwtText trackerText(const QwtDoublePoint &) const;
-
-    virtual void move(const QPoint &);
-    virtual void append(const QPoint &);
-    virtual bool end(bool ok = true);
-
-private:
-    int d_xAxis;
-    int d_yAxis;
-};
-            
-#endif
diff --git a/src/qwt/include/qwt_plot_printfilter.h b/src/qwt/include/qwt_plot_printfilter.h
deleted file mode 100644
index 39c26b9..0000000
--- a/src/qwt/include/qwt_plot_printfilter.h
+++ /dev/null
@@ -1,79 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- * 
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-#ifndef QWT_PLOT_PRINTFILTER_H
-#define QWT_PLOT_PRINTFILTER_H
-
-#include <qcolor.h>
-#include <qfont.h>
-#include "qwt_global.h"
-
-class QwtPlot;
-class QwtPlotItem;
-
-/*!
-  \brief A base class for plot print filters
-
-  QwtPlotPrintFilter can be used to customize QwtPlot::print.
-*/
-
-class QWT_EXPORT QwtPlotPrintFilter
-{
-public:
-    //! Print options
-    enum Options 
-    {
-        PrintMargin = 1,
-        PrintTitle = 2,
-        PrintLegend = 4,
-        PrintGrid = 8,
-        PrintCanvasBackground = 16,
-        PrintWidgetBackground = 32,
-
-        PrintAll = ~PrintWidgetBackground
-    }; 
-
-    //! Print items
-    enum Item
-    {
-        Title,
-        Legend,
-        Curve,
-        CurveSymbol,
-        Marker,
-        MarkerSymbol,
-        MajorGrid,
-        MinorGrid,
-        CanvasBackground,
-        AxisScale,
-        AxisTitle,
-        WidgetBackground
-    };
-
-    explicit QwtPlotPrintFilter();
-    virtual ~QwtPlotPrintFilter(); 
-
-    virtual QColor color(const QColor &, Item item) const;
-    virtual QFont font(const QFont &, Item item) const;
-
-    void setOptions(int options);
-    int options() const;
-
-    virtual void apply(QwtPlot *) const;
-    virtual void reset(QwtPlot *) const;
-
-    virtual void apply(QwtPlotItem *) const;
-    virtual void reset(QwtPlotItem *) const;
-
-private:
-    class PrivateData;
-    PrivateData *d_data;
-};
-
-#endif
diff --git a/src/qwt/include/qwt_plot_zoomer.h b/src/qwt/include/qwt_plot_zoomer.h
deleted file mode 100644
index 10745f5..0000000
--- a/src/qwt/include/qwt_plot_zoomer.h
+++ /dev/null
@@ -1,127 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- * 
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-// vim: expandtab
-
-#ifndef QWT_PLOT_ZOOMER_H
-#define QWT_PLOT_ZOOMER_H
-
-#include <qglobal.h>
-#if QT_VERSION < 0x040000
-#include <qvaluestack.h>
-#else
-#include <qstack.h>
-#endif
-
-#include "qwt_double_rect.h"
-#include "qwt_plot_picker.h"
-
-/*!
-  \brief QwtPlotZoomer provides stacked zooming for a plot widget
-
-  QwtPlotZoomer offers rubberband selections on the plot canvas, 
-  translating the selected rectangles into plot coordinates and
-  adjusting the axes to them. Zooming can repeated as often as 
-  possible, limited only by maxStackDepth() or minZoomSize(). 
-  Each rectangle is pushed on a stack. 
-
-  Zoom rectangles can be selected depending on selectionFlags() using the
-  mouse or keyboard (QwtEventPattern, QwtPickerMachine).
-  QwtEventPattern::MouseSelect3/QwtEventPattern::KeyUndo, 
-  or QwtEventPattern::MouseSelect6/QwtEventPattern::KeyRedo 
-  walk up and down the zoom stack.
-  QwtEventPattern::MouseSelect2 or QwtEventPattern::KeyHome unzoom to
-  the initial size. 
-  
-  QwtPlotZoomer is tailored for plots with one x and y axis, but it is
-  allowed to attach a second QwtPlotZoomer for the other axes.
-
-  \note The realtime example includes an derived zoomer class that adds 
-        scrollbars to the plot canvas.
-
-  \warning Calling QwtPlot::setAxisScale() while QwtPlot::autoReplot() is false
-           leaves the axis in an 'intermediate' state.
-           In this case, to prevent buggy behaviour, your must call
-       QwtPlot::replot() before calling QwtPlotPicker::scaleRect(),
-       QwtPlotZoomer::scaleRect(), QwtPlotPicker::QwtPlotPicker() or
-       QwtPlotZoomer::QwtPlotZoomer().
-           This quirk will be removed in a future release.
-*/
-
-class QWT_EXPORT QwtPlotZoomer: public QwtPlotPicker
-{
-    Q_OBJECT
-public:
-    explicit QwtPlotZoomer(QwtPlotCanvas *);
-    explicit QwtPlotZoomer(int xAxis, int yAxis, QwtPlotCanvas *);
-    explicit QwtPlotZoomer(int xAxis, int yAxis, int selectionFlags,
-        DisplayMode trackerMode, QwtPlotCanvas *);
-
-    virtual ~QwtPlotZoomer();
-
-    virtual void setZoomBase();
-    virtual void setZoomBase(const QwtDoubleRect &);
-
-    QwtDoubleRect zoomBase() const;
-    QwtDoubleRect zoomRect() const;
-
-    virtual void setAxis(int xAxis, int yAxis);
-
-    void setMaxStackDepth(int);
-    int maxStackDepth() const;
-
-#if QT_VERSION < 0x040000
-    const QValueStack<QwtDoubleRect> &zoomStack() const;
-#else
-    const QStack<QwtDoubleRect> &zoomStack() const;
-#endif
-    uint zoomRectIndex() const;
-
-    virtual void setSelectionFlags(int);
-
-public slots:
-    void moveBy(double x, double y);
-    virtual void move(double x, double y);
-
-    virtual void zoom(const QwtDoubleRect &);
-    virtual void zoom(int up);
-
-signals:
-    /*!
-      A signal emitting the zoomRect(), when the plot has been 
-      zoomed in or out.
-
-      \param rect Current zoom rectangle.
-      \warning zoomed() is only emitted after selections in end(), but never
-               in zoom().
-    */
-
-    void zoomed(const QwtDoubleRect &rect);
-
-protected:
-    virtual void rescale();
-
-    virtual QwtDoubleSize minZoomSize() const;
-
-    virtual void widgetMouseReleaseEvent(QMouseEvent *);
-    virtual void widgetKeyPressEvent(QKeyEvent *);
-
-    virtual void begin();
-    virtual bool end(bool ok = true);
-    virtual bool accept(SelectedPoints &) const;
-
-private:
-    void init(int selectionFlags = RectSelection & ClickSelection, 
-        DisplayMode trackerMode = ActiveOnly);
-
-    class PrivateData;
-    PrivateData *d_data;
-};
-            
-#endif
diff --git a/src/qwt/include/qwt_rect.h b/src/qwt/include/qwt_rect.h
deleted file mode 100644
index dd80cfa..0000000
--- a/src/qwt/include/qwt_rect.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- * 
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-#ifndef QWT_RECT_H
-#define QWT_RECT_H
-
-#include <qrect.h>
-#if QT_VERSION < 0x040000
-#include <qpointarray.h>
-#else
-#include <qpolygon.h>
-#endif
-#include "qwt_global.h"
-
-/*!
-  \brief Some extensions for QRect
-*/
-
-class QWT_EXPORT QwtRect : public QRect
-{
-public:
-    QwtRect();
-    QwtRect(const QRect &r);
-
-#if QT_VERSION < 0x040000
-    QPointArray clip(const QPointArray &) const;
-#else
-    QPolygon clip(const QPolygon &) const;
-#endif
-
-private:
-    enum Edge { Left, Top, Right, Bottom, NEdges };
-
-#if QT_VERSION < 0x040000
-    void clipEdge(Edge, const QPointArray &, QPointArray &) const;
-#else
-    void clipEdge(Edge, const QPolygon &, QPolygon &) const;
-#endif
-    bool insideEdge(const QPoint &, Edge edge) const;
-    QPoint intersectEdge(const QPoint &p1, 
-        const QPoint &p2, Edge edge) const;
-};
-
-#endif
diff --git a/src/qwt/include/qwt_round_scale_draw.h b/src/qwt/include/qwt_round_scale_draw.h
deleted file mode 100644
index ea7d562..0000000
--- a/src/qwt/include/qwt_round_scale_draw.h
+++ /dev/null
@@ -1,72 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- * 
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-#ifndef QWT_ROUND_SCALE_DRAW_H
-#define QWT_ROUND_SCALE_DRAW_H
-
-#include <qpoint.h>
-#include "qwt_global.h"
-#include "qwt_abstract_scale_draw.h"
-
-class QPen;
-
-/*!
-  \brief A class for drawing round scales
-
-  QwtRoundScaleDraw can be used to draw round scales.
-  The circle segment can be adjusted by QwtRoundScaleDraw::setAngleRange().
-  The geometry of the scale can be specified with 
-  QwtRoundScaleDraw::moveCenter() and QwtRoundScaleDraw::setRadius().
-
-  After a scale division has been specified as a QwtScaleDiv object
-  using QwtAbstractScaleDraw::setScaleDiv(const QwtScaleDiv &s),
-  the scale can be drawn with the QwtAbstractScaleDraw::draw() member.
-*/
-
-class QWT_EXPORT QwtRoundScaleDraw: public QwtAbstractScaleDraw
-{
-public:
-    QwtRoundScaleDraw();
-    QwtRoundScaleDraw(const QwtRoundScaleDraw &);
-
-    virtual ~QwtRoundScaleDraw();
-
-    QwtRoundScaleDraw &operator=(const QwtRoundScaleDraw &other);
-
-    void setRadius(int radius);
-    int radius() const;
-
-    void moveCenter(int x, int y);
-    void moveCenter(const QPoint &);
-    QPoint center() const;
-
-    void setAngleRange(double angle1, double angle2);
-
-    virtual int extent(const QPen &, const QFont &) const;
-
-protected:
-    QPoint labelCenter( const QFont &, double arc, const QwtText &) const;
-    QSize labelSize(const QFont &, double val) const;
-    QRect labelRect(const QFont &, double val) const;
-
-    virtual void drawTick(QPainter *p, double val, int len) const;
-    virtual void drawBackbone(QPainter *p) const;
-    virtual void drawLabel(QPainter *p, double val) const;
-
-private:
-    class PrivateData;
-    PrivateData *d_data;
-};
-
-inline void QwtRoundScaleDraw::moveCenter(int x, int y)
-{
-    moveCenter(QPoint(x, y));
-}
-
-#endif
diff --git a/src/qwt/include/qwt_scale_div.h b/src/qwt/include/qwt_scale_div.h
deleted file mode 100644
index b0b7ef8..0000000
--- a/src/qwt/include/qwt_scale_div.h
+++ /dev/null
@@ -1,132 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- * 
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-#ifndef QWT_SCALE_DIV_H
-#define QWT_SCALE_DIV_H
-
-#include "qwt_global.h"
-
-class QwtDoubleInterval;
-
-#if QT_VERSION < 0x040000
-
-#include <qvaluelist.h>
-
-#if defined(QWT_TEMPLATEDLL)
-// MOC_SKIP_BEGIN
-template class QWT_EXPORT QValueList<double>;
-// MOC_SKIP_END
-#endif
-
-typedef QValueList<double> QwtTickList;
-
-#else
-
-#include <qlist.h>
-
-#if defined(QWT_TEMPLATEDLL)
-
-#if defined Q_CC_MSVC  // Q_CC_MSVC_NET
-// Some definitions, needed to avoid a MSVC crash
-#include <qset.h>
-#include <qvector.h>
-inline uint qHash(double key) { return uint(key); }
-#endif
-
-// MOC_SKIP_BEGIN
-template class QWT_EXPORT QList<double>;
-// MOC_SKIP_END
-#endif
-
-typedef QList<double> QwtTickList;
-
-#endif
-
-
-/*!
-  \brief A class representing a scale division
-
-  A scale division consists of its limits and 3 list
-  of tick values qualified as major, medium and minor ticks.
-
-  In most cases scale divisions are calculated by a QwtScaleEngine.
-
-  \sa QwtScaleEngine::subDivideInto, QwtScaleEngine::subDivide
-*/
-
-class QWT_EXPORT QwtScaleDiv
-{
-public:
-    enum TickType
-    {
-        NoTick = -1,
-
-        MinorTick,
-        MediumTick,
-        MajorTick,
-
-        NTickTypes
-    };
-
-    explicit QwtScaleDiv();
-    explicit QwtScaleDiv(const QwtDoubleInterval &,
-        QwtTickList[NTickTypes]);
-    explicit QwtScaleDiv(double lBound, double rBound,
-        QwtTickList[NTickTypes]);
-
-    int operator==(const QwtScaleDiv &s) const;
-    int operator!=(const QwtScaleDiv &s) const;
-    
-    inline double lBound() const;
-    inline double hBound() const;
-    inline double range() const;
-
-    bool contains(double v) const;
-
-    const QwtTickList &ticks(int type) const;
-
-    void invalidate();
-    bool isValid() const;
- 
-    void invert();
-
-private:
-    double d_lBound;
-    double d_hBound;
-    QwtTickList d_ticks[NTickTypes];
-
-    bool d_isValid;
-};
-
-/*! 
-  \return left bound
-  \sa QwtScaleDiv::hBound
-*/
-inline double QwtScaleDiv::lBound() const 
-{ 
-    return d_lBound;
-}
-
-/*! 
-  \return right bound
-  \sa QwtScaleDiv::lBound
-*/
-inline double QwtScaleDiv::hBound() const 
-{ 
-    return d_hBound;
-}
-
-/*! 
-  \return hBound() - lBound()
-*/
-inline double QwtScaleDiv::range() const 
-{ 
-    return d_hBound - d_lBound;
-}
-#endif
diff --git a/src/qwt/include/qwt_scale_draw.h b/src/qwt/include/qwt_scale_draw.h
deleted file mode 100644
index 124a379..0000000
--- a/src/qwt/include/qwt_scale_draw.h
+++ /dev/null
@@ -1,107 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- * 
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-#ifndef QWT_SCALE_DRAW_H
-#define QWT_SCALE_DRAW_H
-
-#include <qpoint.h>
-#include "qwt_global.h"
-#include "qwt_abstract_scale_draw.h"
-
-/*!
-  \brief A class for drawing scales
-
-  QwtScaleDraw can be used to draw linear or logarithmic scales.
-  A scale has a position, an alignment and a length, which can be specified .
-  The labels can be rotated and aligned
-  to the ticks using setLabelRotation() and setLabelAlignment().
-
-  After a scale division has been specified as a QwtScaleDiv object
-  using QwtAbstractScaleDraw::setScaleDiv(const QwtScaleDiv &s),
-  the scale can be drawn with the QwtAbstractScaleDraw::draw() member.
-*/
-
-class QWT_EXPORT QwtScaleDraw: public QwtAbstractScaleDraw
-{
-public:
-    /*! 
-        Alignment of the scale draw
-        \sa setAlignment(), alignment()
-     */
-    enum Alignment { BottomScale, TopScale, LeftScale, RightScale };
-
-    QwtScaleDraw();
-    QwtScaleDraw(const QwtScaleDraw &);
-
-    virtual ~QwtScaleDraw();
-
-    QwtScaleDraw& operator=(const QwtScaleDraw &other);
-
-    void getBorderDistHint(const QFont &, int &start, int &end) const;
-    int minLabelDist(const QFont &) const;
-
-    int minLength(const QPen &, const QFont &) const;
-    virtual int extent(const QPen &, const QFont &) const;
-
-    void move(int x, int y);
-    void move(const QPoint &);
-    void setLength(int length);
-
-    Alignment alignment() const;
-    void setAlignment(Alignment);
-
-    Qt::Orientation orientation() const;
-
-    QPoint pos() const;
-    int length() const;
-
-#if QT_VERSION < 0x040000
-    void setLabelAlignment(int);
-    int labelAlignment() const;
-#else
-    void setLabelAlignment(Qt::Alignment);
-    Qt::Alignment labelAlignment() const;
-#endif
-
-    void setLabelRotation(double rotation);
-    double labelRotation() const;
-
-    int maxLabelHeight(const QFont &) const;
-    int maxLabelWidth(const QFont &) const;
-
-    QPoint labelPosition(double val) const;
-
-    QRect labelRect(const QFont &, double val) const;
-    QSize labelSize(const QFont &, double val) const;
-
-protected:
-
-#if QT_VERSION < 0x040000
-    QWMatrix labelMatrix(const QPoint &, const QSize &) const;
-#else   
-    QMatrix labelMatrix(const QPoint &, const QSize &) const;
-#endif  
-
-    virtual void drawTick(QPainter *p, double val, int len) const;
-    virtual void drawBackbone(QPainter *p) const;
-    virtual void drawLabel(QPainter *p, double val) const;
-
-private:
-    void updateMap();
-
-    class PrivateData;
-    PrivateData *d_data;
-};
-
-inline void QwtScaleDraw::move(int x, int y)
-{
-    move(QPoint(x, y));
-}
-
-#endif
diff --git a/src/qwt/include/qwt_scale_engine.h b/src/qwt/include/qwt_scale_engine.h
deleted file mode 100644
index 4b4bce6..0000000
--- a/src/qwt/include/qwt_scale_engine.h
+++ /dev/null
@@ -1,180 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- * 
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-#ifndef QWT_SCALE_ENGINE_H
-#define QWT_SCALE_ENGINE_H
-
-#include "qwt_global.h"
-#include "qwt_scale_div.h"
-#include "qwt_double_interval.h"
-
-class QwtScaleTransformation;
-
-/*!
-  Arithmetic including a tolerance
-*/
-class QWT_EXPORT QwtScaleArithmetic
-{
-public:
-    static int compareEps(
-        double value1, double value2, double intervalSize);
-
-    static double ceilEps(double value, double intervalSize);
-    static double floorEps(double value, double intervalSize);
-
-    static double divideEps(double interval, double steps);
-
-    static double ceil125(double x);
-    static double floor125(double x);
-};
-
-/*!
-  \brief Base class for scale engines.
-
-  A scale engine trys to find "reasonable" ranges and step sizes
-  for scales. 
-
-  The layout of the scale can be varied with setOptions().
-
-  Qwt offers implementations for logarithmic (log10) 
-  and linear scales. Contributions for other types of scale engines 
-  (date/time, log2 ... ) are welcome.
-*/
-
-class QWT_EXPORT QwtScaleEngine
-{
-public:
-    //! see QwtScaleEngine::setOption, testOption
-    enum Attribute
-    {
-        NoAttribute = 0,
-        IncludeReference = 1, 
-        Symmetric = 2, 
-        Floating = 4,
-        Inverted = 8 
-    };
-
-    explicit QwtScaleEngine();
-    virtual ~QwtScaleEngine();
-
-    void setAttribute(Attribute, bool on = true);
-    bool testAttribute(Attribute) const;
-
-    void setAttributes(int);
-    int attributes() const;
-
-    void setReference(double reference);
-    double reference() const;
-
-    void setMargins(double m1, double m2);
-    double loMargin() const;
-    double hiMargin() const;
-
-    virtual void autoScale(int maxSteps, 
-        double &x1, double &x2, double &stepSize) const = 0;
-
-    virtual QwtScaleDiv divideScale(double x1, double x2,
-        int numMajorSteps, int numMinorSteps, 
-        double stepSize = 0.0) const = 0;
-
-    virtual QwtScaleTransformation transformation() const = 0;
-
-protected:
-    bool contains(const QwtDoubleInterval &, double val) const;
-    QwtTickList strip(const QwtTickList&, const QwtDoubleInterval &) const;
-    double divideInterval(double interval, int numSteps) const;
-
-    QwtDoubleInterval buildInterval(double v) const;
-
-private:
-    class PrivateData;
-    PrivateData *d_data;
-};
-
-/*!
-  \brief A scale engine for linear scales
-
-  The step size will fit into the pattern 
-  \f$\left\{ 1,2,5\right\} \cdot 10^{n}\f$, where n is an integer.
-*/
-
-class QWT_EXPORT QwtLinearScaleEngine: public QwtScaleEngine
-{
-public:
-    virtual void autoScale(int maxSteps, 
-        double &x1, double &x2, double &stepSize) const;
-
-    virtual QwtScaleDiv divideScale(double x1, double x2,
-        int numMajorSteps, int numMinorSteps,
-        double stepSize = 0.0) const;
-
-    virtual QwtScaleTransformation transformation() const;
-
-protected:
-    QwtDoubleInterval align(const QwtDoubleInterval&,
-        double stepSize) const;
-
-private:
-    void buildTicks(
-        const QwtDoubleInterval &, double stepSize, int maxMinSteps,
-        QwtTickList ticks[QwtScaleDiv::NTickTypes]) const;
-
-    void buildMinorTicks(
-        const QwtTickList& majorTicks,
-        int maxMinMark, double step,
-        QwtTickList &, QwtTickList &) const;
-
-    QwtTickList buildMajorTicks(
-        const QwtDoubleInterval &interval, double stepSize) const;
-};
-
-/*!
-  \brief A scale engine for logarithmic (base 10) scales
-
-  The step size is measured in *decades*
-  and the major step size will be adjusted to fit the pattern
-  \f$\left\{ 1,2,3,5\right\} \cdot 10^{n}\f$, where n is a natural number
-  including zero.
-
-  \warning the step size as well as the margins are measured in *decades*.
-*/
-
-class QWT_EXPORT QwtLog10ScaleEngine: public QwtScaleEngine
-{
-public:
-    virtual void autoScale(int maxSteps, 
-        double &x1, double &x2, double &stepSize) const;
-
-    virtual QwtScaleDiv divideScale(double x1, double x2,
-        int numMajorSteps, int numMinorSteps,
-        double stepSize = 0.0) const;
-
-    virtual QwtScaleTransformation transformation() const;
-
-protected:
-    QwtDoubleInterval log10(const QwtDoubleInterval&) const;
-    QwtDoubleInterval pow10(const QwtDoubleInterval&) const;
-
-private:
-    QwtDoubleInterval align(const QwtDoubleInterval&,
-        double stepSize) const;
-
-    void buildTicks(
-        const QwtDoubleInterval &, double stepSize, int maxMinSteps,
-        QwtTickList ticks[QwtScaleDiv::NTickTypes]) const;
-
-    QwtTickList buildMinorTicks(
-        const QwtTickList& majorTicks,
-        int maxMinMark, double step) const;
-
-    QwtTickList buildMajorTicks(
-        const QwtDoubleInterval &interval, double stepSize) const;
-};
-
-#endif
diff --git a/src/qwt/include/qwt_scale_map.h b/src/qwt/include/qwt_scale_map.h
deleted file mode 100644
index 910dcd9..0000000
--- a/src/qwt/include/qwt_scale_map.h
+++ /dev/null
@@ -1,167 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- * 
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-#ifndef QWT_SCALE_MAP_H
-#define QWT_SCALE_MAP_H
-
-#include "qwt_global.h"
-#include "qwt_math.h"
-
-/*!
-   Operations for linear or logarithmic (base 10) transformations
-*/
-class QWT_EXPORT QwtScaleTransformation
-{
-public:
-    QwtScaleTransformation();
-    QwtScaleTransformation(
-        double (*xForm)(double x, double s1, double s2, 
-            double p1, double p2, void *),
-        double (*invXForm)(double x, double p1, double p2, 
-            double s1, double s2, void *)
-    );
-
-    static double linearXForm(double x, double s1, double s2,
-        double p1, double p2, void *);
-
-    static double log10XForm(double x, double s1, double s2,
-        double p1, double p2, void *);
-    static double log10InvXForm(double x, double p1, double p2,
-        double s1, double s2, void *);
-
-    double (*xForm)(double x, double s1, double s2, 
-        double p1, double p2, void *);
-    double (*invXForm)(double y, double p1, double p2, 
-        double s1, double s2, void *);
-};
-
-/*!
-   \brief A scale map
-
-   QwtScaleMap offers transformations from a scale 
-   into a paint interval and vice versa.
-*/
-class QWT_EXPORT QwtScaleMap
-{
-public:
-    QwtScaleMap();
-    QwtScaleMap(int i1, int i2, double d1, double d2);
-    ~QwtScaleMap();
-
-    void setTransformation(bool logarithmic);
-    void setTransformation(const QwtScaleTransformation& );
-    const QwtScaleTransformation &transformation() const;
-
-    void setPaintInterval(int p1, int p2);
-    void setPaintXInterval(double p1, double p2);
-    void setScaleInterval(double s1, double s2);
-
-    void setTransformationData(void *);
-    void *transformationData() const;
-
-    int transform(double x) const;
-    double invTransform(double i) const;
-
-    double xTransform(double x) const;
-
-    inline double p1() const;
-    inline double p2() const;
-
-    inline double s1() const;
-    inline double s2() const;
-
-    QT_STATIC_CONST double LogMin;
-    QT_STATIC_CONST double LogMax;
-
-private:
-    void newFactor();   
-
-    double d_s1, d_s2;     // scale interval boundaries
-    double d_p1, d_p2;     // paint device interval boundaries
-
-    double d_cnv;       // conversion factor
-    void *d_transformationData;  // data, passed to the transformations
-
-    QwtScaleTransformation d_transformation;
-};
-
-/*!
-    \return First border of the scale interval
-*/
-inline double QwtScaleMap::s1() const 
-{
-    return d_s1;
-}
-
-/*!
-    \return Second border of the scale interval
-*/
-inline double QwtScaleMap::s2() const 
-{
-    return d_s2;
-}
-
-/*!
-    \return First border of the paint interval
-*/
-inline double QwtScaleMap::p1() const 
-{
-    return d_p1;
-}
-
-/*!
-    \return Second border of the paint interval
-*/
-inline double QwtScaleMap::p2() const 
-{
-    return d_p2;
-}
-
-/*!
-  Transform a point related to the scale interval into an point 
-  related to the interval of the paint device
-*/
-inline double QwtScaleMap::xTransform(double x) const
-{
-    // try to inline code from QwtScaleTransformation::linearXForm,
-    // QwtScaleTransformation::logXForm. 
-
-    if ( d_transformation.xForm == QwtScaleTransformation::linearXForm )
-        return d_p1 + (x - d_s1) * d_cnv;
-
-    if ( d_transformation.xForm == QwtScaleTransformation::log10XForm )
-        return d_p1 + log(x / d_s1) * d_cnv;
-
-    return (*d_transformation.xForm)(x, d_s1, d_s2, 
-        d_p1, d_p2, d_transformationData );
-}
-
-/*!
-  \brief Transform an paint device value into a value in the
-         interval of the scale.
-*/
-inline double QwtScaleMap::invTransform(double y) const
-{
-    return (*d_transformation.invXForm)(y, d_p1, d_p2, 
-        d_s1, d_s2, d_transformationData);
-}
-
-/*!
-  Transform a point related to the scale interval into an point 
-  related to the interval of the paint device and round it to
-  an integer. (In Qt <= 3.x paint devices are integer based. )
-
-  \sa QwtScaleMap::xTransform
-*/
-inline int QwtScaleMap::transform(double x) const
-{
-    return qRound(xTransform(x));
-}
-
-#endif
diff --git a/src/qwt/include/qwt_scale_widget.h b/src/qwt/include/qwt_scale_widget.h
deleted file mode 100644
index cddefe5..0000000
--- a/src/qwt/include/qwt_scale_widget.h
+++ /dev/null
@@ -1,105 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-#ifndef QWT_SCALE_WIDGET_H
-#define QWT_SCALE_WIDGET_H
-
-#include <qwidget.h>
-#include <qfont.h>
-#include <qcolor.h>
-#include <qstring.h>
-
-#include "qwt_global.h"
-#include "qwt_text.h"
-#include "qwt_scale_draw.h"
-
-class QPainter;
-class QwtScaleTransformation;
-class QwtScaleDiv;
-
-/*!
-  \brief A Widget which contains a scale
-
-  This Widget can be used to decorate composite widgets with
-  a scale.
-*/
-
-class QWT_EXPORT QwtScaleWidget : public QWidget
-{
-    Q_OBJECT 
-
-public:
-    explicit QwtScaleWidget(QWidget *parent = NULL);
-    explicit QwtScaleWidget(QwtScaleDraw::Alignment, QWidget *parent = NULL);
-    virtual ~QwtScaleWidget();
-
-    void setTitle(const QString &title);
-    void setTitle(const QwtText &title);
-    QwtText title() const;
-
-    void setBorderDist(int start, int end);
-    int startBorderDist() const;
-    int endBorderDist() const;
-
-    void getBorderDistHint(int &start, int &end) const;
-
-    void getMinBorderDist(int &start, int &end) const;
-    void setMinBorderDist(int start, int end);
-
-    void setBaselineDist(int bd);
-    int baseLineDist() const;
-
-    void setTitleDist(int td);
-    int titleDist() const;
-
-    void setScaleDiv(const QwtScaleTransformation&, const QwtScaleDiv &sd);
-    void setScaleDraw(QwtScaleDraw *);
-    const QwtScaleDraw *scaleDraw() const;
-    QwtScaleDraw *scaleDraw();
-
-#if QT_VERSION < 0x040000
-    void setLabelAlignment(int);
-#else
-    void setLabelAlignment(Qt::Alignment);
-#endif
-    void setLabelRotation(double rotation);
-
-    virtual QSize sizeHint() const;
-    virtual QSize minimumSizeHint() const;
-
-    int titleHeightForWidth(int width) const;
-    int dimForLength(int length, const QFont &scaleFont) const;
-
-    void drawTitle(QPainter *painter, QwtScaleDraw::Alignment,
-        const QRect &rect) const;
-        
-    void setAlignment(QwtScaleDraw::Alignment);
-    QwtScaleDraw::Alignment alignment() const;
-
-protected:
-    virtual void paintEvent(QPaintEvent *e);
-    virtual void resizeEvent(QResizeEvent *e);
-
-#if QT_VERSION < 0x040000
-    virtual void fontChange(const QFont &oldfont);
-#endif
-
-    void draw(QPainter *p) const;
-
-    void scaleChange();
-    void layoutScale( bool update = true );
-
-private:
-    void initScale(QwtScaleDraw::Alignment);
-
-    class PrivateData;
-    PrivateData *d_data;
-};
-
-#endif
diff --git a/src/qwt/include/qwt_slider.h b/src/qwt/include/qwt_slider.h
deleted file mode 100644
index ced263d..0000000
--- a/src/qwt/include/qwt_slider.h
+++ /dev/null
@@ -1,117 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-// vim: expandtab
-
-#ifndef QWT_SLIDER_H
-#define QWT_SLIDER_H
-
-#include "qwt_global.h"
-#include "qwt_abstract_scale.h"
-#include "qwt_abstract_slider.h"
-
-class QwtScaleDraw;
-
-/*!
-  \brief The Slider Widget
-
-  QwtSlider is a slider widget which operates on an interval
-  of type double. QwtSlider supports different layouts as
-  well as a scale.
-  \sa QwtAbstractSlider and QwtAbstractScale for the descriptions
-      of the inherited members.
-*/
-
-class QWT_EXPORT QwtSlider : public QwtAbstractSlider, public QwtAbstractScale
-{
-    Q_OBJECT
-    Q_ENUMS( ScalePos )
-    Q_ENUMS( BGSTYLE )
-    Q_PROPERTY( ScalePos scalePosition READ scalePosition
-        WRITE setScalePosition )
-    Q_PROPERTY( BGSTYLE bgStyle READ bgStyle WRITE setBgStyle )
-    Q_PROPERTY( int thumbLength READ thumbLength WRITE setThumbLength )
-    Q_PROPERTY( int thumbWidth READ thumbWidth WRITE setThumbWidth )
-    Q_PROPERTY( int borderWidth READ borderWidth WRITE setBorderWidth )
- 
-public:
-
-    /*! 
-      Scale position. QwtSlider tries to enforce valid combinations of its
-      orientation and scale position:
-      - Qt::Horizonal combines with None, Top and Bottom
-      - Qt::Vertical combines with None, Left and Right
-
-      \sa QwtSlider::QwtSlider
-     */
-    enum ScalePos { None, Left, Right, Top, Bottom };
-
-    /*! 
-      Background style.
-      \sa QwtSlider::QwtSlider
-     */
-    enum BGSTYLE { BgTrough = 0x1, BgSlot = 0x2, BgBoth = BgTrough | BgSlot};
-
-    explicit QwtSlider(QWidget *parent,
-          Qt::Orientation = Qt::Horizontal,
-          ScalePos = None, BGSTYLE bgStyle = BgTrough);
-    
-    virtual ~QwtSlider();
-
-    virtual void setOrientation(Qt::Orientation); 
-
-    void setBgStyle(BGSTYLE);
-    BGSTYLE bgStyle() const;
-    
-    void setScalePosition(ScalePos s);
-    ScalePos scalePosition() const;
-
-    int thumbLength() const;
-    int thumbWidth() const;
-    int borderWidth() const;
-
-    void setThumbLength(int l);
-    void setThumbWidth(int w);
-    void setBorderWidth(int bw);
-    void setMargins(int x, int y);
-
-    virtual QSize sizeHint() const;
-    virtual QSize minimumSizeHint() const;
-    
-    void setScaleDraw(QwtScaleDraw *);
-    const QwtScaleDraw *scaleDraw() const;
-
-protected:
-    virtual double getValue(const QPoint &p);
-    virtual void getScrollMode(const QPoint &p, 
-        int &scrollMode, int &direction);
-
-    void draw(QPainter *p, const QRect& update_rect);
-    virtual void drawSlider (QPainter *p, const QRect &r);
-    virtual void drawThumb(QPainter *p, const QRect &, int pos);
-
-    virtual void resizeEvent(QResizeEvent *e);
-    virtual void paintEvent (QPaintEvent *e);
-
-    virtual void valueChange();
-    virtual void rangeChange();
-    virtual void scaleChange();
-    virtual void fontChange(const QFont &oldFont);
-
-    void layoutSlider( bool update = true );
-    int xyPosition(double v) const;
-
-    QwtScaleDraw *scaleDraw();
-
-private:
-    class PrivateData;
-    PrivateData *d_data;
-};
-
-#endif
diff --git a/src/qwt/include/qwt_spline.h b/src/qwt/include/qwt_spline.h
deleted file mode 100644
index f04adff..0000000
--- a/src/qwt/include/qwt_spline.h
+++ /dev/null
@@ -1,82 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- * 
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-#ifndef QWT_SPLINE_H
-#define QWT_SPLINE_H
-
-#include "qwt_global.h"
-
-/*!
-  \brief A class for spline interpolation
-
-  The QwtSpline class is used for cubical spline interpolation.
-  Two types of splines, natural and periodic, are supported.
-  
-  \par Usage:
-  <ol>
-  <li>First call QwtSpline::recalc() to determine the spline coefficients 
-      for a tabulated function y(x).
-  <li>After the coefficients have been set up, the interpolated
-      function value for an argument x can be determined by calling 
-      QwtSpline::value().
-  </ol>
-  In order to save storage space, QwtSpline can be advised
-  not to buffer the contents of x and y.
-  This means that the arrays have to remain valid and unchanged
-  for the interpolation to work properly. This can be achieved
-  by calling QwtSpline::copyValues().
-
-  \par Example:
-  \code
-#include<qwt_spline.h>
-#include<iostream.h>
-
-QwtSpline s;
-double x[30], y[30], xInter[300], yInter[300];
-int i;
-
-for(i=0;i<30;i++)               // fill up x[] and y[]
-cin >> x[i] >> y[i];
-
-if (s.recalc(x,y,30,0) == 0)    // build natural spline
-{
-   for(i=0;i<300;i++)          // interpolate
-   {
-     xInter[i] = x[0] + double(i) * (x[29] - x[0]) / 299.0;
-     yInter[i] = s.value( xInter[i] );
-   }
-
-   do_something(xInter, yInter, 300);
-}
-else
-  cerr << "Uhhh...\n";
-  \endcode
-*/
-
-class QWT_EXPORT QwtSpline
-{
-public:
-    QwtSpline();
-    ~QwtSpline();
-
-    double value(double x) const;
-    bool recalc(double *x, double *y, int n, bool periodic = false);
-    void copyValues(bool tf = true);
-
-private:
-    bool buildPerSpline();
-    bool buildNatSpline();
-    int lookup(double x) const;
-    void cleanup();
-
-    class PrivateData;
-    PrivateData *d_data;
-};
-
-#endif
diff --git a/src/qwt/include/qwt_symbol.h b/src/qwt/include/qwt_symbol.h
deleted file mode 100644
index 60996f4..0000000
--- a/src/qwt/include/qwt_symbol.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- * 
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-#ifndef QWT_SYMBOL_H
-#define QWT_SYMBOL_H
-
-#include <qbrush.h>
-#include <qpen.h>
-#include <qsize.h>
-#include "qwt_global.h"
-
-class QPainter;
-class QRect;
-
-//! A class for drawing symbols
-class QWT_EXPORT QwtSymbol
-{
-public:
-    /*!
-        Style
-        \sa QwtSymbol::setStyle, QwtSymbol::style
-     */
-    enum Style { None, Ellipse, Rect, Diamond, Triangle, DTriangle,
-        UTriangle, LTriangle, RTriangle, Cross, XCross, StyleCnt }; 
-   
-public:
-    QwtSymbol();
-    QwtSymbol(Style st, const QBrush &bd, const QPen &pn, const QSize &s);
-    virtual ~QwtSymbol();
-    
-    bool operator!=(const QwtSymbol &) const;
-    bool operator==(const QwtSymbol &) const;
-
-    void setSize(const QSize &s);
-    void setSize(int a, int b = -1);
-    void setBrush(const QBrush& b);
-    void setPen(const QPen &p);
-    void setStyle (Style s);
-
-    //! Return Brush
-    const QBrush& brush() const { return d_brush; }
-    //! Return Pen
-    const QPen& pen() const { return d_pen; }
-    //! Return Size
-    const QSize& size() const { return d_size; }
-    //! Return Style
-    Style style() const { return d_style; } 
-    
-    void draw(QPainter *p, const QPoint &pt) const; 
-    void draw(QPainter *p, int x, int y) const;
-    virtual void draw(QPainter *p, const QRect &r) const;
-
-private:
-    QBrush d_brush;
-    QPen d_pen;
-    QSize d_size;
-    Style d_style;
-};
-
-#endif
diff --git a/src/qwt/include/qwt_text.h b/src/qwt/include/qwt_text.h
deleted file mode 100644
index 6ff4ef1..0000000
--- a/src/qwt/include/qwt_text.h
+++ /dev/null
@@ -1,112 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2003   Uwe Rathmann
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-// vim: expandtab
-
-#ifndef QWT_TEXT_H
-#define QWT_TEXT_H
-
-#include <qstring.h>
-#include <qsize.h>
-#include <qfont.h>
-#include "qwt_global.h"
-
-class QColor;
-class QPen;
-class QBrush;
-class QRect;
-class QPainter;
-class QwtTextEngine;
-
-class QWT_EXPORT QwtText
-{
-public:
-    enum TextFormat
-    {
-        AutoText = 0,
-        
-        PlainText,
-        RichText
-    };
-
-    enum PaintAttributes
-    {
-        PaintUsingPainter = 0,
-
-        PaintUsingTextFont = 1,
-        PaintUsingTextColor = 2,
-
-        PaintBackground = 4
-    };
-
-    enum LayoutAttributes
-    {
-        DefaultLayout = 0,
-        MinimumLayout = 1
-    };
-
-    QwtText(const QString & = QString::null, 
-        TextFormat textFormat = AutoText);
-    QwtText(const QwtText &);
-    ~QwtText();
-
-    QwtText &operator=(const QwtText &);
-
-    int operator==(const QwtText &) const;
-    int operator!=(const QwtText &) const;
-
-    void setText(const QString &, 
-        QwtText::TextFormat textFormat = AutoText);
-    QString text() const;
-
-    inline bool isNull() const { return text().isNull(); }
-    inline bool isEmpty() const { return text().isEmpty(); }
-
-    void setFont(const QFont &);
-    QFont font() const;
-
-    QFont usedFont(const QFont &) const;
-
-    void setFlags(int flags);
-    int flags() const;
-
-    void setColor(const QColor &);
-    QColor color() const;
-
-    QColor usedColor(const QColor &) const;
-
-    void setBackgroundPen(const QPen &);
-    QPen backgroundPen() const;
-
-    void setBackgroundBrush(const QBrush &);
-    QBrush backgroundBrush() const;
-
-    void setPaintAttributes(int);
-    int paintAttributes() const;
-
-    void setLayoutAttributes(int);
-    int layoutAttributes() const;
-
-    int heightForWidth(int width, const QFont & = QFont()) const;
-    QSize textSize(const QFont & = QFont()) const;
-
-    void draw(QPainter *painter, const QRect &rect) const;
-
-private:
-    QwtTextEngine *textEngine(const QString &text,
-        QwtText::TextFormat textFormat = AutoText) const;
-
-    class PrivateData;
-    PrivateData *d_data;
-
-    class LayoutCache;
-    LayoutCache *d_layoutCache;
-};
-
-#endif
diff --git a/src/qwt/include/qwt_text_engine.h b/src/qwt/include/qwt_text_engine.h
deleted file mode 100644
index 5f21592..0000000
--- a/src/qwt/include/qwt_text_engine.h
+++ /dev/null
@@ -1,121 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2003   Uwe Rathmann
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-// vim: expandtab
-
-#ifndef QWT_TEXT_ENGINE_H
-#define QWT_TEXT_ENGINE_H 1
-
-#include <qsize.h>
-#include "qwt_global.h"
-
-class QFont;
-class QRect;
-class QString;
-class QPainter;
-
-class QWT_EXPORT QwtTextEngine
-{
-public:
-    virtual ~QwtTextEngine();
-
-    /*!
-      Find the height for a given width
-     */
-    virtual int heightForWidth(const QFont &font, int flags, 
-        const QString &text, int width) const = 0;
-
-    /*!
-      Returns the size, that is needed to render text
-     */
-    virtual QSize textSize(const QFont &font, int flags,
-        const QString &text) const = 0;
-
-    /*!
-      \brief Draw the text in a clipping rectangle
-      \param painter Painter
-      \param rect Clipping rectangle
-     */ 
-    virtual void draw(QPainter *painter, const QRect &rect,
-        int flags, const QString &text) const = 0;
-
-    virtual bool mightRender(const QString &) const = 0;
-
-    /*!
-      Return margins around the texts
-
-      The textSize might include margins around the 
-      text, like QFontMetrics::descent. In situations
-      where texts need to be aligend in detail, knowing
-      these margins might improve the layout calculations.
-     */
-    virtual void textMargins(const QFont &, const QString &,
-        int &left, int &right, int &top, int &bottom);
-
-protected:
-    QwtTextEngine();
-};
-
-
-/*!
-  \brief Plain text drawing support
- */
-class QWT_EXPORT QwtPlainTextEngine: public QwtTextEngine
-{
-public:
-    QwtPlainTextEngine();
-    virtual ~QwtPlainTextEngine();
-
-    virtual int heightForWidth(const QFont &font, int flags, 
-        const QString &text, int width) const;
-
-    virtual QSize textSize(const QFont &font, int flags,
-        const QString &text) const;
-
-    virtual void draw(QPainter *painter, const QRect &rect,
-        int flags, const QString &text) const;
-
-    virtual bool mightRender(const QString &) const;
-
-    virtual void textMargins(const QFont &, const QString &,
-        int &left, int &right, int &top, int &bottom);
-
-private:
-    class PrivateData; 
-    PrivateData *d_data;
-};
-
-
-#ifndef QT_NO_RICHTEXT
-
-/*!
-  \brief Rich text drawing support
- */
-class QWT_EXPORT QwtRichTextEngine: public QwtTextEngine
-{
-public:
-    QwtRichTextEngine();
-
-    virtual int heightForWidth(const QFont &font, int flags, 
-        const QString &text, int width) const;
-
-    virtual QSize textSize(const QFont &font, int flags,
-        const QString &text) const;
-
-    virtual void draw(QPainter *painter, const QRect &rect,
-        int flags, const QString &text) const;
-
-    virtual bool mightRender(const QString &) const;
-private:
-    QString taggedText(const QString &, int flags) const;
-};
-
-#endif // !QT_NO_RICHTEXT
-
-#endif
diff --git a/src/qwt/include/qwt_text_label.h b/src/qwt/include/qwt_text_label.h
deleted file mode 100644
index bc6141c..0000000
--- a/src/qwt/include/qwt_text_label.h
+++ /dev/null
@@ -1,72 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-#ifndef QWT_TEXT_LABEL_H
-#define QWT_TEXT_LABEL_H
-
-#include <qframe.h>
-#include "qwt_global.h"
-#include "qwt_text.h"
-
-class QString;
-class QPaintEvent;
-class QPainter;
-
-/*!
-  A Widget which displays a QwtText
-*/
-
-class QWT_EXPORT QwtTextLabel : public QFrame
-{
-    Q_OBJECT 
-
-    Q_PROPERTY( int indent READ indent WRITE setIndent )
-    Q_PROPERTY( int margin READ margin WRITE setMargin )
-
-public:
-    explicit QwtTextLabel(QWidget *parent = NULL);
-    explicit QwtTextLabel(const QwtText &, QWidget *parent = NULL);
-    virtual ~QwtTextLabel();
-
-public slots:
-    void setText(const QString &, 
-        QwtText::TextFormat textFormat = QwtText::AutoText);
-    virtual void setText(const QwtText &);
-
-    void clear();
-
-public:
-    const QwtText &text() const;
-
-    int indent() const;
-    void setIndent(int);
-
-    int margin() const;
-    void setMargin(int);
-
-    virtual QSize sizeHint() const;
-    virtual QSize minimumSizeHint() const;
-    virtual int heightForWidth(int) const;
-
-    QRect textRect() const;
-
-protected:
-    virtual void paintEvent(QPaintEvent *e);
-    virtual void drawContents(QPainter *);
-    virtual void drawText(QPainter *, const QRect &);
-
-private:
-    void init();
-    int defaultIndent() const;
-
-    class PrivateData;
-    PrivateData *d_data;
-};
-
-#endif
diff --git a/src/qwt/include/qwt_thermo.h b/src/qwt/include/qwt_thermo.h
deleted file mode 100644
index 8e36296..0000000
--- a/src/qwt/include/qwt_thermo.h
+++ /dev/null
@@ -1,168 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-#ifndef QWT_THERMO_H
-#define QWT_THERMO_H
-
-#include <qwidget.h>
-#include <qcolor.h>
-#include <qfont.h>
-#include <qrect.h>
-#include "qwt_global.h"
-#include "qwt_abstract_scale.h"
-
-class QwtScaleDraw;
-
-/*!
-  \brief The Thermometer Widget
-
-  QwtThermo is a widget which displays a value in an interval. It supports:
-  - a horizontal or vertical layout;
-  - a range;
-  - a scale;
-  - an alarm level.
-
-  By default, the scale and range run over the same interval of values.
-  QwtAbstractScale::setScale() changes the interval of the scale and allows
-  easy conversion between physical units.
-  The example shows how to make the scale indicate in degrees Fahrenheit and
-  to set the value in degrees Kelvin:
-\code
-#include <qapplication.h>
-#include <qwt_thermo.h>
-
-double Kelvin2Fahrenheit(double kelvin)
-{
-    // see http://en.wikipedia.org/wiki/Kelvin
-    return 1.8*kelvin - 459.67;
-}
-
-int main(int argc, char **argv)
-{
-    const double minKelvin = 0.0;
-    const double maxKelvin = 500.0;
-
-    QApplication a(argc, argv);
-    QwtThermo t;
-    t.setRange(minKelvin, maxKelvin);
-    t.setScale(Kelvin2Fahrenheit(minKelvin), Kelvin2Fahrenheit(maxKelvin));
-    // set the value in Kelvin but the scale displays in Fahrenheit
-    // 273.15 Kelvin = 0 Celsius = 32 Fahrenheit
-    t.setValue(273.15);
-    a.setMainWidget(&t);
-    t.show();
-    return a.exec();
-}
-\endcode
-
-  \todo Improve the support for a logarithmic range and/or scale. 
-*/
-class QWT_EXPORT QwtThermo: public QWidget, public QwtAbstractScale
-{
-    Q_OBJECT
-
-    Q_ENUMS( ScalePos )
-
-    Q_PROPERTY( QBrush alarmBrush READ alarmBrush WRITE setAlarmBrush )
-    Q_PROPERTY( QColor alarmColor READ alarmColor WRITE setAlarmColor )
-    Q_PROPERTY( bool alarmEnabled READ alarmEnabled WRITE setAlarmEnabled )
-    Q_PROPERTY( double alarmLevel READ alarmLevel WRITE setAlarmLevel )
-    Q_PROPERTY( ScalePos scalePosition READ scalePosition
-        WRITE setScalePosition )
-    Q_PROPERTY( int borderWidth READ borderWidth WRITE setBorderWidth )
-    Q_PROPERTY( QBrush fillBrush READ fillBrush WRITE setFillBrush )
-    Q_PROPERTY( QColor fillColor READ fillColor WRITE setFillColor )
-    Q_PROPERTY( double maxValue READ maxValue WRITE setMaxValue )
-    Q_PROPERTY( double minValue READ minValue WRITE setMinValue )
-    Q_PROPERTY( int pipeWidth READ pipeWidth WRITE setPipeWidth )
-    Q_PROPERTY( double value READ value WRITE setValue )
-
-public:
-    /*
-      Scale position. QwtThermo tries to enforce valid combinations of its
-      orientation and scale position:
-      - Qt::Horizonal combines with None, Top and Bottom
-      - Qt::Vertical combines with None, Left and Right
-      
-      \sa QwtThermo::setOrientation, QwtThermo::setScalePosition
-    */
-    enum ScalePos {None, Left, Right, Top, Bottom};
-
-    explicit QwtThermo(QWidget *parent = NULL);
-    virtual ~QwtThermo();
-
-    void setOrientation(Qt::Orientation o, ScalePos s);
-
-    void setScalePosition(ScalePos s);
-    ScalePos scalePosition() const;
-
-    void setBorderWidth(int w);
-    int borderWidth() const;
-
-    void setFillBrush(const QBrush &b);
-    const QBrush &fillBrush() const;
-
-    void setFillColor(const QColor &c);
-    const QColor &fillColor() const;
- 
-    void setAlarmBrush(const QBrush &b);
-    const QBrush &alarmBrush() const;
-
-    void setAlarmColor(const QColor &c);
-    const QColor &alarmColor() const;
-
-    void setAlarmLevel(double v);
-    double alarmLevel() const;
-
-    void setAlarmEnabled(bool tf);
-    bool alarmEnabled() const;
-
-    void setPipeWidth(int w);
-    int pipeWidth() const;
-
-    void setMaxValue(double v);
-    double maxValue() const;
-
-    void setMinValue(double v);
-    double minValue() const;
-
-    double value() const;
-
-    void setRange(double vmin, double vmax, bool lg = false);
-    void setMargin(int m);
-
-    virtual QSize sizeHint() const;
-    virtual QSize minimumSizeHint() const;
-
-    void setScaleDraw(QwtScaleDraw *);
-    const QwtScaleDraw *scaleDraw() const;
-
-public slots:
-    void setValue(double val);
-    
-protected:
-    void draw(QPainter *p, const QRect& update_rect);
-    void drawThermo(QPainter *p);
-    void layoutThermo( bool update = true );
-    virtual void scaleChange();
-    virtual void fontChange(const QFont &oldFont);
-
-    virtual void paintEvent(QPaintEvent *e);
-    virtual void resizeEvent(QResizeEvent *e);
-
-    QwtScaleDraw *scaleDraw();
-
-private:
-    int transform(double v) const;
-    
-    class PrivateData;
-    PrivateData *d_data;
-};
-
-#endif
diff --git a/src/qwt/include/qwt_wheel.h b/src/qwt/include/qwt_wheel.h
deleted file mode 100644
index b41dcd6..0000000
--- a/src/qwt/include/qwt_wheel.h
+++ /dev/null
@@ -1,79 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-#ifndef QWT_WHEEL_H
-#define QWT_WHEEL_H
-
-#include "qwt_global.h"
-#include "qwt_abstract_slider.h"
-
-/*!
-  \brief The Wheel Widget
-
-  The wheel widget can be used to change values over a very large range
-  in very small steps. Using the setMass member, it can be configured
-  as a flywheel.
-
-  \sa The radio example.
-*/
-class QWT_EXPORT QwtWheel : public QwtAbstractSlider
-{
-    Q_OBJECT 
-    Q_PROPERTY( double totalAngle READ totalAngle WRITE setTotalAngle )
-    Q_PROPERTY( double viewAngle READ viewAngle WRITE setViewAngle )
-    Q_PROPERTY( int    tickCnt READ tickCnt WRITE setTickCnt )
-    Q_PROPERTY( int    internalBorder READ internalBorder WRITE setInternalBorder )
-    Q_PROPERTY( double mass READ mass WRITE setMass )
-            
-public:
-    explicit QwtWheel(QWidget *parent = NULL);
-    virtual ~QwtWheel();
-
-    virtual void setOrientation(Qt::Orientation);
-
-    double totalAngle() const;
-    double viewAngle() const;
-    int tickCnt() const;
-    int internalBorder() const;
-
-    double mass() const;
-
-    void setTotalAngle (double angle);
-    void setTickCnt(int cnt);
-    void setViewAngle(double angle);
-    void setInternalBorder(int width);
-    void setMass(double val);
-    void setWheelWidth( int w );
-
-    virtual QSize sizeHint() const;
-    virtual QSize minimumSizeHint() const;
-
-protected:
-    virtual void resizeEvent(QResizeEvent *e);
-    virtual void paintEvent(QPaintEvent *e);
-
-    void layoutWheel( bool update = true );
-    void draw(QPainter *p, const QRect& update_rect);
-    void drawWheel(QPainter *p, const QRect &r);
-    void drawWheelBackground(QPainter *p, const QRect &r);
-    void setColorArray();
-
-    virtual void valueChange();
-    virtual void paletteChange( const QPalette &);
-
-    virtual double getValue(const QPoint &p);
-    virtual void getScrollMode(const QPoint &p, 
-        int &scrollMode, int &direction);
-
-private:
-    class PrivateData;
-    PrivateData *d_data;
-};
-
-#endif
diff --git a/src/qwt/qwt_abstract_scale.cpp b/src/qwt/qwt_abstract_scale.cpp
deleted file mode 100644
index d65ac51..0000000
--- a/src/qwt/qwt_abstract_scale.cpp
+++ /dev/null
@@ -1,300 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- * 
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-#include "qwt_scale_engine.h"
-#include "qwt_scale_draw.h"
-#include "qwt_scale_div.h"
-#include "qwt_scale_map.h"
-#include "qwt_double_interval.h"
-#include "qwt_abstract_scale.h"
-
-class QwtAbstractScale::PrivateData
-{
-public:
-    PrivateData():
-        maxMajor(5),
-        maxMinor(3),
-        stepSize(0.0),
-        autoScale(true)
-    {
-        scaleEngine = new QwtLinearScaleEngine;
-        scaleDraw = new QwtScaleDraw();
-    }
-
-    ~PrivateData()
-    {
-        delete scaleEngine;
-        delete scaleDraw;
-    }
-
-    QwtScaleEngine *scaleEngine;
-    QwtAbstractScaleDraw *scaleDraw;
-
-    int maxMajor;
-    int maxMinor;
-    double stepSize;
-
-    bool autoScale;
-};
-
-/*!
-  Constructor
-
-  Creates a default QwtScaleDraw and a QwtLinearScaleEngine. 
-  Autoscaling is enabled, and the stepSize is initialized by 0.0.
-*/
-   
-QwtAbstractScale::QwtAbstractScale()
-{
-    d_data = new PrivateData;
-    rescale(0.0, 100.0);
-}
-
-//! Destructor
-QwtAbstractScale::~QwtAbstractScale()
-{
-    delete d_data;
-}
-
-/*!
-  \brief Specify a scale.
-
-  Disable autoscaling and define a scale by an interval and a step size
-
-  \param vmin lower limit of the scale interval
-  \param vmax upper limit of the scale interval
-  \param stepSize major step size
-  \sa QwtAbstractScale::setAutoScale()
-*/
-void QwtAbstractScale::setScale(double vmin, double vmax, double stepSize)
-{
-    d_data->autoScale = false;
-    d_data->stepSize = stepSize;
-
-    rescale(vmin, vmax, stepSize);
-}
-
-/*!
-  \brief Specify a scale.
-
-  Disable autoscaling and define a scale by an interval and a step size
-
-  \param interval Interval
-  \param stepSize major step size
-  \sa QwtAbstractScale::setAutoScale()
-*/
-void QwtAbstractScale::setScale(const QwtDoubleInterval &interval, 
-    double stepSize)
-{
-    setScale(interval.minValue(), interval.maxValue(), stepSize);
-}
-
-
-/*!
-  \brief Specify a scale.
-
-  Disable autoscaling and define a scale by a scale division
-
-  \param scaleDiv Scale division
-  \sa QwtAbstractScale::setAutoScale()
-*/
-void QwtAbstractScale::setScale(const QwtScaleDiv &scaleDiv)
-{
-    d_data->autoScale = false;
-
-    if (scaleDiv != d_data->scaleDraw->scaleDiv())
-    {
-        d_data->scaleDraw->setScaleDiv(scaleDiv);
-        scaleChange();
-    }
-}
-
-/*!
-  Recalculate the scale division and update the scale draw.
-
-  \param vmin Lower limit of the scale interval
-  \param vmax Upper limit of the scale interval
-  \param stepSize Major step size
-
-  \sa QwtAbstractScale::scaleChange
-*/
-void QwtAbstractScale::rescale(double vmin, double vmax, double stepSize) 
-{
-    const QwtScaleDiv scaleDiv = d_data->scaleEngine->divideScale(
-        vmin, vmax, d_data->maxMajor, d_data->maxMinor, stepSize);
-
-    if ( scaleDiv != d_data->scaleDraw->scaleDiv() )
-    {
-        d_data->scaleDraw->setTransformation(
-            d_data->scaleEngine->transformation());
-        d_data->scaleDraw->setScaleDiv(scaleDiv);
-        scaleChange();
-    }
-}
-
-/*!
-  \brief Advise the widget to control the scale range internally.
-
-  Autoscaling is on by default. 
-  \sa QwtAbstractScale::setScale(), QwtAbstractScale::autoScale
-*/
-void QwtAbstractScale::setAutoScale()
-{
-    if (!d_data->autoScale) 
-    {
-        d_data->autoScale = true;
-        scaleChange();
-    }
-}
-
-/*!
-  \return \c true if autoscaling is enabled
-*/  
-bool QwtAbstractScale::autoScale() const
-{
-    return d_data->autoScale;
-}
-
-/*!
-  \brief Set the maximum number of major tick intervals.
-
-  The scale's major ticks are calculated automatically such that
-  the number of major intervals does not exceed ticks.
-  The default value is 5.
-  \param ticks maximal number of major ticks.
-  \sa QwtAbstractScaleDraw
-*/
-void QwtAbstractScale::setScaleMaxMajor(int ticks)
-{
-    if (ticks != d_data->maxMajor)
-    {
-        d_data->maxMajor = ticks;
-        updateScaleDraw();
-    }
-}
-
-/*!
-  \brief Set the maximum number of minor tick intervals
-
-  The scale's minor ticks are calculated automatically such that
-  the number of minor intervals does not exceed ticks.
-  The default value is 3.
-  \param ticks
-  \sa QwtAbstractScaleDraw
-*/
-void QwtAbstractScale::setScaleMaxMinor(int ticks)
-{
-    if ( ticks != d_data->maxMinor)
-    {
-        d_data->maxMinor = ticks;
-        updateScaleDraw();
-    }
-}
-
-/*! 
-  \return Max. number of minor tick intervals 
-  The default value is 3.
-*/
-int QwtAbstractScale::scaleMaxMinor() const 
-{
-    return d_data->maxMinor;
-}
-
-/*! 
-  \return Max. number of major tick intervals 
-  The default value is 5.
-*/
-int QwtAbstractScale::scaleMaxMajor() const 
-{
-    return d_data->maxMajor;
-}
-
-/*!
-  \brief Set a scale draw
-
-  scaleDraw has to be created with new and will be deleted in
-  ~QwtAbstractScale or the next call of setScaleDraw.
-*/
-void QwtAbstractScale::setAbstractScaleDraw(QwtAbstractScaleDraw *scaleDraw)
-{
-    if ( scaleDraw == NULL || scaleDraw == d_data->scaleDraw )
-        return;
-
-    delete d_data->scaleDraw;
-    d_data->scaleDraw = scaleDraw;
-} 
-
-/*!
-    \return Scale draw
-    \sa QwtAbstractScale::setScaleDraw
-*/
-QwtAbstractScaleDraw *QwtAbstractScale::abstractScaleDraw() 
-{
-    return d_data->scaleDraw;
-}
-
-/*!
-    \return Scale draw
-    \sa QwtAbstractScale::setScaleDraw
-*/
-const QwtAbstractScaleDraw *QwtAbstractScale::abstractScaleDraw() const
-{
-    return d_data->scaleDraw;
-}
-
-void QwtAbstractScale::updateScaleDraw()
-{
-    rescale( d_data->scaleDraw->scaleDiv().lBound(), 
-        d_data->scaleDraw->scaleDiv().hBound(), d_data->stepSize);
-}
-
-/*!
-  \brief Set a scale engine
-
-  The scale engine is responsible for calculating the scale division,
-  and in case of auto scaling how to align the scale.
-
-  scaleEngine has to be created with new and will be deleted in
-  ~QwtAbstractScale or the next call of setScaleEngine.
-*/
-void QwtAbstractScale::setScaleEngine(QwtScaleEngine *scaleEngine)
-{
-    if ( scaleEngine != NULL && scaleEngine != d_data->scaleEngine )
-    {
-        delete d_data->scaleEngine;
-        d_data->scaleEngine = scaleEngine;
-    }
-}
-
-/*!
-    \return Scale engine
-    \sa QwtAbstractScale::setScaleEngine
-*/
-const QwtScaleEngine *QwtAbstractScale::scaleEngine() const
-{
-    return d_data->scaleEngine;
-}
-
-/*!
-    \return Scale engine
-    \sa QwtAbstractScale::setScaleEngine
-*/
-QwtScaleEngine *QwtAbstractScale::scaleEngine()
-{
-    return d_data->scaleEngine;
-}
-
-/*!
-  \brief Notify changed scale
-
-  Dummy empty implementation, intended to be overloaded by derived classes
-*/
-void QwtAbstractScale::scaleChange()
-{
-}
diff --git a/src/qwt/qwt_abstract_scale_draw.cpp b/src/qwt/qwt_abstract_scale_draw.cpp
deleted file mode 100644
index 4f7c3a9..0000000
--- a/src/qwt/qwt_abstract_scale_draw.cpp
+++ /dev/null
@@ -1,397 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- * 
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-// vim: expandtab
-
-#include <qpainter.h>
-#include <qpalette.h>
-#include <qmap.h>
-#include "qwt_math.h"
-#include "qwt_text.h"
-#include "qwt_painter.h"
-#include "qwt_scale_map.h"
-#include "qwt_scale_draw.h"
-
-class QwtAbstractScaleDraw::PrivateData
-{
-public:
-    PrivateData():
-        components(Backbone | Ticks | Labels),
-        spacing(4),
-        minExtent(0)
-    {
-        tickLength[QwtScaleDiv::MinorTick] = 4;
-        tickLength[QwtScaleDiv::MediumTick] = 6;
-        tickLength[QwtScaleDiv::MajorTick] = 8;
-    }
-
-    int components;
-    
-    QwtScaleMap map;
-    QwtScaleDiv scldiv;
-        
-    int spacing;
-    int tickLength[QwtScaleDiv::NTickTypes];
-
-    int minExtent;
-
-    QMap<double, QwtText> labelCache;
-};
-
-/*!
-  \brief Constructor
-
-  The range of the scale is initialized to [0, 100],
-  The spacing (distance between ticks and labels) is
-  set to 4, the tick lengths are set to 4,6 and 8 pixels
-*/
-QwtAbstractScaleDraw::QwtAbstractScaleDraw()
-{
-    d_data = new QwtAbstractScaleDraw::PrivateData;
-}
-
-//! Copy constructor
-QwtAbstractScaleDraw::QwtAbstractScaleDraw(const QwtAbstractScaleDraw &other)
-{
-    d_data = new QwtAbstractScaleDraw::PrivateData(*other.d_data);
-}
-
-//! Destructor
-QwtAbstractScaleDraw::~QwtAbstractScaleDraw()
-{
-    delete d_data;
-}
-//! Assignment operator
-QwtAbstractScaleDraw &QwtAbstractScaleDraw::operator=(const QwtAbstractScaleDraw &other)
-{
-    *d_data = *other.d_data;
-    return *this;
-}
-
-/*!  
-  En/Disable a component of the scale
-  \sa QwtAbstractScaleDraw::hasComponent
-*/
-void QwtAbstractScaleDraw::enableComponent(
-    ScaleComponent component, bool enable)
-{
-    if ( enable )
-        d_data->components |= component;
-    else
-        d_data->components &= ~component;
-}
-
-/*! 
-  Check if a component is enabled 
-  \sa QwtAbstractScaleDraw::enableComponent
-*/
-bool QwtAbstractScaleDraw::hasComponent(ScaleComponent component) const
-{
-    return (d_data->components & component);
-}
-
-/*!
-  Change the scale division
-  \param sd New scale division
-*/
-void QwtAbstractScaleDraw::setScaleDiv(const QwtScaleDiv &sd)
-{
-    d_data->scldiv = sd;
-    d_data->map.setScaleInterval(sd.lBound(), sd.hBound());
-    d_data->labelCache.clear();
-}
-
-/*!
-  Change the transformation of the scale
-  \param transformation New scale transformation
-*/
-void QwtAbstractScaleDraw::setTransformation(
-    const QwtScaleTransformation &transformation)
-{
-    d_data->map.setTransformation(transformation);
-}
-
-//! \return Map how to translate between scale and pixel values
-const QwtScaleMap &QwtAbstractScaleDraw::map() const
-{
-    return d_data->map;
-}
-
-//! \return Map how to translate between scale and pixel values
-QwtScaleMap &QwtAbstractScaleDraw::scaleMap() 
-{
-    return d_data->map;
-}
-
-//! \return scale division 
-const QwtScaleDiv& QwtAbstractScaleDraw::scaleDiv() const 
-{ 
-    return d_data->scldiv; 
-}
-
-#if QT_VERSION < 0x040000
-/*!
-  \brief Draw the scale
-
-  \param painter    The painter
-
-  \param colorGroup Color group, text color is used for the labels, 
-                    foreground color for ticks and backbone
-*/
-void QwtAbstractScaleDraw::draw(QPainter *painter, 
-    const QColorGroup& colorGroup) const
-
-#else
-
-/*!
-  \brief Draw the scale
-
-  \param painter    The painter
-
-  \param palette    Palette, text color is used for the labels, 
-                    foreground color for ticks and backbone
-*/
-void QwtAbstractScaleDraw::draw(QPainter *painter, 
-    const QPalette& palette) const
-#endif
-{
-    if ( hasComponent(QwtAbstractScaleDraw::Labels) )
-    {
-        painter->save();
-
-#if QT_VERSION < 0x040000
-        painter->setPen(colorGroup.text()); // ignore pen style
-#else
-        painter->setPen(palette.color(QPalette::Text)); // ignore pen style
-#endif
-
-        const QwtTickList &majorTicks = 
-            d_data->scldiv.ticks(QwtScaleDiv::MajorTick);
-
-        for (int i = 0; i < (int)majorTicks.count(); i++)
-        {
-            const double v = majorTicks[i];
-            if ( d_data->scldiv.contains(v) )
-                drawLabel(painter, majorTicks[i]);
-        }
-
-        painter->restore();
-    }
-
-    if ( hasComponent(QwtAbstractScaleDraw::Ticks) )
-    {
-        painter->save();
-
-        QPen pen = painter->pen();
-#if QT_VERSION < 0x040000
-        pen.setColor(colorGroup.foreground());
-#else
-        pen.setColor(palette.color(QPalette::Foreground));
-#endif
-        painter->setPen(pen);
-
-        for ( int tickType = QwtScaleDiv::MinorTick; 
-            tickType < QwtScaleDiv::NTickTypes; tickType++ )
-        {
-            const QwtTickList &ticks = d_data->scldiv.ticks(tickType);
-            for (int i = 0; i < (int)ticks.count(); i++)
-            {
-                const double v = ticks[i];
-                if ( d_data->scldiv.contains(v) )
-                    drawTick(painter, v, d_data->tickLength[tickType]);
-            }
-        }
-
-        painter->restore();
-    }
-
-    if ( hasComponent(QwtAbstractScaleDraw::Backbone) )
-    {
-        painter->save();
-
-        QPen pen = painter->pen();
-#if QT_VERSION < 0x040000
-        pen.setColor(colorGroup.foreground());
-#else
-        pen.setColor(palette.color(QPalette::Foreground));
-#endif
-        painter->setPen(pen);
-
-        drawBackbone(painter);
-
-        painter->restore();
-    }
-}
-
-/*!
-  \brief Set the spacing between tick and labels
-
-  The spacing is the distance between ticks and labels.
-  The default spacing is 4 pixels.
-
-  \param spacing Spacing
-
-  \sa QwtAbstractScaleDraw::spacing
-*/
-void QwtAbstractScaleDraw::setSpacing(int spacing)
-{
-    if ( spacing < 0 )
-        spacing = 0;
-
-    d_data->spacing = spacing;
-}
-
-/*!
-  \brief Get the spacing
-
-  The spacing is the distance between ticks and labels.
-  The default spacing is 4 pixels.
-
-  \sa QwtAbstractScaleDraw::setSpacing
-*/
-int QwtAbstractScaleDraw::spacing() const
-{
-    return d_data->spacing;
-}
-
-/*!
-  \brief Set a minimum for the extent
-
-  The extent is calculated from the coomponents of the
-  scale draw. In situations, where the labels are
-  changing and the layout depends on the extent (f.e scrolling
-  a scale), setting an upper limit as minimum extent will
-  avoid jumps of the layout.
-
-  \param minExtent Minimum extent
-
-  \sa extent(), minimumExtent()
-*/
-void QwtAbstractScaleDraw::setMinimumExtent(int minExtent)
-{
-    if ( minExtent < 0 )
-        minExtent = 0;
-
-    d_data->minExtent = minExtent;
-}
-
-/*!
-  Get the minimum extent
-  \sa extent(), setMinimumExtent()
-*/
-int QwtAbstractScaleDraw::minimumExtent() const
-{
-    return d_data->minExtent;
-}
-
-/*!
-  Set the length of the ticks
-   
-  \param tickType Tick type
-  \param length New length
-
-  \warning the length is limited to [0..1000]
-*/
-void QwtAbstractScaleDraw::setTickLength(
-    QwtScaleDiv::TickType tickType, int length)
-{
-    if ( tickType < QwtScaleDiv::MinorTick || 
-        tickType > QwtScaleDiv::MajorTick )
-    {
-        return;
-    }
-
-    if ( length < 0 )
-        length = 0;
-
-    const int maxTickLen = 1000;
-    if ( length > maxTickLen )
-        length = 1000;
-
-    d_data->tickLength[tickType] = length;
-}
-
-/*!
-    Return the length of the ticks
-
-    \sa QwtAbstractScaleDraw::setTickLength, 
-        QwtAbstractScaleDraw::majTickLength
-*/
-int QwtAbstractScaleDraw::tickLength(QwtScaleDiv::TickType tickType) const
-{
-    if ( tickType < QwtScaleDiv::MinorTick || 
-        tickType > QwtScaleDiv::MajorTick )
-    {
-        return 0;
-    }
-
-    return d_data->tickLength[tickType];
-}
-
-/*!
-   The same as QwtAbstractScaleDraw::tickLength(QwtScaleDiv::MajorTick).
-*/
-int QwtAbstractScaleDraw::majTickLength() const
-{
-    return d_data->tickLength[QwtScaleDiv::MajorTick];
-}
-
-/*!
-  \brief Convert a value into its representing label 
-
-  The value is converted to a plain text using QString::number(value).
-  This method is often overloaded by applications to have individual
-  labels.
-
-  \param value Value
-  \return Label string.
-*/
-QwtText QwtAbstractScaleDraw::label(double value) const
-{
-    return QString::number(value);
-}
-
-/*!
-   Convert a value into its representing label and cache it.
-
-   The conversion between value and label is called very often
-   in the layout and painting code. Also the
-   calculation of the label sizes might be slow (really slow
-   for rich text in Qt4). QwtAbstractScaleDraw::tickLabel
-   calls QwtAbstractScaleDraw::label and caches its result.
-*/
-const QwtText &QwtAbstractScaleDraw::tickLabel(
-    const QFont &font, double value) const
-{
-    QMap<double, QwtText>::const_iterator it = d_data->labelCache.find(value);
-    if ( it == d_data->labelCache.end() )
-    {
-        QwtText lbl = label(value);
-        lbl.setFlags(0);
-        lbl.setLayoutAttributes(QwtText::MinimumLayout);
-
-        (void)lbl.textSize(font); // initialize the internal cache
-
-        it = d_data->labelCache.insert(value, lbl);
-    }
-
-    return (*it);
-}
-
-/*!
-   Invalidate the cache used by QwtAbstractScaleDraw::tickLabel
-
-   The cache is invalidated, when a new QwtScaleDiv is set. If
-   the labels need to be changed. while the same QwtScaleDiv is set,
-   QwtAbstractScaleDraw::invalidateCache needs to be called manually.
-*/
-void QwtAbstractScaleDraw::invalidateCache()
-{
-    d_data->labelCache.clear();
-}
diff --git a/src/qwt/qwt_abstract_slider.cpp b/src/qwt/qwt_abstract_slider.cpp
deleted file mode 100644
index 5ca1be2..0000000
--- a/src/qwt/qwt_abstract_slider.cpp
+++ /dev/null
@@ -1,565 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- * 
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-#include <qevent.h>
-#include <qdatetime.h>
-#include "qwt_abstract_slider.h"
-#include "qwt_math.h"
-
-#ifndef WHEEL_DELTA
-#define WHEEL_DELTA 120
-#endif
-
-class QwtAbstractSlider::PrivateData
-{
-public:
-    PrivateData():
-        scrollMode(ScrNone),
-        mouseOffset(0.0),
-        tracking(true),
-        tmrID(0),
-        updTime(150),
-        mass(0.0),
-        readOnly(false)
-    {
-    }
-
-    int scrollMode;
-    double mouseOffset;
-    int direction;
-    int tracking;
-
-    int tmrID;
-    int updTime;
-    int timerTick;
-    QTime time;
-    double speed;
-    double mass;
-    Qt::Orientation orientation;
-    bool readOnly;
-};
-
-//! Constructor
-QwtAbstractSlider::QwtAbstractSlider(Qt::Orientation orient, QWidget *parent): 
-    QWidget(parent, NULL)
-{
-    d_data = new QwtAbstractSlider::PrivateData;
-    d_data->orientation = orient;
-
-#if QT_VERSION >= 0x040000
-    using namespace Qt;
-#endif
-    setFocusPolicy(TabFocus);
-}
-
-//! Destructor
-QwtAbstractSlider::~QwtAbstractSlider()
-{
-    if(d_data->tmrID) 
-        killTimer(d_data->tmrID);
-
-    delete d_data;
-}
-
-/*!
-  En/Disable read only mode
-
-  In read only mode the slider can�t be controlled by mouse
-  or keyboard.
-
-  \param readOnly Enables in case of true
-  \sa isReadOnly
-*/
-void QwtAbstractSlider::setReadOnly(bool readOnly)
-{
-    d_data->readOnly = readOnly;
-    update();
-}
-
-/*!
-  In read only mode the slider can�t be controlled by mouse
-  or keyboard.
-
-  \return true if read only
-  \sa setReadOnly
-*/
-bool QwtAbstractSlider::isReadOnly() const
-{
-    return d_data->readOnly;
-}
-
-/*!
-  \brief Set the orientation.
-  \param o Orientation. Allowed values are
-           Qt::Horizontal and Qt::Vertical.
-*/
-void QwtAbstractSlider::setOrientation(Qt::Orientation o)
-{
-    d_data->orientation = o;
-}
-
-/*! 
-  \return Orientation
-  \sa QwtAbstractSlider::setOrientation
-*/
-Qt::Orientation QwtAbstractSlider::orientation() const
-{
-    return d_data->orientation;
-}
-
-//! Stop updating if automatic scrolling is active
-
-void QwtAbstractSlider::stopMoving() 
-{
-    if(d_data->tmrID)
-    {
-        killTimer(d_data->tmrID);
-        d_data->tmrID = 0;
-    }
-}
-
-/*!
-  \brief Specify the update interval for automatic scrolling
-  \param t update interval in milliseconds
-  \sa QwtAbstractSlider::getScrollMode()
-*/
-void QwtAbstractSlider::setUpdateTime(int t) 
-{
-    if (t < 50) 
-        t = 50;
-    d_data->updTime = t;
-}
-
-
-//! Mouse press event handler
-void QwtAbstractSlider::mousePressEvent(QMouseEvent *e) 
-{
-    if ( isReadOnly() )
-    {
-        e->ignore();
-        return;
-    }
-    if ( !isValid() )
-        return;
-
-    const QPoint &p = e->pos();
-
-    d_data->timerTick = 0;
-
-    getScrollMode(p, d_data->scrollMode, d_data->direction);
-    stopMoving();
-    
-    switch(d_data->scrollMode)
-    {
-        case ScrPage:
-        case ScrTimer:
-            d_data->mouseOffset = 0;
-            d_data->tmrID = startTimer(qwtMax(250, 2 * d_data->updTime));
-            break;
-        
-        case ScrMouse:
-            d_data->time.start();
-            d_data->speed = 0;
-            d_data->mouseOffset = getValue(p) - value();
-            emit sliderPressed();
-            break;
-        
-        default:
-            d_data->mouseOffset = 0;
-            d_data->direction = 0;
-            break;
-    }
-}
-
-
-//! Emits a valueChanged() signal if necessary
-void QwtAbstractSlider::buttonReleased()
-{
-    if ((!d_data->tracking) || (value() != prevValue()))
-        emit valueChanged(value());
-}
-
-
-//! Mouse Release Event handler
-void QwtAbstractSlider::mouseReleaseEvent(QMouseEvent *e)
-{
-    if ( isReadOnly() )
-    {
-        e->ignore();
-        return;
-    }
-    if ( !isValid() )
-        return;
-
-    const double inc = step();
-    
-    switch(d_data->scrollMode) 
-    {
-        case ScrMouse:
-        {
-            setPosition(e->pos());
-            d_data->direction = 0;
-            d_data->mouseOffset = 0;
-            if (d_data->mass > 0.0) 
-            {
-                const int ms = d_data->time.elapsed();
-                if ((fabs(d_data->speed) >  0.0) && (ms < 50))
-                    d_data->tmrID = startTimer(d_data->updTime);
-            }
-            else
-            {
-                d_data->scrollMode = ScrNone;
-                buttonReleased();
-            }
-            emit sliderReleased();
-            
-            break;
-        }
-
-        case ScrDirect:
-        {
-            setPosition(e->pos());
-            d_data->direction = 0;
-            d_data->mouseOffset = 0;
-            d_data->scrollMode = ScrNone;
-            buttonReleased();
-            break;
-        }
-
-        case ScrPage:
-        {
-            stopMoving();
-            if (!d_data->timerTick)
-                QwtDoubleRange::incPages(d_data->direction);
-            d_data->timerTick = 0;
-            buttonReleased();
-            d_data->scrollMode = ScrNone;
-            break;
-        }
-
-        case ScrTimer:
-        {
-            stopMoving();
-            if (!d_data->timerTick)
-                QwtDoubleRange::fitValue(value() + double(d_data->direction) * inc);
-            d_data->timerTick = 0;
-            buttonReleased();
-            d_data->scrollMode = ScrNone;
-            break;
-        }
-
-        default:
-        {
-            d_data->scrollMode = ScrNone;
-            buttonReleased();
-        }
-    }
-}
-
-
-/*!
-  Move the slider to a specified point, adjust the value
-  and emit signals if necessary.
-*/
-void QwtAbstractSlider::setPosition(const QPoint &p) 
-{
-    QwtDoubleRange::fitValue(getValue(p) - d_data->mouseOffset);
-}
-
-
-/*!
-  \brief Enables or disables tracking.
-
-  If tracking is enabled, the slider emits a
-  valueChanged() signal whenever its value
-  changes (the default behaviour). If tracking
-  is disabled, the value changed() signal will only
-  be emitted if:<ul>
-  <li>the user releases the mouse
-      button and the value has changed or
-  <li>at the end of automatic scrolling.</ul>
-  Tracking is enabled by default.
-  \param enable \c true (enable) or \c false (disable) tracking.
-*/
-void QwtAbstractSlider::setTracking(bool enable)
-{
-    d_data->tracking = enable;
-}
-
-//! Mouse Move Event handler
-void QwtAbstractSlider::mouseMoveEvent(QMouseEvent *e)
-{
-    if ( isReadOnly() )
-    {
-        e->ignore();
-        return;
-    }
-
-    if ( !isValid() )
-        return;
-
-    if (d_data->scrollMode == ScrMouse )
-    {
-        setPosition(e->pos());
-        if (d_data->mass > 0.0) 
-        {
-            double ms = double(d_data->time.elapsed());
-            if (ms < 1.0) 
-                ms = 1.0;
-            d_data->speed = (exactValue() - exactPrevValue()) / ms;
-            d_data->time.start();
-        }
-        if (value() != prevValue())
-            emit sliderMoved(value());
-    }
-}
-
-//! Qt wheel event
-void QwtAbstractSlider::wheelEvent(QWheelEvent *e)
-{
-    if ( isReadOnly() )
-    {
-        e->ignore();
-        return;
-    }
-
-    if ( !isValid() )
-        return;
-
-    int mode = ScrNone, direction = 0;
-
-    // Give derived classes a chance to say ScrNone
-    getScrollMode(e->pos(), mode, direction);
-    if ( mode != ScrNone )
-    {
-        const int inc = e->delta() / WHEEL_DELTA;
-        QwtDoubleRange::incPages(inc);
-        if (value() != prevValue())
-            emit sliderMoved(value());
-    }
-}
-
-/*!
-  Handles key events
-
-  - Key_Down, KeyLeft\n
-    Decrement by 1
-  - Key_Up, Key_Right\n
-    Increment by 1
-
-  \sa isReadOnly()
-*/
-
-void QwtAbstractSlider::keyPressEvent(QKeyEvent *e)
-{
-    if ( isReadOnly() )
-    {
-        e->ignore();
-        return;
-    }
-
-    if ( !isValid() )
-        return;
-
-    int increment = 0;
-    switch ( e->key() ) 
-    {
-        case Qt::Key_Down:
-            if ( orientation() == Qt::Vertical )
-                increment = -1;
-            break;
-        case Qt::Key_Up:
-            if ( orientation() == Qt::Vertical )
-                increment = 1;
-            break;
-        case Qt::Key_Left:
-            if ( orientation() == Qt::Horizontal )
-                increment = -1;
-            break;
-        case Qt::Key_Right:
-            if ( orientation() == Qt::Horizontal )
-                increment = 1;
-            break;
-        default:;
-            e->ignore();
-    }
-
-    if ( increment != 0 )
-    {
-        QwtDoubleRange::incValue(increment);
-        if (value() != prevValue())
-            emit sliderMoved(value());
-    }
-}
-
-//! Qt timer event
-void QwtAbstractSlider::timerEvent(QTimerEvent *)
-{
-    const double inc = step();
-
-    switch (d_data->scrollMode)
-    {
-        case ScrMouse:
-        {
-            if (d_data->mass > 0.0)
-            {
-                d_data->speed *= exp( - double(d_data->updTime) * 0.001 / d_data->mass );
-                const double newval = 
-                    exactValue() + d_data->speed * double(d_data->updTime);
-                QwtDoubleRange::fitValue(newval);
-                // stop if d_data->speed < one step per second
-                if (fabs(d_data->speed) < 0.001 * fabs(step()))
-                {
-                    d_data->speed = 0;
-                    stopMoving();
-                    buttonReleased();
-                }
-
-            }
-            else
-               stopMoving();
-            break;
-        }
-
-        case ScrPage:
-        {
-            QwtDoubleRange::incPages(d_data->direction);
-            if (!d_data->timerTick) 
-            {
-                killTimer(d_data->tmrID);
-                d_data->tmrID = startTimer(d_data->updTime);
-            }
-            break;
-        }
-        case ScrTimer:
-        {
-            QwtDoubleRange::fitValue(value() +  double(d_data->direction) * inc);
-            if (!d_data->timerTick) 
-            {
-                killTimer(d_data->tmrID);
-                d_data->tmrID = startTimer(d_data->updTime);
-            }
-            break;
-        }
-        default:
-        {
-            stopMoving();
-            break;
-        }
-    }
-
-    d_data->timerTick = 1;
-}
-
-
-/*!
-  Notify change of value
-
-  This function can be reimplemented by derived classes
-  in order to keep track of changes, i.e. repaint the widget.
-  The default implementation emits a valueChanged() signal
-  if tracking is enabled.
-*/
-void QwtAbstractSlider::valueChange() 
-{
-    if (d_data->tracking)
-       emit valueChanged(value());  
-}
-
-/*!
-  \brief Set the slider's mass for flywheel effect.
-
-  If the slider's mass is greater then 0, it will continue
-  to move after the mouse button has been released. Its speed
-  decreases with time at a rate depending on the slider's mass.
-  A large mass means that it will continue to move for a
-  long time.
-
-  Derived widgets may overload this function to make it public.
-
-  \param val new mass in kg
-
-  \bug If the mass is smaller than 1g, it is set to zero.
-       The maximal mass is limited to 100kg.
-  \sa QwtAbstractSlider::mass
-*/
-void QwtAbstractSlider::setMass(double val)
-{
-    if (val < 0.001)
-       d_data->mass = 0.0;
-    else if (val > 100.0)
-       d_data->mass = 100.0;
-    else
-       d_data->mass = val;
-}
-
-/*!
-    \return mass
-    \sa QwtAbstractSlider::setMass
-*/
-double QwtAbstractSlider::mass() const
-{   
-    return d_data->mass; 
-}
-
-
-/*!
-  \brief Move the slider to a specified value
-
-  This function can be used to move the slider to a value
-  which is not an integer multiple of the step size.
-  \param val new value
-  \sa QwtAbstractSlider::fitValue
-*/
-void QwtAbstractSlider::setValue(double val)
-{
-    if (d_data->scrollMode == ScrMouse) 
-        stopMoving();
-    QwtDoubleRange::setValue(val);
-}
-
-
-/*!
-  \brief Set the slider's value to the nearest integer multiple
-         of the step size.
-     \sa QwtAbstractSlider::setValue()
-*/
-void QwtAbstractSlider::fitValue(double val)
-{
-    if (d_data->scrollMode == ScrMouse) 
-        stopMoving();
-    QwtDoubleRange::fitValue(val);
-}
-
-
-/*!
-  \brief Increment the value by a specified number of steps
-  \param steps number of steps
-*/
-void QwtAbstractSlider::incValue(int steps)
-{
-    if (d_data->scrollMode == ScrMouse) 
-        stopMoving();
-    QwtDoubleRange::incValue(steps);
-}
-
-void QwtAbstractSlider::setMouseOffset(double offset)
-{
-    d_data->mouseOffset = offset;
-} 
-
-double QwtAbstractSlider::mouseOffset() const
-{
-    return d_data->mouseOffset;
-}
-
-int QwtAbstractSlider::scrollMode() const
-{
-    return d_data->scrollMode;
-}
diff --git a/src/qwt/qwt_analog_clock.cpp b/src/qwt/qwt_analog_clock.cpp
deleted file mode 100644
index c657986..0000000
--- a/src/qwt/qwt_analog_clock.cpp
+++ /dev/null
@@ -1,213 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-#include "qwt_analog_clock.h"
-
-/*!
-  Constructor
-  \param parent Parent widget
-*/
-QwtAnalogClock::QwtAnalogClock(QWidget *parent):
-    QwtDial(parent)
-{
-    setWrapping(true);
-    setReadOnly(true);
-
-    setOrigin(270.0);
-    setRange(0.0, 60.0 * 60.0 * 12.0); // seconds
-    setScale(-1, 5, 60.0 * 60.0);
-
-    setScaleOptions(ScaleTicks | ScaleLabel);
-    setScaleTicks(1, 0, 8);
-
-    QColor knobColor =
-#if QT_VERSION < 0x040000
-        palette().color(QPalette::Active, QColorGroup::Text);
-#else
-        palette().color(QPalette::Active, QPalette::Text);
-#endif
-    knobColor = knobColor.dark(120);
-
-    QColor handColor;
-    int width;
-
-    for ( int i = 0; i < NHands; i++ )
-    {
-        if ( i == SecondHand )
-        {
-            width = 2;
-            handColor = knobColor.dark(120);
-        }
-        else
-        {
-            width = 8;
-            handColor = knobColor;
-        }
-
-        QwtDialSimpleNeedle *hand = new QwtDialSimpleNeedle(
-            QwtDialSimpleNeedle::Arrow, true, handColor, knobColor);
-        hand->setWidth(width);
-
-        d_hand[i] = NULL;
-        setHand((Hand)i, hand);
-    }
-}
-
-//! Destructor
-QwtAnalogClock::~QwtAnalogClock()
-{
-    for ( int i = 0; i < NHands; i++ )
-        delete d_hand[i];
-}
-
-/*! 
-  Nop method, use setHand instead
-  \sa QwtAnalogClock::setHand
-*/
-void QwtAnalogClock::setNeedle(QwtDialNeedle *)
-{
-    // no op
-    return;
-}
-
-/*!
-   Set a clockhand
-   \param hand Specifies the type of hand
-   \param needle Hand
-   \sa QwtAnalogClock::hand()
-*/
-void QwtAnalogClock::setHand(Hand hand, QwtDialNeedle *needle)
-{
-    if ( hand >= 0 || hand < NHands )
-    {
-        delete d_hand[hand];
-        d_hand[hand] = needle;
-    }
-}
-
-/*!
-  \return Clock hand
-  \param hd Specifies the type of hand
-  \sa QwtAnalogClock::setHand
-*/
-QwtDialNeedle *QwtAnalogClock::hand(Hand hd)
-{
-    if ( hd < 0 || hd >= NHands )
-        return NULL;
-
-    return d_hand[hd];
-}
-
-/*!
-  \return Clock hand
-  \param hd Specifies the type of hand
-  \sa QwtAnalogClock::setHand
-*/
-const QwtDialNeedle *QwtAnalogClock::hand(Hand hd) const
-{
-    return ((QwtAnalogClock *)this)->hand(hd);
-}
-
-/*!
-  \brief Set the current time
-
-  This is the same as QwtAnalogClock::setTime(), but Qt < 3.0
-  can�t handle default parameters for slots.
-*/
-void QwtAnalogClock::setCurrentTime()
-{ 
-    setTime(QTime::currentTime()); 
-}
-
-/*!
-  Set a time 
-  \param time Time to display
-*/
-void QwtAnalogClock::setTime(const QTime &time)
-{
-    if ( time.isValid() )
-    {
-        setValue((time.hour() % 12) * 60.0 * 60.0 
-            + time.minute() * 60.0 + time.second());
-    }
-    else
-        setValid(false);
-}
-
-/*! 
-  Find the scale label for a given value
-
-  \param value Value
-  \return Label
-*/
-QwtText QwtAnalogClock::scaleLabel(double value) const
-{
-    if ( value == 0.0 )
-        value = 60.0 * 60.0 * 12.0;
-
-    return QString::number(int(value / (60.0 * 60.0)));
-}
-
-/*!
-  \brief Draw the needle
-
-  A clock has no single needle but three hands instead. drawNeedle
-  translates value() into directions for the hands and calls
-  drawHand().
-
-  \param painter Painter
-  \param center Center of the clock
-  \param radius Maximum length for the hands
-  \param direction Dummy, not used.
-  \param cg ColorGroup
-
-  \sa QwtAnalogClock::drawHand()
-*/
-void QwtAnalogClock::drawNeedle(QPainter *painter, const QPoint &center,
-        int radius, double, QPalette::ColorGroup cg) const
-{
-    if ( isValid() )
-    {
-        const double hours = value() / (60.0 * 60.0);
-        const double minutes = (value() - (int)hours * 60.0 * 60.0) / 60.0;
-        const double seconds = value() - (int)hours * 60.0 * 60.0 
-            - (int)minutes * 60.0;
-
-        drawHand(painter, HourHand, center, radius,
-            360.0 - (origin() + 360.0 * hours / 12.0), cg);
-        drawHand(painter, MinuteHand, center, radius,
-            360.0 - (origin() + 360.0 * minutes / 60.0), cg);
-        drawHand(painter, SecondHand, center, radius,
-            360.0 - (origin() + 360.0 * seconds / 60.0), cg);
-    }
-}
-
-/*!
-  Draw a clock hand
-
-  \param painter Painter
-  \param hd Specify the type of hand
-  \param center Center of the clock
-  \param radius Maximum length for the hands
-  \param direction Direction of the hand in degrees, counter clockwise
-  \param cg ColorGroup
-*/
-void QwtAnalogClock::drawHand(QPainter *painter, Hand hd,
-    const QPoint &center, int radius, double direction, 
-    QPalette::ColorGroup cg) const
-{
-    const QwtDialNeedle *needle = hand(hd);
-    if ( needle )
-    {
-        if ( hd == HourHand )
-            radius = qRound(0.8 * radius);
-
-        needle->draw(painter, center, radius, direction, cg);
-    }
-}
diff --git a/src/qwt/qwt_arrow_button.cpp b/src/qwt/qwt_arrow_button.cpp
deleted file mode 100644
index 7d43d10..0000000
--- a/src/qwt/qwt_arrow_button.cpp
+++ /dev/null
@@ -1,362 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- * 
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-#include <qpainter.h>
-#include <qstyle.h>
-#include <qevent.h>
-#include "qwt_math.h"
-#include "qwt_arrow_button.h"
-
-#if QT_VERSION < 0x040000
-#include <qpointarray.h>
-#define QwtPointArray QPointArray
-#else
-#include <qpolygon.h>
-#define QwtPointArray QPolygon
-#endif
-
-static const int MaxNum = 3;
-static const int Margin = 2;
-static const int Spacing = 1;
-
-class QwtArrowButton::PrivateData
-{
-public:
-    int num;
-    Qt::ArrowType arrowType;
-};
-
-
-#if QT_VERSION >= 0x040000
-#include <qstyleoption.h>
-static QStyleOptionButton styleOpt(const QwtArrowButton* btn)
-{
-    QStyleOptionButton option;
-    option.init(btn);
-    option.features = QStyleOptionButton::None;
-    if (btn->isFlat())
-        option.features |= QStyleOptionButton::Flat;
-    if (btn->menu())
-        option.features |= QStyleOptionButton::HasMenu;
-    if (btn->autoDefault() || btn->isDefault())
-        option.features |= QStyleOptionButton::AutoDefaultButton;
-    if (btn->isDefault())
-        option.features |= QStyleOptionButton::DefaultButton;
-    if (btn->isDown())
-        option.state |= QStyle::State_Sunken;
-    if (!btn->isFlat() && !btn->isDown())
-        option.state |= QStyle::State_Raised;
-
-    return option;
-}
-#endif
-
-/*!
-  \param num Number of arrows
-  \param arrowType see Qt::ArowType in the Qt docs.
-  \param parent Parent widget
-*/
-QwtArrowButton::QwtArrowButton(int num, 
-        Qt::ArrowType arrowType, QWidget *parent): 
-    QPushButton(parent)
-{
-    d_data = new PrivateData;
-    d_data->num = qwtLim(num, 1, MaxNum);
-    d_data->arrowType = arrowType;
-
-    setAutoRepeat(true);
-    setAutoDefault(false);
-
-    switch(d_data->arrowType)
-    {
-        case Qt::LeftArrow:
-        case Qt::RightArrow:
-            setSizePolicy(QSizePolicy::Expanding, 
-                QSizePolicy::Fixed);
-            break;
-        default:
-            setSizePolicy(QSizePolicy::Fixed, 
-                QSizePolicy::Expanding);
-    }
-}
-
-QwtArrowButton::~QwtArrowButton()
-{
-    delete d_data;
-    d_data = NULL;
-}
-
-/*!
-  \brief The direction of the arrows
-*/
-Qt::ArrowType QwtArrowButton::arrowType() const 
-{ 
-    return d_data->arrowType; 
-}
-
-/*!
-  \brief The number of arrows
-*/
-int QwtArrowButton::num() const 
-{ 
-    return d_data->num; 
-}
-
-/*!
-  \return the bounding rect for the label
-*/
-QRect QwtArrowButton::labelRect() const
-{
-    const int m = Margin;
-
-    QRect r = rect();
-    r.setRect(r.x() + m, r.y() + m, 
-        r.width() - 2 * m, r.height() - 2 * m);
-
-    if ( isDown() )
-    {
-        int ph, pv;
-#if QT_VERSION < 0x040000
-        ph = style().pixelMetric(
-            QStyle::PM_ButtonShiftHorizontal, this);
-        pv = style().pixelMetric(
-            QStyle::PM_ButtonShiftVertical, this);
-        r.moveBy(ph, pv);
-#else
-        QStyleOptionButton option = styleOpt(this);
-        ph = style()->pixelMetric(
-            QStyle::PM_ButtonShiftHorizontal, &option, this);
-        pv = style()->pixelMetric(
-            QStyle::PM_ButtonShiftVertical, &option, this);
-        r.translate(ph, pv);
-#endif
-    }
-
-    return r;
-}
-
-#if QT_VERSION >= 0x040000
-void QwtArrowButton::paintEvent(QPaintEvent *event)
-{
-    QPushButton::paintEvent(event);
-    QPainter painter(this);
-    drawButtonLabel(&painter);
-}
-#endif
-
-/*!
-  \brief Draw the button label
-  \sa The Qt Manual on QPushButton
-*/
-void QwtArrowButton::drawButtonLabel(QPainter *p)
-{
-    const bool isVertical = d_data->arrowType == Qt::UpArrow ||
-        d_data->arrowType == Qt::DownArrow;
-
-    const QRect r = labelRect();
-    QSize boundingSize = labelRect().size();
-    if ( isVertical )
-        boundingSize.transpose();
-        
-    const int w = 
-        (boundingSize.width() - (MaxNum - 1) * Spacing) / MaxNum;
-
-    QSize arrow = arrowSize(Qt::RightArrow, 
-        QSize(w, boundingSize.height()));
-
-    if ( isVertical )
-        arrow.transpose();
-
-    QRect contentsSize; // aligned rect where to paint all arrows
-    if ( d_data->arrowType == Qt::LeftArrow || d_data->arrowType == Qt::RightArrow )
-    {
-        contentsSize.setWidth(d_data->num * arrow.width() 
-            + (d_data->num - 1) * Spacing);
-        contentsSize.setHeight(arrow.height());
-    }
-    else
-    {
-        contentsSize.setWidth(arrow.width());
-        contentsSize.setHeight(d_data->num * arrow.height() 
-            + (d_data->num - 1) * Spacing);
-    }
-
-    QRect arrowRect(contentsSize);
-    arrowRect.moveCenter(r.center());
-    arrowRect.setSize(arrow);
-
-    p->save();
-    for (int i = 0; i < d_data->num; i++)
-    {
-        drawArrow(p, arrowRect, d_data->arrowType);
-
-        int dx = 0;
-        int dy = 0;
-
-        if ( isVertical )
-            dy = arrow.height() + Spacing;
-        else
-            dx = arrow.width() + Spacing;
-
-#if QT_VERSION >= 0x040000
-        arrowRect.translate(dx, dy);
-#else
-        arrowRect.moveBy(dx, dy);
-#endif
-    }
-    p->restore();
-
-    if ( hasFocus() )
-    {
-#if QT_VERSION >= 0x040000
-        QStyleOptionFocusRect option;
-        option.init(this);
-        option.backgroundColor = palette().color(QPalette::Background);
-
-        style()->drawPrimitive(QStyle::PE_FrameFocusRect, 
-            &option, p, this);
-#else
-        const QRect focusRect =  
-            style().subRect(QStyle::SR_PushButtonFocusRect, this);
-        style().drawPrimitive(QStyle::PE_FocusRect, p,
-            focusRect, colorGroup());
-#endif
-    }
-}
-
-/*!
-    Draw an arrow int a bounding rect
-
-    \param p Painter
-    \param r Rectangle where to paint the arrow
-    \param arrowType Arrow type
-*/
-void QwtArrowButton::drawArrow(QPainter *p, 
-    const QRect &r, Qt::ArrowType arrowType) const 
-{
-    QwtPointArray pa(3);
-
-    switch(arrowType)
-    {
-        case Qt::UpArrow:
-            pa.setPoint(0, r.bottomLeft());
-            pa.setPoint(1, r.bottomRight());
-            pa.setPoint(2, r.center().x(), r.top());
-            break;
-        case Qt::DownArrow:
-            pa.setPoint(0, r.topLeft());
-            pa.setPoint(1, r.topRight());
-            pa.setPoint(2, r.center().x(), r.bottom());
-            break;
-        case Qt::RightArrow:
-            pa.setPoint(0, r.topLeft());
-            pa.setPoint(1, r.bottomLeft());
-            pa.setPoint(2, r.right(), r.center().y());
-            break;
-        case Qt::LeftArrow:
-            pa.setPoint(0, r.topRight());
-            pa.setPoint(1, r.bottomRight());
-            pa.setPoint(2, r.left(), r.center().y());
-            break;
-        default:
-            break;
-    }
-
-    p->save();
-#if QT_VERSION < 0x040000
-    p->setPen(colorGroup().buttonText());
-    p->setBrush(colorGroup().brush(QColorGroup::ButtonText));
-#else
-    p->setPen(palette().color(QPalette::ButtonText));
-    p->setBrush(palette().brush(QPalette::ButtonText));
-#endif
-    p->drawPolygon(pa);
-    p->restore();
-}
-
-/*!
-  \return a size hint
-*/
-QSize QwtArrowButton::sizeHint() const
-{
-    return minimumSizeHint();
-}
-
-/*!
-  \brief Return a minimum size hint
-*/
-QSize QwtArrowButton::minimumSizeHint() const
-{
-    const QSize asz = arrowSize(Qt::RightArrow, QSize()); 
-
-    QSize sz(
-        2 * Margin + (MaxNum - 1) * Spacing + MaxNum * asz.width(),
-        2 * Margin + asz.height()
-    );
-
-    if ( d_data->arrowType == Qt::UpArrow || d_data->arrowType == Qt::DownArrow )
-        sz.transpose();
-
-#if QT_VERSION >= 0x040000
-    QStyleOption styleOption;
-    styleOption.init(this);
-
-    sz = style()->sizeFromContents(QStyle::CT_PushButton, 
-        &styleOption, sz, this);
-#else
-    sz = style().sizeFromContents(QStyle::CT_PushButton, this, sz);
-#endif
-
-    return sz;
-}
-
-/*!
-   Calculate the size for a arrow that fits into a rect of a given size
-
-   \param arrowType Arrow type
-   \param boundingSize Bounding size
-   \return Size of the arrow
-*/
-QSize QwtArrowButton::arrowSize(Qt::ArrowType arrowType,
-    const QSize &boundingSize) const
-{
-    QSize bs = boundingSize;
-    if ( arrowType == Qt::UpArrow || arrowType == Qt::DownArrow )
-        bs.transpose();
-        
-    const int MinLen = 2;
-    const QSize sz = bs.expandedTo(
-        QSize(MinLen, 2 * MinLen - 1)); // minimum
-
-    int w = sz.width();
-    int h = 2 * w - 1;
-
-    if ( h > sz.height() )
-    {
-        h = sz.height();
-        w = (h + 1) / 2;
-    }
-
-    QSize arrSize(w, h);
-    if ( arrowType == Qt::UpArrow || arrowType == Qt::DownArrow )
-        arrSize.transpose();
-
-    return arrSize;
-}
-
-/*!
-  \brief autoRepeat for the space keys
-*/
-void QwtArrowButton::keyPressEvent(QKeyEvent *e)
-{
-    if ( e->isAutoRepeat() && e->key() == Qt::Key_Space )
-        emit clicked();
-
-    QPushButton::keyPressEvent(e);
-}
diff --git a/src/qwt/qwt_compass.cpp b/src/qwt/qwt_compass.cpp
deleted file mode 100644
index f0c9197..0000000
--- a/src/qwt/qwt_compass.cpp
+++ /dev/null
@@ -1,287 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-// vim: expandtab
-
-#include <math.h>
-#include <qpainter.h>
-#include <qpixmap.h>
-#include <qevent.h>
-#include "qwt_math.h"
-#include "qwt_scale_draw.h"
-#include "qwt_paint_buffer.h"
-#include "qwt_painter.h"
-#include "qwt_dial_needle.h"
-#include "qwt_compass_rose.h"
-#include "qwt_compass.h"
-
-class QwtCompass::PrivateData
-{
-public:
-    PrivateData():
-        rose(NULL)
-    {
-    }
-
-    ~PrivateData()
-    {
-        delete rose;
-    }
-
-    QwtCompassRose *rose;
-    QMap<double, QString> labelMap;
-};
-
-/*!
-  \brief Constructor
-  \param parent Parent widget
-
-  Create a compass widget with a scale, no needle and no rose. 
-  The default origin is 270.0 with no valid value. It accepts
-  mouse and keyboard inputs and has no step size. The default mode
-  is QwtDial::RotateNeedle.
-*/  
-QwtCompass::QwtCompass(QWidget* parent):
-    QwtDial(parent)
-{
-    d_data = new PrivateData;
-
-    setScaleOptions(ScaleLabel); // Only labels, no backbone, no ticks
-
-    setOrigin(270.0);
-    setWrapping(true);
-
-
-    d_data->labelMap.insert(0.0, QString::fromLatin1("N"));
-    d_data->labelMap.insert(45.0, QString::fromLatin1("NE"));
-    d_data->labelMap.insert(90.0, QString::fromLatin1("E"));
-    d_data->labelMap.insert(135.0, QString::fromLatin1("SE"));
-    d_data->labelMap.insert(180.0, QString::fromLatin1("S"));
-    d_data->labelMap.insert(225.0, QString::fromLatin1("SW"));
-    d_data->labelMap.insert(270.0, QString::fromLatin1("W"));
-    d_data->labelMap.insert(315.0, QString::fromLatin1("NW"));
-
-#if 0
-    d_data->labelMap.insert(22.5, QString::fromLatin1("NNE"));
-    d_data->labelMap.insert(67.5, QString::fromLatin1("NEE"));
-    d_data->labelMap.insert(112.5, QString::fromLatin1("SEE"));
-    d_data->labelMap.insert(157.5, QString::fromLatin1("SSE"));
-    d_data->labelMap.insert(202.5, QString::fromLatin1("SSW"));
-    d_data->labelMap.insert(247.5, QString::fromLatin1("SWW"));
-    d_data->labelMap.insert(292.5, QString::fromLatin1("NWW"));
-    d_data->labelMap.insert(337.5, QString::fromLatin1("NNW"));
-#endif
-}
-
-//!  Destructor
-QwtCompass::~QwtCompass() 
-{
-    delete d_data;
-}
-
-//! Draw the contents of the scale
-void QwtCompass::drawScaleContents(QPainter *painter, 
-        const QPoint &center, int radius) const
-{
-    QPalette::ColorGroup cg;
-    if ( isEnabled() )
-        cg = hasFocus() ? QPalette::Active : QPalette::Inactive;
-    else
-        cg = QPalette::Disabled;
-
-    double north = origin();
-    if ( isValid() )
-    {
-        if ( mode() == RotateScale )
-            north -= value(); 
-    }
-
-    const int margin = 4;
-    drawRose(painter, center, radius - margin, 360.0 - north,  cg);
-}
-
-/*!
-  Draw the compass rose
-  
-  \param painter Painter
-  \param center Center of the compass
-  \param radius of the circle, where to paint the rose
-  \param north Direction pointing north, in degrees counter clockwise
-  \param cg Color group
-*/
-void QwtCompass::drawRose(QPainter *painter, const QPoint &center,
-    int radius, double north, QPalette::ColorGroup cg) const
-{
-    if ( d_data->rose )
-        d_data->rose->draw(painter, center, radius, north,  cg);
-}
-
-/*!
-  Set a rose for the compass
-  \param rose Compass rose
-  \warning The rose will be deleted, when a different rose is
-    set or in ~QwtCompass
-  \sa QwtCompass::rose
-*/
-void QwtCompass::setRose(QwtCompassRose *rose)
-{
-    if ( rose != d_data->rose )
-    {
-        if ( d_data->rose )
-            delete d_data->rose;
-
-        d_data->rose = rose;
-        update();
-    }
-}
-
-/*! 
-  \return rose
-  \sa QwtCompass::setRose
-*/
-const QwtCompassRose *QwtCompass::rose() const 
-{ 
-    return d_data->rose; 
-}
-
-/*! 
-  \return rose
-  \sa QwtCompass::setRose
-*/
-QwtCompassRose *QwtCompass::rose() 
-{ 
-    return d_data->rose; 
-}
-
-/*! 
-  Handles key events
-
-  Beside the keys described in QwtDial::keyPressEvent numbers
-  from 1-9 (without 5) set the direction according to their
-  position on the num pad.
-
-  \sa isReadOnly()
-*/
-void QwtCompass::keyPressEvent(QKeyEvent *kev) 
-{
-    if (isReadOnly()) 
-        return;
-
-#if 0
-    if ( kev->key() == Key_5 )
-    {
-        invalidate(); // signal ???
-        return;
-    }
-#endif
-
-    double newValue = value();
-
-    if ( kev->key() >= Qt::Key_1 && kev->key() <= Qt::Key_9 )
-    {
-        if ( mode() != RotateNeedle || kev->key() == Qt::Key_5 )
-            return;
-
-        switch (kev->key()) 
-        {
-            case Qt::Key_6: 
-                newValue = 180.0 * 0.0;
-                break;
-            case Qt::Key_3: 
-                newValue = 180.0 * 0.25;
-                break;
-            case Qt::Key_2: 
-                newValue = 180.0 * 0.5;
-                break;
-            case Qt::Key_1: 
-                newValue = 180.0 * 0.75;
-                break;
-            case Qt::Key_4: 
-                newValue = 180.0 * 1.0;
-                break;
-            case Qt::Key_7: 
-                newValue = 180.0 * 1.25;
-                break;
-            case Qt::Key_8: 
-                newValue = 180.0 * 1.5;
-                break;
-            case Qt::Key_9: 
-                newValue = 180.0 * 1.75;
-                break;
-        }
-        newValue -= origin();
-        setValue(newValue);
-    }
-    else
-    {
-        QwtDial::keyPressEvent(kev);
-    }
-}
-
-/*!
-  \return map, mapping values to labels
-  \sa QwtCompass::setLabelMap
-*/
-const QMap<double, QString> &QwtCompass::labelMap() const 
-{ 
-    return d_data->labelMap; 
-}
-
-/*!
-  \return map, mapping values to labels
-  \sa QwtCompass::setLabelMap
-*/
-QMap<double, QString> &QwtCompass::labelMap() 
-{ 
-    return d_data->labelMap; 
-}
-
-/*!
-  \brief Set a map, mapping values to labels
-  \param map value to label map
-
-  The values of the major ticks are found by looking into this
-  map. The default map consists of the labels N, NE, E, SE, S, SW, W, NW.
-
-  \warning The map will have no effect for values that are no major
-           tick values. Major ticks can be changed by QwtScaleDraw::setScale
-
-  \sa QwtCompass::labelMap, QwtCompass::scaleDraw, QwtScaleDraw::setScale
-*/
-void QwtCompass::setLabelMap(const QMap<double, QString> &map) 
-{ 
-    d_data->labelMap = map; 
-}
-
-/*!
-  Map a value to a corresponding label
-  \param value Value that will be mapped
-  \return Label, or QString::null
-
-  label() looks in a map for a corresponding label for value
-  or return an null text.
-  \sa QwtCompass::labelMap, QwtCompass::setLabelMap
-*/
-
-QwtText QwtCompass::scaleLabel(double value) const
-{
-#if 0
-    // better solution ???
-    if ( value == -0 )
-        value = 0.0;
-#endif
-
-    if ( value < 0.0 )
-        value += 360.0;
-
-    if ( d_data->labelMap.contains(value) )
-        return d_data->labelMap[value];
-
-    return QwtText();
-}
diff --git a/src/qwt/qwt_compass_rose.cpp b/src/qwt/qwt_compass_rose.cpp
deleted file mode 100644
index d7d428e..0000000
--- a/src/qwt/qwt_compass_rose.cpp
+++ /dev/null
@@ -1,238 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-#include <math.h>
-#include <qpainter.h>
-#include "qwt_math.h"
-#include "qwt_painter.h"
-#include "qwt_compass_rose.h"
-
-#if QT_VERSION < 0x040000
-#include <qpointarray.h>
-#define QwtPointArray QPointArray
-#else
-#include <qpolygon.h>
-#define QwtPointArray QPolygon
-#endif
-
-static QPoint cutPoint(QPoint p11, QPoint p12, QPoint p21, QPoint p22)
-{
-    double dx1 = p12.x() - p11.x();
-    double dy1 = p12.y() - p11.y();
-    double dx2 = p22.x() - p21.x();
-    double dy2 = p22.y() - p21.y();
-
-    if ( dx1 == 0.0 && dx2 == 0.0 )
-        return QPoint();
-
-    if ( dx1 == 0.0 )
-    {
-        const double m = dy2 / dx2;
-        const double t = p21.y() - m * p21.x();
-        return QPoint(p11.x(), qRound(m * p11.x() + t));
-    }
-
-    if ( dx2 == 0 )
-    {
-        const double m = dy1 / dx1;
-        const double t = p11.y() - m * p11.x();
-        return QPoint(p21.x(), qRound(m * p21.x() + t));
-    }
-
-    const double m1 = dy1 / dx1;
-    const double t1 = p11.y() - m1 * p11.x();
-
-    const double m2 = dy2 / dx2;
-    const double t2 = p21.y() - m2 * p21.x();
-
-    if ( m1 == m2 )
-        return QPoint();
-
-    const double x = ( t2 - t1 ) / ( m1 - m2 );
-    const double y = t1 + m1 * x;
-
-    return QPoint(qRound(x), qRound(y));
-}
-
-QwtSimpleCompassRose::QwtSimpleCompassRose(int numThorns, int numThornLevels):
-    d_width(0.2),
-    d_numThorns(numThorns),
-    d_numThornLevels(numThornLevels),
-    d_shrinkFactor(0.9)
-{
-    const QColor dark(128,128,255);
-    const QColor light(192,255,255);
-    
-    QPalette palette;
-    for ( int i = 0; i < QPalette::NColorGroups; i++ )
-    {
-#if QT_VERSION < 0x040000
-        palette.setColor((QPalette::ColorGroup)i,
-            QColorGroup::Dark, dark);
-        palette.setColor((QPalette::ColorGroup)i,
-            QColorGroup::Light, light);
-#else
-        palette.setColor((QPalette::ColorGroup)i,
-            QPalette::Dark, dark);
-        palette.setColor((QPalette::ColorGroup)i,
-            QPalette::Light, light);
-#endif
-    }
-
-    setPalette(palette);
-}
-
-void QwtSimpleCompassRose::draw(QPainter *painter, const QPoint &center, 
-    int radius, double north, QPalette::ColorGroup cg) const
-{
-#if QT_VERSION < 0x040000
-    QColorGroup colorGroup;
-    switch(cg)
-    {
-        case QPalette::Disabled:
-            colorGroup = palette().disabled();
-        case QPalette::Inactive:
-            colorGroup = palette().inactive();
-        default:
-            colorGroup = palette().active();
-    }
-
-    drawRose(painter, colorGroup, center, radius, north, d_width, 
-        d_numThorns, d_numThornLevels, d_shrinkFactor);
-#else
-    QPalette pal = palette();
-    pal.setCurrentColorGroup(cg);
-    drawRose(painter, pal, center, radius, north, d_width, 
-        d_numThorns, d_numThornLevels, d_shrinkFactor);
-#endif
-}
-
-void QwtSimpleCompassRose::drawRose(
-    QPainter *painter, 
-#if QT_VERSION < 0x040000
-    const QColorGroup &cg,
-#else
-    const QPalette &palette,
-#endif
-    const QPoint &center, int radius, double north, double width,
-    int numThorns, int numThornLevels, double shrinkFactor)
-{
-    if ( numThorns < 4 )
-        numThorns = 4;
-
-    if ( numThorns % 4 )
-        numThorns += 4 - numThorns % 4;
-
-    if ( numThornLevels <= 0 )
-        numThornLevels = numThorns / 4;
-
-    if ( shrinkFactor >= 1.0 )
-        shrinkFactor = 1.0;
-
-    if ( shrinkFactor <= 0.5 )
-        shrinkFactor = 0.5;
-
-    painter->save();
-
-    painter->setPen(Qt::NoPen);
-
-    for ( int j = 1; j <= numThornLevels; j++ )
-    {
-        double step =  pow(2.0, j) * M_PI / (double)numThorns;
-        if ( step > M_PI_2 )
-            break;
-
-        double r = radius;
-        for ( int k = 0; k < 3; k++ )
-        {
-            if ( j + k < numThornLevels )
-                r *= shrinkFactor;
-        }
-
-        double leafWidth = r * width;
-        if ( 2.0 * M_PI / step > 32 )
-            leafWidth = 16;
-
-        const double origin = north / 180.0 * M_PI;
-        for ( double angle = origin; 
-            angle < 2.0 * M_PI + origin; angle += step)
-        {
-            const QPoint p = qwtPolar2Pos(center, r, angle);
-            QPoint p1 = qwtPolar2Pos(center, leafWidth, angle + M_PI_2);
-            QPoint p2 = qwtPolar2Pos(center, leafWidth, angle - M_PI_2);
-
-            QwtPointArray pa(3);
-            pa.setPoint(0, center);
-            pa.setPoint(1, p);
-
-            QPoint p3 = qwtPolar2Pos(center, r, angle + step / 2.0);
-            p1 = cutPoint(center, p3, p1, p);
-            pa.setPoint(2, p1);
-#if QT_VERSION < 0x040000
-            painter->setBrush(cg.brush(QColorGroup::Dark));
-#else
-            painter->setBrush(palette.brush(QPalette::Dark));
-#endif
-            painter->drawPolygon(pa);
-
-            QPoint p4 = qwtPolar2Pos(center, r, angle - step / 2.0);
-            p2 = cutPoint(center, p4, p2, p);
-
-            pa.setPoint(2, p2);
-#if QT_VERSION < 0x040000
-            painter->setBrush(cg.brush(QColorGroup::Light));
-#else
-            painter->setBrush(palette.brush(QPalette::Light));
-#endif
-            painter->drawPolygon(pa);
-        }
-    }
-    painter->restore();
-}
-
-/**
-* Set the width of the rose heads. Lower value make thinner heads.
-* The range is limited from 0.03 to 0.4.
-*/
-
-void QwtSimpleCompassRose::setWidth(double w) 
-{
-   d_width = w;
-   if (d_width < 0.03) 
-        d_width = 0.03;
-
-   if (d_width > 0.4) 
-        d_width = 0.4;
-}
-
-void QwtSimpleCompassRose::setNumThorns(int numThorns) 
-{
-    if ( numThorns < 4 )
-        numThorns = 4;
-
-    if ( numThorns % 4 )
-        numThorns += 4 - numThorns % 4;
-
-    d_numThorns = numThorns;
-}
-
-int QwtSimpleCompassRose::numThorns() const
-{
-   return d_numThorns;
-}
-
-void QwtSimpleCompassRose::setNumThornLevels(int numThornLevels) 
-{
-    d_numThornLevels = numThornLevels;
-}
-
-int QwtSimpleCompassRose::numThornLevels() const
-{
-    return d_numThornLevels;
-}
diff --git a/src/qwt/qwt_counter.cpp b/src/qwt/qwt_counter.cpp
deleted file mode 100644
index 3cf0920..0000000
--- a/src/qwt/qwt_counter.cpp
+++ /dev/null
@@ -1,603 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-// vim: expandtab
-
-#include <qlayout.h>
-#include <qlineedit.h>
-#include <qvalidator.h>
-#include <qevent.h>
-#include <qstyle.h>
-#include "qwt_math.h"
-#include "qwt_counter.h"
-#include "qwt_arrow_button.h"
-
-class QwtCounter::PrivateData
-{
-public:
-    PrivateData():
-        editable(true)
-    {
-        increment[Button1] = 1;
-        increment[Button2] = 10;
-        increment[Button3] = 100;
-    }
-
-    QwtArrowButton *buttonDown[ButtonCnt];
-    QwtArrowButton *buttonUp[ButtonCnt];
-    QLineEdit *valueEdit;
-
-    int increment[ButtonCnt];
-    int nButtons;
-
-    bool editable;
-};
-
-/*!
-  The default number of buttons is set to 2. The default increments are:
-  \li Button 1: 1 step
-  \li Button 2: 10 steps
-  \li Button 3: 100 steps
-
-  \param parent
- */
-QwtCounter::QwtCounter(QWidget *parent):
-    QWidget(parent) 
-{
-    d_data = new PrivateData;
-
-#if QT_VERSION >= 0x040000
-    using namespace Qt;
-#endif
-
-    QHBoxLayout *layout = new QHBoxLayout(this);
-    layout->setSpacing(0);
-    layout->setMargin(0);
-
-    int i;
-    for(i = ButtonCnt - 1; i >= 0; i--)
-    {
-        QwtArrowButton *btn =
-            new QwtArrowButton(i+1, Qt::DownArrow,this);
-        btn->setFocusPolicy(NoFocus);
-        btn->installEventFilter(this);
-        layout->addWidget(btn);
-
-        connect(btn, SIGNAL(released()), SLOT(btnReleased()));
-        connect(btn, SIGNAL(clicked()), SLOT(btnClicked()));
-
-        d_data->buttonDown[i] = btn;
-    }
-
-    d_data->valueEdit = new QLineEdit(this);
-    d_data->valueEdit->setReadOnly(false);
-    d_data->valueEdit->setValidator(new QDoubleValidator(d_data->valueEdit));
-    layout->addWidget(d_data->valueEdit);
-
-#if QT_VERSION >= 0x040000
-    connect( d_data->valueEdit, SIGNAL(editingFinished()), 
-        SLOT(textChanged()) );
-#else
-    connect( d_data->valueEdit, SIGNAL(returnPressed()), SLOT(textChanged()) );
-    connect( d_data->valueEdit, SIGNAL(lostFocus()), SLOT(textChanged()) );
-#endif
-
-    layout->setStretchFactor(d_data->valueEdit, 10);
-
-    for(i = 0; i < ButtonCnt; i++)
-    {
-#if QT_VERSION >= 0x040000
-        using namespace Qt;
-#endif
-        QwtArrowButton *btn =
-            new QwtArrowButton(i+1, Qt::UpArrow, this);
-        btn->setFocusPolicy(NoFocus);
-        btn->installEventFilter(this);
-        layout->addWidget(btn);
-
-        connect(btn, SIGNAL(released()), SLOT(btnReleased()));
-        connect(btn, SIGNAL(clicked()), SLOT(btnClicked()));
-    
-        d_data->buttonUp[i] = btn;
-    }
-
-    setNumButtons(2);
-    setRange(0.0,1.0,0.001);
-    setValue(0.0);
-
-    setSizePolicy(
-        QSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed));
-
-    setFocusProxy(d_data->valueEdit);
-    setFocusPolicy(StrongFocus);
-}
-
-QwtCounter::~QwtCounter()
-{
-    delete d_data;
-}
-
-/*!
-  Sets the minimum width for the buttons
-*/
-void QwtCounter::polish()
-{
-    const int w = d_data->valueEdit->fontMetrics().width("W") + 8;
-
-    for ( int i = 0; i < ButtonCnt; i++ )
-    {
-        d_data->buttonDown[i]->setMinimumWidth(w);
-        d_data->buttonUp[i]->setMinimumWidth(w);
-    }
-
-#if QT_VERSION < 0x040000
-    QWidget::polish();
-#endif
-}
-
-//! Set from lineedit
-void QwtCounter::textChanged() 
-{
-    if ( !d_data->editable ) 
-        return;
-
-    bool converted = false;
-
-    const double value = d_data->valueEdit->text().toDouble(&converted);
-    if ( converted ) 
-       setValue( value );
-}
-
-/**
-  \brief Allow/disallow the user to manually edit the value
-
-  \param editable true enables editing
-  \sa editable()
-*/
-void QwtCounter::setEditable(bool editable)
-{
-#if QT_VERSION >= 0x040000
-    using namespace Qt;
-#endif
-    if ( editable == d_data->editable ) 
-        return;
-
-    d_data->editable = editable;
-    d_data->valueEdit->setReadOnly(!editable);
-}
-
-//! returns whether the line edit is edatble. (default is yes)
-bool QwtCounter::editable() const 
-{   
-    return d_data->editable;
-}
-
-/*!
-   Handle PolishRequest events 
-*/
-bool QwtCounter::event ( QEvent * e ) 
-{
-#if QT_VERSION >= 0x040000
-    if ( e->type() == QEvent::PolishRequest )
-        polish();
-#endif
-    return QWidget::event(e);
-}
-
-/*!
-  Handles key events
-
-  - Ctrl + Qt::Key_Home
-    Step to minValue()
-  - Ctrl + Qt::Key_End
-    Step to maxValue()
-  - Qt::Key_Up
-    Increment by incSteps(QwtCounter::Button1)
-  - Qt::Key_Down
-    Decrement by incSteps(QwtCounter::Button1)
-  - Qt::Key_PageUp
-    Increment by incSteps(QwtCounter::Button2)
-  - Qt::Key_PageDown
-    Decrement by incSteps(QwtCounter::Button2)
-  - Shift + Qt::Key_PageUp
-    Increment by incSteps(QwtCounter::Button3)
-  - Shift + Qt::Key_PageDown
-    Decrement by incSteps(QwtCounter::Button3)
-*/
-
-void QwtCounter::keyPressEvent (QKeyEvent *e)
-{
-    bool accepted = true;
-
-    switch ( e->key() )
-    {
-        case Qt::Key_Home:
-#if QT_VERSION >= 0x040000
-            if ( e->modifiers() & Qt::ControlModifier )
-#else
-            if ( e->state() & Qt::ControlButton )
-#endif
-                setValue(minValue());
-            else
-                accepted = false;
-            break;
-        case Qt::Key_End:
-#if QT_VERSION >= 0x040000
-            if ( e->modifiers() & Qt::ControlModifier )
-#else
-            if ( e->state() & Qt::ControlButton )
-#endif
-                setValue(maxValue());
-            else
-                accepted = false;
-            break;
-        case Qt::Key_Up:
-            incValue(d_data->increment[0]);
-            break;
-        case Qt::Key_Down:
-            incValue(-d_data->increment[0]);
-            break;
-        case Qt::Key_PageUp:
-        case Qt::Key_PageDown:
-        {
-            int increment = d_data->increment[0];
-            if ( d_data->nButtons >= 2 )
-                increment = d_data->increment[1];
-            if ( d_data->nButtons >= 3 )
-            {
-#if QT_VERSION >= 0x040000
-                if ( e->modifiers() & Qt::ShiftModifier )
-#else
-                if ( e->state() & Qt::ShiftButton )
-#endif
-                    increment = d_data->increment[2];
-            }
-            if ( e->key() == Qt::Key_PageDown )
-                increment = -increment;
-            incValue(increment);
-            break;
-        }
-        default:
-            accepted = false;
-    }
-
-    if ( accepted )
-    {
-        e->accept();
-        return;
-    }
-
-    QWidget::keyPressEvent (e);
-}
-
-void QwtCounter::wheelEvent(QWheelEvent *e)
-{
-    e->accept();
-
-    if ( d_data->nButtons <= 0 )
-        return;
-
-    int increment = d_data->increment[0];
-    if ( d_data->nButtons >= 2 )
-    {
-#if QT_VERSION >= 0x040000
-        if ( e->modifiers() & Qt::ControlModifier )
-#else
-        if ( e->state() & Qt::ControlButton )
-#endif
-            increment = d_data->increment[1];
-    }
-    if ( d_data->nButtons >= 3 )
-    {
-#if QT_VERSION >= 0x040000
-        if ( e->modifiers() & Qt::ShiftModifier )
-#else
-        if ( e->state() & Qt::ShiftButton )
-#endif
-            increment = d_data->increment[2];
-    }
-        
-    for ( int i = 0; i < d_data->nButtons; i++ )
-    {
-        if ( d_data->buttonDown[i]->geometry().contains(e->pos()) ||
-            d_data->buttonUp[i]->geometry().contains(e->pos()) )
-        {
-            increment = d_data->increment[i];
-        }
-    }
-
-    const int wheel_delta = 120;
-
-    int delta = e->delta();
-    if ( delta >= 2 * wheel_delta )
-        delta /= 2; // Never saw an abs(delta) < 240
-
-    incValue(delta / wheel_delta * increment);
-}
-
-/*!
-  Specify the number of steps by which the value
-  is incremented or decremented when a specified button
-  is pushed.
-
-  \param btn One of \c QwtCounter::Button1, \c QwtCounter::Button2,
-             \c QwtCounter::Button3
-  \param nSteps Number of steps
-*/
-void QwtCounter::setIncSteps(QwtCounter::Button btn, int nSteps)
-{
-    if (( btn >= 0) && (btn < ButtonCnt))
-       d_data->increment[btn] = nSteps;
-}
-
-/*!
-  \return the number of steps by which a specified button increments the value
-  or 0 if the button is invalid.
-  \param btn One of \c QwtCounter::Button1, \c QwtCounter::Button2,
-  \c QwtCounter::Button3
-*/
-int QwtCounter::incSteps(QwtCounter::Button btn) const
-{
-    if (( btn >= 0) && (btn < ButtonCnt))
-       return d_data->increment[btn];
-
-    return 0;
-}
-
-/*!
-  \brief Set a new value
-  \param v new value
-  Calls QwtDoubleRange::setValue and does all visual updates.
-  \sa QwtDoubleRange::setValue
-*/
-
-void QwtCounter::setValue(double v)
-{
-    QwtDoubleRange::setValue(v);
-
-    showNum(value());
-    updateButtons();
-}
-
-/*!
-  \brief Notify a change of value
-*/
-void QwtCounter::valueChange()
-{
-    if ( isValid() )
-        showNum(value());
-    else
-        d_data->valueEdit->setText(QString::null);
-
-    updateButtons();
-
-    if ( isValid() )
-        emit valueChanged(value());
-}
-
-/*!
-  \brief Update buttons according to the current value
-
-  When the QwtCounter under- or over-flows, the focus is set to the smallest
-  up- or down-button and counting is disabled.
-
-  Counting is re-enabled on a button release event (mouse or space bar).
-*/
-void QwtCounter::updateButtons()
-{
-    if ( isValid() )
-    {
-        // 1. save enabled state of the smallest down- and up-button
-        // 2. change enabled state on under- or over-flow
-
-        for ( int i = 0; i < ButtonCnt; i++ )
-        {
-            d_data->buttonDown[i]->setEnabled(value() > minValue());
-            d_data->buttonUp[i]->setEnabled(value() < maxValue());
-        }
-    }
-    else
-    {
-        for ( int i = 0; i < ButtonCnt; i++ )
-        {
-            d_data->buttonDown[i]->setEnabled(false);
-            d_data->buttonUp[i]->setEnabled(false);
-        }
-    }
-}
-
-/*!
-  \brief Specify the number of buttons on each side of the label
-  \param n Number of buttons
-*/
-void QwtCounter::setNumButtons(int n)
-{
-    if ( n<0 || n>ButtonCnt )
-        return;
-
-    for ( int i = 0; i < ButtonCnt; i++ )
-    {
-        if ( i < n )
-        {
-            d_data->buttonDown[i]->show();
-            d_data->buttonUp[i]->show();
-        }
-        else
-        {
-            d_data->buttonDown[i]->hide();
-            d_data->buttonUp[i]->hide();
-        }
-    }
-
-    d_data->nButtons = n;
-}
-
-/*!
-    \return The number of buttons on each side of the widget.
-*/
-int QwtCounter::numButtons() const 
-{ 
-    return d_data->nButtons; 
-}
-
-//!  Display number string
-void QwtCounter::showNum(double d)
-{
-    QString v;
-    v.setNum(d);
-
-    const int cursorPos = d_data->valueEdit->cursorPosition();
-    d_data->valueEdit->setText(v);
-    d_data->valueEdit->setCursorPosition(cursorPos);
-}
-
-//!  Button clicked
-void QwtCounter::btnClicked()
-{
-    for ( int i = 0; i < ButtonCnt; i++ )
-    {
-        if ( d_data->buttonUp[i] == sender() )
-            incValue(d_data->increment[i]);
-
-        if ( d_data->buttonDown[i] == sender() )
-            incValue(-d_data->increment[i]);
-    }
-}
-
-//!  Button released
-void QwtCounter::btnReleased()
-{
-    emit buttonReleased(value());
-}
-
-/*!
-  \brief Notify change of range
-
-  This function updates the enabled property of
-  all buttons contained in QwtCounter.
-*/
-void QwtCounter::rangeChange()
-{
-    updateButtons();
-}
-
-//! A size hint
-QSize QwtCounter::sizeHint() const
-{
-    QString tmp;
-
-    int w = tmp.setNum(minValue()).length();
-    int w1 = tmp.setNum(maxValue()).length();
-    if ( w1 > w )
-        w = w1;
-    w1 = tmp.setNum(minValue() + step()).length();
-    if ( w1 > w )
-        w = w1;
-    w1 = tmp.setNum(maxValue() - step()).length();
-    if ( w1 > w )
-        w = w1;
-
-    tmp.fill('9', w);
-
-    QFontMetrics fm(d_data->valueEdit->font());
-    w = fm.width(tmp) + 2;
-#if QT_VERSION >= 0x040000
-    if ( d_data->valueEdit->hasFrame() )
-        w += 2 * style()->pixelMetric(QStyle::PM_DefaultFrameWidth);
-#else
-    w += 2 * d_data->valueEdit->frameWidth(); 
-#endif
-
-    // Now we replace default sizeHint contribution of d_data->valueEdit by
-    // what we really need.
-
-    w += QWidget::sizeHint().width() - d_data->valueEdit->sizeHint().width();
-
-    const int h = qwtMin(QWidget::sizeHint().height(), 
-        d_data->valueEdit->minimumSizeHint().height());
-    return QSize(w, h);
-}
-
-//! returns the step size
-double QwtCounter::step() const
-{
-    return QwtDoubleRange::step();
-}
-    
-//! sets the step size
-void QwtCounter::setStep(double s)
-{
-    QwtDoubleRange::setStep(s);
-}
-
-//! returns the minimum value of the range
-double QwtCounter::minVal() const
-{
-    return minValue();
-}
-
-//! sets the minimum value of the range
-void QwtCounter::setMinValue(double m)
-{
-    setRange(m, maxValue(), step());
-}
-
-//! returns the maximum value of the range
-double QwtCounter::maxVal() const
-{
-    return QwtDoubleRange::maxValue();
-}
-
-//! sets the maximum value of the range
-void QwtCounter::setMaxValue(double m)
-{
-    setRange(minValue(), m, step());
-}
-
-//! set the number of increment steps for button 1
-void QwtCounter::setStepButton1(int nSteps)
-{
-    setIncSteps(Button1, nSteps);
-}
-
-//! returns the number of increment steps for button 1
-int QwtCounter::stepButton1() const
-{
-    return incSteps(Button1);
-}
-
-//! set the number of increment steps for button 2
-void QwtCounter::setStepButton2(int nSteps)
-{
-    setIncSteps(Button2, nSteps);
-}
-
-//! returns the number of increment steps for button 2
-int QwtCounter::stepButton2() const
-{
-    return incSteps(Button2);
-}
-
-//! set the number of increment steps for button 3
-void QwtCounter::setStepButton3(int nSteps)
-{
-    setIncSteps(Button3, nSteps);
-}
-
-//! returns the number of increment steps for button 3
-int QwtCounter::stepButton3() const
-{
-    return incSteps(Button3);
-}
-
-double QwtCounter::value() const
-{
-    return QwtDoubleRange::value();
-}
-
diff --git a/src/qwt/qwt_data.cpp b/src/qwt/qwt_data.cpp
deleted file mode 100644
index 55fb4f1..0000000
--- a/src/qwt/qwt_data.cpp
+++ /dev/null
@@ -1,294 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- * 
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-#include "qwt_math.h"
-#include "qwt_data.h"
-
-QwtData::QwtData()
-{
-}
-
-QwtData::~QwtData()
-{
-}
-
-/*!
-  Returns the bounding rectangle of the data. If there is
-  no bounding rect, like for empty data the rectangle is invalid:
-  QwtDoubleRect::isValid() == false
-
-  \warning This is an slow implementation iterating over all points. 
-           It is intended to be overloaded by derived classes. In case of
-           auto scaling boundingRect() is called for every replot, so it 
-           might be worth to implement a cache, or use x(0), x(size() - 1)
-           for ordered data ...
-*/
-QwtDoubleRect QwtData::boundingRect() const
-{
-    const size_t sz = size();
-
-    if ( sz <= 0 )
-        return QwtDoubleRect(1.0, 1.0, -2.0, -2.0); // invalid
-
-    double minX, maxX, minY, maxY;
-    minX = maxX = x(0);
-    minY = maxY = y(0);
-
-    for ( size_t i = 1; i < sz; i++ )
-    {
-        const double xv = x(i);
-        if ( xv < minX )
-            minX = xv;
-        if ( xv > maxX )
-            maxX = xv;
-
-        const double yv = y(i);
-        if ( yv < minY )
-            minY = yv;
-        if ( yv > maxY )
-            maxY = yv;
-    }
-    return QwtDoubleRect(minX, minY, maxX - minX, maxY - minY);
-}
-
-QwtDoublePointData::QwtDoublePointData(const QwtArray<QwtDoublePoint> &data):
-    d_data(data)
-{
-}
-
-//! Assignment 
-QwtDoublePointData& QwtDoublePointData::operator=(
-    const QwtDoublePointData &data)
-{
-    if (this != &data)
-    {
-        d_data = data.d_data;
-    }
-    return *this;
-}
-
-size_t QwtDoublePointData::size() const 
-{ 
-    return d_data.size(); 
-}
-
-double QwtDoublePointData::x(size_t i) const 
-{ 
-    return d_data[int(i)].x(); 
-}
-
-double QwtDoublePointData::y(size_t i) const 
-{ 
-    return d_data[int(i)].y(); 
-}
-
-const QwtArray<QwtDoublePoint> QwtDoublePointData::data() const
-{
-    return d_data;
-}
-
-QwtData *QwtDoublePointData::copy() const 
-{ 
-    return new QwtDoublePointData(d_data); 
-}
-
-/*!
-  Constructor
-  
-  \sa QwtCurve::setData and QwtPlot::setCurveData.
-*/
-QwtArrayData::QwtArrayData(
-        const QwtArray<double> &x, const QwtArray<double> &y): 
-    d_x(x), 
-    d_y(y)
-{
-}
-
-/*!
-  Constructor
-  
-  \sa QwtCurve::setData and QwtPlot::setCurveData.
-*/
-QwtArrayData::QwtArrayData(const double *x, const double *y, size_t size)
-{
-#if QT_VERSION >= 0x040000
-    d_x.resize(size);
-    qMemCopy(d_x.data(), x, size * sizeof(double));
-
-    d_y.resize(size);
-    qMemCopy(d_y.data(), y, size * sizeof(double));
-#else
-    d_x.detach();
-    d_x.duplicate(x, size);
-
-    d_y.detach();
-    d_y.duplicate(y, size);
-#endif
-}
-
-//! Assignment 
-QwtArrayData& QwtArrayData::operator=(const QwtArrayData &data)
-{
-    if (this != &data)
-    {
-        d_x = data.d_x;
-        d_y = data.d_y;
-    }
-    return *this;
-}
-
-size_t QwtArrayData::size() const 
-{ 
-    return qwtMin(d_x.size(), d_y.size()); 
-}
-
-double QwtArrayData::x(size_t i) const 
-{ 
-    return d_x[int(i)]; 
-}
-
-double QwtArrayData::y(size_t i) const 
-{ 
-    return d_y[int(i)]; 
-}
-
-const QwtArray<double> &QwtArrayData::xData() const
-{
-    return d_x;
-}
-
-const QwtArray<double> &QwtArrayData::yData() const
-{
-    return d_y;
-}
-
-QwtData *QwtArrayData::copy() const 
-{ 
-    return new QwtArrayData(d_x, d_y); 
-}
-
-/*!
-  Returns the bounding rectangle of the data. If there is
-  no bounding rect, like for empty data the rectangle is invalid:
-  QwtDoubleRect::isValid() == false
-*/
-QwtDoubleRect QwtArrayData::boundingRect() const
-{
-    const size_t sz = size();
-
-    if ( sz <= 0 )
-        return QwtDoubleRect(1.0, 1.0, -2.0, -2.0); // invalid
-
-    double minX, maxX, minY, maxY;
-    QwtArray<double>::ConstIterator xIt = d_x.begin();
-    QwtArray<double>::ConstIterator yIt = d_y.begin();
-    QwtArray<double>::ConstIterator end = d_x.begin() + sz;
-    minX = maxX = *xIt++;
-    minY = maxY = *yIt++;
-
-    while ( xIt < end )
-    {
-        const double xv = *xIt++;
-        if ( xv < minX )
-            minX = xv;
-        if ( xv > maxX )
-            maxX = xv;
-
-        const double yv = *yIt++;
-        if ( yv < minY )
-            minY = yv;
-        if ( yv > maxY )
-            maxY = yv;
-    }
-    return QwtDoubleRect(minX, minY, maxX - minX, maxY - minY);
-}
-
-QwtCPointerData::QwtCPointerData(const double *x, const double *y,
-                                 size_t size):
-    d_x(x), d_y(y), d_size(size)
-{
-}
-
-//! Assignment 
-QwtCPointerData& QwtCPointerData::operator=(const QwtCPointerData &data)
-{
-    if (this != &data)
-    {
-        d_x = data.d_x;
-        d_y = data.d_y;
-        d_size = data.d_size;
-    }
-    return *this;
-}
-
-size_t QwtCPointerData::size() const 
-{   
-    return d_size; 
-}
-
-double QwtCPointerData::x(size_t i) const 
-{ 
-    return d_x[int(i)]; 
-}
-
-double QwtCPointerData::y(size_t i) const 
-{ 
-    return d_y[int(i)]; 
-}
-
-const double *QwtCPointerData::xData() const
-{
-    return d_x;
-}
-
-const double *QwtCPointerData::yData() const
-{
-    return d_y;
-}
-
-QwtData *QwtCPointerData::copy() const 
-{
-    return new QwtCPointerData(d_x, d_y, d_size);
-}
-
-/*!
-  Returns the bounding rectangle of the data. If there is
-  no bounding rect, like for empty data the rectangle is invalid:
-  QwtDoubleRect::isValid() == false
-*/
-QwtDoubleRect QwtCPointerData::boundingRect() const
-{
-    const size_t sz = size();
-
-    if ( sz <= 0 )
-        return QwtDoubleRect(1.0, 1.0, -2.0, -2.0); // invalid
-
-    double minX, maxX, minY, maxY;
-    const double *xIt = d_x;
-    const double *yIt = d_y;
-    const double *end = d_x + sz;
-    minX = maxX = *xIt++;
-    minY = maxY = *yIt++;
-
-    while ( xIt < end )
-    {
-        const double xv = *xIt++;
-        if ( xv < minX )
-            minX = xv;
-        if ( xv > maxX )
-            maxX = xv;
-
-        const double yv = *yIt++;
-        if ( yv < minY )
-            minY = yv;
-        if ( yv > maxY )
-            maxY = yv;
-    }
-    return QwtDoubleRect(minX, minY, maxX - minX, maxY - minY);
-}
diff --git a/src/qwt/qwt_dial.cpp b/src/qwt/qwt_dial.cpp
deleted file mode 100644
index 0ee9ed1..0000000
--- a/src/qwt/qwt_dial.cpp
+++ /dev/null
@@ -1,1216 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-#include <math.h>
-#include <qpainter.h>
-#if QT_VERSION >= 0x040000
-#include <qpaintengine.h>
-#include <qbitmap.h>
-#include <qpalette.h>
-#endif
-#include <qpixmap.h>
-#include <qevent.h>
-#include "qwt_math.h"
-#include "qwt_scale_engine.h"
-#include "qwt_scale_map.h"
-#include "qwt_paint_buffer.h"
-#include "qwt_painter.h"
-#include "qwt_dial_needle.h"
-#include "qwt_dial.h"
-
-#if QT_VERSION >= 0x040000
-static void setAntialiasing(QPainter *painter, bool on)
-{
-    QPaintEngine *engine = painter->paintEngine();
-    if ( engine && engine->hasFeature(QPaintEngine::Antialiasing) )
-        painter->setRenderHint(QPainter::Antialiasing, on);
-}
-#else
-static void setAntialiasing(QPainter *, bool)
-{
-}
-#endif
-
-class QwtDial::PrivateData
-{
-public:
-    PrivateData():
-        visibleBackground(true),
-        frameShadow(Sunken),
-        lineWidth(0),
-        mode(RotateNeedle),
-        origin(90.0),
-        minScaleArc(0.0),
-        maxScaleArc(0.0),
-        scaleDraw(0),
-        maxMajIntv(36),
-        maxMinIntv(10),
-        scaleStep(0.0),
-        needle(0)
-    {
-    }
-
-    ~PrivateData()
-    {
-        delete scaleDraw;
-        delete needle;
-    }
-    bool visibleBackground;
-    Shadow frameShadow;
-    int lineWidth;
-
-    QwtDial::Mode mode;
-
-    double origin;
-    double minScaleArc;
-    double maxScaleArc;
-
-    QwtDialScaleDraw *scaleDraw;
-    int maxMajIntv;
-    int maxMinIntv;
-    double scaleStep;
-
-    QwtDialNeedle *needle;
-
-    static double previousDir;
-};
-
-double QwtDial::PrivateData::previousDir = -1.0;
-
-/*!
-  Constructor
-
-  \param parent Parent dial widget
-*/
-QwtDialScaleDraw::QwtDialScaleDraw(QwtDial *parent):
-    d_parent(parent),
-    d_penWidth(1)
-{
-}
-
-/*!
-  Set the pen width used for painting the scale
-
-  \param penWidth Pen width
-  \sa penWidth(), QwtDial::drawScale()
-*/
-    
-void QwtDialScaleDraw::setPenWidth(uint penWidth)
-{
-    d_penWidth = penWidth;
-}
-
-/*!
-  \return Pen width used for painting the scale
-  \sa setPenWidth, QwtDial::drawScale()
-*/
-uint QwtDialScaleDraw::penWidth() const
-{
-    return d_penWidth;
-}
-
-/*! 
-  Call QwtDial::scaleLabel of the parent dial widget.
-
-  \param value Value to display
-    
-  \sa QwtDial::scaleLabel
-*/  
-QwtText QwtDialScaleDraw::label(double value) const
-{
-    if ( d_parent == NULL )
-        return QwtRoundScaleDraw::label(value);
-
-    return d_parent->scaleLabel(value);
-}
-
-/*!
-  \brief Constructor
-  \param parent Parent widget
-
-  Create a dial widget with no scale and no needle. 
-  The default origin is 90.0 with no valid value. It accepts
-  mouse and keyboard inputs and has no step size. The default mode
-  is QwtDial::RotateNeedle.
-*/  
-
-QwtDial::QwtDial(QWidget* parent):
-    QwtAbstractSlider(Qt::Horizontal, parent)
-{
-    d_data = new PrivateData;
-
-#if QT_VERSION < 0x040000
-    setWFlags(Qt::WNoAutoErase);
-#endif 
-
-#if QT_VERSION >= 0x040000
-    using namespace Qt;
-#endif
-    setFocusPolicy(TabFocus);
-
-    QPalette p = palette();
-    for ( int i = 0; i < QPalette::NColorGroups; i++ )
-    {
-        const QPalette::ColorGroup cg = (QPalette::ColorGroup)i;
-
-        // Base: background color of the circle inside the frame.
-        // Foreground: background color of the circle inside the scale
-
-#if QT_VERSION < 0x040000
-        p.setColor(cg, QColorGroup::Foreground, 
-            p.color(cg, QColorGroup::Base));
-#else
-        p.setColor(cg, QPalette::Foreground, 
-            p.color(cg, QPalette::Base));
-#endif
-    }
-    setPalette(p);
-
-    d_data->scaleDraw = new QwtDialScaleDraw(this);
-    d_data->scaleDraw->setRadius(0);
-
-    setScaleArc(0.0, 360.0); // scale as a full circle
-    setRange(0.0, 360.0, 1.0, 10); // degrees as deafult
-}
-
-//!  Destructor
-QwtDial::~QwtDial() 
-{
-    delete d_data;
-}
-
-/*!
-  Show/Hide the area outside of the frame
-  \param show Show if true, hide if false
-
-  \sa QwtDial::hasVisibleBackground, QWidget::setMask
-  \warning When QwtDial is a toplevel widget the window
-           border might disappear too.
-*/
-void QwtDial::showBackground(bool show)
-{
-    if ( d_data->visibleBackground != show )
-    {
-        d_data->visibleBackground = show;
-        updateMask();
-    }
-}
-
-/*!
-  true when the area outside of the frame is visible
-
-  \sa QwtDial::showBackground, QWidget::setMask
-*/
-bool QwtDial::hasVisibleBackground() const 
-{ 
-    return d_data->visibleBackground; 
-}
-
-/*!
-  Sets the frame shadow value from the frame style.
-  \param shadow Frame shadow
-  \sa QwtDial::setLineWidth, QFrame::setFrameShadow
-*/
-void QwtDial::setFrameShadow(Shadow shadow)
-{
-    if ( shadow != d_data->frameShadow )
-    {
-        d_data->frameShadow = shadow;
-        if ( lineWidth() > 0 )
-            update();
-    }
-}
-
-/*!
-  \return Frame shadow
-  /sa QwtDial::setFrameShadow, QwtDial::lineWidth, 
-      QFrame::frameShadow
-*/
-QwtDial::Shadow QwtDial::frameShadow() const 
-{ 
-    return d_data->frameShadow; 
-}
-
-/*!
-  Sets the line width
-
-  \param lineWidth Line width
-  \sa QwtDial::setFrameShadow
-*/
-void QwtDial::setLineWidth(int lineWidth)
-{
-    if ( lineWidth < 0 )
-        lineWidth = 0;
-
-    if ( d_data->lineWidth != lineWidth )
-    {
-        d_data->lineWidth = lineWidth;
-        update();
-    }
-}
-
-/*!
-  \return Line width of the frame
-  \sa QwtDial::setLineWidth, QwtDial::frameShadow, 
-      QFrame::lineWidth
-*/
-int QwtDial::lineWidth() const 
-{ 
-    return d_data->lineWidth; 
-}
-
-/*!
-  \return bounding rect of the circle inside the frame
-  \sa QwtDial::setLineWidth, QwtDial::scaleContentsRect, QwtDial::boundingRect
-*/
-QRect QwtDial::contentsRect() const
-{
-    const int lw = lineWidth();
-
-    QRect r = boundingRect();
-    if ( lw > 0 )
-    {
-        r.setRect(r.x() + lw, r.y() + lw, 
-            r.width() - 2 * lw, r.height() - 2 * lw);
-    }
-    return r;
-}
-
-/*!
-  \return bounding rect of the dial including the frame
-  \sa QwtDial::setLineWidth, QwtDial::scaleContentsRect, QwtDial::contentsRect
-*/
-QRect QwtDial::boundingRect() const
-{
-    const int radius = qwtMin(width(), height()) / 2;
-
-    QRect r(0, 0, 2 * radius, 2 * radius);
-    r.moveCenter(rect().center());
-    return r;
-}
-
-/*!
-  \return rect inside the scale
-  \sa setLineWidth, QwtDial::boundingRect, QwtDial::contentsRect
-*/
-QRect QwtDial::scaleContentsRect() const
-{
-#if QT_VERSION < 0x040000
-    const QPen scalePen(colorGroup().text(), 0, Qt::NoPen);
-#else
-    const QPen scalePen(palette().text(), 0, Qt::NoPen);
-#endif
-
-    int scaleDist = 0;
-    if ( d_data->scaleDraw )
-    {
-        scaleDist = d_data->scaleDraw->extent(scalePen, font());
-        scaleDist++; // margin
-    }
-
-    const QRect rect = contentsRect();
-    return QRect(rect.x() + scaleDist, rect.y() + scaleDist,
-        rect.width() - 2 * scaleDist, rect.height() - 2 * scaleDist);
-}
-
-/*!
-  \brief Change the mode of the meter.
-  \param mode New mode 
-    
-  The value of the meter is indicated by the difference
-  between north of the scale and the direction of the needle.
-  In case of QwtDial::RotateNeedle north is pointing
-  to the origin() and the needle is rotating, in case of
-  QwtDial::RotateScale, the needle points to origin()
-  and the scale is rotating.
-    
-  The default mode is QwtDial::RotateNeedle.
-
-  \sa QwtDial::mode, QwtDial::setValue, QwtDial::setOrigin
-*/  
-void QwtDial::setMode(Mode mode)
-{   
-    if ( mode != d_data->mode )
-    {
-        d_data->mode = mode;
-        update(); 
-    }
-}       
-
-/*! 
-  \return mode of the dial.
-    
-  The value of the dial is indicated by the difference
-  between the origin and the direction of the needle.
-  In case of QwtDial::RotateNeedle the scale arc is fixed
-  to the origin() and the needle is rotating, in case of
-  QwtDial::RotateScale, the needle points to origin()
-  and the scale is rotating.
- 
-  The default mode is QwtDial::RotateNeedle.
-
-  \sa QwtDial::setMode, QwtDial::origin, QwtDial::setScaleArc, QwtDial::value
-*/
-QwtDial::Mode QwtDial::mode() const
-{
-    return d_data->mode;
-}
-
-/*! 
-    Sets whether it is possible to step the value from the highest value to 
-    the lowest value and vice versa to on.
-
-    \param wrapping en/disables wrapping
-
-    \sa QwtDial::wrapping, QwtDoubleRange::periodic
-    \note The meaning of wrapping is like the wrapping property of QSpinBox,
-          but not like it is used in QDial. 
-*/
-void QwtDial::setWrapping(bool wrapping)
-{
-    setPeriodic(wrapping);
-} 
-
-/*! 
-    wrapping() holds whether it is possible to step the value from the 
-    highest value to the lowest value and vice versa. 
-
-    \sa QwtDial::setWrapping, QwtDoubleRange::setPeriodic
-    \note The meaning of wrapping is like the wrapping property of QSpinBox,
-          but not like it is used in QDial. 
-*/ 
-bool QwtDial::wrapping() const
-{
-    return periodic();
-}
-
-//! Resize the dial widget
-void QwtDial::resizeEvent(QResizeEvent *e)
-{
-    QWidget::resizeEvent(e);
-
-    if ( !hasVisibleBackground() )
-        updateMask();
-}
-
-//! Repaint the dial 
-void QwtDial::paintEvent(QPaintEvent *e)
-{
-    const QRect &ur = e->rect();
-    if ( ur.isValid() )
-    {
-#if QT_VERSION < 0x040000
-        QwtPaintBuffer paintBuffer(this, ur);
-        QPainter &painter = *paintBuffer.painter();
-#else
-        QPainter painter(this);
-#endif
-
-        setAntialiasing(&painter, true);
-
-        painter.save();
-        drawContents(&painter);
-        painter.restore();
-
-        painter.save();
-        drawFrame(&painter);
-        painter.restore();
-
-        if ( hasFocus() )
-            drawFocusIndicator(&painter);
-    }
-}
-
-/*!
-  Draw a dotted round circle, if !isReadOnly()
-
-  \param painter Painter
-*/
-void QwtDial::drawFocusIndicator(QPainter *painter) const
-{
-    if ( !isReadOnly() )
-    {
-        QRect focusRect = contentsRect();
-
-        const int margin = 2;
-        focusRect.setRect( 
-            focusRect.x() + margin,
-            focusRect.y() + margin,
-            focusRect.width() - 2 * margin,
-            focusRect.height() - 2 * margin);
-
-#if QT_VERSION < 0x040000
-        QColor color = colorGroup().color(QColorGroup::Base);
-#else
-        QColor color = palette().color(QPalette::Base);
-#endif
-        if (color.isValid())
-        {
-            const QColor gray(Qt::gray);
-
-            int h, s, v;
-#if QT_VERSION < 0x040000
-            color.hsv(&h, &s, &v);
-#else
-            color.getHsv(&h, &s, &v);
-#endif
-            color = (v > 128) ? gray.dark(120) : gray.light(120);
-        }
-        else
-            color = Qt::darkGray;
-
-        painter->save();
-        painter->setBrush(Qt::NoBrush);
-        painter->setPen(QPen(color, 0, Qt::DotLine));
-        painter->drawEllipse(focusRect);
-        painter->restore();
-    }
-}
-
-/*!
-  Draw the frame around the dial
-
-  \param painter Painter
-  \sa QwtDial::lineWidth, QwtDial::frameShadow
-*/
-void QwtDial::drawFrame(QPainter *painter)
-{
-    const int lw = lineWidth();
-    const int off = (lw + 1) % 2;
-
-    QRect r = boundingRect();
-    r.setRect(r.x() + lw / 2 - off, r.y() + lw / 2 - off,
-        r.width() - lw + off + 1, r.height() - lw + off + 1);
-#if QT_VERSION >= 0x040000
-#ifdef __GNUC__
-#warning QwtPainter::drawRoundFrame 
-#endif
-    r.setX(r.x() + 1);
-    r.setY(r.y() + 1);
-    r.setWidth(r.width() - 2);
-    r.setHeight(r.height() - 2);
-#endif
-
-    if ( lw > 0 )
-    {
-        switch(d_data->frameShadow)
-        {
-            case QwtDial::Raised:
-#if QT_VERSION < 0x040000
-                QwtPainter::drawRoundFrame(painter, r, 
-                    lw, colorGroup(), false);
-#else
-                QwtPainter::drawRoundFrame(painter, r, 
-                    lw, palette(), false);
-#endif
-                break;
-            case QwtDial::Sunken:
-#if QT_VERSION < 0x040000
-                QwtPainter::drawRoundFrame(painter, r, 
-                    lw, colorGroup(), true);
-#else
-                QwtPainter::drawRoundFrame(painter, r, 
-                    lw, palette(), true);
-#endif
-                break;
-            default: // Plain
-            {
-                painter->save();
-                painter->setPen(QPen(Qt::black, lw));
-                painter->setBrush(Qt::NoBrush);
-                painter->drawEllipse(r);
-                painter->restore();
-            }
-        }
-    }
-}
-
-/*!
-  \brief Draw the contents inside the frame
- 
-  QColorGroup::Background is the background color outside of the frame.
-  QColorGroup::Base is the background color inside the frame.
-  QColorGroup::Foreground is the background color inside the scale.
-
-  \param painter Painter
-  \sa QwtDial::boundingRect, QwtDial::contentsRect,
-    QwtDial::scaleContentsRect, QWidget::setPalette
-*/
-void QwtDial::drawContents(QPainter *painter) const
-{
-#if QT_VERSION < 0x040000
-    if ( backgroundMode() == Qt::NoBackground || 
-        colorGroup().brush(QColorGroup::Base) != 
-            colorGroup().brush(QColorGroup::Background) )
-#else
-    if ( testAttribute(Qt::WA_NoSystemBackground) ||
-        palette().brush(QPalette::Base) != 
-            palette().brush(QPalette::Background) )
-#endif
-    {
-
-        const QRect br = boundingRect();
-
-        painter->save();
-        painter->setPen(Qt::NoPen);
-
-#if QT_VERSION < 0x040000
-        painter->setBrush(colorGroup().brush(QColorGroup::Base));
-#else
-        painter->setBrush(palette().brush(QPalette::Base));
-#endif
-
-        painter->drawEllipse(br);
-        painter->restore();
-    }
-
-
-    const QRect insideScaleRect = scaleContentsRect();
-#if QT_VERSION < 0x040000
-    if ( colorGroup().brush(QColorGroup::Foreground) !=
-        colorGroup().brush(QColorGroup::Base) )
-#else
-    if ( palette().brush(QPalette::Foreground) !=
-        palette().brush(QPalette::Base) )
-#endif
-    {
-        painter->save();
-        painter->setPen(Qt::NoPen);
-
-#if QT_VERSION < 0x040000
-        painter->setBrush(colorGroup().brush(QColorGroup::Foreground));
-#else
-        painter->setBrush(palette().brush(QPalette::Foreground));
-#endif
-
-        painter->drawEllipse(insideScaleRect.x() - 1, insideScaleRect.y() - 1,
-            insideScaleRect.width(), insideScaleRect.height() );
-
-        painter->restore();
-    }
-
-    const QPoint center = insideScaleRect.center();
-    const int radius = insideScaleRect.width() / 2;
-
-    painter->save();
-    drawScaleContents(painter, center, radius);
-    painter->restore();
-
-    double direction = d_data->origin;
-
-    if (isValid())
-    {
-        direction = d_data->origin + d_data->minScaleArc;
-        if ( maxValue() > minValue() && d_data->maxScaleArc > d_data->minScaleArc )
-        {
-            const double ratio = 
-                (value() - minValue()) / (maxValue() - minValue());
-            direction += ratio * (d_data->maxScaleArc - d_data->minScaleArc);
-        }
-
-        if ( direction >= 360.0 )
-            direction -= 360.0;
-    }
-
-    double origin = d_data->origin;
-    if ( mode() == RotateScale )
-    {
-        origin -= direction - d_data->origin;
-        direction = d_data->origin;
-    }
-
-    painter->save();
-    drawScale(painter, center, radius, origin, d_data->minScaleArc, d_data->maxScaleArc);
-    painter->restore();
-
-    if ( isValid() )
-    {
-        QPalette::ColorGroup cg;
-        if ( isEnabled() )
-            cg = hasFocus() ? QPalette::Active : QPalette::Inactive;
-        else
-            cg = QPalette::Disabled;
-
-        painter->save();
-        drawNeedle(painter, center, radius, direction, cg);
-        painter->restore();
-    }
-}
-
-/*!
-  Draw the needle
-
-  Qwt is missing a set of good looking needles.
-  Contributions are very welcome.
-
-  \param painter Painter
-  \param center Center of the dial
-  \param radius Length for the needle
-  \param direction Direction of the needle in degrees, counter clockwise
-  \param cg ColorGroup
-*/
-void QwtDial::drawNeedle(QPainter *painter, const QPoint &center, 
-    int radius, double direction, QPalette::ColorGroup cg) const
-{
-    if ( d_data->needle )
-    {
-        direction = 360.0 - direction; // counter clockwise
-        d_data->needle->draw(painter, center, radius, direction, cg);
-    }
-}
-
-/*!
-  Draw the scale
-
-  \param painter Painter
-  \param center Center of the dial
-  \param radius Radius of the scale
-  \param origin Origin of the scale
-  \param minArc Minimum of the arc 
-  \param maxArc Minimum of the arc 
-  
-  \sa QwtAbstractScaleDraw::setAngleRange
-*/
-void QwtDial::drawScale(QPainter *painter, const QPoint &center,
-    int radius, double origin, double minArc, double maxArc) const
-{
-    if ( d_data->scaleDraw == NULL )
-        return;
-
-    origin -= 270.0; // hardcoded origin of QwtScaleDraw
-
-    double angle = maxArc - minArc;
-    if ( angle > 360.0 )
-        angle = fmod(angle, 360.0);
-
-    minArc += origin;
-    if ( minArc < -360.0 )
-        minArc = fmod(minArc, 360.0);
-    
-    maxArc = minArc + angle;
-    if ( maxArc > 360.0 )
-    {
-        // QwtAbstractScaleDraw::setAngleRange accepts only values
-        // in the range [-360.0..360.0]
-        minArc -= 360.0;
-        maxArc -= 360.0;
-    }
-    
-    painter->setFont(font());
-
-    d_data->scaleDraw->setAngleRange(minArc, maxArc);
-    d_data->scaleDraw->setRadius(radius);
-    d_data->scaleDraw->moveCenter(center);
-
-#if QT_VERSION < 0x040000
-    QColorGroup cg = colorGroup();
-
-    const QColor textColor = cg.color(QColorGroup::Text);
-    cg.setColor(QColorGroup::Foreground, textColor);
-    painter->setPen(QPen(textColor, d_data->scaleDraw->penWidth()));
-    
-    d_data->scaleDraw->draw(painter, cg);
-#else
-    QPalette pal = palette();
-
-    const QColor textColor = pal.color(QPalette::Text);
-    pal.setColor(QPalette::Foreground, textColor); //ticks, backbone
-    
-    painter->setPen(QPen(textColor, d_data->scaleDraw->penWidth()));
-
-    d_data->scaleDraw->draw(painter, pal);
-#endif
-}
-
-void QwtDial::drawScaleContents(QPainter *, 
-    const QPoint &, int) const
-{
-    // empty default implementation
-}
-
-/*!
-  Set a needle for the dial
-
-  Qwt is missing a set of good looking needles. 
-  Contributions are very welcome.
-
-  \param needle Needle
-  \warning The needle will be deleted, when a different needle is
-    set or in ~QwtDial
-*/
-void QwtDial::setNeedle(QwtDialNeedle *needle)
-{
-    if ( needle != d_data->needle )
-    {
-        if ( d_data->needle )
-            delete d_data->needle;
-
-        d_data->needle = needle;
-        update();
-    }
-}
-
-/*! 
-  \return needle
-  \sa QwtDial::setNeedle
-*/
-const QwtDialNeedle *QwtDial::needle() const 
-{ 
-    return d_data->needle; 
-}
-
-/*! 
-  \return needle
-  \sa QwtDial::setNeedle
-*/
-QwtDialNeedle *QwtDial::needle() 
-{ 
-    return d_data->needle; 
-}
-
-//! QwtDoubleRange update hook
-void QwtDial::rangeChange()
-{
-    updateScale();
-}
-
-/*! 
-  Update the scale with the current attributes
-  \sa QwtDial::setScale
-*/
-void QwtDial::updateScale()
-{
-    if ( d_data->scaleDraw )
-    {
-        QwtLinearScaleEngine scaleEngine;
-
-        const QwtScaleDiv scaleDiv = scaleEngine.divideScale(
-            minValue(), maxValue(), 
-            d_data->maxMajIntv, d_data->maxMinIntv, d_data->scaleStep);
-
-        d_data->scaleDraw->setTransformation(scaleEngine.transformation());
-        d_data->scaleDraw->setScaleDiv(scaleDiv);
-    }
-}
-
-//! Return the scale draw
-QwtDialScaleDraw *QwtDial::scaleDraw() 
-{ 
-    return d_data->scaleDraw; 
-}
-
-//! Return the scale draw
-const QwtDialScaleDraw *QwtDial::scaleDraw() const 
-{ 
-    return d_data->scaleDraw; 
-}
-
-/*!
-  Set an individual scale draw
-
-  \warning The previous scale draw is deleted
-*/
-void QwtDial::setScaleDraw(QwtDialScaleDraw *scaleDraw)
-{
-    if ( scaleDraw != d_data->scaleDraw )
-    {
-        if ( d_data->scaleDraw )
-            delete d_data->scaleDraw;
-    
-        d_data->scaleDraw = scaleDraw;
-        updateScale();
-        update();
-    }
-}
-
-/*!
-  Change the intervals of the scale
-  \sa QwtAbstractScaleDraw::setScale
-*/
-void QwtDial::setScale(int maxMajIntv, int maxMinIntv, double step)
-{
-    d_data->maxMajIntv = maxMajIntv;
-    d_data->maxMinIntv = maxMinIntv;
-    d_data->scaleStep = step;
-
-    updateScale();
-}
-
-/*!
-  A wrapper method for accessing the scale draw. 
-
-  - options == 0\n
-    No visible scale: setScaleDraw(NULL)
-  - options & ScaleBackbone\n
-    En/disable the backbone of the scale.
-  - options & ScaleTicks\n
-    En/disable the ticks of the scale.
-  - options & ScaleLabel\n
-    En/disable scale labels
-    
-  \sa QwtAbstractScaleDraw::enableComponent 
-*/
-void QwtDial::setScaleOptions(int options)
-{
-    if ( options == 0 )
-        setScaleDraw(NULL);
-
-    QwtDialScaleDraw *sd = d_data->scaleDraw;
-    if ( sd == NULL )
-        return;
-
-    sd->enableComponent(QwtAbstractScaleDraw::Backbone, 
-        options & ScaleBackbone);
-
-    sd->enableComponent(QwtAbstractScaleDraw::Ticks, 
-        options & ScaleTicks);
-    
-    sd->enableComponent(QwtAbstractScaleDraw::Labels, 
-        options & ScaleLabel);
-}
-
-//! See: QwtAbstractScaleDraw::setTickLength, QwtDialScaleDraw::setPenWidth
-void QwtDial::setScaleTicks(int minLen, int medLen, 
-    int majLen, int penWidth)
-{
-    QwtDialScaleDraw *sd = d_data->scaleDraw;
-    if ( sd )
-    {
-        sd->setTickLength(QwtScaleDiv::MinorTick, minLen);
-        sd->setTickLength(QwtScaleDiv::MediumTick, medLen);
-        sd->setTickLength(QwtScaleDiv::MajorTick, majLen);
-        sd->setPenWidth(penWidth);
-    }
-}
-
-/*!
-   \return the label for a value
-*/
-QwtText QwtDial::scaleLabel(double value) const
-{
-#if 1
-    if ( value == -0 )
-        value = 0;
-#endif
-
-    return QString::number(value);
-}
-
-//! Return the lower limit of the scale arc
-double QwtDial::minScaleArc() const 
-{ 
-    return d_data->minScaleArc; 
-}
-
-//! Return the upper limit of the scale arc
-double QwtDial::maxScaleArc() const 
-{ 
-    return d_data->maxScaleArc; 
-}
-
-/*!
-  \brief Change the origin 
- 
-  The origin is the angle where scale and needle is relative to.
-
-  \param origin New origin
-  \sa QwtDial::origin()
-*/
-void QwtDial::setOrigin(double origin)
-{
-    d_data->origin = origin;
-    update();
-}
-
-/*!
-  The origin is the angle where scale and needle is relative to.
-
-  \return Origin of the dial
-  \sa QwtDial::setOrigin()
-*/
-double QwtDial::origin() const
-{
-    return d_data->origin;
-}
-
-/*!
-  Change the arc of the scale
-
-  \param minArc Lower limit
-  \param maxArc Upper limit
-*/
-void QwtDial::setScaleArc(double minArc, double maxArc)
-{
-    if ( minArc != 360.0 && minArc != -360.0 )
-        minArc = fmod(minArc, 360.0);
-    if ( maxArc != 360.0 && maxArc != -360.0 )
-        maxArc = fmod(maxArc, 360.0);
-
-    d_data->minScaleArc = qwtMin(minArc, maxArc);
-    d_data->maxScaleArc = qwtMax(minArc, maxArc);
-    if ( d_data->maxScaleArc - d_data->minScaleArc > 360.0 )
-        d_data->maxScaleArc = d_data->minScaleArc + 360.0;
-    
-    update();
-}
-
-//! QwtDoubleRange update hook
-void QwtDial::valueChange()
-{
-    update();
-    QwtAbstractSlider::valueChange();
-}
-
-/*!
-  \return QwtDial::sizeHint()
-*/
-QSize QwtDial::sizeHint() const
-{
-    int sh = 0;
-    if ( d_data->scaleDraw )
-        sh = d_data->scaleDraw->extent( QPen(), font() );
-
-    const int d = 6 * sh + 2 * lineWidth();
-    
-    return QSize( d, d );
-}
-
-/*! 
-  \brief Return a minimum size hint
-  \warning The return value of QwtDial::minimumSizeHint() depends on the
-           font and the scale.
-*/  
-QSize QwtDial::minimumSizeHint() const
-{   
-    int sh = 0;
-    if ( d_data->scaleDraw )
-        sh = d_data->scaleDraw->extent(QPen(), font() );
-
-    const int d = 3 * sh + 2 * lineWidth();
-    
-    return QSize( d, d );
-}
-
-static double line2Radians(const QPoint &p1, const QPoint &p2)
-{
-    const QPoint p = p2 - p1;
-
-    double angle;
-    if ( p.x() == 0 )
-        angle = ( p.y() <= 0 ) ? M_PI_2 : 3 * M_PI_2;
-    else
-    {
-        angle = atan(double(-p.y()) / double(p.x()));
-        if ( p.x() < 0 )
-            angle += M_PI;
-        if ( angle < 0.0 )
-            angle += 2 * M_PI;
-    }
-    return 360.0 - angle * 180.0 / M_PI;
-}
-
-/*!
-  Find the value for a given position
-
-  \param pos
-  \return Value
-*/
-double QwtDial::getValue(const QPoint &pos)
-{
-    if ( d_data->maxScaleArc == d_data->minScaleArc || maxValue() == minValue() )
-        return minValue();
-
-    double dir = line2Radians(rect().center(), pos) - d_data->origin;
-    if ( dir < 0.0 )
-        dir += 360.0;
-
-    if ( mode() == RotateScale )
-        dir = 360.0 - dir;
-
-    // The position might be in the area that is outside the scale arc.
-    // We need the range of the scale if it was a complete circle.
-
-    const double completeCircle = 360.0 / (d_data->maxScaleArc - d_data->minScaleArc) 
-        * (maxValue() - minValue());
-
-    double posValue = minValue() + completeCircle * dir / 360.0;
-
-    if ( scrollMode() == ScrMouse )
-    {
-        if ( d_data->previousDir >= 0.0 ) // valid direction
-        {
-            // We have to find out whether the mouse is moving
-            // clock or counter clockwise
-
-            bool clockWise = false;
-
-            const double angle = dir - d_data->previousDir;
-            if ( (angle >= 0.0 && angle <= 180.0) || angle < -180.0 )
-                clockWise = true;
-
-            if ( clockWise )
-            {
-                if ( dir < d_data->previousDir && mouseOffset() > 0.0 )
-                {
-                    // We passed 360 -> 0
-                    setMouseOffset(mouseOffset() - completeCircle);
-                }
-
-                if ( wrapping() )
-                {
-                    if ( posValue - mouseOffset() > maxValue() )
-                    {
-                        // We passed maxValue and the value will be set
-                        // to minValue. We have to adjust the mouseOffset.
-
-                        setMouseOffset(posValue - minValue());
-                    }
-                }
-                else
-                {
-                    if ( posValue - mouseOffset() > maxValue() ||
-                        value() == maxValue() )
-                    {
-                        // We fix the value at maxValue by adjusting
-                        // the mouse offset.
-
-                        setMouseOffset(posValue - maxValue());
-                    }
-                }
-            }
-            else
-            {
-                if ( dir > d_data->previousDir && mouseOffset() < 0.0 )
-                {
-                    // We passed 0 -> 360 
-                    setMouseOffset(mouseOffset() + completeCircle);    
-                }
-
-                if ( wrapping() )
-                {
-                    if ( posValue - mouseOffset() < minValue() )
-                    {
-                        // We passed minValue and the value will be set
-                        // to maxValue. We have to adjust the mouseOffset.
-
-                        setMouseOffset(posValue - maxValue());
-                    }
-                }
-                else
-                {
-                    if ( posValue - mouseOffset() < minValue() ||
-                        value() == minValue() )
-                    {
-                        // We fix the value at minValue by adjusting
-                        // the mouse offset.
-
-                        setMouseOffset(posValue - minValue());
-                    }
-                }
-            }
-        }
-        d_data->previousDir = dir;
-    }
-
-    return posValue;
-}
-
-/*!
-  \sa QwtAbstractSlider::getScrollMode
-*/
-void QwtDial::getScrollMode(const QPoint &p, int &scrollMode, int &direction)
-{
-    direction = 0;
-    scrollMode = ScrNone;
-
-    const QRegion region(contentsRect(), QRegion::Ellipse);
-    if ( region.contains(p) && p != rect().center() )
-    {
-        scrollMode = ScrMouse;
-        d_data->previousDir = -1.0;
-    }
-}
-
-/*! 
-  Handles key events
-
-  - Key_Down, KeyLeft\n
-    Decrement by 1
-  - Key_Prior\n
-    Decrement by pageSize()
-  - Key_Home\n
-    Set the value to minValue()
-
-  - Key_Up, KeyRight\n
-    Increment by 1
-  - Key_Next\n
-    Increment by pageSize()
-  - Key_End\n
-    Set the value to maxValue()
-
-  \sa isReadOnly()
-*/
-void QwtDial::keyPressEvent(QKeyEvent *e)
-{
-    if ( isReadOnly() )
-    {
-        e->ignore();
-        return;
-    }
-
-    if ( !isValid() )
-        return;
-
-    double previous = prevValue();
-    switch ( e->key() )
-    {
-        case Qt::Key_Down:
-        case Qt::Key_Left:
-            QwtDoubleRange::incValue(-1);
-            break;
-#if QT_VERSION < 0x040000
-        case Qt::Key_Prior:
-#else
-        case Qt::Key_PageUp:
-#endif
-            QwtDoubleRange::incValue(-pageSize());
-            break;
-        case Qt::Key_Home:
-            setValue(minValue());
-            break;
-
-        case Qt::Key_Up:
-        case Qt::Key_Right:
-            QwtDoubleRange::incValue(1);
-            break;
-#if QT_VERSION < 0x040000
-        case Qt::Key_Next:
-#else
-        case Qt::Key_PageDown:
-#endif
-            QwtDoubleRange::incValue(pageSize());
-            break;
-        case Qt::Key_End:
-            setValue(maxValue());
-            break;
-        default:;
-            e->ignore();
-    }
-
-    if (value() != previous)
-        emit sliderMoved(value());
-}
-
-void QwtDial::updateMask()
-{
-    if ( d_data->visibleBackground )
-        clearMask();
-    else
-        setMask(QRegion(boundingRect(), QRegion::Ellipse));
-}
diff --git a/src/qwt/qwt_dial_needle.cpp b/src/qwt/qwt_dial_needle.cpp
deleted file mode 100644
index 0375756..0000000
--- a/src/qwt/qwt_dial_needle.cpp
+++ /dev/null
@@ -1,546 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-#include <math.h>
-#include <qapplication.h>
-#include <qpainter.h>
-#include "qwt_math.h"
-#include "qwt_painter.h"
-#include "qwt_dial_needle.h"
-
-#if QT_VERSION < 0x040000
-#include <qpointarray.h>
-#define QwtPointArray QPointArray
-typedef QColorGroup QwtPalette;
-#else
-#include <qpolygon.h>
-#define QwtPointArray QPolygon
-typedef QPalette QwtPalette;
-#endif
-
-//! Constructor
-QwtDialNeedle::QwtDialNeedle():
-    d_palette(QApplication::palette())
-{
-}
-
-//! Destructor
-QwtDialNeedle::~QwtDialNeedle() 
-{
-}
-
-/*!
-    Sets the palette for the needle.
-
-    \param palette New Palette
-*/
-void QwtDialNeedle::setPalette(const QPalette &palette) 
-{ 
-    d_palette = palette; 
-}
-
-/*!
-  \return the palette of the needle.
-*/
-const QPalette &QwtDialNeedle::palette() const 
-{ 
-    return d_palette; 
-}
-
-//!  Draw the knob 
-void QwtDialNeedle::drawKnob(QPainter *painter,
-    const QPoint &pos, int width, const QBrush &brush, bool sunken)
-{
-    painter->save();
-
-    QRect rect(0, 0, width, width);
-    rect.moveCenter(pos);
-
-    painter->setPen(Qt::NoPen);
-    painter->setBrush(brush);
-    painter->drawEllipse(rect);
-
-    painter->setBrush(Qt::NoBrush);
-
-    const int colorOffset = 20;
-
-    int startAngle = 45;
-    if ( sunken )
-        startAngle += 180;
-
-    QPen pen;
-    pen.setWidth(1);
-
-    pen.setColor(brush.color().dark(100 - colorOffset));
-    painter->setPen(pen);
-    painter->drawArc(rect, startAngle * 16, 180 * 16);
-
-    pen.setColor(brush.color().dark(100 + colorOffset));
-    painter->setPen(pen);
-    painter->drawArc(rect, (startAngle + 180) * 16, 180 * 16);
-
-    painter->restore();
-}
-
-/*!
-  Constructor
-*/
-QwtDialSimpleNeedle::QwtDialSimpleNeedle(Style style, bool hasKnob, 
-        const QColor &mid, const QColor &base):
-    d_style(style),
-    d_hasKnob(hasKnob),
-    d_width(-1)
-{
-    QPalette palette;
-    for ( int i = 0; i < QPalette::NColorGroups; i++ )
-    {
-        palette.setColor((QPalette::ColorGroup)i,
-            QwtPalette::Mid, mid);
-        palette.setColor((QPalette::ColorGroup)i,
-            QwtPalette::Base, base);
-    }
-
-    setPalette(palette);
-}
-
-//! Set the width of the needle
-void QwtDialSimpleNeedle::setWidth(int width)
-{
-    d_width = width;
-}
-
-/*!
-  \return the width of the needle
-*/
-int QwtDialSimpleNeedle::width() const
-{
-    return d_width;
-}
-
-/*!
- Draw the needle
-
- \param painter Painter
- \param center Center of the dial, start position for the needle
- \param length Length of the needle
- \param direction Direction of the needle, in degrees counter clockwise
- \param colorGroup Color group, used for painting
-*/
-void QwtDialSimpleNeedle::draw(QPainter *painter, const QPoint &center,
-    int length, double direction, QPalette::ColorGroup colorGroup) const
-{
-    if ( d_style == Arrow )
-    {
-        drawArrowNeedle(painter, palette(), colorGroup,
-            center, length, d_width, direction, d_hasKnob);
-    }
-    else
-    {
-        drawRayNeedle(painter, palette(), colorGroup, 
-            center, length, d_width, direction, d_hasKnob); 
-    }
-}
-
-/*!
-  Draw a needle looking like a ray
-*/
-void QwtDialSimpleNeedle::drawRayNeedle(QPainter *painter, 
-    const QPalette &palette, QPalette::ColorGroup colorGroup,
-    const QPoint &center, int length, int width, double direction, 
-    bool hasKnob)
-{
-    if ( width <= 0 )
-        width = 5;
-
-    direction *= M_PI / 180.0;
-
-    painter->save();
-
-    const QPoint p1(center.x() + 1, center.y() + 2);
-    const QPoint p2 = qwtPolar2Pos(p1, length, direction);
-
-    if ( width == 1 )
-    {
-        const QColor midColor =
-            palette.color(colorGroup, QwtPalette::Mid);
-
-        painter->setPen(QPen(midColor, 1));
-        painter->drawLine(p1, p2);
-    }
-    else
-    {
-        QwtPointArray pa(4);
-        pa.setPoint(0, qwtPolar2Pos(p1, width / 2, direction + M_PI_2));
-        pa.setPoint(1, qwtPolar2Pos(p2, width / 2, direction + M_PI_2));
-        pa.setPoint(2, qwtPolar2Pos(p2, width / 2, direction - M_PI_2));
-        pa.setPoint(3, qwtPolar2Pos(p1, width / 2, direction - M_PI_2));
-
-        painter->setPen(Qt::NoPen);
-        painter->setBrush(palette.brush(colorGroup, QwtPalette::Mid));
-        painter->drawPolygon(pa);
-    }
-    if ( hasKnob )
-    {
-        int knobWidth = qwtMax(qRound(width * 0.7), 5);
-        if ( knobWidth % 2 == 0 )
-            knobWidth++;
-
-        drawKnob(painter, center, knobWidth, 
-            palette.brush(colorGroup, QwtPalette::Base), 
-            false);
-    }
-
-    painter->restore();
-}
-
-/*!
-  Draw a needle looking like an arrow
-*/
-void QwtDialSimpleNeedle::drawArrowNeedle(QPainter *painter, 
-    const QPalette &palette, QPalette::ColorGroup colorGroup,
-    const QPoint &center, int length, int width,
-    double direction, bool hasKnob)
-{
-    direction *= M_PI / 180.0;
-
-    painter->save();
-
-    if ( width <= 0 )
-    {
-        width = (int)qwtMax(length * 0.06, 9.0);
-        if ( width % 2 == 0 )
-            width++;
-    }
-
-    const int peak = 3;
-    const QPoint p1(center.x() + 1, center.y() + 1);
-    const QPoint p2 = qwtPolar2Pos(p1, length - peak, direction);
-    const QPoint p3 = qwtPolar2Pos(p1, length, direction);
-
-    QwtPointArray pa(5);
-    pa.setPoint(0, qwtPolar2Pos(p1, width / 2, direction - M_PI_2));
-    pa.setPoint(1, qwtPolar2Pos(p2, 1, direction - M_PI_2));
-    pa.setPoint(2, p3);
-    pa.setPoint(3, qwtPolar2Pos(p2, 1, direction + M_PI_2));
-    pa.setPoint(4, qwtPolar2Pos(p1, width / 2, direction + M_PI_2));
-
-    painter->setPen(Qt::NoPen);
-    painter->setBrush(palette.brush(colorGroup, QwtPalette::Mid));
-    painter->drawPolygon(pa);
-
-    QwtPointArray shadowPa(3);
-
-    const int colorOffset = 10;
-
-    int i;
-    for ( i = 0; i < 3; i++ )
-        shadowPa.setPoint(i, pa[i]);
-
-    const QColor midColor = palette.color(colorGroup, QwtPalette::Mid);
-
-    painter->setPen(midColor.dark(100 + colorOffset));
-    painter->drawPolyline(shadowPa);
-
-    for ( i = 0; i < 3; i++ )
-        shadowPa.setPoint(i, pa[i + 2]);
-
-    painter->setPen(midColor.dark(100 - colorOffset));
-    painter->drawPolyline(shadowPa);
-
-    if ( hasKnob )
-    {
-        drawKnob(painter, center, qRound(width * 1.3), 
-            palette.brush(colorGroup, QwtPalette::Base),
-            false);
-    }
-
-    painter->restore();
-}
-
-//! Constructor
-
-QwtCompassMagnetNeedle::QwtCompassMagnetNeedle(Style style,
-        const QColor &light, const QColor &dark):
-    d_style(style)
-{   
-    QPalette palette;
-    for ( int i = 0; i < QPalette::NColorGroups; i++ )
-    {
-        palette.setColor((QPalette::ColorGroup)i,
-            QwtPalette::Light, light);
-        palette.setColor((QPalette::ColorGroup)i,
-            QwtPalette::Dark, dark);
-        palette.setColor((QPalette::ColorGroup)i,
-            QwtPalette::Base, Qt::darkGray);
-    }
-
-    setPalette(palette); 
-}
-
-/*!
-    Draw the needle
-
-    \param painter Painter
-    \param center Center of the dial, start position for the needle
-    \param length Length of the needle
-    \param direction Direction of the needle, in degrees counter clockwise
-    \param colorGroup Color group, used for painting
-*/
-void QwtCompassMagnetNeedle::draw(QPainter *painter, const QPoint &center,
-    int length, double direction, QPalette::ColorGroup colorGroup) const
-{
-    if ( d_style == ThinStyle )
-    {
-        drawThinNeedle(painter, palette(), colorGroup, 
-            center, length, direction); 
-    }
-    else
-    {
-        drawTriangleNeedle(painter, palette(), colorGroup,
-            center, length, direction);
-    }
-}
-
-/*!
-  Draw a compass needle 
-*/
-void QwtCompassMagnetNeedle::drawTriangleNeedle(QPainter *painter, 
-    const QPalette &palette, QPalette::ColorGroup colorGroup,
-    const QPoint &center, int length, double direction) 
-{
-    const QBrush darkBrush = palette.brush(colorGroup, QwtPalette::Dark);
-    const QBrush lightBrush = palette.brush(colorGroup, QwtPalette::Light);
-
-    QBrush brush;
-
-    const int width = qRound(length / 3.0);
-    const int colorOffset =  10;
-
-    painter->save();
-    painter->setPen(Qt::NoPen);
-
-    const QPoint arrowCenter(center.x() + 1, center.y() + 1);
-
-    QwtPointArray pa(3);
-    pa.setPoint(0, arrowCenter);
-    pa.setPoint(1, qwtDegree2Pos(arrowCenter, length, direction));
-
-    pa.setPoint(2, qwtDegree2Pos(arrowCenter, width / 2, direction + 90.0));
-
-    brush = darkBrush;
-    brush.setColor(brush.color().dark(100 + colorOffset));
-    painter->setBrush(brush);
-    painter->drawPolygon(pa);
-
-    pa.setPoint(2, qwtDegree2Pos(arrowCenter, width / 2, direction - 90.0));
-
-    brush = darkBrush;
-    brush.setColor(brush.color().dark(100 - colorOffset));
-    painter->setBrush(brush);
-    painter->drawPolygon(pa);
-
-    // --
-
-    pa.setPoint(1, qwtDegree2Pos(arrowCenter, length, direction + 180.0));
-
-    pa.setPoint(2, qwtDegree2Pos(arrowCenter, width / 2, direction + 90.0));
-
-    brush = lightBrush;
-    brush.setColor(brush.color().dark(100 + colorOffset));
-    painter->setBrush(brush);
-    painter->drawPolygon(pa);
-
-    pa.setPoint(2, qwtDegree2Pos(arrowCenter, width / 2, direction - 90.0));
-
-    brush = lightBrush;
-    brush.setColor(brush.color().dark(100 - colorOffset));
-    painter->setBrush(brush);
-    painter->drawPolygon(pa);
-
-    painter->restore();
-}
-
-/*!
-  Draw a compass needle 
-*/
-void QwtCompassMagnetNeedle::drawThinNeedle(QPainter *painter, 
-    const QPalette &palette, QPalette::ColorGroup colorGroup,
-    const QPoint &center, int length, double direction) 
-{
-    const QBrush darkBrush = palette.brush(colorGroup, QwtPalette::Dark);
-    const QBrush lightBrush = palette.brush(colorGroup, QwtPalette::Light);
-    const QBrush baseBrush = palette.brush(colorGroup, QwtPalette::Base);
-
-    const int colorOffset = 10;
-    const int width = qwtMax(qRound(length / 6.0), 3);
-
-    painter->save();
-
-    const QPoint arrowCenter(center.x() + 1, center.y() + 1);
-
-    drawPointer(painter, darkBrush, colorOffset, 
-        arrowCenter, length, width, direction);
-    drawPointer(painter, lightBrush, -colorOffset, 
-        arrowCenter, length, width, direction + 180.0);
-    
-    drawKnob(painter, arrowCenter, width, baseBrush, true);
-
-    painter->restore();
-}
-
-/*!
-  Draw a compass needle 
-*/
-void QwtCompassMagnetNeedle::drawPointer(
-    QPainter *painter, const QBrush &brush,
-    int colorOffset, const QPoint &center, int length, 
-    int width, double direction)
-{
-    painter->save();
-
-    const int peak = qwtMax(qRound(length / 10.0), 5);
-
-    const int knobWidth = width + 8;
-    QRect knobRect(0, 0, knobWidth, knobWidth);
-    knobRect.moveCenter(center);
-
-    QwtPointArray pa(5);
-
-    pa.setPoint(0, qwtDegree2Pos(center, width / 2, direction + 90.0));
-    pa.setPoint(1, center);
-    pa.setPoint(2, qwtDegree2Pos(pa.point(1), length - peak, direction));
-    pa.setPoint(3, qwtDegree2Pos(center, length, direction));
-    pa.setPoint(4, qwtDegree2Pos(pa.point(0), length - peak, direction));
-
-    painter->setPen(Qt::NoPen);
-
-    QBrush darkBrush = brush;
-    darkBrush.setColor(darkBrush.color().dark(100 + colorOffset));
-    painter->setBrush(darkBrush);
-    painter->drawPolygon(pa);
-    painter->drawPie(knobRect, qRound(direction * 16), 90 * 16);
-
-    pa.setPoint(0, qwtDegree2Pos(center, width / 2, direction - 90.0));
-    pa.setPoint(4, qwtDegree2Pos(pa.point(0), length - peak, direction));
-
-    QBrush lightBrush = brush;
-    lightBrush.setColor(lightBrush.color().dark(100 - colorOffset));
-    painter->setBrush(lightBrush);
-    painter->drawPolygon(pa);
-    painter->drawPie(knobRect, qRound(direction * 16), -90 * 16);
-
-    painter->restore();
-}
-
-//! Constructor
-
-QwtCompassWindArrow::QwtCompassWindArrow(Style style, 
-        const QColor &light, const QColor &dark):
-    d_style(style)
-{
-    QPalette palette;
-    for ( int i = 0; i < QPalette::NColorGroups; i++ )
-    {
-        palette.setColor((QPalette::ColorGroup)i,
-            QwtPalette::Light, light);
-        palette.setColor((QPalette::ColorGroup)i,
-            QwtPalette::Dark, dark);
-    }
-
-    setPalette(palette);
-}
-
-/*!
- Draw the needle
-
- \param painter Painter
- \param center Center of the dial, start position for the needle
- \param length Length of the needle
- \param direction Direction of the needle, in degrees counter clockwise
- \param colorGroup Color group, used for painting
-*/
-void QwtCompassWindArrow::draw(QPainter *painter, const QPoint &center,
-    int length, double direction, QPalette::ColorGroup colorGroup) const
-{
-    if ( d_style == Style1 )
-    {
-        drawStyle1Needle(painter, palette(), colorGroup,
-            center, length, direction);
-    }
-    else
-    {
-        drawStyle2Needle(painter, palette(), colorGroup,
-            center, length, direction); 
-    }
-}
-
-/*!
-  Draw a compass needle 
-*/
-void QwtCompassWindArrow::drawStyle1Needle(QPainter *painter, 
-    const QPalette &palette, QPalette::ColorGroup colorGroup,
-    const QPoint &center, int length, double direction) 
-{
-    const QBrush lightBrush = palette.brush(colorGroup, QwtPalette::Light);
-
-    const double AR1[] = {0, 0.4, 0.3, 1, 0.8, 1, 0.3, 0.4};
-    const double AW1[] = {0, -45, -20, -15, 0, 15, 20, 45};
-
-    const QPoint arrowCenter(center.x() + 1, center.y() + 1);
-
-    QwtPointArray pa(8);
-    pa.setPoint(0, arrowCenter);
-    for (int i=1; i<8; i++) 
-    {
-        const QPoint p = qwtDegree2Pos(center, 
-            AR1[i] * length, direction + AW1[i]);
-        pa.setPoint(i, p);
-    }
-
-    painter->save();
-    painter->setPen(Qt::NoPen);
-    painter->setBrush(lightBrush);
-    painter->drawPolygon(pa);
-    painter->restore();
-}
-
-/*!
-  Draw a compass needle 
-*/
-void QwtCompassWindArrow::drawStyle2Needle(QPainter *painter, 
-    const QPalette &palette, QPalette::ColorGroup colorGroup,
-    const QPoint &center, int length, double direction) 
-{
-    const QBrush lightBrush = palette.brush(colorGroup, QwtPalette::Light);
-    const QBrush darkBrush = palette.brush(colorGroup, QwtPalette::Dark);
-
-    painter->save();
-    painter->setPen(Qt::NoPen);
-
-    const double angle = 12.0;
-    const double ratio = 0.7;
-
-    const QPoint arrowCenter(center.x() + 1, center.y() + 1);
-
-    QwtPointArray pa(3);
-
-    pa.setPoint(0, center);
-    pa.setPoint(2, qwtDegree2Pos(arrowCenter, ratio * length, direction));
-
-    pa.setPoint(1, qwtDegree2Pos(arrowCenter, length, direction + angle));
-    painter->setBrush(darkBrush);
-    painter->drawPolygon(pa);
-
-    pa.setPoint(1, qwtDegree2Pos(arrowCenter, length, direction - angle));
-    painter->setBrush(lightBrush);
-    painter->drawPolygon(pa);
-
-    painter->restore();
-}
-
diff --git a/src/qwt/qwt_double_interval.cpp b/src/qwt/qwt_double_interval.cpp
deleted file mode 100644
index 9b43778..0000000
--- a/src/qwt/qwt_double_interval.cpp
+++ /dev/null
@@ -1,149 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- * 
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-#include <qglobal.h>
-#if QT_VERSION >= 0x040000
-#include <qalgorithms.h>
-#else
-#include <qtl.h>
-#endif
-
-#include "qwt_math.h"
-#include "qwt_double_interval.h"
-
-QwtDoubleInterval QwtDoubleInterval::normalized() const
-{
-    if ( !isValid() )
-    {
-        return QwtDoubleInterval(d_maxValue, d_minValue);
-    }
-    else
-        return *this;
-}
-
-QwtDoubleInterval QwtDoubleInterval::invert() const
-{
-    return QwtDoubleInterval(d_maxValue, d_minValue);
-}
-
-bool QwtDoubleInterval::contains(double value) const
-{
-    if ( !isValid() )
-        return false;
-
-    return (value >= d_minValue) && (value <= d_maxValue);
-}
-
-QwtDoubleInterval QwtDoubleInterval::unite(
-    const QwtDoubleInterval &interval) const
-{
-    if ( !isValid() )
-    {
-        if ( !interval.isValid() )
-            return QwtDoubleInterval();
-        else
-            return interval;
-    }
-    if ( !interval.isValid() )
-        return *this;
-
-    const double minValue = qwtMin(d_minValue, interval.minValue());
-    const double maxValue = qwtMax(d_maxValue, interval.maxValue());
-
-    return QwtDoubleInterval(minValue, maxValue);
-}
-
-QwtDoubleInterval QwtDoubleInterval::intersect(
-    const QwtDoubleInterval &interval) const
-{
-    if ( !interval.isValid() || !isValid() )
-        return QwtDoubleInterval();
-
-    QwtDoubleInterval i1 = *this;
-    QwtDoubleInterval i2 = interval;
-
-    if ( i1.minValue() > i2.minValue() )
-        qSwap(i1, i2);
-
-    if ( i1.maxValue() < i2.minValue() )
-        return QwtDoubleInterval();
-
-    return QwtDoubleInterval(i2.minValue(), 
-                qwtMin(i1.maxValue(), i2.maxValue()));
-}
-
-QwtDoubleInterval& QwtDoubleInterval::operator|=(
-    const QwtDoubleInterval &interval)
-{
-    *this = *this | interval;
-    return *this;
-}
-
-QwtDoubleInterval& QwtDoubleInterval::operator&=(
-    const QwtDoubleInterval &interval) 
-{
-    *this = *this & interval;
-    return *this;
-}
-
-bool QwtDoubleInterval::intersects(const QwtDoubleInterval &interval) const
-{
-    if ( !isValid() || !interval.isValid() )
-        return false;
-
-    QwtDoubleInterval i1 = *this;
-    QwtDoubleInterval i2 = interval;
-
-    if ( i1.minValue() > i2.minValue() )
-        qSwap(i1, i2);
-
-    return i1.maxValue() >= i2.minValue();
-}
-
-QwtDoubleInterval QwtDoubleInterval::symmetrize(double center) const
-{
-    if ( !isValid() )
-        return *this;
-
-    const double delta =
-        qwtMax(qwtAbs(center - d_maxValue), qwtAbs(center - d_minValue));
-
-    return QwtDoubleInterval(center - delta, center + delta);
-}
-
-QwtDoubleInterval QwtDoubleInterval::limit(
-    double lBound, double hBound) const
-{
-    if ( !isValid() || lBound > hBound )
-        return QwtDoubleInterval();
-
-    double minValue = qwtMax(d_minValue, lBound);
-    minValue = qwtMin(minValue, hBound);
-
-    double maxValue = qwtMax(d_maxValue, lBound);
-    maxValue = qwtMin(maxValue, hBound);
-
-    return QwtDoubleInterval(minValue, maxValue);
-}
-
-QwtDoubleInterval QwtDoubleInterval::extend(double v) const
-{
-    if ( !isValid() )
-        return *this;
-
-    return QwtDoubleInterval(
-        qwtMin(v, d_minValue), qwtMax(v, d_maxValue) );
-}
-
-QwtDoubleInterval& QwtDoubleInterval::operator|=(double value)
-{
-    *this = *this | value;
-    return *this;
-}
-
diff --git a/src/qwt/qwt_double_range.cpp b/src/qwt/qwt_double_range.cpp
deleted file mode 100644
index 26e3ef6..0000000
--- a/src/qwt/qwt_double_range.cpp
+++ /dev/null
@@ -1,389 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- * 
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-#include "qwt_double_range.h"
-#include "qwt_math.h"
-
-static double MinRelStep = 1.0e-10;
-static double DefaultRelStep = 1.0e-2;
-static double MinEps = 1.0e-10;
-
-/*!
-  The range is initialized to [0.0, 100.0], the
-  step size to 1.0, and the value to 0.0.
-*/
-QwtDoubleRange::QwtDoubleRange():
-    d_minValue(0.0),
-    d_maxValue(0.0),
-    d_step(1.0),
-    d_pageSize(1),
-    d_isValid(false),
-    d_value(0.0),
-    d_exactValue(0.0),
-    d_exactPrevValue(0.0),
-    d_prevValue(0.0),
-    d_periodic(false)
-{
-}
-
-//! Destroys the QwtDoubleRange
-QwtDoubleRange::~QwtDoubleRange()
-{
-}
-
-//! Set the value to be valid/invalid
-void QwtDoubleRange::setValid(bool isValid)
-{
-    if ( isValid != d_isValid )
-    {
-        d_isValid = isValid;
-        valueChange();
-    }
-}
-
-//! Indicates if the value is valid
-bool QwtDoubleRange::isValid() const
-{
-    return d_isValid;
-}
-
-/*!
-  \brief No docs
-  
-  Description
-  \param x ???
-  \param align
-  \todo Documentation
-*/
-void QwtDoubleRange::setNewValue(double x, int align)
-{
-    double vmin,vmax;
-    
-    d_prevValue = d_value;
-
-    vmin = qwtMin(d_minValue, d_maxValue);
-    vmax = qwtMax(d_minValue, d_maxValue);
-
-    // 
-    // Range check
-    //
-    if (x < vmin)
-    {
-        if ((d_periodic) && (vmin != vmax))
-           d_value = x + ceil( (vmin - x) / (vmax - vmin ) ) 
-              * (vmax - vmin);
-        else
-           d_value = vmin;
-    }
-    else if (x > vmax)
-    {
-        if ((d_periodic) && (vmin != vmax))
-           d_value = x - ceil( ( x - vmax) / (vmax - vmin )) 
-              * (vmax - vmin);
-        else
-           d_value = vmax;
-    }
-    else
-       d_value = x;
-
-    d_exactPrevValue = d_exactValue;
-    d_exactValue = d_value;
-    
-    // align to grid
-    if (align)
-    {
-        if (d_step != 0.0)
-           d_value = d_minValue +
-             qRound((d_value - d_minValue) / d_step) * d_step;
-        else
-           d_value = d_minValue;
-        
-        // correct rounding error at the border
-        if (fabs(d_value - d_maxValue) < MinEps * qwtAbs(d_step))
-           d_value = d_maxValue;
-
-        // correct rounding error if value = 0
-        if (fabs(d_value) < MinEps * qwtAbs(d_step))
-           d_value = 0.0;
-    }
-
-    if (!d_isValid || d_prevValue != d_value)
-    {
-        d_isValid = true;
-        valueChange();
-    }
-}
-
-/*!
-  \brief  Adjust the value to the closest point in the step raster.
-  \param x value
-  \warning The value is clipped when it lies outside the range.
-  When the range is QwtDoubleRange::periodic, it will
-  be mapped to a point in the interval such that
-  \verbatim new value := x + n * (max. value - min. value)\endverbatim
-  with an integer number n.
-*/
-void QwtDoubleRange::fitValue(double x)
-{
-    setNewValue(x,1);
-}
-
-
-/*!
-  \brief Set a new value without adjusting to the step raster
-  \param x new value
-  \warning The value is clipped when it lies outside the range.
-  When the range is QwtDoubleRange::periodic, it will
-  be mapped to a point in the interval such that
-  \verbatim new value := x + n * (max. value - min. value)\endverbatim
-  with an integer number n.
-*/
-void QwtDoubleRange::setValue(double x)
-{
-    setNewValue(x,0);
-}
-
-/*!
-  \brief Specify  range and step size
-
-  \param vmin   lower boundary of the interval
-  \param vmax   higher boundary of the interval
-  \param vstep  step width
-  \param pageSize  page size in steps
-  \warning
-  \li A change of the range changes the value if it lies outside the
-      new range. The current value
-      will *not* be adjusted to the new step raster.
-  \li vmax < vmin is allowed.
-  \li If the step size is left out or set to zero, it will be
-      set to 1/100 of the interval length.
-  \li If the step size has an absurd value, it will be corrected
-      to a better one.
-*/
-void QwtDoubleRange::setRange(double vmin, double vmax, double vstep, int pageSize)
-{
-    bool rchg = ((d_maxValue != vmax) || (d_minValue != vmin));
-    
-    if (rchg) 
-    {
-        d_minValue = vmin;
-        d_maxValue = vmax;
-    }
-    
-    //
-    // look if the step width has an acceptable 
-    // value or otherwise change it.
-    //
-    setStep(vstep);
-
-    //
-    // limit page size
-    //
-    d_pageSize = qwtLim(pageSize,0, 
-        int(qwtAbs((d_maxValue - d_minValue) / d_step))); 
-    
-    // 
-    // If the value lies out of the range, it 
-    // will be changed. Note that it will not be adjusted to 
-    // the new step width.
-    setNewValue(d_value,0);
-    
-    // call notifier after the step width has been 
-    // adjusted.
-    if (rchg)
-       rangeChange();
-}
-
-/*!
-  \brief Change the step raster     
-  \param vstep new step width
-  \warning The value will \e not be adjusted to the new step raster.
-*/
-void QwtDoubleRange::setStep(double vstep)
-{
-    double intv = d_maxValue - d_minValue;
-    
-    double newStep;
-    if (vstep == 0.0)
-       newStep = intv * DefaultRelStep;
-    else
-    {
-        if ((intv > 0) && (vstep < 0) || (intv < 0) && (vstep > 0))
-           newStep = -vstep;
-        else
-           newStep = vstep;
-        
-        if ( fabs(newStep) < fabs(MinRelStep * intv) )
-           newStep = MinRelStep * intv;
-    }
-    
-    if (newStep != d_step)
-    {
-        d_step = newStep;
-        stepChange();
-    }
-}
-
-
-/*!
-  \brief Make the range periodic
-
-  When the range is periodic, the value will be set to a point
-  inside the interval such that
-
-  \verbatim point = value + n * width \endverbatim
-
-  if the user tries to set a new value which is outside the range.
-  If the range is nonperiodic (the default), values outside the
-  range will be clipped.
-
-  \param tf true for a periodic range
-*/
-void QwtDoubleRange::setPeriodic(bool tf)
-{
-    d_periodic = tf;
-}
-
-/*!
-  \brief Increment the value by a specified number of steps
-  \param nSteps Number of steps to increment
-  \warning As a result of this operation, the new value will always be
-       adjusted to the step raster.
-*/
-void QwtDoubleRange::incValue(int nSteps)
-{
-    if ( isValid() )
-        setNewValue(d_value + double(nSteps) * d_step,1);
-}
-
-/*!
-  \brief Increment the value by a specified number of pages
-  \param nPages Number of pages to increment.
-        A negative number decrements the value.
-  \warning The Page size is specified in the constructor.
-*/
-void QwtDoubleRange::incPages(int nPages)
-{
-    if ( isValid() )
-        setNewValue(d_value + double(nPages) * double(d_pageSize) * d_step,1);
-}
-
-/*!
-  \brief Notify a change of value
-
-  This virtual function is called whenever the value changes.
-  The default implementation does nothing.
-*/
-void QwtDoubleRange::valueChange()
-{
-}
-
-
-/*!
-  \brief Notify a change of the range
-
-  This virtual function is called whenever the range changes.
-  The default implementation does nothing.
-*/
-void QwtDoubleRange::rangeChange()
-{
-}
-
-
-/*!
-  \brief Notify a change of the step size
-
-  This virtual function is called whenever the step size changes.
-  The default implementation does nothing.
-*/
-void QwtDoubleRange::stepChange()
-{
-}
-
-/*!
-  \return the step size
-  \sa QwtDoubleRange::setStep, QwtDoubleRange::setRange
-*/
-double QwtDoubleRange::step() const
-{
-    return qwtAbs(d_step);
-}
-
-/*!
-  \brief Returns the value of the second border of the range
-
-  maxValue returns the value which has been specified
-  as the second parameter in  QwtDoubleRange::setRange.
-    
-  \sa QwtDoubleRange::setRange()
-*/  
-double QwtDoubleRange::maxValue() const
-{   
-    return d_maxValue;
-} 
-    
-/*!
-  \brief Returns the value at the first border of the range
-    
-  minValue returns the value which has been specified
-  as the first parameter in  setRange().
-    
-  \sa QwtDoubleRange::setRange()
-*/
-double QwtDoubleRange::minValue() const 
-{
-    return d_minValue; 
-}   
-
-/*!
-  \brief Returns true if the range is periodic
-  \sa QwtDoubleRange::setPeriodic()
-*/
-bool QwtDoubleRange::periodic() const 
-{ 
-    return d_periodic; 
-}
-
-//! Returns the page size in steps.
-int QwtDoubleRange::pageSize() const 
-{ 
-    return d_pageSize; 
-}
-
-//! Returns the current value.
-double QwtDoubleRange::value() const 
-{ 
-    return d_value; 
-}
-
-/*!
-  \brief Returns the exact value
-
-  The exact value is the value which QwtDoubleRange::value would return
-  if the value were not adjusted to the step raster. It differs from
-  the current value only if QwtDoubleRange::fitValue or
-  QwtDoubleRange::incValue have been used before. This function
-  is intended for internal use in derived classes.
-*/
-double QwtDoubleRange::exactValue() const 
-{ 
-    return d_exactValue; 
-}
-
-//! Returns the exact previous value
-double QwtDoubleRange::exactPrevValue() const 
-{ 
-    return d_exactPrevValue; 
-}
-
-//! Returns the previous value
-double QwtDoubleRange::prevValue() const 
-{ 
-    return d_prevValue; 
-}
diff --git a/src/qwt/qwt_double_rect.cpp b/src/qwt/qwt_double_rect.cpp
deleted file mode 100644
index 4923685..0000000
--- a/src/qwt/qwt_double_rect.cpp
+++ /dev/null
@@ -1,592 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-#include <qglobal.h>
-
-#if QT_VERSION < 0x040000
-
-#include "qwt_math.h"
-#include "qwt_double_rect.h"
-
-/*! 
-    Constructs a null point.
-
-    \sa QwtDoublePoint::isNull
-*/
-QwtDoublePoint::QwtDoublePoint():
-    d_x(0.0),
-    d_y(0.0)
-{
-}
-
-//! Constructs a point with coordinates specified by x and y.
-QwtDoublePoint::QwtDoublePoint(double x, double y ):
-    d_x(x),
-    d_y(y)
-{
-}
-
-/*! 
-    Copy constructor. 
-
-    Constructs a point using the values of the point specified.
-*/
-QwtDoublePoint::QwtDoublePoint(const QPoint &p):
-    d_x(double(p.x())),
-    d_y(double(p.y()))
-{
-}
-
-/*! 
-    Returns true if point1 is equal to point2; otherwise returns false.
-
-    Two points are equal to each other if both x-coordinates and 
-    both y-coordinates are the same.
-*/
-bool QwtDoublePoint::operator==(const QwtDoublePoint &other) const
-{
-    return (d_x == other.d_x) && (d_y == other.d_y);
-}
-
-//! Returns true if point1 is not equal to point2; otherwise returns false.
-bool QwtDoublePoint::operator!=(const QwtDoublePoint &other) const
-{
-    return !operator==(other);
-}
-
-/*! 
-    Negates the coordinates of the point, and returns a point with the 
-    new coordinates. (Inversion).
-*/
-const QwtDoublePoint QwtDoublePoint::operator-() const
-{
-    return QwtDoublePoint(-d_x, -d_y);
-}
-
-/*! 
-    Adds the coordinates of the point to the corresponding coordinates of 
-    the other point, and returns a point with the new coordinates. 
-    (Vector addition.)
-*/
-const QwtDoublePoint QwtDoublePoint::operator+(
-    const QwtDoublePoint &other) const
-{
-    return QwtDoublePoint(d_x + other.d_x, d_y + other.d_y);
-}
-
-/*! 
-    Subtracts the coordinates of the other point from the corresponding 
-    coordinates of the given point, and returns a point with the new 
-    coordinates. (Vector subtraction.)
-*/
-const QwtDoublePoint QwtDoublePoint::operator-(
-    const QwtDoublePoint &other) const
-{
-    return QwtDoublePoint(d_x - other.d_x, d_y - other.d_y);
-}
-
-/*!
-    Multiplies the coordinates of the point by the given scale factor, 
-    and returns a point with the new coordinates. 
-    (Scalar multiplication of a vector.)
-*/
-const QwtDoublePoint QwtDoublePoint::operator*(double factor) const
-{
-    return QwtDoublePoint(d_x * factor, d_y * factor);
-}
-
-/*!
-    Divides the coordinates of the point by the given scale factor, 
-    and returns a point with the new coordinates. 
-    (Scalar division of a vector.)
-*/
-const QwtDoublePoint QwtDoublePoint::operator/(double factor) const
-{
-    return QwtDoublePoint(d_x / factor, d_y / factor);
-}
-
-/*!
-    Adds the coordinates of this point to the corresponding coordinates 
-    of the other point, and returns a reference to this point with the 
-    new coordinates. This is equivalent to vector addition.
-*/
-QwtDoublePoint &QwtDoublePoint::operator+=(const QwtDoublePoint &other)
-{
-    d_x += other.d_x;
-    d_y += other.d_y;
-    return *this;
-}
-
-/*!
-    Subtracts the coordinates of the other point from the corresponding 
-    coordinates of this point, and returns a reference to this point with 
-    the new coordinates. This is equivalent to vector subtraction.
-*/
-QwtDoublePoint &QwtDoublePoint::operator-=(const QwtDoublePoint &other)
-{
-    d_x -= other.d_x;
-    d_y -= other.d_y;
-    return *this;
-}
-
-/*!
-    Multiplies the coordinates of this point by the given scale factor, 
-    and returns a reference to this point with the new coordinates. 
-    This is equivalent to scalar multiplication of a vector.
-*/
-QwtDoublePoint &QwtDoublePoint::operator*=(double factor)
-{
-    d_x *= factor;
-    d_y *= factor;
-    return *this;
-}
-
-/*!
-    Divides the coordinates of this point by the given scale factor, 
-    and returns a references to this point with the new coordinates. 
-    This is equivalent to scalar division of a vector.
-*/
-QwtDoublePoint &QwtDoublePoint::operator/=(double factor)
-{
-    d_x /= factor;
-    d_y /= factor;
-    return *this;
-}
-
-//! Constructs an invalid size.
-QwtDoubleSize::QwtDoubleSize():
-    d_width(-1.0),
-    d_height(-1.0)
-{   
-}   
-
-//! Constructs a size with width width and height height.
-QwtDoubleSize::QwtDoubleSize( double width, double height ):
-    d_width(width),
-    d_height(height)
-{   
-}   
-
-//! Constructs a size with floating point accuracy from the given size.
-QwtDoubleSize::QwtDoubleSize(const QSize &sz):
-    d_width(double(sz.width())),
-    d_height(double(sz.height()))
-{   
-}   
-
-//! Swaps the width and height values.
-void QwtDoubleSize::transpose()
-{   
-    double tmp = d_width;
-    d_width = d_height;
-    d_height = tmp;
-}
-
-/*! 
-    Returns a size with the maximum width and height of this 
-    size and other.
-*/
-QwtDoubleSize QwtDoubleSize::expandedTo(
-    const QwtDoubleSize &other) const
-{   
-    return QwtDoubleSize(
-        qwtMax(d_width, other.d_width),
-        qwtMax(d_height, other.d_height)
-    );  
-}   
-
-/*!
-    Returns a size with the minimum width and height of this size and other.
-*/
-QwtDoubleSize QwtDoubleSize::boundedTo(
-    const QwtDoubleSize &other) const
-{   
-    return QwtDoubleSize(
-        qwtMin(d_width, other.d_width),
-        qwtMin(d_height, other.d_height)
-    );  
-}   
-
-//! Returns true if s1 and s2 are equal; otherwise returns false.
-bool QwtDoubleSize::operator==(const QwtDoubleSize &other) const
-{ 
-    return d_width == other.d_width && d_height == other.d_height;
-}   
-
-//! Returns true if s1 and s2 are different; otherwise returns false.
-bool QwtDoubleSize::operator!=(const QwtDoubleSize &other) const
-{ 
-    return !operator==(other);
-}   
-
-/*! 
-  Returns the size formed by adding both components by
-  the components of other. Each component is added separately.
-*/
-const QwtDoubleSize QwtDoubleSize::operator+(
-    const QwtDoubleSize &other) const
-{   
-    return QwtDoubleSize(d_width + other.d_width,
-        d_height + other.d_height); 
-}       
-
-/*! 
-  Returns the size formed by subtracting both components by
-  the components of other. Each component is subtracted separately.
-*/  
-const QwtDoubleSize QwtDoubleSize::operator-(
-    const QwtDoubleSize &other) const
-{   
-    return QwtDoubleSize(d_width - other.d_width,
-        d_height - other.d_height); 
-}       
-
-//! Returns the size formed by multiplying both components by c.
-const QwtDoubleSize QwtDoubleSize::operator*(double c) const
-{ 
-    return QwtDoubleSize(d_width * c, d_height * c);
-}   
-
-//! Returns the size formed by dividing both components by c.
-const QwtDoubleSize QwtDoubleSize::operator/(double c) const
-{ 
-    return QwtDoubleSize(d_width / c, d_height / c);
-}   
-
-//! Adds size other to this size and returns a reference to this size.
-QwtDoubleSize &QwtDoubleSize::operator+=(const QwtDoubleSize &other)
-{   
-    d_width += other.d_width; 
-    d_height += other.d_height;
-    return *this;
-}
-
-//! Subtracts size other from this size and returns a reference to this size.
-QwtDoubleSize &QwtDoubleSize::operator-=(const QwtDoubleSize &other)
-{   
-    d_width -= other.d_width; 
-    d_height -= other.d_height;
-    return *this;
-}
-
-/* 
-  Multiplies this size's width and height by c, 
-  and returns a reference to this size.
-*/
-QwtDoubleSize &QwtDoubleSize::operator*=(double c)
-{   
-    d_width *= c; 
-    d_height *= c;
-    return *this;
-}
-
-/* 
-  Devides this size's width and height by c, 
-  and returns a reference to this size.
-*/
-QwtDoubleSize &QwtDoubleSize::operator/=(double c)
-{
-    d_width /= c;
-    d_height /= c;
-    return *this;
-}   
-
-//! Constructs an rectangle with all components set to 0.0 
-QwtDoubleRect::QwtDoubleRect():
-    d_left(0.0),
-    d_right(0.0),
-    d_top(0.0),
-    d_bottom(0.0)
-{
-}
-
-/*! 
-  Constructs an rectangle with x1 to x2 as x-range and,
-  y1 to y2 as y-range.
-*/
-QwtDoubleRect::QwtDoubleRect(double left, double top,
-        double width, double height):
-    d_left(left),
-    d_right(left + width),
-    d_top(top),
-    d_bottom(top + height)
-{
-}
-
-/*! 
-  Constructs a rectangle with topLeft as the top-left corner and 
-  size as the rectangle size.
-*/
-QwtDoubleRect::QwtDoubleRect(
-        const QwtDoublePoint &p, const QwtDoubleSize &size):
-    d_left(p.x()),
-    d_right(p.x() + size.width()),
-    d_top(p.y()),
-    d_bottom(p.y() + size.height())
-{
-}
-
-/*! 
-  Set the x-range from x1 to x2 and the y-range from y1 to y2.
-*/
-void QwtDoubleRect::setRect(double left, double top, 
-    double width, double height)
-{
-    d_left = left;
-    d_right = left + width;
-    d_top = top;
-    d_bottom = top + height;
-}
-
-/*!
-  Sets the size of the rectangle to size. 
-  Changes x2 and y2 only.
-*/
-void QwtDoubleRect::setSize(const QwtDoubleSize &size)
-{
-    setWidth(size.width());
-    setHeight(size.height());
-}
-
-/*!
-  Returns a normalized rectangle, i.e. a rectangle that has a non-negative 
-  width and height. 
-
-  It swaps x1 and x2 if x1() > x2(), and swaps y1 and y2 if y1() > y2(). 
-*/
-QwtDoubleRect QwtDoubleRect::normalized() const
-{
-    QwtDoubleRect r;
-    if ( d_right < d_left ) 
-    {
-        r.d_left = d_right;
-        r.d_right = d_left;
-    } 
-    else 
-    {
-        r.d_left = d_left;
-        r.d_right = d_right; 
-    }
-    if ( d_bottom < d_top ) 
-    { 
-        r.d_top = d_bottom; 
-        r.d_bottom = d_top;
-    } 
-    else 
-    {
-        r.d_top = d_top;
-        r.d_bottom = d_bottom;
-    }
-    return r;
-}
-
-/*!
-  Returns the bounding rectangle of this rectangle and rectangle other. 
-  r.unite(s) is equivalent to r|s. 
-*/
-QwtDoubleRect QwtDoubleRect::unite(const QwtDoubleRect &other) const
-{
-    return *this | other;
-}
-
-/*!
-  Returns the intersection of this rectangle and rectangle other. 
-  r.intersect(s) is equivalent to r&s. 
-*/
-QwtDoubleRect QwtDoubleRect::intersect(const QwtDoubleRect &other) const
-{
-    return *this & other;
-}
-
-/*!
-  Returns true if this rectangle intersects with rectangle other; 
-  otherwise returns false. 
-*/
-bool QwtDoubleRect::intersects(const QwtDoubleRect &other) const
-{
-    return ( qwtMax(d_left, other.d_left) <= qwtMin(d_right, other.d_right) ) &&
-         ( qwtMax(d_top, other.d_top ) <= qwtMin(d_bottom, other.d_bottom) );
-}
-
-//! Returns true if this rect and other are equal; otherwise returns false. 
-bool QwtDoubleRect::operator==(const QwtDoubleRect &other) const
-{
-    return d_left == other.d_left && d_right == other.d_right && 
-        d_top == other.d_top && d_bottom == other.d_bottom;
-}
-
-//! Returns true if this rect and other are different; otherwise returns false. 
-bool QwtDoubleRect::operator!=(const QwtDoubleRect &other) const
-{
-    return !operator==(other);
-}
-
-/*!
-  Returns the bounding rectangle of this rectangle and rectangle other. 
-  The bounding rectangle of a nonempty rectangle and an empty or 
-  invalid rectangle is defined to be the nonempty rectangle. 
-*/
-QwtDoubleRect QwtDoubleRect::operator|(const QwtDoubleRect &other) const
-{
-    if ( !isEmpty() ) 
-        return other;
-
-    if ( !other.isEmpty() ) 
-        return *this;
-        
-    const double minX = qwtMin(d_left, other.d_left);
-    const double maxX = qwtMax(d_right, other.d_right);
-    const double minY = qwtMin(d_top, other.d_top);
-    const double maxY = qwtMax(d_bottom, other.d_bottom);
-
-    return QwtDoubleRect(minX, minY, maxX - minX, maxY - minY);
-}
-
-/*!
-  Returns the intersection of this rectangle and rectangle other. 
-  Returns an empty rectangle if there is no intersection. 
-*/
-QwtDoubleRect QwtDoubleRect::operator&(const QwtDoubleRect &other) const
-{
-    if (isNull() || other.isNull())
-        return QwtDoubleRect();
-
-    const QwtDoubleRect r1 = normalized();
-    const QwtDoubleRect r2 = other.normalized();
-
-    const double minX = qwtMax(r1.left(), r2.left());
-    const double maxX = qwtMin(r1.right(), r2.right());
-    const double minY = qwtMax(r1.top(), r2.top());
-    const double maxY = qwtMin(r1.bottom(), r2.bottom());
-
-    return QwtDoubleRect(minX, minY, maxX - minX, maxY - minY);
-}
-
-//! Unites this rectangle with rectangle other. 
-QwtDoubleRect &QwtDoubleRect::operator|=(const QwtDoubleRect &other)
-{
-    *this = *this | other;
-    return *this;
-}
-
-//! Intersects this rectangle with rectangle other. 
-QwtDoubleRect &QwtDoubleRect::operator&=(const QwtDoubleRect &other)
-{
-    *this = *this & other;
-    return *this;
-}
-
-//! Returns the center point of the rectangle. 
-QwtDoublePoint QwtDoubleRect::center() const
-{
-    return QwtDoublePoint(d_left + (d_right - d_left) / 2.0, 
-        d_top + (d_bottom - d_top) / 2.0);
-}
-
-/*!
-  Returns true if the point (x, y) is inside or on the edge of the rectangle; 
-  otherwise returns false. 
-
-  If proper is true, this function returns true only if p is inside 
-  (not on the edge). 
-*/
-bool QwtDoubleRect::contains(double x, double y, bool proper) const
-{
-    if ( proper )
-        return x > d_left && x < d_right && y > d_top && y < d_bottom;
-    else
-        return x >= d_left && x <= d_right && y >= d_top && y <= d_bottom;
-}
-
-/*!
-  Returns true if the point p is inside or on the edge of the rectangle; 
-  otherwise returns false. 
-
-  If proper is true, this function returns true only if p is inside 
-  (not on the edge). 
-*/
-bool QwtDoubleRect::contains(const QwtDoublePoint &p, bool proper) const
-{
-    return contains(p.x(), p.y(), proper);
-}
-
-/*!
-  Returns true if the rectangle other is inside this rectangle; 
-  otherwise returns false. 
-
-  If proper is true, this function returns true only if other is entirely 
-  inside (not on the edge). 
-*/
-bool QwtDoubleRect::contains(const QwtDoubleRect &other, bool proper) const
-{
-    return contains(other.d_left, other.d_top, proper) && 
-        contains(other.d_right, other.d_bottom, proper);
-}
-
-//! moves x1() to x, leaving the size unchanged
-void QwtDoubleRect::moveLeft(double x)
-{
-    const double w = width();
-    d_left = x;
-    d_right = d_left + w;
-}
-
-//! moves x1() to x, leaving the size unchanged
-void QwtDoubleRect::moveRight(double x)
-{
-    const double w = width();
-    d_right = x;
-    d_left = d_right - w;
-}
-
-//! moves y1() to y, leaving the size unchanged
-void QwtDoubleRect::moveTop(double y)
-{
-    const double h = height();
-    d_top = y;
-    d_bottom = d_top + h;
-}
-
-//! moves y1() to y, leaving the size unchanged
-void QwtDoubleRect::moveBottom(double y)
-{
-    const double h = height();
-    d_bottom = y;
-    d_top = d_bottom - h;
-}
-
-//! moves left() to x and top() to y, leaving the size unchanged
-void QwtDoubleRect::moveTo(double x, double y)
-{
-    moveLeft(x);
-    moveTop(y);
-}
-
-//! moves x1() by dx and y1() by dy. leaving the size unchanged
-void QwtDoubleRect::moveBy(double dx, double dy)
-{
-    d_left += dx;
-    d_right += dx;
-    d_top += dy;
-    d_bottom += dy;
-}
-
-//! moves the center to pos, leaving the size unchanged
-void QwtDoubleRect::moveCenter(const QwtDoublePoint &pos)
-{
-    moveCenter(pos.x(), pos.y());
-}
-
-//! moves the center to (x, y), leaving the size unchanged
-void QwtDoubleRect::moveCenter(double x, double y)
-{
-    moveTo(x - width() / 2.0, y - height() / 2.0);
-}
-
-#endif // QT_VERSION < 0x040000
diff --git a/src/qwt/qwt_dyngrid_layout.cpp b/src/qwt/qwt_dyngrid_layout.cpp
deleted file mode 100644
index 5436c6b..0000000
--- a/src/qwt/qwt_dyngrid_layout.cpp
+++ /dev/null
@@ -1,691 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-#include <qwidget.h>
-#include "qwt_dyngrid_layout.h"
-#include "qwt_math.h"
-
-#if QT_VERSION < 0x040000
-#include <qvaluelist.h>
-#else
-#include <qlist.h>
-#endif
-
-class QwtDynGridLayout::PrivateData
-{
-public:
-
-#if QT_VERSION < 0x040000
-    class LayoutIterator: public QGLayoutIterator
-    {
-    public:
-        LayoutIterator(PrivateData *data):
-            d_data(data)  
-        {
-            d_iterator = d_data->itemList.begin();
-        }
-
-        virtual QLayoutItem *current()
-        { 
-            if (d_iterator == d_data->itemList.end())
-               return NULL;
-
-            return *d_iterator;
-        }
-
-        virtual QLayoutItem *next()
-        { 
-            if (d_iterator == d_data->itemList.end())
-               return NULL;
-
-            d_iterator++;
-            if (d_iterator == d_data->itemList.end())
-               return NULL;
-
-            return *d_iterator;
-        }
-
-        virtual QLayoutItem *takeCurrent()
-        { 
-            if ( d_iterator == d_data->itemList.end() )
-                return NULL;
-
-            QLayoutItem *item = *d_iterator;
-
-            d_data->isDirty = true;
-            d_iterator = d_data->itemList.remove(d_iterator);
-            return item;
-        }
-
-    private:
-        
-        QValueListIterator<QLayoutItem*> d_iterator;
-        QwtDynGridLayout::PrivateData *d_data;
-    };
-#endif
-
-    PrivateData():
-        isDirty(true)
-    {
-    }
-
-#if QT_VERSION < 0x040000
-    typedef QValueList<QLayoutItem*> LayoutItemList;
-#else
-    typedef QList<QLayoutItem*> LayoutItemList;
-#endif
-
-    mutable LayoutItemList itemList;
-
-    uint maxCols;
-    uint numRows;
-    uint numCols;
-
-#if QT_VERSION < 0x040000
-    QSizePolicy::ExpandData expanding;
-#else
-    Qt::Orientations expanding;
-#endif
-
-    bool isDirty;
-    QwtArray<QSize> itemSizeHints;
-};
-
-
-/*!
-  \param parent Parent widget
-  \param margin Margin
-  \param spacing Spacing
-*/
-
-QwtDynGridLayout::QwtDynGridLayout(QWidget *parent, 
-        int margin, int spacing):
-    QLayout(parent)
-{
-    init();
-
-    setSpacing(spacing);
-    setMargin(margin);
-}
-
-#if QT_VERSION < 0x040000
-/*!
-  \param parent Parent widget
-  \param spacing Spacing
-*/
-QwtDynGridLayout::QwtDynGridLayout(QLayout *parent, int spacing):
-    QLayout(parent, spacing)
-{
-    init();
-}
-#endif
-
-/*!
-  \param spacing Spacing
-*/
-
-QwtDynGridLayout::QwtDynGridLayout(int spacing)
-{
-    init();
-    setSpacing(spacing);
-}
-
-/*!
-  Initialize the layout with default values.
-*/
-void QwtDynGridLayout::init()
-{
-    d_data = new QwtDynGridLayout::PrivateData;
-    d_data->maxCols = d_data->numRows 
-        = d_data->numCols = 0;
-
-#if QT_VERSION < 0x040000
-    d_data->expanding = QSizePolicy::NoDirection;
-    setSupportsMargin(true);
-#else
-    d_data->expanding = 0;
-#endif
-}
-
-//! Destructor
-
-QwtDynGridLayout::~QwtDynGridLayout()
-{
-#if QT_VERSION < 0x040000
-    deleteAllItems(); 
-#endif
-
-    delete d_data;
-}
-
-void QwtDynGridLayout::invalidate()
-{
-    d_data->isDirty = true;
-    QLayout::invalidate();
-}
-
-void QwtDynGridLayout::updateLayoutCache()
-{
-    d_data->itemSizeHints.resize(itemCount());
-
-    int index = 0;
-
-    for (PrivateData::LayoutItemList::iterator it = d_data->itemList.begin();
-        it != d_data->itemList.end(); ++it, index++)
-    {
-        d_data->itemSizeHints[int(index)] = (*it)->sizeHint();
-    }
-
-    d_data->isDirty = false;
-}
-
-/*!
-  Limit the number of columns.
-  \param maxCols upper limit, 0 means unlimited
-  \sa QwtDynGridLayout::maxCols()
-*/
-  
-void QwtDynGridLayout::setMaxCols(uint maxCols)
-{
-    d_data->maxCols = maxCols;
-}
-
-/*!
-  Return the upper limit for the number of columns.
-  0 means unlimited, what is the default.
-  \sa QwtDynGridLayout::setMaxCols()
-*/
-
-uint QwtDynGridLayout::maxCols() const 
-{ 
-    return d_data->maxCols; 
-}
-
-//! Adds item to the next free position.
-
-void QwtDynGridLayout::addItem(QLayoutItem *item)
-{
-    d_data->itemList.append(item);
-    invalidate();
-}
-
-/*! 
-  \return true if this layout is empty. 
-*/
-
-bool QwtDynGridLayout::isEmpty() const
-{
-    return d_data->itemList.isEmpty();
-}
-
-/*! 
-  \return number of layout items
-*/
-
-uint QwtDynGridLayout::itemCount() const
-{
-    return d_data->itemList.count();
-}
-
-#if  QT_VERSION < 0x040000
-/*! 
-  \return An iterator over the children of this layout.
-*/
-
-QLayoutIterator QwtDynGridLayout::iterator()
-{       
-    return QLayoutIterator( 
-        new QwtDynGridLayout::PrivateData::LayoutIterator(d_data) );
-}
-
-/*!
-  Set whether this layout can make use of more space than sizeHint(). 
-  A value of Vertical or Horizontal means that it wants to grow in only 
-  one dimension, while BothDirections means that it wants to grow in 
-  both dimensions. The default value is NoDirection. 
-  \sa QwtDynGridLayout::expanding()
-*/
-
-void QwtDynGridLayout::setExpanding(QSizePolicy::ExpandData expanding)
-{
-    d_data->expanding = expanding;
-}
-
-/*!
-  Returns whether this layout can make use of more space than sizeHint(). 
-  A value of Vertical or Horizontal means that it wants to grow in only 
-  one dimension, while BothDirections means that it wants to grow in 
-  both dimensions. 
-  \sa QwtDynGridLayout::setExpanding()
-*/
-
-QSizePolicy::ExpandData QwtDynGridLayout::expanding() const
-{
-    return d_data->expanding;
-}
-
-#else // QT_VERSION >= 0x040000
-
-QLayoutItem *QwtDynGridLayout::itemAt( int index ) const
-{
-    if ( index < 0 || index >= d_data->itemList.count() )
-        return NULL;
-
-    return d_data->itemList.at(index);
-}
-    
-QLayoutItem *QwtDynGridLayout::takeAt( int index )
-{
-    if ( index < 0 || index >= d_data->itemList.count() )
-        return NULL;
-  
-    d_data->isDirty = true;
-    return d_data->itemList.takeAt(index);
-}
-
-int QwtDynGridLayout::count() const
-{
-    return d_data->itemList.count();
-}
-
-void QwtDynGridLayout::setExpandingDirections(Qt::Orientations expanding)
-{
-    d_data->expanding = expanding;
-}
-
-Qt::Orientations QwtDynGridLayout::expandingDirections() const
-{
-    return d_data->expanding;
-}
-
-#endif
-
-/*!
-  Reorganizes columns and rows and resizes managed widgets within 
-  the rectangle rect. 
-*/
-
-void QwtDynGridLayout::setGeometry(const QRect &rect)
-{
-    QLayout::setGeometry(rect);
-
-    if ( isEmpty() )
-        return;
-
-    d_data->numCols = columnsForWidth(rect.width());
-    d_data->numRows = itemCount() / d_data->numCols;
-    if ( itemCount() % d_data->numCols )
-        d_data->numRows++;
-
-#if QT_VERSION < 0x040000
-    QValueList<QRect> itemGeometries = layoutItems(rect, d_data->numCols);
-#else
-    QList<QRect> itemGeometries = layoutItems(rect, d_data->numCols);
-#endif
-
-    int index = 0;
-    for (PrivateData::LayoutItemList::iterator it = d_data->itemList.begin();
-        it != d_data->itemList.end(); ++it)
-    {
-        QWidget *w = (*it)->widget();
-        if ( w )
-        {
-            w->setGeometry(itemGeometries[index]);
-            index++;
-        }
-    }
-}
-
-/*! 
-  Calculate the number of columns for a given width. It tries to
-  use as many columns as possible (limited by maxCols())
-
-  \param width Available width for all columns
-  \sa QwtDynGridLayout::maxCols(), QwtDynGridLayout::setMaxCols()
-*/
-
-uint QwtDynGridLayout::columnsForWidth(int width) const
-{
-    if ( isEmpty() )
-        return 0;
-
-    const int maxCols = (d_data->maxCols > 0) ? d_data->maxCols : itemCount();
-    if ( maxRowWidth(maxCols) <= width )
-        return maxCols;
-
-    for (int numCols = 2; numCols <= maxCols; numCols++ )
-    {
-        const int rowWidth = maxRowWidth(numCols);
-        if ( rowWidth > width )
-            return numCols - 1;
-    }
-
-    return 1; // At least 1 column
-}
-
-/*! 
-  Calculate the width of a layout for a given number of
-  columns.
-
-  \param numCols Given number of columns
-  \param itemWidth Array of the width hints for all items
-*/
-int QwtDynGridLayout::maxRowWidth(int numCols) const
-{
-    int col;
-
-    QwtArray<int> colWidth(numCols);
-    for ( col = 0; col < (int)numCols; col++ )
-        colWidth[col] = 0;
-
-    if ( d_data->isDirty )
-        ((QwtDynGridLayout*)this)->updateLayoutCache();
-
-    for ( uint index = 0; 
-        index < (uint)d_data->itemSizeHints.count(); index++ )
-    {
-        col = index % numCols;
-        colWidth[col] = qwtMax(colWidth[col], 
-            d_data->itemSizeHints[int(index)].width());
-    }
-
-    int rowWidth = 2 * margin() + (numCols - 1) * spacing();
-    for ( col = 0; col < (int)numCols; col++ )
-        rowWidth += colWidth[col];
-
-    return rowWidth;
-}
-
-/*!
-  \return the maximum width of all layout items
-*/
-
-int QwtDynGridLayout::maxItemWidth() const
-{
-    if ( isEmpty() )
-        return 0;
-
-    if ( d_data->isDirty )
-        ((QwtDynGridLayout*)this)->updateLayoutCache();
-
-    int w = 0;
-    for ( uint i = 0; i < (uint)d_data->itemSizeHints.count(); i++ )
-    {
-        const int itemW = d_data->itemSizeHints[int(i)].width();
-        if ( itemW > w )
-            w = itemW;
-    }
-
-    return w;
-}
-
-/*!
-  Calculate the geometries of the layout items for a layout
-  with numCols columns and a given rect.
-  \param rect Rect where to place the items
-  \param numCols Number of columns
-  \return item geometries
-*/
-
-#if QT_VERSION < 0x040000
-QValueList<QRect> QwtDynGridLayout::layoutItems(const QRect &rect,
-    uint numCols) const
-#else
-QList<QRect> QwtDynGridLayout::layoutItems(const QRect &rect,
-    uint numCols) const
-#endif
-{
-#if QT_VERSION < 0x040000
-    QValueList<QRect> itemGeometries;
-#else
-    QList<QRect> itemGeometries;
-#endif
-    if ( numCols == 0 || isEmpty() )
-        return itemGeometries;
-
-    uint numRows = itemCount() / numCols;
-    if ( numRows % itemCount() )
-        numRows++;
- 
-    QwtArray<int> rowHeight(numRows);
-    QwtArray<int> colWidth(numCols);
- 
-    layoutGrid(numCols, rowHeight, colWidth);
-
-    bool expandH, expandV;
-#if QT_VERSION >= 0x040000
-    expandH = expandingDirections() & Qt::Horizontal;
-    expandV = expandingDirections() & Qt::Vertical;
-#else
-    expandH = expanding() & QSizePolicy::Horizontally;
-    expandV = expanding() & QSizePolicy::Vertically;
-#endif
-
-    if ( expandH || expandV )
-        stretchGrid(rect, numCols, rowHeight, colWidth);
-
-    QwtDynGridLayout *that = (QwtDynGridLayout *)this;
-    const int maxCols = d_data->maxCols;
-    that->d_data->maxCols = numCols;
-    const QRect alignedRect = alignmentRect(rect);
-    that->d_data->maxCols = maxCols;
-
-    const int xOffset = expandH ? 0 : alignedRect.x();
-    const int yOffset = expandV ? 0 : alignedRect.y();
-
-    QwtArray<int> colX(numCols);
-    QwtArray<int> rowY(numRows);
-
-    const int xySpace = spacing();
-
-    rowY[0] = yOffset + margin();
-    for ( int r = 1; r < (int)numRows; r++ )
-        rowY[r] = rowY[r-1] + rowHeight[r-1] + xySpace;
-
-    colX[0] = xOffset + margin();
-    for ( int c = 1; c < (int)numCols; c++ )
-        colX[c] = colX[c-1] + colWidth[c-1] + xySpace;
-    
-    const int itemCount = d_data->itemList.size();
-    for ( int i = 0; i < itemCount; i++ )
-    {
-        const int row = i / numCols;
-        const int col = i % numCols;
-
-        QRect itemGeometry(colX[col], rowY[row], 
-            colWidth[col], rowHeight[row]);
-        itemGeometries.append(itemGeometry);
-    }
-
-    return itemGeometries;
-}
-
-
-/*!
-  Calculate the dimensions for the columns and rows for a grid
-  of numCols columns.
-  \param numCols Number of columns.
-  \param rowHeight Array where to fill in the calculated row heights.
-  \param colWidth Array where to fill in the calculated column widths.
-*/
-
-void QwtDynGridLayout::layoutGrid(uint numCols, 
-    QwtArray<int>& rowHeight, QwtArray<int>& colWidth) const
-{
-    if ( numCols <= 0 )
-        return;
-
-    if ( d_data->isDirty )
-        ((QwtDynGridLayout*)this)->updateLayoutCache();
-
-    for ( uint index = 0; 
-        index < (uint)d_data->itemSizeHints.count(); index++ )
-    {
-        const int row = index / numCols;
-        const int col = index % numCols;
-
-        const QSize &size = d_data->itemSizeHints[int(index)];
-
-        rowHeight[row] = (col == 0) 
-            ? size.height() : qwtMax(rowHeight[row], size.height());
-        colWidth[col] = (row == 0) 
-            ? size.width() : qwtMax(colWidth[col], size.width());
-    }
-}
-
-/*!
-  \return true: QwtDynGridLayout implements heightForWidth.
-  \sa QwtDynGridLayout::heightForWidth()
-*/
-
-bool QwtDynGridLayout::hasHeightForWidth() const
-{
-    return true;
-}
-
-/*!
-  \return The preferred height for this layout, given the width w. 
-  \sa QwtDynGridLayout::hasHeightForWidth()
-*/
-
-int QwtDynGridLayout::heightForWidth(int width) const
-{
-    if ( isEmpty() )
-        return 0;
-
-    const uint numCols = columnsForWidth(width);
-    uint numRows = itemCount() / numCols;
-    if ( itemCount() % numCols )
-        numRows++;
-
-    QwtArray<int> rowHeight(numRows);
-    QwtArray<int> colWidth(numCols);
-
-    layoutGrid(numCols, rowHeight, colWidth);
-
-    int h = 2 * margin() + (numRows - 1) * spacing();
-    for ( int row = 0; row < (int)numRows; row++ )
-        h += rowHeight[row];
-
-    return h;
-}
-
-/*!
-  Stretch columns in case of expanding() & QSizePolicy::Horizontal and
-  rows in case of expanding() & QSizePolicy::Vertical to fill the entire
-  rect. Rows and columns are stretched with the same factor.
-  \sa QwtDynGridLayout::setExpanding(), QwtDynGridLayout::expanding()
-*/
-
-void QwtDynGridLayout::stretchGrid(const QRect &rect, 
-    uint numCols, QwtArray<int>& rowHeight, QwtArray<int>& colWidth) const
-{
-    if ( numCols == 0 || isEmpty() )
-        return;
-
-    bool expandH, expandV;
-#if QT_VERSION >= 0x040000
-    expandH = expandingDirections() & Qt::Horizontal;
-    expandV = expandingDirections() & Qt::Vertical;
-#else
-    expandH = expanding() & QSizePolicy::Horizontally;
-    expandV = expanding() & QSizePolicy::Vertically;
-#endif
-
-    if ( expandH )
-    {
-        int xDelta = rect.width() - 2 * margin() - (numCols - 1) * spacing();
-        for ( int col = 0; col < (int)numCols; col++ )
-            xDelta -= colWidth[col];
-
-        if ( xDelta > 0 )
-        {
-            for ( int col = 0; col < (int)numCols; col++ )
-            {
-                const int space = xDelta / (numCols - col);
-                colWidth[col] += space;
-                xDelta -= space;
-            }
-        }
-    }
-
-    if ( expandV )
-    {
-        uint numRows = itemCount() / numCols;
-        if ( itemCount() % numCols )
-            numRows++;
-
-        int yDelta = rect.height() - 2 * margin() - (numRows - 1) * spacing();
-        for ( int row = 0; row < (int)numRows; row++ )
-            yDelta -= rowHeight[row];
-
-        if ( yDelta > 0 )
-        {
-            for ( int row = 0; row < (int)numRows; row++ )
-            {
-                const int space = yDelta / (numRows - row);
-                rowHeight[row] += space;
-                yDelta -= space;
-            }
-        }
-    }
-}
-
-/*!
-   Return the size hint. If maxCols() > 0 it is the size for
-   a grid with maxCols() columns, otherwise it is the size for
-   a grid with only one row.
-   \sa QwtDynGridLayout::maxCols(), QwtDynGridLayout::setMaxCols()
-*/
-
-QSize QwtDynGridLayout::sizeHint() const
-{
-    if ( isEmpty() )
-        return QSize();
-
-    const uint numCols = (d_data->maxCols > 0 ) ? d_data->maxCols : itemCount();
-    uint numRows = itemCount() / numCols;
-    if ( itemCount() % numCols )
-        numRows++;
-
-    QwtArray<int> rowHeight(numRows);
-    QwtArray<int> colWidth(numCols);
-
-    layoutGrid(numCols, rowHeight, colWidth);
-
-    int h = 2 * margin() + (numRows - 1) * spacing();
-    for ( int row = 0; row < (int)numRows; row++ )
-        h += rowHeight[row];
-
-    int w = 2 * margin() + (numCols - 1) * spacing(); 
-    for ( int col = 0; col < (int)numCols; col++ )
-        w += colWidth[col];
-
-    return QSize(w, h);
-}
-
-/*!
-  \return Number of rows of the current layout.
-  \sa QwtDynGridLayout::numCols
-  \warning The number of rows might change whenever the geometry changes
-*/
-uint QwtDynGridLayout::numRows() const 
-{ 
-    return d_data->numRows; 
-}
-
-/*!
-  \return Number of columns of the current layout.
-  \sa QwtDynGridLayout::numRows
-  \warning The number of columns might change whenever the geometry changes
-*/
-uint QwtDynGridLayout::numCols() const 
-{ 
-    return d_data->numCols; 
-}
diff --git a/src/qwt/qwt_event_pattern.cpp b/src/qwt/qwt_event_pattern.cpp
deleted file mode 100644
index cedf4f7..0000000
--- a/src/qwt/qwt_event_pattern.cpp
+++ /dev/null
@@ -1,288 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-#include <qevent.h>
-#include "qwt_event_pattern.h"
-
-/*! 
-  Constructor
-
-  \sa MousePatternCode, KeyPatternCode
-*/
-
-QwtEventPattern::QwtEventPattern():
-    d_mousePattern(MousePatternCount),
-    d_keyPattern(KeyPatternCount)
-{
-    initKeyPattern();
-    initMousePattern(3);
-}
-
-//! Destructor
-QwtEventPattern::~QwtEventPattern()
-{
-}
-
-/*!
-  Set default mouse patterns, depending on the number of mouse buttons
-
-  \param numButtons Number of mouse buttons ( <= 3 )
-  \sa MousePatternCode
-*/
-void QwtEventPattern::initMousePattern(int numButtons)
-{
-#if QT_VERSION < 0x040000
-    const int altButton = Qt::AltButton;
-    const int controlButton = Qt::ControlButton;
-    const int shiftButton = Qt::ShiftButton;
-#else
-    const int altButton = Qt::AltModifier;
-    const int controlButton = Qt::ControlModifier;
-    const int shiftButton = Qt::ShiftModifier;
-#endif
-
-    d_mousePattern.resize(MousePatternCount);
-
-    switch(numButtons)
-    {
-        case 1:
-        {
-            setMousePattern(MouseSelect1, Qt::LeftButton);
-            setMousePattern(MouseSelect2, Qt::LeftButton, controlButton);
-            setMousePattern(MouseSelect3, Qt::LeftButton, altButton);
-            break;
-        }
-        case 2:
-        {
-            setMousePattern(MouseSelect1, Qt::LeftButton);
-            setMousePattern(MouseSelect2, Qt::RightButton);
-            setMousePattern(MouseSelect3, Qt::LeftButton, altButton);
-            break;
-        }
-        default:
-        {
-            setMousePattern(MouseSelect1, Qt::LeftButton);
-            setMousePattern(MouseSelect2, Qt::RightButton);
-            setMousePattern(MouseSelect3, Qt::MidButton);
-        }
-    }
-    for ( int i = 0; i < 3; i++ )
-    {
-        setMousePattern(MouseSelect4 + i, 
-            d_mousePattern[MouseSelect1 + i].button,
-            d_mousePattern[MouseSelect1 + i].state | shiftButton);
-    }
-}
-
-/*!
-  Set default mouse patterns.
-
-  \sa KeyPatternCode
-*/
-void QwtEventPattern::initKeyPattern()
-{
-    d_keyPattern.resize(KeyPatternCount);
-
-    setKeyPattern(KeySelect1, Qt::Key_Return);
-    setKeyPattern(KeySelect2, Qt::Key_Space);
-    setKeyPattern(KeyAbort, Qt::Key_Escape);
-
-    setKeyPattern(KeyLeft, Qt::Key_Left);
-    setKeyPattern(KeyRight, Qt::Key_Right);
-    setKeyPattern(KeyUp, Qt::Key_Up);
-    setKeyPattern(KeyDown, Qt::Key_Down);
-
-    setKeyPattern(KeyRedo, Qt::Key_Plus);
-    setKeyPattern(KeyUndo, Qt::Key_Minus);
-    setKeyPattern(KeyHome, Qt::Key_Escape);
-}
-
-/*!
-  Change one mouse pattern
-
-  \param pattern Index of the pattern
-  \param button Button
-  \param state State
-
-  \sa QMouseEvent
-*/
-void QwtEventPattern::setMousePattern(uint pattern, int button, int state)
-{
-    if ( pattern < (uint)d_mousePattern.count() )
-    {
-        d_mousePattern[int(pattern)].button = button;
-        d_mousePattern[int(pattern)].state = state;
-    }
-}
-
-/*!
-  Change one key pattern
-
-  \param pattern Index of the pattern
-  \param key Key
-  \param state State
-
-  \sa QKeyEvent
-*/
-void QwtEventPattern::setKeyPattern(uint pattern, int key, int state)
-{
-    if ( pattern < (uint)d_keyPattern.count() )
-    {
-        d_keyPattern[int(pattern)].key = key;
-        d_keyPattern[int(pattern)].state = state;
-    }
-}
-
-//! Change the mouse event patterns
-void QwtEventPattern::setMousePattern(const QwtArray<MousePattern> &pattern)
-{
-    d_mousePattern = pattern;
-}
-
-//! Change the key event patterns
-void QwtEventPattern::setKeyPattern(const QwtArray<KeyPattern> &pattern)
-{
-    d_keyPattern = pattern;
-}
-
-//! Return mouse patterns
-const QwtArray<QwtEventPattern::MousePattern> &
-QwtEventPattern::mousePattern() const
-{
-    return d_mousePattern;
-}
-
-//! Return key patterns
-const QwtArray<QwtEventPattern::KeyPattern> &
-QwtEventPattern::keyPattern() const
-{
-    return d_keyPattern;
-}
-
-//! Return ,ouse patterns
-QwtArray<QwtEventPattern::MousePattern> &QwtEventPattern::mousePattern() 
-{
-    return d_mousePattern;
-}
-
-//! Return Key patterns
-QwtArray<QwtEventPattern::KeyPattern> &QwtEventPattern::keyPattern() 
-{
-    return d_keyPattern;
-}
-
-/*!
-  \brief Compare a mouse event with an event pattern. 
-
-  A mouse event matches the pattern when both have the same button
-  value and in the state value the same key flags(Qt::KeyButtonMask)
-  are set.
-  
-  \param pattern Index of the event pattern
-  \param e Mouse event
-  \return true if matches
-
-  \sa keyMatch()
-*/
-bool QwtEventPattern::mouseMatch(uint pattern, const QMouseEvent *e) const
-{
-    bool ok = false;
-
-    if ( e && pattern < (uint)d_mousePattern.count() )
-        ok = mouseMatch(d_mousePattern[int(pattern)], e);
-
-    return ok;
-}
-
-/*!
-  \brief Compare a mouse event with an event pattern. 
-
-  A mouse event matches the pattern when both have the same button
-  value and in the state value the same key flags(Qt::KeyButtonMask)
-  are set.
-  
-  \param pattern Mouse event pattern
-  \param e Mouse event
-  \return true if matches
-
-  \sa keyMatch()
-*/
-
-bool QwtEventPattern::mouseMatch(const MousePattern &pattern,
-    const QMouseEvent *e) const
-{
-    if ( e->button() != pattern.button )
-        return false;
-
-    const bool matched =
-#if QT_VERSION < 0x040000
-        (e->state() & Qt::KeyButtonMask) == 
-            (pattern.state & Qt::KeyButtonMask);
-#else
-        (e->modifiers() & Qt::KeyboardModifierMask) == 
-            (int)(pattern.state & Qt::KeyboardModifierMask);
-#endif
-
-    return matched;
-}
-
-/*!
-  \brief Compare a key event with an event pattern. 
-
-  A key event matches the pattern when both have the same key
-  value and in the state value the same key flags (Qt::KeyButtonMask)
-  are set.
-  
-  \param pattern Index of the event pattern
-  \param e Key event
-  \return true if matches
-
-  \sa mouseMatch()
-*/
-bool QwtEventPattern::keyMatch(uint pattern, const QKeyEvent *e) const
-{
-    bool ok = false;
-
-    if ( e && pattern < (uint)d_keyPattern.count() )
-        ok = keyMatch(d_keyPattern[int(pattern)], e);
-
-    return ok;
-}
-
-/*!
-  \brief Compare a key event with an event pattern. 
-
-  A key event matches the pattern when both have the same key
-  value and in the state value the same key flags (Qt::KeyButtonMask)
-  are set.
-  
-  \param pattern Key event pattern
-  \param e Key event
-  \return true if matches
-
-  \sa mouseMatch()
-*/
-
-bool QwtEventPattern::keyMatch(
-    const KeyPattern &pattern, const QKeyEvent *e) const
-{
-    if ( e->key() != pattern.key)
-        return false;
-
-    const bool matched =
-#if QT_VERSION < 0x040000
-        (e->state() & Qt::KeyButtonMask) == 
-            (pattern.state & Qt::KeyButtonMask);
-#else
-        (e->modifiers() & Qt::KeyboardModifierMask) == 
-            (int)(pattern.state & Qt::KeyboardModifierMask);
-#endif
-
-    return matched;
-}
diff --git a/src/qwt/qwt_interval_data.cpp b/src/qwt/qwt_interval_data.cpp
deleted file mode 100644
index 841d290..0000000
--- a/src/qwt/qwt_interval_data.cpp
+++ /dev/null
@@ -1,74 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- * 
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-#include "qwt_math.h"
-#include "qwt_interval_data.h"
-
-QwtIntervalData::QwtIntervalData()
-{
-}
-
-QwtIntervalData::QwtIntervalData(
-        const QwtArray<QwtDoubleInterval> &interval, 
-        const QwtArray<double> &y):
-    d_interval(interval),
-    d_y(y)
-{
-}
-    
-void QwtIntervalData::setData(
-    const QwtArray<QwtDoubleInterval> &interval,
-    const QwtArray<double> &y)
-{
-    d_interval = interval;
-    d_y = y;
-}
-
-QwtDoubleRect QwtIntervalData::boundingRect() const
-{
-    double minX, maxX, minY, maxY;
-    minX = maxX = minY = maxY = 0.0;
-
-    bool isValid = false;
-
-    const size_t sz = size();
-    for ( size_t i = 0; i < sz; i++ )
-    {
-        const QwtDoubleInterval intv = interval(i);
-        if ( !intv.isValid() )
-            continue;
-
-        const double yv = y(i);
-
-        if ( !isValid )
-        {
-            minX = intv.minValue();
-            maxX = intv.maxValue();
-            minY = maxY = yv;
-
-            isValid = true;
-        }
-        else
-        {
-            if ( intv.minValue() < minX )
-                minX = intv.minValue();
-            if ( intv.maxValue() > maxX )
-                maxX = intv.maxValue();
-
-            if ( yv < minY )
-                minY = yv;
-            if ( yv > maxY )
-                maxY = yv;
-        }
-    }
-    if ( !isValid )
-        return QwtDoubleRect(1.0, 1.0, -2.0, -2.0); // invalid
-
-    return QwtDoubleRect(minX, minY, maxX - minX, maxY - minY);
-}
diff --git a/src/qwt/qwt_knob.cpp b/src/qwt/qwt_knob.cpp
deleted file mode 100644
index 7419b13..0000000
--- a/src/qwt/qwt_knob.cpp
+++ /dev/null
@@ -1,524 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-#include <qpainter.h>
-#if QT_VERSION >= 0x040000
-#include <qpaintengine.h>
-#endif
-#include <qpalette.h>
-#include <qstyle.h>
-#include <qevent.h>
-#include "qwt_round_scale_draw.h"
-#include "qwt_knob.h"
-#include "qwt_math.h"
-#include "qwt_painter.h"
-#include "qwt_paint_buffer.h"
-
-class QwtKnob::PrivateData
-{
-public:
-    PrivateData()
-    {
-        angle = 0.0;
-        nTurns = 0.0;
-        borderWidth = 2;
-        borderDist = 4;
-        totalAngle = 270.0;
-        scaleDist = 4;
-        symbol = Line;
-        maxScaleTicks = 11;
-        knobWidth = 50;
-        dotWidth = 8;
-    }
-
-    int borderWidth;
-    int borderDist;
-    int scaleDist;
-    int maxScaleTicks;
-    int knobWidth;
-    int dotWidth;
-
-    Symbol symbol;
-    double angle;
-    double totalAngle;
-    double nTurns;
-
-    QRect knobRect; // bounding rect of the knob without scale
-};
-
-/*!
-  \brief Constructor
-  \param parent Parent widget
-*/
-QwtKnob::QwtKnob(QWidget* parent): 
-    QwtAbstractSlider(Qt::Horizontal, parent)
-{
-#if QT_VERSION < 0x040000
-    setWFlags(Qt::WNoAutoErase);
-#endif
-
-    d_data = new PrivateData;
-
-    setScaleDraw(new QwtRoundScaleDraw());
-
-    setUpdateTime(50);
-    setTotalAngle( 270.0 );
-    recalcAngle();
-    setSizePolicy(QSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum));
-
-    setRange(0.0, 10.0, 1.0);
-    setValue(0.0);
-}
-
-//! Destructor
-QwtKnob::~QwtKnob()
-{
-    delete d_data;
-}
-
-/*!
-  \brief Set the symbol of the knob
-  \sa QwtKnob::symbol()
-*/
-void QwtKnob::setSymbol(QwtKnob::Symbol s)
-{
-    if ( d_data->symbol != s )
-    {
-        d_data->symbol = s;
-        update();
-    }
-}
-
-/*! 
-    \return symbol of the knob
-    \sa QwtKnob::setSymbol()
-*/
-QwtKnob::Symbol QwtKnob::symbol() const
-{
-    return d_data->symbol;
-}
-
-/*!
-  \brief Set the total angle by which the knob can be turned
-  \param angle Angle in degrees.
-
-  The default angle is 270 degrees. It is possible to specify
-  an angle of more than 360 degrees so that the knob can be
-  turned several times around its axis.
-*/
-void QwtKnob::setTotalAngle (double angle)
-{
-    if (angle < 10.0)
-       d_data->totalAngle = 10.0;
-    else
-       d_data->totalAngle = angle;
-
-    scaleDraw()->setAngleRange( -0.5 * d_data->totalAngle, 
-        0.5 * d_data->totalAngle);
-    layoutKnob();
-}
-
-//! Return the total angle
-double QwtKnob::totalAngle() const 
-{
-    return d_data->totalAngle;
-}
-
-/*!
-   Change the scale draw of the knob
-
-   For changing the labels of the scales, it
-   is necessary to derive from QwtRoundScaleDraw and
-   overload QwtRoundScaleDraw::label(). 
-
-   \sa scaleDraw()
-*/
-void QwtKnob::setScaleDraw(QwtRoundScaleDraw *scaleDraw)
-{
-    setAbstractScaleDraw(scaleDraw);
-}
-
-/*! 
-   \return the scale draw of the knob
-   \sa setScaleDraw()
-*/
-const QwtRoundScaleDraw *QwtKnob::scaleDraw() const
-{
-    return (QwtRoundScaleDraw *)abstractScaleDraw();
-}
-
-/*! 
-   \return the scale draw of the knob
-   \sa setScaleDraw()
-*/
-QwtRoundScaleDraw *QwtKnob::scaleDraw()
-{
-    return (QwtRoundScaleDraw *)abstractScaleDraw();
-}
-
-/*!
-  \brief Draw the knob
-  \param painter painter
-  \param r Bounding rectangle of the knob (without scale)
-*/
-void QwtKnob::drawKnob(QPainter *painter, const QRect &r)
-{
-#if QT_VERSION < 0x040000
-    const QBrush buttonBrush = colorGroup().brush(QColorGroup::Button);
-    const QColor buttonTextColor = colorGroup().buttonText();
-    const QColor lightColor = colorGroup().light();
-    const QColor darkColor = colorGroup().dark();
-#else
-    const QBrush buttonBrush = palette().brush(QPalette::Button);
-    const QColor buttonTextColor = palette().color(QPalette::ButtonText);
-    const QColor lightColor = palette().color(QPalette::Light);
-    const QColor darkColor = palette().color(QPalette::Dark);
-#endif
-
-    const int bw2 = d_data->borderWidth / 2;
-
-    const int radius = (qwtMin(r.width(), r.height()) - bw2) / 2;
-
-    const QRect aRect( 
-        r.center().x() - radius, r.center().y() - radius,
-        2 * radius, 2 * radius);
-
-    //
-    // draw button face
-    //
-    painter->setBrush(buttonBrush);
-    painter->drawEllipse(aRect);
-
-    //
-    // draw button shades
-    //
-    QPen pn;
-    pn.setWidth(d_data->borderWidth);
-
-    pn.setColor(lightColor);
-    painter->setPen(pn);
-    painter->drawArc(aRect, 45*16, 180*16);
-
-    pn.setColor(darkColor);
-    painter->setPen(pn);
-    painter->drawArc(aRect, 225*16, 180*16);
-
-    //
-    // draw marker
-    //
-    if ( isValid() )
-        drawMarker(painter, d_data->angle, buttonTextColor);
-}
-
-/*!
-  \brief Notify change of value
-
-  Sets the knob's value to the nearest multiple
-  of the step size.
-*/
-void QwtKnob::valueChange()
-{
-    recalcAngle();
-    update();
-    QwtAbstractSlider::valueChange();
-}
-
-/*!
-  \brief Determine the value corresponding to a specified position
-
-  Called by QwtAbstractSlider
-  \param p point
-*/
-double QwtKnob::getValue(const QPoint &p)
-{
-    const double dx = double((rect().x() + rect().width() / 2) - p.x() );
-    const double dy = double((rect().y() + rect().height() / 2) - p.y() );
-
-    const double arc = atan2(-dx,dy) * 180.0 / M_PI;
-
-    double newValue =  0.5 * (minValue() + maxValue())
-       + (arc + d_data->nTurns * 360.0) * (maxValue() - minValue())
-      / d_data->totalAngle;
-
-    const double oneTurn = fabs(maxValue() - minValue()) * 360.0 / d_data->totalAngle;
-    const double eqValue = value() + mouseOffset();
-
-    if (fabs(newValue - eqValue) > 0.5 * oneTurn)
-    {
-        if (newValue < eqValue)
-           newValue += oneTurn;
-        else
-           newValue -= oneTurn;
-    }
-
-    return newValue;    
-}
-
-/*!
-  \brief Set the scrolling mode and direction
-
-  Called by QwtAbstractSlider
-  \param p Point in question
-*/
-void QwtKnob::getScrollMode(const QPoint &p, int &scrollMode, int &direction)
-{
-    const int r = d_data->knobRect.width() / 2;
-
-    const int dx = d_data->knobRect.x() + r - p.x();
-    const int dy = d_data->knobRect.y() + r - p.y();
-
-    if ( (dx * dx) + (dy * dy) <= (r * r)) // point is inside the knob
-    {
-        scrollMode = ScrMouse;
-        direction = 0;
-    }
-    else                                // point lies outside
-    {
-        scrollMode = ScrTimer;
-        double arc = atan2(double(-dx),double(dy)) * 180.0 / M_PI;
-        if ( arc < d_data->angle)
-           direction = -1;
-        else if (arc > d_data->angle)
-           direction = 1;
-        else
-           direction = 0;
-    }
-}
-
-
-/*!
-  \brief Notify a change of the range
-
-  Called by QwtAbstractSlider
-*/
-void QwtKnob::rangeChange()
-{
-    if (autoScale())
-        rescale(minValue(), maxValue());
-
-    layoutKnob();
-    recalcAngle();
-}
-
-/*!
-  \brief Qt Resize Event
-*/
-void QwtKnob::resizeEvent(QResizeEvent *)
-{
-    layoutKnob( false );
-}
-
-//! Recalculate the knob's geometry and layout based on
-//  the current rect and fonts.
-//  \param update_geometry  notify the layout system and call update
-//         to redraw the scale
-void QwtKnob::layoutKnob( bool update_geometry )
-{
-    const QRect r = rect();
-    const int radius = d_data->knobWidth / 2;
-
-    d_data->knobRect.setWidth(2 * radius);
-    d_data->knobRect.setHeight(2 * radius);
-    d_data->knobRect.moveCenter(r.center());
-
-    scaleDraw()->setRadius(radius + d_data->scaleDist);
-    scaleDraw()->moveCenter(r.center());
-
-    if ( update_geometry )
-    {
-        updateGeometry();
-        update();
-    }
-}
-
-/*!
-  \brief Repaint the knob
-*/
-void QwtKnob::paintEvent(QPaintEvent *e)
-{
-    const QRect &ur = e->rect();
-    if ( ur.isValid() ) 
-    {
-#if QT_VERSION < 0x040000
-        QwtPaintBuffer paintBuffer(this, ur);
-        draw(paintBuffer.painter(), ur);
-#else
-        QPainter painter(this);
-        if ( paintEngine()->hasFeature(QPaintEngine::Antialiasing) )
-            painter.setRenderHint(QPainter::Antialiasing);
-        draw(&painter, ur);
-#endif
-    }
-}
-
-/*!
-  \brief Repaint the knob
-*/
-void QwtKnob::draw(QPainter *painter, const QRect& ur)
-{
-    if ( !d_data->knobRect.contains( ur ) ) // event from valueChange()
-    {
-#if QT_VERSION < 0x040000
-        scaleDraw()->draw( painter, colorGroup() );
-#else
-        scaleDraw()->draw( painter, palette() );
-#endif
-    }
-
-    drawKnob( painter, d_data->knobRect );
-
-    if ( hasFocus() )
-        QwtPainter::drawFocusRect(painter, this);
-}
-
-/*!
-  \brief Draw the marker at the knob's front
-  \param p Painter
-  \param arc Angle of the marker
-  \param c Marker color
-*/
-void QwtKnob::drawMarker(QPainter *p, double arc, const QColor &c)
-{
-    const double rarc = arc * M_PI / 180.0;
-    const double ca = cos(rarc);
-    const double sa = - sin(rarc);
-
-    int radius = d_data->knobRect.width() / 2 - d_data->borderWidth;
-    if (radius < 3) 
-        radius = 3; 
-
-    const int ym = d_data->knobRect.y() + radius + d_data->borderWidth;
-    const int xm = d_data->knobRect.x() + radius + d_data->borderWidth;
-
-    switch (d_data->symbol)
-    {
-        case Dot:
-        {
-            p->setBrush(c);
-            p->setPen(Qt::NoPen);
-
-            const double rb = double(qwtMax(radius - 4 - d_data->dotWidth / 2, 0));
-            p->drawEllipse(xm - qRound(sa * rb) - d_data->dotWidth / 2,
-                   ym - qRound(ca * rb) - d_data->dotWidth / 2,
-                   d_data->dotWidth, d_data->dotWidth);
-            break;
-        }
-        case Line:
-        {
-            p->setPen(QPen(c, 2));
-
-            const double rb = qwtMax(double((radius - 4) / 3.0), 0.0);
-            const double re = qwtMax(double(radius - 4), 0.0);
-            
-            p->drawLine ( xm - qRound(sa * rb), ym - qRound(ca * rb),
-                xm - qRound(sa * re), ym - qRound(ca * re));
-            
-            break;
-        }
-    }
-}
-
-/*!
-  \brief Change the knob's width.
-
-  The specified width must be >= 5, or it will be clipped.
-  \param w New width
-*/
-void QwtKnob::setKnobWidth(int w)
-{
-    d_data->knobWidth = qwtMax(w,5);
-    layoutKnob();
-}
-
-//! Return the width of the knob
-int QwtKnob::knobWidth() const 
-{
-    return d_data->knobWidth;
-}
-
-/*!
-  \brief Set the knob's border width
-  \param bw new border width
-*/
-void QwtKnob::setBorderWidth(int bw)
-{
-    d_data->borderWidth = qwtMax(bw, 0);
-    layoutKnob();
-}
-
-//! Return the border width
-int QwtKnob::borderWidth() const 
-{
-    return d_data->borderWidth;
-}
-
-/*!
-  \brief Recalculate the marker angle corresponding to the
-    current value
-*/
-void QwtKnob::recalcAngle()
-{
-    //
-    // calculate the angle corresponding to the value
-    //
-    if (maxValue() == minValue())
-    {
-        d_data->angle = 0;
-        d_data->nTurns = 0;
-    }
-    else
-    {
-        d_data->angle = (value() - 0.5 * (minValue() + maxValue()))
-            / (maxValue() - minValue()) * d_data->totalAngle;
-        d_data->nTurns = floor((d_data->angle + 180.0) / 360.0);
-        d_data->angle = d_data->angle - d_data->nTurns * 360.0;
-    }
-}
-
-
-/*!
-    Recalculates the layout
-    \sa QwtKnob::layoutKnob()
-*/
-void QwtKnob::scaleChange()
-{
-    layoutKnob();
-}
-
-/*!
-    Recalculates the layout
-    \sa QwtKnob::layoutKnob()
-*/
-void QwtKnob::fontChange(const QFont &f)
-{
-    QwtAbstractSlider::fontChange( f );
-    layoutKnob();
-}
-
-/*!
-  \return QwtKnob::minimumSizeHint()
-*/
-QSize QwtKnob::sizeHint() const
-{
-    return minimumSizeHint();
-}
-
-/*!
-  \brief Return a minimum size hint
-  \warning The return value of QwtKnob::minimumSizeHint() depends on the 
-           font and the scale.
-*/
-QSize QwtKnob::minimumSizeHint() const
-{
-    // Add the scale radial thickness to the knobWidth
-    const int sh = scaleDraw()->extent( QPen(), font() );
-    const int d = 2 * sh + 2 * d_data->scaleDist + d_data->knobWidth;
-
-    return QSize( d, d );
-}
diff --git a/src/qwt/qwt_layout_metrics.cpp b/src/qwt/qwt_layout_metrics.cpp
deleted file mode 100644
index a236845..0000000
--- a/src/qwt/qwt_layout_metrics.cpp
+++ /dev/null
@@ -1,309 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- * 
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-#include <qapplication.h>
-#include <qpainter.h>
-#if QT_VERSION < 0x040000
-#include <qpaintdevicemetrics.h> 
-#include <qwmatrix.h> 
-#include <qpointarray.h> 
-#define QwtPointArray QPointArray
-#define QwtMatrix QWMatrix
-#else
-#include <qmatrix.h> 
-#include <qpolygon.h> 
-#define QwtPointArray QPolygon
-#define QwtMatrix QMatrix
-#endif
-#include <qpaintdevice.h> 
-#include <qdesktopwidget.h> 
-#include "qwt_math.h"
-#include "qwt_layout_metrics.h"
-
-static QSize deviceDpi(const QPaintDevice *device)
-{
-    QSize dpi;
-#if QT_VERSION < 0x040000
-    const QPaintDeviceMetrics metrics(device);
-    dpi.setWidth(metrics.logicalDpiX());
-    dpi.setHeight(metrics.logicalDpiY());
-#else
-    dpi.setWidth(device->logicalDpiX());
-    dpi.setHeight(device->logicalDpiY());
-#endif
-
-    return dpi;
-}
-
-#if QT_VERSION < 0x040000
-
-inline static const QWMatrix &matrix(const QPainter *painter)
-{
-    return painter->worldMatrix();
-}
-inline static QWMatrix invMatrix(const QPainter *painter)
-{
-    return painter->worldMatrix().invert();
-}
-
-#else // QT_VERSION >= 0x040000
-
-inline static const QMatrix &matrix(const QPainter *painter)
-{
-    return painter->matrix();
-}
-inline static QMatrix invMatrix(const QPainter *painter)
-{
-    return painter->matrix().inverted();
-}
-
-#endif
-
-QwtMetricsMap::QwtMetricsMap()
-{
-    d_screenToLayoutX = d_screenToLayoutY = 
-        d_deviceToLayoutX = d_deviceToLayoutY = 1.0;
-}
-
-void QwtMetricsMap::setMetrics(const QPaintDevice *layoutDevice, 
-    const QPaintDevice *paintDevice)
-{
-    const QSize screenDpi = deviceDpi(QApplication::desktop());
-    const QSize layoutDpi = deviceDpi(layoutDevice);
-    const QSize paintDpi = deviceDpi(paintDevice);
-
-    d_screenToLayoutX = double(layoutDpi.width()) / 
-        double(screenDpi.width());
-    d_screenToLayoutY = double(layoutDpi.height()) / 
-        double(screenDpi.height());
-
-    d_deviceToLayoutX = double(layoutDpi.width()) / 
-        double(paintDpi.width());
-    d_deviceToLayoutY = double(layoutDpi.height()) / 
-        double(paintDpi.height());
-}
-
-#ifndef QT_NO_TRANSFORMATIONS
-QPoint QwtMetricsMap::layoutToDevice(const QPoint &point, 
-    const QPainter *painter) const
-#else
-QPoint QwtMetricsMap::layoutToDevice(const QPoint &point, 
-    const QPainter *) const
-#endif
-{
-    if ( isIdentity() )
-        return point;
-
-    QPoint mappedPoint(point);
-
-#ifndef QT_NO_TRANSFORMATIONS
-    if ( painter )
-        mappedPoint = matrix(painter).map(mappedPoint);
-#endif
-
-    mappedPoint.setX(layoutToDeviceX(mappedPoint.x()));
-    mappedPoint.setY(layoutToDeviceY(mappedPoint.y()));
-
-#ifndef QT_NO_TRANSFORMATIONS
-    if ( painter )
-        mappedPoint = invMatrix(painter).map(mappedPoint);
-#endif
-
-    return mappedPoint;
-}
-
-#ifndef QT_NO_TRANSFORMATIONS
-QPoint QwtMetricsMap::deviceToLayout(const QPoint &point, 
-    const QPainter *painter) const
-#else
-QPoint QwtMetricsMap::deviceToLayout(const QPoint &point, 
-    const QPainter *) const
-#endif
-{
-    if ( isIdentity() )
-        return point;
-
-    QPoint mappedPoint(point);
-
-#ifndef QT_NO_TRANSFORMATIONS
-    if ( painter )
-        mappedPoint = matrix(painter).map(mappedPoint);
-#endif
-
-    mappedPoint.setX(deviceToLayoutX(mappedPoint.x()));
-    mappedPoint.setY(deviceToLayoutY(mappedPoint.y()));
-
-#ifndef QT_NO_TRANSFORMATIONS
-    if ( painter )
-        mappedPoint = invMatrix(painter).map(mappedPoint);
-#endif
-
-    return mappedPoint;
-}
-
-QPoint QwtMetricsMap::screenToLayout(const QPoint &point) const
-{
-    if ( d_screenToLayoutX == 1.0 && d_screenToLayoutY == 1.0 )
-        return point;
-
-    return QPoint(screenToLayoutX(point.x()), screenToLayoutY(point.y()));
-}
-
-#ifndef QT_NO_TRANSFORMATIONS
-QRect QwtMetricsMap::layoutToDevice(const QRect &rect, 
-    const QPainter *painter) const
-#else
-QRect QwtMetricsMap::layoutToDevice(const QRect &rect, 
-    const QPainter *) const
-#endif
-{
-    if ( isIdentity() )
-        return rect;
-
-    QRect mappedRect(rect);
-#ifndef QT_NO_TRANSFORMATIONS
-    if ( painter )
-        mappedRect = translate(matrix(painter), mappedRect);
-#endif
-
-    mappedRect = QRect(
-        layoutToDeviceX(mappedRect.x()), 
-        layoutToDeviceY(mappedRect.y()),
-        layoutToDeviceX(mappedRect.width()), 
-        layoutToDeviceY(mappedRect.height())
-    );
-
-#ifndef QT_NO_TRANSFORMATIONS
-    if ( painter )
-        mappedRect = translate(invMatrix(painter), mappedRect);
-#endif
-
-    return mappedRect;
-}
-
-#ifndef QT_NO_TRANSFORMATIONS
-QRect QwtMetricsMap::deviceToLayout(const QRect &rect,
-    const QPainter *painter) const
-#else
-QRect QwtMetricsMap::deviceToLayout(const QRect &rect,
-    const QPainter *) const
-#endif
-{
-    if ( isIdentity() )
-        return rect;
-
-    QRect mappedRect(rect);
-#ifndef QT_NO_TRANSFORMATIONS
-    if ( painter )
-        mappedRect = translate(matrix(painter), mappedRect);
-#endif
-
-    mappedRect = QRect(
-        deviceToLayoutX(mappedRect.x()), 
-        deviceToLayoutY(mappedRect.y()),
-        deviceToLayoutX(mappedRect.width()), 
-        deviceToLayoutY(mappedRect.height())
-    );
-
-#ifndef QT_NO_TRANSFORMATIONS
-    if ( painter )
-        mappedRect = translate(invMatrix(painter), mappedRect);
-#endif
-
-    return mappedRect;
-}
-
-QRect QwtMetricsMap::screenToLayout(const QRect &rect) const
-{
-    if ( d_screenToLayoutX == 1.0 && d_screenToLayoutY == 1.0 )
-        return rect;
-
-    return QRect(screenToLayoutX(rect.x()), screenToLayoutY(rect.y()),
-        screenToLayoutX(rect.width()), screenToLayoutY(rect.height()));
-}
-
-#ifndef QT_NO_TRANSFORMATIONS
-QwtPointArray QwtMetricsMap::layoutToDevice(const QwtPointArray &pa, 
-    const QPainter *painter) const
-#else
-QwtPointArray QwtMetricsMap::layoutToDevice(const QwtPointArray &pa, 
-    const QPainter *) const
-#endif
-{
-    if ( isIdentity() )
-        return pa;
-    
-    QwtPointArray mappedPa(pa);
-
-#ifndef QT_NO_TRANSFORMATIONS
-    if ( painter )
-        mappedPa = translate(matrix(painter), mappedPa);
-#endif
-
-    QwtMatrix m;
-    m.scale(1.0 / d_deviceToLayoutX, 1.0 / d_deviceToLayoutY);
-    mappedPa = translate(m, mappedPa);
-
-#ifndef QT_NO_TRANSFORMATIONS
-    if ( painter )
-        mappedPa = translate(invMatrix(painter), mappedPa);
-#endif
-
-    return mappedPa;
-}
-
-#ifndef QT_NO_TRANSFORMATIONS
-QwtPointArray QwtMetricsMap::deviceToLayout(const QwtPointArray &pa, 
-    const QPainter *painter) const
-#else
-QwtPointArray QwtMetricsMap::deviceToLayout(const QwtPointArray &pa, 
-    const QPainter *) const
-#endif
-{
-    if ( isIdentity() )
-        return pa;
-    
-    QwtPointArray mappedPa(pa);
-
-#ifndef QT_NO_TRANSFORMATIONS
-    if ( painter )
-        mappedPa = translate(matrix(painter), mappedPa);
-#endif
-
-    QwtMatrix m;
-    m.scale(d_deviceToLayoutX, d_deviceToLayoutY);
-    mappedPa = translate(m, mappedPa);
-
-#ifndef QT_NO_TRANSFORMATIONS
-    if ( painter )
-        mappedPa = translate(invMatrix(painter), mappedPa);
-#endif
-
-    return mappedPa;
-}
-
-/*!
-  Wrapper for QwtMatrix::mapRect. 
-*/
-
-QRect QwtMetricsMap::translate(
-    const QwtMatrix &m, const QRect &rect) 
-{
-    return m.mapRect(rect);
-}
-
-/*!
-  QwtPointArray QwtMatrix::operator*(const QwtPointArray &) const.
-*/
-
-QwtPointArray QwtMetricsMap::translate(
-    const QwtMatrix &m, const QwtPointArray &pa) 
-{
-    return m.map(pa);
-}
diff --git a/src/qwt/qwt_legend.cpp b/src/qwt/qwt_legend.cpp
deleted file mode 100644
index 279ccef..0000000
--- a/src/qwt/qwt_legend.cpp
+++ /dev/null
@@ -1,595 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- * 
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-// vim: expandtab
-
-#include <qapplication.h> 
-#include <qmap.h> 
-#if QT_VERSION >= 0x040000
-#include <qscrollbar.h> 
-#endif
-#include "qwt_math.h"
-#include "qwt_dyngrid_layout.h"
-#include "qwt_plot_item.h"
-#include "qwt_legend_item.h"
-#include "qwt_legend.h"
-
-class QwtLegend::PrivateData
-{
-public:
-    class LegendMap
-    {
-    public:
-        void insert(const QwtPlotItem *, QWidget *);
-
-        void remove(const QwtPlotItem *);
-        void remove(QWidget *);
-
-        void clear();
-
-        uint count() const;
-
-        inline const QWidget *find(const QwtPlotItem *) const;
-        inline QWidget *find(const QwtPlotItem *);
-
-        inline const QwtPlotItem *find(const QWidget *) const;
-        inline QwtPlotItem *find(const QWidget *);
-
-        const QMap<QWidget *, const QwtPlotItem *> &widgetMap() const;
-        QMap<QWidget *, const QwtPlotItem *> &widgetMap();
-
-    private:
-        QMap<QWidget *, const QwtPlotItem *> d_widgetMap;
-        QMap<const QwtPlotItem *, QWidget *> d_itemMap;
-    };
-
-    QwtLegend::LegendItemMode itemMode;
-    QwtLegend::LegendDisplayPolicy displayPolicy;
-    int identifierMode;
-
-    LegendMap map;
-
-    class LegendView;
-    LegendView *view;
-};
-
-#if QT_VERSION < 0x040000
-#include <qscrollview.h>
-
-class QwtLegend::PrivateData::LegendView: public QScrollView
-{
-public:
-    LegendView(QWidget *parent):
-        QScrollView(parent)
-    {
-        setResizePolicy(Manual);
-
-        viewport()->setBackgroundMode(Qt::NoBackground); // Avoid flicker
-
-        contentsWidget = new QWidget(viewport());
-
-        addChild(contentsWidget);
-    }
-
-    void viewportResizeEvent(QResizeEvent *e)
-    {
-        QScrollView::viewportResizeEvent(e);
-
-        // It's not safe to update the layout now, because
-        // we are in an internal update of the scrollview framework.
-        // So we delay the update by posting a LayoutHint.
-
-        QApplication::postEvent(contentsWidget, 
-            new QEvent(QEvent::LayoutHint));
-    }
-
-    QWidget *contentsWidget;
-};
-
-#else // QT_VERSION >= 0x040000
-
-#include <qscrollarea.h>
-
-class QwtLegend::PrivateData::LegendView: public QScrollArea
-{
-public:
-    LegendView(QWidget *parent):
-        QScrollArea(parent)
-    {
-        contentsWidget = new QWidget(this);
-
-        setWidget(contentsWidget);
-        setWidgetResizable(false);
-    }
-
-    virtual bool viewportEvent(QEvent *e) 
-    {
-        bool ok = QScrollArea::viewportEvent(e);
-
-        if ( e->type() == QEvent::Resize )
-        {
-            QApplication::postEvent(contentsWidget, 
-                new QEvent(QEvent::LayoutRequest));
-        }
-        return ok;
-    }
-
-    QSize viewportSize(int w, int h) const
-    {
-        const int sbHeight = horizontalScrollBar()->sizeHint().height();
-        const int sbWidth = verticalScrollBar()->sizeHint().width();
-    
-        const int cw = contentsRect().width();
-        const int ch = contentsRect().height();
-
-        int vw = cw;
-        int vh = ch;
-
-        if ( w > vw )
-            vh -= sbHeight;
-
-        if ( h > vh )
-        {
-            vw -= sbWidth;
-            if ( w > vw && vh == ch )
-                vh -= sbHeight;
-        }
-        return QSize(vw, vh);
-    }
-
-    QWidget *contentsWidget;
-};
-
-#endif
-
-
-void QwtLegend::PrivateData::LegendMap::insert(
-    const QwtPlotItem *item, QWidget *widget)
-{
-    d_itemMap.insert(item, widget);
-    d_widgetMap.insert(widget, item);
-}
-
-void QwtLegend::PrivateData::LegendMap::remove(const QwtPlotItem *item)
-{
-    QWidget *widget = d_itemMap[item];
-    d_itemMap.remove(item);
-    d_widgetMap.remove(widget);
-}
-
-void QwtLegend::PrivateData::LegendMap::remove(QWidget *widget)
-{
-    const QwtPlotItem *item = d_widgetMap[widget];
-    d_itemMap.remove(item);
-    d_widgetMap.remove(widget);
-}
-
-void QwtLegend::PrivateData::LegendMap::clear()
-{
-    QMap<QWidget *, const QwtPlotItem *>::const_iterator it;
-    for ( it = d_widgetMap.begin(); it != d_widgetMap.end(); ++it ) 
-        delete it.key();
-
-    d_itemMap.clear();
-    d_widgetMap.clear();
-}
-
-uint QwtLegend::PrivateData::LegendMap::count() const
-{
-    return d_itemMap.count();
-}
-
-inline const QWidget *QwtLegend::PrivateData::LegendMap::find(const QwtPlotItem *item) const
-{
-    if ( !d_itemMap.contains((QwtPlotItem *)item) )
-        return NULL;
-
-    return d_itemMap[(QwtPlotItem *)item];
-}
-
-inline QWidget *QwtLegend::PrivateData::LegendMap::find(const QwtPlotItem *item)
-{
-    if ( !d_itemMap.contains((QwtPlotItem *)item) )
-        return NULL;
-
-    return d_itemMap[(QwtPlotItem *)item];
-}
-
-inline const QwtPlotItem *QwtLegend::PrivateData::LegendMap::find(
-    const QWidget *widget) const
-{
-    if ( !d_widgetMap.contains((QWidget *)widget) )
-        return NULL;
-
-    return d_widgetMap[(QWidget *)widget];
-}
-
-inline QwtPlotItem *QwtLegend::PrivateData::LegendMap::find(
-    const QWidget *widget)
-{
-    if ( !d_widgetMap.contains((QWidget *)widget) )
-        return NULL;
-
-    return (QwtPlotItem *)d_widgetMap[(QWidget *)widget];
-}
-
-inline const QMap<QWidget *, const QwtPlotItem *> &
-    QwtLegend::PrivateData::LegendMap::widgetMap() const
-{
-    return d_widgetMap;
-} 
-
-inline QMap<QWidget *, const QwtPlotItem *> &
-    QwtLegend::PrivateData::LegendMap::widgetMap() 
-{
-    return d_widgetMap;
-} 
-
-/*!
-  \param parent Parent widget
-*/
-QwtLegend::QwtLegend(QWidget *parent): 
-    QFrame(parent)
-{
-    setFrameStyle(NoFrame);
-
-    d_data = new QwtLegend::PrivateData;
-    d_data->itemMode = QwtLegend::ReadOnlyItem;
-    d_data->displayPolicy = QwtLegend::Auto;
-    d_data->identifierMode = QwtLegendItem::ShowLine | 
-        QwtLegendItem::ShowSymbol | QwtLegendItem::ShowText;
-
-    d_data->view = new QwtLegend::PrivateData::LegendView(this);
-    d_data->view->setFrameStyle(NoFrame);
-
-    QwtDynGridLayout *layout = new QwtDynGridLayout(
-        d_data->view->contentsWidget);
-#if QT_VERSION < 0x040000
-    layout->setAutoAdd(true);
-#endif
-    layout->setAlignment(Qt::AlignHCenter | Qt::AlignTop);
-
-    d_data->view->contentsWidget->installEventFilter(this);
-}
-
-QwtLegend::~QwtLegend()
-{
-    delete d_data;
-}
-
-/*!
-  Set the legend display policy to:
-
-  \param policy Legend display policy
-  \param mode Identifier mode (or'd ShowLine, ShowSymbol, ShowText)
-
-  \sa QwtLegend::displayPolicy, QwtLegend::LegendDisplayPolicy
-*/
-void QwtLegend::setDisplayPolicy(LegendDisplayPolicy policy, int mode)
-{
-    d_data->displayPolicy = policy;
-    if (-1 != mode)
-       d_data->identifierMode = mode;
-
-    QMap<QWidget *, const QwtPlotItem *> &map = 
-        d_data->map.widgetMap();
-
-    QMap<QWidget *, const QwtPlotItem *>::iterator it;
-    for ( it = map.begin(); it != map.end(); ++it ) 
-    {
-#if QT_VERSION < 0x040000
-        QwtPlotItem *item = (QwtPlotItem *)it.data();
-#else
-        QwtPlotItem *item = (QwtPlotItem *)it.value();
-#endif
-        if ( item )
-            item->updateLegend(this);
-    }
-}
-
-/*! 
-  \return the legend display policy.
-  Default is LegendDisplayPolicy::Auto.
-  \sa QwtLegend::setDisplayPolicy, QwtLegend::LegendDisplayPolicy
-*/ 
-
-QwtLegend::LegendDisplayPolicy QwtLegend::displayPolicy() const 
-{ 
-    return d_data->displayPolicy; 
-}
-
-void QwtLegend::setItemMode(LegendItemMode mode)
-{
-    d_data->itemMode = mode;
-}
-
-QwtLegend::LegendItemMode QwtLegend::itemMode() const
-{
-    return d_data->itemMode;
-}
-
-/*!
-  \return the IdentifierMode to be used in combination with
-  LegendDisplayPolicy::Fixed.
-
-  Default is ShowLine | ShowSymbol | ShowText.
-*/
-
-int QwtLegend::identifierMode() const
-{
-    return d_data->identifierMode;
-}
-
-/*! 
-  The contents widget is the only child of the viewport() and
-  the parent widget of all legend items.
-*/
-QWidget *QwtLegend::contentsWidget() 
-{ 
-    return d_data->view->contentsWidget; 
-}
-
-QScrollBar *QwtLegend::horizontalScrollBar() const
-{
-    return d_data->view->horizontalScrollBar();
-}
-
-QScrollBar *QwtLegend::verticalScrollBar() const
-{
-    return d_data->view->horizontalScrollBar();
-}
-
-/*!  
-  The contents widget is the only child of the viewport() and
-  the parent widget of all legend items.
-*/
-
-const QWidget *QwtLegend::contentsWidget() const 
-{ 
-    return d_data->view->contentsWidget; 
-}
-
-/*!
-  Insert a new item for a plot item
-  \param plotItem Plot item
-  \param legendItem New legend item
-  \note The parent of item will be changed to QwtLegend::contentsWidget()
-*/
-void QwtLegend::insert(const QwtPlotItem *plotItem, QWidget *legendItem)
-{
-    if ( legendItem == NULL || plotItem == NULL )
-        return;
-
-    QWidget *contentsWidget = d_data->view->contentsWidget;
-
-    if ( legendItem->parent() != contentsWidget )
-    {
-#if QT_VERSION >= 0x040000
-        legendItem->setParent(contentsWidget);
-#else
-        legendItem->reparent(contentsWidget, QPoint(0, 0));
-#endif
-    }
-
-    legendItem->show();
-
-    d_data->map.insert(plotItem, legendItem);
-
-    layoutContents();
-
-    if ( contentsWidget->layout() )
-    {
-#if QT_VERSION >= 0x040000
-        contentsWidget->layout()->addWidget(legendItem);
-#endif
-
-        // set tab focus chain
-
-        QWidget *w = NULL;
-
-#if QT_VERSION < 0x040000
-        QLayoutIterator layoutIterator = 
-            contentsWidget->layout()->iterator();
-        for ( QLayoutItem *item = layoutIterator.current();
-            item != 0; item = ++layoutIterator)
-        {
-#else
-        for (int i = 0; i < contentsWidget->layout()->count(); i++)
-        {
-            QLayoutItem *item = contentsWidget->layout()->itemAt(i);
-#endif
-            if ( w && item->widget() )
-            {
-                QWidget::setTabOrder(w, item->widget());
-                w = item->widget();
-            }
-        }
-    }
-}
-
-QWidget *QwtLegend::find(const QwtPlotItem *plotItem) const
-{
-    return d_data->map.find(plotItem);
-}
-
-QwtPlotItem *QwtLegend::find(const QWidget *legendItem) const
-{
-    return d_data->map.find(legendItem);
-}
-
-//! Find the corresponding item for a plotItem and remove it from the item list.
-void QwtLegend::remove(const QwtPlotItem *plotItem)
-{ 
-    QWidget *legendItem = d_data->map.find(plotItem);
-    d_data->map.remove(legendItem); 
-    delete legendItem;
-}
-
-//! Remove all items.
-void QwtLegend::clear()
-{
-#if QT_VERSION < 0x040000
-    bool doUpdate = isUpdatesEnabled();
-#else
-    bool doUpdate = updatesEnabled();
-#endif
-    setUpdatesEnabled(false);
-
-    d_data->map.clear();
-
-    setUpdatesEnabled(doUpdate);
-    update();
-}
-
-//! Return a size hint.
-QSize QwtLegend::sizeHint() const
-{
-    QSize hint = d_data->view->contentsWidget->sizeHint();
-    hint += QSize(2 * frameWidth(), 2 * frameWidth());
-
-    return hint;
-}
-
-/*!
-  \return The preferred height, for the width w.
-*/
-int QwtLegend::heightForWidth(int w) const
-{
-    w -= 2 * frameWidth();
-
-    int h = d_data->view->contentsWidget->heightForWidth(w);
-#if QT_VERSION < 0x040000
-
-    // Asking the layout is the default implementation in Qt4 
-
-    if ( h <= 0 ) 
-    {
-        QLayout *l = d_data->view->contentsWidget->layout();
-        if ( l && l->hasHeightForWidth() )
-            h = l->heightForWidth(w);
-    }
-#endif
-    if ( h >= 0 )
-        h += 2 * frameWidth();
-
-    return h;
-}
-
-/*!
-  Adjust contents widget and item layout to the size of the viewport().
-*/
-void QwtLegend::layoutContents()
-{
-    const QSize visibleSize = d_data->view->viewport()->size();
-
-    const QLayout *l = d_data->view->contentsWidget->layout();
-    if ( l && l->inherits("QwtDynGridLayout") )
-    {
-        const QwtDynGridLayout *tl = (const QwtDynGridLayout *)l;
-
-        const int minW = int(tl->maxItemWidth()) + 2 * tl->margin();
-
-        int w = qwtMax(visibleSize.width(), minW);
-        int h = qwtMax(tl->heightForWidth(w), visibleSize.height());
-
-        const int vpWidth = d_data->view->viewportSize(w, h).width();
-        if ( w > vpWidth )
-        {
-            w = qwtMax(vpWidth, minW);
-            h = qwtMax(tl->heightForWidth(w), visibleSize.height());
-        }
-
-        d_data->view->contentsWidget->resize(w, h);
-#if QT_VERSION < 0x040000
-        d_data->view->resizeContents(w, h);
-#endif
-    }
-}
-
-/*
-  Filter layout related events of QwtLegend::contentsWidget().
-*/
-
-bool QwtLegend::eventFilter(QObject *o, QEvent *e)
-{
-    if ( o == d_data->view->contentsWidget )
-    {
-        switch(e->type())
-        {
-            case QEvent::ChildRemoved:
-            {   
-                const QChildEvent *ce = (const QChildEvent *)e;
-                if ( ce->child()->isWidgetType() )
-                    d_data->map.remove((QWidget *)ce->child());
-                break;
-            }
-#if QT_VERSION < 0x040000
-            case QEvent::LayoutHint:
-#else
-            case QEvent::LayoutRequest:
-#endif
-            {
-                layoutContents();
-                break;
-            }
-#if QT_VERSION < 0x040000
-            case QEvent::Resize:
-            {
-                updateGeometry();
-                break;
-            }
-#endif
-            default:
-                break;
-        }
-    }
-    
-    return QFrame::eventFilter(o, e);
-}
-
-
-//! Return true, if there are no legend items.
-bool QwtLegend::isEmpty() const
-{
-    return d_data->map.count() == 0;
-}
-
-//! Return the number of legend items.
-uint QwtLegend::itemCount() const
-{
-    return d_data->map.count();
-}
-
-#if QT_VERSION < 0x040000
-QValueList<QWidget *> QwtLegend::legendItems() const
-#else
-QList<QWidget *> QwtLegend::legendItems() const
-#endif
-{
-    const QMap<QWidget *, const QwtPlotItem *> &map = 
-        d_data->map.widgetMap();
-
-#if QT_VERSION < 0x040000
-    QValueList<QWidget *> list;
-#else
-    QList<QWidget *> list;
-#endif
-
-    QMap<QWidget *, const QwtPlotItem *>::const_iterator it;
-    for ( it = map.begin(); it != map.end(); ++it ) 
-        list += it.key();
-
-    return list;
-}
-
-void QwtLegend::resizeEvent(QResizeEvent *e)
-{
-    QFrame::resizeEvent(e);
-    d_data->view->setGeometry(contentsRect());
-}
diff --git a/src/qwt/qwt_legend_item.cpp b/src/qwt/qwt_legend_item.cpp
deleted file mode 100644
index 9b0bf9b..0000000
--- a/src/qwt/qwt_legend_item.cpp
+++ /dev/null
@@ -1,459 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- * 
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-// vim: expandtab
-
-#include <qpainter.h>
-#include <qdrawutil.h>
-#include <qstyle.h>
-#include <qpen.h>
-#if QT_VERSION >= 0x040000
-#include <qevent.h>
-#include <qstyleoption.h>
-#endif
-#include "qwt_painter.h"
-#include "qwt_symbol.h"
-#include "qwt_legend_item.h"
-
-static const int IdentifierWidth = 8;
-static const int Margin = 2;
-static const int ButtonFrame = 2;
-
-static QSize buttonShift(const QwtLegendItem *w)
-{
-#if QT_VERSION < 0x040000
-    const int ph = w->style().pixelMetric(
-        QStyle::PM_ButtonShiftHorizontal, w);
-    const int pv = w->style().pixelMetric(
-        QStyle::PM_ButtonShiftVertical, w);
-#else
-    QStyleOption option;
-    option.init(w);
-
-    const int ph = w->style()->pixelMetric(
-        QStyle::PM_ButtonShiftHorizontal, &option, w);
-    const int pv = w->style()->pixelMetric(
-        QStyle::PM_ButtonShiftVertical, &option, w);
-#endif
-    return QSize(ph, pv);
-}
-
-class QwtLegendItem::PrivateData
-{
-public:
-    PrivateData():
-        itemMode(QwtLegend::ReadOnlyItem),
-        isDown(false),
-        identifierMode(QwtLegendItem::ShowLine | QwtLegendItem::ShowText),
-        curvePen(Qt::NoPen)
-    {
-    }
-
-    QwtLegend::LegendItemMode itemMode;
-    bool isDown;
-
-    int identifierMode;
-    QwtSymbol symbol;
-    QPen curvePen;
-};
-
-/*!
-  \param parent Parent widget
-*/
-QwtLegendItem::QwtLegendItem(QWidget *parent):
-    QwtTextLabel(parent)
-{
-    d_data = new PrivateData;
-    init(QwtText());
-}
-
-/*!
-  \param symbol Curve symbol
-  \param curvePen Curve pen
-  \param text Label text
-  \param parent Parent widget
-*/
-QwtLegendItem::QwtLegendItem(const QwtSymbol &symbol, 
-        const QPen &curvePen, const QwtText &text, 
-        QWidget *parent):
-    QwtTextLabel(parent)
-{
-    d_data = new PrivateData;
-
-    d_data->symbol = symbol;
-    d_data->curvePen = curvePen;
-
-    init(text);
-}
-
-void QwtLegendItem::init(const QwtText &text)
-{
-    setIndent(Margin + IdentifierWidth + 2 * Margin);
-    setMargin(Margin);
-    setText(text);
-}
-
-QwtLegendItem::~QwtLegendItem()
-{
-    delete d_data;
-    d_data = NULL;
-}
-
-void QwtLegendItem::setText(const QwtText &text)
-{
-    const int flags = Qt::AlignLeft | Qt::AlignVCenter
-#if QT_VERSION < 0x040000
-        | Qt::WordBreak | Qt::ExpandTabs;
-#else
-        | Qt::TextExpandTabs | Qt::TextWordWrap;
-#endif
-
-    QwtText txt = text;
-    txt.setFlags(flags);
-
-    QwtTextLabel::setText(txt);
-}
-
-void QwtLegendItem::setItemMode(QwtLegend::LegendItemMode mode) 
-{ 
-    d_data->itemMode = mode; 
-    d_data->isDown = false; 
-
-#if QT_VERSION >= 0x040000
-    using namespace Qt;
-#endif
-    setFocusPolicy(mode != QwtLegend::ReadOnlyItem ? TabFocus : NoFocus);
-    setMargin(Margin + ButtonFrame);
-
-    updateGeometry();
-}
-
-QwtLegend::LegendItemMode QwtLegendItem::itemMode() const 
-{ 
-    return d_data->itemMode; 
-}
-
-/*!
-  Set identifier mode.
-  Default is ShowLine | ShowText.
-  \param mode Or'd values of IdentifierMode
-
-  \sa QwtLegendItem::identifierMode()
-*/
-void QwtLegendItem::setIdentifierMode(int mode)
-{
-    if ( mode != d_data->identifierMode )
-    {
-        d_data->identifierMode = mode;
-        update();
-    }
-}
-
-/*!
-  Or'd values of IdentifierMode.
-  \sa QwtLegendItem::setIdentifierMode(), QwtLegendItem::IdentifierMode
-*/
-int QwtLegendItem::identifierMode() const 
-{ 
-    return d_data->identifierMode; 
-}
-
-/*! 
-  Set curve symbol.
-  \param symbol Symbol
-
-  \sa QwtLegendItem::symbol()
-*/
-void QwtLegendItem::setSymbol(const QwtSymbol &symbol) 
-{
-    if ( symbol != d_data->symbol )
-    {
-        d_data->symbol = symbol;
-        update();
-    }
-}
-    
-/*!
-  \return The curve symbol.
-  \sa QwtLegendItem::setSymbol()
-*/
-const QwtSymbol& QwtLegendItem::symbol() const 
-{ 
-    return d_data->symbol; 
-}
-    
-
-/*! 
-  Set curve pen.
-  \param pen Curve pen
-
-  \sa QwtLegendItem::curvePen()
-*/
-void QwtLegendItem::setCurvePen(const QPen &pen) 
-{
-    if ( pen != d_data->curvePen )
-    {
-        d_data->curvePen = pen;
-        update();
-    }
-}
-
-/*!
-  \return The curve pen.
-  \sa QwtLegendItem::setCurvePen()
-*/
-const QPen& QwtLegendItem::curvePen() const 
-{ 
-    return d_data->curvePen; 
-}
-
-/*! 
-  Paint the identifier to a given rect.
-  \param painter Painter
-  \param rect Rect where to paint
-*/
-void QwtLegendItem::drawIdentifier(
-    QPainter *painter, const QRect &rect) const
-{
-    if ( rect.isEmpty() )
-        return;
-
-    if ( (d_data->identifierMode & ShowLine ) && (d_data->curvePen.style() != Qt::NoPen) )
-    {
-        painter->save();
-        painter->setPen(d_data->curvePen);
-        QwtPainter::drawLine(painter, rect.left(), rect.center().y(), 
-            rect.right(), rect.center().y());
-        painter->restore();
-    }
-
-    if ( (d_data->identifierMode & ShowSymbol) 
-        && (d_data->symbol.style() != QwtSymbol::None) )
-    {
-        QSize symbolSize = 
-            QwtPainter::metricsMap().screenToLayout(d_data->symbol.size());
-
-        // scale the symbol size down if it doesn't fit into rect.
-
-        if ( rect.width() < symbolSize.width() )
-        {
-            const double ratio = 
-                double(symbolSize.width()) / double(rect.width());
-            symbolSize.setWidth(rect.width());
-            symbolSize.setHeight(qRound(symbolSize.height() / ratio));
-        }
-        if ( rect.height() < symbolSize.height() )
-        {
-            const double ratio = 
-                double(symbolSize.width()) / double(rect.width());
-            symbolSize.setHeight(rect.height());
-            symbolSize.setWidth(qRound(symbolSize.width() / ratio));
-        }
-
-        QRect symbolRect;
-        symbolRect.setSize(symbolSize);
-        symbolRect.moveCenter(rect.center());
-
-        painter->save();
-        painter->setBrush(d_data->symbol.brush());
-        painter->setPen(d_data->symbol.pen());
-        d_data->symbol.draw(painter, symbolRect);
-        painter->restore();
-    }
-}
-
-/*!
-  Draw the legend item to a given rect.
-  \param painter Painter
-  \param rect Rect where to paint the button
-*/
-
-void QwtLegendItem::drawItem(QPainter *painter, const QRect &rect) const
-{
-    painter->save();
-
-    const QwtMetricsMap &map = QwtPainter::metricsMap();
-
-    const int margin = map.screenToLayoutX(Margin);
-
-    const QRect identifierRect(rect.x() + margin, rect.y(), 
-        map.screenToLayoutX(IdentifierWidth), rect.height());
-    drawIdentifier(painter, identifierRect);
-
-    // Label
-
-    QRect titleRect = rect;
-    titleRect.setX(identifierRect.right() + 2 * margin);
-     
-    text().draw(painter, titleRect);
-
-    painter->restore();
-}
-
-void QwtLegendItem::paintEvent(QPaintEvent *e)
-{
-    const QRect cr = contentsRect();
-
-    QPainter painter(this);
-    painter.setClipRegion(e->region());
-
-    if ( d_data->isDown )
-    {
-        qDrawWinButton(&painter, 0, 0, width(), height(), 
-#if QT_VERSION < 0x040000
-            colorGroup(), 
-#else
-            palette(),
-#endif
-            true);
-    }
-
-    painter.save();
-
-    if ( d_data->isDown )
-    {
-        const QSize shiftSize = buttonShift(this);
-        painter.translate(shiftSize.width(), shiftSize.height());
-    }
-
-    painter.setClipRect(cr);
-
-    drawContents(&painter);
-
-    QRect rect = cr;
-    rect.setX(rect.x() + Margin);
-    if ( d_data->itemMode != QwtLegend::ReadOnlyItem )
-        rect.setX(rect.x() + ButtonFrame);
-
-    rect.setWidth(IdentifierWidth);
-
-    drawIdentifier(&painter, rect);
-
-    painter.restore();
-}
-
-void QwtLegendItem::mousePressEvent(QMouseEvent *e)
-{
-    if ( e->button() != Qt::LeftButton )
-        return;
-
-    switch(d_data->itemMode)
-    {
-        case QwtLegend::ClickableItem:
-        {
-            setDown(true);
-            break;
-        }
-        case QwtLegend::CheckableItem:
-        {
-            setDown(!isDown());
-            break;
-        }
-        default:;
-    }
-}
-
-void QwtLegendItem::mouseReleaseEvent(QMouseEvent *e)
-{
-    if ( !e->button() == Qt::LeftButton )
-        return;
-
-    if ( d_data->itemMode == QwtLegend::ClickableItem )
-        setDown(false);
-}
-
-void QwtLegendItem::keyPressEvent(QKeyEvent *e)
-{
-    if ( e->key() != Qt::Key_Space || e->isAutoRepeat() )
-        return;
-
-    switch(d_data->itemMode)
-    {
-        case QwtLegend::ClickableItem:
-        {
-            setDown(true);
-            break;
-        }
-        case QwtLegend::CheckableItem:
-        {
-            setDown(!isDown());
-            break;
-        }
-        default:;
-    }
-}
-
-void QwtLegendItem::keyReleaseEvent(QKeyEvent *e)
-{
-    if ( e->key() != Qt::Key_Space || e->isAutoRepeat() )
-        return;
-
-    if ( d_data->itemMode == QwtLegend::ClickableItem )
-        setDown(false);
-}
-
-void QwtLegendItem::setChecked(bool on)
-{
-    if ( d_data->itemMode == QwtLegend::CheckableItem )
-    {
-        const bool isBlocked = signalsBlocked();
-        blockSignals(true);
-
-        setDown(on);
-
-        blockSignals(isBlocked);
-    }
-}
-
-bool QwtLegendItem::isChecked() const
-{
-    return d_data->itemMode == QwtLegend::CheckableItem && isDown();
-}
-
-void QwtLegendItem::setDown(bool down)
-{
-    if ( down == d_data->isDown )
-        return;
-
-    d_data->isDown = down;
-    update();
-
-    if ( d_data->itemMode == QwtLegend::ClickableItem )
-    {
-        if ( d_data->isDown )
-            emit pressed();
-        else
-        {
-            emit released();
-            emit clicked();
-        }
-    }
-
-    if ( d_data->itemMode == QwtLegend::CheckableItem )
-        emit checked(d_data->isDown);
-}
-
-bool QwtLegendItem::isDown() const
-{
-    return d_data->isDown;
-}
-
-QSize QwtLegendItem::sizeHint() const
-{
-    QSize sz = QwtTextLabel::sizeHint();
-    if ( d_data->itemMode != QwtLegend::ReadOnlyItem )
-        sz += buttonShift(this);
-
-    return sz;
-}
-
-void QwtLegendItem::drawText(QPainter *painter, const QRect &rect)
-{
-    QwtTextLabel::drawText(painter, rect);
-}
diff --git a/src/qwt/qwt_math.cpp b/src/qwt/qwt_math.cpp
deleted file mode 100644
index 63099be..0000000
--- a/src/qwt/qwt_math.cpp
+++ /dev/null
@@ -1,47 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- * 
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-// vim: expandtab
-
-#include "qwt_math.h"
-
-/*!
-  \brief Find the smallest value in an array
-  \param array Pointer to an array
-  \param size Array size
-*/
-double qwtGetMin(const double *array, int size)
-{
-    if (size <= 0)
-       return 0.0;
-
-    double rv = array[0];
-    for (int i = 1; i < size; i++)
-       rv = qwtMin(rv, array[i]);
-
-    return rv;
-}
-
-
-/*!
-  \brief Find the largest value in an array
-  \param array Pointer to an array
-  \param size Array size
-*/
-double qwtGetMax(const double *array, int size)
-{
-    if (size <= 0)
-       return 0.0;
-    
-    double rv = array[0];
-    for (int i = 1; i < size; i++)
-       rv = qwtMax(rv, array[i]);
-
-    return rv;
-}
diff --git a/src/qwt/qwt_paint_buffer.cpp b/src/qwt/qwt_paint_buffer.cpp
deleted file mode 100644
index 1aa45bd..0000000
--- a/src/qwt/qwt_paint_buffer.cpp
+++ /dev/null
@@ -1,201 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-
-#include <qglobal.h>
-#if QT_VERSION < 0x040000
-
-#include <qwidget.h>
-#include <qpainter.h>
-#include "qwt_paint_buffer.h"
-
-bool QwtPaintBuffer::d_enabled = true;
-
-//! Default constructor
-QwtPaintBuffer::QwtPaintBuffer():
-    d_device(0),
-    d_painter(0),
-    d_devicePainter(0)
-{
-}
-
-/*! 
-    Create an open paint buffer
-    \param device Device to paint on
-    \param rect Rect to paint on
-    \param painter Painter to paint on device. In case of 0
-                   QwtPaintBuffer uses an internal painter
-
-    \sa QwtPaintBuffer::open()
-*/
-
-QwtPaintBuffer::QwtPaintBuffer(QPaintDevice *device, 
-        const QRect &rect, QPainter *painter):
-    d_device(0),
-    d_painter(0),
-    d_devicePainter(0)
-{
-    open(device, rect, painter);
-}
-
-/*! 
-    Closes the buffer
-    \sa QwtPaintBuffer::close()
-*/
-QwtPaintBuffer::~QwtPaintBuffer()
-{
-    close();
-}
-
-/*! 
-  \return Depending on isEnabled() the painter
-          connected to an internal pixmap buffer 
-          otherwise the painter connected to the device.
-*/
-
-QPainter *QwtPaintBuffer::painter() 
-{ 
-    return d_painter; 
-}
-
-/*! 
-  \return Device to paint on
-*/
-const QPaintDevice *QwtPaintBuffer::device() 
-{ 
-    return d_device; 
-}
-
-/*! 
-    Enable/Disable double buffering. Please note that
-    this is a global switch for all QwtPaintBuffers, but
-    won't change opened buffers.
-*/
-void QwtPaintBuffer::setEnabled(bool enable) 
-{ 
-    d_enabled = enable; 
-}
-
-/*! 
-  \return true if double buffering is enabled, false otherwise.
-*/
-bool QwtPaintBuffer::isEnabled() 
-{ 
-    return d_enabled; 
-}
-
-/*! 
-    Open the buffer
-    \param device Device to paint on
-    \param rect Rect to paint on
-    \param painter Painter to paint on device. In case of 0
-                   QwtPaintBuffer uses an internal painter
-*/
-
-void QwtPaintBuffer::open(QPaintDevice *device, 
-        const QRect &rect, QPainter *painter)
-{
-    close();
-
-    if ( device == 0 || !rect.isValid() )
-        return;
-
-    d_device = device;
-    d_devicePainter = painter;
-    d_rect = rect;
-
-    if ( isEnabled() )
-    {
-#ifdef Q_WS_X11
-        if ( d_pixBuffer.x11Screen() != d_device->x11Screen() )
-            d_pixBuffer.x11SetScreen(d_device->x11Screen());
-#endif
-        d_pixBuffer.resize(d_rect.size());
-
-        d_painter = new QPainter();
-        if ( d_device->devType() == QInternal::Widget )
-        {
-            QWidget *w = (QWidget *)d_device;
-            d_pixBuffer.fill(w, d_rect.topLeft());
-            d_painter->begin(&d_pixBuffer, w);
-            d_painter->translate(-d_rect.x(), -d_rect.y());
-        }
-        else
-        {
-            d_painter->begin(&d_pixBuffer);
-        }
-    }
-    else
-    {
-        if ( d_devicePainter )
-            d_painter = d_devicePainter;
-        else
-            d_painter = new QPainter(d_device);
-
-        if ( d_device->devType() == QInternal::Widget )
-        {
-            QWidget *w = (QWidget *)d_device;
-            if ( w->testWFlags( Qt::WNoAutoErase ) )
-                d_painter->eraseRect(d_rect);
-        }
-    }
-}
-
-/*! 
-    Flush the internal pixmap buffer to the device.
-*/
-void QwtPaintBuffer::flush()
-{
-    if ( d_enabled && d_device != 0 && d_rect.isValid())
-    {
-        // We need a painter to find out if
-        // there is a painter redirection for d_device.
-
-        QPainter *p;
-        if ( d_devicePainter == 0 )
-            p = new QPainter(d_device);
-        else 
-            p = d_devicePainter;
-
-        QPaintDevice *device = p->device();
-        if ( device->isExtDev() )
-            d_devicePainter->drawPixmap(d_rect.topLeft(), d_pixBuffer);
-        else
-            bitBlt(device, d_rect.topLeft(), &d_pixBuffer );
-
-        if ( d_devicePainter == 0 )
-            delete p;
-    }
-}
-
-/*! 
-    Flush the internal pixmap buffer to the device and close the buffer.
-*/
-void QwtPaintBuffer::close()
-{
-    flush();
-
-    if ( d_painter )
-    {
-        if ( d_painter->isActive() )
-            d_painter->end();
-
-        if ( d_painter != d_devicePainter )
-            delete d_painter;
-    }
-
-    if ( !d_pixBuffer.isNull() )
-        d_pixBuffer = QPixmap();
-
-    d_device = 0;
-    d_painter = 0;
-    d_devicePainter = 0;
-} 
-
-#endif // QT_VERSION < 0x040000
diff --git a/src/qwt/qwt_painter.cpp b/src/qwt/qwt_painter.cpp
deleted file mode 100644
index d20d872..0000000
--- a/src/qwt/qwt_painter.cpp
+++ /dev/null
@@ -1,545 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-// vim: expandtab
-
-#include <qwindowdefs.h>
-#include <qwidget.h>
-#include <qrect.h>
-#include <qpainter.h>
-#include <qpalette.h>
-#include <qpaintdevice.h>
-#include <qpixmap.h>
-#include <qstyle.h>
-#if QT_VERSION < 0x040000
-#include <qsimplerichtext.h>
-#include <qpointarray.h>
-#define QwtPointArray QPointArray
-#else
-#include <qtextdocument.h>
-#include <qabstracttextdocumentlayout.h>
-#include <qstyleoption.h>
-#include <qpolygon.h>
-#define QwtPointArray QPolygon
-#endif
-
-#include "qwt_painter.h"
-#include "qwt_rect.h"
-#include "qwt_math.h"
-
-QwtMetricsMap QwtPainter::d_metricsMap;
-
-#if defined(Q_WS_X11)
-bool QwtPainter::d_deviceClipping = true;
-#else
-bool QwtPainter::d_deviceClipping = false;
-#endif
-
-/*!
-  En/Disable device clipping. On X11 the default
-  for device clipping is enabled, otherwise it is disabled.
-  \sa QwtPainter::deviceClipping()
-*/
-void QwtPainter::setDeviceClipping(bool enable)
-{
-    d_deviceClipping = enable;
-}
-
-/*!
-  Returns whether device clipping is enabled. On X11 the default
-  is enabled, otherwise it is disabled.
-  \sa QwtPainter::setDeviceClipping()
-*/
-
-bool QwtPainter::deviceClipping()
-{
-    return d_deviceClipping;
-}
-
-/*!
-  Returns rect for device clipping
-  \sa QwtPainter::setDeviceClipping()
-*/
-const QRect &QwtPainter::deviceClipRect()
-{
-    static QRect clip;
-
-    if ( !clip.isValid() )
-    {
-        clip.setCoords(QWT_COORD_MIN, QWT_COORD_MIN,
-            QWT_COORD_MAX, QWT_COORD_MAX);
-    }
-    return clip;
-}
-
-//! Clip a point array
-QwtPointArray QwtPainter::clip(const QwtPointArray &pa)
-{
-    const QwtRect rect(deviceClipRect());
-    return rect.clip(pa);
-}
-
-/*!
-  Scale all QwtPainter drawing operations using the ratio
-  QwtPaintMetrics(from).logicalDpiX() / QwtPaintMetrics(to).logicalDpiX()
-  and QwtPaintMetrics(from).logicalDpiY() / QwtPaintMetrics(to).logicalDpiY()
-
-  \sa QwtPainter::resetScaleMetrics(), QwtPainter::scaleMetricsX,
-        QwtPainter::scaleMetricsY()
-*/
-void QwtPainter::setMetricsMap(const QPaintDevice *layout,
-    const QPaintDevice *device)
-{
-    d_metricsMap.setMetrics(layout, device);
-}
-
-/*! 
-  Change the metrics map 
-  \sa QwtPainter::resetMetricsMap, QwtPainter::metricsMap
-*/
-void QwtPainter::setMetricsMap(const QwtMetricsMap &map)
-{
-    d_metricsMap = map;
-}
-
-/*! 
-   Reset the metrics map to the ratio 1:1
-   \sa QwtPainter::setMetricsMap, QwtPainter::resetMetricsMap
-*/
-void QwtPainter::resetMetricsMap()
-{
-    d_metricsMap = QwtMetricsMap();
-}
-
-/*!
-  \return Metrics map
-*/
-const QwtMetricsMap &QwtPainter::metricsMap()
-{
-    return d_metricsMap;
-}
-
-/*!
-    Wrapper for QPainter::setClipRect()
-*/
-void QwtPainter::setClipRect(QPainter *painter, const QRect &rect)
-{
-    painter->setClipRect(d_metricsMap.layoutToDevice(rect, painter));
-}
-
-/*!
-    Wrapper for QPainter::drawRect()
-*/
-void QwtPainter::drawRect(QPainter *painter, int x, int y, int w, int h) 
-{
-    drawRect(painter, QRect(x, y, w, h));
-}
-
-/*!
-    Wrapper for QPainter::drawRect()
-*/
-void QwtPainter::drawRect(QPainter *painter, const QRect &rect) 
-{
-    const QRect r = d_metricsMap.layoutToDevice(rect, painter);
-
-    QRect clipRect;
-
-#if QT_VERSION == 0x040000 
-    /*
-      Performance of Qt4.0.0 is horrible for non trivial brushs. Without
-      clipping expect minutes or hours for repainting large rects
-      (might result from zooming). Announced to be fixed in 4.0.1.
-     */
-    clipRect = painter->window();
-    if ( painter->hasClipping() )
-        clipRect &= painter->clipRegion().boundingRect();
-    if ( d_deviceClipping )
-        clipRect &= deviceClipRect();
-#else
-    if ( d_deviceClipping )
-        clipRect = deviceClipRect();
-#endif
-    if ( clipRect.isValid() )
-    {
-        if ( !clipRect.intersects(r) )
-            return;
-
-        if ( !clipRect.contains(r) )
-        {
-            fillRect(painter, r & clipRect, painter->brush());
-
-#ifdef __GNUC__
-#warning alignment of rects needs to be checked
-#endif
-            int pw = painter->pen().width();
-            pw = pw % 2 + pw / 2;
-
-            QwtPointArray pa(5);
-            pa.setPoint(0, r.left(), r.top());
-            pa.setPoint(1, r.right() - pw, r.top());
-            pa.setPoint(2, r.right() - pw, r.bottom() - pw);
-            pa.setPoint(3, r.left(), r.bottom() - pw);
-            pa.setPoint(4, r.left(), r.top());
-
-            painter->save();
-            painter->setBrush(Qt::NoBrush);
-            drawPolyline(painter, pa);
-            painter->restore();
-
-            return;
-        }
-    }
-
-    painter->drawRect(r);
-}
-
-/*!
-    Wrapper for QPainter::fillRect()
-*/
-void QwtPainter::fillRect(QPainter *painter, 
-    const QRect &rect, const QBrush &brush)
-{
-    if ( !rect.isValid() )
-        return;
-
-    QRect clipRect;
-#if QT_VERSION >= 0x040000
-
-    /*
-      Performance of Qt4 is horrible for non trivial brushs. Without
-      clipping expect minutes or hours for repainting large rects
-      (might result from zooming)
-    */
-
-    clipRect = painter->window();
-    if ( painter->hasClipping() )
-        clipRect &= painter->clipRegion().boundingRect();
-    if ( d_deviceClipping )
-        clipRect &= deviceClipRect();
-#else
-    if ( d_deviceClipping )
-        clipRect = deviceClipRect();
-#endif
-
-    QRect r = d_metricsMap.layoutToDevice(rect, painter);
-    if ( clipRect.isValid() )
-        r = r.intersect(clipRect);
-
-    if ( r.isValid() )
-        painter->fillRect(r, brush);
-}
-
-/*!
-    Wrapper for QPainter::drawEllipse()
-*/
-void QwtPainter::drawEllipse(QPainter *painter, const QRect &rect)
-{
-    const QRect r = d_metricsMap.layoutToDevice(rect, painter);
-
-    if ( d_deviceClipping && !deviceClipRect().contains(rect) )
-        return;
-
-    painter->drawEllipse(r);
-}
-
-/*!
-    Wrapper for QPainter::drawText()
-*/
-void QwtPainter::drawText(QPainter *painter, int x, int y, 
-        const QString &text)
-{
-    drawText(painter, QPoint(x, y), text);
-}
-
-/*!
-    Wrapper for QPainter::drawText()
-*/
-void QwtPainter::drawText(QPainter *painter, const QPoint &pos, 
-        const QString &text)
-{
-    const QPoint p = d_metricsMap.layoutToDevice(pos, painter);
-
-    if ( d_deviceClipping && !deviceClipRect().contains(p) )
-        return;
-
-    painter->drawText(p, text);
-}
-
-/*!
-    Wrapper for QPainter::drawText()
-*/
-void QwtPainter::drawText(QPainter *painter, int x, int y, int w, int h, 
-        int flags, const QString &text)
-{
-    drawText(painter, QRect(x, y, w, h), flags, text);
-}
-
-/*!
-    Wrapper for QPainter::drawText()
-*/
-void QwtPainter::drawText(QPainter *painter, const QRect &rect, 
-        int flags, const QString &text)
-{
-    painter->drawText(
-        d_metricsMap.layoutToDevice(rect, painter), flags, text);
-}
-
-#ifndef QT_NO_RICHTEXT
-
-/*!
-  Wrapper for QSimpleRichText::draw()
-*/
-#if QT_VERSION < 0x040000
-
-void QwtPainter::drawSimpleRichText(QPainter *painter, const QRect &rect,
-    int flags, QSimpleRichText &text)
-{
-    QColorGroup cg;
-    cg.setColor(QColorGroup::Text, painter->pen().color());
-
-    const QRect scaledRect = d_metricsMap.layoutToDevice(rect, painter);
-
-    text.setWidth(painter, scaledRect.width());
-
-    // QSimpleRichText is Qt::AlignTop by default
-
-    int y = scaledRect.y();
-    if (flags & Qt::AlignBottom)
-        y += (scaledRect.height() - text.height());
-    else if (flags & Qt::AlignVCenter)
-        y += (scaledRect.height() - text.height())/2;
-
-    text.draw(painter, scaledRect.x(), y, scaledRect, cg);
-}
-#else
-void QwtPainter::drawSimpleRichText(QPainter *painter, const QRect &rect,
-    int flags, QTextDocument &text)
-{
-    const QRect scaledRect = d_metricsMap.layoutToDevice(rect, painter);
-    text.setPageSize(QSize(scaledRect.width(), QWIDGETSIZE_MAX));
-
-    QAbstractTextDocumentLayout* layout = text.documentLayout();
-
-    const int height = qRound(layout->documentSize().height());
-    int y = scaledRect.y();
-    if (flags & Qt::AlignBottom)
-        y += (scaledRect.height() - height);
-    else if (flags & Qt::AlignVCenter)
-        y += (scaledRect.height() - height)/2;
-
-    QAbstractTextDocumentLayout::PaintContext context;
-    context.palette.setColor(QPalette::Text, painter->pen().color());
-
-    painter->save();
-
-    painter->translate(scaledRect.x(), scaledRect.y());
-    layout->draw(painter, context);
-
-    painter->restore();
-}
-#endif
-
-#endif // !QT_NO_RICHTEXT
-
-
-/*!
-  Wrapper for QPainter::drawLine()
-*/
-void QwtPainter::drawLine(QPainter *painter, int x1, int y1, int x2, int y2)
-{
-    if ( d_deviceClipping && 
-        !(deviceClipRect().contains(x1, y1) && deviceClipRect().contains(x2, y2)) )
-    {
-        QwtPointArray pa(2);
-        pa.setPoint(0, x1, y1);
-        pa.setPoint(1, x2, y2);
-        drawPolyline(painter, pa);
-        return;
-    }
-
-    if ( d_metricsMap.isIdentity() )
-    {
-#if QT_VERSION >= 0x030200 && QT_VERSION < 0x040000
-        if ( !painter->device()->isExtDev() )
-#endif
-        {
-            painter->drawLine(x1, y1, x2, y2);
-            return;
-        }
-    }
-
-    const QPoint p1 = d_metricsMap.layoutToDevice(QPoint(x1, y1));
-    const QPoint p2 = d_metricsMap.layoutToDevice(QPoint(x2, y2));
-
-#if QT_VERSION >= 0x030200 && QT_VERSION < 0x040000
-    if ( painter->device()->isExtDev() )
-    {
-        // Strange: the postscript driver of QPrinter adds an offset 
-        // of 0.5 to the start/endpoint when using drawLine, but not
-        // for lines painted with drawLineSegments.
-
-        QwtPointArray pa(2);
-        pa.setPoint(0, p1);
-        pa.setPoint(1, p2);
-        painter->drawLineSegments(pa);
-    }
-    else
-        painter->drawLine(p1, p2);
-#else
-    painter->drawLine(p1, p2);
-#endif
-}
-
-/*!
-  Wrapper for QPainter::drawPolygon()
-*/
-void QwtPainter::drawPolygon(QPainter *painter, const QwtPointArray &pa)
-{
-    QwtPointArray cpa = d_metricsMap.layoutToDevice(pa);
-    if ( d_deviceClipping )
-    {
-#ifdef __GNUC__
-#warning clipping ignores painter transformations
-#endif
-        cpa = clip(cpa);
-    }
-    painter->drawPolygon(cpa);
-}
-
-/*!
-    Wrapper for QPainter::drawPolyline()
-*/
-void QwtPainter::drawPolyline(QPainter *painter, const QwtPointArray &pa)
-{
-    QwtPointArray cpa = d_metricsMap.layoutToDevice(pa);
-    if ( d_deviceClipping )
-        cpa = clip(cpa);
-    painter->drawPolyline(cpa);
-}
-
-/*!
-    Wrapper for QPainter::drawPoint()
-*/
-
-void QwtPainter::drawPoint(QPainter *painter, int x, int y)
-{
-    const QPoint pos = d_metricsMap.layoutToDevice(QPoint(x, y));
-
-    if ( d_deviceClipping && !deviceClipRect().contains(pos) )
-        return;
-
-    painter->drawPoint(pos);
-}
-
-void QwtPainter::drawColoredArc(QPainter *painter, const QRect &rect, 
-    int peak, int arc, int interval, const QColor &c1, const QColor &c2)
-{
-    int h1, s1, v1;
-    int h2, s2, v2;
-
-#if QT_VERSION < 0x040000
-    c1.hsv(&h1, &s1, &v1);
-    c2.hsv(&h2, &s2, &v2);
-#else
-    c1.getHsv(&h1, &s1, &v1);
-    c2.getHsv(&h2, &s2, &v2);
-#endif
-    
-    arc /= 2;
-    for ( int angle = -arc; angle < arc; angle += interval)
-    {
-        double ratio;
-        if ( angle >= 0 )
-            ratio = 1.0 - angle / double(arc);
-        else
-            ratio = 1.0 + angle / double(arc);
-            
-
-        QColor c;
-        c.setHsv( h1 + qRound(ratio * (h2 - h1)),
-            s1 + qRound(ratio * (s2 - s1)),
-            v1 + qRound(ratio * (v2 - v1)) );
-
-        painter->setPen(QPen(c, painter->pen().width()));
-        painter->drawArc(rect, (peak + angle) * 16, interval * 16);
-    }
-}
-
-void QwtPainter::drawFocusRect(QPainter *painter, QWidget *widget)
-{
-    drawFocusRect(painter, widget, widget->rect());
-}
-
-void QwtPainter::drawFocusRect(QPainter *painter, QWidget *widget,
-    const QRect &rect)
-{
-#if QT_VERSION < 0x040000
-        widget->style().drawPrimitive(QStyle::PE_FocusRect, painter,
-            rect, widget->colorGroup());
-#else
-        QStyleOptionFocusRect opt;
-        opt.init(widget);
-        opt.rect = rect;
-        opt.state |= QStyle::State_HasFocus;
-
-        widget->style()->drawPrimitive(QStyle::PE_FrameFocusRect, 
-            &opt, painter, widget);
-#endif
-
-}
-
-//!  Draw a round frame
-#if QT_VERSION < 0x040000
-void QwtPainter::drawRoundFrame(QPainter *painter, const QRect &rect,
-    int width, const QColorGroup &cg, bool sunken)
-#else
-void QwtPainter::drawRoundFrame(QPainter *painter, const QRect &rect,
-    int width, const QPalette &palette, bool sunken)
-#endif
-{
-
-#if QT_VERSION < 0x040000
-    QColor c0 = cg.mid();
-    QColor c1, c2;
-    if ( sunken )
-    {
-        c1 = cg.dark();
-        c2 = cg.light();
-    }
-    else
-    {
-        c1 = cg.light();
-        c2 = cg.dark();
-    }
-#else
-    QColor c0 = palette.color(QPalette::Mid);
-    QColor c1, c2;
-    if ( sunken )
-    {
-        c1 = palette.color(QPalette::Dark);
-        c2 = palette.color(QPalette::Light);
-    }
-    else
-    {
-        c1 = palette.color(QPalette::Light);
-        c2 = palette.color(QPalette::Dark);
-    }
-#endif
-
-    painter->setPen(QPen(c0, width));
-    painter->drawArc(rect, 0, 360 * 16); // full
-
-    const int peak = 150;
-    const int interval = 2;
-
-    if ( c0 != c1 )
-        drawColoredArc(painter, rect, peak, 160, interval, c0, c1);
-    if ( c0 != c2 )
-        drawColoredArc(painter, rect, peak + 180, 120, interval, c0, c2);
-}
diff --git a/src/qwt/qwt_picker.cpp b/src/qwt/qwt_picker.cpp
deleted file mode 100644
index 6c8f246..0000000
--- a/src/qwt/qwt_picker.cpp
+++ /dev/null
@@ -1,1294 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-#include <qapplication.h>
-#include <qevent.h>
-#include <qpainter.h>
-#include <qframe.h>
-#include <qcursor.h>
-#include <qbitmap.h>
-#include "qwt_math.h"
-#include "qwt_painter.h"
-#include "qwt_picker_machine.h"
-#include "qwt_picker.h"
-#if QT_VERSION < 0x040000
-#include <qguardedptr.h>
-#else
-#include <qpointer.h>
-#endif
-
-class QwtPicker::PrivateData
-{
-public:
-    class PickerWidget: public QWidget
-    {
-    public:
-        enum Type
-        {
-            RubberBand,
-            Text
-        };
-        PickerWidget(QwtPicker *, QWidget *, Type);
-        virtual void updateMask();
-
-    protected:
-        virtual void paintEvent(QPaintEvent *);
-
-        QwtPicker *d_picker;
-        Type d_type;
-    };
-
-    bool enabled;
-
-    QwtPickerMachine *stateMachine;
-
-    int selectionFlags;
-    QwtPicker::ResizeMode resizeMode;
-
-    QwtPicker::RubberBand rubberBand;
-    QPen rubberBandPen;
-
-    QwtPicker::DisplayMode trackerMode;
-    QPen trackerPen;
-    QFont trackerFont;
-
-    QwtPicker::SelectedPoints selection;
-    bool isActive;
-    QPoint labelPosition;
-
-    bool mouseTracking; // used to save previous value
-
-    /*
-      On X11 the widget below the picker widgets gets paint events
-      with a region that is the bounding rect of the mask, if it is complex.
-      In case of (f.e) a CrossRubberBand and a text this creates complete
-      repaints of the widget. So we better use two different widgets.
-     */
-     
-#if QT_VERSION < 0x040000
-    QGuardedPtr<PickerWidget> rubberBandWidget;
-    QGuardedPtr<PickerWidget> textLabelWidget;
-#else
-    QPointer<PickerWidget> rubberBandWidget;
-    QPointer<PickerWidget> textLabelWidget;
-#endif
-};
-
-QwtPicker::PrivateData::PickerWidget::PickerWidget(
-        QwtPicker *picker, QWidget *parent, Type type):
-    QWidget(parent),
-    d_picker(picker),
-    d_type(type)
-{
-#if QT_VERSION >= 0x040000
-    setAttribute(Qt::WA_TransparentForMouseEvents);
-    setAttribute(Qt::WA_NoSystemBackground);
-    setAttribute(Qt::WA_PaintOnScreen);
-    setFocusPolicy(Qt::NoFocus);
-#else
-    setBackgroundMode(Qt::NoBackground);
-    setFocusPolicy(QWidget::NoFocus);
-#endif
-    hide();
-}
-
-void QwtPicker::PrivateData::PickerWidget::updateMask()
-{
-    QBitmap bm(width(), height());
-    bm.fill(Qt::color0);
-
-    QPainter painter(&bm);
-
-    if ( d_type == RubberBand )
-    {
-        QPen pen = d_picker->rubberBandPen();
-        pen.setColor(Qt::color1);
-        painter.setPen(pen);
-
-        d_picker->drawRubberBand(&painter);
-    }
-    if ( d_type == Text )
-    {
-        QPen pen = d_picker->trackerPen();
-        pen.setColor(Qt::color1);
-        painter.setPen(pen);
-
-        d_picker->drawTracker(&painter);
-    }
-
-    painter.end();
-
-
-#if QT_VERSION < 0x040000
-    QWidget *w = parentWidget();
-    const bool doUpdate = w->isUpdatesEnabled();
-    const Qt::BackgroundMode bgMode = w->backgroundMode();
-    w->setUpdatesEnabled(false);
-    if ( bgMode != Qt::NoBackground )
-        w->setBackgroundMode(Qt::NoBackground);
-#endif
-
-    const QRegion r(bm);
-    setMask(r);
-
-#if QT_VERSION < 0x040000
-    if ( bgMode != Qt::NoBackground )
-        w->setBackgroundMode(bgMode);
-
-    w->setUpdatesEnabled(doUpdate);
-#endif
-
-    setShown(!r.isEmpty());
-}
-
-void QwtPicker::PrivateData::PickerWidget::paintEvent(QPaintEvent *e)
-{
-    QPainter painter(this);
-
-    if ( d_type == RubberBand )
-    {
-        painter.setClipRegion(e->region());
-        painter.setPen(d_picker->rubberBandPen());
-        d_picker->drawRubberBand(&painter);
-    }
-
-    if ( d_type == Text )
-    {
-        painter.setClipRegion(e->region());
-        painter.setPen(d_picker->trackerPen());
-        d_picker->drawTracker(&painter);
-    }
-}
-
-/*!
-  Constructor
-
-  Creates an picker that is enabled, but where selection flag
-  is set to NoSelection, rubberband and tracker are disabled.
-  
-  \param parent Parent widget, that will be observed
- */
-
-QwtPicker::QwtPicker(QWidget *parent):
-    QObject(parent)
-{
-    init(parent, NoSelection, NoRubberBand, AlwaysOff);
-}
-
-/*!
-  Constructor
-
-  \param selectionFlags Or�d value of SelectionType, RectSelectionType and 
-                        SelectionMode
-  \param rubberBand Rubberband style
-  \param trackerMode Tracker mode
-  \param parent Parent widget, that will be observed
- */
-QwtPicker::QwtPicker(int selectionFlags, RubberBand rubberBand,
-        DisplayMode trackerMode, QWidget *parent):
-    QObject(parent)
-{
-    init(parent, selectionFlags, rubberBand, trackerMode);
-}
-
-//! Destructor
-QwtPicker::~QwtPicker()
-{
-    setMouseTracking(false);
-    delete d_data->stateMachine;
-    delete d_data->rubberBandWidget;
-    delete d_data->textLabelWidget;
-    delete d_data;
-}
-
-//! Init the picker, used by the constructors
-void QwtPicker::init(QWidget *parent, int selectionFlags, 
-    RubberBand rubberBand, DisplayMode trackerMode)
-{
-    d_data = new PrivateData;
-
-    d_data->rubberBandWidget = NULL;
-    d_data->textLabelWidget = NULL;
-
-    d_data->rubberBand = rubberBand;
-    d_data->enabled = false;
-    d_data->resizeMode = Stretch;
-    d_data->trackerMode = AlwaysOff;
-    d_data->isActive = false;
-    d_data->labelPosition = QPoint(-1, -1);
-    d_data->mouseTracking = false;
-
-    d_data->stateMachine = NULL;
-    setSelectionFlags(selectionFlags);
-
-    if ( parent )
-    {
-#if QT_VERSION >= 0x040000
-        if ( parent->focusPolicy() == Qt::NoFocus )
-            parent->setFocusPolicy(Qt::WheelFocus);
-#else
-        if ( parent->focusPolicy() == QWidget::NoFocus )
-            parent->setFocusPolicy(QWidget::WheelFocus);
-#endif
-
-        d_data->trackerFont = parent->font();
-        d_data->mouseTracking = parent->hasMouseTracking();
-        setEnabled(true);
-    }
-    setTrackerMode(trackerMode);
-}
-
-/*!
-   Set a state machine and delete the previous one
-*/
-void QwtPicker::setStateMachine(QwtPickerMachine *stateMachine)
-{
-    if ( d_data->stateMachine != stateMachine )
-    {
-        if ( isActive() )
-            end(false);
-
-        delete d_data->stateMachine;
-        d_data->stateMachine = stateMachine;
-
-        if ( d_data->stateMachine )
-            d_data->stateMachine->reset();
-    }
-}
-
-/*!
-   Create a state machine depending on the selection flags.
-
-   - PointSelection | ClickSelection\n
-     QwtPickerClickPointMachine()
-   - PointSelection | DragSelection\n
-     QwtPickerDragPointMachine()
-   - RectSelection | ClickSelection\n
-     QwtPickerClickRectMachine()
-   - RectSelection | DragSelection\n
-     QwtPickerDragRectMachine()
-   - PolygonSelection\n
-     QwtPickerPolygonMachine()
-
-   \sa setSelectionFlags()
-*/
-QwtPickerMachine *QwtPicker::stateMachine(int flags) const
-{
-    if ( flags & PointSelection )
-    {
-        if ( flags & ClickSelection )
-            return new QwtPickerClickPointMachine;
-        else
-            return new QwtPickerDragPointMachine;
-    }
-    if ( flags & RectSelection )
-    {
-        if ( flags & ClickSelection )
-            return new QwtPickerClickRectMachine;
-        else
-            return new QwtPickerDragRectMachine;
-    }
-    if ( flags & PolygonSelection )
-    {
-        return new QwtPickerPolygonMachine();
-    }
-    return NULL;
-}
-
-//! Return the parent widget, where the selection happens
-QWidget *QwtPicker::parentWidget()
-{
-    QObject *obj = parent();
-    if ( obj && obj->isWidgetType() )
-        return (QWidget *)obj;
-
-    return NULL;
-}
-
-//! Return the parent widget, where the selection happens
-const QWidget *QwtPicker::parentWidget() const
-{
-    QObject *obj = parent();
-    if ( obj && obj->isWidgetType() )
-        return (QWidget *)obj;
-
-    return NULL;
-}
-
-/*!
-  Set the selection flags
-
-  \param flags Or�d value of SelectionType, RectSelectionType and 
-               SelectionMode. The default value is NoSelection.
-
-  \sa selectionFlags(), SelectionType, RectSelectionType, SelectionMode
-*/
-
-void QwtPicker::setSelectionFlags(int flags)
-{
-    d_data->selectionFlags = flags;
-    setStateMachine(stateMachine(flags));
-}
-
-/*!
-  \return Selection flags, an Or�d value of SelectionType, RectSelectionType and
-          SelectionMode.
-  \sa setSelectionFlags(), SelectionType, RectSelectionType, SelectionMode
-*/
-int QwtPicker::selectionFlags() const
-{
-    return d_data->selectionFlags;
-}
-
-/*!
-  Set the rubberband style 
-
-  \param rubberBand Rubberband style
-         The default value is NoRubberBand.
-
-  \sa rubberBand(), RubberBand, setRubberBandPen()
-*/
-void QwtPicker::setRubberBand(RubberBand rubberBand)
-{
-    d_data->rubberBand = rubberBand;
-}
-
-/*!
-  \return Rubberband style
-  \sa setRubberBand(), RubberBand, rubberBandPen()
-*/
-QwtPicker::RubberBand QwtPicker::rubberBand() const
-{
-    return d_data->rubberBand;
-}
-
-/*!
-  \brief Set the display mode of the tracker.
-
-  A tracker displays information about current position of
-  the cursor as a string. The display mode controls
-  if the tracker has to be displayed whenever the observed
-  widget has focus and cursor (AlwaysOn), never (AlwaysOff), or
-  only when the selection is active (ActiveOnly).
-  
-  \param mode Tracker display mode
-
-  \warning In case of AlwaysOn, mouseTracking will be enabled
-           for the observed widget.
-  \sa trackerMode(), DisplayMode
-*/
-
-void QwtPicker::setTrackerMode(DisplayMode mode)
-{   
-    if ( d_data->trackerMode != mode )
-    {
-        d_data->trackerMode = mode;
-        setMouseTracking(d_data->trackerMode == AlwaysOn);
-    }
-}   
-
-/*!
-  \return Tracker display mode
-  \sa setTrackerMode(), DisplayMode
-*/
-QwtPicker::DisplayMode QwtPicker::trackerMode() const
-{   
-    return d_data->trackerMode;
-}   
-
-/*!
-  \brief Set the resize mode.
-
-  The resize mode controls what to do with the selected points of an active
-  selection when the observed widget is resized.
-
-  Stretch means the points are scaled according to the new
-  size, KeepSize means the points remain unchanged.
-
-  The default mode is Stretch.
-
-  \param mode Resize mode
-  \sa resizeMode(), ResizeMode
-*/
-void QwtPicker::setResizeMode(ResizeMode mode)
-{
-    d_data->resizeMode = mode;
-}   
-
-/*!
-  \return Resize mode
-  \sa setResizeMode(), ResizeMode
-*/
-
-QwtPicker::ResizeMode QwtPicker::resizeMode() const
-{   
-    return d_data->resizeMode;
-}
-
-/*!
-  \brief En/disable the picker
-
-  When enabled is true an event filter is installed for
-  the observed widget, otherwise the event filter is removed.
-
-  \param enabled true or false
-  \sa isEnabled(), eventFilter()
-*/
-void QwtPicker::setEnabled(bool enabled)
-{
-    if ( d_data->enabled != enabled )
-    {
-        d_data->enabled = enabled;
-
-        QWidget *w = parentWidget();
-        if ( w )
-        {
-            if ( enabled )
-                w->installEventFilter(this);
-            else
-                w->removeEventFilter(this);
-        }
-
-        updateDisplay();
-    }
-}
-
-/*!
-  \return true when enabled, false otherwise
-  \sa setEnabled, eventFilter()
-*/
-
-bool QwtPicker::isEnabled() const
-{
-    return d_data->enabled;
-}
-
-/*!
-  Set the font for the tracker
-
-  \param font Tracker font
-  \sa trackerFont(), setTrackerMode(), setTrackerPen()
-*/
-void QwtPicker::setTrackerFont(const QFont &font)
-{
-    if ( font != d_data->trackerFont )
-    {
-        d_data->trackerFont = font;
-        updateDisplay();
-    }
-}
-
-/*!
-  \return Tracker font
-  \sa setTrackerFont(), trackerMode(), trackerPen()
-*/
-
-QFont QwtPicker::trackerFont() const
-{
-    return d_data->trackerFont;
-}
-
-/*!
-  Set the pen for the tracker
-
-  \param pen Tracker pen
-  \sa trackerPen(), setTrackerMode(), setTrackerFont()
-*/
-void QwtPicker::setTrackerPen(const QPen &pen)
-{
-    if ( pen != d_data->trackerPen )
-    {
-        d_data->trackerPen = pen;
-        updateDisplay();
-    }
-}
-
-/*!
-  \return Tracker pen
-  \sa setTrackerPen(), trackerMode(), trackerFont()
-*/
-QPen QwtPicker::trackerPen() const
-{
-    return d_data->trackerPen;
-}
-
-/*!
-  Set the pen for the rubberband
-
-  \param pen Rubberband pen
-  \sa rubberBandPen(), setRubberBand()
-*/
-void QwtPicker::setRubberBandPen(const QPen &pen)
-{
-    if ( pen != d_data->rubberBandPen )
-    {
-        d_data->rubberBandPen = pen;
-        updateDisplay();
-    }
-}
-
-/*!
-  \return Rubberband pen
-  \sa setRubberBandPen(), rubberBand()
-*/
-QPen QwtPicker::rubberBandPen() const
-{
-    return d_data->rubberBandPen;
-}
-
-/*!
-   \brief Return the label for a position
-
-   In case of HLineRubberBand the label is the value of the
-   y position, in case of VLineRubberBand the value of the x position.
-   Otherwise the label contains x and y position separated by a �, �.
-
-   The format for the string conversion is "%d".
-
-   \param pos Position
-   \return Converted position as string
-*/
-
-QwtText QwtPicker::trackerText(const QPoint &pos) const
-{
-    QString label;
-
-    switch(rubberBand())
-    {
-        case HLineRubberBand:
-            label.sprintf("%d", pos.y());
-            break;
-        case VLineRubberBand:
-            label.sprintf("%d", pos.x());
-            break;
-        default:
-            label.sprintf("%d, %d", pos.x(), pos.y());
-    }
-    return label;
-}
-
-/*!
-   Draw a rubberband , depending on rubberBand() and selectionFlags()
-
-   \param painter Painter, initialized with clip rect 
-
-   \sa rubberBand(), RubberBand, selectionFlags()
-*/
-
-void QwtPicker::drawRubberBand(QPainter *painter) const
-{
-    if ( !isActive() || rubberBand() == NoRubberBand || 
-        rubberBandPen().style() == Qt::NoPen )
-    {
-        return;
-    }
-
-    const QRect &pRect = pickRect();
-    const SelectedPoints &pa = d_data->selection;
-
-    if ( selectionFlags() & PointSelection )
-    {
-        if ( pa.count() < 1 )
-            return;
-
-        const QPoint pos = pa[0];
-
-        switch(rubberBand())
-        {
-            case VLineRubberBand:
-                QwtPainter::drawLine(painter, pos.x(),
-                    pRect.top(), pos.x(), pRect.bottom());
-                break;
-
-            case HLineRubberBand:
-                QwtPainter::drawLine(painter, pRect.left(), 
-                    pos.y(), pRect.right(), pos.y());
-                break;
-
-            case CrossRubberBand:
-                QwtPainter::drawLine(painter, pos.x(),
-                    pRect.top(), pos.x(), pRect.bottom());
-                QwtPainter::drawLine(painter, pRect.left(), 
-                    pos.y(), pRect.right(), pos.y());
-                break;
-            default:
-                break;
-        }
-    }
-
-    else if ( selectionFlags() & RectSelection )
-    {
-        if ( pa.count() < 2 )
-            return;
-
-        QPoint p1 = pa[0];
-        QPoint p2 = pa[int(pa.count() - 1)];
-
-        if ( selectionFlags() & CenterToCorner )
-        {
-            p1.setX(p1.x() - (p2.x() - p1.x()));
-            p1.setY(p1.y() - (p2.y() - p1.y()));
-        }
-        else if ( selectionFlags() & CenterToRadius )
-        {
-            const int radius = qwtMax(qwtAbs(p2.x() - p1.x()), 
-                qwtAbs(p2.y() - p1.y()));
-            p2.setX(p1.x() + radius);
-            p2.setY(p1.y() + radius);
-            p1.setX(p1.x() - radius);
-            p1.setY(p1.y() - radius);
-        }
-
-#if QT_VERSION < 0x040000
-        const QRect rect = QRect(p1, p2).normalize();
-#else
-        const QRect rect = QRect(p1, p2).normalized();
-#endif
-        switch(rubberBand())
-        {
-            case EllipseRubberBand:
-                QwtPainter::drawEllipse(painter, rect);
-                break;
-            case RectRubberBand:
-                QwtPainter::drawRect(painter, rect);
-                break;
-            default:
-                break;
-        }
-    }
-    else if ( selectionFlags() & PolygonSelection )
-    {
-        if ( rubberBand() == PolygonRubberBand )
-            painter->drawPolyline(pa);
-    }
-}
-
-/*!
-   Draw the tracker
-
-   \param painter Painter
-   \sa trackerRect(), trackerText()
-*/
-
-void QwtPicker::drawTracker(QPainter *painter) const
-{
-    const QRect textRect = trackerRect(painter);
-    if ( !textRect.isEmpty() )
-    {
-        QwtText label = trackerText(d_data->labelPosition);
-        if ( !label.isEmpty() )
-            label.draw(painter, textRect);
-    }
-}
-
-QRect QwtPicker::trackerRect(QPainter *painter) const
-{
-    if ( trackerMode() == AlwaysOff || 
-        (trackerMode() == ActiveOnly && !isActive() ) )
-    {
-        return QRect();
-    }
-
-    if ( d_data->labelPosition.x() < 0 || d_data->labelPosition.y() < 0 )
-        return QRect();
-
-    QwtText text = trackerText(d_data->labelPosition);
-    if ( text.isEmpty() )
-        return QRect();
-
-    QRect textRect(QPoint(0, 0), text.textSize(painter->font()));
-
-    const QPoint &pos = d_data->labelPosition;
-
-    int alignment = 0;
-    if ( isActive() && d_data->selection.count() > 1 
-        && rubberBand() != NoRubberBand )
-    {
-        const QPoint last = 
-            d_data->selection[int(d_data->selection.count()) - 2];
-
-        alignment |= (pos.x() >= last.x()) ? Qt::AlignRight : Qt::AlignLeft;
-        alignment |= (pos.y() > last.y()) ? Qt::AlignBottom : Qt::AlignTop;
-    }
-    else
-        alignment = Qt::AlignTop | Qt::AlignRight;
-
-    const int margin = 5;
-
-    int x = pos.x();
-    if ( alignment & Qt::AlignLeft )
-        x -= textRect.width() + margin;
-    else if ( alignment & Qt::AlignRight )
-        x += margin;
-
-    int y = pos.y();
-    if ( alignment & Qt::AlignBottom )
-        y += margin;
-    else if ( alignment & Qt::AlignTop )
-        y -= textRect.height() + margin;
-    
-    textRect.moveTopLeft(QPoint(x, y));
-
-    int right = qwtMin(textRect.right(), pickRect().right() - margin);
-    int bottom = qwtMin(textRect.bottom(), pickRect().bottom() - margin);
-    textRect.moveBottomRight(QPoint(right, bottom));
-
-    int left = qwtMax(textRect.left(), pickRect().left() + margin);
-    int top = qwtMax(textRect.top(), pickRect().top() + margin);
-    textRect.moveTopLeft(QPoint(left, top));
-
-    return textRect;
-}
-
-/*!
-  \brief Event filter
-
-  When isEnabled() == true all events of the observed widget are filtered.
-  Mouse and keyboard events are translated into widgetMouse- and widgetKey-
-  and widgetWheel-events. Paint and Resize events are handled to keep 
-  rubberband and tracker up to date.
-
-  \sa event(), widgetMousePressEvent(), widgetMouseReleaseEvent(),
-      widgetMouseDoubleClickEvent(), widgetMouseMoveEvent(),
-      widgetWheelEvent(), widgetKeyPressEvent(), widgetKeyReleaseEvent()
-*/
-bool QwtPicker::eventFilter(QObject *o, QEvent *e)
-{
-    if ( o && o == parentWidget() )
-    {
-        switch(e->type())
-        {
-            case QEvent::Resize:
-            {
-                const QResizeEvent *re = (QResizeEvent *)e;
-                if ( d_data->resizeMode == Stretch )
-                    stretchSelection(re->oldSize(), re->size());
-
-                if ( d_data->rubberBandWidget )
-                    d_data->rubberBandWidget->resize(re->size());
-             
-                if ( d_data->textLabelWidget )
-                    d_data->textLabelWidget->resize(re->size());
-                break;
-            }
-            case QEvent::MouseButtonPress:
-                widgetMousePressEvent((QMouseEvent *)e);
-                break;
-            case QEvent::MouseButtonRelease:
-                widgetMouseReleaseEvent((QMouseEvent *)e);
-                break;
-            case QEvent::MouseButtonDblClick:
-                widgetMouseDoubleClickEvent((QMouseEvent *)e);
-                break;
-            case QEvent::MouseMove:
-                widgetMouseMoveEvent((QMouseEvent *)e);
-                break;
-            case QEvent::KeyPress:
-                widgetKeyPressEvent((QKeyEvent *)e);
-                break;
-            case QEvent::KeyRelease:
-                widgetKeyReleaseEvent((QKeyEvent *)e);
-                break;
-            case QEvent::Wheel:
-                widgetWheelEvent((QWheelEvent *)e);
-                break;
-            default:
-                break;
-        }
-    }
-    return false;
-}
-
-/*!
-  Handle a mouse press event for the observed widget.
-
-  Begin and/or end a selection depending on the selection flags.
-
-  \sa QwtPicker, selectionFlags()
-  \sa eventFilter(), widgetMouseReleaseEvent(),
-      widgetMouseDoubleClickEvent(), widgetMouseMoveEvent(),
-      widgetWheelEvent(), widgetKeyPressEvent(), widgetKeyReleaseEvent()
-*/
-void QwtPicker::widgetMousePressEvent(QMouseEvent *e)
-{
-    transition(e);
-}
-
-/*!
-  Handle a mouse move event for the observed widget.
-
-  Move the last point of the selection in case of isActive() == true
-
-  \sa eventFilter(), widgetMousePressEvent(), widgetMouseReleaseEvent(),
-      widgetMouseDoubleClickEvent(),
-      widgetWheelEvent(), widgetKeyPressEvent(), widgetKeyReleaseEvent()
-*/
-void QwtPicker::widgetMouseMoveEvent(QMouseEvent *e)
-{
-    if ( pickRect().contains(e->pos()) )
-        d_data->labelPosition = e->pos();
-    else
-        d_data->labelPosition = QPoint(-1, -1);
-
-    if ( !isActive() )
-        updateDisplay();
-
-    transition(e);
-}
-
-/*!
-  Handle a mouse relase event for the observed widget.
-
-  End a selection depending on the selection flags.
-
-  \sa QwtPicker, selectionFlags()
-  \sa eventFilter(), widgetMousePressEvent(), 
-      widgetMouseDoubleClickEvent(), widgetMouseMoveEvent(),
-      widgetWheelEvent(), widgetKeyPressEvent(), widgetKeyReleaseEvent()
-*/
-void QwtPicker::widgetMouseReleaseEvent(QMouseEvent *e)
-{
-    transition(e);
-}
-
-/*!
-  Handle mouse double click event for the observed widget.
-
-  Empty implementation, does nothing.
-
-  \sa eventFilter(), widgetMousePressEvent(), widgetMouseReleaseEvent(),
-      widgetMouseMoveEvent(),
-      widgetWheelEvent(), widgetKeyPressEvent(), widgetKeyReleaseEvent()
-*/
-void QwtPicker::widgetMouseDoubleClickEvent(QMouseEvent *me)
-{
-    transition(me);
-}
-    
-
-/*!
-  Handle a wheel event for the observed widget.
-
-  Move the last point of the selection in case of isActive() == true
-
-  \sa eventFilter(), widgetMousePressEvent(), widgetMouseReleaseEvent(),
-      widgetMouseDoubleClickEvent(), widgetMouseMoveEvent(),
-      widgetKeyPressEvent(), widgetKeyReleaseEvent()
-*/
-void QwtPicker::widgetWheelEvent(QWheelEvent *e)
-{
-    if ( pickRect().contains(e->pos()) )
-        d_data->labelPosition = e->pos();
-    else
-        d_data->labelPosition = QPoint(-1, -1);
-
-    updateDisplay();
-
-    transition(e);
-}
-
-/*!
-  Handle a key press event for the observed widget.
-
-  Selections can be completely done by the keyboard. The arrow keys
-  move the cursor, the abort key aborts a selection. All other keys
-  are handled by the current state machine.
-
-  \sa QwtPicker, selectionFlags()
-  \sa eventFilter(), widgetMousePressEvent(), widgetMouseReleaseEvent(),
-      widgetMouseDoubleClickEvent(), widgetMouseMoveEvent(),
-      widgetWheelEvent(), widgetKeyReleaseEvent(), stateMachine(),
-      QwtEventPattern::KeyPatternCode
-*/
-void QwtPicker::widgetKeyPressEvent(QKeyEvent *ke)
-{
-    int dx = 0;
-    int dy = 0;
-
-    int offset = 1;
-    if ( ke->isAutoRepeat() )
-        offset = 5;
-
-    if ( keyMatch(KeyLeft, ke) )
-        dx = -offset;
-    else if ( keyMatch(KeyRight, ke) )
-        dx = offset;
-    else if ( keyMatch(KeyUp, ke) )
-        dy = -offset;
-    else if ( keyMatch(KeyDown, ke) )
-        dy = offset;
-    else if ( keyMatch(KeyAbort, ke) )
-    {
-        if ( d_data->stateMachine )
-            d_data->stateMachine->reset();
-
-        if (isActive())
-            end(false);
-    }
-    else
-        transition(ke);
-
-    if ( dx != 0 || dy != 0 )
-    {
-        const QRect rect = pickRect();
-        const QPoint pos = parentWidget()->mapFromGlobal(QCursor::pos());
-
-        int x = pos.x() + dx;
-        x = qwtMax(rect.left(), x);
-        x = qwtMin(rect.right(), x);
-
-        int y = pos.y() + dy;
-        y = qwtMax(rect.top(), y);
-        y = qwtMin(rect.bottom(), y);
-
-        QCursor::setPos(parentWidget()->mapToGlobal(QPoint(x, y)));
-    }
-}
- 
-/*!
-  Handle a key release event for the observed widget.
-
-  Passes the event to the state machine.
-
-  \sa eventFilter(), widgetMousePressEvent(), widgetMouseReleaseEvent(),
-      widgetMouseDoubleClickEvent(), widgetMouseMoveEvent(),
-      widgetWheelEvent(), widgetKeyPressEvent(), stateMachine()
-*/
-void QwtPicker::widgetKeyReleaseEvent(QKeyEvent *ke)
-{
-    transition(ke);
-}
-
-/*!
-  Passes an event to the state machine and executes the resulting 
-  commands. Append and Move commands use the current position
-  of the cursor (QCursor::pos()).
-
-  \param e Event
-*/
-void QwtPicker::transition(const QEvent *e)
-{
-    if ( !d_data->stateMachine )
-        return;
-
-    QwtPickerMachine::CommandList commandList =
-        d_data->stateMachine->transition(*this, e);
-
-    QPoint pos;
-    switch(e->type())
-    {
-        case QEvent::MouseButtonDblClick:
-        case QEvent::MouseButtonPress:
-        case QEvent::MouseButtonRelease:
-        case QEvent::MouseMove:
-        {
-            const QMouseEvent *me = (QMouseEvent *)e;
-            pos = me->pos();
-            break;
-        }
-        default:
-            pos = parentWidget()->mapFromGlobal(QCursor::pos());
-    }
-
-    for ( uint i = 0; i < (uint)commandList.count(); i++ )
-    {
-        switch(commandList[i])
-        {
-            case QwtPickerMachine::Begin:
-            {
-                begin();
-                break;
-            }
-            case QwtPickerMachine::Append:
-            {
-                append(pos);
-                break;
-            }
-            case QwtPickerMachine::Move:
-            {
-                move(pos);
-                break;
-            }
-            case QwtPickerMachine::End:
-            {
-                end();
-                break;
-            }
-        }
-    }
-}
-
-/*!
-  Open a selection setting the state to active
-
-  \sa isActive, end(), append(), move()
-*/
-void QwtPicker::begin()
-{
-    if ( d_data->isActive )
-        return;
-
-    d_data->selection.resize(0);
-    d_data->isActive = true;
-
-    if ( trackerMode() != AlwaysOff )
-    {
-        if ( d_data->labelPosition.x() < 0 || d_data->labelPosition.y() < 0 ) 
-        {
-            QWidget *w = parentWidget();
-            if ( w )
-                d_data->labelPosition = w->mapFromGlobal(QCursor::pos());
-        }
-    }
-
-    updateDisplay();
-    setMouseTracking(true);
-}
-
-/*!
-  \brief Close a selection setting the state to inactive.
-
-  The selection is validated and maybe fixed by QwtPicker::accept().
-
-  \param ok If true, complete the selection and emit a selected signal
-            otherwise discard the selection.
-  \return true if the selection is accepted, false otherwise
-  \sa isActive, begin(), append(), move(), selected(), accept()
-*/
-bool QwtPicker::end(bool ok)
-{
-    if ( d_data->isActive )
-    {
-        setMouseTracking(false);
-
-        d_data->isActive = false;
-
-        if ( trackerMode() == ActiveOnly )
-            d_data->labelPosition = QPoint(-1, -1);
-
-        if ( ok )
-            ok = accept(d_data->selection);
-
-        if ( ok )
-            emit selected(d_data->selection);
-        else
-            d_data->selection.resize(0);
-
-        updateDisplay();
-    }
-    else
-        ok = false;
-
-    return ok;
-}
-
-/*!
-  Append a point to the selection and update rubberband and tracker.
-  The appended() signal is emitted.
-
-  \param pos Additional point
-
-  \sa isActive, begin(), end(), move(), appended()
-*/
-void QwtPicker::append(const QPoint &pos)
-{
-    if ( d_data->isActive )
-    {
-        const int idx = d_data->selection.count();
-        d_data->selection.resize(idx + 1);
-        d_data->selection[idx] = pos;
-
-        updateDisplay();
-
-        emit appended(pos);
-    }
-}
-
-/*!
-  Move the last point of the selection
-  The moved() signal is emitted.
-
-  \param pos New position
-  \sa isActive, begin(), end(), append()
-
-*/
-void QwtPicker::move(const QPoint &pos)
-{
-    if ( d_data->isActive )
-    {
-        const int idx = d_data->selection.count() - 1;
-        if ( idx >= 0 )
-        {
-            if ( d_data->selection[idx] != pos )
-            {
-                d_data->selection[idx] = pos;
-
-                updateDisplay();
-
-                emit moved(pos);
-            }
-        }
-    }
-}
-
-bool QwtPicker::accept(SelectedPoints &) const
-{
-    return true;
-}
-
-/*!
-  A picker is active between begin() and end().
-  \return true if the selection is active.
-*/
-bool QwtPicker::isActive() const 
-{
-    return d_data->isActive;
-}
-
-//!  Return Selected points
-const QwtPicker::SelectedPoints &QwtPicker::selection() const
-{
-    return d_data->selection;
-}
-
-/*!
-  Scale the selection by the ratios of oldSize and newSize
-  The changed() signal is emitted.
-
-  \param oldSize Previous size
-  \param newSize Current size
-
-  \sa ResizeMode, setResizeMode(), resizeMode()
-*/
-void QwtPicker::stretchSelection(const QSize &oldSize, const QSize &newSize)
-{
-    const double xRatio =
-        double(newSize.width()) / double(oldSize.width());
-    const double yRatio =
-        double(newSize.height()) / double(oldSize.height());
-
-    for ( int i = 0; i < int(d_data->selection.count()); i++ )
-    {
-        QPoint &p = d_data->selection[i];
-        p.setX(qRound(p.x() * xRatio));
-        p.setY(qRound(p.y() * yRatio));
-
-        emit changed(d_data->selection);
-    }
-}
-
-/*!
-  Set mouse tracking for the observed widget.
-
-  In case of enable is true, the previous value
-  is saved, that is restored when enable is false.
-
-  \warning Even when enable is false, mouse tracking might be restored
-           to true. When mouseTracking for the observed widget
-           has been changed directly by QWidget::setMouseTracking
-           while mouse tracking has been set to true, this value can�t
-           be restored.
-*/
-
-void QwtPicker::setMouseTracking(bool enable)
-{
-    QWidget *widget = parentWidget();
-    if ( !widget )
-        return;
-
-    if ( enable )
-    {
-        d_data->mouseTracking = widget->hasMouseTracking();
-        widget->setMouseTracking(true);
-    }
-    else
-    {
-        widget->setMouseTracking(d_data->mouseTracking);
-    }
-}
-
-/*!
-  Find the area of the observed widget, where selection might happen.
-
-  \return QFrame::contentsRect() if it is a QFrame, QWidget::rect() otherwise.
-*/
-QRect QwtPicker::pickRect() const
-{
-    QRect rect;
-
-    const QWidget *widget = parentWidget();
-    if ( !widget )
-        return rect;
-
-    if ( widget->inherits("QFrame") )
-        rect = ((QFrame *)widget)->contentsRect();
-    else
-        rect = widget->rect();
-
-    return rect;
-}
-
-void QwtPicker::updateDisplay()
-{
-    QWidget *w = parentWidget();
-
-    bool showRubberband = false;
-    bool showTracker = false;
-    if ( w && w->isVisible() && d_data->enabled )
-    {
-        if ( rubberBand() != NoRubberBand && isActive() &&
-            rubberBandPen().style() != Qt::NoPen )
-        {
-            showRubberband = true;
-        }
-
-        if ( trackerMode() == AlwaysOn ||
-            (trackerMode() == ActiveOnly && isActive() ) )
-        {
-            if ( trackerPen() != Qt::NoPen )
-                showTracker = true;
-        }
-    }
-
-#if QT_VERSION < 0x040000
-    QGuardedPtr<PrivateData::PickerWidget> &rw = d_data->rubberBandWidget;
-#else
-    QPointer<PrivateData::PickerWidget> &rw = d_data->rubberBandWidget;
-#endif
-    if ( showRubberband )
-    {
-        if ( rw.isNull() )
-        {
-            rw = new PrivateData::PickerWidget(
-                this, w, PrivateData::PickerWidget::RubberBand);
-            rw->resize(w->size());
-        }
-        rw->updateMask();
-    }
-    else
-        delete rw;
-
-#if QT_VERSION < 0x040000
-    QGuardedPtr<PrivateData::PickerWidget> &tw = d_data->textLabelWidget;
-#else
-    QPointer<PrivateData::PickerWidget> &tw = d_data->textLabelWidget;
-#endif
-    if ( showTracker )
-    {
-        if ( tw.isNull() )
-        {
-            tw = new PrivateData::PickerWidget(
-                this, w, PrivateData::PickerWidget::Text);
-            tw->resize(w->size());
-        }
-        tw->updateMask();
-    }
-    else
-        delete tw;
-}
diff --git a/src/qwt/qwt_picker_machine.cpp b/src/qwt/qwt_picker_machine.cpp
deleted file mode 100644
index 301e295..0000000
--- a/src/qwt/qwt_picker_machine.cpp
+++ /dev/null
@@ -1,371 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-#include <qevent.h>
-#include "qwt_event_pattern.h"
-#include "qwt_picker_machine.h"
-
-//! Constructor
-QwtPickerMachine::QwtPickerMachine():
-    d_state(0)
-{
-}
-
-//! Destructor
-QwtPickerMachine::~QwtPickerMachine()
-{
-}
-
-//! Return the current state
-int QwtPickerMachine::state() const
-{
-    return d_state;
-}
-
-//! Change the current state
-void QwtPickerMachine::setState(int state)
-{
-    d_state = state;
-}
-
-//! Set the current state to 0.
-void QwtPickerMachine::reset() 
-{
-    setState(0);
-}
-
-//! Transition
-QwtPickerMachine::CommandList QwtPickerClickPointMachine::transition(
-    const QwtEventPattern &eventPattern, const QEvent *e)
-{   
-    QwtPickerMachine::CommandList cmdList;
-
-    switch(e->type())
-    {
-        case QEvent::MouseButtonPress:
-        {
-            if ( eventPattern.mouseMatch(
-                QwtEventPattern::MouseSelect1, (const QMouseEvent *)e) )
-            {
-                cmdList += Begin;
-                cmdList += Append;
-                cmdList += End;
-            }
-            break;
-        }
-        case QEvent::KeyPress:
-        {   
-            if ( eventPattern.keyMatch(
-                QwtEventPattern::KeySelect1, (const QKeyEvent *)e) )
-            {
-                cmdList += Begin;
-                cmdList += Append;
-                cmdList += End;
-            }   
-            break;
-        }
-        default:
-            break;
-    }
-
-    return cmdList;
-}
-
-//! Transition
-QwtPickerMachine::CommandList QwtPickerDragPointMachine::transition(
-    const QwtEventPattern &eventPattern, const QEvent *e)
-{   
-    QwtPickerMachine::CommandList cmdList;
-
-    switch(e->type())
-    {
-        case QEvent::MouseButtonPress:
-        {
-            if ( eventPattern.mouseMatch(
-                QwtEventPattern::MouseSelect1, (const QMouseEvent *)e) )
-            {
-                if ( state() == 0 )
-                {
-                    cmdList += Begin;
-                    cmdList += Append;
-                    setState(1);
-                }
-            }
-            break;
-        }
-        case QEvent::MouseMove:
-        case QEvent::Wheel:
-        {
-            if ( state() != 0 )
-                cmdList += Move;
-            break;
-        }
-        case QEvent::MouseButtonRelease:
-        {
-            if ( state() != 0 )
-            {
-                cmdList += End;
-                setState(0);
-            }
-            break;
-        }
-        case QEvent::KeyPress:
-        {
-            if ( eventPattern.keyMatch(
-                QwtEventPattern::KeySelect1, (const QKeyEvent *)e) )
-            {
-                if ( state() == 0 )
-                {
-                    cmdList += Begin;
-                    cmdList += Append;
-                    setState(1);
-                }
-                else
-                {
-                    cmdList += End;
-                    setState(0);
-                }
-            }
-            break;
-        }
-        default:
-            break;
-    }
-
-    return cmdList;
-}
-
-//! Transition
-QwtPickerMachine::CommandList QwtPickerClickRectMachine::transition(
-    const QwtEventPattern &eventPattern, const QEvent *e)
-{   
-    QwtPickerMachine::CommandList cmdList;
-
-    switch(e->type())
-    {
-        case QEvent::MouseButtonPress:
-        {
-            if ( eventPattern.mouseMatch(
-                QwtEventPattern::MouseSelect1, (const QMouseEvent *)e) )
-            {
-                switch(state())
-                {
-                    case 0:
-                    {   
-                        cmdList += Begin;
-                        cmdList += Append;
-                        setState(1);
-                        break;
-                    }
-                    case 1:
-                    {
-                        // Uh, strange we missed the MouseButtonRelease
-                        break; 
-                    }
-                    default:
-                    {
-                        cmdList += End;
-                        setState(0);
-                    }
-                }
-            }
-        }
-        case QEvent::MouseMove:
-        case QEvent::Wheel:
-        {
-            if ( state() != 0 )
-                cmdList += Move;
-            break;
-        }
-        case QEvent::MouseButtonRelease:
-        {
-            if ( eventPattern.mouseMatch(
-                QwtEventPattern::MouseSelect1, (const QMouseEvent *)e) )
-            {
-                if ( state() == 1 )
-                {
-                    cmdList += Append;
-                    setState(2);
-                }
-            }
-            break;
-        }
-        case QEvent::KeyPress:
-        {   
-            if ( eventPattern.keyMatch(
-                QwtEventPattern::KeySelect1, (const QKeyEvent *)e) )
-            {
-                if ( state() == 0 )
-                {
-                    cmdList += Begin;
-                    cmdList += Append;
-                    setState(1);
-                }
-                else
-                {
-                    if ( state() == 1 )
-                    {
-                        cmdList += Append;
-                        setState(2);
-                    }
-                    else if ( state() == 2 )
-                    {
-                        cmdList += End;
-                        setState(0);
-                    }
-                }
-            }   
-            break;
-        }
-        default:
-            break;
-    }
-
-    return cmdList;
-}
-
-//! Transition
-QwtPickerMachine::CommandList QwtPickerDragRectMachine::transition(
-    const QwtEventPattern &eventPattern, const QEvent *e)
-{   
-    QwtPickerMachine::CommandList cmdList;
-
-    switch(e->type())
-    {
-        case QEvent::MouseButtonPress:
-        {
-            if ( eventPattern.mouseMatch(
-                QwtEventPattern::MouseSelect1, (const QMouseEvent *)e) )
-            {
-                if ( state() == 0 )
-                {
-                    cmdList += Begin;
-                    cmdList += Append;
-                    cmdList += Append;
-                    setState(2);
-                }
-            }
-            break;
-        }
-        case QEvent::MouseMove:
-        case QEvent::Wheel:
-        {
-            if ( state() != 0 )
-                cmdList += Move;
-            break;
-        }
-        case QEvent::MouseButtonRelease:
-        {
-            if ( state() == 2 )
-            {
-                cmdList += End;
-                setState(0);
-            }
-            break;
-        }
-        case QEvent::KeyPress:
-        {
-            if ( eventPattern.keyMatch(
-                QwtEventPattern::KeySelect1, (const QKeyEvent *)e) )
-            {
-                if ( state() == 0 )
-                {
-                    cmdList += Begin;
-                    cmdList += Append;
-                    cmdList += Append;
-                    setState(2);
-                }
-                else
-                {
-                    cmdList += End;
-                    setState(0);
-                }
-            }
-            break;
-        }
-        default:
-            break;
-    }
-
-    return cmdList;
-}
-
-//! Transition
-QwtPickerMachine::CommandList QwtPickerPolygonMachine::transition(
-    const QwtEventPattern &eventPattern, const QEvent *e)
-{
-    QwtPickerMachine::CommandList cmdList;
-
-    switch(e->type())
-    {
-        case QEvent::MouseButtonPress:
-        {
-            if ( eventPattern.mouseMatch(
-                QwtEventPattern::MouseSelect1, (const QMouseEvent *)e) )
-            {
-                if (state() == 0)
-                {
-                    cmdList += Begin;
-                    cmdList += Append;
-                    cmdList += Append;
-                    setState(1);
-                }
-                else
-                {
-                    cmdList += End;
-                    setState(0);
-                }
-            }
-            if ( eventPattern.mouseMatch(
-                QwtEventPattern::MouseSelect2, (const QMouseEvent *)e) )
-            {
-                if (state() == 1)
-                    cmdList += Append;
-            }
-            break;
-        }
-        case QEvent::MouseMove:
-        case QEvent::Wheel:
-        {
-            if ( state() != 0 )
-                cmdList += Move;
-            break;
-        }
-        case QEvent::KeyPress:
-        {
-            if ( eventPattern.keyMatch(
-                QwtEventPattern::KeySelect1, (const QKeyEvent *)e) )
-            {
-                if ( state() == 0 )
-                {
-                    cmdList += Begin;
-                    cmdList += Append;
-                    cmdList += Append;
-                    setState(1);
-                }
-                else
-                {
-                    cmdList += End;
-                    setState(0);
-                }
-            }
-            else if ( eventPattern.keyMatch(
-                QwtEventPattern::KeySelect2, (const QKeyEvent *)e) )
-            {
-                if ( state() == 1 )
-                    cmdList += Append;
-            }
-            break;
-        }
-        default:
-            break;
-    }
-
-    return cmdList;
-}
diff --git a/src/qwt/qwt_plot.cpp b/src/qwt/qwt_plot.cpp
deleted file mode 100644
index 428dd83..0000000
--- a/src/qwt/qwt_plot.cpp
+++ /dev/null
@@ -1,839 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-#include <qpainter.h>
-#if QT_VERSION < 0x040000
-#include <qfocusdata.h>
-#else
-#include <qpaintengine.h>
-#endif
-#include <qapplication.h>
-#include <qevent.h>
-#include "qwt_plot.h"
-#include "qwt_plot_dict.h"
-#include "qwt_plot_layout.h"
-#include "qwt_rect.h"
-#include "qwt_scale_widget.h"
-#include "qwt_scale_engine.h"
-#include "qwt_text_label.h"
-#include "qwt_legend.h"
-#include "qwt_dyngrid_layout.h"
-#include "qwt_plot_canvas.h"
-#include "qwt_paint_buffer.h"
-
-class QwtPlot::PrivateData
-{
-public:
-    QwtTextLabel *lblTitle;
-    QwtPlotCanvas *canvas;
-    QwtLegend *legend;
-    QwtPlotLayout *layout;
-
-    bool autoReplot;
-};
-
-/*!
-  \brief Constructor
-  \param parent Parent widget
- */
-
-QwtPlot::QwtPlot(QWidget *parent):
-    QFrame(parent)
-{
-    initPlot(QwtText());
-}
-
-
-/*!
-  \brief Constructor
-  \param title Title text
-  \param parent Parent widget
- */
-QwtPlot::QwtPlot(const QwtText &title, QWidget *parent) :
-    QFrame(parent)
-{
-    initPlot(title);
-}
-
-//! Destructor
-QwtPlot::~QwtPlot()
-{
-    detachItems(QwtPlotItem::Rtti_PlotItem, autoDelete());
-
-    delete d_data->layout;
-    deleteAxesData();
-    delete d_data;
-}
-
-/*!
-  \brief Initializes a QwtPlot instance
-  \param title Title text
- */
-void QwtPlot::initPlot(const QwtText &title)
-{
-    d_data = new PrivateData;
-
-#if QT_VERSION < 0x040000
-    setWFlags(Qt::WNoAutoErase);
-#endif 
-
-    d_data->layout = new QwtPlotLayout;
-
-    d_data->autoReplot = false;
-
-    d_data->lblTitle = new QwtTextLabel(title, this);
-    d_data->lblTitle->setFont(QFont(fontInfo().family(), 14, QFont::Bold));
-
-    QwtText text(title);
-    int flags = Qt::AlignCenter;
-#if QT_VERSION < 0x040000
-    flags |= Qt::WordBreak | Qt::ExpandTabs;
-#else
-    flags |= Qt::TextWordWrap;
-#endif
-    text.setFlags(flags);
-    d_data->lblTitle->setText(text);
-
-    d_data->legend = NULL;
-
-    initAxesData();
-
-    d_data->canvas = new QwtPlotCanvas(this);
-    d_data->canvas->setFrameStyle(QFrame::Panel|QFrame::Sunken);
-    d_data->canvas->setLineWidth(2);
-    d_data->canvas->setMidLineWidth(0);
-
-    updateTabOrder();
-
-    setSizePolicy(QSizePolicy::MinimumExpanding, 
-        QSizePolicy::MinimumExpanding);
-}
-
-/*!
-  \brief Adds handling of layout requests
-*/
-bool QwtPlot::event(QEvent *e)
-{
-    bool ok = QFrame::event(e);
-    switch(e->type())
-    {
-#if QT_VERSION < 0x040000
-        case QEvent::LayoutHint:
-#else
-        case QEvent::LayoutRequest:
-#endif
-            updateLayout();
-            break;
-#if QT_VERSION >= 0x040000
-        case QEvent::PolishRequest:
-            polish();
-            break;
-#endif
-        default:;
-    }
-    return ok;
-}
-
-/*!
-  \brief Replots the plot if QwtPlot::autoReplot() is \c true.
-*/
-
-void QwtPlot::autoRefresh()
-{
-    if (d_data->autoReplot)
-        replot();
-}
-
-/*!
-  \brief Set or reset the autoReplot option
-  If the autoReplot option is set, the plot will be
-  updated implicitly by manipulating member functions.
-  Since this may be time-consuming, it is recommended
-  to leave this option switched off and call replot()
-  explicitly if necessary.
-
-  The autoReplot option is set to false by default, which
-  means that the user has to call replot() in order to make
-  changes visible.
-  \param tf \c true or \c false. Defaults to \c true.
-  \sa replot()
-*/
-void QwtPlot::setAutoReplot(bool tf)
-{
-    d_data->autoReplot = tf;
-}
-
-/*!
-    \return true if the autoReplot option is set.
-*/
-bool QwtPlot::autoReplot() const
-{
-    return d_data->autoReplot; 
-}
-
-/*!
-  \brief Change the plot's title
-  \param t new title
-*/
-void QwtPlot::setTitle(const QString &t)
-{
-    d_data->lblTitle->setText(t);
-}
-
-/*!
-  \brief Change the plot's title
-  \param t new title
-*/
-void QwtPlot::setTitle(const QwtText &t)
-{
-    d_data->lblTitle->setText(t);
-}
-
-/*!
-  \return the plot's title
-*/
-
-QwtText QwtPlot::title() const
-{
-    return d_data->lblTitle->text();
-}
-
-/*!
-  \return the plot's layout
-*/
-QwtPlotLayout *QwtPlot::plotLayout()
-{
-    return d_data->layout;
-}
-
-/*!
-  \return the plot's layout
-*/
-const QwtPlotLayout *QwtPlot::plotLayout() const
-{
-    return d_data->layout;
-}
-
-/*!
-  \return the plot's titel label.
-*/
-QwtTextLabel *QwtPlot::titleLabel()
-{
-    return d_data->lblTitle;
-}
-
-/*!
-  \return the plot's titel label.
-*/
-const QwtTextLabel *QwtPlot::titleLabel() const
-{
-    return d_data->lblTitle;
-}
-
-/*!
-  \return the plot's legend
-  \sa printLegendItem()
-*/
-QwtLegend *QwtPlot::legend()
-{ 
-    return d_data->legend;
-}   
-
-/*!
-  \return the plot's legend
-  \sa printLegendItem()
-*/
-const QwtLegend *QwtPlot::legend() const
-{ 
-    return d_data->legend;
-}   
-
-
-/*!
-  \return the plot's canvas
-*/
-QwtPlotCanvas *QwtPlot::canvas()
-{ 
-    return d_data->canvas;
-}   
-
-/*!
-  \return the plot's canvas
-*/
-const QwtPlotCanvas *QwtPlot::canvas() const
-{ 
-    return d_data->canvas;
-}
-
-void QwtPlot::polish()
-{
-    replot();
-
-#if QT_VERSION < 0x040000
-    QFrame::polish();
-#endif
-}
-
-/*!  
-  Return sizeHint
-  \sa QwtPlot::minimumSizeHint()
-*/
-
-QSize QwtPlot::sizeHint() const
-{
-    int dw = 0;
-    int dh = 0;
-    for ( int axisId = 0; axisId < axisCnt; axisId++ )
-    {
-        if ( axisEnabled(axisId) )
-        {   
-            const int niceDist = 40;
-            const QwtScaleWidget *scaleWidget = axisWidget(axisId);
-            const QwtScaleDiv &scaleDiv = scaleWidget->scaleDraw()->scaleDiv();
-            const int majCnt = scaleDiv.ticks(QwtScaleDiv::MajorTick).count();
-
-            if ( axisId == yLeft || axisId == yRight )
-            {
-                int hDiff = (majCnt - 1) * niceDist 
-                    - scaleWidget->minimumSizeHint().height();
-                if ( hDiff > dh )
-                    dh = hDiff;
-            }
-            else
-            {
-                int wDiff = (majCnt - 1) * niceDist 
-                    - scaleWidget->minimumSizeHint().width();
-                if ( wDiff > dw )
-                    dw = wDiff;
-            }
-        }
-    }
-    return minimumSizeHint() + QSize(dw, dh);
-}
-
-/*!
-  \brief Return a minimum size hint
-*/
-QSize QwtPlot::minimumSizeHint() const
-{
-    QSize hint = d_data->layout->minimumSizeHint(this);
-    hint += QSize(2 * frameWidth(), 2 * frameWidth());
-
-    return hint;
-}
-
-//! Resize and update internal layout
-void QwtPlot::resizeEvent(QResizeEvent *e)
-{
-    QFrame::resizeEvent(e);
-    updateLayout();
-}
-
-/*!
-  \brief Redraw the plot
-
-  If the autoReplot option is not set (which is the default)
-  or if any curves are attached to raw data, the plot has to
-  be refreshed explicitly in order to make changes visible.
-
-  \sa setAutoReplot()
-  \warning Calls canvas()->repaint, take care of infinite recursions
-*/
-void QwtPlot::replot()
-{
-    bool doAutoReplot = autoReplot();
-    setAutoReplot(false);
-
-    updateAxes();
-
-    /*
-      Maybe the layout needs to be updated, because of changed
-      axes labels. We need to process them here before painting
-      to avoid that scales and canvas get out of sync.
-     */
-#if QT_VERSION >= 0x040000
-    QApplication::sendPostedEvents(this, QEvent::LayoutRequest);
-#else
-    QApplication::sendPostedEvents(this, QEvent::LayoutHint);
-#endif
-
-    QwtPlotCanvas &canvas = *d_data->canvas;
-
-    canvas.invalidatePaintCache();
-
-    /*
-      In case of cached or packed painting the canvas
-      is repainted completely and doesn't need to be erased.
-     */
-    const bool erase = 
-        !canvas.testPaintAttribute(QwtPlotCanvas::PaintPacked) 
-        && !canvas.testPaintAttribute(QwtPlotCanvas::PaintCached);
-
-#if QT_VERSION >= 0x040000
-    const bool noBackgroundMode = canvas.testAttribute(Qt::WA_NoBackground);
-    if ( !erase && !noBackgroundMode )
-        canvas.setAttribute(Qt::WA_NoBackground, true);
-
-    canvas.repaint(canvas.contentsRect());
-
-    if ( !erase && !noBackgroundMode )
-        canvas.setAttribute(Qt::WA_NoBackground, false);
-#else
-    canvas.repaint(canvas.contentsRect(), erase);
-#endif
-
-    setAutoReplot(doAutoReplot);
-}
-
-/*!
-  \brief Adjust plot content to its current size.
-  \sa QwtPlot::resizeEvent
-*/
-void QwtPlot::updateLayout()
-{
-    d_data->layout->activate(this, contentsRect());
-
-    //
-    // resize and show the visible widgets
-    //
-    if (!d_data->lblTitle->text().isEmpty())
-    {
-        d_data->lblTitle->setGeometry(d_data->layout->titleRect());
-        if (!d_data->lblTitle->isVisible())
-            d_data->lblTitle->show();
-    }
-    else
-        d_data->lblTitle->hide();
-
-    for (int axisId = 0; axisId < axisCnt; axisId++ )
-    {
-        if (axisEnabled(axisId) )
-        {
-            axisWidget(axisId)->setGeometry(d_data->layout->scaleRect(axisId));
-
-            if ( axisId == xBottom || axisId == xTop )
-            {
-                QRegion r(d_data->layout->scaleRect(axisId));
-                if ( axisEnabled(yLeft) )
-                    r = r.subtract(QRegion(d_data->layout->scaleRect(yLeft)));
-                if ( axisEnabled(yRight) )
-                    r = r.subtract(QRegion(d_data->layout->scaleRect(yRight)));
-                r.translate(-d_data->layout->scaleRect(axisId).x(), 
-                    -d_data->layout->scaleRect(axisId).y());
-
-                axisWidget(axisId)->setMask(r);
-            }
-            if (!axisWidget(axisId)->isVisible())
-                axisWidget(axisId)->show();
-        }
-        else
-            axisWidget(axisId)->hide();
-    }
-
-    if ( d_data->legend )
-    {
-        if (d_data->legend->itemCount() > 0)
-        {
-            d_data->legend->setGeometry(d_data->layout->legendRect());
-            d_data->legend->show();
-        }
-        else
-            d_data->legend->hide();
-    }
-
-    d_data->canvas->setGeometry(d_data->layout->canvasRect());
-}
-
-//! Update the focus tab order
-
-void QwtPlot::updateTabOrder()
-{
-#if QT_VERSION >= 0x040000
-    using namespace Qt; // QWidget::NoFocus/Qt::NoFocus
-#endif
-    if ( !legend() || legend()->legendItems().count() == 0
-        || d_data->canvas->focusPolicy() == NoFocus )
-    {
-        return;
-    }
-
-    // Depending on the position of the legend the 
-    // tab order will be changed that the canvas is
-    // next to the last legend item, or before
-    // the first one. 
-
-    const bool canvasFirst = 
-        d_data->layout->legendPosition() == QwtPlot::BottomLegend ||
-        d_data->layout->legendPosition() == QwtPlot::RightLegend;
-
-    QWidget *previous = NULL; 
-
-    QWidget *w;
-#if QT_VERSION >= 0x040000
-    while ( nextInFocusChain() != d_data->canvas );
-    while ( (w = nextInFocusChain()) != d_data->canvas )
-#else
-    if ( focusData() == NULL )
-        return;
-
-    while ( focusData()->next() != d_data->canvas );
-    while ( (w = focusData()->next()) != d_data->canvas )
-#endif
-    {
-        bool isLegendItem = false;
-        if ( w->focusPolicy() != NoFocus 
-            && w->parent() && w->parent() == d_data->legend->contentsWidget() )
-        {
-            isLegendItem = true;
-        }
-
-        if ( canvasFirst )
-        {
-            if ( isLegendItem )
-                break;
-
-            previous = w;
-        }
-        else
-        {
-            if ( isLegendItem )
-                previous = w;
-            else
-            {
-                if ( previous )
-                    break;
-            }
-        }
-    }
-
-    if ( previous && previous != d_data->canvas)
-        setTabOrder(previous, d_data->canvas);
-}
-
-/*! 
-  Redraw the canvas.
-  \param painter Painter used for drawing
-
-  \warning drawCanvas calls drawCanvasItems what is also used
-           for printing. Applications that like to add individual
-           plot items better overload QwtPlot::drawCanvasItems
-  \sa QwtPlot::drawCanvasItems
-*/
-
-void QwtPlot::drawCanvas(QPainter *painter)
-{
-    QwtArray<QwtScaleMap> maps(axisCnt);
-    for ( int axisId = 0; axisId < axisCnt; axisId++ )
-        maps[axisId] = canvasMap(axisId);
-
-    drawItems(painter, 
-        d_data->canvas->contentsRect(), maps, QwtPlotPrintFilter());
-}
-
-/*! 
-  Redraw the canvas items.
-  \param painter Painter used for drawing
-  \param rect Bounding rectangle where to paint
-  \param map QwtPlot::axisCnt maps, mapping between plot and paint device coordinates
-  \param pfilter Plot print filter
-*/
-
-void QwtPlot::drawItems(QPainter *painter, const QRect &rect, 
-        const QwtArray<QwtScaleMap> &map, 
-        const QwtPlotPrintFilter &pfilter) const
-{
-    painter->save();
-
-    const QwtPlotItemList& itmList = itemList();
-    for ( QwtPlotItemIterator it = itmList.begin();
-        it != itmList.end(); ++it )
-    {
-        QwtPlotItem *item = *it;
-        if ( item && item->isVisible() )
-        {
-            if ( !(pfilter.options() & QwtPlotPrintFilter::PrintGrid)
-                && item->rtti() == QwtPlotItem::Rtti_PlotGrid )
-            {
-                continue;
-            }
-
-#if QT_VERSION >= 0x040000
-            const QPaintEngine *pe = painter->device()->paintEngine();
-            if (pe->hasFeature(QPaintEngine::Antialiasing) )
-            {
-                painter->setRenderHint(QPainter::Antialiasing,
-                    item->testRenderHint(QwtPlotItem::RenderAntialiased) );
-            }
-#endif
-
-            item->draw(painter, 
-                map[item->xAxis()], map[item->yAxis()],
-                rect);
-        }
-    }
-
-    painter->restore();
-}
-
-/*!
-  \param axisId Axis
-  \return Map for the axis on the canvas. With this map pixel coordinates can
-          translated to plot coordinates and vice versa.
-  \sa QwtScaleMap, QwtPlot::transform, QwtPlot::invTransform
-  
-*/
-QwtScaleMap QwtPlot::canvasMap(int axisId) const
-{
-    QwtScaleMap map;
-    if ( !d_data->canvas )
-        return map;
-
-    map.setTransformation(axisScaleEngine(axisId)->transformation());
-
-    const QwtScaleDiv *sd = axisScaleDiv(axisId);
-    map.setScaleInterval(sd->lBound(), sd->hBound());
-
-    if ( axisEnabled(axisId) )
-    {
-        const QwtScaleWidget *s = axisWidget(axisId);
-        if ( axisId == yLeft || axisId == yRight )
-        {
-            int y = s->y() + s->startBorderDist() - d_data->canvas->y();
-            int h = s->height() - s->startBorderDist() - s->endBorderDist();
-            map.setPaintInterval(y + h - 1, y);
-        }
-        else
-        {
-            int x = s->x() + s->startBorderDist() - d_data->canvas->x();
-            int w = s->width() - s->startBorderDist() - s->endBorderDist();
-            map.setPaintInterval(x, x + w - 1);
-        }
-    }
-    else
-    {
-        const int margin = plotLayout()->canvasMargin(axisId);
-
-        const QRect &canvasRect = d_data->canvas->contentsRect();
-        if ( axisId == yLeft || axisId == yRight )
-        {
-            map.setPaintInterval(canvasRect.bottom() - margin, 
-                canvasRect.top() + margin);
-        }
-        else
-        {
-            map.setPaintInterval(canvasRect.left() + margin, 
-                canvasRect.right() - margin);
-        }
-    }
-    return map;
-}
-
-/*!
-  Change the margin of the plot. The margin is the space
-  around all components.
-
-  \param margin new margin
-  \sa QwtPlotLayout::setMargin(), QwtPlot::margin(), QwtPlot::plotLayout()
-*/
-void QwtPlot::setMargin(int margin)
-{
-    if ( margin < 0 )
-        margin = 0;
-
-    if ( margin != d_data->layout->margin() )
-    {
-        d_data->layout->setMargin(margin);
-        updateLayout();
-    }
-}
-
-/*!
-    \return margin
-    \sa QwtPlot::setMargin(), QwtPlotLayout::margin(), QwtPlot::plotLayout()
-*/
-int QwtPlot::margin() const
-{
-    return d_data->layout->margin();
-}
-
-/*!
-  \brief Change the background of the plotting area
-  
-  Sets c to QColorGroup::Background of all colorgroups of 
-  the palette of the canvas. Using canvas()->setPalette()
-  is a more powerful way to set these colors.
-  \param c new background color
-*/
-void QwtPlot::setCanvasBackground(const QColor &c)
-{
-    QPalette p = d_data->canvas->palette();
-
-    for ( int i = 0; i < QPalette::NColorGroups; i++ )
-    {
-#if QT_VERSION < 0x040000
-        p.setColor((QPalette::ColorGroup)i, QColorGroup::Background, c);
-#else
-        p.setColor((QPalette::ColorGroup)i, QPalette::Background, c);
-#endif
-    }
-
-    canvas()->setPalette(p);
-}
-
-/*!
-  Nothing else than: canvas()->palette().color(
-        QPalette::Normal, QColorGroup::Background);
-  
-  \return the background color of the plotting area.
-*/
-const QColor & QwtPlot::canvasBackground() const
-{
-#if QT_VERSION < 0x040000
-    return canvas()->palette().color(
-        QPalette::Normal, QColorGroup::Background);
-#else
-    return canvas()->palette().color(
-        QPalette::Normal, QPalette::Background);
-#endif
-}
-
-/*!
-  \brief Change the border width of the plotting area
-  Nothing else than canvas()->setLineWidth(w), 
-  left for compatibility only.
-  \param w new border width
-*/
-void QwtPlot::setCanvasLineWidth(int w)
-{
-    canvas()->setLineWidth(w);
-}
- 
-/*! 
-  Nothing else than: canvas()->lineWidth(), 
-  left for compatibility only.
-  \return the border width of the plotting area
-*/
-int QwtPlot::canvasLineWidth() const
-{ 
-    return canvas()->lineWidth();
-}
-
-/*!
-  \return \c true if the specified axis exists, otherwise \c false
-  \param axisId axis index
- */
-bool QwtPlot::axisValid(int axisId)
-{
-    return ((axisId >= QwtPlot::yLeft) && (axisId < QwtPlot::axisCnt));
-}
-
-/*!
-  Called internally when the legend has been clicked on.
-  Emits a legendClicked() signal.
-*/
-
-void QwtPlot::legendItemClicked()
-{
-    if ( d_data->legend && sender()->isWidgetType() )
-    {
-        QwtPlotItem *plotItem = d_data->legend->find((QWidget *)sender());
-        if ( plotItem )
-            emit legendClicked(plotItem);
-    }
-}
-
-void QwtPlot::legendItemChecked(bool on)
-{
-    if ( d_data->legend && sender()->isWidgetType() )
-    {
-        QwtPlotItem *plotItem = d_data->legend->find((QWidget *)sender());
-        if ( plotItem )
-            emit legendChecked(plotItem, on);
-    }
-}
-
-//! Remove all curves and markers
-void QwtPlot::clear()
-{
-    detachItems(QwtPlotItem::Rtti_PlotCurve);
-    detachItems(QwtPlotItem::Rtti_PlotMarker);
-}
-
-/*!
-  \brief Insert a legend
-
-  If the position legend is \c QwtPlot::LeftLegend or \c QwtPlot::RightLegend
-  the legend will be organized in one column from top to down. 
-  Otherwise the legend items will be placed be placed in a table 
-  with a best fit number of columns from left to right.
-
-  The plot widget will become parent of the legend. It
-  will be deleted when the plot is deleted, or another
-  legend is set with insertLegend().
-       
-  \param legend Legend
-  \param pos The legend's position. Valid values are \c QwtPlot::LeftLegend,
-           \c QwtPlot::RightLegend, \c QwtPlot::TopLegend, 
-           \c QwtPlot::BottomLegend.
-
-  \param ratio Ratio between legend and the bounding rect
-               of title, canvas and axes. The legend will be shrinked
-               if it would need more space than the given ratio.
-               The ratio is limited to ]0.0 .. 1.0]. In case of <= 0.0
-               it will be reset to the default ratio.
-               The default vertical/horizontal ratio is 0.33/0.5.
-
-  \sa QwtPlotLayout::legendPosition(), QwtPlotLayout::setLegendPosition()
-*/
-void QwtPlot::insertLegend(QwtLegend *legend, 
-    QwtPlot::LegendPosition pos, double ratio)
-{
-    d_data->layout->setLegendPosition(pos, ratio);
-
-    if ( legend != d_data->legend )
-    {
-        delete d_data->legend;
-        d_data->legend = legend;
-
-        if ( d_data->legend )
-        {
-            if ( d_data->legend->parent() != this )
-            {
-#if QT_VERSION < 0x040000
-                d_data->legend->reparent(this, QPoint(0, 0));
-#else
-                d_data->legend->setParent(this);
-#endif
-            }
-
-            const QwtPlotItemList& itmList = itemList();
-            for ( QwtPlotItemIterator it = itmList.begin();
-                it != itmList.end(); ++it )
-            {
-                (*it)->updateLegend(d_data->legend);
-            }
-
-            QLayout *l = d_data->legend->contentsWidget()->layout();
-            if ( l && l->inherits("QwtDynGridLayout") )
-            {
-                QwtDynGridLayout *tl = (QwtDynGridLayout *)l;
-                if ( d_data->layout->legendPosition() == QwtPlot::TopLegend ||
-                    d_data->layout->legendPosition() == QwtPlot::BottomLegend )
-                {
-                    tl->setMaxCols(0); // unlimited
-                }
-                else
-                    tl->setMaxCols(1); // 1 column: align vertical
-            }
-        }
-        updateTabOrder();
-    }
-
-    updateLayout();
-}
diff --git a/src/qwt/qwt_plot_axis.cpp b/src/qwt/qwt_plot_axis.cpp
deleted file mode 100644
index c44c2ca..0000000
--- a/src/qwt/qwt_plot_axis.cpp
+++ /dev/null
@@ -1,603 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- * 
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-#include "qwt_plot.h"
-#include "qwt_math.h"
-#include "qwt_scale_widget.h"
-#include "qwt_scale_div.h"
-#include "qwt_scale_engine.h"
-
-class QwtPlot::AxisData
-{
-public:
-    bool isEnabled;
-    bool doAutoScale;
-
-    double minValue;
-    double maxValue;
-    double stepSize;
-
-    int maxMajor;
-    int maxMinor;
-
-    QwtScaleDiv scaleDiv;
-    QwtScaleEngine *scaleEngine;
-    QwtScaleWidget *scaleWidget;
-};
-
-//! Initialize axes
-void QwtPlot::initAxesData()
-{
-    int axisId;
-
-    for( axisId = 0; axisId < axisCnt; axisId++)
-        d_axisData[axisId] = new AxisData;
-
-    d_axisData[yLeft]->scaleWidget = 
-        new QwtScaleWidget(QwtScaleDraw::LeftScale, this);
-    d_axisData[yRight]->scaleWidget = 
-        new QwtScaleWidget(QwtScaleDraw::RightScale, this);
-    d_axisData[xTop]->scaleWidget = 
-        new QwtScaleWidget(QwtScaleDraw::TopScale, this);
-    d_axisData[xBottom]->scaleWidget = 
-        new QwtScaleWidget(QwtScaleDraw::BottomScale, this);
-
-
-    QFont fscl(fontInfo().family(), 10);
-    QFont fttl(fontInfo().family(), 12, QFont::Bold);
-
-    for(axisId = 0; axisId < axisCnt; axisId++)
-    {
-        AxisData &d = *d_axisData[axisId];
-
-        d.scaleWidget->setFont(fscl);
-        d.scaleWidget->setBaselineDist(2);
-
-        QwtText text;
-        text.setFont(fttl);
-        d.scaleWidget->setTitle(text);
-
-        d.doAutoScale = true;
-
-        d.minValue = 0.0;
-        d.maxValue = 1000.0;
-        d.stepSize = 0.0;
-
-        d.maxMinor = 5;
-        d.maxMajor = 8;
-
-        d.scaleEngine = new QwtLinearScaleEngine;
-
-        d.scaleDiv.invalidate();
-    }
-
-    d_axisData[yLeft]->isEnabled = true;
-    d_axisData[yRight]->isEnabled = false;
-    d_axisData[xBottom]->isEnabled = true;
-    d_axisData[xTop]->isEnabled = false;
-}
-
-void QwtPlot::deleteAxesData()
-{
-    for( int axisId = 0; axisId < axisCnt; axisId++)
-    {
-        delete d_axisData[axisId]->scaleEngine;
-        delete d_axisData[axisId];
-        d_axisData[axisId] = NULL;
-    }
-}
-
-/*!
-  \return specified axis, or NULL if axisId is invalid.
-  \param axisId axis index
-*/
-const QwtScaleWidget *QwtPlot::axisWidget(int axisId) const
-{
-    if (axisValid(axisId))
-        return d_axisData[axisId]->scaleWidget;
-
-    return NULL;
-}
-
-/*!
-  \return specified axis, or NULL if axisId is invalid.
-  \param axisId axis index
-*/
-QwtScaleWidget *QwtPlot::axisWidget(int axisId)
-{
-    if (axisValid(axisId))
-        return d_axisData[axisId]->scaleWidget;
-
-    return NULL;
-}
-
-void QwtPlot::setAxisScaleEngine(int axisId, QwtScaleEngine *scaleEngine)
-{
-    if (axisValid(axisId) && scaleEngine != NULL )
-    {
-        AxisData &d = *d_axisData[axisId];
-
-        delete d.scaleEngine;
-        d.scaleEngine = scaleEngine;
-
-        d.scaleDiv.invalidate();
-
-        autoRefresh();
-    }
-}
-
-QwtScaleEngine *QwtPlot::axisScaleEngine(int axisId)
-{
-    if (axisValid(axisId))
-        return d_axisData[axisId]->scaleEngine;
-    else
-        return NULL;
-}
-
-const QwtScaleEngine *QwtPlot::axisScaleEngine(int axisId) const
-{
-    if (axisValid(axisId))
-        return d_axisData[axisId]->scaleEngine;
-    else
-        return NULL;
-}
-/*!
-  \return \c true if autoscaling is enabled
-  \param axisId axis index
-*/
-bool QwtPlot::axisAutoScale(int axisId) const
-{
-    if (axisValid(axisId))
-        return d_axisData[axisId]->doAutoScale;
-    else
-        return false;
-    
-}
-
-/*!
-  \return \c true if a specified axis is enabled
-  \param axisId axis index
-*/
-bool QwtPlot::axisEnabled(int axisId) const
-{
-    if (axisValid(axisId))
-        return d_axisData[axisId]->isEnabled;
-    else
-        return false;
-}
-
-/*!
-  \return the font of the scale labels for a specified axis
-  \param axisId axis index
-*/
-QFont QwtPlot::axisFont(int axisId) const
-{
-    if (axisValid(axisId))
-        return axisWidget(axisId)->font();
-    else
-        return QFont();
-    
-}
-
-/*!
-  \return the maximum number of major ticks for a specified axis
-  \param axisId axis index
-*/
-int QwtPlot::axisMaxMajor(int axisId) const
-{
-    if (axisValid(axisId))
-        return d_axisData[axisId]->maxMajor;
-    else
-        return 0;
-}
-
-/*!
-  \return the maximum number of minor ticks for a specified axis
-  \param axisId axis index
-*/
-int QwtPlot::axisMaxMinor(int axisId) const
-{
-    if (axisValid(axisId))
-        return d_axisData[axisId]->maxMinor;
-    else
-        return 0;
-}
-
-/*!
-  \returns the scale division of a specified axis
-  \param axisId axis index
-  \sa QwtScaleDiv
-*/
-const QwtScaleDiv *QwtPlot::axisScaleDiv(int axisId) const
-{
-    if (!axisValid(axisId))
-        return NULL;
-
-    return &d_axisData[axisId]->scaleDiv;
-}
-
-/*!
-  \returns the scale division of a specified axis
-  \param axisId axis index
-  \sa QwtScaleDiv
-*/
-QwtScaleDiv *QwtPlot::axisScaleDiv(int axisId) 
-{
-    if (!axisValid(axisId))
-        return NULL;
-
-    return &d_axisData[axisId]->scaleDiv;
-}
-
-/*!
-  \returns the scale draw of a specified axis
-  \param axisId axis index
-  \return specified scaleDraw for axis, or NULL if axis is invalid.
-  \sa QwtScaleDraw
-*/
-const QwtScaleDraw *QwtPlot::axisScaleDraw(int axisId) const
-{
-    if (!axisValid(axisId))
-        return NULL;
-
-    return axisWidget(axisId)->scaleDraw();
-}
-
-/*!
-  \returns the scale draw of a specified axis
-  \param axisId axis index
-  \return specified scaleDraw for axis, or NULL if axis is invalid.
-  \sa QwtScaleDraw
-*/
-QwtScaleDraw *QwtPlot::axisScaleDraw(int axisId) 
-{
-    if (!axisValid(axisId))
-        return NULL;
-
-    return axisWidget(axisId)->scaleDraw();
-}
-
-/*!
-  \return the title of a specified axis
-  \param axisId axis index
-*/
-QwtText QwtPlot::axisTitle(int axisId) const
-{
-    if (axisValid(axisId))
-        return axisWidget(axisId)->title();
-    else
-        return QwtText();
-}
-
-/*!
-  \brief Enable or disable a specified axis
-
-  When an axis is disabled, this only means that it is not
-  visible on the screen. Curves, markers and can be attached
-  to disabled axes, and transformation of screen coordinates
-  into values works as normal.
-
-  Only xBottom and yLeft are enabled by default.
-  \param axisId axis index
-  \param tf \c true (enabled) or \c false (disabled)
-*/
-void QwtPlot::enableAxis(int axisId, bool tf)
-{
-    if (axisValid(axisId) && tf != d_axisData[axisId]->isEnabled)
-    {
-        d_axisData[axisId]->isEnabled = tf;
-        updateLayout();
-    }
-}
-
-/*!
-  Transform the x or y coordinate of a position in the
-  drawing region into a value.
-  \param axisId axis index
-  \param pos position
-  \warning The position can be an x or a y coordinate,
-           depending on the specified axis.
-*/
-double QwtPlot::invTransform(int axisId, int pos) const
-{
-    if (axisValid(axisId))
-       return(canvasMap(axisId).invTransform(pos));
-    else
-       return 0.0;
-}
-
-
-/*!
-  \brief Transform a value into a coordinate in the plotting region
-  \param axisId axis index
-  \param value value
-  \return X or y coordinate in the plotting region corresponding
-          to the value.
-*/
-int QwtPlot::transform(int axisId, double value) const
-{
-    if (axisValid(axisId))
-       return(canvasMap(axisId).transform(value));
-    else
-       return 0;
-    
-}
-
-/*!
-  \brief Change the font of an axis
-  \param axisId axis index
-  \param f font
-  \warning This function changes the font of the tick labels,
-           not of the axis title.
-*/
-void QwtPlot::setAxisFont(int axisId, const QFont &f)
-{
-    if (axisValid(axisId))
-        axisWidget(axisId)->setFont(f);
-}
-
-/*!
-  \brief Enable autoscaling for a specified axis
-
-  This member function is used to switch back to autoscaling mode
-  after a fixed scale has been set. Autoscaling is enabled by default.
-
-  \param axisId axis index
-  \sa QwtPlot::setAxisScale(), QwtPlot::setAxisScaleDiv()
-*/
-void QwtPlot::setAxisAutoScale(int axisId)
-{
-    if (axisValid(axisId) && !d_axisData[axisId]->doAutoScale )
-    {
-        d_axisData[axisId]->doAutoScale = true;
-        autoRefresh();
-    }
-}
-
-/*!
-  \brief Disable autoscaling and specify a fixed scale for a selected axis.
-  \param axisId axis index
-  \param min
-  \param max minimum and maximum of the scale
-  \param stepSize Major step size. If <code>step == 0</code>, the step size is
-            calculated automatically using the maxMajor setting.
-  \sa QwtPlot::setAxisMaxMajor(), QwtPlot::setAxisAutoScale()
-*/
-void QwtPlot::setAxisScale(int axisId, double min, double max, double stepSize)
-{
-    if (axisValid(axisId))
-    {
-        AxisData &d = *d_axisData[axisId];
-
-        d.doAutoScale = false;
-        d.scaleDiv.invalidate();
-
-        d.minValue = min;
-        d.maxValue = max;
-        d.stepSize = stepSize;
-            
-        autoRefresh();
-    }
-}
-
-/*!
-  \brief Disable autoscaling and specify a fixed scale for a selected axis.
-  \param axisId axis index
-  \param scaleDiv Scale division
-  \sa QwtPlot::setAxisScale(), QwtPlot::setAxisAutoScale()
-*/
-void QwtPlot::setAxisScaleDiv(int axisId, const QwtScaleDiv &scaleDiv)
-{
-    if (axisValid(axisId))
-    {
-        AxisData &d = *d_axisData[axisId];
-
-        d.doAutoScale = false;
-        d.scaleDiv = scaleDiv;
-
-        autoRefresh();
-    }
-}
-
-/*!
-  \brief Set a scale draw
-  \param axisId axis index
-  \param scaleDraw object responsible for drawing scales.
-
-  By passing scaleDraw it is possible to extend QwtScaleDraw
-  functionality and let it take place in QwtPlot. Please note
-  that scaleDraw has to be created with new and will be deleted
-  by the corresponding QwtScale member ( like a child object ).
-
-  \sa QwtScaleDraw, QwtScale
-  \warning The attributes of scaleDraw will be overwritten by those of the  
-           previous QwtScaleDraw. 
-*/
-
-void QwtPlot::setAxisScaleDraw(int axisId, QwtScaleDraw *scaleDraw)
-{
-    if (axisValid(axisId))
-    {
-        axisWidget(axisId)->setScaleDraw(scaleDraw);
-        autoRefresh();
-    }
-}
-
-/*!
-  Change the alignment of the tick labels
-  \param axisId axis index
-  \param alignment Or'd Qt::AlignmentFlags <see qnamespace.h>
-  \sa QwtScaleDraw::setLabelAlignment()
-*/
-#if QT_VERSION < 0x040000
-void QwtPlot::setAxisLabelAlignment(int axisId, int alignment)
-#else
-void QwtPlot::setAxisLabelAlignment(int axisId, Qt::Alignment alignment)
-#endif
-{
-    if (axisValid(axisId))
-        axisWidget(axisId)->setLabelAlignment(alignment);
-}
-
-/*!
-  Rotate all tick labels
-  \param axisId axis index
-  \param rotation Angle in degrees. When changing the label rotation,
-                  the label alignment might be adjusted too.
-  \sa QwtScaleDraw::setLabelRotation(), QwtPlot::setAxisLabelAlignment
-*/
-void QwtPlot::setAxisLabelRotation(int axisId, double rotation)
-{
-    if (axisValid(axisId))
-        axisWidget(axisId)->setLabelRotation(rotation);
-}
-
-/*!
-  \brief Set the maximum number of minor scale intervals for a specified axis
-  \param axisId axis index
-  \param maxMinor maximum number of minor steps
-  \sa QwtAutoScale::setMaxMinor
-*/
-void QwtPlot::setAxisMaxMinor(int axisId, int maxMinor)
-{
-    if (axisValid(axisId))
-    {
-        if ( maxMinor < 0 )
-            maxMinor = 0;
-        if ( maxMinor > 100 )
-            maxMinor = 100;
-            
-        AxisData &d = *d_axisData[axisId];
-
-        if ( maxMinor != d.maxMinor )
-        {
-            d.maxMinor = maxMinor;
-            d.scaleDiv.invalidate();
-            autoRefresh();
-        }
-    }
-}
-
-/*!
-  \brief Set the maximum number of major scale intervals for a specified axis
-  \param axisId axis index
-  \param maxMajor maximum number of major steps
-  \sa QwtAutoScale::setMaxMajor
-*/
-void QwtPlot::setAxisMaxMajor(int axisId, int maxMajor)
-{
-    if (axisValid(axisId))
-    {
-        if ( maxMajor < 1 )
-            maxMajor = 1;
-        if ( maxMajor > 1000 )
-            maxMajor = 10000;
-            
-        AxisData &d = *d_axisData[axisId];
-        if ( maxMajor != d.maxMinor )
-        {
-            d.maxMajor = maxMajor;
-            d.scaleDiv.invalidate();
-            autoRefresh();
-        }
-    }
-}
-
-/*!
-  \brief Change the title of a specified axis
-  \param axisId axis index
-  \param title axis title
-*/
-void QwtPlot::setAxisTitle(int axisId, const QString &title)
-{
-    if (axisValid(axisId))
-        axisWidget(axisId)->setTitle(title);
-}
-
-/*!
-  \brief Change the title of a specified axis
-  \param axisId axis index
-  \param title axis title
-*/
-void QwtPlot::setAxisTitle(int axisId, const QwtText &title)
-{
-    if (axisValid(axisId))
-        axisWidget(axisId)->setTitle(title);
-}
-
-//! Rebuild the scales and maps
-void QwtPlot::updateAxes() 
-{
-    // Find bounding interval of the item data
-    // for all axes, where autoscaling is enabled
-    
-    QwtDoubleInterval intv[axisCnt];
-
-    const QwtPlotItemList& itmList = itemList();
-
-    QwtPlotItemIterator it;
-    for ( it = itmList.begin(); it != itmList.end(); ++it )
-    {
-        const QwtPlotItem *item = *it;
-
-        if ( !item->testItemAttribute(QwtPlotItem::AutoScale) )
-            continue;
-
-        if ( axisAutoScale(item->xAxis()) || axisAutoScale(item->yAxis()) )
-        {
-            const QwtDoubleRect rect = item->boundingRect();
-            intv[item->xAxis()] |= QwtDoubleInterval(rect.left(), rect.right());
-            intv[item->yAxis()] |= QwtDoubleInterval(rect.top(), rect.bottom());
-        }
-    }
-
-    // Adjust scales
-
-    for (int axisId = 0; axisId < axisCnt; axisId++)
-    {
-        AxisData &d = *d_axisData[axisId];
-
-        double minValue = d.minValue;
-        double maxValue = d.maxValue;
-        double stepSize = d.stepSize;
-
-        if ( d.doAutoScale && intv[axisId].isValid() )
-        {
-            d.scaleDiv.invalidate();
-
-            minValue = intv[axisId].minValue();
-            maxValue = intv[axisId].maxValue();
-
-            d.scaleEngine->autoScale(d.maxMajor, 
-                minValue, maxValue, stepSize);
-        }
-        if ( !d.scaleDiv.isValid() )
-        {
-            d.scaleDiv = d.scaleEngine->divideScale(
-                minValue, maxValue, 
-                d.maxMajor, d.maxMinor, stepSize);
-        }
-
-        QwtScaleWidget *scaleWidget = axisWidget(axisId);
-        scaleWidget->setScaleDiv(
-            d.scaleEngine->transformation(), d.scaleDiv);
-
-        int startDist, endDist;
-        scaleWidget->getBorderDistHint(startDist, endDist);
-        scaleWidget->setBorderDist(startDist, endDist);
-    }
-
-    for ( it = itmList.begin(); it != itmList.end(); ++it )
-    {
-        QwtPlotItem *item = *it;
-        item->updateScaleDiv( *axisScaleDiv(item->xAxis()),
-            *axisScaleDiv(item->yAxis()));
-    }
-}
-
diff --git a/src/qwt/qwt_plot_canvas.cpp b/src/qwt/qwt_plot_canvas.cpp
deleted file mode 100644
index 9d619f1..0000000
--- a/src/qwt/qwt_plot_canvas.cpp
+++ /dev/null
@@ -1,355 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-// vim: expandtab
-
-#include <qpainter.h>
-#include <qstyle.h>
-#if QT_VERSION >= 0x040000
-#include <qstyleoption.h>
-#include <qpaintengine.h>
-#ifdef Q_WS_X11
-#include <qx11info_x11.h>
-#endif
-#endif
-#include <qevent.h>
-#include "qwt_painter.h"
-#include "qwt_math.h"
-#include "qwt_plot.h"
-#include "qwt_paint_buffer.h"
-#include "qwt_plot_canvas.h"
-
-class QwtPlotCanvas::PrivateData
-{
-public:
-    PrivateData():
-        focusIndicator(CanvasFocusIndicator),
-        paintAttributes(0),
-        cache(NULL)
-    {
-    }
-
-    ~PrivateData()
-    {
-        delete cache;
-    }
-
-    FocusIndicator focusIndicator;
-    int paintAttributes;
-    QPixmap *cache;
-};
-
-//! Sets a cross cursor, enables QwtPlotCanvas::PaintCached
-
-QwtPlotCanvas::QwtPlotCanvas(QwtPlot *plot):
-    QFrame(plot)
-{
-    d_data = new PrivateData;
-
-#if QT_VERSION >= 0x040100
-    setAutoFillBackground(true);
-#endif
-
-#if QT_VERSION < 0x040000
-    setWFlags(Qt::WNoAutoErase);
-    setCursor(Qt::crossCursor);
-#else
-    setAttribute(Qt::WA_PaintOnScreen, true);
-    setCursor(Qt::CrossCursor);
-#endif // >= 0x040000
-
-    setPaintAttribute(PaintCached, true);
-    setPaintAttribute(PaintPacked, true);
-}
-
-//! Destructor
-QwtPlotCanvas::~QwtPlotCanvas()
-{
-    delete d_data;
-}
-
-/*!
-  \brief Changing the paint attributes
-
-  \param attribute Paint attribute
-  \param on On/Off
-
-  The default setting enables PaintCached and PaintPacked
-
-  \sa testPaintAttribute(), drawCanvas(), drawContents(), paintCache()
-*/
-void QwtPlotCanvas::setPaintAttribute(PaintAttribute attribute, bool on)
-{
-    if ( bool(d_data->paintAttributes & attribute) == on )
-        return;
-
-    if ( on )
-        d_data->paintAttributes |= attribute;
-    else
-        d_data->paintAttributes &= ~attribute;
-
-    switch(attribute)
-    {
-        case PaintCached:
-        {
-            if ( on )
-            {
-                if ( d_data->cache == NULL )
-                    d_data->cache = new QPixmap();
-
-                if ( isVisible() )
-                {
-                    const QRect cr = contentsRect();
-                    *d_data->cache = QPixmap::grabWidget(this,
-                        cr.x(), cr.y(), cr.width(), cr.height() );
-                }
-            }
-            else
-            {
-                delete d_data->cache;
-                d_data->cache = NULL;
-            }
-            break;
-        }
-        case PaintPacked:
-        {
-            /*
-              If not visible, changing of the background mode
-              is delayed until it becomes visible. This tries to avoid 
-              looking through the canvas when the canvas is shown the first 
-              time.
-             */
-
-            if ( on == false || isVisible() )
-                QwtPlotCanvas::setSystemBackground(!on);
-
-            break;
-        }
-    }
-}
-
-/*!
-  Test wether a paint attribute is enabled
-
-  \param attribute Paint attribute
-  \return true if the attribute is enabled
-*/
-bool QwtPlotCanvas::testPaintAttribute(PaintAttribute attribute) const
-{
-    return (d_data->paintAttributes & attribute) != 0;
-}
-
-//! Return the paint cache, might be null
-QPixmap *QwtPlotCanvas::paintCache()
-{
-    return d_data->cache;
-}
-
-//! Return the paint cache, might be null
-const QPixmap *QwtPlotCanvas::paintCache() const
-{
-    return d_data->cache;
-}
-
-//! Invalidate the internal paint cache
-void QwtPlotCanvas::invalidatePaintCache()
-{
-    if ( d_data->cache )
-        *d_data->cache = QPixmap();
-}
-
-/*!
-  Set the focus indicator
-
-  \sa FocusIndicator, focusIndicator
-*/
-void QwtPlotCanvas::setFocusIndicator(FocusIndicator focusIndicator)
-{
-    d_data->focusIndicator = focusIndicator;
-}
-
-/*!
-  \return Focus indicator
-  
-  \sa FocusIndicator, setFocusIndicator
-*/
-QwtPlotCanvas::FocusIndicator QwtPlotCanvas::focusIndicator() const
-{
-    return d_data->focusIndicator;
-}
-
-void QwtPlotCanvas::hideEvent(QHideEvent *e)
-{
-    QFrame::hideEvent(e);
-
-    if ( d_data->paintAttributes & PaintPacked )
-    {
-        // enable system background to avoid the "looking through
-        // the canvas" effect, for the next show
-
-        setSystemBackground(true);
-    }
-}
-
-void QwtPlotCanvas::paintEvent(QPaintEvent *event)
-{
-#if QT_VERSION >= 0x040000
-    QPainter painter(this);
-    
-    if ( !contentsRect().contains( event->rect() ) ) 
-    {
-        painter.save();
-        painter.setClipRegion( event->region() & frameRect() );
-        drawFrame( &painter );
-        painter.restore(); 
-    }
-
-#if defined(Q_WS_WIN)
-
-#ifdef __GNUC__
-#warning Clipping bugs on Win32
-#endif
-
-#else
-    painter.setClipRegion(event->region() & contentsRect());
-#endif
-
-    drawContents( &painter );
-#else // QT_VERSION < 0x040000
-    QFrame::paintEvent(event);
-#endif
-
-    if ( d_data->paintAttributes & PaintPacked )
-        setSystemBackground(false);
-}
-
-//! Redraw the canvas, and focus rect
-void QwtPlotCanvas::drawContents(QPainter *painter)
-{
-    if ( d_data->paintAttributes & PaintCached && d_data->cache 
-        && d_data->cache->size() == contentsRect().size() )
-    {
-        painter->drawPixmap(contentsRect().topLeft(), *d_data->cache);
-    }
-    else
-        drawCanvas(painter);
-
-    if ( hasFocus() && focusIndicator() == CanvasFocusIndicator )
-        drawFocusIndicator(painter);
-}
-
-/*!
-  Draw the the canvas
-
-  Paints all plot items to the contentsRect(), using QwtPlot::drawCanvas
-  and updates the paint cache.
-
-  \sa QwtPlot::drawCanvas, setPaintAttributes(), testPaintAttributes()
-*/
-
-void QwtPlotCanvas::drawCanvas(QPainter *painter)
-{
-    if ( !contentsRect().isValid() )
-        return;
-
-    if ( d_data->paintAttributes & PaintCached && d_data->cache )
-    {
-        *d_data->cache = QPixmap(contentsRect().size());
-
-#ifdef Q_WS_X11
-#if QT_VERSION >= 0x040000
-        if ( d_data->cache->x11Info().screen() != x11Info().screen() )
-            d_data->cache->x11SetScreen(x11Info().screen());
-#else
-        if ( d_data->cache->x11Screen() != x11Screen() )
-            d_data->cache->x11SetScreen(x11Screen());
-#endif
-#endif
-
-        if ( d_data->paintAttributes & PaintPacked )
-        {
-            QPainter bgPainter(d_data->cache);
-            bgPainter.setPen(Qt::NoPen);
-
-            QBrush bgBrush;
-#if QT_VERSION >= 0x040000
-                bgBrush = palette().brush(backgroundRole());
-#else
-            QColorGroup::ColorRole role = 
-                QPalette::backgroundRoleFromMode( backgroundMode() );
-            bgBrush = colorGroup().brush( role );
-#endif
-            bgPainter.setBrush(bgBrush);
-            bgPainter.drawRect(d_data->cache->rect());
-        }
-        else
-            d_data->cache->fill(this, d_data->cache->rect().topLeft());
-
-        QPainter cachePainter(d_data->cache);
-        cachePainter.translate(-contentsRect().x(),
-            -contentsRect().y());
-
-        ((QwtPlot *)parent())->drawCanvas(&cachePainter);
-
-        cachePainter.end();
-
-        painter->drawPixmap(contentsRect(), *d_data->cache);
-    }
-    else
-    {
-        if ( d_data->paintAttributes & PaintPacked )
-        {
-            painter->save();
-            painter->setPen(Qt::NoPen);
-
-            const QBrush brush =
-#if QT_VERSION < 0x040000
-                backgroundBrush();
-#else
-                palette().brush(backgroundRole());
-#endif
-            painter->setBrush(brush);
-
-            painter->drawRect(contentsRect());
-            painter->restore();
-        }
-        ((QwtPlot *)parent())->drawCanvas(painter);
-    }
-}
-
-//! Draw the focus indication
-void QwtPlotCanvas::drawFocusIndicator(QPainter *painter)
-{
-    const int margin = 1;
-
-    QRect focusRect = contentsRect();
-    focusRect.setRect(focusRect.x() + margin, focusRect.y() + margin,
-        focusRect.width() - 2 * margin, focusRect.height() - 2 * margin);
-
-    QwtPainter::drawFocusRect(painter, this, focusRect);
-}
-
-void QwtPlotCanvas::setSystemBackground(bool on)
-{
-#if QT_VERSION < 0x040000
-    if ( backgroundMode() == Qt::NoBackground )
-    {
-        if ( on )
-            setBackgroundMode(Qt::PaletteBackground);
-    }
-    else
-    {
-        if ( !on )
-            setBackgroundMode(Qt::NoBackground);
-    }
-#else
-    if ( testAttribute(Qt::WA_NoSystemBackground) == on )
-        setAttribute(Qt::WA_NoSystemBackground, !on);
-#endif
-}
diff --git a/src/qwt/qwt_plot_curve.cpp b/src/qwt/qwt_plot_curve.cpp
deleted file mode 100644
index c772e4a..0000000
--- a/src/qwt/qwt_plot_curve.cpp
+++ /dev/null
@@ -1,1469 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-#include <qpainter.h>
-#include <qpixmap.h>
-#include <qbitarray.h>
-#include "qwt_global.h"
-#include "qwt_legend.h"
-#include "qwt_legend_item.h"
-#include "qwt_data.h"
-#include "qwt_rect.h"
-#include "qwt_scale_map.h"
-#include "qwt_double_rect.h"
-#include "qwt_math.h"
-#include "qwt_painter.h"
-#include "qwt_plot.h"
-#include "qwt_plot_canvas.h"
-#include "qwt_spline.h"
-#include "qwt_symbol.h"
-#include "qwt_plot_curve.h"
-
-#if QT_VERSION >= 0x040000
-
-#include <qevent.h>
-
-class QwtPlotCurvePaintHelper: public QObject
-{
-public:
-    QwtPlotCurvePaintHelper(const QwtPlotCurve *curve, int from, int to):
-        _curve(curve),
-        _from(from),
-        _to(to)
-    {
-    }
-
-    virtual bool eventFilter(QObject *, QEvent *event)
-    {
-        if ( event->type() == QEvent::Paint )
-        {
-            _curve->draw(_from, _to);
-            return true;
-        }
-        return false;
-    }
-private:
-    const QwtPlotCurve *_curve;
-    int _from;
-    int _to;
-};
-
-#endif // QT_VERSION >= 0x040000
-
-#if QT_VERSION < 0x040000
-#define QwtPointArray QPointArray
-#else
-#define QwtPointArray QPolygon
-#endif
-
-class QwtPlotCurve::PrivateData
-{
-public:
-    class PixelMatrix: private QBitArray
-    {
-    public:
-        PixelMatrix(const QRect& rect):
-            QBitArray(rect.width() * rect.height()),
-            _rect(rect)
-        {
-            fill(false);
-        }
-
-        inline bool testPixel(const QPoint& pos)
-        {
-            if ( !_rect.contains(pos) )
-                return false;
-
-            const int idx = _rect.width() * (pos.y() - _rect.y()) + 
-                (pos.x() - _rect.x());
-
-            const bool marked = testBit(idx);
-            if ( !marked )
-                setBit(idx, true);
-
-            return !marked;
-        }
-
-    private:
-        QRect _rect;
-    };
-
-    PrivateData()
-    {
-        pen = QPen(Qt::black, 0);
-        reference = 0.0;
-        splineSize = 250;
-        attributes = Auto;
-        paintAttributes = 0;
-        style = QwtPlotCurve::Lines;
-    }
-
-    QwtPlotCurve::CurveStyle style;
-    double reference;
-
-    QwtSymbol sym;
-
-    QPen pen;
-    QBrush brush;
-    QwtText title;
-
-    int attributes;
-    int splineSize;
-    int paintAttributes;
-};
-
-static int qwtChkMono(const double *array, int size)
-{
-    if (size < 2)
-        return 0;
-
-    int rv = qwtSign(array[1] - array[0]);
-    for (int i = 1; i < size - 1; i++)
-    {
-        if ( qwtSign(array[i+1] - array[i]) != rv )
-        {
-            rv = 0;
-            break;
-        }
-    }
-    return rv;
-}
-
-static void qwtTwistArray(double *array, int size)
-{
-    const int s2 = size / 2;
-
-    for (int i=0; i < s2; i++)
-    {
-        const int itmp = size - 1 - i;
-        const double dtmp = array[i];
-        array[i] = array[itmp];
-        array[itmp] = dtmp;
-    }
-}
-
-/*!
-  \brief Ctor
-*/
-QwtPlotCurve::QwtPlotCurve()
-{
-    init(QwtText());
-}
-
-/*!
-  \brief Ctor
-  \param title title of the curve   
-*/
-QwtPlotCurve::QwtPlotCurve(const QwtText &title)
-{
-    init(title);
-}
-
-/*!
-  \brief Ctor
-  \param title title of the curve   
-*/
-QwtPlotCurve::QwtPlotCurve(const QString &title)
-{
-    init(title);
-}
-
-/*!
-  \brief Copy Constructor
-*/
-QwtPlotCurve::QwtPlotCurve(const QwtPlotCurve &c):
-    QwtPlotItem(c)
-{
-    init(c.d_data->title);
-    copy(c);
-}
-
-//! Dtor
-QwtPlotCurve::~QwtPlotCurve()
-{
-    delete d_xy;
-    delete d_data;
-}
-
-/*!
-  \brief Initialize data members
-*/
-void QwtPlotCurve::init(const QwtText &title)
-{
-    setItemAttribute(QwtPlotItem::Legend);
-    setItemAttribute(QwtPlotItem::AutoScale);
-
-    d_data = new PrivateData;
-    d_data->title = title;
-
-    d_xy = new QwtDoublePointData(QwtArray<QwtDoublePoint>());
-
-    setZ(20.0);
-}
-
-/*!
-  \brief Copy the contents of a curve into another curve
-*/
-void QwtPlotCurve::copy(const QwtPlotCurve &c)
-{
-    if (this != &c)
-    {
-        *d_data = *c.d_data;
-
-        delete d_xy;
-        d_xy = c.d_xy->copy();
-
-        itemChanged();
-    }
-}
-
-
-/*!
-  \brief Copy Assignment
-*/
-const QwtPlotCurve& QwtPlotCurve::operator=(const QwtPlotCurve &c)
-{
-    copy(c);
-    return *this;
-}
-
-int QwtPlotCurve::rtti() const
-{
-    return QwtPlotItem::Rtti_PlotCurve;
-}
-
-/*!
-  \brief Specify an attribute how to draw the curve
-
-  The attributes can be used to modify the drawing algorithm.
-
-  The following attributes are defined:<dl>
-  <dt>QwtPlotCurve::PaintFiltered</dt>
-  <dd>Tries to reduce the data that has to be painted, by sorting out
-      duplicates, or paintings outside the visible area. Might have a
-      notable impact on curves with many close points. 
-      Only a couple of very basic filtering algos are implemented.</dd>
-  <dt>QwtPlotCurve::ClipPolygons</dt>
-  <dd>Clip polygons before painting them.
-  </dl>
-
-  The default is, that no paint attributes are enabled.
-
-  \param attribute Paint attribute
-  \param on On/Off
-  /sa QwtPlotCurve::testPaintAttribute()
-*/
-void QwtPlotCurve::setPaintAttribute(PaintAttribute attribute, bool on)
-{
-    if ( on )
-        d_data->paintAttributes |= attribute;
-    else
-        d_data->paintAttributes &= ~attribute;
-}
-
-/*!
-    \brief Return the current paint attributes
-    \sa QwtPlotCurve::setPaintAttribute
-*/
-bool QwtPlotCurve::testPaintAttribute(PaintAttribute attribute) const
-{
-    return (d_data->paintAttributes & attribute);
-}
-
-/*!
-  \brief Set the curve's drawing style
-
-  Valid styles are:
-  <dl>
-  <dt>QwtPlotCurve::NoCurve</dt>
-  <dd>Don't draw a curve. Note: This doesn't affect the symbol. </dd>
-  <dt>QwtPlotCurve::Lines</dt>
-  <dd>Connect the points with straight lines.</dd>
-  <dt>QwtPlotCurve::Sticks</dt>
-  <dd>Draw vertical sticks from a baseline which is defined by setBaseline().</dd>
-  <dt>QwtPlotCurve::Steps</dt>
-  <dd>Connect the points with a step function. The step function
-      is drawn from the left to the right or vice versa,
-      depending on the 'Inverted' option.</dd>
-  <dt>QwtPlotCurves::Dots</dt>
-  <dd>Draw dots at the locations of the data points. Note:
-      This is different from a dotted line (see setPen()).</dd>
-  <dt>QwtPlotCurve::Spline</dt>
-  <dd>Interpolate the points with a spline. The spline
-      type can be specified with setCurveAttribute(),
-      the size of the spline (= number of interpolated points)
-      can be specified with setSplineSize().</dd>
-  <dt>QwtPlotCurve::UserCurve ...</dt>
-  <dd>Styles >= QwtPlotCurve::UserCurve are reserved for derived
-      classes of QwtPlotCurve that overload QwtPlotCurve::draw() with
-      additional application specific curve types.</dd>
-  </dl>
-  \sa QwtPlotCurve::style()
-*/
-void QwtPlotCurve::setStyle(CurveStyle style)
-{
-    if ( style != d_data->style )
-    {
-        d_data->style = style;
-        itemChanged();
-    }
-}
-
-/*!
-    \fn CurveStyle QwtPlotCurve::style() const
-    \brief Return the current style
-    \sa QwtPlotCurve::setStyle
-*/
-QwtPlotCurve::CurveStyle QwtPlotCurve::style() const 
-{ 
-    return d_data->style; 
-}
-
-/*!
-  \brief Assign a symbol
-  \param s symbol
-  \sa QwtSymbol
-*/
-void QwtPlotCurve::setSymbol(const QwtSymbol &s )
-{
-    d_data->sym = s;
-    itemChanged();
-}
-
-/*!
-    \brief Return the current symbol
-    \sa QwtPlotCurve::setSymbol
-*/
-const QwtSymbol &QwtPlotCurve::symbol() const 
-{ 
-    return d_data->sym; 
-}
-
-/*!
-  \brief Assign a pen
-  \param p New pen
-*/
-void QwtPlotCurve::setPen(const QPen &p)
-{
-    if ( p != d_data->pen )
-    {
-        d_data->pen = p;
-        itemChanged();
-    }
-}
-
-/*!
-    \brief Return the pen used to draw the lines
-    \sa QwtPlotCurve::setPen
-*/
-const QPen& QwtPlotCurve::pen() const 
-{ 
-    return d_data->pen; 
-}
-
-/*!
-  \brief Assign a brush. 
-         In case of brush.style() != QBrush::NoBrush 
-         and style() != QwtPlotCurve::Sticks
-         the area between the curve and the baseline will be filled.
-         In case !brush.color().isValid() the area will be filled by
-         pen.color(). The fill algorithm simply connects the first and the
-         last curve point to the baseline. So the curve data has to be sorted 
-         (ascending or descending). 
-  \param brush New brush
-    \sa QwtPlotCurve::brush, QwtPlotCurve::setBaseline, QwtPlotCurve::baseline
-*/
-void QwtPlotCurve::setBrush(const QBrush &brush)
-{
-    if ( brush != d_data->brush )
-    {
-        d_data->brush = brush;
-        itemChanged();
-    }
-}
-
-/*!
-  \brief Return the brush used to fill the area between lines and the baseline
-
-  \sa QwtPlotCurve::setBrush, QwtPlotCurve::setBaseline, QwtPlotCurve::baseline
-*/
-const QBrush& QwtPlotCurve::brush() const 
-{
-    return d_data->brush;
-}
-
-
-/*!
-  \brief Set data by copying x- and y-values from specified memory blocks
-  Contrary to \b QwtPlot::setCurveRawData, this function makes a 'deep copy' of
-  the data.
-
-  \param xData pointer to x values
-  \param yData pointer to y values
-  \param size size of xData and yData
-
-  \sa QwData::setData.
-*/
-void QwtPlotCurve::setData(const double *xData, const double *yData, int size)
-{
-    delete d_xy;
-    d_xy = new QwtArrayData(xData, yData, size);
-    itemChanged();
-}
-
-/*!
-  \brief Initialize data with x- and y-arrays (explicitly shared)
-
-  \param xData x data
-  \param yData y data
-
-  \sa QwtData::setData.
-*/
-void QwtPlotCurve::setData(const QwtArray<double> &xData, 
-    const QwtArray<double> &yData)
-{
-    delete d_xy;
-    d_xy = new QwtArrayData(xData, yData);
-    itemChanged();
-}
-
-/*!
-  Initialize data with an array of points (explicitly shared).
-
-  \param data Data
-
-  \sa QwtDoublePointData::setData.
-*/
-void QwtPlotCurve::setData(const QwtArray<QwtDoublePoint> &data)
-{
-    delete d_xy;
-    d_xy = new QwtDoublePointData(data);
-    itemChanged();
-}
-
-/*!
-  Initialize data with a pointer to QwtData.
-
-  \param data Data
-
-  \sa QwtData::copy.
-*/
-void QwtPlotCurve::setData(const QwtData &data)
-{
-    delete d_xy;
-    d_xy = data.copy();
-    itemChanged();
-}
-
-/*!
-  \brief Initialize the data by pointing to memory blocks which are not managed
-  by QwtPlotCurve.
-
-  setRawData is provided for efficiency. It is important to keep the pointers
-  during the lifetime of the underlying QwtCPointerData class.
-
-  \param xData pointer to x data
-  \param yData pointer to y data
-  \param size size of x and y
-
-  \sa QwtCPointerData::setData.
-*/
-void QwtPlotCurve::setRawData(const double *xData, const double *yData, int size)
-{
-    delete d_xy;
-    d_xy = new QwtCPointerData(xData, yData, size);
-    itemChanged();
-}
-
-/*!
-  \brief Assign a title to a curve
-  \param title new title
-*/
-void QwtPlotCurve::setTitle(const QString &title)
-{
-    setTitle(QwtText(title));
-}
-
-/*!
-  \brief Assign a title to a curve
-  \param title new title
-*/
-void QwtPlotCurve::setTitle(const QwtText &title)
-{
-    d_data->title = title;
-    itemChanged();
-}
-
-/*!
-    \brief Return the title.
-    \sa QwtPlotCurve::setTitle
-*/
-const QwtText &QwtPlotCurve::title() const 
-{ 
-    return d_data->title; 
-}
-
-/*!
-  Returns the bounding rectangle of the curve data. If there is
-  no bounding rect, like for empty data the rectangle is invalid:
-  QwtDoubleRect.isValid() == false
-*/
-
-QwtDoubleRect QwtPlotCurve::boundingRect() const
-{
-    if ( d_xy == NULL )
-        return QwtDoubleRect(1.0, 1.0, -2.0, -2.0); // invalid
-
-    return d_xy->boundingRect();
-}
-
-
-/*!
-  \brief Checks if a range of indices is valid and corrects it if necessary
-  \param i1 Index 1
-  \param i2 Index 2
-*/
-int QwtPlotCurve::verifyRange(int &i1, int &i2) const
-{
-    int size = dataSize();
-
-    if (size < 1) return 0;
-
-    i1 = qwtLim(i1, 0, size-1);
-    i2 = qwtLim(i2, 0, size-1);
-
-    if ( i1 > i2 )
-        qSwap(i1, i2);
-
-    return (i2 - i1 + 1);
-}
-
-void QwtPlotCurve::draw(QPainter *painter,
-    const QwtScaleMap &xMap, const QwtScaleMap &yMap,
-    const QRect &) const
-{
-    draw(painter, xMap, yMap, 0, -1);
-}
-
-/*!
-  \brief Draw a set of points of a curve.
-
-  When observing an measurement while it is running, new points have to be
-  added to an existing curve. drawCurve can be used to display them avoiding
-  a complete redraw of the canvas.
-
-  Setting plot()->canvas()->setAttribute(Qt::WA_PaintOutsidePaintEvent, true);
-  will result in faster painting, if the paint engine of the canvas widget
-  supports this feature. 
-
-  \param from Index of the first point to be painted
-  \param to Index of the last point to be painted. If to < 0 the
-         curve will be painted to its last point.
-
-  \sa QwtCurve::draw
-*/
-void QwtPlotCurve::draw(int from, int to) const
-{
-    if ( !plot() )
-        return;
-
-    QwtPlotCanvas *canvas = plot()->canvas();
-
-    bool directPaint = true;
-
-#if QT_VERSION >= 0x040000
-    if ( !canvas->testAttribute(Qt::WA_WState_InPaintEvent) &&
-        !canvas->testAttribute(Qt::WA_PaintOutsidePaintEvent) )
-    {
-        /*
-          We save curve and range in helper and call repaint.
-          The helper filters the Paint event, to repeat
-          the QwtPlotCurve::draw, but now from inside the paint
-          event.
-         */
-
-        QwtPlotCurvePaintHelper helper(this, from, to);
-        canvas->installEventFilter(&helper);
-        canvas->repaint();
-
-        return;
-    }
-#endif
-
-    const QwtScaleMap xMap = plot()->canvasMap(xAxis());
-    const QwtScaleMap yMap = plot()->canvasMap(yAxis());
-
-    if ( canvas->testPaintAttribute(QwtPlotCanvas::PaintCached) &&
-        canvas->paintCache() && !canvas->paintCache()->isNull() )
-    {
-        QPainter cachePainter((QPixmap *)canvas->paintCache());
-        cachePainter.translate(-canvas->contentsRect().x(),
-            -canvas->contentsRect().y());
-
-        draw(&cachePainter, xMap, yMap, from, to);
-    }
-
-    if ( directPaint )
-    {
-        QPainter painter(canvas);
-
-        painter.setClipping(true);
-        painter.setClipRect(canvas->contentsRect());
-
-        draw(&painter, xMap, yMap, from, to);
-
-        return;
-    }
-
-#if QT_VERSION >= 0x040000
-    if ( canvas->testPaintAttribute(QwtPlotCanvas::PaintCached) &&
-        canvas->paintCache() )
-    {
-        /*
-          The cache is up to date. We flush it via repaint to the
-          canvas. This works flicker free but is much ( > 10x )
-          slower than direct painting.
-         */
-
-        const bool noBG = canvas->testAttribute(Qt::WA_NoBackground);
-        if ( !noBG )
-            canvas->setAttribute(Qt::WA_NoBackground, true);
-
-        canvas->repaint(canvas->contentsRect());
-
-        if ( !noBG )
-            canvas->setAttribute(Qt::WA_NoBackground, false);
-
-        return;
-    }
-#endif
-
-    // Ok, we give up 
-    canvas->repaint(canvas->contentsRect());
-}
-
-/*!
-  \brief Draw an interval of the curve
-  \param painter Painter
-  \param xMap maps x-values into pixel coordinates.
-  \param yMap maps y-values into pixel coordinates.
-  \param from index of the first point to be painted
-  \param to index of the last point to be painted. If to < 0 the 
-         curve will be painted to its last point.
-
-  \sa QwtPlotCurve::drawCurve, QwtPlotCurve::drawDots,
-      QwtPlotCurve::drawLines, QwtPlotCurve::drawSpline,
-      QwtPlotCurve::drawSteps, QwtPlotCurve::drawSticks
-*/
-void QwtPlotCurve::draw(QPainter *painter,
-    const QwtScaleMap &xMap, const QwtScaleMap &yMap, 
-    int from, int to) const
-{
-    if ( !painter || dataSize() <= 0 )
-        return;
-
-    if (to < 0)
-        to = dataSize() - 1;
-
-    if ( verifyRange(from, to) > 0 )
-    {
-        painter->save();
-        painter->setPen(d_data->pen);
-
-        /*
-          Qt 4.0.0 is slow when drawing lines, but it´s even 
-          slower when the painter has a brush. So we don't
-          set the brush before we need it.
-         */
-
-        drawCurve(painter, d_data->style, xMap, yMap, from, to);
-        painter->restore();
-
-        if (d_data->sym.style() != QwtSymbol::None)
-        {
-            painter->save();
-            drawSymbols(painter, d_data->sym, xMap, yMap, from, to);
-            painter->restore();
-        }
-    }
-}
-
-/*!
-  \brief Draw the line part (without symbols) of a curve interval. 
-  \param painter Painter
-  \param style curve style, see QwtPlotCurve::CurveStyle
-  \param xMap x map
-  \param yMap y map
-  \param from index of the first point to be painted
-  \param to index of the last point to be painted
-  \sa QwtPlotCurve::draw, QwtPlotCurve::drawDots, QwtPlotCurve::drawLines,
-      QwtPlotCurve::drawSpline, QwtPlotCurve::drawSteps, QwtPlotCurve::drawSticks
-*/
-
-void QwtPlotCurve::drawCurve(QPainter *painter, int style,
-    const QwtScaleMap &xMap, const QwtScaleMap &yMap, 
-    int from, int to) const
-{
-    switch (style)
-    {
-        case Lines:
-            drawLines(painter, xMap, yMap, from, to);
-            break;
-        case Sticks:
-            drawSticks(painter, xMap, yMap, from, to);
-            break;
-        case Steps:
-            drawSteps(painter, xMap, yMap, from, to);
-            break;
-        case Spline:
-            if ( from > 0 || to < dataSize() - 1 )
-                drawLines(painter, xMap, yMap, from, to);
-            else
-                drawSpline(painter, xMap, yMap);
-            break;
-        case Dots:
-            drawDots(painter, xMap, yMap, from, to);
-            break;
-        case NoCurve:
-        default:
-            break;
-    }
-}
-
-/*!
-  \brief Draw lines
-  \param painter Painter
-  \param xMap x map
-  \param yMap y map
-  \param from index of the first point to be painted
-  \param to index of the last point to be painted
-  \sa QwtPlotCurve::draw, QwtPlotCurve::drawLines, QwtPlotCurve::drawDots, 
-      QwtPlotCurve::drawSpline, QwtPlotCurve::drawSteps, QwtPlotCurve::drawSticks
-*/
-void QwtPlotCurve::drawLines(QPainter *painter,
-    const QwtScaleMap &xMap, const QwtScaleMap &yMap, 
-    int from, int to) const
-{
-    const int size = to - from + 1;
-    if ( size <= 0 )
-        return;
-
-    QwtPointArray polyline(size);
-
-    if ( d_data->paintAttributes & PaintFiltered )
-    {
-        QPoint pp( xMap.transform(x(from)), yMap.transform(y(from)) );
-        polyline.setPoint(0, pp);
-
-        int count = 1;
-        for (int i = from + 1; i <= to; i++)
-        {
-            const QPoint pi(xMap.transform(x(i)), yMap.transform(y(i)));
-            if ( pi != pp )
-            {
-                polyline.setPoint(count, pi);
-                count++;
-
-                pp = pi;
-            }
-        }
-        if ( count != size )
-            polyline.resize(count);
-    }
-    else
-    {
-        for (int i = from; i <= to; i++)
-        {
-            int xi = xMap.transform(x(i));
-            int yi = yMap.transform(y(i));
-
-            polyline.setPoint(i - from, xi, yi);
-        }
-    }
-
-    if ( d_data->paintAttributes & ClipPolygons )
-    {
-        QwtRect r = painter->window();
-        polyline = r.clip(polyline);
-    }
-
-    QwtPainter::drawPolyline(painter, polyline);
-
-    if ( d_data->brush.style() != Qt::NoBrush )
-        fillCurve(painter, xMap, yMap, polyline);
-}
-
-/*!
-  \brief Draw sticks
-  \param painter Painter
-  \param xMap x map
-  \param yMap y map
-  \param from index of the first point to be painted
-  \param to index of the last point to be painted
-  \sa QwtPlotCurve::draw, QwtPlotCurve::drawCurve, QwtPlotCurve::drawDots, 
-      QwtPlotCurve::drawLines, QwtPlotCurve::drawSpline, QwtPlotCurve::drawSteps
-*/
-void QwtPlotCurve::drawSticks(QPainter *painter,
-    const QwtScaleMap &xMap, const QwtScaleMap &yMap, 
-    int from, int to) const
-{
-    int x0 = xMap.transform(d_data->reference);
-    int y0 = yMap.transform(d_data->reference);
-
-    for (int i = from; i <= to; i++)
-    {
-        const int xi = xMap.transform(x(i));
-        const int yi = yMap.transform(y(i));
-
-        if (d_data->attributes & Xfy)
-            QwtPainter::drawLine(painter, x0, yi, xi, yi);
-        else
-            QwtPainter::drawLine(painter, xi, y0, xi, yi);
-    }
-}
-
-/*!
-  \brief Draw dots
-  \param painter Painter
-  \param xMap x map
-  \param yMap y map
-  \param from index of the first point to be painted
-  \param to index of the last point to be painted
-  \sa QwtPlotCurve::drawPolyline, QwtPlotCurve::drawLine, 
-      QwtPlotCurve::drawLines, QwtPlotCurve::drawSpline, QwtPlotCurve::drawSteps
-      QwtPlotCurve::drawPolyline, QwtPlotCurve::drawPolygon
-*/
-void QwtPlotCurve::drawDots(QPainter *painter,
-    const QwtScaleMap &xMap, const QwtScaleMap &yMap, 
-    int from, int to) const
-{
-    const QRect window = painter->window();
-    if ( window.isEmpty() )
-        return;
-
-    const bool doFill = d_data->brush.style() != Qt::NoBrush;
-
-    QwtPointArray polyline;
-    if ( doFill )
-        polyline.resize(to - from + 1);
-
-    if ( to > from && d_data->paintAttributes & PaintFiltered )
-    {
-        int count = 0;
-
-        if ( doFill )   
-        {
-            QPoint pp( xMap.transform(x(from)), yMap.transform(y(from)) );
-            polyline.setPoint(0, pp);
-
-            int count = 1;
-            for (int i = from + 1; i <= to; i++)
-            {
-                const QPoint pi(xMap.transform(x(i)), yMap.transform(y(i)));
-                if ( pi != pp )
-                {
-                    polyline.setPoint(count, pi);
-                    count++;
-
-                    pp = pi;
-                }
-            }
-        }
-        else
-        {
-            // if we don't need to fill, we can sort out
-            // duplicates independent from the order
-
-            PrivateData::PixelMatrix pixelMatrix(window);
-
-            for (int i = from; i <= to; i++)
-            {
-                const QPoint p( xMap.transform(x(i)),
-                    yMap.transform(y(i)) );
-
-                if ( pixelMatrix.testPixel(p) )
-                {
-                    polyline[count] = p;
-                    count++;
-                }
-            }
-        }
-        if ( int(polyline.size()) != count )
-            polyline.resize(count);
-    }
-    else
-    {
-        for (int i = from; i <= to; i++)
-        {
-            const int xi = xMap.transform(x(i));
-            const int yi = yMap.transform(y(i));
-            QwtPainter::drawPoint(painter, xi, yi);
-
-            if ( doFill )
-                polyline.setPoint(i - from, xi, yi);
-        }
-    }
-
-    if ( d_data->paintAttributes & ClipPolygons )
-    {
-        const QwtRect r = painter->window();
-        polyline = r.clip(polyline);
-    }
-
-    if ( doFill )
-        fillCurve(painter, xMap, yMap, polyline);
-}
-
-/*!
-  \brief Draw step function
-  \param painter Painter
-  \param xMap x map
-  \param yMap y map
-  \param from index of the first point to be painted
-  \param to index of the last point to be painted
-  \sa QwtPlotCurve::draw, QwtPlotCurve::drawCurve, QwtPlotCurve::drawDots, 
-      QwtPlotCurve::drawLines, QwtPlotCurve::drawSpline, QwtPlotCurve::drawSticks
-*/
-void QwtPlotCurve::drawSteps(QPainter *painter,
-    const QwtScaleMap &xMap, const QwtScaleMap &yMap, 
-    int from, int to) const
-{
-    QwtPointArray polyline(2 * (to - from) + 1);
-
-    bool inverted = d_data->attributes & Yfx;
-    if ( d_data->attributes & Inverted )
-        inverted = !inverted;
-
-    int i,ip;
-    for (i = from, ip = 0; i <= to; i++, ip += 2)
-    {
-        const int xi = xMap.transform(x(i));
-        const int yi = yMap.transform(y(i));
-
-        if ( ip > 0 )
-        {
-            if (inverted)
-                polyline.setPoint(ip - 1, polyline[ip-2].x(), yi);
-            else
-                polyline.setPoint(ip - 1, xi, polyline[ip-2].y());
-        }
-
-        polyline.setPoint(ip, xi, yi);
-    }
-
-    if ( d_data->paintAttributes & ClipPolygons )
-    {
-        const QwtRect r = painter->window();
-        polyline = r.clip(polyline);
-    }
-
-    QwtPainter::drawPolyline(painter, polyline);
-
-    if ( d_data->brush.style() != Qt::NoBrush )
-        fillCurve(painter, xMap, yMap, polyline);
-}
-
-/*!
-  \brief Draw a spline
-  \param painter Painter
-  \param xMap x map
-  \param yMap y map
-  \sa QwtPlotCurve::draw, QwtPlotCurve::drawCurve, QwtPlotCurve::drawDots,
-      QwtPlotCurve::drawLines, QwtPlotCurve::drawSteps, QwtPlotCurve::drawSticks
-*/
-void QwtPlotCurve::drawSpline(QPainter *painter,
-    const QwtScaleMap &xMap, const QwtScaleMap &yMap) const
-{
-    int i;
-
-    const int size = dataSize();
-    double *txval = new double[size];
-    double *tyval = new double[size];
-
-    //
-    // Transform x and y values to window coordinates
-    // to avoid a distinction between linear and
-    // logarithmic scales.
-    //
-    for (i=0;i<size;i++)
-    {
-        txval[i] = xMap.xTransform(x(i));
-        tyval[i] = yMap.xTransform(y(i));
-    }
-
-    int stype;
-    if (! (d_data->attributes & (Yfx|Xfy|Parametric)))
-    {
-        if (qwtChkMono(txval, size))
-        {
-            stype = Yfx;
-        }
-        else if(qwtChkMono(tyval, size))
-        {
-            stype = Xfy;
-        }
-        else
-        {
-            stype = Parametric;
-            if ( (d_data->attributes & Periodic) ||
-                ( (x(0) == x(size-1))
-                && (y(0) == y(size-1))))
-            {
-                stype |= Periodic;
-            }
-        }
-    }
-    else
-    {
-        stype = d_data->attributes;
-    }
-
-    bool ok = false;
-    QwtPointArray polyline(d_data->splineSize);
-
-    if (stype & Parametric)
-    {
-        //
-        // setup parameter vector
-        //
-        double *param = new double[size];
-        param[0] = 0.0;
-        for (i=1; i<size; i++)
-        {
-            const double delta = sqrt( qwtSqr(txval[i] - txval[i-1])
-                          + qwtSqr( tyval[i] - tyval[i-1]));
-            param[i] = param[i-1] + qwtMax(delta, 1.0);
-        }
-
-        //
-        // setup splines
-        QwtSpline spx, spy;
-        ok = spx.recalc(param, txval, size, stype & Periodic);
-        if (ok)
-            ok = spy.recalc(param, tyval, size, stype & Periodic);
-
-        if ( ok )
-        {
-            // fill point array
-            const double delta = 
-                param[size - 1] / double(d_data->splineSize-1);
-            for (i = 0; i < d_data->splineSize; i++)
-            {
-                const double dtmp = delta * double(i);
-                polyline.setPoint(i, qRound(spx.value(dtmp)), 
-                    qRound(spy.value(dtmp)) );
-            }
-        }
-        delete[] param;
-    }
-    else if (stype & Xfy)
-    {
-        if (tyval[size-1] < tyval[0])
-        {
-            qwtTwistArray(txval, size);
-            qwtTwistArray(tyval, size);
-        }
-
-        // 1. Calculate spline coefficients
-        QwtSpline spx;
-        ok = spx.recalc(tyval, txval, size, stype & Periodic);
-        if ( ok )
-        {
-            const double ymin = qwtGetMin(tyval, size);
-            const double ymax = qwtGetMax(tyval, size);
-            const double delta = (ymax - ymin) / double(d_data->splineSize - 1);
-
-            for (i = 0; i < d_data->splineSize; i++)
-            {
-                const double dtmp = ymin + delta * double(i);
-                polyline.setPoint(i, 
-                    qRound(spx.value(dtmp)), qRound(dtmp + 0.5));
-            }
-        }
-    }
-    else
-    {
-        if (txval[size-1] < txval[0])
-        {
-            qwtTwistArray(tyval, size);
-            qwtTwistArray(txval, size);
-        }
-
-        // 1. Calculate spline coefficients
-        QwtSpline spy;
-        ok = spy.recalc(txval, tyval, size, stype & Periodic);
-        if ( ok )
-        {
-            const double xmin = qwtGetMin(txval, size);
-            const double xmax = qwtGetMax(txval, size);
-            const double delta = (xmax - xmin) / double(d_data->splineSize - 1);
-
-            for (i = 0; i < d_data->splineSize; i++)
-            {
-                double dtmp = xmin + delta * double(i);
-                polyline.setPoint(i, 
-                    qRound(dtmp), qRound(spy.value(dtmp)));
-            }
-        }
-    }
-
-    delete[] txval;
-    delete[] tyval;
-
-    if ( ok )
-    {
-        if ( d_data->paintAttributes & ClipPolygons )
-        {
-            const QwtRect r = painter->window();
-            polyline = r.clip(polyline);
-        }
-
-        QwtPainter::drawPolyline(painter, polyline);
-
-        if ( d_data->brush.style() != Qt::NoBrush )
-            fillCurve(painter, xMap, yMap, polyline);
-    }
-    else
-        drawLines(painter, xMap, yMap, 0, size - 1);
-}
-
-/*!
-  \brief Specify an attribute for the drawing style  
-
-  The attributes can be used to modify the drawing style.
-  The following attributes are defined:<dl>
-  <dt>QwtPlotCurve::Auto</dt>
-  <dd>The default setting. For QwtPlotCurve::spline,
-      this means that the type of the spline is
-      determined automatically, depending on the data.
-      For all other styles, this means that y is
-      regarded as a function of x.</dd>
-  <dt>QwtPlotCurve::Yfx</dt>
-  <dd>Draws y as a function of x (the default). The
-      baseline is interpreted as a horizontal line
-      with y = baseline().</dd>
-  <dt>QwtPlotCurve::Xfy</dt>
-  <dd>Draws x as a function of y. The baseline is
-      interpreted as a vertical line with x = baseline().</dd>
-  <dt>QwtPlotCurve::Parametric</dt>
-  <dd>For QwtPlotCurve::Spline only. Draws a parametric spline.</dd>
-  <dt>QwtPlotCurve::Periodic</dt>
-  <dd>For QwtPlotCurve::Spline only. Draws a periodic spline.</dd>
-  <dt>QwtPlotCurve::Inverted</dt>
-  <dd>For QwtPlotCurve::Steps only. Draws a step function
-      from the right to the left.</dd></dl>
-
-  \param attribute Curve attribute
-  \param on On/Off
-  /sa QwtPlotCurve::testCurveAttribute()
-*/
-void QwtPlotCurve::setCurveAttribute(CurveAttribute attribute, bool on)
-{
-    if ( bool(d_data->attributes & attribute) == on )
-        return;
-
-    if ( on )
-        d_data->attributes |= attribute;
-    else
-        d_data->attributes &= ~attribute;
-
-    itemChanged();
-}
-
-/*!
-    \brief Return the current curve attributes
-    \sa QwtPlotCurve::setCurveAttribute
-*/
-bool QwtPlotCurve::testCurveAttribute(CurveAttribute attribute) const 
-{ 
-    return d_data->attributes & attribute;
-}
-
-/*!
-  \brief Change the number of interpolated points
-  \param s new size
-  \warning The default is 250 points.
-*/
-void QwtPlotCurve::setSplineSize(int s)
-{
-    d_data->splineSize = qwtMax(s, 10);
-    itemChanged();
-}
-
-/*!
-    \fn int QwtPlotCurve::splineSize() const
-    \brief Return the spline size
-    \sa QwtPlotCurve::setSplineSize
-*/
-
-int QwtPlotCurve::splineSize() const 
-{ 
-    return d_data->splineSize; 
-}
-
-/*! 
-  Fill the area between the polygon and the baseline with 
-  the curve brush
-
-  \param painter Painter
-  \param xMap x map
-  \param yMap y map
-  \param pa Polygon
-
-  \sa QwtPlotCurve::setBrush()
-*/
-
-void QwtPlotCurve::fillCurve(QPainter *painter,
-    const QwtScaleMap &xMap, const QwtScaleMap &yMap,
-    QwtPointArray &pa) const
-{
-    if ( d_data->brush.style() == Qt::NoBrush )
-        return;
-
-    closePolyline(xMap, yMap, pa);
-    if ( pa.count() <= 2 ) // a line can't be filled
-        return;
-
-    QBrush b = d_data->brush;
-    if ( !b.color().isValid() )
-        b.setColor(d_data->pen.color());
-
-    painter->save();
-
-    painter->setPen(QPen(Qt::NoPen));
-    painter->setBrush(b);
-
-    QwtPainter::drawPolygon(painter, pa);
-
-    painter->restore();
-}
-
-/*!
-  \brief Complete a polygon to be a closed polygon 
-         including the area between the original polygon
-         and the baseline.
-  \param xMap X map
-  \param yMap Y map
-  \param pa Polygon to be completed
-*/
-
-void QwtPlotCurve::closePolyline(
-    const QwtScaleMap &xMap, const QwtScaleMap &yMap,
-    QwtPointArray &pa) const
-{
-    const int sz = pa.size();
-    if ( sz < 2 )
-        return;
-
-    pa.resize(sz + 2);
-
-    if ( d_data->attributes & QwtPlotCurve::Xfy )
-    {
-        pa.setPoint(sz,
-            xMap.transform(d_data->reference), pa.point(sz - 1).y());
-        pa.setPoint(sz + 1,
-            xMap.transform(d_data->reference), pa.point(0).y());
-    }
-    else
-    {
-        pa.setPoint(sz,
-            pa.point(sz - 1).x(), yMap.transform(d_data->reference));
-        pa.setPoint(pa.size() - 1,
-            pa.point(0).x(), yMap.transform(d_data->reference));
-    }
-}
-
-/*!
-  \brief Draw symbols
-  \param painter Painter
-  \param symbol Curve symbol
-  \param xMap x map
-  \param yMap y map
-  \param from index of the first point to be painted
-  \param to index of the last point to be painted
-*/
-void QwtPlotCurve::drawSymbols(QPainter *painter, const QwtSymbol &symbol,
-    const QwtScaleMap &xMap, const QwtScaleMap &yMap, 
-    int from, int to) const
-{
-    painter->setBrush(symbol.brush());
-    painter->setPen(symbol.pen());
-
-    QRect rect;
-    rect.setSize(QwtPainter::metricsMap().screenToLayout(symbol.size()));
-
-    if ( to > from && d_data->paintAttributes & PaintFiltered )
-    {
-        const QRect window = painter->window();
-        if ( window.isEmpty() )
-            return;
-
-        PrivateData::PixelMatrix pixelMatrix(window);
-
-        for (int i = from; i <= to; i++)
-        {
-            const QPoint pi( xMap.transform(x(i)),
-                yMap.transform(y(i)) );
-
-            if ( pixelMatrix.testPixel(pi) )
-            {
-                rect.moveCenter(pi);
-                symbol.draw(painter, rect);
-            }
-        }
-    }
-    else
-    {
-        for (int i = from; i <= to; i++)
-        {
-            const int xi = xMap.transform(x(i));
-            const int yi = yMap.transform(y(i));
-
-            rect.moveCenter(QPoint(xi, yi));
-            symbol.draw(painter, rect);
-        }
-    }
-}
-
-/*!
-  \brief Set the value of the baseline
-
-  The baseline is needed for filling the curve with a brush or
-  the QwtPlotCurve::Sticks drawing style. 
-  The default value is 0.0. The interpretation
-  of the baseline depends on the style options. With QwtPlotCurve::Yfx,
-  the baseline is interpreted as a horizontal line at y = baseline(),
-  with QwtPlotCurve::Yfy, it is interpreted as a vertical line at
-  x = baseline().
-  \param reference baseline
-  \sa QwtPlotCurve::setBrush(), QwtPlotCurve::setStyle(), QwtPlotCurve::setCurveAttribute()
-*/
-void QwtPlotCurve::setBaseline(double reference)
-{
-    if ( d_data->reference != reference )
-    {
-        d_data->reference = reference;
-        itemChanged();
-    }
-}
-
-/*!
-    \brief Return the value of the baseline
-    \sa QwtPlotCurve::setBaseline
-*/
-double QwtPlotCurve::baseline() const 
-{ 
-    return d_data->reference; 
-}
-
-/*!
-  Return the size of the data arrays
-*/
-int QwtPlotCurve::dataSize() const
-{
-    return d_xy->size();
-}
-
-int QwtPlotCurve::closestPoint(const QPoint &pos, double *dist) const
-{
-    if ( plot() == NULL || dataSize() <= 0 )
-        return -1;
-
-    const QwtScaleMap xMap = plot()->canvasMap(xAxis());
-    const QwtScaleMap yMap = plot()->canvasMap(yAxis());
-
-    int index = -1;
-    double dmin = 1.0e10;
-
-    for (int i=0; i < dataSize(); i++)
-    {
-        const double cx = xMap.xTransform(x(i)) - pos.x();
-        const double cy = yMap.xTransform(y(i)) - pos.y();
-
-        const double f = qwtSqr(cx) + qwtSqr(cy);
-        if (f < dmin)
-        {
-            index = i;
-            dmin = f;
-        }
-    }
-    if ( dist )
-        *dist = sqrt(dmin);
-
-    return index;
-}
-
-void QwtPlotCurve::updateLegend(QwtLegend *legend) const
-{
-    if ( !legend )
-        return;
-
-    QwtPlotItem::updateLegend(legend);
-
-    QWidget *widget = legend->find(this);
-    if ( !widget || !widget->inherits("QwtLegendItem") )
-        return;
-
-    QwtLegendItem *legendItem = (QwtLegendItem *)widget;
-
-#if QT_VERSION < 0x040000
-    const bool doUpdate = legendItem->isUpdatesEnabled();
-#else
-    const bool doUpdate = legendItem->updatesEnabled();
-#endif
-    legendItem->setUpdatesEnabled(false);
-
-    const int policy = legend->displayPolicy();
-
-    if (policy == QwtLegend::Fixed)
-    {
-        int mode = legend->identifierMode();
-
-        if (mode & QwtLegendItem::ShowLine)
-            legendItem->setCurvePen(pen());
-
-        if (mode & QwtLegendItem::ShowSymbol)
-            legendItem->setSymbol(symbol());
-
-        if (mode & QwtLegendItem::ShowText)
-            legendItem->setText(title());
-        else
-            legendItem->setText(QwtText());
-
-        legendItem->setIdentifierMode(mode);
-    }
-    else if (policy == QwtLegend::Auto)
-    {
-        int mode = 0;
-
-        if (QwtPlotCurve::NoCurve != style())
-        {
-            legendItem->setCurvePen(pen());
-            mode |= QwtLegendItem::ShowLine;
-        }
-        if (QwtSymbol::None != symbol().style())
-        {
-            legendItem->setSymbol(symbol());
-            mode |= QwtLegendItem::ShowSymbol;
-        }
-        if ( !title().isEmpty() )
-        {
-            legendItem->setText(title());
-            mode |= QwtLegendItem::ShowText;
-        }
-        else
-        {
-            legendItem->setText(QwtText());
-        }
-        legendItem->setIdentifierMode(mode);
-    }
-
-    legendItem->setUpdatesEnabled(doUpdate);
-    legendItem->update();
-}
diff --git a/src/qwt/qwt_plot_dict.cpp b/src/qwt/qwt_plot_dict.cpp
deleted file mode 100644
index 298ea8e..0000000
--- a/src/qwt/qwt_plot_dict.cpp
+++ /dev/null
@@ -1,185 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-// vim: expandtab
-
-#include "qwt_plot_dict.h"
-
-class QwtPlotDict::PrivateData
-{
-public:
-
-#if QT_VERSION < 0x040000
-    class ItemList: public QValueList<QwtPlotItem *>
-#else
-    class ItemList: public QList<QwtPlotItem *>
-#endif
-    {
-    public:
-        void insertItem(QwtPlotItem *item)
-        {
-            if ( item == NULL )
-                return;
-
-            // Unfortunately there is no inSort operation
-            // for lists in Qt4. The implementation below
-            // is slow, but there shouldn't be many plot items.
-
-#ifdef __GNUC__
-#warning binary search missing
-#endif
-
-#if QT_VERSION < 0x040000
-            QValueListIterator<QwtPlotItem *> it;
-#else
-            QList<QwtPlotItem *>::Iterator it;
-#endif
-            for ( it = begin(); it != end(); ++it )
-            {
-                if ( *it == item )
-                    return;
-
-                if ( (*it)->z() > item->z() )
-                {
-                    insert(it, item);
-                    return;
-                }
-            }
-            append(item);
-        }
-
-        void removeItem(QwtPlotItem *item)
-        {
-            if ( item == NULL )
-                return;
-
-            int i = 0;
-
-#if QT_VERSION < 0x040000
-            QValueListIterator<QwtPlotItem *> it;
-#else
-            QList<QwtPlotItem *>::Iterator it;
-#endif
-            for ( it = begin(); it != end(); ++it )
-            {
-                if ( item == *it )
-                {
-#if QT_VERSION < 0x040000
-                    remove(it);
-#else
-                    removeAt(i);
-#endif
-                    return;
-                }
-                i++;
-            }
-        }
-    };
-
-    ItemList itemList;
-    bool autoDelete;
-};
-
-/*! 
-   Constructor 
-
-   Auto deletion is enabled.
-   \sa setAutoDelete, attachItem
-*/
-QwtPlotDict::QwtPlotDict()
-{
-    d_data = new QwtPlotDict::PrivateData;
-    d_data->autoDelete = true;
-}
-
-/*! 
-   Destructor
-
-   If autoDelete is on, all attached items will be deleted
-   \sa setAutoDelete, autoDelete, attachItem
-*/
-QwtPlotDict::~QwtPlotDict()
-{
-    detachItems(QwtPlotItem::Rtti_PlotItem, d_data->autoDelete);
-    delete d_data;
-}
-
-/*!
-   En/Disable Auto deletion
-
-   If Auto deletion is on all attached plot items will be deleted
-   in the destructor of QwtPlotDict. The default value is on.
-
-   \sa autoDelete, attachItem
-*/
-void QwtPlotDict::setAutoDelete(bool autoDelete)
-{
-    d_data->autoDelete = autoDelete;
-}
-
-/*!
-   \return true if auto deletion is enabled
-   \sa setAutoDelete, attachItem
-*/
-bool QwtPlotDict::autoDelete() const
-{
-    return d_data->autoDelete;
-}
-
-/*!
-   Attach/Detach a plot item
-
-   Attached items will be deleted in the destructor,
-   if auto deletion is enabled (default). Manually detached
-   items are not deleted.
-
-   \param item Plot item to attach/detach
-   \ on If true attach, else detach the item
-
-   \sa setAutoDelete, ~QwtPlotDict
-*/
-void QwtPlotDict::attachItem(QwtPlotItem *item, bool on)
-{
-    if ( on )
-        d_data->itemList.insertItem(item);
-    else
-        d_data->itemList.removeItem(item);
-}
-
-/*!
-   Detach items from the dictionary
-
-   \param rtti In case of QwtPlotItem::Rtti_PlotItem detach all items 
-               otherwise only those items of the type rtti.
-   \param autoDelete If true, delete all detached items
-*/
-void QwtPlotDict::detachItems(int rtti, bool autoDelete)
-{
-    PrivateData::ItemList list = d_data->itemList;
-    QwtPlotItemIterator it = list.begin();
-    while ( it != list.end() )
-    {
-        QwtPlotItem *item = *it;
-
-        ++it; // increment before removing item from the list
-
-        if ( rtti == QwtPlotItem::Rtti_PlotItem || item->rtti() == rtti )
-        {
-            item->attach(NULL);
-            if ( autoDelete )
-                delete item;
-        }
-    }
-}
-
-//! \return List of all attached plot items
-const QwtPlotItemList &QwtPlotDict::itemList() const
-{
-    return d_data->itemList;
-}
diff --git a/src/qwt/qwt_plot_grid.cpp b/src/qwt/qwt_plot_grid.cpp
deleted file mode 100644
index dc26242..0000000
--- a/src/qwt/qwt_plot_grid.cpp
+++ /dev/null
@@ -1,349 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- * 
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-#include <qpainter.h>
-#include <qpen.h>
-#include "qwt_painter.h"
-#include "qwt_scale_map.h"
-#include "qwt_scale_div.h"
-#include "qwt_plot_grid.h"
-
-class QwtPlotGrid::PrivateData
-{
-public:
-    PrivateData():
-        xEnabled(true),
-        yEnabled(true),
-        xMinEnabled(false),
-        yMinEnabled(false)
-    {
-    }
-
-    bool xEnabled;
-    bool yEnabled;
-    bool xMinEnabled;
-    bool yMinEnabled;
-
-    QwtScaleDiv sdx;
-    QwtScaleDiv sdy;
-
-    QPen majPen;
-    QPen minPen;
-};
-
-//! Enables major grid, disables minor grid
-QwtPlotGrid::QwtPlotGrid()
-{
-    d_data = new PrivateData;
-    setZ(10.0);
-}
-
-//! dtor
-QwtPlotGrid::~QwtPlotGrid()
-{
-    delete d_data;
-}
-
-int QwtPlotGrid::rtti() const
-{
-    return QwtPlotItem::Rtti_PlotGrid;
-}
-
-/*!
-  \brief Enable or disable vertical gridlines
-  \param tf Enable (true) or disable
-
-  \sa Minor gridlines can be enabled or disabled with
-      QwtPlotGrid::enableXMin()
-*/
-void QwtPlotGrid::enableX(bool tf)
-{
-    if ( d_data->xEnabled != tf )
-    {
-        d_data->xEnabled = tf;
-        gridChanged();
-    }
-}
-
-/*!
-  \brief Enable or disable horizontal gridlines
-  \param tf Enable (true) or disable
-  \sa Minor gridlines can be enabled or disabled with QwtPlotGrid::enableYMin()
-*/
-void QwtPlotGrid::enableY(bool tf)
-{
-    if ( d_data->yEnabled != tf )
-    {
-        d_data->yEnabled = tf;  
-        gridChanged();
-    }
-}
-
-/*!
-  \brief Enable or disable  minor vertical gridlines.
-  \param tf Enable (true) or disable
-  \sa QwtPlotGrid::enableX()
-*/
-void QwtPlotGrid::enableXMin(bool tf)
-{
-    if ( d_data->xMinEnabled != tf )
-    {
-        d_data->xMinEnabled = tf;
-        gridChanged();
-    }
-}
-
-/*!
-  \brief Enable or disable minor horizontal gridlines
-  \param tf Enable (true) or disable
-  \sa QwtPlotGrid::enableY()
-*/
-void QwtPlotGrid::enableYMin(bool tf)
-{
-    if ( d_data->yMinEnabled != tf )
-    {
-        d_data->yMinEnabled = tf;
-        gridChanged();
-    }
-}
-
-/*!
-  \brief Assign an x axis scale division
-  \param sx Scale division
-  \warning QwtPlotGrid uses implicit sharing (see Qt Manual) for
-  the scale divisions.
-  \sa QwtScaleDiv
-*/
-void QwtPlotGrid::setXDiv(const QwtScaleDiv &sx)
-{
-    if ( d_data->sdx != sx )
-    {
-        d_data->sdx = sx;
-        gridChanged();
-    }
-}
-
-/*!
-  \brief Assign a y axis division
-  \param sy Scale division
-  \warning QwtPlotGrid uses implicit sharing (see Qt Manual) for
-  the scale divisions.
-  \sa QwtScaleDiv
-*/
-void QwtPlotGrid::setYDiv(const QwtScaleDiv &sy)
-{
-    if ( d_data->sdy != sy )
-    {
-        d_data->sdy = sy;    
-        gridChanged();
-    }
-}
-
-/*!
-  \brief Assign a pen for both major and minor gridlines
-  \param p Pen
-*/
-void QwtPlotGrid::setPen(const QPen &p)
-{
-    if ( d_data->majPen != p || d_data->minPen != p )
-    {
-        d_data->majPen = p;
-        d_data->minPen = p;
-        gridChanged();
-    }
-}
-
-/*!
-  \brief Assign a pen for the major gridlines
-  \param p Pen
-*/
-void QwtPlotGrid::setMajPen(const QPen &p)
-{
-    if ( d_data->majPen != p )
-    {
-        d_data->majPen = p;
-        gridChanged();
-    }
-}
-
-/*!
-  \brief Assign a pen for the minor gridlines
-  \param p Pen
-*/
-void QwtPlotGrid::setMinPen(const QPen &p)
-{
-    if ( d_data->minPen != p )
-    {
-        d_data->minPen = p;  
-        gridChanged();
-    }
-}
-
-/*!
-  \brief Draw the grid
-  
-  The grid is drawn into the bounding rectangle such that 
-  gridlines begin and end at the rectangle's borders. The X and Y
-  maps are used to map the scale divisions into the drawing region
-  screen.
-  \param painter  Painter
-  \param mx X axis map
-  \param my Y axis 
-  \param r Contents rect of the plot canvas
-*/
-void QwtPlotGrid::draw(QPainter *painter, 
-    const QwtScaleMap &mx, const QwtScaleMap &my,
-    const QRect &r) const
-{
-    //  draw minor gridlines
-    painter->setPen(d_data->minPen);
-    
-    if (d_data->xEnabled && d_data->xMinEnabled)
-    {
-        drawLines(painter, r, Qt::Vertical, mx, 
-            d_data->sdx.ticks(QwtScaleDiv::MinorTick));
-        drawLines(painter, r, Qt::Vertical, mx, 
-            d_data->sdx.ticks(QwtScaleDiv::MediumTick));
-    }
-
-    if (d_data->yEnabled && d_data->yMinEnabled)
-    {
-        drawLines(painter, r, Qt::Horizontal, my, 
-            d_data->sdy.ticks(QwtScaleDiv::MinorTick));
-        drawLines(painter, r, Qt::Horizontal, my, 
-            d_data->sdy.ticks(QwtScaleDiv::MediumTick));
-    }
-
-    //  draw major gridlines
-    painter->setPen(d_data->majPen);
-    
-    if (d_data->xEnabled)
-    {
-        drawLines(painter, r, Qt::Vertical, mx,
-            d_data->sdx.ticks(QwtScaleDiv::MajorTick));
-    }
-
-    if (d_data->yEnabled)
-    {
-        drawLines(painter, r, Qt::Horizontal, my,
-            d_data->sdy.ticks(QwtScaleDiv::MajorTick));
-    }
-}
-
-void QwtPlotGrid::drawLines(QPainter *painter, const QRect &rect,
-    Qt::Orientation orientation, const QwtScaleMap &map, 
-    const QwtTickList &values) const
-{
-    const int x1 = rect.left();
-    const int x2 = rect.right();
-    const int y1 = rect.top();
-    const int y2 = rect.bottom();
-
-    for (uint i = 0; i < (uint)values.count(); i++)
-    {
-        const int value = map.transform(values[i]);
-        if ( orientation == Qt::Horizontal )
-        {
-            if ((value >= y1) && (value <= y2))
-                QwtPainter::drawLine(painter, x1, value, x2, value);
-        }
-        else
-        {
-            if ((value >= x1) && (value <= x2))
-                QwtPainter::drawLine(painter, value, y1, value, y2);
-        }
-    }
-}
-
-/*!
-  \return the pen for the major gridlines
-  \sa QwtPlotGrid::setMinPen, QwtPlotGrid::setPen
-*/
-const QPen &QwtPlotGrid::majPen() const 
-{ 
-    return d_data->majPen; 
-}
-
-/*!
-  \return the pen for the minor gridlines
-  \sa QwtPlotGrid::setMinPen, QwtPlotGrid::setPen
-*/
-const QPen &QwtPlotGrid::minPen() const 
-{ 
-    return d_data->minPen; 
-}
-  
-/*!
-  \return true if vertical gridlines are enabled
-  \sa QwtPlotGrid::enableX
-*/
-bool QwtPlotGrid::xEnabled() const
-{ 
-    return d_data->xEnabled; 
-}
-
-/*!
-  \return true if minor vertical gridlines are enabled
-  \sa QwtPlotGrid::enableXMin
-*/
-bool QwtPlotGrid::xMinEnabled() const 
-{ 
-    return d_data->xMinEnabled; 
-}
-
-/*!
-  \return true if horizontal gridlines are enabled
-  \sa QwtPlotGrid::enableY
-*/
-bool QwtPlotGrid::yEnabled() const 
-{ 
-    return d_data->yEnabled; 
-}
-
-/*!
-  \return true if minor horizontal gridlines are enabled
-  \sa QwtPlotGrid::enableYMin
-*/
-bool QwtPlotGrid::yMinEnabled() const 
-{
-    return d_data->yMinEnabled; 
-}
-
-  
-/*! \return the scale division of the x axis */
-const QwtScaleDiv &QwtPlotGrid::xScaleDiv() const 
-{ 
-    return d_data->sdx; 
-}
-
-/*! \return the scale division of the y axis */
-const QwtScaleDiv &QwtPlotGrid::yScaleDiv() const 
-{ 
-    return d_data->sdy; 
-}
- 
-void QwtPlotGrid::updateScaleDiv(const QwtScaleDiv& xDiv,
-    const QwtScaleDiv& yDiv)
-{
-    setXDiv(xDiv);
-    setYDiv(yDiv);
-}
-
-/*!
-  \brief Notify a change of attributes
-
-  This virtual function is called when an attribute of the grid
-  has changed. It can be redefined by derived classes. The
-  default implementation does nothing.
-*/
-void QwtPlotGrid::gridChanged() 
-{
-    itemChanged();
-}
-
diff --git a/src/qwt/qwt_plot_item.cpp b/src/qwt/qwt_plot_item.cpp
deleted file mode 100644
index 6227782..0000000
--- a/src/qwt/qwt_plot_item.cpp
+++ /dev/null
@@ -1,295 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- * 
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-#include "qwt_plot.h"
-#include "qwt_legend.h"
-#include "qwt_legend_item.h"
-#include "qwt_plot_item.h"
-
-class QwtPlotItem::PrivateData
-{
-public:
-    PrivateData():
-        plot(NULL),
-        isVisible(true),
-        attributes(0),
-#if QT_VERSION >= 0x040000
-        renderHints(0),
-#endif
-        z(0.0),
-        xAxis(QwtPlot::xBottom),
-        yAxis(QwtPlot::yLeft)
-    {
-    }
-
-    mutable QwtPlot *plot;
-
-    bool isVisible;
-    int attributes;
-#if QT_VERSION >= 0x040000
-    int renderHints;
-#endif
-    double z;
-
-    int xAxis;
-    int yAxis;
-};
-
-//! Constructor
-QwtPlotItem::QwtPlotItem()
-{
-    d_data = new PrivateData;
-}
-
-//! Destroy the QwtPlotItem
-QwtPlotItem::~QwtPlotItem()
-{
-    attach(NULL);
-    delete d_data;
-}
-
-/*! 
-  Attach the item to a plot
-*/
-void QwtPlotItem::attach(QwtPlot *plot)
-{
-    if ( plot == d_data->plot )
-        return;
-
-    // remove the item from the previous plot
-
-    if ( d_data->plot )
-    {
-        if ( d_data->plot->legend() )
-        {
-            QWidget *legendItem = d_data->plot->legend()->find(this);
-            if ( legendItem )
-                delete legendItem; 
-        }
-
-        d_data->plot->attachItem(this, false);
-
-        if ( d_data->plot->autoReplot() )
-            d_data->plot->update();
-    }
-
-    d_data->plot = plot;
-
-    if ( d_data->plot )
-    {
-        // insert the item into the current plot
-
-        d_data->plot->attachItem(this, true);
-        itemChanged();
-    }
-}
-
-int QwtPlotItem::rtti() const
-{
-    return Rtti_PlotItem;
-}
-
-//! Return attached plot
-QwtPlot *QwtPlotItem::plot() const 
-{ 
-    return d_data->plot; 
-}
-
-double QwtPlotItem::z() const 
-{ 
-    return d_data->z; 
-}
-
-void QwtPlotItem::setZ(double z) 
-{ 
-    if ( d_data->z != z )
-    {
-        d_data->z = z; 
-        itemChanged();
-    }
-}
-
-void QwtPlotItem::setItemAttribute(ItemAttribute attribute, bool on)
-{
-    if ( bool(d_data->attributes & attribute) != on )
-    {
-        if ( on )
-            d_data->attributes |= attribute;
-        else
-            d_data->attributes &= ~attribute;
-
-        itemChanged();
-    }
-}
-
-bool QwtPlotItem::testItemAttribute(ItemAttribute attribute) const
-{
-    return d_data->attributes & attribute;
-}
-
-#if QT_VERSION >= 0x040000
-
-void QwtPlotItem::setRenderHint(RenderHint hint, bool on)
-{
-    if ( (d_data->renderHints & hint) != on )
-    {
-        if ( on )
-            d_data->renderHints |= hint;
-        else
-            d_data->renderHints &= ~hint;
-
-        itemChanged();
-    }
-}
-
-bool QwtPlotItem::testRenderHint(RenderHint hint) const
-{
-    return (d_data->renderHints & hint);
-}
-
-#endif
-
-void QwtPlotItem::show()
-{
-    setVisible(true);
-}
-
-void QwtPlotItem::hide()
-{
-    setVisible(false);
-}
-
-/*! 
-    \sa QwtPlotItem::setVisible
-*/
-void QwtPlotItem::setVisible(bool on) 
-{ 
-    if ( on != d_data->isVisible )
-    {
-        d_data->isVisible = on; 
-        itemChanged(); 
-    }
-}
-
-/*! 
-    \return true if enabled
-    \sa QwtPlotItem::setEnabled
-*/
-bool QwtPlotItem::isVisible() const
-{ 
-    return d_data->isVisible; 
-}
-
-//! Call QwtPlot::autoRefresh for the parent plot
-void QwtPlotItem::itemChanged()
-{
-    if ( d_data->plot )
-    {
-        if ( d_data->plot->legend() )
-            updateLegend(d_data->plot->legend());
-
-        d_data->plot->autoRefresh();
-    }
-}
-
-//!  Set x and y axis
-void QwtPlotItem::setAxis(int xAxis, int yAxis)
-{
-    if (xAxis == QwtPlot::xBottom || xAxis == QwtPlot::xTop )
-       d_data->xAxis = xAxis;
-
-    if (yAxis == QwtPlot::yLeft || yAxis == QwtPlot::yRight )
-       d_data->yAxis = yAxis;
-
-    itemChanged();    
-}
-
-//!  Set y axis
-void QwtPlotItem::setXAxis(int axis)
-{
-    if (axis == QwtPlot::xBottom || axis == QwtPlot::xTop )
-    {
-       d_data->xAxis = axis;
-       itemChanged();    
-    }
-}
-
-//!  Set y axis
-void QwtPlotItem::setYAxis(int axis)
-{
-    if (axis == QwtPlot::yLeft || axis == QwtPlot::yRight )
-    {
-       d_data->yAxis = axis;
-       itemChanged();   
-    }
-}
-
-//! Return xAxis
-int QwtPlotItem::xAxis() const 
-{ 
-    return d_data->xAxis; 
-}
-
-//! Return yAxis
-int QwtPlotItem::yAxis() const 
-{ 
-    return d_data->yAxis; 
-}
-
-QwtDoubleRect QwtPlotItem::boundingRect() const
-{
-    return QwtDoubleRect(1.0, 1.0, -2.0, -2.0); // invalid
-}
-
-QWidget *QwtPlotItem::legendItem() const
-{
-    return new QwtLegendItem;
-}
-
-void QwtPlotItem::updateLegend(QwtLegend *legend) const
-{
-    if ( !legend )
-        return;
-
-    QWidget *lgdItem = legend->find(this);
-    if ( testItemAttribute(QwtPlotItem::Legend) )
-    {
-        if ( lgdItem == NULL )
-        {
-            lgdItem = legendItem();
-            if ( lgdItem )
-            {
-                if ( lgdItem->inherits("QwtLegendItem") )
-                {
-                    QwtLegendItem *label = (QwtLegendItem *)lgdItem;
-                    label->setItemMode(legend->itemMode());
-
-                    if ( d_data->plot )
-                    {
-                        QObject::connect(label, SIGNAL(clicked()), 
-                            d_data->plot, SLOT(legendItemClicked()));
-                        QObject::connect(label, SIGNAL(checked(bool)), 
-                            d_data->plot, SLOT(legendItemChecked(bool)));
-                    }
-                }
-                legend->insert(this, lgdItem);
-            }
-        }
-    }
-    else
-    {
-        delete lgdItem;
-    }
-}
-
-void QwtPlotItem::updateScaleDiv(const QwtScaleDiv &,
-    const QwtScaleDiv &) 
-{ 
-}
-
diff --git a/src/qwt/qwt_plot_layout.cpp b/src/qwt/qwt_plot_layout.cpp
deleted file mode 100644
index 9cda383..0000000
--- a/src/qwt/qwt_plot_layout.cpp
+++ /dev/null
@@ -1,1165 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-// vim: expandtab
-
-#include <qscrollbar.h>
-#include "qwt_rect.h"
-#include "qwt_text.h"
-#include "qwt_text_label.h"
-#include "qwt_plot_canvas.h"
-#include "qwt_scale_widget.h"
-#include "qwt_legend.h"
-#include "qwt_plot_layout.h"
-
-class QwtPlotLayout::LayoutData
-{
-public:
-    void init(const QwtPlot *, const QRect &rect);
-
-    struct t_legendData
-    {
-        int frameWidth;
-        int vScrollBarWidth;
-        int hScrollBarHeight;
-        QSize hint;
-    } legend;
-    
-    struct t_titleData
-    {
-        QwtText text;
-        int frameWidth;
-    } title;
-
-    struct t_scaleData
-    {
-        bool isEnabled;
-        const QwtScaleWidget *scaleWidget;
-        QFont scaleFont;
-        int start;
-        int end;
-        int baseLineOffset;
-        int tickOffset; 
-        int dimWithoutTitle;
-    } scale[QwtPlot::axisCnt];
-
-    struct t_canvasData
-    {
-        int frameWidth;
-    } canvas;
-};
-
-/*
-  Extract all layout relevant data from the plot components
-*/
-
-void QwtPlotLayout::LayoutData::init(const QwtPlot *plot, const QRect &rect)
-{
-    // legend
-
-    if ( plot->legend() )
-    {
-        legend.frameWidth = plot->legend()->frameWidth();
-        legend.vScrollBarWidth = 
-            plot->legend()->verticalScrollBar()->sizeHint().width();
-        legend.hScrollBarHeight = 
-            plot->legend()->horizontalScrollBar()->sizeHint().height();
-
-        const QSize hint = plot->legend()->sizeHint();
-
-        int w = qwtMin(hint.width(), rect.width());
-        int h = plot->legend()->heightForWidth(w);
-        if ( h == 0 )
-            h = hint.height();
-
-        if ( h > rect.height() )
-            w += legend.vScrollBarWidth;
-
-        legend.hint = QSize(w, h);
-    }
-
-    // title 
-
-    title.frameWidth = 0;
-
-    if (plot->titleLabel() && !plot->titleLabel()->text().isEmpty())
-    {
-        const QwtTextLabel *label = plot->titleLabel();
-        title.text = label->text(); 
-        if ( !(title.text.paintAttributes() & QwtText::PaintUsingTextFont))
-            title.text.setFont(label->font());
-        
-        title.frameWidth = plot->titleLabel()->frameWidth();
-    }
-
-    // scales 
-
-    for (int axis = 0; axis < QwtPlot::axisCnt; axis++ )
-    {
-        if ( plot->axisEnabled(axis) )
-        {
-            const QwtScaleWidget *scaleWidget = plot->axisWidget(axis);
-
-            scale[axis].isEnabled = true;
-
-            scale[axis].scaleWidget = scaleWidget;
-
-            scale[axis].scaleFont = scaleWidget->font();
-
-            scale[axis].start = scaleWidget->startBorderDist();
-            scale[axis].end = scaleWidget->endBorderDist();
-
-            scale[axis].baseLineOffset = scaleWidget->baseLineDist();
-            scale[axis].tickOffset = scaleWidget->baseLineDist();
-            if ( scaleWidget->scaleDraw()->hasComponent(
-                QwtAbstractScaleDraw::Ticks) )
-            {
-                scale[axis].tickOffset += 
-                    (int)scaleWidget->scaleDraw()->majTickLength();
-            }
-
-            scale[axis].dimWithoutTitle = scaleWidget->dimForLength(
-                QWIDGETSIZE_MAX, scale[axis].scaleFont);
-
-            if ( !scaleWidget->title().isEmpty() )
-            {
-                scale[axis].dimWithoutTitle -= 
-                    scaleWidget->titleHeightForWidth(QWIDGETSIZE_MAX);
-            }
-        }
-        else
-        {
-            scale[axis].isEnabled = false;
-            scale[axis].start = 0;
-            scale[axis].end = 0;
-            scale[axis].baseLineOffset = 0;
-            scale[axis].tickOffset = 0;
-            scale[axis].dimWithoutTitle = 0;
-        }
-    }
-
-    // canvas 
-
-    canvas.frameWidth = plot->canvas()->frameWidth();
-}
-
-class QwtPlotLayout::PrivateData
-{
-public:
-    PrivateData():
-        margin(0),
-        spacing(5),
-        alignCanvasToScales(false)
-    {
-    }
-
-    QRect titleRect;
-    QRect legendRect;
-    QRect scaleRect[QwtPlot::axisCnt];
-    QRect canvasRect;
-
-    QwtPlotLayout::LayoutData layoutData;
-
-    QwtPlot::LegendPosition legendPos;
-    double legendRatio;
-    unsigned int margin;
-    unsigned int spacing;
-    unsigned int canvasMargin[QwtPlot::axisCnt];
-    bool alignCanvasToScales;
-};
-
-/*!
-  \brief Constructor
- */
-
-QwtPlotLayout::QwtPlotLayout()
-{
-    d_data = new PrivateData;
-
-    setLegendPosition(QwtPlot::BottomLegend);
-    setCanvasMargin(4);
-
-    invalidate();
-}
-
-//! Destructor
-QwtPlotLayout::~QwtPlotLayout()
-{
-    delete d_data;
-}
-
-/*!
-  Change the margin of the plot. The margin is the space
-  around all components.
- 
-  \param margin new margin
-  \sa QwtPlotLayout::margin(), QwtPlotLayout::setSpacing(),
-      QwtPlot::setMargin()
-*/
-
-void QwtPlotLayout::setMargin(int margin)
-{
-    if ( margin < 0 )
-        margin = 0;
-    d_data->margin = margin;
-}
-
-/*!
-    \return margin
-    \sa QwtPlotLayout::setMargin(), QwtPlotLayout::spacing(), 
-        QwtPlot::margin()
-*/
-
-int QwtPlotLayout::margin() const
-{
-    return d_data->margin;
-}
-
-/*!
-  Change a margin of the canvas. The margin is the space
-  above/below the scale ticks. A negative margin will
-  be set to -1, excluding the borders of the scales.
- 
-  \param margin New margin
-  \param axis One of QwtPlot::Axis. Specifies where the position of the margin. 
-              -1 means margin at all borders.
-  \sa QwtPlotLayout::canvasMargin() 
-
-  \warning The canvas will have no effect when alignCanvasToScales is true
-*/
-
-void QwtPlotLayout::setCanvasMargin(int margin, int axis)
-{
-    if ( margin < -1 )
-        margin = -1;
-
-    if ( axis == -1 )
-    {
-        for (axis = 0; axis < QwtPlot::axisCnt; axis++)
-            d_data->canvasMargin[axis] = margin;
-    }
-    else if ( axis >= 0 || axis < QwtPlot::axisCnt )
-        d_data->canvasMargin[axis] = margin;
-}
-
-/*!
-    \return Margin around the scale tick borders
-    \sa QwtPlotLayout::setCanvasMargin()
-*/
-
-int QwtPlotLayout::canvasMargin(int axis) const
-{
-    if ( axis < 0 || axis >= QwtPlot::axisCnt )
-        return 0;
-
-    return d_data->canvasMargin[axis];
-}
-
-
-/*!
-  Change the align-canvas-to-axis-scales setting. The canvas may:
-  - extend beyond the axis scale ends to maximize its size,
-  - align with the axis scale ends to control its size.
-
-  \param alignCanvasToScales New align-canvas-to-axis-scales setting
-
-  \sa QwtPlotLayout::alignCanvasToTicks, QwtPlotLayout::setCanvasMargin() 
-  \note In this context the term 'scale' means the backbone of a scale.
-  \warning In case of alignCanvasToScales == true canvasMargin will have 
-           no effect
-*/
-
-void QwtPlotLayout::setAlignCanvasToScales(bool alignCanvasToScales)
-{
-    d_data->alignCanvasToScales = alignCanvasToScales;
-}
-
-/*!
-  Return the align-canvas-to-axis-scales setting. The canvas may:
-  - extend beyond the axis scale ends to maximize its size
-  - align with the axis scale ends to control its size.
-
-  \return align-canvas-to-axis-scales setting
-  \sa QwtPlotLayout::setAlignCanvasToScales, QwtPlotLayout::setCanvasMargin() 
-  \note In this context the term 'scale' means the backbone of a scale.
-*/
-
-bool QwtPlotLayout::alignCanvasToScales() const
-{
-    return d_data->alignCanvasToScales;
-}
-
-/*!
-  Change the spacing of the plot. The spacing is the distance
-  between the plot components.
- 
-  \param spacing new spacing
-  \sa QwtPlotLayout::setMargin(), QwtPlotLayout::spacing() 
-*/
-
-void QwtPlotLayout::setSpacing(int spacing)
-{
-    d_data->spacing = qwtMax(0, spacing);
-}
-
-/*!
-  \return spacing
-  \sa QwtPlotLayout::margin(), QwtPlotLayout::setSpacing() 
-*/
-int QwtPlotLayout::spacing() const
-{
-    return d_data->spacing;
-}
-
-/*!
-  \brief Specify the position of the legend
-  \param pos The legend's position. Valid values are \c QwtPlot::LeftLegend,
-           \c QwtPlot::RightLegend, \c QwtPlot::TopLegend, \c QwtPlotLegend::Bottom.
-  \param ratio Ratio between legend and the bounding rect 
-               of title, canvas and axes. The legend will be shrinked
-               if it would need more space than the given ratio.
-               The ratio is limited to ]0.0 .. 1.0]. In case of <= 0.0
-               it will be reset to the default ratio.
-               The default vertical/horizontal ratio is 0.33/0.5. 
-               
-  \sa QwtPlot::setLegendPosition()
-*/
-
-void QwtPlotLayout::setLegendPosition(QwtPlot::LegendPosition pos, double ratio)
-{
-    if ( ratio > 1.0 )
-        ratio = 1.0;
-
-    switch(pos)
-    {
-        case QwtPlot::TopLegend:
-        case QwtPlot::BottomLegend:
-            if ( ratio <= 0.0 )
-                ratio = 0.33;
-            d_data->legendRatio = ratio;
-            d_data->legendPos = pos;
-            break;
-        case QwtPlot::LeftLegend:
-        case QwtPlot::RightLegend:
-            if ( ratio <= 0.0 )
-                ratio = 0.5;
-            d_data->legendRatio = ratio;
-            d_data->legendPos = pos;
-            break;
-        default:
-            break;
-    }
-}
-
-/*!
-  \brief Specify the position of the legend
-  \param pos The legend's position. Valid values are \c QwtPlot::LeftLegend,
-           \c QwtPlot::RightLegend, \c QwtPlot::TopLegend, \c QwtPlot::BottomLegend.
-               
-  \sa QwtPlot::setLegendPosition()
-*/
-
-void QwtPlotLayout::setLegendPosition(QwtPlot::LegendPosition pos)
-{
-    setLegendPosition(pos, 0.0);
-}
-
-/*!
-  \return Position of the legend
-  \sa QwtPlotLayout::setLegendPosition(), QwtPlot::setLegendPosition(),
-      QwtPlot::legendPosition()
-*/
-
-QwtPlot::LegendPosition QwtPlotLayout::legendPosition() const
-{
-    return d_data->legendPos;
-}
-
-/*!
-  Specify the relative size of the legend in the plot
-  \param ratio Ratio between legend and the bounding rect 
-               of title, canvas and axes. The legend will be shrinked
-               if it would need more space than the given ratio.
-               The ratio is limited to ]0.0 .. 1.0]. In case of <= 0.0
-               it will be reset to the default ratio.
-               The default vertical/horizontal ratio is 0.33/0.5. 
-               
-  \sa QwtPlot::setLegendPosition()
-*/
-void QwtPlotLayout::setLegendRatio(double ratio)
-{
-    setLegendPosition(legendPosition(), ratio);
-}
-
-/*!
-  \return The relative size of the legend in the plot.
-  \sa QwtPlotLayout::setLegendPos(), QwtPlot::setLegendPos()
-*/
-
-double QwtPlotLayout::legendRatio() const
-{
-    return d_data->legendRatio;
-}
-
-/*!
-  \return Geometry for the title
-  \sa QwtPlotLayout::activate(), QwtPlotLayout::invalidate()
-*/
-
-const QRect &QwtPlotLayout::titleRect() const
-{
-    return d_data->titleRect;
-}
-
-/*!
-  \return Geometry for the legend
-  \sa QwtPlotLayout::activate(), QwtPlotLayout::invalidate()
-*/
-
-const QRect &QwtPlotLayout::legendRect() const
-{
-    return d_data->legendRect;
-}
-
-/*!
-  \param axis Axis index
-  \return Geometry for the scale
-  \sa QwtPlotLayout::activate(), QwtPlotLayout::invalidate()
-*/
-
-const QRect &QwtPlotLayout::scaleRect(int axis) const
-{
-    if ( axis < 0 || axis >= QwtPlot::axisCnt )
-    {
-        static QRect dummyRect;
-        return dummyRect;
-    }
-    return d_data->scaleRect[axis];
-}
-
-/*!
-  \return Geometry for the canvas
-  \sa QwtPlotLayout::activate(), QwtPlotLayout::invalidate()
-*/
-
-const QRect &QwtPlotLayout::canvasRect() const
-{
-    return d_data->canvasRect;
-}
-
-/*!
-  Invalidate the geometry of all components. 
-  \sa QwtPlotLayout::activate()
-*/
-void QwtPlotLayout::invalidate()
-{
-    d_data->titleRect = d_data->legendRect = d_data->canvasRect = QRect();
-    for (int axis = 0; axis < QwtPlot::axisCnt; axis++ )
-        d_data->scaleRect[axis] = QRect();
-}
-
-/*!  
-  \brief Return a minimum size hint
-  \sa QwtPlot::minimumSizeHint()
-*/
-
-QSize QwtPlotLayout::minimumSizeHint(const QwtPlot *plot) const
-{
-    class ScaleData
-    {
-    public:
-        ScaleData()
-        {
-            w = h = minLeft = minRight = tickOffset = 0;
-        }
-
-        int w;
-        int h;
-        int minLeft;
-        int minRight;
-        int tickOffset;
-    } scaleData[QwtPlot::axisCnt];
-
-    int canvasBorder[QwtPlot::axisCnt];
-
-    int axis;
-    for ( axis = 0; axis < QwtPlot::axisCnt; axis++ )
-    {
-        if ( plot->axisEnabled(axis) )
-        {
-            const QwtScaleWidget *scl = plot->axisWidget(axis);
-            ScaleData &sd = scaleData[axis];
-
-            const QSize hint = scl->minimumSizeHint();
-            sd.w = hint.width(); 
-            sd.h = hint.height(); 
-            scl->getBorderDistHint(sd.minLeft, sd.minRight);
-            sd.tickOffset = scl->baseLineDist();
-            if ( scl->scaleDraw()->hasComponent(QwtAbstractScaleDraw::Ticks) )
-                sd.tickOffset += scl->scaleDraw()->majTickLength();
-        }
-
-        canvasBorder[axis] = plot->canvas()->frameWidth() +
-            d_data->canvasMargin[axis] + 1;
-            
-    }
-
-
-    for ( axis = 0; axis < QwtPlot::axisCnt; axis++ )
-    {
-        ScaleData &sd = scaleData[axis];
-        if ( sd.w && (axis == QwtPlot::xBottom || axis == QwtPlot::xTop) )
-        {
-            if ( (sd.minLeft > canvasBorder[QwtPlot::yLeft]) 
-                && scaleData[QwtPlot::yLeft].w )
-            {
-                int shiftLeft = sd.minLeft - canvasBorder[QwtPlot::yLeft];
-                if ( shiftLeft > scaleData[QwtPlot::yLeft].w )
-                    shiftLeft = scaleData[QwtPlot::yLeft].w;
-
-                sd.w -= shiftLeft;
-            }
-            if ( (sd.minRight > canvasBorder[QwtPlot::yRight]) 
-                && scaleData[QwtPlot::yRight].w )
-            {
-                int shiftRight = sd.minRight - canvasBorder[QwtPlot::yRight];
-                if ( shiftRight > scaleData[QwtPlot::yRight].w )
-                    shiftRight = scaleData[QwtPlot::yRight].w;
-
-                sd.w -= shiftRight;
-            }
-        }
-
-        if ( sd.h && (axis == QwtPlot::yLeft || axis == QwtPlot::yRight) )
-        {
-            if ( (sd.minLeft > canvasBorder[QwtPlot::xBottom]) &&
-                scaleData[QwtPlot::xBottom].h )
-            {
-                int shiftBottom = sd.minLeft - canvasBorder[QwtPlot::xBottom];
-                if ( shiftBottom > scaleData[QwtPlot::xBottom].tickOffset )
-                    shiftBottom = scaleData[QwtPlot::xBottom].tickOffset;
-
-                sd.h -= shiftBottom;
-            }
-            if ( (sd.minLeft > canvasBorder[QwtPlot::xTop]) &&
-                scaleData[QwtPlot::xTop].h )
-            {
-                int shiftTop = sd.minRight - canvasBorder[QwtPlot::xTop];
-                if ( shiftTop > scaleData[QwtPlot::xTop].tickOffset )
-                    shiftTop = scaleData[QwtPlot::xTop].tickOffset;
-
-                sd.h -= shiftTop;
-            }
-        }
-    }
-
-    const QwtPlotCanvas *canvas = plot->canvas();
-
-    int w = scaleData[QwtPlot::yLeft].w + scaleData[QwtPlot::yRight].w
-        + qwtMax(scaleData[QwtPlot::xBottom].w, scaleData[QwtPlot::xTop].w)
-        + 2 * (canvas->frameWidth() + 1);
-    int h = scaleData[QwtPlot::xBottom].h + scaleData[QwtPlot::xTop].h 
-        + qwtMax(scaleData[QwtPlot::yLeft].h, scaleData[QwtPlot::yRight].h)
-        + 2 * (canvas->frameWidth() + 1);
-
-    const QwtTextLabel *title = plot->titleLabel();
-    if (title && !title->text().isEmpty())
-    {
-        // If only QwtPlot::yLeft or QwtPlot::yRight is showing, 
-        // we center on the plot canvas.
-        const bool centerOnCanvas = !(plot->axisEnabled(QwtPlot::yLeft) 
-            && plot->axisEnabled(QwtPlot::yRight));
-
-        int titleW = w;
-        if ( centerOnCanvas )
-        {
-            titleW -= scaleData[QwtPlot::yLeft].w 
-                + scaleData[QwtPlot::yRight].w;
-        }
-
-        int titleH = title->heightForWidth(titleW);
-        if ( titleH > titleW ) // Compensate for a long title
-        {
-            w = titleW = titleH;
-            if ( centerOnCanvas )
-            {
-                w += scaleData[QwtPlot::yLeft].w
-                    + scaleData[QwtPlot::yRight].w;
-            }
-
-            titleH = title->heightForWidth(titleW);
-        }
-        h += titleH + d_data->spacing;
-    }
-
-    // Compute the legend contribution
-
-    const QwtLegend *legend = plot->legend();
-    if ( legend && !legend->isEmpty() )
-    {
-        if ( d_data->legendPos == QwtPlot::LeftLegend 
-            || d_data->legendPos == QwtPlot::RightLegend )
-        {
-            int legendW = legend->sizeHint().width();
-            int legendH = legend->heightForWidth(legendW); 
-
-            if ( legend->frameWidth() > 0 )
-                w += d_data->spacing;
-
-            if ( legendH > h )
-                legendW += legend->verticalScrollBar()->sizeHint().height();
-
-            if ( d_data->legendRatio < 1.0 )
-                legendW = qwtMin(legendW, int(w / (1.0 - d_data->legendRatio)));
-
-            w += legendW;
-        }
-        else // QwtPlot::Top, QwtPlot::Bottom
-        {
-            int legendW = qwtMin(legend->sizeHint().width(), w);
-            int legendH = legend->heightForWidth(legendW); 
-
-            if ( legend->frameWidth() > 0 )
-                h += d_data->spacing;
-
-            if ( d_data->legendRatio < 1.0 )
-                legendH = qwtMin(legendH, int(h / (1.0 - d_data->legendRatio)));
-            
-            h += legendH;
-        }
-    }
-
-    w += 2 * d_data->margin;
-    h += 2 * d_data->margin;
-
-    return QSize( w, h );
-}
-
-/*!
-  Find the geometry for the legend
-  \param options Options how to layout the legend
-  \param rect Rectangle where to place the legend
-  \return Geometry for the legend
-*/
-
-QRect QwtPlotLayout::layoutLegend(int options, 
-    const QRect &rect) const
-{
-    const QSize hint(d_data->layoutData.legend.hint);
-
-    int dim;
-    if ( d_data->legendPos == QwtPlot::LeftLegend 
-        || d_data->legendPos == QwtPlot::RightLegend )
-    {
-        // We don't allow vertical legends to take more than
-        // half of the available space.
-
-        dim = qwtMin(hint.width(), int(rect.width() * d_data->legendRatio));
-
-        if ( !(options & IgnoreScrollbars) )
-        {
-            if ( hint.height() > rect.height() )
-            {
-                // The legend will need additional
-                // space for the vertical scrollbar. 
-
-                dim += d_data->layoutData.legend.vScrollBarWidth;
-            }
-        }
-    }
-    else
-    {
-        dim = qwtMin(hint.height(), int(rect.height() * d_data->legendRatio));
-        dim = qwtMax(dim, d_data->layoutData.legend.hScrollBarHeight);
-    }
-
-    QRect legendRect = rect;
-    switch(d_data->legendPos)
-    {
-        case QwtPlot::LeftLegend:
-            legendRect.setWidth(dim);
-            break;
-        case QwtPlot::RightLegend:
-            legendRect.setX(rect.right() - dim + 1);
-            legendRect.setWidth(dim);
-            break;
-        case QwtPlot::TopLegend:
-            legendRect.setHeight(dim);
-            break;
-        case QwtPlot::BottomLegend:
-            legendRect.setY(rect.bottom() - dim + 1);
-            legendRect.setHeight(dim);
-            break;
-    }
-
-    return legendRect;
-}
-
-/*!
-  Align the legend to the canvas
-  \param canvasRect Geometry of the canvas
-  \param legendRect Maximum geometry for the legend
-  \return Geometry for the aligned legend
-*/
-QRect QwtPlotLayout::alignLegend(const QRect &canvasRect, 
-    const QRect &legendRect) const
-{
-    QRect alignedRect = legendRect;
-
-    if ( d_data->legendPos == QwtPlot::BottomLegend 
-        || d_data->legendPos == QwtPlot::TopLegend )
-    {
-        if ( d_data->layoutData.legend.hint.width() < canvasRect.width() )
-        {
-            alignedRect.setX(canvasRect.x());
-            alignedRect.setWidth(canvasRect.width());
-        }
-    }
-    else
-    {
-        if ( d_data->layoutData.legend.hint.height() < canvasRect.height() )
-        {
-            alignedRect.setY(canvasRect.y());
-            alignedRect.setHeight(canvasRect.height());
-        }
-    }
-
-    return alignedRect;
-}
-
-/*!
-  Expand all line breaks in text labels, and calculate the height
-  of their widgets in orientation of the text.
-
-  \param options Options how to layout the legend
-  \param rect Bounding rect for title, axes and canvas.
-  \param dimTitle Expanded height of the title widget
-  \param dimAxis Expanded heights of the axis in axis orientation.
-*/
-void QwtPlotLayout::expandLineBreaks(int options, const QRect &rect, 
-    int &dimTitle, int dimAxis[QwtPlot::axisCnt]) const
-{
-    dimTitle = 0;
-    for ( int i = 0; i < QwtPlot::axisCnt; i++ )
-        dimAxis[i] = 0;
-
-    bool done = false;
-    while (!done)
-    {
-        done = true;
-
-        // the size for the 4 axis depend on each other. Expanding
-        // the height of a horizontal axis will shrink the height
-        // for the vertical axis, shrinking the height of a vertical
-        // axis will result in a line break what will expand the
-        // width and results in shrinking the width of a horizontal
-        // axis what might result in a line break of a horizontal
-        // axis ... . So we loop as long until no size changes.
-
-        if ( !d_data->layoutData.title.text.isEmpty() )
-        {
-            int w = rect.width();
-
-            if ( d_data->layoutData.scale[QwtPlot::yLeft].isEnabled
-                != d_data->layoutData.scale[QwtPlot::yRight].isEnabled )
-            {
-                // center to the canvas
-                w -= dimAxis[QwtPlot::yLeft] + dimAxis[QwtPlot::yRight]; 
-            }
-
-            int d = d_data->layoutData.title.text.heightForWidth(w);
-            if ( !(options & IgnoreFrames) )
-                d += 2 * d_data->layoutData.title.frameWidth;
-
-            if ( d > dimTitle )
-            {
-                dimTitle = d;
-                done = false;
-            }
-        }
-
-        for ( int axis = 0; axis < QwtPlot::axisCnt; axis++ )
-        {
-            int backboneOffset = d_data->canvasMargin[axis];
-            if ( !(options & IgnoreFrames) )
-                backboneOffset += d_data->layoutData.canvas.frameWidth;
-
-            const struct LayoutData::t_scaleData &scaleData = 
-                d_data->layoutData.scale[axis];
-
-            if (scaleData.isEnabled)
-            {
-                int length;
-                if ( axis == QwtPlot::xTop || axis == QwtPlot::xBottom )
-                {
-                    length = rect.width() - dimAxis[QwtPlot::yLeft] 
-                        - dimAxis[QwtPlot::yRight];
-                    length += qwtMin(dimAxis[QwtPlot::yLeft], 
-                        scaleData.start - backboneOffset);
-                    length += qwtMin(dimAxis[QwtPlot::yRight], 
-                        scaleData.end - backboneOffset);
-                }
-                else // QwtPlot::yLeft, QwtPlot::yRight
-                {
-                    length = rect.height() - dimAxis[QwtPlot::xTop] 
-                        - dimAxis[QwtPlot::xBottom];
-
-                    if ( dimAxis[QwtPlot::xBottom] > 0 )
-                    {
-                        length += qwtMin(
-                            d_data->layoutData.scale[QwtPlot::xBottom].tickOffset, 
-                            scaleData.start - backboneOffset);
-                    }
-                    if ( dimAxis[QwtPlot::xTop] > 0 )
-                    {
-                        length += qwtMin(
-                            d_data->layoutData.scale[QwtPlot::xTop].tickOffset, 
-                            scaleData.end - backboneOffset);
-                    }
-
-                    if ( dimTitle > 0 )
-                        length -= dimTitle + d_data->spacing;
-                }
-
-                int d = scaleData.dimWithoutTitle;
-                if ( !scaleData.scaleWidget->title().isEmpty() )
-                {
-                    d += scaleData.scaleWidget->titleHeightForWidth(length);
-                }
-
-                if ( d > dimAxis[axis] )
-                {
-                    dimAxis[axis] = d;
-                    done = false;
-                }
-            }
-        }
-    }
-}
-
-/*!
-  Align the ticks of the axis to the canvas borders using
-  the empty corners.
-*/
-
-void QwtPlotLayout::alignScales(int options,
-    QRect &canvasRect, QRect scaleRect[QwtPlot::axisCnt]) const
-{
-    int axis;
-
-    int backboneOffset[QwtPlot::axisCnt];
-    for (axis = 0; axis < QwtPlot::axisCnt; axis++ )
-    {
-        backboneOffset[axis] = 0;
-        if ( !d_data->alignCanvasToScales )
-            backboneOffset[axis] += d_data->canvasMargin[axis];
-        if ( !(options & IgnoreFrames) )
-            backboneOffset[axis] += d_data->layoutData.canvas.frameWidth;
-    }
-
-    for (axis = 0; axis < QwtPlot::axisCnt; axis++ )
-    {
-        if ( !scaleRect[axis].isValid() )
-            continue;
-
-        const int startDist = d_data->layoutData.scale[axis].start;
-        const int endDist = d_data->layoutData.scale[axis].end;
-
-        QRect &axisRect = scaleRect[axis];
-
-        if ( axis == QwtPlot::xTop || axis == QwtPlot::xBottom )
-        {
-            const int leftOffset = backboneOffset[QwtPlot::yLeft] - startDist;
-
-            if ( scaleRect[QwtPlot::yLeft].isValid() )
-            {
-                int minLeft = scaleRect[QwtPlot::yLeft].left();
-                int left = axisRect.left() + leftOffset;
-                axisRect.setLeft(qwtMax(left, minLeft));
-            }
-            else
-            {
-                if ( d_data->alignCanvasToScales )
-                {
-                    canvasRect.setLeft(qwtMax(canvasRect.left(), 
-                        axisRect.left() - leftOffset));
-                }
-                else
-                {
-                    if ( leftOffset > 0 )
-                        axisRect.setLeft(axisRect.left() + leftOffset);
-                }
-            }
-
-            const int rightOffset = backboneOffset[QwtPlot::yRight] - endDist;
-
-            if ( scaleRect[QwtPlot::yRight].isValid() )
-            {
-                int maxRight = scaleRect[QwtPlot::yRight].right();
-                int right = axisRect.right() - rightOffset;
-                axisRect.setRight(qwtMin(right, maxRight));
-            }
-            else
-            {
-                if ( d_data->alignCanvasToScales )
-                {
-                    canvasRect.setRight( qwtMin(canvasRect.right(), 
-                        axisRect.right() + rightOffset) );
-                }
-                else
-                {
-                    if ( rightOffset > 0 )
-                        axisRect.setRight(axisRect.right() - rightOffset);
-                }
-            }
-        }
-        else // QwtPlot::yLeft, QwtPlot::yRight
-        {
-            const int bottomOffset = 
-                backboneOffset[QwtPlot::xBottom] - startDist;
-
-            if ( scaleRect[QwtPlot::xBottom].isValid() )
-            {
-                int maxBottom = scaleRect[QwtPlot::xBottom].top() + 
-                    d_data->layoutData.scale[QwtPlot::xBottom].tickOffset;
-
-                int bottom = axisRect.bottom() - bottomOffset;
-                axisRect.setBottom(qwtMin(bottom, maxBottom));
-            }
-            else
-            {
-                if ( d_data->alignCanvasToScales )
-                {
-                    canvasRect.setBottom(qwtMin(canvasRect.bottom(), 
-                        axisRect.bottom() + bottomOffset));
-                }
-                else
-                {
-                    if ( bottomOffset > 0 )
-                        axisRect.setBottom(axisRect.bottom() - bottomOffset);
-                }
-            }
-        
-            const int topOffset = backboneOffset[QwtPlot::xTop] - endDist;
-
-            if ( scaleRect[QwtPlot::xTop].isValid() )
-            {
-                int minTop = scaleRect[QwtPlot::xTop].bottom() -
-                    d_data->layoutData.scale[QwtPlot::xTop].tickOffset;
-
-                int top = axisRect.top() + topOffset;
-                axisRect.setTop(qwtMax(top, minTop));
-            }
-            else
-            {
-                if ( d_data->alignCanvasToScales )
-                {
-                    canvasRect.setTop(qwtMax(canvasRect.top(), 
-                        axisRect.top() + - topOffset));
-                }
-                else
-                {
-                    if ( topOffset > 0 )
-                        axisRect.setTop(axisRect.top() + topOffset);
-                }
-            }
-        }
-    }
-}
-
-/*!
-  \brief Recalculate the geometry of all components. 
-
-  \param plot Plot to be layout
-  \param plotRect Rect where to place the components
-  \param options Options
-
-  \sa QwtPlotLayout::invalidate(), QwtPlotLayout::titleRect(),
-      QwtPlotLayout::legendRect(), QwtPlotLayout::scaleRect(), 
-      QwtPlotLayout::canvasRect()
-*/
-
-void QwtPlotLayout::activate(const QwtPlot *plot,
-    const QRect &plotRect, int options) 
-{
-    invalidate();
-
-    QRect rect(plotRect);  // undistributed rest of the plot rect
-
-    if ( !(options & IgnoreMargin) )
-    {
-        // subtract the margin
-
-        rect.setRect(
-            rect.x() + d_data->margin, 
-            rect.y() + d_data->margin,
-            rect.width() - 2 * d_data->margin, 
-            rect.height() - 2 * d_data->margin
-        );
-    }
-
-    // We extract all layout relevant data from the widgets,
-    // filter them through pfilter and save them to d_data->layoutData.
-
-    d_data->layoutData.init(plot, rect);
-
-    if (!(options & IgnoreLegend)
-        && plot->legend() && !plot->legend()->isEmpty() )
-    {
-        d_data->legendRect = layoutLegend(options, rect);
-
-        // subtract d_data->legendRect from rect
-
-        const QRegion region(rect);
-        rect = region.subtract(d_data->legendRect).boundingRect(); 
-
-        if ( d_data->layoutData.legend.frameWidth && 
-            !(options & IgnoreFrames ) )
-        {
-            // In case of a frame we have to insert a spacing.
-            // Otherwise the leading of the font separates
-            // legend and scale/canvas
-
-            switch(d_data->legendPos)
-            {
-                case QwtPlot::LeftLegend:
-                    rect.setLeft(rect.left() + d_data->spacing);
-                    break;
-                case QwtPlot::RightLegend:
-                    rect.setRight(rect.right() - d_data->spacing);
-                    break;
-                case QwtPlot::TopLegend:
-                    rect.setTop(rect.top() + d_data->spacing);
-                    break;
-                case QwtPlot::BottomLegend:
-                    rect.setBottom(rect.bottom() - d_data->spacing);
-                    break;
-            }
-        }
-    }
-
-    /*
-     +---+-----------+---+
-     |       Title       |
-     +---+-----------+---+
-     |   |   Axis    |   |
-     +---+-----------+---+
-     | A |           | A |
-     | x |  Canvas   | x |
-     | i |           | i |
-     | s |           | s |
-     +---+-----------+---+
-     |   |   Axis    |   |
-     +---+-----------+---+
-    */
-
-
-    // axes and title include text labels. The height of each
-    // label depends on its line breaks, that depend on the width
-    // for the label. A line break in a horizontal text will reduce
-    // the available width for vertical texts and vice versa. 
-    // expandLineBreaks finds the height/width for title and axes
-    // including all line breaks.
-
-    int dimTitle, dimAxes[QwtPlot::axisCnt];
-    expandLineBreaks(options, rect, dimTitle, dimAxes);
-
-    if (dimTitle > 0 )
-    {
-        d_data->titleRect = QRect(rect.x(), rect.y(),
-            rect.width(), dimTitle);
-
-        if ( d_data->layoutData.scale[QwtPlot::yLeft].isEnabled !=
-            d_data->layoutData.scale[QwtPlot::yRight].isEnabled )
-        {
-            // if only one of the y axes is missing we align
-            // the title centered to the canvas
-
-            d_data->titleRect.setX(rect.x() + dimAxes[QwtPlot::yLeft]);
-            d_data->titleRect.setWidth(rect.width() 
-                - dimAxes[QwtPlot::yLeft] - dimAxes[QwtPlot::yRight]);
-        }
-
-        // subtract title 
-        rect.setTop(rect.top() + dimTitle + d_data->spacing);
-    }
-
-    d_data->canvasRect.setRect(
-        rect.x() + dimAxes[QwtPlot::yLeft],
-        rect.y() + dimAxes[QwtPlot::xTop],
-        rect.width() - dimAxes[QwtPlot::yRight] - dimAxes[QwtPlot::yLeft],
-        rect.height() - dimAxes[QwtPlot::xBottom] - dimAxes[QwtPlot::xTop]);
-
-    for ( int axis = 0; axis < QwtPlot::axisCnt; axis++ )
-    {
-        // set the rects for the axes
-
-        if ( dimAxes[axis] )
-        {
-            int dim = dimAxes[axis];
-            QRect &scaleRect = d_data->scaleRect[axis];
-
-            scaleRect = d_data->canvasRect;
-            switch(axis)
-            {
-                case QwtPlot::yLeft:
-                    scaleRect.setX(d_data->canvasRect.left() - dim);
-                    scaleRect.setWidth(dim);
-                    break;
-                case QwtPlot::yRight:
-                    scaleRect.setX(d_data->canvasRect.right() + 1);
-                    scaleRect.setWidth(dim);
-                    break;
-                case QwtPlot::xBottom:
-                    scaleRect.setY(d_data->canvasRect.bottom() + 1);
-                    scaleRect.setHeight(dim);
-                    break;
-                case QwtPlot::xTop:
-                    scaleRect.setY(d_data->canvasRect.top() - dim);
-                    scaleRect.setHeight(dim);
-                    break;
-            }
-#if QT_VERSION < 0x040000
-            scaleRect = scaleRect.normalize();
-#else
-            scaleRect = scaleRect.normalized();
-#endif
-        }
-    }
-
-    // +---+-----------+---+
-    // |  <-   Axis   ->   |
-    // +-^-+-----------+-^-+
-    // | | |           | | |
-    // |   |           |   |
-    // | A |           | A |
-    // | x |  Canvas   | x |
-    // | i |           | i |
-    // | s |           | s |
-    // |   |           |   |
-    // | | |           | | |
-    // +-V-+-----------+-V-+
-    // |   <-  Axis   ->   |
-    // +---+-----------+---+
-
-    // The ticks of the axes - not the labels above - should
-    // be aligned to the canvas. So we try to use the empty
-    // corners to extend the axes, so that the label texts
-    // left/right of the min/max ticks are moved into them.
- 
-    alignScales(options, d_data->canvasRect, d_data->scaleRect);
-
-    if (!d_data->legendRect.isEmpty() )
-    {
-        // We prefer to align the legend to the canvas - not to
-        // the complete plot - if possible.
-
-        d_data->legendRect = alignLegend(d_data->canvasRect, d_data->legendRect);
-    }
-}
diff --git a/src/qwt/qwt_plot_marker.cpp b/src/qwt/qwt_plot_marker.cpp
deleted file mode 100644
index 7cf5daf..0000000
--- a/src/qwt/qwt_plot_marker.cpp
+++ /dev/null
@@ -1,386 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- * 
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-// vim: expandtab
-
-#include <qpainter.h>
-#include "qwt_painter.h"
-#include "qwt_scale_map.h"
-#include "qwt_plot_marker.h"
-#include "qwt_symbol.h"
-#include "qwt_text.h"
-#include "qwt_math.h"
-
-static const int LabelDist = 2;
-
-class QwtPlotMarker::PrivateData
-{
-public:
-    PrivateData():
-        align(Qt::AlignCenter),
-        style(NoLine),
-        xValue(0.0),
-        yValue(0.0)
-    {
-    }
-
-    QwtText label;
-#if QT_VERSION < 0x040000
-    int align;
-#else
-    Qt::Alignment align;
-#endif
-    QPen pen;
-    QwtSymbol sym;
-    LineStyle style;
-
-    double xValue;
-    double yValue;
-};
-
-//! Sets alignment to Qt::AlignCenter, and style to NoLine
-QwtPlotMarker::QwtPlotMarker()
-{
-    d_data = new PrivateData;
-    setZ(30.0);
-}
-
-//! Destructor
-QwtPlotMarker::~QwtPlotMarker()
-{
-    delete d_data;
-}
-
-/*!
-  \brief Copy constructor
-  \param m Marker
-*/
-QwtPlotMarker::QwtPlotMarker(const QwtPlotMarker &m):
-    QwtPlotItem(m)
-{
-    *this = m;
-}
-
-/*!
-  \brief Assignment operator
-  \param m Marker
-*/
-QwtPlotMarker& QwtPlotMarker::operator=(const QwtPlotMarker &m)
-{
-    if (this != &m)
-    {
-        QwtPlotItem::operator=((const QwtPlotItem &)m);
-
-        d_data->label = m.d_data->label;
-        d_data->align = m.d_data->align;
-        d_data->pen = m.d_data->pen;
-        d_data->sym = m.d_data->sym;
-        d_data->style = m.d_data->style;
-        d_data->xValue = m.d_data->xValue;
-        d_data->yValue = m.d_data->yValue;
-
-        itemChanged(); 
-    }
-
-    return *this;
-}
-
-int QwtPlotMarker::rtti() const
-{
-    return QwtPlotItem::Rtti_PlotMarker;
-}
-
-//! Return Value
-QwtDoublePoint QwtPlotMarker::value() const
-{
-    return QwtDoublePoint(d_data->xValue, d_data->yValue);
-}
-
-//! Return x Value
-double QwtPlotMarker::xValue() const 
-{ 
-    return d_data->xValue; 
-}
-
-//! Return y Value
-double QwtPlotMarker::yValue() const 
-{ 
-    return d_data->yValue; 
-}
-
-//! Set Value
-void QwtPlotMarker::setValue(const QwtDoublePoint& pos)
-{
-    setValue(pos.x(), pos.y());
-}
-
-//! Set Value
-void QwtPlotMarker::setValue(double x, double y) 
-{
-    if ( x != d_data->xValue || y != d_data->yValue )
-    {
-        d_data->xValue = x; 
-        d_data->yValue = y; 
-        itemChanged(); 
-    }
-}
-
-//! Set X Value
-void QwtPlotMarker::setXValue(double x) 
-{ 
-    setValue(x, d_data->yValue);
-}
-
-//! Set Y Value
-void QwtPlotMarker::setYValue(double y) 
-{ 
-    setValue(d_data->xValue, y);
-}
-
-/*!
-  \brief Draw the marker
-  \param p Painter
-  \param xMap x Scale Map
-  \param yMap y Scale Map
-  \param r Bounding rect, where to paint
-*/
-void QwtPlotMarker::draw(QPainter *p,
-    const QwtScaleMap &xMap, const QwtScaleMap &yMap,
-    const QRect &r) const
-{
-    const int x = xMap.transform(d_data->xValue);
-    const int y = yMap.transform(d_data->yValue);
-
-    // draw lines
-    if (d_data->style != NoLine)
-    {
-        p->setPen(d_data->pen);
-        if ((d_data->style == HLine) || (d_data->style == Cross))
-            QwtPainter::drawLine(p, r.left(), y, r.right(), y);
-        if ((d_data->style == VLine)||(d_data->style == Cross))
-            QwtPainter::drawLine(p, x, r.top(), x, r.bottom());
-    }
-
-    // draw symbol
-    QSize sSym(0, 0);
-    if (d_data->sym.style() != QwtSymbol::None)
-    {
-        sSym = d_data->sym.size();
-        d_data->sym.draw(p, x, y);
-    }
-
-    // draw label
-    if (!d_data->label.isEmpty())
-    {
-        int xlw = qwtMax(int(d_data->pen.width()), 1);
-        int ylw = xlw;
-        int xlw1;
-        int ylw1;
-
-        const int xLabelDist = 
-            QwtPainter::metricsMap().screenToLayoutX(LabelDist);
-        const int yLabelDist = 
-            QwtPainter::metricsMap().screenToLayoutY(LabelDist);
-
-        if ((d_data->style == VLine) || (d_data->style == HLine))
-        {
-            xlw1 = (xlw + 1) / 2 + xLabelDist;
-            xlw = xlw / 2 + xLabelDist;
-            ylw1 = (ylw + 1) / 2 + yLabelDist;
-            ylw = ylw / 2 + yLabelDist;
-        }
-        else 
-        {
-            xlw1 = qwtMax((xlw + 1) / 2, (sSym.width() + 1) / 2) + xLabelDist;
-            xlw = qwtMax(xlw / 2, (sSym.width() + 1) / 2) + xLabelDist;
-            ylw1 = qwtMax((ylw + 1) / 2, (sSym.height() + 1) / 2) + yLabelDist;
-            ylw = qwtMax(ylw / 2, (sSym. height() + 1) / 2) + yLabelDist;
-        }
-
-        QRect tr(QPoint(0, 0), d_data->label.textSize(p->font()));
-        tr.moveCenter(QPoint(0, 0));
-
-        int dx = x;
-        int dy = y;
-
-        if (d_data->style == VLine)
-        {
-            if (d_data->align & (int) Qt::AlignTop)
-                dy = r.top() + yLabelDist - tr.y();
-            else if (d_data->align & (int) Qt::AlignBottom)
-                dy = r.bottom() - yLabelDist + tr.y();
-            else
-                dy = r.top() + r.height() / 2;
-        }
-        else
-        {
-            if (d_data->align & (int) Qt::AlignTop)
-                dy += tr.y() - ylw1;
-            else if (d_data->align & (int) Qt::AlignBottom)
-                dy -= tr.y() - ylw1;
-        }
-
-
-        if (d_data->style == HLine)
-        {
-            if (d_data->align & (int) Qt::AlignLeft)
-                dx = r.left() + xLabelDist - tr.x();
-            else if (d_data->align & (int) Qt::AlignRight)
-                dx = r.right() - xLabelDist + tr.x();
-            else
-                dx = r.left() + r.width() / 2;
-        }
-        else
-        {
-            if (d_data->align & (int) Qt::AlignLeft)
-                dx += tr.x() - xlw1;
-            else if (d_data->align & (int) Qt::AlignRight)
-                dx -= tr.x() - xlw1;
-        }
-
-#if QT_VERSION < 0x040000
-        tr.moveBy(dx, dy);
-#else
-        tr.translate(dx, dy);
-#endif
-        d_data->label.draw(p, tr);
-    }
-}
-
-/*!
-  \brief Set the line style
-  \param st Line style. Can be one of QwtPlotMarker::NoLine,
-    QwtPlotMarker::HLine, QwtPlotMarker::VLine or QwtPlotMarker::Cross
-  \sa QwtPlotMarker::lineStyle()
-*/
-void QwtPlotMarker::setLineStyle(QwtPlotMarker::LineStyle st)
-{
-    if ( st != d_data->style )
-    {
-        d_data->style = st;
-        itemChanged();
-    }
-}
-
-/*!
-  \return the line style
-  \sa For a description of line styles, see QwtPlotMarker::setLineStyle()
-*/
-QwtPlotMarker::LineStyle QwtPlotMarker::lineStyle() const 
-{ 
-    return d_data->style; 
-}
-
-/*!
-  \brief Assign a symbol
-  \param s New symbol 
-  \sa QwtSymbol, QwtPlotMarker::symbol()
-*/
-void QwtPlotMarker::setSymbol(const QwtSymbol &s)
-{
-    d_data->sym = s;
-    itemChanged();
-}
-
-/*!
-  \return the symbol
-  \sa QwtPlotMarker::setSymbol(), QwtSymbol
-*/
-const QwtSymbol &QwtPlotMarker::symbol() const 
-{ 
-    return d_data->sym; 
-}
-
-/*!
-  \brief Set the label
-  \param label label text
-  \sa QwtPlotMarker::label()
-*/
-void QwtPlotMarker::setLabel(const QwtText& label)
-{
-    if ( label != d_data->label )
-    {
-        d_data->label = label;
-        itemChanged();
-    }
-}
-
-/*!
-  \return the label
-  \sa QwtPlotMarker::setLabel()
-*/
-QwtText QwtPlotMarker::label() const 
-{ 
-    return d_data->label; 
-}
-
-/*!
-  \brief Set the alignment of the label
-
-  The alignment determines where the label is drawn relative to
-  the marker's position.
-
-  \param align Alignment. A combination of AlignTop, AlignBottom,
-    AlignLeft, AlignRight, AlignCenter, AlgnHCenter,
-    AlignVCenter.  
-  \sa QwtPlotMarker::labelAlignment()
-*/
-#if QT_VERSION < 0x040000
-void QwtPlotMarker::setLabelAlignment(int align)
-#else
-void QwtPlotMarker::setLabelAlignment(Qt::Alignment align)
-#endif
-{
-    if ( align == d_data->align )
-        return;
-    
-    d_data->align = align;
-    itemChanged();
-}
-
-/*!
-  \return the label alignment
-  \sa QwtPlotMarker::setLabelAlignment()
-*/
-#if QT_VERSION < 0x040000
-int QwtPlotMarker::labelAlignment() const 
-#else
-Qt::Alignment QwtPlotMarker::labelAlignment() const 
-#endif
-{ 
-    return d_data->align; 
-}
-
-/*!
-  \brief Specify a pen for the line.
-  \param p New pen
-  \sa QwtPlotMarker::linePen()
-*/
-void QwtPlotMarker::setLinePen(const QPen &p)
-{
-    if ( p != d_data->pen )
-    {
-        d_data->pen = p;
-        itemChanged();
-    }
-}
-
-/*!
-  \return the line pen
-  \sa QwtPlotMarker::setLinePen()
-*/
-const QPen &QwtPlotMarker::linePen() const 
-{ 
-    return d_data->pen; 
-}
-
-QwtDoubleRect QwtPlotMarker::boundingRect() const
-{
-    return QwtDoubleRect(d_data->xValue, d_data->yValue, 0.0, 0.0);
-}
diff --git a/src/qwt/qwt_plot_picker.cpp b/src/qwt/qwt_plot_picker.cpp
deleted file mode 100644
index 9375ee1..0000000
--- a/src/qwt/qwt_plot_picker.cpp
+++ /dev/null
@@ -1,405 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-// vim: expandtab
-
-#include "qwt_plot.h"
-#include "qwt_double_rect.h"
-#include "qwt_scale_div.h"
-#include "qwt_painter.h"
-#include "qwt_scale_map.h"
-#include "qwt_plot_picker.h"
-
-/*!
-  \brief Create a plot picker
-
-  The picker is set to those x- and y-axis of the plot
-  that are enabled. If both or no x-axis are enabled, the picker
-  is set to QwtPlot::xBottom. If both or no y-axis are
-  enabled, it is set to QwtPlot::yLeft.
-
-  \param canvas Plot canvas to observe, also the parent object
-
-  \warning Calling QwtPlot::setAxisScale() while QwtPlot::autoReplot() is false
-           leaves the axis in an 'intermediate' state.
-           In this case, to prevent buggy behaviour, you must call
-           QwtPlot::replot() before calling QwtPlotPicker().
-           This quirk will be removed in a future release.
-
-  \sa QwtPlot::autoReplot(), QwtPlot::replot(), QwtPlotPicker::scaleRect()
-*/
-  
-QwtPlotPicker::QwtPlotPicker(QwtPlotCanvas *canvas):
-    QwtPicker(canvas),
-    d_xAxis(-1),
-    d_yAxis(-1)
-{
-    if ( !canvas )
-        return;
-
-    // attach axes
-
-    int xAxis = QwtPlot::xBottom;
-
-    const QwtPlot *plot = QwtPlotPicker::plot();
-    if ( !plot->axisEnabled(QwtPlot::xBottom) &&
-        plot->axisEnabled(QwtPlot::xTop) )
-    {
-        xAxis = QwtPlot::xTop;
-    }
-
-    int yAxis = QwtPlot::yLeft;
-    if ( !plot->axisEnabled(QwtPlot::yLeft) &&
-        plot->axisEnabled(QwtPlot::yRight) )
-    {
-        yAxis = QwtPlot::yRight;
-    }
-
-    setAxis(xAxis, yAxis);
-}
-
-/*!
-  Create a plot picker
-
-  \param xAxis Set the x axis of the picker
-  \param yAxis Set the y axis of the picker
-  \param canvas Plot canvas to observe, also the parent object
-
-  \warning Calling QwtPlot::setAxisScale() while QwtPlot::autoReplot() is false
-           leaves the axis in an 'intermediate' state.
-           In this case, to prevent buggy behaviour, you must call
-           QwtPlot::replot() before calling QwtPlotPicker().
-           This quirk will be removed in a future release.
-
-  \sa QwtPlot::autoReplot(), QwtPlot::replot(), QwtPlotPicker::scaleRect()
-*/
-QwtPlotPicker::QwtPlotPicker(int xAxis, int yAxis, QwtPlotCanvas *canvas):
-    QwtPicker(canvas),
-    d_xAxis(xAxis),
-    d_yAxis(yAxis)
-{
-}
-
-/*!
-  Create a plot picker
-
-  \param xAxis X axis of the picker
-  \param yAxis Y axis of the picker
-  \param selectionFlags Or�d value of SelectionType, RectSelectionType and
-                        SelectionMode
-  \param rubberBand Rubberband style
-  \param trackerMode Tracker mode
-  \param canvas Plot canvas to observe, also the parent object
-
-  \sa QwtPicker, QwtPicker::setSelectionFlags(), QwtPicker::setRubberBand(),
-      QwtPicker::setTrackerMode
-
-  \warning Calling QwtPlot::setAxisScale() while QwtPlot::autoReplot() is false
-           leaves the axis in an 'intermediate' state.
-           In this case, to prevent buggy behaviour, you must call
-           QwtPlot::replot() before calling QwtPlotPicker().
-           This quirk will be removed in a future release.
-
-  \sa QwtPlot::autoReplot(), QwtPlot::replot(), QwtPlotPicker::scaleRect()
-*/
-QwtPlotPicker::QwtPlotPicker(int xAxis, int yAxis, int selectionFlags,
-        RubberBand rubberBand, DisplayMode trackerMode,
-        QwtPlotCanvas *canvas):
-    QwtPicker(selectionFlags, rubberBand, trackerMode, canvas),
-    d_xAxis(xAxis),
-    d_yAxis(yAxis)
-{
-}
-
-//! Return observed plot canvas
-QwtPlotCanvas *QwtPlotPicker::canvas()
-{
-    QWidget *w = parentWidget();
-    if ( w && w->inherits("QwtPlotCanvas") )
-        return (QwtPlotCanvas *)w;
-
-    return NULL;
-}
-
-//! Return Observed plot canvas
-const QwtPlotCanvas *QwtPlotPicker::canvas() const
-{
-    return ((QwtPlotPicker *)this)->canvas();
-}
-
-//! Return plot widget, containing the observed plot canvas
-QwtPlot *QwtPlotPicker::plot()
-{
-    QObject *w = canvas();
-    if ( w )
-    {
-        w = w->parent();
-        if ( w && w->inherits("QwtPlot") )
-            return (QwtPlot *)w;
-    }
-
-    return NULL;
-}
-
-//! Return plot widget, containing the observed plot canvas
-const QwtPlot *QwtPlotPicker::plot() const
-{
-    return ((QwtPlotPicker *)this)->plot();
-}
-
-/*!
-  Return normalized bounding rect of the axes
-
-  \warning Calling QwtPlot::setAxisScale() while QwtPlot::autoReplot() is false
-           leaves the axis in an 'intermediate' state.
-           In this case, to prevent buggy behaviour, you must call
-           QwtPlot::replot() before calling QwtPlotPicker::scaleRect().
-           This quirk will be removed in a future release.
-
-  \sa QwtPlot::autoReplot(), QwtPlot::replot().
-*/
-QwtDoubleRect QwtPlotPicker::scaleRect() const
-{
-    const QwtScaleDiv *xs = plot()->axisScaleDiv(xAxis());
-    const QwtScaleDiv *ys = plot()->axisScaleDiv(yAxis());
-
-    const QwtDoubleRect rect( xs->lBound(), ys->lBound(), 
-        xs->range(), ys->range() );
-
-    return rect.normalized();
-}
-
-/*!
-  Set the x and y axes of the picker
-
-  \param xAxis X axis
-  \param yAxis Y axis
-*/
-void QwtPlotPicker::setAxis(int xAxis, int yAxis)
-{
-    const QwtPlot *plt = plot();
-    if ( !plt )
-        return;
-
-    if ( xAxis != d_xAxis || yAxis != d_yAxis )
-    {
-        d_xAxis = xAxis;
-        d_yAxis = yAxis;
-    }
-}
-
-//! Return x axis
-int QwtPlotPicker::xAxis() const
-{
-    return d_xAxis;
-}
-
-//! Return y axis
-int QwtPlotPicker::yAxis() const
-{
-    return d_yAxis;
-}
-
-/*!
-  Translate a pixel position into a position string
-
-  \param pos Position in pixel coordinates
-  \return Position string
-*/
-QwtText QwtPlotPicker::trackerText(const QPoint &pos) const
-{
-    return trackerText(invTransform(pos));
-}
-
-/*!
-  \brief Translate a position into a position string
-
-  In case of HLineRubberBand the label is the value of the
-  y position, in case of VLineRubberBand the value of the x position.
-  Otherwise the label contains x and y position separated by a �, �.
-
-  The format for the double to string conversion is "%.4f".
-
-  \param pos Position
-  \return Position string
-*/
-QwtText QwtPlotPicker::trackerText(const QwtDoublePoint &pos) const
-{
-    switch(rubberBand())
-    {
-        case HLineRubberBand:
-            return QString().sprintf("%.4f", pos.y());
-        case VLineRubberBand:
-            return QString().sprintf("%.4f", pos.x());
-        default:
-            return QString().sprintf("%.4f, %.4f", pos.x(), pos.y());
-    }
-    return QwtText(); // make some dumb compilers happy
-}
-
-/*! 
-  Append a point to the selection and update rubberband and tracker.
-    
-  \param pos Additional point
-  \sa isActive, begin(), end(), move(), appended()
-
-  \note The appended(const QPoint &), appended(const QDoublePoint &) 
-        signals are emitted.
-*/
-void QwtPlotPicker::append(const QPoint &pos)
-{
-    QwtPicker::append(pos);
-    emit appended(invTransform(pos));
-}
-
-/*!
-  Move the last point of the selection
-
-  \param pos New position
-  \sa isActive, begin(), end(), append()
-
-  \note The moved(const QPoint &), moved(const QDoublePoint &) 
-        signals are emitted.
-*/
-void QwtPlotPicker::move(const QPoint &pos)
-{
-    QwtPicker::move(pos);
-    emit moved(invTransform(pos));
-}
-
-/*!
-  Close a selection setting the state to inactive.
-
-  \param ok If true, complete the selection and emit selected signals
-            otherwise discard the selection.
-  \return true if the selection is accepted, false otherwise
-*/
-
-bool QwtPlotPicker::end(bool ok)
-{
-    ok = QwtPicker::end(ok);
-    if ( !ok )
-        return false;
-
-    QwtPlot *plot = QwtPlotPicker::plot();
-    if ( !plot )
-        return false;
-
-    const SelectedPoints &pa = selection();
-    if ( pa.count() == 0 )
-        return false;
-
-    if ( selectionFlags() & PointSelection )
-    {
-        const QwtDoublePoint pos = invTransform(pa[0]);
-        emit selected(pos);
-    }
-    else if ( (selectionFlags() & RectSelection) && pa.count() >= 2 )
-    {
-        QPoint p1 = pa[0];
-        QPoint p2 = pa[int(pa.count() - 1)];
-
-        if ( selectionFlags() & CenterToCorner )
-        {
-            p1.setX(p1.x() - (p2.x() - p1.x()));
-            p1.setY(p1.y() - (p2.y() - p1.y()));
-        }
-        else if ( selectionFlags() & CenterToRadius )
-        {
-            const int radius = qwtMax(qwtAbs(p2.x() - p1.x()),
-                qwtAbs(p2.y() - p1.y()));
-            p2.setX(p1.x() + radius);
-            p2.setY(p1.y() + radius);
-            p1.setX(p1.x() - radius);
-            p1.setY(p1.y() - radius);
-        }
-
-        emit selected(invTransform(QRect(p1, p2)).normalized());
-    }
-    else 
-    {
-        QwtArray<QwtDoublePoint> dpa(pa.count());
-        for ( int i = 0; i < int(pa.count()); i++ )
-            dpa[i] = invTransform(pa[i]);
-
-        emit selected(dpa);
-    }
-
-    return true;
-}
-
-/*!
-    Translate a rectangle from pixel into plot coordinates
-
-    \return Rectangle in plot coordinates
-    \sa QwtPlotPicker::transform()
-*/
-QwtDoubleRect QwtPlotPicker::invTransform(const QRect &rect) const
-{
-    QwtScaleMap xMap = plot()->canvasMap(d_xAxis);
-    QwtScaleMap yMap = plot()->canvasMap(d_yAxis);
-
-    const double left = xMap.invTransform(rect.left());
-    const double right = xMap.invTransform(rect.right());
-    const double top = yMap.invTransform(rect.top());
-    const double bottom = yMap.invTransform(rect.bottom());
-
-    return QwtDoubleRect(left, top,
-        right - left, bottom - top);
-}
-
-/*!
-    Translate a rectangle from plot into pixel coordinates
-    \return Rectangle in pixel coordinates
-    \sa QwtPlotPicker::invTransform()
-*/
-QRect QwtPlotPicker::transform(const QwtDoubleRect &rect) const
-{
-    QwtScaleMap xMap = plot()->canvasMap(d_xAxis);
-    QwtScaleMap yMap = plot()->canvasMap(d_yAxis);
-
-    const int left = xMap.transform(rect.left());
-    const int right = xMap.transform(rect.right());
-    const int top = yMap.transform(rect.top());
-    const int bottom = yMap.transform(rect.bottom());
-
-    return QRect(left, top, right - left, bottom - top);
-}
-
-/*!
-    Translate a point from pixel into plot coordinates
-    \return Point in plot coordinates
-    \sa QwtPlotPicker::transform()
-*/
-QwtDoublePoint QwtPlotPicker::invTransform(const QPoint &pos) const
-{
-    QwtScaleMap xMap = plot()->canvasMap(d_xAxis);
-    QwtScaleMap yMap = plot()->canvasMap(d_yAxis);
-
-    return QwtDoublePoint(
-        xMap.invTransform(pos.x()),
-        yMap.invTransform(pos.y())
-    );
-}
-
-/*!
-    Translate a point from plot into pixel coordinates
-    \return Point in pixel coordinates
-    \sa QwtPlotPicker::invTransform()
-*/
-QPoint QwtPlotPicker::transform(const QwtDoublePoint &pos) const
-{
-    QwtScaleMap xMap = plot()->canvasMap(d_xAxis);
-    QwtScaleMap yMap = plot()->canvasMap(d_yAxis);
-
-    return QPoint(
-        xMap.transform(pos.x()),
-        yMap.transform(pos.y())
-    );
-}
diff --git a/src/qwt/qwt_plot_print.cpp b/src/qwt/qwt_plot_print.cpp
deleted file mode 100644
index 46f1eb8..0000000
--- a/src/qwt/qwt_plot_print.cpp
+++ /dev/null
@@ -1,487 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-// vim: expandtab
-
-#include <qpainter.h>
-#if QT_VERSION < 0x040000
-#include <qpaintdevicemetrics.h>
-#else
-#include <qpaintengine.h>
-#endif
-#include "qwt_painter.h"
-#include "qwt_legend_item.h"
-#include "qwt_plot.h"
-#include "qwt_plot_canvas.h"
-#include "qwt_plot_layout.h"
-#include "qwt_legend.h"
-#include "qwt_rect.h"
-#include "qwt_dyngrid_layout.h"
-#include "qwt_scale_widget.h"
-#include "qwt_scale_engine.h"
-#include "qwt_text.h"
-#include "qwt_text_label.h"
-#include "qwt_math.h"
-
-/*!
-  \brief Print the plot to a \c QPaintDevice (\c QPrinter)
-  This function prints the contents of a QwtPlot instance to
-  \c QPaintDevice object. The size is derived from its device
-  metrics.
-
-  \param paintDev device to paint on, often a printer
-  \param pfilter print filter
-  \sa QwtPlot::print
-  \sa QwtPlotPrintFilter
-*/
-
-void QwtPlot::print(QPaintDevice &paintDev,
-   const QwtPlotPrintFilter &pfilter) const
-{
-#if QT_VERSION < 0x040000
-    QPaintDeviceMetrics mpr(&paintDev);
-    int w = mpr.width();
-    int h = mpr.height();
-#else
-    int w = paintDev.width();
-    int h = paintDev.height();
-#endif
-
-    QRect rect(0, 0, w, h);
-    double aspect = double(rect.width())/double(rect.height());
-    if ((aspect < 1.0))
-        rect.setHeight(int(aspect*rect.width()));
-
-    QPainter p(&paintDev);
-    print(&p, rect, pfilter);
-}
-
-/*!
-  \brief Paint the plot into a given rectangle.
-  Paint the contents of a QwtPlot instance into a given rectangle.
-
-  \param painter Painter
-  \param plotRect Bounding rectangle
-  \param pfilter Print filter
-  \sa QwtPlotPrintFilter
-*/
-void QwtPlot::print(QPainter *painter, const QRect &plotRect,
-        const QwtPlotPrintFilter &pfilter) const
-{
-    int axisId;
-
-    if ( painter == 0 || !painter->isActive() ||
-            !plotRect.isValid() || size().isNull() )
-       return;
-
-    painter->save();
-
-    // All paint operations need to be scaled according to
-    // the paint device metrics. 
-
-    QwtPainter::setMetricsMap(this, painter->device());
-    const QwtMetricsMap &metricsMap = QwtPainter::metricsMap();
-
-    // It is almost impossible to integrate into the Qt layout
-    // framework, when using different fonts for printing
-    // and screen. To avoid writing different and Qt unconform
-    // layout engines we change the widget attributes, print and 
-    // reset the widget attributes again. This way we produce a lot of
-    // useless layout events ...
-
-    pfilter.apply((QwtPlot *)this);
-
-    int baseLineDists[QwtPlot::axisCnt];
-    if ( !(pfilter.options() & QwtPlotPrintFilter::PrintCanvasBackground) )
-    {
-        // In case of no background we set the backbone of
-        // the scale on the frame of the canvas.
-
-        for (axisId = 0; axisId < QwtPlot::axisCnt; axisId++ )
-        {
-            QwtScaleWidget *scaleWidget = (QwtScaleWidget *)axisWidget(axisId);
-            if ( scaleWidget )
-            {
-                baseLineDists[axisId] = scaleWidget->baseLineDist();
-                scaleWidget->setBaselineDist(0);
-            }
-        }
-    }
-    // Calculate the layout for the print.
-
-    int layoutOptions = QwtPlotLayout::IgnoreScrollbars 
-        | QwtPlotLayout::IgnoreFrames;
-    if ( !(pfilter.options() & QwtPlotPrintFilter::PrintMargin) )
-        layoutOptions |= QwtPlotLayout::IgnoreMargin;
-    if ( !(pfilter.options() & QwtPlotPrintFilter::PrintLegend) )
-        layoutOptions |= QwtPlotLayout::IgnoreLegend;
-
-    ((QwtPlot *)this)->plotLayout()->activate(this, 
-        QwtPainter::metricsMap().deviceToLayout(plotRect), 
-        layoutOptions);
-
-    if ((pfilter.options() & QwtPlotPrintFilter::PrintTitle)
-        && (!titleLabel()->text().isEmpty()))
-    {
-        printTitle(painter, plotLayout()->titleRect());
-    }
-
-    if ( (pfilter.options() & QwtPlotPrintFilter::PrintLegend)
-        && legend() && !legend()->isEmpty() )
-    {
-        printLegend(painter, plotLayout()->legendRect());
-    }
-
-    for ( axisId = 0; axisId < QwtPlot::axisCnt; axisId++ )
-    {
-        QwtScaleWidget *scaleWidget = (QwtScaleWidget *)axisWidget(axisId);
-        if (scaleWidget)
-        {
-            int baseDist = scaleWidget->baseLineDist();
-
-            int startDist, endDist;
-            scaleWidget->getBorderDistHint(startDist, endDist);
-
-            printScale(painter, axisId, startDist, endDist,
-                baseDist, plotLayout()->scaleRect(axisId));
-        }
-    }
-
-    const QRect canvasRect = metricsMap.layoutToDevice(plotLayout()->canvasRect());
-
-    // When using QwtPainter all sizes where computed in pixel
-    // coordinates and scaled by QwtPainter later. This limits
-    // the precision to screen resolution. A much better solution
-    // is to scale the maps and print in unlimited resolution.
-
-    QwtArray<QwtScaleMap> map(axisCnt);
-    for (axisId = 0; axisId < axisCnt; axisId++)
-    {
-        map[axisId].setTransformation(axisScaleEngine(axisId)->transformation());
-
-        const QwtScaleDiv &scaleDiv = *axisScaleDiv(axisId);
-        map[axisId].setScaleInterval(scaleDiv.lBound(), scaleDiv.hBound());
-
-        double from, to;
-        if ( axisEnabled(axisId) )
-        {
-            const int sDist = axisWidget(axisId)->startBorderDist();
-            const int eDist = axisWidget(axisId)->endBorderDist();
-            const QRect &scaleRect = plotLayout()->scaleRect(axisId);
-
-            if ( axisId == xTop || axisId == xBottom )
-            {
-                from = metricsMap.layoutToDeviceX(scaleRect.left() + sDist);
-                to = metricsMap.layoutToDeviceX(scaleRect.right() - eDist);
-            }
-            else
-            {
-                from = metricsMap.layoutToDeviceY(scaleRect.bottom() - sDist);
-                to = metricsMap.layoutToDeviceY(scaleRect.top() + eDist);
-            }
-        }
-        else
-        {
-            const int margin = plotLayout()->canvasMargin(axisId);
-
-            const QRect &canvasRect = plotLayout()->canvasRect();
-            if ( axisId == yLeft || axisId == yRight )
-            {
-                from = metricsMap.layoutToDeviceX(canvasRect.bottom() - margin);
-                to = metricsMap.layoutToDeviceX(canvasRect.top() + margin);
-            }
-            else
-            {
-                from = metricsMap.layoutToDeviceY(canvasRect.left() + margin);
-                to = metricsMap.layoutToDeviceY(canvasRect.right() - margin);
-            }
-        }
-        map[axisId].setPaintXInterval(from, to);
-    }
-
-
-    // The canvas maps are already scaled. 
-    QwtPainter::setMetricsMap(painter->device(), painter->device());
-
-    printCanvas(painter, canvasRect, map, pfilter);
-
-    QwtPainter::resetMetricsMap();
-
-    ((QwtPlot *)this)->plotLayout()->invalidate();
-
-    // reset all widgets with their original attributes.
-    if ( !(pfilter.options() & QwtPlotPrintFilter::PrintCanvasBackground) )
-    {
-        // restore the previous base line dists
-
-        for (axisId = 0; axisId < QwtPlot::axisCnt; axisId++ )
-        {
-            QwtScaleWidget *scaleWidget = (QwtScaleWidget *)axisWidget(axisId);
-            if ( scaleWidget  )
-                scaleWidget->setBaselineDist(baseLineDists[axisId]);
-        }
-    }
-
-    pfilter.reset((QwtPlot *)this);
-
-    painter->restore();
-}
-
-/*!
-  Print the title into a given rectangle.
-
-  \param painter Painter
-  \param rect Bounding rectangle
-*/
-
-void QwtPlot::printTitle(QPainter *painter, const QRect &rect) const
-{
-    painter->setFont(titleLabel()->font());
-
-    const QColor color = 
-#if QT_VERSION < 0x040000
-        titleLabel()->palette().color(
-            QPalette::Active, QColorGroup::Text);
-#else
-        titleLabel()->palette().color(
-            QPalette::Active, QPalette::Text);
-#endif
-
-    painter->setPen(color);
-    titleLabel()->text().draw(painter, rect);
-}
-
-/*!
-  Print the legend into a given rectangle.
-
-  \param painter Painter
-  \param rect Bounding rectangle
-*/
-
-void QwtPlot::printLegend(QPainter *painter, const QRect &rect) const
-{
-    if ( !legend() || legend()->isEmpty() )
-        return;
-
-    QLayout *l = legend()->contentsWidget()->layout();
-    if ( l == 0 || !l->inherits("QwtDynGridLayout") )
-        return;
-
-    QwtDynGridLayout *legendLayout = (QwtDynGridLayout *)l;
-
-    uint numCols = legendLayout->columnsForWidth(rect.width());
-#if QT_VERSION < 0x040000
-    QValueList<QRect> itemRects = 
-        legendLayout->layoutItems(rect, numCols);
-#else
-    QList<QRect> itemRects = 
-        legendLayout->layoutItems(rect, numCols);
-#endif
-
-    int index = 0;
-
-#if QT_VERSION < 0x040000
-    QLayoutIterator layoutIterator = legendLayout->iterator();
-    for ( QLayoutItem *item = layoutIterator.current(); 
-        item != 0; item = ++layoutIterator)
-    {
-#else
-    for ( int i = 0; i < legendLayout->count(); i++ )
-    {
-        QLayoutItem *item = legendLayout->itemAt(i);
-#endif
-        QWidget *w = item->widget();
-        if ( w )
-        {
-            painter->save();
-            painter->setClipping(true);
-            QwtPainter::setClipRect(painter, itemRects[index]);
-
-            printLegendItem(painter, w, itemRects[index]);
-
-            index++;
-            painter->restore();
-        }
-    }
-}
-
-/*!
-  Print the legend item into a given rectangle.
-
-  \param painter Painter
-  \param w Widget representing a legend item
-  \param rect Bounding rectangle
-*/
-
-void QwtPlot::printLegendItem(QPainter *painter, 
-    const QWidget *w, const QRect &rect) const
-{
-    if ( w->inherits("QwtLegendItem") )
-    {
-        QwtLegendItem *item = (QwtLegendItem *)w;
-
-        painter->setFont(item->font());
-        item->drawItem(painter, rect);
-    }
-}
-
-/*!
-  \brief Paint a scale into a given rectangle.
-  Paint the scale into a given rectangle.
-
-  \param painter Painter
-  \param axisId Axis
-  \param startDist Start border distance
-  \param endDist End border distance
-  \param baseDist Base distance
-  \param rect Bounding rectangle
-*/
-
-void QwtPlot::printScale(QPainter *painter,
-    int axisId, int startDist, int endDist, int baseDist, 
-    const QRect &rect) const
-{
-    if (!axisEnabled(axisId))
-        return;
-
-    QwtScaleDraw::Alignment align;
-    int x, y, w;
-
-    switch(axisId)
-    {
-        case yLeft:
-        {
-            x = rect.right() - baseDist + 1;
-            y = rect.y() + startDist;
-            w = rect.height() - startDist - endDist;
-            align = QwtScaleDraw::LeftScale;
-            break;
-        }
-        case yRight:
-        {
-            x = rect.left() + baseDist;
-            y = rect.y() + startDist;
-            w = rect.height() - startDist - endDist;
-            align = QwtScaleDraw::RightScale;
-            break;
-        }
-        case xTop:
-        {
-            x = rect.left() + startDist;
-            y = rect.bottom() - baseDist + 1;
-            w = rect.width() - startDist - endDist;
-            align = QwtScaleDraw::TopScale;
-            break;
-        }
-        case xBottom:
-        {
-            x = rect.left() + startDist;
-            y = rect.top() + baseDist;
-            w = rect.width() - startDist - endDist;
-            align = QwtScaleDraw::BottomScale;
-            break;
-        }
-        default:
-            return;
-    }
-
-    const QwtScaleWidget *scaleWidget = axisWidget(axisId);
-    scaleWidget->drawTitle(painter, align, rect);
-
-    painter->save();
-    painter->setFont(scaleWidget->font());
-
-    QwtScaleDraw *sd = (QwtScaleDraw *)scaleWidget->scaleDraw();
-    const QPoint sdPos = sd->pos();
-    const int sdLength = sd->length();
-
-    sd->move(x, y);
-    sd->setLength(w);
-
-#if QT_VERSION < 0x040000
-    sd->draw(painter, scaleWidget->palette().active());
-#else
-    QPalette palette = scaleWidget->palette();
-    palette.setCurrentColorGroup(QPalette::Active);
-    sd->draw(painter, palette);
-#endif
-    // reset previous values
-    sd->move(sdPos); 
-    sd->setLength(sdLength); 
-
-    painter->restore();
-}
-
-/*!
-  Print the canvas into a given rectangle.
-
-  \param painter Painter
-  \param map Maps mapping between plot and paint device coordinates
-  \param canvasRect Bounding rectangle
-  \param pfilter Print filter
-  \sa QwtPlotPrintFilter
-*/
-
-void QwtPlot::printCanvas(QPainter *painter, const QRect &canvasRect,
-    const QwtArray<QwtScaleMap> &map, const QwtPlotPrintFilter &pfilter) const
-{
-    if ( pfilter.options() & QwtPlotPrintFilter::PrintCanvasBackground )
-    {
-        painter->setPen(Qt::NoPen);
-
-        QBrush bgBrush;
-#if QT_VERSION >= 0x040000
-            bgBrush = canvas()->palette().brush(backgroundRole());
-#else
-        QColorGroup::ColorRole role =
-            QPalette::backgroundRoleFromMode( backgroundMode() ); 
-        bgBrush = canvas()->colorGroup().brush( role );
-#endif
-        painter->setBrush(bgBrush);
-        
-        int x1 = 0;
-        int x2 = 0;
-        int y1 = 0;
-        int y2 = 0;
-
-#if QT_VERSION >= 0x040000
-        switch(painter->device()->paintEngine()->type())
-        {
-            case QPaintEngine::PostScript:
-                x2 = 1;
-                y2 = 1;
-                break;
-            default:;
-        }
-#endif
-
-        const QwtMetricsMap map = QwtPainter::metricsMap();
-        x1 = map.screenToLayoutX(x1);
-        x2 = map.screenToLayoutX(x2);
-        y1 = map.screenToLayoutY(y1);
-        y2 = map.screenToLayoutY(y2);
-
-        QwtPainter::drawRect(painter, 
-            canvasRect.x() + x1, canvasRect.y() + y1, 
-            canvasRect.width() - x2, canvasRect.height() - y2); 
-    }
-    else
-    {
-        // Paint the canvas borders instead.
-        painter->setPen(QPen(Qt::black));
-        painter->setBrush(QBrush(Qt::NoBrush));
-        QwtPainter::drawRect(painter, canvasRect); 
-    }
-
-
-    painter->setClipping(true);
-    QwtPainter::setClipRect(painter, canvasRect);
-
-    drawItems(painter, canvasRect, map, pfilter);
-}
diff --git a/src/qwt/qwt_plot_printfilter.cpp b/src/qwt/qwt_plot_printfilter.cpp
deleted file mode 100644
index 93d8047..0000000
--- a/src/qwt/qwt_plot_printfilter.cpp
+++ /dev/null
@@ -1,593 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- * 
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-// vim: expandtab
-
-#include <qmap.h>
-#include "qwt_plot.h"
-#include "qwt_plot_grid.h"
-#include "qwt_plot_curve.h"
-#include "qwt_plot_marker.h"
-#include "qwt_symbol.h"
-#include "qwt_legend.h"
-#include "qwt_legend_item.h"
-#include "qwt_scale_widget.h"
-#include "qwt_text_label.h"
-#include "qwt_plot_printfilter.h"
-
-#if QT_VERSION < 0x040000
-typedef QColorGroup Palette;
-#else
-typedef QPalette Palette;
-#endif
-
-class QwtPlotPrintFilter::PrivateData
-{
-public:
-    PrivateData():
-        options(QwtPlotPrintFilter::PrintAll),
-        cache(NULL)
-    {
-    }
-
-    ~PrivateData()
-    {
-        delete cache;
-    }
-
-    class Cache
-    {
-    public:
-        QColor titleColor;
-        QFont titleFont;
-
-        QwtText scaleTitle[QwtPlot::axisCnt];
-        QColor scaleColor[QwtPlot::axisCnt];
-        QFont scaleFont[QwtPlot::axisCnt];
-        QColor scaleTitleColor[QwtPlot::axisCnt];
-        QFont scaleTitleFont[QwtPlot::axisCnt];
-
-        QMap<QWidget *, QFont> legendFonts;
-
-        QColor widgetBackground;
-        QColor canvasBackground;
-        QColor gridColors[2];
-
-        QMap<const QwtPlotItem *, QColor> curveColors;
-        QMap<const QwtPlotItem *, QColor> curveSymbolBrushColors;
-        QMap<const QwtPlotItem *, QColor> curveSymbolPenColors;
-
-        QMap<const QwtPlotItem *, QFont> markerFonts;
-        QMap<const QwtPlotItem *, QColor> markerLabelColors;
-        QMap<const QwtPlotItem *, QColor> markerLineColors;
-        QMap<const QwtPlotItem *, QColor> markerSymbolBrushColors;
-        QMap<const QwtPlotItem *, QColor> markerSymbolPenColors;
-    };
-
-    int options;
-    mutable Cache *cache;
-};
-
-
-/*!
-  Sets filter options to QwtPlotPrintFilter::PrintAll
-*/  
-
-QwtPlotPrintFilter::QwtPlotPrintFilter()
-{
-    d_data = new PrivateData;
-}
-
-//! Destructor
-QwtPlotPrintFilter::~QwtPlotPrintFilter()
-{
-    delete d_data;
-}
-
-/*!
-  \brief Set plot print options
-  \param options Or'd QwtPlotPrintFilter::Options values
-
-  \sa QwtPlotPrintFilter::options()
-*/
-void QwtPlotPrintFilter::setOptions(int options) 
-{ 
-    d_data->options = options; 
-}
-
-/*! 
-  \brief Get plot print options
-  \sa QwtPlotPrintFilter::setOptions()
-*/
-int QwtPlotPrintFilter::options() const 
-{ 
-    return d_data->options; 
-}
-
-/*!
-  \brief Modifies a color for printing
-  \param c Color to be modified
-  \param item Type of item where the color belongs
-  \return Modified color.
-
-  In case of !(QwtPlotPrintFilter::options() & PrintBackground) 
-  MajorGrid is modified to Qt::darkGray, MinorGrid to Qt::gray. 
-  All other colors are returned unmodified.
-*/
-
-QColor QwtPlotPrintFilter::color(const QColor &c, Item item) const
-{
-    if ( !(options() & PrintCanvasBackground))
-    {
-        switch(item)
-        {
-            case MajorGrid:
-                return Qt::darkGray;
-            case MinorGrid:
-                return Qt::gray;
-            default:;
-        }
-    }
-    return c;
-}
-
-/*!
-  \brief Modifies a font for printing
-  \param f Font to be modified
-  \param item Type of item where the font belongs
-
-  All fonts are returned unmodified
-*/
-
-QFont QwtPlotPrintFilter::font(const QFont &f, Item) const
-{
-    return f;
-}
-
-/*! 
-  Change color and fonts of a plot
-  \sa QwtPlotPrintFilter::apply
-*/
-void QwtPlotPrintFilter::apply(QwtPlot *plot) const
-{
-    const bool doAutoReplot = plot->autoReplot();
-    plot->setAutoReplot(false);
-
-    delete d_data->cache;
-    d_data->cache = new PrivateData::Cache;
-
-    PrivateData::Cache &cache = *d_data->cache;
-
-    if ( plot->titleLabel() )
-    {
-        QPalette palette = plot->titleLabel()->palette();
-        cache.titleColor = palette.color(
-            QPalette::Active, Palette::Text);
-        palette.setColor(QPalette::Active, Palette::Text,
-                         color(cache.titleColor, Title));
-        plot->titleLabel()->setPalette(palette);
-
-        cache.titleFont = plot->titleLabel()->font();
-        plot->titleLabel()->setFont(font(cache.titleFont, Title));
-    }
-    if ( plot->legend() )
-    {
-#if QT_VERSION < 0x040000
-        QValueList<QWidget *> list = plot->legend()->legendItems();
-        for ( QValueListIterator<QWidget *> it = list.begin();
-            it != list.end(); ++it )
-#else
-        QList<QWidget *> list = plot->legend()->legendItems();
-        for ( QList<QWidget*>::iterator it = list.begin();
-            it != list.end(); ++it )
-#endif
-        {
-            QWidget *w = *it;
-
-            cache.legendFonts.insert(w, w->font());
-            w->setFont(font(w->font(), Legend));
-
-            if ( w->inherits("QwtLegendItem") )
-            {
-                QwtLegendItem *label = (QwtLegendItem *)w;
-
-                QwtSymbol symbol = label->symbol();
-                QPen pen = symbol.pen();
-                QBrush brush = symbol.brush();
-
-                pen.setColor(color(pen.color(), CurveSymbol));
-                brush.setColor(color(brush.color(), CurveSymbol));
-
-                symbol.setPen(pen);
-                symbol.setBrush(brush);
-                label->setSymbol(symbol);
-
-                pen = label->curvePen();
-                pen.setColor(color(pen.color(), Curve));
-                label->setCurvePen(pen);
-            }
-        }
-    }
-    for ( int axis = 0; axis < QwtPlot::axisCnt; axis++ )
-    {
-        QwtScaleWidget *scaleWidget = plot->axisWidget(axis);
-        if ( scaleWidget )
-        {
-            cache.scaleColor[axis] = scaleWidget->palette().color(
-                QPalette::Active, Palette::Foreground);
-            QPalette palette = scaleWidget->palette();
-            palette.setColor(QPalette::Active, Palette::Foreground,
-                             color(cache.scaleColor[axis], AxisScale));
-            scaleWidget->setPalette(palette);
-
-            cache.scaleFont[axis] = scaleWidget->font();
-            scaleWidget->setFont(font(cache.scaleFont[axis], AxisScale));
-
-            cache.scaleTitle[axis] = scaleWidget->title();
-
-            QwtText scaleTitle = scaleWidget->title();
-            if ( scaleTitle.paintAttributes() & QwtText::PaintUsingTextColor )
-            {
-                cache.scaleTitleColor[axis] = scaleTitle.color();
-                scaleTitle.setColor(
-                    color(cache.scaleTitleColor[axis], AxisTitle));
-            }
-
-            if ( scaleTitle.paintAttributes() & QwtText::PaintUsingTextFont )
-            {
-                cache.scaleTitleFont[axis] = scaleTitle.font();
-                scaleTitle.setFont(
-                    font(cache.scaleTitleFont[axis], AxisTitle));
-            }
-
-            scaleWidget->setTitle(scaleTitle);
-
-            int startDist, endDist;
-            scaleWidget->getBorderDistHint(startDist, endDist);
-            scaleWidget->setBorderDist(startDist, endDist);
-        }
-    }
-
-
-    QPalette p = plot->palette();
-    cache.widgetBackground = plot->palette().color(
-        QPalette::Active, Palette::Background);
-    p.setColor(QPalette::Active, Palette::Background, 
-        color(cache.widgetBackground, WidgetBackground));
-    plot->setPalette(p);
-
-    cache.canvasBackground = plot->canvasBackground();
-    plot->setCanvasBackground(color(cache.canvasBackground, CanvasBackground));
-
-    const QwtPlotItemList& itmList = plot->itemList();
-    for ( QwtPlotItemIterator it = itmList.begin();
-        it != itmList.end(); ++it )
-    {
-        apply(*it);
-    }
-
-    plot->setAutoReplot(doAutoReplot);
-}
-
-void QwtPlotPrintFilter::apply(QwtPlotItem *item) const
-{
-    PrivateData::Cache &cache = *d_data->cache;
-
-    switch(item->rtti())
-    {
-        case QwtPlotItem::Rtti_PlotGrid:
-        {
-            QwtPlotGrid *grid = (QwtPlotGrid *)item;
-
-            QPen pen = grid->majPen();
-            cache.gridColors[0] = pen.color();
-            pen.setColor(color(pen.color(), MajorGrid));
-            grid->setMajPen(pen);
-
-            pen = grid->minPen();
-            cache.gridColors[1] = pen.color();
-            pen.setColor(color(pen.color(), MinorGrid));
-            grid->setMinPen(pen);
-
-            break;
-        }
-        case QwtPlotItem::Rtti_PlotCurve:
-        {
-            QwtPlotCurve *c = (QwtPlotCurve *)item;
-
-            QwtSymbol symbol = c->symbol();
-
-            QPen pen = symbol.pen();
-            cache.curveSymbolPenColors.insert(c, pen.color());
-            pen.setColor(color(pen.color(), CurveSymbol));
-            symbol.setPen(pen);
-
-            QBrush brush = symbol.brush();
-            cache.curveSymbolBrushColors.insert(c, brush.color());
-            brush.setColor(color(brush.color(), CurveSymbol));
-            symbol.setBrush(brush);
-
-            c->setSymbol(symbol);
-
-            pen = c->pen();
-            cache.curveColors.insert(c, pen.color());
-            pen.setColor(color(pen.color(), Curve));
-            c->setPen(pen);
-
-            break;
-        }
-        case QwtPlotItem::Rtti_PlotMarker:
-        {
-            QwtPlotMarker *m = (QwtPlotMarker *)item;
-
-#ifdef __GNUC__
-#warning filtering of rectPen/rectBrush missing
-#endif
-
-            QwtText label = m->label();
-            cache.markerFonts.insert(m, label.font());
-            label.setFont(font(label.font(), Marker));
-            cache.markerLabelColors.insert(m, label.color());
-            label.setColor(color(label.color(), Marker));
-            m->setLabel(label);
-            
-            QPen pen = m->linePen();
-            cache.markerLineColors.insert(m, pen.color());
-            pen.setColor(color(pen.color(), Marker));
-            m->setLinePen(pen);
-
-            QwtSymbol symbol = m->symbol();
-
-            pen = symbol.pen();
-            cache.markerSymbolPenColors.insert(m, pen.color());
-            pen.setColor(color(pen.color(), MarkerSymbol));
-            symbol.setPen(pen);
-
-            QBrush brush = symbol.brush();
-            cache.markerSymbolBrushColors.insert(m, brush.color());
-            brush.setColor(color(brush.color(), MarkerSymbol));
-            symbol.setBrush(brush);
-
-            m->setSymbol(symbol);
-
-            break;
-        }
-        default:    
-            break;
-    }
-}
-
-/*! 
-   Reset color and fonts of a plot
-   \sa QwtPlotPrintFilter::apply
-*/
-void QwtPlotPrintFilter::reset(QwtPlot *plot) const
-{
-    if ( d_data->cache == 0 )
-        return;
-
-    const bool doAutoReplot = plot->autoReplot();
-    plot->setAutoReplot(false);
-
-    const PrivateData::Cache &cache = *d_data->cache;
-
-    if ( plot->titleLabel() )
-    {
-        QwtTextLabel* title = plot->titleLabel();
-        if ( title->text().paintAttributes() & QwtText::PaintUsingTextFont )
-        {
-            QwtText text = title->text();
-            text.setColor(cache.titleColor);
-            title->setText(text);
-        }
-        else
-        {
-            QPalette palette = title->palette();
-            palette.setColor(
-                QPalette::Active, Palette::Text, cache.titleColor);
-            title->setPalette(palette);
-        }
-
-        if ( title->text().paintAttributes() & QwtText::PaintUsingTextFont )
-        {
-            QwtText text = title->text();
-            text.setFont(cache.titleFont);
-            title->setText(text);
-        }
-        else
-        {
-            title->setFont(cache.titleFont);
-        }
-    }
-
-    if ( plot->legend() )
-    {
-#if QT_VERSION < 0x040000
-        QValueList<QWidget *> list = plot->legend()->legendItems();
-        for ( QValueListIterator<QWidget *> it = list.begin();
-            it != list.end(); ++it )
-#else
-        QList<QWidget *> list = plot->legend()->legendItems();
-        for ( QList<QWidget*>::iterator it = list.begin();
-            it != list.end(); ++it )
-#endif
-        {
-            QWidget *w = *it;
-
-            if ( cache.legendFonts.contains(w) )
-                w->setFont(cache.legendFonts[w]);
-
-            if ( w->inherits("QwtLegendItem") )
-            {
-                QwtLegendItem *label = (QwtLegendItem *)w;
-                const QwtPlotItem *plotItem = plot->legend()->find(label);
-
-                QwtSymbol symbol = label->symbol();
-                if ( cache.curveSymbolPenColors.contains(plotItem) )
-                {
-                    QPen pen = symbol.pen();
-                    pen.setColor(cache.curveSymbolPenColors[plotItem]);
-                    symbol.setPen(pen);
-                }
-
-                if ( cache.curveSymbolBrushColors.contains(plotItem) )
-                {
-                    QBrush brush = symbol.brush();
-                    brush.setColor(cache.curveSymbolBrushColors[plotItem]);
-                    symbol.setBrush(brush);
-                }
-                label->setSymbol(symbol);
-
-                if ( cache.curveColors.contains(plotItem) )
-                {
-                    QPen pen = label->curvePen();
-                    pen.setColor(cache.curveColors[plotItem]);
-                    label->setCurvePen(pen);
-                }
-            }
-        }
-    }
-    for ( int axis = 0; axis < QwtPlot::axisCnt; axis++ )
-    {
-        QwtScaleWidget *scaleWidget = plot->axisWidget(axis);
-        if ( scaleWidget )
-        {
-            QPalette palette = scaleWidget->palette();
-            palette.setColor(QPalette::Active, Palette::Foreground,
-                             cache.scaleColor[axis]);
-            scaleWidget->setPalette(palette);
-
-            scaleWidget->setFont(cache.scaleFont[axis]);
-            scaleWidget->setTitle(cache.scaleTitle[axis]);
-
-            int startDist, endDist;
-            scaleWidget->getBorderDistHint(startDist, endDist);
-            scaleWidget->setBorderDist(startDist, endDist);
-        }
-    }
-
-    QPalette p = plot->palette();
-    p.setColor(QPalette::Active, Palette::Background, cache.widgetBackground);
-    plot->setPalette(p);
-
-    plot->setCanvasBackground(cache.canvasBackground);
-   
-    const QwtPlotItemList& itmList = plot->itemList();
-    for ( QwtPlotItemIterator it = itmList.begin();
-        it != itmList.end(); ++it )
-    {
-        reset(*it);
-    }
-
-    delete d_data->cache;
-    d_data->cache = 0;
-
-    plot->setAutoReplot(doAutoReplot);
-}
-
-void QwtPlotPrintFilter::reset(QwtPlotItem *item) const
-{
-    if ( d_data->cache == 0 )
-        return;
-
-    const PrivateData::Cache &cache = *d_data->cache;
-
-    switch(item->rtti())
-    {
-        case QwtPlotItem::Rtti_PlotGrid:
-        {
-            QwtPlotGrid *grid = (QwtPlotGrid *)item;
-
-            QPen pen = grid->majPen();
-            pen.setColor(cache.gridColors[0]);
-            grid->setMajPen(pen);
-
-            pen = grid->minPen();
-            pen.setColor(cache.gridColors[1]);
-            grid->setMinPen(pen);
-
-            break;
-        }
-        case QwtPlotItem::Rtti_PlotCurve:
-        {
-            QwtPlotCurve *c = (QwtPlotCurve *)item;
-
-            QwtSymbol symbol = c->symbol();
-
-            if ( cache.curveSymbolPenColors.contains(c) )
-            {
-                symbol.setPen(cache.curveSymbolPenColors[c]);
-            }
-
-            if ( cache.curveSymbolBrushColors.contains(c) )
-            {
-                QBrush brush = symbol.brush();
-                brush.setColor(cache.curveSymbolBrushColors[c]);
-                symbol.setBrush(brush);
-            }
-            c->setSymbol(symbol);
-
-            if ( cache.curveColors.contains(c) )
-            {
-                QPen pen = c->pen();
-                pen.setColor(cache.curveColors[c]);
-                c->setPen(pen);
-            }
-
-            break;
-        }
-        case QwtPlotItem::Rtti_PlotMarker:
-        {
-            QwtPlotMarker *m = (QwtPlotMarker *)item;
-
-            if ( cache.markerFonts.contains(m) )
-            {
-                QwtText label = m->label();
-                label.setFont(cache.markerFonts[m]);
-                m->setLabel(label);
-            }
-
-            if ( cache.markerLabelColors.contains(m) )
-            {
-                QwtText label = m->label();
-                label.setColor(cache.markerLabelColors[m]);
-                m->setLabel(label);
-            }
-
-            if ( cache.markerLineColors.contains(m) )
-            {
-                QPen pen = m->linePen();
-                pen.setColor(cache.markerLineColors[m]);
-                m->setLinePen(pen);
-            }
-            
-            QwtSymbol symbol = m->symbol();
-
-            if ( cache.markerSymbolPenColors.contains(m) )
-            {
-                QPen pen = symbol.pen();
-                pen.setColor(cache.markerSymbolPenColors[m]);
-                symbol.setPen(pen);
-            }
-
-            if ( cache.markerSymbolBrushColors.contains(m) )
-            {
-                QBrush brush = symbol.brush();
-                brush.setColor(cache.markerSymbolBrushColors[m]);
-                symbol.setBrush(brush);
-            }
-
-            m->setSymbol(symbol);
-
-            break;
-        }
-        default:
-            break;
-    }
-}
diff --git a/src/qwt/qwt_plot_zoomer.cpp b/src/qwt/qwt_plot_zoomer.cpp
deleted file mode 100644
index 0b462d6..0000000
--- a/src/qwt/qwt_plot_zoomer.cpp
+++ /dev/null
@@ -1,637 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-// vim: expandtab
-
-#include <math.h>
-#include "qwt_plot.h"
-#include "qwt_plot_canvas.h"
-#include "qwt_plot_zoomer.h"
-#include "qwt_scale_div.h"
-#if QT_VERSION < 0x040000
-typedef QValueStack<QwtDoubleRect> QwtZoomStack;
-#else
-typedef QStack<QwtDoubleRect> QwtZoomStack;
-#endif
-
-class QwtPlotZoomer::PrivateData
-{
-public:
-    uint zoomRectIndex;
-    QwtZoomStack zoomStack;
-
-    int maxStackDepth;
-};
-
-/*!
-  \brief Create a zoomer for a plot canvas.
-
-  The zoomer is set to those x- and y-axis of the parent plot of the
-  canvas that are enabled. If both or no x-axis are enabled, the picker
-  is set to QwtPlot::xBottom. If both or no y-axis are
-  enabled, it is set to QwtPlot::yLeft.
-
-  The selectionFlags() are set to 
-  QwtPicker::RectSelection & QwtPicker::ClickSelection, the
-  tracker mode to QwtPicker::ActiveOnly.
-
-  \param canvas Plot canvas to observe, also the parent object
-
-  \warning Calling QwtPlot::setAxisScale() while QwtPlot::autoReplot() is false
-           leaves the axis in an 'intermediate' state.
-           In this case, to prevent buggy behaviour, you must call
-           QwtPlot::replot() before calling QwtPlotZoomer().
-           This quirk will be removed in a future release.
-
-  \sa QwtPlot::autoReplot(), QwtPlot::replot(), QwtPlotPicker::setZoomBase()
-*/
-QwtPlotZoomer::QwtPlotZoomer(QwtPlotCanvas *canvas):
-    QwtPlotPicker(canvas)
-{
-    if ( canvas )
-        init();
-}
-
-/*!
-  \brief Create a zoomer for a plot canvas.
-
-  The selectionFlags() are set to 
-  QwtPicker::RectSelection & QwtPicker::ClickSelection, the
-  tracker mode to QwtPicker::ActiveOnly. 
-
-  \param xAxis X axis of the zoomer
-  \param yAxis Y axis of the zoomer
-  \param canvas Plot canvas to observe, also the parent object
-
-  \warning Calling QwtPlot::setAxisScale() while QwtPlot::autoReplot() is false
-           leaves the axis in an 'intermediate' state.
-           In this case, to prevent buggy behaviour, you must call
-           QwtPlot::replot() before calling QwtPlotZoomer().
-           This quirk will be removed in a future release.
-
-  \sa QwtPlot::autoReplot(), QwtPlot::replot(), QwtPlotPicker::setZoomBase()
-*/
-
-QwtPlotZoomer::QwtPlotZoomer(int xAxis, int yAxis,
-        QwtPlotCanvas *canvas):
-    QwtPlotPicker(xAxis, yAxis, canvas)
-{
-    if ( canvas )
-    {
-        init();
-    }
-}
-
-/*!
-  Create a zoomer for a plot canvas.
-
-  \param xAxis X axis of the zoomer
-  \param yAxis Y axis of the zoomer
-  \param selectionFlags Or�d value of QwtPicker::RectSelectionType and
-                        QwtPicker::SelectionMode. 
-                        QwtPicker::RectSelection will be auto added.
-  \param trackerMode Tracker mode
-  \param canvas Plot canvas to observe, also the parent object
-
-  \sa QwtPicker, QwtPicker::setSelectionFlags(), QwtPicker::setRubberBand(),
-      QwtPicker::setTrackerMode
-
-  \warning Calling QwtPlot::setAxisScale() while QwtPlot::autoReplot() is false
-           leaves the axis in an 'intermediate' state.
-           In this case, to prevent buggy behaviour, you must call
-           QwtPlot::replot() before calling QwtPlotZoomer().
-           This quirk will be removed in a future release.
-
-  \sa QwtPlot::autoReplot(), QwtPlot::replot(), QwtPlotPicker::setZoomBase()
-*/
-
-QwtPlotZoomer::QwtPlotZoomer(int xAxis, int yAxis, int selectionFlags,
-        DisplayMode trackerMode, QwtPlotCanvas *canvas):
-    QwtPlotPicker(xAxis, yAxis,canvas)
-{
-    if ( canvas )
-    {
-        init(selectionFlags, trackerMode);
-    }
-}
-
-//! Init the zoomer, used by the constructors
-void QwtPlotZoomer::init(int selectionFlags, DisplayMode trackerMode)
-{
-    d_data = new PrivateData;
-
-    d_data->maxStackDepth = -1;
-
-    setSelectionFlags(selectionFlags);
-    setTrackerMode(trackerMode);
-    setRubberBand(RectRubberBand);
-
-    setZoomBase(scaleRect());
-}
-
-QwtPlotZoomer::~QwtPlotZoomer()
-{
-    delete d_data;
-}
-
-/*!
-  \brief Limit the number of recursive zoom operations to depth.
-
-  A value of -1 set the depth to unlimited, 0 disables zooming.
-  If the current zoom rectangle is below depth, the plot is unzoomed.
-
-  \param depth Maximum for the stack depth
-  \sa maxStackDepth()
-  \note depth doesn�t include the zoom base, so zoomStack().count() might be
-              maxStackDepth() + 1.
-*/
-void QwtPlotZoomer::setMaxStackDepth(int depth)
-{
-    d_data->maxStackDepth = depth;
-
-    if ( depth >= 0 )
-    {
-        // unzoom if the current depth is below d_data->maxStackDepth
-
-        const int zoomOut = 
-            int(d_data->zoomStack.count()) - 1 - depth; // -1 for the zoom base
-
-        if ( zoomOut > 0 )
-        {
-            zoom(-zoomOut);
-            for ( int i = int(d_data->zoomStack.count()) - 1; 
-                i > int(d_data->zoomRectIndex); i-- )
-            {
-                (void)d_data->zoomStack.pop(); // remove trailing rects
-            }
-        }
-    }
-}
-
-/*!
-  \return Maximal depth of the zoom stack.
-  \sa setMaxStackDepth()
-*/
-int QwtPlotZoomer::maxStackDepth() const
-{
-    return d_data->maxStackDepth;
-}
-
-/*!
-  Return the zoom stack. zoomStack()[0] is the zoom base,
-  zoomStack()[1] the first zoomed rectangle.
-*/
-const QwtZoomStack &QwtPlotZoomer::zoomStack() const
-{
-    return d_data->zoomStack;
-}
-
-/*!
-  \return Initial rectangle of the zoomer
-  \sa setZoomBase(), zoomRect()
-*/
-QwtDoubleRect QwtPlotZoomer::zoomBase() const
-{
-    return d_data->zoomStack[0];
-}
-
-/*!
-  Reinitialized the zoom stack with scaleRect() as base.
-
-  \sa zoomBase(), scaleRect()
-
-  \warning Calling QwtPlot::setAxisScale() while QwtPlot::autoReplot() is false
-           leaves the axis in an 'intermediate' state.
-           In this case, to prevent buggy behaviour, you must call
-           QwtPlot::replot() before calling QwtPlotZoomer::setZoomBase().
-           This quirk will be removed in a future release.
-
-  \sa QwtPlot::autoReplot(), QwtPlot::replot().
-*/
-void QwtPlotZoomer::setZoomBase()
-{
-    const QwtPlot *plt = plot();
-    if ( !plt )
-        return;
-
-    d_data->zoomStack.clear();
-    d_data->zoomStack.push(scaleRect());
-    d_data->zoomRectIndex = 0;
-
-    rescale();
-}
-
-/*!
-  \brief Set the initial size of the zoomer.
-
-  base is united with the current scaleRect() and the zoom stack is
-  reinitalized with it as zoom base. plot is zoomed to scaleRect().
-  
-  \param base Zoom base
-  
-  \sa zoomBase(), scaleRect()
-*/
-void QwtPlotZoomer::setZoomBase(const QwtDoubleRect &base)
-{
-/*    const QwtPlot *plt = plot();
-    if ( !plt )
-        return;
-
-    const QwtDoubleRect sRect = scaleRect();
-    const QwtDoubleRect bRect = base | sRect;
-
-    d_data->zoomStack.clear();
-    d_data->zoomStack.push(bRect);
-    d_data->zoomRectIndex = 0;
-
-    if ( base != sRect )
-    {
-        d_data->zoomStack.push(sRect);
-        d_data->zoomRectIndex++;
-    }
-
-    rescale();*/
-
-    const QwtPlot *plt = plot();
-    if ( !plt )
-        return;
-
-    d_data->zoomStack.clear();
-    d_data->zoomStack.push(base);
-    d_data->zoomRectIndex = 0;
-
-    rescale();
-}
-
-/*! 
-  Rectangle at the current position on the zoom stack. 
-
-  \sa QwtPlotZoomer::zoomRectIndex(), QwtPlotZoomer::scaleRect().
-*/
-QwtDoubleRect QwtPlotZoomer::zoomRect() const
-{
-    return d_data->zoomStack[d_data->zoomRectIndex];
-}
-
-/*! 
-  \return Index of current position of zoom stack.
-*/
-uint QwtPlotZoomer::zoomRectIndex() const
-{
-    return d_data->zoomRectIndex;
-}
-
-/*!
-  \brief Zoom in
-
-  Clears all rectangles above the current position of the
-  zoom stack and pushs the intersection of zoomRect() and 
-  the normalized rect on it.
-
-  \note If the maximal stack depth is reached, zoom is ignored.
-*/
-
-void QwtPlotZoomer::zoom(const QwtDoubleRect &rect)
-{   
-    if ( d_data->maxStackDepth >= 0 && 
-        int(d_data->zoomRectIndex) >= d_data->maxStackDepth )
-    {
-        return;
-    }
-
-    const QwtDoubleRect zoomRect = d_data->zoomStack[0] & rect.normalized();
-    if ( zoomRect != d_data->zoomStack[d_data->zoomRectIndex] )
-    {
-        for ( uint i = int(d_data->zoomStack.count()) - 1; 
-           i > d_data->zoomRectIndex; i-- )
-        {
-            (void)d_data->zoomStack.pop();
-        }
-
-        d_data->zoomStack.push(zoomRect);
-        d_data->zoomRectIndex++;
-
-        rescale();
-    }
-}
-
-/*!
-  \brief Zoom in or out
-
-  Activate a rectangle on the zoom stack with an offset relative
-  to the current position. Negative values of offest will zoom out,
-  positive zoom in. A value of 0 zooms out to the zoom base.
-
-  \param offset Offset relative to the current position of the zoom stack.
-  \sa zoomRectIndex()
-*/
-void QwtPlotZoomer::zoom(int offset)
-{
-    if ( offset == 0 )
-        d_data->zoomRectIndex = 0;
-    else
-    {
-        int newIndex = d_data->zoomRectIndex + offset;
-        newIndex = qwtMax(0, newIndex);
-        newIndex = qwtMin(int(d_data->zoomStack.count()) - 1, newIndex);
-
-        d_data->zoomRectIndex = uint(newIndex);
-    }
-
-    rescale();
-}
-
-/*! 
-  Adjust the observed plot to zoomRect()
-
-  \note Initiates QwtPlot::replot
-*/
-
-void QwtPlotZoomer::rescale()
-{
-    QwtPlot *plt = plot();
-    if ( !plt )
-        return;
-
-    const QwtDoubleRect &rect = d_data->zoomStack[d_data->zoomRectIndex];
-    if ( rect != scaleRect() )
-    {
-        const bool doReplot = plt->autoReplot();
-        plt->setAutoReplot(false);
-
-        double x1 = rect.left();
-        double x2 = rect.right();
-        if ( plt->axisScaleDiv(xAxis())->lBound() > 
-            plt->axisScaleDiv(xAxis())->hBound() )
-        {
-            qSwap(x1, x2);
-        }
-
-        plt->setAxisScale(xAxis(), x1, x2);
-
-        double y1 = rect.top();
-        double y2 = rect.bottom();
-        if ( plt->axisScaleDiv(yAxis())->lBound() > 
-            plt->axisScaleDiv(yAxis())->hBound() )
-        {
-            qSwap(y1, y2);
-        }
-        plt->setAxisScale(yAxis(), y1, y2);
-
-        plt->setAutoReplot(doReplot);
-
-        plt->replot();
-    }
-}
-
-/*!
-  Reinitialize the axes, and set the zoom base to their scales.
-
-  \param xAxis X axis 
-  \param yAxis Y axis
-*/
-
-void QwtPlotZoomer::setAxis(int xAxis, int yAxis)
-{
-    if ( xAxis != QwtPlotPicker::xAxis() || yAxis != QwtPlotPicker::yAxis() )
-    {
-        QwtPlotPicker::setAxis(xAxis, yAxis);
-        setZoomBase(scaleRect());
-    }
-}
-
-/*!
-   Qt::MidButton zooms out one position on the zoom stack,
-   Qt::RightButton to the zoom base.
-
-   Changes the current position on the stack, but doesn�t pop
-   any rectangle.
-
-   \note The mouse events can be changed, using
-         QwtEventPattern::setMousePattern: 2, 1
-*/
-void QwtPlotZoomer::widgetMouseReleaseEvent(QMouseEvent *me)
-{
-    if ( mouseMatch(MouseSelect2, me) )
-        zoom(0);
-    else if ( mouseMatch(MouseSelect3, me) )
-        zoom(-1);
-    else if ( mouseMatch(MouseSelect6, me) )
-        zoom(+1);
-    else 
-        QwtPlotPicker::widgetMouseReleaseEvent(me);
-}
-
-/*!
-   Qt::Key_Plus zooms out, Qt::Key_Minus zooms in one position on the 
-   zoom stack, Qt::Key_Escape zooms out to the zoom base.
-
-   Changes the current position on the stack, but doesn�t pop
-   any rectangle.
-
-   \note The keys codes can be changed, using
-         QwtEventPattern::setKeyPattern: 3, 4, 5
-*/
-
-void QwtPlotZoomer::widgetKeyPressEvent(QKeyEvent *ke)
-{
-    if ( !isActive() )
-    {
-        if ( keyMatch(KeyUndo, ke) )
-            zoom(-1);
-        else if ( keyMatch(KeyRedo, ke) )
-            zoom(+1);
-        else if ( keyMatch(KeyHome, ke) )
-            zoom(0);
-    }
-
-    QwtPlotPicker::widgetKeyPressEvent(ke);
-}
-
-/*!
-  Move the current zoom rectangle.
-
-  \param dx X offset
-  \param dy Y offset
-
-  \note The changed rectangle is limited by the zoom base
-*/
-void QwtPlotZoomer::moveBy(double dx, double dy)
-{
-    const QwtDoubleRect &rect = d_data->zoomStack[d_data->zoomRectIndex];
-    move(rect.left() + dx, rect.top() + dy);
-}
-
-/*!
-  Move the the current zoom rectangle.
-
-  \param x X value
-  \param y Y value
-
-  \sa QwtDoubleRect::move
-  \note The changed rectangle is limited by the zoom base
-*/
-void QwtPlotZoomer::move(double x, double y)
-{
-    x = qwtMax(x, zoomBase().left());
-    x = qwtMin(x, zoomBase().right() - zoomRect().width());
-
-    y = qwtMax(y, zoomBase().top());
-    y = qwtMin(y, zoomBase().bottom() - zoomRect().height());
-
-    if ( x != zoomRect().left() || y != zoomRect().top() )
-    {
-        d_data->zoomStack[d_data->zoomRectIndex].moveTo(x, y);
-        rescale();
-    }
-}
-
-/*!
-  \brief Check and correct a selected rectangle
-
-  Reject rectangles with a hight or width < 2, otherwise
-  expand the selected rectangle to a minimum size of 11x11
-  and accept it.
-  
-  \return true If rect is accepted, or has been changed
-          to a accepted rectangle. 
-*/
-
-bool QwtPlotZoomer::accept(SelectedPoints &pa) const
-{
-    if ( pa.count() < 2 )
-        return false;
-
-    QRect rect = QRect(pa[0], pa[int(pa.count()) - 1]);
-#if QT_VERSION < 0x040000
-    rect = rect.normalize();
-#else
-    rect = rect.normalized();
-#endif
-
-    const int minSize = 2;
-    if (rect.width() < minSize && rect.height() < minSize )
-        return false; 
-
-    const int minZoomSize = 11;
-
-    const QPoint center = rect.center();
-    rect.setSize(rect.size().expandedTo(QSize(minZoomSize, minZoomSize)));
-    rect.moveCenter(center);
-
-    pa.resize(2);
-    pa[0] = rect.topLeft();
-    pa[1] = rect.bottomRight();
-
-    return true;
-}
-
-/*!
-  \brief Limit zooming by a minimum rectangle
-
-  \return zoomBase().width() / 10e4, zoomBase().height() / 10e4
-*/
-QwtDoubleSize QwtPlotZoomer::minZoomSize() const
-{
-    return QwtDoubleSize(
-        d_data->zoomStack[0].width() / 10e4,
-        d_data->zoomStack[0].height() / 10e4
-    );
-}
-
-/*! 
-  Rejects selections, when the stack depth is too deep, or
-  the zoomed rectangle is minZoomSize().
-
-  \sa minZoomSize(), maxStackDepth()
-*/
-void QwtPlotZoomer::begin()
-{
-    if ( d_data->maxStackDepth >= 0 )
-    {
-        if ( d_data->zoomRectIndex >= uint(d_data->maxStackDepth) )
-            return;
-    }
-
-    const QwtDoubleSize minSize = minZoomSize();
-    if ( minSize.isValid() )
-    {
-        const QwtDoubleSize sz = 
-            d_data->zoomStack[d_data->zoomRectIndex].size() * 0.9999;
-
-        if ( minSize.width() >= sz.width() &&
-            minSize.height() >= sz.height() )
-        {
-            return;
-        }
-    }
-
-    QwtPlotPicker::begin();
-}
-
-/*!
-  Expand the selected rectangle to minZoomSize() and zoom in
-  if accepted.
-
-  \note The zoomed signal is emitted.
-  \sa QwtPlotZoomer::accept()a, QwtPlotZoomer::minZoomSize()
-*/
-bool QwtPlotZoomer::end(bool ok)
-{
-    ok = QwtPlotPicker::end(ok);
-    if (!ok)
-        return false;
-
-    QwtPlot *plot = QwtPlotZoomer::plot();
-    if ( !plot )
-        return false;
-
-    const SelectedPoints &pa = selection();
-    if ( pa.count() < 2 )
-        return false;
-
-    QRect rect = QRect(pa[0], pa[int(pa.count() - 1)]);
-#if QT_VERSION < 0x040000
-    rect = rect.normalize();
-#else
-    rect = rect.normalized();
-#endif
-
-
-    QwtDoubleRect zoomRect = invTransform(rect).normalized();
-
-    const QwtDoublePoint center = zoomRect.center();
-    zoomRect.setSize(zoomRect.size().expandedTo(minZoomSize()));
-    zoomRect.moveCenter(center);
-
-    zoom(zoomRect);
-    emit zoomed(zoomRect);
-
-    return true;
-}
-
-/*!
-  Set the selection flags
-  
-  \param flags Or�d value of QwtPicker::RectSelectionType and
-               QwtPicker::SelectionMode. The default value is 
-               QwtPicker::RectSelection & QwtPicker::ClickSelection.
-
-  \sa selectionFlags(), SelectionType, RectSelectionType, SelectionMode
-  \note QwtPicker::RectSelection will be auto added.
-*/
-
-void QwtPlotZoomer::setSelectionFlags(int flags)
-{
-    // we accept only rects
-    flags &= ~(PointSelection | PolygonSelection);
-    flags |= RectSelection;
-
-    QwtPlotPicker::setSelectionFlags(flags);
-}
diff --git a/src/qwt/qwt_rect.cpp b/src/qwt/qwt_rect.cpp
deleted file mode 100644
index aa63e8a..0000000
--- a/src/qwt/qwt_rect.cpp
+++ /dev/null
@@ -1,157 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- * 
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-#include "qwt_math.h"
-#include "qwt_rect.h"
-
-#if QT_VERSION < 0x040000
-#define QwtPointArray QPointArray
-#else
-#define QwtPointArray QPolygon
-#endif
-
-//! Constructor
-
-QwtRect::QwtRect(): 
-    QRect() 
-{
-}
-
-//! Copy constructor
-QwtRect::QwtRect(const QRect &r): 
-    QRect(r) 
-{
-}
-
-inline static void addPoint(QwtPointArray &pa, uint pos, const QPoint &point)
-{
-    if ( uint(pa.size()) <= pos ) 
-        pa.resize(pos + 5);
-
-    pa.setPoint(pos, point);
-}
-
-//! Sutherland-Hodgman polygon clipping
-
-QwtPointArray QwtRect::clip(const QwtPointArray &pa) const
-{
-    if ( contains( pa.boundingRect() ) )
-        return pa;
-
-    QwtPointArray cpa(pa.size());
-
-    clipEdge((Edge)0, pa, cpa);
-
-    for ( uint edge = 1; edge < NEdges; edge++ ) 
-    {
-        const QwtPointArray rpa = cpa;
-#if QT_VERSION < 0x040000
-        cpa.detach();
-#endif
-        clipEdge((Edge)edge, rpa, cpa);
-    }
-
-    return cpa;
-}
-
-bool QwtRect::insideEdge(const QPoint &p, Edge edge) const
-{
-    switch(edge) 
-    {
-        case Left:
-            return p.x() > left();
-        case Top:
-            return p.y() > top();
-        case Right:
-            return p.x() < right();
-        case Bottom:
-            return p.y() < bottom();
-        default:
-            break;
-    }
-
-    return false;
-}
-
-QPoint QwtRect::intersectEdge(const QPoint &p1, 
-    const QPoint &p2, Edge edge ) const
-{
-    int x=0, y=0;
-    double m = 0;
-
-    const double dy = p2.y() - p1.y();
-    const double dx = p2.x() - p1.x();
-
-    switch ( edge ) 
-    {
-        case Left:
-            x = left();
-            m = double(qwtAbs(p1.x() - x)) / qwtAbs(dx);
-            y = p1.y() + int(dy * m);
-            break;
-        case Top:
-            y = top();
-            m = double(qwtAbs(p1.y() - y)) / qwtAbs(dy);
-            x = p1.x() + int(dx * m);
-            break;
-        case Right:
-            x = right();
-            m = double(qwtAbs(p1.x() - x)) / qwtAbs(dx);
-            y = p1.y() + int(dy * m);
-            break;
-        case Bottom:
-            y = bottom();
-            m = double(qwtAbs(p1.y() - y)) / qwtAbs(dy);
-            x = p1.x() + int(dx * m);
-            break;
-        default:
-            break;
-    }
-
-    return QPoint(x,y);
-}
-
-void QwtRect::clipEdge(Edge edge, 
-    const QwtPointArray &pa, QwtPointArray &cpa) const
-{
-    if ( pa.count() == 0 )
-    {
-        cpa.resize(0);
-        return;
-    }
-
-    unsigned int count = 0;
-
-    QPoint p1 = pa.point(0);
-    if ( insideEdge(p1, edge) )
-        addPoint(cpa, count++, p1);
-
-    const uint nPoints = pa.size();
-    for ( uint i = 1; i < nPoints; i++ )
-    {
-        const QPoint p2 = pa.point(i);
-        if ( insideEdge(p2, edge) )
-        {
-            if ( insideEdge(p1, edge) )
-                addPoint(cpa, count++, p2);
-            else
-            {
-                addPoint(cpa, count++, intersectEdge(p1, p2, edge));
-                addPoint(cpa, count++, p2);
-            }
-        }
-        else
-        {
-            if ( insideEdge(p1, edge) )
-                addPoint(cpa, count++, intersectEdge(p1, p2, edge));
-        }
-        p1 = p2;
-    }
-    cpa.resize(count);
-}
diff --git a/src/qwt/qwt_round_scale_draw.cpp b/src/qwt/qwt_round_scale_draw.cpp
deleted file mode 100644
index acc40ac..0000000
--- a/src/qwt/qwt_round_scale_draw.cpp
+++ /dev/null
@@ -1,392 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- * 
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-// vim: expandtab
-
-#include <math.h>
-#include <qpen.h>
-#include <qpainter.h>
-#include <qfontmetrics.h>
-#include "qwt_painter.h"
-#include "qwt_scale_div.h"
-#include "qwt_scale_map.h"
-#include "qwt_round_scale_draw.h"
-
-class QwtRoundScaleDraw::PrivateData
-{
-public:
-    PrivateData():
-        center(50, 50),
-        radius(50),
-        minAngle(-135 * 16),
-        maxAngle(135 * 16)
-    {
-    }
-
-    QPoint center;
-    int radius; 
-
-    int minAngle;
-    int maxAngle;
-};
-
-/*!
-  \brief Constructor
-
-  The range of the scale is initialized to [0, 100],
-  The center is set to (50, 50) with a radius of 50.
-  The angle range is set to [-135, 135].
-*/
-QwtRoundScaleDraw::QwtRoundScaleDraw()
-{
-    d_data = new QwtRoundScaleDraw::PrivateData;
-
-    setRadius(50);
-    scaleMap().setPaintInterval(d_data->minAngle, d_data->maxAngle);
-}
-
-//! Copy constructor
-QwtRoundScaleDraw::QwtRoundScaleDraw(const QwtRoundScaleDraw &other):
-    QwtAbstractScaleDraw(other)
-{
-    d_data = new QwtRoundScaleDraw::PrivateData(*other.d_data);
-}
-
-
-//! Destructor
-QwtRoundScaleDraw::~QwtRoundScaleDraw()
-{
-    delete d_data;
-}
-
-//! Assignment operator
-QwtRoundScaleDraw &QwtRoundScaleDraw::operator=(const QwtRoundScaleDraw &other)
-{
-    *(QwtAbstractScaleDraw*)this = (const QwtAbstractScaleDraw &)other;
-    *d_data = *other.d_data;
-    return *this;
-}
-
-/*!
-  Change of radius the scale
-
-  Radius is the radius of the backbone without ticks and labels.
-
-  \param radius New Radius
-  \sa moveCenter
-*/
-void QwtRoundScaleDraw::setRadius(int radius)
-{
-    d_data->radius = radius;
-}
-
-/*!
-  Get the radius 
-
-  Radius is the radius of the backbone without ticks and labels.
-
-  \sa setRadius(), extent()
-*/
-int QwtRoundScaleDraw::radius() const
-{
-    return d_data->radius;
-}
-
-/*!
-   Move the center of the scale draw, leaving the radius unchanged
-
-   \param center New center
-   \sa setRadius
-*/
-void QwtRoundScaleDraw::moveCenter(const QPoint &center)
-{
-    d_data->center = center;
-}
-
-//! Get the center of the scale
-QPoint QwtRoundScaleDraw::center() const
-{
-    return d_data->center;
-}
-
-/*!
-  \brief Adjust the baseline circle segment for round scales.
-
-  The baseline will be drawn from min(angle1,angle2) to max(angle1, angle2).
-  The default setting is [ -135, 135 ].
-  An angle of 0 degrees corresponds to the 12 o'clock position,
-  and positive angles count in a clockwise direction.
-  \param angle1
-  \param angle2 boundaries of the angle interval in degrees.
-  \warning <ul> 
-  <li>The angle range is limited to [-360, 360] degrees. Angles exceeding
-      this range will be clipped.
-  <li>For angles more than 359 degrees above or below min(angle1, angle2),
-      scale marks will not be drawn.
-  <li>If you need a counterclockwise scale, use QwtScaleDiv::setRange
-  </ul>
-*/
-void QwtRoundScaleDraw::setAngleRange(double angle1, double angle2)
-{
-    angle1 = qwtLim(angle1, -360.0, 360.0);
-    angle2 = qwtLim(angle2, -360.0, 360.0);
-
-    int amin = qRound(qwtMin(angle1, angle2) * 16.0);
-    int amax = qRound(qwtMax(angle1, angle2) * 16.0); 
- 
-    if (amin == amax)
-    {
-        amin -= 1;
-        amax += 1;
-    }
- 
-    d_data->minAngle = amin;
-    d_data->maxAngle = amax;
-    scaleMap().setPaintInterval(d_data->minAngle, d_data->maxAngle);
-}
-
-/*!
-   Draws the label for a major scale tick
-
-   \param painter Painter
-   \param value Value
-
-   \sa drawTick(), drawBackbone()
-*/
-void QwtRoundScaleDraw::drawLabel(QPainter *painter, double value) const
-{
-    const QwtText label = tickLabel(painter->font(), value);
-    if ( label.isEmpty() )
-        return; 
-
-    const int tval = map().transform(value);
-    if ((tval > d_data->minAngle + 359 * 16)
-        || (tval < d_data->minAngle - 359 * 16))
-    {
-       return; 
-    }
-
-    const double arc = tval / 16.0 / 360.0 * 2 * M_PI;
-
-    QRect r( QPoint(0, 0), label.textSize(painter->font()) );
-    r.moveCenter(labelCenter(painter->font(), arc, label));
-
-    label.draw(painter, r);
-}
-
-/*!
-   Draw a tick
-   
-   \param painter Painter
-   \param value Value of the tick
-   \param len Lenght of the tick
-
-   \sa drawBackbone(), drawLabel() 
-*/
-void QwtRoundScaleDraw::drawTick(QPainter *painter, double value, int len) const
-{
-    if ( len <= 0 )
-        return;
-
-    const int tval = map().transform(value);
-
-    const int cx = d_data->center.x();
-    const int cy = d_data->center.y();
-    const int radius = d_data->radius;
-
-    if ((tval <= d_data->minAngle + 359 * 16)
-        || (tval >= d_data->minAngle - 359 * 16))
-    {
-        const double arc = double(tval) / 16.0 * M_PI / 180.0;
-
-        const double sinArc = sin(arc);
-        const double cosArc = cos(arc);
-
-        const int x1 = qRound( cx + radius * sinArc );
-        const int x2 = qRound( cx + (radius + len) * sinArc );
-        const int y1 = qRound( cy - radius * cosArc );
-        const int y2 = qRound( cy - (radius + len) * cosArc );
-
-        QwtPainter::drawLine(painter, x1, y1, x2, y2);
-    }
-}
-
-/*!
-   Draws the baseline of the scale
-   \param painter Painter
-
-   \sa drawTick(), drawLabel()
-*/
-void QwtRoundScaleDraw::drawBackbone(QPainter *painter) const
-{
-    const int a1 = qRound(qwtMin(map().p1(), map().p2()) - 90 * 16);
-    const int a2 = qRound(qwtMax(map().p1(), map().p2()) - 90 * 16);
-
-    const int radius = d_data->radius;
-    const int x = d_data->center.x() - radius;
-    const int y = d_data->center.y() - radius;
-
-    painter->drawArc(x, y, 2 * radius, 2 * radius,
-        -a2, a2 - a1 + 1);           // counterclockwise
-}
-
-/*!
-   Calculate the extent of the scale
-
-   The extent is the distcance between the baseline to the outermost
-   pixel of the scale draw. radius() + extent() is an upper limit 
-   for the radius of the bounding circle.
-
-   \param pen Pen that is used for painting backbone and ticks
-   \param font Font used for painting the labels
-
-   \sa setMinimumExtent(), minimumExtent()
-   \warning The implemented algo is not too smart and
-            calculates only an upper limit, that might be a
-            few pixels too large
-*/
-int QwtRoundScaleDraw::extent(const QPen &pen, const QFont &font) const
-{
-    int d = 0;
-
-    if ( hasComponent(QwtAbstractScaleDraw::Labels) )
-    {
-        const QwtScaleDiv &sd = scaleDiv();
-        const QwtTickList &ticks = sd.ticks(QwtScaleDiv::MajorTick);
-        for (uint i = 0; i < (uint)ticks.count(); i++)
-        {
-            const double v = ticks[i];
-            if ( sd.contains(v) )
-            {
-                const QRect r = labelRect(font, v);
-                if ( !r.isEmpty() )
-                {
-                    int dx = r.center().x() - d_data->center.x();
-                    int dy = r.center().y() - d_data->center.y();
-
-                    const int dist1 = 
-                        qRound(sqrt((double)(dx * dx + dy * dy)));
-
-                    dx = r.width() / 2 + r.width() % 2;
-                    dy = r.height() / 2 + r.height() % 2;
-
-                    const int dist2 = 
-                        qRound(sqrt((double)(dx * dx + dy * dy)));
-
-                    int dist = dist1 + dist2;
-                    if ( dist > d )
-                        d = dist;
-                }
-            }
-        }
-        d -= d_data->radius;
-    }
-
-    if ( d == 0 )
-    {
-        if ( hasComponent(QwtAbstractScaleDraw::Ticks) )
-        {
-            d += majTickLength();
-        }
-
-        if ( hasComponent(QwtAbstractScaleDraw::Backbone) )
-        {
-            const int pw = qwtMax( 1, pen.width() );  // penwidth can be zero
-            d += pw;
-        }
-
-    }
-    d = qwtMax(d, minimumExtent());
-
-    return d;
-}
-
-/*!
-  Find the size of the label. 
-
-  \param font Font
-  \param value Value
-*/
-QSize QwtRoundScaleDraw::labelSize(
-    const QFont &font, double value) const
-{   
-    return tickLabel(font, value).textSize(font);
-}
-
-/*!
-  Calculate the bounding rect for a tick label
-
-  \param font Font, that will be used to paint the scale draw 
-  \param value Value of the tick label
-
-  \sa labelSize(), labelCenter()
-*/
-QRect QwtRoundScaleDraw::labelRect(const QFont &font, double value) const
-{
-    const QwtText label = tickLabel(font, value);
-    if ( label.isEmpty() )
-        return QRect(); 
-
-    const int tval = map().transform(value);
-    if ((tval > d_data->minAngle + 359 * 16)
-        || (tval < d_data->minAngle - 359 * 16))
-    {
-       return QRect();
-    }
-
-    const double arc = tval / 16.0 / 360.0 * 2 * M_PI;
-
-    QRect r( QPoint(0, 0), label.textSize(font) );
-    r.moveCenter(labelCenter(font, arc, label));
-
-    return r;
-}
-
-/*!
-  Find the position, where to move the center of a label 
-*/
-QPoint QwtRoundScaleDraw::labelCenter( 
-    const QFont &font, double arc, const QwtText& label) const
-{   
-    const QFont fnt = label.usedFont(font);
-
-    QFontMetrics fm(fnt);
-    const int fmh = fm.ascent() - 2;
-
-    double radius = d_data->radius + spacing();
-    if ( hasComponent(QwtAbstractScaleDraw::Ticks) )
-        radius += majTickLength();
-
-    // First we find the point on a circle enlarged
-    // by half of the font height.
-
-    double xOffset = ( radius + fmh / 2 ) * sin(arc);
-    double yOffset = ( radius + fmh / 2 ) * cos(arc);
-
-    if ( qRound(xOffset) != 0 )
-    {
-        // The centered label might cut the circle
-        // with distance: d_data->radius + d_data->majLen + d_data->vpad
-        // We align the label to the circle by moving
-        // the x-coordinate, because we have only
-        // horizontal labels here.
-
-        const int brw = label.textSize(font).width();
-
-        const double circleX = radius * sin(arc);
-        if ( xOffset < 0 )
-            xOffset = circleX - brw / 2; // left
-        else
-            xOffset = circleX + brw / 2; // right
-    }
-    const int x = d_data->center.x() + qRound(xOffset);
-    const int y = d_data->center.y() - qRound(yOffset);
-
-    return QPoint(x, y);
-}
diff --git a/src/qwt/qwt_scale_div.cpp b/src/qwt/qwt_scale_div.cpp
deleted file mode 100644
index 5967ee5..0000000
--- a/src/qwt/qwt_scale_div.cpp
+++ /dev/null
@@ -1,146 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- * 
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-#include "qwt_scale_div.h"
-#include "qwt_math.h"
-#include "qwt_double_interval.h"
-
-//! Construct an invalid QwtScaleDiv instance.
-QwtScaleDiv::QwtScaleDiv():
-    d_lBound(0.0),
-    d_hBound(0.0),
-    d_isValid(false)
-{
-}
-
-/*! 
-  Construct QwtScaleDiv instance.
-
-  \param interval Interval
-  \param ticks List of major, medium and minor ticks
-*/
-QwtScaleDiv::QwtScaleDiv(
-        const QwtDoubleInterval &interval, 
-        QwtTickList ticks[NTickTypes]):
-    d_lBound(interval.minValue()),
-    d_hBound(interval.maxValue()),
-    d_isValid(true)
-{
-    for ( int i = 0; i < NTickTypes; i++ )
-        d_ticks[i] = ticks[i];
-}
-
-/*! 
-  Construct QwtScaleDiv instance.
-
-  \param lBound First interval limit
-  \param hBound Second interval limit
-  \param ticks List of major, medium and minor ticks
-*/
-QwtScaleDiv::QwtScaleDiv(
-        double lBound, double hBound,
-        QwtTickList ticks[NTickTypes]):
-    d_lBound(lBound),
-    d_hBound(hBound),
-    d_isValid(true)
-{
-    for ( int i = 0; i < NTickTypes; i++ )
-        d_ticks[i] = ticks[i];
-}
-
-/*!
-  \brief Equality operator
-  \return true if this instance is equal to other
-*/
-int QwtScaleDiv::operator==(const QwtScaleDiv &other) const
-{
-    if ( d_lBound != other.d_lBound ||
-        d_hBound != other.d_hBound ||
-        d_isValid != other.d_isValid )
-    {
-        return false;
-    }
-
-    for ( int i = 0; i < NTickTypes; i++ )
-    {
-        if ( d_ticks[i] != other.d_ticks[i] )
-            return false;
-    }
-
-    return true;
-}
-
-/*!
-  \brief Inequality
-  \return true if this instance is not equal to s
-*/
-int QwtScaleDiv::operator!=(const QwtScaleDiv &s) const
-{
-    return (!(*this == s));
-}
-
-//! Invalidate the scale division
-void QwtScaleDiv::invalidate()
-{
-    d_isValid = false;
-
-    // detach arrays
-    for ( int i = 0; i < NTickTypes; i++ )
-        d_ticks[i].clear();
-
-    d_lBound = d_hBound = 0;
-}
-
-//! Check if the scale division is valid
-bool QwtScaleDiv::isValid() const
-{
-    return d_isValid;
-}
-
-bool QwtScaleDiv::contains(double v) const
-{
-    if ( !d_isValid )
-        return false;
-
-    const double min = qwtMin(d_lBound, d_hBound);
-    const double max = qwtMax(d_lBound, d_hBound);
-
-    return v >= min && v <= max;
-}
-
-//! Invert the scale divison
-void QwtScaleDiv::invert()
-{
-    qSwap(d_lBound, d_hBound);
-
-    for ( int i = 0; i < NTickTypes; i++ )
-    {
-        QwtTickList& ticks = d_ticks[i];
-
-        const int size = ticks.count();
-        const int size2 = size / 2;
- 
-        for (int i=0; i < size2; i++)
-            qSwap(ticks[i], ticks[size - 1 - i]);
-    }
-}
-
-/*!
-   Return a list of ticks
-
-   \param type MinorTick, MediumTick or MajorTick
-*/
-const QwtTickList &QwtScaleDiv::ticks(int type) const
-{
-    if ( type >= 0 || type < NTickTypes )
-        return d_ticks[type];
-
-    static QwtTickList noTicks;
-    return noTicks;
-}
diff --git a/src/qwt/qwt_scale_draw.cpp b/src/qwt/qwt_scale_draw.cpp
deleted file mode 100644
index ca2b8d7..0000000
--- a/src/qwt/qwt_scale_draw.cpp
+++ /dev/null
@@ -1,833 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- * 
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-// vim: expandtab
-
-#include <qpen.h>
-#include <qpainter.h>
-#include "qwt_math.h"
-#include "qwt_painter.h"
-#include "qwt_scale_div.h"
-#include "qwt_scale_map.h"
-#include "qwt_scale_draw.h"
-
-#if QT_VERSION < 0x040000
-#include <qwmatrix.h>
-#define QwtMatrix QWMatrix
-#define QwtPointArray QPointArray
-#else
-#include <qmatrix.h>
-#define QwtMatrix QMatrix
-#define QwtPointArray QPolygon
-#endif
-
-class QwtScaleDraw::PrivateData
-{
-public:
-    PrivateData():
-        len(0),
-        alignment(QwtScaleDraw::BottomScale),
-        labelAlignment(0),
-        labelRotation(0.0)
-    {
-    }
-
-    QPoint pos;
-    int len;
-
-    Alignment alignment;
-
-#if QT_VERSION < 0x040000
-    int labelAlignment;
-#else
-    Qt::Alignment labelAlignment;
-#endif
-    double labelRotation;
-};
-
-/*!
-  \brief Constructor
-
-  The range of the scale is initialized to [0, 100],
-  The position is at (0, 0) with a length of 100.
-  The orientation is QwtAbstractScaleDraw::Bottom.
-*/
-QwtScaleDraw::QwtScaleDraw()
-{
-    d_data = new QwtScaleDraw::PrivateData;
-    setLength(100);
-}
-
-//! Copy constructor
-QwtScaleDraw::QwtScaleDraw(const QwtScaleDraw &other):
-    QwtAbstractScaleDraw(other)
-{
-    d_data = new QwtScaleDraw::PrivateData(*other.d_data);
-}
-
-//! Destructor
-QwtScaleDraw::~QwtScaleDraw()
-{
-    delete d_data;
-}
-
-//! Assignment operator
-QwtScaleDraw &QwtScaleDraw::operator=(const QwtScaleDraw &other)
-{
-    *(QwtAbstractScaleDraw*)this = (const QwtAbstractScaleDraw &)other;
-    *d_data = *other.d_data;
-    return *this;
-}
-
-/*! 
-   Return alignment of the scale
-   \sa setAlignment()
-*/
-QwtScaleDraw::Alignment QwtScaleDraw::alignment() const 
-{
-    return d_data->alignment; 
-}
-
-/*!
-   Set the alignment of the scale
-
-   The default alignment is QwtScaleDraw::BottomScale
-   \sa alignment()
-*/
-void QwtScaleDraw::setAlignment(Alignment align)
-{
-    d_data->alignment = align;
-}
-
-/*!
-  Return the orientation
-
-  TopScale, BottomScale are horizontal (Qt::Horizontal) scales,
-  LeftScale, RightScale are vertical (Qt::Vertical) scales.
-
-  \sa alignment()
-*/
-Qt::Orientation QwtScaleDraw::orientation() const
-{
-    switch(d_data->alignment)
-    {
-        case TopScale:
-        case BottomScale:
-            return Qt::Horizontal;
-        case LeftScale:
-        case RightScale:
-        default:
-            return Qt::Vertical;
-    }
-}
-
-/*!
-  \brief Determine the minimum border distance
-
-  This member function returns the minimum space
-  needed to draw the mark labels at the scale's endpoints.
-
-  \param font Font
-  \param start Start border distance
-  \param end End border distance
-*/
-void QwtScaleDraw::getBorderDistHint(const QFont &font,
-    int &start, int &end ) const
-{
-    start = 0;
-    end = 0;
-    
-    if ( !hasComponent(QwtAbstractScaleDraw::Labels) )
-        return;
-
-    const QwtTickList &ticks = scaleDiv().ticks(QwtScaleDiv::MajorTick);
-    if ( ticks.count() == 0 ) 
-        return;
-
-    QRect lr = labelRect(font, ticks[0]);
-
-    // find the distance between tick and border
-    int off = qwtAbs(map().transform(ticks[0]) - qRound(map().p1()));
-
-    if ( orientation() == Qt::Vertical )
-        end = lr.bottom() + 1 - off;
-    else
-        start = -lr.left() - off;
-
-    const int lastTick = ticks.count() - 1;
-    lr = labelRect(font, ticks[lastTick]);
-
-    // find the distance between tick and border
-    off = qwtAbs(map().transform(ticks[lastTick]) - qRound(map().p2()));
-
-    if ( orientation() == Qt::Vertical )
-        start = -lr.top() - off;
-    else
-        end = lr.right() + 1 - off;
-
-    // if the distance between tick and border is larger
-    // than half of the label width/height, we set to 0
-
-    if ( start < 0 )
-        start = 0;
-    if ( end < 0 )
-        end = 0;
-}
-
-/*!
-  Determine the minimum distance between two labels, that is necessary
-  that the texts don't overlap.
-
-  \param font Font
-  \return The maximum width of a label
-
-  \sa getBorderDistHint()
-*/
-
-int QwtScaleDraw::minLabelDist(const QFont &font) const
-{
-    if ( !hasComponent(QwtAbstractScaleDraw::Labels) )
-        return 0;
-
-    const QwtTickList &ticks = scaleDiv().ticks(QwtScaleDiv::MajorTick);
-    if (ticks.count() == 0)
-        return 0;
-
-    const QFontMetrics fm(font);
-
-    const bool vertical = (orientation() == Qt::Vertical);
-
-    QRect bRect1;
-    QRect bRect2 = labelRect(font, ticks[0]);
-    if ( vertical )
-    {
-        bRect2.setRect(-bRect2.bottom(), 0, bRect2.height(), bRect2.width());
-    }
-    int maxDist = 0;
-
-    for (uint i = 1; i < (uint)ticks.count(); i++ )
-    {
-        bRect1 = bRect2;
-        bRect2 = labelRect(font, ticks[i]);
-        if ( vertical )
-        {
-            bRect2.setRect(-bRect2.bottom(), 0,
-                bRect2.height(), bRect2.width());
-        }
-
-        int dist = fm.leading(); // space between the labels
-        if ( bRect1.right() > 0 )
-            dist += bRect1.right();
-        if ( bRect2.left() < 0 )
-            dist += -bRect2.left();
-
-        if ( dist > maxDist )
-            maxDist = dist;
-    }
-
-    double angle = labelRotation() / 180.0 * M_PI;
-    if ( vertical )
-        angle += M_PI / 2;
-
-    if ( sin(angle) == 0.0 )
-        return maxDist;
-
-    const int fmHeight = fm.ascent() - 2; 
-
-    // The distance we need until there is
-    // the height of the label font. This height is needed
-    // for the neighbour labal.
-
-    int labelDist = (int)(fmHeight / sin(angle) * cos(angle));
-    if ( labelDist < 0 )
-        labelDist = -labelDist;
-
-    // The cast above floored labelDist. We want to ceil.
-    labelDist++; 
-
-    // For text orientations close to the scale orientation 
-
-    if ( labelDist > maxDist )
-        labelDist = maxDist;
-
-    // For text orientations close to the opposite of the 
-    // scale orientation
-
-    if ( labelDist < fmHeight )
-        labelDist = fmHeight;
-
-    return labelDist;
-}
-
-/*!
-   Calculate the width/height that is needed for a
-   vertical/horizontal scale.
-
-   The extent is calculated from the pen width of the backbone,
-   the major tick length, the spacing and the maximum width/height
-   of the labels.
-
-   \param pen Pen that is used for painting backbone and ticks
-   \param font Font used for painting the labels
-
-   \sa minLength()
-*/
-int QwtScaleDraw::extent(const QPen &pen, const QFont &font) const
-{
-    int d = 0;
-
-    if ( hasComponent(QwtAbstractScaleDraw::Labels) )
-    {
-        if ( orientation() == Qt::Vertical )
-            d = maxLabelWidth(font);
-        else
-            d = maxLabelHeight(font);
-
-        if ( d > 0 )
-            d += spacing();
-    }
-
-    if ( hasComponent(QwtAbstractScaleDraw::Ticks) )
-    {
-        d += majTickLength();
-    }
-
-    if ( hasComponent(QwtAbstractScaleDraw::Backbone) )
-    {
-        const int pw = qwtMax( 1, pen.width() );  // penwidth can be zero
-        d += pw;
-    }
-
-    d = qwtMax(d, minimumExtent());
-    return d;
-}
-
-/*!
-   Calculate the minimum length that is needed to draw the scale
-
-   \param pen Pen that is used for painting backbone and ticks
-   \param font Font used for painting the labels
-
-   \sa extent()
-*/
-int QwtScaleDraw::minLength(const QPen &pen, const QFont &font) const
-{
-    int startDist, endDist;
-    getBorderDistHint(font, startDist, endDist);
-
-    const QwtScaleDiv &sd = scaleDiv();
-
-    const uint minorCount =
-        sd.ticks(QwtScaleDiv::MinorTick).count() +
-        sd.ticks(QwtScaleDiv::MediumTick).count();
-    const uint majorCount =
-        sd.ticks(QwtScaleDiv::MajorTick).count();
-
-    int lengthForLabels = 0;
-    if ( hasComponent(QwtAbstractScaleDraw::Labels) )
-    {
-        if ( majorCount >= 2 )
-            lengthForLabels = minLabelDist(font) * (majorCount - 1);
-    }
-
-    int lengthForTicks = 0;
-    if ( hasComponent(QwtAbstractScaleDraw::Ticks) )
-    {
-        const int pw = qwtMax( 1, pen.width() );  // penwidth can be zero
-        lengthForTicks = 2 * (majorCount + minorCount) * pw;
-    }
-
-    return startDist + endDist + qwtMax(lengthForLabels, lengthForTicks);
-}
-
-/*!
-   Find the position, where to paint a label
-
-   The position has a distance of majTickLength() + spacing() + 1
-   from the backbone. The direction depends on the alignment()
-
-   \param value Value
-*/
-QPoint QwtScaleDraw::labelPosition( double value) const
-{
-    const int tval = map().transform(value);
-    int dist = spacing() + 1;
-    if ( hasComponent(QwtAbstractScaleDraw::Ticks) )
-        dist += majTickLength();
-
-    int px = 0;
-    int py = 0;
-
-    switch(alignment())
-    {
-        case RightScale:
-        {
-            px = d_data->pos.x() + dist;
-            py = tval;
-            break;
-        }
-        case LeftScale:
-        {
-            px = d_data->pos.x() - dist;
-            py = tval;
-            break;
-        }
-        case BottomScale:
-        {
-            px = tval;
-            py = d_data->pos.y() + dist;
-            break;
-        }
-        case TopScale:
-        {
-            px = tval;
-            py = d_data->pos.y() - dist;
-            break;
-        }
-    }
-
-    return QPoint(px, py);
-}
-
-/*!
-   Draw a tick
-
-   \param painter Painter
-   \param value Value of the tick
-   \param len Lenght of the tick
-
-   \sa drawBackbone(), drawLabel()
-*/
-void QwtScaleDraw::drawTick(QPainter *painter, double value, int len) const
-{
-    if ( len <= 0 )
-        return;
-    
-    const int tval = map().transform(value);
-
-    switch(alignment())
-    {
-        case LeftScale:
-            QwtPainter::drawLine(painter, d_data->pos.x(), tval,
-                d_data->pos.x() - len, tval);
-            break;
-
-        case RightScale:
-            QwtPainter::drawLine(painter, d_data->pos.x(), tval,
-                d_data->pos.x() + len, tval);
-            break;
-    
-        case BottomScale:
-            QwtPainter::drawLine(painter, tval, d_data->pos.y(),
-                tval, d_data->pos.y() + len);
-            break;
-
-        case TopScale:
-            QwtPainter::drawLine(painter, tval, d_data->pos.y(),
-                tval, d_data->pos.y() - len);
-            break;
-    }
-}
-
-/*! 
-   Draws the baseline of the scale
-   \param painter Painter
-
-   \sa drawTick(), drawLabel()
-*/
-void QwtScaleDraw::drawBackbone(QPainter *painter) const
-{
-    const int bw2 = painter->pen().width() / 2;
-
-    const QPoint &pos = d_data->pos;
-    const int len = d_data->len - 1;
-
-    switch(alignment())
-    {
-        case LeftScale:
-            QwtPainter::drawLine(painter, pos.x() - bw2,
-                pos.y(), pos.x() - bw2, pos.y() + len);
-            break;
-        case RightScale:
-            QwtPainter::drawLine(painter, pos.x() + bw2,
-                pos.y(), pos.x() + bw2, pos.y() + len);
-            break;
-        case TopScale:
-            QwtPainter::drawLine(painter, pos.x(), pos.y() - bw2,
-                pos.x() + len, pos.y() - bw2);
-            break;
-        case BottomScale:
-            QwtPainter::drawLine(painter, pos.x(), pos.y() + bw2,
-                pos.x() + len, pos.y() + bw2);
-            break;
-    }
-}
-
-/*!
-  \brief Move the position of the scale
-
-  The meaning of the parameter pos depends on the alignment:
-  <dl>
-  <dt>QwtScaleDraw::LeftScale
-  <dd>The origin is the topmost point of the
-      backbone. The backbone is a vertical line. 
-      Scale marks and labels are drawn 
-      at the left of the backbone.
-  <dt>QwtScaleDraw::RightScale
-  <dd>The origin is the topmost point of the
-      backbone. The backbone is a vertical line. 
-      Scale marks and labels are drawn
-      at the right of the backbone.
-  <dt>QwtScaleDraw::TopScale
-  <dd>The origin is the leftmost point of the
-      backbone. The backbone is a horizontal line. 
-      Scale marks and labels are drawn
-      above the backbone.
-  <dt>QwtScaleDraw::BottomScale
-  <dd>The origin is the leftmost point of the
-      backbone. The backbone is a horizontal line 
-      Scale marks and labels are drawn
-      below the backbone.
-  </dl>
-
-  \param pos Origin of the scale
-
-  \sa pos(), setLength()
-*/
-void QwtScaleDraw::move(const QPoint &pos)
-{
-    d_data->pos = pos;
-    updateMap();
-}
-
-/*! 
-   \return Origin of the scale
-   \sa move(), length()
-*/
-QPoint QwtScaleDraw::pos() const
-{
-    return d_data->pos;
-}
-
-/*!
-  Set the length of the backbone.
-  
-  The length doesn't include the space needed for
-  overlapping labels.
-
-  \sa move(), minLabelDist()
-*/
-void QwtScaleDraw::setLength(int length)
-{
-    d_data->len = qwtMax(length, 10);
-    updateMap();
-}
-
-/*! 
-   \return the length of the backbone
-   \sa setLength(), pos()
-*/
-int QwtScaleDraw::length() const
-{
-    return d_data->len;
-}
-
-/*! 
-   Draws the label for a major scale tick
-
-   \param painter Painter
-   \param value Value
-
-   \sa drawTick, drawBackbone
-*/
-void QwtScaleDraw::drawLabel(QPainter *painter, double value) const
-{
-    QwtText lbl = tickLabel(painter->font(), value);
-    if ( lbl.isEmpty() )
-        return; 
-
-    const QPoint pos = labelPosition(value);
-
-    QSize labelSize = lbl.textSize(painter->font());
-    if ( labelSize.height() % 2 )
-        labelSize.setHeight(labelSize.height() + 1);
-    
-    const QwtMatrix m = labelMatrix( pos, labelSize);
-
-    painter->save();
-#if QT_VERSION < 0x040000
-    painter->setWorldMatrix(m, true);
-#else
-    painter->setMatrix(m, true);
-#endif
-
-    lbl.draw (painter, QRect(QPoint(0, 0), labelSize) );
-    painter->restore();
-}
-
-/*!
-   Calculate the matrix that is needed to paint a label
-   depending on its alignment and rotation.
-
-   \param pos Position where to paint the label
-   \param size Size of the label
-
-   \sa setLabelAlignment(), setLabelRotation()
-*/
-QwtMatrix QwtScaleDraw::labelMatrix( 
-    const QPoint &pos, const QSize &size) const
-{   
-    QwtMatrix m;
-    m.translate(pos.x(), pos.y());
-    m.rotate(labelRotation());
-    
-    int flags = labelAlignment();
-    if ( flags == 0 )
-    {
-        switch(alignment())
-        {
-            case RightScale:
-            {
-                if ( flags == 0 )
-                    flags = Qt::AlignRight | Qt::AlignVCenter;
-                break;
-            }
-            case LeftScale:
-            {
-                if ( flags == 0 )
-                    flags = Qt::AlignLeft | Qt::AlignVCenter;
-                break;
-            }
-            case BottomScale:
-            {
-                if ( flags == 0 )
-                    flags = Qt::AlignHCenter | Qt::AlignBottom;
-                break;
-            }
-            case TopScale:
-            {
-                if ( flags == 0 )
-                    flags = Qt::AlignHCenter | Qt::AlignTop;
-                break;
-            }
-        }
-    }
-
-    const int w = size.width();
-    const int h = size.height();
-
-    int x, y;
-    
-    if ( flags & Qt::AlignLeft )
-        x = -w;
-    else if ( flags & Qt::AlignRight )
-        x = -(w % 2); 
-    else // Qt::AlignHCenter
-        x = -(w / 2);
-        
-    if ( flags & Qt::AlignTop )
-        y =  -h ;
-    else if ( flags & Qt::AlignBottom )
-        y = -(h % 2); 
-    else // Qt::AlignVCenter
-        y = -(h/2);
-        
-    m.translate(x, y);
-    
-    return m;
-}   
-
-/*!
-  Find the bounding rect for the label. The coordinates of
-  the rect are relative to spacing + ticklength from the backbone
-  in direction of the tick.
-
-  \param font Font used for painting
-  \param value Value
-*/
-QRect QwtScaleDraw::labelRect(const QFont &font, double value) const
-{   
-    QwtText lbl = tickLabel(font, value);
-    if ( lbl.isEmpty() )
-        return QRect(0, 0, 0, 0);
-
-    const QPoint pos = labelPosition(value);
-
-    QSize labelSize = lbl.textSize(font);
-    if ( labelSize.height() % 2 )
-    {
-#ifdef __GNUC__
-#warning canvas content is one pixel wrong for fonts with odd pixels height
-#endif
-        labelSize.setHeight(labelSize.height() + 1);
-    }
-
-    const QwtMatrix m = labelMatrix(pos, labelSize);
-
-#if 0
-    QRect br = QwtMetricsMap::translate(m, QRect(QPoint(0, 0), labelSize));
-#else
-    QwtPointArray pol(4);
-    pol.setPoint(0, 0, 0); 
-    pol.setPoint(1, 0, labelSize.height() - 1 );
-    pol.setPoint(2, labelSize.width() - 1, 0);
-    pol.setPoint(3, labelSize.width() - 1, labelSize.height() - 1 );
-
-    pol = QwtMetricsMap::translate(m, pol);
-    QRect br = pol.boundingRect();
-#endif
-
-#if QT_VERSION < 0x040000
-    br.moveBy(-pos.x(), -pos.y());
-#else
-    br.translate(-pos.x(), -pos.y());
-#endif
-
-    return br;
-}
-
-/*!
-   Calculate the size that is needed to draw a label
-
-   \param font Label font
-   \param value Value
-*/
-QSize QwtScaleDraw::labelSize(const QFont &font, double value) const
-{
-    return labelRect(font, value).size();
-}
-
-/*!
-  Rotate all labels.
-
-  When changing the rotation, it might be necessary to
-  adjust the label flags too. Finding a useful combination is
-  often the result of try and error.
-
-  \param rotation Angle in degrees. When changing the label rotation,
-                  the label flags often needs to be adjusted too.
-
-  \sa setLabelAlignment(), labelRotation(), labelAlignment().
-
-*/
-void QwtScaleDraw::setLabelRotation(double rotation)
-{
-    d_data->labelRotation = rotation;
-}
-
-/*!
-  \return the label rotation
-  \sa setLabelRotation(), labelAlignment()
-*/
-double QwtScaleDraw::labelRotation() const
-{
-    return d_data->labelRotation;
-}
-
-/*!
-  \brief Change the label flags
-
-  Labels are aligned to the point ticklength + spacing away from the backbone.
-
-  The alignment is relative to the orientation of the label text.
-  In case of an flags of 0 the label will be aligned  
-  depending on the orientation of the scale: 
-  
-      QwtScaleDraw::TopScale: Qt::AlignHCenter | Qt::AlignTop\n
-      QwtScaleDraw::BottomScale: Qt::AlignHCenter | Qt::AlignBottom\n
-      QwtScaleDraw::LeftScale: Qt::AlignLeft | Qt::AlignVCenter\n
-      QwtScaleDraw::RightScale: Qt::AlignRight | Qt::AlignVCenter\n
-  
-  Changing the alignment is often necessary for rotated labels.
-  
-  \param alignment Or'd Qt::AlignmentFlags <see qnamespace.h>
-
-  \sa setLabelRotation(), labelRotation(), labelAlignment()
-  \warning The various alignments might be confusing. 
-           The alignment of the label is not the alignment
-           of the scale and is not the alignment of the flags
-           (QwtText::flags()) returned from QwtAbstractScaleDraw::label().
-*/    
-      
-#if QT_VERSION < 0x040000
-void QwtScaleDraw::setLabelAlignment(int alignment)
-#else
-void QwtScaleDraw::setLabelAlignment(Qt::Alignment alignment)
-#endif
-{
-    d_data->labelAlignment = alignment;
-}   
-
-/*!
-  \return the label flags
-  \sa setLabelAlignment(), labelRotation()
-*/
-#if QT_VERSION < 0x040000
-int QwtScaleDraw::labelAlignment() const
-#else
-Qt::Alignment QwtScaleDraw::labelAlignment() const
-#endif
-{
-    return d_data->labelAlignment;
-}
-
-/*!
-  \param font Font
-  \return the maximum width of a label
-*/
-int QwtScaleDraw::maxLabelWidth(const QFont &font) const
-{
-    int maxWidth = 0;
-
-    const QwtTickList &ticks = scaleDiv().ticks(QwtScaleDiv::MajorTick);
-    for (uint i = 0; i < (uint)ticks.count(); i++)
-    {
-        const double v = ticks[i];
-        if ( scaleDiv().contains(v) )
-        {
-            const int w = labelSize(font, ticks[i]).width();
-            if ( w > maxWidth )
-                maxWidth = w;
-        }
-    }
-
-    return maxWidth;
-}
-
-/*!
-  \param font Font
-  \return the maximum height of a label
-*/
-int QwtScaleDraw::maxLabelHeight(const QFont &font) const
-{
-    int maxHeight = 0;
-    
-    const QwtTickList &ticks = scaleDiv().ticks(QwtScaleDiv::MajorTick);
-    for (uint i = 0; i < (uint)ticks.count(); i++)
-    {
-        const double v = ticks[i];
-        if ( scaleDiv().contains(v) )
-        {
-            const int h = labelSize(font, ticks[i]).height();
-            if ( h > maxHeight )
-                maxHeight = h; 
-        }       
-    }   
-    
-    return maxHeight;
-}   
-
-void QwtScaleDraw::updateMap()
-{
-    QwtScaleMap &sm = scaleMap();
-    if ( orientation() == Qt::Vertical )
-        sm.setPaintInterval(d_data->pos.y() + d_data->len - 1, d_data->pos.y());
-    else
-        sm.setPaintInterval(d_data->pos.x(), d_data->pos.x() + d_data->len - 1);
-}
diff --git a/src/qwt/qwt_scale_engine.cpp b/src/qwt/qwt_scale_engine.cpp
deleted file mode 100644
index 9b4913c..0000000
--- a/src/qwt/qwt_scale_engine.cpp
+++ /dev/null
@@ -1,916 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- * 
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-#include "qwt_math.h"
-#include "qwt_scale_map.h"
-#include "qwt_scale_engine.h"
-
-static const double _eps = 1.0e-6;
-
-/*!
-  \brief Compare 2 values, relative to an interval
-
-  Values are "equal", when :
-  \f$\cdot value2 - value1 <= abs(intervalSize * 10e^{-6})\f$
-
-  \param value1 First value to compare
-  \param value2 Second value to compare
-  \param intervalSize interval size
-
-  \return 0: if equal, -1: if value2 > value1, 1: if value1 > value2
-*/
-int QwtScaleArithmetic::compareEps(double value1, double value2, 
-    double intervalSize) 
-{
-    const double eps = qwtAbs(_eps * intervalSize);
-
-    if ( value2 - value1 > eps )
-        return -1;
-
-    if ( value1 - value2 > eps )
-        return 1;
-
-    return 0;
-}
-
-/*!
-  Ceil a value, relative to an interval
-
-  \param value Value to ceil
-  \param intervalSize Interval size
- 
-  \sa floorEps
-*/
-double QwtScaleArithmetic::ceilEps(double value, 
-    double intervalSize) 
-{
-    const double eps = _eps * intervalSize;
-
-    value = (value - eps) / intervalSize;
-    return ceil(value) * intervalSize;
-}
-
-/*!
-  Floor a value, relative to an interval
-
-  \param value Value to floor
-  \param intervalSize Interval size
- 
-  \sa floorEps
-*/
-double QwtScaleArithmetic::floorEps(double value, double intervalSize) 
-{
-    const double eps = _eps * intervalSize;
-
-    value = (value + eps) / intervalSize;
-    return floor(value) * intervalSize;
-}
-
-/*
-  \brief Divide an interval into steps
-
-  \f$stepSize = (intervalSize - intervalSize * 10e^{-6}) / numSteps\f$
-
-  \param intervalSize Interval size
-  \param numSteps Number of steps
-  \return Step size
-*/
-double QwtScaleArithmetic::divideEps(double intervalSize, double numSteps) 
-{
-    if ( numSteps == 0.0 || intervalSize == 0.0 )
-        return 0.0;
-
-    return (intervalSize - (_eps * intervalSize)) / numSteps;
-} 
-
-/*!
-  Find the smallest value out of {1,2,5}*10^n with an integer number n
-  which is greater than or equal to x
-  
-  \param x Input value
-*/
-double QwtScaleArithmetic::ceil125(double x) 
-{
-    if (x == 0.0) 
-        return 0.0;
-
-    const double sign = (x > 0) ? 1.0 : -1.0;
-    const double lx = log10(fabs(x));
-    const double p10 = floor(lx);
-    
-    double fr = pow(10.0, lx - p10);
-    if (fr <=1.0)
-       fr = 1.0; 
-    else if (fr <= 2.0)
-       fr = 2.0;
-    else if (fr <= 5.0) 
-       fr = 5.0;
-    else
-       fr = 10.0;
-
-    return sign * fr * pow(10.0, p10);
-}
-
-/*!
-  \brief Find the largest value out of {1,2,5}*10^n with an integer number n
-  which is smaller than or equal to x
-
-  \param x Input value
-*/
-double QwtScaleArithmetic::floor125(double x) 
-{
-    if (x == 0.0)
-        return 0.0;
-
-    double sign = (x > 0) ? 1.0 : -1.0;
-    const double lx = log10(fabs(x));
-    const double p10 = floor(lx);
-
-    double fr = pow(10.0, lx - p10);
-    if (fr >= 10.0)
-       fr = 10.0;
-    else if (fr >= 5.0)
-       fr = 5.0;
-    else if (fr >= 2.0)
-       fr = 2.0;
-    else
-       fr = 1.0;
-
-    return sign * fr * pow(10.0, p10);
-}
-
-class QwtScaleEngine::PrivateData
-{
-public:
-    PrivateData():
-        attributes(QwtScaleEngine::NoAttribute),
-        loMargin(0.0),
-        hiMargin(0.0),
-        referenceValue(0.0)
-    {
-    }
-
-    int attributes;       // scale attributes
-
-    double loMargin;      // margins
-    double hiMargin;
-
-    double referenceValue; // reference value
-
-};
-
-//! Ctor
-QwtScaleEngine::QwtScaleEngine()
-{
-    d_data = new PrivateData;
-}
-
-
-//! Dtor
-QwtScaleEngine::~QwtScaleEngine ()
-{
-    delete d_data;
-}
-
-/*!
-    \return the margin at the lower end of the scale
-    The default margin is 0.
-
-    \sa QwtScaleEngine::setMargins()
-*/
-double QwtScaleEngine::loMargin() const 
-{ 
-    return d_data->loMargin; 
-}
-
-/*!
-    \return the margin at the upper end of the scale
-    The default margin is 0.
-
-    \sa QwtScaleEngine::setMargins()
-*/
-double QwtScaleEngine::hiMargin() const 
-{ 
-    return d_data->hiMargin; 
-}
-
-/*!
-  \brief Specify margins at the scale's endpoints
-  \param mlo minimum distance between the scale's lower boundary and the
-             smallest enclosed value
-  \param mhi minimum distance between the scale's upper boundary and the
-             greatest enclosed value
-
-  Margins can be used to leave a minimum amount of space between
-  the enclosed intervals and the boundaries of the scale.
-
-  \warning
-  \li QwtLog10ScaleEngine measures the margins in decades.
-
-  \sa QwtScaleEngine::hiMargin, QwtScaleEngine::loMargin
-*/
-
-void QwtScaleEngine::setMargins(double mlo, double mhi)
-{
-    d_data->loMargin = qwtMax(mlo,0.0);
-    d_data->hiMargin = qwtMax(mhi,0.0);
-}
-
-/*!
-  Calculate a step size for an interval size
-
-  \param intervalSize Interval size
-  \param numSteps Number of steps
-  
-  \return Step size
-*/
-double QwtScaleEngine::divideInterval(
-    double intervalSize, int numSteps) const
-{
-    if ( numSteps <= 0 )
-        return 0.0;
-
-    double v = QwtScaleArithmetic::divideEps(intervalSize, numSteps);
-    return QwtScaleArithmetic::ceil125(v);
-}
-
-/*!
-  Check if an interval "contains" a value
-
-  \param interval Interval
-  \param value Value
-
-  \sa QwtScaleArithmetic::compareEps
-*/
-bool QwtScaleEngine::contains(
-    const QwtDoubleInterval &interval, double value) const
-{
-    if (!interval.isValid() )
-        return false;
-    
-    if ( QwtScaleArithmetic::compareEps(value, 
-        interval.minValue(), interval.width()) < 0 )
-    {
-        return false;
-    }
-
-    if ( QwtScaleArithmetic::compareEps(value, 
-        interval.maxValue(), interval.width()) > 0 )
-    {
-        return false;
-    }
-
-    return true;
-}
-
-/*!
-  Remove ticks from a list, that are not inside an interval
-
-  \param ticks Tick list
-  \param interval Interval
-
-  \return Stripped tick list
-*/
-QwtTickList QwtScaleEngine::strip( 
-    const QwtTickList& ticks, 
-    const QwtDoubleInterval &interval) const
-{
-    if ( !interval.isValid() || ticks.count() == 0 )
-        return QwtTickList();
-
-    if ( contains(interval, ticks.first())
-        && contains(interval, ticks.last()) )
-    {
-        return ticks;
-    }
-
-    QwtTickList strippedTicks;
-    for ( int i = 0; i < (int)ticks.count(); i++ )
-    {
-        if ( contains(interval, ticks[i]) )
-            strippedTicks += ticks[i];
-    }
-    return strippedTicks;
-}
-
-/*!
-  \brief Build an interval for a value
-
-  In case of v == 0.0 the interval is [-0.5, 0.5],
-  otherwide it is [0.5 * v, 1.5 * v]
-*/
-
-QwtDoubleInterval QwtScaleEngine::buildInterval(double v) const
-{
-#if 1
-    const double delta = (v == 0.0) ? 0.5 : qwtAbs(0.5 * v);
-    return QwtDoubleInterval(v - delta, v + delta);
-#else
-    if ( v == 0.0 )
-        return QwtDoubleInterval(-0.5, 0.5);
-
-    return QwtDoubleInterval(0.5 * v, 1.5 * v);
-#endif
-}
-
-/*!
-  Change a scale attribute
-
-  \param attribute Attribute to change
-  \param on On/Off
-
-  The behaviour of the scale engine can be changed
-  with the following attributes:
-  <dl>
-  <dt>QwtAutoscale::IncludeReference
-  <dd>Build a scale which includes the reference value.
-  <dt>QwtScaleEngine::Symmetric
-  <dd>Build a scale which is symmetric to the reference value.
-  <dt>QwtScaleEngine::Floating
-  <dd>The endpoints of the scale are supposed to be equal the outmost included
-  values plus the specified margins (see setMargins()). If this attribute is
-  *not* set, the endpoints of the scale will be integer multiples of the step
-  size.
-  <dt>QwtScaleEngine::Inverted
-  <dd>Turn the scale upside down.
-  </dl>
-
-  \sa QwtScaleEngine::testAttribute()
-*/
-void QwtScaleEngine::setAttribute(Attribute attribute, bool on)
-{
-    if (on)
-       d_data->attributes |= attribute;
-    else
-       d_data->attributes &= (~attribute);
-}
-
-/*!
-  Check if a attribute is set.
-
-  \param attribute Attribute to be tested
-  \sa QwtScaleEngine::setAttribute() for a description of the possible options.
-*/
-bool QwtScaleEngine::testAttribute(Attribute attribute) const
-{
-    return bool(d_data->attributes & attribute);
-}
-
-/*!
-  Change the scale attribute
-
-  \param attributes Set scale attributes
-  \sa QwtScaleEngine::attributes()
-*/
-void QwtScaleEngine::setAttributes(int attributes)
-{
-    d_data->attributes = attributes;
-}
-
-/*!
-  Return the scale attributes
-*/
-int QwtScaleEngine::attributes() const
-{
-    return d_data->attributes;
-}
-
-/*!
-  \brief Specify a reference point
-  \param r new reference value
-
-  The reference point is needed if options IncludeRef or
-  Symmetric are active. Its default value is 0.0.
-*/
-void QwtScaleEngine::setReference(double r)
-{
-    d_data->referenceValue = r;
-}
-
-/*!
- \return the reference value
- \sa QwtScaleEngine::setReference(), QwtScaleEngine::setOptions()
-*/
-double QwtScaleEngine::reference() const 
-{ 
-    return d_data->referenceValue; 
-}
-
-/*!
-  Return a transformation, for linear scales
-*/
-QwtScaleTransformation QwtLinearScaleEngine::transformation() const
-{
-    return QwtScaleTransformation(QwtScaleTransformation::linearXForm, 
-        QwtScaleTransformation::linearXForm);
-}
-
-/*!
-    Align and divide an interval 
-
-   \param maxNumSteps Max. number of steps
-   \param x1 First limit of the interval (In/Out)
-   \param x2 Second limit of the interval (In/Out)
-   \param stepSize Step size (Out)
-
-   \sa QwtLinearScaleEngine::setAttribute
-*/
-void QwtLinearScaleEngine::autoScale(int maxNumSteps, 
-    double &x1, double &x2, double &stepSize) const
-{
-    QwtDoubleInterval interval(x1, x2);
-    interval = interval.normalized();
-
-    interval.setMinValue(interval.minValue() - loMargin());
-    interval.setMaxValue(interval.maxValue() + hiMargin());
-
-    if (testAttribute(QwtScaleEngine::Symmetric))
-        interval = interval.symmetrize(reference());
- 
-    if (testAttribute(QwtScaleEngine::IncludeReference))
-        interval = interval.extend(reference());
-
-    if (interval.width() == 0.0)
-        interval = buildInterval(interval.minValue());
-
-    stepSize = divideInterval(interval.width(), qwtMax(maxNumSteps, 1));
-
-    if ( !testAttribute(QwtScaleEngine::Floating) )
-        interval = align(interval, stepSize);
-
-    x1 = interval.minValue();
-    x2 = interval.maxValue();
-
-    if (testAttribute(QwtScaleEngine::Inverted))
-    {
-        qSwap(x1, x2);
-        stepSize = -stepSize;
-    }
-}
-
-/*!
-   \brief Calculate a scale division
-
-   \param x1 First interval limit 
-   \param x2 Second interval limit 
-   \param maxMajSteps Maximum for the number of major steps
-   \param maxMinSteps Maximum number of minor steps
-   \param stepSize Step size. If stepSize == 0, the scaleEngine
-                   calculates one.
-
-   \sa QwtScaleEngine::stepSize, QwtScaleEngine::subDivide
-*/
-QwtScaleDiv QwtLinearScaleEngine::divideScale(double x1, double x2,
-    int maxMajSteps, int maxMinSteps, double stepSize) const
-{
-    QwtDoubleInterval interval = QwtDoubleInterval(x1, x2).normalized();
-    if (interval.width() <= 0 )
-        return QwtScaleDiv();
-
-    stepSize = qwtAbs(stepSize);
-    if ( stepSize == 0.0 )
-    {
-        if ( maxMajSteps < 1 )
-            maxMajSteps = 1;
-
-        stepSize = divideInterval(interval.width(), maxMajSteps);
-    }
-
-    QwtScaleDiv scaleDiv;
-
-    if ( stepSize != 0.0 )
-    {
-        QwtTickList ticks[QwtScaleDiv::NTickTypes];
-        buildTicks(interval, stepSize, maxMinSteps, ticks);
-
-        scaleDiv = QwtScaleDiv(interval, ticks);
-    }
-
-    if ( x1 > x2 )
-        scaleDiv.invert();
-
-    return scaleDiv;
-}
-
-void QwtLinearScaleEngine::buildTicks(
-    const QwtDoubleInterval& interval, double stepSize, int maxMinSteps,
-    QwtTickList ticks[QwtScaleDiv::NTickTypes]) const
-{
-    const QwtDoubleInterval boundingInterval =
-        align(interval, stepSize);
-    
-    ticks[QwtScaleDiv::MajorTick] = 
-        buildMajorTicks(boundingInterval, stepSize);
-
-    if ( maxMinSteps > 0 )
-    {
-        buildMinorTicks(ticks[QwtScaleDiv::MajorTick], maxMinSteps, stepSize,
-            ticks[QwtScaleDiv::MinorTick], ticks[QwtScaleDiv::MediumTick]);
-    }
-    
-    for ( int i = 0; i < QwtScaleDiv::NTickTypes; i++ )
-    {
-        ticks[i] = strip(ticks[i], interval);
-
-        // ticks very close to 0.0 are 
-        // explicitely set to 0.0
-
-        for ( int j = 0; j < (int)ticks[i].count(); j++ )
-        {
-            if ( QwtScaleArithmetic::compareEps(ticks[i][j], 0.0, stepSize) == 0 )
-                ticks[i][j] = 0.0;
-        }
-    }
-}
-
-QwtTickList QwtLinearScaleEngine::buildMajorTicks(
-    const QwtDoubleInterval &interval, double stepSize) const
-{
-    int numTicks = qRound(interval.width() / stepSize) + 1;
-#if 1
-    if ( numTicks > 10000 )
-        numTicks = 10000;
-#endif
-
-    QwtTickList ticks;
-
-    ticks += interval.minValue();
-    for (int i = 1; i < numTicks - 1; i++)
-        ticks += interval.minValue() + i * stepSize;
-    ticks += interval.maxValue();
-
-    return ticks;
-}
-
-void QwtLinearScaleEngine::buildMinorTicks(
-    const QwtTickList& majorTicks,
-    int maxMinSteps, double stepSize,
-    QwtTickList &minorTicks, 
-    QwtTickList &mediumTicks) const
-{   
-    double minStep = divideInterval(stepSize, maxMinSteps);
-    if (minStep == 0.0)  
-        return; 
-        
-    // # minor steps per interval
-    int nMin = qwtAbs(qRound(stepSize / minStep)) - 1;
-    
-    // Do the minor steps fit into the interval?
-    if ( QwtScaleArithmetic::compareEps((nMin +  1) * qwtAbs(minStep), 
-        qwtAbs(stepSize), stepSize) > 0)
-    {   
-        nMin = 1;
-        minStep = stepSize * 0.5;
-    }
-
-    int medIndex = -1;
-    if ( nMin % 2 )
-        medIndex = nMin / 2;
-
-    // calculate minor ticks
-
-    for (int i = 0; i < (int)majorTicks.count(); i++)
-    {
-        double val = majorTicks[i];
-        for (int k=0; k< nMin; k++)
-        {
-            val += minStep;
-
-            double alignedValue = val;
-            if (QwtScaleArithmetic::compareEps(val, 0.0, stepSize) == 0) 
-                alignedValue = 0.0;
-
-            if ( k == medIndex )
-                mediumTicks += alignedValue;
-            else
-                minorTicks += alignedValue;
-        }
-    }
-}
-
-/*!
-  \brief Align an interval to a step size
-
-  The limits of an interval are aligned that both are integer
-  multiples of the step size.
-
-  \param interval Interval
-  \param stepSize Step size
-
-  \return Aligned interval
-*/
-QwtDoubleInterval QwtLinearScaleEngine::align(
-    const QwtDoubleInterval &interval, double stepSize) const
-{
-    const double x1 = 
-        QwtScaleArithmetic::floorEps(interval.minValue(), stepSize);
-    const double x2 = 
-        QwtScaleArithmetic::ceilEps(interval.maxValue(), stepSize);
-
-    return QwtDoubleInterval(x1, x2);
-}
-
-/*!
-  Return a transformation, for logarithmic (base 10) scales
-*/
-QwtScaleTransformation QwtLog10ScaleEngine::transformation() const
-{
-    return QwtScaleTransformation(QwtScaleTransformation::log10XForm, 
-        QwtScaleTransformation::log10InvXForm);
-}
-
-/*!
-    Align and divide an interval
-
-   \param maxNumSteps Max. number of steps
-   \param x1 First limit of the interval (In/Out)
-   \param x2 Second limit of the interval (In/Out)
-   \param stepSize Step size (Out)
-
-   \sa QwtScaleEngine::setAttribute
-*/
-void QwtLog10ScaleEngine::autoScale(int maxNumSteps, 
-    double &x1, double &x2, double &stepSize) const
-{
-    if ( x1 > x2 )
-        qSwap(x1, x2);
-
-    QwtDoubleInterval interval(x1 / pow(10.0, loMargin()), 
-        x2 * pow(10.0, hiMargin()) );
-
-    double logRef = 1.0;
-    if (reference() > LOG_MIN / 2)
-        logRef = qwtMin(reference(), LOG_MAX / 2);
-
-    if (testAttribute(QwtScaleEngine::Symmetric))
-    {
-        const double delta = qwtMax(interval.maxValue() / logRef,  
-            logRef / interval.minValue());
-        interval.setInterval(logRef / delta, logRef * delta);
-    }
-
-    if (testAttribute(QwtScaleEngine::IncludeReference))
-        interval = interval.extend(logRef);
-
-    interval = interval.limit(LOG_MIN, LOG_MAX);
-
-    if (interval.width() == 0.0)
-        interval = buildInterval(interval.minValue());
-
-    stepSize = divideInterval(log10(interval).width(), qwtMax(maxNumSteps, 1));
-    if ( stepSize < 1.0 )
-        stepSize = 1.0;
-
-    if (!testAttribute(QwtScaleEngine::Floating))
-        interval = align(interval, stepSize);
-
-    x1 = interval.minValue();
-    x2 = interval.maxValue();
-
-    if (testAttribute(QwtScaleEngine::Inverted))
-    {
-        qSwap(x1, x2);
-        stepSize = -stepSize;
-    }
-}
-
-/*!
-   \brief Calculate a scale division
-
-   \param x1 First interval limit 
-   \param x2 Second interval limit 
-   \param maxMajSteps Maximum for the number of major steps
-   \param maxMinSteps Maximum number of minor steps
-   \param stepSize Step size. If stepSize == 0, the scaleEngine
-                   calculates one.
-
-   \sa QwtScaleEngine::stepSize, QwtLog10ScaleEngine::subDivide
-*/
-QwtScaleDiv QwtLog10ScaleEngine::divideScale(double x1, double x2,
-    int maxMajSteps, int maxMinSteps, double stepSize) const
-{
-    QwtDoubleInterval interval = QwtDoubleInterval(x1, x2).normalized();
-    interval = interval.limit(LOG_MIN, LOG_MAX);
-
-    if (interval.width() <= 0 )
-        return QwtScaleDiv();
-
-    if (interval.maxValue() / interval.minValue() < 10.0)
-    {
-        // scale width is less than one decade -> build linear scale
-    
-        QwtLinearScaleEngine linearScaler;
-        linearScaler.setAttributes(attributes());
-        linearScaler.setReference(reference());
-        linearScaler.setMargins(loMargin(), hiMargin());
-
-        return linearScaler.divideScale(x1, x2, 
-            maxMajSteps, maxMinSteps, stepSize);
-    }
-
-    stepSize = qwtAbs(stepSize);
-    if ( stepSize == 0.0 )
-    {
-        if ( maxMajSteps < 1 )
-            maxMajSteps = 1;
-
-        stepSize = divideInterval(log10(interval).width(), maxMajSteps);
-        if ( stepSize < 1.0 )
-            stepSize = 1.0; // major step must be >= 1 decade
-    }
-
-    QwtScaleDiv scaleDiv;
-    if ( stepSize != 0.0 )
-    {
-        QwtTickList ticks[QwtScaleDiv::NTickTypes];
-        buildTicks(interval, stepSize, maxMinSteps, ticks);
-
-        scaleDiv = QwtScaleDiv(interval, ticks);
-    }
-
-    if ( x1 > x2 )
-        scaleDiv.invert();
-
-    return scaleDiv;
-}
-
-void QwtLog10ScaleEngine::buildTicks(
-    const QwtDoubleInterval& interval, double stepSize, int maxMinSteps,
-    QwtTickList ticks[QwtScaleDiv::NTickTypes]) const
-{
-    const QwtDoubleInterval boundingInterval =
-        align(interval, stepSize);
-    
-    ticks[QwtScaleDiv::MajorTick] = 
-        buildMajorTicks(boundingInterval, stepSize);
-
-    if ( maxMinSteps > 0 )
-    {
-        ticks[QwtScaleDiv::MinorTick] = buildMinorTicks(
-            ticks[QwtScaleDiv::MajorTick], maxMinSteps, stepSize);
-    }
-    
-    for ( int i = 0; i < QwtScaleDiv::NTickTypes; i++ )
-        ticks[i] = strip(ticks[i], interval);
-}
-
-QwtTickList QwtLog10ScaleEngine::buildMajorTicks(
-    const QwtDoubleInterval &interval, double stepSize) const
-{
-    double width = log10(interval).width();
-
-    int numTicks = qRound(width / stepSize) + 1;
-    if ( numTicks > 10000 )
-        numTicks = 10000;
-
-    const double lxmin = log(interval.minValue());
-    const double lxmax = log(interval.maxValue());
-    const double lstep = (lxmax - lxmin) / double(numTicks - 1);
-
-    QwtTickList ticks;
-
-    ticks += interval.minValue();
-
-    for (int i = 1; i < numTicks; i++)
-       ticks += exp(lxmin + double(i) * lstep);
-
-    ticks += interval.maxValue();
-
-    return ticks;
-}
-
-QwtTickList QwtLog10ScaleEngine::buildMinorTicks(
-    const QwtTickList &majorTicks, 
-    int maxMinSteps, double stepSize) const
-{   
-    if (stepSize < 1.1)            // major step width is one decade
-    {
-        if ( maxMinSteps < 1 )
-            return QwtTickList();
-            
-        int k0, kstep, kmax;
-        
-        if (maxMinSteps >= 8)
-        {
-            k0 = 2;
-            kmax = 9;
-            kstep = 1;
-        }   
-        else if (maxMinSteps >= 4)
-        {
-            k0 = 2;
-            kmax = 8;
-            kstep = 2;
-        }   
-        else if (maxMinSteps >= 2)
-        {
-            k0 = 2;
-            kmax = 5;
-            kstep = 3;
-        }
-        else
-        {
-            k0 = 5;
-            kmax = 5;
-            kstep = 1;
-        }
-
-        QwtTickList minorTicks;
-
-        for (int i = 0; i < (int)majorTicks.count(); i++)
-        {
-            const double v = majorTicks[i];
-            for (int k = k0; k<= kmax; k+=kstep)
-                minorTicks += v * double(k);
-        }
-
-        return minorTicks;
-    }
-    else  // major step > one decade
-    {
-        double minStep = divideInterval(stepSize, maxMinSteps);
-        if ( minStep == 0.0 )
-            return QwtTickList();
-
-        if ( minStep < 1.0 )
-            minStep = 1.0;
-
-        // # subticks per interval
-        int nMin = qRound(stepSize / minStep) - 1;
-
-        // Do the minor steps fit into the interval?
-
-        if ( QwtScaleArithmetic::compareEps((nMin +  1) * minStep, 
-            qwtAbs(stepSize), stepSize) > 0)
-        {
-            nMin = 0;
-        }
-
-        if (nMin < 1)
-            return QwtTickList();      // no subticks
-
-        // substep factor = 10^substeps
-        const double minFactor = qwtMax(pow(10.0, minStep), 10.0);
-
-        QwtTickList minorTicks;
-        for (int i = 0; i < (int)majorTicks.count(); i++)
-        {
-            double val = majorTicks[i];
-            for (int k=0; k< nMin; k++)
-            {
-                val *= minFactor;
-                minorTicks += val;
-            }
-        }
-        return minorTicks;
-    }
-}
-
-/*!
-  \brief Align an interval to a step size
-
-  The limits of an interval are aligned that both are integer
-  multiples of the step size.
-
-  \param interval Interval
-  \param stepSize Step size
-
-  \return Aligned interval
-*/
-QwtDoubleInterval QwtLog10ScaleEngine::align(
-    const QwtDoubleInterval &interval, double stepSize) const
-{
-    const QwtDoubleInterval intv = log10(interval);
-
-    const double x1 = QwtScaleArithmetic::floorEps(intv.minValue(), stepSize);
-    const double x2 = QwtScaleArithmetic::ceilEps(intv.maxValue(), stepSize);
-
-    return pow10(QwtDoubleInterval(x1, x2));
-}
-
-/*!
-  Return the interval [log10(interval.minValue(), log10(interval.maxValue]
-*/
-
-QwtDoubleInterval QwtLog10ScaleEngine::log10(
-    const QwtDoubleInterval &interval) const
-{
-    return QwtDoubleInterval(::log10(interval.minValue()),
-            ::log10(interval.maxValue()));
-}
-
-/*!
-  Return the interval [pow10(interval.minValue(), pow10(interval.maxValue]
-*/
-QwtDoubleInterval QwtLog10ScaleEngine::pow10(
-    const QwtDoubleInterval &interval) const
-{
-    return QwtDoubleInterval(pow(10.0, interval.minValue()),
-            pow(10.0, interval.maxValue()));
-}
diff --git a/src/qwt/qwt_scale_map.cpp b/src/qwt/qwt_scale_map.cpp
deleted file mode 100644
index 3706e8e..0000000
--- a/src/qwt/qwt_scale_map.cpp
+++ /dev/null
@@ -1,251 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- * 
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-#include "qwt_scale_map.h"
-
-QT_STATIC_CONST_IMPL double QwtScaleMap::LogMin = 1.0e-150;
-QT_STATIC_CONST_IMPL double QwtScaleMap::LogMax = 1.0e150;
-
-QwtScaleTransformation::QwtScaleTransformation():
-    xForm(linearXForm),
-    invXForm(linearXForm)
-{
-}
-
-QwtScaleTransformation::QwtScaleTransformation(
-        double (*xf)(double x, double s1, double s2, 
-            double p1, double p2, void *),
-        double (*invxf)(double y, double p1, double p2, 
-            double s1, double s2, void *) ):
-    xForm(xf),
-    invXForm(invxf)
-{
-}
-
-/*!
-  \brief Transform a value between 2 linear intervals
-
-  \param x value related to the interval [x1, x2]
-  \param x1 first border of source interval
-  \param x2 first border of source interval
-  \param y1 first border of target interval
-  \param y2 first border of target interval
-  \return 
-  <dl>
-  <dt>linear mapping:<dd>y1 + (y2 - y1) / (x2 - x1) * (x - x1)
-  </dl>
-*/
-
-double QwtScaleTransformation::linearXForm(    
-    double x, double x1, double x2, double y1, double y2, void *)
-{
-    const double ratio = (y2 - y1) / (x2 - x1);
-    return y1 + (x - x1) * ratio;
-}
-
-/*!
-  \brief Transform a value from a logarithmic to a linear interval
-
-  \param x value related to the logarithmic interval [s1, s2]
-  \param s1 first border of logarithmic interval
-  \param s2 first border of logarithmic interval
-  \param p1 first border of linear interval
-  \param p2 first border of linear interval
-  \return 
-  <dl>
-  <dt>p1 + (p2 - p1) / log(s2 / s1) * log(x / s1)
-  </dl>
-*/
-
-
-double QwtScaleTransformation::log10XForm(double x, double s1, double s2, 
-    double p1, double p2, void *)
-{
-    return p1 + (p2 - p1) / log(s2 / s1) * log(x / s1);
-}
-
-/*!
-  \brief Transform a value from a linear to a logarithmic interval
-
-  \param x value related to the linear interval [p1, p2]
-  \param p1 first border of linear interval
-  \param p2 first border of linear interval
-  \param s1 first border of logarithmic interval
-  \param s2 first border of logarithmic interval
-  \return 
-  <dl>
-  <dt>exp((x - p1) / (p2 - p1) * log(s2 / s1)) * s1;
-  </dl>
-*/
-
-double QwtScaleTransformation::log10InvXForm(double x, double p1, double p2, 
-    double s1, double s2, void *)
-{
-    return exp((x - p1) / (p2 - p1) * log(s2 / s1)) * s1;
-}
-
-/*!
-  \brief Constructor
-
-  The scale and paint device intervals are both set to [0,1].
-*/
-QwtScaleMap::QwtScaleMap():
-    d_s1(0.0),
-    d_s2(1.0),
-    d_p1(0.0),
-    d_p2(1.0),
-    d_cnv(1.0),
-    d_transformationData(NULL)
-{
-}
-
-
-/*!
-  \brief Constructor
-
-  Constructs a QwtScaleMap instance with initial paint device
-  and scale intervals
-
-  \param p1 first border of paint device interval
-  \param p2 second border of paint device interval
-  \param s1 first border of scale interval
-  \param s2 second border of scale interval
-*/ 
-QwtScaleMap::QwtScaleMap(int p1, int p2, double s1, double s2):
-    d_p1(p1),
-    d_p2(p2),
-    d_transformationData(NULL)
-{
-    setScaleInterval(s1, s2);
-}
-
-/*!
-  Destructor
-*/
-QwtScaleMap::~QwtScaleMap()
-{
-}
-
-/*!
-   Initialize the map with a linear/logarithmic transformation
-*/
-void QwtScaleMap::setTransformation(bool logarithmic)
-{
-    QwtScaleTransformation transformation;
-    if ( logarithmic )
-    {
-        transformation.xForm = QwtScaleTransformation::log10XForm;
-        transformation.invXForm = QwtScaleTransformation::log10InvXForm;
-    }
-    else
-    {
-        transformation.xForm = QwtScaleTransformation::linearXForm;
-        transformation.invXForm = QwtScaleTransformation::linearXForm;
-    }
-    setTransformation(transformation);
-}
-
-/*!
-   Initialize the map with a transformation
-*/
-void QwtScaleMap::setTransformation(
-    const QwtScaleTransformation &transformation)
-{
-    d_transformation = transformation;
-}
-
-//! Get the transformation
-const QwtScaleTransformation &QwtScaleMap::transformation() const
-{
-    return d_transformation;
-}
-
-/*!
-   Add data, that will passed to the transformations
-
-   \warning The transformationData has to be deleted by the application
-*/
-void QwtScaleMap::setTransformationData(void *transformationData)
-{
-    d_transformationData = transformationData;
-}
-
-//! Get the data, that is passed to the transformations
-void *QwtScaleMap::transformationData() const
-{
-    return d_transformationData;
-}
-
-/*!
-  \brief Specify the borders of the scale interval
-  \param s1 first border
-  \param s2 second border 
-  \warning logarithmic scales might be aligned to [LogMin, LogMax]
-*/
-void QwtScaleMap::setScaleInterval(double s1, double s2)
-{
-    if (d_transformation.xForm == QwtScaleTransformation::log10XForm)
-    {
-        if (s1 < LogMin) 
-           s1 = LogMin;
-        else if (s1 > LogMax) 
-           s1 = LogMax;
-        
-        if (s2 < LogMin) 
-           s2 = LogMin;
-        else if (s2 > LogMax) 
-           s2 = LogMax;
-    }
-
-    d_s1 = s1;
-    d_s2 = s2;
-
-    newFactor();
-}
-
-/*!
-  \brief Specify the borders of the paint device interval
-  \param p1 first border
-  \param p2 second border
-*/
-void QwtScaleMap::setPaintInterval(int p1, int p2)
-{
-    d_p1 = p1;
-    d_p2 = p2;
-    newFactor();
-}
-
-/*!
-  \brief Specify the borders of the paint device interval
-  \param p1 first border
-  \param p2 second border
-*/
-void QwtScaleMap::setPaintXInterval(double p1, double p2)
-{
-    d_p1 = p1;
-    d_p2 = p2;
-    newFactor();
-}
-
-/*!
-  \brief Re-calculate the conversion factor.
-*/
-void QwtScaleMap::newFactor()
-{
-    d_cnv = 0.0;
-#if 1
-    if (d_s2 == d_s1)
-        return;
-#endif
-
-    if (d_transformation.xForm == QwtScaleTransformation::linearXForm)
-        d_cnv = (d_p2 - d_p1) / (d_s2 - d_s1); 
-    else if (d_transformation.xForm == QwtScaleTransformation::log10XForm)
-        d_cnv = (d_p2 - d_p1) / log(d_s2 / d_s1);
-}
diff --git a/src/qwt/qwt_scale_widget.cpp b/src/qwt/qwt_scale_widget.cpp
deleted file mode 100644
index 793df69..0000000
--- a/src/qwt/qwt_scale_widget.cpp
+++ /dev/null
@@ -1,707 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-// vim: expandtab
-
-#include <qpainter.h>
-#include <qevent.h>
-#include "qwt_painter.h"
-#include "qwt_scale_widget.h"
-#include "qwt_math.h"
-#include "qwt_paint_buffer.h"
-#include "qwt_scale_div.h"
-#include "qwt_text.h"
-
-class QwtScaleWidget::PrivateData
-{
-public:
-    PrivateData():
-        scaleDraw(NULL)
-    {
-    }
-
-    ~PrivateData()
-    {
-        delete scaleDraw;
-    }
-
-    QwtScaleDraw *scaleDraw;
-
-    int borderDist[2];
-    int minBorderDist[2];
-    int scaleLength;
-    int baseDist;
-
-    int titleOffset;
-    int titleDist;
-    QwtText title;
-};
-
-/*!
-  \brief Create a scale with the position QwtScaleWidget::Left
-  \param parent Parent widget
-
-  \warning Workaround of a designer problem
-*/
-QwtScaleWidget::QwtScaleWidget(QWidget *parent):
-    QWidget(parent)
-{
-    initScale(QwtScaleDraw::LeftScale);
-}
-
-/*!
-  \brief Constructor
-  \param align Alignment. 
-  \param parent Parent widget
-*/
-QwtScaleWidget::QwtScaleWidget(
-        QwtScaleDraw::Alignment align, QWidget *parent):
-    QWidget(parent)
-{
-    initScale(align);
-}
-
-//! Destructor
-QwtScaleWidget::~QwtScaleWidget()
-{
-    delete d_data;
-}
-
-//! Initialize the scale
-void QwtScaleWidget::initScale(QwtScaleDraw::Alignment align)
-{
-    d_data = new PrivateData;
-
-#if QT_VERSION < 0x040000
-    setWFlags(Qt::WNoAutoErase);
-#endif 
-
-    d_data->borderDist[0] = 0;
-    d_data->borderDist[1] = 0;
-    d_data->minBorderDist[0] = 0;
-    d_data->minBorderDist[1] = 0;
-    d_data->baseDist = 4;
-    d_data->titleOffset = 0;
-    d_data->titleDist = 2;
-
-    d_data->scaleDraw = new QwtScaleDraw;
-    d_data->scaleDraw->setAlignment(align);
-    d_data->scaleDraw->setLength(10);
-
-    const int flags = Qt::AlignHCenter
-#if QT_VERSION < 0x040000
-        | Qt::WordBreak | Qt::ExpandTabs;
-#else
-        | Qt::TextExpandTabs | Qt::TextWordWrap;
-#endif
-    d_data->title.setFlags(flags); 
-    d_data->title.setFont(font()); 
-
-    QSizePolicy policy(QSizePolicy::MinimumExpanding,
-        QSizePolicy::Fixed);
-    if ( d_data->scaleDraw->orientation() == Qt::Vertical )
-        policy.transpose();
-
-    setSizePolicy(policy);
-    
-#if QT_VERSION >= 0x040000
-    setAttribute(Qt::WA_WState_OwnSizePolicy, false);
-#else
-    clearWState( WState_OwnSizePolicy );
-#endif
-
-}
-
-void QwtScaleWidget::setTitle(const QString &title)
-{
-    if ( d_data->title.text() != title )
-    {
-        d_data->title.setText(title);
-        layoutScale();
-    }
-}
-
-/*!
-  \brief Give title new text contents
-  \param title New title
-  \sa QwtScaleWidget::title
-  \warning The title flags are interpreted in
-               direction of the label, AlignTop, AlignBottom can't be set
-               as the title will always be aligned to the scale.
-*/
-void QwtScaleWidget::setTitle(const QwtText &title)
-{
-    QwtText t = title;
-    const int flags = title.flags() & ~(Qt::AlignTop | Qt::AlignBottom);
-    t.setFlags(flags);
-
-    if (t != d_data->title)
-    {
-        d_data->title = t;
-        layoutScale();
-    }
-}
-
-/*!
-  Change the alignment
-
-  \param alignment New alignment
-  \sa QwtScaleWidget::alignment
-*/
-void QwtScaleWidget::setAlignment(QwtScaleDraw::Alignment alignment)
-{
-#if QT_VERSION >= 0x040000
-    if ( !testAttribute(Qt::WA_WState_OwnSizePolicy) )
-#else
-    if ( !testWState( WState_OwnSizePolicy ) )
-#endif
-    {
-        QSizePolicy policy(QSizePolicy::MinimumExpanding,
-            QSizePolicy::Fixed);
-        if ( d_data->scaleDraw->orientation() == Qt::Vertical )
-            policy.transpose();
-        setSizePolicy(policy);
-
-#if QT_VERSION >= 0x040000
-        setAttribute(Qt::WA_WState_OwnSizePolicy, false);
-#else
-        clearWState( WState_OwnSizePolicy );
-#endif
-    }
-
-    if (d_data->scaleDraw)
-        d_data->scaleDraw->setAlignment(alignment);
-    layoutScale();
-}
-
-        
-/*! 
-    \return position 
-    \sa QwtScaleWidget::setPosition
-*/
-QwtScaleDraw::Alignment QwtScaleWidget::alignment() const 
-{
-    if (!scaleDraw())
-        return QwtScaleDraw::LeftScale;
-
-    return scaleDraw()->alignment();
-}
-
-/*!
-  Specify distances of the scale's endpoints from the
-  widget's borders. The actual borders will never be less
-  than minimum border distance.
-  \param dist1 Left or top Distance
-  \param dist2 Right or bottom distance
-  \sa QwtScaleWidget::borderDist
-*/
-void QwtScaleWidget::setBorderDist(int dist1, int dist2)
-{
-    if ( dist1 != d_data->borderDist[0] || dist2 != d_data->borderDist[1] )
-    {
-        d_data->borderDist[0] = dist1;
-        d_data->borderDist[1] = dist2;
-        layoutScale();
-    }
-}
-
-/*!
-  \brief Specify the border distance of the scale's base line.
-  \param bd border distance of the baseline
-  \sa QwtScaleWidget::baseLineDist
-*/
-void QwtScaleWidget::setBaselineDist(int bd)
-{
-    bd = qwtMax( 0, bd );
-    if ( bd != d_data->baseDist )
-    {
-        d_data->baseDist = bd;
-        layoutScale();
-    }
-}
-
-/*!
-  \brief Specify the distance between scale and title
-  \param td Title distance
-  \sa QwtScaleWidget::titleDist
-*/
-void QwtScaleWidget::setTitleDist(int td)
-{
-    td = qwtMax( 0, td );
-    if ( td != d_data->titleDist )
-    {
-        d_data->titleDist = td;
-        layoutScale();
-    }
-}
-
-/*!
-  \brief Change the alignment for the labels.
-
-  \sa QwtScaleDraw::setLabelAlignment(), QwtScaleWidget::setLabelRotation()
-*/
-#if QT_VERSION < 0x040000
-void QwtScaleWidget::setLabelAlignment(int alignment)
-#else
-void QwtScaleWidget::setLabelAlignment(Qt::Alignment alignment)
-#endif
-{
-    d_data->scaleDraw->setLabelAlignment(alignment);
-    layoutScale();
-}
-
-/*!
-  \brief Change the rotation for the labels.
-  See QwtScaleDraw::setLabelRotation().
-  \sa QwtScaleDraw::setLabelRotation(), QwtScaleWidget::setLabelFlags()
-*/
-void QwtScaleWidget::setLabelRotation(double rotation)
-{
-    d_data->scaleDraw->setLabelRotation(rotation);
-    layoutScale();
-}
-
-/*!
-  \brief Set a scale draw
-  sd has to be created with new and will be deleted in
-  QwtScaleWidget::~QwtScale or the next call of QwtScaleWidget::setScaleDraw.
-*/
-void QwtScaleWidget::setScaleDraw(QwtScaleDraw *sd)
-{
-    if ( sd == NULL || sd == d_data->scaleDraw )
-        return;
-
-    if ( d_data->scaleDraw )
-        *sd = *d_data->scaleDraw;
-
-    delete d_data->scaleDraw;
-    d_data->scaleDraw = sd;
-
-    layoutScale();
-}
-
-/*! 
-    scaleDraw of this scale
-    \sa QwtScaleDraw::setScaleDraw
-*/
-const QwtScaleDraw *QwtScaleWidget::scaleDraw() const 
-{ 
-    return d_data->scaleDraw; 
-}
-
-/*! 
-    scaleDraw of this scale
-    \sa QwtScaleDraw::setScaleDraw
-*/
-QwtScaleDraw *QwtScaleWidget::scaleDraw() 
-{ 
-    return d_data->scaleDraw; 
-}
-
-/*! 
-    \return title 
-    \sa QwtScaleWidget::setTitle
-*/
-QwtText QwtScaleWidget::title() const 
-{
-    return d_data->title;
-}
-
-/*! 
-    \return start border distance 
-    \sa QwtScaleWidget::setBorderDist
-*/
-int QwtScaleWidget::startBorderDist() const 
-{ 
-    return d_data->borderDist[0]; 
-}  
-
-/*! 
-    \return end border distance 
-    \sa QwtScaleWidget::setBorderDist
-*/
-int QwtScaleWidget::endBorderDist() const 
-{ 
-    return d_data->borderDist[1]; 
-}
-
-/*! 
-    \return base line distance 
-    \sa QwtScaleWidget::setBaselineDist
-*/
-int QwtScaleWidget::baseLineDist() const 
-{ 
-    return d_data->baseDist; 
-}
-
-/*! 
-    \return distance between scale and title
-    \sa QwtScaleWidget::setBaselineDist
-*/
-int QwtScaleWidget::titleDist() const 
-{ 
-    return d_data->titleDist; 
-}
-
-/*!
-  \brief paintEvent
-*/
-void QwtScaleWidget::paintEvent(QPaintEvent *e)
-{
-    const QRect &ur = e->rect();
-    if ( ur.isValid() )
-    {
-#if QT_VERSION < 0x040000
-        QwtPaintBuffer paintBuffer(this, ur);
-        draw(paintBuffer.painter());
-#else
-        QPainter painter(this);
-        draw(&painter);
-#endif
-    }
-}
-
-/*!
-  \brief draw the scale
-*/
-void QwtScaleWidget::draw(QPainter *p) const
-{
-#if QT_VERSION < 0x040000
-    d_data->scaleDraw->draw(p, colorGroup());
-#else
-    d_data->scaleDraw->draw(p, palette());
-#endif
-
-    QRect r = rect();
-    if ( d_data->scaleDraw->orientation() == Qt::Horizontal )
-    {
-        r.setLeft(r.left() + d_data->borderDist[0]);
-        r.setWidth(r.width() - d_data->borderDist[1]);
-    }
-    else
-    {
-        r.setTop(r.top() + d_data->borderDist[1]);
-        r.setHeight(r.height() - d_data->borderDist[0]);
-    }
-
-    switch(d_data->scaleDraw->alignment())
-    {
-        case QwtScaleDraw::BottomScale:
-            r.setTop( r.top() + d_data->titleOffset );
-            break;
-
-        case QwtScaleDraw::LeftScale:
-            r.setRight( r.right() - d_data->titleOffset );
-            break;
-
-        case QwtScaleDraw::RightScale:
-            r.setLeft( r.left() + d_data->titleOffset );
-            break;
-
-        case QwtScaleDraw::TopScale:
-        default:
-            r.setBottom( r.bottom() - d_data->titleOffset );
-            break;
-    }
-
-    drawTitle(p, d_data->scaleDraw->alignment(), r);
-}
-
-/*!
-  \brief resizeEvent
-*/
-void QwtScaleWidget::resizeEvent(QResizeEvent *)
-{
-    layoutScale(false);
-}
-
-//! Recalculate the scale's geometry and layout based on
-//  the current rect and fonts.
-//  \param update_geometry   notify the layout system and call update
-//         to redraw the scale
-
-void QwtScaleWidget::layoutScale( bool update_geometry )
-{
-    int bd0, bd1;
-    getBorderDistHint(bd0, bd1);
-    if ( d_data->borderDist[0] > bd0 )
-        bd0 = d_data->borderDist[0];
-    if ( d_data->borderDist[1] > bd1 )
-        bd1 = d_data->borderDist[1];
-
-    const QRect r = rect();
-    int x, y, length;
-
-    if ( d_data->scaleDraw->orientation() == Qt::Vertical )
-    {
-        y = r.top() + bd0;
-        length = r.height() - (bd0 + bd1);
-
-        if ( d_data->scaleDraw->alignment() == QwtScaleDraw::LeftScale )
-            x = r.right() - d_data->baseDist;
-        else
-            x = r.left() + d_data->baseDist;
-    }
-    else
-    {
-        x = r.left() + bd0; 
-        length = r.width() - (bd0 + bd1);
-
-        if ( d_data->scaleDraw->alignment() == QwtScaleDraw::BottomScale )
-            y = r.top() + d_data->baseDist;
-        else
-            y = r.bottom() - d_data->baseDist;
-    }
-
-    d_data->scaleDraw->move(x, y);
-    d_data->scaleDraw->setLength(length);
-
-    d_data->titleOffset = d_data->baseDist + d_data->titleDist +
-        d_data->scaleDraw->extent(QPen(), font());;
-
-    if ( update_geometry )
-    {
-      updateGeometry();
-      update();
-    }
-}
-
-/*!
-  Rotate and paint a title according to its position into a given rectangle.
-  \param painter Painter
-  \param align Alignment
-  \param rect Bounding rectangle
-*/
-
-void QwtScaleWidget::drawTitle(QPainter *painter,
-    QwtScaleDraw::Alignment align, const QRect &rect) const
-{
-    QRect r;
-    double angle;
-    int flags = d_data->title.flags() & 
-        ~(Qt::AlignTop | Qt::AlignBottom | Qt::AlignVCenter);
-
-    switch(align)
-    {
-        case QwtScaleDraw::LeftScale:
-            flags |= Qt::AlignTop;
-            angle = -90.0;
-            r.setRect(rect.left(), rect.bottom(), rect.height(), rect.width());
-            break;
-        case QwtScaleDraw::RightScale:
-            flags |= Qt::AlignTop;
-            angle = 90.0;
-            r.setRect(rect.right(), rect.top(), rect.height(), rect.width());
-            break;
-        case QwtScaleDraw::TopScale:
-            flags |= Qt::AlignTop;
-            angle = 0.0;
-            r = rect;
-            break;
-        case QwtScaleDraw::BottomScale:
-        default:
-            flags |= Qt::AlignBottom;
-            angle = 0.0;
-            r = rect;
-            break;
-    }
-
-    painter->save();
-    painter->setFont(font());
-#if QT_VERSION < 0x040000
-    painter->setPen(colorGroup().color(QColorGroup::Text));
-#else
-    painter->setPen(palette().color(QPalette::Text));
-#endif
-
-    painter->translate(r.x(), r.y());
-    if (angle != 0.0)
-        painter->rotate(angle);
-
-
-    QwtText title = d_data->title;
-    title.setFlags(flags);
-    title.draw(painter, QRect(0, 0, r.width(), r.height()));
-
-    painter->restore();
-}
-
-/*!
-  \brief Notify a change of the scale
-
-  This virtual function can be overloaded by derived
-  classes. The default implementation updates the geometry
-  and repaints the widget.
-*/
-
-void QwtScaleWidget::scaleChange()
-{
-    layoutScale();
-}
-
-/*!
-  \return a size hint
-*/
-QSize QwtScaleWidget::sizeHint() const
-{
-    return minimumSizeHint();
-}
-
-/*!
-  \return a minimum size hint
-*/
-QSize QwtScaleWidget::minimumSizeHint() const
-{
-    const Qt::Orientation o = d_data->scaleDraw->orientation();
-
-    // Border Distance cannot be less than the scale borderDistHint
-    // Note, the borderDistHint is already included in minHeight/minWidth
-    int length = 0;
-    int mbd1, mbd2;
-    getBorderDistHint(mbd1, mbd2);
-    length += qwtMax( 0, d_data->borderDist[0] - mbd1 );
-    length += qwtMax( 0, d_data->borderDist[1] - mbd2 );
-    length += d_data->scaleDraw->minLength(QPen(), font());
-
-    int dim = dimForLength(length, font());
-    if ( length < dim )
-    {
-        // compensate for long titles
-        length = dim;
-        dim = dimForLength(length, font());
-    }
-
-    QSize size(length + 2, dim);
-    if ( o == Qt::Vertical )
-        size.transpose();
-
-    return size;
-}
-
-/*!
-  \brief Find the height of the title for a given width.
-  \param width Width
-  \return height Height
- */
-
-int QwtScaleWidget::titleHeightForWidth(int width) const
-{
-    return d_data->title.heightForWidth(width, font());
-}
-
-/*!
-  \brief Find the minimum dimension for a given length.
-         dim is the height, length the width seen in
-         direction of the title.
-  \param length width for horizontal, height for vertical scales
-  \param scaleFont Font of the scale
-  \return height for horizontal, width for vertical scales
-*/
-
-int QwtScaleWidget::dimForLength(int length, const QFont &scaleFont) const
-{
-    int dim = d_data->baseDist;
-    dim += d_data->scaleDraw->extent(QPen(), scaleFont);
-
-    if ( !d_data->title.isEmpty() )
-    {
-        dim += titleHeightForWidth(length) + d_data->titleDist;
-    }
-    return dim;
-}
-
-/*!
-  \brief Calculate a hint for the border distances.
-
-  This member function calculates the distance
-  of the scale's endpoints from the widget borders which
-  is required for the mark labels to fit into the widget.
-  The maximum of this distance an the minimum border distance
-  is returned.
-
-  \warning
-  <ul> <li>The minimum border distance depends on the font.</ul>
-  \sa setMinBorderDist(), getMinBorderDist(), setBorderDist()
-*/
-void QwtScaleWidget::getBorderDistHint(int &start, int &end) const
-{
-    d_data->scaleDraw->getBorderDistHint(font(), start, end);
-
-    if ( start < d_data->minBorderDist[0] )
-        start = d_data->minBorderDist[0];
-
-    if ( end < d_data->minBorderDist[1] )
-        end = d_data->minBorderDist[1];
-}
-
-/*!
-  Set a minimum value for the distances of the scale's endpoints from 
-  the widget borders. This is useful to avoid that the scales
-  are "jumping", when the tick labels or their positions change 
-  often.
-
-  \sa getMinBorderDist(), getBorderDistHint()
-*/
-void QwtScaleWidget::setMinBorderDist(int start, int end)
-{
-    d_data->minBorderDist[0] = start;
-    d_data->minBorderDist[1] = end;
-}
-
-/*!
-  Get the minimum value for the distances of the scale's endpoints from 
-  the widget borders.
-
-  \sa setMinBorderDist(), getBorderDistHint()
-*/
-void QwtScaleWidget::getMinBorderDist(int &start, int &end) const
-{
-    start = d_data->minBorderDist[0];
-    end = d_data->minBorderDist[1];
-}
-
-#if QT_VERSION < 0x040000
-
-/*!
-  \brief Notify a change of the font
-
-  This virtual function may be overloaded by derived widgets.
-  The default implementation resizes the scale and repaints
-  the widget.
-  \param oldFont Previous font
-*/
-void QwtScaleWidget::fontChange(const QFont &oldFont)
-{
-    QWidget::fontChange( oldFont );
-    layoutScale();
-}
-
-#endif
-
-/*!
-  \brief Assign a scale division
-
-  The scale division determines where to set the tick marks.
-
-  \param transformation Transformation, needed to translate between
-                        scale and pixal values
-  \param scaleDiv Scale Division
-  \sa For more information about scale divisions, see QwtScaleDiv.
-*/
-void QwtScaleWidget::setScaleDiv(
-    const QwtScaleTransformation& transformation,
-    const QwtScaleDiv &scaleDiv)
-{
-    if (d_data->scaleDraw->scaleDiv() != scaleDiv)
-    {
-        d_data->scaleDraw->setTransformation(transformation);
-        d_data->scaleDraw->setScaleDiv(scaleDiv);
-        layoutScale();
-    }
-}
diff --git a/src/qwt/qwt_slider.cpp b/src/qwt/qwt_slider.cpp
deleted file mode 100644
index 247c61e..0000000
--- a/src/qwt/qwt_slider.cpp
+++ /dev/null
@@ -1,796 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-// vim: expandtab
-
-#include <math.h>
-#include <qevent.h>
-#include <qdrawutil.h>
-#include <qpainter.h>
-#include <qwt_painter.h>
-#include "qwt_paint_buffer.h"
-#include "qwt_scale_draw.h"
-#include "qwt_scale_map.h"
-#include "qwt_slider.h"
-
-class QwtSlider::PrivateData
-{
-public:
-    QRect sliderRect;
-
-    int thumbLength;
-    int thumbWidth;
-    int borderWidth;
-    int scaleDist;
-    int xMargin;
-    int yMargin;
-
-    QwtSlider::ScalePos scalePos;
-    QwtSlider::BGSTYLE bgStyle;
-
-    /*
-      Scale and values might have different maps. This is
-      confusing and I can't see strong arguments for such
-      a feature. TODO ...
-     */
-    QwtScaleMap map; // linear map
-    mutable QSize sizeHintCache;
-};
-
-/*!
-  \brief Constructor
-  \param parent parent widget
-  \param orientation Orientation of the slider. Can be Qt::Horizontal
-         or Qt::Vertical. Defaults to Horizontal.
-  \param scalePos Position of the scale.  Can be QwtSlider::None,
-         QwtSlider::Left, QwtSlider::Right, QwtSlider::Top,
-         or QwtSlider::Bottom. Defaults to QwtSlider::None.
-  \param bgStyle Background style. QwtSlider::BgTrough draws the
-         slider button in a trough, QwtSlider::BgSlot draws
-         a slot underneath the button. An or-combination of both
-         may also be used. The default is QwtSlider::BgTrough.
-
-  QwtSlider enforces valid combinations of its orientation and scale position.
-  If the combination is invalid, the scale position will be set to None. Valid
-  combinations are:
-  - Qt::Horizonal with None, Top, or Bottom;
-  - Qt::Vertical with None, Left, or Right.
-*/
-QwtSlider::QwtSlider(QWidget *parent,
-        Qt::Orientation orientation, ScalePos scalePos, BGSTYLE bgStyle): 
-    QwtAbstractSlider(orientation, parent)
-{
-    if (orientation == Qt::Vertical) 
-        setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Expanding);
-    else
-        setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
-
-#if QT_VERSION >= 0x040000
-    setAttribute(Qt::WA_WState_OwnSizePolicy, false);
-#else
-    clearWState( WState_OwnSizePolicy );
-#endif
-
-
-#if QT_VERSION < 0x040000
-    setWFlags(Qt::WNoAutoErase);
-#endif
-
-    d_data = new QwtSlider::PrivateData;
-
-    d_data->borderWidth = 2;
-    d_data->scaleDist = 4;
-    d_data->scalePos = scalePos;
-    d_data->xMargin = 0;
-    d_data->yMargin = 0;
-    d_data->bgStyle = bgStyle;
-
-    if (bgStyle == BgSlot)
-    {
-        d_data->thumbLength = 16;
-        d_data->thumbWidth = 30;
-    }
-    else
-    {
-        d_data->thumbLength = 31;
-        d_data->thumbWidth = 16;
-    }
-
-    d_data->sliderRect.setRect(0,0,8,8);
-
-    QwtScaleDraw::Alignment align;
-    if ( orientation == Qt::Vertical )
-    {
-        // enforce a valid combination of scale position and orientation
-        if ((d_data->scalePos == Bottom) || (d_data->scalePos == Top))
-            d_data->scalePos = None;
-        // adopt the policy of layoutSlider (None lays out like Left)
-        if (d_data->scalePos == Right)
-           align = QwtScaleDraw::RightScale;
-        else
-           align = QwtScaleDraw::LeftScale;
-    }
-    else
-    {
-        // enforce a valid combination of scale position and orientation
-        if ((d_data->scalePos == Left) || (d_data->scalePos == Right))
-            d_data->scalePos = None;
-        // adopt the policy of layoutSlider (None lays out like Bottom)
-        if (d_data->scalePos == Top)
-           align = QwtScaleDraw::TopScale;
-        else
-           align = QwtScaleDraw::BottomScale;
-    }
-
-    scaleDraw()->setAlignment(align);
-    scaleDraw()->setLength(100);
-
-    setRange(0.0, 100.0, 1.0);
-    setValue(0.0);
-}
-
-QwtSlider::~QwtSlider()
-{
-    delete d_data;
-}
-
-/*!
-  \brief Set the orientation.
-  \param o Orientation. Allowed values are Qt::Horizontal and Qt::Vertical.
-  
-  If the new orientation and the old scale position are an invalid combination,
-  the scale position will be set to None.
-  \sa QwtAbstractSlider::orientation()
-*/
-void QwtSlider::setOrientation(Qt::Orientation o) 
-{
-    if ( o == orientation() )
-        return;
-
-    if (o == Qt::Horizontal)
-    {
-        if ((d_data->scalePos == Left) || (d_data->scalePos == Right))
-            d_data->scalePos = None;
-    }
-    else // if (o == Qt::Vertical)
-    {
-        if ((d_data->scalePos == Bottom) || (d_data->scalePos == Top))
-            d_data->scalePos = None;
-    }
-
-#if QT_VERSION >= 0x040000
-    if ( !testAttribute(Qt::WA_WState_OwnSizePolicy) )
-#else
-    if ( !testWState( WState_OwnSizePolicy ) ) 
-#endif
-    {
-        QSizePolicy sp = sizePolicy();
-        sp.transpose();
-        setSizePolicy(sp);
-
-#if QT_VERSION >= 0x040000
-        setAttribute(Qt::WA_WState_OwnSizePolicy, false);
-#else
-        clearWState( WState_OwnSizePolicy );
-#endif
-    }
-
-    QwtAbstractSlider::setOrientation(o);
-    layoutSlider();
-}
-
-/*!
-  \brief Change the scale position (and slider orientation).
-
-  \param s Position of the scale.
-
-  A valid combination of scale position and orientation is enforced:
-  - if the new scale position is Left or Right, the scale orientation will
-    become Qt::Vertical;
-  - if the new scale position is Bottom or Top the scale orientation will
-    become Qt::Horizontal;
-  - if the new scale position is None, the scale orientation will not change.
-*/
-void QwtSlider::setScalePosition(ScalePos s)
-{
-    d_data->scalePos = s;
-    if ((s == Bottom) || (s == Top))
-        setOrientation(Qt::Horizontal);
-    else if ((s == Left) || (s == Right))
-        setOrientation(Qt::Vertical);
-    else
-        layoutSlider();
-}
-
-//! Return the scale position.
-QwtSlider::ScalePos QwtSlider::scalePosition() const
-{
-    return d_data->scalePos;
-}
-
-/*!
-  \brief Change the slider's border width
-  \param bd border width
-*/
-void QwtSlider::setBorderWidth(int bd)
-{
-    if ( bd < 0 )
-        bd = 0;
-
-    if ( bd != d_data->borderWidth )
-    {
-        d_data->borderWidth = bd;
-        layoutSlider();
-    }
-}
-
-/*!
-  \brief Set the slider's thumb length
-  \param thumbLength new length
-*/
-void QwtSlider::setThumbLength(int thumbLength)
-{
-    if ( thumbLength < 8 )
-        thumbLength = 8;
-
-    if ( thumbLength != d_data->thumbLength )
-    {
-        d_data->thumbLength = thumbLength;
-        layoutSlider();
-    }
-}
-
-/*!
-  \brief Change the width of the thumb
-  \param w new width
-*/
-void QwtSlider::setThumbWidth(int w)
-{
-    if ( w < 4 )
-        w = 4;
-
-    if ( d_data->thumbWidth != w )
-    {
-        d_data->thumbWidth = w;
-        layoutSlider();
-    }
-}
-
-void QwtSlider::setScaleDraw(QwtScaleDraw *scaleDraw)
-{
-    setAbstractScaleDraw(scaleDraw);
-}
-
-const QwtScaleDraw *QwtSlider::scaleDraw() const
-{
-    return (QwtScaleDraw *)abstractScaleDraw();
-}
-
-QwtScaleDraw *QwtSlider::scaleDraw()
-{
-    return (QwtScaleDraw *)abstractScaleDraw();
-}
-
-//! Notify changed scale
-void QwtSlider::scaleChange()
-{
-    layoutSlider();
-}
-
-
-//! Notify change in font
-void QwtSlider::fontChange(const QFont &f)
-{
-    QwtAbstractSlider::fontChange( f );
-    layoutSlider();
-}
-
-//! Draw the slider into the specified rectangle.
-void QwtSlider::drawSlider(QPainter *p, const QRect &r)
-{
-    QRect cr(r);
-
-    if (d_data->bgStyle & BgTrough)
-    {
-        qDrawShadePanel(p, r.x(), r.y(),
-            r.width(), r.height(),
-#if QT_VERSION < 0x040000
-            colorGroup(), 
-#else
-            palette(), 
-#endif
-            true, d_data->borderWidth,0);
-
-        cr.setRect(r.x() + d_data->borderWidth,
-            r.y() + d_data->borderWidth,
-            r.width() - 2 * d_data->borderWidth,
-            r.height() - 2 * d_data->borderWidth);
-
-        p->fillRect(cr.x(), cr.y(), cr.width(), cr.height(), 
-#if QT_VERSION < 0x040000
-            colorGroup().brush(QColorGroup::Mid)
-#else
-            palette().brush(QPalette::Mid)
-#endif
-        );
-    }
-
-    if ( d_data->bgStyle & BgSlot)
-    {
-        int ws = 4;
-        int ds = d_data->thumbLength / 2 - 4;
-        if ( ds < 1 )
-            ds = 1;
-
-        QRect rSlot;
-        if (orientation() == Qt::Horizontal)
-        {
-            if ( cr.height() & 1 )
-                ws++;
-            rSlot = QRect(cr.x() + ds, 
-                    cr.y() + (cr.height() - ws) / 2,
-                    cr.width() - 2 * ds, ws);
-        }
-        else
-        {
-            if ( cr.width() & 1 )
-                ws++;
-            rSlot = QRect(cr.x() + (cr.width() - ws) / 2, 
-                    cr.y() + ds,
-                    ws, cr.height() - 2 * ds);
-        }
-        p->fillRect(rSlot.x(), rSlot.y(), rSlot.width(), rSlot.height(),
-#if QT_VERSION < 0x040000
-            colorGroup().brush(QColorGroup::Dark)
-#else
-            palette().brush(QPalette::Dark)
-#endif
-        );
-        qDrawShadePanel(p, rSlot.x(), rSlot.y(),
-            rSlot.width(), rSlot.height(), 
-#if QT_VERSION < 0x040000
-            colorGroup(), 
-#else
-            palette(), 
-#endif
-            true, 1 ,0);
-
-    }
-
-    if ( isValid() )
-        drawThumb(p, cr, xyPosition(value()));
-}
-
-//! Draw the thumb at a position
-void QwtSlider::drawThumb(QPainter *p, const QRect &sliderRect, int pos)
-{
-    pos++; // shade line points one pixel below
-    if (orientation() == Qt::Horizontal)
-    {
-        qDrawShadePanel(p, pos - d_data->thumbLength / 2, 
-            sliderRect.y(), d_data->thumbLength, sliderRect.height(),
-#if QT_VERSION < 0x040000
-            colorGroup(), 
-#else
-            palette(), 
-#endif
-            false, d_data->borderWidth, 
-#if QT_VERSION < 0x040000
-            &colorGroup().brush(QColorGroup::Button)
-#else
-            &palette().brush(QPalette::Button)
-#endif
-        );
-
-        qDrawShadeLine(p, pos, sliderRect.y(), 
-            pos, sliderRect.y() + sliderRect.height() - 2, 
-#if QT_VERSION < 0x040000
-            colorGroup(), 
-#else
-            palette(), 
-#endif
-            true, 1);
-    }
-    else // Vertical
-    {
-        qDrawShadePanel(p,sliderRect.x(), pos - d_data->thumbLength / 2, 
-            sliderRect.width(), d_data->thumbLength,
-#if QT_VERSION < 0x040000
-            colorGroup(),
-#else
-            palette(), 
-#endif
-            false, d_data->borderWidth, 
-#if QT_VERSION < 0x040000
-            &colorGroup().brush(QColorGroup::Button)
-#else
-            &palette().brush(QPalette::Button)
-#endif
-        );
-
-        qDrawShadeLine(p, sliderRect.x(), pos,
-            sliderRect.x() + sliderRect.width() - 2, pos, 
-#if QT_VERSION < 0x040000
-            colorGroup(), 
-#else
-            palette(), 
-#endif
-            true, 1);
-    }
-}
-
-//! Find the x/y position for a given value v
-int QwtSlider::xyPosition(double v) const
-{
-    return d_data->map.transform(v);
-}
-
-//! Determine the value corresponding to a specified mouse location.
-double QwtSlider::getValue(const QPoint &p)
-{
-    return d_data->map.invTransform(
-        orientation() == Qt::Horizontal ? p.x() : p.y());
-}
-
-
-/*!
-  \brief Determine scrolling mode and direction
-  \param p point
-  \param scrollMode Scrolling mode
-  \param direction Direction
-*/
-void QwtSlider::getScrollMode(const QPoint &p, 
-    int &scrollMode, int &direction )
-{
-    if (!d_data->sliderRect.contains(p))
-    {
-        scrollMode = ScrNone;
-        direction = 0;
-        return;
-    }
-
-    const int pos = ( orientation() == Qt::Horizontal ) ? p.x() : p.y();
-    const int markerPos = xyPosition(value());
-
-    if ((pos > markerPos - d_data->thumbLength / 2)
-        && (pos < markerPos + d_data->thumbLength / 2))
-    {
-        scrollMode = ScrMouse;
-        direction = 0;
-        return;
-    }
-
-    scrollMode = ScrPage;
-    direction = (pos > markerPos) ? 1 : -1;
-
-    if ( scaleDraw()->map().p1() > scaleDraw()->map().p2() )
-        direction = -direction;
-}
-
-//! Qt paint event
-void QwtSlider::paintEvent(QPaintEvent *e)
-{
-    const QRect &ur = e->rect();
-    if ( ur.isValid() )
-    {
-#if QT_VERSION < 0x040000
-        QwtPaintBuffer paintBuffer(this, ur);
-        draw(paintBuffer.painter(), ur);
-#else
-        QPainter painter(this);
-        draw(&painter, ur);
-#endif
-    }
-}
-
-//! Draw the QwtSlider
-void QwtSlider::draw(QPainter *painter, const QRect&)
-{
-    if (d_data->scalePos != None)
-    {
-#if QT_VERSION < 0x040000
-        scaleDraw()->draw(painter, colorGroup());
-#else
-        scaleDraw()->draw(painter, palette());
-#endif
-    }
-
-    drawSlider(painter, d_data->sliderRect);
-
-    if ( hasFocus() )
-        QwtPainter::drawFocusRect(painter, this, d_data->sliderRect);
-}
-
-//! Qt resize event
-void QwtSlider::resizeEvent(QResizeEvent *)
-{
-    layoutSlider( false );
-}
-
-/*!
-  Recalculate the slider's geometry and layout based on
-  the current rect and fonts.
-  \param update_geometry  notify the layout system and call update
-         to redraw the scale
-*/
-void QwtSlider::layoutSlider( bool update_geometry )
-{
-    int sliderWidth = d_data->thumbWidth;
-    int sld1 = d_data->thumbLength / 2 - 1;
-    int sld2 = d_data->thumbLength / 2 + d_data->thumbLength % 2;
-    if ( d_data->bgStyle & BgTrough )
-    {
-        sliderWidth += 2 * d_data->borderWidth;
-        sld1 += d_data->borderWidth;
-        sld2 += d_data->borderWidth;
-    }
-
-    int scd = 0;
-    if ( d_data->scalePos != None )
-    {
-        int d1, d2;
-        scaleDraw()->getBorderDistHint(font(), d1, d2);
-        scd = qwtMax(d1, d2);
-    }
-
-    int slo = scd - sld1;
-    if ( slo < 0 )
-        slo = 0;
-
-    int x, y, length;
-
-    const QRect r = rect();
-    if (orientation() == Qt::Horizontal)
-    {
-        switch (d_data->scalePos)
-        {
-            case Top:
-            {
-                d_data->sliderRect.setRect(
-                    r.x() + d_data->xMargin + slo,
-                    r.y() + r.height() -
-                    d_data->yMargin - sliderWidth,
-                    r.width() - 2 * d_data->xMargin - 2 * slo,
-                    sliderWidth);
-
-                x = d_data->sliderRect.x() + sld1;
-                y = d_data->sliderRect.y() - d_data->scaleDist;
-
-                break;
-            }
-
-            case Bottom:
-            {
-                d_data->sliderRect.setRect(
-                    r.x() + d_data->xMargin + slo,
-                    r.y() + d_data->yMargin,
-                    r.width() - 2 * d_data->xMargin - 2 * slo,
-                    sliderWidth);
-    
-                x = d_data->sliderRect.x() + sld1;
-                y = d_data->sliderRect.y() + d_data->sliderRect.height() 
-                    + d_data->scaleDist;
-
-                break;
-            }
-
-            case None: // like Bottom, but no scale. See QwtSlider().
-            default:   // inconsistent orientation and scale position
-            {
-                d_data->sliderRect.setRect(
-                    r.x() + d_data->xMargin + slo,
-                    r.y() + d_data->yMargin,
-                    r.width() - 2 * d_data->xMargin - 2 * slo,
-                    sliderWidth);
-
-                x = d_data->sliderRect.x() + sld1;
-                y = 0;
-
-                break;
-            }
-        }
-        length = d_data->sliderRect.width() - (sld1 + sld2);
-    }
-    else // if (orientation() == Qt::Vertical
-    {
-        switch (d_data->scalePos)
-        {
-            case Right:
-                d_data->sliderRect.setRect(
-                    r.x() + d_data->xMargin,
-                    r.y() + d_data->yMargin + slo,
-                    sliderWidth,
-                    r.height() - 2 * d_data->yMargin - 2 * slo);
-
-                x = d_data->sliderRect.x() + d_data->sliderRect.width() 
-                    + d_data->scaleDist;
-                y = d_data->sliderRect.y() + sld1;
-
-                break;
-
-            case Left:
-                d_data->sliderRect.setRect(
-                    r.x() + r.width() - sliderWidth - d_data->xMargin,
-                    r.y() + d_data->yMargin + slo,
-                    sliderWidth,
-                    r.height() - 2 * d_data->yMargin - 2 * slo);
-
-                x = d_data->sliderRect.x() - d_data->scaleDist;
-                y = d_data->sliderRect.y() + sld1;
-
-                break;
-
-            case None: // like Left, but no scale. See QwtSlider().
-            default:   // inconsistent orientation and scale position
-                d_data->sliderRect.setRect(
-                    r.x() + r.width() - sliderWidth - d_data->xMargin,
-                    r.y() + d_data->yMargin + slo,
-                    sliderWidth,
-                    r.height() - 2 * d_data->yMargin - 2 * slo);
-
-                x = 0;
-                y = d_data->sliderRect.y() + sld1;
-
-                break;
-        }
-        length = d_data->sliderRect.height() - (sld1 + sld2);
-    }
-
-    scaleDraw()->move(x, y);
-    scaleDraw()->setLength(length);
-
-    d_data->map.setPaintXInterval(scaleDraw()->map().p1(),
-        scaleDraw()->map().p2());
-
-    if ( update_geometry )
-    {
-        d_data->sizeHintCache = QSize(); // invalidate
-        updateGeometry();
-        update();
-    }
-}
-
-//! Notify change of value
-void QwtSlider::valueChange()
-{
-    QwtAbstractSlider::valueChange();
-    update();
-}
-
-
-//! Notify change of range
-void QwtSlider::rangeChange()
-{
-    d_data->map.setScaleInterval(minValue(), maxValue());
-
-    if (autoScale())
-        rescale(minValue(), maxValue());
-
-    QwtAbstractSlider::rangeChange();
-    layoutSlider();
-}
-
-/*!
-  \brief Set distances between the widget's border and internals.
-  \param xMargin Horizontal margin
-  \param yMargin Vertical margin
-*/
-void QwtSlider::setMargins(int xMargin, int yMargin)
-{
-    if ( xMargin < 0 )
-        xMargin = 0;
-    if ( yMargin < 0 )
-        yMargin = 0;
-
-    if ( xMargin != d_data->xMargin || yMargin != d_data->yMargin )
-    {
-        d_data->xMargin = xMargin;
-        d_data->yMargin = yMargin;
-        layoutSlider();
-    }
-}
-
-/*!
-  Set the background style.
-*/
-void QwtSlider::setBgStyle(BGSTYLE st) 
-{
-    d_data->bgStyle = st; 
-    layoutSlider();
-}
-
-/*!
-  \return the background style.
-*/
-QwtSlider::BGSTYLE QwtSlider::bgStyle() const 
-{ 
-    return d_data->bgStyle; 
-}
-
-/*!
-  \return the thumb length.
-*/
-int QwtSlider::thumbLength() const 
-{
-    return d_data->thumbLength;
-}
-
-/*!
-  \return the thumb width.
-*/
-int QwtSlider::thumbWidth() const 
-{
-    return d_data->thumbWidth;
-}
-
-/*!
-  \return the border width.
-*/
-int QwtSlider::borderWidth() const 
-{
-    return d_data->borderWidth;
-}
-
-/*!
-  \return QwtSlider::minimumSizeHint()
-*/
-QSize QwtSlider::sizeHint() const
-{
-    return minimumSizeHint();
-}
-
-/*!
-  \brief Return a minimum size hint
-  \warning The return value of QwtSlider::minimumSizeHint() depends on 
-           the font and the scale.
-*/
-QSize QwtSlider::minimumSizeHint() const
-{
-    if (!d_data->sizeHintCache.isEmpty()) 
-        return d_data->sizeHintCache;
-
-    int sliderWidth = d_data->thumbWidth;
-    if (d_data->bgStyle & BgTrough)
-        sliderWidth += 2 * d_data->borderWidth;
-
-    int w = 0, h = 0;
-    if (d_data->scalePos != None)
-    {
-        int d1, d2;
-        scaleDraw()->getBorderDistHint(font(), d1, d2);
-        int msMbd = qwtMax(d1, d2);
-
-        int mbd = d_data->thumbLength / 2;
-        if (d_data->bgStyle & BgTrough)
-            mbd += d_data->borderWidth;
-
-        if ( mbd < msMbd )
-            mbd = msMbd;
-
-        const int sdExtent = scaleDraw()->extent( QPen(), font() );
-        const int sdLength = scaleDraw()->minLength( QPen(), font() );
-
-        h = sliderWidth + sdExtent + d_data->scaleDist;
-        w = sdLength - 2 * msMbd + 2 * mbd;
-    }
-    else  // no scale
-    {
-        w = 200;
-        h = sliderWidth;
-    }
-
-    if ( orientation() == Qt::Vertical )
-        qSwap(w, h);
-
-    w += 2 * d_data->xMargin;
-    h += 2 * d_data->yMargin;
-
-    d_data->sizeHintCache = QSize(w, h);
-    return d_data->sizeHintCache;
-}
diff --git a/src/qwt/qwt_spline.cpp b/src/qwt/qwt_spline.cpp
deleted file mode 100644
index 41d813b..0000000
--- a/src/qwt/qwt_spline.cpp
+++ /dev/null
@@ -1,381 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- * 
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-#include "qwt_spline.h"
-#include "qwt_math.h"
-
-class QwtSpline::PrivateData
-{
-public:
-    PrivateData():
-        size(0),
-        buffered(false)
-    {
-        a = b = c = NULL;
-        xbuffer = ybuffer = x = y = NULL;
-    }
-
-    // coefficient vectors
-    double *a;
-    double *b;
-    double *c;
-    double *d;
-
-    // values
-    double *x;
-    double *y;
-    double *xbuffer;
-    double *ybuffer;
-    int size;
-
-    //flags
-    bool buffered;
-};
-
-//! CTOR
-QwtSpline::QwtSpline()
-{
-    d_data = new PrivateData;
-}
-
-//! DTOR
-QwtSpline::~QwtSpline()
-{
-    cleanup();
-    delete d_data;
-}
-
-
-/*!
-  \brief Advise recalc() to buffer the tabulated function or switch off
-         internal buffering
-
-  By default, QwtSpline maintains an internal copy of the
-  tabulated function given as *x and *y arguments
-  of QwtSpline::recalc(). 
-
-  If QwtSpline::copyValues() is called with zero argument,
-  subsequent calls to QwtSpline::recalc() will not buffer these values
-  anymore and just store the pointers instead. The QwtSpline::value()
-  function will then silently assume that these pointers remained valid
-  and that the contents of the arrays have not been changed since
-  the last QwtSpline::recalc().
-
-  If called with no or nonzero argument,
-  any following QwtSpline::recalc() calls will use the internal buffer. 
-
-  \param tf if nonzero, the function table will be buffered
-  \warning copyValues() resets all the contents of QwtSpline.
-           A subsequent recalc() will be necessary.
-*/
-void QwtSpline::copyValues(bool tf)
-{
-    cleanup();
-    d_data->buffered = tf;
-}
-
-/*!
-  Calculate the interpolated function value corresponding 
-  to a given argument x.
-*/
-double QwtSpline::value(double x) const
-{
-    if (!d_data->a)
-        return 0.0;
-
-    const int i = lookup(x);
-
-    const double delta = x - d_data->x[i];
-    return( ( ( ( d_data->a[i] * delta) + d_data->b[i] ) 
-        * delta + d_data->c[i] ) * delta + d_data->y[i] );
-}
-
-//! Determine the function table index corresponding to a value x
-int QwtSpline::lookup(double x) const
-{
-    int i1, i2, i3;
-    
-    if (x <= d_data->x[0])
-       i1 = 0;
-    else if (x >= d_data->x[d_data->size - 2])
-       i1 = d_data->size -2;
-    else
-    {
-        i1 = 0;
-        i2 = d_data->size -2;
-        i3 = 0;
-
-        while ( i2 - i1 > 1 )
-        {
-            i3 = i1 + ((i2 - i1) >> 1);
-
-            if (d_data->x[i3] > x)
-               i2 = i3;
-            else
-               i1 = i3;
-
-        }
-    }
-    return i1;
-}
-
-
-/*!
-  \brief re-calculate the spline coefficients
-
-  Depending on the value of \a periodic, this function
-  will determine the coefficients for a natural or a periodic
-  spline and store them internally. By default, it also buffers the
-  values of x and y, which are needed for the
-  interpolation (See QwtSpline::value()). In order to save memory,
-  this last behaviour may be changed with the QwtSpline::copyValues() function.
-  
-  \param x
-  \param y points
-  \param n number of points
-  \param periodic if true, calculate periodic spline
-  \return true if successful
-  \warning The sequence of x (but not y) values has to be strictly monotone
-           increasing, which means <code>x[0] < x[1] < .... < x[n-1]</code>.
-       If this is not the case, the function will return false
-*/
-bool QwtSpline::recalc(double *x, double *y, int n, bool periodic)
-{
-    cleanup();
-
-    if (n <= 2)
-        return false;
-
-    d_data->size = n;
-
-    if (d_data->buffered)
-    {
-        d_data->xbuffer = new double[n];
-        d_data->ybuffer = new double[n];
-
-        for (int i = 0; i < n; i++)
-        {
-            d_data->xbuffer[i] = x[i];
-            d_data->ybuffer[i] = y[i];
-        }
-        d_data->x = d_data->xbuffer;
-        d_data->y = d_data->ybuffer;
-    }
-    else
-    {
-        d_data->x = x;
-        d_data->y = y;
-    }
-    
-    d_data->a = new double[n-1];
-    d_data->b = new double[n-1];
-    d_data->c = new double[n-1];
-
-    bool ok;
-    if(periodic)
-       ok =  buildPerSpline();
-    else
-       ok =  buildNatSpline();
-
-    if (!ok) 
-        cleanup();
-
-    return ok;
-}
-
-/*!
-  \brief Determines the coefficients for a natural spline
-  \return true if successful
-*/
-bool QwtSpline::buildNatSpline()
-{
-    int i;
-    
-    double *d = new double[d_data->size-1];
-    double *h = new double[d_data->size-1];
-    double *s = new double[d_data->size];
-
-    //
-    //  set up tridiagonal equation system; use coefficient
-    //  vectors as temporary buffers
-    for (i = 0; i < d_data->size - 1; i++) 
-    {
-        h[i] = d_data->x[i+1] - d_data->x[i];
-        if (h[i] <= 0)
-        {
-            delete[] h;
-            delete[] s;
-            delete[] d;
-            return false;
-        }
-    }
-    
-    double dy1 = (d_data->y[1] - d_data->y[0]) / h[0];
-    for (i = 1; i < d_data->size - 1; i++)
-    {
-        d_data->b[i] = d_data->c[i] = h[i];
-        d_data->a[i] = 2.0 * (h[i-1] + h[i]);
-
-        const double dy2 = (d_data->y[i+1] - d_data->y[i]) / h[i];
-        d[i] = 6.0 * ( dy1 - dy2);
-        dy1 = dy2;
-    }
-
-    //
-    // solve it
-    //
-    
-    // L-U Factorization
-    for(i = 1; i < d_data->size - 2;i++)
-    {
-        d_data->c[i] /= d_data->a[i];
-        d_data->a[i+1] -= d_data->b[i] * d_data->c[i]; 
-    }
-
-    // forward elimination
-    s[1] = d[1];
-    for(i=2;i<d_data->size - 1;i++)
-       s[i] = d[i] - d_data->c[i-1] * s[i-1];
-    
-    // backward elimination
-    s[d_data->size - 2] = - s[d_data->size - 2] / d_data->a[d_data->size - 2];
-    for (i= d_data->size -3; i > 0; i--)
-       s[i] = - (s[i] + d_data->b[i] * s[i+1]) / d_data->a[i];
-
-    //
-    // Finally, determine the spline coefficients
-    //
-    s[d_data->size - 1] = s[0] = 0.0;
-    for (i = 0; i < d_data->size - 1; i++)
-    {
-        d_data->a[i] = ( s[i+1] - s[i] ) / ( 6.0 * h[i]);
-        d_data->b[i] = 0.5 * s[i];
-        d_data->c[i] = ( d_data->y[i+1] - d_data->y[i] ) 
-            / h[i] - (s[i+1] + 2.0 * s[i] ) * h[i] / 6.0; 
-    }
-
-    delete[] d;
-    delete[] s;
-    delete[] h;
-
-    return true;
-}
-
-/*!
-  \brief Determines the coefficients for a periodic spline
-  \return true if successful
-*/
-bool QwtSpline::buildPerSpline()
-{
-    int i;
-    
-    double *d = new double[d_data->size-1];
-    double *h = new double[d_data->size-1];
-    double *s = new double[d_data->size];
-    
-    //
-    //  setup equation system; use coefficient
-    //  vectors as temporary buffers
-    //
-    for (i=0; i<d_data->size - 1; i++)
-    {
-        h[i] = d_data->x[i+1] - d_data->x[i];
-        if (h[i] <= 0.0)
-        {
-            delete[] h;
-            delete[] s;
-            delete[] d;
-            return false;
-        }
-    }
-    
-    const int imax = d_data->size - 2;
-    double htmp = h[imax];
-    double dy1 = (d_data->y[0] - d_data->y[imax]) / htmp;
-    for (i=0; i <= imax; i++)
-    {
-        d_data->b[i] = d_data->c[i] = h[i];
-        d_data->a[i] = 2.0 * (htmp + h[i]);
-        const double dy2 = (d_data->y[i+1] - d_data->y[i]) / h[i];
-        d[i] = 6.0 * ( dy1 - dy2);
-        dy1 = dy2;
-        htmp = h[i];
-    }
-
-    //
-    // solve it
-    //
-    
-    // L-U Factorization
-    d_data->a[0] = sqrt(d_data->a[0]);
-    d_data->c[0] = h[imax] / d_data->a[0];
-    double sum = 0;
-
-    for(i=0;i<imax-1;i++)
-    {
-        d_data->b[i] /= d_data->a[i];
-        if (i > 0)
-           d_data->c[i] = - d_data->c[i-1] * d_data->b[i-1] / d_data->a[i];
-        d_data->a[i+1] = sqrt( d_data->a[i+1] - qwtSqr(d_data->b[i]));
-        sum += qwtSqr(d_data->c[i]);
-    }
-    d_data->b[imax-1] = (d_data->b[imax-1] - d_data->c[imax-2] * d_data->b[imax-2]) / d_data->a[imax-1];
-    d_data->a[imax] = sqrt(d_data->a[imax] - qwtSqr(d_data->b[imax-1]) - sum);
-    
-
-    // forward elimination
-    s[0] = d[0] / d_data->a[0];
-    sum = 0;
-    for(i=1;i<imax;i++)
-    {
-        s[i] = (d[i] - d_data->b[i-1] * s[i-1]) / d_data->a[i];
-        sum += d_data->c[i-1] * s[i-1];
-    }
-    s[imax] = (d[imax] - d_data->b[imax-1]*s[imax-1] - sum) / d_data->a[imax];
-    
-    
-    // backward elimination
-    s[imax] = - s[imax] / d_data->a[imax];
-    s[imax-1] = -(s[imax-1] + d_data->b[imax-1] * s[imax]) / d_data->a[imax-1];
-    for (i= imax - 2; i >= 0; i--)
-       s[i] = - (s[i] + d_data->b[i] * s[i+1] + d_data->c[i] * s[imax]) / d_data->a[i];
-
-    //
-    // Finally, determine the spline coefficients
-    //
-    s[d_data->size-1] = s[0];
-    for (i=0;i<d_data->size-1;i++)
-    {
-        d_data->a[i] = ( s[i+1] - s[i] ) / ( 6.0 * h[i]);
-        d_data->b[i] = 0.5 * s[i];
-        d_data->c[i] = ( d_data->y[i+1] - d_data->y[i] ) 
-            / h[i] - (s[i+1] + 2.0 * s[i] ) * h[i] / 6.0; 
-    }
-
-    delete[] d;
-    delete[] s;
-    delete[] h;
-
-    return true;
-}
-
-
-//! Free allocated memory and set size to 0
-void QwtSpline::cleanup()
-{
-    delete[] d_data->a;
-    delete[] d_data->b;
-    delete[] d_data->c;
-    delete[] d_data->xbuffer;
-    delete[] d_data->ybuffer;
-
-    d_data->a = d_data->b = d_data->c = NULL;
-    d_data->xbuffer = d_data->ybuffer = d_data->x = d_data->y = NULL;
-    d_data->size = 0;
-}
diff --git a/src/qwt/qwt_symbol.cpp b/src/qwt/qwt_symbol.cpp
deleted file mode 100644
index 927ce25..0000000
--- a/src/qwt/qwt_symbol.cpp
+++ /dev/null
@@ -1,265 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- * 
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-#include <qpainter.h>
-#include <qapplication.h>
-#include "qwt_painter.h"
-#include "qwt_symbol.h"
-
-#if QT_VERSION < 0x040000
-#include <qpointarray.h>
-#define QwtPointArray QPointArray
-#else
-#include <qpolygon.h>
-#define QwtPointArray QPolygon
-#endif
-
-/*!
-  Default Constructor
-
-  The symbol is constructed with gray interior,
-  black outline with zero width, no size and style 'None'.
-*/
-QwtSymbol::QwtSymbol(): 
-    d_brush(Qt::gray), 
-    d_pen(Qt::black), 
-    d_size(0,0),
-    d_style(QwtSymbol::None)
-{
-}
-
-/*!
-  \brief Constructor
-  \param style Symbol Style
-  \param brush brush to fill the interior
-  \param pen outline pen 
-  \param size size
-*/
-QwtSymbol::QwtSymbol(QwtSymbol::Style style, const QBrush &brush, 
-        const QPen &pen, const QSize &size): 
-    d_brush(brush), 
-    d_pen(pen), 
-    d_size(size),
-    d_style(style)
-{
-}
-
-//! Destructor
-QwtSymbol::~QwtSymbol()
-{
-}
-
-/*!
-  \brief Specify the symbol's size
-
-  If the 'h' parameter is left out or less than 0,
-  and the 'w' parameter is greater than or equal to 0,
-  the symbol size will be set to (w,w).
-  \param w width
-  \param h height (defaults to -1)
-*/
-void QwtSymbol::setSize(int w, int h)
-{
-    if ((w >= 0) && (h < 0)) 
-        h = w;
-    d_size = QSize(w,h);
-}
-
-//! Set the symbol's size
-void QwtSymbol::setSize(const QSize &s)
-{
-    if (s.isValid()) 
-        d_size = s;
-}
-
-/*!
-  \brief Assign a brush
-
-  The brush is used to draw the interior of the symbol.
-  \param br brush
-*/
-void QwtSymbol::setBrush(const QBrush &br)
-{
-    d_brush = br;
-}
-
-/*!
-  \brief Assign a pen
-
-  The pen is used to draw the symbol's outline.
-
-  \param pn pen
-*/
-void QwtSymbol::setPen(const QPen &pn)
-{
-    d_pen = pn;
-}
-
-/*!
-  \brief Draw the symbol at a point (x,y).
-*/
-void QwtSymbol::draw(QPainter *painter, int x, int y) const
-{
-    draw(painter, QPoint(x, y));
-}
-
-
-/*!
-  \brief Draw the symbol into a bounding rectangle.
-
-  This function assumes that the painter has been initialized with
-  brush and pen before. This allows a much more performant implementation
-  when painting many symbols with the same brush and pen like in curves.
-
-  \param painter Painter
-  \param r Bounding rectangle
-*/
-void QwtSymbol::draw(QPainter *painter, const QRect& r) const
-{
-    switch(d_style)
-    {
-        case QwtSymbol::Ellipse:
-            QwtPainter::drawEllipse(painter, r);
-            break;
-        case QwtSymbol::Rect:
-            QwtPainter::drawRect(painter, r);
-            break;
-        case QwtSymbol::Diamond:
-        {
-            const int w2 = r.width() / 2;
-            const int h2 = r.height() / 2;
-
-            QwtPointArray pa(4);
-            pa.setPoint(0, r.x() + w2, r.y());
-            pa.setPoint(1, r.right(), r.y() + h2);
-            pa.setPoint(2, r.x() + w2, r.bottom());
-            pa.setPoint(3, r.x(), r.y() + h2);
-            QwtPainter::drawPolygon(painter, pa);
-            break;
-        }
-        case QwtSymbol::Cross:
-        {
-            const int w2 = r.width() / 2;
-            const int h2 = r.height() / 2;
-
-            QwtPainter::drawLine(painter, r.x() + w2, r.y(), 
-                r.x() + w2, r.bottom());
-            QwtPainter::drawLine(painter, r.x(), r.y() + h2, 
-                r.right(), r.y() + h2);
-            break;
-        }
-        case QwtSymbol::XCross:
-        {
-            QwtPainter::drawLine(painter, r.left(), r.top(), 
-                r.right(), r.bottom());
-            QwtPainter::drawLine(painter, r.left(), r.bottom(), 
-                r.right(), r.top());
-            break;
-        }
-        case QwtSymbol::Triangle:
-        case QwtSymbol::UTriangle:
-        {
-            const int w2 = r.width() / 2;
-
-            QwtPointArray pa(3);
-            pa.setPoint(0, r.x() + w2, r.y());
-            pa.setPoint(1, r.right(), r.bottom());
-            pa.setPoint(2, r.x(), r.bottom());
-            QwtPainter::drawPolygon(painter, pa);
-            break;
-        }
-        case QwtSymbol::DTriangle:
-        {
-            const int w2 = r.width() / 2;
-
-            QwtPointArray pa(3);
-            pa.setPoint(0, r.x(), r.y());
-            pa.setPoint(1, r.right(), r.y());
-            pa.setPoint(2, r.x() + w2, r.bottom());
-            QwtPainter::drawPolygon(painter, pa);
-            break;
-        }
-        case QwtSymbol::RTriangle:
-        {
-            const int h2 = r.height() / 2;
-
-            QwtPointArray pa(3);
-            pa.setPoint(0, r.x(), r.y());
-            pa.setPoint(1, r.right(), r.y() + h2);
-            pa.setPoint(2, r.x(), r.bottom());
-            QwtPainter::drawPolygon(painter, pa);
-            break;
-        }
-        case QwtSymbol::LTriangle:
-        {
-            const int h2 = r.height() / 2;
-
-            QwtPointArray pa(3);
-            pa.setPoint(0, r.right(), r.y());
-            pa.setPoint(1, r.x(), r.y() + h2);
-            pa.setPoint(2, r.right(), r.bottom());
-            QwtPainter::drawPolygon(painter, pa);
-            break;
-        }
-        default:;
-    }
-}
-
-/*!
-  \brief Draw the symbol at a specified point
-
-  \param painter Painter
-  \param pos Center of the symbol
-*/
-void QwtSymbol::draw(QPainter *painter, const QPoint &pos) const
-{
-    QRect rect;
-    rect.setSize(QwtPainter::metricsMap().screenToLayout(d_size));
-    rect.moveCenter(pos);
-
-    painter->setBrush(d_brush);
-    painter->setPen(d_pen);
-    
-    draw(painter, rect);
-}
-
-/*!
-  \brief Specify the symbol style
-
-  The following styles are defined:<dl>
-  <dt>QwtSymbol::None<dd>No Style. The symbol cannot be drawn.
-  <dt>QwtSymbol::Ellipse<dd>Ellipse or circle
-  <dt>QwtSymbol::Rect<dd>Rectangle
-  <dt>QwtSymbol::Diamond<dd>Diamond
-  <dt>QwtSymbol::Triangle<dd>Triangle pointing upwards
-  <dt>QwtSymbol::DTriangle<dd>Triangle pointing downwards
-  <dt>QwtSymbol::UTriangle<dd>Triangle pointing upwards
-  <dt>QwtSymbol::LTriangle<dd>Triangle pointing left
-  <dt>QwtSymbol::RTriangle<dd>Triangle pointing right
-  <dt>QwtSymbol::Cross<dd>Cross
-  <dt>QwtSymbol::XCross<dd>Diagonal cross</dl>
-  \param s style
-*/
-void QwtSymbol::setStyle(QwtSymbol::Style s)
-{
-    d_style = s;
-}
-
-//! == operator
-bool QwtSymbol::operator==(const QwtSymbol &other) const
-{
-    return brush() == other.brush() && pen() == other.pen()
-            && style() == other.style() && size() == other.size();
-}
-
-//! != operator
-bool QwtSymbol::operator!=(const QwtSymbol &other) const
-{
-    return !(*this == other);
-}
diff --git a/src/qwt/qwt_text.cpp b/src/qwt/qwt_text.cpp
deleted file mode 100644
index 6e88a42..0000000
--- a/src/qwt/qwt_text.cpp
+++ /dev/null
@@ -1,389 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2003   Uwe Rathmann
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-// vim: expandtab
-
-#include <qfont.h>
-#include <qcolor.h>
-#include <qpen.h>
-#include <qbrush.h>
-#include <qpainter.h>
-#include "qwt_painter.h"
-#include "qwt_text_engine.h"
-#include "qwt_text.h"
-#if QT_VERSION >= 0x040000
-#include <qapplication.h>
-#include <qdesktopwidget.h>
-#endif
-class QwtText::PrivateData
-{
-public:
-    PrivateData():
-        flags(Qt::AlignCenter),
-        backgroundPen(Qt::NoPen),
-        backgroundBrush(Qt::NoBrush),
-        paintAttributes(QwtText::PaintUsingPainter),
-        layoutAttributes(QwtText::DefaultLayout),
-        textEngine(NULL)
-    {
-    }
-
-    int flags;
-    QString text;
-    QFont font;
-    QColor color;
-    QPen backgroundPen;
-    QBrush backgroundBrush;
-
-    int paintAttributes;
-    int layoutAttributes;
-
-    QwtTextEngine *textEngine;
-};
-
-class QwtText::LayoutCache
-{
-public:
-    void invalidate()
-    {
-        textSize = QSize();
-    }
-
-    QFont font;
-    QSize textSize;
-};
-
-QwtText::QwtText(const QString &text, QwtText::TextFormat textFormat)
-{
-    d_data = new PrivateData;
-    d_data->text = text;
-    d_data->textEngine = textEngine(text, textFormat);
-
-    d_layoutCache = new LayoutCache;
-}
-
-QwtText::QwtText(const QwtText &other)
-{
-    d_data = new PrivateData;
-    *d_data = *other.d_data;
-
-    d_layoutCache = new LayoutCache;
-    *d_layoutCache = *other.d_layoutCache;
-}
-
-//! Destructor
-QwtText::~QwtText() 
-{
-    delete d_data;
-    delete d_layoutCache;
-}
-
-QwtText &QwtText::operator=(const QwtText &other)
-{
-    *d_data = *other.d_data;
-    *d_layoutCache = *other.d_layoutCache;
-    return *this;
-}
-    
-int QwtText::operator==(const QwtText &other) const
-{
-    return d_data->flags == other.d_data->flags &&
-        d_data->text == other.d_data->text &&
-        d_data->font == other.d_data->font &&
-        d_data->color == other.d_data->color &&
-        d_data->backgroundPen == other.d_data->backgroundPen &&
-        d_data->backgroundBrush == other.d_data->backgroundBrush &&
-        d_data->paintAttributes == other.d_data->paintAttributes &&
-        d_data->textEngine == other.d_data->textEngine;
-}
-
-int QwtText::operator!=(const QwtText &other) const // invalidate
-{
-   return !(other == *this);
-}
-
-void QwtText::setText(const QString &text, 
-    QwtText::TextFormat textFormat) 
-{ 
-    d_data->text = text; 
-    d_data->textEngine = textEngine(text, textFormat);
-    d_layoutCache->invalidate();
-}
-
-//! Return the text.
-QString QwtText::text() const 
-{ 
-    return d_data->text; 
-}
-
-void QwtText::setFlags(int flags) 
-{ 
-    if ( flags != d_data->flags )
-    {
-        d_data->flags = flags; 
-#if 1
-        d_layoutCache->invalidate();
-#endif
-    }
-}
-
-int QwtText::flags() const 
-{ 
-    return d_data->flags; 
-}
-
-//! Set the font.
-void QwtText::setFont(const QFont &font) 
-{
-    d_data->font = font; 
-    d_data->paintAttributes |= PaintUsingTextFont;
-}
-
-//! Return the font.
-QFont QwtText::font() const 
-{ 
-    return d_data->font; 
-}
-
-QFont QwtText::usedFont(const QFont &font) const
-{
-    if ( d_data->paintAttributes & PaintUsingTextFont )
-        return d_data->font;
-
-    return font;
-}
-
-void QwtText::setColor(const QColor &color) 
-{ 
-    d_data->paintAttributes |= PaintUsingTextColor;
-    d_data->color = color; 
-}
-
-QColor QwtText::color() const 
-{ 
-    return d_data->color; 
-}
-
-QColor QwtText::usedColor(const QColor &color) const
-{
-    if ( d_data->paintAttributes & PaintUsingTextColor )
-        return d_data->color;
-
-    return color;
-}
-
-void QwtText::setBackgroundPen(const QPen &pen) 
-{ 
-    d_data->paintAttributes |= PaintBackground;
-    d_data->backgroundPen = pen; 
-}
-
-QPen QwtText::backgroundPen() const 
-{ 
-    return d_data->backgroundPen; 
-}
-
-void QwtText::setBackgroundBrush(const QBrush &brush) 
-{ 
-    d_data->paintAttributes |= PaintBackground;
-    d_data->backgroundBrush = brush; 
-}
-
-QBrush QwtText::backgroundBrush() const 
-{ 
-    return d_data->backgroundBrush; 
-}
-
-void QwtText::setPaintAttributes(int attributes)
-{
-    d_data->paintAttributes = attributes;
-}
-
-int QwtText::paintAttributes() const
-{
-    return d_data->paintAttributes;
-}
-
-void QwtText::setLayoutAttributes(int attributes)
-{
-    d_data->layoutAttributes = attributes;
-}
-
-int QwtText::layoutAttributes() const
-{
-    return d_data->layoutAttributes;
-}
-
-int QwtText::heightForWidth(int width, const QFont &font) const
-{
-    const QwtMetricsMap map = QwtPainter::metricsMap();
-    width = map.layoutToScreenX(width);
-
-#if QT_VERSION < 0x040000
-    const QFont fnt = usedFont(font);
-#else
-    // We want to calculate in screen metrics. So
-    // we need a font that uses screen metrics
-
-    const QFont fnt(usedFont(font), QApplication::desktop());
-#endif
-
-    int h = 0;
-
-    if ( d_data->layoutAttributes & MinimumLayout )
-    {
-        int left, right, top, bottom;
-        d_data->textEngine->textMargins(fnt, d_data->text,
-            left, right, top, bottom);
-
-        h = d_data->textEngine->heightForWidth(
-            fnt, d_data->flags, d_data->text, 
-            width + left + right);
-
-        h -= top + bottom;
-    }
-    else
-    {
-        h = d_data->textEngine->heightForWidth(
-            fnt, d_data->flags, d_data->text, width);
-    }
-
-    h = map.screenToLayoutY(h);
-    return h;
-}
-
-QSize QwtText::textSize(const QFont &font) const
-{
-#if QT_VERSION < 0x040000
-    const QFont fnt(usedFont(font));
-#else
-    // We want to calculate in screen metrics. So
-    // we need a font that uses screen metrics
-
-    const QFont fnt(usedFont(font), QApplication::desktop());
-#endif
-
-    if ( !d_layoutCache->textSize.isValid() 
-        || d_layoutCache->font != fnt )
-    {
-        d_layoutCache->textSize = d_data->textEngine->textSize(
-            fnt, d_data->flags, d_data->text);
-        d_layoutCache->font = fnt;
-    }
-
-    QSize sz = d_layoutCache->textSize;
-
-    if ( d_data->layoutAttributes & MinimumLayout )
-    {
-        int left, right, top, bottom;
-        d_data->textEngine->textMargins(fnt, d_data->text,
-            left, right, top, bottom);
-        sz -= QSize(left + right, top + bottom);
-    }
-
-    const QwtMetricsMap map = QwtPainter::metricsMap();
-    sz = map.screenToLayout(sz);
-    return sz;
-}
-
-void QwtText::draw(QPainter *painter, const QRect &rect) const
-{
-    if ( d_data->paintAttributes & PaintBackground )
-    {
-        if ( d_data->backgroundPen != Qt::NoPen || 
-            d_data->backgroundBrush != Qt::NoBrush )
-        {
-            painter->save();
-            painter->setPen(d_data->backgroundPen);
-            painter->setBrush(d_data->backgroundBrush);
-            QwtPainter::drawRect(painter, rect);
-            painter->restore();
-        }
-    }
-
-    painter->save();
-
-    if ( d_data->paintAttributes & PaintUsingTextFont )
-    {
-        painter->setFont(d_data->font);
-    }
-
-    if ( d_data->paintAttributes & PaintUsingTextColor )
-    {
-        if ( d_data->color.isValid() )
-            painter->setPen(d_data->color);
-    }
-
-    QRect expandedRect = rect;
-    if ( d_data->layoutAttributes & MinimumLayout )
-    {
-#if QT_VERSION < 0x040000
-        const QFont fnt(painter->font());
-#else
-        // We want to calculate in screen metrics. So
-        // we need a font that uses screen metrics
-
-        const QFont fnt(painter->font(), QApplication::desktop());
-#endif
-
-        int left, right, top, bottom;
-        d_data->textEngine->textMargins(
-            fnt, d_data->text,
-            left, right, top, bottom);
-
-        const QwtMetricsMap map = QwtPainter::metricsMap();
-        left = map.screenToLayoutX(left);
-        right = map.screenToLayoutX(right);
-        top = map.screenToLayoutY(top);
-        bottom = map.screenToLayoutY(bottom);
-
-        expandedRect.setTop(rect.top() - top);
-        expandedRect.setBottom(rect.bottom() + bottom);
-        expandedRect.setLeft(rect.left() - left);
-        expandedRect.setRight(rect.right() + right);
-    }
-
-    d_data->textEngine->draw(painter, expandedRect, 
-        d_data->flags, d_data->text);
-
-    painter->restore();
-}
-
-QwtTextEngine *QwtText::textEngine(const QString &text,
-    QwtText::TextFormat format) const
-{
-#ifndef QT_NO_RICHTEXT
-    static QwtRichTextEngine richTextEngine;
-#endif
-    static QwtPlainTextEngine plainTextEngine;
-
-    switch(format)
-    {
-        case QwtText::AutoText:
-        {
-#ifndef QT_NO_RICHTEXT
-            if ( richTextEngine.mightRender(text) )
-                return &richTextEngine;
-#endif
-            break;
-        }
-        case QwtText::RichText:
-        {
-#ifndef QT_NO_RICHTEXT
-            return &richTextEngine;
-#endif
-            break;
-        }
-        case QwtText::PlainText:
-        default:
-            return &plainTextEngine;
-    }
-
-    return &plainTextEngine;
-}
diff --git a/src/qwt/qwt_text_engine.cpp b/src/qwt/qwt_text_engine.cpp
deleted file mode 100644
index 7538ab6..0000000
--- a/src/qwt/qwt_text_engine.cpp
+++ /dev/null
@@ -1,314 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2003   Uwe Rathmann
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-// vim: expandtab
-
-#include <qpainter.h>
-#include <qpixmap.h>
-#include <qimage.h>
-#include <qmap.h>
-#include <qwidget.h>
-#include "qwt_math.h"
-#include "qwt_painter.h"
-#include "qwt_text_engine.h"
-
-#if QT_VERSION < 0x040000
-
-#include <qsimplerichtext.h>
-#include <qstylesheet.h>
-
-class QwtRichTextDocument: public QSimpleRichText
-{
-public:
-    QwtRichTextDocument(const QString &text, const QFont &font):
-        QSimpleRichText(text, font)
-    {
-    }
-};
-
-#else // QT_VERSION >= 0x040000
-
-#define USE_LABEL 1
-#ifdef USE_LABEL
-#include <qlabel.h>
-#else
-#include <qtextobject.h>
-#endif
-#include <qtextdocument.h>
-#include <qabstracttextdocumentlayout.h>
-
-class QwtRichTextDocument: public QTextDocument
-{
-public:
-    QwtRichTextDocument(const QString &text, const QFont &font)
-    {
-        setUndoRedoEnabled(false);
-        setDefaultFont(font);
-        setHtml(text);
-
-        // make sure we have a document layout
-        (void)documentLayout();
-    }
-};
-
-#endif
-
-class QwtPlainTextEngine::PrivateData
-{
-public:
-    int effectiveAscent(const QFont &font) const
-    {
-        const QString fontKey = font.key();
-
-        QMap<QString, int>::const_iterator it = 
-            d_ascentCache.find(fontKey);
-        if ( it == d_ascentCache.end() )
-        {
-            int ascent = findAscent(font);
-            it = d_ascentCache.insert(fontKey, ascent);
-        }
-
-        return (*it);
-    }
-
-private:
-    int findAscent(const QFont &font) const
-    {
-        static const QString dummy("E");
-        static const QColor white(Qt::white);
-
-        const QFontMetrics fm(font);
-        QPixmap pm(fm.width(dummy), fm.height()); 
-        pm.fill(white);
-
-        QPainter p(&pm);
-        p.setFont(font);  
-        p.drawText(0, 0,  pm.width(), pm.height(), 0, dummy);
-        p.end();
-
-    #if QT_VERSION < 0x040000
-        const QImage img = pm.convertToImage();
-    #else
-        const QImage img = pm.toImage();
-    #endif
-
-        int row = 0;
-        for ( row = 0; row < img.height(); row++ )
-        {   
-            const QRgb *line = (const QRgb *)img.scanLine(row);
-
-            const int w = pm.width();
-            for ( int col = 0; col < w; col++ )
-            {   
-                if ( line[col] != white.rgb() )
-                    return fm.ascent() - row + 1;
-            }
-        }
-
-        return fm.ascent();
-    }   
-
-    mutable QMap<QString, int> d_ascentCache;
-};
-
-
-QwtTextEngine::QwtTextEngine()
-{
-}
-
-QwtTextEngine::~QwtTextEngine()
-{
-}
-
-void QwtTextEngine::textMargins(const QFont &, const QString &,
-    int &left, int &right, int &top, int &bottom)
-{
-    left = right = top = bottom = 0;
-}
-
-QwtPlainTextEngine::QwtPlainTextEngine()
-{
-    d_data = new PrivateData;
-}
-
-QwtPlainTextEngine::~QwtPlainTextEngine()
-{
-    delete d_data;
-}
-
-int QwtPlainTextEngine::heightForWidth(const QFont& font, int flags,
-        const QString& text, int width) const
-{
-    const QFontMetrics fm(font);
-    const QRect rect = fm.boundingRect(
-        0, 0, width, QWIDGETSIZE_MAX, flags, text);
-
-    return rect.height();
-}
-
-QSize QwtPlainTextEngine::textSize(const QFont &font,
-    int flags, const QString& text) const
-{
-    const QFontMetrics fm(font);
-    const QRect rect = fm.boundingRect(
-        0, 0, QWIDGETSIZE_MAX, QWIDGETSIZE_MAX, flags, text);
-
-    return rect.size();
-}
-
-void QwtPlainTextEngine::textMargins(const QFont &font, const QString &,
-    int &left, int &right, int &top, int &bottom)
-{
-    left = right = top = 0;
-
-    const QFontMetrics fm(font);
-    top = fm.ascent() - d_data->effectiveAscent(font);
-    bottom = fm.descent() + 1;
-}
-
-void QwtPlainTextEngine::draw(QPainter *painter, const QRect &rect,
-    int flags, const QString& text) const
-{
-    QwtPainter::drawText(painter, rect, flags, text);
-}
-
-bool QwtPlainTextEngine::mightRender(const QString &) const
-{
-    return true;
-}
-
-
-#ifndef QT_NO_RICHTEXT
-
-QwtRichTextEngine::QwtRichTextEngine()
-{
-}
-
-int QwtRichTextEngine::heightForWidth(const QFont& font, int flags,
-        const QString& text, int width) const
-{
-    QwtRichTextDocument doc(taggedText(text, flags), font);
-
-#if QT_VERSION < 0x040000
-    doc.setWidth(width);
-    const int h = doc.height();
-#else
-    doc.setPageSize(QSize(width, QWIDGETSIZE_MAX));
-    const int h = qRound(doc.documentLayout()->documentSize().height());
-#endif
-    return h;
-}
-
-QSize QwtRichTextEngine::textSize(const QFont &font,
-    int flags, const QString& text) const
-{
-    QwtRichTextDocument doc(taggedText(text, flags), font);
-
-#if QT_VERSION < 0x040000
-    doc.setWidth(QWIDGETSIZE_MAX);
-
-    int w = doc.widthUsed();
-    int h = doc.height();
-#else
-#if USE_LABEL 
-    /*
-      Unfortunately offering the bounding rect calculation in the
-      API of QTextDocument has been forgotten in Qt <= 4.1.x. It
-      is planned to come with Qt 4.2.x.
-      In the meantime we need a hack with a temporary QLabel,
-      to reengineer the internal calculations.
-     */
-
-    static int off = 0;
-    static QLabel *label = NULL;
-    if ( label == NULL )
-    {
-        label = new QLabel;
-        label->hide();
-
-        const char *s = "XXXXX";
-        label->setText(s);
-        int w1 = label->sizeHint().width();
-        const QFontMetrics fm(label->font());
-        int w2 = fm.width(s);
-        off = w1 - w2;
-    }
-    label->setFont(doc.defaultFont());
-    label->setText(text);
-
-    int w = qwtMax(label->sizeHint().width() - off, 0);
-    doc.setPageSize(QSize(w, QWIDGETSIZE_MAX));
-    
-    int h = qRound(doc.documentLayout()->documentSize().height());
-#else
-    QTextLayout *layout = doc.begin().layout();
-    layout->beginLayout();
-    for(qreal y = 0;;)  
-    {
-        QTextLine line = layout->createLine();
-        if (!line.isValid())
-            break;
-        line.setPosition(QPointF(0, y));
-        y += line.height();
-    }
-    layout->endLayout();
-
-    int w = qRound(layout->maximumWidth());
-    int h = qRound(layout->boundingRect().height());
-
-    h += QFontMetrics(font).descent() + 4;
-    w += 2 * 4;
-#endif
-#endif
-
-    return QSize(w, h);
-}
-
-void QwtRichTextEngine::draw(QPainter *painter, const QRect &rect,
-    int flags, const QString& text) const
-{
-    QwtRichTextDocument doc(taggedText(text, flags), painter->font());
-    QwtPainter::drawSimpleRichText(painter, rect, flags, doc);
-}
-
-//! Wrap text into <div align=...> </div> tags according align
-QString QwtRichTextEngine::taggedText(const QString &text, int flags) const
-{
-    QString richText = text;
-
-    // By default QSimpleRichText is Qt::AlignLeft
-    if (flags & Qt::AlignJustify)
-    {
-        richText.prepend(QString::fromLatin1("<div align=\"justify\">"));
-        richText.append(QString::fromLatin1("</div>"));
-    }
-    else if (flags & Qt::AlignRight)
-    {
-        richText.prepend(QString::fromLatin1("<div align=\"right\">"));
-        richText.append(QString::fromLatin1("</div>"));
-    }
-    else if (flags & Qt::AlignHCenter)
-    {
-        richText.prepend(QString::fromLatin1("<div align=\"center\">"));
-        richText.append(QString::fromLatin1("</div>"));
-    }
-
-    return richText;
-}
-
-bool QwtRichTextEngine::mightRender(const QString &text) const
-{
-#if QT_VERSION < 0x040000
-    return QStyleSheet::mightBeRichText(text);
-#else
-    return Qt::mightBeRichText(text);
-#endif
-}
-
-#endif // !QT_NO_RICHTEXT
diff --git a/src/qwt/qwt_text_label.cpp b/src/qwt/qwt_text_label.cpp
deleted file mode 100644
index 5d7854b..0000000
--- a/src/qwt/qwt_text_label.cpp
+++ /dev/null
@@ -1,304 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-// vim: expandtab
-
-#include <qpainter.h>
-#include <qevent.h>
-#include "qwt_text.h"
-#include "qwt_painter.h"
-#include "qwt_text_label.h"
-
-class QwtTextLabel::PrivateData
-{
-public:
-    PrivateData():
-        indent(4),
-        margin(0)
-    {
-    }
-
-    int indent;
-    int margin;
-    QwtText text;
-};
-
-/*! 
-  Constructs an empty label.
-  \param parent Parent widget
-*/
-
-QwtTextLabel::QwtTextLabel(QWidget *parent):
-    QFrame(parent)
-{
-    init();
-}
-
-/*!
-  Constructs a label that displays the text, text
-  \param parent Parent widget
-  \param text Text
-*/
-QwtTextLabel::QwtTextLabel(const QwtText &text, QWidget *parent):
-    QFrame(parent)
-{
-    init();
-    d_data->text = text;
-}
-
-//! Destructor
-QwtTextLabel::~QwtTextLabel()
-{
-    delete d_data;
-}
-
-void QwtTextLabel::init()
-{
-    d_data = new PrivateData();
-    setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);
-}
-
-/*!
-   Change the label´s text, keeping all other QwtText attributes
-   \param text New text
-   \param textFormat Format of text
-
-  \sa QwtText
-*/
-void QwtTextLabel::setText(const QString &text, QwtText::TextFormat textFormat)
-{
-    d_data->text.setText(text, textFormat);
-    update();
-}
-
-/*!
-   Change the label´s text
-   \param text New text
-*/
-void QwtTextLabel::setText(const QwtText &text)
-{
-    d_data->text = text;
-    update();
-}
-
-//! Return the text
-const QwtText &QwtTextLabel::text() const
-{
-    return d_data->text;
-}
-
-//! Clear the text and all QwtText attributes
-void QwtTextLabel::clear()
-{
-    d_data->text = QwtText();
-    update();
-}
-
-//! Return label's text indent in pixels
-int QwtTextLabel::indent() const
-{
-    return d_data->indent;
-}
-
-/*!
-  Set label's text indent in pixels
-  \param indent Indentation in pixels
-*/
-void QwtTextLabel::setIndent(int indent)
-{
-    if ( indent < 0 )
-        indent = 0;
-
-    d_data->indent = indent;
-    update();
-}
-
-//! Return label's text indent in pixels
-int QwtTextLabel::margin() const
-{
-    return d_data->margin;
-}
-
-/*!
-  Set label's margin in pixels
-  \param margin Margin in pixels
-*/
-void QwtTextLabel::setMargin(int margin)
-{
-    d_data->margin = margin;
-    update();
-}
-
-//! Return label's margin in pixels
-QSize QwtTextLabel::sizeHint() const
-{
-    return minimumSizeHint();
-}
-
-//! Return a minimum size hint
-QSize QwtTextLabel::minimumSizeHint() const
-{
-    QSize sz = d_data->text.textSize(font());
-
-    int mw = 2 * (frameWidth() + d_data->margin);
-    int mh = mw;
-
-    int indent = d_data->indent;
-    if ( indent <= 0 )
-        indent = defaultIndent();
-
-    if ( indent > 0 )
-    {
-        const int align = d_data->text.flags();
-        if ( align & Qt::AlignLeft || align & Qt::AlignRight )
-            mw += d_data->indent;
-        else if ( align & Qt::AlignTop || align & Qt::AlignBottom )
-            mh += d_data->indent;
-    }
-        
-    sz += QSize(mw, mh);
-
-    return sz;
-}
-
-/*!
-   Returns the preferred height for this widget, given the width.
-   \param width Width
-*/
-int QwtTextLabel::heightForWidth(int width) const
-{
-    const int align = d_data->text.flags();
-
-    int indent = d_data->indent;
-    if ( indent <= 0 )
-        indent = defaultIndent();
-
-    width -= 2 * frameWidth();
-    if ( align & Qt::AlignLeft || align & Qt::AlignRight )
-        width -= indent;
-
-    int height = d_data->text.heightForWidth(width, font());
-    if ( align & Qt::AlignTop || align & Qt::AlignBottom )
-        height += indent;
-
-    height += 2 * frameWidth();
-
-    return height;
-}
-
-//! Qt paint event
-void QwtTextLabel::paintEvent(QPaintEvent *event)
-{
-#if QT_VERSION >= 0x040000
-    QPainter painter(this);
-
-    if ( !contentsRect().contains( event->rect() ) )
-    {
-        painter.save();
-        painter.setClipRegion( event->region() & frameRect() );
-        drawFrame( &painter );
-        painter.restore();
-    }
-
-    painter.setClipRegion(event->region() & contentsRect());
-
-    drawContents( &painter );
-#else // QT_VERSION < 0x040000
-    QFrame::paintEvent(event);
-#endif
-
-}
-
-//! Redraw the text and focus indicator
-void QwtTextLabel::drawContents(QPainter *painter)
-{
-    const QRect r = textRect();
-    if ( r.isEmpty() )
-        return;
-
-    painter->setFont(font());
-#if QT_VERSION < 0x040000
-    painter->setPen(palette().color(QPalette::Active, QColorGroup::Text));
-#else
-    painter->setPen(palette().color(QPalette::Active, QPalette::Text));
-#endif
-
-    drawText(painter, r);
-
-    if ( hasFocus() )
-    {
-        const int margin = 2;
-
-        QRect focusRect = contentsRect();
-        focusRect.setRect(focusRect.x() + margin, focusRect.y() + margin,
-            focusRect.width() - 2 * margin - 2, 
-            focusRect.height() - 2 * margin - 2);
-
-        QwtPainter::drawFocusRect(painter, this, focusRect);
-    }
-}
-
-//! Redraw the text
-void QwtTextLabel::drawText(QPainter *painter, const QRect &textRect)
-{
-    d_data->text.draw(painter, textRect);
-}
-
-/*! 
-  Calculate the rect for the text in widget coordinates
-  \return Text rect
-*/
-QRect QwtTextLabel::textRect() const
-{
-    QRect r = contentsRect();
-
-    if ( !r.isEmpty() && d_data->margin > 0 )
-    {
-        r.setRect(r.x() + d_data->margin, r.y() + d_data->margin,
-            r.width() - 2 * d_data->margin, r.height() - 2 * d_data->margin );
-    }
-
-    if ( !r.isEmpty() )
-    {
-        int indent = d_data->indent;
-        if ( indent <= 0 )
-            indent = defaultIndent();
-
-        if ( indent > 0 )
-        {
-            const int align = d_data->text.flags();
-
-            if ( align & Qt::AlignLeft )
-                r.setX(r.x() + indent);
-            else if ( align & Qt::AlignRight )
-                r.setWidth(r.width() - indent);
-            else if ( align & Qt::AlignTop )
-                r.setY(r.y() + indent);
-            else if ( align & Qt::AlignBottom )
-                r.setHeight(r.height() - indent);
-        }
-    }
-
-    return r;
-}
-
-int QwtTextLabel::defaultIndent() const
-{
-    if ( frameWidth() <= 0 )
-        return 0;
-
-    QFont fnt;
-    if ( d_data->text.paintAttributes() & QwtText::PaintUsingTextFont )
-        fnt = d_data->text.font();
-    else
-        fnt = font();
-
-    return QFontMetrics(fnt).width('x') / 2;
-}
-
diff --git a/src/qwt/qwt_thermo.cpp b/src/qwt/qwt_thermo.cpp
deleted file mode 100644
index b2405f8..0000000
--- a/src/qwt/qwt_thermo.cpp
+++ /dev/null
@@ -1,810 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-#include <qpainter.h>
-#include <qevent.h>
-#include <qstyle.h>
-#include <qpixmap.h>
-#include <qdrawutil.h>
-#include "qwt_math.h"
-#include "qwt_scale_engine.h"
-#include "qwt_scale_draw.h"
-#include "qwt_scale_map.h"
-#include "qwt_paint_buffer.h"
-#include "qwt_thermo.h"
-
-class QwtThermo::PrivateData
-{
-public:
-    PrivateData():
-        fillBrush(Qt::black),
-        alarmBrush(Qt::white),
-        orientation(Qt::Vertical),
-        scalePos(QwtThermo::Left),
-        borderWidth(2),
-        scaleDist(3),
-        thermoWidth(10),
-        minValue(0.0),
-        maxValue(1.0),
-        value(0.0),
-        alarmLevel(0.0),
-        alarmEnabled(false)
-    {
-        map.setScaleInterval(minValue, maxValue);
-    }
-
-    QwtScaleMap map;
-    QRect thermoRect;
-    QBrush fillBrush;
-    QBrush alarmBrush;
-
-    Qt::Orientation orientation;
-    ScalePos scalePos;
-    int borderWidth;
-    int scaleDist;
-    int thermoWidth;
-
-    double minValue;
-    double maxValue;
-    double value;
-    double alarmLevel;
-    bool alarmEnabled;
-};
-
-//! Constructor
-QwtThermo::QwtThermo(QWidget *parent): 
-    QWidget(parent)
-{
-#if QT_VERSION < 0x040000
-    setWFlags(Qt::WNoAutoErase);
-#endif
-    d_data = new PrivateData;
-    setRange(d_data->minValue, d_data->maxValue, false);
-
-    QSizePolicy policy(QSizePolicy::MinimumExpanding, QSizePolicy::Fixed);
-    if (d_data->orientation == Qt::Vertical) 
-        policy.transpose();
-
-    setSizePolicy(policy);
-    
-#if QT_VERSION >= 0x040000
-    setAttribute(Qt::WA_WState_OwnSizePolicy, false);
-#else
-    clearWState( WState_OwnSizePolicy );
-#endif
-}
-
-//! Destructor
-QwtThermo::~QwtThermo()
-{
-    delete d_data;
-}
-
-//! Set the maximum value.
-void QwtThermo::setMaxValue(double v) 
-{ 
-    setRange(d_data->minValue, v); 
-}
-
-//! Return the maximum value.
-double QwtThermo::maxValue() const 
-{ 
-    return d_data->maxValue; 
-}
-
-//! Set the minimum value.
-void QwtThermo::setMinValue(double v) 
-{ 
-    setRange(v, d_data->maxValue); 
-}
-
-//! Return the minimum value.
-double QwtThermo::minValue() const 
-{ 
-    return d_data->minValue; 
-}
-
-//! Set the current value.
-void QwtThermo::setValue(double v)
-{
-    if (d_data->value != v)
-    {
-        d_data->value = v;
-        update();
-    }
-}
-
-//! Return the value.
-double QwtThermo::value() const 
-{ 
-    return d_data->value; 
-}
-
-void QwtThermo::setScaleDraw(QwtScaleDraw *scaleDraw)
-{
-    setAbstractScaleDraw(scaleDraw);
-}
-
-const QwtScaleDraw *QwtThermo::scaleDraw() const
-{
-    return (QwtScaleDraw *)abstractScaleDraw();
-}
-
-QwtScaleDraw *QwtThermo::scaleDraw() 
-{
-    return (QwtScaleDraw *)abstractScaleDraw();
-}
-
-//! Qt paint event.
-void QwtThermo::paintEvent(QPaintEvent *e)
-{
-    // Use double-buffering
-    const QRect &ur = e->rect();
-    if ( ur.isValid() )
-    {
-#if QT_VERSION < 0x040000
-        QwtPaintBuffer paintBuffer(this, ur);
-        draw(paintBuffer.painter(), ur);
-#else
-        QPainter painter(this);
-        draw(&painter, ur);
-#endif
-    }
-}
-
-//! Draw the whole QwtThermo.
-void QwtThermo::draw(QPainter *p, const QRect& ur)
-{
-    if ( !d_data->thermoRect.contains(ur) )
-    {
-        if (d_data->scalePos != None)
-        {
-#if QT_VERSION < 0x040000
-            scaleDraw()->draw(p, colorGroup());
-#else
-            scaleDraw()->draw(p, palette());
-#endif
-        }
-
-        qDrawShadePanel(p,
-            d_data->thermoRect.x() - d_data->borderWidth,
-            d_data->thermoRect.y() - d_data->borderWidth,
-            d_data->thermoRect.width() + 2*d_data->borderWidth,
-            d_data->thermoRect.height() + 2*d_data->borderWidth,
-#if QT_VERSION < 0x040000
-            colorGroup(), 
-#else
-            palette(), 
-#endif
-            true, d_data->borderWidth,0);
-    }
-    drawThermo(p);
-}
-
-//! Qt resize event handler
-void QwtThermo::resizeEvent(QResizeEvent *)
-{
-    layoutThermo( false );
-}
-
-/*!
-  Recalculate the QwtThermo geometry and layout based on
-  the QwtThermo::rect() and the fonts.
-  \param update_geometry notify the layout system and call update
-         to redraw the scale
-*/
-void QwtThermo::layoutThermo( bool update_geometry )
-{
-    QRect r = rect();
-    int mbd = 0;
-    if ( d_data->scalePos != None )
-    {
-        int d1, d2;
-        scaleDraw()->getBorderDistHint(font(), d1, d2);
-        mbd = qwtMax(d1, d2);
-    }
-
-    if ( d_data->orientation == Qt::Horizontal )
-    {
-        switch ( d_data->scalePos )
-        {
-            case Top:
-            {
-                d_data->thermoRect.setRect(
-                    r.x() + mbd + d_data->borderWidth,
-                    r.y() + r.height()
-                    - d_data->thermoWidth - 2*d_data->borderWidth,
-                    r.width() - 2*(d_data->borderWidth + mbd),
-                    d_data->thermoWidth);
-                scaleDraw()->setAlignment(QwtScaleDraw::TopScale);
-                scaleDraw()->move( d_data->thermoRect.x(),
-                    d_data->thermoRect.y() - d_data->borderWidth 
-                        - d_data->scaleDist);
-                scaleDraw()->setLength(d_data->thermoRect.width());
-                break;
-            }
-
-            case Bottom:
-            case None: // like Bottom but without scale
-            default:   // inconsistent orientation and scale position
-                       // Mapping between values and pixels requires
-                       // initialization of the scale geometry
-            {
-                d_data->thermoRect.setRect(
-                    r.x() + mbd + d_data->borderWidth,
-                    r.y() + d_data->borderWidth,
-                    r.width() - 2*(d_data->borderWidth + mbd),
-                    d_data->thermoWidth);
-                scaleDraw()->setAlignment(QwtScaleDraw::BottomScale);
-                scaleDraw()->move(
-                    d_data->thermoRect.x(),
-                    d_data->thermoRect.y() + d_data->thermoRect.height()
-                        + d_data->borderWidth + d_data->scaleDist );
-                scaleDraw()->setLength(d_data->thermoRect.width());
-                break;
-            }
-        }
-        d_data->map.setPaintInterval(d_data->thermoRect.x(),
-            d_data->thermoRect.x() + d_data->thermoRect.width() - 1);
-    }
-    else // Qt::Vertical
-    {
-        switch ( d_data->scalePos )
-        {
-            case Right:
-            {
-                d_data->thermoRect.setRect(
-                    r.x() + d_data->borderWidth,
-                    r.y() + mbd + d_data->borderWidth,
-                    d_data->thermoWidth,
-                    r.height() - 2*(d_data->borderWidth + mbd));
-                scaleDraw()->setAlignment(QwtScaleDraw::RightScale);
-                scaleDraw()->move(
-                    d_data->thermoRect.x() + d_data->thermoRect.width()
-                        + d_data->borderWidth + d_data->scaleDist,
-                    d_data->thermoRect.y());
-                scaleDraw()->setLength(d_data->thermoRect.height());
-                break;
-            }
-
-            case Left:
-            case None: // like Left but without scale
-            default:   // inconsistent orientation and scale position
-                       // Mapping between values and pixels requires
-                       // initialization of the scale geometry
-            {
-                d_data->thermoRect.setRect(
-                    r.x() + r.width() - 2*d_data->borderWidth - d_data->thermoWidth,
-                    r.y() + mbd + d_data->borderWidth,
-                    d_data->thermoWidth,
-                    r.height() - 2*(d_data->borderWidth + mbd));
-                scaleDraw()->setAlignment(QwtScaleDraw::LeftScale);
-                scaleDraw()->move(
-                    d_data->thermoRect.x() - d_data->scaleDist 
-                        - d_data->borderWidth,
-                    d_data->thermoRect.y() );
-                scaleDraw()->setLength(d_data->thermoRect.height());
-                break;
-            }
-        }
-        d_data->map.setPaintInterval(
-            d_data->thermoRect.y() + d_data->thermoRect.height() - 1,
-            d_data->thermoRect.y());
-    }
-    if ( update_geometry )
-    {
-        updateGeometry();
-        update();
-    }
-}
-
-/*!
-  \brief Set the thermometer orientation and the scale position.
-
-  The scale position None disables the scale.
-  \param o orientation. Possible values are Qt::Horizontal and Qt::Vertical.
-         The default value is Qt::Vertical.
-  \param s Position of the scale.
-         The default value is None.
-
-  A valid combination of scale position and orientation is enforced:
-  - a horizontal thermometer can have the scale positions Top, Bottom or None;
-  - a vertical thermometer can have the scale positions Left, Right or None;
-  - an invalid scale position will default to None.
-
-  \sa QwtThermo::setScalePosition()
-*/
-void QwtThermo::setOrientation(Qt::Orientation o, ScalePos s)
-{
-    if ( o == d_data->orientation )
-        return;
-
-    switch(o)
-    {
-        case Qt::Horizontal:
-        {
-            d_data->orientation = Qt::Horizontal;
-            if ((s == None) || (s == Bottom) || (s == Top))
-                d_data->scalePos = s;
-            else
-                d_data->scalePos = None;
-            break;
-        }
-        case Qt::Vertical:
-        {
-            d_data->orientation = Qt::Vertical;
-            if ((s == None) || (s == Left) || (s == Right))
-                d_data->scalePos = s;
-            else
-                d_data->scalePos = None;
-            break;
-        }
-    }
-
-#if QT_VERSION >= 0x040000
-    if ( !testAttribute(Qt::WA_WState_OwnSizePolicy) )
-#else
-    if ( !testWState( WState_OwnSizePolicy ) )
-#endif
-    {
-        QSizePolicy sp = sizePolicy();
-        sp.transpose();
-        setSizePolicy(sp);
-
-#if QT_VERSION >= 0x040000
-        setAttribute(Qt::WA_WState_OwnSizePolicy, false);
-#else
-        clearWState( WState_OwnSizePolicy );
-#endif
-    }
-
-    layoutThermo();
-}
-
-/*!
-  \brief Change the scale position (and thermometer orientation).
-
-  \param s Position of the scale.
-  
-  A valid combination of scale position and orientation is enforced:
-  - if the new scale position is Left or Right, the scale orientation will
-    become Qt::Vertical;
-  - if the new scale position is Bottom or Top, the scale orientation will
-    become Qt::Horizontal;
-  - if the new scale position is None, the scale orientation will not change.
-
-  \sa QwtThermo::setOrientation()
-*/
-void QwtThermo::setScalePosition(ScalePos s)
-{
-    if ((s == Bottom) || (s == Top))
-        setOrientation(Qt::Horizontal, s);
-    else if ((s == Left) || (s == Right))
-        setOrientation(Qt::Vertical, s);
-    else
-        setOrientation(d_data->orientation, None);
-}
-
-//! Return the scale position.
-QwtThermo::ScalePos QwtThermo::scalePosition() const
-{
-    return d_data->scalePos;
-}
-
-//! Notify a font change.
-void QwtThermo::fontChange(const QFont &f)
-{
-    QWidget::fontChange( f );
-    layoutThermo();
-}
-
-//! Notify a scale change.
-void QwtThermo::scaleChange()
-{
-    update();
-    layoutThermo();
-}
-
-//! Redraw the liquid in thermometer pipe.
-void QwtThermo::drawThermo(QPainter *p)
-{
-    int alarm  = 0, taval = 0;
-
-    QRect fRect;
-    QRect aRect;
-    QRect bRect;
-
-    int inverted = ( d_data->maxValue < d_data->minValue );
-
-    //
-    //  Determine if value exceeds alarm threshold.
-    //  Note: The alarm value is allowed to lie
-    //        outside the interval (minValue, maxValue).
-    //
-    if (d_data->alarmEnabled)
-    {
-        if (inverted)
-        {
-            alarm = ((d_data->alarmLevel >= d_data->maxValue)
-                 && (d_data->alarmLevel <= d_data->minValue)
-                 && (d_data->value >= d_data->alarmLevel));
-        
-        }
-        else
-        {
-            alarm = (( d_data->alarmLevel >= d_data->minValue)
-                 && (d_data->alarmLevel <= d_data->maxValue)
-                 && (d_data->value >= d_data->alarmLevel));
-        }
-    }
-
-    //
-    //  transform values
-    //
-    int tval = transform(d_data->value);
-
-    if (alarm)
-       taval = transform(d_data->alarmLevel);
-
-    //
-    //  calculate recangles
-    //
-    if ( d_data->orientation == Qt::Horizontal )
-    {
-        if (inverted)
-        {
-            bRect.setRect(d_data->thermoRect.x(), d_data->thermoRect.y(),
-                  tval - d_data->thermoRect.x(),
-                  d_data->thermoRect.height());
-        
-            if (alarm)
-            {
-                aRect.setRect(tval, d_data->thermoRect.y(),
-                      taval - tval + 1,
-                      d_data->thermoRect.height());
-                fRect.setRect(taval + 1, d_data->thermoRect.y(),
-                      d_data->thermoRect.x() + d_data->thermoRect.width() - (taval + 1),
-                      d_data->thermoRect.height());
-            }
-            else
-            {
-                fRect.setRect(tval, d_data->thermoRect.y(),
-                      d_data->thermoRect.x() + d_data->thermoRect.width() - tval,
-                      d_data->thermoRect.height());
-            }
-        }
-        else
-        {
-            bRect.setRect(tval + 1, d_data->thermoRect.y(),
-                  d_data->thermoRect.width() - (tval + 1 - d_data->thermoRect.x()),
-                  d_data->thermoRect.height());
-        
-            if (alarm)
-            {
-                aRect.setRect(taval, d_data->thermoRect.y(),
-                      tval - taval + 1,
-                      d_data->thermoRect.height());
-                fRect.setRect(d_data->thermoRect.x(), d_data->thermoRect.y(),
-                      taval - d_data->thermoRect.x(),
-                      d_data->thermoRect.height());
-            }
-            else
-            {
-                fRect.setRect(d_data->thermoRect.x(), d_data->thermoRect.y(),
-                      tval - d_data->thermoRect.x() + 1,
-                      d_data->thermoRect.height());
-            }
-        
-        }
-    }
-    else // Qt::Vertical
-    {
-        if (tval < d_data->thermoRect.y())
-            tval = d_data->thermoRect.y();
-        else 
-        {
-            if (tval > d_data->thermoRect.y() + d_data->thermoRect.height())
-                tval = d_data->thermoRect.y() + d_data->thermoRect.height();
-        }
-
-        if (inverted)
-        {
-            bRect.setRect(d_data->thermoRect.x(), tval + 1,
-            d_data->thermoRect.width(),
-            d_data->thermoRect.height() - (tval + 1 - d_data->thermoRect.y()));
-
-            if (alarm)
-            {
-                aRect.setRect(d_data->thermoRect.x(), taval,
-                    d_data->thermoRect.width(),
-                    tval - taval + 1);
-                fRect.setRect(d_data->thermoRect.x(), d_data->thermoRect.y(),
-                    d_data->thermoRect.width(),
-                taval - d_data->thermoRect.y());
-            }
-            else
-            {
-                fRect.setRect(d_data->thermoRect.x(), d_data->thermoRect.y(),
-                    d_data->thermoRect.width(),
-                    tval - d_data->thermoRect.y() + 1);
-            }
-        }
-        else
-        {
-            bRect.setRect(d_data->thermoRect.x(), d_data->thermoRect.y(),
-            d_data->thermoRect.width(),
-            tval - d_data->thermoRect.y());
-            if (alarm)
-            {
-                aRect.setRect(d_data->thermoRect.x(),tval,
-                    d_data->thermoRect.width(),
-                    taval - tval + 1);
-                fRect.setRect(d_data->thermoRect.x(),taval + 1,
-                    d_data->thermoRect.width(),
-                    d_data->thermoRect.y() + d_data->thermoRect.height() - (taval + 1));
-            }
-            else
-            {
-                fRect.setRect(d_data->thermoRect.x(),tval,
-                    d_data->thermoRect.width(),
-                d_data->thermoRect.y() + d_data->thermoRect.height() - tval);
-            }
-        }
-    }
-
-    //
-    // paint thermometer
-    //
-    const QColor bgColor =
-#if QT_VERSION < 0x040000
-        colorGroup().color(QColorGroup::Background);
-#else
-        palette().color(QPalette::Background);
-#endif
-    p->fillRect(bRect, bgColor);
-
-    if (alarm)
-       p->fillRect(aRect, d_data->alarmBrush);
-
-    p->fillRect(fRect, d_data->fillBrush);
-}
-
-//! Set the border width of the pipe.
-void QwtThermo::setBorderWidth(int w)
-{
-    if ((w >= 0) && (w < (qwtMin(d_data->thermoRect.width(), 
-        d_data->thermoRect.height()) + d_data->borderWidth) / 2  - 1))
-    {
-        d_data->borderWidth = w;
-        layoutThermo();
-    }
-}
-
-//! Return the border width of the thermometer pipe.
-int QwtThermo::borderWidth() const
-{
-    return d_data->borderWidth;
-}
-
-/*!
-  \brief Set the range
-  \param vmin value corresponding lower or left end of the thermometer
-  \param vmax value corresponding to the upper or right end of the thermometer
-  \param logarithmic logarithmic mapping, true or false 
-*/
-void QwtThermo::setRange(double vmin, double vmax, bool logarithmic)
-{
-    d_data->minValue = vmin;
-    d_data->maxValue = vmax;
-
-    if ( logarithmic )
-        setScaleEngine(new QwtLog10ScaleEngine);
-    else
-        setScaleEngine(new QwtLinearScaleEngine);
-
-    /*
-      There are two different maps, one for the scale, the other
-      for the values. This is confusing and will be changed
-      in the future. TODO ...
-     */
-
-    d_data->map.setTransformation(scaleEngine()->transformation());
-    d_data->map.setScaleInterval(d_data->minValue, d_data->maxValue);
-
-    if (autoScale())
-        rescale(d_data->minValue, d_data->maxValue);
-
-    layoutThermo();
-}
-
-/*!
-  \brief Change the brush of the liquid.
-  \param brush New brush. The default brush is solid black.
-*/
-void QwtThermo::setFillBrush(const QBrush& brush)
-{
-    d_data->fillBrush = brush;
-    update();
-}
-
-//! Return the liquid brush.
-const QBrush& QwtThermo::fillBrush() const
-{
-    return d_data->fillBrush;
-}
-
-/*!
-  \brief Change the color of the liquid.
-  \param c New color. The default color is black.
-*/
-void QwtThermo::setFillColor(const QColor &c)
-{
-    d_data->fillBrush.setColor(c);
-    update();
-}
-
-//! Return the liquid color.
-const QColor &QwtThermo::fillColor() const
-{
-    return d_data->fillBrush.color();
-}
-
-/*!
-  \brief Specify the liquid brush above the alarm threshold
-  \param brush New brush. The default is solid white.
-*/
-void QwtThermo::setAlarmBrush(const QBrush& brush)
-{
-    d_data->alarmBrush = brush;
-    update();
-}
-
-//! Return the liquid brush above the alarm threshold.
-const QBrush& QwtThermo::alarmBrush() const
-{
-    return d_data->alarmBrush;
-}
-
-/*!
-  \brief Specify the liquid color above the alarm threshold
-  \param c New color. The default is white.
-*/
-void QwtThermo::setAlarmColor(const QColor &c)
-{
-    d_data->alarmBrush.setColor(c);
-    update();
-}
-
-//! Return the liquid color above the alarm threshold.
-const QColor &QwtThermo::alarmColor() const
-{
-    return d_data->alarmBrush.color();
-}
-
-//! Specify the alarm threshold.
-void QwtThermo::setAlarmLevel(double v)
-{
-    d_data->alarmLevel = v;
-    d_data->alarmEnabled = 1;
-    update();
-}
-
-//! Return the alarm threshold.
-double QwtThermo::alarmLevel() const
-{
-    return d_data->alarmLevel;
-}
-
-//! Change the width of the pipe.
-void QwtThermo::setPipeWidth(int w)
-{
-    if (w > 0)
-    {
-        d_data->thermoWidth = w;
-        layoutThermo();
-    }
-}
-
-//! Return the width of the pipe.
-int QwtThermo::pipeWidth() const
-{
-    return d_data->thermoWidth;
-}
-
-
-/*!
-  \brief Specify the distance between the pipe's endpoints
-         and the widget's border
-
-  The margin is used to leave some space for the scale
-  labels. If a large font is used, it is advisable to
-  adjust the margins.
-  \param m New Margin. The default values are 10 for
-           horizontal orientation and 20 for vertical
-           orientation.
-  \warning The margin has no effect if the scale is disabled.
-  \warning This function is a NOOP because margins are determined
-           automatically.
-*/
-void QwtThermo::setMargin(int)
-{
-}
-
-
-/*!
-  \brief Enable or disable the alarm threshold
-  \param tf true (disabled) or false (enabled)
-*/
-void QwtThermo::setAlarmEnabled(bool tf)
-{
-    d_data->alarmEnabled = tf;
-    update();
-}
-
-//! Return if the alarm threshold is enabled or disabled.
-bool QwtThermo::alarmEnabled() const
-{
-    return d_data->alarmEnabled;
-}
-
-/*!
-  \return the minimum size hint
-  \sa QwtThermo::minimumSizeHint
-*/
-QSize QwtThermo::sizeHint() const
-{
-    return minimumSizeHint();
-}
-
-/*!
-  \brief Return a minimum size hint
-  \warning The return value depends on the font and the scale.
-  \sa QwtThermo::sizeHint
-*/
-QSize QwtThermo::minimumSizeHint() const
-{
-    int w = 0, h = 0;
-
-    if ( d_data->scalePos != None )
-    {
-        const int sdExtent = scaleDraw()->extent( QPen(), font() );
-        const int sdLength = scaleDraw()->minLength( QPen(), font() );
-
-        w = sdLength;
-        h = d_data->thermoWidth + sdExtent + 
-            d_data->borderWidth + d_data->scaleDist;
-
-    }
-    else // no scale
-    {
-        w = 200;
-        h = d_data->thermoWidth;
-    }
-
-    if ( d_data->orientation == Qt::Vertical )
-        qSwap(w, h);
-
-    w += 2 * d_data->borderWidth;
-    h += 2 * d_data->borderWidth;
-
-    return QSize( w, h );
-}
-
-int QwtThermo::transform(double value) const
-{
-    const double min = qwtMin(d_data->map.s1(), d_data->map.s2());
-    const double max = qwtMax(d_data->map.s1(), d_data->map.s2());
-
-    if ( value > max )
-        value = max;
-    if ( value < min )
-        value = min;
-
-    return d_data->map.transform(value);
-}
diff --git a/src/qwt/qwt_wheel.cpp b/src/qwt/qwt_wheel.cpp
deleted file mode 100644
index 9200acd..0000000
--- a/src/qwt/qwt_wheel.cpp
+++ /dev/null
@@ -1,637 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997   Josef Wilgen
- * Copyright (C) 2002   Uwe Rathmann
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
-
-#include <qevent.h>
-#include <qdrawutil.h>
-#include <qpainter.h>
-#include <qstyle.h>
-#include "qwt_math.h"
-#include "qwt_painter.h"
-#include "qwt_paint_buffer.h"
-#include "qwt_wheel.h"
-
-#define NUM_COLORS 30
-
-class QwtWheel::PrivateData
-{
-public:
-    PrivateData()
-    {
-        viewAngle = 175.0;
-        totalAngle = 360.0;
-        tickCnt = 10;
-        intBorder = 2;
-        borderWidth = 2;
-        wheelWidth = 20;
-#if QT_VERSION < 0x040000
-        allocContext = 0;
-#endif
-    };
-
-    QRect sliderRect;
-    double viewAngle;
-    double totalAngle;
-    int tickCnt;
-    int intBorder;
-    int borderWidth;
-    int wheelWidth;
-#if QT_VERSION < 0x040000
-    int allocContext;
-#endif
-    QColor colors[NUM_COLORS];
-};
-
-//! Constructor
-QwtWheel::QwtWheel(QWidget *parent): 
-    QwtAbstractSlider(Qt::Horizontal, parent)
-{
-    d_data = new PrivateData;
-
-#if QT_VERSION < 0x040000
-    setWFlags(Qt::WNoAutoErase);
-#endif
-
-    setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed);
-
-#if QT_VERSION >= 0x040000
-    setAttribute(Qt::WA_WState_OwnSizePolicy, false);
-#else
-    clearWState( WState_OwnSizePolicy );
-#endif
-
-    setUpdateTime(50);
-}
-
-//! Destructor
-QwtWheel::~QwtWheel()  
-{
-#if QT_VERSION < 0x040000
-    if ( d_data->allocContext )
-        QColor::destroyAllocContext( d_data->allocContext );
-#endif
-    delete d_data;
-}
-
-//! Set up the color array for the background pixmap.
-void QwtWheel::setColorArray()
-{
-    if ( !d_data->colors ) 
-        return;
-
-#if QT_VERSION < 0x040000
-    const QColor light = colorGroup().light();
-    const QColor dark = colorGroup().dark();
-#else
-    const QColor light = palette().color(QPalette::Light);
-    const QColor dark = palette().color(QPalette::Dark);
-#endif
-
-    if ( !d_data->colors[0].isValid() ||
-        d_data->colors[0] != light ||
-        d_data->colors[NUM_COLORS - 1] != dark )
-    {
-#if QT_VERSION < 0x040000
-        if ( d_data->allocContext )
-            QColor::destroyAllocContext( d_data->allocContext );
-
-        d_data->allocContext = QColor::enterAllocContext();
-#endif
-
-        d_data->colors[0] = light;
-        d_data->colors[NUM_COLORS - 1] = dark;
-
-        int dh, ds, dv, lh, ls, lv;
-#if QT_VERSION < 0x040000
-        d_data->colors[0].rgb(&lh, &ls, &lv);
-        d_data->colors[NUM_COLORS - 1].rgb(&dh, &ds, &dv);
-#else
-        d_data->colors[0].getRgb(&lh, &ls, &lv);
-        d_data->colors[NUM_COLORS - 1].getRgb(&dh, &ds, &dv);
-#endif
-
-        for ( int i = 1; i < NUM_COLORS - 1; ++i )
-        {
-            const double factor = double(i) / double(NUM_COLORS);
-
-            d_data->colors[i].setRgb( lh + int( double(dh - lh) * factor ),
-                      ls + int( double(ds - ls) * factor ),
-                      lv + int( double(dv - lv) * factor ));
-        }
-#if QT_VERSION < 0x040000
-        QColor::leaveAllocContext();
-#endif
-    }
-}
-
-/*!
-  \brief Adjust the number of grooves in the wheel's surface.
-
-  The number of grooves is limited to 6 <= cnt <= 50.
-  Values outside this range will be clipped.
-  The default value is 10.
-  \param cnt Number of grooves per 360 degrees
-*/
-void QwtWheel::setTickCnt(int cnt)
-{
-    d_data->tickCnt = qwtLim( cnt, 6, 50 );
-    update();
-}
-
-int QwtWheel::tickCnt() const 
-{
-    return d_data->tickCnt;
-}
-
-/*!
-    \return mass
-*/
-double QwtWheel::mass() const
-{
-    return QwtAbstractSlider::mass();
-}
-
-/*!
-  \brief Set the internal border width of the wheel.
-
-  The internal border must not be smaller than 1
-  and is limited in dependence on the wheel's size.
-  Values outside the allowed range will be clipped.
-
-  The internal border defaults to 2.
-  \param w border width
-*/
-void QwtWheel::setInternalBorder( int w )
-{
-    const int d = qwtMin( width(), height() ) / 3;
-    w = qwtMin( w, d );
-    d_data->intBorder = qwtMax( w, 1 );
-    layoutWheel();
-}
-
-int QwtWheel::internalBorder() const 
-{
-    return d_data->intBorder;
-}
-
-//! Draw the Wheel's background gradient
-void QwtWheel::drawWheelBackground( QPainter *p, const QRect &r )
-{
-    p->save();
-
-    //
-    // initialize pens
-    //
-#if QT_VERSION < 0x040000
-    const QColor light = colorGroup().light();
-    const QColor dark = colorGroup().dark();
-#else
-    const QColor light = palette().color(QPalette::Light);
-    const QColor dark = palette().color(QPalette::Dark);
-#endif
-
-    QPen lightPen;
-    lightPen.setColor(light);
-    lightPen.setWidth(d_data->intBorder);
-
-    QPen darkPen;
-    darkPen.setColor(dark);
-    darkPen.setWidth(d_data->intBorder);
-
-    setColorArray();
-
-    //
-    // initialize auxiliary variables
-    //
-
-    const int nFields = NUM_COLORS * 13 / 10;
-    const int hiPos = nFields - NUM_COLORS + 1;
-
-    if ( orientation() == Qt::Horizontal )
-    {
-        const int rx = r.x();
-        int ry = r.y() + d_data->intBorder;
-        const int rh = r.height() - 2* d_data->intBorder;
-        const int rw = r.width();
-        //
-        //  draw shaded background
-        //
-        int x1 = rx;
-        for (int i = 1; i < nFields; i++ )
-        {
-            const int x2 = rx + (rw * i) / nFields;
-            p->fillRect(x1, ry, x2-x1 + 1 ,rh, d_data->colors[qwtAbs(i-hiPos)]);
-            x1 = x2 + 1;
-        }
-        p->fillRect(x1, ry, rw - (x1 - rx), rh, d_data->colors[NUM_COLORS - 1]);
-
-        //
-        // draw internal border
-        //
-        p->setPen(lightPen);
-        ry = r.y() + d_data->intBorder / 2;
-        p->drawLine(r.x(), ry, r.x() + r.width() , ry);
-
-        p->setPen(darkPen);
-        ry = r.y() + r.height() - (d_data->intBorder - d_data->intBorder / 2);
-        p->drawLine(r.x(), ry , r.x() + r.width(), ry);
-    }
-    else // Qt::Vertical
-    {
-        int rx = r.x() + d_data->intBorder;
-        const int ry = r.y();
-        const int rh = r.height();
-        const int rw = r.width() - 2 * d_data->intBorder;
-
-        //
-        // draw shaded background
-        //
-        int y1 = ry;
-        for ( int i = 1; i < nFields; i++ )
-        {
-            const int y2 = ry + (rh * i) / nFields;
-            p->fillRect(rx, y1, rw, y2-y1 + 1, d_data->colors[qwtAbs(i-hiPos)]);
-            y1 = y2 + 1;
-        }
-        p->fillRect(rx, y1, rw, rh - (y1 - ry), d_data->colors[NUM_COLORS - 1]);
-
-        //
-        //  draw internal borders
-        //
-        p->setPen(lightPen);
-        rx = r.x() + d_data->intBorder / 2;
-        p->drawLine(rx, r.y(), rx, r.y() + r.height());
-
-        p->setPen(darkPen);
-        rx = r.x() + r.width() - (d_data->intBorder - d_data->intBorder / 2);
-        p->drawLine(rx, r.y(), rx , r.y() + r.height());
-    }
-
-    p->restore();
-}
-
-
-/*!
-  \brief Set the total angle which the wheel can be turned.
-
-  One full turn of the wheel corresponds to an angle of
-  360 degrees. A total angle of n*360 degrees means
-  that the wheel has to be turned n times around its axis
-  to get from the minimum value to the maximum value.
-
-  The default setting of the total angle is 360 degrees.
-  \param angle total angle in degrees
-*/
-void QwtWheel::setTotalAngle(double angle)
-{
-    d_data->totalAngle = qwtLim( angle, 10.0, 3600.0 );
-    update();
-}
-
-double QwtWheel::totalAngle() const 
-{
-    return d_data->totalAngle;
-}
-
-/*!
-  \brief Set the wheel's orientation.
-  \param o Orientation. Allowed values are
-           Qt::Horizontal and Qt::Vertical.
-   Defaults to Qt::Horizontal.
-  \sa QwtAbstractSlider::orientation()
-*/
-void QwtWheel::setOrientation(Qt::Orientation o)
-{
-    if ( orientation() == o )
-        return;
-
-#if QT_VERSION >= 0x040000
-    if ( !testAttribute(Qt::WA_WState_OwnSizePolicy) )
-#else
-    if ( !testWState( WState_OwnSizePolicy ) ) 
-#endif
-    {
-        QSizePolicy sp = sizePolicy();
-        sp.transpose();
-        setSizePolicy(sp);
-
-#if QT_VERSION >= 0x040000
-        setAttribute(Qt::WA_WState_OwnSizePolicy, false);
-#else
-        clearWState( WState_OwnSizePolicy );
-#endif
-    }
-
-    QwtAbstractSlider::setOrientation(o);
-    layoutWheel();
-}
-
-/*!
-  \brief Specify the visible portion of the wheel.
-
-  You may use this function for fine-tuning the appearance of
-  the wheel. The default value is 175 degrees. The value is
-  limited from 10 to 175 degrees.
-  \param angle Visible angle in degrees
-*/
-void QwtWheel::setViewAngle(double angle)
-{
-    d_data->viewAngle = qwtLim( angle, 10.0, 175.0 );
-    update();
-}
-
-double QwtWheel::viewAngle() const 
-{
-    return d_data->viewAngle;
-}
-
-/*!
-  \brief Redraw the wheel
-  \param p painter
-  \param r contents rectangle
-*/
-void QwtWheel::drawWheel( QPainter *p, const QRect &r )
-{
-#if QT_VERSION < 0x040000
-    const QColor light = colorGroup().light();
-    const QColor dark = colorGroup().dark();
-#else
-    const QColor light = palette().color(QPalette::Light);
-    const QColor dark = palette().color(QPalette::Dark);
-#endif
-
-    const double sign = (minValue() < maxValue()) ? 1.0 : -1.0;
-    double cnvFactor = qwtAbs(d_data->totalAngle / (maxValue() - minValue()));
-    const double halfIntv = 0.5 * d_data->viewAngle / cnvFactor;
-    const double loValue = value() - halfIntv;
-    const double hiValue = value() + halfIntv;
-    const double tickWidth = 360.0 / double(d_data->tickCnt) / cnvFactor;
-    const double sinArc = sin(d_data->viewAngle * M_PI / 360.0);
-    cnvFactor *= M_PI / 180.0;
-
-    //
-    // draw background gradient
-    //
-    drawWheelBackground( p, r );
-
-    //
-    // draw grooves
-    //
-    if ( orientation() == Qt::Horizontal )
-    {
-        const double halfSize = double(r.width()) * 0.5;
-
-        int l1 = r.y() + d_data->intBorder;
-        int l2 = r.y() + r.height() - d_data->intBorder - 1;
-
-        // draw one point over the border if border > 1
-        if ( d_data->intBorder > 1 )
-        {
-            l1 --;
-            l2 ++;
-        }
-
-        const int maxpos = r.x() + r.width() - 2;
-        const int minpos = r.x() + 2;
-
-        //
-        // draw tick marks
-        //
-        for ( double tickValue = ceil(loValue / tickWidth) * tickWidth;
-            tickValue < hiValue; tickValue += tickWidth )
-        {
-            //
-            //  calculate position
-            //
-            const int tickPos = r.x() + r.width()
-                - int( halfSize
-                    * (sinArc + sign *  sin((tickValue - value()) * cnvFactor))
-                    / sinArc);
-            //
-            // draw vertical line
-            //
-            if ( (tickPos <= maxpos) && (tickPos > minpos) )
-            {
-                p->setPen(dark);
-                p->drawLine(tickPos -1 , l1, tickPos - 1,  l2 );  
-                p->setPen(light);
-                p->drawLine(tickPos, l1, tickPos, l2);  
-            }
-        }
-    }
-    else if ( orientation() == Qt::Vertical )
-    {
-        const double halfSize = double(r.height()) * 0.5;
-
-        int l1 = r.x() + d_data->intBorder;
-        int l2 = r.x() + r.width() - d_data->intBorder - 1;
-
-        if ( d_data->intBorder > 1 )
-        {
-            l1--;
-            l2++;
-        }
-
-        const int maxpos = r.y() + r.height() - 2;
-        const int minpos = r.y() + 2;
-
-        //
-        // draw tick marks
-        //
-        for ( double tickValue = ceil(loValue / tickWidth) * tickWidth;
-            tickValue < hiValue; tickValue += tickWidth )
-        {
-
-            //
-            // calculate position
-            //
-            const int tickPos = r.y() + int( halfSize *
-                (sinArc + sign * sin((tickValue - value()) * cnvFactor))
-                / sinArc);
-
-            //
-            //  draw horizontal line
-            //
-            if ( (tickPos <= maxpos) && (tickPos > minpos) )
-            {
-                p->setPen(dark);
-                p->drawLine(l1, tickPos - 1 ,l2, tickPos - 1);  
-                p->setPen(light);
-                p->drawLine(l1, tickPos, l2, tickPos);  
-            }
-        }
-    }
-}
-
-
-//! Determine the value corresponding to a specified point
-double QwtWheel::getValue( const QPoint &p )
-{
-    // The reference position is arbitrary, but the
-    // sign of the offset is important
-    int w, dx;
-    if ( orientation() == Qt::Vertical )
-    {
-        w = d_data->sliderRect.height();
-        dx = d_data->sliderRect.y() - p.y();
-    }
-    else
-    {
-        w = d_data->sliderRect.width();
-        dx = p.x() - d_data->sliderRect.x();
-    }
-
-    // w pixels is an arc of viewAngle degrees,
-    // so we convert change in pixels to change in angle
-    const double ang = dx * d_data->viewAngle / w;
-
-    // value range maps to totalAngle degrees,
-    // so convert the change in angle to a change in value
-    const double val = ang * ( maxValue() - minValue() ) / d_data->totalAngle;
-
-    // Note, range clamping and rasterizing to step is automatically
-    // handled by QwtAbstractSlider, so we simply return the change in value
-    return val;
-}
-
-//! Qt Resize Event
-void QwtWheel::resizeEvent(QResizeEvent *)
-{
-    layoutWheel( false );
-}
-
-//! Recalculate the slider's geometry and layout based on
-//  the current rect and fonts.
-//  \param update_geometry  notify the layout system and call update
-//         to redraw the scale
-void QwtWheel::layoutWheel( bool update_geometry )
-{
-    const QRect r = this->rect();
-    d_data->sliderRect.setRect(r.x() + d_data->borderWidth, r.y() + d_data->borderWidth,
-        r.width() - 2*d_data->borderWidth, r.height() - 2*d_data->borderWidth);
-
-    if ( update_geometry )
-    {
-        updateGeometry();
-        update();
-    }
-}
-
-//! Qt Paint Event
-void QwtWheel::paintEvent(QPaintEvent *e)
-{
-    // Use double-buffering
-    const QRect &ur = e->rect();
-    if ( ur.isValid() )
-    {
-#if QT_VERSION < 0x040000
-        QwtPaintBuffer paintBuffer(this, ur);
-        draw(paintBuffer.painter(), ur);
-#else
-        QPainter painter(this);
-        draw(&painter, ur);
-#endif
-    }
-}
-
-//! Redraw panel and wheel
-void QwtWheel::draw(QPainter *painter, const QRect&)
-{
-    qDrawShadePanel( painter, rect().x(), rect().y(),
-        rect().width(), rect().height(),
-#if QT_VERSION < 0x040000
-        colorGroup(), 
-#else
-        palette(), 
-#endif
-        true, d_data->borderWidth );
-
-    drawWheel( painter, d_data->sliderRect );
-
-    if ( hasFocus() )
-        QwtPainter::drawFocusRect(painter, this);
-}
-
-//! Notify value change 
-void QwtWheel::valueChange()
-{
-    QwtAbstractSlider::valueChange();
-    update();
-}
-
-
-/*!
-  \brief Determine the scrolling mode and direction corresponding
-         to a specified point
-  \param p point
-  \param scrollMode scrolling mode
-  \param direction direction
-*/
-void QwtWheel::getScrollMode( const QPoint &p, int &scrollMode, int &direction)
-{
-    if ( d_data->sliderRect.contains(p) )
-        scrollMode = ScrMouse;
-    else
-        scrollMode = ScrNone;
-
-    direction = 0;
-}
-
-/*!
-  \brief Set the mass of the wheel
-
-  Assigning a mass turns the wheel into a flywheel.
-  \param val the wheel's mass
-*/
-void QwtWheel::setMass(double val)
-{
-    QwtAbstractSlider::setMass(val);
-}
-
-/*!
-  \brief Set the width of the wheel
-
-  Corresponds to the wheel height for horizontal orientation,
-  and the wheel width for vertical orientation.
-  \param w the wheel's width
-*/
-void QwtWheel::setWheelWidth(int w)
-{
-    d_data->wheelWidth = w;
-    layoutWheel();
-}
-
-/*!
-  \return a size hint
-*/
-QSize QwtWheel::sizeHint() const
-{
-    return minimumSizeHint();
-}
-
-/*!
-  \brief Return a minimum size hint
-  \warning The return value is based on the wheel width.
-*/
-QSize QwtWheel::minimumSizeHint() const
-{
-    QSize sz( 3*d_data->wheelWidth + 2*d_data->borderWidth,
-    d_data->wheelWidth + 2*d_data->borderWidth );
-    if ( orientation() != Qt::Horizontal )
-        sz.transpose();
-    return sz;
-}
-
-/*!
-  \brief Call update() when the palette changes
-*/
-void QwtWheel::paletteChange( const QPalette& )
-{
-    update();
-}
-
diff --git a/src/tiff/cpl_csv.c b/src/tiff/cpl_csv.c
deleted file mode 100644
index 47ac1b5..0000000
--- a/src/tiff/cpl_csv.c
+++ /dev/null
@@ -1,1016 +0,0 @@
-/******************************************************************************
- * Copyright (c) 1999, Frank Warmerdam
- *
- * 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 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- ******************************************************************************
- *
- * cpl_csv.c: Support functions for accessing CSV files.
- *
- * $Log$
- * Revision 1.16  2003/07/10 18:03:28  warmerda
- * don't crash if NULL passed to gtCSVAccess()
- *
- * Revision 1.15  2003/01/20 06:46:35  warmerda
- * search for pcs.csv, not horiz_cs.csv
- *
- * Revision 1.14  2003/01/15 04:39:58  warmerda
- * change internal name of CSVAccess
- *
- * Revision 1.13  2002/11/28 22:26:41  warmerda
- * upgraded to proper CSV formatting, and in-memory caching
- *
- * Revision 1.12  2002/06/19 03:51:15  warmerda
- * migrated cpl_csv.h into cpl_serv.h
- *
- * Revision 1.11  2001/03/05 04:49:56  warmerda
- * try to clear CPLReadLine buffer on deaccess
- *
- * Revision 1.10  2001/01/17 15:32:19  warmerda
- * Include /usr/share/epsg_csv and share/epsg_csv in csv search path.
- *
- * Revision 1.9  2000/12/12 19:34:36  warmerda
- * Use CSV_DATA_DIR if defined.
- *
- * Revision 1.8  2000/08/22 04:33:33  warmerda
- * added support for /usr/local/shared/epsg_csv
- *
- * Revision 1.7  1999/12/03 14:42:59  warmerda
- * Passing a NULL filename into CSVAccess() now results in a graceful
- * failure to open the file.
- *
- * Revision 1.6  1999/06/26 17:28:51  warmerda
- * Fixed reading of records with newlines embedded in quoted strings.
- *
- * Revision 1.5  1999/05/04 03:07:24  warmerda
- * avoid warning
- *
- * Revision 1.4  1999/04/28 19:59:56  warmerda
- * added some doxygen style documentation
- *
- * Revision 1.3  1999/03/17 19:53:15  geotiff
- * sys includes moved to cpl_serv.h
- *
- * Revision 1.2  1999/03/10 16:54:42  geotiff
- * Added use of the GEOTIFF_CSV environment variable to locate CSV files.
- *
- * Revision 1.1  1999/03/09 15:57:04  geotiff
- * New
- *
- * Revision 1.2  1999/02/24 16:23:21  warmerda
- * added lots
- *
- * Revision 1.1  1999/01/05 16:52:36  warmerda
- * New
- *
- */
-
-#include "cpl_serv.h"
-#include "geo_tiffp.h"
-
-/* ==================================================================== */
-/*      The CSVTable is a persistant set of info about an open CSV      */
-/*      table.  While it doesn't currently maintain a record index,     */
-/*      or in-memory copy of the table, it could be changed to do so    */
-/*      in the future.                                                  */
-/* ==================================================================== */
-typedef struct ctb {
-    FILE        *fp;
-
-    struct ctb *psNext;
-
-    char        *pszFilename;
-
-    char        **papszFieldNames;
-
-    char        **papszRecFields;
-
-    int         iLastLine;
-
-    /* Cache for whole file */
-    int         nLineCount;
-    char        **papszLines;
-    int         *panLineIndex;
-    char        *pszRawData;
-} CSVTable;
-
-static CSVTable *psCSVTableList = NULL;
-
-/************************************************************************/
-/*                             CSVAccess()                              */
-/*                                                                      */
-/*      This function will fetch a handle to the requested table.       */
-/*      If not found in the ``open table list'' the table will be       */
-/*      opened and added to the list.  Eventually this function may     */
-/*      become public with an abstracted return type so that            */
-/*      applications can set options about the table.  For now this     */
-/*      isn't done.                                                     */
-/************************************************************************/
-
-static CSVTable *gtCSVAccess( const char * pszFilename )
-
-{
-    CSVTable    *psTable;
-    FILE        *fp;
-
-    if( pszFilename == NULL )
-        return NULL;
-
-/* -------------------------------------------------------------------- */
-/*      Is the table already in the list.                               */
-/* -------------------------------------------------------------------- */
-    for( psTable = psCSVTableList; psTable != NULL; psTable = psTable->psNext )
-    {
-        if( EQUAL(psTable->pszFilename,pszFilename) )
-        {
-            /*
-             * Eventually we should consider promoting to the front of
-             * the list to accelerate frequently accessed tables.
-             */
-            
-            return( psTable );
-        }
-    }
-
-/* -------------------------------------------------------------------- */
-/*      If not, try to open it.                                         */
-/* -------------------------------------------------------------------- */
-    fp = VSIFOpen( pszFilename, "rb" );
-    if( fp == NULL )
-        return NULL;
-
-/* -------------------------------------------------------------------- */
-/*      Create an information structure about this table, and add to    */
-/*      the front of the list.                                          */
-/* -------------------------------------------------------------------- */
-    psTable = (CSVTable *) CPLCalloc(sizeof(CSVTable),1);
-
-    psTable->fp = fp;
-    psTable->pszFilename = CPLStrdup( pszFilename );
-    psTable->psNext = psCSVTableList;
-    
-    psCSVTableList = psTable;
-
-/* -------------------------------------------------------------------- */
-/*      Read the table header record containing the field names.        */
-/* -------------------------------------------------------------------- */
-    psTable->papszFieldNames = CSVReadParseLine( fp );
-
-    return( psTable );
-}
-
-/************************************************************************/
-/*                            CSVDeaccess()                             */
-/************************************************************************/
-
-void CSVDeaccess( const char * pszFilename )
-
-{
-    CSVTable    *psLast, *psTable;
-    
-/* -------------------------------------------------------------------- */
-/*      A NULL means deaccess all tables.                               */
-/* -------------------------------------------------------------------- */
-    if( pszFilename == NULL )
-    {
-        while( psCSVTableList != NULL )
-            CSVDeaccess( psCSVTableList->pszFilename );
-        
-        return;
-    }
-
-/* -------------------------------------------------------------------- */
-/*      Find this table.                                                */
-/* -------------------------------------------------------------------- */
-    psLast = NULL;
-    for( psTable = psCSVTableList;
-         psTable != NULL && !EQUAL(psTable->pszFilename,pszFilename);
-         psTable = psTable->psNext )
-    {
-        psLast = psTable;
-    }
-
-    if( psTable == NULL )
-    {
-        return;
-    }
-
-/* -------------------------------------------------------------------- */
-/*      Remove the link from the list.                                  */
-/* -------------------------------------------------------------------- */
-    if( psLast != NULL )
-        psLast->psNext = psTable->psNext;
-    else
-        psCSVTableList = psTable->psNext;
-
-/* -------------------------------------------------------------------- */
-/*      Free the table.                                                 */
-/* -------------------------------------------------------------------- */
-    if( psTable->fp != NULL )
-        VSIFClose( psTable->fp );
-
-    CSLDestroy( psTable->papszFieldNames );
-    CSLDestroy( psTable->papszRecFields );
-    CPLFree( psTable->pszFilename );
-    CPLFree( psTable->panLineIndex );
-    CPLFree( psTable->pszRawData );
-    CPLFree( psTable->papszLines );
-
-    CPLFree( psTable );
-
-    CPLReadLine( NULL );
-}
-
-/************************************************************************/
-/*                            CSVSplitLine()                            */
-/*                                                                      */
-/*      Tokenize a CSV line into fields in the form of a string         */
-/*      list.  This is used instead of the CPLTokenizeString()          */
-/*      because it provides correct CSV escaping and quoting            */
-/*      semantics.                                                      */
-/************************************************************************/
-
-static char **CSVSplitLine( const char *pszString )
-
-{
-    char        **papszRetList = NULL;
-    char        *pszToken;
-    int         nTokenMax, nTokenLen;
-
-    pszToken = (char *) CPLCalloc(10,1);
-    nTokenMax = 10;
-    
-    while( pszString != NULL && *pszString != '\0' )
-    {
-        int     bInString = FALSE;
-
-        nTokenLen = 0;
-        
-        /* Try to find the next delimeter, marking end of token */
-        for( ; *pszString != '\0'; pszString++ )
-        {
-
-            /* End if this is a delimeter skip it and break. */
-            if( !bInString && *pszString == ',' )
-            {
-                pszString++;
-                break;
-            }
-            
-            if( *pszString == '"' )
-            {
-                if( !bInString || pszString[1] != '"' )
-                {
-                    bInString = !bInString;
-                    continue;
-                }
-                else  /* doubled quotes in string resolve to one quote */
-                {
-                    pszString++;
-                }
-            }
-
-            if( nTokenLen >= nTokenMax-2 )
-            {
-                nTokenMax = nTokenMax * 2 + 10;
-                pszToken = (char *) CPLRealloc( pszToken, nTokenMax );
-            }
-
-            pszToken[nTokenLen] = *pszString;
-            nTokenLen++;
-        }
-
-        pszToken[nTokenLen] = '\0';
-        papszRetList = CSLAddString( papszRetList, pszToken );
-
-        /* If the last token is an empty token, then we have to catch
-         * it now, otherwise we won't reenter the loop and it will be lost. 
-         */
-        if ( *pszString == '\0' && *(pszString-1) == ',' )
-        {
-            papszRetList = CSLAddString( papszRetList, "" );
-        }
-    }
-
-    if( papszRetList == NULL )
-        papszRetList = (char **) CPLCalloc(sizeof(char *),1);
-
-    CPLFree( pszToken );
-
-    return papszRetList;
-}
-
-/************************************************************************/
-/*                          CSVFindNextLine()                           */
-/*                                                                      */
-/*      Find the start of the next line, while at the same time zero    */
-/*      terminating this line.  Take into account that there may be     */
-/*      newline indicators within quoted strings, and that quotes       */
-/*      can be escaped with a backslash.                                */
-/************************************************************************/
-
-static char *CSVFindNextLine( char *pszThisLine )
-
-{
-    int  nQuoteCount = 0, i;
-
-    for( i = 0; pszThisLine[i] != '\0'; i++ )
-    {
-        if( pszThisLine[i] == '\"'
-            && (i == 0 || pszThisLine[i-1] != '\\') )
-            nQuoteCount++;
-
-        if( (pszThisLine[i] == 10 || pszThisLine[i] == 13)
-            && (nQuoteCount % 2) == 0 )
-            break;
-    }
-
-    while( pszThisLine[i] == 10 || pszThisLine[i] == 13 )
-        pszThisLine[i++] = '\0';
-
-    if( pszThisLine[i] == '\0' )
-        return NULL;
-    else
-        return pszThisLine + i;
-}
-
-/************************************************************************/
-/*                             CSVIngest()                              */
-/*                                                                      */
-/*      Load entire file into memory and setup index if possible.       */
-/************************************************************************/
-
-static void CSVIngest( const char *pszFilename )
-
-{
-    CSVTable *psTable = gtCSVAccess( pszFilename );
-    int       nFileLen, i, nMaxLineCount, iLine = 0;
-    char *pszThisLine;
-
-    if( psTable->pszRawData != NULL )
-        return;
-
-/* -------------------------------------------------------------------- */
-/*      Ingest whole file.                                              */
-/* -------------------------------------------------------------------- */
-    VSIFSeek( psTable->fp, 0, SEEK_END );
-    nFileLen = VSIFTell( psTable->fp );
-    VSIRewind( psTable->fp );
-
-    psTable->pszRawData = (char *) CPLMalloc(nFileLen+1);
-    if( (int) VSIFRead( psTable->pszRawData, 1, nFileLen, psTable->fp ) 
-        != nFileLen )
-    {
-        CPLFree( psTable->pszRawData );
-        psTable->pszRawData = NULL;
-
-        CPLError( CE_Failure, CPLE_FileIO, "Read of file %s failed.", 
-                  psTable->pszFilename );
-        return;
-    }
-
-    psTable->pszRawData[nFileLen] = '\0';
-
-/* -------------------------------------------------------------------- */
-/*      Get count of newlines so we can allocate line array.            */
-/* -------------------------------------------------------------------- */
-    nMaxLineCount = 0;
-    for( i = 0; i < nFileLen; i++ )
-    {
-        if( psTable->pszRawData[i] == 10 )
-            nMaxLineCount++;
-    }
-
-    psTable->papszLines = (char **) CPLCalloc(sizeof(char*),nMaxLineCount);
-    
-/* -------------------------------------------------------------------- */
-/*      Build a list of record pointers into the raw data buffer        */
-/*      based on line terminators.  Zero terminate the line             */
-/*      strings.                                                        */
-/* -------------------------------------------------------------------- */
-    /* skip header line */
-    pszThisLine = CSVFindNextLine( psTable->pszRawData );
-
-    while( pszThisLine != NULL && iLine < nMaxLineCount )
-    {
-        psTable->papszLines[iLine++] = pszThisLine;
-        pszThisLine = CSVFindNextLine( pszThisLine );
-    }
-
-    psTable->nLineCount = iLine;
-
-/* -------------------------------------------------------------------- */
-/*      Allocate and populate index array.  Ensure they are in          */
-/*      ascending order so that binary searches can be done on the      */
-/*      array.                                                          */
-/* -------------------------------------------------------------------- */
-    psTable->panLineIndex = (int *) CPLMalloc(sizeof(int)*psTable->nLineCount);
-    for( i = 0; i < psTable->nLineCount; i++ )
-    {
-        psTable->panLineIndex[i] = atoi(psTable->papszLines[i]);
-
-        if( i > 0 && psTable->panLineIndex[i] < psTable->panLineIndex[i-1] )
-        {
-            CPLFree( psTable->panLineIndex );
-            psTable->panLineIndex = NULL;
-            break;
-        }
-    }
-
-    psTable->iLastLine = -1;
-
-/* -------------------------------------------------------------------- */
-/*      We should never need the file handle against, so close it.      */
-/* -------------------------------------------------------------------- */
-    VSIFClose( psTable->fp );
-    psTable->fp = NULL;
-}
-
-/************************************************************************/
-/*                          CSVReadParseLine()                          */
-/*                                                                      */
-/*      Read one line, and return split into fields.  The return        */
-/*      result is a stringlist, in the sense of the CSL functions.      */
-/************************************************************************/
-
-char **CSVReadParseLine( FILE * fp )
-
-{
-    const char  *pszLine;
-    char        *pszWorkLine;
-    char        **papszReturn;
-
-    CPLAssert( fp != NULL );
-    if( fp == NULL )
-        return( NULL );
-    
-    pszLine = CPLReadLine( fp );
-    if( pszLine == NULL )
-        return( NULL );
-
-/* -------------------------------------------------------------------- */
-/*      If there are no quotes, then this is the simple case.           */
-/*      Parse, and return tokens.                                       */
-/* -------------------------------------------------------------------- */
-    if( strchr(pszLine,'\"') == NULL )
-        return CSVSplitLine( pszLine );
-
-/* -------------------------------------------------------------------- */
-/*      We must now count the quotes in our working string, and as      */
-/*      long as it is odd, keep adding new lines.                       */
-/* -------------------------------------------------------------------- */
-    pszWorkLine = CPLStrdup( pszLine );
-
-    while( TRUE )
-    {
-        int             i, nCount = 0;
-
-        for( i = 0; pszWorkLine[i] != '\0'; i++ )
-        {
-            if( pszWorkLine[i] == '\"'
-                && (i == 0 || pszWorkLine[i-1] != '\\') )
-                nCount++;
-        }
-
-        if( nCount % 2 == 0 )
-            break;
-
-        pszLine = CPLReadLine( fp );
-        if( pszLine == NULL )
-            break;
-
-        pszWorkLine = (char *)
-            CPLRealloc(pszWorkLine,
-                       strlen(pszWorkLine) + strlen(pszLine) + 1);
-        strcat( pszWorkLine, pszLine );
-    }
-    
-    papszReturn = CSVSplitLine( pszWorkLine );
-
-    CPLFree( pszWorkLine );
-
-    return papszReturn;
-}
-
-/************************************************************************/
-/*                             CSVCompare()                             */
-/*                                                                      */
-/*      Compare a field to a search value using a particular            */
-/*      criteria.                                                       */
-/************************************************************************/
-
-static int CSVCompare( const char * pszFieldValue, const char * pszTarget,
-                       CSVCompareCriteria eCriteria )
-
-{
-    if( eCriteria == CC_ExactString )
-    {
-        return( strcmp( pszFieldValue, pszTarget ) == 0 );
-    }
-    else if( eCriteria == CC_ApproxString )
-    {
-        return( EQUAL( pszFieldValue, pszTarget ) );
-    }
-    else if( eCriteria == CC_Integer )
-    {
-        return( atoi(pszFieldValue) == atoi(pszTarget) );
-    }
-
-    return FALSE;
-}
-
-/************************************************************************/
-/*                            CSVScanLines()                            */
-/*                                                                      */
-/*      Read the file scanline for lines where the key field equals     */
-/*      the indicated value with the suggested comparison criteria.     */
-/*      Return the first matching line split into fields.               */
-/************************************************************************/
-
-char **CSVScanLines( FILE *fp, int iKeyField, const char * pszValue,
-                     CSVCompareCriteria eCriteria )
-
-{
-    char        **papszFields = NULL;
-    int         bSelected = FALSE, nTestValue;
-
-    CPLAssert( pszValue != NULL );
-    CPLAssert( iKeyField >= 0 );
-    CPLAssert( fp != NULL );
-    
-    nTestValue = atoi(pszValue);
-    
-    while( !bSelected ) {
-        papszFields = CSVReadParseLine( fp );
-        if( papszFields == NULL )
-            return( NULL );
-
-        if( CSLCount( papszFields ) < iKeyField+1 )
-        {
-            /* not selected */
-        }
-        else if( eCriteria == CC_Integer
-                 && atoi(papszFields[iKeyField]) == nTestValue )
-        {
-            bSelected = TRUE;
-        }
-        else
-        {
-            bSelected = CSVCompare( papszFields[iKeyField], pszValue,
-                                    eCriteria );
-        }
-
-        if( !bSelected )
-        {
-            CSLDestroy( papszFields );
-            papszFields = NULL;
-        }
-    }
-    
-    return( papszFields );
-}
-
-/************************************************************************/
-/*                        CSVScanLinesIndexed()                         */
-/*                                                                      */
-/*      Read the file scanline for lines where the key field equals     */
-/*      the indicated value with the suggested comparison criteria.     */
-/*      Return the first matching line split into fields.               */
-/************************************************************************/
-
-static char **
-CSVScanLinesIndexed( CSVTable *psTable, int nKeyValue )
-
-{
-    int         iTop, iBottom, iMiddle, iResult = -1;
-
-    CPLAssert( psTable->panLineIndex != NULL );
-
-/* -------------------------------------------------------------------- */
-/*      Find target record with binary search.                          */
-/* -------------------------------------------------------------------- */
-    iTop = psTable->nLineCount-1;
-    iBottom = 0;
-
-    while( iTop >= iBottom )
-    {
-        iMiddle = (iTop + iBottom) / 2;
-        if( psTable->panLineIndex[iMiddle] > nKeyValue )
-            iTop = iMiddle - 1;
-        else if( psTable->panLineIndex[iMiddle] < nKeyValue )
-            iBottom = iMiddle + 1;
-        else
-        {
-            iResult = iMiddle;
-            break;
-        }
-    }
-
-    if( iResult == -1 )
-        return NULL;
-
-/* -------------------------------------------------------------------- */
-/*      Parse target line, and update iLastLine indicator.              */
-/* -------------------------------------------------------------------- */
-    psTable->iLastLine = iResult;
-    
-    return CSVSplitLine( psTable->papszLines[iResult] );
-}
-
-/************************************************************************/
-/*                        CSVScanLinesIngested()                        */
-/*                                                                      */
-/*      Read the file scanline for lines where the key field equals     */
-/*      the indicated value with the suggested comparison criteria.     */
-/*      Return the first matching line split into fields.               */
-/************************************************************************/
-
-static char **
-CSVScanLinesIngested( CSVTable *psTable, int iKeyField, const char * pszValue,
-                      CSVCompareCriteria eCriteria )
-
-{
-    char        **papszFields = NULL;
-    int         bSelected = FALSE, nTestValue;
-
-    CPLAssert( pszValue != NULL );
-    CPLAssert( iKeyField >= 0 );
-
-    nTestValue = atoi(pszValue);
-    
-/* -------------------------------------------------------------------- */
-/*      Short cut for indexed files.                                    */
-/* -------------------------------------------------------------------- */
-    if( iKeyField == 0 && eCriteria == CC_Integer 
-        && psTable->panLineIndex != NULL )
-        return CSVScanLinesIndexed( psTable, nTestValue );
-    
-/* -------------------------------------------------------------------- */
-/*      Scan from in-core lines.                                        */
-/* -------------------------------------------------------------------- */
-    while( !bSelected && psTable->iLastLine+1 < psTable->nLineCount ) {
-        psTable->iLastLine++;
-        papszFields = CSVSplitLine( psTable->papszLines[psTable->iLastLine] );
-
-        if( CSLCount( papszFields ) < iKeyField+1 )
-        {
-            /* not selected */
-        }
-        else if( eCriteria == CC_Integer
-                 && atoi(papszFields[iKeyField]) == nTestValue )
-        {
-            bSelected = TRUE;
-        }
-        else
-        {
-            bSelected = CSVCompare( papszFields[iKeyField], pszValue,
-                                    eCriteria );
-        }
-
-        if( !bSelected )
-        {
-            CSLDestroy( papszFields );
-            papszFields = NULL;
-        }
-    }
-    
-    return( papszFields );
-}
-
-/************************************************************************/
-/*                            CSVScanFile()                             */
-/*                                                                      */
-/*      Scan a whole file using criteria similar to above, but also     */
-/*      taking care of file opening and closing.                        */
-/************************************************************************/
-
-char **CSVScanFile( const char * pszFilename, int iKeyField,
-                    const char * pszValue, CSVCompareCriteria eCriteria )
-
-{
-    CSVTable    *psTable;
-
-/* -------------------------------------------------------------------- */
-/*      Get access to the table.                                        */
-/* -------------------------------------------------------------------- */
-    CPLAssert( pszFilename != NULL );
-
-    if( iKeyField < 0 )
-        return NULL;
-
-    psTable = gtCSVAccess( pszFilename );
-    if( psTable == NULL )
-        return NULL;
-    
-    CSVIngest( pszFilename );
-
-/* -------------------------------------------------------------------- */
-/*      Does the current record match the criteria?  If so, just        */
-/*      return it again.                                                */
-/* -------------------------------------------------------------------- */
-    if( iKeyField >= 0
-        && iKeyField < CSLCount(psTable->papszRecFields)
-        && CSVCompare(pszValue,psTable->papszRecFields[iKeyField],eCriteria) )
-    {
-        return psTable->papszRecFields;
-    }
-
-/* -------------------------------------------------------------------- */
-/*      Scan the file from the beginning, replacing the ``current       */
-/*      record'' in our structure with the one that is found.           */
-/* -------------------------------------------------------------------- */
-    psTable->iLastLine = -1;
-    CSLDestroy( psTable->papszRecFields );
-
-    if( psTable->pszRawData != NULL )
-        psTable->papszRecFields = 
-            CSVScanLinesIngested( psTable, iKeyField, pszValue, eCriteria );
-    else
-    {
-        VSIRewind( psTable->fp );
-        CPLReadLine( psTable->fp );         /* throw away the header line */
-    
-        psTable->papszRecFields =
-            CSVScanLines( psTable->fp, iKeyField, pszValue, eCriteria );
-    }
-
-    return( psTable->papszRecFields );
-}
-
-/************************************************************************/
-/*                           CPLGetFieldId()                            */
-/*                                                                      */
-/*      Read the first record of a CSV file (rewinding to be sure),     */
-/*      and find the field with the indicated name.  Returns -1 if      */
-/*      it fails to find the field name.  Comparison is case            */
-/*      insensitive, but otherwise exact.  After this function has      */
-/*      been called the file pointer will be positioned just after      */
-/*      the first record.                                               */
-/************************************************************************/
-
-int CSVGetFieldId( FILE * fp, const char * pszFieldName )
-
-{
-    char        **papszFields;
-    int         i;
-    
-    CPLAssert( fp != NULL && pszFieldName != NULL );
-
-    VSIRewind( fp );
-
-    papszFields = CSVReadParseLine( fp );
-    for( i = 0; papszFields != NULL && papszFields[i] != NULL; i++ )
-    {
-        if( EQUAL(papszFields[i],pszFieldName) )
-        {
-            CSLDestroy( papszFields );
-            return i;
-        }
-    }
-
-    CSLDestroy( papszFields );
-
-    return -1;
-}
-
-/************************************************************************/
-/*                         CSVGetFileFieldId()                          */
-/*                                                                      */
-/*      Same as CPLGetFieldId(), except that we get the file based      */
-/*      on filename, rather than having an existing handle.             */
-/************************************************************************/
-
-int CSVGetFileFieldId( const char * pszFilename, const char * pszFieldName )
-
-{
-    CSVTable    *psTable;
-    int         i;
-    
-/* -------------------------------------------------------------------- */
-/*      Get access to the table.                                        */
-/* -------------------------------------------------------------------- */
-    CPLAssert( pszFilename != NULL );
-
-    psTable = gtCSVAccess( pszFilename );
-    if( psTable == NULL )
-        return -1;
-
-/* -------------------------------------------------------------------- */
-/*      Find the requested field.                                       */
-/* -------------------------------------------------------------------- */
-    for( i = 0;
-         psTable->papszFieldNames != NULL
-             && psTable->papszFieldNames[i] != NULL;
-         i++ )
-    {
-        if( EQUAL(psTable->papszFieldNames[i],pszFieldName) )
-        {
-            return i;
-        }
-    }
-
-    return -1;
-}
-
-
-/************************************************************************/
-/*                         CSVScanFileByName()                          */
-/*                                                                      */
-/*      Same as CSVScanFile(), but using a field name instead of a      */
-/*      field number.                                                   */
-/************************************************************************/
-
-char **CSVScanFileByName( const char * pszFilename,
-                          const char * pszKeyFieldName,
-                          const char * pszValue, CSVCompareCriteria eCriteria )
-
-{
-    int         iKeyField;
-
-    iKeyField = CSVGetFileFieldId( pszFilename, pszKeyFieldName );
-    if( iKeyField == -1 )
-        return NULL;
-
-    return( CSVScanFile( pszFilename, iKeyField, pszValue, eCriteria ) );
-}
-
-/************************************************************************/
-/*                            CSVGetField()                             */
-/*                                                                      */
-/*      The all-in-one function to fetch a particular field value       */
-/*      from a CSV file.  Note this function will return an empty       */
-/*      string, rather than NULL if it fails to find the desired        */
-/*      value for some reason.  The caller can't establish that the     */
-/*      fetch failed.                                                   */
-/************************************************************************/
-
-const char *CSVGetField( const char * pszFilename,
-                         const char * pszKeyFieldName,
-                         const char * pszKeyFieldValue,
-                         CSVCompareCriteria eCriteria,
-                         const char * pszTargetField )
-
-{
-    CSVTable    *psTable;
-    char        **papszRecord;
-    int         iTargetField;
-    
-/* -------------------------------------------------------------------- */
-/*      Find the table.                                                 */
-/* -------------------------------------------------------------------- */
-    psTable = gtCSVAccess( pszFilename );
-    if( psTable == NULL )
-        return "";
-
-/* -------------------------------------------------------------------- */
-/*      Find the correct record.                                        */
-/* -------------------------------------------------------------------- */
-    papszRecord = CSVScanFileByName( pszFilename, pszKeyFieldName,
-                                     pszKeyFieldValue, eCriteria );
-
-    if( papszRecord == NULL )
-        return "";
-
-/* -------------------------------------------------------------------- */
-/*      Figure out which field we want out of this.                     */
-/* -------------------------------------------------------------------- */
-    iTargetField = CSVGetFileFieldId( pszFilename, pszTargetField );
-    if( iTargetField < 0 )
-        return "";
-
-    if( iTargetField >= CSLCount( papszRecord ) )
-        return "";
-
-    return( papszRecord[iTargetField] );
-}
-
-/************************************************************************/
-/*                            CSVFilename()                             */
-/*                                                                      */
-/*      Return the full path to a particular CSV file.  This will       */
-/*      eventually be something the application can override.           */
-/************************************************************************/
-
-static const char *(*pfnCSVFilenameHook)(const char *) = NULL;
-
-const char * CSVFilename( const char *pszBasename )
-
-{
-    static char		szPath[512];
-
-    if( pfnCSVFilenameHook == NULL )
-    {
-        FILE	*fp = NULL;
-
-        if( getenv("GEOTIFF_CSV") != NULL )
-        {
-            sprintf( szPath, "%s/%s", getenv("GEOTIFF_CSV"), pszBasename );
-        }
-#ifdef CSV_DATA_DIR
-        else 
-        {
-            sprintf( szPath, "%s/%s", CSV_DATA_DIR, pszBasename );
-        }
-#else
-        else if( (fp = fopen( "/usr/local/share/epsg/csv/pcs.csv", "rt" )) != NULL )
-        {
-            sprintf( szPath, "/usr/local/share/epsg/csv/%s", pszBasename );
-        }
-        else if( (fp = fopen( "csv/pcs.csv", "rt" )) != NULL )
-        {
-            sprintf( szPath, "csv/%s", pszBasename );
-        }
-        else if( (fp = fopen( "share/epsg_csv/pcs.csv", "rt" )) != NULL )
-        {
-            sprintf( szPath, "share/epsg_csv/%s", pszBasename );
-        }
-        else if( (fp = fopen( "/usr/share/epsg_csv/pcs.csv", "rt" )) != NULL )
-        {
-            sprintf( szPath, "/usr/share/epsg_csv/%s", pszBasename );
-        }
-        else
-        {
-            sprintf( szPath, "/usr/local/share/epsg_csv/%s", pszBasename );
-        }
-#endif
-
-        if( fp != NULL )
-            fclose( fp );
-        
-        return( szPath );
-    }
-    else
-        return( pfnCSVFilenameHook( pszBasename ) );
-}
-
-/************************************************************************/
-/*                         SetCSVFilenameHook()                         */
-/*                                                                      */
-/*      Applications can use this to set a function that will           */
-/*      massage CSV filenames.                                          */
-/************************************************************************/
-
-/**
- * Override CSV file search method.
- *
- * @param CSVFileOverride The pointer to a function which will return the
- * full path for a given filename.
-  *
-
-This function allows an application to override how the GTIFGetDefn() and related function find the CSV (Comma Separated
-Value) values required. The pfnHook argument should be a pointer to a function that will take in a CSV filename and return a
-full path to the file. The returned string should be to an internal static buffer so that the caller doesn't have to free the result.
-
-<b>Example:</b><br>
-
-The listgeo utility uses the following override function if the user
-specified a CSV file directory with the -t commandline switch (argument
-put into CSVDirName).  <p>
-
-<pre>
-
-    ...
-
-
-    SetCSVFilenameHook( CSVFileOverride );
-
-    ...
-
-
-static const char *CSVFileOverride( const char * pszInput )
-
-{
-    static char         szPath[1024];
-
-#ifdef WIN32
-    sprintf( szPath, "%s\\%s", CSVDirName, pszInput );
-#else    
-    sprintf( szPath, "%s/%s", CSVDirName, pszInput );
-#endif    
-
-    return( szPath );
-}
-</pre>
-
-*/
-
-void SetCSVFilenameHook( const char *(*pfnNewHook)( const char * ) )
-
-{
-    pfnCSVFilenameHook = pfnNewHook;
-}
diff --git a/src/tiff/cpl_csv.h b/src/tiff/cpl_csv.h
deleted file mode 100644
index 94e927d..0000000
--- a/src/tiff/cpl_csv.h
+++ /dev/null
@@ -1,83 +0,0 @@
-/******************************************************************************
- * $Id: cpl_csv.h 13 2002-07-30 20:02:48Z juan $
- *
- * Project:  Common Portability Library
- * Purpose:  Functions for reading and scaning CSV (comma separated,
- *           variable length text files holding tables) files.  
- * Author:   Frank Warmerdam, warmerda at home.com
- *
- ******************************************************************************
- * Copyright (c) 1999, Frank Warmerdam
- *
- * 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 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- ******************************************************************************
- *
- * $Log$
- * Revision 1.1  2002/02/04 18:49:02  juan
- * Arquivo adicionado
- *
- * Revision 1.1  1999/10/06 19:26:24  juan
- * Add files for geotiff
- *
- * Revision 1.2  1999/03/17 20:42:40  geotiff
- * Dont export the CSV functions from the DLL
- *
- * Revision 1.1  1999/03/09 15:57:04  geotiff
- * New
- *
- * Revision 1.2  1999/02/24 16:22:58  warmerda
- * cpl_csv.c
- *
- */
-
-#ifndef CPL_CSV_H_INCLUDED
-#define CPL_CSV_H_INCLUDED
-
-#include "cpl_serv.h"
-
-CPL_C_START
-
-typedef enum {
-    CC_ExactString,
-    CC_ApproxString,
-    CC_Integer
-} CSVCompareCriteria;
-
-const char  *CSVFilename( const char * );
-
-char  **CSVReadParseLine( FILE * );
-char  **CSVScanLines( FILE *, int, const char *, CSVCompareCriteria );
-char  **CSVScanFile( const char *, int, const char *,
-                            CSVCompareCriteria );
-char  **CSVScanFileByName( const char *, const char *, const char *,
-                                  CSVCompareCriteria );
-int  CSVGetFieldId( FILE *, const char * );
-int  CSVGetFileFieldId( const char *, const char * );
-
-void  CSVDeaccess( const char * );
-
-const char  *CSVGetField( const char *, const char *, const char *,
-                                 CSVCompareCriteria, const char * );
-
-void CPL_DLL SetCSVFilenameHook( const char *(*)(const char *) );
-
-CPL_C_END
-
-#endif /* ndef CPL_CSV_H_INCLUDED */
-
diff --git a/src/tiff/cpl_serv.c b/src/tiff/cpl_serv.c
deleted file mode 100644
index 3e6b1e9..0000000
--- a/src/tiff/cpl_serv.c
+++ /dev/null
@@ -1,596 +0,0 @@
-/******************************************************************************
- * Copyright (c) 1998, Frank Warmerdam
- *
- * 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 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- ******************************************************************************
- *
- * cpl_serv.c: Various Common Portability Library derived convenience functions
- *
- * $Log$
- * Revision 1.8  2001/07/09 20:14:37  warmerda
- * Another problem freeing pszRLBuffer and not setting to NULL.
- *
- * Revision 1.7  2001/04/17 13:40:43  warmerda
- * fixed freeing of line buffer in CPLReadLine(), init ptr to NULL
- *
- * Revision 1.6  2001/03/05 04:56:17  warmerda
- * make it possible to deallocate CPLReadLine buffer
- *
- * Revision 1.5  2000/09/30 03:35:05  warmerda
- * Fixed CPLReadLine() to use avoid calling VSIRealloc() on a NULL pointer.
- *
- * Revision 1.4  1999/06/25 04:35:26  warmerda
- * Fixed to actually support long lines.
- *
- * Revision 1.3  1999/03/17 20:43:03  geotiff
- * Avoid use of size_t keyword
- *
- * Revision 1.2  1999/03/10 18:22:39  geotiff
- * Added string.h, fixed backslash escaping
- *
- * Revision 1.1  1999/03/09 15:57:04  geotiff
- * New
- *
- */
-
-#include "cpl_serv.h"
-#include "geo_tiffp.h"
-
-#ifdef HAVE_STRING_H
-#  include <string.h>
-#endif
-#if defined(HAVE_STRINGS_H) && !defined(HAVE_STRING_H)
-#  include <strings.h>
-#endif
-
-/************************************************************************/
-/*                             CPLCalloc()                              */
-/************************************************************************/
-
-void *CPLCalloc( int nCount, int nSize )
-
-{
-    void	*pReturn;
-
-    if( nSize == 0 )
-        return NULL;
-    
-    pReturn = VSICalloc( nCount, nSize );
-    if( pReturn == NULL )
-    {
-        CPLError( CE_Fatal, CPLE_OutOfMemory,
-                  "CPLCalloc(): Out of memory allocating %d bytes.\n",
-                  nSize * nCount );
-    }
-
-    return pReturn;
-}
-
-/************************************************************************/
-/*                             CPLMalloc()                              */
-/************************************************************************/
-
-void *CPLMalloc( int nSize )
-
-{
-    void	*pReturn;
-
-    if( nSize == 0 )
-        return NULL;
-    
-    pReturn = VSIMalloc( nSize );
-    if( pReturn == NULL )
-    {
-        CPLError( CE_Fatal, CPLE_OutOfMemory,
-                  "CPLMalloc(): Out of memory allocating %d bytes.\n",
-                  nSize );
-    }
-
-    return pReturn;
-}
-
-/************************************************************************/
-/*                             CPLRealloc()                             */
-/************************************************************************/
-
-void * CPLRealloc( void * pData, int nNewSize )
-
-{
-    void	*pReturn;
-
-    if( pData == NULL )
-        pReturn = VSIMalloc( nNewSize );
-    else
-        pReturn = VSIRealloc( pData, nNewSize );
-    
-    if( pReturn == NULL )
-    {
-        CPLError( CE_Fatal, CPLE_OutOfMemory,
-                  "CPLRealloc(): Out of memory allocating %d bytes.\n",
-                  nNewSize );
-    }
-
-    return pReturn;
-}
-
-/************************************************************************/
-/*                             CPLStrdup()                              */
-/************************************************************************/
-
-char *CPLStrdup( const char * pszString )
-
-{
-    char	*pszReturn;
-
-    if( pszString == NULL )
-        pszString = "";
-
-    pszReturn = VSIMalloc( strlen(pszString)+1 );
-        
-    if( pszReturn == NULL )
-    {
-        CPLError( CE_Fatal, CPLE_OutOfMemory,
-                  "CPLStrdup(): Out of memory allocating %d bytes.\n",
-                  strlen(pszString) );
-        
-    }
-
-    strcpy( pszReturn, pszString );
-    
-    return( pszReturn );
-}
-
-/************************************************************************/
-/*                            CPLReadLine()                             */
-/*                                                                      */
-/*      Read a line of text from the given file handle, taking care     */
-/*      to capture CR and/or LF and strip off ... equivelent of         */
-/*      DKReadLine().  Pointer to an internal buffer is returned.       */
-/*      The application shouldn't free it, or depend on it's value      */
-/*      past the next call to CPLReadLine()                             */
-/************************************************************************/
-
-const char *CPLReadLine( FILE * fp )
-
-{
-    static char	*pszRLBuffer = NULL;
-    static int	nRLBufferSize = 0;
-    int		nLength, nReadSoFar = 0;
-
-/* -------------------------------------------------------------------- */
-/*      Cleanup case.                                                   */
-/* -------------------------------------------------------------------- */
-    if( fp == NULL )
-    {
-        CPLFree( pszRLBuffer );
-        pszRLBuffer = NULL;
-        nRLBufferSize = 0;
-        return NULL;
-    }
-
-/* -------------------------------------------------------------------- */
-/*      Loop reading chunks of the line till we get to the end of       */
-/*      the line.                                                       */
-/* -------------------------------------------------------------------- */
-    do {
-/* -------------------------------------------------------------------- */
-/*      Grow the working buffer if we have it nearly full.  Fail out    */
-/*      of read line if we can't reallocate it big enough (for          */
-/*      instance for a _very large_ file with no newlines).             */
-/* -------------------------------------------------------------------- */
-        if( nRLBufferSize-nReadSoFar < 128 )
-        {
-            nRLBufferSize = nRLBufferSize*2 + 128;
-            if( pszRLBuffer == NULL )
-                pszRLBuffer = (char *) VSIMalloc(nRLBufferSize);
-            else
-                pszRLBuffer = (char *) VSIRealloc(pszRLBuffer, nRLBufferSize);
-            if( pszRLBuffer == NULL )
-            {
-                nRLBufferSize = 0;
-                return NULL;
-            }
-        }
-
-/* -------------------------------------------------------------------- */
-/*      Do the actual read.                                             */
-/* -------------------------------------------------------------------- */
-        if( VSIFGets( pszRLBuffer+nReadSoFar, nRLBufferSize-nReadSoFar, fp )
-            == NULL )
-        {
-            CPLFree( pszRLBuffer );
-            pszRLBuffer = NULL;
-            nRLBufferSize = 0;
-
-            return NULL;
-        }
-
-        nReadSoFar = strlen(pszRLBuffer);
-
-    } while( nReadSoFar == nRLBufferSize - 1
-             && pszRLBuffer[nRLBufferSize-2] != 13
-             && pszRLBuffer[nRLBufferSize-2] != 10 );
-
-/* -------------------------------------------------------------------- */
-/*      Clear CR and LF off the end.                                    */
-/* -------------------------------------------------------------------- */
-    nLength = strlen(pszRLBuffer);
-    if( nLength > 0
-        && (pszRLBuffer[nLength-1] == 10 || pszRLBuffer[nLength-1] == 13) )
-    {
-        pszRLBuffer[--nLength] = '\0';
-    }
-    
-    if( nLength > 0
-        && (pszRLBuffer[nLength-1] == 10 || pszRLBuffer[nLength-1] == 13) )
-    {
-        pszRLBuffer[--nLength] = '\0';
-    }
-
-    return( pszRLBuffer );
-}
-
-
-/*=====================================================================
-                    StringList manipulation functions.
- =====================================================================*/
-
-/**********************************************************************
- *                       CSLAddString()
- *
- * Append a string to a StringList and return a pointer to the modified
- * StringList.
- * If the input StringList is NULL, then a new StringList is created.
- **********************************************************************/
-char **CSLAddString(char **papszStrList, const char *pszNewString)
-{
-    int nItems=0;
-
-    if (pszNewString == NULL)
-        return papszStrList;    /* Nothing to do!*/
-
-    /* Allocate room for the new string */
-    if (papszStrList == NULL)
-        papszStrList = (char**) CPLCalloc(2,sizeof(char*));
-    else
-    {
-        nItems = CSLCount(papszStrList);
-        papszStrList = (char**)CPLRealloc(papszStrList, 
-                                          (nItems+2)*sizeof(char*));
-    }
-
-    /* Copy the string in the list */
-    papszStrList[nItems] = CPLStrdup(pszNewString);
-    papszStrList[nItems+1] = NULL;
-
-    return papszStrList;
-}
-
-/**********************************************************************
- *                       CSLCount()
- *
- * Return the number of lines in a Stringlist.
- **********************************************************************/
-int CSLCount(char **papszStrList)
-{
-    int nItems=0;
-
-    if (papszStrList)
-    {
-        while(*papszStrList != NULL)
-        {
-            nItems++;
-            papszStrList++;
-        }
-    }
-
-    return nItems;
-}
-
-
-/************************************************************************/
-/*                            CSLGetField()                             */
-/*                                                                      */
-/*      Fetches the indicated field, being careful not to crash if      */
-/*      the field doesn't exist within this string list.  The           */
-/*      returned pointer should not be freed, and doesn't               */
-/*      necessarily last long.                                          */
-/************************************************************************/
-
-const char * CSLGetField( char ** papszStrList, int iField )
-
-{
-    int         i;
-
-    if( papszStrList == NULL || iField < 0 )
-        return( "" );
-
-    for( i = 0; i < iField+1; i++ )
-    {
-        if( papszStrList[i] == NULL )
-            return "";
-    }
-
-    return( papszStrList[iField] );
-}
-
-/**********************************************************************
- *                       CSLDestroy()
- *
- * Free all memory used by a StringList.
- **********************************************************************/
-void CSLDestroy(char **papszStrList)
-{
-    char **papszPtr;
-
-    if (papszStrList)
-    {
-        papszPtr = papszStrList;
-        while(*papszPtr != NULL)
-        {
-            CPLFree(*papszPtr);
-            papszPtr++;
-        }
-
-        CPLFree(papszStrList);
-    }
-}
-
-
-/**********************************************************************
- *                       CSLDuplicate()
- *
- * Allocate and return a copy of a StringList.
- **********************************************************************/
-char    **CSLDuplicate(char **papszStrList)
-{
-    char **papszNewList, **papszSrc, **papszDst;
-    int  nLines;
-
-    nLines = CSLCount(papszStrList);
-
-    if (nLines == 0)
-        return NULL;
-
-    papszNewList = (char **)CPLMalloc((nLines+1)*sizeof(char*));
-    papszSrc = papszStrList;
-    papszDst = papszNewList;
-
-    while(*papszSrc != NULL)
-    {
-        *papszDst = CPLStrdup(*papszSrc);
-
-        papszSrc++;
-        papszDst++;
-    }
-    *papszDst = NULL;
-
-    return papszNewList;
-}
-
-/**********************************************************************
- *                       CSLTokenizeString()
- *
- * Tokenizes a string and returns a StringList with one string for
- * each token.
- **********************************************************************/
-char    **CSLTokenizeString( const char *pszString )
-{
-    return CSLTokenizeStringComplex( pszString, " ", TRUE, FALSE );
-}
-
-/************************************************************************/
-/*                      CSLTokenizeStringComplex()                      */
-/*                                                                      */
-/*      The ultimate tokenizer?                                         */
-/************************************************************************/
-
-char ** CSLTokenizeStringComplex( const char * pszString,
-                                  const char * pszDelimiters,
-                                  int bHonourStrings, int bAllowEmptyTokens )
-
-{
-    char	**papszRetList = NULL;
-    char 	*pszToken;
-    int		nTokenMax, nTokenLen;
-
-    pszToken = (char *) CPLCalloc(10,1);
-    nTokenMax = 10;
-    
-    while( pszString != NULL && *pszString != '\0' )
-    {
-        int	bInString = FALSE;
-
-        nTokenLen = 0;
-        
-        /* Try to find the next delimeter, marking end of token */
-        for( ; *pszString != '\0'; pszString++ )
-        {
-
-            /* End if this is a delimeter skip it and break. */
-            if( !bInString && strchr(pszDelimiters, *pszString) != NULL )
-            {
-                pszString++;
-                break;
-            }
-            
-            /* If this is a quote, and we are honouring constant
-               strings, then process the constant strings, with out delim
-               but don't copy over the quotes */
-            if( bHonourStrings && *pszString == '"' )
-            {
-                if( bInString )
-                {
-                    bInString = FALSE;
-                    continue;
-                }
-                else
-                {
-                    bInString = TRUE;
-                    continue;
-                }
-            }
-
-            /* Within string constants we allow for escaped quotes, but
-               in processing them we will unescape the quotes */
-            if( bInString && pszString[0] == '\\' && pszString[1] == '"' )
-            {
-                pszString++;
-            }
-
-            /* Within string constants a \\ sequence reduces to \ */
-            else if( bInString
-                     && pszString[0] == '\\' && pszString[1] == '\\' )
-            {
-                pszString++;
-            }
-
-            if( nTokenLen >= nTokenMax-1 )
-            {
-                nTokenMax = nTokenMax * 2 + 10;
-                pszToken = (char *) CPLRealloc( pszToken, nTokenMax );
-            }
-
-            pszToken[nTokenLen] = *pszString;
-            nTokenLen++;
-        }
-
-        pszToken[nTokenLen] = '\0';
-
-        if( pszToken[0] != '\0' || bAllowEmptyTokens )
-        {
-            papszRetList = CSLAddString( papszRetList, pszToken );
-        }
-    }
-
-    if( papszRetList == NULL )
-        papszRetList = (char **) CPLCalloc(sizeof(char *),1);
-
-    CPLFree( pszToken );
-
-    return papszRetList;
-}
-
-/* static buffer to store the last error message.  We'll assume that error
- * messages cannot be longer than 2000 chars... which is quite reasonable
- * (that's 25 lines of 80 chars!!!)
- */
-static char gszCPLLastErrMsg[2000] = "";
-static int  gnCPLLastErrNo = 0;
-
-static void (*gpfnCPLErrorHandler)(CPLErr, int, const char *) = NULL;
-
-/**********************************************************************
- *                          CPLError()
- *
- * This function records an error code and displays the error message
- * to stderr.
- *
- * The error code can be accessed later using CPLGetLastErrNo()
- **********************************************************************/
-void    CPLError(CPLErr eErrClass, int err_no, const char *fmt, ...)
-{
-    va_list args;
-
-    /* Expand the error message 
-     */
-    va_start(args, fmt);
-    vsprintf(gszCPLLastErrMsg, fmt, args);
-    va_end(args);
-
-    /* If the user provided his own error handling function, then call
-     * it, otherwise print the error to stderr and return.
-     */
-    gnCPLLastErrNo = err_no;
-
-    if (gpfnCPLErrorHandler != NULL)
-    {
-        gpfnCPLErrorHandler(eErrClass, err_no, gszCPLLastErrMsg);
-    }
-    else
-    {
-        fprintf(stderr, "ERROR %d: %s\n", gnCPLLastErrNo, gszCPLLastErrMsg);
-    }
-
-    if( eErrClass == CE_Fatal )
-        abort();
-}
-
-/**********************************************************************
- *                          CPLErrorReset()
- *
- * Erase any traces of previous errors.
- **********************************************************************/
-void    CPLErrorReset()
-{
-    gnCPLLastErrNo = 0;
-    gszCPLLastErrMsg[0] = '\0';
-}
-
-
-/**********************************************************************
- *                          CPLGetLastErrorNo()
- *
- **********************************************************************/
-int     CPLGetLastErrorNo()
-{
-    return gnCPLLastErrNo;
-}
-
-/**********************************************************************
- *                          CPLGetLastErrorMsg()
- *
- **********************************************************************/
-const char* CPLGetLastErrorMsg()
-{
-    return gszCPLLastErrMsg;
-}
-
-/**********************************************************************
- *                          CPLSetErrorHandler()
- *
- * Allow the library's user to specify his own error handler function.
- *
- * A valid error handler is a C function with the following prototype:
- *
- *     void MyErrorHandler(int errno, const char *msg)
- *
- * Pass NULL to come back to the default behavior.
- **********************************************************************/
-
-void     CPLSetErrorHandler(void (*pfnErrorHandler)(CPLErr, int, const char *))
-{
-    gpfnCPLErrorHandler = pfnErrorHandler;
-}
-
-/************************************************************************/
-/*                             _CPLAssert()                             */
-/*                                                                      */
-/*      This function is called only when an assertion fails.           */
-/************************************************************************/
-
-void _CPLAssert( const char * pszExpression, const char * pszFile,
-                 int iLine )
-
-{
-    CPLError( CE_Fatal, CPLE_AssertionFailed,
-              "Assertion `%s' failed\n"
-              "in file `%s', line %d\n",
-              pszExpression, pszFile, iLine );
-}
diff --git a/src/tiff/cpl_serv.h b/src/tiff/cpl_serv.h
deleted file mode 100644
index 7aec076..0000000
--- a/src/tiff/cpl_serv.h
+++ /dev/null
@@ -1,276 +0,0 @@
-/******************************************************************************
- * Copyright (c) 1998, Frank Warmerdam
- *
- * 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 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- ******************************************************************************
- *
- * cpl_serv.h
- *
- * This include file derived and simplified from the GDAL Common Portability
- * Library.
- */
-
-#ifndef CPL_SERV_H_INCLUDED
-#define CPL_SERV_H_INCLUDED
-
-/* ==================================================================== */
-/*	Standard include files.						*/
-/* ==================================================================== */
-
-#include "geo_config.h"
-#include <stdio.h>
-
-#include <math.h>
-
-#ifdef HAVE_STRING_H
-#  include <string.h>
-#endif
-#if defined(HAVE_STRINGS_H) && !defined(HAVE_STRING_H)
-#  include <strings.h>
-#endif
-#ifdef HAVE_STDLIB_H
-#  include <stdlib.h>
-#endif
-
-/**********************************************************************
- * Do we want to build as a DLL on windows?
- **********************************************************************/
-#if !defined(CPL_DLL)
-#  if defined(_WIN32) && defined(BUILD_AS_DLL)
-#    define CPL_DLL     __declspec(dllexport)
-#  else
-#    define CPL_DLL
-#  endif
-#endif
-
-/* ==================================================================== */
-/*      Other standard services.                                        */
-/* ==================================================================== */
-#ifdef __cplusplus
-#  define CPL_C_START		extern "C" {
-#  define CPL_C_END		}
-#else
-#  define CPL_C_START
-#  define CPL_C_END
-#endif
-
-#ifndef NULL
-#  define NULL	0
-#endif
-
-#ifndef FALSE
-#  define FALSE	0
-#endif
-
-#ifndef TRUE
-#  define TRUE	1
-#endif
-
-#ifndef MAX
-#  define MIN(a,b)      ((a<b) ? a : b)
-#  define MAX(a,b)      ((a>b) ? a : b)
-#endif
-
-#ifndef NULL
-#define NULL 0
-#endif
-
-#ifndef ABS
-#  define ABS(x)        ((x<0) ? (-1*(x)) : x)
-#endif
-
-#ifndef EQUAL
-#if defined(_WIN32) && !defined(__CYGWIN__)
-#  define EQUALN(a,b,n)           (strnicmp(a,b,n)==0)
-#  define EQUAL(a,b)              (stricmp(a,b)==0)
-#else
-#  define EQUALN(a,b,n)           (strncasecmp(a,b,n)==0)
-#  define EQUAL(a,b)              (strcasecmp(a,b)==0)
-#endif
-#endif
-
-/* ==================================================================== */
-/*      VSI Services (just map directly onto Standard C services.       */
-/* ==================================================================== */
-
-#define VSIFOpen	fopen
-#define VSIFClose	fclose
-#define VSIFEof		feof
-#define VSIFPrintf	fprintf
-#define VSIFPuts	fputs
-#define VSIFPutc	fputc
-#define VSIFGets	fgets
-#define VSIRewind	rewind
-#define VSIFSeek        fseek
-#define VSIFTell        ftell
-#define VSIFRead        fread
-
-#ifndef notdef
-#define VSICalloc(x,y)	_GTIFcalloc(x*y)
-#define VSIMalloc	_GTIFcalloc
-#define VSIFree	        _GTIFFree
-#define VSIRealloc      _GTIFrealloc
-#else
-#define VSICalloc(x,y)	(((char *) _GTIFcalloc(x*y+4)) + 4)
-#define VSIMalloc(x)	(((char *) _GTIFcalloc((x)+4)) + 4)
-#define VSIFree(x)      _GTIFFree(((char *) (x)) - 4)
-#define VSIRealloc(p,n) (((char *) _GTIFrealloc(((char *)p)-4,(n)+4)) + 4)
-#endif
-
-/* -------------------------------------------------------------------- */
-/*      Safe malloc() API.  Thin cover over VSI functions with fatal    */
-/*      error reporting if memory allocation fails.                     */
-/* -------------------------------------------------------------------- */
-CPL_C_START
-
-#define CPLMalloc  gtCPLMalloc
-#define CPLCalloc  gtCPLCalloc
-#define CPLRealloc gtCPLRealloc
-#define CPLStrdup  gtCPLStrdup
-
-void  *CPLMalloc( int );
-void  *CPLCalloc( int, int );
-void  *CPLRealloc( void *, int );
-char  *CPLStrdup( const char * );
-
-#define CPLFree(x)	{ if( x != NULL ) VSIFree(x); }
-
-/* -------------------------------------------------------------------- */
-/*      Read a line from a text file, and strip of CR/LF.               */
-/* -------------------------------------------------------------------- */
-
-#define CPLReadLine gtCPLReadLine
-
-const char *CPLReadLine( FILE * );
-
-/*=====================================================================
-                   Error handling functions (cpl_error.c)
- =====================================================================*/
-
-typedef enum
-{
-    CE_None = 0,
-    CE_Log = 1,
-    CE_Warning = 2,
-    CE_Failure = 3,
-    CE_Fatal = 4
-} CPLErr;
-
-#define CPLError      gtCPLError
-#define CPLErrorReset gtCPLErrorReset
-#define CPLGetLastErrorNo gtCPLGetLastErrorNo
-#define CPLGetLastErrorMsg gtCPLGetLastErrorMsg
-#define CPLSetErrorHandler gtCPLSetErrorHandler
-#define _CPLAssert    gt_CPLAssert
-
-void  CPLError(CPLErr eErrClass, int err_no, const char *fmt, ...);
-void  CPLErrorReset();
-int   CPLGetLastErrorNo();
-const char  * CPLGetLastErrorMsg();
-void  CPLSetErrorHandler(void(*pfnErrorHandler)(CPLErr,int,
-                                                       const char *));
-void  _CPLAssert( const char *, const char *, int );
-
-#ifdef DEBUG
-#  define CPLAssert(expr)  ((expr) ? (void)(0) : _CPLAssert(#expr,__FILE__,__LINE__))
-#else
-#  define CPLAssert(expr)
-#endif
-
-CPL_C_END
-
-/* ==================================================================== */
-/*      Well known error codes.                                         */
-/* ==================================================================== */
-
-#define CPLE_AppDefined			1
-#define CPLE_OutOfMemory		2
-#define CPLE_FileIO			3
-#define CPLE_OpenFailed			4
-#define CPLE_IllegalArg			5
-#define CPLE_NotSupported		6
-#define CPLE_AssertionFailed		7
-#define CPLE_NoWriteAccess		8
-
-/*=====================================================================
-                   Stringlist functions (strlist.c)
- =====================================================================*/
-CPL_C_START
-
-#define CSLAddString gtCSLAddString
-#define CSLCount     gtCSLCount
-#define CSLGetField  gtCSLGetField
-#define CSLDestroy   gtCSLDestroy
-#define CSLDuplicate gtCSLDuplicate
-#define CSLTokenizeString gtCSLTokenizeString
-#define CSLTokenizeStringComplex gtCSLTokenizeStringComplex
-
-char    **CSLAddString(char **papszStrList, const char *pszNewString);
-int     CSLCount(char **papszStrList);
-const char *CSLGetField( char **, int );
-void    CSLDestroy(char **papszStrList);
-char    **CSLDuplicate(char **papszStrList);
-
-char    **CSLTokenizeString(const char *pszString );
-char    **CSLTokenizeStringComplex(const char *pszString,
-                                   const char *pszDelimiter,
-                                   int bHonourStrings, int bAllowEmptyTokens );
-
-/* ==================================================================== */
-/*      .csv file related functions (from cpl_csv.c)                    */
-/* ==================================================================== */
-
-typedef enum {
-    CC_ExactString,
-    CC_ApproxString,
-    CC_Integer
-} CSVCompareCriteria;
-
-#define CSVFilename gtCSVFilename
-#define CSVReadParseLine gtCSVReadParseLine
-#define CSVScanLines gtCSVScanLines
-#define CSVScanFile gtCSVScanFile
-#define CSVScanFileByName gtCSVScanFileByName
-#define CSVGetFieldId gtCSVGetFieldId
-#define CSVDeaccess gtCSVDeaccess
-#define CSVGetField gtCSVGetField
-#define SetCSVFilenameHook gtSetCSVFilenameHook
-#define CSVGetFileFieldId gtCSVGetFileFieldId
-
-const char  *CSVFilename( const char * );
-
-char  **CSVReadParseLine( FILE * );
-char  **CSVScanLines( FILE *, int, const char *, CSVCompareCriteria );
-char  **CSVScanFile( const char *, int, const char *,
-                            CSVCompareCriteria );
-char  **CSVScanFileByName( const char *, const char *, const char *,
-                                  CSVCompareCriteria );
-int  CSVGetFieldId( FILE *, const char * );
-int  CSVGetFileFieldId( const char *, const char * );
-
-void  CSVDeaccess( const char * );
-
-const char  *CSVGetField( const char *, const char *, const char *,
-                                 CSVCompareCriteria, const char * );
-
-void CPL_DLL SetCSVFilenameHook( const char *(*)(const char *) );
-
-CPL_C_END
-
-#endif /* ndef CPL_SERV_H_INCLUDED */
diff --git a/src/tiff/csv/README b/src/tiff/csv/README
deleted file mode 100644
index 6b44468..0000000
--- a/src/tiff/csv/README
+++ /dev/null
@@ -1,38 +0,0 @@
-	EPSG Tables
-	===========
-
-The .csv files in this directory are an extract of tables from the EPSG
-projection database in CSV (comma separated value) format.  These same
-files come with the source distribution in the libgeotiff/csv directory.
-Information and source to extract these tables from the EPSG database
-can be found in the source distribution libgeotiff/csv/odbc2csv directory.
-
-Detailed information on the EPSG database can be found at:
-
-  http://www.petroconsultants.com/products/geodetic.htm
-
-
-The tables containing the basic data are: 
-
- compd_cs:	compound coordinate system data. 
- ellipsoid:	ellipsoid data. 
- ellips_alias:	ellipsoid alias data. 
- geod_datum:	geodetic datum data. 
- gdatum_alias:	geodetic datum alias data. 
- geod_trf:	geodetic transformation data. 
- horiz_cs:	geographic and projected coordinate system data (GCS/PCS codes)
- p_meridian:	prime meridian data. 
- trf_method:	transformation method and parameter data. 
- trf_nonpolynomial: projection and 3- or 7-parameter geodetic
-                    transformation parameter values. 
- trf_path:	geodetic transformation path data. 
- uom_angle:	angle unit data. 
- uom_an_alias:	angle unit alias data: currently not populated. 
- uom_length:	length unit data. 
- uom_le_alias:	length unit alias data. 
- uom_scale:	scale unit data. 
- uom_sc_alias:	scale unit alias data: currently not populated. 
- vert_datum:	vertical datum data. 
- vert_cs:	vertical coordinate system data. 
- vert_offset:	vertical coordinate system transformation data.
-
diff --git a/src/tiff/csv/alias.csv b/src/tiff/csv/alias.csv
deleted file mode 100644
index 9645d35..0000000
--- a/src/tiff/csv/alias.csv
+++ /dev/null
@@ -1,2001 +0,0 @@
-"ALIAS CODE","OBJECT_TABLE_NAME","OBJECT_CODE","NAMING_SYSTEM_CODE","ALIAS","REMARKS"
-1,Coordinate_Operation,1274,7300,LKS94(ETRF89) to WGS 84 (1),
-4,Datum,6258,7300,ETRF89,
-5,Ellipsoid,7013,7300,Modified Clarke 1880 (South Africa),The Clarke 1880 (Arc) figure is one of several modifications to the original definition.  The name Clarke Modified is usually taken to be the RGS modification.  But in southern Africa it is usually taken to be the Arc or Cape modification.
-6,Coordinate_Operation,8570,7300,ED50 to EUREF89 (2),
-7,Unit of Measure,9001,7300,meter,
-8,Unit of Measure,9036,7300,kilometer,Spelling used in US
-9,Coordinate Reference System,21100,7300,Genuk / NEIEZ,
-10,Coordinate_Operation,1036,7301,OSTN97,
-11,Coordinate_Operation,1123,7301,Genuk to WGS 84 (1),
-12,Coordinate_Operation,1149,7301,ETRF89 to WGS 84 (1),
-13,Coordinate_Operation,1273,7301,HD72 to ETRF89 (1),
-14,Coordinate_Operation,1309,7301,DHDN to ETRF89 (1),
-15,Coordinate_Operation,1310,7301,Pulkovo 1942 to ETRF89 (1),
-16,Coordinate_Operation,1311,7301,ED50 to WGS 84 (18),
-17,Coordinate_Operation,1331,7301,EST92 to ETRF89 (1),
-19,Coordinate_Operation,1513,7301,Final Datum 1958 to WGS 84 (1),
-20,Coordinate_Operation,1571,7301,Amersfoort to ETRF89 (1),
-21,Coordinate_Operation,1584,7301,Levant to WGS 72BE (1),
-22,Coordinate_Operation,1585,7301,Levant to WGS 84 (2),
-23,Coordinate_Operation,1586,7301,Levant to WGS 84 (3),
-24,Coordinate_Operation,1587,7301,Levant to WGS 84 (4),
-26,Coordinate_Operation,1589,7301,ED50 to ETRF89 (3),
-28,Coordinate_Operation,1611,7301,IRENET95 to ETRF89 (1),
-29,Coordinate Reference System,2140,7301,NAD83(CSRS98) / SCoPQ zone 3,
-30,Coordinate Reference System,2141,7301,NAD83(CSRS98) / SCoPQ zone 4,
-31,Coordinate Reference System,2142,7301,NAD83(CSRS98) / SCoPQ zone 5,
-32,Coordinate Reference System,2143,7301,NAD83(CSRS98) / SCoPQ zone 6,
-33,Coordinate Reference System,2144,7301,NAD83(CSRS98) / SCoPQ zone 7,
-34,Coordinate Reference System,2145,7301,NAD83(CSRS98) / SCoPQ zone 8,
-35,Coordinate Reference System,2146,7301,NAD83(CSRS98) / SCoPQ zone 9,
-36,Coordinate Reference System,2147,7301,NAD83(CSRS98) / SCoPQ zone 10,
-37,Coordinate Reference System,2159,7301,Sierra Leone 1924 / Peninsular Grid,
-38,Coordinate Reference System,2291,7301,NAD83 / PEI Stereo,
-39,Coordinate Reference System,3200,7301,Final Datum 1958 / Iraq zone,
-40,Coordinate Reference System,4132,7301,Final Datum 1958 (Iran),
-41,Coordinate Reference System,4140,7301,NAD83(CSRS),
-42,Coordinate Reference System,4172,7301,National Geodetic System [Argentina],see http://www.igm.gov.ar/posgar.html
-43,Coordinate Reference System,4211,7301,Genuk,
-44,Datum,4218,7301,Bogota,
-45,Coordinate Reference System,4227,7301,Levant,
-46,Coordinate Reference System,4258,7301,ETRF89,
-47,Coordinate Reference System,4272,7301,GD49,
-48,Coordinate Reference System,4813,7301,Genuk (Jakarta),
-49,Datum,5104,7301,Huang Hai 1956,
-50,Datum,6120,7301,Old Greek,"Adjective ""Old"" applied since introduction of GGRS87 (code 6121)"
-51,Datum,6125,7301,Samboja P2 exc T9,
-52,Datum,6160,7301,Quini-Huao,
-53,Datum,6174,7301,Sierra Leone Peninsular 1924,
-54,Datum,6211,7301,Genuk,
-55,Datum,6218,7301,Bogota,
-56,Datum,6222,7301,South Africa,
-57,Datum,6227,7301,Levant,
-58,Datum,6258,7301,European Terrestrial Reference Frame 1989,
-59,Datum,6269,7301,NAD83 (1986),
-60,Datum,6272,7301,GD49,
-61,Datum,6308,7301,Rikets koordinatsystem 1938,
-62,Ellipsoid,7012,7301,Clarke Modified 1880,The Clarke 1880 (RGS) figure is one of several modifications to the original definition.  The name Clarke Modified is usually taken to be the RGS modification.
-63,Ellipsoid,7013,7301,Clarke 1880 (Cape),
-64,Ellipsoid,7019,7301,International 1979,Adopted by IUGG 1979 Canberra as the Geodetic Reference Spheroid of 1980 (GRS 1980).
-65,Ellipsoid,7022,7301,Hayford 1909,Described as a=6378388 m. and b=6356909 m. from which 1/f derived to be 296.95926...   The figure was adopted as the International ellipsoid in 1924 but with 1/f taken as 297 exactly from which b is derved as 6356911.946 m.
-66,Ellipsoid,7029,7301,McCaw 1924,
-67,Ellipsoid,7030,7301,WGS84,
-68,Ellipsoid,7036,7301,International 1967,More usually known as GRS 1967 to avoid confusion with the International 1924 figure.
-69,Ellipsoid,7043,7301,NWL 10D,Used by Transit Broadcast Ephemeris before 1989. Also referred to as WGS72 spheroid.
-70,Coordinate_Operation,8568,7301,Levant to WGS 84 (1),
-71,Coordinate_Operation,8570,7301,ED50 to ETRF89 (2),
-72,Coordinate_Operation Parameter,8602,7301,Longitude rotation,
-73,Prime Meridian,8913,7301,Kristiania,
-74,Unit of Measure,9001,7301,International metre,
-75,Unit of Measure,9002,7301,international foot,
-76,Unit of Measure,9003,7301,American foot,
-77,Unit of Measure,9005,7301,South African geodetic foot,Not to be confused with the Cape foot.
-78,Unit of Measure,9030,7301,International nautical mile,
-79,Unit of Measure,9039,7301,link (Clarke's ratio),
-80,Unit of Measure,9040,7301,yard,
-81,Unit of Measure,9041,7301,foot,
-82,Unit of Measure,9042,7301,chain,
-83,Unit of Measure,9043,7301,link,
-84,Unit of Measure,9050,7301,yard,
-85,Unit of Measure,9051,7301,foot,
-86,Unit of Measure,9052,7301,chain,
-87,Unit of Measure,9053,7301,link,
-88,Unit of Measure,9060,7301,yard,
-89,Unit of Measure,9061,7301,foot,
-90,Unit of Measure,9062,7301,chain,
-91,Unit of Measure,9063,7301,link,
-92,Unit of Measure,9070,7301,foot,
-93,Unit of Measure,9080,7301,Indian geodetic foot,
-94,Unit of Measure,9081,7301,Indian geodetic foot,
-95,Unit of Measure,9084,7301,yard,= 3 Indian feet.
-96,Unit of Measure,9085,7301,yard,= 3 Indian feet.
-97,Unit of Measure,9094,7301,foot,
-98,Unit of Measure,9114,7301,mil,"Alias also applies to other variations of a mil, especially mil_6300 and mil_6000."
-100,Coordinate_Operation,17001,7301,Ghana TM,
-101,Coordinate_Operation,17901,7301,Mount Eden Circuit 1949,
-102,Coordinate_Operation,17902,7301,Bay of Plenty Circuit 1949,
-103,Coordinate_Operation,17903,7301,Poverty Bay Circuit 1949,
-104,Coordinate_Operation,17904,7301,Hawkes Bay Circuit 1949,
-105,Coordinate_Operation,17905,7301,Taranaki Circuit 1949,
-106,Coordinate_Operation,17906,7301,Tuhirangi Circuit 1949,
-107,Coordinate_Operation,17907,7301,Wanganui Circuit 1949,
-108,Coordinate_Operation,17908,7301,Wairarapa Circuit 1949,
-109,Coordinate_Operation,17909,7301,Wellington Circuit 1949,
-110,Coordinate_Operation,17910,7301,Collingwood Circuit 1949,
-111,Coordinate_Operation,17911,7301,Nelson Circuit 1949,
-112,Coordinate_Operation,17912,7301,Karamea Circuit 1949,
-113,Coordinate_Operation,17913,7301,Buller Circuit 1949,
-114,Coordinate_Operation,17914,7301,Grey Circuit 1949,
-115,Coordinate_Operation,17915,7301,Amuri Circuit 1949,
-116,Coordinate_Operation,17916,7301,Marlborough Circuit 1949,
-117,Coordinate_Operation,17917,7301,Hokitika Circuit 1949,
-118,Coordinate_Operation,17918,7301,Okarito Circuit 1949,
-119,Coordinate_Operation,17919,7301,Jacksons Bay Circuit 1949,
-120,Coordinate_Operation,17920,7301,Mount Pleasant Circuit 1949,
-121,Coordinate_Operation,17921,7301,Gawler Circuit 1949,
-122,Coordinate_Operation,17922,7301,Timaru Circuit 1949,
-123,Coordinate_Operation,17923,7301,Lindis Peak Circuit 1949,
-124,Coordinate_Operation,17924,7301,Mount Nicholas Circuit 1949,
-125,Coordinate_Operation,17925,7301,Mount York Circuit 1949,
-126,Coordinate_Operation,17926,7301,Observation Point Circuit 1949,
-127,Coordinate_Operation,17927,7301,North Taieri Circuit 1949,
-128,Coordinate_Operation,17928,7301,Bluff Circuit 1949,
-129,Coordinate_Operation,19906,7301,IOEPC Lambert,Sometimes seen defined with 2 standard parallels.
-130,Coordinate_Operation,19959,7301,Gold Coast Grid,
-131,Coordinate_Operation,19963,7301,Sierra Leone Peninsula Grid,
-132,Coordinate Reference System,21100,7301,Genuk (Jakarta) / NEIEZ,
-133,Coordinate Reference System,21148,7301,Genuk / UTM zone 48S,
-134,Coordinate Reference System,21150,7301,Genuk / UTM zone 50S,
-135,Coordinate Reference System,22700,7301,Levant / Levant Zone,
-136,Coordinate Reference System,22770,7301,Levant / Syria Lambert,
-137,Coordinate Reference System,22780,7301,Levant / Levant Stereographic,
-138,Coordinate Reference System,25828,7301,ETRF89 / UTM zone 28N,
-139,Coordinate Reference System,25829,7301,ETRF89 / UTM zone 29N,
-140,Coordinate Reference System,25830,7301,ETRF89 / UTM zone 30N,
-141,Coordinate Reference System,25831,7301,ETRF89 / UTM zone 31N,
-142,Coordinate Reference System,25832,7301,ETRF89 / UTM zone 32N,
-143,Coordinate Reference System,25833,7301,ETRF89 / UTM zone 33N,
-144,Coordinate Reference System,25834,7301,ETRF89 / UTM zone 34N,
-145,Coordinate Reference System,25835,7301,ETRF89 / UTM zone 35N,
-146,Coordinate Reference System,25836,7301,ETRF89 / UTM zone 36N,
-147,Coordinate Reference System,25837,7301,ETRF89 / UTM zone 37N,
-148,Coordinate Reference System,25838,7301,ETRF89 / UTM zone 38N,
-149,Coordinate Reference System,25884,7301,ETRF89 / TM Baltic93,
-150,Coordinate Reference System,27258,7301,GD49 / UTM zone 58,
-151,Coordinate Reference System,27259,7301,GD49 / UTM zone 59,
-152,Coordinate Reference System,27260,7301,GD49 / UTM zone 60,
-153,Coordinate Reference System,27291,7301,GD49 / North Island Grid,
-154,Coordinate Reference System,27292,7301,GD49 / South Island Grid,
-155,Coordinate Reference System,30592,7301,Nord Sahara 1959/Voirol Unifie S Algerie,
-156,Coordinate Reference System,30791,7301,Nord Sahara 1959 / Lambert Nord Voirol Unifie 1960,Voirol Unifie 1960 is NOT a geodetic datum nor GeogCRS.  It is two Lambert projected coordinate reference systems based on Nord Sahara 1959 Datum. See also code 30792.
-157,Coordinate Reference System,30792,7301,Nord Sahara 1959 / Lambert Sud Voirol Unifie 1960,Voirol Unifie 1960 is NOT a geodetic datum nor GeogCRS.  It is two Lambert projected coordinate reference systems based on Nord Sahara 1959 Datum. See also code 30791.
-158,Coordinate Reference System,31170,7301,Zanderij / Surinam Old TM,Old country name spelling.
-159,Coordinate Reference System,31171,7301,Zanderij / Surinam TM,Old spelling for country name.
-160,Coordinate Reference System,31300,7301,Belge Lambert 72,
-161,Coordinate_Operation,1026,7302,Madrid to ED50 (1),
-162,Coordinate_Operation,1027,7302,Madrid to ED50 (2),
-163,Coordinate_Operation,1028,7302,Madrid to ED50 (3),
-164,Coordinate_Operation,1029,7302,RD New to ED50/UTM31 (1),
-165,Coordinate_Operation,1030,7302,ED50/UTM31 to RD New (1),
-166,Coordinate_Operation,1031,7302,RD New to ED50/UTM31 (2),
-167,Coordinate_Operation,1032,7302,ED50/UTM31 to RD New (2),
-168,Coordinate_Operation,1274,7302,CS42 to LKS94 (1),
-169,Coordinate_Operation,1283,7302,LKS94 to WGS 84 (1),
-170,Coordinate Reference System,2000,7302,Anguilla 1957 / BWI Grid,
-171,Coordinate Reference System,2001,7302,Antigua 1943 / BWI Grid,
-172,Coordinate Reference System,2002,7302,Dominica 1945 / BWI Grid,
-173,Coordinate Reference System,2003,7302,Grenada 1953 / BWI Grid,
-174,Coordinate Reference System,2004,7302,Montserrat 58 / BWI Grid,
-175,Coordinate Reference System,2005,7302,St Kitts 1955 / BWI Grid,
-176,Coordinate Reference System,2006,7302,St Lucia 1955 / BWI Grid,
-177,Coordinate Reference System,2007,7302,St Vincent 45 / BWI Grid,
-178,Coordinate Reference System,2008,7302,CGQ77 / SCoPQ zone 2,
-179,Coordinate Reference System,2009,7302,CGQ77 / SCoPQ zone 3,
-180,Coordinate Reference System,2010,7302,CGQ77 / SCoPQ zone 4,
-181,Coordinate Reference System,2011,7302,CGQ77 / SCoPQ zone 5,
-182,Coordinate Reference System,2012,7302,CGQ77 / SCoPQ zone 6,
-183,Coordinate Reference System,2013,7302,CGQ77 / SCoPQ zone 7,
-184,Coordinate Reference System,2014,7302,CGQ77 / SCoPQ zone 8,
-185,Coordinate Reference System,2015,7302,CGQ77 / SCoPQ zone 9,
-186,Coordinate Reference System,2016,7302,CGQ77 / SCoPQ zone 10,
-187,Coordinate Reference System,2036,7302,NAD83(CSRS) / NB Stereo,
-188,Coordinate Reference System,2037,7302,NAD83(CSRS) / UTM 19N,
-189,Coordinate Reference System,2038,7302,NAD83(CSRS) / UTM 20N,
-190,Coordinate Reference System,2039,7302,Israeli TM Grid,
-191,Coordinate Reference System,2040,7302,Locodjo 65 / UTM 30N,
-192,Coordinate Reference System,2041,7302,Abidjan 87 / UTM 30N,
-193,Coordinate Reference System,2042,7302,Locodjo 65 / UTM 29N,
-194,Coordinate Reference System,2043,7302,Abidjan 87 / UTM 29N,
-195,Coordinate Reference System,2044,7302,Hanoi 72 / Gauss zone 18,
-196,Coordinate Reference System,2045,7302,Hanoi 72 / Gauss zone 19,
-197,Coordinate Reference System,2046,7302,New S African CS zone 15,
-198,Coordinate Reference System,2047,7302,New S African CS zone 17,
-199,Coordinate Reference System,2048,7302,New S African CS zone 19,
-200,Coordinate Reference System,2049,7302,New S African CS zone 21,
-201,Coordinate Reference System,2050,7302,New S African CS zone 23,
-202,Coordinate Reference System,2051,7302,New S African CS zone 25,
-203,Coordinate Reference System,2052,7302,New S African CS zone 27,
-204,Coordinate Reference System,2053,7302,New S African CS zone 29,
-205,Coordinate Reference System,2054,7302,New S African CS zone 31,
-206,Coordinate Reference System,2055,7302,New S African CS zone 33,
-207,Coordinate Reference System,2056,7302,LV95,
-208,Coordinate Reference System,2066,7302,Mount Dillon / Tobago,
-209,Coordinate Reference System,2067,7302,Naparima 1955 / UTM 20N,
-210,Coordinate Reference System,2081,7302,Chos Malal / Argentina 2,
-211,Coordinate Reference System,2082,7302,Pampa d Castillo / Arg 2,
-212,Coordinate Reference System,2083,7302,Hito XVIII / Argentina 2,
-213,Coordinate Reference System,2084,7302,Hito XVIII / UTM 19S,
-214,Coordinate Reference System,2089,7302,Yemen NGN96 / UTM 38N,
-215,Coordinate Reference System,2090,7302,Yemen NGN96 / UTM 39N,
-216,Coordinate Reference System,2091,7302,S Yemen / Gauss zone 8,
-217,Coordinate Reference System,2092,7302,S Yemen / Gauss zone 9,
-218,Coordinate Reference System,2096,7302,Korean 1985 / East Belt,
-219,Coordinate Reference System,2097,7302,Korean 1985 / Cen. Belt,
-220,Coordinate Reference System,2098,7302,Korean 1985 / West Belt,
-221,Coordinate Reference System,2099,7302,Qatar Plane CS,
-222,Coordinate Reference System,2136,7301,Accra / Gold Coast Grid,
-223,Coordinate Reference System,2137,7301,Accra / Ghana TM,
-224,Coordinate Reference System,2157,7302,IRENET95 / ITM,
-225,Coordinate Reference System,2200,7302,ATS77 / NB Stereographic,
-226,Coordinate Reference System,2290,7302,ATS77 / PEI Stereo,
-227,Coordinate Reference System,2291,7302,NAD83(CSRS) / PEI Stereo,
-228,Coordinate Reference System,2294,7302,ATS77 / MTM NS zone 4,
-229,Coordinate Reference System,2295,7302,ATS77 / MTM NS zone 5,
-230,Coordinate Reference System,2393,7302,KKJ / Finland zone 3,
-231,Coordinate Reference System,2600,7302,LKS94,
-232,Coordinate Reference System,3561,7302,Old Hawaiian / SP zone 1,
-233,Coordinate Reference System,3562,7302,Old Hawaiian / SP zone 2,
-234,Coordinate Reference System,3563,7302,Old Hawaiian / SP zone 3,
-235,Coordinate Reference System,3564,7302,Old Hawaiian / SP zone 4,
-236,Coordinate Reference System,3565,7302,Old Hawaiian / SP zone 5,
-237,Coordinate Reference System,3991,7302,Puerto Rico SPCS 27,
-238,Coordinate Reference System,4134,7302,PSD93,
-239,Coordinate Reference System,4215,7302,BD 50,
-240,Coordinate Reference System,4268,7302,NAD Michigan,
-241,Coordinate Reference System,4313,7302,BD 72,
-242,Coordinate Reference System,4609,7302,CGQ77,
-243,Coordinate Reference System,4809,7302,BD 50 (Brussels),
-244,Datum,5100,7302,msl,
-245,Datum,5101,7302,ODN,
-246,Datum,5102,7302,NGVD29,
-247,Datum,5103,7302,NAVD88,
-248,Datum,5104,7302,Yellow Sea,
-249,Datum,5105,7302,Baltic,
-250,Datum,5106,7302,Caspian,
-251,Datum,5107,7302,NGF,
-252,Datum,5109,7302,NAP,
-253,Datum,5111,7302,AHD,
-254,Datum,5112,7302,AHD (Tasmania),
-255,Datum,5114,7302,CVD28,
-256,Datum,5115,7302,Piraeus86,
-257,Datum,5116,7302,N60,
-258,Datum,5117,7302,RH70,
-259,Datum,5118,7302,NGF - Lallemand,
-260,Datum,5119,7302,NGF - IGN69,
-261,Datum,5120,7302,NGF - IGN78,
-262,Datum,5122,7302,JapanVD,
-263,Datum,5123,7302,PHD93,
-264,Datum,5127,7302,LN02,
-265,Datum,5128,7302,LHN95,
-266,Datum,5129,7302,EVRF2000,
-267,Coordinate Reference System,5701,7302,ODN,
-268,Coordinate Reference System,5702,7302,NGVD29,
-269,Coordinate Reference System,5703,7302,NAVD88,
-270,Coordinate Reference System,5709,7302,NAP,
-271,Coordinate Reference System,5711,7302,AHD,
-272,Coordinate Reference System,5712,7302,AHD (Tasmania),
-273,Coordinate Reference System,5713,7302,CVD28,
-274,Coordinate Reference System,5714,7302,msl height,
-275,Coordinate Reference System,5715,7302,msl depth,
-276,Coordinate Reference System,5723,7302,Japan Levelling Datum,
-277,Coordinate Reference System,5724,7302,PHD93,
-278,Coordinate Reference System,5728,7302,LN02,
-279,Coordinate Reference System,5729,7302,LHN95,
-280,Coordinate Reference System,5730,7302,EVRS2000,
-281,Datum,6121,7302,GGRS87,
-282,Datum,6122,7302,ATS77,
-283,Datum,6123,7302,KKJ,
-284,Datum,6124,7302,RT90,
-285,Datum,6126,7302,LKS94 (ETRS89),
-286,Datum,6130,7302,Moznet,
-287,Datum,6132,7302,FD58,
-288,Datum,6133,7302,EST92,
-289,Datum,6134,7302,PSD93,
-290,Datum,6140,7302,NAD83(CSRS98),
-291,Datum,6151,7302,CHTRF95,
-292,Datum,6152,7302,NAD83(HARN),
-293,Datum,6154,7302,ED50(ED77),
-294,Datum,6156,7302,S-JTSK,
-295,Datum,6159,7302,ELD79,
-296,Datum,6163,7302,YNGN96,
-297,Datum,6170,7302,SIRGAS,
-298,Datum,6171,7302,RGF93,
-299,Datum,6172,7302,POSGAR,
-300,Datum,6202,7302,AGD66,
-301,Datum,6203,7302,AGD84,
-302,Datum,6204,7302,Ain el Abd,
-303,Datum,6215,7302,Belge 1950,
-304,Datum,6230,7302,ED50,
-305,Datum,6231,7302,ED87,
-306,Datum,6237,7302,HD72,
-307,Datum,6238,7302,ID74,
-308,Datum,6242,7302,JAD69,
-309,Datum,6246,7302,KOC,
-310,Datum,6248,7302,PSAD56,
-311,Datum,6258,7302,ETRS89,
-312,Datum,6267,7302,NAD27,
-313,Datum,6269,7302,NAD83,
-314,Datum,6272,7302,NZGD49,
-315,Datum,6275,7302,NTF,
-316,Datum,6278,7302,OSGB70,
-317,Datum,6279,7302,OS(SN)80,
-318,Datum,6280,7302,Padang,
-319,Datum,6283,7302,GDA94,
-320,Datum,6291,7302,SAD69,
-321,Datum,6297,7302,Tananarive,
-322,Datum,6303,7302,TC(1948),
-323,Datum,6305,7302,Voirol Unifie,
-324,Datum,6308,7302,RT38,
-325,Datum,6312,7302,MGI,
-326,Datum,6313,7302,Belge 1972,
-327,Datum,6314,7302,DHDN,
-328,Datum,6318,7302,NGN,
-329,Datum,6319,7302,KUDAMS,
-330,Datum,6322,7302,WGS 72,
-331,Datum,6324,7302,WGS 72BE,
-332,Datum,6326,7302,WGS 84,
-333,Datum,6608,7302,NAD27(76),
-334,Datum,6609,7302,CGQ77,
-335,Datum,6901,7302,ATF (Paris),
-336,Datum,6902,7302,NDG (Paris),
-337,Ellipsoid,7003,7302,ANS,
-338,Coordinate Reference System,7401,7302,NTF / France II + Lalle,
-339,Coordinate Reference System,7402,7302,NTF / France II + IGN69,
-340,Coordinate Reference System,7403,7302,NTF / France III + IGN69,
-341,Coordinate Reference System,7405,7302,GB National Grid + ODN,
-342,Coordinate Reference System,7407,7302,NAD27 / TX_N + NGVD29,
-343,Coordinate_Operation Parameter,8663,7302,k,
-344,Unit of Measure,9001,7302,m,
-345,Unit of Measure,9002,7302,ft,
-346,Unit of Measure,9003,7302,ftUS,
-347,Unit of Measure,9005,7302,ftCla,
-348,Unit of Measure,9014,7302,f,
-349,Unit of Measure,9030,7302,NM,
-350,Unit of Measure,9031,7302,GLM,
-351,Unit of Measure,9033,7302,chUS,
-352,Unit of Measure,9034,7302,lkUS,
-353,Unit of Measure,9035,7302,miUS,
-354,Unit of Measure,9036,7302,km,
-355,Unit of Measure,9037,7302,ydCla,
-356,Unit of Measure,9038,7302,chCla,
-357,Unit of Measure,9039,7302,lkCla,
-358,Unit of Measure,9040,7302,ydSe,
-359,Unit of Measure,9041,7302,ftSe,
-360,Unit of Measure,9042,7302,chSe,
-361,Unit of Measure,9043,7302,lkSe,
-362,Unit of Measure,9050,7302,ydBnA,
-363,Unit of Measure,9051,7302,ftBnA,
-364,Unit of Measure,9052,7302,chBnA,
-365,Unit of Measure,9053,7302,lkBnA,
-366,Unit of Measure,9060,7302,ydBnB,
-367,Unit of Measure,9061,7302,ftBnB,
-368,Unit of Measure,9062,7302,chBnB,
-369,Unit of Measure,9063,7302,lkBnB,
-370,Unit of Measure,9070,7302,ftBr(65),
-371,Unit of Measure,9080,7302,ftInd,
-372,Unit of Measure,9081,7302,ftInd(37),
-373,Unit of Measure,9082,7302,ftInd(62),
-374,Unit of Measure,9083,7302,ftInd(75),
-375,Unit of Measure,9084,7302,ydInd,
-376,Unit of Measure,9085,7302,ydInd(37),
-377,Unit of Measure,9086,7302,ydInd(62),
-378,Unit of Measure,9087,7302,ydInd(75),
-379,Unit of Measure,9093,7302,mi,
-380,Unit of Measure,9094,7302,ftGC,
-381,Unit of Measure,9101,7302,rad,
-382,Unit of Measure,9102,7302,deg,
-383,Unit of Measure,9103,7302,min,
-384,Unit of Measure,9104,7302,sec,
-385,Unit of Measure,9105,7302,gr,
-386,Unit of Measure,9106,7302,g,
-387,Unit of Measure,9107,7302,DMS,
-388,Unit of Measure,9108,7302,DMSH,
-389,Unit of Measure,9109,7302,�rad,
-390,Unit of Measure,9110,7302,DDD.MMSSsss,
-391,Unit of Measure,9111,7302,DDD.MMm,
-392,Unit of Measure,9112,7302,c,
-393,Unit of Measure,9113,7302,cc,
-394,Unit of Measure,9114,7302,mil,
-395,Unit of Measure,9202,7302,ppm,
-396,Unit of Measure,9204,7302,Bin330ftUS,
-397,Unit of Measure,9205,7302,Bin165ftUS,
-398,Unit of Measure,9206,7302,Bin82.5ftUS,
-399,Unit of Measure,9207,7302,Bin37.5m,
-400,Unit of Measure,9208,7302,Bin25m,
-401,Unit of Measure,9209,7302,Bin12.5m,
-402,Unit of Measure,9210,7302,Bin6.25m,
-403,Unit of Measure,9211,7302,Bin3.125m,
-404,Coordinate_Operation Method,9633,7302,OSTN,
-405,Coordinate_Operation Method,9824,7302,UTM,
-406,Coordinate_Operation,10101,7302,Alabama East,
-407,Coordinate_Operation,10102,7302,Alabama West,
-408,Coordinate_Operation,10131,7302,Alabama East,
-409,Coordinate_Operation,10132,7302,Alabama West,
-410,Coordinate_Operation,10201,7302,Arizona East,
-411,Coordinate_Operation,10202,7302,Arizona Central,
-412,Coordinate_Operation,10203,7302,Arizona West,
-413,Coordinate_Operation,10231,7302,Arizona East,
-414,Coordinate_Operation,10232,7302,Arizona Central,
-415,Coordinate_Operation,10233,7302,Arizona West,
-416,Coordinate_Operation,10301,7302,Arkansas North,
-417,Coordinate_Operation,10302,7302,Arkansas South,
-418,Coordinate_Operation Method,9809,7301,Roussilhe,
-419,Coordinate_Operation,10331,7302,Arkansas North,
-420,Coordinate_Operation,10332,7302,Arkansas South,
-421,Coordinate_Operation,10401,7302,California zone I,
-422,Coordinate_Operation,10402,7302,California zone II,
-423,Coordinate_Operation,10403,7302,California zone III,
-424,Coordinate_Operation,10404,7302,California zone IV,
-425,Coordinate_Operation,10405,7302,California zone V,
-426,Coordinate_Operation,10406,7302,California zone VI,
-427,Coordinate_Operation,10407,7302,California zone VII,
-428,Coordinate_Operation,10431,7302,California zone 1,
-429,Coordinate_Operation,10432,7302,California zone 2,
-430,Coordinate_Operation,10433,7302,California zone 3,
-431,Coordinate_Operation,10434,7302,California zone 4,
-432,Coordinate_Operation,10435,7302,California zone 5,
-433,Coordinate_Operation,10436,7302,California zone 6,
-434,Coordinate_Operation,10501,7302,Colorado North,
-435,Coordinate_Operation,10503,7302,Colorado South,
-436,Coordinate_Operation,10531,7302,Colorado North,
-437,Coordinate_Operation,10533,7302,Colorado South,
-438,Coordinate_Operation,10600,7302,Connecticut,
-439,Coordinate_Operation,10630,7302,Connecticut,
-440,Coordinate_Operation,10700,7302,Delaware,
-441,Coordinate_Operation,10730,7302,Delaware,
-442,Coordinate_Operation,10901,7302,Florida East,
-443,Coordinate_Operation,10902,7302,Florida West,
-444,Coordinate_Operation,10903,7302,Florida North,
-445,Coordinate_Operation,10931,7302,Florida East,
-446,Coordinate_Operation,10932,7302,Florida West,
-447,Coordinate_Operation,10933,7302,Florida North,
-448,Coordinate_Operation,11001,7302,Georgia East,
-449,Coordinate_Operation,11002,7302,Georgia West,
-450,Coordinate_Operation,11031,7302,Georgia East,
-451,Coordinate_Operation,11032,7302,Georgia West,
-452,Coordinate_Operation,11101,7302,Idaho East,
-453,Coordinate_Operation,11102,7302,Idaho Central,
-454,Coordinate_Operation,11103,7302,Idaho West,
-455,Coordinate_Operation,11131,7302,Idaho East,
-456,Coordinate_Operation,11132,7302,Idaho Central,
-457,Coordinate_Operation,11133,7302,Idaho West,
-458,Coordinate_Operation,11201,7302,Illinois East,
-459,Coordinate_Operation,11202,7302,Illinois West,
-460,Coordinate_Operation,11231,7302,Illinois East,
-461,Coordinate_Operation,11232,7302,Illinois West,
-462,Coordinate_Operation,11301,7302,Indiana East,
-463,Coordinate_Operation,11302,7302,Indiana West,
-464,Coordinate_Operation,11331,7302,Indiana East,
-465,Coordinate_Operation,11332,7302,Indiana West,
-466,Coordinate_Operation,11401,7302,Iowa North,
-467,Coordinate_Operation,11402,7302,Iowa South,
-468,Coordinate_Operation,11431,7302,Iowa North,
-469,Coordinate_Operation,11432,7302,Iowa South,
-470,Coordinate_Operation,11501,7302,Kansas North,
-471,Coordinate_Operation,11502,7302,Kansas South,
-472,Coordinate_Operation,11531,7302,Kansas North,
-473,Coordinate_Operation,11532,7302,Kansas South,
-474,Coordinate_Operation,11601,7302,Kentucky North,
-475,Coordinate_Operation,11602,7302,Kentucky South,
-476,Coordinate_Operation,11631,7302,Kentucky North,
-477,Coordinate_Operation,11632,7302,Kentucky South,
-478,Coordinate_Operation,11701,7302,Louisiana North,
-479,Coordinate_Operation,11702,7302,Louisiana South,
-480,Coordinate_Operation,11731,7302,Louisiana North,
-481,Coordinate_Operation,11732,7302,Louisiana South,
-482,Coordinate_Operation,11801,7302,Maine East,
-483,Coordinate_Operation,11802,7302,Maine West,
-484,Coordinate_Operation,11831,7302,Maine East,
-485,Coordinate_Operation,11832,7302,Maine West,
-486,Coordinate_Operation,11900,7302,Maryland,
-487,Coordinate_Operation,11930,7302,Maryland,
-488,Coordinate_Operation,12001,7302,Massachusetts Mainland,
-489,Coordinate_Operation,12002,7302,Massachusetts Island,
-490,Coordinate_Operation,12031,7302,Massachusetts Mainland,
-491,Coordinate_Operation,12032,7302,Massachusetts Island,
-492,Coordinate_Operation,12101,7302,Michigan East,
-493,Coordinate_Operation,12102,7302,Michigan Old Central,
-494,Coordinate_Operation,12111,7302,Michigan North,
-495,Coordinate_Operation,12112,7302,Michigan Central,
-496,Coordinate_Operation,12113,7302,Michigan South,
-497,Coordinate_Operation,12141,7302,Michigan North,
-498,Coordinate_Operation,12142,7302,Michigan Central,
-499,Coordinate_Operation,12143,7302,Michigan South,
-500,Coordinate_Operation,12201,7302,Minnesota North,
-501,Coordinate_Operation,12202,7302,Minnesota Central,
-502,Coordinate_Operation,12203,7302,Minnesota South,
-503,Coordinate_Operation,12231,7302,Minnesota North,
-504,Coordinate_Operation,12232,7302,Minnesota Central,
-505,Coordinate_Operation,12233,7302,Minnesota South,
-506,Coordinate_Operation,12301,7302,Mississippi East,
-507,Coordinate_Operation,12302,7302,Mississippi West,
-508,Coordinate_Operation,12331,7302,Mississippi East,
-509,Coordinate_Operation,12332,7302,Mississippi West,
-510,Coordinate_Operation,12401,7302,Missouri  East,
-511,Coordinate_Operation,12402,7302,Missouri Central,
-512,Coordinate_Operation,12403,7302,Missouri West,
-513,Coordinate_Operation,12431,7302,Missouri East,
-514,Coordinate_Operation,12432,7302,Missouri Central,
-515,Coordinate_Operation,12433,7302,Missouri West,
-516,Coordinate_Operation,12501,7302,Montana North,
-517,Coordinate_Operation,12502,7302,Montana Central,
-518,Coordinate_Operation,12503,7302,Montana South,
-519,Coordinate_Operation,12530,7302,Montana,
-520,Coordinate_Operation,12601,7302,Nebraska North,
-521,Coordinate_Operation,12602,7302,Nebraska South,
-522,Coordinate_Operation,12630,7302,Nebraska,
-523,Coordinate_Operation,12701,7302,Nevada  East,
-524,Coordinate_Operation,12702,7302,Nevada Central,
-525,Coordinate_Operation,12703,7302,Nevada West,
-526,Coordinate_Operation,12731,7302,Nevada East,
-527,Coordinate_Operation,12732,7302,Nevada Central,
-528,Coordinate_Operation,12733,7302,Nevada West,
-529,Coordinate_Operation,12800,7302,New Hampshire,
-530,Coordinate_Operation,12830,7302,New Hampshire,
-531,Coordinate_Operation,12900,7302,New Jersey,
-532,Coordinate_Operation,12930,7302,New Jersey,
-533,Coordinate_Operation,13001,7302,New Mexico East,
-534,Coordinate_Operation,13002,7302,New Mexico Central,
-535,Coordinate_Operation,13003,7302,New Mexico West,
-536,Coordinate_Operation,13031,7302,New Mexico East,
-537,Coordinate_Operation,13032,7302,New Mexico Central,
-538,Coordinate_Operation,13033,7302,New Mexico West,
-539,Coordinate_Operation,13101,7302,New York East,
-540,Coordinate_Operation,13102,7302,New York Central,
-541,Coordinate_Operation,13103,7302,New York  West,
-542,Coordinate_Operation,13104,7302,New York Long Island,
-543,Coordinate_Operation,13131,7302,New York East,
-544,Coordinate_Operation,13132,7302,New York Central,
-545,Coordinate_Operation,13133,7302,New York  West,
-546,Coordinate_Operation,13134,7302,New York Long Island,
-547,Coordinate_Operation,13200,7302,North Carolina,
-548,Coordinate_Operation,13230,7302,North Carolina,
-549,Coordinate_Operation,13301,7302,North Dakota North,
-550,Coordinate_Operation,13302,7302,North Dakota South,
-551,Coordinate_Operation,13331,7302,North Dakota North,
-552,Coordinate_Operation,13332,7302,North Dakota South,
-553,Coordinate_Operation,13401,7302,Ohio North,
-554,Coordinate_Operation,13402,7302,Ohio South,
-555,Coordinate_Operation,13431,7302,Ohio North,
-556,Coordinate_Operation,13432,7302,Ohio South,
-557,Coordinate_Operation,13501,7302,Oklahoma North,
-558,Coordinate_Operation,13502,7302,Oklahoma South,
-559,Coordinate_Operation,13531,7302,Oklahoma North,
-560,Coordinate_Operation,13532,7302,Oklahoma South,
-561,Coordinate_Operation,13601,7302,Oregon North,
-562,Coordinate_Operation,13602,7302,Oregon South,
-563,Coordinate_Operation,13631,7302,Oregon North,
-564,Coordinate_Operation,13632,7302,Oregon South,
-565,Coordinate_Operation,13701,7302,Pennsylvania North,
-566,Coordinate_Operation,13702,7302,Pennsylvania South,
-567,Coordinate_Operation,13731,7302,Pennsylvania North,
-568,Coordinate_Operation,13732,7302,Pennsylvania South,
-569,Coordinate_Operation,13800,7302,Rhode Island,
-570,Coordinate_Operation,13830,7302,Rhode Island,
-571,Coordinate_Operation,13901,7302,South Carolina North,
-572,Coordinate_Operation,13902,7302,South Carolina South,
-573,Coordinate_Operation,13930,7302,South Carolina,
-574,Coordinate_Operation,14001,7302,South Dakota North,
-575,Coordinate_Operation,14002,7302,South Dakota South,
-576,Coordinate_Operation,14031,7302,South Dakota North,
-577,Coordinate_Operation,14032,7302,South Dakota South,
-578,Coordinate_Operation,14100,7302,Tennessee,
-579,Coordinate_Operation,14130,7302,Tennessee,
-580,Coordinate_Operation,14201,7302,Texas North,
-581,Coordinate_Operation,14202,7302,Texas North Central,
-582,Coordinate_Operation,14203,7302,Texas Central,
-583,Coordinate_Operation,14204,7302,Texas South Central,
-584,Coordinate_Operation,14205,7302,Texas South,
-585,Coordinate_Operation,14231,7302,Texas North,
-586,Coordinate_Operation,14232,7302,Texas North Central,
-587,Coordinate_Operation,14233,7302,Texas Central,
-588,Coordinate_Operation,14234,7302,Texas South Central,
-589,Coordinate_Operation,14235,7302,Texas South,
-590,Coordinate_Operation,14301,7302,Utah North,
-591,Coordinate_Operation,14302,7302,Utah Central,
-592,Coordinate_Operation,14303,7302,Utah South,
-593,Coordinate_Operation,14331,7302,Utah North,
-594,Coordinate_Operation,14332,7302,Utah Central,
-595,Coordinate_Operation,14333,7302,Utah South,
-596,Coordinate_Operation,14400,7302,Vermont,
-597,Coordinate_Operation,14430,7302,Vermont,
-598,Coordinate_Operation,14501,7302,Virginia North,
-599,Coordinate_Operation,14502,7302,Virginia South,
-600,Coordinate_Operation,14531,7302,Virginia North,
-601,Coordinate_Operation,14532,7302,Virginia South,
-602,Coordinate_Operation,14601,7302,Washington North,
-603,Coordinate_Operation,14602,7302,Washington South,
-604,Coordinate_Operation,14631,7302,Washington North,
-605,Coordinate_Operation,14632,7302,Washington South,
-606,Coordinate_Operation,14701,7302,West Virginia North,
-607,Coordinate_Operation,14702,7302,West Virginia South,
-608,Coordinate_Operation,14731,7302,West Virginia North,
-609,Coordinate_Operation,14732,7302,West Virginia South,
-610,Coordinate_Operation,14801,7302,Wisconsin North,
-611,Coordinate_Operation,14802,7302,Wisconsin Central,
-612,Coordinate_Operation,14803,7302,Wisconsin South,
-613,Coordinate_Operation,14831,7302,Wisconsin North,
-614,Coordinate_Operation,14832,7302,Wisconsin Central,
-615,Coordinate_Operation,14833,7302,Wisconsin South,
-616,Coordinate_Operation,14901,7302,Wyoming East,
-617,Coordinate_Operation,14902,7302,Wyoming East Central,
-618,Coordinate_Operation,14903,7302,Wyoming West Central,
-619,Coordinate_Operation,14904,7302,Wyoming West,
-620,Coordinate_Operation,14931,7302,Wyoming East,
-621,Coordinate_Operation,14932,7302,Wyoming East Central,
-622,Coordinate_Operation,14933,7302,Wyoming West Central,
-623,Coordinate_Operation,14934,7302,Wyoming West,
-624,Coordinate_Operation,15001,7302,Alaska zone 1,
-625,Coordinate_Operation,15002,7302,Alaska zone 2,
-626,Coordinate_Operation,15003,7302,Alaska zone 3,
-627,Coordinate_Operation,15004,7302,Alaska zone 4,
-628,Coordinate_Operation,15005,7302,Alaska zone 5,
-629,Coordinate_Operation,15006,7302,Alaska zone 6,
-630,Coordinate_Operation,15007,7302,Alaska zone 7,
-631,Coordinate_Operation,15008,7302,Alaska zone 8,
-632,Coordinate_Operation,15009,7302,Alaska zone 9,
-633,Coordinate_Operation,15010,7302,Alaska zone 10,
-634,Coordinate_Operation,15031,7302,Alaska zone 1,
-635,Coordinate_Operation,15032,7302,Alaska zone 2,
-636,Coordinate_Operation,15033,7302,Alaska zone 3,
-637,Coordinate_Operation,15034,7302,Alaska zone 4,
-638,Coordinate_Operation,15035,7302,Alaska zone 5,
-639,Coordinate_Operation,15036,7302,Alaska zone 6,
-640,Coordinate_Operation,15037,7302,Alaska zone 7,
-641,Coordinate_Operation,15038,7302,Alaska zone 8,
-642,Coordinate_Operation,15039,7302,Alaska zone 9,
-643,Coordinate_Operation,15040,7302,Alaska zone 10,
-644,Coordinate_Operation,15101,7302,Hawaii  zone 1,
-645,Coordinate_Operation,15102,7302,Hawaii  zone 2,
-646,Coordinate_Operation,15103,7302,Hawaii  zone 3,
-647,Coordinate_Operation,15104,7302,Hawaii  zone 4,
-648,Coordinate_Operation,15105,7302,Hawaii  zone 5,
-649,Coordinate_Operation,15131,7302,Hawaii zone 1,
-650,Coordinate_Operation,15132,7302,Hawaii zone 2,
-651,Coordinate_Operation,15133,7302,Hawaii zone 3,
-652,Coordinate_Operation,15134,7302,Hawaii zone 4,
-653,Coordinate_Operation,15135,7302,Hawaii zone 5,
-654,Coordinate_Operation,15201,7302,Puerto Rico,
-655,Coordinate_Operation,15202,7302,St. Croix,
-656,Coordinate_Operation,15230,7302,Puerto Rico & Virgin Is.,
-657,Coordinate_Operation,15914,7302,BLM 14N (ftUS),
-658,Coordinate_Operation,15915,7302,BLM 15N (ftUS),
-659,Coordinate_Operation,15916,7302,BLM 16N (ftUS),
-660,Coordinate_Operation,15917,7302,BLM 17N (ftUS),
-661,Coordinate_Operation,16061,7302,UPS North,
-662,Coordinate_Operation,16062,7302,UPS South,
-663,Coordinate_Operation,16261,7302,3-degree Gauss zone 1,
-664,Coordinate_Operation,16262,7302,3-degree Gauss zone 2,
-665,Coordinate_Operation,16263,7302,3-degree Gauss zone 3,
-666,Coordinate_Operation,16264,7302,3-degree Gauss zone 4,
-667,Coordinate_Operation,16265,7302,3-degree Gauss zone 5,
-668,Coordinate_Operation,16266,7302,3-degree Gauss zone 6,
-669,Coordinate_Operation,16267,7302,3-degree Gauss zone 7,
-670,Coordinate_Operation,16268,7302,3-degree Gauss zone 8,
-671,Coordinate_Operation,16361,7302,3-deg Gauss-Kruger 3E,
-672,Coordinate_Operation,16362,7302,3-deg Gauss-Kruger 6E,
-673,Coordinate_Operation,16363,7302,3-deg Gauss-Kruger 9E,
-674,Coordinate_Operation,16364,7302,3-deg Gauss-Kruger 12E,
-675,Coordinate_Operation,16365,7302,3-deg Gauss-Kruger 15E,
-676,Coordinate_Operation,16366,7302,3-deg Gauss-Kruger 18E,
-677,Coordinate_Operation,16367,7302,3-deg Gauss-Kruger 21E,
-678,Coordinate_Operation,16368,7302,3-deg Gauss-Kruger 24E,
-679,Coordinate_Operation,17348,7302,MGA zone 48,
-680,Coordinate_Operation,17349,7302,MGA zone 49,
-681,Coordinate_Operation,17350,7302,MGA zone 50,
-682,Coordinate_Operation,17351,7302,MGA zone 51,
-683,Coordinate_Operation,17352,7302,MGA zone 52,
-684,Coordinate_Operation,17353,7302,MGA zone 53,
-685,Coordinate_Operation,17354,7302,MGA zone 54,
-686,Coordinate_Operation,17355,7302,MGA zone 55,
-687,Coordinate_Operation,17356,7302,MGA zone 56,
-688,Coordinate_Operation,17357,7302,MGA zone 57,
-689,Coordinate_Operation,17358,7302,MGA zone 58,
-690,Coordinate_Operation,17448,7302,AMG zone 48,
-691,Coordinate_Operation,17449,7302,AMG zone 49,
-692,Coordinate_Operation,17450,7302,AMG zone 50,
-693,Coordinate_Operation,17451,7302,AMG zone 51,
-694,Coordinate_Operation,17452,7302,AMG zone 52,
-695,Coordinate_Operation,17453,7302,AMG zone 53,
-696,Coordinate_Operation,17454,7302,AMG zone 54,
-697,Coordinate_Operation,17455,7302,AMG zone 55,
-698,Coordinate_Operation,17456,7302,AMG zone 56,
-699,Coordinate_Operation,17457,7302,AMG zone 57,
-700,Coordinate_Operation,17458,7302,AMG zone 58,
-701,Coordinate_Operation,17515,7302,S. African Grid zone 15,
-702,Coordinate_Operation,17517,7302,S. African Grid zone 17,
-703,Coordinate_Operation,17519,7302,S. African Grid zone 19,
-704,Coordinate_Operation,17521,7302,S. African Grid zone 21,
-705,Coordinate_Operation,17523,7302,S. African Grid zone 23,
-706,Coordinate_Operation,17525,7302,S. African Grid zone 25,
-707,Coordinate_Operation,17527,7302,S. African Grid zone 27,
-708,Coordinate_Operation,17529,7302,S. African Grid zone 29,
-709,Coordinate_Operation,17531,7302,S. African Grid zone 31,
-710,Coordinate_Operation,17533,7302,S. African Grid zone 33,
-711,Coordinate_Operation,17611,7302,SW African Grid zone 11,
-712,Coordinate_Operation,17613,7302,SW African Grid zone 13,
-713,Coordinate_Operation,17615,7302,SW African Grid zone 15,
-714,Coordinate_Operation,17617,7302,SW African Grid zone 17,
-715,Coordinate_Operation,17619,7302,SW African Grid zone 19,
-716,Coordinate_Operation,17621,7302,SW African Grid zone 21,
-717,Coordinate_Operation,17623,7302,SW African Grid zone 23,
-718,Coordinate_Operation,17625,7302,SW African Grid zone 25,
-719,Coordinate_Operation,17702,7302,MTM zone 2,
-720,Coordinate_Operation,17801,7302,Japan zone I,
-721,Coordinate_Operation,17802,7302,Japan zone II,
-722,Coordinate_Operation,17803,7302,Japan zone III,
-723,Coordinate_Operation,17804,7302,Japan zone IV,
-724,Coordinate_Operation,17805,7302,Japan zone V,
-725,Coordinate_Operation,17806,7302,Japan zone VI,
-726,Coordinate_Operation,17807,7302,Japan zone VII,
-727,Coordinate_Operation,17808,7302,Japan zone VIII,
-728,Coordinate_Operation,17809,7302,Japan zone IX,
-729,Coordinate_Operation,17810,7302,Japan zone X,
-730,Coordinate_Operation,17811,7302,Japan zone XI,
-731,Coordinate_Operation,17812,7302,Japan zone XII,
-732,Coordinate_Operation,17813,7302,Japan zone XIII,
-733,Coordinate_Operation,17814,7302,Japan zone XIV,
-734,Coordinate_Operation,17815,7302,Japan zone XV,
-735,Coordinate_Operation,17816,7302,Japan zone XVI,
-736,Coordinate_Operation,17817,7302,Japan zone XVII,
-737,Coordinate_Operation,17818,7302,Japan zone XVIII,
-738,Coordinate_Operation,17901,7302,Mt Eden Circuit,
-739,Coordinate_Operation,17920,7302,Mt Pleasant Circuit,
-740,Coordinate_Operation,17924,7302,Mt Nicholas Circuit,
-741,Coordinate_Operation,17925,7302,Mt York Circuit,
-742,Coordinate_Operation,17926,7302,Observation Pt Circuit,
-743,Coordinate_Operation,18031,7302,Argentina 1,
-744,Coordinate_Operation,18032,7302,Argentina 2,
-745,Coordinate_Operation,18033,7302,Argentina 3,
-746,Coordinate_Operation,18034,7302,Argentina 4,
-747,Coordinate_Operation,18035,7302,Argentina 5,
-748,Coordinate_Operation,18036,7302,Argentina 6,
-749,Coordinate_Operation,18037,7302,Argentina 7,
-750,Coordinate_Operation,18044,7302,M28,
-751,Coordinate_Operation,18045,7302,M31,
-752,Coordinate_Operation,18046,7302,M34,
-753,Coordinate_Operation,18051,7302,Colombia 3W,
-754,Coordinate_Operation,18052,7302,Colombia Bogota,
-755,Coordinate_Operation,18053,7302,Colombia 3E,
-756,Coordinate_Operation,18054,7302,Colombia 6E,
-757,Coordinate_Operation,18071,7302,Blue Belt,
-758,Coordinate_Operation,18072,7302,Red Belt,
-759,Coordinate_Operation,18073,7302,Purple Belt,
-760,Coordinate_Operation,18074,7302,Extended Purple Belt,
-761,Coordinate_Operation,18141,7302,North Island Grid,
-762,Coordinate_Operation,18142,7302,South Island Grid,
-763,Coordinate_Operation,18193,7302,Finland zone 3,
-764,Coordinate_Operation,18203,7302,ICS,
-765,Coordinate_Operation,18204,7302,ITM,
-766,Coordinate_Operation,18231,7302,India zone I,
-767,Coordinate_Operation,18232,7302,India zone IIa,
-768,Coordinate_Operation,18233,7302,India zone IIIa,
-769,Coordinate_Operation,18234,7302,India zone IVa,
-770,Coordinate_Operation,18235,7302,India zone IIb,
-771,Coordinate_Operation,18236,7302,India zone I,
-772,Coordinate_Operation,18237,7302,India zone IIa,
-773,Coordinate_Operation,18238,7302,India zone IIb,
-774,Coordinate_Operation,19900,7302,Bahrain Grid,
-775,Coordinate_Operation,19905,7302,NEIEZ,
-776,Coordinate_Operation,19917,7302,NZMG,
-777,Coordinate_Operation,19922,7302,LV03,
-778,Coordinate_Operation,19923,7302,LV03C,
-779,Coordinate_Operation,19928,7302,KTM,
-780,Coordinate_Operation,19929,7302,2.5 gon West,
-781,Coordinate_Operation,19931,7302,EOV,
-782,Coordinate_Operation,19933,7302,PEI Stereographic ATS77,
-783,Coordinate_Operation,19935,7302,R.S.O. Malaya,
-784,Coordinate_Operation,19945,7302,NB Stereographic ATS77,
-785,Coordinate_Operation,19946,7302,NB Stereographic NAD83,
-786,Coordinate_Operation,19950,7302,LV95,
-787,Coordinate_Operation,19951,7302,Nakhl e Taqi,
-788,Coordinate_Operation,19956,7302,R.S.O. Borneo (chSe),
-789,Coordinate_Operation,19957,7302,R.S.O. Borneo (ftSe),
-790,Coordinate_Operation,19958,7302,R.S.O. Borneo (m),
-791,Coordinate_Operation,19960,7302,PEI Stereographic NAD83,
-792,Coordinate_Operation,19962,7302,ITM,
-793,Coordinate Reference System,20004,7302,1995 Coord. Sys. zone 4,
-794,Coordinate Reference System,20005,7302,1995 Coord. Sys. zone 5,
-795,Coordinate Reference System,20006,7302,1995 Coord. Sys. zone 6,
-796,Coordinate Reference System,20007,7302,1995 Coord. Sys. zone 7,
-797,Coordinate Reference System,20008,7302,1995 Coord. Sys. zone 8,
-798,Coordinate Reference System,20009,7302,1995 Coord. Sys. zone 9,
-799,Coordinate Reference System,20010,7302,1995 Coord. Sys. zone 10,
-800,Coordinate Reference System,20011,7302,1995 Coord. Sys. zone 11,
-801,Coordinate Reference System,20012,7302,1995 Coord. Sys. zone 12,
-802,Coordinate Reference System,20013,7302,1995 Coord. Sys. zone 13,
-803,Coordinate Reference System,20014,7302,1995 Coord. Sys. zone 14,
-804,Coordinate Reference System,20015,7302,1995 Coord. Sys. zone 15,
-805,Coordinate Reference System,20016,7302,1995 Coord. Sys. zone 16,
-806,Coordinate Reference System,20017,7302,1995 Coord. Sys. zone 17,
-807,Coordinate Reference System,20018,7302,1995 Coord. Sys. zone 18,
-808,Coordinate Reference System,20019,7302,1995 Coord. Sys. zone 19,
-809,Coordinate Reference System,20020,7302,1995 Coord. Sys. zone 20,
-810,Coordinate Reference System,20021,7302,1995 Coord. Sys. zone 21,
-811,Coordinate Reference System,20022,7302,1995 Coord. Sys. zone 22,
-812,Coordinate Reference System,20023,7302,1995 Coord. Sys. zone 23,
-813,Coordinate Reference System,20024,7302,1995 Coord. Sys. zone 24,
-814,Coordinate Reference System,20025,7302,1995 Coord. Sys. zone 25,
-815,Coordinate Reference System,20026,7302,1995 Coord. Sys. zone 26,
-816,Coordinate Reference System,20027,7302,1995 Coord. Sys. zone 27,
-817,Coordinate Reference System,20028,7302,1995 Coord. Sys. zone 28,
-818,Coordinate Reference System,20029,7302,1995 Coord. Sys. zone 29,
-819,Coordinate Reference System,20030,7302,1995 Coord. Sys. zone 30,
-820,Coordinate Reference System,20031,7302,1995 Coord. Sys. zone 31,
-821,Coordinate Reference System,20032,7302,1995 Coord. Sys. zone 32,
-822,Coordinate Reference System,20064,7302,Pulkovo 1995 / Gauss 4N,
-823,Coordinate Reference System,20065,7302,Pulkovo 1995 / Gauss 5N,
-824,Coordinate Reference System,20066,7302,Pulkovo 1995 / Gauss 6N,
-825,Coordinate Reference System,20067,7302,Pulkovo 1995 / Gauss 7N,
-826,Coordinate Reference System,20068,7302,Pulkovo 1995 / Gauss 8N,
-827,Coordinate Reference System,20069,7302,Pulkovo 1995 / Gauss 9N,
-828,Coordinate Reference System,20070,7302,Pulkovo 1995 / Gauss 10N,
-829,Coordinate Reference System,20071,7302,Pulkovo 1995 / Gauss 11N,
-830,Coordinate Reference System,20072,7302,Pulkovo 1995 / Gauss 12N,
-831,Coordinate Reference System,20073,7302,Pulkovo 1995 / Gauss 13N,
-832,Coordinate Reference System,20074,7302,Pulkovo 1995 / Gauss 14N,
-833,Coordinate Reference System,20075,7302,Pulkovo 1995 / Gauss 15N,
-834,Coordinate Reference System,20076,7302,Pulkovo 1995 / Gauss 16N,
-835,Coordinate Reference System,20077,7302,Pulkovo 1995 / Gauss 17N,
-836,Coordinate Reference System,20078,7302,Pulkovo 1995 / Gauss 18N,
-837,Coordinate Reference System,20079,7302,Pulkovo 1995 / Gauss 19N,
-838,Coordinate Reference System,20080,7302,Pulkovo 1995 / Gauss 20N,
-839,Coordinate Reference System,20081,7302,Pulkovo 1995 / Gauss 21N,
-840,Coordinate Reference System,20082,7302,Pulkovo 1995 / Gauss 22N,
-841,Coordinate Reference System,20083,7302,Pulkovo 1995 / Gauss 23N,
-842,Coordinate Reference System,20084,7302,Pulkovo 1995 / Gauss 24N,
-843,Coordinate Reference System,20085,7302,Pulkovo 1995 / Gauss 25N,
-844,Coordinate Reference System,20086,7302,Pulkovo 1995 / Gauss 26N,
-845,Coordinate Reference System,20087,7302,Pulkovo 1995 / Gauss 27N,
-846,Coordinate Reference System,20088,7302,Pulkovo 1995 / Gauss 28N,
-847,Coordinate Reference System,20089,7302,Pulkovo 1995 / Gauss 29N,
-848,Coordinate Reference System,20090,7302,Pulkovo 1995 / Gauss 30N,
-849,Coordinate Reference System,20091,7302,Pulkovo 1995 / Gauss 31N,
-850,Coordinate Reference System,20092,7302,Pulkovo 1995 / Gauss 32N,
-851,Coordinate Reference System,20437,7302,Ain el Abd / UTM 37N,
-852,Coordinate Reference System,20438,7302,Ain el Abd / UTM 38N,
-853,Coordinate Reference System,20439,7302,Ain el Abd / UTM 39N,
-854,Coordinate Reference System,20790,7302,Lisbon / Portuguese National Grid,
-855,Coordinate Reference System,21100,7302,Batavia / NEIEZ,
-856,Coordinate Reference System,21291,7302,Barbados 1938 / BWI Grid,
-857,Coordinate Reference System,21292,7302,Barbados NationaI Grid,
-858,Coordinate Reference System,21413,7302,Beijing / Gauss zone 13,
-859,Coordinate Reference System,21414,7302,Beijing / Gauss zone 14,
-860,Coordinate Reference System,21415,7302,Beijing / Gauss zone 15,
-861,Coordinate Reference System,21416,7302,Beijing / Gauss zone 16,
-862,Coordinate Reference System,21417,7302,Beijing / Gauss zone 17,
-863,Coordinate Reference System,21418,7302,Beijing / Gauss zone 18,
-864,Coordinate Reference System,21419,7302,Beijing / Gauss zone 19,
-865,Coordinate Reference System,21420,7302,Beijing / Gauss zone 20,
-866,Coordinate Reference System,21421,7302,Beijing / Gauss zone 21,
-867,Coordinate Reference System,21422,7302,Beijing / Gauss zone 22,
-868,Coordinate Reference System,21423,7302,Beijing / Gauss zone 23,
-869,Coordinate Reference System,21473,7302,Beijing / Gauss 13N,
-870,Coordinate Reference System,21474,7302,Beijing / Gauss 14N,
-871,Coordinate Reference System,21475,7302,Beijing / Gauss 15N,
-872,Coordinate Reference System,21476,7302,Beijing / Gauss 16N,
-873,Coordinate Reference System,21477,7302,Beijing / Gauss 17N,
-874,Coordinate Reference System,21478,7302,Beijing / Gauss 18N,
-875,Coordinate Reference System,21479,7302,Beijing / Gauss 19N,
-876,Coordinate Reference System,21480,7302,Beijing / Gauss 20N,
-877,Coordinate Reference System,21481,7302,Beijing / Gauss 21N,
-878,Coordinate Reference System,21482,7302,Beijing / Gauss 22N,
-879,Coordinate Reference System,21483,7302,Beijing / Gauss 23N,
-880,Coordinate Reference System,21500,7302,Belge Lambert 50,
-881,Coordinate Reference System,21780,7302,LV03C,
-882,Coordinate Reference System,21781,7302,LV03,
-883,Coordinate Reference System,21891,7302,Bogota / Colombia 3W,
-884,Coordinate Reference System,21892,7302,Bogota / Colombia Bogota,
-885,Coordinate Reference System,21893,7302,Bogota / Colombia 3E,
-886,Coordinate Reference System,21894,7302,Bogota / Colombia 6E,
-887,Coordinate Reference System,22191,7302,C Inchauspe /Argentina 1,
-888,Coordinate Reference System,22192,7302,C Inchauspe /Argentina 2,
-889,Coordinate Reference System,22193,7302,C Inchauspe /Argentina 3,
-890,Coordinate Reference System,22194,7302,C Inchauspe /Argentina 4,
-891,Coordinate Reference System,22195,7302,C Inchauspe /Argentina 5,
-892,Coordinate Reference System,22196,7302,C Inchauspe /Argentina 6,
-893,Coordinate Reference System,22197,7302,C Inchauspe /Argentina 7,
-894,Coordinate Reference System,22275,7302,South African CS zone 15,
-895,Coordinate Reference System,22277,7302,South African CS zone 17,
-896,Coordinate Reference System,22279,7302,South African CS zone 19,
-897,Coordinate Reference System,22281,7302,South African CS zone 21,
-898,Coordinate Reference System,22283,7302,South African CS zone 23,
-899,Coordinate Reference System,22285,7302,South African CS zone 25,
-900,Coordinate Reference System,22287,7302,South African CS zone 27,
-901,Coordinate Reference System,22289,7302,South African CS zone 29,
-902,Coordinate Reference System,22291,7302,South African CS zone 31,
-903,Coordinate Reference System,22293,7302,South African CS zone 33,
-904,Coordinate Reference System,22300,7302,Tunisia Mining Grid,
-905,Coordinate Reference System,22523,7302,Corrego Alegre / UTM 23S,
-906,Coordinate Reference System,22524,7302,Corrego Alegre / UTM 24S,
-907,Coordinate Reference System,22994,7302,Egypt 1907 / Ext. Purple,
-908,Coordinate Reference System,23946,7302,Indian 1954 / UTM 46N,
-909,Coordinate Reference System,23947,7302,Indian 1954 / UTM 47N,
-910,Coordinate Reference System,23948,7302,Indian 1954 / UTM 48N,
-911,Coordinate Reference System,24047,7302,Indian 1975 / UTM 47N,
-912,Coordinate Reference System,24048,7302,Indian 1975 / UTM 48N,
-913,Coordinate Reference System,24100,7302,Jamaica 1875 / Old Grid,
-914,Coordinate Reference System,24200,7302,JAD69 / Jamaica Grid,
-915,Coordinate Reference System,24305,7302,Kalianpur 37 / UTM 45N,
-916,Coordinate Reference System,24306,7302,Kalianpur 37 / UTM 46N,
-917,Coordinate Reference System,24311,7302,Kalianpur 62 / UTM 41N,
-918,Coordinate Reference System,24312,7302,Kalianpur 62 / UTM 42N,
-919,Coordinate Reference System,24313,7302,Kalianpur 62 / UTM 43N,
-920,Coordinate Reference System,24342,7302,Kalianpur 75 / UTM 42N,
-921,Coordinate Reference System,24343,7302,Kalianpur 75 / UTM 43N,
-922,Coordinate Reference System,24344,7302,Kalianpur 75 / UTM 44N,
-923,Coordinate Reference System,24345,7302,Kalianpur 75 / UTM 45N,
-924,Coordinate Reference System,24346,7302,Kalianpur 75 / UTM 46N,
-925,Coordinate Reference System,24347,7302,Kalianpur 75 / UTM 47N,
-926,Coordinate Reference System,24370,7302,Kalianpur / India 0,
-927,Coordinate Reference System,24371,7302,Kalianpur / India I,
-928,Coordinate Reference System,24372,7302,Kalianpur / India IIa,
-929,Coordinate Reference System,24373,7302,Kalianpur / India III,
-930,Coordinate Reference System,24374,7302,Kalianpur / India IV,
-931,Coordinate Reference System,24375,7302,Kalianpur 37 / India IIb,
-932,Coordinate Reference System,24376,7302,Kalianpur 62 / India I,
-933,Coordinate Reference System,24377,7302,Kalianpur 62 / India IIa,
-934,Coordinate Reference System,24378,7302,Kalianpur 75 / India I,
-935,Coordinate Reference System,24379,7302,Kalianpur 75 / India IIa,
-936,Coordinate Reference System,24380,7302,Kalianpur 75 / India IIb,
-937,Coordinate Reference System,24381,7302,Kalianpur 75 / India III,
-938,Coordinate Reference System,24382,7302,Kalianpur / India IIb,
-939,Coordinate Reference System,24383,7302,Kalianpur 75 / India IV,
-940,Coordinate Reference System,24892,7302,PSAD56 / Peru central,
-941,Coordinate Reference System,25000,7302,Leigon / Ghana Grid,
-942,Coordinate Reference System,25391,7302,Luzon / Philippines I,
-943,Coordinate Reference System,25392,7302,Luzon / Philippines II,
-944,Coordinate Reference System,25393,7302,Luzon / Philippines III,
-945,Coordinate Reference System,25394,7302,Luzon / Philippines IV,
-946,Coordinate Reference System,25395,7302,Luzon / Philippines V,
-947,Coordinate Reference System,25700,7302,Makassar / NEIEZ,
-948,Coordinate Reference System,25932,7302,Malongo 1987 / UTM 32S,
-949,Coordinate Reference System,26391,7302,Minna / Nigeria West,
-950,Coordinate Reference System,26393,7302,Minna / Nigeria East,
-951,Coordinate Reference System,26591,7302,Monte Mario / Italy 1,
-952,Coordinate Reference System,26592,7302,Monte Mario / Italy 2,
-953,Coordinate Reference System,26632,7302,M'poraloko / UTM 32N,
-954,Coordinate Reference System,26692,7302,M'poraloko / UTM 32S,
-955,Coordinate Reference System,26741,7302,NAD27 / California I,
-956,Coordinate Reference System,26742,7302,NAD27 / California II,
-957,Coordinate Reference System,26743,7302,NAD27 / California III,
-958,Coordinate Reference System,26744,7302,NAD27 / California IV,
-959,Coordinate Reference System,26745,7302,NAD27 / California V,
-960,Coordinate Reference System,26746,7302,NAD27 / California VI,
-961,Coordinate Reference System,26747,7302,NAD27 / California VII,
-962,Coordinate Reference System,26786,7302,NAD27 / Massachusetts,
-963,Coordinate Reference System,26787,7302,NAD27 / Massachusetts Is,
-964,Coordinate Reference System,26792,7302,NAD27 / Minnesota Cent.,
-965,Coordinate Reference System,26801,7302,NAD27 / Michigan East,
-966,Coordinate Reference System,26802,7302,NAD27 / Michigan Old Cen,
-967,Coordinate Reference System,26803,7302,NAD27 / Michigan West,
-968,Coordinate Reference System,26811,7302,NAD27 / Michigan North,
-969,Coordinate Reference System,26812,7302,NAD27 / Michigan Central,
-970,Coordinate Reference System,26813,7302,NAD27 / Michigan South,
-971,Coordinate Reference System,26941,7302,NAD83 / California 1,
-972,Coordinate Reference System,26942,7302,NAD83 / California 2,
-973,Coordinate Reference System,26943,7302,NAD83 / California 3,
-974,Coordinate Reference System,26944,7302,NAD83 / California 4,
-975,Coordinate Reference System,26945,7302,NAD83 / California 5,
-976,Coordinate Reference System,26946,7302,NAD83 / California 6,
-977,Coordinate Reference System,26986,7302,NAD83 / Massachusetts,
-978,Coordinate Reference System,26987,7302,NAD83 / Massachusetts Is,
-979,Coordinate Reference System,26992,7302,NAD83 / Minnesota Cent.,
-980,Coordinate Reference System,27038,7302,Nahrwan 1967 / UTM 38N,
-981,Coordinate Reference System,27039,7302,Nahrwan 1967 / UTM 39N,
-982,Coordinate Reference System,27040,7302,Nahrwan 1967 / UTM 40N,
-983,Coordinate Reference System,27120,7302,Naparima 1972 / UTM 20N,
-984,Coordinate Reference System,27200,7302,GD49 / NZ Map Grid,
-985,Coordinate Reference System,27391,7302,NGO 1948 / I,
-986,Coordinate Reference System,27392,7302,NGO 1948 / II,
-987,Coordinate Reference System,27393,7302,NGO 1948 / III,
-988,Coordinate Reference System,27394,7302,NGO 1948 / IV,
-989,Coordinate Reference System,27395,7302,NGO 1948 / V,
-990,Coordinate Reference System,27396,7302,NGO 1948 / VI,
-991,Coordinate Reference System,27397,7302,NGO 1948 / VII,
-992,Coordinate Reference System,27398,7302,NGO 1948 / VIII,
-993,Coordinate Reference System,27500,7302,ATF / Nord de Guerre,
-994,Coordinate Reference System,27581,7302,NTF / France I,
-995,Coordinate Reference System,27582,7302,NTF / France II,
-996,Coordinate Reference System,27583,7302,NTF / France III,
-997,Coordinate Reference System,27584,7302,NTF / France IV,
-998,Coordinate Reference System,27591,7302,NTF / Nord France,
-999,Coordinate Reference System,27592,7302,NTF / Centre France,
-1000,Coordinate Reference System,27593,7302,NTF / Sud France,
-1001,Coordinate Reference System,27594,7302,NTF / Corse,
-1002,Coordinate Reference System,27700,7302,British National Grid,
-1003,Coordinate Reference System,28191,7302,Palestine Grid,
-1004,Coordinate Reference System,28192,7302,Palestine Belt,
-1005,Coordinate Reference System,28193,7302,Israeli CS Grid,
-1006,Coordinate Reference System,28232,7302,Point Noire / UTM 32S,
-1007,Coordinate Reference System,28402,7302,1942 Coord. Sys. zone 2,
-1008,Coordinate Reference System,28403,7302,1942 Coord. Sys. zone 3,
-1009,Coordinate Reference System,28404,7302,1942 Coord. Sys. zone 4,
-1010,Coordinate Reference System,28405,7302,1942 Coord. Sys. zone 5,
-1011,Coordinate Reference System,28406,7302,1942 Coord. Sys. zone 6,
-1012,Coordinate Reference System,28407,7302,1942 Coord. Sys. zone 7,
-1013,Coordinate Reference System,28408,7302,1942 Coord. Sys. zone 8,
-1014,Coordinate Reference System,28409,7302,1942 Coord. Sys. zone 9,
-1015,Coordinate Reference System,28410,7302,1942 Coord. Sys. zone 10,
-1016,Coordinate Reference System,28411,7302,1942 Coord. Sys. zone 11,
-1017,Coordinate Reference System,28412,7302,1942 Coord. Sys. zone 12,
-1018,Coordinate Reference System,28413,7302,1942 Coord. Sys. zone 13,
-1019,Coordinate Reference System,28414,7302,1942 Coord. Sys. zone 14,
-1020,Coordinate Reference System,28415,7302,1942 Coord. Sys. zone 15,
-1021,Coordinate Reference System,28416,7302,1942 Coord. Sys. zone 16,
-1022,Coordinate Reference System,28417,7302,1942 Coord. Sys. zone 17,
-1023,Coordinate Reference System,28418,7302,1942 Coord. Sys. zone 18,
-1024,Coordinate Reference System,28419,7302,1942 Coord. Sys. zone 19,
-1025,Coordinate Reference System,28420,7302,1942 Coord. Sys. zone 20,
-1026,Coordinate Reference System,28421,7302,1942 Coord. Sys. zone 21,
-1027,Coordinate Reference System,28422,7302,1942 Coord. Sys. zone 22,
-1028,Coordinate Reference System,28423,7302,1942 Coord. Sys. zone 23,
-1029,Coordinate Reference System,28424,7302,1942 Coord. Sys. zone 24,
-1030,Coordinate Reference System,28425,7302,1942 Coord. Sys. zone 25,
-1031,Coordinate Reference System,28426,7302,1942 Coord. Sys. zone 26,
-1032,Coordinate Reference System,28427,7302,1942 Coord. Sys. zone 27,
-1033,Coordinate Reference System,28428,7302,1942 Coord. Sys. zone 28,
-1034,Coordinate Reference System,28429,7302,1942 Coord. Sys. zone 29,
-1035,Coordinate Reference System,28430,7302,1942 Coord. Sys. zone 30,
-1036,Coordinate Reference System,28431,7302,1942 Coord. Sys. zone 31,
-1037,Coordinate Reference System,28432,7302,1942 Coord. Sys. zone 32,
-1038,Coordinate Reference System,28462,7302,Pulkovo / Gauss 2N,
-1039,Coordinate Reference System,28463,7302,Pulkovo / Gauss 3N,
-1040,Coordinate Reference System,28464,7302,Pulkovo / Gauss 4N,
-1041,Coordinate Reference System,28465,7302,Pulkovo / Gauss 5N,
-1042,Coordinate Reference System,28466,7302,Pulkovo / Gauss 6N,
-1043,Coordinate Reference System,28467,7302,Pulkovo / Gauss 7N,
-1044,Coordinate Reference System,28468,7302,Pulkovo / Gauss 8N,
-1045,Coordinate Reference System,28469,7302,Pulkovo / Gauss 9N,
-1046,Coordinate Reference System,28470,7302,Pulkovo / Gauss 10N,
-1047,Coordinate Reference System,28471,7302,Pulkovo / Gauss 11N,
-1048,Coordinate Reference System,28472,7302,Pulkovo / Gauss 12N,
-1049,Coordinate Reference System,28473,7302,Pulkovo / Gauss 13N,
-1050,Coordinate Reference System,28474,7302,Pulkovo / Gauss 14N,
-1051,Coordinate Reference System,28475,7302,Pulkovo / Gauss 15N,
-1052,Coordinate Reference System,28476,7302,Pulkovo / Gauss 16N,
-1053,Coordinate Reference System,28477,7302,Pulkovo / Gauss 17N,
-1054,Coordinate Reference System,28478,7302,Pulkovo / Gauss 18N,
-1055,Coordinate Reference System,28479,7302,Pulkovo / Gauss 19N,
-1056,Coordinate Reference System,28480,7302,Pulkovo / Gauss 20N,
-1057,Coordinate Reference System,28481,7302,Pulkovo / Gauss 21N,
-1058,Coordinate Reference System,28482,7302,Pulkovo / Gauss 22N,
-1059,Coordinate Reference System,28483,7302,Pulkovo / Gauss 23N,
-1060,Coordinate Reference System,28484,7302,Pulkovo / Gauss 24N,
-1061,Coordinate Reference System,28485,7302,Pulkovo / Gauss 25N,
-1062,Coordinate Reference System,28486,7302,Pulkovo / Gauss 26N,
-1063,Coordinate Reference System,28487,7302,Pulkovo / Gauss 27N,
-1064,Coordinate Reference System,28488,7302,Pulkovo / Gauss 28N,
-1065,Coordinate Reference System,28489,7302,Pulkovo / Gauss 29N,
-1066,Coordinate Reference System,28490,7302,Pulkovo / Gauss 30N,
-1067,Coordinate Reference System,28491,7302,Pulkovo / Gauss 31N,
-1068,Coordinate Reference System,28492,7302,Pulkovo / Gauss 32N,
-1069,Coordinate Reference System,28600,7302,Qatar National Grid,
-1070,Coordinate Reference System,29220,7302,Sapper Hill / UTM 20S,
-1071,Coordinate Reference System,29221,7302,Sapper Hill / UTM 21S,
-1072,Coordinate Reference System,29333,7302,Schwarzeck / UTM 33S,
-1073,Coordinate Reference System,29371,7302,SW African CS zone 11,
-1074,Coordinate Reference System,29373,7302,SW African CS zone 13,
-1075,Coordinate Reference System,29375,7302,SW African CS zone 15,
-1076,Coordinate Reference System,29377,7302,SW African CS zone 17,
-1077,Coordinate Reference System,29379,7302,SW African CS zone 19,
-1078,Coordinate Reference System,29381,7302,SW African CS zone 21,
-1079,Coordinate Reference System,29383,7302,SW African CS zone 23,
-1080,Coordinate Reference System,29385,7302,SW African CS zone 25,
-1081,Coordinate Reference System,29700,7302,Tananarive  / Laborde,
-1082,Coordinate Reference System,29738,7302,Tananarive / UTM 38S,
-1083,Coordinate Reference System,29739,7302,Tananarive / UTM 39S,
-1084,Coordinate Reference System,29849,7302,Timbalai 1948 / UTM 49N,
-1085,Coordinate Reference System,29850,7302,Timbalai 1948 / UTM 50N,
-1086,Coordinate Reference System,29871,7302,Timbalai  / Borneo (ch),
-1087,Coordinate Reference System,29872,7302,Timbalai  / Borneo (ft),
-1088,Coordinate Reference System,29873,7302,Timbalai  / Borneo (m),
-1089,Coordinate Reference System,29900,7302,TM65 / Irish Nat Grid,
-1090,Coordinate Reference System,30161,7302,Tokyo / Japan zone I,
-1091,Coordinate Reference System,30162,7302,Tokyo / Japan zone II,
-1092,Coordinate Reference System,30163,7302,Tokyo / Japan zone III,
-1093,Coordinate Reference System,30164,7302,Tokyo / Japan zone IV,
-1094,Coordinate Reference System,30165,7302,Tokyo / Japan zone V,
-1095,Coordinate Reference System,30166,7302,Tokyo / Japan zone VI,
-1096,Coordinate Reference System,30167,7302,Tokyo / Japan zone VII,
-1097,Coordinate Reference System,30168,7302,Tokyo / Japan zone VIII,
-1098,Coordinate Reference System,30169,7302,Tokyo / Japan zone IX,
-1099,Coordinate Reference System,30170,7302,Tokyo / Japan zone X,
-1100,Coordinate Reference System,30171,7302,Tokyo / Japan zone XI,
-1101,Coordinate Reference System,30172,7302,Tokyo / Japan zone XII,
-1102,Coordinate Reference System,30173,7302,Tokyo / Japan zone XIII,
-1103,Coordinate Reference System,30174,7302,Tokyo / Japan zone XIV,
-1104,Coordinate Reference System,30175,7302,Tokyo / Japan zone XV,
-1105,Coordinate Reference System,30176,7302,Tokyo / Japan zone XVI,
-1106,Coordinate Reference System,30177,7302,Tokyo / Japan zone XVII,
-1107,Coordinate Reference System,30178,7302,Tokyo / Japan zone XVIII,
-1108,Coordinate Reference System,30200,7302,Trinidad 1903 / Trinidad,
-1109,Coordinate Reference System,30491,7302,Voirol /N Algerie ancien,
-1110,Coordinate Reference System,30492,7302,Voirol /S Algerie ancien,
-1111,Coordinate Reference System,30729,7302,Nord Sahara / UTM 29N,
-1112,Coordinate Reference System,30730,7302,Nord Sahara / UTM 30N,
-1113,Coordinate Reference System,30731,7302,Nord Sahara / UTM 31N,
-1114,Coordinate Reference System,30732,7302,Nord Sahara / UTM 32N,
-1115,Coordinate Reference System,30791,7302,Nord Sahara / N Algerie,
-1116,Coordinate Reference System,30792,7302,Nord Sahara / S Algerie,
-1117,Coordinate Reference System,31265,7302,MGI / Gauss zone 5,
-1118,Coordinate Reference System,31266,7302,MGI / Gauss zone 6,
-1119,Coordinate Reference System,31267,7302,MGI / Gauss zone 7,
-1120,Coordinate Reference System,31268,7302,MGI / Gauss zone 8,
-1121,Coordinate Reference System,31291,7302,MGI / Austria West,
-1122,Coordinate Reference System,31292,7302,MGI / Austria Central,
-1123,Coordinate Reference System,31293,7302,MGI / Austria East,
-1124,Coordinate Reference System,31370,7302,BD 72 / Lambert 72,
-1125,Coordinate Reference System,31461,7302,DHDN / Gauss zone 1,
-1126,Coordinate Reference System,31462,7302,DHDN / Gauss zone 2,
-1127,Coordinate Reference System,31463,7302,DHDN / Gauss zone 3,
-1128,Coordinate Reference System,31464,7302,DHDN / Gauss zone 4,
-1129,Coordinate Reference System,31465,7302,DHDN / Gauss zone 5,
-1130,Coordinate Reference System,31600,7302,Stereo 33,
-1131,Coordinate Reference System,31700,7302,Stereo 70,
-1132,Coordinate Reference System,32013,7302,NAD27 / New Mexico Cent.,
-1133,Coordinate Reference System,32018,7302,NAD27 / New York Long Is,
-1134,Coordinate Reference System,32020,7302,NAD27 / North Dakota N,
-1135,Coordinate Reference System,32021,7302,NAD27 / North Dakota S,
-1136,Coordinate Reference System,32028,7302,NAD27 / Pennsylvania N,
-1137,Coordinate Reference System,32029,7302,NAD27 / Pennsylvania S,
-1138,Coordinate Reference System,32031,7302,NAD27 / South Carolina N,
-1139,Coordinate Reference System,32033,7302,NAD27 / South Carolina S,
-1140,Coordinate Reference System,32034,7302,NAD27 / South Dakota N,
-1141,Coordinate Reference System,32035,7302,NAD27 / South Dakota S,
-1142,Coordinate Reference System,32038,7302,NAD27 / Texas North Cen.,
-1143,Coordinate Reference System,32040,7302,NAD27 / Texas South Cen.,
-1144,Coordinate Reference System,32050,7302,NAD27 / West Virginia N,
-1145,Coordinate Reference System,32051,7302,NAD27 / West Virginia S,
-1146,Coordinate Reference System,32053,7302,NAD27 / Wisconsin Cen.,
-1147,Coordinate Reference System,32056,7302,NAD27 / Wyoming E. Cen.,
-1148,Coordinate Reference System,32057,7302,NAD27 / Wyoming W. Cen.,
-1149,Coordinate Reference System,32113,7302,NAD83 / New Mexico Cent.,
-1150,Coordinate Reference System,32118,7302,NAD83 / New York Long Is,
-1151,Coordinate Reference System,32120,7302,NAD83 / North Dakota N,
-1152,Coordinate Reference System,32121,7302,NAD83 / North Dakota S,
-1153,Coordinate Reference System,32128,7302,NAD83 / Pennsylvania N,
-1154,Coordinate Reference System,32129,7302,NAD83 / Pennsylvania S,
-1155,Coordinate Reference System,32134,7302,NAD83 / South Dakota N,
-1156,Coordinate Reference System,32135,7302,NAD83 / South Dakota S,
-1157,Coordinate Reference System,32138,7302,NAD83 / Texas North Cen.,
-1158,Coordinate Reference System,32140,7302,NAD83 / Texas South Cen.,
-1159,Coordinate Reference System,32150,7302,NAD83 / West Virginia N,
-1160,Coordinate Reference System,32151,7302,NAD83 / West Virginia S,
-1161,Coordinate Reference System,32153,7302,NAD83 / Wisconsin Cen.,
-1162,Coordinate Reference System,32156,7302,NAD83 / Wyoming E. Cen.,
-1163,Coordinate Reference System,32157,7302,NAD83 / Wyoming W. Cen.,
-1164,Unit of Measure,9001,7306,m,
-1165,Unit of Measure,9002,7306,ft,
-1166,Unit of Measure,9003,7306,ftUS,
-1167,Unit of Measure,9005,7306,ftCla,
-1168,Unit of Measure,9014,7306,fathom,
-1169,Unit of Measure,9030,7306,nautmi,
-1170,Unit of Measure,9031,7306,mGer,
-1171,Unit of Measure,9033,7306,chUS,
-1172,Unit of Measure,9034,7306,lkUS,
-1173,Unit of Measure,9035,7306,miUS,
-1174,Unit of Measure,9036,7306,km,
-1175,Unit of Measure,9037,7306,ydCla,
-1176,Unit of Measure,9038,7306,chCla,
-1177,Unit of Measure,9039,7306,lkCla,
-1178,Unit of Measure,9040,7306,ydSe,
-1179,Unit of Measure,9041,7306,ftSe,
-1180,Unit of Measure,9042,7306,chSe,
-1181,Unit of Measure,9043,7306,lkSe,
-1182,Unit of Measure,9050,7306,ydBnA,
-1183,Unit of Measure,9051,7306,ftBnA,
-1184,Unit of Measure,9052,7306,chBnA,
-1185,Unit of Measure,9053,7306,lkBnA,
-1186,Unit of Measure,9060,7306,ydBnB,
-1187,Unit of Measure,9061,7306,ftBnB,
-1188,Unit of Measure,9062,7306,chBnB,
-1189,Unit of Measure,9063,7306,lkBnB,
-1190,Unit of Measure,9070,7306,ftBr(65),
-1191,Unit of Measure,9080,7306,ftInd,
-1192,Unit of Measure,9081,7306,ftInd(37),
-1193,Unit of Measure,9082,7306,ftInd(62),
-1194,Unit of Measure,9083,7306,ftInd(75),
-1195,Unit of Measure,9084,7306,ydInd,
-1196,Unit of Measure,9085,7306,ydInd(37),
-1197,Unit of Measure,9086,7306,ydInd(62),
-1198,Unit of Measure,9087,7306,ydInd(75),
-1199,Unit of Measure,9093,7306,mi,
-1200,Unit of Measure,9094,7306,ftGC,
-1201,Unit of Measure,9101,7306,rad,
-1202,Unit of Measure,9102,7306,dega,
-1203,Unit of Measure,9103,7306,mina,
-1204,Unit of Measure,9104,7306,seca,
-1205,Unit of Measure,9105,7306,gr,
-1206,Unit of Measure,9106,7306,gon,
-1207,Unit of Measure,9107,7306,dega,
-1208,Unit of Measure,9108,7306,dega,
-1209,Unit of Measure,9109,7306,urad,
-1210,Unit of Measure,9110,7306,dega,
-1211,Unit of Measure,9111,7306,dega,
-1212,Unit of Measure,9112,7306,cgr,
-1213,Unit of Measure,9113,7306,ccgr,
-1214,Unit of Measure,9114,7306,mila,
-1215,Coordinate_Operation Method,9824,7302,UTM grid system,
-1216,Coordinate Reference System,4143,7301,C�te D'Ivoire,Same alias also applied to Locodjo 1965 (code 4142).
-1217,Coordinate Reference System,4143,7301,Port Bouet,Same alias also applied to Locodjo 1965 (code 4142).
-1218,Coordinate Reference System,4142,7301,Port Bouet,Same alias also applied to Abidjan 1987 (code 4143).
-1219,Coordinate Reference System,4142,7301,C�te D'Ivoire,Same alias also applied to Abidjan 1987 (code 4143).
-1220,Coordinate Reference System,2164,7301,Cote d'Ivoire / TM 5 NW,Same alias used for Abidjan 1987 / TM 5 NW (code 2165).
-1221,Coordinate Reference System,2164,7301,Port Bouet / TM 5 NW,Same alias used for Abidjan 1987 / TM 5 NW (code 2165).
-1222,Coordinate Reference System,2165,7301,Cote d'Ivoire / TM 5 NW,Same alias used for Locodjo 1965 / TM 5 NW (code 2164).
-1223,Coordinate Reference System,2165,7301,Port Bouet / TM 5 NW,Same alias used for Abidjan 1987 / TM 5 NW (code 2165).
-1224,Coordinate_Operation,1588,7301,ED50 to EUREF89 (1),
-1225,Coordinate_Operation,1588,7301,ED50 to ETRF89 (1),
-1227,Coordinate_Operation,1589,7301,ED50 to EUREF89 (3),
-1229,Datum,6181,7301,LUREF,
-1230,Datum,6180,7302,EST97,
-1231,Datum,6179,7301,42/58,
-1232,Datum,6178,7301,42/83,
-1233,Datum,6312,7308,HR1901,
-1234,Datum,6312,7309,D48,
-1235,Coordinate_Operation Method,9807,7301,Gauss-Kruger,
-1236,Coordinate_Operation Method,9807,7302,TM,
-1237,Datum,6818,7301,Jednotn� Trigonometrick� S�te Katastr�ln� (Ferro),
-1238,Coordinate Reference System,2393,7301,KKJ / Basic Coordinate System zone 3,
-1239,Coordinate Reference System,2391,7301,KKJ / Basic Coordinate System zone 1,
-1240,Coordinate Reference System,2392,7301,KKJ / Basic Coordinate System zone 2,
-1241,Coordinate Reference System,2394,7301,KKJ / Basic Coordinate System zone 4,
-1242,Coordinate Reference System,31467,7301,DHDN / 3-degree Gauss-Kruger zone 3,
-1243,Coordinate Reference System,31468,7301,DHDN / 3-degree Gauss-Kruger zone 4,
-1244,Coordinate Reference System,31469,7301,DHDN / 3-degree Gauss-Kruger zone 5,
-1247,Coordinate Reference System,4178,7301,42/83,
-1248,Coordinate Reference System,31466,7301,DHDN / 3-degree Gauss-Kruger zone 2,
-1249,Coordinate Reference System,2166,7301,Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 3,
-1250,Coordinate Reference System,2167,7301,Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 4,
-1251,Coordinate Reference System,4181,7301,LUREF,
-1253,Coordinate Reference System,4258,7301,EUREF89,
-1254,Coordinate Reference System,2170,7301,EUREF89 / CS92,
-1255,Coordinate Reference System,4312,7308,HR1901,
-1256,Coordinate Reference System,4312,7309,D48,
-1257,Coordinate Reference System,4805,7308,HR1901 (Ferro),
-1258,Coordinate Reference System,4805,7309,D48 (Ferro),
-1259,Coordinate Reference System,31275,7308,HDKS zone 5,HDKS = Hrvatski Drzavni Koordinatni Sustav
-1260,Coordinate Reference System,31276,7308,HDKS zone 6,HDKS = Hrvatski Drzavni Koordinatni Sustav
-1261,Coordinate Reference System,31275,7309,D48 zone 5,
-1262,Coordinate Reference System,2169,7301,LUREF / Gauss,
-1263,Coordinate Reference System,31467,7310,PD/83 / Gauss-Kruger zone 3,PD/83 is the result of the transformation from Pulkovo 1942(83) to DHDN for Thuringen.
-1264,Coordinate Reference System,31468,7310,PD/83 / Gauss-Kruger zone 4,PD/83 is the result of the transformation from Pulkovo 1942(83) to DHDN for Thuringen.
-1265,Coordinate Reference System,31468,7310,RD/83 / Gauss-Kruger zone 4,RD/83 is the result of the transformation from Pulkovo 1942(83) to DHDN for Sachsen.
-1266,Coordinate Reference System,31469,7310,RD/83 / Gauss-Kruger zone 4,RD/83 is the result of the transformation from Pulkovo 1942(83) to DHDN for Sachsen.
-1267,Coordinate_Operation,1620,7308,HR1901 to ETRS89 (2),
-1268,Coordinate_Operation,1619,7307,AT_MGI to ETRS89,
-1269,Coordinate_Operation,1622,7307,CZ_S-JTSK to ETRS89,
-1270,Coordinate_Operation,1620,7307,HR_HDKS to ETRS89,
-1271,Coordinate_Operation,1624,7307,SK_S-JTSK to ETRS89,
-1272,Coordinate_Operation,1626,7307,DK_ED50 to ETRS89,
-1273,Coordinate_Operation,1628,7307,GI_ED50 to ETRS89,
-1274,Coordinate_Operation,1630,7307,ES_ED50 (BAL99) to ETRS89,
-1275,Coordinate_Operation,1632,7307,ES_ED50 (EST99) to ETRS89,
-1276,Coordinate_Operation,1634,7307,ES_ED50 (ZNW99) to ETRS89,
-1277,Coordinate_Operation,1636,7307,TR_ED50 to ETRS89,
-1278,Coordinate_Operation,1638,7307,FI_KKJ to ETRS89,
-1279,Coordinate_Operation,1640,7307,IE_Ireland65 to ETRS89,IE_Ireland65 to ETRS89 applies to the Republic of Ireland. Also referred to in EuroGeographics as NI_Ireland65 to ETRS89 for Northern Ireland.
-1280,Coordinate_Operation,1642,7307,LU_LUREF to ETRS89,
-1281,Coordinate_Operation,1644,7307,PL_42/58 to ETRS89,
-1282,Coordinate_Operation,1646,7307,CH_CH1903 to ETRS89,
-1283,Coordinate_Operation,1647,7307,CH_CH1903+ to ETRS89,
-1284,Coordinate_Operation,1648,7307,EE_L-EST97 to ETRS89,
-1285,Coordinate_Operation,1650,7307,FR_ED50 to ETRS89,
-1286,Coordinate_Operation,1651,7307,FR_NTF to ETRS89,
-1287,Coordinate_Operation,1653,7307,NO_NGO1948 to ETRS89,
-1288,Coordinate_Operation,1657,7307,PT_D73 to ETRS89,
-1289,Coordinate_Operation,1655,7307,PT_DLX(HAY) to ETRS89,
-1290,Coordinate_Operation,1652,7307,BE_BD72 to ETRS89,
-1291,Coordinate Reference System,31282,7302,MGI / Austria Central,
-1292,Coordinate Reference System,31283,7302,MGI / Austria East,
-1293,Coordinate Reference System,31281,7302,MGI / Austria West,
-1294,Datum,6176,7302,AAD98,
-1295,Coordinate Reference System,4176,7302,AAD98,
-1296,Datum,6167,7302,NZGD2000,
-1297,Coordinate Reference System,2193,7302,NZGD2000 / NZTM,
-1298,Coordinate_Operation,19971,7302,NZTM,
-1299,Datum,6186,7302,S-JTSK,
-1300,Datum,5119,7301,Nivellement general de la France,This alias is also used for other datum realisations: see NGF - Lallemand (code 5118) and NGF - IGN78 (code 5120).
-1301,Datum,5119,7301,NGF,This alias is also used for other datum realisations: see NGF - Lallemand (code 5118) and NGF - IGN78 (code 5120).
-1302,Datum,5120,7301,NGF,This alias is also used for other datum realisations: see NGF - Lallemand (code 5118) and NGF - IGN69 (code 5119).
-1303,Datum,5118,7301,NGF,This alias is also used for other datum realisations: see NGF - IGN69 (code 5119) and NGF - IGN78 (code 5120).
-1304,Datum,5120,7301,Nivellement general de la France,This alias is also used for other datum realisations: see NGF - Lallemand (code 5118) and NGF - IGN69 (code 5119).
-1305,Datum,5118,7301,Nivellement general de la France,This alias is also used for other datum realisations: see NGF - IGN69 (code 5119) and NGF - IGN78 (code 5120).
-1306,Datum,6143,7301,C�te D'Ivoire (Ivory Coast),This alias is not unique: it is also used for code 6142.
-1307,Datum,6142,7301,C�te D'Ivoire (Ivory Coast),This alias is not unique: it is also used for code 6143.
-1308,Coordinate Reference System,4300,7301,1975 Mapping Adjustment,
-1309,Coordinate Reference System,2196,7301,EUREF89 / Kp2000 Jutland,
-1310,Coordinate Reference System,2196,7301,System 2000 Jylland zoner,
-1311,Coordinate Reference System,2197,7301,EUREF89 / Kp2000 Zealand,
-1312,Coordinate Reference System,2197,7301,System 2000 Sjaelland zoner,
-1313,Coordinate Reference System,2198,7301,EUREF89 / Kp2000 Bornholm,
-1314,Coordinate Reference System,2198,7301,System 2000 Bornholm zoner,
-1315,Datum,6189,7301,SIRGAS-REGVEN,
-1316,Datum,6189,7302,REGVEN,
-1317,datum,6171,7300,R�seau G�od�sique Fran�ais 1993,
-1318,datum,6172,7300,Posiciones Geod�sicas Argentinas,
-1319,datum,6186,7300,Jednotn� Trigonometrick� S�te Katastr�ln�,
-1320,Coordinate Reference System,4314,7310,PD/83,Used for describing result of transformation from Pulkovo 1942(83) to DHDN for Thuringen.
-1321,Coordinate Reference System,4314,7310,RD/83,Used for describing result of transformation from Pulkovo 1942(83) to DHDN for Sachsen.
-1322,Coordinate_Operation,15304,7302,Arizona East (ft),
-1323,Coordinate_Operation,15305,7302,Arizona Central (ft),
-1324,Coordinate_Operation,15306,7302,Arizona West (ft),
-1325,Coordinate_Operation,15307,7302,California zone 1 (ftUS),
-1326,Coordinate_Operation,15308,7302,California zone 2 (ftUS),
-1327,Coordinate_Operation,15309,7302,California zone 3 (ftUS),
-1328,Coordinate_Operation,15310,7302,California zone 4 (ftUS),
-1329,Coordinate_Operation,15311,7302,California zone 5 (ftUS),
-1330,Coordinate_Operation,15312,7302,California zone 6 (ftUS),
-1331,Coordinate_Operation,15313,7302,Colorado North (ftUS),
-1332,Coordinate_Operation,15314,7302,Colorado Central (ftUS),
-1333,Coordinate_Operation,15315,7302,Colorado South (ftUS),
-1334,Coordinate_Operation,15316,7301,Connecticut (ft US),
-1335,Coordinate_Operation,15317,7302,Delaware (ftUS),
-1336,Coordinate_Operation,15318,7301,Florida East (ft US),
-1337,Coordinate_Operation,15319,7302,Florida West (ftUS),
-1338,Coordinate_Operation,15320,7302,Florida North (ftUS),
-1339,Coordinate_Operation,15321,7302,Georgia East (ftUS),
-1340,Coordinate_Operation,15322,7302,Georgia West (ftUS),
-1341,Coordinate_Operation,15323,7302,Idaho East (ftUS),
-1342,Coordinate_Operation,15324,7302,Idaho Central (ftUS),
-1343,Coordinate_Operation,15325,7302,Idaho West (ftUS),
-1344,Coordinate_Operation,15326,7302,Indiana East (ftUS),
-1345,Coordinate_Operation,15327,7302,Indiana West (ftUS),
-1346,Coordinate_Operation,15328,7302,Kentucky North (ftUS),
-1347,Coordinate_Operation,15329,7302,Kentucky South (ftUS),
-1348,Coordinate_Operation,15330,7302,Maryland (ftUS),
-1349,Coordinate_Operation,15331,7302,Massachusetts Mainland (ftUS),
-1350,Coordinate_Operation,15332,7302,Massachusetts Island (ftUS),
-1351,Coordinate_Operation,15333,7302,Michigan North (ft),
-1352,Coordinate_Operation,15334,7302,Michigan Central (ft),
-1353,Coordinate_Operation,15335,7302,Michigan South (ft),
-1354,Coordinate_Operation,15336,7302,Mississippi East (ftUS),
-1355,Coordinate_Operation,15337,7302,Mississippi West (ftUS),
-1356,Coordinate_Operation,15338,7301,Montana (ftUS),
-1357,Coordinate_Operation,15339,7302,New Mexico East (ftUS),
-1358,Coordinate_Operation,15340,7302,New Mexico Central (ftUS),
-1359,Coordinate_Operation,15341,7302,New Mexico West (ftUS),
-1360,Coordinate_Operation,15342,7302,New York East (ftUS),
-1361,Coordinate_Operation,15343,7302,New York Central (ftUS),
-1362,Coordinate_Operation,15344,7302,New York  West (ftUS),
-1363,Coordinate_Operation,15345,7302,New York Long Island (ftUS),
-1364,Coordinate_Operation,15346,7302,North Carolina (ftUS),
-1365,Coordinate_Operation,15347,7302,North Dakota North (ft),
-1366,Coordinate_Operation,15348,7302,North Dakota South (ft),
-1367,Coordinate_Operation,15349,7302,Oklahoma North (ftUS),
-1368,Coordinate_Operation,15350,7302,Oklahoma South (ftUS),
-1369,Coordinate_Operation,15351,7302,Oregon North (ft),
-1370,Coordinate_Operation,15352,7302,Oregon South (ft),
-1371,Coordinate_Operation,15353,7302,Pennsylvania North (ftUS),
-1372,Coordinate_Operation,15354,7301,Pennsylvania South (ftUS),
-1373,Coordinate_Operation,15355,7302,South Carolina (ft),
-1374,Coordinate_Operation,15356,7302,Tennessee (ftUS),
-1375,Coordinate_Operation,15357,7302,Texas North (ftUS),
-1376,Coordinate_Operation,15358,7302,Texas North Central (ftUS),
-1377,Coordinate_Operation,15359,7302,Texas Central (ftUS),
-1378,Coordinate_Operation,15360,7302,Texas South Central (ftUS),
-1379,Coordinate_Operation,15361,7302,Texas South (ftUS),
-1380,Coordinate_Operation,15362,7302,Utah North (ft),
-1381,Coordinate_Operation,15363,7302,Utah Central (ft),
-1382,Coordinate_Operation,15364,7302,Utah South (ft),
-1383,Coordinate_Operation,15365,7302,Virginia North (ftUS),
-1384,Coordinate_Operation,15366,7302,Virginia South (ftUS),
-1385,Coordinate_Operation,15367,7302,Washington North (ftUS),
-1386,Coordinate_Operation,15368,7302,Washington South (ftUS),
-1387,Coordinate_Operation,15369,7302,Wisconsin North (ftUS),
-1388,Coordinate_Operation,15370,7302,Wisconsin Central (ftUS),
-1389,Coordinate_Operation,15371,7302,Wisconsin South (ftUS),
-1390,datum,6190,7302,POSGAR 98,
-1391,datum,6190,7300,Posiciones Geod�sicas Argentinas 1998,
-1392,Coordinate Reference System,4190,7301,National Geodetic System [Argentina],see http://www.igm.gov.ar/posgar.html
-1393,datum,6182,7301,Observatario Flores,
-1394,datum,6182,7302,Azores Occidental 1939,
-1395,datum,6183,7301,Graciosa Base SW,
-1396,datum,6183,7302,Azores Central 1948,
-1397,datum,6184,7301,Sao Bras,
-1398,datum,6184,7302,Azores Oriental 1940,
-1399,Coordinate Reference System,4182,7301,Observatorio Flores,
-1400,Coordinate Reference System,4183,7301,Graciosa,
-1401,Coordinate Reference System,4184,7301,Sao Braz,
-1402,Coordinate_Operation,18084,7301,France zone IV,
-1403,Coordinate_Operation,18083,7301,France zone III,
-1404,Coordinate_Operation,18082,7301,France zone II,
-1405,Coordinate_Operation,18081,7301,France zone I,
-1406,Coordinate_Operation,18093,7301,Sud France,
-1407,Coordinate_Operation,18094,7301,Corse,
-1408,Coordinate_Operation,18092,7301,Centre France,
-1409,Coordinate_Operation,18091,7301,Nord France,
-1410,Coordinate Reference System,27561,7301,NTF (Paris) / Nord France,
-1411,Coordinate Reference System,27562,7301,NTF (Paris) / Centre France,
-1412,Coordinate Reference System,27563,7301,NTF (Paris) / Sud France,
-1413,Coordinate Reference System,27564,7301,NTF (Paris) / Corse,
-1414,Coordinate Reference System,27571,7301,NTF (Paris) / France I,
-1415,Coordinate Reference System,27572,7301,NTF (Paris) / France II,
-1416,Coordinate Reference System,27573,7301,NTF (Paris) / France III,
-1417,Coordinate Reference System,27574,7301,NTF (Paris) / France IV,
-1418,Coordinate Reference System,27572,7301,NTF (Paris) / Lambert zone II Etendue,
-1419,datum,6156,7300,Jednotn� Trigonometrick� S�te Katastr�ln�,
-1421,Coordinate_Operation,1751,7301,Amersfoort to ETRF89 (1),
-1422,Coordinate Reference System,2168,7301,Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 5,
-1423,Coordinate_Operation,15302,7302,Tennessee,
-1424,Coordinate_Operation,16269,7302,3-degree Gauss zone 9,
-1425,Coordinate_Operation,16270,7302,3-degree Gauss zone 10,
-1426,Coordinate_Operation,16271,7302,3-degree Gauss zone 11,
-1427,Coordinate_Operation,16272,7302,3-degree Gauss zone 12,
-1428,Coordinate_Operation,16273,7302,3-degree Gauss zone 13,
-1429,Coordinate_Operation,16274,7302,3-degree Gauss zone 14,
-1430,Coordinate_Operation,16275,7302,3-degree Gauss zone 15,
-1431,datum,6123,7300,Kartasto Koordinaati J�rjestelm� 1966,
-1432,Coordinate Reference System,2181,7301,ED50 / Turkey zone 9,
-1433,Coordinate Reference System,2182,7301,ED50 / Turkey zone 10,
-1434,Coordinate Reference System,2183,7301,ED50 / Turkey zone 11,
-1435,Coordinate Reference System,2184,7301,ED50 / Turkey zone 12,
-1436,Coordinate Reference System,2185,7301,ED50 / Turkey zone 13,
-1437,Coordinate Reference System,2186,7301,ED50 / Turkey zone 14,
-1438,Coordinate Reference System,2187,7301,ED50 / Turkey zone 15,
-1439,Coordinate Reference System,2188,7301,Observatorio Flores / UTM zone 25N,
-1440,Coordinate Reference System,2189,7301,Graciosa / UTM zone 26N,
-1441,Coordinate Reference System,2190,7301,Sao Braz / UTM zone 26N,
-1442,Coordinate_Operation,1781,7310,PD/83 to ETRS89,
-1443,Coordinate_Operation,1782,7310,RD/83 to ETRS89,
-1444,Coordinate Reference System,4207,7301,Lisbon 1937,
-1445,Coordinate Reference System,4803,7301,Lisbon 1937 (Lisbon),
-1446,Coordinate Reference System,20791,7301,Lisbon 1937 (Lisbon)/Portuguese Grid,
-1447,Coordinate Reference System,20790,7301,Lisbon 1937 (Lisbon)/Portuguese National Grid,
-1448,Coordinate_Operation,18411,7301,Afrique Occidentale Fran�aise Senegal zone,
-1449,Coordinate_Operation,18412,7301,Afrique Occidentale Fran�aise C�te d'Ivoire zone,
-1450,Coordinate_Operation,18413,7301,Afrique Occidentale Fran�aise Dahomey zone,
-1451,Coordinate_Operation,18415,7301,Afrique Equatoriale Fran�aise ouest zone,
-1452,Coordinate_Operation,18416,7301,Afrique Equatoriale Fran�aise centrale zone,
-1453,Coordinate_Operation,18417,7301,Afrique Equatoriale Fran�aise est zone,
-1454,Coordinate_Operation,18414,7301,Afrique Occidentale Fran�aise Niger zone,
-1455,Coordinate_Operation,18411,7302,AOF Senegal zone,
-1456,Coordinate_Operation,18412,7302,AOF C�te d'Ivoire zone,
-1457,Coordinate_Operation,18413,7302,AOF Dahomey zone,
-1458,Coordinate_Operation,18414,7302,AOF Niger zone,
-1459,Coordinate_Operation,18415,7302,AEF west,
-1460,Coordinate_Operation,18416,7302,AEF central,
-1461,Coordinate_Operation,18417,7302,AEF east,
-1462,Coordinate_Operation Method,9823,7301,Plate Carr�e,This alias only applies if the latitude of natural origin is at the equator.
-1464,Coordinate_Operation,1469,7301,C�te D'Ivoire to WGS 84 (1),Same alias also applied to Abidjan 1987 to WGS 84 (1) (code 1470).
-1465,Coordinate_Operation,1469,7301,Port Bouet to WGS 84 (1),Same alias also applied to Abidjan 1987 to WGS 84 (1) (code 1470).
-1466,Coordinate_Operation,1470,7301,C�te D'Ivoire to WGS 84 (1),Same alias also applied to Locodjo 1965 to WGS 84 (1) (code 1469).
-1467,Coordinate_Operation,1470,7301,Port Bouet to WGS 84 (1),Same alias also applied to Locodjo 1965 to WGS 84 (1) (code 1469).
-1468,Coordinate Reference System,2040,7301,Port Bouet / UTM zone 30N,Same alias used for Abidjan 1987 / UTM zone 30N (code 2041).
-1469,Coordinate Reference System,2040,7301,C�te d'Ivoire / UTM zone 30N,Same alias used for Abidjan 1987 / UTM zone 30N (code 2041).
-1470,Coordinate Reference System,2041,7301,Port Bouet / UTM zone 30N,Same alias used for Locodjo 1965 / UTM zone 30N (code 2040).
-1471,Coordinate Reference System,2041,7301,C�te d'Ivoire / UTM zone 30N,Same alias used for Locodjo 1965 / UTM zone 30N (code 2040).
-1472,Coordinate Reference System,2042,7301,Port Bouet / UTM zone 29N,Same alias used for Abidjan 1987 / UTM zone 29N (code 2043).
-1473,Coordinate Reference System,2042,7301,C�te d'Ivoire / UTM zone 29N,Same alias used for Abidjan 1987 / UTM zone 29N (code 2043).
-1474,Coordinate Reference System,2043,7301,Port Bouet / UTM zone 29N,Same alias used for Locodjo 1965 / UTM zone 29N (code 2042).
-1475,Coordinate Reference System,2043,7301,C�te d'Ivoire / UTM zone 29N,Same alias used for Locodjo 1965 / UTM zone 29N (code 2042).
-1479,Coordinate_Operation,18421,7301,Greenland zone 1 west,
-1480,Coordinate_Operation,18428,7301,Greenland zone 8 west,
-1481,Coordinate Reference System,2297,7301,Qornoq 1927 / Greenland zone 1 west,
-1482,Coordinate Reference System,2307,7301,Qornoq 1927 / Greenland zone 8 west,
-1483,Coordinate Reference System,32113,7301,NAD83 / New Mexico Central (m),
-1484,Coordinate Reference System,26949,7301,NAD83 / Arizona Central (m),
-1485,Coordinate Reference System,26929,7301,NAD83 / Alabama East (m),
-1486,Coordinate Reference System,26930,7301,NAD83 / Alabama West (m),
-1487,Coordinate Reference System,26931,7301,NAD83 / Alaska zone 1 (m),
-1488,Coordinate Reference System,26940,7301,NAD83 / Alaska zone 10 (m),
-1489,Coordinate Reference System,26932,7301,NAD83 / Alaska zone 2 (m),
-1490,Coordinate Reference System,26933,7301,NAD83 / Alaska zone 3 (m),
-1491,Coordinate Reference System,26934,7301,NAD83 / Alaska zone 4 (m),
-1492,Coordinate Reference System,26935,7301,NAD83 / Alaska zone 5 (m),
-1493,Coordinate Reference System,26936,7301,NAD83 / Alaska zone 6 (m),
-1494,Coordinate Reference System,26937,7301,NAD83 / Alaska zone 7 (m),
-1495,Coordinate Reference System,26938,7301,NAD83 / Alaska zone 8 (m),
-1496,Coordinate Reference System,26939,7301,NAD83 / Alaska zone 9 (m),
-1497,Coordinate Reference System,26948,7301,NAD83 / Arizona East (m),
-1498,Coordinate Reference System,26950,7301,NAD83 / Arizona West (m),
-1499,Coordinate Reference System,26951,7301,NAD83 / Arkansas North (m),
-1500,Coordinate Reference System,26952,7301,NAD83 / Arkansas South (m),
-1501,Coordinate Reference System,26941,7301,NAD83 / California zone 1 (m),
-1502,Coordinate Reference System,26942,7301,NAD83 / California zone 2 (m),
-1503,Coordinate Reference System,26943,7301,NAD83 / California zone 3 (m),
-1504,Coordinate Reference System,26944,7301,NAD83 / California zone 4 (m),
-1505,Coordinate Reference System,26945,7301,NAD83 / California zone 5 (m),
-1506,Coordinate Reference System,26946,7301,NAD83 / California zone 6 (m),
-1507,Coordinate Reference System,26954,7301,NAD83 / Colorado Central (m),
-1508,Coordinate Reference System,26953,7301,NAD83 / Colorado North (m),
-1509,Coordinate Reference System,26955,7301,NAD83 / Colorado South (m),
-1510,Coordinate Reference System,26956,7301,NAD83 / Connecticut (m),
-1511,Coordinate Reference System,26957,7301,NAD83 / Delaware (m),
-1512,Coordinate Reference System,26958,7301,NAD83 / Florida East (m),
-1513,Coordinate Reference System,26960,7301,NAD83 / Florida North (m),
-1514,Coordinate Reference System,26959,7301,NAD83 / Florida West (m),
-1515,Coordinate Reference System,26966,7301,NAD83 / Georgia East (m),
-1516,Coordinate Reference System,26967,7301,NAD83 / Georgia West (m),
-1517,Coordinate Reference System,26961,7301,NAD83 / Hawaii zone 1 (m),
-1518,Coordinate Reference System,26962,7301,NAD83 / Hawaii zone 2 (m),
-1519,Coordinate Reference System,26963,7301,NAD83 / Hawaii zone 3 (m),
-1520,Coordinate Reference System,26964,7301,NAD83 / Hawaii zone 4 (m),
-1521,Coordinate Reference System,26965,7301,NAD83 / Hawaii zone 5 (m),
-1522,Coordinate Reference System,26969,7301,NAD83 / Idaho Central (m),
-1523,Coordinate Reference System,26968,7301,NAD83 / Idaho East (m),
-1524,Coordinate Reference System,26970,7301,NAD83 / Idaho West (m),
-1525,Coordinate Reference System,26971,7301,NAD83 / Illinois East (m),
-1526,Coordinate Reference System,26972,7301,NAD83 / Illinois West (m),
-1527,Coordinate Reference System,26973,7301,NAD83 / Indiana East (m),
-1528,Coordinate Reference System,26974,7301,NAD83 / Indiana West (m),
-1529,Coordinate Reference System,26975,7301,NAD83 / Iowa North (m),
-1530,Coordinate Reference System,26976,7301,NAD83 / Iowa South (m),
-1531,Coordinate Reference System,26977,7301,NAD83 / Kansas North (m),
-1532,Coordinate Reference System,26978,7301,NAD83 / Kansas South (m),
-1533,Coordinate Reference System,2205,7301,NAD83 / Kentucky North (m),
-1534,Coordinate Reference System,26980,7301,NAD83 / Kentucky South (m),
-1535,Coordinate Reference System,26981,7301,NAD83 / Louisiana North (m),
-1536,Coordinate Reference System,26982,7301,NAD83 / Louisiana South (m),
-1537,Coordinate Reference System,26983,7301,NAD83 / Maine East (m),
-1538,Coordinate Reference System,26984,7301,NAD83 / Maine West (m),
-1539,Coordinate Reference System,26985,7301,NAD83 / Maryland (m),
-1540,Coordinate Reference System,26987,7301,NAD83 / Massachusetts Island (m),
-1541,Coordinate Reference System,26986,7301,NAD83 / Massachusetts Mainland (m),
-1542,Coordinate Reference System,26989,7301,NAD83 / Michigan Central (m),
-1543,Coordinate Reference System,26988,7301,NAD83 / Michigan North (m),
-1544,Coordinate Reference System,26990,7301,NAD83 / Michigan South (m),
-1545,Coordinate Reference System,26992,7301,NAD83 / Minnesota Central (m),
-1546,Coordinate Reference System,26991,7301,NAD83 / Minnesota North (m),
-1547,Coordinate Reference System,26993,7301,NAD83 / Minnesota South (m),
-1548,Coordinate Reference System,26994,7301,NAD83 / Mississippi East (m),
-1549,Coordinate Reference System,26995,7301,NAD83 / Mississippi West (m),
-1550,Coordinate Reference System,26997,7301,NAD83 / Missouri Central (m),
-1551,Coordinate Reference System,26996,7301,NAD83 / Missouri East (m),
-1552,Coordinate Reference System,26998,7301,NAD83 / Missouri West (m),
-1553,Coordinate Reference System,32100,7301,NAD83 / Montana (m),
-1554,Coordinate Reference System,32104,7301,NAD83 / Nebraska (m),
-1555,Coordinate Reference System,32108,7301,NAD83 / Nevada Central (m),
-1556,Coordinate Reference System,32107,7301,NAD83 / Nevada East (m),
-1557,Coordinate Reference System,32109,7301,NAD83 / Nevada West (m),
-1558,Coordinate Reference System,32110,7301,NAD83 / New Hampshire (m),
-1559,Coordinate Reference System,32111,7301,NAD83 / New Jersey (m),
-1560,Coordinate Reference System,32112,7301,NAD83 / New Mexico East (m),
-1561,Coordinate Reference System,32114,7301,NAD83 / New Mexico West (m),
-1562,Coordinate Reference System,32116,7301,NAD83 / New York Central (m),
-1563,Coordinate Reference System,32115,7301,NAD83 / New York East (m),
-1564,Coordinate Reference System,32118,7301,NAD83 / New York Long Island (m),
-1565,Coordinate Reference System,32117,7301,NAD83 / New York West (m),
-1566,Coordinate Reference System,32119,7301,NAD83 / North Carolina (m),
-1567,Coordinate Reference System,32120,7301,NAD83 / North Dakota North (m),
-1568,Coordinate Reference System,32121,7301,NAD83 / North Dakota South (m),
-1569,Coordinate Reference System,32122,7301,NAD83 / Ohio North (m),
-1570,Coordinate Reference System,32123,7301,NAD83 / Ohio South (m),
-1571,Coordinate Reference System,32124,7301,NAD83 / Oklahoma North (m),
-1572,Coordinate Reference System,32125,7301,NAD83 / Oklahoma South (m),
-1573,Coordinate Reference System,32126,7301,NAD83 / Oregon North (m),
-1574,Coordinate Reference System,32127,7301,NAD83 / Oregon South (m),
-1575,Coordinate Reference System,32128,7301,NAD83 / Pennsylvania North (m),
-1576,Coordinate Reference System,32129,7301,NAD83 / Pennsylvania South (m),
-1577,Coordinate Reference System,32130,7301,NAD83 / Rhode Island (m),
-1578,Coordinate Reference System,32133,7301,NAD83 / South Carolina (m),
-1579,Coordinate Reference System,32134,7301,NAD83 / South Dakota North (m),
-1580,Coordinate Reference System,32135,7301,NAD83 / South Dakota South (m),
-1581,Coordinate Reference System,32136,7301,NAD83 / Tennessee (m),
-1582,Coordinate Reference System,32139,7301,NAD83 / Texas Central (m),
-1583,Coordinate Reference System,32137,7301,NAD83 / Texas North (m),
-1584,Coordinate Reference System,32138,7301,NAD83 / Texas North Central (m),
-1585,Coordinate Reference System,32141,7301,NAD83 / Texas South (m),
-1586,Coordinate Reference System,32140,7301,NAD83 / Texas South Central (m),
-1587,Coordinate Reference System,32143,7301,NAD83 / Utah Central (m),
-1588,Coordinate Reference System,32142,7301,NAD83 / Utah North (m),
-1589,Coordinate Reference System,32144,7301,NAD83 / Utah South (m),
-1590,Coordinate Reference System,32145,7301,NAD83 / Vermont (m),
-1591,Coordinate Reference System,32146,7301,NAD83 / Virginia North (m),
-1592,Coordinate Reference System,32147,7301,NAD83 / Virginia South (m),
-1593,Coordinate Reference System,32148,7301,NAD83 / Washington North (m),
-1594,Coordinate Reference System,32149,7301,NAD83 / Washington South (m),
-1595,Coordinate Reference System,32150,7301,NAD83 / West Virginia North (m),
-1596,Coordinate Reference System,32151,7301,NAD83 / West Virginia South (m),
-1597,Coordinate Reference System,32153,7301,NAD83 / Wisconsin Central (m),
-1598,Coordinate Reference System,32152,7301,NAD83 / Wisconsin North (m),
-1599,Coordinate Reference System,32154,7301,NAD83 / Wisconsin South (m),
-1600,Coordinate Reference System,32155,7301,NAD83 / Wyoming East (m),
-1601,Coordinate Reference System,32156,7301,NAD83 / Wyoming East Central (m),
-1602,Coordinate Reference System,32158,7301,NAD83 / Wyoming West (m),
-1603,Coordinate Reference System,32157,7301,NAD83 / Wyoming West Central (m),
-1604,Coordinate Reference System,32161,7301,NAD83 / Puerto Rico & Virgin Is. (m),
-1605,Coordinate_Operation,10131,7301,Alabama CS83 East zone,
-1606,Coordinate_Operation,10132,7301,Alabama CS83 West zone,
-1607,Coordinate_Operation,10231,7301,Arizona CS83 East zone,
-1608,Coordinate_Operation,10232,7301,Arizona CS83 Central zone,
-1609,Coordinate_Operation,10233,7301,Arizona CS83 West zone,
-1610,Coordinate_Operation,10331,7301,Arkansas CS83 North zone,
-1611,Coordinate_Operation,10332,7301,Arkansas CS83 South zone,
-1612,Coordinate_Operation,10431,7301,California CS83 zone 1,
-1613,Coordinate_Operation,10432,7301,California CS83 zone 2,
-1614,Coordinate_Operation,10433,7301,California CS83 zone 3,
-1615,Coordinate_Operation,10434,7301,California CS83 zone 4,
-1616,Coordinate_Operation,10435,7301,California CS83 zone 5,
-1617,Coordinate_Operation,10436,7301,California CS83 zone 6,
-1618,Coordinate_Operation,10531,7301,Colorado CS83 North zone,
-1619,Coordinate_Operation,10532,7301,Colorado CS83 Central zone,
-1620,Coordinate_Operation,10533,7301,Colorado CS83 South zone,
-1621,Coordinate_Operation,10630,7301,Connecticut CS83,
-1622,Coordinate_Operation,10730,7301,Delaware CS83,
-1623,Coordinate_Operation,10931,7301,Florida CS83 East zone,
-1624,Coordinate_Operation,10932,7301,Florida CS83 West zone,
-1625,Coordinate_Operation,10933,7301,Florida CS83 North zone,
-1626,Coordinate_Operation,11031,7301,Georgia CS83 East zone,
-1627,Coordinate_Operation,11032,7301,Georgia CS83 West zone,
-1628,Coordinate_Operation,11131,7301,Idaho CS83 East zone,
-1629,Coordinate_Operation,11132,7301,Idaho CS83 Central zone,
-1630,Coordinate_Operation,11133,7301,Idaho CS83 West zone,
-1631,Coordinate_Operation,11231,7301,Illinois CS83 East zone,
-1632,Coordinate_Operation,11232,7301,Illinois CS83 West zone,
-1633,Coordinate_Operation,11331,7301,Indiana CS83 East zone,
-1634,Coordinate_Operation,11332,7301,Indiana CS83 West zone,
-1635,Coordinate_Operation,11431,7301,Iowa CS83 North zone,
-1636,Coordinate_Operation,11432,7301,Iowa CS83 South zone,
-1637,Coordinate_Operation,11531,7301,Kansas CS83 North zone,
-1638,Coordinate_Operation,11532,7301,Kansas CS83 South zone,
-1640,Coordinate_Operation,11632,7301,Kentucky CS83 South zone,
-1641,Coordinate_Operation,11731,7301,Louisiana CS83 North zone,
-1642,Coordinate_Operation,11732,7301,Louisiana CS83 South zone,
-1643,Coordinate_Operation,11831,7301,Maine CS83 East zone,
-1644,Coordinate_Operation,11832,7301,Maine CS83 West zone,
-1645,Coordinate_Operation,11930,7301,Maryland CS83,
-1646,Coordinate_Operation,12031,7301,Massachusetts CS83 Mainland zone,
-1647,Coordinate_Operation,12032,7301,Massachusetts CS83 Island zone,
-1648,Coordinate_Operation,12141,7301,Michigan CS83 North zone,
-1649,Coordinate_Operation,12142,7301,Michigan CS83 Central zone,
-1650,Coordinate_Operation,12143,7301,Michigan CS83 South zone,
-1651,Coordinate_Operation,12231,7301,Minnesota CS83 North zone,
-1652,Coordinate_Operation,12232,7301,Minnesota CS83 Central zone,
-1653,Coordinate_Operation,12233,7301,Minnesota CS83 South zone,
-1654,Coordinate_Operation,12331,7301,Mississippi CS83 East zone,
-1655,Coordinate_Operation,12332,7301,Mississippi CS83 West zone,
-1656,Coordinate_Operation,12431,7301,Missouri CS83 East zone,
-1657,Coordinate_Operation,12433,7301,Missouri CS83 West zone,
-1658,Coordinate_Operation,12530,7301,Montana CS83,
-1659,Coordinate_Operation,12630,7301,Nebraska CS83,
-1660,Coordinate_Operation,12731,7301,Nevada CS83 East zone,
-1661,Coordinate_Operation,12732,7301,Nevada CS83 Central zone,
-1662,Coordinate_Operation,12733,7301,Nevada CS83 West zone,
-1663,Coordinate_Operation,12830,7301,New Hampshire CS83,
-1664,Coordinate_Operation,12930,7301,New Jersey CS83,
-1665,Coordinate_Operation,13031,7301,New Mexico CS83 East zone,
-1666,Coordinate_Operation,13032,7301,New Mexico CS83 Central zone,
-1667,Coordinate_Operation,13033,7301,New Mexico CS83 West zone,
-1668,Coordinate_Operation,13131,7301,New York CS83 East zone,
-1669,Coordinate_Operation,13132,7301,New York CS83 Central zone,
-1670,Coordinate_Operation,13133,7301,New York CS83 West zone,
-1671,Coordinate_Operation,13134,7301,New York CS83 Long Island zone,
-1672,Coordinate_Operation,13230,7301,North Carolina CS83,
-1673,Coordinate_Operation,13331,7301,North Dakota CS83 North zone,
-1674,Coordinate_Operation,13332,7301,North Dakota CS83 South zone,
-1675,Coordinate_Operation,13431,7301,Ohio CS83 North zone,
-1676,Coordinate_Operation,13432,7301,Ohio CS83 South zone,
-1677,Coordinate_Operation,13531,7301,Oklahoma CS83 North zone,
-1678,Coordinate_Operation,13532,7301,Oklahoma CS83 South zone,
-1679,Coordinate_Operation,13631,7301,Oregon CS83 North zone,
-1680,Coordinate_Operation,13632,7301,Oregon CS83 South zone,
-1681,Coordinate_Operation,13731,7301,Pennsylvania CS83 North zone,
-1682,Coordinate_Operation,13732,7301,Pennsylvania CS83 South zone,
-1683,Coordinate_Operation,13830,7301,Rhode Island CS83,
-1684,Coordinate_Operation,13930,7301,South Carolina CS83,
-1685,Coordinate_Operation,14031,7301,South Dakota CS83 North zone,
-1686,Coordinate_Operation,14032,7301,South Dakota CS83 South zone,
-1687,Coordinate_Operation,14130,7301,Tennessee CS83,
-1688,Coordinate_Operation,14231,7301,Texas CS83 North zone,
-1689,Coordinate_Operation,14232,7301,Texas CS83 North Central zone,
-1690,Coordinate_Operation,14233,7301,Texas CS83 Central zone,
-1691,Coordinate_Operation,14234,7301,Texas CS83 South Central zone,
-1692,Coordinate_Operation,14235,7301,Texas CS83 South zone,
-1693,Coordinate_Operation,14331,7301,Utah CS83 North zone,
-1694,Coordinate_Operation,14332,7301,Utah CS83 Central zone,
-1695,Coordinate_Operation,14333,7301,Utah CS83 South zone,
-1696,Coordinate_Operation,14430,7301,Vermont CS83,
-1697,Coordinate_Operation,14531,7301,Virginia CS83 North zone,
-1698,Coordinate_Operation,14532,7301,Virginia CS83 South zone,
-1699,Coordinate_Operation,14631,7301,Washington CS83 North zone,
-1700,Coordinate_Operation,14632,7301,Washington CS83 South zone,
-1701,Coordinate_Operation,14731,7301,West Virginia CS83 North zone,
-1702,Coordinate_Operation,14732,7301,West Virginia CS83 South zone,
-1703,Coordinate_Operation,14831,7301,Wisconsin CS83 North zone,
-1704,Coordinate_Operation,14832,7301,Wisconsin CS83 Central zone,
-1705,Coordinate_Operation,14833,7301,Wisconsin CS83 South zone,
-1706,Coordinate_Operation,14931,7301,Wyoming CS83 East zone,
-1707,Coordinate_Operation,14932,7301,Wyoming CS83 East Central zone,
-1708,Coordinate_Operation,14933,7301,Wyoming CS83 West Central zone,
-1709,Coordinate_Operation,14934,7301,Wyoming CS83 West zone,
-1710,Coordinate_Operation,15031,7301,Alaska CS83 zone 1,
-1711,Coordinate_Operation,15032,7301,Alaska CS83 zone 2,
-1712,Coordinate_Operation,15033,7301,Alaska CS83 zone 3,
-1713,Coordinate_Operation,15034,7301,Alaska CS83 zone 4,
-1714,Coordinate_Operation,15035,7301,Alaska CS83 zone 5,
-1715,Coordinate_Operation,15036,7301,Alaska CS83 zone 6,
-1716,Coordinate_Operation,15037,7301,Alaska CS83 zone 7,
-1717,Coordinate_Operation,15038,7301,Alaska CS83 zone 8,
-1718,Coordinate_Operation,15039,7301,Alaska CS83 zone 9,
-1719,Coordinate_Operation,15040,7301,Alaska CS83 zone 10,
-1720,Coordinate_Operation,15131,7301,Hawaii CS83 zone 1,
-1721,Coordinate_Operation,15132,7301,Hawaii CS83 zone 2,
-1722,Coordinate_Operation,15133,7301,Hawaii CS83 zone 3,
-1723,Coordinate_Operation,15134,7301,Hawaii CS83 zone 4,
-1724,Coordinate_Operation,15135,7301,Hawaii CS83 zone 5,
-1725,Coordinate_Operation,15230,7301,Puerto Rico & Virgin Islands CS83,
-1726,Coordinate_Operation,15303,7301,Kentucky CS83 North zone,
-1727,Coordinate_Operation,12432,7301,Missouri CS83 Central zone,
-1728,Coordinate_Operation,15303,7302,Kentucky North,
-1729,Coordinate_Operation,10532,7302,Colorado Central,
-1730,Coordinate Reference System,4282,7301,Congo 1960 Pointe Noire,
-1731,Coordinate Reference System,28232,7301,Congo 1960 Pointe Noire / UTM zone 32S,
-1732,Coordinate_Operation,1801,7301,Congo 1960 Pointe Noire to WGS 84 (2),
-1733,Coordinate_Operation,1802,7301,Congo 1960 Pointe Noire to WGS 84 (3),
-1734,Coordinate_Operation,1200,7301,Congo 1960 Pointe Noire to WGS 84 (1),
-1735,Coordinate_Operation,15914,7301,BLM zone 14N in feet,
-1736,Coordinate_Operation,15915,7301,BLM zone 15N in feet,
-1737,Coordinate_Operation,15916,7301,BLM zone 16N in feet,
-1738,Coordinate_Operation,15917,7301,BLM zone 17N in feet,
-1739,Coordinate Reference System,21149,7301,Genuk / UTM zone 49S,
-1740,Coordinate Reference System,2308,7301,Genuk / TM 109 SE,
-1741,Datum,5133,7302,AIOC95,
-1742,Coordinate Reference System,5705,7301,Kronshstadt,
-1743,Datum,6199,7301,New Egyptian,Old Egyptian is an alias for Egypt 1907 (code 6229).
-1744,Datum,6229,7301,Old Egyptian,New Egyptian is an alias for Egypt 1930 (code 6199).
-1745,Coordinate Reference System,4199,7301,New Egyptian,Old Egyptian is an alias for Egypt 1907 (code 4229).
-1746,Coordinate Reference System,4229,7301,Old Egyptian,New Egyptian is an alias for Egypt 1930 (code 4199).
-1747,Coordinate_Operation,1516,7301,PSAD56 to WGS 84,
-1748,Coordinate_Operation,1813,7301,Genuk to WGS 84 (ONWJ),
-1749,Coordinate Reference System,32064,7301,NAD27 / UTM zone 14N (ftUS),Non-metric equivalent of NAD27 / UTM zone 14N (code 26714). UTM is a metric system so strictly this is not UTM.
-1750,Coordinate Reference System,32065,7301,NAD27 / UTM zone 15N (ftUS),Non-metric equivalent of NAD27 / UTM zone 15N (code 26715). UTM is a metric system so strictly this is not UTM.
-1751,Coordinate Reference System,32066,7301,NAD27 / UTM zone 16N (ftUS),Non-metric equivalent of NAD27 / UTM zone 16N (code 26716). UTM is a metric system so strictly this is not UTM.
-1752,Coordinate Reference System,32067,7301,NAD27 / UTM zone 17N (ftUS),Non-metric equivalent of NAD27 / UTM zone 17N (code 26717). UTM is a metric system so strictly this is not UTM.
-1754,Coordinate Reference System,2319,7301,ED50 / 3-degree Gauss-Kruger CM 27E,
-1755,Coordinate Reference System,2320,7301,ED50 / 3-degree Gauss-Kruger CM 30E,
-1756,Coordinate Reference System,2321,7301,ED50 / 3-degree Gauss-Kruger CM 33E,
-1757,Coordinate Reference System,2322,7301,ED50 / 3-degree Gauss-Kruger CM 36E,
-1758,Coordinate Reference System,2323,7301,ED50 / 3-degree Gauss-Kruger CM 39E,
-1759,Coordinate Reference System,2324,7301,ED50 / 3-degree Gauss-Kruger CM 42E,
-1760,Coordinate Reference System,2325,7301,ED50 / 3-degree Gauss-Kruger CM 45E,
-1761,Datum,6612,7302,JGD2000,
-1762,Datum,5137,7301,Huang Hai 1985,
-1763,Datum,5135,7302,HKPD,
-1765,Coordinate Reference System,5736,7301,Huang Hai 1956,
-1766,Coordinate Reference System,5738,7302,HKPD,
-1767,Coordinate Reference System,2343,7301,Xian 1980 / 6-degree Gauss-Kruger CM 105E,
-1768,Coordinate Reference System,2344,7301,Xian 1980 / 6-degree Gauss-Kruger CM 111E,
-1769,Coordinate Reference System,2338,7301,Xian 1980 / 6-degree Gauss-Kruger CM 75E,
-1770,Coordinate Reference System,2342,7301,Xian 1980 / 6-degree Gauss-Kruger CM 99E,
-1771,Coordinate Reference System,2348,7301,Xian 1980 / 6-degree Gauss-Kruger CM 135E,
-1772,Coordinate Reference System,2339,7301,Xian 1980 / 6-degree Gauss-Kruger CM 81E,
-1773,Coordinate Reference System,2340,7301,Xian 1980 / 6-degree Gauss-Kruger CM 87E,
-1774,Coordinate Reference System,2341,7301,Xian 1980 / 6-degree Gauss-Kruger CM 93E,
-1775,Coordinate Reference System,2345,7301,Xian 1980 / 6-degree Gauss-Kruger CM 117E,
-1776,Coordinate Reference System,2346,7301,Xian 1980 / 6-degree Gauss-Kruger CM 123E,
-1777,Coordinate Reference System,2347,7301,Xian 1980 / 6-degree Gauss-Kruger CM 129E,
-1778,Datum,6611,7302,HK80,
-1779,Datum,5135,7301,Ordnance Datum,This is the former name.
-1780,Datum,5136,7301,Admiralty Datum,This is the former name.
-1781,Coordinate Reference System,5737,7301,Huang Hai 1985,
-1782,Coordinate Reference System,2326,7302,HK 1980 Grid System,
-1783,Coordinate Reference System,4611,7302,HK1980,
-1784,Coordinate_Operation Parameter,8802,7301,Central Meridian,"Abbeviated as ""CM""."
-1785,Coordinate_Operation Parameter,8802,7302,CM,"Abbreviation for ""Central Meridian""."
-1786,Coordinate Reference System,2327,7301,Xian 1980 / 6-degree Gauss-Kruger zone 13,Part of the China National Coordinate System of 1980.
-1787,Coordinate Reference System,2328,7301,Xian 1980 / 6-degree Gauss-Kruger zone 14,Part of the China National Coordinate System of 1980.
-1788,Coordinate Reference System,2329,7301,Xian 1980 / 6-degree Gauss-Kruger zone 15,Part of the China National Coordinate System of 1980.
-1789,Coordinate Reference System,2330,7301,Xian 1980 / 6-degree Gauss-Kruger zone 16,Part of the China National Coordinate System of 1980.
-1790,Coordinate Reference System,2331,7301,Xian 1980 / 6-degree Gauss-Kruger zone 17,Part of the China National Coordinate System of 1980.
-1791,Coordinate Reference System,2332,7301,Xian 1980 / 6-degree Gauss-Kruger zone 18,Part of the China National Coordinate System of 1980.
-1792,Coordinate Reference System,2333,7301,Xian 1980 / 6-degree Gauss-Kruger zone 19,Part of the China National Coordinate System of 1980.
-1793,Coordinate Reference System,2334,7301,Xian 1980 / 6-degree Gauss-Kruger zone 20,Part of the China National Coordinate System of 1980.
-1794,Coordinate Reference System,2335,7301,Xian 1980 / 6-degree Gauss-Kruger zone 21,Part of the China National Coordinate System of 1980.
-1795,Coordinate Reference System,2336,7301,Xian 1980 / 6-degree Gauss-Kruger zone 22,Part of the China National Coordinate System of 1980.
-1796,Coordinate Reference System,2333,7301,Xian 1980 / 6-degree Gauss-Kruger zone 23,Part of the China National Coordinate System of 1980.
-1797,Coordinate Reference System,21413,7301,Beijing 1954 / 6-degree Gauss-Kruger zone 13,
-1798,Coordinate Reference System,21414,7301,Beijing 1954 / 6-degree Gauss-Kruger zone 14,
-1799,Coordinate Reference System,21415,7301,Beijing 1954 / 6-degree Gauss-Kruger zone 15,
-1800,Coordinate Reference System,21416,7301,Beijing 1954 / 6-degree Gauss-Kruger zone 16,
-1801,Coordinate Reference System,21417,7301,Beijing 1954 / 6-degree Gauss-Kruger zone 17,
-1802,Coordinate Reference System,21418,7301,Beijing 1954 / 6-degree Gauss-Kruger zone 18,
-1803,Coordinate Reference System,21419,7301,Beijing 1954 / 6-degree Gauss-Kruger zone 19,
-1804,Coordinate Reference System,21420,7301,Beijing 1954 / 6-degree Gauss-Kruger zone 20,
-1805,Coordinate Reference System,21421,7301,Beijing 1954 / 6-degree Gauss-Kruger zone 21,
-1806,Coordinate Reference System,21422,7301,Beijing 1954 / 6-degree Gauss-Kruger zone 22,
-1807,Coordinate Reference System,21423,7301,Beijing 1954 / 6-degree Gauss-Kruger zone 23,
-1808,Coordinate Reference System,21453,7301,Beijing 1954 / 6-degree Gauss-Kruger CM 75E,
-1809,Coordinate Reference System,21454,7301,Beijing 1954 / 6-degree Gauss-Kruger CM 81E,
-1810,Coordinate Reference System,21455,7301,Beijing 1954 / 6-degree Gauss-Kruger CM 87E,
-1811,Coordinate Reference System,21456,7301,Beijing 1954 / 6-degree Gauss-Kruger CM 93E,
-1812,Coordinate Reference System,21457,7301,Beijing 1954 / 6-degree Gauss-Kruger CM 99E,
-1813,Coordinate Reference System,21458,7301,Beijing 1954 / 6-degree Gauss-Kruger CM 105E,
-1814,Coordinate Reference System,21459,7301,Beijing 1954 / 6-degree Gauss-Kruger CM 111E,
-1815,Coordinate Reference System,21460,7301,Beijing 1954 / 6-degree Gauss-Kruger CM 117E,
-1816,Coordinate Reference System,21461,7301,Beijing 1954 / 6-degree Gauss-Kruger CM 123E,
-1817,Coordinate Reference System,21462,7301,Beijing 1954 / 6-degree Gauss-Kruger CM 129E,
-1818,Coordinate Reference System,21463,7301,Beijing 1954 / 6-degree Gauss-Kruger CM 135E,
-1819,Coordinate_Operation,5405,7302,HKPD to Hong Kong Chart,
-1820,Coordinate Reference System,2044,7301,Hanoi 1972 / 6-degree Gauss-Kruger zone 18,
-1821,Coordinate Reference System,2045,7301,Hanoi 1972 / 6-degree Gauss-Kruger zone 18,
-1822,Coordinate Reference System,2462,7301,Albanian 1987 / 6-degree Gauss-Kruger zone 4,
-1823,Coordinate Reference System,2397,7301,Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 3,
-1824,Coordinate Reference System,2398,7301,Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 4,
-1825,Coordinate Reference System,2399,7301,Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 3,
-1826,Coordinate Reference System,2395,7302,S Yemen / Gauss zone 8,
-1827,Coordinate Reference System,2396,7302,S Yemen / Gauss zone 9,
-1828,Coordinate Reference System,2396,7301,South Yemen / 6-degree Gauss-Kruger zone 9,
-1829,Coordinate Reference System,2395,7301,South Yemen / 6-degree Gauss-Kruger zone 8,
-1830,Coordinate_Operation,18031,7301,Gauss-Kruger zone 1,
-1831,Coordinate_Operation,18032,7301,Gauss-Kruger zone 2,
-1832,Coordinate_Operation,18033,7301,Gauss-Kruger zone 3,
-1833,Coordinate_Operation,18034,7301,Gauss-Kruger zone 4,
-1834,Coordinate_Operation,18035,7301,Gauss-Kruger zone 5,
-1835,Coordinate_Operation,18036,7301,Gauss-Kruger zone 6,
-1836,Coordinate_Operation,18037,7301,Gauss-Kruger zone 7,
-1837,Coordinate Reference System,22191,7301,Campo Inchauspe / Gauss-Kruger zone 1,
-1838,Coordinate Reference System,22192,7301,Campo Inchauspe / Gauss-Kruger zone 2,
-1839,Coordinate Reference System,22193,7301,Campo Inchauspe / Gauss-Kruger zone 3,
-1840,Coordinate Reference System,22194,7301,Campo Inchauspe / Gauss-Kruger zone 4,
-1841,Coordinate Reference System,22195,7301,Campo Inchauspe / Gauss-Kruger zone 5,
-1842,Coordinate Reference System,22196,7301,Campo Inchauspe / Gauss-Kruger zone 6,
-1843,Coordinate Reference System,22197,7301,Campo Inchauspe / Gauss-Kruger zone 7,
-1844,Coordinate Reference System,2081,7301,Chos Malal 1914 / Gauss-Kruger zone 2,
-1845,Coordinate Reference System,2082,7301,Pampa del Castillo / Gauss-Kruger zone 2,
-1846,Coordinate Reference System,2083,7301,Hito XVIII 1963 / Gauss-Kruger zone 2,
-1847,Coordinate Reference System,20004,7301,Pulkovo 1995 / 6-degree Gauss-Kruger zone 4,
-1848,Coordinate Reference System,20005,7301,Pulkovo 1995 / 6-degree Gauss-Kruger zone 5,
-1849,Coordinate Reference System,20006,7301,Pulkovo 1995 / 6-degree Gauss-Kruger zone 6,
-1850,Coordinate Reference System,20007,7301,Pulkovo 1995 / 6-degree Gauss-Kruger zone 7,
-1851,Coordinate Reference System,20008,7301,Pulkovo 1995 / 6-degree Gauss-Kruger zone 8,
-1852,Coordinate Reference System,20009,7301,Pulkovo 1995 / 6-degree Gauss-Kruger zone 9,
-1853,Coordinate Reference System,20010,7301,Pulkovo 1995 / 6-degree Gauss-Kruger zone 10,
-1854,Coordinate Reference System,20011,7301,Pulkovo 1995 / 6-degree Gauss-Kruger zone 11,
-1855,Coordinate Reference System,20012,7301,Pulkovo 1995 / 6-degree Gauss-Kruger zone 12,
-1856,Coordinate Reference System,20013,7301,Pulkovo 1995 / 6-degree Gauss-Kruger zone 13,
-1857,Coordinate Reference System,20014,7301,Pulkovo 1995 / 6-degree Gauss-Kruger zone 14,
-1858,Coordinate Reference System,20015,7301,Pulkovo 1995 / 6-degree Gauss-Kruger zone 15,
-1859,Coordinate Reference System,20016,7301,Pulkovo 1995 / 6-degree Gauss-Kruger zone 16,
-1860,Coordinate Reference System,20017,7301,Pulkovo 1995 / 6-degree Gauss-Kruger zone 17,
-1861,Coordinate Reference System,20018,7301,Pulkovo 1995 / 6-degree Gauss-Kruger zone 18,
-1862,Coordinate Reference System,20019,7301,Pulkovo 1995 / 6-degree Gauss-Kruger zone 19,
-1863,Coordinate Reference System,20020,7301,Pulkovo 1995 / 6-degree Gauss-Kruger zone 20,
-1864,Coordinate Reference System,20021,7301,Pulkovo 1995 / 6-degree Gauss-Kruger zone 21,
-1865,Coordinate Reference System,20022,7301,Pulkovo 1995 / 6-degree Gauss-Kruger zone 22,
-1866,Coordinate Reference System,20023,7301,Pulkovo 1995 / 6-degree Gauss-Kruger zone 23,
-1867,Coordinate Reference System,20024,7301,Pulkovo 1995 / 6-degree Gauss-Kruger zone 24,
-1868,Coordinate Reference System,20025,7301,Pulkovo 1995 / 6-degree Gauss-Kruger zone 25,
-1869,Coordinate Reference System,20026,7301,Pulkovo 1995 / 6-degree Gauss-Kruger zone 26,
-1870,Coordinate Reference System,20027,7301,Pulkovo 1995 / 6-degree Gauss-Kruger zone 27,
-1871,Coordinate Reference System,20028,7301,Pulkovo 1995 / 6-degree Gauss-Kruger zone 28,
-1872,Coordinate Reference System,20029,7301,Pulkovo 1995 / 6-degree Gauss-Kruger zone 29,
-1873,Coordinate Reference System,20030,7301,Pulkovo 1995 / 6-degree Gauss-Kruger zone 30,
-1874,Coordinate Reference System,20031,7301,Pulkovo 1995 / 6-degree Gauss-Kruger zone 31,
-1875,Coordinate Reference System,20032,7301,Pulkovo 1995 / 6-degree Gauss-Kruger zone 32,
-1876,Coordinate Reference System,28402,7301,Pulkovo 1942 / 6-degree Gauss-Kruger zone 2,
-1877,Coordinate Reference System,28403,7301,Pulkovo 1942 / 6-degree Gauss-Kruger zone 3,
-1878,Coordinate Reference System,28404,7301,Pulkovo 1942 / 6-degree Gauss-Kruger zone 4,
-1879,Coordinate Reference System,28405,7301,Pulkovo 1942 / 6-degree Gauss-Kruger zone 5,
-1880,Coordinate Reference System,28406,7301,Pulkovo 1942 / 6-degree Gauss-Kruger zone 6,
-1881,Coordinate Reference System,28407,7301,Pulkovo 1942 / 6-degree Gauss-Kruger zone 7,
-1882,Coordinate Reference System,28408,7301,Pulkovo 1942 / 6-degree Gauss-Kruger zone 8,
-1883,Coordinate Reference System,28409,7301,Pulkovo 1942 / 6-degree Gauss-Kruger zone 9,
-1884,Coordinate Reference System,28410,7301,Pulkovo 1942 / 6-degree Gauss-Kruger zone 10,
-1885,Coordinate Reference System,28411,7301,Pulkovo 1942 / 6-degree Gauss-Kruger zone 11,
-1886,Coordinate Reference System,28412,7301,Pulkovo 1942 / 6-degree Gauss-Kruger zone 12,
-1887,Coordinate Reference System,28413,7301,Pulkovo 1942 / 6-degree Gauss-Kruger zone 13,
-1888,Coordinate Reference System,28414,7301,Pulkovo 1942 / 6-degree Gauss-Kruger zone 14,
-1889,Coordinate Reference System,28415,7301,Pulkovo 1942 / 6-degree Gauss-Kruger zone 15,
-1890,Coordinate Reference System,28416,7301,Pulkovo 1942 / 6-degree Gauss-Kruger zone 16,
-1891,Coordinate Reference System,28417,7301,Pulkovo 1942 / 6-degree Gauss-Kruger zone 17,
-1892,Coordinate Reference System,28418,7301,Pulkovo 1942 / 6-degree Gauss-Kruger zone 18,
-1893,Coordinate Reference System,28419,7301,Pulkovo 1942 / 6-degree Gauss-Kruger zone 19,
-1894,Coordinate Reference System,28420,7301,Pulkovo 1942 / 6-degree Gauss-Kruger zone 20,
-1895,Coordinate Reference System,28421,7301,Pulkovo 1942 / 6-degree Gauss-Kruger zone 21,
-1896,Coordinate Reference System,28422,7301,Pulkovo 1942 / 6-degree Gauss-Kruger zone 22,
-1897,Coordinate Reference System,28423,7301,Pulkovo 1942 / 6-degree Gauss-Kruger zone 23,
-1898,Coordinate Reference System,28424,7301,Pulkovo 1942 / 6-degree Gauss-Kruger zone 24,
-1899,Coordinate Reference System,28425,7301,Pulkovo 1942 / 6-degree Gauss-Kruger zone 25,
-1900,Coordinate Reference System,28426,7301,Pulkovo 1942 / 6-degree Gauss-Kruger zone 26,
-1901,Coordinate Reference System,28427,7301,Pulkovo 1942 / 6-degree Gauss-Kruger zone 27,
-1902,Coordinate Reference System,28428,7301,Pulkovo 1942 / 6-degree Gauss-Kruger zone 28,
-1903,Coordinate Reference System,28429,7301,Pulkovo 1942 / 6-degree Gauss-Kruger zone 29,
-1904,Coordinate Reference System,28430,7301,Pulkovo 1942 / 6-degree Gauss-Kruger zone 30,
-1905,Coordinate Reference System,28431,7301,Pulkovo 1942 / 6-degree Gauss-Kruger zone 31,
-1906,Coordinate Reference System,28432,7301,Pulkovo 1942 / 6-degree Gauss-Kruger zone 32,
-1907,Coordinate Reference System,2463,7301,Pulkovo 1995 / 6-degree Gauss-Kruger CM 21E,
-1908,Coordinate Reference System,2464,7301,Pulkovo 1995 / 6-degree Gauss-Kruger CM 27E,
-1909,Coordinate Reference System,2465,7301,Pulkovo 1995 / 6-degree Gauss-Kruger CM 33E,
-1910,Coordinate Reference System,2466,7301,Pulkovo 1995 / 6-degree Gauss-Kruger CM 39E,
-1911,Coordinate Reference System,2467,7301,Pulkovo 1995 / 6-degree Gauss-Kruger CM 45E,
-1912,Coordinate Reference System,2468,7301,Pulkovo 1995 / 6-degree Gauss-Kruger CM 51E,
-1913,Coordinate Reference System,2469,7301,Pulkovo 1995 / 6-degree Gauss-Kruger CM 57E,
-1914,Coordinate Reference System,2470,7301,Pulkovo 1995 / 6-degree Gauss-Kruger CM 63E,
-1915,Coordinate Reference System,2471,7301,Pulkovo 1995 / 6-degree Gauss-Kruger CM 69E,
-1916,Coordinate Reference System,2472,7301,Pulkovo 1995 / 6-degree Gauss-Kruger CM 75E,
-1917,Coordinate Reference System,2473,7301,Pulkovo 1995 / 6-degree Gauss-Kruger CM 81E,
-1918,Coordinate Reference System,2474,7301,Pulkovo 1995 / 6-degree Gauss-Kruger CM 87E,
-1919,Coordinate Reference System,2475,7301,Pulkovo 1995 / 6-degree Gauss-Kruger CM 93E,
-1920,Coordinate Reference System,2476,7301,Pulkovo 1995 / 6-degree Gauss-Kruger CM 99E,
-1921,Coordinate Reference System,2477,7301,Pulkovo 1995 / 6-degree Gauss-Kruger CM 105E,
-1922,Coordinate Reference System,2478,7301,Pulkovo 1995 / 6-degree Gauss-Kruger CM 111E,
-1923,Coordinate Reference System,2479,7301,Pulkovo 1995 / 6-degree Gauss-Kruger CM 117E,
-1924,Coordinate Reference System,2480,7301,Pulkovo 1995 / 6-degree Gauss-Kruger CM 123E,
-1925,Coordinate Reference System,2481,7301,Pulkovo 1995 / 6-degree Gauss-Kruger CM 129E,
-1926,Coordinate Reference System,2482,7301,Pulkovo 1995 / 6-degree Gauss-Kruger CM 135E,
-1927,Coordinate Reference System,2483,7301,Pulkovo 1995 / 6-degree Gauss-Kruger CM 141E,
-1928,Coordinate Reference System,2484,7301,Pulkovo 1995 / 6-degree Gauss-Kruger CM 147E,
-1929,Coordinate Reference System,2485,7301,Pulkovo 1995 / 6-degree Gauss-Kruger CM 153E,
-1930,Coordinate Reference System,2486,7301,Pulkovo 1995 / 6-degree Gauss-Kruger CM 159E,
-1931,Coordinate Reference System,2487,7301,Pulkovo 1995 / 6-degree Gauss-Kruger CM 165E,
-1932,Coordinate Reference System,2488,7301,Pulkovo 1995 / 6-degree Gauss-Kruger CM 171E,
-1933,Coordinate Reference System,2489,7301,Pulkovo 1995 / 6-degree Gauss-Kruger CM 177E,
-1934,Coordinate Reference System,2490,7301,Pulkovo 1995 / 6-degree Gauss-Kruger CM 177W,
-1935,Coordinate Reference System,2491,7301,Pulkovo 1995 / 6-degree Gauss-Kruger CM 171W,
-1936,Coordinate Reference System,2492,7301,Pulkovo 1942 / 6-degree Gauss-Kruger CM 9E,
-1937,Coordinate Reference System,2493,7301,Pulkovo 1942 / 6-degree Gauss-Kruger CM 15E,
-1938,Coordinate Reference System,2494,7301,Pulkovo 1942 / 6-degree Gauss-Kruger CM 21E,
-1939,Coordinate Reference System,2495,7301,Pulkovo 1942 / 6-degree Gauss-Kruger CM 27E,
-1940,Coordinate Reference System,2496,7301,Pulkovo 1942 / 6-degree Gauss-Kruger CM 33E,
-1941,Coordinate Reference System,2497,7301,Pulkovo 1942 / 6-degree Gauss-Kruger CM 39E,
-1942,Coordinate Reference System,2498,7301,Pulkovo 1942 / 6-degree Gauss-Kruger CM 45E,
-1943,Coordinate Reference System,2499,7301,Pulkovo 1942 / 6-degree Gauss-Kruger CM 51E,
-1944,Coordinate Reference System,2500,7301,Pulkovo 1942 / 6-degree Gauss-Kruger CM 57E,
-1945,Coordinate Reference System,2501,7301,Pulkovo 1942 / 6-degree Gauss-Kruger CM 63E,
-1946,Coordinate Reference System,2502,7301,Pulkovo 1942 / 6-degree Gauss-Kruger CM 69E,
-1947,Coordinate Reference System,2503,7301,Pulkovo 1942 / 6-degree Gauss-Kruger CM 75E,
-1948,Coordinate Reference System,2504,7301,Pulkovo 1942 / 6-degree Gauss-Kruger CM 81E,
-1949,Coordinate Reference System,2505,7301,Pulkovo 1942 / 6-degree Gauss-Kruger CM 87E,
-1950,Coordinate Reference System,2506,7301,Pulkovo 1942 / 6-degree Gauss-Kruger CM 93E,
-1951,Coordinate Reference System,2507,7301,Pulkovo 1942 / 6-degree Gauss-Kruger CM 99E,
-1952,Coordinate Reference System,2508,7301,Pulkovo 1942 / 6-degree Gauss-Kruger CM 105E,
-1953,Coordinate Reference System,2509,7301,Pulkovo 1942 / 6-degree Gauss-Kruger CM 111E,
-1954,Coordinate Reference System,2510,7301,Pulkovo 1942 / 6-degree Gauss-Kruger CM 117E,
-1955,Coordinate Reference System,2511,7301,Pulkovo 1942 / 6-degree Gauss-Kruger CM 123E,
-1956,Coordinate Reference System,2512,7301,Pulkovo 1942 / 6-degree Gauss-Kruger CM 129E,
-1957,Coordinate Reference System,2513,7301,Pulkovo 1942 / 6-degree Gauss-Kruger CM 135E,
-1958,Coordinate Reference System,2514,7301,Pulkovo 1942 / 6-degree Gauss-Kruger CM 141E,
-1959,Coordinate Reference System,2515,7301,Pulkovo 1942 / 6-degree Gauss-Kruger CM 147E,
-1960,Coordinate Reference System,2516,7301,Pulkovo 1942 / 6-degree Gauss-Kruger CM 153E,
-1961,Coordinate Reference System,2517,7301,Pulkovo 1942 / 6-degree Gauss-Kruger CM 159E,
-1962,Coordinate Reference System,2518,7301,Pulkovo 1942 / 6-degree Gauss-Kruger CM 165E,
-1963,Coordinate Reference System,2519,7301,Pulkovo 1942 / 6-degree Gauss-Kruger CM 171E,
-1964,Coordinate Reference System,2520,7301,Pulkovo 1942 / 6-degree Gauss-Kruger CM 177E,
-1965,Coordinate Reference System,2521,7301,Pulkovo 1942 / 6-degree Gauss-Kruger CM 177W,
-1966,Coordinate Reference System,2522,7301,Pulkovo 1942 / 6-degree Gauss-Kruger CM 171W,
-1967,Unit of Measure,9115,7302,DM,
-1968,Unit of Measure,9115,7306,dega,
-1969,Coordinate_Operation,1833,7311,ID74 to DGN-95 (3),DGN-95 is a synonym in Indonesia for WGS 84.
-1970,Coordinate_Operation,1832,7311,ID74 to DGN-95 (2),DGN-95 is a synonym in Indonesia for WGS 84.
-1971,Coordinate_Operation,1248,7311,ID74 to DGN-95 (1),DGN-95 is a synonym in Indonesia for WGS 84.
-1972,Coordinate Reference System,2309,7311,DGN-95 / TM 116 SE,Datum Geodesi Nasional 1995 (DGN-95) is a synonym for WGS 84 in Indonesia.
-1973,Coordinate Reference System,2310,7311,DGN-95 / TM 132 SE,Datum Geodesi Nasional 1995 (DGN-95) is a synonym for WGS 84 in Indonesia.
-1974,Coordinate Reference System,32646,7311,DGN-95 / UTM zone 46N,Datum Geodesi Nasional 1995 (DGN-95) is a synonym for WGS 84 in Indonesia.
-1975,Coordinate Reference System,32647,7311,DGN-95 / UTM zone 47N,Datum Geodesi Nasional 1995 (DGN-95) is a synonym for WGS 84 in Indonesia.
-1976,Coordinate Reference System,32648,7311,DGN-95 / UTM zone 48N,Datum Geodesi Nasional 1995 (DGN-95) is a synonym for WGS 84 in Indonesia.
-1977,Coordinate Reference System,32649,7311,DGN-95 / UTM zone 49N,Datum Geodesi Nasional 1995 (DGN-95) is a synonym for WGS 84 in Indonesia.
-1978,Coordinate Reference System,32650,7311,DGN-95 / UTM zone 50N,Datum Geodesi Nasional 1995 (DGN-95) is a synonym for WGS 84 in Indonesia.
-1979,Coordinate Reference System,32651,7311,DGN-95 / UTM zone 51N,Datum Geodesi Nasional 1995 (DGN-95) is a synonym for WGS 84 in Indonesia.
-1980,Coordinate Reference System,32652,7311,DGN-95 / UTM zone 52N,Datum Geodesi Nasional 1995 (DGN-95) is a synonym for WGS 84 in Indonesia.
-1981,Coordinate Reference System,32747,7311,DGN-95 / UTM zone 47S,Datum Geodesi Nasional 1995 (DGN-95) is a synonym for WGS 84 in Indonesia.
-1982,Coordinate Reference System,32748,7311,DGN-95 / UTM zone 48S,Datum Geodesi Nasional 1995 (DGN-95) is a synonym for WGS 84 in Indonesia.
-1983,Coordinate Reference System,32749,7311,DGN-95 / UTM zone 49S,Datum Geodesi Nasional 1995 (DGN-95) is a synonym for WGS 84 in Indonesia.
-1984,Coordinate Reference System,32750,7311,DGN-95 / UTM zone 50S,Datum Geodesi Nasional 1995 (DGN-95) is a synonym for WGS 84 in Indonesia.
-1985,Coordinate Reference System,32751,7311,DGN-95 / UTM zone 51S,Datum Geodesi Nasional 1995 (DGN-95) is a synonym for WGS 84 in Indonesia.
-1986,Coordinate Reference System,32752,7311,DGN-95 / UTM zone 52S,Datum Geodesi Nasional 1995 (DGN-95) is a synonym for WGS 84 in Indonesia.
-1987,Coordinate Reference System,32753,7311,DGN-95 / UTM zone 53S,Datum Geodesi Nasional 1995 (DGN-95) is a synonym for WGS 84 in Indonesia.
-1988,Coordinate Reference System,32754,7311,DGN-95 / UTM zone 54S,Datum Geodesi Nasional 1995 (DGN-95) is a synonym for WGS 84 in Indonesia.
-1990,Coordinate Reference System,4326,7311,DGN-95,Datum Geodesi Nasional 1995 (DGN-95) is a synonym for WGS 84 in Indonesia.
-1991,Coordinate Reference System,4327,7311,DGN-95 (geographic 3D),Datum Geodesi Nasional 1995 (DGN-95) is a synonym for WGS 84 in Indonesia.
-1992,Coordinate Reference System,4328,7311,DGN-95 (geocentric),Datum Geodesi Nasional 1995 (DGN-95) is a synonym for WGS 84 in Indonesia.
-1993,Datum,6326,7311,DGN-95,Datum Geodesi Nasional 1995 (DGN-95) is a synonym for WGS 84 in Indonesia.
-1994,Coordinate_Operation,1814,7301,Genuk to WGS 84 (3),
-1996,Datum,6820,7302,Segara (Jakarta),
-1997,Datum,6613,7302,Segara,
-1998,Datum,6613,7301,Samboja,Samboja-1 is one of two stations used as the baseline for extension to government triangulation by Total Indonesia in 1970-71.
-1999,Datum,6613,7301,P2 Exc,P2 Exc is one of two stations used as the baseline for extension to government triangulation by Total Indonesia in 1970-71. P2 Exc is a replacement satellite station to the destroyed station P2.
-2000,Datum,6613,7301,P2 Exc-T9,P2 Exc was a replacement satellite station to the destroyed station P2 from which several Toran stations including T9 were coordinated in 1970-71. When further control work was executed in 1995 P2 Exc was by then destroyed and T9 was used as its origin.
-2001,Coordinate Reference System,4613,7301,Samboja,Oil industry extension in the Mahakam delta region. Also known as P2 Exc and P2 Exc-T9.
-2002,Coordinate Reference System,4613,7301,P2 Exc-T9,Oil industry extension in the Mahakam delta region. Also known as P2 Exc and Samboja.
-2003,Coordinate Reference System,4613,7301,P2 Exc,Oil industry extension in the Mahakam delta region. Also known as P2 Exc-T9 and Samboja.
-2004,Coordinate_Operation,1838,7301,Samboja to WGS 84 (4),
-2005,Coordinate_Operation,1838,7301,P2 Exc-T9 to WGS 84 (4),
-2006,Datum,6614,7302,QND95,
-2008,Coordinate Reference System,2933,7301,Samboja / UTM zone 50S,
-2009,Coordinate Reference System,2933,7301,P2 Exc-T9 / UTM zone 50S,
-2010,Unit of Measure,9110,7301,sexagesimal degree,
-2011,Coordinate Reference System,2952,7301,NAD83(CSRS) / SCoPQ zone 10,
-2012,Coordinate Reference System,2945,7301,NAD83(CSRS) / SCoPQ zone 3,
-2013,Coordinate Reference System,2946,7301,NAD83(CSRS) / SCoPQ zone 4,
-2014,Coordinate Reference System,2947,7301,NAD83(CSRS) / SCoPQ zone 5,
-2015,Coordinate Reference System,2948,7301,NAD83(CSRS) / SCoPQ zone 6,
-2016,Coordinate Reference System,2949,7301,NAD83(CSRS) / SCoPQ zone 7,
-2017,Coordinate Reference System,2950,7301,NAD83(CSRS) / SCoPQ zone 8,
-2018,Coordinate Reference System,2951,7301,NAD83(CSRS) / SCoPQ zone 9,
-2019,Coordinate_Operation,18071,7301,Green Belt,
-2020,Coordinate Reference System,22991,7301,Egypt 1907 / Green Belt,
-2021,Coordinate_Operation Parameter,8806,7301,False westing,"This alias applies only in the case of projection methods which have an axis positive west, e.g. Transverse Mercator (South Orientated)."
-2022,Coordinate_Operation Parameter,8807,7301,False southing,"This alias applies only in the case of projection methods which have an axis positive south, e.g. Transverse Mercator (South Orientated)."
diff --git a/src/tiff/csv/area.csv b/src/tiff/csv/area.csv
deleted file mode 100644
index 67cfab0..0000000
--- a/src/tiff/csv/area.csv
+++ /dev/null
@@ -1,1751 +0,0 @@
-"AREA_CODE","AREA_NAME","AREA_OF_USE","ISO_A2_CODE","ISO_A3_CODE","ISO_N_CODE","REMARKS","INFORMATION_SOURCE","DATA_SOURCE","REVISION_DATE","CHANGE_ID","DEPRECATED"
-1118,China - Hong Kong,China - Hong Kong special administrative region.,HK,HKG,344,"""Hong Kong"" in ISO 3166",EPSG,EPSG,2002-06-22 00:00:00,2002.16,0
-1119,Hungary,Hungary.,HU,HUN,348,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1120,Iceland,Iceland.,IS,ISL,352,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1121,India,India.,IN,IND,356,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1122,Indonesia,Indonesia.,ID,IDN,360,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1123,"Iran, Islamic Republic of",Islamic Republic of Iran,IR,IRN,364,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1124,Iraq,Iraq.,IQ,IRQ,368,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1125,Ireland,Ireland.,IE,IRL,372,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1126,Israel,Israel.,IL,ISR,376,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1127,Italy,Italy.,IT,ITA,380,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1128,Jamaica,Jamaica.,JM,JAM,388,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1129,Japan,Japan.,JP,JPN,392,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1130,Jordan,Jordan.,JO,JOR,400,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1131,Kazakstan,Kazakstan.,KZ,KAZ,398,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1132,Kenya,Kenya.,KE,KEN,404,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1133,Kiribati,Kiribati.,KI,KIR,296,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1134,"Korea, Democratic People's Republic of (North Korea)",Democratic People's Republic of Korea (North Korea).,KP,PRK,408,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1135,"Korea, Republic of (South Korea)",Republic of Korea (South Korea).,KR,KOR,410,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1136,Kuwait,Kuwait.,KW,KWT,414,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1137,Kyrgyzstan,Kyrgyzstan.,KG,KGZ,417,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1138,Lao People's Democratic Republic (Laos).,Lao People's Democratic Republic (Laos).,LA,LAO,418,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1139,Latvia,Latvia.,LV,LVA,428,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1140,Lebanon,Lebanon.,LB,LBN,422,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1141,Lesotho,Lesotho.,LS,LSO,426,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1142,Liberia,Liberia.,LR,LBR,430,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1143,Libyan Arab Jamahiriya,Libyan Arab Jamahiriya.,LY,LBY,434,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1144,Liechtenstein,Liechtenstein.,LI,LIE,438,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1145,Lithuania,Lithuania.,LT,LTU,440,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1146,Luxembourg,Luxembourg.,LU,LUX,442,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1147,China - Macau,China - Macau special administrative region.,MO,MAC,446,"""Macau"" in ISO 3166.",EPSG,EPSG,2002-06-22 00:00:00,2002.16,0
-1148,"Macedonia, The Former Yugoslav Republic of",The Former Yugoslav Republic of Macedonia.,MK,MKD,807,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1149,Madagascar,Madagascar.,MG,MDG,450,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1150,Malawi,Malawi.,MW,MWI,454,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1151,Malaysia,Malaysia.,MY,MYS,458,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1152,Maldives,Maldives.,MV,MDV,462,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1153,Mali,Mali.,ML,MLI,466,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1154,Malta,Malta.,MT,MLT,470,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1155,Marshall Islands,Marshall Islands.,MH,MHL,584,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1156,Martinique,Martinique.,MQ,MTQ,474,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1157,Mauritania,Mauritania.,MR,MRT,478,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1158,Mauritius,Mauritius.,MU,MUS,480,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1159,Mayotte,Mayotte.,YT,MYT,175,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1160,Mexico,Mexico.,MX,MEX,484,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1161,"Micronesia, Federated States of",Federated States of Micronesia.,FM,FSM,583,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1162,"Moldova, Republic of",Republic of Moldova,MD,MDA,498,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1163,Monaco,Monaco.,MC,MCO,492,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1164,Mongolia,Mongolia.,MN,MNG,496,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1165,Montserrat,Montserrat.,MS,MSR,500,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1166,Morocco,Morocco.,MA,MAR,504,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1167,Mozambique,Mozambique.,MZ,MOZ,508,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1168,Myanmar (Burma),Myanmar (Burma).,MM,MMR,104,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/isoISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1169,Namibia,Namibia.,NA,NAM,516,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1170,Nauru,Nauru.,NR,NRU,520,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1171,Nepal,Nepal.,NP,NPL,524,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1172,Netherlands,Netherlands.,NL,NLD,528,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1173,Netherlands Antilles,Netherlands Antilles.,AN,ANT,530,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1174,New Caledonia,New Caledonia.,NC,NCL,540,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1175,New Zealand,New Zealand.,NZ,NZL,554,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1176,Nicaragua,Nicaragua.,NI,NIC,558,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1177,Niger,Niger.,NE,NER,562,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1178,Nigeria,Nigeria.,NG,NGA,566,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1179,Niue,Niue.,NU,NIU,570,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1180,Norfolk Island,Norfolk Island.,NF,NFK,574,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1181,Northern Mariana Islands,Northern Mariana Islands.,MP,MNP,580,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1182,Norway,Norway.,NO,NOR,578,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1183,Oman,Oman.,OM,OMN,512,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1184,Pakistan,Pakistan.,PK,PAK,586,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1185,Palau,Palau.,PW,PLW,585,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1186,Panama,Panama.,PA,PAN,591,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1187,Papua New Guinea (PNG),Papua New Guinea (PNG).,PG,PNG,598,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1188,Paraguay,Paraguay.,PY,PRY,600,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1189,Peru,Peru.,PE,PER,604,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1190,Philippines,Philippines.,PH,PHL,608,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1191,Pitcairn,Pitcairn.,PN,PCN,612,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1192,Poland,Poland.,PL,POL,616,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1193,Portugal,Portugal.,PT,PRT,620,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1194,Puerto Rico,Puerto Rico.,PR,PRI,630,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1195,Qatar,Qatar.,QA,QAT,634,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1196,Reunion,Reunion.,RE,REU,638,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1197,Romania,Romania.,RO,ROU,642,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1198,Russian Federation,Russian Federation.,RU,RUS,643,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1199,Rwanda,Rwanda.,RW,RWA,646,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1200,Saint Kitts and Nevis,Saint Kitts and Nevis.,KN,KNA,659,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1201,Saint Lucia,Saint Lucia.,LC,LCA,662,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1202,Saint Vincent and the Grenadines,Saint Vincent and the Grenadines.,VC,VCT,670,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1203,Samoa,Samoa.,WS,WSM,882,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1204,San Marino,San Marino.,SM,SMR,674,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1205,Sao Tome and Principe,Sao Tome and Principe.,ST,STP,678,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1206,Saudi Arabia,Saudi Arabia.,SA,SAU,682,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1207,Senegal,Senegal.,SN,SEN,686,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1208,Seychelles,Seychelles.,SC,SYC,690,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1209,Sierra Leone,Sierra Leone.,SL,SLE,694,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1210,Singapore,Singapore.,SG,SGP,702,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1211,Slovakia (Slovak Republic),Slovakia (Slovak Republic).,SK,SVK,703,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1212,Slovenia,Slovenia.,SI,SVN,705,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1213,Solomon Islands,Solomon Islands.,SB,SLB,90,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1214,Somalia,Somalia.,SO,SOM,706,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1215,South Africa,South Africa.,ZA,ZAF,710,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1216,South Georgia and the South Sandwich Islands,South Georgia and the South Sandwich Islands.,GS,SGS,239,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1217,Spain,Spain.,ES,ESP,724,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1218,Sri Lanka,Sri Lanka.,LK,LKA,144,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1219,Saint Helena,Saint Helena.,SH,SHN,654,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1220,Saint Pierre and Miquelon,Saint Pierre and Miquelon.,PM,SPM,666,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1221,Sudan,Sudan.,SD,SDN,736,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1222,Suriname,Suriname.,SR,SUR,740,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1223,Svalbard and Jan Mayen,Svalbard and Jan Mayen.,SJ,SJM,744,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1224,Swaziland,Swaziland.,SZ,SWZ,748,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1225,Sweden,Sweden.,SE,SWE,752,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1226,Switzerland,Switzerland.,CH,CHE,756,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1227,Syrian Arab Republic,Syrian Arab Republic.,SY,SYR,760,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1228,"Taiwan, Province of China","Taiwan, Province of China",TW,TWN,158,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1229,Tajikistan,Tajikistan.,TJ,TJK,762,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1230,"Tanzania, United Republic of",United Republic of Tanzania.,TZ,TZA,834,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1231,Thailand,Thailand.,TH,THA,764,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1232,Togo,Togo.,TG,TGO,768,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1233,Tokelau,Tokelau.,TK,TKL,772,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1234,Tonga,Tonga.,TO,TON,776,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1235,Trinidad and Tobago,Trinidad and Tobago.,TT,TTO,780,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1236,Tunisia,Tunisia.,TN,TUN,788,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1237,Turkey,Turkey.,TR,TUR,792,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1238,Turkmenistan,Turkmenistan.,TM,TKM,795,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1239,Turks and Caicos Islands,Turks and Caicos Islands.,TC,TCA,796,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1240,Tuvalu,Tuvalu.,TV,TUV,798,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1241,Uganda,Uganda.,UG,UGA,800,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1242,Ukraine,Ukraine.,UA,UKR,804,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1243,United Arab Emirates (UAE),United Arab Emirates (UAE).,AE,ARE,784,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1244,United Kingdom (UK),United Kingdom (UK).,GB,GBR,826,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1245,United States (USA),United States (USA).,US,USA,840,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1246,United States Minor Outlying Islands,United States Minor Outlying Islands,UM,UMI,581,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1247,Uruguay,Uruguay.,UY,URY,858,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1248,Uzbekistan,Uzbekistan.,UZ,UZB,860,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1249,Vanuatu,Vanuatu.,VU,VUT,548,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1250,Holy See (Vatican City State),Holy See (Vatican City State),VA,VAT,336,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1251,Venezuela,Venezuela.,VE,VEN,862,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1252,Vietnam,Vietnam.,VN,VNM,704,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1253,"Virgin Islands, British",British Virgin Islands.,VG,VGB,92,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1254,"Virgin Islands, US",US Virgin Islands.,VI,VIR,850,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1255,Wallis and Futuna,Wallis and Futuna.,WF,WLF,876,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1256,Western Sahara,Western Sahara.,EH,ESH,732,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1257,Yemen,Yemen.,YE,YEM,887,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1258,Yugoslavia,Yugoslavia.,YU,YUG,891,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1259,"Congo, The Democratic Republic of the Congo (Zaire)",The Democratic Republic of the Congo (Zaire).,CD,COD,180,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1260,Zambia,Zambia.,ZM,ZMB,894,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1261,Zimbabwe,Zimbabwe.,ZW,ZWE,716,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1262,World,World.,,,,,EPSG,EPSG,2001-06-05 00:00:00,,0
-1263,Not specified,Not specified.,,,,,EPSG,EPSG,2000-06-23 00:00:00,,0
-1264,UK - Great Britain onshore,United Kingdom (UK) - Great Britain - England  Scotland  Wales - onshore; Isle of Man.,,,,,EPSG,EPSG,1995-12-02 00:00:00,,0
-1265,Argentina - Comodoro Rivadavia,Argentina - Comodoro Rivadavia area.,,,,,EPSG,EPSG,2000-03-07 00:00:00,,0
-1266,Venezuela - Puerto La Cruz,Venezuela - Puerto La Cruz area.,,,,,EPSG,EPSG,2000-03-07 00:00:00,,0
-1267,Venezuela - Barinas,Venezuela - Barinas area.,,,,,EPSG,EPSG,2000-06-23 00:00:00,,0
-1268,Venezuela - Falcon state,Venezuela - Falcon state.,,,,,EPSG,EPSG,2000-06-23 00:00:00,,0
-1269,Venezuela - Pedregal area of Falcon state,Venezuela - Pedregal area of Falcon state.,,,,,EPSG,EPSG,2000-06-23 00:00:00,,0
-1270,Venezuela - Maracaibo south,Venezuela - south Maracaibo area.,,,,,EPSG,EPSG,2000-06-23 00:00:00,,0
-1271,Africa - Ethiopia and Sudan,Ethiopia; Sudan.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1272,Asia - Middle East - Kuwait and Saudi,Kuwait; Saudi Arabia.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1273,Antigua,Antigua and Barbuda - Antigua.,,,,,EPSG,EPSG,1999-04-22 00:00:00,,0
-1274,Brazil - Aratu,Brazil - coastal areas south of 2 deg 55 min South.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1275,Netherlands - onshore,Netherlands - onshore.,,,,,EPSG,EPSG,1995-12-02 00:00:00,,0
-1276,"Africa - Botswana, Malawi, Zambia, Zimbabwe.",Botswana; Malawi; Zambia; Zimbabwe.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1277,"Africa - Kenya, Tanzania and Uganda",Kenya; Tanzania; Uganda.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1278,Antarctica - Australian sector,Antarctica - Australian sector.,,,,,EPSG,EPSG,2001-06-05 00:00:00,,0
-1279,Australasia - Australia and PNG - AGD66,Australia - Australian Capital Territory (ACT); New South Wales (NSW); Northern Territory (NT); Tasmania; Victoria.  Papua New Guinea (PNG).,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1280,Australia - Western Australia (WA),Australia - Western Australia (WA).,,,,,EPSG,EPSG,2001-08-15 00:00:00,,0
-1281,Australia - mainland,Australia - Australian Capital Territory (ACT); New South Wales (NSW); Northern Territories (NT); Queensland; South Australia (SA); Western Australia (WA); Victoria.,,,,,EPSG,EPSG,1996-09-12 00:00:00,,0
-1282,Australia - Tasmania,Australia - Tasmania.,,,,,EPSG,EPSG,1996-09-12 00:00:00,,0
-1283,Canada - Maritime Provinces,Canada - New Brunswick; Nova Scotia; Prince Edward Island.,,,,,EPSG,EPSG,1997-07-22 00:00:00,,0
-1284,Europe - Soviet Union,Armenia;  Azerbaijan;  Belorus;  Estonia;  Georgia;  Kazakstan;  Kirgizstan;  Latvia;  Lithuania;  Moldavia;  Russian Federation;  Tadzhikistan;  Turkmenistan;  Ukraine;  Uzbekistan.,,,,,EPSG,EPSG,1996-09-12 00:00:00,,0
-1285,Indonesia - Java,Indonesia - Java.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1286,Europe - Liechtenstein and Switzerland.,Liechtenstein; Switzerland.,,,,,EPSG,EPSG,1999-10-20 00:00:00,,0
-1287,Indonesia - Banga & Belitung Islands.,Indonesia - Banga & Belitung Islands.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1288,Angola - Angola proper,Angola - Angola proper,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1289,Canada - CVD28,Canada - Alberta; British Columbia; Manitoba; New Brunswick; Nova Scotia; Ontario; Prince Edward Island; Quebec; Saskatchewan.,,,,,EPSG,EPSG,1996-12-12 00:00:00,,0
-1290,Africa - Botswana and South Africa.,Botswana; South Africa.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1291,Asia - Caspian Sea,Azerbaijan - offshore; Kazakstan - offshore;  Russian Federation - Caspian Sea;  Turkmenistan - offshore.,,,,,EPSG,EPSG,1996-09-12 00:00:00,,0
-1292,Argentina - Neuquen province,Argentina - Neuquen province.,,,,,EPSG,EPSG,2000-03-07 00:00:00,,0
-1024,Afghanistan,Afghanistan.,AF,AFG,4,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1025,Albania,Albania.,AL,ALB,8,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1026,Algeria,Algeria.,DZ,DZA,12,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1027,American Samoa,American Samoa.,AS,ASM,16,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1028,Andorra,Andorra.,AD,AND,20,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1029,Angola,Angola.,AO,AGO,24,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1030,Anguilla,Anguilla.,AI,AIA,660,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1031,Antarctica,Antarctica.,AQ,ATA,10,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1032,Antigua and Barbuda,Antigua and Barbuda.,AG,ATG,28,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1033,Argentina,Argentina.,AR,ARG,32,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1034,Armenia,Armenia.,AM,ARM,51,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1035,Aruba,Aruba.,AW,ABW,533,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1036,Australia,Australia.,AU,AUS,36,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1037,Austria,Austria.,AT,AUT,40,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1038,Azerbaijan,Azerbaijan.,AZ,AZE,31,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1039,Bahamas,Bahamas.,BS,BHS,44,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1040,Bahrain,Bahrain.,BH,BHR,48,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1041,Bangladesh,Bangladesh.,BD,BGD,50,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1042,Barbados,Barbados.,BB,BRB,52,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1043,Belarus,Belarus.,BY,BLR,112,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1044,Belgium,Belgium.,BE,BEL,56,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1045,Belize,Belize.,BZ,BLZ,84,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1046,Benin,Benin.,BJ,BEN,204,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1047,Bermuda,Bermuda.,BM,BMU,60,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1048,Bhutan,Bhutan.,BT,BTN,64,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1049,Bolivia,Bolivia.,BO,BOL,68,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1050,Bosnia and Herzegowina,Bosnia and Herzegowina.,BA,BIH,70,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1051,Botswana,Botswana.,BW,BWA,72,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1052,Bouvet Island,Bouvet Island.,BV,BVT,74,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1053,Brazil,Brazil.,BR,BRA,76,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1054,British Indian Ocean Territory,British Indian Ocean Territory.,IO,IOT,86,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1055,Brunei Darussalam,Brunei Darussalam.,BN,BRN,96,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1056,Bulgaria,Bulgaria.,BG,BGR,100,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1057,Burkina Faso,Burkina Faso.,BF,BFA,854,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1058,Burundi,Burundi.,BI,BDI,108,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1059,Cambodia,Cambodia.,KH,KHM,116,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1060,Cameroon,Cameroon.,CM,CMR,120,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1061,Canada,Canada - Alberta; British Columbia; Manitoba; New Brunswick; Newfoundland; Northwest Territories; Nova Scotia; Nunavut; Ontario; Prince Edward Island; Quebec; Saskatchewan; Yukon.,CA,CAN,124,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1062,Cape Verde,Cape Verde.,CV,CPV,132,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1063,Cayman Islands,Cayman Islands.,KY,CYM,136,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1064,Central African Republic,Central African Republic.,CF,CAF,140,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1065,Chad,Chad.,TD,TCD,148,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1066,Chile,Chile.,CL,CHL,152,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1067,China,China.,CN,CHN,156,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1068,Christmas Island,Christmas Island.,CX,CXR,162,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1069,Cocos (Keeling) Islands,Cocos (Keeling) Islands.,CC,CCK,166,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1070,Colombia,Colombia.,CO,COL,170,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1071,Comoros,Comoros.,KM,COM,174,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1072,Congo,Congo.,CG,COG,178,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1073,Cook Islands,Cook Islands.,CK,COK,184,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1074,Costa Rica,Costa Rica.,CR,CRI,188,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1075,Cote d'Ivoire (Ivory Coast),C�te d'Ivoire (Ivory Coast).,CI,CIV,384,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1076,Croatia,Croatia.,HR,HRV,191,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1077,Cuba,Cuba.,CU,CUB,192,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1078,Cyprus,Cyprus.,CY,CYP,196,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1079,Czech Republic,Czech Republic.,CZ,CZE,203,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1080,Denmark,Denmark.,DK,DNK,208,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1081,Djibouti,Djibouti.,DJ,DJI,262,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1082,Dominica,Dominica.,DM,DMA,212,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1083,Dominican Republic,Dominican Republic.,DO,DOM,214,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1084,East Timor,East Timor.,TP,TMP,626,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1085,Ecuador,Ecuador.,EC,ECU,218,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1086,Egypt,Egypt.,EG,EGY,818,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1087,El Salvador,El Salvador.,SV,SLV,222,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1088,Equatorial Guinea,Equatorial Guinea.,GQ,GNQ,226,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1089,Eritrea,Eritrea.,ER,ERI,232,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1090,Estonia,Estonia.,EE,EST,233,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1091,Ethiopia,Ethiopia.,ET,ETH,231,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1092,Falkland Islands (Malvinas),Falkland Islands (Malvinas).,FK,FLK,238,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1093,Faroe Islands,Faroe Islands.,FO,FRO,234,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1094,Fiji,Fiji.,FJ,FJI,242,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1095,Finland,Finland.,FI,FIN,246,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1096,France,France.,FR,FRA,250,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1097,French Guiana,French Guiana.,GF,GUF,254,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1098,French Polynesia,French Polynesia.,PF,PYF,258,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1099,French Southern Territories,French Southern Territories.,TF,ATF,260,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1100,Gabon,Gabon.,GA,GAB,266,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1101,Gambia,Gambia.,GM,GMB,270,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1102,Georgia,Georgia.,GE,GEO,268,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1103,Germany,Germany.,DE,DEU,276,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1104,Ghana,Ghana.,GH,GHA,288,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1105,Gibraltar,Gibraltar.,GI,GIB,292,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1106,Greece,Greece.,GR,GRC,300,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1107,Greenland,Greenland.,GL,GRL,304,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1108,Grenada,Grenada.,GD,GRD,308,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1109,Guadeloupe,Guadeloupe.,GP,GLP,312,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1110,Guam,Guam.,GU,GUM,316,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1111,Guatemala,Guatemala.,GT,GTM,320,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1112,Guinea,Guinea.,GN,GIN,324,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1113,Guinea-Bissau,Guinea-Bissau.,GW,GNB,624,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1114,Guyana,Guyana.,GY,GUY,328,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1115,Haiti,Haiti.,HT,HTI,332,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1116,Heard Island and McDonald Islands,Heard Island and McDonald Islands.,HM,HMD,334,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1117,Honduras,Honduras.,HN,HND,340,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,2002.341,0
-1293,Brazil - Corrego Alegre,Brazil - NE coastal area between 45 deg W and 40 deg West.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1294,Portugal - onshore,Portugal - onshore.,,,,,EPSG,EPSG,2001-06-05 00:00:00,,0
-1295,Germany - DHDN,"Germany - onshore - Baden-Wurtemberg, Bayern, Hessen, Niedersachsen, Nordrhein-Westfalen, Rheinland-Pfalz, Saarland, Schleswig-Holstein. Also former DDR states of Sachsen and Thuringen by transformation.",,,,,EPSG,EPSG,2001-06-05 00:00:00,,0
-1296,Europe - ED50,Europe - west - Denmark; Faroe Islands; France offshore; Italy; Ireland offshore; Netherlands offshore; Germany offshore; Greece (offshore); North Sea; Norway; Spain; Turkey; United Kingdom UKCS offshore. Egypt - Western Desert.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1297,Europe - ED87,Europe - west.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1298,Europe - ETRS89,Europe: Austria; Belgium; Bosnia and Herzegovina; Croatia; Czech Republic; Denmark; Estonia; Finland; France; Germany; Hungary; Italy; Latvia; Liechtenstein; Lithuania; Luxembourg; Netherlands; Norway; Poland; Portugal; Romania; Slovakia; Slovenia; Spain; Sweden; Switzerland; United Kingdom (UK).,,,,,EPSG,EPSG,2000-10-19 00:00:00,,0
-1299,Europe - EVRF2000,Europe: Austria; Belgium; Bosnia and Herzegovina; Croatia; Czech Republic; Denmark; Estonia; Finland; France; Germany; Hungary; Italy; Latvia; Liechtenstein; Lithuania; Luxembourg; Netherlands; Norway; Poland; Portugal; Romania; Slovakia; Slovenia; Spain; Sweden; Switzerland; United Kingdom (UK).,,,,,EPSG,EPSG,2001-09-03 00:00:00,,0
-1300,Iran - FD58,Islamic Republic of Iran - Gulf coast and Arwaz areas.,,,,,EPSG,EPSG,1998-11-11 00:00:00,,0
-1301,Portugal - central Azores,"Portugal - central Azores - Graciosa, Terceira, Sao Jorge, Pico, Faial.",,,,,EPSG,EPSG,2001-06-05 00:00:00,,0
-1302,Asia - Cambodia and Vietnam,Cambodia; Vietnam.,,,,,EPSG,EPSG,1999-10-20 00:00:00,,0
-1303,South America - Tierra del Fuego.,Argentina and Chile - Tierra del Fuego.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1304,Asia - Myanmar and Thailand,Myanmar (Burma); Thailand.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1305,Europe - Ireland (Republic and Ulster),Ireland. United Kingdom (UK) - Northern Ireland (Ulster).,,,,,EPSG,EPSG,2001-11-06 00:00:00,,0
-1306,Europe - Czechoslovakia,Czech Republic; Slovakia.,,,,,EPSG,EPSG,2000-03-07 00:00:00,,0
-1307,Asia - Bangladesh; India; Myanmur; Pakistan.,Bangladesh; India; Myanmar (Burma); Pakistan.,,,,,EPSG,EPSG,1999-10-20 00:00:00,,0
-1308,Asia - Bangladesh; India; Pakistan.,Bangladesh; India; Pakistan.,,,,,EPSG,EPSG,1999-10-20 00:00:00,,0
-1309,Asia - Malaysia (west) and Singapore.,Malaysia - West Malaysia; Singapore.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1310,Kuwait - Kuwait City,Kuwait - Kuwait City.,,,,,EPSG,EPSG,1996-04-12 00:00:00,,0
-1311,Venezuela - Cabinas,Venezuela - Cabinas area.,,,,,EPSG,EPSG,2000-06-23 00:00:00,,0
-1312,Venezuela - Lake Maracaibo,Venezuela - Lake Maracaibo area.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1313,Venezuela - Loma Quintana,Venezuela - north.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1314,Portugal - Madeira islands,"Portugal - Madeira, Porto Santo and Desertas islands.",,,,,EPSG,EPSG,2001-06-05 00:00:00,,0
-1315,Mozambique - west.,Mozambique - west.,,,,,EPSG,EPSG,1998-04-16 00:00:00,,0
-1316,Indonesia - Sulawesi SW,Indonesia - south west Sulawesi.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1317,Angola - Cabinda offshore,Angola - Cabinda offshore.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1318,Angola - Cabinda,Angola - Cabinda,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1319,Venezuela - Maracaibo area,Venezuela - Maracaibo area.,,,,,EPSG,EPSG,2000-06-23 00:00:00,,0
-1320,Venezuela - Maturin,Venezuela - Maturin area.,,,,,EPSG,EPSG,2000-03-07 00:00:00,,0
-1321,Europe - MGI,"Austria. Bosnia and Herzegowina. Croatia. FYR Macedonia. Slovenia. Yugoslavia (Serbia, Montenegro).",,,,,EPSG,EPSG,2000-03-07 00:00:00,,0
-1322,Trinidad and Tobago - Tobago,Trinidad and Tobago - Tobago.,,,,,EPSG,EPSG,1999-10-20 00:00:00,,0
-1323,USA - conus,United States (USA) - Alabama; Arizona; Arkansas; California; Colorado; Connecticut; Delaware; Florida; Georgia; Idaho; Illinois; Indiana; Iowa; Kansas; Kentucky; Louisiana; Maine; Maryland; Massachusetts; Michigan; Minnesota; Mississippi; Missouri; Montana; Nebraska; Nevada; New Hampshire; New Jersey; New Mexico; New York; North Carolina; North Dakota; Ohio; Oklahoma; Oregon; Pennsylvania; Rhode Island; South Carolina; South Dakota; Tennessee; Texas; Utah; Vermont; Virg [...]
-1324,USA (all states),United States (USA) - Alabama; Alaska; Arizona; Arkansas; California; Colorado; Connecticut; Delaware; Florida; Georgia; Hawaii; Idaho; Illinois; Indiana; Iowa; Kansas; Kentucky; Louisiana; Maine; Maryland; Massachusetts; Michigan; Minnesota; Mississippi; Missouri; Montana; Nebraska; Nevada; New Hampshire; New Jersey; New Mexico; New York; North Carolina; North Dakota; Ohio; Oklahoma; Oregon; Pennsylvania; Rhode Island; South Carolina; South Dakota; Tennessee; Texas [...]
-1325,North America - all Canada and USA subunits,North America: Canada - Alberta; British Columbia; Manitoba; New Brunswick; Newfoundland; North West Territories; Nova Scotia; Nunavet; Ontario; Prince Edward Island; Quebec; Saskatchewan; Yukon. United States (USA) - Alabama; Alaska; Arizona; Arkansas; California; Colorado; Connecticut; Delaware; Florida; Georgia; Idaho; Illinois; Indiana; Iowa; Kansas; Kentucky; Louisiana; Maine; Maryland; Massachusetts; Michigan; Minnesota; Mississippi; [...]
-1326,France - mainland,France - mainland.,,,,,EPSG,EPSG,2001-06-05 00:00:00,,0
-1327,France - Corsica,France - Corsica.,,,,,EPSG,EPSG,1996-09-12 00:00:00,,0
-1328,Indonesia - Kalimantan E - Mahakam delta,Indonesia - east Kalimantan - Mahakam delta area.,,,,,EPSG,EPSG,1997-11-13 00:00:00,,0
-1329,Mozambique - south,Mozambique - south.,,,,,EPSG,EPSG,1998-04-16 00:00:00,,0
-1330,USA - Alaska,United States (USA) - Alaska,,,,,EPSG,EPSG,2001-09-03 00:00:00,,0
-1331,USA - Alaska - St. George Island,United States (USA) - Alaska - St. George Island.,,,,,EPSG,EPSG,1999-05-24 00:00:00,,0
-2040,WGS84 / UTM zone 21N,Between 60 and 54 deg West; northern hemisphere. Barbados. Brazil. Canada - Newfoundland; Quebec. French Guiana. Greenland. Guyana. St. Pierre and Miquelon. Suriname.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2041,WGS84 / UTM zone 21S,Between 60 and 54 deg West; southern hemisphere. Argentina. Bolivia. Brazil. Falkland Islands (Malvinas). Paraguay. Uruguay.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2042,WGS84 / UTM zone 22N,Between 54 and 48 deg West; northern hemisphere. Brazil. Canada - Newfoundland. French Guiana. Greenland.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2043,WGS84 / UTM zone 22S,Between 54 and 48 deg West; southern hemisphere. Brazil.  Uruguay.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2044,WGS84 / UTM zone 23N,Between 48 and 42 deg West; northern hemisphere. Greenland.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2045,WGS84 / UTM zone 23S,Between 48 and 42 deg West; southern hemisphere. Brazil.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2046,WGS84 / UTM zone 24N,Between 42 and 36 deg West; northern hemisphere. Greenland.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2047,WGS84 / UTM zone 24S,Between 42 and 36 deg West; southern hemisphere. Brazil. South Georgia and the South Sandwich Islands.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2048,WGS84 / UTM zone 25N,Between 36 and 30 deg West; northern hemisphere. Greenland.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2049,WGS84 / UTM zone 25S,Between 36 and 30 deg West; southern hemisphere. Brazil.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2050,WGS84 / UTM zone 26N,Between 30 and 24 deg West; northern hemisphere. Greenland. Iceland.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2051,WGS84 / UTM zone 26S,Between 30 and 24 deg West; southern hemisphere.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2052,WGS84 / UTM zone 27N,Between 24 and 18 deg West; northern hemisphere. Greenland. Iceland.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2053,WGS84 / UTM zone 27S,Between 24 and 18 deg West; southern hemisphere.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2054,WGS84 / UTM zone 28N,Between 18 and 12 deg West; northern hemisphere. Gambia. Greenland. Guinea. Guinea-Bissau. Iceland. Ireland - offshore Porcupine Basin. Mauritania. Morocco. Senegal. Sierra Leone. Western Sahara.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2055,WGS84 / UTM zone 28S,Between 18 and 12 deg West; southern hemisphere.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2056,WGS84 / UTM zone 29N,Between 12 and 6 deg West; northern hemisphere. Algeria. Cote D'Ivoire (Ivory Coast). Faroe Islands. Guinea. Ireland. Mali. Mauritania. Morocco. Portugal. Sierra Leone. Spain. United Kingdom (UK). Western Sahara.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2057,WGS84 / UTM zone 29S,Between 12 and 6 deg West; southern hemisphere.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2058,WGS84 / UTM zone 30N,Between 6 deg West and 0 deg East; northern hemisphere. Algeria. Burkino Faso. Cote' Ivoire (Ivory Coast). Faroe Islands - offshore. France. Ghana. Gibraltar. Ireland - offshore Irish Sea. Mali. Mauritania. Morocco. Spain. United Kingdom (UK).,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2059,WGS84 / UTM zone 30S,Between 6 deg West and 0 deg East; southern hemisphere.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2060,WGS84 / UTM zone 31N,Between 0 and 6 deg East; northern hemisphere. Algeria. Andorra. Benin. Bukino Faso. Denmark - North Sea. France. Germany - North Sea. Ghana. Luxembourg. Mali. Netherlands. Niger. Nigeria. Norway. Spain. Togo. United Kingdom (UK) - North Sea.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2061,WGS84 / UTM zone 31S,Between 0 and 6 deg East; southern hemisphere.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2062,WGS84 / UTM zone 32N,Between 6 and 12 deg East; northern hemisphere. Algeria. Austria. Cameroon. Denmark. Equatorial Guinea. France. Gabon. Germany. Italy. Libya. Liechtenstein. Monaco. Netherlands. Niger. Nigeria. Norway. Sao Tome and Principe. Svalbard and Jan Mayen Islands. Sweden. Switzerland. Tunisia. Vatican City State.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2063,WGS84 / UTM zone 32S,Between 6 and 12 deg East; southern hemisphere. Angola. Congo. Gabon. Namibia.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2064,WGS84 / UTM zone 33N,Between 12 and 18 deg East; northern hemisphere. Austria. Bosnia and Herzegowina. Cmeroon. Central African Republic. Chad. Congo. Croatia. Czech Republic. Democratic Republic of the Congo (Zaire). Gabon. Germany. Hungary. Italy. Libya. Malta. Niger. Nigeria. Norway. Poland. San Marino. Slovakia. Slovenia. Svalbard and Jan Mayen Islands. Sweden.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2065,WGS84 / UTM zone 33S,Between 12 and 18 deg East; southern hemisphere. Angola. Congo. Democratic Republic of the Congo (Zaire). Gabon. Namibia. South Africa.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2066,WGS84 / UTM zone 34N,Between 18 and 24 deg East; northern hemisphere. Albania. Belarus. Bosnia and Herzegowina. Bulgaria. Central African Republic. Chad. Croatia. Democratic Republic of the Congo (Zaire). Estonia. Finland. FYR Macedonia. Greece. Hungary. Italy. Latvia. Libya. Lithuania. Norway. Poland. Romania. Russian Federation. Slovakia. Sudan. Svalbard. Sweden. Ukraine. Yugoslavia.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2067,WGS84 / UTM zone 34S,Between 18 and 24 deg East; southern hemisphere. Angola. Botswana. Democratic Republic of the Congo (Zaire). Namibia. South Africa. Zambia.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2068,WGS84 / UTM zone 35N,Between 24 and 30 deg East; northern hemisphere. Belarus. Bulgaria. Central African Republic. Democratic Republic of the Congo (Zaire). Egypt. Estonia. Finland. Greece. Latvia. Lesotho. Libya. Lithuania. Moldova. Norway. Romania. Russian Federation. Sudan. Svalbard. Turkey. Uganda. Ukraine.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2069,WGS84 / UTM zone 35S,Between 24 and 30 deg East; southern hemisphere. Botswana. Burundi. Democratic Republic of the Congo (Zaire). Rwanda. South Africa. Tanzania. Uganda. Zambia. Zimbabwe.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2070,WGS84 / UTM zone 36N,Between 30 and 36 deg East; northern hemisphere. Belarus. Cyprus. Egypt. Ethiopia. Finland. Israel. Jordan. Kenya. Lebanon. Norway. Russian Federation. Saudi Arabia. Sudan. Syria. Turkey. Uganda. Ukraine.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2071,WGS84 / UTM zone 36S,Between 30 and 36 deg East; southern hemisphere. Burundi. Kenya. Malawi. Mozambique. Rwanda. South Africa. Swaziland. Tanzania. Uganda. Zambia. Zimbabwe.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2072,WGS84 / UTM zone 37N,Between 36 and 42 deg East; northern hemisphere. Djibouti. Egypt. Eritrea. Ethiopia. Georgia. Iraq. Jordan. Kenya. Lebanon. Russian Federation. Saudi Arabia. Somalia. Sudan. Syria. Turkey. Ukraine.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2073,WGS84 / UTM zone 37S,Between 36 and 42 deg East; southern hemisphere. Kenya. Mozambique. Tanzania.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2074,WGS84 / UTM zone 38N,Between 42 and 48 deg East; northern hemisphere. Armenia. Azerbaijan. Djibouti. Eritrea. Ethiopia. Georgia. Islamic Republic of Iran. Iraq. Kazakstan. Kuwait. Russian Federation. Saudi Arabia. Somalia. Turkey. Yemen.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2075,WGS84 / UTM zone 38S,Between 42 and 48 deg East; southern hemisphere. Madagascar.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2076,WGS84 / UTM zone 39N,Between 48 and 54 deg East; northern hemisphere. Azerbaijan. Bahrain. Islamic Republic of Iran. Kazakstan. Kuwait. Oman. Qatar. Russian Federation. Saudi Arabia. Somalia. Turkmenistan. United Arab Emirates. Yemen.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2077,WGS84 / UTM zone 39S,Between 48 and 54 deg East; southern hemisphere. Madagascar.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2078,WGS84 / UTM zone 40N,Between 54 and 60 deg East; northern hemisphere. Islamic Republic of Iran. Kazakstan. Oman. Russian Federation. Saudi Arabia. Turkmenistan. United Arab Emirates. Uzbekistan.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2079,WGS84 / UTM zone 40S,Between 54 and 60 deg East; southern hemisphere. Seychelles.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2080,WGS84 / UTM zone 41N,Between 60 and 66 deg East; northern hemisphere. Afghanistan. Islamic Republic of Iran. Kazakstan. Pakistan. Russian Federation. Turkmenistan.  Uzbekistan.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2081,WGS84 / UTM zone 41S,Between 60 and 66 deg East; southern hemisphere.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2082,WGS84 / UTM zone 42N,Between 66 and 72 deg East; northern hemisphere. Afghanistan. India. Kazakstan. Kyrgyzstan. Pakistan. Russian Federation. Tajikistan. Uzbekistan.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2083,WGS84 / UTM zone 42S,Between 66 and 72 deg East; southern hemisphere.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2084,WGS84 / UTM zone 43N,Between 72 and 78 deg East; northern hemisphere. China. India. Kazakstan. Kyrgyzstan. Maldives. Pakistan. Russian Federation. Tajikistan.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2085,WGS84 / UTM zone 43S,Between 72 and 78 deg East; southern hemisphere.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1332,USA - Alaska - St. Lawrence Island,United States (USA) - Alaska - St. Lawrence Island.,,,,,EPSG,EPSG,1999-05-24 00:00:00,,0
-1333,USA - Alaska - St. Paul Island,United States (USA) - Alaska - St. Paul Island.,,,,,EPSG,EPSG,1999-05-24 00:00:00,,0
-1334,USA - Hawaii,United States (USA) - Hawaii.,,,,,EPSG,EPSG,1999-05-24 00:00:00,,0
-1335,Caribbean - Puerto Rico and the Virgin Islands,Puerto Rico; Virgin Islands (British); Virgin Islands (US).,,,,,EPSG,EPSG,1999-05-24 00:00:00,,0
-1336,Canada - CSRS98,Canada - Alberta; New Brunswick; Saskatchewan; Prince Edward Island; and Quebec.,,,,,EPSG,EPSG,2000-10-19 00:00:00,,1
-1337,USA and American Samoa HARN,American Samoa. United States (USA) - Alabama; Arizona; Arkansas; California; Colorado; Connecticut; Delaware; Florida; Georgia; Hawaii; Idaho; Illinois; Indiana; Iowa; Kansas; Kentucky; Louisiana; Maine; Maryland; Massachusetts; Michigan; Minnesota; Mississippi; Missouri; Montana; Nebraska; Nevada; New Hampshire; New Jersey; New Mexico; New York; North Dakota; Ohio; Oklahoma; Oregon; Rhode Island; South Dakota; Tennessee; Texas; Utah; Vermont; Virginia;  [...]
-1338,Iran - Taheri refinery,Islamic Republic of Iran - Taheri refinery site only.,,,,,EPSG,EPSG,1999-10-20 00:00:00,,0
-1339,Trinidad and Tobago - Trinidad,Trinidad and Tobago - Trinidad.,,,,,EPSG,EPSG,1999-10-20 00:00:00,,0
-1340,Yemen - South Yemen,Yemen - South Yemen.,,,,,EPSG,EPSG,2000-03-07 00:00:00,,0
-1341,South America - all countries,"South America - Argentina, Brazil, Bolivia, Chile, Colombia, Ecuador, French Guiana, Guyana, Paraguay, Peru, Suriname, Uruguay, Venezuela.",,,,,EPSG,EPSG,2000-10-19 00:00:00,,0
-1342,Sierra Leone - Freetown Peninsula,Sierra Leone - Freetown Peninsula.,,,,,EPSG,EPSG,2001-06-05 00:00:00,,0
-1343,Germany - east Germany all states,Germany - states of former East Germany (DDR) - Brandenburg; Mecklenburg-Vorpommern; Sachsen; Sachsen-Anhalt; Thuringen.,,,,,EPSG,EPSG,2001-06-05 00:00:00,,0
-1344,Portugal - western Azores,"Portugal - western Azores - Flores, Corvo.",,,,,EPSG,EPSG,2001-06-05 00:00:00,,0
-1345,Portugal - eastern Azores,"Portugal - eastern Azores - Sao Miguel, Santa Maria.",,,,,EPSG,EPSG,2001-06-05 00:00:00,,0
-1346,Qatar - onshore,Qatar - onshore.,,,,,EPSG,EPSG,2000-03-07 00:00:00,,0
-1347,Belgium - onshore,Belgium - onshore.,,,,,EPSG,EPSG,2000-10-19 00:00:00,,0
-1348,South America - PSAD56,Bolivia; Ecuador; Peru; [Venezuela].,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1349,North America - NAD27,North and central America: Antigua and Barbuda. Belize. Canada - Alberta; British Columbia; Manitoba; New Brunswick; Newfoundland; North West Territories; Nova Scotia; Nunavut; Ontario; Prince Edward Island; Quebec; Saskatchewan; Yukon. Costa Rica. Cuba. El Salvador. Guatemala. Honduras. Mexico. Nicaragua. United States (USA) - Alabama; Alaska; Arizona; Arkansas; California; Colorado; Connecticut; Delaware; Florida; Georgia; Idaho; Illinois; Indiana; Iowa; Kans [...]
-1350,North America - NAD83,North America: Canada - Alberta; British Columbia; Manitoba; New Brunswick; Newfoundland; North West Territories; Nova Scotia; Nunavet; Ontario; Prince Edward Island; Quebec; Saskatchewan; Yukon. Greenland. Mexico. United States (USA) - Alabama; Alaska; Arizona; Arkansas; California; Colorado; Connecticut; Delaware; Florida; Georgia; Hawaii; Idaho; Illinois; Indiana; Iowa; Kansas; Kentucky; Louisiana; Maine; Maryland; Massachusetts; Michigan; Minnesota; Mississ [...]
-1351,Asia - Middle East - Nahrwan,Arabian Gulf; Kuwait; Qatar - offshore; United Arab Emirates (UAE) - Abu Dhabi; Dubai; Sharjah; Ajman; Fujairah; Ras Al Kaimah; Umm Al Qaiwain.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1352,Norway - onshore,Norway - onshore.,,,,,EPSG,EPSG,2000-03-07 00:00:00,,0
-1353,France - onshore,France - onshore.,,,,,EPSG,EPSG,2000-03-07 00:00:00,,0
-1354,Europe - British Isles - UK and Ireland,Ireland - onshore.  United Kingdom (UK) - onshore - England; Scotland; Wales; Northern Ireland.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1355,Indonesia - Sumatra,Indonesia - Sumatra.,,,,,EPSG,EPSG,2000-03-07 00:00:00,,0
-1356,"Asia - Middle East - Israel, Jordan and Palestine Territory",Israel; Jordan; Palestine Territory.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.34,0
-1357,Europe - Pulkovo,Armenia; Azerbaijan; Belarus; Estonia; Georgia; Kazakstan; Kirgistan; Latvia; Lithuania; Moldova; Russian Federation; Tadzhikstan; Turkmenistan; Ukraine; Uzbekistan; Germany (former DDR); Czech Republic; Slovakia; Hungary; Poland; Romania; Latvia; Lithuania; Estonia; Albania.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1358,South America - SAD69,South America - Brazil.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1359,Indonesia - Kalimantan SE,Indonesia - southeast Kalimantan.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1360,Indonesia - Kalimantan E,Indonesia - east Kalimantan.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1361,Sudan - south,Sudan - south.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1362,Asia - Brunei and East Malaysia,Brunei; Malaysia - East Malaysia (Sabah; Sarawak).,,,,,EPSG,EPSG,2000-10-19 00:00:00,,0
-1363,UAE - Abu Dhabi and Dubai,United Arab Emirates (UAE) - Abu Dhabi; Dubai.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1364,Asia - Japan and Korea,Japan; North Korea; South Korea.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1365,Algeria - N of 32 deg N,Algeria - north of 32 deg North.,,,,,EPSG,EPSG,2000-03-07 00:00:00,,0
-1366,"Africa - Algeria, Morocco and Tunisia",Algeria; Morocco; Tunisia.,,,,,EPSG,EPSG,2000-10-19 00:00:00,,0
-1367,Canada - Ontario,Canada - Ontario.,,,,,EPSG,EPSG,1999-05-12 00:00:00,,0
-1368,Canada - Quebec,Canada - Quebec.,,,,,EPSG,EPSG,1999-10-22 00:00:00,,0
-1369,France - Alsace,France - Alsace.,,,,,EPSG,EPSG,1996-09-12 00:00:00,,0
-1370,Venezuela - Deltana,Venezuela - Deltana area.,,,,,EPSG,EPSG,2000-06-23 00:00:00,,0
-1371,Venezuela - Guarico state,Venezuela - Guarico state.,,,,,EPSG,EPSG,2000-06-23 00:00:00,,0
-1372,USA - Alabama,United States (USA) - Alabama.,,,,,EPSG,EPSG,2001-08-15 00:00:00,,0
-1373,USA - Arizona,United States (USA) - Arizona.,,,,,EPSG,EPSG,2001-08-15 00:00:00,,0
-1374,USA - Arkansas,United States (USA) - Arkansas.,,,,,EPSG,EPSG,2001-08-15 00:00:00,,0
-1375,USA - California,United States (USA) - California.,,,,,EPSG,EPSG,2001-09-03 00:00:00,,0
-1376,USA - Colorado,United States (USA) - Colorado.,,,,,EPSG,EPSG,2001-08-15 00:00:00,,0
-1377,USA - Connecticut,United States (USA) - Connecticut - counties of Fairfield; Hartford; Litchfield; Middlesex; New Haven; New London; Tolland; Windham.,,,,,EPSG,EPSG,2001-11-06 00:00:00,,0
-1378,USA - Delaware,United States (USA) - Delaware - counties of Kent; New Castle; Sussex.,,,,,EPSG,EPSG,2001-11-06 00:00:00,,0
-1379,USA - Florida,United States (USA) - Florida.,,,,,EPSG,EPSG,2001-08-15 00:00:00,,0
-1380,USA - Georgia,United States (USA) - Georgia.,,,,,EPSG,EPSG,2001-08-15 00:00:00,,0
-1381,USA - Idaho,United States (USA) - Idaho.,,,,,EPSG,EPSG,2001-09-03 00:00:00,,0
-1382,USA - Illinois,United States (USA) - Illinois.,,,,,EPSG,EPSG,2001-08-15 00:00:00,,0
-1383,USA - Indiana,United States (USA) - Indiana.,,,,,EPSG,EPSG,2001-08-15 00:00:00,,0
-1384,USA - Iowa,United States (USA) - Iowa.,,,,,EPSG,EPSG,2001-08-15 00:00:00,,0
-1385,USA - Kansas,United States (USA) - Kansas.,,,,,EPSG,EPSG,2001-08-15 00:00:00,,0
-1386,USA - Kentucky,United States (USA) - Kentucky.,,,,,EPSG,EPSG,2001-08-15 00:00:00,,0
-1387,USA - Louisiana,United States (USA) - Louisiana.,,,,,EPSG,EPSG,2001-08-15 00:00:00,,0
-1388,USA - Maine,United States (USA) - Maine.,,,,,EPSG,EPSG,2001-08-15 00:00:00,,0
-1389,USA - Maryland,United States (USA) - Maryland - counties of Allegany; Anne Arundel; Baltimore; Calvert; Caroline; Carroll; Cecil; Charles; Dorchester; Frederick; Garrett; Harford; Howard; Kent; Montgomery; Prince Georges; Queen Annes; Somerset; St. Marys; Talbot; Washington; Wicomico; Worcester.,,,,,EPSG,EPSG,2001-11-06 00:00:00,,0
-1390,USA - Massachusetts,United States (USA) - Massachusetts.,,,,,EPSG,EPSG,2001-09-03 00:00:00,,0
-1391,USA - Michigan,United States (USA) - Michigan.,,,,,EPSG,EPSG,1996-12-12 00:00:00,,0
-1392,USA - Minnesota,United States (USA) - Minnesota.,,,,,EPSG,EPSG,2001-08-15 00:00:00,,0
-1393,USA - Mississippi,United States (USA) - Mississippi.,,,,,EPSG,EPSG,2001-08-15 00:00:00,,0
-1394,USA - Missouri,United States (USA) - Missouri.,,,,,EPSG,EPSG,2001-08-15 00:00:00,,0
-1395,USA - Montana,United States (USA) - Montana - counties of Beaverhead; Big Horn; Blaine; Broadwater; Carbon; Carter; Cascade; Chouteau; Custer; Daniels; Dawson; Deer Lodge; Fallon; Fergus; Flathead; Gallatin; Garfield; Glacier; Golden Valley; Granite; Hill; Jefferson; Judith Basin; Lake; Lewis and Clark; Liberty; Lincoln; Madison; McCone; Meagher; Mineral; Missoula; Musselshell; Park; Petroleum; Phillips; Pondera; Powder River; Powell; Prairie; Ravalli; Richland; Roosevelt; Rosebud;  [...]
-1396,USA - Nebraska,United States (USA) - Nebraska - counties of Adams; Antelope; Arthur; Banner; Blaine; Boone; Box Butte; Boyd; Brown; Buffalo; Burt; Butler; Cass; Cedar; Chase; Cherry; Cheyenne; Clay; Colfax; Cuming; Custer; Dakota; Dawes; Dawson; Deuel; Dixon; Dodge; Douglas; Dundy; Fillmore; Franklin; Frontier; Furnas; Gage; Garden; Garfield; Gosper; Grant; Greeley; Hall; Hamilton; Harlan; Hayes; Hitchcock; Holt; Hooker; Howard; Jefferson; Johnson; Kearney; Keith; Keya Paha; Kimball [...]
-1397,USA - Nevada,United States (USA) - Nevada.,,,,,EPSG,EPSG,2001-08-15 00:00:00,,0
-1398,USA - New Hampshire,United States (USA) - New Hampshire - counties of Belknap; Carroll; Cheshire; Coos; Grafton; Hillsborough; Merrimack; Rockingham; Strafford; Sullivan.,,,,,EPSG,EPSG,2000-03-07 00:00:00,,0
-1399,USA - New Jersey,United States (USA) - New Jersey - counties of Atlantic; Bergen; Burlington; Camden; Cape May; Cumberland; Essex; Gloucester; Hudson; Hunterdon; Mercer; Middlesex; Monmouth; Morris; Ocean; Passaic; Salem; Somerset; Sussex; Union; Warren.,,,,,EPSG,EPSG,2000-03-07 00:00:00,,0
-1400,USA - New Mexico,United States (USA) - New Mexico.,,,,,EPSG,EPSG,2001-08-15 00:00:00,,0
-1401,USA - New York,United States (USA) - New York.,,,,,EPSG,EPSG,2001-08-15 00:00:00,,0
-1402,USA - North Carolina,United States (USA) - North Carolina - counties of Alamance; Alexander; Alleghany; Anson; Ashe; Avery; Beaufort; Bertie; Bladen; Brunswick; Buncombe; Burke; Cabarrus; Caldwell; Camden; Carteret; Caswell; Catawba; Chatham; Cherokee; Chowan; Clay; Cleveland; Columbus; Craven; Cumberland; Currituck; Dare; Davidson; Davie; Duplin; Durham; Edgecombe; Forsyth; Franklin; Gaston; Gates; Graham; Granville; Greene; Guilford; Halifax; Harnett; Haywood; Henderson; Hertford; [...]
-1403,USA - North Dakota,United States (USA) - North Dakota.,,,,,EPSG,EPSG,2001-08-15 00:00:00,,0
-1404,USA - Ohio,United States (USA) - Ohio.,,,,,EPSG,EPSG,2001-08-15 00:00:00,,0
-1405,USA - Oklahoma,United States (USA) - Oklahoma.,,,,,EPSG,EPSG,2001-08-15 00:00:00,,0
-1406,USA - Oregon,United States (USA) - Oregon.,,,,,EPSG,EPSG,2001-09-03 00:00:00,,0
-1407,USA - Pennsylvania,United States (USA) - Pennsylvania.,,,,,EPSG,EPSG,2001-09-03 00:00:00,,0
-1408,USA - Rhode Island,United States (USA) - Rhode Island - counties of Bristol; Kent; Newport; Providence; Washington.,,,,,EPSG,EPSG,2000-03-07 00:00:00,,0
-1409,USA - South Carolina,United States (USA) - South Carolina - counties of Abbeville; Aiken; Allendale; Anderson; Bamberg; Barnwell; Beaufort; Berkeley; Calhoun; Charleston; Cherokee; Chester; Chesterfield; Clarendon; Colleton; Darlington; Dillon; Dorchester; Edgefield; Fairfield; Florence; Georgetown; Greenville; Greenwood; Hampton; Horry; Jasper; Kershaw; Lancaster; Laurens; Lee; Lexington; Marion; Marlboro; McCormick; Newberry; Oconee; Orangeburg; Pickens; Richland; Saluda; Spartanb [...]
-1410,USA - South Dakota,United States (USA) - South Dakota.,,,,,EPSG,EPSG,2001-08-15 00:00:00,,0
-1411,USA - Tennessee,United States (USA) - Tennessee - counties of Anderson; Bedford; Benton; Bledsoe; Blount; Bradley; Campbell; Cannon; Carroll; Carter; Cheatham; Chester; Claiborne; Clay; Cocke; Coffee; Crockett; Cumberland; Davidson; De Kalb; Decatur; Dickson; Dyer; Fayette; Fentress; Franklin; Gibson; Giles; Grainger; Greene; Grundy; Hamblen; Hamilton; Hancock; Hardeman; Hardin; Hawkins; Haywood; Henderson; Henry; Hickman; Houston; Humphreys; Jackson; Jefferson; Johnson; Knox; Lake; [...]
-1412,USA - Texas,United States (USA) - Texas.,,,,,EPSG,EPSG,2001-09-03 00:00:00,,0
-1413,USA - Utah,United States (USA) - Utah.,,,,,EPSG,EPSG,2001-08-15 00:00:00,,0
-1414,USA - Vermont,United States (USA) - Vermont - counties of Addison; Bennington; Caledonia; Chittenden; Essex; Franklin; Grand Isle; Lamoille; Orange; Orleans; Rutland; Washington; Windham; Windsor.,,,,,EPSG,EPSG,2000-03-07 00:00:00,,0
-1415,USA - Virginia,United States (USA) - Virginia.,,,,,EPSG,EPSG,2001-08-15 00:00:00,,0
-1416,USA - Washington,United States (USA) - Washington.,,,,,EPSG,EPSG,2001-09-03 00:00:00,,0
-1417,USA - West Virginia,United States (USA) - West Virginia.,,,,,EPSG,EPSG,2001-08-15 00:00:00,,0
-1418,USA - Wisconsin,United States (USA) - Wisconsin.,,,,,EPSG,EPSG,2001-08-15 00:00:00,,0
-1419,USA - Wyoming,United States (USA) - Wyoming.,,,,,EPSG,EPSG,2001-08-15 00:00:00,,0
-1420,Canada - Quebec - E of 57 deg W,Canada - Quebec - east of 57 deg West.,,,,,EPSG,EPSG,1997-11-13 00:00:00,,0
-1421,Canada - Quebec - 60 to 57 deg W.,Canada - Quebec between 60 and 57 deg West.,,,,,EPSG,EPSG,2000-10-19 00:00:00,,0
-1422,Canada - Quebec - 63 to 60 deg W,Canada - Quebec between 63 and 60 deg West.,,,,,EPSG,EPSG,2000-10-19 00:00:00,,0
-1423,Canada - Quebec - 66 to 63 deg W,Canada - Quebec between 66 and 63 deg West.,,,,,EPSG,EPSG,2000-10-19 00:00:00,,0
-1424,Canada - Quebec - 69 to 66 deg W,Canada - Quebec between 69 and  66 deg West.,,,,,EPSG,EPSG,2000-10-19 00:00:00,,0
-1425,Canada - Quebec - 72 to 69 deg W,Canada - Quebec between 72 and 69 deg West.,,,,,EPSG,EPSG,1997-11-13 00:00:00,,0
-1426,Canada - Quebec - 75 to 72 deg W,Canada - Quebec between 75 and 72 deg West.,,,,,EPSG,EPSG,2000-10-19 00:00:00,,0
-1427,Canada - Quebec - 78 to 75 deg W,Canada - Quebec between 78 and 75 deg West.,,,,,EPSG,EPSG,2000-10-19 00:00:00,,0
-1428,Canada - Quebec - W of 78 deg W,Canada - Quebec west of 78 deg West.,,,,,EPSG,EPSG,2000-10-19 00:00:00,,0
-1429,Canada - Ontario - E of 75 deg W,Canada - Ontario - east of 75 deg West.,,,,,EPSG,EPSG,2000-03-07 00:00:00,,0
-1430,Canada - Ontario - 78 to 75 deg W,Canada - Ontario - between 78 and 75 deg West.,,,,,EPSG,EPSG,2000-03-07 00:00:00,,0
-1431,Canada - Ontario - MTM zone 10,Canada - Ontario - between 79 deg 30 min and 78 deg W in area to north of 47 deg N; between 80 deg 15 min and 78 deg W in area between 46 deg and 47 deg N; between 81 deg and 78 deg W in area south of 46 deg N.,,,,,EPSG,EPSG,2000-03-07 00:00:00,,0
-1432,Canada - Ontario - MTM zone 11,Canada - Ontario - south of 46 deg N and west of 81 deg West.,,,,,EPSG,EPSG,1997-11-13 00:00:00,,0
-1433,Canada - Ontario - MTM zone 12,Canada - Ontario - between 82 deg 30 min and 79 deg 30 min W in area to north of 47 deg N; between 82 deg 30 min and 80 deg 15 min W in area between 46 deg and 47 deg N; between 82 deg 30 min and 79 deg 30 min W in area north of 47 deg N.,,,,,EPSG,EPSG,1997-11-13 00:00:00,,0
-1434,Canada - Ontario - MTM zone 13,Canada - Ontario - between 85 deg 30 min and 82 deg 30 min West and north of 46 deg North.,,,,,EPSG,EPSG,1997-11-13 00:00:00,,0
-1435,Canada - Ontario - 88.5 to 85.5 deg W,Canada - Ontario - between 88 deg 30 min and 85 deg 30 min West.,,,,,EPSG,EPSG,1997-11-13 00:00:00,,0
-1436,Canada - Ontario - 91.5 to 88.5 deg W,Canada - Ontario - between 91 deg 30 min and 88 deg 30 min West.,,,,,EPSG,EPSG,1997-11-13 00:00:00,,0
-1437,Canada - Ontario - 94.5 to 91.5 deg W,Canada - Ontario - between 94 deg 30 min and 91 deg 30 min West.,,,,,EPSG,EPSG,1997-11-13 00:00:00,,0
-1438,Canada - Ontario - W of 94.5 deg W,Canada - Ontario - west of 94 deg 30 min West.,,,,,EPSG,EPSG,1997-11-13 00:00:00,,0
-1439,Canada - Ontario - 96 to 90 deg W,Canada - Ontario - between 96 and 90 deg West.,,,,,EPSG,EPSG,2000-03-07 00:00:00,,0
-1440,Canada - Ontario - 90 to 84 deg W,Canada - Ontario - between 90 and 84 deg West.,,,,,EPSG,EPSG,2000-03-07 00:00:00,,0
-1441,Canada - Ontario - 84 to 78 deg W,Canada - Ontario - between 84 and 78 deg West.,,,,,EPSG,EPSG,2000-03-07 00:00:00,,0
-1442,Canada - Ontario - E of 78 deg W,Canada - Ontario - east of 78 deg West.,,,,,EPSG,EPSG,2000-03-07 00:00:00,,0
-1443,Canada - Quebec - 78 to 72 deg W,Canada - Quebec - between 78 and 72 deg West.,,,,,EPSG,EPSG,2000-10-19 00:00:00,,0
-1444,Canada - Quebec - 72 to 66 deg W,Canada - Quebec - between 72 and 66 deg West.,,,,,EPSG,EPSG,2000-03-07 00:00:00,,0
-1445,Canada - Quebec - 66 to 60 deg W,Canada - Quebec - between 66 and 60 deg West.,,,,,EPSG,EPSG,2000-03-07 00:00:00,,0
-1446,Canada - Quebec - E of 60 deg W,Canada - Quebec - east of 60 deg West.,,,,,EPSG,EPSG,2000-10-19 00:00:00,,0
-1447,Canada - New Brunswick,Canada - New Brunswick.,,,,,EPSG,EPSG,1999-10-20 00:00:00,,0
-1448,Canada - 72 to 66 deg W,Canada - New Brunswick west of 66 deg West; Quebec between 72 and 66 deg West.,,,,,EPSG,EPSG,2000-03-07 00:00:00,,0
-1449,Canada - 66 to 60 deg W,Canada - New Brunswick east of 66 deg West; Nova Scotia; Prince Edward Island; Quebec between 66 and 60 deg West.,,,,,EPSG,EPSG,2002-07-13 00:00:00,2002.41,0
-1450,Cote d'Ivoire (Ivory Coast) - E of 6 deg W,C�te d'Ivoire (Ivory Coast) east of 6 deg West.,,,,,EPSG,EPSG,2000-03-07 00:00:00,,0
-1451,Cote d'Ivoire (Ivory Coast) - W of 6 deg W,C�te d'Ivoire (Ivory Coast) west of 6 deg West.,,,,,EPSG,EPSG,2000-03-07 00:00:00,,0
-1452,Vietnam - W of 108 deg E,Vietnam - west of 108 deg East.,,,,,EPSG,EPSG,2000-03-07 00:00:00,,0
-1453,Vietnam - E of 108 deg E,Vietnam - east of 108 deg East.,,,,,EPSG,EPSG,1998-11-11 00:00:00,,0
-1454,South Africa - Walvis Bay,South Africa - Walvis Bay.,,,,,EPSG,EPSG,1996-04-12 00:00:00,,0
-1455,South Africa - W of 18 deg E,South Africa - west of 18 deg East.,,,,,EPSG,EPSG,1996-04-12 00:00:00,,0
-1456,South Africa - 18 to 20 deg E,South Africa - between 18 and 20 deg East.,,,,,EPSG,EPSG,1996-04-12 00:00:00,,0
-1457,South Africa - 20 to 22 deg E,South Africa - between 20 and 22 deg East.,,,,,EPSG,EPSG,1996-04-12 00:00:00,,0
-1458,South Africa - 22 to 24 deg E,South Africa - between 22 and 24 deg East.,,,,,EPSG,EPSG,1996-04-12 00:00:00,,0
-1459,South Africa - 24 to 26 deg E,Lesotho  - west of 26 deg East. South Africa - between 24 and 26 deg East.,,,,,EPSG,EPSG,1996-04-12 00:00:00,,0
-1460,South Africa - 26 to 28 deg E,Lesotho  - east of 26 deg East.  South Africa - between 26 and 28 deg East.,,,,,EPSG,EPSG,1996-04-12 00:00:00,,0
-1461,South Africa - 28 to 30 deg E,South Africa - between 28 and 30 deg East.,,,,,EPSG,EPSG,1996-04-12 00:00:00,,0
-1462,South Africa - 30 to 32 deg E,South Africa - between 30 and 32 deg East.  Swaziland.,,,,,EPSG,EPSG,1996-04-12 00:00:00,,0
-1463,South Africa - E of 32 deg E,South Africa - east of 32 deg East.,,,,,EPSG,EPSG,1996-04-12 00:00:00,,0
-1464,Iran - W of 48 deg E,Islamic Republic of Iran - west of 48 deg East.,,,,,EPSG,EPSG,2000-03-07 00:00:00,,0
-1465,Iran - 48 to 54 deg E,Islamic Republic of Iran - between 48 and 54 deg East.,,,,,EPSG,EPSG,2000-03-07 00:00:00,,0
-1466,Iran - 54 to 60 deg E,Islamic Republic of Iran - between 54 and 60 deg East.,,,,,EPSG,EPSG,2000-03-07 00:00:00,,0
-1467,Iran - E of 60 deg E,Islamic Republic of Iran - east of 60 deg East.,,,,,EPSG,EPSG,2000-03-07 00:00:00,,0
-1468,Guinea - W of 12 deg W,Guinea - west of 12 deg West.,,,,,EPSG,EPSG,1999-12-09 00:00:00,,0
-1469,Guinea - E of 12 deg W,Guinea - east of 12 deg West.,,,,,EPSG,EPSG,1999-12-09 00:00:00,,0
-1470,Libya - W of 10 degrees E,Libyan Arab Jamahiriya - west of 10 deg East.,,,,,EPSG,EPSG,2000-03-07 00:00:00,,0
-1471,Libya - 10 to 12 degrees E,Libyan Arab Jamahiriya - between 10 and 12 deg East.,,,,,EPSG,EPSG,2000-03-07 00:00:00,,0
-1472,Libya - 12 to 14 degrees E,Libyan Arab Jamahiriya - between 12 and 14 deg East.,,,,,EPSG,EPSG,2000-03-07 00:00:00,,0
-1473,Libya - 14 to 16 degrees E,Libyan Arab Jamahiriya - between 14 and 16 deg East.,,,,,EPSG,EPSG,2000-03-07 00:00:00,,0
-1474,Libya - 16 to 18 degrees E,Libyan Arab Jamahiriya - between 16 and 18 deg East.,,,,,EPSG,EPSG,2000-03-07 00:00:00,,0
-1475,Libya - 18 to 20 degrees E,Libyan Arab Jamahiriya - between 18 and 20 deg East.,,,,,EPSG,EPSG,2000-03-07 00:00:00,,0
-1476,Libya - 20 to 22 degrees E,Libyan Arab Jamahiriya - between 20 and 22 deg East.,,,,,EPSG,EPSG,2000-03-07 00:00:00,,0
-1477,Libya - 22 to 24 degrees E,Libyan Arab Jamahiriya - between 22 and 24 deg East.,,,,,EPSG,EPSG,2000-03-07 00:00:00,,0
-1478,Libya - E of 24 degrees E,Libyan Arab Jamahiriya - east of 24 deg East.,,,,,EPSG,EPSG,2000-03-07 00:00:00,,0
-1479,Libya - W of 12 degrees E,Libyan Arab Jamahiriya - west of 12 deg East.,,,,,EPSG,EPSG,2000-03-07 00:00:00,,0
-1480,Libya - 12 to 18 degrees E,Libyan Arab Jamahiriya - between 12 and 18 deg East.,,,,,EPSG,EPSG,2000-03-07 00:00:00,,0
-1481,Libya - 18 to 24 degrees E,Libyan Arab Jamahiriya - between 18 and 24 deg East.,,,,,EPSG,EPSG,2000-03-07 00:00:00,,0
-1482,Libya - W of 15 degrees E,Libyan Arab Jamahiriya - west of 15 deg East.,,,,,EPSG,EPSG,2000-03-07 00:00:00,,0
-1483,Argentina - Neuquen province - 70.5 to 67.5 deg W,Argentina - Neuquen province between 70 deg 30 min and 67 deg 30 min West.,,,,,EPSG,EPSG,2000-03-07 00:00:00,,0
-1484,Argentina - Comodoro Rivadavia - W of 67.5 deg W,Argentina - Comodoro Rivadavia area west of 67 deg 30 min West.,,,,,EPSG,EPSG,2000-03-07 00:00:00,,0
-1485,Argentina - Tierra del Fuego - onshore W of 67.5 deg W,Argentina - Tierra del Fuego onshore west of 67 deg 30 min West.,,,,,EPSG,EPSG,2000-03-07 00:00:00,,0
-1486,Argentina - Tierra del Fuego - offshore,Argentina - Tierra del Fuego offshore.,,,,,EPSG,EPSG,2000-03-07 00:00:00,,0
-1487,Cuba - N of 21.5 deg N,Cuba - north of 21deg 30min North.,,,,,EPSG,EPSG,1995-12-02 00:00:00,,0
-1488,Cuba - S of 21.5 deg N,Cuba - south of 21deg 30min North.,,,,,EPSG,EPSG,1995-12-02 00:00:00,,0
-1489,Tunisia - offshore,Tunisia - offshore.,,,,,EPSG,EPSG,2000-03-07 00:00:00,,0
-1490,Yemen - W of 48 deg E,Yemen - west of 48 deg East.,,,,,EPSG,EPSG,2000-03-07 00:00:00,,0
-1491,Yemen - E of 48 deg E,Yemen - east of 48 deg East.,,,,,EPSG,EPSG,2000-03-07 00:00:00,,0
-1492,Yemen - South Yemen - W of 48 deg E,Yemen - South Yemen west of 48 deg East.,,,,,EPSG,EPSG,2000-03-07 00:00:00,,0
-1493,Yemen - South Yemen - E of 48 deg E,Yemen - South Yemen east of 48 deg East.,,,,,EPSG,EPSG,2000-03-07 00:00:00,,0
-1494,Vietnam - Meekong delta,Vietnam - Meekong delta.,,,,,EPSG,EPSG,2000-03-07 00:00:00,,0
-1495,Vietnam - offshore Nam Con Son basin,Vietnam - offshore Nam Con Son basin.,,,,,EPSG,EPSG,2000-03-07 00:00:00,,0
-1496,South Korea - E of 128 deg E,Republic of Korea (South Korea) - east of 128 deg East.,,,,,EPSG,EPSG,2000-03-07 00:00:00,,0
-1497,South Korea - 126 to 128 deg E.,Republic of Korea (South Korea) - between 126 and 128 deg East.,,,,,EPSG,EPSG,2000-03-07 00:00:00,,0
-1498,South Korea - W of 126 deg E,Republic of Korea (South Korea) - west of 126 deg East.,,,,,EPSG,EPSG,2000-03-07 00:00:00,,0
-1499,Venezuela - Maracaibo - blocks I II and III..,"Venezuela - Maracaibo area offshore blocks I, II and III.",,,,,EPSG,EPSG,2000-06-23 00:00:00,,0
-1500,New Zealand - North Island,New Zealand - North Island.,,,,,EPSG,EPSG,1999-10-20 00:00:00,,0
-1501,New Zealand - South Island,New Zealand - South Island.,,,,,EPSG,EPSG,1999-10-20 00:00:00,,0
-1502,New Zealand - offshore W of 168 deg E,New Zealand - offshore west of 168 deg East.,,,,,EPSG,EPSG,2000-10-19 00:00:00,,0
-1503,New Zealand - offshore 168 to 174 deg E,New Zealand - offshore between 168 and 174 deg East.,,,,,EPSG,EPSG,2000-10-19 00:00:00,,0
-1504,New Zealand - offshore E of 174 deg E,New Zealand - offshore east of 174 deg East.,,,,,EPSG,EPSG,2000-10-19 00:00:00,,0
-1505,Ghana - offshore,Ghana - offshore.,,,,,EPSG,EPSG,2000-10-19 00:00:00,,0
-1506,Canada - Saskatchewan - E of 108 deg W,Canada - Saskatchewan east of 108 deg West.,,,,,EPSG,EPSG,2000-10-19 00:00:00,,0
-1507,Canada - Alberta and Saskatchewan - 114 to 108 deg W,Canada - Alberta east of 114 deg West; Saskatchewan west of 108 deg West.,,,,,EPSG,EPSG,2000-10-19 00:00:00,,0
-1508,Canada - Alberta W of 114 deg W,Canada - Alberta west of 114 deg West.,,,,,EPSG,EPSG,2000-10-19 00:00:00,,0
-1509,Sierra Leone - W of 12 deg W,Sierra Leone - west of 12 deg West.,,,,,EPSG,EPSG,2001-06-05 00:00:00,,0
-1510,Sierra Leone - E of 12 deg W,Sierra Leone - east of 12 deg West.,,,,,EPSG,EPSG,2001-06-05 00:00:00,,0
-1511,USA - conus and Alaska,United States (USA) - Alabama; Alaska; Arizona; Arkansas; California; Colorado; Connecticut; Delaware; Florida; Georgia; Idaho; Illinois; Indiana; Iowa; Kansas; Kentucky; Louisiana; Maine; Maryland; Massachusetts; Michigan; Minnesota; Mississippi; Missouri; Montana; Nebraska; Nevada; New Hampshire; New Jersey; New Mexico; New York; North Carolina; North Dakota; Ohio; Oklahoma; Oregon; Pennsylvania; Rhode Island; South Carolina; South Dakota; Tennessee; Texas;  [...]
-1512,Germany - east Germany - W of 10.5 deg E,Germany - states of former East Germany (DDR) west of 10 deg 30 min East - Thuringen.,,,,,EPSG,EPSG,2001-06-05 00:00:00,,0
-1513,Germany - east Germany - 10.5 to 13.5 deg E,Germany - states of former East Germany (DDR) between 10 deg 30 min and 13 deg 30 min East - Brandenburg; Mecklenburg-Vorpommern; Sachsen; Sachsen-Anhalt; Thuringen.,,,,,EPSG,EPSG,2001-06-05 00:00:00,,0
-1514,Germany - east Germany - E of 13.5 deg E,Germany - states of former East Germany (DDR) east of 13 deg 30 min East - Brandenburg; Mecklenburg-Vorpommern; Sachsen.,,,,,EPSG,EPSG,2001-06-05 00:00:00,,0
-1515,Poland - zone I,Poland - southeast - south of 52 deg 20 min North and east of 18 deg East.,,,,,EPSG,EPSG,2001-06-05 00:00:00,,0
-1516,Poland - zone II,Poland - northeast - north of 51 deg 20 min North and east of 19 deg East.,,,,,EPSG,EPSG,2001-06-05 00:00:00,,0
-1517,Poland - zone III,Poland - northwest - north of 52 deg 10 min North and west of 20 deg East.,,,,,EPSG,EPSG,2001-06-05 00:00:00,,0
-1518,Poland - zone IV,Poland - southwest - south of  53 deg 20 min North and west of 19 deg 05 min East.,,,,,EPSG,EPSG,2001-06-05 00:00:00,,0
-1519,Poland - zone V,"Poland - south central - between 49 deg 20 min North and 51 deg 20 min North, 18 deg 20 min East and 19 deg 40min East.",,,,,EPSG,EPSG,2001-06-05 00:00:00,,0
-1520,Poland - W of 16.5 deg E,Poland - west of 16 deg 30 min East.,,,,,EPSG,EPSG,2001-06-05 00:00:00,,0
-1521,Poland - 16.5 to 19.5 deg E,Poland - between 16 deg 30 min and 19 deg 30 min East.,,,,,EPSG,EPSG,2001-06-05 00:00:00,,0
-1522,Poland - 19.5 to 22.5 deg E,Poland - between 19 deg 30 min and 22 deg 30 min East.,,,,,EPSG,EPSG,2001-06-05 00:00:00,,0
-1523,Poland - E of 22.5 deg E,Poland - east of 22 deg 30 min East.,,,,,EPSG,EPSG,2001-06-05 00:00:00,,0
-1524,Turkey - W of 28.5 deg E,Turkey west of 28 deg 30 min East.,,,,,EPSG,EPSG,2001-06-05 00:00:00,,0
-1525,Turkey - 28.5 to 31.5 deg E,Turkey between 28 deg 30 min and 31 deg 30 min East.,,,,,EPSG,EPSG,2001-06-05 00:00:00,,0
-1526,Turkey - 31.5 to 34.5 deg E,Turkey between 31 deg 30 min and 34 deg 30 min East.,,,,,EPSG,EPSG,2001-06-05 00:00:00,,0
-1527,Turkey - 34.5 to 37.5 deg E,Turkey between 34 deg 30 min and 37 deg 30 min East.,,,,,EPSG,EPSG,2001-06-05 00:00:00,,0
-1528,Turkey - 37.5 to 40.5 deg E,Turkey between 37 deg 30 min and 40 deg 30 min East.,,,,,EPSG,EPSG,2001-06-05 00:00:00,,0
-1529,Turkey - 40.5 to 43.5 deg E,Turkey between 40 deg 30 min and 43 deg 30 min East.,,,,,EPSG,EPSG,2001-06-05 00:00:00,,0
-1530,Turkey - E of 43.5 deg E,Turkey east of 43 deg 30 min East.,,,,,EPSG,EPSG,2001-06-05 00:00:00,,0
-1531,Canada - New Brunswick - W of 66 deg W,Canada - New Brunswick - west of 66 deg West.,,,,,EPSG,EPSG,1997-07-22 00:00:00,,0
-1532,Canada - Maritime Provinces - E of 66 deg W,Canada - New Brunswick - east of 66 deg W.; Canada - Nova Scotia; Canada - Prince Edward Island.,,,,,EPSG,EPSG,1997-07-22 00:00:00,,0
-1533,Canada - Prince Edward Island,Canada - Prince Edward Island.,,,,,EPSG,EPSG,2000-10-19 00:00:00,,0
-1534,Canada - Nova Scotia - E of 63 deg W,Canada - Nova Scotia - east of 63 deg West.,,,,,EPSG,EPSG,1999-05-24 00:00:00,,0
-1535,Canada - Nova Scotia - W of 63 deg W,Canada - Nova Scotia - west of 63 deg West.,,,,,EPSG,EPSG,1999-05-24 00:00:00,,0
-1536,Finland - W of 22.5 deg E,Finland - west of 22 deg 30 min East.,,,,,EPSG,EPSG,1997-07-22 00:00:00,,0
-1537,Finland - 22.5 deg to 25.5 deg E,Finland - between 22 deg 30 min and 25 deg 30 min East.,,,,,EPSG,EPSG,1997-07-22 00:00:00,,0
-1538,Finland - zone 3,Finland - between 25 deg 30 min and 28 deg 30 min East for Basic Coordinate System and all Finland for Uniform Coordinate System.,,,,,EPSG,EPSG,2001-09-03 00:00:00,,0
-1539,Finland - E of 28.5 deg E,Finland - east of 28 deg 30 min East.,,,,,EPSG,EPSG,1997-07-22 00:00:00,,0
-1540,Mozambique - W of 36 deg E,Mozambique - west of 36 deg East.,,,,,EPSG,EPSG,1998-04-16 00:00:00,,0
-1541,Mozambique - E of 36 deg E,Mozambique - east of 36 deg East.,,,,,EPSG,EPSG,1998-04-16 00:00:00,,0
-1542,Asia - Cambodia and Vietnam - W of 108 deg E,Cambodia; Vietnam west of 108 deg East.,,,,,EPSG,EPSG,1998-11-11 00:00:00,,0
-1544,Oman - W of 54 deg E,Oman - west of 54 deg East.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1545,Oman - E of 54 deg E,Oman - east of 54 deg East.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1546,USA - Hawaii - island of Hawaii,United States (USA) - Hawaii - island of Hawaii.,,,,,EPSG,EPSG,1995-12-02 00:00:00,,0
-1547,USA - Hawaii - Maui; Kahoolawe; Lanai; Molokai.,United States (USA) - Hawaii - Maui; Kahoolawe; Lanai; Molokai.,,,,,EPSG,EPSG,1995-12-02 00:00:00,,0
-1548,USA - Hawaii - Oahu.,United States (USA) - Hawaii - Oahu.,,,,,EPSG,EPSG,1995-12-02 00:00:00,,0
-1549,USA - Hawaii - Kauai.,United States (USA) - Hawaii - Kauai.,,,,,EPSG,EPSG,1995-12-02 00:00:00,,0
-1550,USA - Hawaii - Niihau.,United States (USA) - Hawaii - Niihau.,,,,,EPSG,EPSG,1995-12-02 00:00:00,,0
-1551,Grenada including Grenada Grenadines,Grenada (including Grenada Grenadines).,,,,,EPSG,EPSG,1999-04-22 00:00:00,,0
-1552,Africa - Ethiopia and Sudan - W of 42 deg E,Ethiopia - west of 42 degrees East.  Sudan - west of 42 degrees East.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1553,Africa - Ethiopia and Sudan - E of 42 deg E,Ethiopia - east of 42 degrees East.  Sudan - east of 42 degrees East.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1554,Somalia - W of 48 deg E,Somalia - west of 48 degrees East.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1555,Somalia - E of 48 deg E,Somalia - east of 48 degrees East.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1556,Australia - 102 to 108 deg E,Australia - between 102 and 108 deg East.,,,,,EPSG,EPSG,1995-12-02 00:00:00,,0
-1557,Australia - 108 to 114 deg E,Australia - between 108 and 114 deg East.,,,,,EPSG,EPSG,1995-12-02 00:00:00,,0
-1558,Australia - 114 to 120 deg E,Australia - between 114 and 120 deg East.,,,,,EPSG,EPSG,1995-12-02 00:00:00,,0
-1559,Australia - 120 to 126 deg E,Australia - between 120 and 126 deg East.,,,,,EPSG,EPSG,1995-12-02 00:00:00,,0
-1560,Australia - 126 to 132 deg E,Australia - between 126 and 132 deg East.,,,,,EPSG,EPSG,1995-12-02 00:00:00,,0
-1561,Australia - 132 to 138 deg E,Australia - between 132 and 138 deg East.,,,,,EPSG,EPSG,1995-12-02 00:00:00,,0
-1562,Australia - 138 to 144 deg E,Australia - between 138 and 144 deg East.,,,,,EPSG,EPSG,1995-12-02 00:00:00,,0
-1563,Australia - 144 to 150 deg E,Australia - between 144 and 150 deg East.,,,,,EPSG,EPSG,1995-12-02 00:00:00,,0
-1564,Australia - 150 to 156 deg E,Australia - between 150 and 156 deg East.,,,,,EPSG,EPSG,1995-12-02 00:00:00,,0
-1565,Australia - 156 to 162 deg E,Australia - between 156 and 162 deg East.,,,,,EPSG,EPSG,1995-12-02 00:00:00,,0
-1566,Australia - 162 to 168 deg E,Australia - between 162 and 168 deg East.,,,,,EPSG,EPSG,1995-12-02 00:00:00,,0
-1567,Australasia - Australia and PNG - 138 to 144 deg E,Australia - between 138 and 144 deg East.  Papua New Guinea (PNG) - west of 144 deg East.,,,,,EPSG,EPSG,1995-12-02 00:00:00,,0
-1568,Australasia - Australia and PNG - 144 to 150 deg E,Australia - between 144 and 150 deg East.  Papua New Guinea (PNG) - east of 144 deg East.,,,,,EPSG,EPSG,1995-12-02 00:00:00,,0
-1569,Saudi Arabia - W of 42 deg E,Saudi Arabia - west of 42 deg East.,,,,,EPSG,EPSG,1997-11-13 00:00:00,,0
-1570,Saudi Arabia - E of 48 deg E,Saudi Arabia - east of 48 deg East.,,,,,EPSG,EPSG,1997-11-13 00:00:00,,0
-1571,Asia - Middle East - Kuwait and Saudi - 42 to 48 deg E,Kuwait.  Saudi Arabia - between 42 and 48 deg East.,,,,,EPSG,EPSG,1997-11-13 00:00:00,,0
-1572,Brazil - Aratu - W of 48 deg W,Brazil - coastal areas south of 2 deg 55 min South and west of 48 deg West.,,,,,EPSG,EPSG,1995-07-21 00:00:00,,0
-1573,Brazil - Aratu - 48 to 42 deg W,Brazil - coastal areas south of 2 deg 55 min South and between 48 and 42 deg West; offshore Santos basin.,,,,,EPSG,EPSG,1995-07-21 00:00:00,,0
-1574,Brazil - Aratu - E of 42 deg W,Brazil - coastal areas south of 2 deg 55 min South and east of 42 deg West; offshore Campos basin.,,,,,EPSG,EPSG,1995-07-21 00:00:00,,0
-1575,Africa - Botswana and Zambia - W of 24 deg E,Botswana and Zambia - west of 24 deg East.,,,,,EPSG,EPSG,1997-11-13 00:00:00,,0
-1576,"Africa - Botswana, Zambia and Zimbabwe - 24 to 30 deg E",Botswana - east of 24 deg East; Zambia - between 24 and 30 deg East; Zimbabwe west of 30 deg East .,,,,,EPSG,EPSG,1997-11-13 00:00:00,,0
-1577,"Africa - Malawi, Zambia and Zimbabwe - E of 30 deg E",Malawi.  Zambia and Zimbabwe - east of 30 deg East.,,,,,EPSG,EPSG,1997-11-13 00:00:00,,0
-1578,Uganda - N of equator and W of 30 deg E,Uganda - north of equator and west of 30 deg East.,,,,,EPSG,EPSG,1997-11-13 00:00:00,,0
-1579,Africa - Tanzania and Uganda - S of equator and W of 30 deg E,Tanzania - west of 30 deg East; Uganda south of equator and west of 30 deg East.,,,,,EPSG,EPSG,1997-11-13 00:00:00,,0
-1580,Africa - Kenya and Uganda - N of equator and 30 to 36 deg E,Kenya - north of equator and west of 36 deg East; Uganda north of equator and east of 30 deg East.,,,,,EPSG,EPSG,1997-11-13 00:00:00,,0
-1581,"Africa - Kenya, Tanzania and Uganda - S of equator and 30 to 36 deg E",Kenya - south of equator and west of 36 deg East; Tanzania - 30 to 36 deg East; Uganda south of equator and east of 30 deg East.,,,,,EPSG,EPSG,1997-11-13 00:00:00,,0
-1582,Kenya - N of equator and E of 36 deg E,Kenya - north of equator and east of 36 deg East.,,,,,EPSG,EPSG,1997-11-13 00:00:00,,0
-1583,Africa - Kenya and Tanzania - S of equator and E of 36 deg E,Kenya - south of equator and east of 36 deg East; Tanzania - east of 36 deg East.,,,,,EPSG,EPSG,1997-11-13 00:00:00,,0
-1584,Indonesia - Java - W of 108 deg E,Indonesia - Java - west of 108 deg East.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1585,Indonesia - Java - E of 114 deg E,Indonesia - Java - east of 114 deg East.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1586,Indonesia - Java - 108 to 114 deg E,Indonesia - Java - between 108 and 114 deg East.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1587,China - W of 78 deg E,China - west of 78 deg East.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1588,China - 78 to 84 deg E,China - between 78 and 84 deg East.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1589,China - 84 to 90 deg E,China - between 84 and 90 deg East.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1590,China - 90 to 96 deg E,China - between 90 and 96 deg East.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1591,China - 96 to 102 deg E,China - between 96 and 102 deg East.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1592,China - 102 to 108 deg E,China - between 102 and 108 deg East.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1593,China - 108 to 114 deg E,China - between 108 and 114 deg East.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1594,China - 114 to 120 deg E,China - between 114 and 120 deg East.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1595,China - 120 to 126 deg E,China - between 120 and 126 deg East.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1596,China - 126 to 132 deg E,China - between 126 and 132 deg East.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1597,China - E of 132 deg E,China - east of 132 deg East.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1598,Colombia - W of 75d 35m W,Colombia - west of 1 deg 30 min W of Bogota (75d 34m 51.30s W of Greenwich).,,,,,EPSG,EPSG,1997-04-11 00:00:00,,0
-1599,Colombia - 75d 35m to 72d 35m W,Colombia - between 1 deg 30 min W and 1 deg 30 min E of Bogota (75d 35m W and 72d 35m W of Greenwich).,,,,,EPSG,EPSG,1997-04-11 00:00:00,,0
-1600,Colombia - 72d 35m to 69d 35m W,Colombia - between 1 deg 30 min and 4 deg 30 min E of Bogota (72d 35m and 69d 34m W of Greenwich).,,,,,EPSG,EPSG,1997-04-11 00:00:00,,0
-1601,Colombia - E of 69d 35m W,Colombia - east of 4 deg 30 min E of Bogota (69d 34m 51.3s W of Greenwich).,,,,,EPSG,EPSG,1997-04-11 00:00:00,,0
-1602,Colombia - offshore W of 78 deg W,Colombia - offshore west of 78 deg W of Greenwich.,,,,,EPSG,EPSG,2000-10-19 00:00:00,,0
-1603,Colombia - offshore E of 78 deg W,Colombia - offshore east of 78 deg W of Greenwich.,,,,,EPSG,EPSG,2000-10-19 00:00:00,,0
-1604,Angola - Angola proper - offshore,Angola - Angola proper - offshore,,,,,EPSG,EPSG,1998-11-11 00:00:00,,0
-1605,Angola - Angola proper - offshore block 15,Angola - Angola proper - offshore block 15,,,,,EPSG,EPSG,1998-11-11 00:00:00,,0
-1606,Angola - Angola proper - offshore - W of 12 deg E,Angola - Angola proper - offshore - west of 12 deg East.,,,,,EPSG,EPSG,1997-11-13 00:00:00,,0
-1607,Angola - 12 to 18 deg E,Angola - between 12 and 18 deg East.,,,,,EPSG,EPSG,1997-11-13 00:00:00,,0
-1608,Argentina - W of 70.5 deg W,Argentina - west of 70 deg 30 min West.,,,,,EPSG,EPSG,1995-12-02 00:00:00,,0
-1609,Argentina - 70.5 to 67.5 deg W,Argentina - between 70 deg 30 min and 67 deg 30 min West.,,,,,EPSG,EPSG,1995-12-02 00:00:00,,0
-1610,Argentina - 67.5 to 64.5 deg W,Argentina - between 67 deg 30 min and 64 deg 30 min West.,,,,,EPSG,EPSG,1995-12-02 00:00:00,,0
-1611,Argentina - 64.5 to 61.5 deg W,Argentina - between 64 deg 30 min and 61 deg 30 min West.,,,,,EPSG,EPSG,1995-12-02 00:00:00,,0
-1612,Argentina - 61.5 to 58.5 deg W,Argentina - between 61 deg 30 min and 58 deg 30 min West.,,,,,EPSG,EPSG,1995-12-02 00:00:00,,0
-1613,Argentina - 58.5 to 55.5 deg W,Argentina - between 58 deg 30 min and 55 deg 30 min West.,,,,,EPSG,EPSG,1995-12-02 00:00:00,,0
-1614,Argentina - E of 55.5 deg W,Argentina - east of 55 deg 30 min West.,,,,,EPSG,EPSG,1995-12-02 00:00:00,,0
-1615,Botswana - W of 21 deg E,Botswana - west of 21 deg East.,,,,,EPSG,EPSG,1995-12-08 00:00:00,,0
-1616,Botswana - 21 to 27 deg E,Botswana - between 21 and 27deg East.,,,,,EPSG,EPSG,1995-12-08 00:00:00,,0
-1617,Botswana - E of 27 deg E,Botswana - east of 27 deg East.,,,,,EPSG,EPSG,1995-12-08 00:00:00,,0
-1618,Tunisia - onshore,Tunisia - onshore.,,,,,EPSG,EPSG,1999-11-15 00:00:00,,0
-1619,Tunisia - N of 34 deg 39 min N,Tunisia - north of 38.5 grads (34 deg 39 min) North.,,,,,EPSG,EPSG,1996-09-12 00:00:00,,0
-1620,Tunisia - S of 34 deg 39 min N,Tunisia - south of 38.5 grads (34 deg 39 min) North.,,,,,EPSG,EPSG,1996-09-12 00:00:00,,0
-1621,Brazil - Corrego Alegre - W of 42 deg W,Brazil - NE coastal area between 45 deg West and 42 deg West.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1622,Brazil - Corrego Alegre - E of 42 deg W,Brazil - NE coastal area between 42 deg West and 40 deg West.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1623,Asia - Middle East - Lebanon and Syria,Lebanon. Syrian Arab Republic.,,,,,EPSG,EPSG,1999-10-20 00:00:00,,0
-1624,Germany - W of 7.5 deg E,"Germany west of 7 deg 30 min East - Niedersachsen, Nordrhein-Westfalen, Rheinland-Pfalz, Saarland.",,,,,EPSG,EPSG,2000-03-07 00:00:00,,0
-1625,Germany - 7.5 to 10.5 deg E,"Germany - former West Germany onshore between 7 deg 30 min and 10 deg 30 min East - Baden-Wurtemberg, Bayern, Hessen, Niedersachsen, Nordrhein-Westfalen, Rhineland-Pfalz, Schleswig-Holstein. Also former East German (DDR) state of Thuringen by transformation.",,,,,EPSG,EPSG,2000-03-07 00:00:00,,0
-1626,Germany - 10.5 to 13.5 deg E,"Germany - former West Germany onshore between 10 deg 30 min and 13 deg 30 min East - Bayern, Niedersachsen, Schleswig-Holstein. Also former East German (DDR) states of Sachsen and Thuringen by transformation.",,,,,EPSG,EPSG,2000-03-07 00:00:00,,0
-1627,Germany - 13.5 to 16.5 deg E,Germany - former West Germany onshore east of 13 deg 30 min East - Bayern. Also former East German (DDR) state of Sachsen by transformation.,,,,,EPSG,EPSG,2000-03-07 00:00:00,,0
-1628,Germany - W of 4.5 deg E,Germany - onshore west of 4 deg 30 min East.,,,,Not valid - do not use !,EPSG,EPSG,2000-03-07 00:00:00,,1
-1629,UK - offshore North Sea,United Kingdom (UKCS) - offshore North Sea.,,,,,EPSG,EPSG,1998-11-11 00:00:00,,0
-1630,Netherlands - offshore,Netherlands - offshore North Sea.,,,,,EPSG,EPSG,1998-11-11 00:00:00,,0
-1631,Europe - ED50 / UTM 28,Europe - between 18 and 12 deg West - Ireland offshore; Spain (Canary Islands); United Kingdom (UKCS) offshore.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1632,Europe - ED50 / UTM 29,Europe - between 12 and 6 deg West - Portugal; Spain; Ireland offshore; United Kingdom (UKCS) offshore.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1633,Europe - ED50 / UTM 30,Europe - between 6 deg West and 0 deg East - Faroe Islands; France offshore; Gibraltar; Ireland offshore; Spain; United Kingdom - UKCS offshore - North Sea west of 0 d eg East).,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1634,Europe - ED50 / UTM 31,Europe - between 0 and 6 deg East - Denmark (North Sea); Germany offshore; Netherlands offshore; Norway; Spain (Balearic Islands); United Kingdom (UKCS) offshore.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1635,Europe - ED50 / UTM 32,Europe - between 6 and 12 deg East - Denmark; Germany offshore; Italy; Netherlands offshore; Norway.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1636,Europe - ED50 / UTM 33,Europe - between 12 and 18 deg East - Denmark (Bornholm); Italy; Norway.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1637,Europe - ED50 / UTM 34,Europe - between 18 and 24 deg East - Greece; Norway.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1638,Europe - ED50 / UTM 35,Europe - between 24 and 30 deg East - Greece; Norway; Turkey. Egypt - Western Desert.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1639,Europe - ED50 / UTM 36,Europe - between 30 and 36 deg East - Turkey.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1640,Europe - ED50 / UTM 37,Europe - between 36 and 42 deg East - Turkey.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1641,Europe - ED50 / UTM 38,Europe - between 42 and 48 deg East - Turkey.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1642,Egypt - Sinai peninsula,Egypt - Sinai peninsula.,,,,,EPSG,EPSG,1999-04-22 00:00:00,,0
-1643,Egypt - E of 29 deg E,Egypt - east of 29 deg East.,,,,,EPSG,EPSG,1995-12-02 00:00:00,,0
-1644,Egypt - W of 29 deg E; N of 28 deg 11 min N,Egypt - west of 29 deg E; north of approximately 28 deg 11 min North.,,,,,EPSG,EPSG,1995-12-02 00:00:00,,0
-1645,Egypt - W of 29 deg E; S of 28 deg 11 min N,Egypt - west of 29 deg E; south of approximately 28 deg 11 min North.,,,,,EPSG,EPSG,1995-12-02 00:00:00,,0
-1646,Europe - Estonia;  Latvia;  Lithuania.,Estonia;  Latvia;  Lithuania.,,,,,EPSG,EPSG,1998-12-14 00:00:00,,0
-1647,Indonesia - N of equator and W of 96 deg E,Indonesia - north of equator and west of 96 deg East.,,,,,EPSG,EPSG,1995-08-08 00:00:00,,0
-1648,Indonesia - S of equator and W of 96 deg E,Indonesia - south of equator and west of 96 deg East.,,,,,EPSG,EPSG,1995-08-08 00:00:00,,0
-1649,Indonesia - N of equator and 96 to 102 deg E,Indonesia - north of equator and between 96 and 102 deg East.,,,,,EPSG,EPSG,1995-07-21 00:00:00,,0
-1650,Indonesia - S of equator and 96 to 102 deg E,Indonesia - south of equator and between 96 and 102 deg East.,,,,,EPSG,EPSG,1995-07-21 00:00:00,,0
-1651,Indonesia - N of equator and 102 to 108 deg E,Indonesia - north of equator and between 102 and 108 deg East.,,,,,EPSG,EPSG,1995-07-21 00:00:00,,0
-1652,Indonesia - S of equator and 102 to 108 deg E,Indonesia - south of equator and between 102 and 108 deg East.,,,,,EPSG,EPSG,1995-07-21 00:00:00,,0
-1653,Indonesia - N of equator and 108 to 114 deg E,Indonesia - north of equator and between 108 and 114 deg East.,,,,,EPSG,EPSG,1995-07-21 00:00:00,,0
-1654,Indonesia - S of equator and 108 to 114 deg E,Indonesia - south of equator and between 108 and 114 deg East.,,,,,EPSG,EPSG,1995-07-21 00:00:00,,0
-1655,Indonesia - N of equator and 114 to 120 deg E,Indonesia - north of equator and between 114 and 120 deg East.,,,,,EPSG,EPSG,1995-07-21 00:00:00,,0
-1656,Indonesia - S of equator and 114 to 120 deg E,Indonesia - south of equator and between 114 and 120 deg East.,,,,,EPSG,EPSG,1995-07-21 00:00:00,,0
-1657,Indonesia - N of equator and 120 to 126 deg E,Indonesia - north of equator and between 120 and 126 deg East.,,,,,EPSG,EPSG,1995-07-21 00:00:00,,0
-1658,Indonesia - S of equator and 120 to 126 deg E,Indonesia - south of equator and between 120 and 126 deg East.,,,,,EPSG,EPSG,1995-07-21 00:00:00,,0
-1659,Indonesia - N of equator and 126 to 132 deg E,Indonesia - north of equator and between 126 and 132 deg East.,,,,,EPSG,EPSG,1995-07-21 00:00:00,,0
-1660,Indonesia - S of equator and 126 to 132 deg E,Indonesia - south of equator and between 126 and 132 deg East.,,,,,EPSG,EPSG,1995-07-21 00:00:00,,0
-1661,Indonesia - N of equator and 132 to 138 deg E,Indonesia - north of equator and east of 132 deg East.,,,,,EPSG,EPSG,1995-07-21 00:00:00,,0
-1662,Indonesia - S of equator and 132 to 138 deg E,Indonesia - south of equator and between 132 and 138 deg East.,,,,,EPSG,EPSG,1995-07-21 00:00:00,,0
-1663,Indonesia - S of equator and E of 138 deg E,Indonesia - south of equator and east of 138 deg East.,,,,,EPSG,EPSG,1995-07-21 00:00:00,,0
-1664,Myanmar (Burma) - W of 96 deg E,Myanmar (Burma) - west of 96 deg East.,,,,,EPSG,EPSG,1998-06-13 00:00:00,,0
-1665,Asia - Myanmar and Thailand - 96 to 102 deg E,Myanmar (Burma) - east of 96 deg East; Thailand - west of 102 deg East.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1666,Thailand - E of 102 deg E,Thailand - east of 102 deg East.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1667,Thailand - W of 102 deg E,Thailand - west of 102 deg East.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1668,Pakistan - N of 35 deg 35 min N,Pakistan - north of 35 deg 35 min North.,,,,,EPSG,EPSG,1999-10-20 00:00:00,,0
-1669,Asia - India; Pakistan - 28 to 35.5 deg N,India north of 28 deg North; Pakistan 28 deg to 35 deg 35 min North.,,,,,EPSG,EPSG,1999-10-20 00:00:00,,0
-1670,Asia - India; Pakistan - zone IIa,India - between 21 and 28 deg North and west of 82 deg East; Pakistan - south of 28 deg North.,,,,,EPSG,EPSG,1999-10-20 00:00:00,,0
-1671,Asia - Bangladesh; India; Myanmur; Pakistan - zone IIb,Bangladesh; India - north of 22 deg North and east of 82 deg East; Myanmar (Burma) - north of 22 deg North.,,,,,EPSG,EPSG,2000-03-07 00:00:00,,0
-1672,India - 15 to 21 deg N,India - between 15 and 21 deg North.,,,,,EPSG,EPSG,2000-04-23 00:00:00,,0
-1673,India - S of 15 deg N,India - south of 15 deg North.,,,,,EPSG,EPSG,2000-04-23 00:00:00,,0
-1674,Bangladesh - W of 90 deg E,Bangladesh - west of 90 deg East.,,,,,EPSG,EPSG,1999-10-20 00:00:00,,0
-1675,Bangladesh - E of 90 deg E,Bangladesh - east of 90 deg East.,,,,,EPSG,EPSG,1999-10-20 00:00:00,,0
-1676,India - N of 28 deg N,India - north of 28 deg North.,,,,,EPSG,EPSG,2000-04-23 00:00:00,,0
-1677,India - 21 to 28deg N and W of 82 deg E,India - between 21 and 28 deg North and west of 82 deg East.,,,,,EPSG,EPSG,2000-04-23 00:00:00,,0
-1678,India - N of 21 deg N and E of 82 deg E,India - north of 21 deg North and east of 82 deg East.,,,,,EPSG,EPSG,2000-04-23 00:00:00,,0
-1679,India - W of 72 deg E,India - west of 72 deg East.,,,,,EPSG,EPSG,1999-10-20 00:00:00,,0
-1680,India - 72 to 78 deg E,India - between 72 and 78 deg East.,,,,,EPSG,EPSG,1999-10-20 00:00:00,,0
-1681,India - 78 to 84 deg E,India - between 78 and 84 deg East.,,,,,EPSG,EPSG,1999-10-20 00:00:00,,0
-1682,India - 84 to 90 deg E,India - between 84 and 90 deg East.,,,,,EPSG,EPSG,1999-10-20 00:00:00,,0
-1683,India - 90 to 96 deg E,India - between 90 and 96 deg East.,,,,,EPSG,EPSG,1999-10-20 00:00:00,,0
-1684,India - E of 96 deg E,India - east of 96 deg East.,,,,,EPSG,EPSG,1999-10-20 00:00:00,,0
-1685,Pakistan - N of 28 deg N,Pakistan - north of 28 deg North.,,,,,EPSG,EPSG,1999-10-20 00:00:00,,0
-1686,Pakistan - S of 28 deg N,Pakistan - south of 28 deg North.,,,,,EPSG,EPSG,1999-10-20 00:00:00,,0
-1687,Pakistan - W of 66 deg E,Pakistan - west of 66 deg East.,,,,,EPSG,EPSG,1999-10-20 00:00:00,,0
-1688,Pakistan - 66 to 72 deg E,Pakistan - between 66 and 72 deg East.,,,,,EPSG,EPSG,1999-10-20 00:00:00,,0
-1689,Pakistan - E of 72 deg E,Pakistan - east of 72 deg East.,,,,,EPSG,EPSG,1999-10-20 00:00:00,,0
-1690,Malaysia - West Malaysia,Malaysia - West Malaysia.,,,,,EPSG,EPSG,1999-10-20 00:00:00,,0
-1691,Malaysia - West Malaysia - W of 102 deg E,Malaysia - West Malaysia west of 102 deg East.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1692,Malaysia - West Malaysia - E of 102 deg E,Malaysia - West Malaysia east of 102 deg East.,,,,,EPSG,EPSG,1995-07-21 00:00:00,,0
-1693,Venezuela - W of 72 deg W,Venezuela - west of 72 deg West.,,,,,EPSG,EPSG,1999-10-20 00:00:00,,0
-1694,Venezuela - 72 to 66 deg W,Venezuela - between 72 and 66 deg West.,,,,,EPSG,EPSG,1999-10-20 00:00:00,,0
-1695,Venezuela - E of 66 deg W,Venezuela - east of 66 deg West.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1696,Gabon - N of equator,Gabon - north of equator.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1697,Gabon - S of equator,Gabon - south of equator.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1698,Philippines - zone I,Philippines - west of 118 deg East.,,,,,EPSG,EPSG,2000-03-07 00:00:00,,0
-1699,Philippines - zone II,Philippines - Palawan; Calamian Islands.,,,,,EPSG,EPSG,2000-03-07 00:00:00,,0
-1700,Philippines - zone III,Philippines - Luzon (except SE part;); Mindoro.,,,,,EPSG,EPSG,2000-03-07 00:00:00,,0
-1701,Philippines - zone IV,Philippines - SE Luzon; Tablas; Masbate; Panay; Cebu; Negros; west Mindanao.,,,,,EPSG,EPSG,2000-03-07 00:00:00,,0
-1702,Philippines - zone V,Philippines - east Mindanao; Bohol; Samar.,,,,,EPSG,EPSG,2000-03-07 00:00:00,,0
-1703,Morocco - N of 31.5 deg N,Morocco north of 35 grads (31 deg 30 min) North.,,,,,EPSG,EPSG,1996-09-12 00:00:00,,0
-1704,Morocco - 27.9 to 31.5 deg N,Morocco between 31 and 35 grads (27 deg 54 min and 31 deg 30 min) North.,,,,,EPSG,EPSG,1996-09-12 00:00:00,,0
-1705,Morocco - S of 27.9 deg N,Morocco south of 31grads  (27 deg 54 min) North.,,,,,EPSG,EPSG,1996-09-12 00:00:00,,0
-1706,Austria - W of 11 deg 50 min E,Austria west of 11deg 50min East of Greenwich (29 deg 30 min East of Ferro).,,,,,EPSG,EPSG,1999-10-20 00:00:00,,0
-1707,Austria - 11 deg 50 min to 14deg 50min E,Austria between 11deg 50min and 14deg 50min East of Greenwich (29 deg 30 min and 32 deg 30 min East of Ferro).,,,,,EPSG,EPSG,1999-10-20 00:00:00,,0
-1708,Austria - E of 14 deg 50 min E,Austria east of 14deg 50min East of Greenwich (32 deg 30 min East of Ferro).,,,,,EPSG,EPSG,1999-10-20 00:00:00,,0
-1709,Europe - former Yugoslavia - W of 16.5 deg E,Bosnia and Herzegowina west of 16 deg 30 min E; Croatia west of 16 deg 30 min E; Slovenia.,,,,,EPSG,EPSG,2001-06-05 00:00:00,,0
-1710,Europe - former Yugoslavia - 16.5 to 29.5 deg E,Bosnia and Herzegowina east of 16 deg 30 min E; Croatia east of 16 deg 30 min E; Yugoslavia west of 19 deg 30 min E.,,,,,EPSG,EPSG,2001-06-05 00:00:00,,0
-1711,Europe - former Yugoslavia - 19.5 to 22.5 deg E,FYR Macedonia west of 22 deg 30 min E; Yugoslavia between 19 deg 30 min and 22 deg 30 min E.,,,,,EPSG,EPSG,2001-06-05 00:00:00,,0
-1712,Europe - former Yugoslavia - E of 22.5 deg E,FYR Macedonia and Yugoslavia east of 22 deg 30 min E.,,,,,EPSG,EPSG,2001-06-05 00:00:00,,0
-1713,Nigeria - E of 10.5 deg E,Nigeria east of 10 deg 30 min East.,,,,,EPSG,EPSG,1995-12-02 00:00:00,,0
-1714,Nigeria - 6.5 to10.5 deg E,Nigeria between 6 deg 30 min and 10 deg 30 min East.,,,,,EPSG,EPSG,1995-12-02 00:00:00,,0
-1715,Nigeria - W of 6.5 deg E,Nigeria west of 6 deg 30 min East.,,,,,EPSG,EPSG,1995-12-02 00:00:00,,0
-1716,Nigeria - offshore deep water - W of 6 deg E,Nigeria - offshore beyond continental shelf west of 6 deg East.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1717,Nigeria - offshore deep water,Nigeria - offshore beyond continental shelf.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1718,Italy - W of 12 deg E,Italy - west of 12 deg East.,,,,,EPSG,EPSG,1995-12-02 00:00:00,,0
-1719,Italy - E of 12 deg E,Italy - east of 12 deg East.,,,,,EPSG,EPSG,1995-12-02 00:00:00,,0
-1720,USA - Michigan - SPCS - E,United States (USA) - Michigan - counties of Alcona; Alpena; Arenac; Bay; Cheboygan; Clinton; Crawford; Genesee; Gladwin; Gratiot; Hillsdale; Huron; Ingham; Iosco; Jackson; Lapeer; Lenawee; Livingston; Macomb; Midland; Monroe; Montmorency; Oakland; Ogemaw; Oscoda; Otsego; Presque Isle; Roscommon; Saginaw; Sanilac; Shiawassee; St. Clair; Tuscola; Washtenaw; Wayne.,,,,,EPSG,EPSG,2000-03-07 00:00:00,,0
-1721,USA - Michigan - SPCS - old central,United States (USA) - Michigan - counties of Allegan; Antrim; Barry; Benzie; Berrien; Branch; Calhoun; Cass; Charlevoix; Clare; Eaton; Emmet; Grand Traverse; Ionia; Isabella; Kalamazoo; Kalkaska; Kent; Lake; Leelanau; Manistee; Mason; Mecosta; Missaukee; Montcalm; Muskegon; Newaygo; Oceana; Osceola; Ottawa; St. Joseph; Van Buren; Wexford.,,,,,EPSG,EPSG,1998-11-11 00:00:00,,0
-1722,USA - Michigan - SPCS - W,United States (USA) - Michigan - counties of Alger; Baraga; Chippewa; Delta; Dickinson; Gogebic; Houghton; Iron; Keweenaw; Luce; Mackinac; Marquette; Menominee; Ontonagon; Schoolcraft.,,,,,EPSG,EPSG,2000-03-07 00:00:00,,0
-1723,USA - Michigan - SPCS - N,United States (USA) - Michigan north of approximately 45d 45m North - counties of Alger; Baraga; Chippewa; Delta; Dickinson; Gogebic; Houghton; Iron; Keweenaw; Luce; Mackinac; Marquette; Menominee; Ontonagon; Schoolcraft.,,,,,EPSG,EPSG,2001-11-06 00:00:00,,0
-1724,USA - Michigan - SPCS - central,United States (USA) - Michigan between approximately 45d 45m & 43d 55m North - counties of Alcona; Alpena; Antrim; Arenac; Benzie; Charlevoix; Cheboygan; Clare; Crawford; Emmet; Gladwin; Grand Traverse; Iosco; Kalkaska; Lake; Leelanau; Manistee; Mason; Missaukee; Montmorency; Ogemaw; Osceola; Oscoda; Otsego; Presque Isle; Roscommon; Wexford.,,,,,EPSG,EPSG,2001-11-06 00:00:00,,0
-1725,USA - Michigan - SPCS - S,United States (USA) - Michigan south of approximately 43d 55m North - counties of Allegan; Barry; Bay; Berrien; Branch; Calhoun; Cass; Clinton; Eaton; Genesee; Gratiot; Hillsdale; Huron; Ingham; Ionia; Isabella; Jackson; Kalamazoo; Kent; Lapeer; Lenawee; Livingston; Macomb; Mecosta; Midland; Monroe; Montcalm; Muskegon; Newaygo; Oakland; Oceana; Ottawa; Saginaw; Sanilac; Shiawassee; St. Clair; St. Joseph; Tuscola; Van Buren; Washtenaw; Wayne.,,,,,EPSG,EPSG,2 [...]
-1726,Mozambique - offshore,Mozambique - offshore.,,,,,EPSG,EPSG,1998-11-11 00:00:00,,0
-1727,Suriname - offshore,Suriname - offshore.,,,,,EPSG,EPSG,2000-06-10 00:00:00,,0
-1728,Algeria - N of 34 deg 39 min N,Algeria - north of 38.5 grads (34 deg 39 min) North.,,,,,EPSG,EPSG,1996-09-12 00:00:00,,0
-1729,Algeria - 31 deg 30 min  of 34 deg 39 min N,Algeria - 35 grads to 38.5 grads (31 deg 30 min to 34 deg 39 min) North.,,,,,EPSG,EPSG,1996-09-12 00:00:00,,0
-1730,North America - NAVD88,North America: Canada - Alberta; British Columbia; Manitoba; New Brunswick; Newfoundland; North West Territories; Nova Scotia; Nunavut; Ontario; Prince Edward Island; Quebec; Saskatchewan; Yukon. United States (USA) - Alabama; Alaska; Arizona; Arkansas; California; Colorado; Connecticut; Delaware; Florida; Georgia; Idaho; Illinois; Indiana; Iowa; Kansas; Kentucky; Louisiana; Maine; Maryland; Massachusetts; Michigan; Minnesota; Mississippi; Missouri; Montana; N [...]
-1731,France - N of 48.15 deg N,France north of 53.5 grads (48 deg 09 min) North.,,,,,EPSG,EPSG,1996-09-12 00:00:00,,0
-1732,France - 45.45 to 48.15 deg N,France 50.5 to 53.5 grads (45 deg 27 min to 48 deg 09 min) North.,,,,,EPSG,EPSG,1996-04-12 00:00:00,,0
-1733,France - S of 45.45 deg N,France south of 50.5 grads (45 deg 27 min) North.,,,,,EPSG,EPSG,1996-09-12 00:00:00,,0
-1734,France - 45.45 to 48.15 deg N. Also all mainland.,France 50.5 to 53.5 grads (45 deg 27 min to 48 deg 09 min) North. Also used over all mainland France.,,,,,EPSG,EPSG,1996-09-12 00:00:00,,0
-1735,Algeria - W of 6 deg W,Algeria - west of 6 deg West (of Greenwich).,,,,,EPSG,EPSG,1996-04-12 00:00:00,,0
-1736,Algeria - 6 to 0 deg W,Algeria - between 6 deg West and 0 deg East (of Greenwich).,,,,,EPSG,EPSG,1996-04-12 00:00:00,,0
-1737,Algeria - 0 to 6 deg E,Algeria - between 0 and 6 deg East (of Greenwich).,,,,,EPSG,EPSG,1996-04-12 00:00:00,,0
-1738,Algeria - E of 6 deg E,Algeria - east of 6 deg East (of Greenwich).,,,,,EPSG,EPSG,1996-04-12 00:00:00,,0
-1739,Kuwait - W of 48 deg E,Kuwait - west of 48 deg East.,,,,,EPSG,EPSG,1996-04-12 00:00:00,,0
-1740,Kuwait - E of 48 deg E,Kuwait - east of 48 deg East.,,,,,EPSG,EPSG,1996-04-12 00:00:00,,0
-1741,Norway - zone I,Norway - west of 3deg 30min W of Oslo (7deg 13min 22.5sec E of Greenwich).,,,,,EPSG,EPSG,1999-10-20 00:00:00,,0
-1742,Norway - zone II,Norway - between 3deg 30min W and 1deg 10min W of Oslo (7deg 13min 22.5sec E  and 9deg 33min 22.5sec E of Greenwich).,,,,,EPSG,EPSG,1999-10-20 00:00:00,,0
-1743,Norway - zone III,Norway - between 1deg 10min W and 1deg 15min E of Oslo (9deg 33min 22.5sec E and 11deg 58min 22.5sec E of Greenwich).,,,,,EPSG,EPSG,1999-10-20 00:00:00,,0
-1744,Norway - zone IV,Norway - between 1deg 15min E and 4deg 20min E of Oslo (11deg 58min 22.5sec E and 15deg 03min 22.5sec E of Greenwich).,,,,,EPSG,EPSG,1999-10-20 00:00:00,,0
-1745,Norway - zone V,Norway - between 4deg 20min E and 8deg 10min E of Oslo (15deg 03min 22.5sec E and 18deg 53min 22.5sec E of Greenwich).,,,,,EPSG,EPSG,1999-10-20 00:00:00,,0
-1746,Norway - zone VI,Norway - between 8deg 10min E and 12deg 10min E of Oslo (18deg 53min 22.5sec E and 22deg 53min 22.5sec E of Greenwich).,,,,,EPSG,EPSG,1999-10-20 00:00:00,,0
-1747,Norway - zone VII,Norway - between 12deg 10min E and 16deg 15min E of Oslo (22deg 53min 22.5sec E and 26deg 58min 22.5sec E of Greenwich).,,,,,EPSG,EPSG,1999-10-20 00:00:00,,0
-1748,Norway - zone VIII,Norway - east of 16deg 15min E of Oslo (26deg 58min 22.5sec E of Greenwich).,,,,,EPSG,EPSG,1999-10-20 00:00:00,,0
-1749,Asia - Middle East - Nahrwan / UTM 39,Kuwait east of 48 deg East.  Qatar - offshore.  United Arab Emirates (UAE) - Abu Dhabi - west of 54 deg East.,,,,,EPSG,EPSG,1996-04-12 00:00:00,,0
-1750,UAE - E of 54 deg E,United Arab Emirates (UAE) - Abu Dhabi east of 54 deg East; Dubai; Sharjah; Ajman; Fujairah; Ras Al Kaimah; Umm Al Qaiwain.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1751,Peru - E of 73 deg W,Peru - east of 73 deg West.,,,,,EPSG,EPSG,1995-12-02 00:00:00,,0
-1752,Peru - 79 to 73 deg W,Peru - between 79 and 73 deg West.,,,,,EPSG,EPSG,1995-12-02 00:00:00,,0
-1753,Peru - W of 79 deg W,Peru - west of 79 deg West.,,,,,EPSG,EPSG,1995-12-02 00:00:00,,0
-1754,Brazil - offshore Amazon Cone,Brazil - offshore Amazon Cone.,,,,,EPSG,EPSG,1999-04-22 00:00:00,,0
-1755,South America - PSAD56 / UTM 17S,"South America (Chile; Ecuador; Peru) between 84 and 78 deg West, southern hemisphere.",,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1756,South America - PSAD56 / UTM 18N,"South America (Ecuador;  [Venezuela]) between 78 and 72 deg West, northern hemisphere.",,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1757,South America - PSAD56 / UTM 18S,"South America (Chile; Ecuador; Peru) between 78 and 72 deg West, southern hemisphere.",,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1758,South America - PSAD56 / UTM 19N,"South America (Netherlands Antilles; [Venezuela]) between 72 and 66 deg West, northern hemisphere.",,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1759,South America - PSAD56 / UTM 19S,"South America (Bolivia; Chile; Peru) between 72 and 66 deg West, southern hemisphere.",,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1760,South America - PSAD56 / UTM 20N,"South America (Guyana; [Venezuela]) between 66 and 60 deg West, northern hemisphere.",,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1761,South America - PSAD56 / UTM 20S,"South America (Bolivia) between 66 and 60 deg West, southern hemisphere.",,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1762,South America - PSAD56 / UTM 21N,"South America (Guyana) between 60 and 54 deg West, northern hemisphere.",,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1763,Russia - W of 24 deg E,Russian Federation - west of 24 deg East.,,,,,EPSG,EPSG,1996-09-12 00:00:00,,0
-1764,Russia - 24 to 30 deg E,Russian Federation - between 24 and 30 deg East.,,,,,EPSG,EPSG,1996-09-12 00:00:00,,0
-1765,Russia - 30 to 36 deg E,Russian Federation - between 30 and 36 deg East.,,,,,EPSG,EPSG,1996-09-12 00:00:00,,0
-1766,Russia - 36 to 42 deg E,Russian Federation - between 36 and 42 deg East.,,,,,EPSG,EPSG,1996-09-12 00:00:00,,0
-1767,Russia - 42 to 48 deg E,Russian Federation - between 42 and 48 deg East.,,,,,EPSG,EPSG,1996-09-12 00:00:00,,0
-1768,Russia - 48 to 54 deg E,Russian Federation - between 48 and 54 deg East.,,,,,EPSG,EPSG,1996-09-12 00:00:00,,0
-1769,Russia - 54 to 60 deg E,Russian Federation - between 54 and 60 deg East.,,,,,EPSG,EPSG,1996-09-12 00:00:00,,0
-1770,Russia - 60 to 66 deg E,Russian Federation - between 60 and 66 deg East.,,,,,EPSG,EPSG,1996-09-12 00:00:00,,0
-1771,Russia - 66 to 72 deg E,Russian Federation - between 66 and 72 deg East .,,,,,EPSG,EPSG,1996-09-12 00:00:00,,0
-1772,Russia - 72 to 78 deg E,Russian Federation - between 72 and 78 deg East.,,,,,EPSG,EPSG,1996-09-12 00:00:00,,0
-1773,Russia - 78 to 84 deg E,Russian Federation - between 78 and 84 deg East.,,,,,EPSG,EPSG,1996-09-12 00:00:00,,0
-1774,Russia - 84 to 90 deg E,Russian Federation - between 84 and 90 deg East.,,,,,EPSG,EPSG,1996-09-12 00:00:00,,0
-1775,Russia - 90 to 96 deg E,Russian Federation - between 90 and 96 deg East.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1776,Russia - 96 to 102 deg E,Russian Federation - between 96 and 102 deg East.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1777,Russia - 102 to 108 deg E,Russian Federation - between 102 and 108 deg East.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1778,Russia - 108 to 114 deg E,Russian Federation - between 108 and 114 deg East.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1779,Russia - 114 to 120 deg E,Russian Federation - between 114 and 120 deg East.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1780,Russia - 120 to 126 deg E,Russian Federation - between 120 and 126 deg East.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1781,Russia - 126 to 132 deg E,Russian Federation - between 126 and 132 deg East.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1782,Russia - 132 to 138 deg E,Russian Federation - between 132 and 138 deg East.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1783,Russia - 138 to 144 deg E,Russian Federation - between 138 and 144 deg East.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1784,Russia - 144 to 150 deg E,Russian Federation - between 144 and 150 deg East.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1785,Russia - 150 to 156 deg E,Russian Federation - between 150 and 156 deg East.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1786,Russia - 156 to 162 deg E,Russian Federation - between 156 and 162 deg East.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1787,Russia - 162 to 168 deg E,Russian Federation - between 162 and 168 deg East.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1788,Russia - 168 to 174 deg E,Russian Federation - between 168 and 174 deg East.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1789,Russia - 174 to 180 deg E,Russian Federation - between 174 and 180 deg East .,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1790,Russia - 180 to 174 deg W,Russian Federation - between 180 deg East and 174 deg West.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1791,Russia - E of 174 deg W,Russian Federation - east of 174 deg West.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1792,Europe - 6deg GK CM 15,Czech Republic and Germany ( former DDR) - east of 12 deg East; Poland and Slovakia - west of 18 deg East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.361,0
-1793,Europe - 6deg GK CM 21,Estonia; Latvia; Lithuania; Russian Federation; Ukraine; - west of 24 deg East; Poland - east of 24 deg East; Slovakia east of 18 deg East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.361,0
-1794,Europe - 6deg GK CM 27,Belarus - west of 30 deg East;  Estonia; Latvia & Lithuania - east of 24 deg East;  Moldova;  Russian Federation &  Ukraine - 24 to 30 deg East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.361,0
-1795,Europe - 6deg GK CM 33,Belarus - east of 30 deg East;  Russian Federation  &  Ukraine  - 30 to 36 deg East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.361,0
-1796,Europe - 6deg GK CM 39,Georgia - west of 36 deg East;  Russian Federation  - 36 to 42 deg East;  Ukraine - east of 36 deg East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.361,0
-1797,Europe - 6deg GK CM 45,Armenia - west of 48 deg East;  Azerbaijan - west of 48 deg East;  Georgia - east of 42 deg East;  Russian Federation - 42 to 48 deg East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.361,0
-1798,Asia - 6deg GK CM 51,Azerbaijan - east of 48 deg East;  Kazakstan - west of 54 deg East;  Russian Federation - 48 to 54 deg East;  Turkmenistan - west of 54 deg East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.361,0
-1799,Asia - 6deg GK CM 57,Kazakstan;  Russian Federation;  Turkmenistan  - 54 deg  to 60 deg East; Uzbekistan - west of 60 deg East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.361,0
-1800,Asia - 6deg GK CM 63,Kazakstan;  Russian Federation;  Uzbekistan - 60 to 66 deg East;  Turkmenistan - east of 60 deg East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.361,0
-1801,Asia - 6deg GK CM 69,Kazakstan &  Russian Federation - 66 to 72 deg East;  Kirgistan & Tadzhikstan - west of 72 deg East;  Uzbekistan - east of 66 deg East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.361,0
-1802,Asia - 6deg GK CM 75,Kazakstan;  Kirgizstan;  Russian Federation - 72 to 78 deg East;  Tadzhikstan - east of 72 deg East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.361,0
-1803,Asia - 6deg GK CM 81,Kazakstan &  Russian Federation - 78 to 84 deg East; Kirgizstan - east of 78 deg East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.361,0
-1804,Asia - 6deg GK CM 87,Kazakstan - east of 84 deg East;  Russian Federation - 84 to 90 deg East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.361,0
-1805,Europe - 6deg GK CM 9,Czech Republic and Germany (former DDR) - west of 12 deg East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.361,0
-1806,South America - SAD69 / UTM 17S,South America - between 84 and 78 deg West; southern hemisphere.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1807,South America - SAD69 / UTM 18N,South America - between 78 and 72 deg West; northern hemisphere.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1808,South America - SAD69 / UTM 18S,South America - Brazil - between 78 and 72 deg West; southern hemisphere.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1809,South America - SAD69 / UTM 19N,South America - between 72 and 66 deg West; northern hemisphere.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1810,South America - SAD69 / UTM 19S,South America - Brazil - between 72 and 66 deg West; southern hemisphere.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1811,South America - SAD69 / UTM 20N,South America - between 66 and 60 deg West; northern hemisphere.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1812,South America - SAD69 / UTM 20S,South America - Brazil - between 66 and 60 deg West; southern hemisphere.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1813,South America - SAD69 / UTM 21N,South America - between 60 and 54 deg West; northern hemisphere.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1814,South America - SAD69 / UTM 21S,South America - Brazil - between 60 and 54 deg West; southern hemisphere.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1815,South America - SAD69 / UTM 22N,South America - 54deg West to 48deg West; northern hemisphere. Brazil - offshore - Amazon cone.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1816,South America - SAD69 / UTM 22S,South America - Brazil - between 54 and 48 deg West; southern hemisphere.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1817,South America - SAD69 / UTM 23S,South America - between 48 and 42 deg West.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1818,South America - SAD69 / UTM 24S,South America - Brazil - between 42 and 36 deg West.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1819,South America - SAD69 / UTM 25S,South America - between 36 and 30 deg West.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1820,Falkland Islands - W of 60 deg W,Falkland Islands (Malvinas) - west of 60 deg West.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1821,Falkland Islands - E of 60 deg W,Falkland Islands (Malvinas) - east of 60 deg West.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1822,Namibia - offshore,Namibia - offshore.,,,,,EPSG,EPSG,1996-04-12 00:00:00,,0
-1823,South America - SIRGAS / UTM 17N,Between 84 and 78deg West; northern hemisphere. Ecuador - north of equator. Colombia.,,,,,EPSG,EPSG,2000-10-19 00:00:00,,0
-1824,South America - SIRGAS / UTM 17S,Between 84 and 78deg West; southern hemisphere.  Chile. Colombia. Ecuador. Peru.,,,,,EPSG,EPSG,2000-10-19 00:00:00,,0
-1825,South America - SIRGAS / UTM 18N,Between 78 and 72deg West; northern hemisphere. Colombia. Ecuador. Venezuela.,,,,,EPSG,EPSG,2000-10-19 00:00:00,,0
-1826,South America - SIRGAS / UTM 18S,Between 78 and 72deg West; southern hemisphere. Argentina. Brazil. Chile. Colombia. Ecuador. Peru.,,,,,EPSG,EPSG,2000-10-19 00:00:00,,0
-1827,South America - SIRGAS / UTM 19N,Between 72 and 66deg West; northern hemisphere. Brazil. Colombia. Venezuela.,,,,,EPSG,EPSG,2000-10-19 00:00:00,,0
-1828,South America - SIRGAS / UTM 19S,Between 72 and 66deg West; southern hemisphere. Argentina. Bolivia. Brazil. Chile. Colombia. Peru.,,,,,EPSG,EPSG,2000-10-19 00:00:00,,0
-1829,South America - SIRGAS / UTM 20N,Between 66 and 60deg West; northern hemisphere. Brazil. Guyana. Venezuela,,,,,EPSG,EPSG,2000-10-19 00:00:00,,0
-1830,South America - SIRGAS / UTM 20S,Between 66 and 60deg West; southern hemisphere. Argentina. Bolivia. Brazil. Falkland Islands (Malvinas). Paraguay.,,,,,EPSG,EPSG,2000-10-19 00:00:00,,0
-1831,South America - SIRGAS / UTM 21N,Between 60 and 54deg West; northern hemisphere.  Brazil. French Guiana. Guyana.  Suriname.,,,,,EPSG,EPSG,2000-10-19 00:00:00,,0
-1832,South America - SIRGAS / UTM 21S,Between 60 and 54deg West; southern hemisphere. Argentina. Bolivia. Brazil. Falkland Islands (Malvinas). Paraguay. Uruguay.,,,,,EPSG,EPSG,2000-10-19 00:00:00,,0
-1833,South America - SIRGAS / UTM 22N,Between 54 and 48deg West; northern hemisphere. Brazil.  French Guiana.,,,,,EPSG,EPSG,2000-10-19 00:00:00,,0
-1834,South America - SIRGAS / UTM 22S,Between 54 and 48deg West; southern hemisphere. Brazil.  Uruguay.,,,,,EPSG,EPSG,2000-10-19 00:00:00,,0
-1835,South America - SIRGAS / UTM 23S,Between 48 and 42deg West; southern hemisphere. Brazil.,,,,,EPSG,EPSG,2000-10-19 00:00:00,,0
-1836,South America - SIRGAS / UTM 24S,Between 42 and 36deg West; southern hemisphere. Brazil,,,,,EPSG,EPSG,2000-10-19 00:00:00,,0
-1837,South America - SIRGAS / UTM 25S,Between 36 and 30deg West; southern hemisphere. Brazil.,,,,,EPSG,EPSG,2000-10-19 00:00:00,,0
-1838,Namibia - W of 12 deg E,Namibia - west of 12 deg East.,,,,,EPSG,EPSG,1997-06-16 00:00:00,,0
-1839,Namibia - 12 to 14 deg E,Namibia - between 12 and 14 deg East.,,,,,EPSG,EPSG,1997-06-16 00:00:00,,0
-1840,Namibia - 14 to 16 deg E,Namibia - between 14 and 16 deg East.,,,,,EPSG,EPSG,1997-06-16 00:00:00,,0
-1841,Namibia - 16 to 18 deg E,Namibia - between 16 and 18 deg East.,,,,,EPSG,EPSG,1997-06-16 00:00:00,,0
-1842,Namibia - 18 to 20 deg E,Namibia - between 18 and 20 deg East.,,,,,EPSG,EPSG,1997-06-16 00:00:00,,0
-1843,Namibia - 20 to 22 deg E,Namibia - between 20 and 22 deg East.,,,,,EPSG,EPSG,1997-06-16 00:00:00,,0
-1844,Namibia - 22 to 24 deg E,Namibia - between 22 and 24 deg East.,,,,,EPSG,EPSG,1997-06-16 00:00:00,,0
-1845,Namibia - E of 24 deg E,Namibia - east of 24 deg East.,,,,,EPSG,EPSG,1997-06-16 00:00:00,,0
-1846,Sudan - south - W of 30 deg E,Sudan south - west of 30 deg East.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1847,Sudan - south - E of 30 deg E,Sudan south - east of 30 deg East.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1848,Madagascar - offshore - W of 48 deg E,Madagascar - offshore west of 48 deg East.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1849,Madagascar - offshore - E of 48 deg E,Madagascar - offshore east of 48 deg East.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1850,UAE - Abu Dhabi - W of 54 deg E,United Arab Emirates (UAE) - Abu Dhabi west of 54 deg East.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1851,Malaysia - East Malaysia,Malaysia - East Malaysia (Sabah; Sarawak).,,,,,EPSG,EPSG,2000-10-19 00:00:00,,0
-1852,Asia - Brunei and East Malaysia - UTM zone 49,Brunei - offshore; Malaysia - East Malaysia (Sarawak).,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1853,Asia - Brunei and East Malaysia - UTM zone 50,Brunei - offshore; Malaysia - East Malaysia (Sabah).,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1854,Japan - zone I,Japan - Kyushu west of approximately 130 deg East - Nagasaki-ken; islands of Kagoshima-ken between 27 and 32 deg N and between 128 deg 18 min and 130 deg E (between 128 deg 18 min and 30 deg 13 min E for Amami islands).,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-1855,Japan - zone II,Japan - Kyushu east of approximately 130 deg East - Fukuoka-ken; Saga-ken; Kumamoto-ken; Oita-ken; Miyazaki-ken; Kagoshima-ken (except for area within Japan Plane Rectangular Coordinate System zone I).,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-1856,Japan - zone III,Japan - Honshu west of approximately 133 deg 15 min East - Yamaguchi-ken; Shimane-ken; Hiroshima-ken.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-1857,Japan - zone IV,Japan - Shikoku - Kagawa-ken; Ehime-ken; Tokushima-ken; Kochi-ken.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-1858,Japan - zone V,Japan - Honshu between approximately 133 deg 15 min and 135 deg 10 min East - Hyogo-ken; Tottori-ken; Okayama-ken.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-1859,Japan - zone VI,Japan - Honshu between approximately 135 deg 10 min and 136 deg 45 min East - Kyoto-fu; Osaka-fu; Fukui-ken; Shiga-ken; Mie-ken; Nara-ken; Wakayama-ken.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-1860,Japan - zone VII,Japan - Honshu between approximately 136 deg 15 min and 137 deg 45 min East - Ishikawa-ken; Toyama-ken; Gifu-ken; Aichi-ken.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-1861,Japan - zone VIII,Japan - Honshu between approximately 137 deg 45 min and 139 deg East - Niigata-ken; Nagano-ken; Yamanashi-ken; Shizuoka-ken.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-1862,Japan - zone IX,"Japan - Honshu - Tokyo-to. (Excludes offshore island areas of Tokyo-to covered by Japan Plane Rectangular Coordinate System zones XIV, XVIII and XIX).",,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-1863,Japan - zone X,Japan - Honshu north of 38 deg North approximately - Aomori-ken; Akita-ken; Yamagata-ken; Iwate-ken; Miyagi-ken.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-1864,Japan - zone XI,Japan - Hokkaido west of approximately 141 deg  East  - Otaru city; Hakodate city; Date city; Usu-gun and Abuta-gun of Iburi-shicyo; area of Hiyama-shicyo; area of Shiribeshi-shicyo; Oshima-shicyo.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-1865,Japan - zone XII,Japan - Hokkaido between approximately 141 and 143 deg min East - Sapporo city; Asahikawa city; Wakkanai city; Rumoi city; Bibai city; Yubari city; Iwamizawa city; Tomakomai city; Muroran city; Shibetsu city; Nayoro city; Ashibetsu city; Akabira city; Mikasa city; Takikawa city; Sunagawa city; Ebetsu city; Chitose city; Utashinai city; Fukagawa city; Monbetsu city; Furano city; Noboribetsu city; Eniwa city; Ishikari-shicyo; Monbetsu-gun of Abashiri-shicyo; Kamikawa- [...]
-1866,Japan - zone XIII,Japan - Hokkaido east of approximately 143 deg East  - Kitami city; Obihiro city; Kushiro city; Abashiri city; Nemuro city; Nemuro-shicyo; Kushiro-shicyo; Abashiri-shicyo (except Monbetsu-gun); Tokachi-shicyo.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-1867,Japan - zone XIV,Japan - Tokyo-to south of 28 deg North & between 140 deg 30 min & 143 deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-1868,Japan - zone XV,Japan - Okinawa-ken between 126 and 130 deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-1869,Japan - zone XVI,Japan - Okinawa-ken west of 126 deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-1870,Japan - zone XVII,Japan - Okinawa-ken east of 130 deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-1871,Japan - zone XVIII,Japan - Tokyo-to south of 28 deg North and west of 140 deg 30 min East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-1872,Japan - zone XIX,Japan - Tokyo-to south of 28 deg North & east of 143 deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-1873,6-degree TM - N hemisphere CM 177 deg W,Between 180 deg and 174 deg West; northern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1874,6-degree TM - S hemisphere CM 177 deg W,Between 180 deg and 174 deg West; southern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1875,6-degree TM - N hemisphere CM 171 deg W,Between 174 and 168 deg West; northern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1876,6-degree TM - S hemisphere CM 171 deg W,Between 174 and 168 deg West; southern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1877,6-degree TM - N hemisphere CM 165 deg W,Between 168 and 162 deg West; northern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1878,6-degree TM - S hemisphere CM 165 deg W,Between 168 and 162 deg West; southern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1879,6-degree TM - N hemisphere CM 159 deg W,Between 162 and 156 deg West; northern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1880,6-degree TM - S hemisphere CM 159 deg W,Between 162 and 156 deg West; southern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1881,6-degree TM - N hemisphere CM 153 deg W,Between 156 and 150 deg West; northern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1882,6-degree TM - S hemisphere CM 153 deg W,Between 156 and 150 deg West; northern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1883,6-degree TM - N hemisphere CM 147 deg W,Between 150 and 144 deg West; northern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1884,6-degree TM - S hemisphere CM 147 deg W,Between 150 and 144 deg West; southern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1885,6-degree TM - N hemisphere CM 141 deg W,Between 144 and 138 deg West; northern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1886,6-degree TM - S hemisphere CM 141 deg W,Between 144 and 138 deg West; southern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1887,6-degree TM - N hemisphere CM 135 deg W,Between 138 and 132 deg West; northern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1888,6-degree TM - S hemisphere CM 135 deg W,Between 138 and 132 deg West; southern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1889,6-degree TM - N hemisphere CM 129 deg W,Between 132 and 126 deg West; northern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1890,6-degree TM - S hemisphere CM 129 deg W,Between 132 and 126 deg West; southern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1891,6-degree TM - N hemisphere CM 123 deg W,Between 126 and 120 deg West; northern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1892,6-degree TM - S hemisphere CM 123 deg W,Between 126 and 120 deg West; southern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1893,6-degree TM - N hemisphere CM 117 deg W,Between 120 and 114 deg West; northern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1894,6-degree TM - S hemisphere CM 117 deg W,Between 120 and 114 deg West; southern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1895,6-degree TM - N hemisphere CM 111 deg W,Between 114 and 108 deg West; northern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1896,6-degree TM - S hemisphere CM 111 deg W,Between 114 and 108 deg West; southern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1897,6-degree TM - N hemisphere CM 105 deg W,Between 108 and 102 deg West; northern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1898,6-degree TM - S hemisphere CM 105 deg W,Between 108 and 102 deg West; southern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1899,6-degree TM - N hemisphere CM 99 deg W,Between 102 and 96 deg West; northern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1900,6-degree TM - S hemisphere CM 99 deg W,Between 102 and 96 deg West; southern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1901,6-degree TM - N hemisphere CM 93 deg W,Between 96 and 90 deg West; northern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1902,6-degree TM - S hemisphere CM 93 deg W,Between 96 and 90 deg West; southern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1903,6-degree TM - N hemisphere CM 87 deg W,Between 90 and 84 deg West; northern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1904,6-degree TM - S hemisphere CM 87 deg W,Between 90 and 84 deg West; southern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1905,6-degree TM - N hemisphere CM 81 deg W,Between 84 and 78 deg West; northern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1906,6-degree TM - S hemisphere CM 81 deg W,Between 84 and 78 deg West; southern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1907,6-degree TM - N hemisphere CM 75 deg W,Between 78 and 72 deg West; northern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1908,6-degree TM - S hemisphere CM 75 deg W,Between 78 and 72 deg West; southern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1909,6-degree TM - N hemisphere CM 69 deg W,Between 72 and 66 deg West; northern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1910,6-degree TM - S hemisphere CM 69 deg W,Between 72 and 66 deg West; southern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1911,6-degree TM - N hemisphere CM 63 deg W,Between 66 and 60 deg West; northern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1912,6-degree TM - S hemisphere CM 63 deg W,Between 66 and 60 deg West; southern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1913,6-degree TM - N hemisphere CM 57 deg W,Between 60 and 54 deg West; northern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1914,6-degree TM - S hemisphere CM 57 deg W,Between 60 and 54 deg West; southern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1915,6-degree TM - N hemisphere CM 51 deg W,Between 54 and 48 deg West; northern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1916,6-degree TM - S hemisphere CM 51 deg W,Between 54 and 48 deg West; southern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1917,6-degree TM - N hemisphere CM 45 deg W,Between 48 and 42 deg West; northern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1918,6-degree TM - S hemisphere CM 45 deg W,Between 48 and 42 deg West; southern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1919,6-degree TM - N hemisphere CM 39 deg W,Between 42 and 36 deg West; northern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1920,6-degree TM - S hemisphere CM 39 deg W,Between 42 and 36 deg West; southern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1921,6-degree TM - N hemisphere CM 33 deg W,Between 36 and 30 deg West; northern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1922,6-degree TM - S hemisphere CM 33 deg W,Between 36 and 30 deg West; southern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1923,6-degree TM - N hemisphere CM 27 deg W,Between 30 and 24 deg West; northern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1924,6-degree TM - S hemisphere CM 27 deg W,Between 30 and 24 deg West; southern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1925,6-degree TM - N hemisphere CM 21 deg W,Between 24 and 18 deg West; northern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1926,6-degree TM - S hemisphere CM 21 deg W,Between 24 and 18 deg West; southern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1927,6-degree TM - N hemisphere CM 15 deg W,Between 18 and 12 deg West; northern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1928,6-degree TM - S hemisphere CM 15 deg W,Between 18 and 12 deg West; southern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1929,6-degree TM - N hemisphere CM 9 deg W,Between 12 and 6 deg West; northern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1930,6-degree TM - S hemisphere CM 9 deg W,Between 12 and 6 deg West; southern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1931,6-degree TM - N hemisphere CM 3 deg W,Between 6 deg West and 0 deg East; northern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1932,6-degree TM - S hemisphere CM 3 deg W,Between 6 deg West and 0 deg East; southern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1933,6-degree TM - N hemisphere CM 3 deg E,Between 0 and 6 deg East; northern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1934,6-degree TM - S hemisphere CM 3 deg E,Between 0 and 6 deg East; southern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1935,6-degree TM - N hemisphere CM 9 deg E,Between 6 and 12 deg East; northern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1936,6-degree TM - S hemisphere CM 9 deg E,Between 6 and 12 deg East; southern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1937,6-degree TM - N hemisphere CM 15 deg E,Between 12 and 18 deg East; northern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1938,6-degree TM - S hemisphere CM 15 deg E,Between 12 and 18 deg East; southern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1939,6-degree TM - N hemisphere CM 21 deg E,Between 18 and 24 deg East; northern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1940,6-degree TM - S hemisphere CM 21 deg E,Between 18 and 24 deg East; southern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1941,6-degree TM - N hemisphere CM 27 deg E,Between 24 and 30 deg East; northern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1942,6-degree TM - S hemisphere CM 27 deg E,Between 24 and 30 deg East; southern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1943,6-degree TM - N hemisphere CM 33 deg E,Between 30 and 36 deg East; northern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1944,6-degree TM - S hemisphere CM 33 deg E,Between 30 and 36 deg East; southern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1945,6-degree TM - N hemisphere CM 39 deg E,Between 36 and 42 deg East; northern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1946,6-degree TM - S hemisphere CM 39 deg E,Between 36 and 42 deg East; southern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1947,6-degree TM - N hemisphere CM 45 deg E,Between 42 and 48 deg East; northern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1948,6-degree TM - S hemisphere CM 45 deg E,Between 42 and 48 deg East; southern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1949,6-degree TM - N hemisphere CM 51 deg E,Between 48 and 54 deg East; northern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1950,6-degree TM - S hemisphere CM 51 deg E,Between 48 and 54 deg East; southern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1951,6-degree TM - N hemisphere CM 57 deg E,Between 54 and 60 deg East; northern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1952,6-degree TM - S hemisphere CM 57 deg E,Between 54 and 60 deg East; southern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1953,6-degree TM - N hemisphere CM 63 deg E,Between 60 and 66 deg East; northern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1954,6-degree TM - S hemisphere CM 63 deg E,Between 60 and 66 deg East; southern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1955,6-degree TM - N hemisphere CM 69 deg E,Between 66 and 72 deg East; northern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1956,6-degree TM - S hemisphere CM 69 deg E,Between 66 and 72 deg East; southern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1957,6-degree TM - N hemisphere CM 75 deg E,Between 72 and 78 deg East; northern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1958,6-degree TM - S hemisphere CM 75 deg E,Between 72 and 78 deg East; southern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1959,6-degree TM - N hemisphere CM 81 deg E,Between 78 and 84 deg East; northern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1960,6-degree TM - S hemisphere CM 81 deg E,Between 78 and 84 deg East; southern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1961,6-degree TM - N hemisphere CM 87 deg E,Between 84 and 90 deg East; northern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1962,6-degree TM - S hemisphere CM 87 deg E,Between 84 and 90 deg East; southern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1963,6-degree TM - N hemisphere CM 93 deg E,Between 90 and 96 deg East; northern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1964,6-degree TM - S hemisphere CM 93 deg E,Between 90 and 96 deg East; southern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1965,6-degree TM - N hemisphere CM 99 deg E,Between 96 and 102eg East; northern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1966,6-degree TM - S hemisphere CM 99 deg E,Between 96 and 102eg East; southern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1967,6-degree TM - N hemisphere CM 105 deg E,Between 102 and 108 deg East; northern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1968,6-degree TM - S hemisphere CM 105 deg E,Between 102 and 108 deg East; southern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1969,6-degree TM - N hemisphere CM 111 deg E,Between 108 and 114 deg East; northern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1970,6-degree TM - S hemisphere CM 111 deg E,Between 108 and 114 deg East; southern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1971,6-degree TM - N hemisphere CM 117 deg E,Between 114 and 120 deg East; northern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1972,6-degree TM - S hemisphere CM 117 deg E,Between 114 and 120 deg East; southern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1973,6-degree TM - N hemisphere CM 123 deg E,Between 120 and 126 deg East; northern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1974,6-degree TM - S hemisphere CM 123 deg E,Between 120 and 126 deg East; southern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1975,6-degree TM - N hemisphere CM 129 deg E,Between 126 and 132 deg East; northern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1976,6-degree TM - S hemisphere CM 129 deg E,Between 126 and 132 deg East; southern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1977,6-degree TM - N hemisphere CM 135 deg E,Between 132 and 138 deg East; northern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1978,6-degree TM - S hemisphere CM 135 deg E,Between 132 and 138 deg East; southern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1979,6-degree TM - N hemisphere CM 141 deg E,Between 138 and 144 deg East; northern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1980,6-degree TM - S hemisphere CM 141 deg E,Between 138 and 144 deg East; southern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1981,6-degree TM - N hemisphere CM 147 deg E,Between 144 and 150 deg East; northern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1982,6-degree TM - S hemisphere CM 147 deg E,Between 144 and 150 deg East; southern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1983,6-degree TM - N hemisphere CM 153 deg E,Between 150 and 156 deg East; northern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1984,6-degree TM - S hemisphere CM 153 deg E,Between 150 and 156 deg East; southern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1985,6-degree TM - N hemisphere CM 159 deg E,Between 156 and 162 deg East; northern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1986,6-degree TM - S hemisphere CM 159 deg E,Between 156 and 162 deg East; southern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1987,6-degree TM - N hemisphere CM 165 deg E,Between 162 and 168 deg East; northern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1988,6-degree TM - S hemisphere CM 165 deg E,Between 162 and 168 deg East; southern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1989,6-degree TM - N hemisphere CM 171 deg E,Between 168 and 174 deg East; northern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1990,6-degree TM - S hemisphere CM 171 deg E,Between 168 and 174 deg East; southern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1991,6-degree TM - N hemisphere CM 177 deg E,Between 174 and 180 deg; northern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1992,6-degree TM - S hemisphere CM 177 deg E,Between 174 and 180 deg; southern hemisphere.,,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-1993,WGS72BE / UTM zone 48N,Between 102 and 108 deg East; northern hemisphere.  Vietnam - offshore.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1994,WGS72BE / UTM zone 49N,Between 108 and 114 deg East; northern hemisphere. Vietnam - offshore.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1995,WGS72BE / UTM zone 49S,Between 108 and 114 deg East; southern hemisphere.  Indonesia - offshore.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-1996,UPS - north,Northern hemisphere polar area.,,,,,EPSG,EPSG,2000-03-07 00:00:00,,0
-1997,UPS - south,Southern hemisphere polar area.,,,,,EPSG,EPSG,2000-03-07 00:00:00,,0
-1998,UTM north,Northern hemisphere between equator and 84 deg North.,,,,,EPSG,EPSG,2001-06-05 00:00:00,,0
-1999,UTM south,Southern hemisphere between equator and 80 deg South.,,,,,EPSG,EPSG,2001-06-05 00:00:00,,0
-2000,WGS84 / UTM zone 1N,Between 180 deg and 174 deg West; northern hemisphere; Russian Federation.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2001,WGS84 / UTM zone 1S,Between 180 deg and 174 deg West; southern hemisphere.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2002,WGS84 / UTM zone 2N,Between 174 and 168 deg West; northern hemisphere. Russian Federation; United States (USA) - Alaska (AK).,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2003,WGS84 / UTM zone 2S,Between 174 and 168 deg West; southern hemisphere.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2004,WGS84 / UTM zone 3N,Between 168 and 162 deg West; northern hemisphere. United States (USA) - Alaska (AK).,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2005,WGS84 / UTM zone 3S,Between 168 and 162 deg West; southern hemisphere.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2006,WGS84 / UTM zone 4N,Between 162 and 156 deg West; northern hemisphere. United States (USA) - Alaska (AK).,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2007,WGS84 / UTM zone 4S,Between 162 and 156 deg West; southern hemisphere.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2008,WGS84 / UTM zone 5N,Between 156 and 150 deg West; northern hemisphere. United States (USA) - Alaska (AK).,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2009,WGS84 / UTM zone 5S,Between 156 and 150 deg West; southern hemisphere.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2010,WGS84 / UTM zone 6N,Between 150 and 144 deg West; northern hemisphere. United States (USA) - Alaska (AK).,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2011,WGS84 / UTM zone 6S,Between 150 and 144 deg West; southern hemisphere.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2012,WGS84 / UTM zone 7N,Between 144 and 138 deg West; northern hemisphere. Canada - British Columbia (BC); Yukon. United States (USA) - Alaska (AK).,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2013,WGS84 / UTM zone 7S,Between 144 and 138 deg West; southern hemisphere.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2014,WGS84 / UTM zone 8N,Between 138 and 132 deg West; northern hemisphere. Canada - British Columbia (BC); North West Territiories; Yukon. United States (USA) - Alaska (AK).,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2015,WGS84 / UTM zone 8S,Between 138 and 132 deg West; southern hemisphere.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2016,WGS84 / UTM zone 9N,Between 132 and 126 deg West; northern hemisphere. Canada - British Columbia (BC); North West Territories; Yukon. United States (USA) - Alaska (AK).,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2017,WGS84 / UTM zone 9S,Between 132 and 126 deg West; southern hemisphere.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2018,WGS84 / UTM zone 10N,Between 126 and 120 deg West; northern hemisphere. Canada - British Columbia (BC); North West Territories; Nunavut; Yukon. United States (USA) - Alaska (AK).,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2019,WGS84 / UTM zone 10S,Between 126 and 120 deg West; southern hemisphere.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2020,WGS84 / UTM zone 11N,Between 120 and 114 deg West; northern hemisphere. Canada - Alberta; British Columbia (BC); North West Territories; Nunavut. Mexico. United States (USA).,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2021,WGS84 / UTM zone 11S,Between 120 and 114 deg West; southern hemisphere.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2022,WGS84 / UTM zone 12N,Between 114 and 108 deg West; northern hemisphere. Canada - Alberta; North West Territories; Nunavut; Saskatchewan.  Mexico.  United States (USA).,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2023,WGS84 / UTM zone 12S,Between 114 and 108 deg West; southern hemisphere.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2024,WGS84 / UTM zone 13N,Between 108 and 102 deg West; northern hemisphere. Canada - North West Territories; Nunavut; Saskatchewan.  Mexico.  United States (USA).,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2025,WGS84 / UTM zone 13S,Between 108 and 102 deg West; southern hemisphere.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2026,WGS84 / UTM zone 14N,Between 102 and 96 deg West; northern hemisphere. Canada - Manitoba; Nunavut; Saskatchewan.  Mexico.  United States (USA).,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2027,WGS84 / UTM zone 14S,Between 102 and 96 deg West; southern hemisphere.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2028,WGS84 / UTM zone 15N,Between 96 and 90 deg West; northern hemisphere. Canada - Manitoba; Nunavut; Ontario.  Guatemala.  Mexico.  United States (USA) - Gulf of Mexico (GoM).,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2029,WGS84 / UTM zone 15S,Between 96 and 90 deg West; southern hemisphere.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2030,WGS84 / UTM zone 16N,Between 90 and 84 deg West; northern hemisphere. Belize. Canada - Manitoba; Nunavut; Ontario.  Costa Rica. Cuba. El Salvador. Guatemala. Honduras. Mexico. Nicaragua. Puerto Rico. United States (USA).,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2031,WGS84 / UTM zone 16S,Between 90 and 84 deg West; southern hemisphere.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2032,WGS84 / UTM zone 17N,Between 84 and 78 deg West; northern hemisphere. Bahamas. Ecuador - north of equator. Canada - Nunavut; Ontario; Quebec.  Cayman Islands.  Colombia. Costa Rica. Jamaica. Nicaragua. Panama. Puerto Rico. United States (USA).,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2033,WGS84 / UTM zone 17S,Between 84 and 78 deg West; southern hemisphere. Ecuador. Peru.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2034,WGS84 / UTM zone 18N,Between 78 and 72 deg West; northern hemisphere. Bahamas. Canada - Nunavut; Ontario; Quebec. Colombia. Cuba. Ecuador. Greenland. Haiti. Jamica. Panama. Turks and Caicos Islands. United States (USA). Venezuela.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2035,WGS84 / UTM zone 18S,Between 78 and 72 deg West; southern hemisphere. Argentina. Brazil. Chile. Colombia. Ecuador. Peru.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2036,WGS84 / UTM zone 19N,Between 72 and 66 deg West; northern hemisphere. Aruba. Bahamas. Brazil. Canada - New Brunswick (NB); Newfoundland; Nunavut; Nova Scotia (NS); Quebec. Colombia. Dominican Republic. Greenland. Netherlands Antilles. Puerto Rico. Turks and Caicos Islands. United States. Venezuela.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2037,WGS84 / UTM zone 19S,Between 72 and 66 deg West; southern hemisphere. Argentina. Bolivia. Brazil. Chile. Colombia. Peru.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2038,WGS84 / UTM zone 20N,Between 66 and 60 deg West; northern hemisphere. Anguilla. Antigua & Barbuda. Bermuda. Brazil. Canada - New Brunswick (NB); Newfoundland; North west Territories; Nova Scotia (NS); Prince Edward Island; Quebec. Dominica. Greenland. Grenada. Guadeloupe. Guyana. Martinique. Montserrat. Saint Kitts and Nevis. Saint Lucia. Saint Vncent and the Grenadines. Trinidad and Tobago. Venezuela. Virgin islands.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2039,WGS84 / UTM zone 20S,Between 66 and 60 deg West; southern hemisphere. Argentina. Bolivia. Brazil. Falkland Islands (Malvinas). Paraguay.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2086,WGS84 / UTM zone 44N,Between 78 and 84 deg East; northern hemisphere. China. India. Kazakstan. Kyrgyzstan. Nepal. Russian Federation. Sri Lanka.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2087,WGS84 / UTM zone 44S,Between 78 and 84 deg East; southern hemisphere.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2088,WGS84 / UTM zone 45N,Between 84 and 90 deg East; northern hemisphere. Bangladesh. Bhutan. China. India. Kazakstan. Mongolia. Nepal. Russian Federation.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2089,WGS84 / UTM zone 45S,Between 84 and 90 deg East; southern hemisphere.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2090,WGS84 / UTM zone 46N,Between 90 and 96 deg East; northern hemisphere. Bangladesh. Bhutan. China. Indonesia. Mongolia. Myanmar (Burma). Russian Federation.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2091,WGS84 / UTM zone 46S,Between 90 and 96 deg East; southern hemisphere.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2092,WGS84 / UTM zone 47N,Between 96 and 102 deg East; northern hemisphere. China. Indonesia. Laos. Malaysia - West Malaysia. Mongolia. Myanmar (Burma). Russian Federation. Thailand.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2093,WGS84 / UTM zone 47S,Between 96 and 102 deg East; southern hemisphere. Indonesia.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2094,WGS84 / UTM zone 48N,Between 102 and 108 deg East; northern hemisphere. Cambodia. China. Indonesia. Laos. Malaysia - West Malaysia. Mongolia. Russian Federation. Singapore. Thailand. Vietnam.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2095,WGS84 / UTM zone 48S,Between 102 and 108 deg East; southern hemisphere. Indonesia.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2096,WGS84 / UTM zone 49N,Between 108 and 114 deg East; northern hemisphere. China. Hong Kong. Indonesia. Macau. Malaysia - East Malaysia - Sarawak. Mongolia. Russian Federation. Vietnam.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2097,WGS84 / UTM zone 49S,Between 108 and 114 deg East; southern hemisphere. Australia. Indonesia.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2098,WGS84 / UTM zone 50N,Between 114 and 120 deg East; northern hemisphere. Brunei. China. Hong Kong. Indonesia. Malaysia - East Malaysia - Sarawak. Mongolia. Philippines. Russian Federation. Taiwan.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2099,WGS84 / UTM zone 50S,Between 114 and 120 deg East; southern hemisphere. Australia. Indonesia.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2100,WGS84 / UTM zone 51N,Between 120 and 126 deg East; northern hemisphere. China. Indonesia. Japan. North Korea. Philippines. Russian Federation.  South Korea. Taiwan.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2101,WGS84 / UTM zone 51S,Between 120 and 126 deg East; southern hemisphere. Australia. East Timor. Indonesia.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2102,WGS84 / UTM zone 52N,Between 126 and 132 deg East; northern hemisphere. China. Indonesia. Japan. North Korea. Russian Federation. South Korea.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2103,WGS84 / UTM zone 52S,Between 126 and 132 deg East; southern hemisphere. Australia. East Timor. Indonesia.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2104,WGS84 / UTM zone 53N,Between 132 and 138 deg East; northern hemisphere. China. Japan. Russian Federation.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2105,WGS84 / UTM zone 53S,Between 132 and 138 deg East; southern hemisphere. Australia.  Indonesia.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2106,WGS84 / UTM zone 54N,Between 138 and 144 deg East; northern hemisphere. Japan. Russian Federation.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2107,WGS84 / UTM zone 54S,Between 138 and 144 deg East; southern hemisphere. Australia. Indonesia. Papua New Guinea.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2108,WGS84 / UTM zone 55N,Between 144 and 150 deg East; northern hemisphere. Japan. Russian Federation.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2109,WGS84 / UTM zone 55S,Between 144 and 150 deg East; southern hemisphere. Australia. Papua New Guinea.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2110,WGS84 / UTM zone 56N,Between 150 and 156 deg East; northern hemisphere. Russian Federation.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2111,WGS84 / UTM zone 56S,Between 150 and 156 deg East; southern hemisphere. Australia. Papua New Guinea.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2112,WGS84 / UTM zone 57N,Between 156 and 162 deg East; northern hemisphere. Russian Federation.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2113,WGS84 / UTM zone 57S,Between 156 and 162 deg East; southern hemisphere.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2114,WGS84 / UTM zone 58N,Between 162 and 168 deg East; northern hemisphere. Russian Federation.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2115,WGS84 / UTM zone 58S,Between 162 and 168 deg East; southern hemisphere.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2116,WGS84 / UTM zone 59N,Between 168 and 174 deg East; northern hemisphere. Russian Federation.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2117,WGS84 / UTM zone 59S,Between 168 and 174 deg East; southern hemisphere. New Zealand.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2118,WGS84 / UTM zone 60N,Between 174 and 180 deg East; northern hemisphere. Russian Federation.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2119,WGS84 / UTM zone 60S,Between 174 and 180 deg East; southern hemisphere. New Zealand.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2120,Guatemala - N of 15 deg 50 min N,Guatemala - north of 15 deg 50 min North.,,,,,EPSG,EPSG,1999-08-16 00:00:00,,0
-2121,Guatemala - S of 15 deg 50 min N,Guatemala - south of 15 deg 50 min North.,,,,,EPSG,EPSG,2000-01-06 00:00:00,,0
-2122,Europe - ETRS89 / UTM 28,Europe - between 18 and 12 deg West - United Kingdom (UKCS) offshore.,,,,,EPSG,EPSG,2000-10-19 00:00:00,,0
-2123,Europe - ETRS89 / UTM 29,Europe - between 12 and 6 deg West - United Kingdom (UKCS) offshore.,,,,,EPSG,EPSG,2000-10-19 00:00:00,,0
-2124,Europe - ETRS89 / UTM 30,Europe - between 6 and 0 deg West.,,,,,EPSG,EPSG,2000-10-19 00:00:00,,0
-2125,Europe - ETRS89 / UTM 31,Europe - between 0 and 6 deg East - Norway.,,,,,EPSG,EPSG,2000-10-19 00:00:00,,0
-2126,Europe - ETRS89 / UTM 32,Europe - between 6 and 12deg East - Norway.,,,,,EPSG,EPSG,2000-10-19 00:00:00,,0
-2127,Europe - ETRS89 / UTM 33,Europe - between 12 and 18deg East - Germany - Brandenburg; Norway.,,,,,EPSG,EPSG,2000-10-19 00:00:00,,0
-2128,Europe - ETRS89 / UTM 34,Europe - between 18 and 24deg East - Norway.,,,,,EPSG,EPSG,2000-10-19 00:00:00,,0
-2129,Europe - ETRS89 / UTM 35,Europe - between 24 and 30deg East - Norway.,,,,,EPSG,EPSG,2000-10-19 00:00:00,,0
-2130,Europe - ETRS89 / UTM 36,Europe - between 30 and 36deg East.,,,,,EPSG,EPSG,2000-10-19 00:00:00,,0
-2131,Europe - ETRS89 / UTM 37,Europe - between 36 and 42deg East.,,,,,EPSG,EPSG,2000-10-19 00:00:00,,0
-2132,Europe - ETRS89 / UTM 38,Europe - between 42 and 48deg East.,,,,,EPSG,EPSG,2000-10-19 00:00:00,,0
-2133,North America - UTM zone 3,North America - between 168 and 162 deg West. United States (USA) - Alaska.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2134,North America - UTM zone 4,North America - between 162 and 156 deg West. United States (USA) - Alaska.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2135,North America - UTM zone 5,North America - between 156 and 150 deg West. United States (USA) - Alaska.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2136,North America - UTM zone 6,North America - between 150 and 144 deg West. United States (USA) - Alaska.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2137,North America - UTM zone 7,North America - between 144 and 138 deg West. Canada - British Columbia (BC); Yukon. United States (USA) - Alaska (AK).,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2138,North America - UTM zone 8,North America - between 138 and 132 deg West. Canada - British Columbia (BC); North West Territiories; Yukon. United States (USA) - Alaska (AK).,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2139,North America - UTM zone 9,North America - between 132 and 126 deg West. Canada - British Columbia (BC); North West Territories; Yukon. United States (USA) - Alaska (AK).,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2140,North America - UTM zone 10,North America - between 130 and 120 deg West. Canada - British Columbia (BC); North West Territories; Nunavut; Yukon. United States (USA) - Alaska (AK).,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2141,North America - UTM zone 11,North America - between 120 and 114 deg West. Canada - Alberta; British Columbia (BC); North West Territories; Nunavut. Mexico. United States (USA).,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2142,North America - UTM zone 12,North America - between 114 and 108 deg West. Canada - Alberta; North West Territories; Nunavut; Saskatchewan.  Mexico.  United States (USA).,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2143,North America - UTM zone 13,North America - between 108 and 102 deg West. Canada - North West Territories; Nunavut; Saskatchewan.  Mexico.  United States (USA).,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2144,North America - UTM zone 14,North America - between 102 and 96 deg West. Canada - Manitoba; Nunavut; Saskatchewan.  Mexico.  United States (USA).,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2145,North America - UTM zone 15,North America - between 96 and 90 deg West. Canada - Manitoba; Nunavut; Ontario.  Guatemala.  Mexico.  United States (USA) - Gulf of Mexico (GoM).,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2146,North America - UTM zone 16,North America - between 90 and 84 deg West.  Belize. Canada - Manitoba; Nunavut; Ontario.  Costa Rica. Cuba. El Salvador. Guatemala. Honduras. Mexico. Nicaragua. United States (USA).,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2147,North America - UTM zone 17,North America - between 84 and 78 deg West. Canada - Nunavut; Ontario; Quebec.  Mexico.  United States (USA).,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2148,North America - UTM zone 18,North America - between 78 and 72 deg West. Canada - Nunavut; Ontario; Quebec. United States (USA).,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2149,North America - UTM zone 19,North America - between 72 and 66 deg West. Canada - New Brunswick (NB); Newfoundland; Nunavut; Nova Scotia (NS); Quebec. United States (USA).,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2150,North America - UTM zone 20,North America - between 66 and 60 deg West. Canada - New Brunswick (NB); Newfoundland; North west Territories; Nova Scotia (NS); Prince Edward Island; Quebec. United States (USA) offshore Atlantic,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2151,Canada - UTM zone 21,North America - between 60 and 54 deg West. Canada - Newfoundland; Quebec.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2152,Canada - UTM zone 22,North America - between 54 and 48 deg West. Canada - Newfoundland.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2153,Canada - UTM zone 23,North America - Canada offshore Atlantic - between 48 and 42 deg West.,,,,,EPSG,EPSG,1995-06-02 00:00:00,,0
-2154,USA - Alabama - SPCS - E,United States (USA) - Alabama east of approximately 86d 37m West - counties Barbour; Bullock; Calhoun; Chambers; Cherokee; Clay; Cleburne; Coffee; Coosa; Covington; Crenshaw; Dale; De Kalb; Elmore; Etowah; Geneva; Henry; Houston; Jackson; Lee; Macon; Madison; Marshall; Montgomery; Pike; Randolph; Russell; St.Clair; Talladega; Tallapoosa.,,,,,EPSG,EPSG,1995-12-02 00:00:00,,0
-2155,USA - Alabama - SPCS - W,United States (USA) - Alabama west of approximately 86d 37m West - counties Autauga; Baldwin; Bibb; Blount; Butler; Chilton; Choctaw; Clarke; Colbert; Conecuh; Cullman; Dallas; Escambia; Fayette; Franklin; Greene; Hale; Jefferson; Lamar; Lauderdale; Lawrence; Limestone; Lowndes; Marengo; Marion; Mobile; Monroe; Morgan; Perry; Pickens; Shelby; Sumter; Tuscaloosa; Walker; Washington; Wilcox; Winston.,,,,,EPSG,EPSG,1995-12-02 00:00:00,,0
-2156,USA - Alaska - Panhandle,United States (USA) - Alaska - east of 141 deg West; i.e. Panhandle.,,,,,EPSG,EPSG,1996-09-12 00:00:00,,0
-2157,USA - Alaska - Aleutian Islands,United States (USA) - Alaska - Aleutian Islands.,,,,,EPSG,EPSG,1999-04-22 00:00:00,,0
-2158,USA - Alaska - 144 to 141 deg W,United States (USA) - Alaska - 144 to 141 deg West.,,,,,EPSG,EPSG,1995-12-02 00:00:00,,0
-2159,USA - Alaska - 148 to 144 deg W,United States (USA) - Alaska - 148 to 144 deg West.,,,,,EPSG,EPSG,1995-12-02 00:00:00,,0
-2160,USA - Alaska - 152 to 148 deg W,United States (USA) - Alaska - 152 to 148 deg West.,,,,,EPSG,EPSG,1995-12-02 00:00:00,,0
-2161,USA - Alaska - 156 to 152 deg W,United States (USA) - Alaska - 156 to 152 deg West.,,,,,EPSG,EPSG,1995-12-02 00:00:00,,0
-2162,USA - Alaska - 160 to 156 deg W,United States (USA) - Alaska - 160 to 156 deg West.,,,,,EPSG,EPSG,1995-12-02 00:00:00,,0
-2163,USA - Alaska - 164 to 160 deg W,United States (USA) - Alaska - 164 to 160 deg West.,,,,,EPSG,EPSG,1995-12-02 00:00:00,,0
-2164,USA - Alaska - N of 54.5 deg N; 168 to 164 deg W,United States (USA) - Alaska - north of 54d 30m North and between 168 to 164 deg West.,,,,,EPSG,EPSG,1995-12-02 00:00:00,,0
-2165,USA - Alaska - N of 54.5 deg N; W of 168 deg W,United States (USA) - Alaska - north of 54d 30m North and west of 168 deg West.,,,,,EPSG,EPSG,1995-12-02 00:00:00,,0
-2166,USA - Arizona - SPCS - central,United States (USA) - Arizona between approximately 110d 45m and 113d 20m West - counties Coconino; Maricopa; Pima; Pinal; Santa Cruz; Yavapai.,,,,,EPSG,EPSG,2001-11-06 00:00:00,,0
-2167,USA - Arizona - SPCS - E,United States (USA) - Arizona east of approximately 110d 45m West - counties Apache; Cochise; Gila; Graham; Greenlee; Navajo.,,,,,EPSG,EPSG,2001-11-06 00:00:00,,0
-2168,USA - Arizona - SPCS - W,United States (USA) - Arizona west of approximately 113d 20m West - counties La Paz; Mohave; Yuma.,,,,,EPSG,EPSG,2001-11-06 00:00:00,,0
-2169,USA - Arkansas - SPCS - N,United States (USA) - Arkansas north of approximately 34d 50m North - counties Baxter; Benton; Boone; Carroll; Clay; Cleburne; Conway; Craighead; Crawford; Crittenden; Cross; Faulkner; Franklin; Fulton; Greene; Independence; Izard; Jackson; Johnson; Lawrence; Logan; Madison; Marion; Mississippi; Newton; Perry; Poinsett; Pope; Randolph; Scott; Searcy; Sebastian; Sharp; St. Francis; Stone; Van Buren; Washington; White; Woodruff; Yell.,,,,,EPSG,EPSG,1999-04-22 [...]
-2170,USA - Arkansas - SPCS - S,United States (USA) - Arkansas south of approximately 34d 50m North - counties Arkansas; Ashley; Bradley; Calhoun; Chicot; Clark; Cleveland; Columbia; Dallas; Desha; Drew; Garland; Grant; Hempstead; Hot Spring; Howard; Jefferson; Lafayette; Lee; Lincoln; Little River; Lonoke; Miller; Monroe; Montgomery; Nevada; Ouachita; Phillips; Pike; Polk; Prairie; Pulaski; Saline; Sevier; Union.,,,,,EPSG,EPSG,1999-04-22 00:00:00,,0
-2171,USA - GoM OCS - W of 96 deg W,United States (USA) - Gulf of Mexico outer continental shelf (GoM OCS) west of approximately 96 deg West - protraction areas Corpus Christi; Port Isabel.,,,,,EPSG,EPSG,1995-12-02 00:00:00,,0
-2172,USA - GoM OCS - 96 to 90 deg W,United States (USA) - Gulf of Mexico outer continental shelf (GoM OCS) between approximately 96 deg and 90 deg West - protraction areas East Breaks (EB); Alaminos Canyon (AC); Garden Banks (GB); Keathley Canyon (KC); Ewing Bank (EW); Green Canyon (GC); Walker Ridge (WR).,,,,,EPSG,EPSG,1995-12-02 00:00:00,,0
-2173,USA - GoM OCS - 90 to 84 deg W,United States (USA) - Gulf of Mexico outer continental shelf (GoM OCS) between approximately 90 deg and 84 deg West - protraction areas Mobile (MO); Viosca Knoll (VK); Mississippi Canyon (MC); Atwater Valley (AT); Lund; Pensacola; Destin Dome (DD); De Soto Canyon; Lloyd; Henderson; Apalachicola; Florida Middle Ground; The Elbow; Vernon Basin; Howell Hook; Rankin.,,,,,EPSG,EPSG,1995-12-02 00:00:00,,0
-2174,USA - GoM OCS - E of 84 deg W,United States (USA) - Gulf of Mexico outer continental shelf (GoM OCS) east of approximately 84 deg West - protraction areas Gainesville; Tarpon Springs; St. Petersburg; Charlotte Harbor; Pulley Ridge; Dry Tortugas; Miami; Key West.,,,,,EPSG,EPSG,1995-12-02 00:00:00,,0
-2175,USA - California - SPCS - 1,United States (USA) - California north of approximately 40 deg North - counties Del Norte; Humboldt; Lassen; Modoc; Plumas; Shasta; Siskiyou; Tehama; Trinity.,,,,,EPSG,EPSG,2001-11-06 00:00:00,,0
-2176,USA - California - SPCS - 2,United States (USA) - California between approximately 40 deg & 38d 15m North - counties Alpine; Amador; Butte; Colusa; El Dorado; Glenn; Lake; Mendocino; Napa; Nevada; Placer; Sacramento; Sierra; Solano; Sonoma; Sutter; Yolo; Yuba.,,,,,EPSG,EPSG,2001-11-06 00:00:00,,0
-2177,USA - California - SPCS - 3,United States (USA) - California between approximately 38d 15m & 37d North - counties Alameda; Calaveras; Contra Costa; Madera; Marin; Mariposa; Merced; Mono; San Francisco; San Joaquin; San Mateo; Santa Clara; Santa Cruz; Stanislaus; Tuolumne.,,,,,EPSG,EPSG,2001-11-06 00:00:00,,0
-2178,USA - California - SPCS - 4,United States (USA) - California between approximately 37d & 35d 30m North - counties Fresno; Inyo; Kings; Monterey; San Benito; Tulare.,,,,,EPSG,EPSG,2001-11-06 00:00:00,,0
-2179,USA - California - SPCS27 - 5,United States (USA) - California between approximately 35d 50m & 34d North excluding LA - counties Kern; San Bernardino; San Luis Obispo; Santa Barbara; Ventura.,,,,,EPSG,EPSG,1999-04-22 00:00:00,,0
-2180,USA - California - SPCS - 6,United States (USA) - California south of approximately 38d 30m North - counties Imperial; Orange; Riverside; San Diego.,,,,,EPSG,EPSG,2001-11-06 00:00:00,,0
-2181,USA - California - SPCS27 - 7,United States (USA) - California - Los Angeles county.,,,,,EPSG,EPSG,1999-04-22 00:00:00,,0
-2182,USA - California - SPCS83 - 5,United States (USA) - California between approximately 35d 50m & 34d North - counties Kern; Los Angeles; San Bernardino; San Luis Obispo; Santa Barbara; Ventura.,,,,,EPSG,EPSG,2001-11-06 00:00:00,,0
-2183,USA - Colorado - SPCS - C,United States (USA) - Colorado between approximately 39d 50m & 38d 30m North - counties Arapahoe; Chaffee; Cheyenne; Clear Creek; Delta; Denver; Douglas; Eagle; El Paso; Elbert; Fremont; Garfield; Gunnison; Jefferson; Kit Carson; Lake; Lincoln; Mesa; Park; Pitkin; Summit; Teller.,,,,,EPSG,EPSG,2001-11-06 00:00:00,,0
-2184,USA - Colorado - SPCS - N,United States (USA) - Colorado north of approximately 39d 50m North - counties Adams; Boulder; Gilpin; Grand; Jackson; Larimer; Logan; Moffat; Morgan; Phillips; Rio Blanco; Routt; Sedgwick; Washington; Weld; Yuma.,,,,,EPSG,EPSG,2001-11-06 00:00:00,,0
-2185,USA - Colorado - SPCS - S,United States (USA) - Colorado south of approximately 38d 30m North - counties Alamosa; Archuleta; Baca; Bent; Conejos; Costilla; Crowley; Custer; Dolores; Hinsdale; Huerfano; Kiowa; La Plata; Las Animas; Mineral; Montezuma; Montrose; Otero; Ouray; Prowers; Pueblo; Rio Grande; Saguache; San Juan; San Miguel.,,,,,EPSG,EPSG,2001-11-06 00:00:00,,0
-2186,USA - Florida - SPCS - E,United States (USA) - Florida east of approximately 81d 45m West - counties of Brevard; Broward; Clay; Collier; Dade; Duval; Flagler; Glades; Hendry; Highlands; Indian River; Lake; Martin; Monroe; Nassau; Okeechobee; Orange; Osceola; Palm Beach; Putnam; Seminole; St. Johns; St. Lucie; Volusia.,,,,,EPSG,EPSG,2001-11-06 00:00:00,,0
-2187,USA - Florida - SPCS - N,United States (USA) - Florida north of approximately 29d 30m North & west of approximately 82d West - counties of Alachua; Baker; Bay; Bradford; Calhoun; Columbia; Dixie; Escambia; Franklin; Gadsden; Gilchrist; Gulf; Hamilton; Holmes; Jackson; Jefferson; Lafayette; Leon; Liberty; Madison; Okaloosa; Santa Rosa; Suwannee; Taylor; Union; Wakulla; Walton; Washington.,,,,,EPSG,EPSG,2001-11-06 00:00:00,,0
-2188,USA - Florida - SPCS - W,United States (USA) - Florida west of approximately 81d 45m West & south of approximately 29d 30m North - counties of Charlotte; Citrus; De Soto; Hardee; Hernando; Hillsborough; Lee; Levy; Manatee; Marion; Pasco; Pinellas; Polk; Sarasota; Sumter.,,,,,EPSG,EPSG,2001-11-06 00:00:00,,0
-2189,USA - Georgia - SPCS - E,United States (USA) - Georgia east of approximately 83d 15m West - counties of Appling; Atkinson; Bacon; Baldwin; Brantley; Bryan; Bulloch; Burke; Camden; Candler; Charlton; Chatham; Clinch; Coffee; Columbia; Dodge; Echols; Effingham; Elbert; Emanuel; Evans; Franklin; Glascock; Glynn; Greene; Hancock; Hart; Jeff Davis; Jefferson; Jenkins; Johnson; Lanier; Laurens; Liberty; Lincoln; Long; Madison; McDuffie; McIntosh; Montgomery; Oglethorpe; Pierce; Richmond;  [...]
-2190,USA - Georgia - SPCS - W,United States (USA) - Georgia west of approximately 83d 15m West - counties of Baker; Banks; Barrow; Bartow; Ben Hill; Berrien; Bibb; Bleckley; Brooks; Butts; Calhoun; Carroll; Catoosa; Chattahoochee; Chattooga; Cherokee; Clarke; Clay; Clayton; Cobb; Colquitt; Cook; Coweta; Crawford; Crisp; Dade; Dawson; De Kalb; Decatur; Dooly; Dougherty; Douglas; Early; Fannin; Fayette; Floyd; Forsyth; Fulton; Gilmer; Gordon; Grady; Gwinnett; Habersham; Hall; Haralson; Har [...]
-2191,USA - Idaho - SPCS - central,United States (USA) - Idaho between approximately 113d & 115d West - counties of Blaine; Butte; Camas; Cassia; Custer; Gooding; Jerome; Lemhi; Lincoln; Minidoka; Twin Falls.,,,,,EPSG,EPSG,2001-11-06 00:00:00,,0
-2192,USA - Idaho - SPCS - E,United States (USA) - Idaho east of approximately 113d West - counties of Bannock; Bear Lake; Bingham; Bonneville; Caribou; Clark; Franklin; Fremont; Jefferson; Madison; Oneida; Power; Teton.,,,,,EPSG,EPSG,2001-11-06 00:00:00,,0
-2193,USA - Idaho - SPCS - W,United States (USA) - Idaho - west of approximately 115d West - counties of Ada; Adams; Benewah; Boise; Bonner; Boundary; Canyon; Clearwater; Elmore; Gem; Idaho; Kootenai; Latah; Lewis; Nez Perce; Owyhee; Payette; Shoshone; Valley; Washington.,,,,,EPSG,EPSG,2001-11-06 00:00:00,,0
-2194,USA - Illinois - SPCS - E,United States (USA) - Illinois east of approximately 89d 05m West - counties of Boone; Champaign; Clark; Clay; Coles; Cook; Crawford; Cumberland; De Kalb; De Witt; Douglas; Du Page; Edgar; Edwards; Effingham; Fayette; Ford; Franklin; Gallatin; Grundy; Hamilton; Hardin; Iroquois; Jasper; Jefferson; Johnson; Kane; Kankakee; Kendall; La Salle; Lake; Lawrence; Livingston; Macon; Marion; Massac; McHenry; McLean; Moultrie; Piatt; Pope; Richland; Saline; Shelby; V [...]
-2195,USA - Illinois - SPCS - W,United States (USA) - Illinois west of approximately 89d 05m West - counties of Adams; Alexander; Bond; Brown; Bureau; Calhoun; Carroll; Cass; Christian; Clinton; Fulton; Greene; Hancock; Henderson; Henry; Jackson; Jersey; Jo Daviess; Knox; Lee; Logan; Macoupin; Madison; Marshall; Mason; McDonough; Menard; Mercer; Monroe; Montgomery; Morgan; Ogle; Peoria; Perry; Pike; Pulaski; Putnam; Randolph; Rock Island; Sangamon; Schuyler; Scott; St. Clair; Stark; Steph [...]
-2196,USA - Indiana - SPCS - E,United States (USA) - Indiana east of approximately 86d 25m West - counties of Adams; Allen; Bartholomew; Blackford; Brown; Cass; Clark; De Kalb; Dearborn; Decatur; Delaware; Elkhart; Fayette; Floyd; Franklin; Fulton; Grant; Hamilton; Hancock; Harrison; Henry; Howard; Huntington; Jackson; Jay; Jefferson; Jennings; Johnson; Kosciusko; Lagrange; Madison; Marion; Marshall; Miami; Noble; Ohio; Randolph; Ripley; Rush; Scott; Shelby; St. Joseph; Steuben; Switzerla [...]
-2197,USA - Indiana - SPCS - W,United States (USA) - Indiana west of approximately 86d 25m West - counties of Benton; Boone; Carroll; Clay; Clinton; Crawford; Daviess; Dubois; Fountain; Gibson; Greene; Hendricks; Jasper; Knox; La Porte; Lake; Lawrence; Martin; Monroe; Montgomery; Morgan; Newton; Orange; Owen; Parke; Perry; Pike; Porter; Posey; Pulaski; Putnam; Spencer; Starke; Sullivan; Tippecanoe; Vanderburgh; Vermillion; Vigo; Warren; Warrick; White.,,,,,EPSG,EPSG,2001-11-06 00:00:00,,0
-2198,USA - Iowa - SPCS - N,United States (USA) - Iowa north of approximately 42deg North - counties of Allamakee; Benton; Black Hawk; Boone; Bremer; Buchanan; Buena Vista; Butler; Calhoun; Carroll; Cerro Gordo; Cherokee; Chickasaw; Clay; Clayton; Crawford; Delaware; Dickinson; Dubuque; Emmet; Fayette; Floyd; Franklin; Greene; Grundy; Hamilton; Hancock; Hardin; Howard; Humboldt; Ida; Jackson; Jones; Kossuth; Linn; Lyon; Marshall; Mitchell; Monona; O'Brien; Osceola; Palo Alto; Plymouth; Po [...]
-2199,USA - Iowa - SPCS - S,United States (USA) - Iowa south of approximately 42deg North - counties of Adair; Adams; Appanoose; Audubon; Cass; Cedar; Clarke; Clinton; Dallas; Davis; Decatur; Des Moines; Fremont; Guthrie; Harrison; Henry; Iowa; Jasper; Jefferson; Johnson; Keokuk; Lee; Louisa; Lucas; Madison; Mahaska; Marion; Mills; Monroe; Montgomery; Muscatine; Page; Polk; Pottawattamie; Poweshiek; Ringgold; Scott; Shelby; Taylor; Union; Van Buren; Wapello; Warren; Washington; Wayne.,,,, [...]
-2200,USA - Kansas - SPCS - N,United States (USA) - Kansas north of approximately 38d 45m North - counties of Atchison; Brown; Cheyenne; Clay; Cloud; Decatur; Dickinson; Doniphan; Douglas; Ellis; Ellsworth; Geary; Gove; Graham; Jackson; Jefferson; Jewell; Johnson; Leavenworth; Lincoln; Logan; Marshall; Mitchell; Morris; Nemaha; Norton; Osborne; Ottawa; Phillips; Pottawatomie; Rawlins; Republic; Riley; Rooks; Russell; Saline; Shawnee; Sheridan; Sherman; Smith; Thomas; Trego; Wabaunsee; Wal [...]
-2201,USA - Kansas - SPCS - S,United States (USA) - Kansas south of approximately 38d 45m North - counties of Allen; Anderson; Barber; Barton; Bourbon; Butler; Chase; Chautauqua; Cherokee; Clark; Coffey; Comanche; Cowley; Crawford; Edwards; Elk; Finney; Ford; Franklin; Grant; Gray; Greeley; Greenwood; Hamilton; Harper; Harvey; Haskell; Hodgeman; Kearny; Kingman; Kiowa; Labette; Lane; Linn; Lyon; Marion; McPherson; Meade; Miami; Montgomery; Morton; Neosho; Ness; Osage; Pawnee; Pratt; Reno; [...]
-2202,USA - Kentucky - SPCS - N,United States (USA) - Kentucky north of approximately 37d 55m North - counties of Anderson; Bath; Boone; Bourbon; Boyd; Bracken; Bullitt; Campbell; Carroll; Carter; Clark; Elliott; Fayette; Fleming; Franklin; Gallatin; Grant; Greenup; Harrison; Henry; Jefferson; Jessamine; Kenton; Lawrence; Lewis; Mason; Menifee; Montgomery; Morgan; Nicholas; Oldham; Owen; Pendleton; Robertson; Rowan; Scott; Shelby; Spencer; Trimble; Woodford.,,,,,EPSG,EPSG,2001-11-06 00:00:00,,0
-2203,USA - Kentucky - SPCS - S,United States (USA) - Kentucky south of approximately 37d 55m North - counties of Adair; Allen; Ballard; Barren; Bell; Boyle; Breathitt; Breckinridge; Butler; Caldwell; Calloway; Carlisle; Casey; Christian; Clay; Clinton; Crittenden; Cumberland; Daviess; Edmonson; Estill; Floyd; Fulton; Garrard; Graves; Grayson; Green; Hancock; Hardin; Harlan; Hart; Henderson; Hickman; Hopkins; Jackson; Johnson; Knott; Knox; Larue; Laurel; Lee; Leslie; Letcher; Lincoln; Liv [...]
-2204,USA - Louisiana - SPCS - N,United States (USA) - Louisiana north of approximately 30d 55m North - counties of Avoyelles; Bienville; Bossier; Caddo; Caldwell; Catahoula; Claiborne; Concordia; De Soto; East Carroll; Franklin; Grant; Jackson; La Salle; Lincoln; Madison; Morehouse; Natchitoches; Ouachita; Rapides; Red River; Richland; Sabine; Tensas; Union; Vernon; Webster; West Carroll; Winn.,,,,,EPSG,EPSG,1999-04-22 00:00:00,,0
-2205,USA - Louisiana - SPCS27 - S,United States (USA) - Louisiana south of approximately 30d 55m North - counties of Acadia; Allen; Ascension; Assumption; Beauregard; Calcasieu; Cameron; East Baton Rouge; East Feliciana; Evangeline; Iberia; Iberville; Jefferson; Jefferson Davis; Lafayette; LaFourche; Livingston; Orleans; Plaquemines; Pointe Coupee; St. Bernard; St. Charles; St. Helena; St. James; St. John the Baptist; St. Landry; St. Martin; St. Mary; St. Tammany; Tangipahoa; Terrebonne; [...]
-2206,USA - Maine - SPCS - E,United States (USA) - Maine east of approximately 69d 30m West - counties of Aroostook; Hancock; Knox; Penobscot; Piscataquis; Waldo; Washington.,,,,,EPSG,EPSG,1995-12-02 00:00:00,,0
-2207,USA - Maine - SPCS - W,United States (USA) - Maine west of approximately 69d 30m West - counties of Androscoggin; Cumberland; Franklin; Kennebec; Lincoln; Oxford; Sagadahoc; Somerset; York.,,,,,EPSG,EPSG,1995-12-02 00:00:00,,0
-2208,USA - Massachusetts - SPCS - islands,United States (USA) - Massachusetts offshore - counties of Dukes; Nantucket.,,,,,EPSG,EPSG,2001-11-06 00:00:00,,0
-2209,USA - Massachusetts - SPCS - mainland,United States (USA) - Massachusetts onshore - counties of Barnstable; Berkshire; Bristol; Essex; Franklin; Hampden; Hampshire; Middlesex; Norfolk; Plymouth; Suffolk; Worcester.,,,,,EPSG,EPSG,2001-11-06 00:00:00,,0
-2210,USA - Montana - SPCS27 - central,United States (USA) - Montana between approximately 47d 50m & 46d 40m North - counties of Cascade; Dawson; Fergus; Garfield; Judith Basin; Lake; Lewis and Clark; McCone; Meagher; Mineral; Missoula; Petroleum; Powell; Prairie; Richland; Sanders; Wibaux.,,,,,EPSG,EPSG,1999-04-22 00:00:00,,0
-2211,USA - Montana - SPCS27 - N,United States (USA) - Montana north of approximately 47d 50m North - counties of Blaine; Chouteau; Daniels; Flathead; Glacier; Hill; Liberty; Lincoln; Phillips; Pondera; Roosevelt; Sheridan; Teton; Toole; Valley.,,,,,EPSG,EPSG,1999-04-22 00:00:00,,0
-2212,USA - Montana - SPCS27 - S,United States (USA) - Montana south of approximately 46d 40m North - counties of Beaverhead; Big Horn; Broadwater; Carbon; Carter; Custer; Deer Lodge; Fallon; Gallatin; Golden Valley; Granite; Jefferson; Madison; Musselshell; Park; Powder River; Ravalli; Rosebud; Silver Bow; Stillwater; Sweet Grass; Treasure; Wheatland; Yellowstone.,,,,,EPSG,EPSG,1999-04-22 00:00:00,,0
-2213,USA - Minnesota - SPCS - central,United States (USA) - Minnesota between approximately 47d 10m & 45d 30m North - counties of Aitkin; Becker; Benton; Carlton; Cass; Chisago; Clay; Crow Wing; Douglas; Grant; Hubbard; Isanti; Kanabec; Mille Lacs; Morrison; Otter Tail; Pine; Pope; Stearns; Stevens; Todd; Traverse; Wadena; Wilkin.,,,,,EPSG,EPSG,1999-04-22 00:00:00,,0
-2214,USA - Minnesota - SPCS - N,United States (USA) - Minnesota north of approximately 47d 10m North - counties of Beltrami; Clearwater; Cook; Itasca; Kittson; Koochiching; Lake; Lake of the Woods; Mahnomen; Marshall; Norman; Pennington; Polk; Red Lake; Roseau; St. Louis.,,,,,EPSG,EPSG,1999-04-22 00:00:00,,0
-2215,USA - Minnesota - SPCS - S,United States (USA) - Minnesota south of approximately 45d 30m North - counties of Anoka; Big Stone; Blue Earth; Brown; Carver; Chippewa; Cottonwood; Dakota; Dodge; Faribault; Fillmore; Freeborn; Goodhue; Hennepin; Houston; Jackson; Kandiyohi; Lac Qui Parle; Le Sueur; Lincoln; Lyon; Martin; McLeod; Meeker; Mower; Murray; Nicollet; Nobles; Olmsted; Pipestone; Ramsey; Redwood; Renville; Rice; Rock; Scott; Sherburne; Sibley; Steele; Swift; Wabasha; Waseca; Wa [...]
-2216,USA - Mississippi - SPCS - E,United States (USA) - Mississippi east of approximately 89d 40m West - counties of Alcorn; Attala; Benton; Calhoun; Chickasaw; Choctaw; Clarke; Clay; Covington; Forrest; George; Greene; Hancock; Harrison; Itawamba; Jackson; Jasper; Jones; Kemper; Lafayette; Lamar; Lauderdale; Leake; Lee; Lowndes; Marshall; Monroe; Neshoba; Newton; Noxubee; Oktibbeha; Pearl River; Perry; Pontotoc; Prentiss; Scott; Smith; Stone; Tippah; Tishomingo; Union; Wayne; Webster; W [...]
-2217,USA - Mississippi - SPCS - W,United States (USA) - Mississippi west of approximately 89d 40m West - counties of Adams; Amite; Bolivar; Carroll; Claiborne; Coahoma; Copiah; De Soto; Franklin; Grenada; Hinds; Holmes; Humphreys; Issaquena; Jefferson; Jefferson Davis; Lawrence; Leflore; Lincoln; Madison; Marion; Montgomery; Panola; Pike; Quitman; Rankin; Sharkey; Simpson; Sunflower; Tallahatchie; Tate; Tunica; Walthall; Warren; Washington; Wilkinson; Yalobusha; Yazoo.,,,,,EPSG,EPSG,2001 [...]
-2218,USA - Missouri - SPCS - central,United States (USA) - Missouri between approximately 91d 45m & 93d 35m West - counties of Adair; Audrain; Benton; Boone; Callaway; Camden; Carroll; Chariton; Christian; Cole; Cooper; Dallas; Douglas; Greene; Grundy; Hickory; Howard; Howell; Knox; Laclede; Linn; Livingston; Macon; Maries; Mercer; Miller; Moniteau; Monroe; Morgan; Osage; Ozark; Pettis; Phelps; Polk; Pulaski; Putnam; Randolph; Saline; Schuyler; Scotland; Shelby; Stone; Sullivan; Taney; T [...]
-2219,USA - Missouri - SPCS - E,United States (USA) - Missouri east of approximately 91d 45m West - counties of Bollinger; Butler; Cape Girardeau; Carter; Clark; Crawford; Dent; Dunklin; Franklin; Gasconade; Iron; Jefferson; Lewis; Lincoln; Madison; Marion; Mississippi; Montgomery; New Madrid; Oregon; Pemiscot; Perry; Pike; Ralls; Reynolds; Ripley; Scott; Shannon; St. Charles; St. Francois; St. Louis; Ste. Genevieve; Stoddard; Warren; Washington; Wayne.,,,,,EPSG,EPSG,1995-12-02 00:00:00,,0
-2220,USA - Missouri - SPCS - W,United States (USA) - Missouri west of approximately 93d 35m West - counties of Andrew; Atchison; Barry; Barton; Bates; Buchanan; Caldwell; Cass; Cedar; Clay; Clinton; Dade; Daviess; De Kalb; Gentry; Harrison; Henry; Holt; Jackson; Jasper; Johnson; Lafayette; Lawrence; McDonald; Newton; Nodaway; Platte; Ray; St. Clair; Vernon; Worth.,,,,,EPSG,EPSG,1995-12-02 00:00:00,,0
-2221,USA - Nebraska - SPCS27 - N,United States (USA) - Nebraska - counties of Antelope; Blaine; Box Butte; Boyd; Brown; Burt; Cedar; Cherry; Cuming; Dakota; Dawes; Dixon; Garfield; Grant; Holt; Hooker; Keya Paha; Knox; Loup; Madison; Pierce; Rock; Sheridan; Sioux; Stanton; Thomas; Thurston; Wayne; Wheeler.,,,,,EPSG,EPSG,1999-04-22 00:00:00,,0
-2222,USA - Nebraska - SPCS27 - S,United States (USA) - Nebraska - counties of Adams; Arthur; Banner; Boone; Buffalo; Butler; Cass; Chase; Cheyenne; Clay; Colfax; Custer; Dawson; Deuel; Dodge; Douglas; Dundy; Fillmore; Franklin; Frontier; Furnas; Gage; Garden; Gosper; Greeley; Hall; Hamilton; Harlan; Hayes; Hitchcock; Howard; Jefferson; Johnson; Kearney; Keith; Kimball; Lancaster; Lincoln; Logan; McPherson; Merrick; Morrill; Nance; Nemaha; Nuckolls; Otoe; Pawnee; Perkins; Phelps; Platte;  [...]
-2223,USA - Nevada - SPCS - central,United States (USA) - Nevada between approximately 117d 15m and 116d West - counties of Lander; Nye.,,,,,EPSG,EPSG,1995-12-02 00:00:00,,0
-2224,USA - Nevada - SPCS - E,United States (USA) - Nevada east of approximately 116d  West - counties of Clark; Elko; Eureka; Lincoln; White Pine.,,,,,EPSG,EPSG,1995-12-02 00:00:00,,0
-2225,USA - Nevada - SPCS - W,United States (USA) - Nevada west of approximately 117d 15m West - counties of Churchill; Douglas; Esmeralda; Humboldt; Lyon; Mineral; Pershing; Storey; Washoe.,,,,,EPSG,EPSG,1995-12-02 00:00:00,,0
-2226,Canada - Newfoundland - E of 54.5 deg W,Canada - Newfoundland - east of 54 deg 30 min West.,,,,,EPSG,EPSG,1997-11-13 00:00:00,,0
-2227,Canada - Newfoundland - 57.5 to 54.5 deg W,Canada - Newfoundland and Labrador between 57 deg 30 min and 54 de 30 min West.,,,,,EPSG,EPSG,1997-11-13 00:00:00,,0
-2228,USA - New Mexico - SPCS - E,United States (USA) - New Mexico east of approximately 105d West - counties of Chaves; Colfax; Curry; De Baca; Eddy; Guadalupe; Harding; Lea; Mora; Quay; Roosevelt; San Miguel; Union.,,,,,EPSG,EPSG,2001-11-06 00:00:00,,0
-2229,USA - New Mexico - SPCS27 - central,United States (USA) - New Mexico between approximately 105d & 107d 15m West - counties of Bernalillo; Dona Ana; Lincoln; Los Alamos; Otero; Rio Arriba; Sandoval; Santa Fe; Socorro; Taos; Torrance.,,,,,EPSG,EPSG,1995-12-02 00:00:00,,0
-2230,USA - New Mexico - SPCS27 - W,United States (USA) - New Mexico west of approximately 107d 15m West - counties of Catron; Cibola; Grant; Hidalgo; Luna; McKinley; San Juan; Sierra; Valencia.,,,,,EPSG,EPSG,2000-03-07 00:00:00,,0
-2231,USA - New Mexico - SPCS83 - central,United States (USA) - New Mexico between approximately 105d & 107d 15m West - counties of Bernalillo; Dona Ana; Lincoln; Los Alamos; Otero; Rio Arriba; Sandoval; Santa Fe; Socorro; Taos; Torrance; Valencia.,,,,,EPSG,EPSG,2001-11-06 00:00:00,,0
-2232,USA - New Mexico - SPCS83 - W,United States (USA) - New Mexico west of approximately 107d 15m West - counties of Catron; Cibola; Grant; Hidalgo; Luna; McKinley; San Juan; Sierra.,,,,,EPSG,EPSG,2001-11-06 00:00:00,,0
-2233,USA - New York - SPCS - central,United States (USA) - New York between approximately 75d 15m & 77d 30m West - counties of Broome; Cayuga; Chemung; Chenango; Cortland; Jefferson; Lewis; Madison; Oneida; Onondaga; Ontario; Oswego; Schuyler; Seneca; Steuben; Tioga; Tompkins; Wayne; Yates.,,,,,EPSG,EPSG,2001-11-06 00:00:00,,0
-2234,USA - New York - SPCS - E,United States (USA) - New York mainland east of approximately 75d 15m West - counties of Albany; Clinton; Columbia; Delaware; Dutchess; Essex; Franklin; Fulton; Greene; Hamilton; Herkimer; Montgomery; Orange; Otsego; Putnam; Rensselaer; Rockland; Saratoga; Schenectady; Schoharie; St. Lawrence; Sullivan; Ulster; Warren; Washington; Westchester.,,,,,EPSG,EPSG,2001-11-06 00:00:00,,0
-2235,USA - New York - SPCS - Long island,United States (USA) - New York - counties of Bronx; Kings; Nassau; New York; Queens; Richmond; Suffolk.,,,,,EPSG,EPSG,2001-11-06 00:00:00,,0
-2236,USA - New York - SPCS - W,United States (USA) - New York west of approximately 77d 30m West - counties of Allegany; Cattaraugus; Chautauqua; Erie; Genesee; Livingston; Monroe; Niagara; Orleans; Wyoming.,,,,,EPSG,EPSG,2001-11-06 00:00:00,,0
-2237,USA - North Dakota - SPCS - N,United States (USA) - North Dakota north of approximately 47d 25m North - counties of Benson; Bottineau; Burke; Cavalier; Divide; Eddy; Foster; Grand Forks; Griggs; McHenry; McKenzie; McLean; Mountrial; Nelson; Pembina; Pierce; Ramsey; Renville; Rolette; Sheridan; Steele; Towner; Traill; Walsh; Ward; Wells; Williams.,,,,,EPSG,EPSG,2001-11-06 00:00:00,,0
-2238,USA - North Dakota - SPCS - S,United States (USA) - North Dakota south of approximately 47d 25m North - counties of Adams; Barnes; Billings; Bowman; Burleigh; Cass; Dickey; Dunn; Emmons; Golden Valley; Grant; Hettinger; Kidder; La Moure; Logan; McIntosh; Mercer; Morton; Oliver; Ransom; Richland; Sargent; Sioux; Slope; Stark; Stutsman.,,,,,EPSG,EPSG,2001-11-06 00:00:00,,0
-2239,USA - Ohio - SPCS - N,United States (USA) - Ohio north of approximately 40d 15m North - counties of Allen;Ashland; Ashtabula; Auglaize; Carroll; Columbiana; Coshocton; Crawford; Cuyahoga; Defiance; Delaware; Erie; Fulton; Geauga; Hancock; Hardin; Harrison; Henry; Holmes; Huron; Jefferson; Knox; Lake; Logan; Lorain; Lucas; Mahoning; Marion; Medina; Mercer; Morrow; Ottawa; Paulding; Portage; Putnam; Richland; Sandusky; Seneca; Shelby; Stark; Summit; Trumbull; Tuscarawas; Union; Van We [...]
-2240,USA - Ohio - SPCS - S,United States (USA) - Ohio south of approximately 40d 15m North - counties of Adams; Athens; Belmont; Brown; Butler; Champaign; Clark; Clermont; Clinton; Darke; Fairfield; Fayette; Franklin; Gallia; Greene; Guernsey; Hamilton; Highland; Hocking; Jackson; Lawrence; Licking; Madison; Meigs; Miami; Monroe; Montgomery; Morgan; Muskingum; Noble; Perry; Pickaway; Pike; Preble; Ross; Scioto; Vinton; Warren; Washington.,,,,,EPSG,EPSG,1999-04-22 00:00:00,,0
-2241,USA - Oklahoma - SPCS - N,United States (USA) - Oklahoma north of approximately 35d 20m North - counties of Adair; Alfalfa; Beaver; Blaine; Canadian; Cherokee; Cimarron; Craig; Creek; Custer; Delaware; Dewey; Ellis; Garfield; Grant; Harper; Kay; Kingfisher; Lincoln; Logan; Major; Mayes; Muskogee; Noble; Nowata; Okfuskee; Oklahoma; Okmulgee; Osage; Ottawa; Pawnee; Payne; Roger Mills; Rogers; Sequoyah; Texas; Tulsa; Wagoner; Washington; Woods; Woodward.,,,,,EPSG,EPSG,2001-11-06 00:00:00,,0
-2242,USA - Oklahoma - SPCS - S,United States (USA) - Oklahoma south of approximately 35d 20m North - counties of Atoka; Beckham; Bryan; Caddo; Carter; Choctaw; Cleveland; Coal; Comanche; Cotton; Garvin; Grady; Greer; Harmon; Haskell; Hughes; Jackson; Jefferson; Johnston; Kiowa; Latimer; Le Flore; Love; Marshall; McClain; McCurtain; McIntosh; Murray; Pittsburg; Pontotoc; Pottawatomie; Pushmataha; Seminole; Stephens; Tillman; Washita.,,,,,EPSG,EPSG,2001-11-06 00:00:00,,0
-2243,USA - Oregon - SPCS - N,United States (USA) - Oregon north of approximately 44d 15m North - counties of Baker; Benton; Clackamas; Clatsop; Columbia; Gilliam; Grant; Hood River; Jefferson; Lincoln; Linn; Marion; Morrow; Multnomah; Polk; Sherman; Tillamook; Umatilla; Union; Wallowa; Wasco; Washington; Wheeler; Yamhill.,,,,,EPSG,EPSG,2001-11-06 00:00:00,,0
-2244,USA - Oregon - SPCS - S,United States (USA) - Oregon south of approximately 44d 15m North - counties of Coos; Crook; Curry; Deschutes; Douglas; Harney; Jackson; Josephine; Klamath; Lake; Lane; Malheur.,,,,,EPSG,EPSG,2001-11-06 00:00:00,,0
-2245,USA - Pennsylvania - SPCS - N,United States (USA) - Pennsylvania north of approximately 40d 50m North - counties of Bradford; Cameron; Carbon; Centre; Clarion; Clearfield; Clinton; Columbia; Crawford; Elk; Erie; Forest; Jefferson; Lackawanna; Luzerne; Lycoming; McKean; Mercer; Monroe; Montour; Northumberland; Pike; Potter; Sullivan; Susquehanna; Tioga; Union; Venango; Warren; Wayne; Wyoming.,,,,,EPSG,EPSG,2001-11-06 00:00:00,,0
-2246,USA - Pennsylvania - SPCS - S,United States (USA) - Pennsylvania south of approximately 40d 50m North - counties of Adams; Allegheny; Armstrong; Beaver; Bedford; Berks; Blair; Bucks; Butler; Cambria; Chester; Cumberland; Dauphin; Delaware; Fayette; Franklin; Fulton; Greene; Huntingdon; Indiana; Juniata; Lancaster; Lawrence; Lebanon; Lehigh; Mifflin; Montgomery; Northampton; Perry; Philadelphia; Schuylkill; Snyder; Somerset; Washington; Westmoreland; York.,,,,,EPSG,EPSG,2001-11-06 00 [...]
-2247,USA - South Carolina  - SPCS27 - N,United States (USA) - South Carolina - counties of Abbeville; Anderson; Calhoun; Cherokee; Chester; Chesterfield; Darlington; Dillon; Edgefield; Fairfield; Florence; Greenville; Greenwood; Horry; Kershaw; Lancaster; Laurens; Lee; Lexington; Marion; Marlboro; McCormick; Newberry; Oconee; Pickens; Richland; Saluda; Spartanburg; Sumter; Union; York.,,,,,EPSG,EPSG,1999-04-22 00:00:00,,0
-2248,USA - South Carolina  - SPCS27 - S,United States (USA) - South Carolina - counties of Aiken; Allendale; Bamberg; Barnwell; Beaufort; Berkeley; Charleston; Clarendon; Colleton; Dorchester; Georgetown; Hampton; Jasper; Orangeburg; Williamsburg.,,,,,EPSG,EPSG,1999-04-22 00:00:00,,0
-2249,USA - South Dakota - SPCS - N,United States (USA) - South Dakota north of approximately 44d 20m North - counties of Beadle; Brookings; Brown; Butte; Campbell; Clark; Codington; Corson; Day; Deuel; Dewey; Edmunds; Faulk; Grant; Hamlin; Hand; Harding; Hyde; Kingsbury; Lawrence; Marshall; McPherson; Meade; Perkins; Potter; Roberts; Spink; Sully; Walworth; Ziebach.,,,,,EPSG,EPSG,1999-04-22 00:00:00,,0
-2250,USA - South Dakota - SPCS - S,United States (USA) - South Dakota south of approximately 44d 20m North - counties of Aurora; Bennett; Bon Homme; Brule; Buffalo; Charles Mix; Clay; Custer; Davison; Douglas; Fall River; Gregory; Haakon; Hanson; Hughes; Hutchinson; Jackson; Jerauld; Jones; Lake; Lincoln; Lyman; McCook; Mellette; Miner; Minnehaha; Moody; Pennington; Sanborn; Shannon; Stanley; Todd; Tripp; Turner; Union; Yankton.,,,,,EPSG,EPSG,1999-04-22 00:00:00,,0
-2251,Caribbean - Puerto Rico and the US Virgin Islands,Puerto Rico and Virgin Islands (US).,,,,,EPSG,EPSG,1999-04-22 00:00:00,,0
-2252,USA - Texas - SPCS - central,United States (USA) - Texas between approximately 32deg & 30d 10m North - counties of Anderson; Angelina; Bastrop; Bell; Blanco; Bosque; Brazos; Brown; Burleson; Burnet; Cherokee; Coke; Coleman; Comanche; Concho; Coryell; Crane; Crockett; Culberson; Ector; El Paso; Falls; Freestone; Gillespie; Glasscock; Grimes; Hamilton; Hardin; Houston; Hudspeth; Irion; Jasper; Jeff Davis; Kimble; Lampasas; Lee; Leon; Liberty; Limestone; Llano; Loving; Madison; Mason;  [...]
-2253,USA - Texas - SPCS - N,United States (USA) - Texas north of approximately 34d 20m North - counties of: Armstrong; Briscoe; Carson; Castro; Childress; Collingsworth; Dallam; Deaf Smith; Donley; Gray; Hall; Hansford; Hartley; Hemphill; Hutchinson; Lipscomb; Moore; Ochiltree; Oldham; Parmer; Potter; Randall; Roberts; Sherman; Swisher; Wheeler.,,,,,EPSG,EPSG,2001-11-06 00:00:00,,0
-2254,USA - Texas - SPCS - N central,United States (USA) - Texas between approximately 34d 20m & 32deg North - counties of: Andrews; Archer; Bailey; Baylor; Borden; Bowie; Callahan; Camp; Cass; Clay; Cochran; Collin; Cooke; Cottle; Crosby; Dallas; Dawson; Delta; Denton; Dickens; Eastland; Ellis; Erath; Fannin; Fisher; Floyd; Foard; Franklin; Gaines; Garza; Grayson; Gregg; Hale; Hardeman; Harrison; Haskell; Henderson; Hill; Hockley; Hood; Hopkins; Howard; Hunt; Jack; Johnson; Jones; Kaufma [...]
-2255,USA - Texas - SPCS27 - S,United States (USA) - Texas south of approximately 28d 05m North - counties of Brooks; Cameron; Duval; Hidalgo; Jim Hogg; Jim Wells; Kenedy; Kleberg; Nueces; San Patricio; Starr; Webb; Willacy; Zapata.  Gulf of Mexico outer continental shelf (GoM OCS) protraction areas: South Padre Island; North Padre Island; Mustang Island.,,,,,EPSG,EPSG,1999-04-22 00:00:00,,0
-2256,USA - Texas - SPCS27 - S central,United States (USA) - Texas between approximately 30d 10m & 28d 05m North - counties of Aransas; Atascosa; Austin; Bandera; Bee; Bexar; Brazoria; Brewster; Caldwell; Calhoun; Chambers; Colorado; Comal; De Witt; Dimmit; Edwards; Fayette; Fort Bend; Frio; Galveston; Goliad; Gonzales; Guadalupe; Harris; Hays; Jackson; Jefferson; Karnes; Kendall; Kerr; Kinney; La Salle; Lavaca; Live Oak; Matagorda; Maverick; McMullen; Medina; Presidio; Real; Refugio; Ter [...]
-2257,USA - Utah - SPCS - central,United States (USA) - Utah between approximately 40d 50m & 38d 30m North - counties of Carbon; Duchesne; Emery; Grand; Juab; Millard; Salt Lake; Sanpete; Sevier; Tooele; Uintah; Utah; Wasatch.,,,,,EPSG,EPSG,2001-11-06 00:00:00,,0
-2258,USA - Utah - SPCS - N,United States (USA) - Utah north of approximately 40d 50m North - counties of Box Elder; Cache; Daggett; Davis; Morgan; Rich; Summit; Weber.,,,,,EPSG,EPSG,2001-11-06 00:00:00,,0
-2259,USA - Utah - SPCS - S,United States (USA) - Utah south of approximately 38d 30m North - counties of Beaver; Garfield; Iron; Kane; Piute; San Juan; Washington; Wayne.,,,,,EPSG,EPSG,2001-11-06 00:00:00,,0
-2260,USA - Virginia - SPCS - N,United States (USA) - Virginia north of approximately 38d 05m North - counties of Arlington; Augusta; Bath; Caroline; Clarke; Culpeper; Fairfax; Fauquier; Frederick; Greene; Highland; King George; Loudoun; Madison; Orange; Page; Prince William; Rappahannock; Rockingham; Shenandoah; Spotsylvania; Stafford; Warren; Westmoreland.,,,,,EPSG,EPSG,2001-11-06 00:00:00,,0
-2261,USA - Virginia - SPCS - S,United States (USA) - Virginia south of approximately 38d 05m North - counties of Accomack; Albemarle; Alleghany; Amelia; Amherst; Appomattox; Bedford; Bland; Botetourt; Bristol; Brunswick; Buchanan; Buckingham; Campbell; Carroll; Charles City; Charlotte; Chesapeake; Chesterfield; Colonial Heights; Craig; Cumberland; Dickenson; Dinwiddie; Essex; Floyd; Fluvanna; Franklin; Giles; Gloucester; Goochland; Grayson; Greensville; Halifax; Hampton; Hanover; Henrico [...]
-2262,USA - Washington - SPCS27 - N,United States (USA) - Washington north of approximately 47d 30m North - counties of Chelan; Clallam; Douglas; Ferry; Island; Jefferson; King; Kitsap; Lincoln; Okanogan; Pend Oreille; San Juan; Skagit; Snohomish; Spokane; Stevens; Whatcom.,,,,,EPSG,EPSG,1999-04-22 00:00:00,,0
-2263,USA - Washington - SPCS27 - S,United States (USA) - Washington south of approximately 47d 30m North - counties of Adams; Asotin; Benton; Clark; Columbia; Cowlitz; Franklin; Garfield; Grant; Grays Harbor; Kittitas; Klickitat; Lewis; Mason; Pacific; Pierce; Skamania; Thurston; Wahkiakum; Walla Walla; Whitman; Yakima.,,,,,EPSG,EPSG,1999-04-22 00:00:00,,0
-2264,USA - West Virginia - SPCS - N,United States (USA) - West Virginia north of approximately 39deg North - counties of Barbour; Berkeley; Brooke; Doddridge; Grant; Hampshire; Hancock; Hardy; Harrison; Jefferson; Marion; Marshall; Mineral; Monongalia; Morgan; Ohio; Pleasants; Preston; Ritchie; Taylor; Tucker; Tyler; Wetzel; Wirt; Wood.,,,,,EPSG,EPSG,1999-04-22 00:00:00,,0
-2265,USA - West Virginia - SPCS - S,United States (USA) - West Virginia south of approximately 39deg North - counties of Boone; Braxton; Cabell; Calhoun; Clay; Fayette; Gilmer; Greenbrier; Jackson; Kanawha; Lewis; Lincoln; Logan; Mason; McDowell; Mercer; Mingo; Monroe; Nicholas; Pendleton; Pocahontas; Putnam; Raleigh; Randolph; Roane; Summers; Upshur; Wayne; Webster; Wyoming.,,,,,EPSG,EPSG,1999-04-22 00:00:00,,0
-2266,USA - Wisconsin - SPCS - central,United States (USA) - Wisconsin between approximately 45d 35m & 44d 15m North - counties of Barron; Brown; Buffalo; Chippewa; Clark; Door; Dunn; Eau Claire; Jackson; Kewaunee; Langlade; Lincoln; Marathon; Marinette; Menominee; Oconto; Outagamie; Pepin; Pierce; Polk; Portage; Rusk; Shawano; St. Croix; Taylor; Trempealeau; Waupaca; Wood.,,,,,EPSG,EPSG,2001-11-06 00:00:00,,0
-2267,USA - Wisconsin - SPCS - N,United States (USA) - Wisconsin north of approximately 45d 35m North - counties of Ashland; Bayfield; Burnett; Douglas; Florence; Forest; Iron; Oneida; Price; Sawyer; Vilas; Washburn.,,,,,EPSG,EPSG,2001-11-06 00:00:00,,0
-2268,USA - Wisconsin - SPCS - S,United States (USA) - Wisconsin south of approximately 44d 15m North - counties of Adams; Calumet; Columbia; Crawford; Dane; Dodge; Fond Du Lac; Grant; Green; Green Lake; Iowa; Jefferson; Juneau; Kenosha; La Crosse; Lafayette; Manitowoc; Marquette; Milwaukee; Monroe; Ozaukee; Racine; Richland; Rock; Sauk; Sheboygan; Vernon; Walworth; Washington; Waukesha; Waushara; Winnebago.,,,,,EPSG,EPSG,2001-11-06 00:00:00,,0
-2269,USA - Wyoming - SPCS - E,United States (USA) - Wyoming east of approximately 106d West - counties of Albany; Campbell; Converse; Crook; Goshen; Laramie; Niobrara; Platte; Weston.,,,,,EPSG,EPSG,2000-03-07 00:00:00,,0
-2270,USA - Wyoming - SPCS - E central,United States (USA) - Wyoming between approximately 106d & 108d 10m West - counties of Big Horn; Carbon; Johnson; Natrona; Sheridan; Washakie.,,,,,EPSG,EPSG,2000-03-07 00:00:00,,0
-2271,USA - Wyoming - SPCS - W,United States (USA) - Wyoming west of approximately 109d 40m West - counties of Lincoln; Sublette; Teton; Uinta.,,,,,EPSG,EPSG,2000-03-07 00:00:00,,0
-2272,USA - Wyoming - SPCS - W central,United States (USA) - Wyoming between approximately 108d 10m & 109d 40m West - counties of Fremont; Hot Springs; Park; Sweetwater.,,,,,EPSG,EPSG,2000-03-07 00:00:00,,0
-2273,USA - Washington - SPCS83 - N,United States (USA) - Washington north of approximately 47d 30m North - counties of Chelan; Clallam; Douglas; Ferry; Grant north of approximately 47d30m; Island; Jefferson; King; Kitsap; Lincoln; Okanogan; Pend Oreille; San Juan; Skagit; Snohomish; Spokane; Stevens; Whatcom.,,,,,EPSG,EPSG,2001-11-06 00:00:00,,0
-2274,USA - Washington - SPCS83 - S,United States (USA) - Washington south of approximately 47d 30m North - counties of Adams; Asotin; Benton; Clark; Columbia; Cowlitz; Franklin; Garfield; Grant south of approximately 47d30m; Grays Harbor; Kittitas; Klickitat; Lewis; Mason; Pacific; Pierce; Skamania; Thurston; Wahkiakum; Walla Walla; Whitman; Yakima.,,,,,EPSG,EPSG,2001-11-06 00:00:00,,0
-2275,Canada - Newfoundland - 60.5 to 57.5 deg W,Canada - Newfoundland and Labrador between 60 deg and 57 deg 30 min West.,,,,,EPSG,EPSG,1997-11-13 00:00:00,,0
-2276,Canada - Quebec and Newfoundland - 63 to 60 deg W,Canada - Quebec and Newfoundland (Labrador) between 63 deg and 60 deg West.,,,,,EPSG,EPSG,1997-11-13 00:00:00,,0
-2277,Canada - Quebec and Newfoundland - 66 to 63 deg W,Canada - Quebec and Newfoundland (Labrador) between 66 deg and 63 deg West.,,,,,EPSG,EPSG,1997-11-13 00:00:00,,0
-2278,Canada - Quebec and Newfoundland - 69 to 66 deg W,Canada - Quebec and Newfoundland (Labrador) between 69 deg and  66 deg West.,,,,,EPSG,EPSG,1997-11-13 00:00:00,,0
-2279,Canada - Quebec and Ontario - 75 to 72 deg W,Canada - Quebec between 75 deg and 72 deg West.; Canada - Ontario - east of 75 deg West.,,,,,EPSG,EPSG,1997-11-13 00:00:00,,0
-2280,Canada - Quebec and Ontario - 78 to 75 deg W,Canada - Quebec and Ontario - between 78 deg and 75 deg West.,,,,,EPSG,EPSG,1997-11-13 00:00:00,,0
-2281,Canada - Quebec and Ontario - MTM zone 10,Canada - Quebec west of 78 deg West; Canada - Ontario - between 79 deg 30 min and 78 deg W in area to north of 47 deg N; between 80 deg 15 min and 78 deg W in area between 46 deg and 47 deg N; between 81 deg and 78 deg W in area south of 46 deg N.,,,,,EPSG,EPSG,1997-11-13 00:00:00,,0
-2282,Cote d'Ivoire (Ivory Coast) - Abidjan area,C�te d'Ivoire (Ivory Coast) - Abidjan area.,,,,,EPSG,EPSG,1999-10-20 00:00:00,,0
-2283,Australia - Australian Capital Territory (ACT),Australia - Australian Capital Territory (ACT).,,,,,EPSG,EPSG,2001-08-15 00:00:00,,0
-2284,Australia - Northern Territory (NT),Australia - Northern Territory (NT).,,,,,EPSG,EPSG,2001-08-15 00:00:00,,0
-2285,Australia - Victoria,Australia - Victoria.,,,,,EPSG,EPSG,2001-08-15 00:00:00,,0
-2286,Australia - New South Wales (NSW and Victoria,Australia - New South Wales (NSW) and Victoria.,,,,,EPSG,EPSG,2001-08-15 00:00:00,,0
-2287,Australia - SE Australia (ACT NSW VIC),"Australia - Australian Capital Territory (ACT), New South Wales (NSW), Victoria.",,,,,EPSG,EPSG,2001-08-15 00:00:00,,0
-2288,American Samoa - Tutuila and Aunu'u islands,American Samoa - Tutuila and Aunu'u islands.,,,,,EPSG,EPSG,2001-08-15 00:00:00,,0
-2289,"American Samoa - Ofu, Olesega and Ta'u islands","American Samoa - Ofu, Olesega and Ta'u islands.",,,,,EPSG,EPSG,2001-08-15 00:00:00,,0
-2290,Canada - Quebec and Newfoundland - MTM zone 3,Canada - Newfoundland and Labrador between 60 deg and 57 deg 30 min West; Canada - Quebec between 60 deg and 57 deg West.,,,,,EPSG,EPSG,1997-11-13 00:00:00,,0
-2291,Australasia - Australia and PNG - 150 to 156 deg E,Australia - between 150 and 156 deg East.  Papua New Guinea east of 150 deg East.,,,,,EPSG,EPSG,1995-12-02 00:00:00,,0
-2292,Myanmar (Burma) - 15 to 21 deg N,Myanmar (Burma) - between 15 and 21 deg North.,,,,,EPSG,EPSG,1999-10-20 00:00:00,,0
-2293,Myanmar (Burma) - S of 15 deg N,Myanmar (Burma) - south of 15 deg North.,,,,,EPSG,EPSG,1999-10-20 00:00:00,,0
-2294,Asia - Middle East - Iraq zone,Islamic Republic of Iran - south of 36 deg North. Iraq. Kuwait.,,,,,EPSG,EPSG,1996-04-12 00:00:00,,0
-2295,Caribbean - Windward and Leeward Islands,Windward Islands - Dominica  Grenada  Saint Lucia  Saint Vincent;  Leeward Islands - Anguilla   Antigua (excluding Barbuda)  Montserrat   Saint Kitts and Nevis; Barbados.,,,,,EPSG,EPSG,1999-04-22 00:00:00,,0
-2296,Cote d'Ivoire (Ivory Coast) - offshore.,C�te d'Ivoire (Ivory Coast) - offshore.,,,,,EPSG,EPSG,2001-06-05 00:00:00,,0
-2297,USA - California - N of 38 deg N,United States (USA) - California north of 38 deg North.,,,,,EPSG,EPSG,2001-08-15 00:00:00,,0
-2298,USA - California - S of 38 deg N,United States (USA) - California south of 38 deg North,,,,,EPSG,EPSG,2001-08-15 00:00:00,,0
-2299,3-degree TM - N hemisphere CM 3 deg E,"Between 1 deg 30 min and 4 deg 30 min East, northern hemisphere.",,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-2300,3-degree TM - N hemisphere CM 6 deg E,"Between 4 deg 30 min and 7 deg 30 min East, northern hemisphere.",,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-2301,3-degree TM - N hemisphere CM 9 deg E,"Between 7 deg 30 min and 10 deg 30 min East, northern hemisphere.",,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-2302,3-degree TM - N hemisphere CM 12 deg E,"Between 10 deg 30 min and 13 deg 30 min East, northern hemisphere.",,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-2303,3-degree TM - N hemisphere CM 15 deg E,"Between 13 deg 30 min and 16 deg 30 min East, northern hemisphere.",,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-2304,3-degree TM - N hemisphere CM 18 deg E,"Between 16 deg 30 min and 19 deg 30 min East, northern hemisphere.",,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-2305,3-degree TM - N hemisphere CM 21 deg E,"Between 19 deg 30 min and 22 deg 30 min East, northern hemisphere.",,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-2306,3-degree TM - N hemisphere CM 24 deg E,"Between 22 deg 30 min and 25 deg 30 min East, northern hemisphere.",,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-2307,Brazil - Campos; Espirito Santo and Santos basins,Brazil - Campos; Espirito Santo and Santos basins.,,,,,EPSG,EPSG,2000-03-07 00:00:00,,0
-2308,Brazil - Tucano basin north,Brazil - Tucano basin north.,,,,,EPSG,EPSG,2000-03-07 00:00:00,,0
-2309,Brazil - Tucano basin central,Brazil - Tucano basin central.,,,,,EPSG,EPSG,2000-03-07 00:00:00,,0
-2310,Brazil - Tucano basin south,Brazil - Tucano basin south.,,,,,EPSG,EPSG,2000-03-07 00:00:00,,0
-2311,Africa - Kenya and Tanzania,Kenya; Tanzania.,,,,,EPSG,EPSG,1996-10-18 00:00:00,,0
-2312,"Africa - Botswana, Lesotho, Malawi, Swaziland, Zaire, Zambia, Zimbabwe",Botswana; Lesotho; Malawi; Swaziland; Zaire; Zambia; Zimbabwe.,,,,,EPSG,EPSG,1996-10-18 00:00:00,,0
-2313,Canada - Nova Scotia,Canada - Nova Scotia.,,,,,EPSG,EPSG,2000-10-19 00:00:00,,0
-2314,Asia - Caspian FSU states,Azerbaijan; Kazakstan; Russian Federation; Turkmenistan - Caspian Sea,,,,,EPSG,EPSG,1999-09-07 00:00:00,,0
-2315,Colombia - Cusiana,Colombia - Casanare province BP Cusiana/Cupiagua field areas.  Also used by Total in Rivera and Gatanas blocks.,,,,,EPSG,EPSG,2000-10-19 00:00:00,,0
-2316,Angola - offshore block 5,Angola - offshore block 5.,,,,,EPSG,EPSG,1998-11-11 00:00:00,,0
-2317,Angola - offshore block 2,Angola - offshore block 2.,,,,,EPSG,EPSG,1998-11-11 00:00:00,,0
-2318,Angola - offshore block 3,Angola - offshore block 3.,,,,,EPSG,EPSG,1998-11-11 00:00:00,,0
-2319,Angola - offshore block 7,Angola - offshore block 7.,,,,,EPSG,EPSG,1998-11-11 00:00:00,,0
-2320,Angola - offshore blocks 7 8 24 + WGC spec,Angola - offshore blocks 7 and 8.  Also used rounded to integer metre in offshore block 24 and for GSI/HGS/Western Geophysical speculative seismic data throughout offshore Angola.,,,,,EPSG,EPSG,2000-03-07 00:00:00,,0
-2321,Angola - offshore blocks 1 and 16,Angola - offshore blocks 1 and 16.,,,,,EPSG,EPSG,1998-12-14 00:00:00,,0
-2322,Angola - offshore blocks 3  7  15 and 17.,"Angola - offshore blocks 3, 7,15 and 17.",,,,,EPSG,EPSG,1998-11-11 00:00:00,,0
-2323,Angola - offshore blocks 1 16 and 18.,"Angola - offshore blocks 1, 16 and 18.",,,,,EPSG,EPSG,1998-12-14 00:00:00,,0
-2324,Angola - offshore blocks 2  3 17 and 31-33.,"Angola - offshore blocks 2,  3, 17 and 31-33.",,,,,EPSG,EPSG,1998-11-11 00:00:00,,0
-2325,Argentina - Neuquen province Chos Malal area,Argentina - Neuquen province - Chos Malal area.,,,,,EPSG,EPSG,2000-03-07 00:00:00,,0
-2326,Germany - former west Germany,Germany - former west Germany.,,,,,EPSG,EPSG,2001-08-15 00:00:00,,0
-2327,Syria - Al Whaleed area,Syrian Arab Republic - Al Whaleed area,,,,,EPSG,EPSG,2000-10-19 00:00:00,,0
-2328,Syria - Shaddadeh area,Syrian Arab Republic - Shaddadeh area (36d N 41d E),,,,,EPSG,EPSG,2000-10-19 00:00:00,,0
-2329,Syria - Deir area,Syrian Arab Republic - Deir area (35d 22m N 40d 06m E),,,,,EPSG,EPSG,2000-10-19 00:00:00,,0
-2330,Europe - North Sea,Denmark - North Sea;  Germany - North Sea;  Netherlands - offshore;  Norway - North Sea south of 62 deg N; United Kingdom (UKCS) - North Sea south of 62 deg N.,,,,,EPSG,EPSG,2001-06-05 00:00:00,,0
-2331,Norway - offshore N of 65 deg N,Norway - offshore north of 65 deg North.,,,,,EPSG,EPSG,1996-10-18 00:00:00,,0
-2332,Norway - offshore N of 65 deg N;  Svalbard; Jan Mayen,Norway - offshore north of 65 deg N;  Svalbard and Jan Mayen Islands.,,,,,EPSG,EPSG,2001-08-15 00:00:00,,0
-2333,Norway - offshore 62 to 65 deg N and W of 5 deg E,Norway - offshore between 62 and 65 deg North and west of 5 deg East.,,,,,EPSG,EPSG,2000-10-19 00:00:00,,0
-2334,Norway - North Sea - offshore S of 62 deg N.,Norway - North Sea - offshore south of 62 deg North.,,,,,EPSG,EPSG,2001-06-05 00:00:00,,0
-2335,Spain - Balearic Islands,Spain - Balearic Islands.,,,,,EPSG,EPSG,2001-06-05 00:00:00,,0
-2336,Spain - mainland except northwest,Spain - mainland except northwest (north of 41 deg 30m N and west of 4 deg 30 min W).,,,,,EPSG,EPSG,2001-06-05 00:00:00,,0
-2337,Spain - northwest,Spain - northwest (north of 41 deg 30m N and west of 4 deg 30 min W).,,,,,EPSG,EPSG,2001-06-05 00:00:00,,0
-2338,Europe - Portugal and Spain,Portugal; Spain.,,,,,EPSG,EPSG,1996-10-18 00:00:00,,0
-2339,Italy - Sardinia,Italy - Sardinia.,,,,,EPSG,EPSG,1997-04-11 00:00:00,,0
-2340,Italy - Sicily,Italy - Sicily.,,,,,EPSG,EPSG,2001-06-05 00:00:00,,0
-2341,Egypt - Gulf of Suez,Egypt - Gulf of Suez.,,,,,EPSG,EPSG,2000-03-07 00:00:00,,0
-2342,Europe - common offshore,Denmark - offshore. United Kingdom - UKCS offshore east of 6 deg West.,,,,,EPSG,EPSG,1998-06-30 00:00:00,,0
-2343,Europe - British Isles,Ireland; United Kingdom (UK).,,,,,EPSG,EPSG,1996-10-18 00:00:00,,0
-2344,Europe - Finland and Norway,Finland; Norway.,,,,,EPSG,EPSG,1996-10-18 00:00:00,,0
-2345,Asia - Middle East - Iraq; Israel; Jordan; Lebanon; Kuwait; Saudi Arabia; Syria.,Iraq; Israel; Jordan; Lebanon; Kuwait; Saudi Arabia; Syria.,,,,,EPSG,EPSG,1996-10-18 00:00:00,,0
-2346,WGS72BE to WGS84,World.  Vietnam - offshore.,,,,,EPSG,EPSG,1996-12-12 00:00:00,,0
-2347,Algeria - N of 31.5 deg North,Algeria - north of 35g (31 deg 30 min) North.,,,,,EPSG,EPSG,1998-03-12 00:00:00,,0
-2348,Brunei - offshore,Brunei Darussalam - offshore.,,,,,EPSG,EPSG,2000-10-19 00:00:00,,0
-2349,Brunei - onshore,Brunei Darussalam - onshore.,,,,,EPSG,EPSG,2001-06-05 00:00:00,,0
-2350,Mozambique - A,Mozambique - Maputo province and southern part of Gaza province; i.e. south of approximately 24 deg S.,,,,,EPSG,EPSG,2001-08-15 00:00:00,,0
-2351,Mozambique - B,Mozambique - provinces of Gaza; Inhambane and southern parts of Sofala and Manhica; i.e. between approximately 24 and 20 deg South.,,,,,EPSG,EPSG,2001-08-15 00:00:00,,0
-2352,Mozambique - C,Mozambique - provinces of Sofala north of Beira corridor; Manhica; Tete and Zambezia; i.e. between approximately 20 and 16 deg South.,,,,,EPSG,EPSG,2001-08-15 00:00:00,,0
-2353,Mozambique - D,Mozambique - provinces of Nampula; Niassa; Cabo Delgado; i.e. north of approximately 16 deg S.,,,,,EPSG,EPSG,2001-08-15 00:00:00,,0
-2354,Indonesia - Kalimantan,Indonesia - Kalimantan.,,,,,EPSG,EPSG,1998-03-12 00:00:00,,0
-2355,Falkland Islands - East Falkland Island,Falkland Islands (Malvinas) - East Falkland Island.,,,,,EPSG,EPSG,1996-10-18 00:00:00,,0
-2356,Ecuador - Galapagos,Ecuador - Baltra; Galapagos.,,,,,EPSG,EPSG,1996-10-18 00:00:00,,0
-2357,Argentina - Tierra del Fuego,Argentina - Tierra del Fuego,,,,,EPSG,EPSG,2000-03-07 00:00:00,,0
-2358,Thailand - Bongkot field,Thailand - Bongkot field.,,,,,EPSG,EPSG,2000-03-07 00:00:00,,0
-2359,Vietnam - near 16 deg N,Vietnam - near 16 deg North.,,,,,EPSG,EPSG,2000-03-07 00:00:00,,0
-2360,Vietnam - Con Son Island,Vietnam - Con Son Island.,,,,,EPSG,EPSG,2000-03-07 00:00:00,,0
-2361,Myanmar (Burma) - Moattama area,Myanmar (Burma) - Moattama area.,,,,,EPSG,EPSG,2000-03-07 00:00:00,,0
-2362,Iran - Kangan district,Islamic Republic of Iran - Kangan district.,,,,,EPSG,EPSG,1999-10-20 00:00:00,,0
-2363,Venezuela - east,Venezuela - east - Delta Amacuro; Anzoategui; Bolivar; Monagas; Sucre states.,,,,,EPSG,EPSG,1999-11-05 00:00:00,,0
-2364,Philippines - excluding Mindanao,Philippines (excluding Mindanao).,,,,,EPSG,EPSG,1996-10-18 00:00:00,,0
-2365,Philippines - Mindanao,Philippines - Mindanao.,,,,,EPSG,EPSG,1996-10-18 00:00:00,,0
-2366,Spain - mainland,Spain - mainland.,,,,,EPSG,EPSG,2000-03-07 00:00:00,,0
-2367,Spain - mainland NE,Spain - mainland north of the parallel of 42 deg N from the Atlantic Ocean to 42 deg N  4 deg W of Greenwich and then a line from 42 deg N  4 deg W of Greenwich through 40 deg N 0 deg E of Greenwich.,,,,,EPSG,EPSG,2000-03-07 00:00:00,,0
-2368,Spain - mainland SW,Spain - mainland south of the parallel of 42 deg N from the Atlantic Ocean to 42 deg N  4 deg W of Greenwich and then a line from 42 deg N  4 deg W of Greenwich through 40 deg N 0 deg E of Greenwich.,,,,,EPSG,EPSG,2000-03-07 00:00:00,,0
-2369,Seychelles - Mahe Island,Seychelles - Mahe Island.,,,,,EPSG,EPSG,1996-10-18 00:00:00,,0
-2370,Europe - Boznia and Herzegovina; Croatia; Serbia; Slovenia.,Boznia and Herzegovina; Croatia; Serbia; Slovenia.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2371,Nigeria - south,Nigeria - south.,,,,,EPSG,EPSG,2001-08-28 00:00:00,,0
-2372,Italy - mainland,Italy - mainland.,,,,,EPSG,EPSG,2001-06-05 00:00:00,,0
-2373,USA - Alaska including EEZ.,United States (USA) - Alaska including EEZ.,,,,,EPSG,EPSG,2001-08-28 00:00:00,,0
-2374,USA - conus including EEZ.,United States (USA) - lower 48 states including EEZ - Alabama; Arizona; Arkansas; California; Colorado; Connecticut; Delaware; Florida; Georgia; Idaho; Illinois; Indiana; Iowa; Kansas; Kentucky; Louisiana; Maine; Maryland; Massachusetts; Michigan; Minnesota; Mississippi; Missouri; Montana; Nebraska; Nevada; New Hampshire; New Jersey; New Mexico; New York; North Carolina; North Dakota; Ohio; Oklahoma; Oregon; Pennsylvania; Rhode Island; South Carolina; Sout [...]
-2375,Canada - Saskatchewan,Canada - Saskatchewan.,,,,,EPSG,EPSG,2001-08-15 00:00:00,,0
-2376,Canada - Alberta,Canada - Alberta,,,,,EPSG,EPSG,2001-08-15 00:00:00,,0
-2377,USA - Delaware and Maryland,United States (USA) - Delaware and Maryland.,,,,,EPSG,EPSG,2001-08-15 00:00:00,,0
-2378,"USA - New England - south (CT, MA, NH, RI, VT)",United States (USA) - Connecticut; Massachusetts; New Hampshire; Rhode Island; Vermont.,,,,,EPSG,EPSG,2001-08-15 00:00:00,,0
-2379,USA - Texas E of 100 deg W,United States (USA) - Texas east of 100 deg West.,,,,,EPSG,EPSG,2001-08-15 00:00:00,,0
-2380,USA - Texas W of 100 deg W,United States (USA) - Texas west of 100 deg West.,,,,,EPSG,EPSG,2001-08-15 00:00:00,,0
-2381,USA - Oregon and Washington.,United States (USA) - Oregon and Washington.,,,,,EPSG,EPSG,2001-08-15 00:00:00,,0
-2382,USA - Idaho and Montana - E of 113 deg W,United States (USA) - Idaho and Montana - east of 113 deg West.,,,,,EPSG,EPSG,2001-08-15 00:00:00,,0
-2383,USA - Idaho and Montana - W of 113 deg W,United States (USA) - Idaho and Montana - west of 113 deg West.,,,,,EPSG,EPSG,2001-08-15 00:00:00,,0
-2384,Canada - Alberta and British Columbia.,Canada - Alberta; British Columbia.,,,,,EPSG,EPSG,1996-10-18 00:00:00,,0
-2385,Panama - Canal Zone,Panama - Canal Zone.,,,,,EPSG,EPSG,1996-10-18 00:00:00,,0
-2386,Greenland - Hayes Peninsula,Greenland - Hayes Peninsula.,,,,,EPSG,EPSG,1996-10-18 00:00:00,,0
-2387,USA - Alaska - Aleutian Islands east of 180 deg,United States (USA) - Alaska - Aleutian Islands east of 180 deg.,,,,,EPSG,EPSG,1997-04-11 00:00:00,,0
-2388,USA - Alaska - Aleutian Islands west of 180 deg,United States (USA) - Alaska - Aleutian Islands west of 180 deg.,,,,,EPSG,EPSG,1997-04-11 00:00:00,,0
-2389,USA - conus east of Mississippi River,United States (USA) - CONUS east of Mississippi River including Louisiana; Missouri; Minnesota.,,,,,EPSG,EPSG,1996-10-18 00:00:00,,0
-2390,USA - conus west of Mississippi River,United States (USA) - CONUS west of Mississippi River.,,,,,EPSG,EPSG,1996-10-18 00:00:00,,0
-2391,Oman - Masirah Island,Oman - Masirah Island.,,,,,EPSG,EPSG,1996-10-18 00:00:00,,0
-2392,UAE - Abu al Bu Khoosh,United Arab Emirates (UAE) - Abu Dhabi - Abu al Bu Khoosh,,,,,EPSG,EPSG,2000-03-07 00:00:00,,0
-2393,Algeria - Hassi Messaoud,Algeria - Hassi Messaoud.,,,,,EPSG,EPSG,2000-06-23 00:00:00,,0
-2394,UK - Great Britain and UKCS,United Kingdom (UKCS) - Great Britain (GB) - England; Scotland; Wales; - North Sea.,,,,,EPSG,EPSG,1998-11-11 00:00:00,,0
-2395,UK - England,United Kingdom (UK) - England.,,,,,EPSG,EPSG,1996-10-18 00:00:00,,0
-2396,UK - England; Wales; Isle of Man,United Kingdom (UK) - England; Wales; Isle of Man.,,,,,EPSG,EPSG,1996-10-18 00:00:00,,0
-2397,UK - Scotland,United Kingdom (UK) - Scotland (including Shetland Islands).,,,,,EPSG,EPSG,1996-10-18 00:00:00,,0
-2398,UK - Wales,United Kingdom (UK) - Wales.,,,,,EPSG,EPSG,1996-10-18 00:00:00,,0
-2399,South America - Bolivia; Chile; Colombia;  Ecuador; Guyana; Peru; Venezuela.,Bolivia; Chile; Colombia;  Ecuador; Guyana; Peru; Venezuela.,,,,,EPSG,EPSG,1996-10-18 00:00:00,,0
-2400,Bolivia - Madidi,Bolivia - Madidi.,,,,,EPSG,EPSG,2000-10-19 00:00:00,,0
-2401,Bolivia - Block 20,Bolivia - Block 20.,,,,,EPSG,EPSG,2000-10-19 00:00:00,,0
-2402,Chile - north,Chile - north (near 19 deg South).,,,,,EPSG,EPSG,1996-10-18 00:00:00,,0
-2403,Chile - south,Chile - south (near 43 deg South).,,,,,EPSG,EPSG,1996-10-18 00:00:00,,0
-2404,Oman - block 4,Oman - block 4.,,,,,EPSG,EPSG,2001-06-05 00:00:00,,0
-2405,Kazakstan - Caspian Sea,Kazakstan - Caspian Sea.,,,,,EPSG,EPSG,2000-02-02 00:00:00,,0
-2406,Qatar - offshore,Qatar - offshore.,,,,,EPSG,EPSG,2000-10-19 00:00:00,,0
-2407,Greenland - south,Greenland (South).,,,,,EPSG,EPSG,1996-10-18 00:00:00,,0
-2408,Japan - Okinawa,Japan - Okinawa.,,,,,EPSG,EPSG,1996-10-18 00:00:00,,0
-2409,Asia - Japan and South Korea,Japan; South Korea; Okinawa.,,,,,EPSG,EPSG,1996-10-18 00:00:00,,0
-2410,Canada - NWT; Nunavut; Saskatchewan,Canada - Northwest Territories; Nunavut; Saskatchewan.,,,,,EPSG,EPSG,1996-10-18 00:00:00,,0
-2411,Asia - India and Nepal,India; Nepal.,,,,,EPSG,EPSG,1999-10-20 00:00:00,,0
-2412,USA - Alaska excluding Aleutian Islands,United States (USA) - Alaska (Excluding Aleutian Islands).,,,,,EPSG,EPSG,1996-10-18 00:00:00,,0
-2413,Bahamas (Except San Salvador Island).,Bahamas (Except San Salvador Island).,,,,,EPSG,EPSG,1996-10-18 00:00:00,,0
-2414,Bahamas (San Salvador Island).,Bahamas (San Salvador Island).,,,,,EPSG,EPSG,1996-10-18 00:00:00,,0
-2415,Canada - Manitoba and Ontario,Canada - Manitoba; Ontario.,,,,,EPSG,EPSG,1996-10-18 00:00:00,,0
-2416,Canada - New Brunswick; Newfoundland; Nova Scotia; Quebec,Canada - New Brunswick; Newfoundland; Nova Scotia; Quebec.,,,,,EPSG,EPSG,1996-10-18 00:00:00,,0
-2417,Canada - Yukon,Canada - Yukon.,,,,,EPSG,EPSG,1996-10-18 00:00:00,,0
-2418,Caribbean - central,Antigua; Barbados; Barbuda; Caicos Islands; Cuba; Dominican Republic; Grand Cayman; Jamaica; Turks and Caicos Islands.,,,,,EPSG,EPSG,1996-10-18 00:00:00,,0
-2419,Central America -,Belize; Costa Rica; El Salvador; Guatemala; Honduras; Nicaragua.,,,,,EPSG,EPSG,1996-10-18 00:00:00,,0
-2420,Europe - west,Austria; Belgium; Denmark; Faroe Islands; Finland; France; Germany (west); Gibraltar; Greece; Italy; Luxembourg; Netherlands; Norway; Portugal; Spain; Sweden; Switzerland.,,,,,EPSG,EPSG,2000-10-19 00:00:00,,0
-2421,Europe - west central,Austria; Denmark; France; Germany (west); Netherlands; Switzerland.,,,,,EPSG,EPSG,1996-10-18 00:00:00,,0
-2424,USA - HARN,American Samoa; Puerto Rico and the Virgin Islands; United States (USA) - Alabama; Alaska; Arizona; Arkansas; California; Colorado; Connecticut; Delaware; Florida; Georgia; Hawaii; Idaho; Illinois; Indiana; Iowa; Kansas; Kentucky; Louisiana; Maine; Maryland; Massachusetts; Michigan; Minnesota; Mississippi; Missouri; Montana; Nebraska; Nevada; New Hampshire; New Jersey; New Mexico; New York; North Carolina; North Dakota; Ohio; Oklahoma; Oregon; Pennsylvania; Rhode Island;  [...]
-2425,Japan - 45d 20m to 46d N; 141d to 142d E.,Japan - 45deg 20min to 46deg North; 141deg to 142deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2426,Japan - 45d 20m to 46d N; 142d to 143d E.,Japan - 45deg 20min to 46deg North; 142deg to 143deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2427,Japan - 44deg 40min to 45deg 20min N; 141deg to 142deg E.,Japan - 44deg 40min to 45deg 20min North; 141deg to 142deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2428,Japan - 44deg 40min to 45deg 20min N; 142deg to 143deg E.,Japan - 44deg 40min to 45deg 20min North; 142deg to 143deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2429,Japan - 44deg to 44deg 40min N; 141deg to 142deg E.,Japan - 44deg to 44deg 40min North; 141deg to 142deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2430,Japan - 44deg to 44deg 40min N; 142deg to 143deg E.,Japan - 44deg to 44deg 40min North; 142deg to 143deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2431,Japan - 44deg to 44deg 40min N; 143deg to 144deg E.,Japan - 44deg to 44deg 40min North; 143deg to 144deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2432,Japan - 44deg to 44deg 40min N; 144deg to 145deg E.,Japan - 44deg to 44deg 40min North; 144deg to 145deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2433,Japan - 43deg 20min to 44deg N; 141deg to 142deg E.,Japan - 43deg 20min to 44deg North; 141deg to 142deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2434,Japan - 43deg 20min to 44deg N; 142deg to 143deg E.,Japan - 43deg 20min to 44deg North; 142deg to 143deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2435,Japan - 43deg 20min to 44deg N; 143deg to 144deg E.,Japan - 43deg 20min to 44deg North; 143deg to 144deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2436,Japan - 43deg 20min to 44deg N; 144deg to 145deg E.,Japan - 43deg 20min to 44deg North; 144deg to 145deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2437,Japan - 43deg 20min to 44deg N; 145deg to 146deg E.,Japan - 43deg 20min to 44deg North; 145deg to 146deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2438,Japan - 42deg 40min to 43deg 20min N; 140deg to 141deg E.,Japan - 42deg 40min to 43deg 20min North; 140deg to 141deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2439,Japan - 42deg 40min to 43deg 20min N; 141deg to 142deg E.,Japan - 42deg 40min to 43deg 20min North; 141deg to 142deg East.,,,,,EPSG,EPSG,1999-11-12 00:00:00,,0
-2440,Japan - 42deg 40min to 43deg 20min N; 142deg to 143deg E.,Japan - 42deg 40min to 43deg 20min North; 142deg to 143deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2441,Japan - 42deg 40min to 43deg 20min N; 143deg to 144deg E.,Japan - 42deg 40min to 43deg 20min North; 143deg to 144deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2442,Japan - 42deg 40min to 43deg 20min N; 144deg to 145deg E.,Japan - 42deg 40min to 43deg 20min North; 144deg to 145deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2443,Japan - 42deg 40min to 43deg 20min N; 145deg to 146deg E.,Japan - 42deg 40min to 43deg 20min North; 145deg to 146deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2444,Japan - 42deg to 42deg 40min N; 139deg to 140deg E.,Japan - 42deg to 42deg 40min North; 139deg to 140deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2445,Japan - 42deg to 42deg 40min N; 140deg to 141deg E.,Japan - 42deg to 42deg 40min North; 140deg to 141deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2446,Japan - 42deg to 42deg 40min N; 141deg to 142deg E.,Japan - 42deg to 42deg 40min North; 141deg to 142deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2447,Japan - 42deg to 42deg 40min N; 142deg to 143deg E.,Japan - 42deg to 42deg 40min North; 142deg to 143deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2448,Japan - 42deg to 42deg 40min N; 143deg to 144deg E.,Japan - 42deg to 42deg 40min North; 143deg to 144deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2449,Japan - 41deg 20min to 42deg N; 140deg to 141deg E.,Japan - 41deg 20min to 42deg North; 140deg to 141deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2450,Japan - 41deg 20min to 42deg N; 141deg to 142deg E.,Japan - 41deg 20min to 42deg North; 141deg to 142deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2451,Japan - 40deg 40min to 41deg 20min N; 140deg to 141deg E.,Japan - 40deg 40min to 41deg 20min North; 140deg to 141deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2452,Japan - 40deg 40min to 41deg 20min N; 141deg to 142deg E.,Japan - 40deg 40min to 41deg 20min North; 141deg to 142deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2453,Japan - 40deg to 40deg 40min N; 139deg to 140deg E.,Japan - 40deg to 40deg 40min North; 139deg to 140deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2454,Japan - 40deg to 40deg 40min N; 140deg to 141deg E.,Japan - 40deg to 40deg 40min North; 140deg to 141deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2455,Japan - 40deg to 40deg 40min N; 141deg to 142deg E.,Japan - 40deg to 40deg 40min North; 141deg to 142deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2456,Japan - 39deg 20min to 40deg N; 139deg to 140deg E.,Japan - 39deg 20min to 40deg North; 139deg to 140deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2457,Japan - 39deg 20min to 40deg N; 140deg to 141deg E.,Japan - 39deg 20min to 40deg North; 140deg to 141deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2458,Japan - 39deg 20min to 40deg N; 141deg to 142deg E.,Japan - 39deg 20min to 40deg North; 141deg to 142deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2459,Japan - 38deg 40min to 39deg 20min N; 139deg to 140deg E.,Japan - 38deg 40min to 39deg 20min North; 139deg to 140deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2460,Japan - 38deg 40min to 39deg 20min N; 140deg to 141deg E.,Japan - 38deg 40min to 39deg 20min North; 140deg to 141deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2461,Japan - 38deg 40min to 39deg 20min N; 141deg to 142deg E.,Japan - 38deg 40min to 39deg 20min North; 141deg to 142deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2462,Japan - 38deg to 38deg 40min N; 139deg to 140deg E.,Japan - 38deg to 38deg 40min North; 139deg to 140deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2463,Japan - 38deg to 38deg 40min N; 140deg to 141deg E.,Japan - 38deg to 38deg 40min North; 140deg to 141deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2464,Japan - 38deg to 38deg 40min N; 141deg to 142deg E.,Japan - 38deg to 38deg 40min North; 141deg to 142deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2465,Japan - 37deg 20min to 38deg N; 136deg to 137deg E.,Japan - 37deg 20min to 38deg North; 136deg to 137deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2466,Japan - 37deg 20min to 38deg N; 137deg to 138deg E.,Japan - 37deg 20min to 38deg North; 137deg to 138deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2467,Japan - 37deg 20min to 38deg N; 138deg to 139deg E.,Japan - 37deg 20min to 38deg North; 138deg to 139deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2468,Japan - 37deg 20min to 38deg N; 139deg to 140deg E.,Japan - 37deg 20min to 38deg North; 139deg to 140deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2469,Japan - 37deg 20min to 38deg N; 140deg to 141deg E.,Japan - 37deg 20min to 38deg North; 140deg to 141deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2470,Japan - 37deg 20min to 38deg N; 141deg to 142deg E.,Japan - 37deg 20min to 38deg North; 141deg to 142deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2471,Japan - 36deg 40min to 37deg 20min N; 136deg to 137deg E.,Japan - 36deg 40min to 37deg 20min North; 136deg to 137deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2472,Japan - 36deg 40min to 37deg 20min N; 137deg to 138deg E.,Japan - 36deg 40min to 37deg 20min North; 137deg to 138deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2473,Japan - 36deg 40min to 37deg 20min N; 138deg to 139deg E.,Japan - 36deg 40min to 37deg 20min North; 138deg to 139deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2474,Japan - 36deg 40min to 37deg 20min N; 139deg to 140deg E.,Japan - 36deg 40min to 37deg 20min North; 139deg to 140deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2475,Japan - 36deg 40min to 37deg 20min N; 140deg to 141deg E.,Japan - 36deg 40min to 37deg 20min North; 140deg to 141deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2476,Japan - 36deg to 37deg 40min N; 136deg to 137deg E.,Japan - 36deg to 36deg 40min North; 136deg to 137deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2477,Japan - 36deg to 37deg 40min N; 137deg to 138deg E.,Japan - 36deg to 36deg 40min North; 137deg to 138deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2478,Japan - 36deg to 37deg 40min N; 138deg to 139deg E.,Japan - 36deg to 36deg 40min North; 138deg to 139deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2479,Japan - 36deg to 37deg 40min N; 139deg to 140deg E.,Japan - 36deg to 36deg 40min North; 139deg to 140deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2480,Japan - 36deg to 37deg 40min N; 140deg to 141deg E.,Japan - 36deg to 36deg 40min North; 140deg to 141deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2481,Japan - 35deg 20min to 36deg N; 132deg to 133deg E.,Japan - 35deg 20min to 36deg North; 132deg to 133deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2482,Japan - 35deg 20min to 36deg N; 133deg to 134deg E.,Japan - 35deg 20min to 36deg North; 133deg to 134deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2483,Japan - 35deg 20min to 36deg N; 134deg to 135deg E.,Japan - 35deg 20min to 36deg North; 134deg to 135deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2484,Japan - 35deg 20min to 36deg N; 135deg to 136deg E.,Japan - 35deg 20min to 36deg North; 135deg to 136deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2485,Japan - 35deg 20min to 36deg N; 136deg to 137deg E.,Japan - 35deg 20min to 36deg North; 136deg to 137deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2486,Japan - 35deg 20min to 36deg N; 137deg to 138deg E.,Japan - 35deg 20min to 36deg North; 137deg to 138deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2487,Japan - 35deg 20min to 36deg N; 138deg to 139deg E.,Japan - 35deg 20min to 36deg North; 138deg to 139deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2488,Japan - 35deg 20min to 36deg N; 139deg to 140deg E.,Japan - 35deg 20min to 36deg North; 139deg to 140deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2489,Japan - 35deg 20min to 36deg N; 140deg to 141deg E.,Japan - 35deg 20min to 36deg North; 140deg to 141deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2490,Japan - 34deg 40min to 35deg 20min N; 132deg to 133deg E.,Japan - 34deg 40min to 35deg 20min North; 132deg to 133deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2491,Japan - 34deg 40min to 35deg 20min N; 133deg to 134deg E.,Japan - 34deg 40min to 35deg 20min North; 133deg to 134deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2492,Japan - 34deg 40min to 35deg 20min N; 134deg to 135deg E.,Japan - 34deg 40min to 35deg 20min North; 134deg to 135deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2493,Japan - 34deg 40min to 35deg 20min N; 135deg to 136deg E.,Japan - 34deg 40min to 35deg 20min North; 135deg to 136deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2494,Japan - 34deg 40min to 35deg 20min N; 136deg to 137deg E.,Japan - 34deg 40min to 35deg 20min North; 136deg to 137deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2495,Japan - 34deg 40min to 35deg 20min N; 137deg to 138deg E.,Japan - 34deg 40min to 35deg 20min North; 137deg to 138deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2496,Japan - 34deg 40min to 35deg 20min N; 138deg to 139deg E.,Japan - 34deg 40min to 35deg 20min North; 138deg to 139deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2497,Japan - 34deg 40min to 35deg 20min N; 139deg to 140deg E.,Japan - 34deg 40min to 35deg 20min North; 139deg to 140deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2498,Japan - 34deg 40min to 35deg 20min N; 140deg to 141deg E.,Japan - 34deg 40min to 35deg 20min North; 140deg to 141deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2499,Japan - 34deg to 34deg 40min N; 130deg to 131deg E.,Japan - 34deg to 34deg 40min North; 130deg to 131deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2500,Japan - 34deg to 34deg 40min N; 131deg to 132deg E.,Japan - 34deg to 34deg 40min North; 131deg to 132deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2501,Japan - 34deg to 34deg 40min N; 132deg to 133deg E.,Japan - 34deg to 34deg 40min North; 132deg to 133deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2502,Japan - 34deg to 34deg 40min N; 133deg to 134deg E.,Japan - 34deg to 34deg 40min North; 133deg to 134deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2503,Japan - 34deg to 34deg 40min N; 134deg to 135deg E.,Japan - 34deg to 34deg 40min North; 134deg to 135deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2504,Japan - 34deg to 34deg 40min N; 135deg to 136deg E.,Japan - 34deg to 34deg 40min North; 135deg to 136deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2505,Japan - 34deg to 34deg 40min N; 136deg to 137deg E.,Japan - 34deg to 34deg 40min North; 136deg to 137deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2506,Japan - 34deg to 34deg 40min N; 137deg to 138deg E.,Japan - 34deg to 34deg 40min North; 137deg to 138deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2507,Japan - 34deg to 34deg 40min N; 138deg to 139deg E.,Japan - 34deg to 34deg 40min North; 138deg to 139deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2508,Japan - 33deg 20min to 34deg N; 129deg to 130deg E.,Japan - 33deg 20min to 34deg North; 129deg to 130deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2509,Japan - 33deg 20min to 34deg N; 130deg to 131deg E.,Japan - 33deg 20min to 34deg North; 130deg to 131deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2510,Japan - 33deg 20min to 34deg N; 131deg to 132deg E.,Japan - 33deg 20min to 34deg North; 131deg to 132deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2511,Japan - 33deg 20min to 34deg N; 132deg to 133deg E.,Japan - 33deg 20min to 34deg North; 132deg to 133deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2512,Japan - 33deg 20min to 34deg N; 133deg to 134deg E.,Japan - 33deg 20min to 34deg North; 133deg to 134deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2513,Japan - 33deg 20min to 34deg N; 134deg to 135deg E.,Japan - 33deg 20min to 34deg North; 134deg to 135deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2514,Japan - 33deg 20min to 34deg N; 135deg to 136deg E.,Japan - 33deg 20min to 34deg North; 135deg to 136deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2515,Japan - 33deg 20min to 34deg N; 136deg to 137deg E.,Japan - 33deg 20min to 34deg North; 136deg to 137deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2516,Japan - 32deg 40min to 33deg 20min N; 129deg to 130deg E.,Japan - 32deg 40min to 33deg 20min North; 129deg to 130deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2517,Japan - 32deg 40min to 33deg 20min N; 130deg to 131deg E.,Japan - 32deg 40min to 33deg 20min North; 130deg to 131deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2518,Japan - 32deg 40min to 33deg 20min N; 131deg to 132deg E.,Japan - 32deg 40min to 33deg 20min North; 131deg to 132deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2519,Japan - 32deg 40min to 33deg 20min N; 132deg to 133deg E.,Japan - 32deg 40min to 33deg 20min North; 132deg to 133deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2520,Japan - 32deg 40min to 33deg 20min N; 133deg to 134deg E.,Japan - 32deg 40min to 33deg 20min North; 133deg to 134deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2521,Japan - 32deg 40min to 33deg 20min N; 134deg to 135deg E.,Japan - 32deg 40min to 33deg 20min North; 134deg to 135deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2522,Japan - 32deg to 32deg 40min N; 130deg to 131deg E.,Japan - 32deg to 32deg 40min North; 130deg to 131deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2523,Japan - 32deg to 32deg 40min N; 131deg to 132deg E.,Japan - 32deg to 32deg 40min North; 131deg to 132deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2524,Japan - 31deg 20min to 32deg N; 130deg to 131deg E.,Japan - 31deg 20min to 32deg North; 130deg to 131deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2525,Japan - 31deg 20min to 32deg N; 131deg to 132deg E.,Japan - 31deg 20min to 32deg North; 131deg to 132deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2526,Japan - 30deg 40min to 31deg 20min N; 130deg to 131deg E.,Japan - 30deg 40min to 31deg 20min North; 130deg to 131deg East.,,,,,EPSG,EPSG,1998-12-12 00:00:00,,0
-2527,USA - Texas - SPCS83 - S central,United States (USA) - Texas between approximately 30d 10m & 28d 05m North - counties of Aransas; Atascosa; Austin; Bandera; Bee; Bexar; Brazoria; Brewster; Caldwell; Calhoun; Chambers; Colorado; Comal; De Witt; Dimmit; Edwards; Fayette; Fort Bend; Frio; Galveston; Goliad; Gonzales; Guadalupe; Harris; Hays; Jackson; Jefferson; Karnes; Kendall; Kerr; Kinney; La Salle; Lavaca; Live Oak; Matagorda; Maverick; McMullen; Medina; Presidio; Real; Refugio; Ter [...]
-2528,USA - Texas - SPCS83 - S,United States (USA) - Texas south of approximately 28d 05m North - counties of Brooks; Cameron; Duval; Hidalgo; Jim Hogg; Jim Wells; Kenedy; Kleberg; Nueces; San Patricio; Starr; Webb; Willacy; Zapata.,,,,,EPSG,EPSG,2001-11-06 00:00:00,,0
-2529,USA - Louisiana - SPCS83 - S,United States (USA) - Louisiana south of approximately 30d 55m North - counties of Acadia; Allen; Ascension; Assumption; Beauregard; Calcasieu; Cameron; East Baton Rouge; East Feliciana; Evangeline; Iberia; Iberville; Jefferson; Jefferson Davis; Lafayette; LaFourche; Livingston; Orleans; Plaquemines; Pointe Coupee; St. Bernard; St. Charles; St. Helena; St. James; St. John the Baptist; St. Landry; St. Martin; St. Mary; St. Tammany; Tangipahoa; Terrebonne; [...]
-2530,UK - Northern Ireland,United Kingdom (UK) - Northern Ireland (Ulster).,,,,,EPSG,EPSG,2001-11-06 00:00:00,,0
-2531,Denmark - Jutland and Fuen,Denmark - Jutland and Fuen.,,,,,EPSG,EPSG,2001-11-06 00:00:00,,0
-2532,Denmark - Zealand and Lolland,Denmark - Zealand and Lolland.,,,,,EPSG,EPSG,2001-11-06 00:00:00,,0
-2533,Denmark - Bornholm,Denmark - Bornholm.,,,,,EPSG,EPSG,2001-11-06 00:00:00,,0
-2534,3-degree TM - N hemisphere CM 27 deg E,"Between 25 deg 30 min and 28 deg 30 min East, northern hemisphere.",,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-2535,3-degree TM - N hemisphere CM 30 deg E,"Between 28 deg 30 min and 31 deg 30 min East, northern hemisphere.",,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-2536,3-degree TM - N hemisphere CM 33 deg E,"Between 31 deg 30 min and 34 deg 30 min East, northern hemisphere.",,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-2537,3-degree TM - N hemisphere CM 36 deg E,"Between 34 deg 30 min and 37 deg 30 min East, northern hemisphere.",,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-2538,3-degree TM - N hemisphere CM 39 deg E,"Between 37 deg 30 min and 40 deg 30 min East, northern hemisphere.",,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-2539,3-degree TM - N hemisphere CM 42 deg E,"Between 40 deg 30 min and 43 deg 30 min East, northern hemisphere.",,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-2540,3-degree TM - N hemisphere CM 45 deg E,"Between 43 deg 30 min and 46 deg 30 min East, northern hemisphere.",,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-2541,Germany - former west Germany N,Germany - former west Germany north of 52deg 20min N.,,,,,EPSG,EPSG,2001-11-06 00:00:00,,0
-2542,Germany - former west Germany C,Germany - former west Germany between 50deg 20min and 52deg 20min N.,,,,,EPSG,EPSG,2001-11-06 00:00:00,,0
-2543,Germany - former west Germany S,Germany - former west Germany south of 50deg 20min N.,,,,,EPSG,EPSG,2001-11-06 00:00:00,,0
-2544,Germany - Thuringen,Germany - Thuringen.,,,,,EPSG,EPSG,2001-11-06 00:00:00,,0
-2545,Germany - Sachsen,Germany - Sachsen.,,,,,EPSG,EPSG,2001-11-06 00:00:00,,0
-2546,Romania - offshore,Romania - offshore.,,,,,EPSG,EPSG,2001-11-06 00:00:00,,0
-2547,Yugoslavia - Montenegro,Yugoslavia - Montenegro.,,,,,EPSG,EPSG,2002-01-18 00:00:00,,0
-2548,Africa - AOF W of 10deg W,French West Africa west of 10deg West.,,,,,EPSG,EPSG,2002-01-18 00:00:00,,0
-2549,Africa - AOF 10 to 3.5deg W,French West Africa between 10deg and 3deg 30min West.,,,,,EPSG,EPSG,2002-01-18 00:00:00,,0
-2550,Africa - AOF 3.5deg W to 4deg E,French West Africa between 3deg 30min West and 4deg East.,,,,,EPSG,EPSG,2002-01-18 00:00:00,,0
-2551,Africa - AOF 4 to 9deg E,French West Africa between 4deg and 9deg East.,,,,,EPSG,EPSG,2002-01-18 00:00:00,,0
-2552,Africa - AEF 9 to 14deg E,French Equatorial Africa between 9deg and 14deg East.,,,,,EPSG,EPSG,2002-01-18 00:00:00,,0
-2553,Africa - AEF 14 to 21deg E,French Equatorial Africa between 14deg and 21deg East.,,,,,EPSG,EPSG,2002-01-18 00:00:00,,0
-2554,Africa - AEF east of 21deg E,French Equatorial Africa east of 21deg East.,,,,,EPSG,EPSG,2002-01-18 00:00:00,,0
-2555,Cameroon - coastal area,Cameroon - coastal area.,,,,,EPSG,EPSG,2002-01-18 00:00:00,,0
-2556,Greenland - north of 81 deg N,Greenland - north of 81 deg North.,,,,,EPSG,EPSG,2002-01-18 00:00:00,,0
-2557,Greenland - east - 78 to 81 deg N,Greenland - east of 44 deg West and between 78 deg and 81 deg North.,,,,,EPSG,EPSG,2002-01-18 00:00:00,,0
-2558,Greenland - east - 75 to 78 deg N,Greenland - east of 42 deg West and between 75 deg and 78 deg North.,,,,,EPSG,EPSG,2002-01-18 00:00:00,,0
-2559,Greenland - east - 72 to 75 deg N,Greenland - east of 38 deg West and between 72 deg and 75 deg North.,,,,,EPSG,EPSG,2002-01-18 00:00:00,,0
-2560,Greenland - east - 69 to 72 deg N,Greenland - east of 38 deg West and between 69 deg and 72 deg North.,,,,,EPSG,EPSG,2002-01-18 00:00:00,,0
-2561,Greenland - east - 66 to 69 deg N,Greenland - east of 42 deg West and between 66 deg and 69 deg North.,,,,,EPSG,EPSG,2002-01-18 00:00:00,,0
-2562,Greenland - east - 63 to 66 deg N,Greenland - east of 46 deg West and between 63 deg and 66 deg North.,,,,,EPSG,EPSG,2002-01-18 00:00:00,,0
-2563,Greenland - west - 78 to 81 deg N,Greenland - west of 44 deg West and between 78 deg and 81 deg North.,,,,,EPSG,EPSG,2002-01-18 00:00:00,,0
-2564,Greenland - west - 75 to 78 deg N,Greenland - west of 44 deg West and between 75 deg and 78 deg North.,,,,,EPSG,EPSG,2002-01-18 00:00:00,,0
-2565,Greenland - west - 72 to 75 deg N,Greenland - west of 38 deg West and between 72 deg and 75 deg North.,,,,,EPSG,EPSG,2002-01-18 00:00:00,,0
-2566,Greenland - west - 69 to 72 deg N,Greenland - west of 38 deg West and between 69 deg and 72 deg North.,,,,,EPSG,EPSG,2002-01-18 00:00:00,,0
-2567,Greenland - west - 66 to 69 deg N,Greenland - west of 42 deg West and between 66 deg and 69 deg North.,,,,,EPSG,EPSG,2002-01-18 00:00:00,,0
-2568,Greenland - west - 63 to 66 deg N,Greenland - west of 46 deg West and between 63 deg and 66 deg North.,,,,,EPSG,EPSG,2002-01-18 00:00:00,,0
-2569,Greenland - south of 63 deg N,Greenland - south of 63 deg North.,,,,,EPSG,EPSG,2002-01-18 00:00:00,,0
-2570,Greenland - Scoresbysund area,Greenland - Scoresbysund area.,,,,,EPSG,EPSG,2002-01-18 00:00:00,,0
-2571,Greenland - Ammassalik area,Greenland - Ammassalik area.,,,,,EPSG,EPSG,2002-01-18 00:00:00,,0
-2572,Greenland - E of 48d W,Greenland east of 48 deg West.,,,,,EPSG,EPSG,2002-01-18 00:00:00,,0
-2573,Greenland - W of 48d W,Greenland west of 48 deg West.,,,,,EPSG,EPSG,2002-01-18 00:00:00,,0
-2574,Congo - coastal area and offshore,Congo - coastal area and offshore.,,,,,EPSG,EPSG,2002-01-18 00:00:00,,0
-2575,Australia - all states,Australia - Australian Capital Territory (ACT); New South Wales (NSW); Northern Territories (NT); Queensland (Qld); South Australia (SA); Tasmania (Tas); Western Australia (WA); Victoria (Vic).,,,,,EPSG,EPSG,2002-01-18 00:00:00,,0
-2576,Australia - AGD84,"Australia - Queensland (Qld), South Australia (SA), Western Australia (WA).",,,,,EPSG,EPSG,2002-01-18 00:00:00,,0
-2577,Indonesia - Java Sea - ONWJ,Indonesia - Java Sea - offshore northwest Java.,,,,,EPSG,EPSG,2002-02-12 00:00:00,,0
-2588,Indonesia - Java Sea - E,Indonesia - eastern Java Sea.,,,,,EPSG,EPSG,2002-02-12 00:00:00,,0
-2589,Indonesia - Irian Jaya - Tangguh,Indonesia - Irian Jaya - Tangguh.,,,,,EPSG,EPSG,2002-02-12 00:00:00,,0
-2590,Cameroon - Garoua area,Cameroon - Garoua area.,,,,,EPSG,EPSG,2002-01-18 00:00:00,,0
-2591,Cameroon - N'Djamena area,Cameroon - N'Djamena area.,,,,,EPSG,EPSG,2002-01-18 00:00:00,,0
-2592,Azerbaijan - offshore and Sangachal,Azerbaijan - offshore and Sangachal terminal.,,,,,EPSG,EPSG,2002-02-12 00:00:00,,0
-2593,Asia - Azerbaijan and Georgia,Azerbaijan and Georgia,,,,,EPSG,EPSG,2002-02-12 00:00:00,,0
-2594,Azerbaijan - coastal area Baku to Astara,Azerbaijan - coastal area Baku to Astara.,,,,,EPSG,EPSG,2002-02-12 00:00:00,,0
-2595,Egypt - Western Desert,Egypt - Western Desert.,,,,,EPSG,EPSG,2002-02-12 00:00:00,,0
-2596,Argentina - Tierra del Fuego - offshore W of 66W,Argentina - Tierra del Fuego offshore west of 66 deg West.,,,,,EPSG,EPSG,2002-02-12 00:00:00,,0
-2597,Argentina - Tierra del Fuego - offshore E of 66W,Argentina - Tierra del Fuego offshore east of 66 deg West.,,,,,EPSG,EPSG,2002-02-12 00:00:00,,0
-2598,Algeria - District 3,Algeria - District 3 (In Salah).,,,,,EPSG,EPSG,2002-02-12 00:00:00,,0
-2599,Algeria - In Amenas,Algeria - In Amenas block.,,,,,EPSG,EPSG,2002-02-12 00:00:00,,0
-2600,Algeria - Hassi Bir Reikaz,Algeria - Hassi Bir Reikaz.,,,,,EPSG,EPSG,2002-02-12 00:00:00,,0
-2601,Norway - offshore N of 62 deg N;  Svalbard; Jan Mayen,Norway - offshore north of 62 deg N;  Svalbard and Jan Mayen Islands.,,,,,EPSG,EPSG,2001-08-15 00:00:00,,0
-2602,"Palestine Territory, Occupied","Palestine Territory, Occupied.",PS,PSE,275,,ISO 3166 Maintenance Agency.  ftp://ftp.fu-berlin.de/pub/doc/iso,EPSG,2002-06-22 00:00:00,,0
-2603,Asia - Middle East - Israel and Palestine Territory,Asia - Middle East - Israel and Palestine Territory.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2604,3-degree TM - N hemisphere CM 48 deg E,"Between 46 deg 30 min and 49 deg 30 min East, northern hemisphere.",,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-2605,3-degree TM - N hemisphere CM 51 deg E,"Between 49 deg 30 min and 52 deg 30 min East, northern hemisphere.",,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-2606,3-degree TM - N hemisphere CM 54 deg E,"Between 52 deg 30 min and 55 deg 30 min East, northern hemisphere.",,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-2607,3-degree TM - N hemisphere CM 57 deg E,"Between 55 deg 30 min and 58 deg 30 min East, northern hemisphere.",,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-2608,3-degree TM - N hemisphere CM 60 deg E,"Between 58 deg 30 min and 61 deg 30 min East, northern hemisphere.",,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-2609,3-degree TM - N hemisphere CM 63 deg E,"Between 61 deg 30 min and 64 deg 30 min East, northern hemisphere.",,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-2610,3-degree TM - N hemisphere CM 66 deg E,"Between 64 deg 30 min and 67 deg 30 min East, northern hemisphere.",,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-2611,3-degree TM - N hemisphere CM 69 deg E,"Between 67 deg 30 min and 70 deg 30 min East, northern hemisphere.",,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-2612,3-degree TM - N hemisphere CM 72 deg E,"Between 70 deg 30 min and 73 deg 30 min East, northern hemisphere.",,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-2613,3-degree TM - N hemisphere CM 75 deg E,"Between 73 deg 30 min and 76 deg 30 min East, northern hemisphere.",,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-2614,3-degree TM - N hemisphere CM 78 deg E,"Between 76 deg 30 min and 79 deg 30 min East, northern hemisphere.",,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-2615,3-degree TM - N hemisphere CM 81 deg E,"Between 79 deg 30 min and 82 deg 30 min East, northern hemisphere.",,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-2616,3-degree TM - N hemisphere CM 84 deg E,"Between 82 deg 30 min and 85 deg 30 min East, northern hemisphere.",,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-2617,3-degree TM - N hemisphere CM 87 deg E,"Between 85 deg 30 min and 88 deg 30 min East, northern hemisphere.",,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-2618,3-degree TM - N hemisphere CM 90 deg E,"Between 88 deg 30 min and 91 deg 30 min East, northern hemisphere.",,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-2619,3-degree TM - N hemisphere CM 93 deg E,"Between 91 deg 30 min and 94 deg 30 min East, northern hemisphere.",,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-2620,3-degree TM - N hemisphere CM 96 deg E,"Between 94 deg 30 min and 97 deg 30 min East, northern hemisphere.",,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-2621,3-degree TM - N hemisphere CM 99 deg E,"Between 97 deg 30 min and 100 deg 30 min East, northern hemisphere.",,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-2622,3-degree TM - N hemisphere CM 102 deg E,"Between 100 deg 30 min and 103 deg 30 min East, northern hemisphere.",,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-2623,3-degree TM - N hemisphere CM 105 deg E,"Between 103 deg 30 min and 106 deg 30 min East, northern hemisphere.",,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-2624,3-degree TM - N hemisphere CM 108 deg E,"Between 106 deg 30 min and 109 deg 30 min East, northern hemisphere.",,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-2625,3-degree TM - N hemisphere CM 111 deg E,"Between 109 deg 30 min and 112 deg 30 min East, northern hemisphere.",,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-2626,3-degree TM - N hemisphere CM 114 deg E,"Between 112 deg 30 min and 115 deg 30 min East, northern hemisphere.",,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-2627,3-degree TM - N hemisphere CM 117 deg E,"Between 115 deg 30 min and 118 deg 30 min East, northern hemisphere.",,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-2628,3-degree TM - N hemisphere CM 120 deg E,"Between 118 deg 30 min and 121 deg 30 min East, northern hemisphere.",,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-2629,3-degree TM - N hemisphere CM 123 deg E,"Between 121 deg 30 min and 124 deg 30 min East, northern hemisphere.",,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-2630,3-degree TM - N hemisphere CM 126 deg E,"Between 124 deg 30 min and 127 deg 30 min East, northern hemisphere.",,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-2631,3-degree TM - N hemisphere CM 129 deg E,"Between 127 deg 30 min and 130 deg 30 min East, northern hemisphere.",,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-2632,3-degree TM - N hemisphere CM 132 deg E,"Between 130 deg 30 min and 133 deg 30 min East, northern hemisphere.",,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-2633,3-degree TM - N hemisphere CM 135 deg E,"Between 133 deg 30 min and 136 deg 30 min East, northern hemisphere.",,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-2634,3-degree TM - N hemisphere CM 138 deg E,"Between 136 deg 30 min and 139 deg 30 min East, northern hemisphere.",,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-2635,3-degree TM - N hemisphere CM 141 deg E,"Between 139 deg 30 min and 142 deg 30 min East, northern hemisphere.",,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-2636,3-degree TM - N hemisphere CM 144 deg E,"Between 142 deg 30 min and 145 deg 30 min East, northern hemisphere.",,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-2637,3-degree TM - N hemisphere CM 147 deg E,"Between 145 deg 30 min and 148 deg 30 min East, northern hemisphere.",,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-2638,3-degree TM - N hemisphere CM 150 deg E,"Between 148 deg 30 min and 151 deg 30 min East, northern hemisphere.",,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-2639,3-degree TM - N hemisphere CM 153 deg E,"Between 151 deg 30 min and 154 deg 30 min East, northern hemisphere.",,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-2640,3-degree TM - N hemisphere CM 156 deg E,"Between 154 deg 30 min and 157 deg 30 min East, northern hemisphere.",,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-2641,3-degree TM - N hemisphere CM 159 deg E,"Between 157 deg 30 min and 160 deg 30 min East, northern hemisphere.",,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-2642,3-degree TM - N hemisphere CM 162 deg E,"Between 160 deg 30 min and 163 deg 30 min East, northern hemisphere.",,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-2643,3-degree TM - N hemisphere CM 165 deg E,"Between 163 deg 30 min and 166 deg 30 min East, northern hemisphere.",,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-2644,3-degree TM - N hemisphere CM 168 deg E,"Between 166 deg 30 min and 169 deg 30 min East, northern hemisphere.",,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-2645,3-degree TM - N hemisphere CM 171 deg E,"Between 169 deg 30 min and 172 deg 30 min East, northern hemisphere.",,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-2646,3-degree TM - N hemisphere CM 174 deg E,"Between 172 deg 30 min and 175 deg 30 min East, northern hemisphere.",,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-2647,3-degree TM - N hemisphere CM 177 deg E,"Between 175 deg 30 min and 178 deg 30 min East, northern hemisphere.",,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-2648,3-degree TM - N hemisphere CM 180 deg,"Between 178 deg 30 min East and 178 deg 30 min West, northern hemisphere.",,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-2649,3-degree TM - N hemisphere CM 177 deg W,"Between 178 deg 30 min and 175 deg 30 min West, northern hemisphere.",,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-2650,3-degree TM - N hemisphere CM 174 deg W,"Between 175 deg 30 min and 172 deg 30 min West, northern hemisphere.",,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-2651,3-degree TM - N hemisphere CM 171 deg W,"Between 172 deg 30 min and 169 deg 30 min West, northern hemisphere.",,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-2652,3-degree TM - N hemisphere CM 168 deg W,"Between 169 deg 30 min and 166 deg 30 min West, northern hemisphere.",,,,,EPSG,EPSG,2002-06-22 00:00:00,2002.341,0
-2653,Europe - 3deg GK CM 21 deg E,Russian Federation and Ukraine - between 19 deg 30 min and 22 deg 30 min East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2654,Europe - 3deg GK CM 24 deg E,"Belarus, Russian Federation and Ukraine - between 22 deg 30 min and 25 deg 30 min East.",,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2655,Europe - 3deg GK CM 27 deg E,"Belarus, Moldova, Russian Federation and Ukraine - between 25 deg 30 min and 28 deg 30 min East.",,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2656,Europe - 3deg GK CM 30 deg E,"Belarus, Moldova, Russian Federation and Ukraine - between 28 deg 30 min and 31 deg 30 min East.",,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2657,Europe - 3deg GK CM 33 deg E,"Belarus, Russian Federation and Ukraine - between 31 deg 30 min and 34 deg 30 min East.",,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2658,Europe - 3deg GK CM 36 deg E,Russian Federation and Ukraine - between 34 deg 30 min and 37 deg 30 min East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2659,Europe - 3deg GK CM 39 deg E,"Georgia, Russian Federation  and Ukraine - between 37 deg 30 min and 40 deg 30 min East.",,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2660,Europe - 3deg GK CM 42 deg E,"Georgia, Russian Federation - between 40 deg 30 min and 43 deg 30 min East.",,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2661,Europe - 3deg GK CM 45 deg E,"Armenia, Azerbaijan, Georgia and Russian Federation - between 43 deg 30 min and 46 deg 30 min East.",,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2662,Europe - 3deg GK CM 48 deg E,"Azerbaijan, Georgia and Russian Federation - between 46 deg 30 min and 49 deg 30 min East.",,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2663,Europe - 3deg GK CM 51 deg E,"Azerbaijan, Georgia and Russian Federation - between 49 deg 30 min and 52 deg 30 min East.",,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2664,Asia - 3deg GK CM 54 deg E,"Kazakstan, Russian Federation and Turkmenistan - between 52 deg 30 min and 55 deg 30 min East.",,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2665,Asia - 3deg GK CM 57 deg E,"Kazakstan, Russian Federation and Turkmenistan - between 55 deg 30 min and 58 deg 30 min East.",,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2666,Asia - 3deg GK CM 60 deg E,"Kazakstan, Russian Federation, Turkmenistan and Uzbekistan - between 58 deg 30 min and 61 deg 30 min East.",,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2667,Asia - 3deg GK CM 63 deg E,"Kazakstan, Russian Federation, Turkmenistan and Uzbekistan - between 61 deg 30 min and 64 deg 30 min East.",,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2668,Asia - 3deg GK CM 66 deg E,"Kazakstan, Russian Federation, Turkmenistan and Uzbekistan - between 64 deg 30 min and 67 deg 30 min East.",,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2669,Asia - 3deg GK CM 69 deg E,"Kazakstan, Kyrgyzstan, Russian Federation, Tajikistan and Uzbekistan - between 67 deg 30 min and 70 deg 30 min East.",,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2670,Asia - 3deg GK CM 72 deg E,"Kazakstan, Kyrgyzstan, Russian Federation, Tajikistan and Uzbekistan - between 70 deg 30 min and 73 deg 30 min East.",,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2671,Asia - 3deg GK CM 75 deg E,"Kazakstan, Kyrgyzstan, Russian Federation and Tajikistan - between 73 deg 30 min and 76 deg 30 min East.",,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2672,Asia - 3deg GK CM 78 deg E,"Kazakstan, Kyrgyzstan and Russian Federation - between 76 deg 30 min and 79 deg 30 min East.",,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2673,Asia - 3deg GK CM 81 deg E,"Kazakstan, Kyrgyzstan and Russian Federation - between 79 deg 30 min and 82 deg 30 min East.",,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2674,Asia - 3deg GK CM 84 deg E,Kazakstan and Russian Federation - between 82 deg 30 min and 85 deg 30 min East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2675,Asia - 3deg GK CM 87 deg E,Kazakstan and Russian Federation - between 85 deg 30 min and 88 deg 30 min East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2676,Russia - 88.5 to 91.5 deg E,Russian Federation - between 88 deg 30 min and 91 deg 30 min East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2677,Russia - 91.5 to 94.5 deg E,Russian Federation - between 91 deg 30 min and 94 deg 30 min East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2678,Russia - 94.5 to 97.5 deg E,Russian Federation - between 94 deg 30 min and 97 deg 30 min East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2679,Russia - 97.5 to 100.5 deg E,Russian Federation - between 97 deg 30 min and 100 deg 30 min East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2680,Russia - 100.5 to 103.5 deg E,Russian Federation - between 100 deg 30 min and 103 deg 30 min East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2681,Russia - 103.5 to 106.5 deg E,Russian Federation - between 103 deg 30 min and 106 deg 30 min East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2682,Russia - 106.5 to 109.5 deg E,Russian Federation - between 106 deg 30 min and 109 deg 30 min East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2683,Russia - 109.5 to 112.5 deg E,Russian Federation - between 109 deg 30 min and 112 deg 30 min East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2684,Russia - 112.5 to 115.5 deg E,Russian Federation - between 112 deg 30 min and 115 deg 30 min East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2685,Russia - 115.5 to 118.5 deg E,Russian Federation - between 115 deg 30 min and 118 deg 30 min East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2686,Russia - 118.5 to 121.5 deg E,Russian Federation - between 118 deg 30 min and 121 deg 30 min East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2687,Russia - 121.5 to 124.5 deg E,Russian Federation - between 121 deg 30 min and 124 deg 30 min East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2688,Russia - 124.5 to 127.5 deg E,Russian Federation - between 124 deg 30 min and 127 deg 30 min East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2689,Russia - 127.5 to 130.5 deg E,Russian Federation - between 127 deg 30 min and 130 deg 30 min East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2690,Russia - 130.5 to 133.5 deg E,Russian Federation - between 130 deg 30 min and 133 deg 30 min East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2691,Russia - 133.5 to 136.5 deg E,Russian Federation - between 133 deg 30 min and 136 deg 30 min East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2692,Russia - 136.5 to 139.5 deg E,Russian Federation - between 136 deg 30 min and 139 deg 30 min East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2693,Russia - 139.5 to 142.5 deg E,Russian Federation - between 139 deg 30 min and 142 deg 30 min East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2694,Russia - 142.5 to 145.5 deg E,Russian Federation - between 142 deg 30 min and 145 deg 30 min East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2695,Russia - 145.5 to 148.5 deg E,Russian Federation - between 145 deg 30 min and 148 deg 30 min East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2696,Russia - 148.5 to 151.5 deg E,Russian Federation - between 148 deg 30 min and 151 deg 30 min East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2697,Russia - 151.5 to 154.5 deg E,Russian Federation - between 151 deg 30 min and 154 deg 30 min East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2698,Russia - 154.5 to 157.5 deg E,Russian Federation - between 154 deg 30 min and 157 deg 30 min East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2699,Russia - 157.5 to 160.5 deg E,Russian Federation - between 157 deg 30 min and 160 deg 30 min East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2700,Russia - 160.5 to 163.5 deg E,Russian Federation - between 160 deg 30 min and 163 deg 30 min East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2701,Russia - 163.5 to 166.5 deg E,Russian Federation - between 163 deg 30 min and 166 deg 30 min East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2702,Russia - 166.5 to 170.5 deg E,Russian Federation - between 166 deg 30 min and 169 deg 30 min East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2703,Russia - 169.5 to 172.5 deg E,Russian Federation - between 169 deg 30 min and 172 deg 30 min East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2704,Russia - 172.5 to 175.5 deg E,Russian Federation - between 172 deg 30 min and 175 deg 30 min East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2705,Russia - 175.5 to 178.5 deg E,Russian Federation - between 175 deg 30 min and 178 deg 30 min East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2706,Russia - 178.5E to 178.5 deg W,Russian Federation - between 178 deg 30 min East and 178 deg 30 min West.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2707,Russia - 178.5 to 175.5 deg W,Russian Federation - between 178 deg 30 min and 175 deg 30 min West.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2708,Russia - 175.5 to 172.5 deg W,Russian Federation - between 175 deg 30 min and 172 deg 30 min West.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2709,Russia - 172.5 to 169.5 deg W,Russian Federation - between 172 deg 30 min and 169 deg 30 min West.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2710,Russia - 169.5 to 166.5 deg W,Russian Federation - between 169 deg 30 min and 166 deg 30 min West.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2711,China - 73.5 to 76.5 deg E,China - between 73 deg 30 min and 76 deg 30 min East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2712,China - 76.5 to 79.5 deg E,China - between 76 deg 30 min and 79 deg 30 min East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2713,China - 79.5 to 82.5 deg E,China - between 79 deg 30 min and 82 deg 30 min East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2714,China - 82.5 to 85.5 deg E,China - between 82 deg 30 min and 85 deg 30 min East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2715,China - 85.5 to 88.5 deg E,China - between 85 deg 30 min and 88 deg 30 min East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2716,China - 88.5 to 91.5 deg E,China - between 88 deg 30 min and 91 deg 30 min East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2717,China - 91.5 to 94.5 deg E,China - between 91 deg 30 min and 94 deg 30 min East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2718,China - 94.5 to 97.5 deg E,China - between 94 deg 30 min and 97 deg 30 min East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2719,China - 97.5 to 100.5 deg E,China - between 97 deg 30 min and 100 deg 30 min East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2720,China - 100.5 to 103.5 deg E,China - between 100 deg 30 min and 103 deg 30 min East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2721,China - 103.5 to 106.5 deg E,China - between 103 deg 30 min and 106 deg 30 min East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2722,China - 106.5 to 109.5 deg E,China - between 106 deg 30 min and 109 deg 30 min East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2723,China - 109.5 to 112.5 deg E,China - between 109 deg 30 min and 112 deg 30 min East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2724,China - 112.5 to 115.5 deg E,China - between 112 deg 30 min and 115 deg 30 min East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2725,China - 115.5 to 118.5 deg E,China - between 115 deg 30 min and 118 deg 30 min East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2726,China - 118.5 to 121.5 deg E,China - between 118 deg 30 min and 121 deg 30 min East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2727,China - 121.5 to 124.5 deg E,China - between 121 deg 30 min and 124 deg 30 min East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2728,China - 124.5 to 127.5 deg E,China - between 124 deg 30 min and 127 deg 30 min East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2729,China - 127.5 to 130.5 deg E,China - between 127 deg 30 min and 130 deg 30 min East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2730,China - 130.5 to 133.5 deg E,China - between 130 deg 30 min and 133 deg 30 min East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2731,China - 133.5 to 136.5 deg E,China - between 133 deg 30 min and 136 deg 30 min East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2732,6-degree TM - CM 81 deg W,Between 84 and 78 deg West.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2733,6-degree TM - CM 75 deg W,Between 78 and 72 deg West.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2734,6-degree TM - CM 69 deg W,Between 72 and 66 deg West.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2735,6-degree TM - CM 63 deg W,Between 66 and 60 deg West.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2736,6-degree TM - CM 57 deg W,Between 60 and 54 deg West.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2737,6-degree TM - CM 51 deg W,Between 54 and 48 deg West.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2738,6-degree TM - CM 45 deg W,Between 48 and 42 deg West.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2739,6-degree TM - CM 39 deg W,Between 42 and 36 deg West.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2740,6-degree TM - CM 33 deg W,Between 36 and 30 deg West.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2741,6-degree TM - CM 9 deg E,Between 6 and 12 deg East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2742,6-degree TM - CM 15 deg E,Between 12 and 18 deg East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2743,6-degree TM - CM 21 deg E,Between 18 and 24 deg East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2744,6-degree TM - CM 27 deg E,Between 24 and 30 deg East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2745,6-degree TM - CM 33 deg E,Between 30 and 36 deg East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2746,6-degree TM - CM 39 deg E,Between 36 and 42 deg East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2747,Russia - 19.5 to 22.5 deg E,Russian Federation - between 19 deg 30 min and 22 deg 30 min East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2748,Russia - 22.5 to 25.5 deg E,Russian Federation - between 22 deg 30 min and 25 deg 30 min East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2749,Russia - 25.5 to 28.5 deg E,Russian Federation - between 25 deg 30 min and 28 deg 30 min East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2750,Russia - 28.5 to 31.5 deg E,Russian Federation - between 28 deg 30 min and 31 deg 30 min East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2751,Russia - 31.5 to 34.5 deg E,Russian Federation - between 31 deg 30 min and 34 deg 30 min East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2752,Russia - 34.5 to 37.5 deg E,Russian Federation - between 34 deg 30 min and 37 deg 30 min East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2753,Russia - 37.5 to 40.5 deg E,Russian Federation - between 37 deg 30 min and 40 deg 30 min East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2754,Russia - 40.5 to 43.5 deg E,Russian Federation - between 40 deg 30 min and 43 deg 30 min East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2755,Russia - 43.5 to 46.5 deg E,Russian Federation - between 43 deg 30 min and 46 deg 30 min East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2756,Russia - 46.5 to 49.5 deg E,Russian Federation - between 46 deg 30 min and 49 deg 30 min East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2757,Russia - 49.5 to 52.5 deg E,Russian Federation - between 49 deg 30 min and 52 deg 30 min East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2758,Russia - 52.5 to 55.5 deg E,Russian Federation - between 52 deg 30 min and 55 deg 30 min East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2759,Russia - 55.5 to 58.5 deg E,Russian Federation - between 55 deg 30 min and 58 deg 30 min East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2760,Russia - 58.5 to 61.5 deg E,Russian Federation - between 58 deg 30 min and 61 deg 30 min East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2761,Russia - 61.5 to 64.5 deg E,Russian Federation - between 61 deg 30 min and 64 deg 30 min East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2762,Russia - 64.5 to 67.5 deg E,Russian Federation - between 64 deg 30 min and 67 deg 30 min East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2763,Russia - 67.5 to 70.5 deg E,Russian Federation - between 67 deg 30 min and 70 deg 30 min East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2764,Russia - 70.5 to 73.5 deg E,Russian Federation - between 70 deg 30 min and 73 deg 30 min East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2765,Russia - 73.5 to 76.5 deg E,Russian Federation - between 73 deg 30 min and 76 deg 30 min East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2766,Russia - 76.5 to 79.5 deg E,Russian Federation - between 76 deg 30 min and 79 deg 30 min East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2767,Russia - 79.5 to 82.5 deg E,Russian Federation - between 79 deg 30 min and 82 deg 30 min East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2768,Russia - 82.5 to 85.5 deg E,Russian Federation - between 82 deg 30 min and 85 deg 30 min East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2769,Russia - 85.5 to 88.5 deg E,Russian Federation - between 85 deg 30 min and 88 deg 30 min East.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2770,Indonesia - Kalimantan NE,Indonesia - northeast Kalimantan.,,,,,EPSG,EPSG,2002-06-22 00:00:00,,0
-2771,Niger - SE,Niger - south east,,,,,EPSG,EPSG,2002-06-28 00:00:00,,0
-2772,Asia - CS63 zone A1,Armenia and Georgia west of 43deg 02min E.,,,,,EPSG,EPSG,2002-06-28 00:00:00,,0
-2773,Asia - CS63 zone A2,Armenia and Georgia between 43 deg 02min and 46 deg 02 min E; Azerbaijan west of 46 deg 02 min E.,,,,,EPSG,EPSG,2002-06-28 00:00:00,,0
-2774,Asia - CS63 zone A3,Armenia and Georgia east of 46 deg 02 min E; Azerbaijan between 46 deg 02min and 49 deg 02 min E.,,,,,EPSG,EPSG,2002-06-28 00:00:00,,0
-2775,Asia - CS63 zone A4,Azerbaijan east of 49 deg 02 min E.,,,,,EPSG,EPSG,2002-06-28 00:00:00,,0
-2776,Asia - CS63 zone K2,Kazakstan between 49 deg 16 min and 52 deg 16 min E.,,,,,EPSG,EPSG,2002-06-28 00:00:00,,0
-2777,Asia - CS63 zone K3,Kazakstan between 52 deg 16 min and 55 deg 16 min E.,,,,,EPSG,EPSG,2002-06-28 00:00:00,,0
-2778,Asia - CS63 zone K4,Kazakstan between 55 deg 16 min and 58 deg 16 min E.,,,,,EPSG,EPSG,2002-06-28 00:00:00,,0
-2779,Portugal - Selvagens,Portugal - Selvagens island (Madeira group).,,,,,EPSG,EPSG,2001-06-05 00:00:00,,0
-2780,Malaysia - East Malaysia - offshore,Malaysia - East Malaysia (Sabah; Sarawak) - offshore.,,,,,EPSG,EPSG,2002-07-13 00:00:00,,0
-2781,Iran - Kharg Island,Islamic Republic of Iran - Kharg Island.,,,,,EPSG,EPSG,2002-07-13 00:00:00,,0
-2782,Iran - Lavan Island and Balal field,Islamic Republic of Iran - Lavan Island and Balal field.,,,,,EPSG,EPSG,2002-07-13 00:00:00,,0
-2783,Iran - South Pars block 2,Islamic Republic of Iran - South Pars field blocks 2 and 3.,,,,,EPSG,EPSG,2002-07-13 00:00:00,,0
-2784,Canada - CSRS,Canada - Alberta; New Brunswick; Nova Scotia; Saskatchewan; Prince Edward Island; and Quebec.,,,,,EPSG,EPSG,2002-07-13 00:00:00,,0
-2785,Libya - Murzuq,Libyan Arab Jamahiriya - Murzuq field,,,,,EPSG,EPSG,2002-07-16 00:00:00,,0
-2786,Libya - Mabruk,Libyan Arab Jamahiriya - Mabruk field,,,,,EPSG,EPSG,2002-07-16 00:00:00,,0
diff --git a/src/tiff/csv/codes.csv b/src/tiff/csv/codes.csv
deleted file mode 100644
index ba81c3c..0000000
--- a/src/tiff/csv/codes.csv
+++ /dev/null
@@ -1,84 +0,0 @@
-"RECORD_ID","TABLE_NAME","TABLE_CONTENTS","CODE_MINIMUM","CODE_MAXIMUM","ALLOCATED_LOW","ALLOCATED_HIGH","REMARKS"
-0.01,Note: EPSG codes reserved range.,,0,32767,,,EPSG reserved code range 0-32766.  Users should allocated codes outside of this range.
-1.0,Alias,Aliases for data in all tables.,1,,1,2020,Autonumbered. Code range also used in other tables.
-2.0,Area,Area of use,1024,32767,1024,2784,Allocated sequentially - codes have no meaning. Code range also used in other tables.
-3.0,Change,Change records,,,,,Allocated sequentially with calendar year.
-4.0,Codes,EPSG codes,,,,,(This table)
-5.0,Coordinate Axis,Coordinate system attributes,,,,,No codes allocated - intersection table using dual key codes of related tables.
-6.0,Coordinate Axis Name,Coordinate system axis names,9900,9999,9901,9928,Allocated sequentially - codes have no meaning.
-7.0,Coordinate Reference System,Coordinate Reference System data,,,,,
-7.1,Coordinate Reference System,      Geographic coordinate reference systems,,,,,
-7.11,Coordinate Reference System,            geogCRS unspecified datum,4000,4099,4001,4047,
-7.12,Coordinate Reference System,            geogCRS non-WGS systems (1),4120,4139,4120,4139,Form ProjCRS 20yy to 39yy.  Range full.
-7.13,Coordinate Reference System,            geogCRS non-WGS systems (2),4140,4199,4140,4199,Added sequentially - codes have no meaning. Range full.
-7.14,Coordinate Reference System,            geogCRS non-WGS systems (3),4200,4319,4200,4319,Form ProjCRS 200yy to 319yy.  Range full.
-7.15,Coordinate Reference System,            geogCRS non-WGS systems (4),4600,4799,4600,4617,Added sequentially - codes have no meaning.
-7.16,Coordinate Reference System,            geogCRS NAD systems overflow,4320,4321,4320,4321,Form ProjCRS 320yy to 321yy.  Range full.
-7.17,Coordinate Reference System,            geogCRS WGS systems,4322,4327,4322,4327,Form ProjCRS 322yy to 327yy.  Range full.
-7.18,Coordinate Reference System,            geogCRS non-Greenwich prime meridian equivalent,4800,4899,4801,4820,Form ProjCRS 20yy to 39yy and 200yy to 319yy as in 6.12 and 6.14.
-7.19,Coordinate Reference System,            geogCRS no Greenwich prime meridian,4900,4999,4901,4904,
-7.3,Coordinate Reference System,      Projected coordinate reference systems,,,,,
-7.31,Coordinate Reference System,            projCRS (1a),2000,3999,2000,3992,Historically allocated from geogCRS 4120-4139. Now being infilled sequentially.
-7.32,Coordinate Reference System,            projCRS (1b),2000,3999,2000,2963,Now being allocated sequentially around codes previously allocated from geogCRS 4120-4139.
-7.35,Coordinate Reference System,            projCRS (2),20000,32766,20004,32766,Historically allocated from geogCRS 4200-4327. Will be infilled sequentially after range 2000-3999 full.
-7.4,Coordinate Reference System,      Vertical coordinate reference systems,,,,,
-7.41,Coordinate Reference System,            using ellipsoidal datum,,,,,Deleted in v3.2
-7.42,Coordinate Reference System,            using geoidal datum,5600,5799,5701,5739,
-7.5,Coordinate Reference System,      Engineering coordinate reference systems,5800,5999,5800,5816,
-7.6,Coordinate Reference System,      Compound coordinate reference systems,7400,7999,7401,7413,
-8.0,Coordinate System,Coordinate System descriptions,,,,,
-8.1,Coordinate System,    Cartesian coordinate systems used in geocentric CRSs,6500,6500,6500,6500,
-8.2,Coordinate System,    Cartesian coordinate systems used in projected CRSs,4400,4599,4400,4532,
-8.3,Coordinate System,    Cartesian coordinate systems used only in Engineering CRSs,6501,6599,,,
-8.4,Coordinate System,    Ellipsoidal and spherical coordinate systems,6400,6449,6401,6404,
-8.5,Coordinate System,    Gravity-related coordinate systems,6450,6499,6497,6499,
-9.0,Coordinate_Operation,Coordinate Operations,,,,,
-9.1,Coordinate_Operation,      Map Projections (Coordinate Conversions),,,,,Codes between 10000 and 19999.
-9.11,Coordinate_Operation,             US State Plane,10000,15999,10001,15917,non-continuous allocation due to semi-heirarchical coding by State.
-9.12,Coordinate_Operation,             global zoned systems,16000,16399,160,163,last two digits indicate zone number
-9.13,Coordinate_Operation,             TM (pseudo UTM) systems NE hem.,16400,16580,16400,16506,systems in the N and E hemispheres.  Digits indicate longitude of origin.
-9.14,Coordinate_Operation,             TM (pseudo UTM) systems SE hem.,16600,16780,16611,16732,systems in the S and E hemispheres.  Digits indicate longitude of origin.
-9.15,Coordinate_Operation,             TM (pseudo UTM) systems SW hem.,16800,16980,,,systems in the S and W hemispheres.  Digits indicate longitude of origin.
-9.16,Coordinate_Operation,             TM (pseudo UTM) systems NW hem.,17000,17180,17001,17054,systems in the N and W hemispheres.  Digits indicate longitude of origin.
-9.17,Coordinate_Operation,             large zoned systems,17200,17999,173,179,last two digits usually indicate zone number
-9.18,Coordinate_Operation,             small zoned systems,18000,18999,1801,1844,last digit indicates zone number
-9.19,Coordinate_Operation,             individual zones,19000,19999,19000,19979,
-9.3,Coordinate_Operation,      Coordinate Transformations,,,,,
-9.31,Coordinate_Operation,             Single-step geodetic transformations,1024,1099,1025,1038,
-9.32,Coordinate_Operation,             Single-step geodetic transformations,1100,1099,1025,1864,
-9.34,Coordinate_Operation,             Concatenated geodetic transformations,8000,8999,8046,8635,
-9.37,Coordinate_Operation,             Vertical offset data,5400,5599,5400,5405,
-10.0,Coordinate_Operation Method,Coordinate Operation methods and required parameter names,,,,,
-10.1,Coordinate_Operation Method,    transformation methods,9600,9699,9601,9636,
-10.2,Coordinate_Operation Method,    reserved for operation methods,9700,9799,,,
-10.3,Coordinate_Operation Method,    conversion (map projection) methods,9800,9899,9801,9828,
-11.0,Coordinate_Operation Parameter,Coordinate Operation parameter names and descriptions,8600,8899,,,
-11.1,Coordinate_Operation Parameter,    Parameters used in transformations,8600,8699,8601,8667,
-11.2,Coordinate_Operation Parameter,    reserved for operation parameters,8700,8799,,,
-11.3,Coordinate_Operation Parameter,    Parameters used in conversions,8880,8899,8801,8831,
-12.0,Coordinate_Operation Parameter Usage,Links parameters with operation methods,,,,,No codes allocated - intersection table using dual key codes of related tables.
-13.0,Coordinate_Operation Parameter Value,Values of transformation and conversion parameters,,,,,No codes allocated - intersection table using triple key codes of related tables.
-14.0,Coordinate_Operation Path,Concatenated transformation steps,,,,,No codes allocated - intersection table using dual key codes of related tables.
-15.1,Datum,Geodetic Datum data,,,,,
-15.11,Datum,    unspecified datum,6000,6099,6001,6047,Form GeogCRS 4000 to 4099.
-15.12,Datum,    WGS systems,6322,6327,6322,6327,Form GeogCRS 4322 to 4327.  Range full.
-15.13,Datum,    NAD systems overflow,6320,6321,6320,6321,Form GeogCRS 4320 to 4321.  Range full.
-15.14,Datum,    non-WGS systems (1),6120,6139,6120,6139,Form GeogCRS 4120 to 4139.  Range full.
-15.15,Datum,    non-WGS systems (2),6140,6199,6140,6199,Form GeogCRS 4140 to 4199.  Range full.
-15.16,Datum,    non-WGS systems (3),6200,6319,6200,6319,Form GeogCRS 4200 to 4319.  Range full.
-15.17,Datum,    non-WGS systems (4),6600,6799,6600,6617,Form GeogCRS 4600 to 4799.
-15.18,Datum,    non-Greenwich prime meridian equivalent,6800,6899,6801,6820,Form GeogCRS 4800 to 4899.
-15.19,Datum,    no Greenwich prime meridian,6900,6999,6901,6904,Form GeogCRS 4900 to 4999.
-15.3,Datum,Vertical datum data,,,,,
-15.31,Datum,    ellipsoidal datum,,,,,Deleted in v3.2
-15.32,Datum,    geoidal datum,5000,5199,5100,5137,
-15.4,Datum,Engineering Datum data,9300,9599,9300,9313,
-16.0,Deprecation,Deprecated records reasons and replacement trail,1,,2,426,Autonumbered. Code range also used in other tables.
-17.0,Ellipsoid,Ellipsoid data,7000,7299,7001,7049,
-18.0,Naming System,Naming System names,7300,7399,7300,7311,
-19.0,Prime Meridian,Prime Meridian data,8900,8999,8901,8913,
-20.0,Unit of Measure,,,,,,
-20.1,Unit of Measure,Angle unit data,9100,9199,9101,9115,
-20.2,Unit of Measure,Length unit data,9000,9099,9001,9094,
-20.3,Unit of Measure,Scale unit data,9200,9299,9201,9211,
-21.0,Version History,,,,,,
diff --git a/src/tiff/csv/compd_cs.c b/src/tiff/csv/compd_cs.c
deleted file mode 100644
index 7c525a5..0000000
--- a/src/tiff/csv/compd_cs.c
+++ /dev/null
@@ -1,12 +0,0 @@
-#include "defs.h"
-datafile_rows_t compd_cs_row_1[] = {"COMPOUNDCS_CODE","COMPOUNDCS_EPSG_NAME","COMPOUNDCS_EPSG_ABBR","COMPOUNDCS_USER_NAME","DESCRIPTION","AREA_OF_USE","HORIZCS_CODE","VERTCS_CODE","REVISION_DATE","INFORMATION_SOURCE","DATA_SOURCE","REMARKS","CHANGE_ID",NULL};
-datafile_rows_t compd_cs_row_2[] = {"7400","NTF (Paris) + NGF IGN69","","","","France - mainland.","4807","5720","1997-11-13 00:00:00","","EPSG","","",NULL};
-datafile_rows_t compd_cs_row_3[] = {"7401","NTF (Paris) / France II + NGF Lallemand","NTF / France II + Lalle","","","France - mainland.","27582","5719","1997-11-13 00:00:00","","EPSG","","",NULL};
-datafile_rows_t compd_cs_row_4[] = {"7402","NTF (Paris) / France II + NGF IGN69","NTF / France II + IGN69","","","France - mainland.","27582","5720","1997-11-13 00:00:00","","EPSG","","",NULL};
-datafile_rows_t compd_cs_row_5[] = {"7403","NTF (Paris) / France III + NGF IGN69","NTF / France III + IGN69","","","France south of 50.5 grads (45 deg 27 min) North.","27583","5720","1997-11-13 00:00:00","","EPSG","","",NULL};
-datafile_rows_t compd_cs_row_6[] = {"7404","RT90 + RH70","","","","Sweden.","4124","5718","1997-11-13 00:00:00","National Land Survey of Sweden","EPSG","When combined with geoid model RN92 forms geographic 3D coordinate system RR92.","",NULL};
-datafile_rows_t compd_cs_row_7[] = {"7405","OSGB36 / British National Grid + ODN","GB National Grid + ODN","","","United Kingdom (UK) - Great Britain.","27700","5701","1997-11-13 00:00:00","","EPSG","","",NULL};
-datafile_rows_t compd_cs_row_8[] = {"7406","NAD27 + NGVD29","","","","United States (USA).","4267","5702","1997-11-13 00:00:00","","EPSG","","",NULL};
-datafile_rows_t compd_cs_row_9[] = {"7407","NAD27 / Texas North + NGVD29","NAD27 / TX_N + NGVD29","","","United States (USA) - Texas.","32037","5702","1997-11-13 00:00:00","","EPSG","","",NULL};
-
-datafile_rows_t *compd_cs_rows[] = {compd_cs_row_1,compd_cs_row_2,compd_cs_row_3,compd_cs_row_4,compd_cs_row_5,compd_cs_row_6,compd_cs_row_7,compd_cs_row_8,compd_cs_row_9,NULL};
diff --git a/src/tiff/csv/compd_cs.csv b/src/tiff/csv/compd_cs.csv
deleted file mode 100644
index ff9e0a2..0000000
--- a/src/tiff/csv/compd_cs.csv
+++ /dev/null
@@ -1,9 +0,0 @@
-"COMPOUNDCS_CODE","COMPOUNDCS_EPSG_NAME","COMPOUNDCS_EPSG_ABBR","COMPOUNDCS_USER_NAME","DESCRIPTION","AREA_OF_USE","HORIZCS_CODE","VERTCS_CODE","REVISION_DATE","INFORMATION_SOURCE","DATA_SOURCE","REMARKS","CHANGE_ID"
-7400,NTF (Paris) + NGF IGN69,,,,France - mainland.,4807,5720,1997-11-13 00:00:00,,EPSG,,
-7401,NTF (Paris) / France II + NGF Lallemand,NTF / France II + Lalle,,,France - mainland.,27582,5719,1997-11-13 00:00:00,,EPSG,,
-7402,NTF (Paris) / France II + NGF IGN69,NTF / France II + IGN69,,,France - mainland.,27582,5720,1997-11-13 00:00:00,,EPSG,,
-7403,NTF (Paris) / France III + NGF IGN69,NTF / France III + IGN69,,,France south of 50.5 grads (45 deg 27 min) North.,27583,5720,1997-11-13 00:00:00,,EPSG,,
-7404,RT90 + RH70,,,,Sweden.,4124,5718,1997-11-13 00:00:00,National Land Survey of Sweden,EPSG,When combined with geoid model RN92 forms geographic 3D coordinate system RR92.,
-7405,OSGB36 / British National Grid + ODN,GB National Grid + ODN,,,United Kingdom (UK) - Great Britain.,27700,5701,1997-11-13 00:00:00,,EPSG,,
-7406,NAD27 + NGVD29,,,,United States (USA).,4267,5702,1997-11-13 00:00:00,,EPSG,,
-7407,NAD27 / Texas North + NGVD29,NAD27 / TX_N + NGVD29,,,United States (USA) - Texas.,32037,5702,1997-11-13 00:00:00,,EPSG,,
diff --git a/src/tiff/csv/coordinate_axis.csv b/src/tiff/csv/coordinate_axis.csv
deleted file mode 100644
index f54287a..0000000
--- a/src/tiff/csv/coordinate_axis.csv
+++ /dev/null
@@ -1,75 +0,0 @@
-"COORD_SYS_CODE","COORD_AXIS_NAME_CODE","COORD_AXIS_ORIENTATION","COORD_AXIS_ABBREVIATION","UOM_CODE","ORDER"
-4400,9906,east,E,9001,1
-4400,9907,north,N,9001,2
-4401,9906,east,E,9062,1
-4401,9907,north,N,9062,2
-4402,9906,east,E,9042,1
-4402,9907,north,N,9042,2
-4403,9906,east,E,9005,1
-4403,9907,north,N,9005,2
-4404,9906,east,E,9094,1
-4404,9907,north,N,9094,2
-4405,9906,east,E,9041,1
-4405,9907,north,N,9041,2
-4406,9906,east,X,9036,1
-4406,9907,north,Y,9036,2
-4407,9906,east,E,9039,1
-4407,9907,north,N,9039,2
-4408,9906,east,E,9084,1
-4408,9907,north,N,9084,2
-4409,9906,east,E,9040,1
-4409,9907,north,N,9040,2
-4495,9906,east,X,9002,1
-4495,9907,north,Y,9002,2
-4496,9906,east,E(X),9001,1
-4496,9907,north,N(Y),9001,2
-4497,9906,east,X,9003,1
-4497,9907,north,Y,9003,2
-4498,9906,east,Y,9001,1
-4498,9907,north,X,9001,2
-4499,9906,east,X,9001,1
-4499,9907,north,Y,9001,2
-4500,9906,east,E,9001,2
-4500,9907,north,N,9001,1
-4501,9907,north,N,9001,1
-4501,9908,west,E,9001,2
-4530,9906,east,Y,9001,2
-4530,9907,north,X,9001,1
-4531,9906,east,y,9001,2
-4531,9907,north,x,9001,1
-4532,9906,east,X,9001,2
-4532,9907,north,Y,9001,1
-6401,9901,north,Lat,9108,1
-6401,9902,east,Long,9108,2
-6401,9903,up,h,9001,3
-6402,9901,north,Lat,9108,1
-6402,9902,east,Long,9108,2
-6403,9901,north,Lat,9105,1
-6403,9902,east,Long,9105,2
-6404,9926,north,lat,9102,1
-6404,9927,east,long,9102,2
-6404,9928,up,R,9001,3
-6497,9904,up,H,9003,1
-6498,9905,down,D,9001,1
-6499,9904,up,H,9001,1
-6500,9910,Geocentre > equator/PM,X,9001,1
-6500,9911,Geocentre > equator/90dE,Y,9001,2
-6500,9912,Geocentre > north pole,Z,9001,3
-6501,9908,west,Y,9001,2
-6501,9909,south,X,9001,1
-6502,9908,west,Y,9031,1
-6502,9909,south,X,9031,2
-6503,9908,west,Y,9001,1
-6503,9909,south,X,9001,2
-6504,9918,north-east,e,9001,2
-6504,9919,north-west,n,9001,1
-6505,9913,north-west,n,9001,1
-6505,9914,north-east,e,9001,2
-6506,9913,east-south-east,I,9205,1
-6506,9914,north-north-east,J,9204,2
-6507,9913,north,X,9001,1
-6507,9914,west,Y,9001,2
-6508,9920,east south east,I,9208,2
-6508,9921,north north east,J,9209,1
-6509,9908,west,M,9001,2
-6509,9909,south,P,9001,1
diff --git a/src/tiff/csv/coordinate_axis_name.csv b/src/tiff/csv/coordinate_axis_name.csv
deleted file mode 100644
index 0fe5d24..0000000
--- a/src/tiff/csv/coordinate_axis_name.csv
+++ /dev/null
@@ -1,29 +0,0 @@
-"COORD_AXIS_NAME_CODE","COORD_AXIS_NAME","DESCRIPTION","REMARKS","INFORMATION_SOURCE","DATA_SOURCE","REVISION_DATE","CHANGE_ID","DEPRECATED"
-9901,Geodetic latitude,"Angle from the equatorial plane to the perpendicular to the ellipsoid through a given point, northwards usually treated as positive.",Used in geographic 2D and geographic 3D coordinate systems.,EPSG,EPSG,2000-03-07 00:00:00,,0
-9902,Geodetic longitude,"Angle from the prime meridian plane to the meridian plane passing through the given point, eastwards usually treated as positive.",Used in geographic 2D and geographic 3D coordinate systems.,EPSG,EPSG,2000-03-07 00:00:00,,0
-9903,Ellipsoidal height,Distance of a point from the ellipsoid measured along the perpendicular from the ellipsoid to this point.  Positive if upwards or outside of the ellipsoid.,"Used only as part of a geographic 3D coordinate system, never on its own.",EPSG based on ISO 19111,EPSG,2000-03-07 00:00:00,,0
-9904,Gravity-related height,"Height influenced by the Earth's gravity field.  In particular, orthometric height or normal height which are both approximations of the distance of a point above sea level. Positive upwards.",Used in a 1D vertical coordinate system.,"ISO 19111 ""Geographical Information - Spatial Referencing by Coordinates"".",EPSG,2000-03-07 00:00:00,,0
-9905,Gravity-related depth,"Depth influenced by the Earth's gravity field, positive downwards.","Similar to gravity-related height, but with the positive increments in the opposite direction.",EPSG,EPSG,2000-03-07 00:00:00,,0
-9906,Easting,East pointing axis used in 2D projected coordinate systems.,,EPSG,EPSG,2000-03-07 00:00:00,,0
-9907,Northing,North pointing axis used in 2D projected coordinate systems.,,EPSG,EPSG,2000-03-07 00:00:00,,0
-9908,Westing,West pointing axis used in 2D projected coordinate systems (e.g. south oriented transverse Mercator),,EPSG,EPSG,2000-03-07 00:00:00,,0
-9909,Southing,South pointing axis used in 2D projected coordinate systems (e.g. south oriented transverse Mercator),,EPSG,EPSG,2000-03-07 00:00:00,,0
-9910,Geocentric X,"First axis of a right-handed earth centered 3D cartesian coordinate system; lies in the zero-longitude plane, such that a vector pointing in the direction of the positive X will have a longitude of zero.",,EPSG,EPSG,2000-03-07 00:00:00,,0
-9911,Geocentric Y,"Second axis of a right-handed earth centered 3D cartesian coordinate system; perpendicular to the zero-longitude plane, pointing eastward",,EPSG,EPSG,2000-03-07 00:00:00,,0
-9912,Geocentric Z,"Third axis of a right-handed earth centered 3D coordinate system; perpendicular to both X and Y, such that it completes a right-handed coordinate system, the Z-axis is approximately parallel to the earth's rotation axis, positive towards the north pole.",,EPSG,EPSG,2000-03-07 00:00:00,,0
-9913,First local axis,First axis of any local coordinate system.,First and second local coordinate axes are assumed to be horizontal and may be supplemented by 'local height' or 'local depth' to form a local 3D coordinate system.,EPSG,EPSG,2000-03-07 00:00:00,,0
-9914,Second local axis,Second axis of any local coordinate system.,,EPSG,EPSG,2000-03-07 00:00:00,,0
-9915,Third local axis,Third axis of any local coordinate system.,"If the local coordinate system is 3-dimensional, then the first and second local coordinate axes shall be horizontal and the third axis vertical.",EPSG,EPSG,2000-06-22 00:00:00,,0
-9916,Local height,"Height influenced by the Earth's gravity field, positive upwards.",Differs from gravity-related height in having an origin offset from sea level.,EPSG,EPSG,2000-03-07 00:00:00,,0
-9917,Local depth,"Depth influenced by the Earth's gravity field, positive downwards.","Similar to local height, but with the positive increments in the opposite direction.",EPSG,EPSG,2000-03-07 00:00:00,,0
-9918,Plant East,An axis of a local engineering grid 2D or 3D coordinate system.  Plant East is 90 degrees clockwise from the Plant North axis when viewed from above the plane containing the two axes.,Not necessarily orientated to geographical east.,EPSG,EPSG,2000-06-23 00:00:00,,0
-9919,Plant North,An axis of a local engineering grid 2D or 3D coordinate system.  Plant North is 90 degrees counter-clockwise from the Plant East axis when viewed from above the plane containing the two axes.,Not necessarily orientated to geographical north.,EPSG,EPSG,2000-06-23 00:00:00,,0
-9920,Bin grid I,First axis of seismic bin grid;  positive I is 90 degrees clockwise from positive J-axis when viewed from above the plane containing the two axes.,,EPSG,EPSG,2000-03-07 00:00:00,,0
-9921,Bin grid J,Second axis of seismic bin grid;  positive J is 90 degrees counter-clockwise from positive I-axis when viewed from above the plane containing the two axes.,,EPSG,EPSG,2000-03-07 00:00:00,,0
-9922,Inline,First axis of a seismic bingrid.,"Inline is an ambiguous term, varying by usage.",EPSG,EPSG,2000-03-07 00:00:00,,0
-9923,Crossline,Second axis of a seismic bingrid.,"Crossline is an ambiguous term, varying by usage.",EPSG,EPSG,2000-03-07 00:00:00,,0
-9924,Platform East,An axis of an offshore platform engineering grid 2D or 3D coordinate system.  Platform East is 90 degrees clockwise from the Platform North axis when viewed from above the plane containing the two axes.,Not necessarily orientated to geographical east.,EPSG,EPSG,2000-06-23 00:00:00,,0
-9925,Platform North,An axis of an offshore platform engineering grid 2D or 3D coordinate system.  Platform North is 90 degrees counter-clockwise from the Platform East axis when viewed from above the plane containing the two axes.,Not necessarily orientated to geographical east.,EPSG,EPSG,2000-06-23 00:00:00,,0
-9926,Spherical latitude,"Angle from the equatorial plane to the geocentric point vector, northwards usually treated as positive.",,Open GIS Consortium,EPSG,2002-02-12 00:00:00,,0
-9927,Spherical longitude,"Angle from the prime meridian plane to the meridian plane passing through a point, eastwards usually treated as positive.",,Open GIS Consortium,EPSG,2002-02-12 00:00:00,,0
-9928,Geocentric radius,The distance from the (geocentric) coordinate system origin to a point. The third axis of a spherical coordinate system.,Used to avoid the singularity when the two angles in a 3D polar coordinate system lie in the same plane.,Open GIS Consortium,EPSG,2002-02-12 00:00:00,,0
diff --git a/src/tiff/csv/coordinate_operation.csv b/src/tiff/csv/coordinate_operation.csv
deleted file mode 100644
index 7e53fc0..0000000
--- a/src/tiff/csv/coordinate_operation.csv
+++ /dev/null
@@ -1,2020 +0,0 @@
-"COORD_OP_CODE","COORD_OP_NAME","COORD_OP_TYPE","SOURCE_CRS_CODE","TARGET_CRS_CODE","COORD_TFM_VERSION","COORD_OP_VARIANT","AREA_OF_USE_CODE","COORD_OP_SCOPE","COORD_OP_METHOD_CODE","UOM_CODE_SOURCE_OFFSETS","UOM_CODE_TARGET_OFFSETS","REMARKS","INFORMATION_SOURCE","DATA_SOURCE","REVISION_DATE","CHANGE_ID","SHOW_OPERATION","DEPRECATED"
-1025,ED50 to ED87 (1),transformation,4230,4231,5Nat-NSea-90,1,2330,?,9630,9102,9102,Latitude differences from ED50 to ED87 in decimal degrees given by coefficients A0 through A14 where m=(latitude - 55) degrees and n=longitude in decimal degrees.  Longitude differences given through coefficients B0 through B14.,Norwegian Mapping Authority publication 1990:1,EPSG,2002-06-22 00:00:00,99.74  2000.55 2002.40,1,0
-1026,Madrid 1870 (Madrid) to ED50 (1),transformation,4903,4230,IGB-Esp,1,2366,?,9617,,,It is preferable to use whichever of either Madrid 1870 (Madrid) to ED50 (2) (code 1002) or Madrid 1870 (Madrid) to ED50 (3) (code 1003) is applicable to the area.,Institut de Geomatica; Barcelona,EPSG,2000-03-07 00:00:00,99.82  99.74,1,0
-1027,Madrid 1870 (Madrid) to ED50 (2),transformation,4903,4230,IGB-Esp N,2,2367,?,9617,,,Use in preference to Madrid 1870 (Madrid) to ED50 (1) (code 1001).,Institut de Geomatica; Barcelona,EPSG,2000-03-07 00:00:00,99.82  99.74,1,0
-1028,Madrid 1870 (Madrid) to ED50 (3),transformation,4903,4230,IGB-Esp S,3,2368,?,9617,,,Use in preference to Madrid 1870 (Madrid) to ED50 (1) (code 1001).,Institut de Geomatica; Barcelona,EPSG,2000-03-07 00:00:00,99.82  99.74,1,0
-1029,Amersfoort / RD New to ED50 / UTM zone 31N (1),transformation,28992,23031,NCG-Nld,1,1172,?,9632,9001,9001,For reverse transformation see ED50 / UTM 31N to Amersfoort / RD New (1) (code 1030).,"Nederlandse Commissie voor Geodesie publication 30; ""Globale en Lokale Geodetische Systemen""; G. Strang van Hees.",EPSG,2000-03-07 00:00:00,,1,0
-1030,ED50 / UTM zone 31N to Amersfoort / RD New (1),transformation,23031,28992,NCG-Nld,1,1172,?,9632,9001,9001,For reverse transformation see Amersfoort / RD New to ED50 / UTM zone 31 (1) (code 1029).,"Nederlandse Commissie voor Geodesie publication 30; ""Globale en Lokale Geodetische Systemen""; G. Strang van Hees.",EPSG,2000-03-07 00:00:00,,1,0
-1031,Amersfoort / RD New to ED50 / UTM zone 31N (2),transformation,28992,23031,NAM-Nld,2,1172,Oil exploration.,9632,9001,9001,Used by NAM.  For reverse transformation see ED50 / UTM zone 31N to Amersfoort / RD New (2) (code 1032).,Shell / NAM,EPSG,2000-03-07 00:00:00,,1,0
-1032,ED50 / UTM zone 31N to Amersfoort / RD New (2),transformation,23031,28992,NAM-Nld,2,1172,Oil exploration.,9632,9001,9001,Used by NAM.  For reverse transformation see Amersfoort / RD New to ED50 / UTM zone 31 (2) (code 1031).,Shell / NAM,EPSG,2000-03-07 00:00:00,,1,0
-1033,Belge 72 / Lambert to ED50 / UTM zone 31N (1),transformation,31300,23031,NCG-Bel,1,1044,?,9631,9001,9001,For reverse transformation see ED50 / UTM 31N to Belge 72 / Lambert (code 1034).,"Nederlandse Commissie voor Geodesie publication 30; ""Globale en Lokale Geodetische Systemen""; G. Strang van Hees.",EPSG,2000-03-07 00:00:00,,1,0
-1034,ED50 / UTM zone 31N to Belge 72 / Lambert (1),transformation,23031,31300,NCG-Bel,1,1044,?,9631,9001,9001,For reverse transformation see Belge 72 / Lambert to ED50 / UTM 31N (code 1033).,"Nederlandse Commissie voor Geodesie publication 30; ""Globale en Lokale Geodetische Systemen""; G. Strang van Hees.",EPSG,2000-03-07 00:00:00,,1,0
-1035,Astra Minas to Campo Inchauspe / Argentina 2,transformation,5800,22192,IHS-Arg ComRiv,1,1265,Oil exploration.,9621,,,,IHS Energy,EPSG,2000-06-23 00:00:00,,1,0
-1036,OSGB 1936 / British National Grid to ETRS89 (1),transformation,27700,4258,OSGB-Gbr,1,1264,Accuracy 0.2m at 67% confidence level.,9633,,,May be taken as approximate transformation OSGB 1936 / British National Grid to WGS 84 - see code 1681.,http://www.gps.gov.uk/gpssurveying.asp,EPSG,2000-10-19 00:00:00,,1,0
-1037,Amersfoort / RD New to ED50 / TM 5 NE (1),transformation,28992,23095,NAM-Nld,1,1630,Oil exploration.,9632,9001,9001,Used by NAM.  For reverse transformation see ED50 / TM 5 NE to Amersfoort / RD New (1) (code 1038).,Shell / NAM,EPSG,2002-07-13 00:00:00,,1,0
-1038,ED50 / TM 5 NE to Amersfoort / RD New (1),transformation,23095,28992,NAM-Nld,2,1630,Oil exploration.,9632,9001,9001,Used by NAM.  For reverse transformation see Amersfoort / RD New to ED50 / TM 5 NE (1) (code 1037).,Shell / NAM,EPSG,2002-07-13 00:00:00,,1,0
-1100,Adindan to WGS 84 (1),transformation,4201,4326,DMA-Eth Sud,1,1271,For military purposes only. Accuracy 5m in each axis.,9603,,,Derived at 22 stations.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1101,Adindan to WGS 84 (2),transformation,4201,4326,DMA-Bfa,2,1057,For military purposes.  Accuracy 25m in each axis.,9603,,,"Derived at 1 station connected to the Adindan network through the 1968-69 12th parallel traverse. Note: Adindan datum is used in Ethiopia and Sudan, not Burkino Faso.",U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,2002-06-22 00:00:00,2002.38,1,0
-1102,Adindan to WGS 84 (3),transformation,4201,4326,DMA-Cmr,3,1060,For military purposes.  Accuracy 25m in each axis.,9603,,,"Derived at 1 station connected to the Adindan network through the 1968-69 12th parallel traverse. Note: Adindan datum is used in Ethiopia and Sudan, not Cameroon.",U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,2002-06-22 00:00:00,2002.38,1,0
-1103,Adindan to WGS 84 (4),transformation,4201,4326,DMA-Eth,4,1091,For military purposes.  Accuracy 3m in each axis.,9603,,,Derived at 8 stations.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1104,Adindan to WGS 84 (5),transformation,4201,4326,DMA-Mli,5,1153,For military purposes.  Accuracy 25m in each axis.,9603,,,"Derived at 1 station connected to the Adindan network through the 1968-69 12th parallel traverse. Note: Adindan datum is used in Ethiopia and Sudan, not Mali.",U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,2002-06-22 00:00:00,2002.38,1,0
-1105,Adindan to WGS 84 (6),transformation,4201,4326,DMA-Sen,6,1207,For military purposes.  Accuracy 25m in each axis.,9603,,,"Derived at 2 stations connected to the Adindan network through the 1968-69 12th parallel traverse. Note: Adindan datum is used in Ethiopia and Sudan, not Senegal.",U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,2002-06-22 00:00:00,2002.38,1,0
-1106,Adindan to WGS 84 (7),transformation,4201,4326,DMA-Sud,7,1221,"For military purposes.  Accuracy 3m, 5m and 3m in X, Y and Z axes.",9603,,,Derived at 14 stations.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1107,Afgooye to WGS 84 (1),transformation,4205,4326,DMA-Som,1,1214,For military purposes.  Accuracy 25m in each axis.,9603,,,Derived at 1 station.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1108,AGD66 to WGS 84 (1),transformation,4202,4326,DMA-Aus,1,1036,For military purposes only.  Accuracy 3m in each axis.,9603,,,Derived at 105 stations.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1109,AGD84 to WGS 84 (1),transformation,4203,4326,DMA-Aus,1,1036,For military purposes only.  Accuracy 2m in each axis.,9603,,,Derived at 90 stations.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1110,Ain el Abd to WGS 84 (1),transformation,4204,4326,DMA-Bhr,1,1040,For military purposes.  Accuracy 25m in each axis.,9603,,,Derived at 2 stations.,U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.,EPSG,1997-04-11 00:00:00,97.06,1,0
-1111,Ain el Abd to WGS 84 (2),transformation,4204,4326,DMA-Sau,2,1206,For military purposes.  Accuracy 10m in each axis.,9603,,,Derived at 9 stations.,U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.,EPSG,1996-10-18 00:00:00,,1,0
-1112,Amersfoort to WGS 84 (1),transformation,4289,4326,NCG-Nld 93,1,1172,?,9606,,,Superseded by Amersfoort to ETRS89 (2) (code 1751) and Amersfoort to WGS 84 (2) (code 1672).,Nederlandse Commissie voor Geodesie publication 30; 1993.,EPSG,1997-04-11 00:00:00,97.07,1,0
-1113,Arc 1950 to WGS 84 (1),transformation,4209,4326,DMA-mean,1,2312,"For military purposes only.  Accuracy 20m, 33m and 20m in X, Y and Z axes.",9603,,,Derived at 41 stations.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1114,Arc 1950 to WGS 84 (2),transformation,4209,4326,DMA-Bwa,2,1051,"For military purposes.  Accuracy 3m, 5m and 3m in X, Y and Z axes.",9603,,,Derived at 9 stations.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1115,Arc 1950 to WGS 84 (3),transformation,4209,4326,DMA-Bdi,3,1058,For military purposes.  Accuracy 20m in each axis.,9603,,,Derived at 3 stations.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1116,Arc 1950 to WGS 84 (4),transformation,4209,4326,DMA-Lso,4,1141,"For military purposes.  Accuracy 3m, 3m and 8m in X, Y and Z axes.",9603,,,Derived at 5 stations.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1117,Arc 1950 to WGS 84 (5),transformation,4209,4326,DMA-Mwi,5,1150,"For military purposes.  Accuracy 9m, 24m and 8m in X, Y and Z axes.",9603,,,Derived at 6 stations.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1118,Arc 1950 to WGS 84 (6),transformation,4209,4326,DMA-Swz,6,1224,For military purposes.  Accuracy 15m in each axis.,9603,,,Derived at 4 stations.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1119,Arc 1950 to WGS 84 (7),transformation,4209,4326,DMA-Cod,7,1259,For military purposes.  Accuracy 25m in each axis.,9603,,,Derived at 2 stations.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1120,Arc 1950 to WGS 84 (8),transformation,4209,4326,DMA-Zmb,8,1260,"For military purposes.  Accuracy 21m, 21m and 27m in X, Y and Z axes.",9603,,,Derived at 5 stations.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1121,Arc 1950 to WGS 84 (9),transformation,4209,4326,DMA-Zwe,9,1261,"For military purposes.  Accuracy 5m, 8m and 11m in X, Y and Z axes.",9603,,,Derived at 10 stations.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1122,Arc 1960 to WGS 84 (1),transformation,4210,4326,DMA-Ken Tza,1,2311,For military purposes only.  Accuracy 20m in each axis.,9603,,,Derived at 25 stations.,U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.,EPSG,1996-10-18 00:00:00,,1,0
-1123,Batavia to WGS 84 (1),transformation,4211,4326,DMA-Idn Sumatra,1,1355,For military purposes.  Accuracy 3m in each axis.,9603,,,Note: The area of use cited for this transformation (Sumatra) is not consistent with the area of use (Java) for the Batavia (Genuk) coordinate system. Derived at 5 stations.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1124,Bermuda 1957 to WGS 84 (1),transformation,4216,4326,DMA-Bmu,1,1047,For military purposes.  Accuracy 20m in each axis.,9603,,,Derived at 3 stations.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1125,Bogota 1975 to WGS 84 (1),transformation,4218,4326,DMA-Col,1,1070,"For military purposes.  Accuracy 6m, 5m and 6m in X, Y and Z axes.",9603,,,Derived in 1987 at 7 stations.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1126,Bukit Rimpah to WGS 84 (1),transformation,4219,4326,DMA-Idn BBI,1,1287,For military purposes.,9603,,,Accuracy estimates unavailable.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,2002-06-22 00:00:00,2002.151,1,0
-1127,Campo Inchauspe to WGS 84 (1),transformation,4221,4326,DMA-Arg,1,1033,For military purposes.  Accuracy 5m in each axis.,9603,,,Derived at 20 stations.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1128,Cape to WGS 84 (1),transformation,4222,4326,DMA-Zaf,1,1215,"For military purposes.  Accuracy 3m, 6m and 6m in X, Y and Z axes.",9603,,,Derived at 5 stations.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1129,Cape to WGS 84 (2),transformation,4222,4326,DSLI-Zaf,2,1215,?,9603,,,Parameter values are from Cape to Hartebeesthoek94 (1) (code 1504) assuming that Hartebeesthoek94 and WGS 84 are equivalent within the accuracy of the transformation.,"Private Communication, Directorate of Surveys and Land Information, Cape Town.",EPSG,1996-10-18 00:00:00,,1,0
-1130,Carthage to WGS 84 (1),transformation,4223,4326,DMA-Tun,1,1236,"For military purposes.  Accuracy 6m, 9m and 8m in X, Y and Z axes.",9603,,,Derived at 5 stations.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1131,Chua to WGS 84 (1),transformation,4224,4326,DMA-Pry,1,1188,"For military purposes.  Accuracy 6m, 9m and 5m in X, Y and Z axes.",9603,,,Derived at 6 stations.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1132,Corrego Alegre to WGS 84 (1),transformation,4225,4326,DMA-Bra,1,1053,"For military purposes.  Accuracy 5m, 3m and 5m in X, Y and Z axes.",9603,,,Derived at 17 stations.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1133,ED50 to WGS 84 (1),transformation,4230,4326,DMA-mean,1,2420,"For military purposes only.  Accuracy 3m, 8m and 5m in X, Y and Z axes.",9603,,,Derived at 85 stations.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,97.02,1,0
-1134,ED50 to WGS 84 (2),transformation,4230,4326,DMA-cenEur,2,2421,For military purposes only.  Accuracy 3m each axis.,9603,,,Derived at 52 stations.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1135,ED50 to WGS 84 (3),transformation,4230,4326,DMA-midEast,3,2345,For military purposes only.,9603,,,Accuracy estimate not available.,U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.,EPSG,1996-10-18 00:00:00,,1,0
-1136,ED50 to WGS 84 (4),transformation,4230,4326,DMA-Cyp,4,1078,For military purposes only.  Accuracy 15m in each axis.,9603,,,Derived at 4 stations.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1137,ED50 to WGS 84 (5),transformation,4230,4326,DMA-Egy,5,1086,"For military purposes.  Accuracy 6m, 8m and 8m in X, Y and Z axes.",9603,,,Derived at 14 stations.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1138,ED50 to WGS 84 (6),transformation,4230,4326,DMA-Irl Gbr,6,2343,For military purposes only.  Accuracy 3m in each axis.,9603,,,Derived at 40 stations.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1139,ED50 to WGS 84 (7),transformation,4230,4326,DMA-Fin Nor,7,2344,"For military purposes.  Accuracy 3m, 5m and 3m in X, Y and Z axes.",9603,,,Derived at 20 stations.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1140,ED50 to WGS 84 (8),transformation,4230,4326,DMA-Grc,8,1106,For military purposes only.  Accuracy 25m in each axis.,9603,,,Derived at 2 stations.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1141,ED50(ED77) to WGS 84 (2),transformation,4154,4326,DMA-Irn,2,1123,"For military purposes.  Accuracy 9m, 12m and 11m in X, Y and Z axes.",9603,,,Given by DMA as from ED50.  EPSG interpret that as ED50(ED77) in Iran. Derived at 27 stations.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,2000-03-07 00:00:00,2000.06,1,0
-1142,ED50 to WGS 84 (10),transformation,4230,4326,DMA-Ita Sard,10,2339,For military purposes only.  Accuracy 25m in each axis.,9603,,,Derived at 2 stations.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1143,ED50 to WGS 84 (11),transformation,4230,4326,DMA-Ita Sic,11,2340,For military purposes only.  Accuracy 20m in each axis.,9603,,,Derived at 3 stations.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1144,ED50 to WGS 84 (12),transformation,4230,4326,DMA-Mlt,12,1154,For military purposes only.  Accuracy 25m in each axis.,9603,,,Derived at 1 station.,U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.,EPSG,1996-10-18 00:00:00,,1,0
-1145,ED50 to WGS 84 (13),transformation,4230,4326,DMA-Prt Esp,13,2338,"For military purposes only.  Accuracy 5m, 6m and 3m in X, Y and Z axes.",9603,,,Derived at 18 stations.,U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.,EPSG,1996-10-18 00:00:00,,1,0
-1146,ED87 to WGS 84 (1),transformation,4231,4326,5Nat-NSea-90,1,2330,?,9606,,,,"Norwegian Mapping Authority publication 1990:1 and note of 13-Feb-1991 ""Om Transformasjon mellom Geodetiske Datum i Norge""",EPSG,1997-04-11 00:00:00,97.03  97.04,1,0
-1147,ED50 to ED87 (2),transformation,4230,4231,NMA-Nor N65,2,2331,Geodetic purposes.,9606,,,,"Norwegian Mapping Authority note of 13-Feb-1991 ""Om Transformasjon mellom Geodetiske Datum i Norge""",EPSG,1997-04-11 00:00:00,97.04,1,0
-1148,Egypt 1907 to WGS 84 (1),transformation,4229,4326,DMA-Egy,1,1086,"For military purposes.  Accuracy 3m, 6m and 8m in X, Y and Z axes.",9603,,,Derived at 14 stations.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1149,ETRS89 to WGS 84 (1),transformation,4258,4326,EPSG-eur,1,2420,ETRS89 is a realisation of WGS 84 coincident to within 1.5 metres.  This transformation has an accuracy equal to the coincidence figure.,9603,,,,EPSG,EPSG,2000-10-19 00:00:00,97.24  2000.72,1,0
-1150,GDA94 to WGS 84 (1),transformation,4283,4326,EPSG-Aus,1,1036,GDA94 is a realisation of WGS 84 coincident to within 1.5 metres.  This transformation has an accuracy equal to the coincidence figure.,9603,,,,EPSG,EPSG,1996-10-18 00:00:00,,1,0
-1151,NZGD49 to WGS 84 (1),transformation,4272,4326,DMA-Nzl,1,1175,"For military purposes only.  Accuracy 5m, 3m and 5m in X, Y and Z axes.",9603,,,Derived at 14 stations.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1152,Hu Tzu Shan to WGS 84 (1),transformation,4236,4326,DMA-Twn,1,1228,For military purposes.  Accuracy 15m in each axis.,9603,,,Derived at 4 stations.,U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.,EPSG,1996-10-18 00:00:00,,1,0
-1153,Indian 1954 to WGS 84 (1),transformation,4239,4326,DMA-Tha,1,1231,"For military purposes.  Accuracy 15m, 6m and 12m in X, Y and Z axes.",9603,,,Derived at 11 stations.,U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.,EPSG,1997-04-11 00:00:00,97.06,1,0
-1154,Indian 1975 to WGS 84 (1),transformation,4240,4326,DMA-Tha,1,1231,"For military purposes.  Accuracy 3m, 2m and 3m in X, Y and Z axes.",9603,,,Derived at 62 stations.,U.S. Defense Mapping Agency  TR8350.2 second edition September 1991,EPSG,1996-10-18 00:00:00,,1,0
-1155,Kalianpur 1937 to WGS 84 (1),transformation,4144,4326,DMA-Bgd,1,1041,"For military purposes.  Accuracy 10m, 8m and 12m in X, Y and Z axes.",9603,,,Derived at 6 stations.,U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.,EPSG,1999-10-20 00:00:00,97.235,1,0
-1156,Kalianpur 1975 to WGS 84 (1),transformation,4146,4326,DMA-Ind Npl,1,2411,"For military purposes.  Accuracy 12m, 10m and 15m in X, Y and Z axes.",9603,,,Care!  DMA ellipsoid is inconsistent with EPSG ellipsoid - transformation parameter values may not be appropriate. Derived at 7 stations.,U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.,EPSG,1999-10-20 00:00:00,97.235,1,0
-1157,Kandawala to WGS 84 (1),transformation,4244,4326,DMA-Lka,1,1218,For military purposes.  Accuracy 20m in each axis.,9603,,,Derived at 3 stations.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1158,Kertau to WGS 84 (1),transformation,4245,4326,DMA-Mys Sgp,1,1309,"For military purposes.  Accuracy 10m, 8m and 6m in X, Y and Z axes.",9603,,,Derived at 6 stations.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1159,Leigon to WGS 84 (1),transformation,4250,4326,DMA-Gha,1,1104,"For military purposes.  Accuracy 2m, 3m and 2m in X, Y and Z axes.",9603,,,Derived at 8 stations.,U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.,EPSG,1996-10-18 00:00:00,,1,0
-1160,Liberia 1964 to WGS 84 (1),transformation,4251,4326,DMA-Lbr,1,1142,For military purposes only.  Accuracy 15m in each axis.,9603,,,Derived at 4 stations.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1161,Luzon 1911 to WGS 84 (1),transformation,4253,4326,DMA-Phl N,1,2364,"For military purposes.  Accuracy 8m, 11m and 9m in X, Y and Z axes.",9603,,,Derived at 6 stations.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1162,Luzon 1911 to WGS 84 (2),transformation,4253,4326,DMA-Phl Min,2,2365,For military purposes.  Accuracy 25m in each axis.,9603,,,Derived at 1 station.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1163,M'poraloko to WGS 84 (1),transformation,4266,4326,DMA-Gab,1,1100,For military purposes only.  Accuracy 25m in each axis.,9603,,,Derived at 1 station.,U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.,EPSG,1996-10-18 00:00:00,,1,0
-1164,Mahe 1971 to WGS 84 (1),transformation,4256,4326,DMA-Syc,1,2369,For military purposes.  Accuracy 25m in each axis.,9603,,,Derived at 1 station.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1165,Massawa to WGS 84 (1),transformation,4262,4326,DMA-Eth,1,1089,For military purposes only.  Accuracy 25m in each axis.,9603,,,Derived at 1 station.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1166,Merchich to WGS 84 (1),transformation,4261,4326,DMA-Mar,1,1166,"For military purposes.  Accuracy 5m, 3m and 3m in X, Y and Z axes.",9603,,,Derived at 9 stations.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1167,Minna to WGS 84 (1),transformation,4263,4326,DMA-Cmr,1,1060,For military purposes only.  Accuracy 25m in each axis.,9603,,,"Derived at 2 stations.  Note: Minna is used in Nigeria, not Cameroon.",U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.,EPSG,1996-10-18 00:00:00,,1,0
-1168,Minna to WGS 84 (2),transformation,4263,4326,DMA-Nga,2,1178,"For military purposes.  Accuracy 3m, 6m and 5m in X, Y and Z axes.",9603,,,Derived at 6 stations.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1169,Monte Mario to WGS 84 (1),transformation,4265,4326,DMA-Ita Sar,1,2339,For military purposes.  Accuracy 25m in each axis.,9603,,,Derived at 1 station.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1170,NAD27 to WGS 84 (1),transformation,4267,4326,DMA-Carib,1,2418,"For military purposes.  Accuracy 3m, 9m and 12m in X, Y and Z axes.",9603,,,Derived at 15 stations.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1171,NAD27 to WGS 84 (2),transformation,4267,4326,DMA-Cen Am,2,2419,"For military purposes only.  Accuracy 8m, 3m and 5m in X, Y and Z axes.",9603,,,Derived at 19 stations.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1172,NAD27 to WGS 84 (3),transformation,4267,4326,DMA-Can,3,1061,"For military purposes only.  Accuracy 15m, 11m and 6m in X, Y and Z axes.",9603,,,Derived at 112 stations.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1173,NAD27 to WGS 84 (4),transformation,4267,4326,DMA-Conus,4,1323,"For military purposes only.  Accuracy 5m, 5m and 6m in X, Y and Z axes.",9603,,,Derived at 405 stations.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1174,NAD27 to WGS 84 (5),transformation,4267,4326,DMA-ConusE,5,2389,"For military purposes only.  Accuracy 5m, 5m and 8m in X, Y and Z axes.",9603,,,Derived at 129 stations.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1175,NAD27 to WGS 84 (6),transformation,4267,4326,DMA-ConusW,6,2390,"For military purposes only.  Accuracy 5m, 3m and 3m in X, Y and Z axes.",9603,,,Derived at 276 stations.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1176,NAD27 to WGS 84 (7),transformation,4267,4326,DMA-USA AK,7,2412,"For military purposes only.  Accuracy 5m, 9m and 5m in X, Y and Z axes.",9603,,,Derived at 47 stations.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1177,NAD27 to WGS 84 (8),transformation,4267,4326,DMA-Bha xSalv,8,2413,"For military purposes.  Accuracy 5m, 3m and 5m in X, Y and Z axes.",9603,,,Derived at 11 stations.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1178,NAD27 to WGS 84 (9),transformation,4267,4326,DMA-Bha Salv,9,2414,For military purposes.  Accuracy 25m in each axis.,9603,,,Derived at 1 station.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1179,NAD27 to WGS 84 (10),transformation,4267,4326,DMA-Can AB BC,10,2384,"For military purposes only.  Accuracy 8m, 8m and 6m in X, Y and Z axes.",9603,,,Derived at 25 stations.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1180,NAD27 to WGS 84 (11),transformation,4267,4326,DMA-Can MN ON,11,2415,"For military purposes only.  Accuracy 9m, 5m and 5m in X, Y and Z axes.",9603,,,Derived at 25 stations.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1181,NAD27 to WGS 84 (12),transformation,4267,4326,DMA-Can E,12,2416,"For military purposes only.  Accuracy 6m, 6m and 3m in X, Y and Z axes.",9603,,,Derived at 37 stations.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1182,NAD27 to WGS 84 (13),transformation,4267,4326,DMA-Can NWT,13,2410,"For military purposes only.  Accuracy 5m, 5m and 3m in X, Y and Z axes.",9603,,,Derived at 17 stations.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1183,NAD27 to WGS 84 (14),transformation,4267,4326,DMA-Can Yuk,14,2417,"For military purposes only.  Accuracy 5m, 8m and 3m in X, Y and Z axes.",9603,,,Derived at 8 stations.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1184,NAD27 to WGS 84 (15),transformation,4267,4326,DMA-Pan,15,2385,For military purposes.  Accuracy 20m in each axis.,9603,,,Derived at 3 stations.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1185,NAD27 to WGS 84 (16),transformation,4267,4326,DMA-Cuba,16,1077,For military purposes.  Accuracy 25m in each axis.,9603,,,Derived at 1 station.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1186,NAD27 to WGS 84 (17),transformation,4267,4326,DMA-Grl,17,2386,For military purposes.  Accuracy 25m in each axis.,9603,,,Derived at 2 stations.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1187,NAD27 to WGS 84 (18),transformation,4267,4326,DMA-Mex,18,1160,"For military purposes only.  Accuracy 8m, 6m and 6m in X, Y and Z axes.",9603,,,Derived at 22 stations.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1188,NAD83 to WGS 84 (1),transformation,4269,4326,DMA-N Am,1,1325,Accuracy 2m in each axis.,9603,,,Derived at 312 stations.,U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.,EPSG,1996-10-18 00:00:00,97.06,1,0
-1189,Nahrwan 1967 to WGS 84 (1),transformation,4270,4326,DMA-Omn Mas,1,2391,For military purposes.  Accuracy 25m in each axis.,9603,,,Derived at 2 stations.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1190,Nahrwan 1967 to WGS 84 (2),transformation,4270,4326,DMA-Sau,2,1206,For military purposes.  Accuracy 20m in each axis.,9603,,,Derived at 3 stations.,U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.,EPSG,1996-10-18 00:00:00,,1,0
-1191,Nahrwan 1967 to WGS 84 (3),transformation,4270,4326,DMA-UAE,3,1243,For military purposes.  Accuracy 25m in each axis.,9603,,,Derived at 2 stations.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1192,Naparima 1972 to WGS 84 (1),transformation,4271,4326,DMA-Tto,1,1235,For military purposes only.,9603,,,CAUTION: EPSG believes that these parameter values include a blunder and that if NIMA transformation parameters are to be used the 1987 version (EPSG code 1307) be used.,U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.,EPSG,1998-06-30 00:00:00,98.102,1,0
-1193,NTF to WGS 84 (1),transformation,4275,4326,IGN-Fra,1,1096,For applications to an accuracy of 2 metres.,9603,,,,IGN technical report RT/G 14; January 1988.,EPSG,1996-10-18 00:00:00,,1,0
-1195,OSGB 1936 to WGS 84 (1),transformation,4277,4326,DMA-Gbr,1,1264,"For military purposes only.  Accuracy 10m, 10m and 15m in X, Y and Z axes.",9603,,,Derived at 38 stations.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1196,OSGB 1936 to WGS 84 (2),transformation,4277,4326,DMA-Gbr Eng,2,2395,"For military purposes only.  Accuracy 5m, 5m and 6m in X, Y and Z axes.",9603,,,Derived at 24 stations.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1197,OSGB 1936 to WGS 84 (3),transformation,4277,4326,DMA-Gbr E&W,3,2396,"For military purposes only.  Accuracy 10m, 10m and 15m in X, Y and Z axes.",9603,,,Derived at 25 stations.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1198,OSGB 1936 to WGS 84 (4),transformation,4277,4326,DMA-Gbr Sco,4,2397,For military purposes only.  Accuracy 10m in each axis.,9603,,,Derived at 13 stations.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1199,OSGB 1936 to WGS 84 (5),transformation,4277,4326,DMA-Gbr Wal,5,2398,For military purposes only.  Accuracy 20m in each axis.,9603,,,Derived at 3 stations.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1200,Pointe Noire to WGS 84 (1),transformation,4282,4326,DMA-Cog,1,1072,For military purposes only.  Accuracy 25m in each axis.,9603,,,Derived at 1 station.,U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.,EPSG,1996-10-18 00:00:00,,1,0
-1201,PSAD56 to WGS 84 (1),transformation,4248,4326,DMA-mean,1,2399,"For military purposes only.  Accuracy 17m, 27m and 27m in X, Y and Z axes.",9603,,,Derived at 63 stations.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1202,PSAD56 to WGS 84 (2),transformation,4248,4326,DMA-Bol,2,1049,"For military purposes only.  Accuracy 5m, 11m and 14m in X, Y and Z axes.",9603,,,Derived at 5 stations.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1203,PSAD56 to WGS 84 (3),transformation,4248,4326,DMA-Chl N,3,2402,For military purposes.  Accuracy 25m in each axis.,9603,,,Derived at 1 station.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1204,PSAD56 to WGS 84 (4),transformation,4248,4326,DMA-Chl S,4,2403,For military purposes.  Accuracy 20m in each axis.,9603,,,Derived at 3 stations.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1205,PSAD56 to WGS 84 (5),transformation,4248,4326,DMA-Col,5,1070,For military purposes.  Accuracy 15m in each axis.,9603,,,Derived at 4 stations.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1206,PSAD56 to WGS 84 (6),transformation,4248,4326,DMA-Ecu,6,1085,"For military purposes.  Accuracy 3m, 5m and 3m in X, Y and Z axes.",9603,,,Derived at 11 stations.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1207,PSAD56 to WGS 84 (7),transformation,4248,4326,DMA-Guy,7,1114,"For military purposes.  Accuracy 6m, 14m and 5m in X, Y and Z axes.",9603,,,Derived at 9 stations.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1208,PSAD56 to WGS 84 (8),transformation,4248,4326,DMA-Per,8,1189,"For military purposes only.  Accuracy 6m, 8m and 12m in X, Y and Z axes.",9603,,,Derived at 6 stations.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1209,PSAD56 to WGS 84 (9),transformation,4248,4326,DMA-Ven,9,1251,"For military purposes only.  Accuracy 9m, 14m and 15m in X, Y and Z axes.",9603,,,Derived at 24 stations.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1211,Qornoq to WGS 84 (1),transformation,4287,4326,DMA-Grl S,1,2407,"For military purposes.  Accuracy 25m, 25m and 32m in X, Y and Z axes.",9603,,,Derived at 2 stations.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,1
-1212,SAD69 to WGS 84 (1),transformation,4291,4326,DMA-mean,1,1341,"For military purposes only.  Accuracy 15m, 6m and 9m in X, Y and Z axes.",9603,,,Derived at 84 stations.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1213,SAD69 to WGS 84 (2),transformation,4291,4326,DMA-Arg,2,1033,For military purposes only.  Accuracy 5m in each axis.,9603,,,Derived at 10 stations.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1214,SAD69 to WGS 84 (3),transformation,4291,4326,DMA-Bol,3,1049,For military purposes.  Accuracy 15m in each axis.,9603,,,Derived at 4 stations.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1215,SAD69 to WGS 84 (4),transformation,4291,4326,DMA-Bra,4,1053,"For military purposes only.  Accuracy 3m, 5m and 5m in X, Y and Z axes.",9603,,,Derived at 22 stations.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1216,SAD69 to WGS 84 (5),transformation,4291,4326,DMA-Chile,5,1066,"For military purposes only.  Accuracy 15m, 8m and 11m in X, Y and Z axes.",9603,,,Derived at 9 stations.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1217,SAD69 to WGS 84 (6),transformation,4291,4326,DMA-Col,6,1070,"For military purposes only.  Accuracy 6m, 6m and 5m in X, Y and Z axes.",9603,,,Derived at 7 stations.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1218,SAD69 to WGS 84 (7),transformation,4291,4326,DMA-Ecu,7,1085,For military purposes.  Accuracy 3m in each axis.,9603,,,Derived at 11 stations.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1219,SAD69 to WGS 84 (8),transformation,4291,4326,DMA-Ecu Gal,8,2356,For military purposes.  Accuracy 25m in each axis.,9603,,,Derived at 1 station.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1220,SAD69 to WGS 84 (9),transformation,4291,4326,DMA-Guy,9,1114,"For military purposes only.  Accuracy 9m, 5m and 5m in X, Y and Z axes.",9603,,,Derived at 5 stations.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1221,SAD69 to WGS 84 (10),transformation,4291,4326,DMA-Pgy,10,1188,For military purposes.  Accuracy 15m in each axis.,9603,,,Derived at 4 stations.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1222,SAD69 to WGS 84 (11),transformation,4291,4326,DMA-Peru,11,1189,For military purposes.  Accuracy 5m in each axis.,9603,,,Derived at 6 stations.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1223,SAD69 to WGS 84 (12),transformation,4291,4326,DMA-Tto,12,1235,For military purposes only.  Accuracy 25m in each axis.,9603,,,Derived at 1 station.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1224,SAD69 to WGS 84 (13),transformation,4291,4326,DMA-Ven,13,1251,"For military purposes only.  Accuracy 3m, 6m and 3m in X, Y and Z axes.",9603,,,Derived at 5 stations.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1225,Sapper Hill 1943 to WGS 84 (1),transformation,4292,4326,DMA-Flk E,1,2355,For military purposes.  Accuracy 1m in each axis.,9603,,,Derived at 5 stations.,U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.,EPSG,1996-10-18 00:00:00,,1,0
-1226,Schwarzeck to WGS 84 (1),transformation,4293,4326,DMA-Nam,1,1169,For military purposes only.  Accuracy 20m in each axis.,9603,,,Derived at 3 stations.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1227,Tananarive to WGS 84 (1),transformation,4297,4326,DMA-Mdg,1,1149,For military purposes.,9603,,,Accuracy estimate not available.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1228,Timbalai 1948 to WGS 84 (1),transformation,4298,4326,DMA-Borneo,1,1362,"For military purposes.  Accuracy 10m, 10m and 12m in X, Y and Z axes.",9603,,,Derived at 8 stations.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1229,TM65 to WGS 84 (1),transformation,4299,4326,DMA-Ire,1,1305,For military purposes only.  Accuracy 3m in each axis.,9603,,,Derived at 7 stations.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1230,Tokyo to WGS 84 (1),transformation,4301,4326,DMA-Jpn Kor,1,2409,"For military purposes only.  Accuracy 20m, 5m and 20m in X, Y and Z axes.",9603,,,Derived at 31 stations.,U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.,EPSG,1996-10-18 00:00:00,97.06,1,0
-1231,Tokyo to WGS 84 (2),transformation,4301,4326,DMA-Jpn,2,1129,"For military purposes only.  Accuracy 8m, 5m and 8m in X, Y and Z axes.",9603,,,Derived at 16 stations.,U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.,EPSG,1996-10-18 00:00:00,,1,0
-1232,Tokyo to WGS 84 (3),transformation,4301,4326,DMA-Kor,3,1135,For military purposes only.  Accuracy 2m in each axis.,9603,,,Derived at 29 stations.,U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.,EPSG,1996-10-18 00:00:00,97.06,1,0
-1233,Tokyo to WGS 84 (4),transformation,4301,4326,DMA-Jpn Ok,4,2408,"For military purposes only.  Accuracy 20m, 5m and 20m in X, Y and Z axes.",9603,,,Derived at 3 stations.,U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.,EPSG,1996-10-18 00:00:00,,1,0
-1234,Yacare to WGS 84 (1),transformation,4309,4326,DMA-Ury,1,1247,For military purposes.,9603,,,Accuracy estimate not available.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1235,Zanderij to WGS 84 (1),transformation,4311,4326,DMA-Sur,1,1222,"For military purposes.  Accuracy 5m, 5m and 8m in X, Y and Z axes.",9603,,,Derived at 5 stations.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1996-10-18 00:00:00,,1,0
-1236,AGD84 to WGS 84 (2),transformation,4203,4326,Auslig-Aus old,2,1036,Preliminary estimate - now superseded.,9607,,,"""Higgins parameters"". Superseded by AGD84 to GDA94 (2) (code 1280) and AGD84 to WGS 84 (7) (code 1669).",Australian Surveying and Land Information Group - www.auslig.gov.au/geodesy,EPSG,1997-11-13 00:00:00,,1,0
-1237,WGS 72 to WGS 84 (1),transformation,4322,4326,DMA1,1,1262,For scientific purposes.,9606,,,,,EPSG,1996-12-12 00:00:00,,1,0
-1238,WGS 72 to WGS 84 (2),transformation,4322,4326,DMA2,2,1262,For scientific purposes.,9606,,,,,EPSG,1996-12-12 00:00:00,,1,0
-1239,WGS 72BE to WGS 72 (1),transformation,4324,4322,DMA,1,1262,Geodesy.,9606,,,,,EPSG,1996-12-12 00:00:00,,1,0
-1240,WGS 72BE to WGS 84 (1),transformation,4324,4326,DMA,1,2346,Geodesy.,9606,,,,,EPSG,1996-12-12 00:00:00,,1,0
-1241,NAD27 to NAD83 (1),transformation,4267,4269,NGS-Usa Conus,1,2374,"Accuracy at 67% confidence level is 0.15m onshore, 5m nearshore and undetermined farther offshore.",9613,,,Uses NADCON method which expects longitudes positive west; EPSG GeogCRS NAD27 (code 4267) and NAD83 (code 4269) have longitudes positive east.,US Coast & Geodetic Survey  www.ngs.noaa.gov,EPSG,2000-03-07 00:00:00,98.201  98.53  2000.14,1,0
-1243,NAD27 to NAD83 (2),transformation,4267,4269,NGS-Usa AK,2,2373,"Accuracy at 67% confidence level is 0.5m onshore, 5m nearshore and undetermined farther offshore.",9613,,,Uses NADCON method which expects longitudes positive west; EPSG GeogCRS NAD27 (code 4267) and NAD83 (code 4269) have longitudes positive east.,US Coast & Geodetic Survey  www.ngs.noaa.gov,EPSG,2000-03-07 00:00:00,98.201  98.53  2000.14,1,0
-1245,ED50 to WGS 84 (16),transformation,4230,4326,DMA-Tun,16,1236,For military purposes only.  Accuracy 25m in each axis.,9603,,,Derived at 4 stations.,U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.,EPSG,1998-04-16 00:00:00,98.11,1,0
-1246,Herat North to WGS 84 (1),transformation,4255,4326,DMA-Afg,1,1024,For military purposes only.,9603,,,No accuracy estimate available.,U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.,EPSG,1997-04-11 00:00:00,,1,0
-1247,Kalianpur 1962 to WGS 84 (1),transformation,4145,4326,DMA-Pak,1,1184,For military purposes.,9603,,,Care!  DMA ellipsoid is inconsistent with EPSG ellipsoid - transformation parameter values may not be appropriate.  No accuracy estimate available.,U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.,EPSG,1999-10-20 00:00:00,97.235,1,0
-1248,ID74 to WGS 84 (1),transformation,4238,4326,DMA-Idn,1,1122,For military purposes.  Accuracy 25m in each axis.,9603,,,Derived at 1 station.,U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.,EPSG,2002-06-22 00:00:00,2002.151,1,0
-1249,NAD27 to WGS 84 (21),transformation,4267,4326,DMA-AK AluE,21,2387,"For military purposes only.  Accuracy 6m, 8m and 10m in X, Y and Z axes.",9603,,,Derived at 6 stations.,U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.,EPSG,1997-04-11 00:00:00,,1,0
-1250,NAD27 to WGS 84 (22),transformation,4267,4326,DMA-AK AluW,22,2388,For military purposes.  Accuracy 10m in each axis.,9603,,,Derived at 5 stations.,U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.,EPSG,1997-04-11 00:00:00,,1,0
-1251,NAD83 to WGS 84 (2),transformation,4269,4326,DMA-AK Alu,2,2157,"For military purposes only.  Accuracy 5m, 2m and 5m in X, Y and Z axes.",9603,,,Derived at 42 stations.,U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.,EPSG,1997-04-11 00:00:00,,1,0
-1252,NAD83 to WGS 84 (3),transformation,4269,4326,DMA-USA Hi,3,1334,For military purposes only.  Accuracy 2m in each axis.,9603,,,Derived at 6 stations.,U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.,EPSG,1997-04-11 00:00:00,,1,0
-1253,Nord Sahara 1959 to WGS 84 (1),transformation,4307,4326,DMA-Alg,1,1026,For military purposes only.  Accuracy 25m in each axis.,9603,,,Derived at 3 stations.,U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.,EPSG,1997-04-11 00:00:00,,1,0
-1254,Pulkovo 1942 to WGS 84 (1),transformation,4284,4326,DMA-Rus,1,1198,For military purposes.,9603,,,Accuracy estimate not available.,U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.,EPSG,1997-04-11 00:00:00,,1,0
-1255,Nord Sahara 1959 to WGS 84 (2),transformation,4307,4326,DMA-Dza N,2,1365,For military purposes only.  Accuracy 25m in each axis.,9603,,,CAUTION:  Source CRS described by DMA as from Voirol 1960. EPSG believes that the data used in the derivation of these parameters contains a blunder.  We recommend using transformation North Sahara 1959 to WGS84 (1) (code 1253). Derived at 2 stations.,U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.,EPSG,2000-06-23 00:00:00,98.15  2000 [...]
-1256,Fahud to WGS 84 (1),transformation,4232,4326,DMA-Omn,1,1183,"For military purposes.  Accuracy 3m, 3m and 9m in X, Y and Z axes.",9603,,,"Derived at 7 stations. Source CRS  in information source is called ""Oman"".",U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.,EPSG,1997-04-11 00:00:00,,1,0
-1258,Bogota 1975 (Bogota) to Bogota 1975 (Greenwich),transformation,4802,4218,IGAC-Col,1,1070,Change of prime meridian.,9601,,,,EPSG,EPSG,1999-11-12 00:00:00,99.79,1,1
-1259,Lisbon (Lisbon) to Lisbon (Greenwich),transformation,4803,4207,IGC-Prt,1,1294,Change of prime meridian.,9601,,,,EPSG,EPSG,1999-11-12 00:00:00,99.79,1,1
-1260,Makassar (Jakarta) to Makassar,transformation,4804,4257,EPSG-Idn Sulawesi,1,1316,Change of prime meridian.,9601,,,,EPSG,EPSG,1999-11-12 00:00:00,99.79,1,0
-1261,MGI (Ferro) to MGI (Greenwich),transformation,4805,4312,BEV-Aut balk,1,1166,Change of prime meridian.,9601,,,,EPSG,EPSG,1999-11-12 00:00:00,99.79,1,1
-1262,Monte Mario (Rome) to Monte Mario,transformation,4806,4265,EPSG-Ita,1,1127,Change of prime meridian.,9601,,,,EPSG,EPSG,1999-11-12 00:00:00,98.37  99.79,1,0
-1263,Padang (Jakarta) to Padang (Greenwich),transformation,4808,4280,EPSG-Idn Sumatra,1,1355,Change of prime meridian.,9601,,,,EPSG,EPSG,1999-11-12 00:00:00,99.79,1,1
-1264,Belge 1950 (Brussels) to Belge 1950,transformation,4809,4215,IGN-Bel,1,1347,Change of prime meridian.,9601,,,,EPSG,EPSG,1999-11-12 00:00:00,99.79,1,0
-1265,Tananarive (Paris) to Tananarive,transformation,4810,4297,EPSG-Mdg,1,1149,Change of prime meridian.,9601,,,,EPSG,EPSG,1999-11-12 00:00:00,99.79,1,0
-1266,Voirol 1875 (Paris) to Voirol 1875,transformation,4811,4304,IGN-Dza,1,2347,Change of prime meridian.,9601,,,,EPSG,EPSG,1999-11-12 00:00:00,99.79,1,0
-1268,Batavia (Jakarta) to Batavia (Greenwich),transformation,4813,4211,EPSG-Idn Java,1,1285,Change of prime meridian.,9601,,,,EPSG,EPSG,1999-11-12 00:00:00,99.79,1,1
-1269,RT38 (Stockholm) to RT38 (Greenwich),transformation,4814,4308,NLS-Swe,1,1225,Change of prime meridian.,9601,,,,EPSG,EPSG,1999-11-12 00:00:00,99.79,1,1
-1270,Greek (Athens) to Greek (Greenwich),transformation,4815,4120,NTU-Grc,1,1106,Change of prime meridian.,9601,,,,Topography Department; National Technical University of Athens.,EPSG,1999-11-12 00:00:00,99.79,1,1
-1271,Schwarzeck to WGS 84 (2),transformation,4293,4326,SLI-Nam,2,1169,?,9603,,,Beware!   Schwarzeck CRS uses German legal metres.  Example:  Schwarzeck Lat 19d 35m 46.952s S Long 20d 41m 50.649s E; X=5623409.40 Y=2124618.00 Z=-2125847.62 GLM; X=5623485.86 Y=2124646.89 Z=-2125876.53 m; WGS84 X=5624101.50 Y=2124748.97 Z=2126132.34 m.,Chief Directorate Surveys and Land Information; Mowbray; South Africa.,EPSG,1997-11-13 00:00:00,97.48,1,0
-1272,GGRS87 to WGS 84 (1),transformation,4121,4326,Hel-Grc,1,1106,?,9603,,,,Geodesy Department; Public Petroleum Corporation of Greece.,EPSG,1997-06-16 00:00:00,,1,0
-1273,HD72 to ETRS89 (1),transformation,4237,4258,ELTE-Hun,1,1119,?,9607,,,May be taken as approximate transformation HD72 to WGS 84 - see code 1677.,http://lazarus.elte.hu/gb/geodez/geod5.htm,EPSG,1997-11-13 00:00:00,97.47,1,1
-1274,Pulkovo 1942 to LKS94(ETRS89) (1),transformation,4284,4126,HNIT-Ltu,1,1145,?,9607,,,May be taken as approximate transformation Pulkovo 1942 to WGS 84 - see code 1679.,HNIT-BALTIC GeoInfoServisas.,EPSG,1998-03-12 00:00:00,,1,0
-1275,ED50 to WGS 84 (17),transformation,4230,4326,IGN-Fra,17,1096,For applications to an accuracy of 2 metres.,9603,,,,IGN technical report 14 (January 1988).,EPSG,1998-04-16 00:00:00,98.11,1,0
-1276,NTF to ED50 (1),transformation,4275,4230,IGN-Fra,1,1096,For applications to an accuracy of 2 metres.,9603,,,,IGN technical report 7 (October 1981).,EPSG,1997-11-13 00:00:00,,1,0
-1277,NTF to WGS 72 (1),transformation,4275,4322,IGN-Fra,1,1096,For applications to an accuracy of 2 metres.,9603,,,,IGN technical report 7 (October 1981).,EPSG,1997-11-13 00:00:00,,1,0
-1278,AGD66 to GDA94 (1),transformation,4202,4283,Auslig-Aus 5m,1,1036,5m accuracy.,9603,,,Parameter values are given to greater precision but no better accuracy at http://www.dehaa.sa.gov.au/res_inform/sicom/where/geobas14.html  For higher accuracy requirements see various regional transformations.,GDA Technical Manual. http://www.anzlic.org.au/icsm/gdatm/molodens.htm,EPSG,1997-11-13 00:00:00,,1,0
-1279,AGD84 to GDA94 (1),transformation,4203,4283,Auslig-Aus 5m,1,1036,5m accuracy.,9603,,,Parameter values are given to greater precision but no better accuracy at http://www.dehaa.sa.gov.au/res_inform/sicom/where/geobas14.html,GDA Technical Manual. http://www.anzlic.org.au/icsm/gdatm/molodens.htm,EPSG,1997-11-13 00:00:00,,1,0
-1280,AGD84 to GDA94 (2),transformation,4203,4283,Auslig-Aus 1m,2,1036,1m accuracy.,9607,,,Supersedes AGD84 to WGS 84 (2) (code 1236).  May be taken as approximate transformation AGD84 to WGS 84 - see code 1669.,GDA Technical Manual. http://www.anzlic.org.au/icsm/gdatm/simil.htm,EPSG,1997-11-13 00:00:00,,1,0
-1282,Samboja to WGS 84 (1),transformation,4125,4326,TOT-Idn Mah,1,1328,Oil exploration.,9603,,,Datum shift derived through ITRF93.,Total Indonesia.,EPSG,2000-03-07 00:00:00,2000.23,1,1
-1283,LKS94(ETRS89) to WGS 84 (1),transformation,4126,4326,HNIT-Ltu,1,1145,LKS94 is a realisation of WGS 84 coincident to within 1.5 metres.  This transformation has an accuracy equal to the coincidence figure.,9603,,,,HNIT-BALTIC GeoInfoServisas.,EPSG,1998-03-12 00:00:00,98.13,1,0
-1284,Arc 1960 to WGS 84 (2),transformation,4210,4326,NIMA-Ken,2,1132,"For military purposes.  Accuracy 4m, 3m and 3m in X, Y and Z axes.",9603,,,Derived at 24 stations.,U.S. National Imagery and Mapping Agency  TR8350.2 revision of October 1997; http://164.214.2.59/geospatial/products/GandG/tr83502b/toc.html,EPSG,1998-03-12 00:00:00,,1,0
-1285,Arc 1960 to WGS 84 (3),transformation,4210,4326,NIMA-Tza,3,1230,"For military purposes.  Accuracy 6m, 9m and 10m in X, Y and Z axes.",9603,,,Derived at 12 stations.,U.S. National Imagery and Mapping Agency  TR8350.2 revision of October 1997; http://164.214.2.59/geospatial/products/GandG/tr83502b/toc.html,EPSG,1998-03-12 00:00:00,,1,0
-1286,Segora to WGS 84 (1),transformation,4294,4326,NIMA-Idn Kal,1,2354,For military purposes.,9603,,,Accuracy estimate not available.,U.S. National Imagery and Mapping Agency  TR8350.2 revision of October 1997; http://164.214.2.59/geospatial/products/GandG/tr83502b/toc.html,EPSG,1998-03-12 00:00:00,,1,1
-1287,Pulkovo 1942 to WGS 84 (3),transformation,4284,4326,NIMA-Hun,3,1119,For military purposes.  Accuracy 2m in each axis.,9603,,,Derived at 5 stations.,U.S. National Imagery and Mapping Agency  TR8350.2 revision of October 1997; http://164.214.2.59/geospatial/products/GandG/tr83502b/toc.html,EPSG,1998-04-16 00:00:00,98.11,1,0
-1288,Pulkovo 1942 to WGS 84 (4),transformation,4284,4326,NIMA-Pol,4,1192,"For military purposes only.  Accuracy 4m, 2m and 4m in X, Y and Z axes.",9603,,,Derived at 11 stations.,U.S. National Imagery and Mapping Agency  TR8350.2 revision of October 1997; http://164.214.2.59/geospatial/products/GandG/tr83502b/toc.html,EPSG,1998-04-16 00:00:00,98.11,1,0
-1289,Pulkovo 1942 to WGS 84 (5),transformation,4284,4326,NIMA-Cze,5,1079,"For military purposes only.  Accuracy 3m, 3m and 2m in X, Y and Z axes.",9603,,,Derived at 6 stations.,U.S. National Imagery and Mapping Agency  TR8350.2 revision of October 1997; http://164.214.2.59/geospatial/products/GandG/tr83502b/toc.html,EPSG,1998-04-16 00:00:00,98.11,1,0
-1290,Pulkovo 1942 to WGS 84 (6),transformation,4284,4326,NIMA-Lva,6,1139,For military purposes.  Accuracy 2m in each axis.,9603,,,Derived at 5 stations.,U.S. National Imagery and Mapping Agency  TR8350.2 revision of October 1997; http://164.214.2.59/geospatial/products/GandG/tr83502b/toc.html,EPSG,1998-04-16 00:00:00,98.11,1,0
-1291,Pulkovo 1942 to WGS 84 (7),transformation,4284,4326,NIMA-Kaz,7,1131,For military purposes.  Accuracy 25m in each axis.,9603,,,Derived at 2 stations.,U.S. National Imagery and Mapping Agency  TR8350.2 revision of October 1997; http://164.214.2.59/geospatial/products/GandG/tr83502b/toc.html,EPSG,1998-04-16 00:00:00,98.11,1,0
-1292,Pulkovo 1942 to WGS 84 (8),transformation,4284,4326,NIMA-Alb,8,1025,For military purposes.  Accuracy 3m in each axis.,9603,,,Derived at 7 stations.,U.S. National Imagery and Mapping Agency  TR8350.2 revision of October 1997; http://164.214.2.59/geospatial/products/GandG/tr83502b/toc.html,EPSG,1998-04-16 00:00:00,98.11,1,0
-1293,Pulkovo 1942 to WGS 84 (9),transformation,4284,4326,NIMA-Rom,9,1197,"For military purposes.  Accuracy 3m, 5m and 3m in X, Y and Z axes.",9603,,,Derived at 4 stations.,U.S. National Imagery and Mapping Agency  TR8350.2 revision of October 1997; http://164.214.2.59/geospatial/products/GandG/tr83502b/toc.html,EPSG,1998-04-16 00:00:00,98.11,1,0
-1294,Voirol 1875 to WGS 84 (1),transformation,4304,4326,NIMA-Dza N,1,2347,For military purposes.,9603,,,Accuracy estimate not available.,U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.,EPSG,1998-03-12 00:00:00,,1,0
-1296,Trinidad 1903 to WGS 84 (1),transformation,4302,4326,Amoco-Tto Trin,1,1339,Oil exploration.,9603,,,Derived in 1989 by ONI for Amoco.,Trinidad Ministry of Energy and Energy Industries.,EPSG,1998-11-11 00:00:00,98.38,1,0
-1297,Tete to Moznet (1),transformation,4127,4130,DNGC-Moz,1,1167,Residuals as high as 30 metres.,9607,,,Mean of 32 stations. To reduce the size of the residuals; four regional parameter sets (see codes 1298-1301) were developed. May be taken as approximate transformation Moznet to WGS 84 - see code 1683.,Direc��o Nacional de Geografia e Cadastral (DINAGECA).,EPSG,1998-04-16 00:00:00,,1,0
-1298,Tete to Moznet (2),transformation,4127,4130,DNGC-Moz A,2,2350,Residuals are generally under 1 metre.,9607,,,Mean of 9 stations. May be taken as approximate transformation Moznet to WGS 84 - see code 1684.,Direc��o Nacional de Geografia e Cadastral (DINAGECA).,EPSG,1998-04-16 00:00:00,,1,0
-1299,Tete to Moznet (3),transformation,4127,4130,DNGC-Moz B,3,2351,Residuals are generally under 4 metres.,9607,,,Mean of 6 stations. May be taken as approximate transformation Moznet to WGS 84 - see code 1685.,Direc��o Nacional de Geografia e Cadastral (DINAGECA).,EPSG,1998-04-16 00:00:00,,1,0
-1300,Tete to Moznet (4),transformation,4127,4130,DNGC-Moz C,4,2352,Residuals are generally under 3 metres.,9607,,,Mean of 11 stations. May be taken as approximate transformation Moznet to WGS 84 - see code 1686.,Direc��o Nacional de Geografia e Cadastral (DINAGECA).,EPSG,1998-04-16 00:00:00,,1,0
-1301,Tete to Moznet (5),transformation,4127,4130,DNGC-Moz D,5,2353,Residuals are 5-10 metres.,9607,,,Mean of 7 stations. May be taken as approximate transformation Moznet to WGS 84 - see code 1687.,Direc��o Nacional de Geografia e Cadastral (DINAGECA).,EPSG,1998-04-16 00:00:00,,1,0
-1302,Moznet to WGS 84 (1),transformation,4130,4326,EPSG-Moz,1,1167,For many purposes Moznet can be considered to be coincident with WGS 84. Accuracy better than 1 metre.,9607,,,,EPSG,EPSG,1998-04-16 00:00:00,,1,0
-1303,Pulkovo 1942 to WGS 84 (10),transformation,4284,4326,KCS-Kaz Cas,10,2405,Residuals under 2 m.,9606,,,Mean of 13 stations along entire Kazak coastline.,KazakCaspiShelf consortium.,EPSG,2000-02-02 00:00:00,2000.05,1,0
-1304,Indian 1975 to WGS 84 (2),transformation,4240,4326,NIMA-Tha,2,1231,"For military purposes.  Accuracy 3m, 2m and 3m in X, Y and Z axes.",9603,,,Derived at 62 stations.,U.S. National Imagery and Mapping Agency  TR8350.2 revision of October 1997; http://164.214.2.59/geospatial/products/GandG/tr83502b/toc.html,EPSG,1998-04-16 00:00:00,,1,0
-1305,Tokyo to WGS 84 (5),transformation,4301,4326,NIMA-Kor,5,1135,For military purposes.,9603,,,Derived at 29 stations.,U.S. National Imagery and Mapping Agency  TR8350.2 revision of October 1997; http://164.214.2.59/geospatial/products/GandG/tr83502b/toc.html,EPSG,1998-04-16 00:00:00,,1,0
-1306,MGI to WGS 84 (1),transformation,4312,4326,NIMA-balk,1,2370,For military purposes only.,9603,,,Accuracy estimate not available.,U.S. National Imagery and Mapping Agency  TR8350.2 revision of October 1997; http://164.214.2.59/geospatial/products/GandG/tr83502b/toc.html,EPSG,1998-04-16 00:00:00,,1,0
-1307,Naparima 1972 to WGS 84 (3),transformation,4271,4326,NIMA-Tto Tob,3,1322,For military purposes only.  Accuracy 15m in each axis.,9603,,,(1) See remarks for tfm code 1192.  (2) Naparima 1972 is an extension to Tobago of the Napaima 1955 geographic CRS of Trindad.  In Trinidad this transformation may also be considered to use Napaima 1955 (code 4158) as its source CRS: see tfm code 1556.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,1998-04-16 00:00:00,,1,0
-1308,NAD83 to WGS 84 (4),transformation,4269,4326,NGS-Usa ITRF94,4,1323,Historical record only - superseded - see remarks.,9607,,,Strictly between NAD83 and ITRF94(1996.0).  Superseded by NAD83 to WGS 84 (5) (code 1515).,US National Geodetic Survey  http://www.ngs.noaa.gov/CORS/Derivation.html,EPSG,1999-04-22 00:00:00,99.12  99.38,1,0
-1309,DHDN to ETRS89 (1),transformation,4314,4258,IfAG-Deu W,1,2326,For applications with an accuracy at 5 m level.,9607,,,Mean of 69 stations. May be taken as approximate transformation DHDN to WGS 84 - see code 1673. Also given by EuroGeographics at http://crs.ifag.de/ as a Position Vector transformation with changed values for rotations.,Institute for Cartography and Geodesy; Leipzig.,EPSG,2000-10-19 00:00:00,2000.72,1,0
-1310,Pulkovo 1942 to ETRS89 (1),transformation,4284,4258,IfAG-Deu E,1,1343,Residuals under 2 m.,9607,,,Mean of 20 stations.,Institute for Cartography and Geodesy; Leipzig.,EPSG,2000-10-19 00:00:00,2000.72,1,1
-1311,ED50 to WGS 84 (Common Offshore),transformation,4230,4326,UKOOA-CO,18,2342,Recommended transformation for UKCS petroleum purposes.,9606,,,Based on ED50 to WGS72 (precise ephemeris) 6-nations agreement of 1981 to which precise to broadcast and broadcast to WGS 84 transformations have been concatenated.,The Hydrographic Journal; vol 52 page 50.,EPSG,1998-06-30 00:00:00,98.27,1,0
-1312,NAD27 to NAD83 (3),transformation,4267,4269,GC-Can NT1,3,1061,Historic record only - now superseded - see remarks.,9614,,,Uses NTv1 method.  Superseded in Quebec by code 1462 and elsewhere in 1997 by NTv2 (transformation code 1313).  Input expects longitudes to be positive west; EPSG GeogCRS NAD27 (code 4267) and NAD83 (code 4269) have longitudes positive east.,Geomatics Canada - Geodetic Survey Division.,EPSG,2000-03-07 00:00:00,98.57  2000.14,1,0
-1313,NAD27 to NAD83 (4),transformation,4267,4269,GC-Can NT2,4,1061,Accuracy 1-2 metres.,9615,,,Uses NTv2 data files.  Supersedes  NTv1 (transformation code 1312) except in Quebec.  Input expects longitudes to be positive west; EPSG GeogCRS NAD27 (code 4267) and (code 4269) have longitudes positive east.,http://www.geod.nrcan.gc.ca/products/html-public/GSDapps/English/NTv2_Fact_Sheet.html,EPSG,2000-03-07 00:00:00,98.57  2000.14,1,0
-1314,OSGB 1936 to WGS 84 (Petroleum),transformation,4277,4326,UKOOA-Pet,6,2394,Oil exploration. Accuracy better than 4m and generally better than 2m.,9606,,,For a more accurate transformation see OSGB 1936 / British National Grid to ETRS89 (1) (code 1036): contact the Ordnance Survey of Great Britain (http://www.gps.gov.uk/gpssurveying.asp) for details.,UK Offshore Operators Association. Also at EuroGeographics at http://crs.ifag.de,EPSG,1998-11-11 00:00:00,,1,0
-1315,OSGB 1936 to ED50 (UKOOA),transformation,4277,4230,UKOOA-UKCS,1,2394,For oil exploration. Accuracy better than 4m and generally better than 2m.,9606,,,This transformation is concatenated from OSGB36 to WGS 84 (Petroleum) (code 1314) minus ED50 to WGS 84 (Common Offshore) (code 1311).,UK Offshore Operators Association.,EPSG,1998-11-11 00:00:00,,1,0
-1316,Manoca to WGS 84 (1),transformation,4260,4326,SCS-Cmr,1,1060,?,9603,,,,Stolt Comex Seaway and Geoid for Elf.,EPSG,1998-11-11 00:00:00,,1,1
-1317,Camacupa to WGS 72BE (1),transformation,4220,4324,GSI-Ago,1,1604,Oil exploration.,9603,,,Derived by Geophysical Services Inc. in 1979 from mean of Transit results at 7 stations.,EPSG,EPSG,1998-11-11 00:00:00,,1,0
-1318,Camacupa to WGS 84 (1),transformation,4220,4326,CON-Ago B5,1,2316,Used for oil exploration by Conoco.,9603,,,,EPSG,EPSG,1998-11-11 00:00:00,,1,0
-1319,Camacupa to WGS 84 (2),transformation,4220,4326,TEX-Ago B2,2,2317,Used for oil exploration by Texaco.,9603,,,,EPSG,EPSG,1998-11-11 00:00:00,,1,0
-1320,Camacupa to WGS 84 (3),transformation,4220,4326,SHL-Ago old,3,2321,Used by Shell prior to 1994.,9606,,,Superseded by Camacupa to WGS 84 (9).,EPSG,EPSG,1998-12-14 00:00:00,98.56,1,0
-1321,Camacupa to WGS 84 (4),transformation,4220,4326,GSI-Ago,4,2320,Used for oil exploration.,9603,,,"Derived as mean of 123 Transit passes at station Cabo Ledo NE base in November 1990. Used by Elf for block 7 up to December 1992 then superseded by Camacupa to WGS 84 (7). Used by Total in block 8, ExxonMobil block 24, Western Geophysical for spec. data.",EPSG,EPSG,2000-03-07 00:00:00,2000.16,1,0
-1322,Camacupa to WGS 84 (5),transformation,4220,4326,ELF-Ago B3 old,5,2318,Used for oil exploration by Elf for block 3 up to December 1992 then Superseded by Camacupa to WGS 84 (7).,9603,,,Derived at station Djeno during coordination of platform PAL F2 in February 1992.,EPSG,EPSG,1998-11-11 00:00:00,,1,0
-1323,Camacupa to WGS 84 (6),transformation,4220,4326,ELF-Ago B7 old,6,2319,Used for oil exploration by Elf for 1993 block 7 shallow water survey.,9603,,,Derived at Luanda observatory December 1992.,EPSG,EPSG,1998-11-11 00:00:00,,1,0
-1324,Camacupa to WGS 84 (7),transformation,4220,4326,ELF-Ago B15,7,2322,"Used for oil exploration by Elf for blocks 3, 7 and 17 between December 1992 and 1994 then Superseded by Camacupa to WGS 84 (10).  Used by Exxon for block 15 since 1993.",9603,,,Derived at platform PAL F2 in December 1992.,EPSG,EPSG,1998-11-11 00:00:00,,1,0
-1325,Camacupa to WGS 84 (8),transformation,4220,4326,ELF-Ago B2 old,8,2317,Used for oil exploration by Total for block 2 between December 1992 and 1994 then Superseded by Camacupa to WGS 84 (10).,9603,,,Derived at platform PAL F2 in December 1992.,EPSG,EPSG,1998-11-11 00:00:00,,1,0
-1326,Camacupa to WGS 84 (9),transformation,4220,4326,SHL-Ago B16,9,2323,Used by Shell since 1994.,9606,,,Supersedes Camacupa to WGS 84 (3).,EPSG,EPSG,1998-12-14 00:00:00,98.56,1,0
-1327,Camacupa to WGS 84 (10),transformation,4220,4326,ELF-Ago N,10,2324,Used for oil exploration by Elf in blocks 3 and 17 since 1994.  Used by Total in block 2 since 1994. Adopted by BP-Amoco Elf and Exxon for blocks 31-33.,9603,,,Derived at platform PAL F2 in 1994 by Topnav using Doris.,EPSG,EPSG,1998-11-11 00:00:00,,1,0
-1328,Malongo 1987 to Mhast (1),transformation,4259,4264,CHV-Ago Cab,1,1317,Used for oil exploration.,9603,,,Malongo 1987 is an offshore extension of Mhast adopted by Chevron in 1987.,EPSG,EPSG,1998-11-11 00:00:00,,1,0
-1329,Mhast to WGS 84 (1),transformation,4264,4326,CHV-Ago Cab,1,1317,"Used for oil exploration by Chevron until superseded in 1990 by trf Malongo 1987 to WGS 84 (2), code 1557.",9603,,,"Superseded in 1990 by trf Malongo 1987 to WGS 84 (2), code 1557.  Malongo 1987 is an offshore extension of the Mhast cooordinate system.",Chevron.,EPSG,1998-11-11 00:00:00,,1,0
-1330,Malongo 1987 to WGS 84 (1),transformation,4259,4326,CHV-Ago Cab89,1,1317,"Used for oil exploration by Chevron until superseded in 1990 by trf Malongo 1987 to WGS 84 (2), code 1557.",9603,,,Derived at Station Y in 1989 via WGS72.,Chevron.,EPSG,1998-11-11 00:00:00,,1,0
-1331,EST92 to ETRS89 (1),transformation,4133,4258,UT-Est,1,1090,?,9607,,,,http://www.geo.ut.ee/~raivo/estcoord.html,EPSG,2000-10-19 00:00:00,2000.72,1,0
-1332,Pulkovo 1942 to EST92 (1),transformation,4284,4133,UT-Est,1,1090,?,9607,,,,http://www.geo.ut.ee/~raivo/estcoord.html,EPSG,1998-12-14 00:00:00,,1,0
-1333,EST92 to WGS 84 (1),transformation,4133,4326,UT-Est,1,1090,?,9607,,,,http://www.geo.ut.ee/~raivo/estcoord.html,EPSG,1998-12-14 00:00:00,,1,0
-1334,Pulkovo 1942 to WGS 84 (12),transformation,4284,4326,UT-Est,12,1090,?,9607,,,,http://www.geo.ut.ee/~raivo/estcoord.html,EPSG,1998-12-14 00:00:00,,1,0
-1335,Tokyo to WGS 84 (6),transformation,4301,4326,GSI-Jpn 452141,6,2425,For medium accuracy.,9618,,,,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,1998-12-12 00:00:00,,1,1
-1336,Tokyo to WGS 84 (7),transformation,4301,4326,GSI-Jpn 452142,7,2426,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1337,Tokyo to WGS 84 (8),transformation,4301,4326,GSI-Jpn 444141,8,2427,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1338,Tokyo to WGS 84 (9),transformation,4301,4326,GSI-Jpn 444142,9,2428,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1339,Tokyo to WGS 84 (10),transformation,4301,4326,GSI-Jpn 440141,10,2429,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1340,Tokyo to WGS 84 (11),transformation,4301,4326,GSI-Jpn 440142,11,2430,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1341,Tokyo to WGS 84 (12),transformation,4301,4326,GSI-Jpn 440143,12,2431,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1342,Tokyo to WGS 84 (13),transformation,4301,4326,GSI-Jpn 440144,13,2432,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1343,Tokyo to WGS 84 (14),transformation,4301,4326,GSI-Jpn 432141,14,2433,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1344,Tokyo to WGS 84 (15),transformation,4301,4326,GSI-Jpn 432142,15,2434,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1345,Tokyo to WGS 84 (16),transformation,4301,4326,GSI-Jpn 432143,16,2435,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1346,Tokyo to WGS 84 (17),transformation,4301,4326,GSI-Jpn 432144,17,2436,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1347,Tokyo to WGS 84 (18),transformation,4301,4326,GSI-Jpn 432145,18,2437,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1348,Tokyo to WGS 84 (19),transformation,4301,4326,GSI-Jpn 424140,19,2438,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1349,Tokyo to WGS 84 (20),transformation,4301,4326,GSI-Jpn 424141,20,2439,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,99.77 2002.08,1,0
-1350,Tokyo to WGS 84 (21),transformation,4301,4326,GSI-Jpn 424142,21,2440,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1351,Tokyo to WGS 84 (22),transformation,4301,4326,GSI-Jpn 424143,22,2441,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1352,Tokyo to WGS 84 (23),transformation,4301,4326,GSI-Jpn 424144,23,2442,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1353,Tokyo to WGS 84 (24),transformation,4301,4326,GSI-Jpn 424145,24,2443,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1354,Tokyo to WGS 84 (25),transformation,4301,4326,GSI-Jpn 420139,25,2444,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1355,Tokyo to WGS 84 (26),transformation,4301,4326,GSI-Jpn 420140,26,2445,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1356,Tokyo to WGS 84 (27),transformation,4301,4326,GSI-Jpn 420141,27,2446,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1357,Tokyo to WGS 84 (28),transformation,4301,4326,GSI-Jpn 420142,28,2447,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1358,Tokyo to WGS 84 (29),transformation,4301,4326,GSI-Jpn 420143,29,2448,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1359,Tokyo to WGS 84 (30),transformation,4301,4326,GSI-Jpn 412140,30,2449,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1360,Tokyo to WGS 84 (31),transformation,4301,4326,GSI-Jpn 412141,31,2450,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1361,Tokyo to WGS 84 (32),transformation,4301,4326,GSI-Jpn 404140,32,2451,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1362,Tokyo to WGS 84 (33),transformation,4301,4326,GSI-Jpn 404141,33,2452,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1363,Tokyo to WGS 84 (34),transformation,4301,4326,GSI-Jpn 400139,34,2453,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1364,Tokyo to WGS 84 (35),transformation,4301,4326,GSI-Jpn 400140,35,2454,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1365,Tokyo to WGS 84 (36),transformation,4301,4326,GSI-Jpn 400141,36,2455,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1366,Tokyo to WGS 84 (37),transformation,4301,4326,GSI-Jpn 392139,37,2456,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1367,Tokyo to WGS 84 (38),transformation,4301,4326,GSI-Jpn 392140,38,2457,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1368,Tokyo to WGS 84 (39),transformation,4301,4326,GSI-Jpn 392141,39,2458,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1369,Tokyo to WGS 84 (40),transformation,4301,4326,GSI-Jpn 384139,40,2459,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1370,Tokyo to WGS 84 (41),transformation,4301,4326,GSI-Jpn 384140,41,2460,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1371,Tokyo to WGS 84 (42),transformation,4301,4326,GSI-Jpn 384141,42,2461,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1372,Tokyo to WGS 84 (43),transformation,4301,4326,GSI-Jpn 380139,43,2462,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1373,Tokyo to WGS 84 (44),transformation,4301,4326,GSI-Jpn 380140,44,2463,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1374,Tokyo to WGS 84 (45),transformation,4301,4326,GSI-Jpn 380141,45,2464,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1375,Tokyo to WGS 84 (46),transformation,4301,4326,GSI-Jpn 372136,46,2465,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1376,Tokyo to WGS 84 (47),transformation,4301,4326,GSI-Jpn 372137,47,2466,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1377,Tokyo to WGS 84 (48),transformation,4301,4326,GSI-Jpn 372138,48,2467,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1378,Tokyo to WGS 84 (49),transformation,4301,4326,GSI-Jpn 372139,49,2468,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1379,Tokyo to WGS 84 (50),transformation,4301,4326,GSI-Jpn 372140,50,2469,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1380,Tokyo to WGS 84 (51),transformation,4301,4326,GSI-Jpn 372141,51,2470,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1381,Tokyo to WGS 84 (52),transformation,4301,4326,GSI-Jpn 364136,52,2471,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1382,Tokyo to WGS 84 (53),transformation,4301,4326,GSI-Jpn 364137,53,2472,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1383,Tokyo to WGS 84 (54),transformation,4301,4326,GSI-Jpn 364138,54,2473,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1384,Tokyo to WGS 84 (55),transformation,4301,4326,GSI-Jpn 364139,55,2474,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1385,Tokyo to WGS 84 (56),transformation,4301,4326,GSI-Jpn 364140,56,2475,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1386,Tokyo to WGS 84 (57),transformation,4301,4326,GSI-Jpn 360136,57,2476,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1387,Tokyo to WGS 84 (58),transformation,4301,4326,GSI-Jpn 360137,58,2477,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1388,Tokyo to WGS 84 (59),transformation,4301,4326,GSI-Jpn 360138,59,2478,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1389,Tokyo to WGS 84 (60),transformation,4301,4326,GSI-Jpn 360139,60,2479,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1390,Tokyo to WGS 84 (61),transformation,4301,4326,GSI-Jpn 360140,61,2480,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1391,Tokyo to WGS 84 (62),transformation,4301,4326,GSI-Jpn 352132,62,2481,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1392,Tokyo to WGS 84 (63),transformation,4301,4326,GSI-Jpn 352133,63,2482,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1393,Tokyo to WGS 84 (64),transformation,4301,4326,GSI-Jpn 352134,64,2483,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1394,Tokyo to WGS 84 (65),transformation,4301,4326,GSI-Jpn 352135,65,2484,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1395,Tokyo to WGS 84 (66),transformation,4301,4326,GSI-Jpn 352136,66,2485,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1396,Tokyo to WGS 84 (67),transformation,4301,4326,GSI-Jpn 352137,67,2486,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1397,Tokyo to WGS 84 (68),transformation,4301,4326,GSI-Jpn 352138,68,2487,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1398,Tokyo to WGS 84 (69),transformation,4301,4326,GSI-Jpn 352139,69,2488,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1399,Tokyo to WGS 84 (70),transformation,4301,4326,GSI-Jpn 352140,70,2489,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1400,Tokyo to WGS 84 (71),transformation,4301,4326,GSI-Jpn 344132,71,2490,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1401,Tokyo to WGS 84 (72),transformation,4301,4326,GSI-Jpn 344133,72,2491,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1402,Tokyo to WGS 84 (73),transformation,4301,4326,GSI-Jpn 344134,73,2492,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1403,Tokyo to WGS 84 (74),transformation,4301,4326,GSI-Jpn 344135,74,2493,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1404,Tokyo to WGS 84 (75),transformation,4301,4326,GSI-Jpn 344136,75,2494,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1405,Tokyo to WGS 84 (76),transformation,4301,4326,GSI-Jpn 344137,76,2495,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1406,Tokyo to WGS 84 (77),transformation,4301,4326,GSI-Jpn 344138,77,2496,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1407,Tokyo to WGS 84 (78),transformation,4301,4326,GSI-Jpn 344139,78,2497,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1408,Tokyo to WGS 84 (79),transformation,4301,4326,GSI-Jpn 344140,79,2498,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1409,Tokyo to WGS 84 (80),transformation,4301,4326,GSI-Jpn 340130,80,2499,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1410,Tokyo to WGS 84 (81),transformation,4301,4326,GSI-Jpn 340131,81,2500,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1411,Tokyo to WGS 84 (82),transformation,4301,4326,GSI-Jpn 340132,82,2501,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1412,Tokyo to WGS 84 (83),transformation,4301,4326,GSI-Jpn 340133,83,2502,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1413,Tokyo to WGS 84 (84),transformation,4301,4326,GSI-Jpn 340134,84,2503,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1414,Tokyo to WGS 84 (85),transformation,4301,4326,GSI-Jpn 340135,85,2504,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1415,Tokyo to WGS 84 (86),transformation,4301,4326,GSI-Jpn 340136,86,2505,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1416,Tokyo to WGS 84 (87),transformation,4301,4326,GSI-Jpn 340137,87,2506,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1417,Tokyo to WGS 84 (88),transformation,4301,4326,GSI-Jpn 340138,88,2507,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1418,Tokyo to WGS 84 (89),transformation,4301,4326,GSI-Jpn 332129,89,2508,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1419,Tokyo to WGS 84 (90),transformation,4301,4326,GSI-Jpn 332130,90,2509,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1420,Tokyo to WGS 84 (91),transformation,4301,4326,GSI-Jpn 332131,91,2510,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1421,Tokyo to WGS 84 (92),transformation,4301,4326,GSI-Jpn 332132,92,2511,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1422,Tokyo to WGS 84 (93),transformation,4301,4326,GSI-Jpn 332133,93,2512,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1423,Tokyo to WGS 84 (94),transformation,4301,4326,GSI-Jpn 332134,94,2513,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1424,Tokyo to WGS 84 (95),transformation,4301,4326,GSI-Jpn 332135,95,2514,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1425,Tokyo to WGS 84 (96),transformation,4301,4326,GSI-Jpn 332136,96,2515,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1426,Tokyo to WGS 84 (97),transformation,4301,4326,GSI-Jpn 324129,97,2516,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1427,Tokyo to WGS 84 (98),transformation,4301,4326,GSI-Jpn 324130,98,2517,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1428,Tokyo to WGS 84 (99),transformation,4301,4326,GSI-Jpn 324131,99,2518,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1429,Tokyo to WGS 84 (100),transformation,4301,4326,GSI-Jpn 324132,100,2519,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1430,Tokyo to WGS 84 (101),transformation,4301,4326,GSI-Jpn 324133,101,2520,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1431,Tokyo to WGS 84 (102),transformation,4301,4326,GSI-Jpn 324134,102,2521,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1432,Tokyo to WGS 84 (103),transformation,4301,4326,GSI-Jpn 320130,103,2522,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1433,Tokyo to WGS 84 (104),transformation,4301,4326,GSI-Jpn 320131,104,2523,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1434,Tokyo to WGS 84 (105),transformation,4301,4326,GSI-Jpn 320132,105,2524,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1435,Tokyo to WGS 84 (106),transformation,4301,4326,GSI-Jpn 312130,106,2525,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1436,Tokyo to WGS 84 (107),transformation,4301,4326,GSI-Jpn 312131,107,2526,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,2002.08,1,0
-1437,RT90 to ETRS89 (1),transformation,4124,4258,NLS-Swe,1,1225,Accuracy 0.5m.,9607,,,This transformation is actually between ETRS89 and RR92.  RR92 is a geographic 3D coordinate system where the horizontal component is RT90. Also at EuroGeographics; http:/crs.ifag.de/ with change of rotation convention (transformation method). Derived at,National Land Survey of Sweden.,EPSG,2000-10-19 00:00:00,99.11  2000.72,1,0
-1438,Fahud to WGS 84 (2),transformation,4232,4326,PDO-Omn,2,1183,Oil exploration.,9606,,,,Petroleum Development Oman,EPSG,1999-04-22 00:00:00,,1,0
-1439,PSD93 to WGS 84 (1),transformation,4134,4326,PDO-Omn 97,1,1183,Oil exploration. Residuals 0.5m at 67% probability level.,9606,,,Superseded PSD93 to WGS 84 (2) (code 8581) in 1997.,Petroleum Development Oman,EPSG,2001-06-05 00:00:00,2000.28,1,0
-1440,ED50 to WGS 84 (19),transformation,4230,4326,HEL-Grc,19,1106,Used in oil industry.,9603,,,,Geodesy Department; Hellenic Petroleum s.a.,EPSG,1999-04-22 00:00:00,,1,0
-1441,Antigua 1943 to WGS 84 (1),transformation,4601,4326,DOS-Atg Ant,1,1273,?,9603,,,,Ordnance Survey of Great Britain,EPSG,1999-04-22 00:00:00,,1,0
-1442,Dominica 1945 to WGS 84 (1),transformation,4602,4326,DOS-Dma,1,1082,?,9603,,,,Ordnance Survey of Great Britain,EPSG,1999-04-22 00:00:00,,1,0
-1443,Grenada 1953 to WGS 84 (1),transformation,4603,4326,DOS-Grd,1,1108,?,9603,,,,Ordnance Survey of Great Britain,EPSG,1999-04-22 00:00:00,,1,0
-1444,Montserrat 1958 to WGS 84 (1),transformation,4604,4326,DOS-Msr,1,1165,?,9603,,,,Ordnance Survey of Great Britain,EPSG,1999-04-22 00:00:00,,1,0
-1445,St. Kitts 1955 to WGS 84 (1),transformation,4605,4326,DOS-Kna,1,1200,?,9603,,,,Ordnance Survey of Great Britain,EPSG,1999-04-22 00:00:00,,1,0
-1446,St. Lucia 1955 to WGS 84 (1),transformation,4606,4326,DOS-Lca,1,1201,?,9603,,,,Ordnance Survey of Great Britain,EPSG,1999-04-22 00:00:00,,1,0
-1447,Anguilla 1957 to WGS 84 (1),transformation,4600,4326,DOS-Aia,1,1030,?,9619,,,,Ordnance Survey of Great Britain,EPSG,1999-04-22 00:00:00,,1,0
-1450,ED50 to WGS 84 (20),transformation,4230,4326,NMA-Nor 6265W,20,2333,Oil exploration before 1997/2001.,9620,,,Valid 1991-1997. Superseded in 1997 by ED50 to WGS 84 (22) (code 1590) and in 2001 by ED50 to WGS 84 (23) (code 1612).,"Norwegian Mapping Authority note of 13-Feb-1991 ""Om Transformasjon mellom Geodetiske Datum i Norge"".",EPSG,2000-03-07 00:00:00,2000.14,1,0
-1451,NAD27(CGQ77) to NAD83 (1),transformation,4609,4269,SGQ-Can QC NT1,1,1368,Historic record only - now superseded - see remarks.,9614,,,Superseded by NAD27(CGQ77) to NAD83 (2) (code 1575).  Uses NT method which expects longitudes positive west; EPSG GeogCRSs CGQ77 (code 4609) and NAD83 (code 4269) have longitudes positive east.,Geodetic Service of Quebec.  Contact alain.bernard at mrn.gouv.qc.ca,EPSG,2000-03-07 00:00:00,2000.14,1,0
-1454,Old Hawaiian to NAD83 (1),transformation,4135,4269,NGS-Usa HI,1,1334,Accuracy at 67% confidence level is 0.2m.,9613,,,Uses NADCON method which expects longitudes positive west; EPSG GeogCRSs Old Hawaiian (code 4135) and NAD83 (code 4269) have longitudes positive east.  NADCON data converts from Old Hawaiian Datum to but makes the transformation appear to be from NAD27.,US Coast & Geodetic Survey  www.ngs.noaa.gov,EPSG,2000-03-07 00:00:00,2000.14,1,0
-1455,St. Lawrence Island to NAD83 (1),transformation,4136,4269,NGS-Usa AK StL,1,1332,Accuracy 0.5m at 67% confidence level.,9613,,,Uses NADCON method which expects longitudes positive west; EPSG GeogCRSs St. Lawrence (code 4136) and NAD83 (code 4269) have longitudes positive east. NADCON data converts from St. Lawrence Datum to but makes the transformation appear to be from NAD27.,US Coast & Geodetic Survey  www.ngs.noaa.gov,EPSG,2000-03-07 00:00:00,2000.14,1,0
-1456,St. Paul Island to NAD83 (1),transformation,4137,4269,NGS-Usa AK StP,1,1333,Accuracy 0.5m at 67% confidence level.,9613,,,Uses NADCON method which expects longitudes positive west; EPSG GeogCRSs St. Paul (code 4137) and NAD83 (code 4269) have longitudes positive east. NADCON data converts from St. Paul Datum to but makes the transformation appear to be from NAD27.,US Coast & Geodetic Survey  www.ngs.noaa.gov,EPSG,2000-03-07 00:00:00,2000.14,1,0
-1457,St. George Island to NAD83 (1),transformation,4138,4269,NGS-Usa AK StG,1,1331,Accuracy 0.5m at 67% confidence level.,9613,,,Uses NADCON method which expects longitudes positive west; EPSG GeogCRSs St. George (code 4138) and NAD83 (code 4269) have longitudes positive east. NADCON data converts from St. George Datum to but makes the transformation appear to be from NAD27.,US Coast & Geodetic Survey  www.ngs.noaa.gov,EPSG,2000-03-07 00:00:00,2000.14,1,0
-1458,AGD66 to GDA94 (2),transformation,4202,4283,Auslig-ACT 1m,2,2283,Recommended for mid-accuracy use in A.C.T.  1m accuracy.,9607,,,For higher accuracy requirements see AGD66 to GDA94 (10) (code 1596).  May be taken as approximate transformation AGD66 to WGS 84 - see code 1665.,GDA Technical Manual. http://www.anzlic.org.au/icsm/gdatm/regional.htm,EPSG,1999-05-25 00:00:00,,1,0
-1459,AGD66 to GDA94 (3),transformation,4202,4283,Auslig-Tas 1m old,3,1282,1m accuracy.,9607,,,Superseded in 2000 by AGD66 to GDA94 (8) (code 1594). Differences are sub-metre.,GDA Technical Manual version Dec 1998. http://www.anzlic.org.au/icsm/gdatm/regional.htm,EPSG,1999-05-25 00:00:00,2000.68,1,0
-1460,AGD66 to GDA94 (4),transformation,4202,4283,Auslig-NSW Vic 1m,4,2286,Recommended for mid-accuracy use in NSW and Victoria.  1m accuracy.,9607,,,For higher accuracy requirements see AGD66 to GDA94 (10) (code 1596).  May be taken as approximate transformation AGD66 to WGS 84 - see code 1666.,GDA Technical Manual. http://www.anzlic.org.au/icsm/gdatm/regional.htm,EPSG,1999-05-25 00:00:00,,1,0
-1461,Puerto Rico to NAD83 (1),transformation,4139,4269,NGS-PRVI,1,1335,Accuracy 0.05m at 67% confidence level.,9613,,,,US Coast & Geodetic Survey  www.ngs.noaa.gov,EPSG,2000-03-07 00:00:00,2000.14,1,0
-1462,NAD27 to NAD83 (5),transformation,4267,4269,SGQ-Can QC NT1,5,1368,Historic record only - now superseded - see remarks.,9614,,,Densification for Quebec of code 1312. Superseded by NAD27 to NAD83 (6) (code 1573).  Uses NT method which expects longitudes positive west; EPSG GeogCRSs NAD27 (code 4267) and NAD83 (code 4269) have longitudes positive east.,Geodetic Service of Quebec.  Contact alain.bernard at mrn.gouv.qc.ca,EPSG,2000-03-07 00:00:00,2000.14,1,0
-1463,NAD27(76) to NAD83 (1),transformation,4608,4269,SGQ-Can Ont,1,1367,?,9615,,,Uses NT method which expects longitudes positive west; EPSG GeogCRSs NAD27(76) (code 4608) and NAD83 (code 4269) have longitudes positive east. May be taken as approximate transformation NAD27(76) to WGS 84 - see code 1690.,Geodetic Survey of Canada   http://www.geod.emr.ca/html-public/GSDapps/English/NTv2_Fact_Sheet.html,EPSG,2000-03-07 00:00:00,2000.14,1,0
-1464,AGD66 to GDA94 (5),transformation,4202,4283,OSG-Aus Vic old,5,2285,0.1m accuracy.,9615,,,Superseded by AGD66 to GDA94 (10) (code 1596) and then by AGD66 to GDA94 (11) (code 1803).  Input expects longitudes to be positive west; EPSG GeogCRS AGD66 (code 4202) and GDA94 (code 4283) both have longitudes positive east.,http://www.osg.vic.gov.au/tools.htm,EPSG,2000-03-07 00:00:00,99.67  2000.14  2000.68,1,0
-1466,NGO 1948 (Oslo) to NGO1948 (Greenwich),transformation,4817,4273,NGO-Nor,1,1352,Change of prime meridian.,9601,,,,"J. Danielsen; ""Transformasjoner ved Norges Geografiske Oppm�ling""; Kart Og Plan nr 1; 1982.",EPSG,1999-11-12 00:00:00,99.79,1,1
-1467,NTF (Paris) to NTF (Greenwich) (1),transformation,4807,4275,IGN-Fra,1,1096,Change of prime meridian.,9601,,,,IGN Paris.,EPSG,1999-11-12 00:00:00,99.63  99.79,1,1
-1468,NTF (Paris) to NTF (Greenwich) (2),transformation,4807,4275,RGS,2,1096,Change of prime meridian.,9601,,,EPSG prefers value from IGN Paris (code 1467).,Royal Geographic Society; London,EPSG,1999-11-12 00:00:00,99.63  99.79,1,1
-1469,Locodjo 1965 to WGS 84 (1),transformation,4142,4326,IGN-Civ,1,2282,?,9603,,,,IGN Paris,EPSG,1999-10-20 00:00:00,,1,0
-1470,Abidjan 1987 to WGS 84 (1),transformation,4143,4326,IGN-Civ,1,2282,?,9603,,,,IGN Paris,EPSG,1999-10-20 00:00:00,,1,0
-1471,MGI to WGS 84 (2),transformation,4312,4326,BEV-Aut,1,1037,For applications to an accuracy of 1.5 metres.,9606,,,,Bundesamt f�r Eich- und Vermessungswesen,EPSG,1999-10-20 00:00:00,,1,1
-1472,ATS77 to NAD83(CSRS98) (1),transformation,4122,4140,GIC-Can NB,1,1447,?,9615,,,Introduced in 1999. Can be taken as an approximate transformation ATS77 to WGS 84 - see code 1688.,New Brunswick Geographic Information Corporation land and water information standards manual.,EPSG,2000-10-19 00:00:00,2000.14  2000.66,1,1
-1473,NAD83(CSRS98) to WGS 84 (1),transformation,4140,4326,EPSG-Can,1,1336,Approximation at the +/- 1m level assuming that NAD83(CSRS98) is equivalent to WGS 84.,9603,,,For many purposes NAD83(CSRS98) can be considered to be coincident with WGS 84.,EPSG,EPSG,1999-10-20 00:00:00,,1,1
-1474,NAD83 to NAD83(HARN) (1),transformation,4269,4152,NGS-Usa AL,1,1372,Geodetic survey. Accuracy 0.05m at 67% confidence level.,9613,,,Uses NADCON method which expects longitudes positive west; EPSG GeogCRSs NAD83 (code 4269) and NAD83(HARN) (code 4152) have longitudes positive east.  May be taken as approximate transformation NAD83-WGS 84 - see code 1717.,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,2000-03-07 00:00:00,99.931  2000.14,1,0
-1475,NAD83 to NAD83(HARN) (2),transformation,4269,4152,NGS-Usa AZ,2,1373,Geodetic survey. Accuracy 0.05m at 67% confidence level.,9613,,,Uses NADCON method which expects longitudes positive west; EPSG GeogCRSs NAD83 (code 4269) and NAD83(HARN) (code 4152) have longitudes positive east.   May be taken as approximate transformation NAD83-WGS 84 - see code 1728.,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,2000-03-07 00:00:00,99.931  2000.14,1,0
-1476,NAD83 to NAD83(HARN) (3),transformation,4269,4152,NGS-Usa CA n,3,2297,Geodetic survey. Accuracy 0.05m at 67% confidence level.,9613,,,Uses NADCON method which expects longitudes positive west; EPSG GeogCRSs NAD83 (code 4269) and NAD83(HARN) (code 4152) have longitudes positive east.   May be taken as approximate transformation NAD83-WGS 84 - see code 1739.,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,2000-03-07 00:00:00,99.931  2000.14,1,0
-1477,NAD83 to NAD83(HARN) (4),transformation,4269,4152,NGS-Usa CA s,4,2298,Geodetic survey. Accuracy 0.05m at 67% confidence level.,9613,,,Uses NADCON method which expects longitudes positive west; EPSG GeogCRSs NAD83 (code 4269) and NAD83(HARN) (code 4152) have longitudes positive east.   May be taken as approximate transformation NAD83-WGS 84 - see code 1750.,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,2000-03-07 00:00:00,99.931  2000.14,1,0
-1478,NAD83 to NAD83(HARN) (5),transformation,4269,4152,NGS-Usa CO,5,1376,Geodetic survey. Accuracy 0.05m at 67% confidence level.,9613,,,Uses NADCON method which expects longitudes positive west; EPSG GeogCRSs NAD83 (code 4269) and NAD83(HARN) (code 4152) have longitudes positive east.   May be taken as approximate transformation NAD83-WGS 84 - see code 1712.,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,2000-03-07 00:00:00,99.931  2000.14,1,0
-1479,NAD83 to NAD83(HARN) (6),transformation,4269,4152,NGS-Usa GA,6,1380,Geodetic survey. Accuracy 0.05m at 67% confidence level.,9613,,,Uses NADCON method which expects longitudes positive west; EPSG GeogCRSs NAD83 (code 4269) and NAD83(HARN) (code 4152) have longitudes positive east.   May be taken as approximate transformation NAD83-WGS 84 - see code 1713.,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,2000-03-07 00:00:00,99.931  2000.14,1,0
-1480,NAD83 to NAD83(HARN) (7),transformation,4269,4152,NGS-Usa FL,7,1379,Geodetic survey. Accuracy 0.05m at 67% confidence level.,9613,,,Uses NADCON method which expects longitudes positive west; EPSG GeogCRSs NAD83 (code 4269) and NAD83(HARN) (code 4152) have longitudes positive east.   May be taken as approximate transformation NAD83-WGS 84 - see code 1714.,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,2000-03-07 00:00:00,99.931  2000.14,1,0
-1481,NAD83 to NAD83(HARN) (8),transformation,4269,4152,NGS-Usa ID MT e,8,2382,Geodetic survey. Accuracy 0.05m at 67% confidence level.,9613,,,Uses NADCON method which expects longitudes positive west; EPSG GeogCRSs NAD83 (code 4269) and NAD83(HARN) (code 4152) have longitudes positive east.  May be taken as approximate transformation NAD83-WGS 84 - see code 1715.,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,2000-03-07 00:00:00,99.931  2000.14,1,0
-1482,NAD83 to NAD83(HARN) (9),transformation,4269,4152,NGS-Usa ID MT w,9,2383,Geodetic survey. Accuracy 0.05m at 67% confidence level.,9613,,,Uses NADCON method which expects longitudes positive west; EPSG GeogCRSs NAD83 (code 4269) and NAD83(HARN) (code 4152) have longitudes positive east.   May be taken as approximate transformation NAD83-WGS 84 - see code 1716.,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,2000-03-07 00:00:00,99.931  2000.14,1,0
-1483,NAD83 to NAD83(HARN) (10),transformation,4269,4152,NGS-Usa KY,10,1386,Geodetic survey. Accuracy 0.05m at 67% confidence level.,9613,,,Uses NADCON method which expects longitudes positive west; EPSG GeogCRSs NAD83 (code 4269) and NAD83(HARN) (code 4152) have longitudes positive east.   May be taken as approximate transformation NAD83-WGS 84 - see code 1718.,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,2000-03-07 00:00:00,99.931  2000.14,1,0
-1484,NAD83 to NAD83(HARN) (11),transformation,4269,4152,NGS-Usa LA,11,1387,Geodetic survey. Accuracy 0.05m at 67% confidence level.,9613,,,Uses NADCON method which expects longitudes positive west; EPSG GeogCRSs NAD83 (code 4269) and NAD83(HARN) (code 4152) have longitudes positive east.   May be taken as approximate transformation NAD83-WGS 84 - see code 1719.,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,2000-03-07 00:00:00,99.931  2000.14,1,0
-1485,NAD83 to NAD83(HARN) (12),transformation,4269,4152,NGS-Usa DE MD,12,2377,Geodetic survey. Accuracy 0.05m at 67% confidence level.,9613,,,Uses NADCON method which expects longitudes positive west; EPSG GeogCRSs NAD83 (code 4269) and NAD83(HARN) (code 4152) have longitudes positive east.   May be taken as approximate transformation NAD83-WGS 84 - see code 1720.,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,2000-03-07 00:00:00,99.931  2000.14,1,0
-1486,NAD83 to NAD83(HARN) (13),transformation,4269,4152,NGS-Usa ME,13,1388,Geodetic survey. Accuracy 0.05m at 67% confidence level.,9613,,,Uses NADCON method which expects longitudes positive west; EPSG GeogCRSs NAD83 (code 4269) and NAD83(HARN) (code 4152) have longitudes positive east.   May be taken as approximate transformation NAD83-WGS 84 - see code 1721.,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,2000-03-07 00:00:00,99.931  2000.14,1,0
-1487,NAD83 to NAD83(HARN) (14),transformation,4269,4152,NGS-Usa MI,14,1391,Geodetic survey. Accuracy 0.05m at 67% confidence level.,9613,,,Uses NADCON method which expects longitudes positive west; EPSG GeogCRSs NAD83 (code 4269) and NAD83(HARN) (code 4152) have longitudes positive east.   May be taken as approximate transformation NAD83-WGS 84 - see code 1722.,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,2000-03-07 00:00:00,99.931  2000.14,1,0
-1488,NAD83 to NAD83(HARN) (15),transformation,4269,4152,NGS-Usa MS,15,1393,Geodetic survey. Accuracy 0.05m at 67% confidence level.,9613,,,Uses NADCON method which expects longitudes positive west; EPSG GeogCRSs NAD83 (code 4269) and NAD83(HARN) (code 4152) have longitudes positive east.   May be taken as approximate transformation NAD83-WGS 84 - see code 1723.,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,2000-03-07 00:00:00,99.931  2000.14,1,0
-1489,NAD83 to NAD83(HARN) (16),transformation,4269,4152,NGS-Usa NE,16,1396,Geodetic survey. Accuracy 0.05m at 67% confidence level.,9613,,,Uses NADCON method which expects longitudes positive west; EPSG GeogCRSs NAD83 (code 4269) and NAD83(HARN) (code 4152) have longitudes positive east.   May be taken as approximate transformation NAD83-WGS 84 - see code 1724.,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,2000-03-07 00:00:00,99.931  2000.14,1,0
-1490,NAD83 to NAD83(HARN) (17),transformation,4269,4152,NGS-Usa NewEng,17,2378,Geodetic survey. Accuracy 0.05m at 67% confidence level.,9613,,,Uses NADCON method which expects longitudes positive west; EPSG GeogCRSs NAD83 (code 4269) and NAD83(HARN) (code 4152) have longitudes positive east.   May be taken as approximate transformation NAD83-WGS 84 - see code 1725.,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,2000-03-07 00:00:00,99.931  2000.14,1,0
-1491,NAD83 to NAD83(HARN) (18),transformation,4269,4152,NGS-Usa NM,18,1400,Geodetic survey. Accuracy 0.05m at 67% confidence level.,9613,,,Uses NADCON method which expects longitudes positive west; EPSG GeogCRSs NAD83 (code 4269) and NAD83(HARN) (code 4152) have longitudes positive east.   May be taken as approximate transformation NAD83-WGS 84 - see code 1726.,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,2000-03-07 00:00:00,99.931  2000.14,1,0
-1492,NAD83 to NAD83(HARN) (19),transformation,4269,4152,NGS-Usa NY,19,1401,Geodetic survey. Accuracy 0.05m at 67% confidence level.,9613,,,Uses NADCON method which expects longitudes positive west; EPSG GeogCRSs NAD83 (code 4269) and NAD83(HARN) (code 4152) have longitudes positive east.   May be taken as approximate transformation NAD83-WGS 84 - see code 1727.,US Coast & Geodetic Survey  ftp://ftp.ngs.noaa.gov/pub/pcsoft/nadcon,EPSG,2000-03-07 00:00:00,99.931  2000.14,1,0
-1493,NAD83 to NAD83(HARN) (20),transformation,4269,4152,NGS-Usa ND,20,1403,Geodetic survey. Accuracy 0.05m at 67% confidence level.,9613,,,Uses NADCON method which expects longitudes positive west; EPSG GeogCRSs NAD83 (code 4269) and NAD83(HARN) (code 4152) have longitudes positive east.   May be taken as approximate transformation NAD83-WGS 84 - see code 1729.,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,2000-03-07 00:00:00,99.931  2000.14,1,0
-1494,NAD83 to NAD83(HARN) (21),transformation,4269,4152,NGS-Usa OK,21,1405,Geodetic survey. Accuracy 0.05m at 67% confidence level.,9613,,,Uses NADCON method which expects longitudes positive west; EPSG GeogCRSs NAD83 (code 4269) and NAD83(HARN) (code 4152) have longitudes positive east.   May be taken as approximate transformation NAD83-WGS 84 - see code 1730.,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,2000-03-07 00:00:00,99.931  2000.14,1,0
-1495,NAD83 to NAD83(HARN) (22),transformation,4269,4152,NGS-PRVI,22,1335,Geodetic survey. Accuracy 0.05m at 67% confidence level.,9613,,,Uses NADCON method which expects longitudes positive west; EPSG GeogCRSs NAD83 (code 4269) and NAD83(HARN) (code 4152) have longitudes positive east.   May be taken as approximate transformation NAD83-WGS 84 - see code 1731.,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,2000-03-07 00:00:00,99.931  2000.14,1,0
-1496,NAD83 to NAD83(HARN) (23),transformation,4269,4152,NGS-Usa SD,23,1410,Geodetic survey. Accuracy 0.05m at 67% confidence level.,9613,,,Uses NADCON method which expects longitudes positive west; EPSG GeogCRSs NAD83 (code 4269) and NAD83(HARN) (code 4152) have longitudes positive east.   May be taken as approximate transformation NAD83-WGS 84 - see code 1732.,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,2000-03-07 00:00:00,99.931  2000.14,1,0
-1497,NAD83 to NAD83(HARN) (24),transformation,4269,4152,NGS-Usa TN,24,1411,Geodetic survey. Accuracy 0.05m at 67% confidence level.,9613,,,Uses NADCON method which expects longitudes positive west; EPSG GeogCRSs NAD83 (code 4269) and NAD83(HARN) (code 4152) have longitudes positive east.   May be taken as approximate transformation NAD83-WGS 84 - see code 1733.,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,2000-03-07 00:00:00,99.931  2000.14,1,0
-1498,NAD83 to NAD83(HARN) (25),transformation,4269,4152,NGS-Usa TX e,25,2379,Geodetic survey. Accuracy 0.05m at 67% confidence level.,9613,,,Uses NADCON method which expects longitudes positive west; EPSG GeogCRSs NAD83 (code 4269) and NAD83(HARN) (code 4152) have longitudes positive east.   May be taken as approximate transformation NAD83-WGS 84 - see code 1734.,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,2000-03-07 00:00:00,99.931  2000.14,1,0
-1499,NAD83 to NAD83(HARN) (26),transformation,4269,4152,NGS-Usa TX w,26,2380,Geodetic survey. Accuracy 0.05m at 67% confidence level.,9613,,,Uses NADCON method which expects longitudes positive west; EPSG GeogCRSs NAD83 (code 4269) and NAD83(HARN) (code 4152) have longitudes positive east.   May be taken as approximate transformation NAD83-WGS 84 - see code 1735.,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,2000-03-07 00:00:00,99.931  2000.14,1,0
-1500,NAD83 to NAD83(HARN) (27),transformation,4269,4152,NGS-Usa VA,27,1415,Geodetic survey. Accuracy 0.05m at 67% confidence level.,9613,,,Uses NADCON method which expects longitudes positive west; EPSG GeogCRSs NAD83 (code 4269) and NAD83(HARN) (code 4152) have longitudes positive east.   May be taken as approximate transformation NAD83-WGS 84 - see code 1736.,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,2000-03-07 00:00:00,99.931  2000.14,1,0
-1501,NAD83 to NAD83(HARN) (28),transformation,4269,4152,NGS-Usa OR WA,28,2381,Geodetic survey. Accuracy 0.05m at 67% confidence level.,9613,,,Uses NADCON method which expects longitudes positive west; EPSG GeogCRSs NAD83 (code 4269) and NAD83(HARN) (code 4152) have longitudes positive east.   May be taken as approximate transformation NAD83-WGS 84 - see code 1737.,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,2000-03-07 00:00:00,99.931  2000.14,1,0
-1502,NAD83 to NAD83(HARN) (29),transformation,4269,4152,NGS-Usa WI,29,1418,Geodetic survey. Accuracy 0.05m at 67% confidence level.,9613,,,Uses NADCON method which expects longitudes positive west; EPSG GeogCRSs NAD83 (code 4269) and NAD83(HARN) (code 4152) have longitudes positive east.   May be taken as approximate transformation NAD83-WGS 84 - see code 1738.,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,2000-03-07 00:00:00,99.931  2000.14,1,0
-1503,NAD83 to NAD83(HARN) (30),transformation,4269,4152,NGS-Usa WY,30,1419,Geodetic survey. Accuracy 0.05m at 67% confidence level.,9613,,,Uses NADCON method which expects longitudes positive west; EPSG GeogCRSs NAD83 (code 4269) and NAD83(HARN) (code 4152) have longitudes positive east.   May be taken as approximate transformation NAD83-WGS 84 - see code 1740.,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,2000-03-07 00:00:00,99.931  2000.14,1,0
-1504,Cape to Hartebeesthoek94 (1),transformation,4222,4148,DSM-Zaf,1,1215,?,9603,,,Also used to transform Cape to WGS 84 - see code 1129.,Directorate of Surveys and Mapping; http://w3sli.wcape.gov.za/surveys/mapping/wgs84.htm,EPSG,2000-01-06 00:00:00,99.96,1,0
-1505,Hartebeesthoek94 to WGS 84 (1),transformation,4148,4326,EPSG-Zaf,1,1215,For many purposes Hartebeesthoek94 datum can be considered to be coincident with WGS 84.,9603,,,,EPSG,EPSG,2000-01-06 00:00:00,99.96,1,0
-1506,AGD66 to GDA94 (6),transformation,4202,4283,OSG-Tas 0.1m,6,1282,0.1m accuracy.,9615,,,Superseded by AGD66 to GDA94 (11) (code 1803). Input expects longitudes to be positive west; EPSG GeogCRS AGD66 (code 4202) and GDA94 (code 4283) both have longitudes positive east.,http://www.delm.tas.gov.au/osg/Geodetic_transform.htm,EPSG,2000-03-07 00:00:00,2000.14,1,0
-1507,AGD66 to GDA94 (7),transformation,4202,4283,Auslig-NT 0.1m,7,2284,0.1m accuracy.,9615,,,Superseded by AGD66 to GDA94 (11) (code 1803). Input expects longitudes to be positive west; EPSG GeogCRS AGD66 (code 4202) and GDA94 (code 4283) both have longitudes positive east.,GDA Technical Manual. http://www.anzlic.org.au/icsm/gdatm/chapter7.htm#high,EPSG,2000-03-07 00:00:00,2000.14,1,0
-1508,CH1903 to WGS 84 (1),transformation,4149,4326,BfL-CH 1,1,1286,?,9607,,,Implemented in Bundesamt f�r Landestopographie programme GRANIT.,Bundesamt f�r Landestopographie.  Aufbau der Landesvermessung der Schweiz 'LV95' Teil 3: Terrestrische Bezugssysteme und Bezugsrahmen. L+T 1999.,EPSG,1999-10-20 00:00:00,,1,1
-1509,CH1903+ to CHTRF95 (1),transformation,4150,4151,BfL-CH,1,1286,For applications to an accuracy of 0.1 metres.,9603,,,This transformation is also given as CH1903+ to ETRS89 (1) (code 1647). CHTRF95 is a realisation of ETRS89. May be taken as approximate transformation CH1903+ to WGS 84 - see code 1676.,Bundesamt f�r Landestopographie.  Aufbau der Landesvermessung der Schweiz 'LV95' Teil 3: Terrestrische Bezugssysteme und Bezugsrahmen. L+T 1999.,EPSG,1999-10-20 00:00:00,,1,0
-1510,CH1903 to WGS 84 (2),transformation,4149,4326,BfL-CH 2,2,1286,Accuracy 1.5 metres.,9603,,,These parameters are strictly between CH1903+ and CHTRF95 but are used from CH1903 as an approximation which is within the accuracy of the distortions in the CH1903 network.,Bundesamt f�r Landestopographie.  Aufbau der Landesvermessung der Schweiz 'LV95' Teil 3: Terrestrische Bezugssysteme und Bezugsrahmen. L+T 1999.,EPSG,1999-10-20 00:00:00,,1,1
-1511,CHTRF95 to WGS 84 (1),transformation,4151,4326,EPSG-CH,1,1286,For many purposes CHTRF95 can be considered to be coincident with WGS 84.,9603,,,,EPSG,EPSG,1999-10-20 00:00:00,,1,0
-1512,Rassadiran to WGS 84 (1),transformation,4153,4326,TOT-Irn Taheri,1,1338,Oil industry engineering survey. Used only for terminal site.,9603,,,Derived in 1998 at Assaluyeh (Taheri refinery) by Geoid for Total. Used for South Pars phases 2 and 3.,Total-Fina,EPSG,1999-10-20 00:00:00,,1,0
-1513,FD58 to WGS 84 (1),transformation,4132,4326,TOT-Irn Kangan,1,2362,Oil exploration.,9603,,,Derived in 1998 in Kangan district by Geoid for Total. Used for South Pars phases 2 and 3.,Total-Fina,EPSG,1999-10-20 00:00:00,,1,0
-1514,ED50(ED77) to WGS 84 (1),transformation,4154,4326,NCCI-Irn,1,1123,?,9606,,,"Used for South Pars phases 6, 7 and 8.",National Cartographic Centre of Iran,EPSG,1999-10-20 00:00:00,,1,0
-1515,NAD83 to WGS 84 (5),transformation,4269,4326,NGS-Usa ITRF96,5,1323,Geodesy.,9607,,,Strictly between NAD83 and ITRF96(1997.0).  Supersedes NAD83 to WGS 84 (4) (code 1308)., http://www.ngs.noaa.gov/CORS/Derivation.html,EPSG,1999-11-05 00:00:00,,1,0
-1516,La Canoa to WGS 84 (1),transformation,4247,4326,LAG-Ven E,1,2363,Parameter values estimated accuracy: � 2.0m;  � 2.7m;  � 1.3m respectively.,9603,,,Also used for PSAD56 to WGS 84 transformations.,"Lagoven; Gonzalez Losano y Rodriguez; ""Determination de los Parametros de Transformacion para el Oriente del Pais""; VII Venezuelan Geophysical Congress; September 1994.",EPSG,1999-11-05 00:00:00,,1,0
-1517,Conakry 1905 to WGS 84 (1),transformation,4315,4326,IGN-Gin,1,1112,?,9603,,,,IGN Paris,EPSG,1999-12-09 00:00:00,,1,0
-1518,Dabola 1981 to WGS 84 (1),transformation,4155,4326,IGN-Gin,1,1112,?,9603,,,,IGN Paris,EPSG,1999-12-09 00:00:00,,1,0
-1519,Bern 1898 (Bern) to CH1903 (Greenwich),transformation,4801,4149,BfL-CH,1,1286,Change of prime meridian.,9601,,,,EPSG,EPSG,1999-12-09 00:00:00,,1,1
-1520,NAD83 to NAD83(HARN) (31),transformation,4269,4152,NGS-Usa HI,31,1334,Geodetic survey. Accuracy 0.05m at 67% confidence level.,9613,,,Uses NADCON method which expects longitudes positive west; EPSG GeogCRSs NAD83 (code 4269) and NAD83(HARN) (code 4152) have longitudes positive east.   May be taken as approximate transformation NAD83-WGS 84 - see code 1741.,US Coast & Geodetic Survey  ftp://ftp.ngs.noaa.gov/pub/pcsoft/nadcon,EPSG,2000-01-06 00:00:00,,1,0
-1521,NAD83 to NAD83(HARN) (32),transformation,4269,4152,NGS-Usa IN,32,1383,Geodetic survey. Accuracy 0.05m at 67% confidence level.,9613,,,Uses NADCON method which expects longitudes positive west; EPSG GeogCRSs NAD83 (code 4269) and NAD83(HARN) (code 4152) have longitudes positive east.   May be taken as approximate transformation NAD83-WGS 84 - see code 1742.,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,2000-01-06 00:00:00,,1,0
-1522,NAD83 to NAD83(HARN) (33),transformation,4269,4152,NGS-Usa KS,33,1385,Geodetic survey. Accuracy 0.05m at 67% confidence level.,9613,,,Uses NADCON method which expects longitudes positive west; EPSG GeogCRSs NAD83 (code 4269) and NAD83(HARN) (code 4152) have longitudes positive east.   May be taken as approximate transformation NAD83-WGS 84 - see code 1743.,US Coast & Geodetic Survey  ftp://ftp.ngs.noaa.gov/pub/pcsoft/nadcon,EPSG,2000-01-06 00:00:00,,1,0
-1523,NAD83 to NAD83(HARN) (34),transformation,4269,4152,NGS-Usa NV,34,1397,Geodetic survey. Accuracy 0.05m at 67% confidence level.,9613,,,Uses NADCON method which expects longitudes positive west; EPSG GeogCRSs NAD83 (code 4269) and NAD83(HARN) (code 4152) have longitudes positive east.   May be taken as approximate transformation NAD83-WGS 84 - see code 1744.,US Coast & Geodetic Survey  ftp://ftp.ngs.noaa.gov/pub/pcsoft/nadcon,EPSG,2000-01-06 00:00:00,,1,0
-1524,NAD83 to NAD83(HARN) (35),transformation,4269,4152,NGS-Usa OH,35,1404,Geodetic survey. Accuracy 0.05m at 67% confidence level.,9613,,,Uses NADCON method which expects longitudes positive west; EPSG GeogCRSs NAD83 (code 4269) and NAD83(HARN) (code 4152) have longitudes positive east.   May be taken as approximate transformation NAD83-WGS 84 - see code 1745.,US Coast & Geodetic Survey  ftp://ftp.ngs.noaa.gov/pub/pcsoft/nadcon,EPSG,2000-01-06 00:00:00,,1,0
-1525,NAD83 to NAD83(HARN) (36),transformation,4269,4152,NGS-Usa UT,36,1413,Geodetic survey. Accuracy 0.05m at 67% confidence level.,9613,,,Uses NADCON method which expects longitudes positive west; EPSG GeogCRSs NAD83 (code 4269) and NAD83(HARN) (code 4152) have longitudes positive east.   May be taken as approximate transformation NAD83-WGS 84 - see code 1746.,US Coast & Geodetic Survey  ftp://ftp.ngs.noaa.gov/pub/pcsoft/nadcon,EPSG,2000-01-06 00:00:00,,1,0
-1526,NAD83 to NAD83(HARN) (37),transformation,4269,4152,NGS-Usa WV,37,1417,Geodetic survey. Accuracy 0.05m at 67% confidence level.,9613,,,Uses NADCON method which expects longitudes positive west; EPSG GeogCRSs NAD83 (code 4269) and NAD83(HARN) (code 4152) have longitudes positive east.   May be taken as approximate transformation NAD83-WGS 84 - see code 1747.,US Coast & Geodetic Survey  ftp://ftp.ngs.noaa.gov/pub/pcsoft/nadcon,EPSG,2000-01-06 00:00:00,,1,0
-1527,Campo Inchauspe to WGS 84 (2),transformation,4221,4326,TOT-Arg Neu,2,2325,Oil exploration.,9603,,,Derived through ties at 2 stations (Cerro Colorado and Chihuido Sur) to 4 IGS stations,Total-Fina,EPSG,2000-03-07 00:00:00,,1,0
-1528,Chos Malal 1914 to Campo Inchauspe (1),transformation,4160,4221,TOT-Arg Neu,1,2325,Oil exploration. Accuracy 10 metres.,9603,,,Derived through common coordinates at 5 stations.,Total-Fina,EPSG,2000-03-07 00:00:00,,1,0
-1529,Hito XVIII to WGS 84 (1),transformation,4254,4326,TOT-Arg TdF,1,2357,Oil exploration.,9606,,,,Total-Fina,EPSG,2000-03-07 00:00:00,,1,0
-1530,NAD27 to WGS 84 (30),transformation,4267,4326,ICH-Cub,30,1077,?,9603,,,,Institut Cubano di Hidrografia (ICH),EPSG,2000-03-07 00:00:00,,1,0
-1531,Nahrwan 1967 to WGS 84 (4),transformation,4270,4326,TOT-UAE Abk,4,2392,Oil exploration.,9603,,,,Total-Fina,EPSG,2000-03-07 00:00:00,,1,0
-1532,M'poraloko to WGS 84 (2),transformation,4266,4326,Elf-Gab94,2,1100,Oil exploration.,9603,,,Derived as mean of Doris determinations at 3 stations in Port Gentil area.,TotalFinaElf,EPSG,2000-03-07 00:00:00,,1,0
-1533,Kalianpur 1937 to WGS 84 (2),transformation,4144,4326,TOT-Mmr Moat,2,2361,Oil exploration.,9603,,,,Total-Fina,EPSG,2000-03-07 00:00:00,,1,0
-1534,Minna to WGS 84 (3),transformation,4263,4326,SHL-Nig S,3,2371,Oil exploration.,9606,,,,Shell Petroleum Development Company,EPSG,2000-03-07 00:00:00,,1,1
-1536,Nahrwan 1967 to WGS 84 (5),transformation,4270,4326,B&R-Qat off,5,1346,Oil exploration.,9603,,,Derived by Brown & Root in 1992 for Qatar General Petroleum Corporation North Field development. Adopted by QGPC for all offshore Qatar.,Qatar General Petroleum Corporation and Total-Fina,EPSG,2000-03-07 00:00:00,2000.53,1,0
-1537,Indian 1975 to WGS 84 (3),transformation,4240,4326,Fug-Tha,3,2358,Oil exploration.,9603,,,Derived in 1995 at point RTSD181.,Total-Fina,EPSG,2000-03-07 00:00:00,,1,0
-1538,Carthage to WGS 84 (2),transformation,4223,4326,Elf-Tun,2,1489,Oil exploration.,9603,,,Derived at station Chaffar January 1995.,Total / Elf,EPSG,2000-03-07 00:00:00,,1,0
-1539,South Yemen to Yemen NGN96 (1),transformation,4164,4163,IGN-Yem South,1,1340,?,9603,,,,IGN Paris,EPSG,2000-03-07 00:00:00,,1,0
-1540,Yemen NGN96 to WGS 84 (1),transformation,4163,4326,IGN-Yem,1,1257,Accuracy better than 1 metre.,9603,,,,IGN Paris,EPSG,2000-03-07 00:00:00,,1,0
-1541,Indian 1960 to WGS 72BE (1),transformation,4131,4324,PV-Vnm,1,1495,Oil exploration.,9603,,,Derived in Vung Tau area by Technical Navigation for Deminex in 1978.,PetroVietnam,EPSG,2000-03-07 00:00:00,,1,0
-1542,Indian 1960 to WGS 84 (2),transformation,4131,4326,DMA-Vnm 16N,2,2359,For military purposes.  Accuracy 25m in each axis.,9603,,,Derived at 2 stations.,U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.,EPSG,2000-03-07 00:00:00,,1,0
-1543,Indian 1960 to WGS 84 (3),transformation,4131,4326,DMA-Vnm ConSon,3,2360,For military purposes.  Accuracy 25m in each axis.,9603,,,Derived at 1 station.,U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.,EPSG,2000-03-07 00:00:00,,1,0
-1544,Hanoi 1972 to WGS 84 (1),transformation,4147,4326,BP-Vnm,1,1494,Oil exploration.,9603,,,Derived in Vung Tau area.,BP Amoco,EPSG,2000-03-07 00:00:00,,1,0
-1545,Egypt 1907 to WGS 72 (1),transformation,4229,4322,MCE-Egy,1,1086,?,9603,,,,UK Mapping and Charting Establishment,EPSG,2000-03-07 00:00:00,,1,0
-1546,Egypt 1907 to WGS 84 (3),transformation,4229,4326,Racal-Egy GoS,3,2341,Used for oil exploration by GUPCO.,9603,,,,Maridive,EPSG,2000-03-07 00:00:00,,1,0
-1547,Bissau to WGS 84 (1),transformation,4165,4326,DMA-Gnb,1,1113,For military purposes only.  Accuracy 25m in each axis.,9603,,,Derived at 2 stations.,U.S. Defense Mapping Agency  TR8350.2 second edition September 1991,EPSG,2000-03-07 00:00:00,,1,0
-1548,SAD69 to WGS 84 (14),transformation,4291,4326,IGBE-Bra,14,1053,Medium and small scale mapping.,9603,,,Derived by Brazilean Institute of Geography and Statistics (IGBE) in 1989. Used by ANP.,Agencia Nacional do Petroleo (ANP).,EPSG,2000-03-07 00:00:00,,1,0
-1549,Aratu to WGS 84 (1),transformation,4208,4326,PB-Bra Camp,1,2307,Oil exploration.,9603,,,,Petrobras.,EPSG,2000-03-07 00:00:00,,1,0
-1550,Aratu to WGS 84 (2),transformation,4208,4326,PB-Bra TucN,2,2308,Oil exploration.,9603,,,,Petrobras.,EPSG,2000-03-07 00:00:00,,1,0
-1551,Aratu to WGS 84 (3),transformation,4208,4326,PB-Bra TucC,3,2309,Oil exploration.,9603,,,,Petrobras.,EPSG,2000-03-07 00:00:00,,1,0
-1552,Aratu to WGS 84 (4),transformation,4208,4326,PB-Bra TucS,4,2310,Oil exploration.,9603,,,,Petrobras.,EPSG,2000-03-07 00:00:00,,1,0
-1553,NAD83 to NAD83(HARN) (38),transformation,4269,4152,NGS-Usa IL,38,1382,Geodetic survey. Accuracy 0.05m at 67% confidence level.,9613,,,Uses NADCON method which expects longitudes positive west; EPSG GeogCRSs NAD83 (code 4269) and NAD83(HARN) (code 4152) have longitudes positive east.   May be taken as approximate transformation NAD83-WGS 84 - see code 1748.,US Coast & Geodetic Survey  ftp://ftp.ngs.noaa.gov/pub/pcsoft/nadcon,EPSG,2000-01-06 00:00:00,,1,0
-1554,NAD83 to NAD83(HARN) (39),transformation,4269,4152,NGS-Usa NJ,39,1399,Geodetic survey. Accuracy 0.05m at 67% confidence level.,9613,,,Uses NADCON method which expects longitudes positive west; EPSG GeogCRSs NAD83 (code 4269) and NAD83(HARN) (code 4152) have longitudes positive east.   May be taken as approximate transformation NAD83-WGS 84 - see code 1749.,US Coast & Geodetic Survey  ftp://ftp.ngs.noaa.gov/pub/pcsoft/nadcon,EPSG,2000-01-06 00:00:00,,1,0
-1555,Naparima 1955 to WGS 84 (2),transformation,4158,4326,Amoco-Tto Trin,2,1339,Oil exploration.,9603,,,Derived in 1989 by ONI for Amoco.,Trinidad Ministry of Energy and Energy Industries.,EPSG,2000-03-07 00:00:00,2000.351,1,0
-1556,Naparima 1955 to WGS 84 (3),transformation,4158,4326,NIMA-Tto Trin,3,1339,For military purposes.,9603,,,Described by NIMA as Naparima 1972 to WGS 84.  In Trinidad the source CRS is better known as Napaima 1955. EPSG has duplicated the tfm using the alternative source CRSs.  See also tfm code 1307.,EPSG after U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,2000-03-07 00:00:00,2000.351,1,0
-1557,Malongo 1987 to WGS 84 (2),transformation,4259,4326,CHV-Ago Cab90,2,1317,Used for oil exploration by Chevron since 1990.,9603,,,Supersedes trf code 1330.  Derived at station Y.,Chevron.,EPSG,2000-05-08 00:00:00,,1,0
-1558,Korean 1995 to WGS 84 (1),transformation,4166,4326,NIMA-Kor,1,1135,For military purposes. Accuracy better than 1 metre.,9603,,,Derived at 5 stations.,NIMA TR8350.2  ftp://164.214.2.65/pub/gg/tr8350.2/changes.pdf,EPSG,2000-06-10 00:00:00,,1,0
-1559,AGD84 to GDA94 (3),transformation,4203,4283,DOLA-Aus WA 0.1m old,3,1280,0.1m accuracy.,9615,,,Superseded by AGD84 to GDA94 (4) (code 1593) (binary file format error) and then by AGD84 to GDA94 (5) (code 1804). Input expects longitudes to be positive west; EPSG GeogCRS AGD84 (code 4203) and GDA94 (code 4283) both have longitudes positive east.,http://www.dola.wa.gov.au/lotl/survey_geodesy/gda1994/download.html,EPSG,2000-06-10 00:00:00,2000.68,1,1
-1560,Nord Sahara 1959 to WGS 72BE (1),transformation,4307,4324,CGG-Alg HM,1,2393,Oil exploration.,9603,,,Derived at IGN monument CFP19 using Transit.,Various oil company sources.,EPSG,2000-06-23 00:00:00,,1,0
-1561,Qatar 1974 to WGS 84 (1),transformation,4285,4326,DMA-Qat,1,1195,For military purposes only.  Accuracy 20m in each axis.,9603,,,Derived at 3 stations.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,2000-10-19 00:00:00,,1,0
-1562,Qatar 1974 to WGS 84 (2),transformation,4285,4326,B&R-Qat off,2,2406,Oil exploration.,9603,,,Derived by Brown & Root in 1992 for Qatar General Petroleum Corporation.,Qatar General Petroleum Corporation and Total-Fina,EPSG,2000-10-19 00:00:00,,1,0
-1563,Qatar 1974 to WGS 84 (3),transformation,4285,4326,CGIS-Qat,3,1346,Oil exploration.,9603,,,Derived by Qatar Centre for GIS.  See Qatar 1974 to WGS 84 (2) (code 1562) for transformation used by QGPC for offshore petroleum industry.,Qatar Centre for GIS,EPSG,2000-10-19 00:00:00,,1,0
-1564,NZGD49 to WGS 84 (2),transformation,4272,4326,OSG-Nzl 4m,2,1175,Transformation accuracy about 4 metres.,9607,,,These parameter values are taken from NZGD49 to NZGD2000 (4) (code 1701) and assume that NZGD2000 and WGS 84 are coincident to within the accuracy of the transformation. For improved accuracy use NZGD49 to WGS 84 (4) (code 1670).,Land Information New Zealand Office of Surveyor General policy statement 97/3.,EPSG,2000-10-19 00:00:00,,1,0
-1565,NZGD2000 to WGS 84 (1),transformation,4167,4326,OSG-Nzl,1,1175,Assumes NZGD2000 is coincident to WGS 84 to the 1m accuracy level.,9603,,,,http://www.linz.govt.nz/services/surveysystem/osgpublications/nzgd2000_trans.html,EPSG,2000-10-19 00:00:00,,1,0
-1566,NZGD49 to NZGD2000 (1),transformation,4272,4167,OSG-Nzl 5m,1,1175,5m accuracy.,9603,,,For better accuracy use  NZGD49 to NZGD2000 (4) (code 1701) or NZGD49 to NZGD2000 (3) (code 1568).,http://www.linz.govt.nz/services/surveysystem/osgpublications/nzgd2000_trans.html,EPSG,2000-10-19 00:00:00,,1,0
-1567,NZGD49 to NZGD2000 (2),transformation,4272,4167,OSG-Nzl 4m,2,1175,4m accuracy.,9607,,,4m accuracy.  For better accuracy use NZGD49 to NZGD2000 (3) (code 1568),http://www.linz.govt.nz/services/surveysystem/osgpublications/nzgd2000_trans.html,EPSG,2000-10-19 00:00:00,,1,1
-1568,NZGD49 to NZGD2000 (3),transformation,4272,4167,OSG-Nzl 1m,3,1175,0.2m accuracy.,9615,,,These same parameter values may be used to transform to WGS 84 - see NZGD49 to WGS 84 (4) (code 1670).,http://www.linz.govt.nz/services/surveysystem/osgpublications/nzgd2000_trans.html,EPSG,2000-10-19 00:00:00,,1,0
-1569,Accra to WGS 84 (1),transformation,4168,4326,MCE-Gha,1,1104,Military survey,9603,,,Derived at 3 common points.,Ordnance Survey International,EPSG,2000-10-19 00:00:00,,1,0
-1570,Accra to WGS 72BE (1),transformation,4168,4324,GSI-Gha,1,1505,Oil exploration.,9603,,,Derived be single point Transit observation at several locations.,Various oil industry sources,EPSG,2000-10-19 00:00:00,,1,0
-1571,Amersfoort to ETRS89 (1),transformation,4258,4326,NCG-Nld 2000,1,1172,Accuracy 0.5m,9607,,,"Dutch sources also quote an equivalent transformation with parameter values dX=+593.032 dY=+26.000 dZ=+478.741m, rX rY rZ and dS as this tfm. These values belong to a different transformation method and cannot be used with the Coordinate Frame method.",http://rdnap.kadaster.nl/rd/index.html  Also Nederlandse Commissie voor Geodesie publication 30; 3rd edition 1997.  Also with change of method [...]
-1572,NAD83 to NAD83(CSRS98) (1),transformation,4269,4140,SGQ-Can QC,1,1368,Accuracy 1-2 metres.,9615,,,Uses NT method which expects longitudes positive west; EPSG GeogCRSs NAD83 (code 4269) and NAD83(CSRS98) (code 4140) have longitudes positive east. Can be taken as an approximate transformation NAD83 to WGS 84 - see code 1696.,Geodetic Service of Quebec.  Contact alain.bernard at mrn.gouv.qc.ca,EPSG,2000-10-19 00:00:00,,1,1
-1573,NAD27 to NAD83 (6),transformation,4267,4269,SGQ-Can QC NT2,6,1368,Accuracy 1-2 metres.,9615,,,Supersedes NAD27 to NAD83 (5) (code 1462).  Uses NT method which expects longitudes positive west; EPSG GeogCRSs NAD27 (code 4267) and NAD83 (code 4269) have longitudes positive east.,Geodetic Service of Quebec.  Contact alain.bernard at mrn.gouv.qc.ca,EPSG,2000-10-19 00:00:00,,1,0
-1574,NAD27 to NAD83(CSRS98) (1),transformation,4267,4140,SGQ-Can QC,1,1368,Accuracy 1-2 metres.,9615,,,Uses NT method which expects longitudes positive west; EPSG GeogCRSs NAD27 (code 4267) and NAD83(CSRS98) (code 4140) have longitudes positive east. Can be taken as an approximate transformation NAD27 to WGS 84 - see code 1692.,Geodetic Service of Quebec.  Contact alain.bernard at mrn.gouv.qc.ca,EPSG,2000-10-19 00:00:00,,1,1
-1575,NAD27(CGQ77) to NAD83 (2),transformation,4609,4269,SGQ-Can QC NT2,2,1368,Accuracy 1-2 metres.,9615,,,Supersedes NAD27(CGQ77) to NAD83 (1) (code 1451).  Uses NT method which expects longitudes positive west; EPSG GeogCRSs CGQ77 and NAD83 (codes 4609 and 4269) have longitudes positive east. Can be taken as approx transformation to WGS 84 - see code 1691.,Geodetic Service of Quebec.  Contact alain.bernard at mrn.gouv.qc.ca,EPSG,2000-10-19 00:00:00,,1,0
-1576,NAD27(CGQ77) to NAD83(CSRS98) (1),transformation,4609,4140,SGQ-Can QC,1,1368,Accuracy 1-2 metres.,9615,,,Uses NT method which expects longitudes positive west; EPSG GeogCRSs NAD27(CGQ77) (code 4609) and NAD83(CSRS98) (code 4140) have longitudes positive east. Can be taken as an approximate transformation NAD27(CGQ77) to WGS 84 - see code 1691.,Geodetic Service of Quebec.  Contact alain.bernard at mrn.gouv.qc.ca,EPSG,2000-10-19 00:00:00,,1,1
-1577,American Samoa 1962 to WGS 84 (1),transformation,4169,4326,NIMA-Asm,1,1027,For military purposes. One sigma uncertainty is 25m in each axis.,9603,,,Transformation based on observations at 2 stations in 1993.,NIMA TR8350.2 revision of January 2000.,EPSG,2000-10-19 00:00:00,,1,0
-1578,American Samoa 1962 to NAD83(HARN) (1),transformation,4169,4152,NGS-Asm W,1,2288,Geodetic survey. No accuracy stated.,9613,,,NADCON method which expects longitudes positive west; EPSG GeogCRSs American Samoa 1962 and NAD83(HARN) (codes 4169 and 4159) have longitudes positive east.  NADCON expects latitudes in northern hemisphere and values must be made positive prior to input.,ftp://ftp.ngs.noaa.gov/pub/pcsoft/nadcon/samoa_readme.txt,EPSG,2000-10-19 00:00:00,,1,0
-1579,American Samoa 1962 to NAD83(HARN) (2),transformation,4169,4152,NGS-Asm E,2,2289,Geodetic survey. No accuracy stated.,9613,,,NADCON method which expects longitudes positive west; EPSG GeogCRSs American Samoa 1962 and NAD83(HARN) (codes 4169 and 4159) have longitudes positive east.  NADCON expects latitudes in northern hemisphere and values must be made positive prior to input.,ftp://ftp.ngs.noaa.gov/pub/pcsoft/nadcon/samoa_readme.txt,EPSG,2000-10-19 00:00:00,,1,0
-1580,NAD83(HARN) to WGS 84 (1),transformation,4152,4326,EPSG-Usa,1,2424,Approximation at the +/- 1m level assuming that NAD83(HARN) is equivalent to WGS 84.,9603,,,For many purposes NAD83(HARN) can be considered to be coincident with WGS 84.,EPSG,EPSG,2000-10-19 00:00:00,,1,0
-1581,SIRGAS to WGS 84 (1),transformation,4170,4326,NIMA-S America,1,1341,For military purposes.,9603,,,,NIMA TR8350.2 revision of January 2000.,EPSG,2000-10-19 00:00:00,2001.33,1,0
-1582,PSAD56 to WGS 84 (10),transformation,4248,4326,TOT-Bol  Mad,10,2400,Oil exploration.,9603,,,Derived May 1995 by Geoid for Total.  OSU91A geoid model used.,TotalFinaElf,EPSG,2000-10-19 00:00:00,,1,0
-1583,PSAD56 to WGS 84 (11),transformation,4248,4326,TOT-Bol  B20,11,2401,Oil exploration.,9603,,,Derived July 1997 by Geoid from data recorded by UGA for Total.  OSU91A geoid model used.,Total-Fina,EPSG,2000-10-19 00:00:00,,1,0
-1584,Deir ez Zor to WGS 72BE (1),transformation,4227,4324,GECO-Syr,1,2329,Oil exploration.,9603,,,Derived by Transit at station 254 Deir.,Elf,EPSG,2000-10-19 00:00:00,,1,0
-1585,Deir ez Zor to WGS 84 (2),transformation,4227,4326,IGN-Syr,2,1227,?,9603,,,,IGN Paris,EPSG,2000-10-19 00:00:00,,1,0
-1586,Deir ez Zor to WGS 84 (3),transformation,4227,4326,SHL-Syr Whal,3,2327,Oil exploration.,9606,,,Derived in 1995.,Elf,EPSG,2000-10-19 00:00:00,,1,0
-1587,Deir ez Zor to WGS 84 (4),transformation,4227,4326,ELF-Syr Shad,4,2328,Oil exploration.,9603,,,Derived at four stations by Topnav in 1997.,Elf,EPSG,2000-10-19 00:00:00,,1,0
-1588,ED50 to ETRS89 (1),transformation,4230,4258,NMA-Nor N65 1997,1,2332,Accuracy 1m.,9606,,,Included in Statens Kartverk programme wsktrans from 1997. The same parameter values were adopted for ED50 to WGS84 (variant 23) transformation offshore Norway north of 62N from April 2001 - see code 1612.,Statens Kartverk.,EPSG,2001-06-05 00:00:00,2001.06,1,0
-1589,ED50 to ETRS89 (3),transformation,4230,4258,NMA-Nor 6265W,3,2333,Accuracy 2m.,9620,,,Included in Statens Kartverk programme wsktrans from 1997. See ED50 to WGS84 (23) (code 1612) for a simpler transformation accurate to better than 4m.,Statens Kartverk,EPSG,2000-10-19 00:00:00,,1,0
-1590,ED50 to WGS 84 (22),transformation,4230,4326,NMA-Nor 6265W 1997,22,2333,Oil exploration before 2001.,9620,,,Included in Statens Kartverk programme wsktrans between 1997 (v3.1) and 2001 (v4.0). Superseded ED50 to WGS 84 (20) (code 1450) in 1997. Superseded by ED50 to WGS 84 (23) (code 1612) in April 2001.,Statens Kartverk.,EPSG,2000-10-19 00:00:00,,1,0
-1591,RGF93 to ETRS89 (1),transformation,4171,4258,IGN-Fra,1,1096,RGF93 is a regional realisation of ETRS89.,9603,,,May be taken as approximate transformation RGF93 to WGS 84 - see code 1671.,TotalFinaElf,EPSG,2000-10-10 00:00:00,,1,0
-1592,Timbalai 1948 to WGS 84 (2),transformation,4298,4326,BSP-Brn,2,2348,Offshore oil exploration.,9603,,,These parameters produce a coordinate difference of 10m horizontally and 50m vertically compared to Timbalai 1948 to WGS 84 (3) (code 1615).,Brunei Shell Petroleum,EPSG,2002-10-19 00:00:00,,1,0
-1593,AGD84 to GDA94 (4),transformation,4203,4283,DOLA-Aus WA 0.1m,4,1280,0.1m accuracy.,9615,,,Replaced AGD84 to GDA94 (3) (code 1559) but then superseded by AGD84 to GDA94 (5) (code 1804). Input expects longitudes to be positive west; EPSG GeogCRS AGD84 (code 4203) and GDA94 (code 4283) both have longitudes positive east.,http://www.dola.wa.gov.au/lotl/survey_geodesy/gda1994/download.html,EPSG,2000-10-19 00:00:00,,1,0
-1594,AGD66 to GDA94 (8),transformation,4202,4283,OSG-Tas 1m,8,1282,Recommended for mid-accuracy use in Tasmania.  1m accuracy.,9607,,,Supersedes AGD66 to GDA94 (3) (code 1459) from August 2000.  For higher accuracy requirements see AGD66 to GDA94 (6) (code 1506).  May be taken as approximate transformation AGD66 to WGS 84 - see code 1667.,GDA Technical Manual (August 2000 revision) and http://www.delm.tas.gov.au/osg/Geodetic_transform.htm,EPSG,2000-10-19 00:00:00,,1,0
-1595,AGD66 to GDA94 (9),transformation,4202,4283,Auslig-NT 1m,9,2284,Recommended for mid-accuracy use in Northern Territory. 1m accuracy.,9607,,,For higher accuracy requirements see AGD66 to GDA94 (7) (code 1507).  May be taken as approximate transformation AGD66 to WGS 84 - see code 1668.,GDA Technical Manual. http://www.anzlic.org.au/icsm/gdatm/regional.htm,EPSG,2000-10-19 00:00:00,,1,0
-1596,AGD66 to GDA94 (10),transformation,4202,4283,OSG-Aus SE 0.1m,10,2287,0.1m accuracy.,9615,,,In Victoria supersedes AGD66 to GDA94 (5) (code 1464). Superseded by AGD66 to GDA94 (11) (code 1803).  Input expects longitudes to be positive west; EPSG GeogCRS AGD66 (code 4202) and GDA94 (code 4283) both have longitudes positive east.,http://www.osg.vic.gov.au/tools.htm,EPSG,2000-10-19 00:00:00,,1,0
-1597,Bogota 1975 to WGS 84 (2),transformation,4218,4326,BP-Col CusCup,2,2315,Oil exploration.,9603,,,Derived in 1995 by WGC at first order stations Recreo and Mena via multi-day ties to 4 IGS stations. Residuals under 20cm.,Various industry sources,EPSG,2000-10-19 00:00:00,,1,0
-1598,POSGAR to WGS 84 (1),transformation,4172,4326,EPSG-Arg,1,1033,?,9603,,,,EPSG,EPSG,2000-10-19 00:00:00,,1,1
-1599,ATS77 to NAD83(CSRS98) (2),transformation,4122,4140,PEI DOT-Can PEI,2,1533,?,9615,,,Can be taken as an approximate transformation ATS77 to WGS 84 - see code 1689.,PEI Department of Transportation & Public Works,EPSG,2000-10-19 00:00:00,,1,1
-1600,NAD27 to NAD83(CSRS98) (2),transformation,4267,4140,SK PMC-Can SK,2,2375,Accuracy 1-2 metres.,9615,,,Can be taken as an approximate transformation NAD27 to WGS 84 - see code 1703.,Dir Geodetic Surveys; SaskGeomatics Div.; Saskatchewan Property Management Company.,EPSG,2000-10-19 00:00:00,,1,1
-1601,NAD83 to NAD83(CSRS98) (2),transformation,4269,4140,SK PMC-Can SK,2,2375,Accuracy 1-2 metres.,9615,,,Can be taken as an approximate transformation NAD83 to WGS 84 - see code 1697.,Dir Geodetic Surveys; SaskGeomatics Div.; Saskatchewan Property Management Company.,EPSG,2000-10-19 00:00:00,,1,1
-1602,NAD83 to NAD83(CSRS98) (3),transformation,4267,4140,AB Env-Can AB,2,2376,Accuracy 1-2 metres.,9615,,,"This gridded difference file  AB_CSRS.DAC will need to be renamed to AB_CSRS.gsb to run in some software suites.  Formats identical, but AB file is provincial fit only.",Geodetic Control Section; Land and Forest Svc; Alberta Environment; http://www.gov.ab.ca/env/land/dos/ or email to geoff.banham at gov.ab.ca,EPSG,2000-10-19 00:00:00,,1,1
-1603,NAD27 to ATS77 (1),transformation,4267,4122,SNB-Can NB,1,1447,?,9634,,,For reverse transformation see ATS77 to NAD27 (1) (code 1606),Survey of New Brunswick,EPSG,2000-10-19 00:00:00,,1,0
-1604,NAD27 to ATS77 (2),transformation,4267,4122,SNB-Can PEI,2,1533,?,9634,,,For reverse transformation see ATS77 to NAD27 (2) (code 1607),Survey of New Brunswick,EPSG,2000-10-19 00:00:00,,1,0
-1605,NAD27 to ATS77 (3),transformation,4267,4122,SNB-Can NS,3,2313,?,9634,,,For reverse transformation see ATS77 to NAD27 (3) (code 1608),Survey of New Brunswick,EPSG,2000-10-19 00:00:00,,1,0
-1606,ATS77 to NAD27 (1),transformation,4122,4267,SNB-Can NB,1,1447,?,9634,,,For reverse transformation see NAD27 to ATS77 (1) (code 1603),Survey of New Brunswick,EPSG,2000-10-19 00:00:00,,1,0
-1607,ATS77 to NAD27 (2),transformation,4122,4267,SNB-Can NS,2,2313,?,9634,,,For reverse transformation see NAD27 to ATS77 (2) (code 1604),Survey of New Brunswick,EPSG,2000-10-19 00:00:00,,1,0
-1608,ATS77 to NAD27 (3),transformation,4122,4267,SNB-Can PEI,3,1533,?,9634,,,For reverse transformation see NAD27 to ATS77 (3) (code 1605),Survey of New Brunswick,EPSG,2000-10-19 00:00:00,,1,0
-1609,BD72 to WGS 84 (1),transformation,4313,4326,IGN-Bel 7,1,1044,For applications to an accuracy of 1 metre.,9607,,,,IGN Brussels www.ngi.be/FR/FR2-1-5-1.shtm,EPSG,2000-10-19 00:00:00,,1,0
-1610,BD72 to WGS 84 (2),transformation,4313,4326,IGN-Bel 3,2,1044,For applications to an accuracy of 5 metres.,9603,,,,IGN Brussels www.ngi.be/FR/FR2-1-5-1.shtm,EPSG,2000-10-19 00:00:00,,1,0
-1611,IRENET95 to ETRS89 (1),transformation,4173,4258,OSI-Ire,1,1305,?,9603,,,May be taken as approximate transformation IRENET95 to WGS 84 - see code 1678.,Ordnance Survey of Ireland,EPSG,2000-10-19 00:00:00,,1,0
-1612,ED50 to WGS 84 (23),transformation,4230,4326,EPSG-Nor N62 2001,23,2601,Oil industry offshore.,9606,,,"Parameter values are taken from ED50 to ETRS89 (1), code 1588. Adopted for ED50 to WGS84 transformations offshore Norway north of 62N from April 2001 when it superseded code 1590. Included in Statens Kartverk programme wsktrans from v4.0.",EPSG Guidance Note #10,EPSG,2001-06-05 00:00:00,,1,0
-1613,ED50 to WGS 84 (24),transformation,4230,4326,EPSG-Nor S62 2001,24,2334,Approximation to 1 metre for oil industry use.,9606,,,"Approximation to 1 metre of concatenated transformation ED50 to WGS 84 (14), code 8046. 8046 remains the transformation promulgated by Statens Kartverk but 1613 recommended by EPSG for practical oil industry usage.",EPSG Guidance Note #10,EPSG,2001-06-05 00:00:00,,1,0
-1614,Sierra Leone 1968 to WGS 84 (1),transformation,4175,4326,NIMA-Sle,1,1209,Accuracy +/- 15m in each axis.,9603,,,Determined at 8 stations. Info. source has the source CRS as Sierra Leone 1960.  Sierra Leone 1968 is a readjustment of the 1960 network: coordinates changed by less than 3 metres.,"NIMA TR8350.2 revision 3, 1997.",EPSG,2001-06-05 00:00:00,,1,0
-1615,Timbalai 1948 to WGS 84 (3),transformation,4298,4326,SD-Brn,3,2349,Topographic and engineering survey onshore.,9603,,,These parameters produce a coordinate difference of 10m horizontally and 50m vertically compared to Timbalai 1948 to WGS 84 (2) (code 1592).,Brunei Survey Department,EPSG,2001-06-05 00:00:00,,1,0
-1616,PSD93 to WGS 72 (1),transformation,4134,4322,PDO-Omn 93,1,1183,Oil exploration. Residuals 1.2m at 67% probability level.,9606,,,,Petroleum Development Oman,EPSG,2001-06-05 00:00:00,,1,0
-1617,PSD93 to WGS 84 (3),transformation,4134,4326,Tot-Omn 95,3,2404,Oil exploration.,9606,,,Accuracy better than 0.5m in block 4.,TotalFinaElf,EPSG,2001-06-05 00:00:00,,1,0
-1618,MGI to WGS 84 (3),transformation,4312,4326,BEV-Aut,3,1037,For applications to an accuracy of 1.5 metres.,9606,,,Same transformation parameters but to lesser precision used for MGI to ETRS89 (1) (code 1619).,Bundesamt f�r Eich- und Vermessungswesen via EuroGeographics http://crs.ifag.de,EPSG,2001-06-05 00:00:00,,1,0
-1619,MGI to ETRS89 (1),transformation,4312,4258,BEV-Aut,1,1037,For applications to an accuracy of 1.5 metres.,9606,,,Same transformation parameters but to greater precision used for MGI to WGS 84 (3) (code 1618).,Bundesamt f�r Eich- und Vermessungswesen via EuroGeographics; http://crs.ifag.de/,EPSG,2001-06-05 00:00:00,,1,0
-1620,MGI to ETRS89 (2),transformation,4312,4258,DGU-Hrv,2,1076,For applications to an accuracy of 1 metre.,9606,,,May be taken as approximate transformation MGI to WGS 84 - see code 1621.,Drzavna Geodetska Uprava via EuroGeographics; http://crs.ifag.de/,EPSG,2001-06-05 00:00:00,,1,0
-1621,MGI to WGS 84 (4),transformation,4312,4326,EPSG-Hrv,4,1076,For applications to an accuracy of 1 metre.,9606,,,Parameter values from MGI to ETRS89 (2) (code 1620). Assumes ETRS89 and WGS 84 can be considered the same to within the accuracy of the transformation.,EPSG,EPSG,2001-06-05 00:00:00,,1,0
-1622,S-JTSK to ETRS89 (1),transformation,4156,4258,CUZK-Cze,1,1079,For applications to an accuracy of 1 metre.,9606,,,May be taken as approximate transformation S-JTSK to WGS 84 - see code 1623.,Cesky Urad Zememericky a Katastraln via EuroGeographics; http://crs.ifag.de/,EPSG,2001-06-05 00:00:00,,1,0
-1623,S-JTSK to WGS 84 (1),transformation,4156,4326,EPSG-Cze,1,1079,For applications to an accuracy of 1 metre.,9606,,,Parameter values from S-JTSK to ETRS89 (1) (code 1622). Assumes ETRS89 and WGS 84 can be considered the same to within the accuracy of the transformation.,EPSG,EPSG,2001-06-05 00:00:00,,1,0
-1624,S-JTSK to ETRS89 (2),transformation,4156,4258,UGKK-Svk,2,1211,For applications to an accuracy of 1 metre.,9606,,,May be taken as approximate transformation S-JTSK to WGS 84 - see code 1625.,"Urad Geodezie, Kartografie a Katastra via EuroGeographics; http://crs.ifag.de/",EPSG,2001-06-05 00:00:00,,1,0
-1625,S-JTSK to WGS 84 (2),transformation,4156,4326,EPSG-Svk,2,1211,For applications to an accuracy of 1 metre.,9606,,,Parameter values from S-JTSK to ETRS89 (2) (code 1624). Assumes ETRS89 and WGS 84 can be considered the same to within the accuracy of the transformation.,EPSG,EPSG,2001-06-05 00:00:00,,1,0
-1626,ED50 to ETRS89 (4),transformation,4230,4258,KMS-Dnk,4,1080,For applications to an accuracy of 1 metre.,9606,,,May be taken as approximate transformation ED50 to WGS 84 - see code 1627.,Kort & Matrikelstyrelsen via EuroGeographics; http://crs.ifag.de/,EPSG,2001-06-05 00:00:00,,1,0
-1627,ED50 to WGS 84 (25),transformation,4230,4326,EPSG-Dnk,25,1080,For applications to an accuracy of 1 metre.,9606,,,Parameter values from ED50 to ETRS89 (4) (code 1626). Assumes ETRS89 and WGS 84 can be considered the same to within the accuracy of the transformation.,EPSG,EPSG,2001-06-05 00:00:00,,1,0
-1628,ED50 to ETRS89 (5),transformation,4230,4258,DGC-Gib,5,1105,For applications to an accuracy of 1 metre.,9603,,,May be taken as approximate transformation ED50 to WGS 84 - see code 1629.,UK Defence Geographic and Imagery Intelligence Agency via EuroGeographics; http://crs.ifag.de/,EPSG,2001-06-05 00:00:00,,1,0
-1629,ED50 to WGS 84 (26),transformation,4230,4326,EPSG-Gib,26,1105,For applications to an accuracy of 1 metre.,9603,,,Parameter values from ED50 to ETRS89 (5) (code 1628). Assumes ETRS89 and WGS 84 can be considered the same to within the accuracy of the transformation.,EPSG,EPSG,2001-06-05 00:00:00,,1,0
-1630,ED50 to ETRS89 (6),transformation,4230,4258,IGN-Esp Bal,6,2335,For applications to an accuracy of 1.5 metres.,9606,,,May be taken as approximate transformation ED50 to WGS 84 - see code 1631.,Centro Nacional de Informacion Geografica via EuroGeographics; http://crs.ifag.de/,EPSG,2001-06-05 00:00:00,,1,0
-1631,ED50 to WGS 84 (27),transformation,4230,4326,EPSG-Esp Bal,27,2335,For applications to an accuracy of 1.5 metres.,9606,,,Parameter values from ED50 to ETRS89 (6) (code 1630). Assumes ETRS89 and WGS 84 can be considered the same to within the accuracy of the transformation.,EPSG,EPSG,2001-06-05 00:00:00,,1,0
-1632,ED50 to ETRS89 (7),transformation,4230,4258,IGN-Esp,7,2336,For applications to an accuracy of 1.5 metres.,9606,,,May be taken as approximate transformation ED50 to WGS 84 - see code 1633.,Centro Nacional de Informacion Geografica via EuroGeographics; http://crs.ifag.de/,EPSG,2001-06-05 00:00:00,,1,0
-1633,ED50 to WGS 84 (28),transformation,4230,4326,EPSG-Esp,28,2336,For applications to an accuracy of 1.5 metres.,9606,,,Parameter values from ED50 to ETRS89 (7) (code 1632). Assumes ETRS89 and WGS 84 can be considered the same to within the accuracy of the transformation.,EPSG,EPSG,2001-06-05 00:00:00,,1,0
-1634,ED50 to ETRS89 (8),transformation,4230,4258,IGN-Esp NW,8,2337,For applications to an accuracy of 1.5 metres.,9606,,,May be taken as approximate transformation ED50 to WGS 84 - see code 1635.,Centro Nacional de Informacion Geografica via EuroGeographics; http://crs.ifag.de/,EPSG,2001-06-05 00:00:00,,1,0
-1635,ED50 to WGS 84 (29),transformation,4230,4326,EPSG-Esp NW,29,2337,For applications to an accuracy of 1.5 metres.,9606,,,Parameter values from ED50 to ETRS89 (8) (code 1634). Assumes ETRS89 and WGS 84 can be considered the same to within the accuracy of the transformation.,EPSG,EPSG,2001-06-05 00:00:00,,1,0
-1638,KKJ to ETRS89 (1),transformation,4123,4258,NLS-Fin,1,1095,For applications to an accuracy of 1 to 2 metres.,9606,,,May be taken as approximate transformation KKJ to WGS 84 - see code 1639.,National Land Survey of Finland via EuroGeographics; http://crs.ifag.de/,EPSG,2001-06-05 00:00:00,,1,0
-1639,KKJ to WGS 84 (1),transformation,4123,4326,EPSG-Fin,1,1095,For applications to an accuracy of 1 to 2 metres.,9606,,,Parameter values from KKJ to ETRS89 (1) (code 1638). Assumes ETRS89 and WGS 84 can be considered the same to within the accuracy of the transformation.,EPSG,EPSG,2001-06-05 00:00:00,,1,0
-1640,TM65 to ETRS89 (1),transformation,4299,4258,OSI-Ire,1,1305,For applications to an accuracy of 1 metre.,9606,,,May be taken as approximate transformation TM65 to WGS 84 - see code 1641.,Ordnance Survey Ireland via EuroGeographics; http://crs.ifag.de/,EPSG,2001-06-05 00:00:00,,1,0
-1641,TM65 to WGS 84 (2),transformation,4299,4326,EPSG-Ire,2,1305,For applications to an accuracy of 1 metre.,9606,,,Parameter values from TM65 to ETRS89 (1) (code 1640). Assumes ETRS89 and WGS 84 can be considered the same to within the accuracy of the transformation.,EPSG,EPSG,2001-06-05 00:00:00,,1,0
-1642,Luxembourg 1930 to ETRS89 (1),transformation,4181,4258,ACT-Lux,1,1146,For applications to an accuracy of 1 metre.,9606,,,May be taken as approximate transformation Luxembourg 1930 to WGS 84 - see code 1643.,Administration du Cadastre et de la Topographie via EuroGeographics; http://crs.ifag.de/,EPSG,2001-06-05 00:00:00,,1,0
-1643,Luxembourg 1930 to WGS 84 (1),transformation,4181,4326,EPSG-Lux,1,1146,For applications to an accuracy of 1 metre.,9606,,,Parameter values from Luxembourg 1930 to ETRS89 (1) (code 1642). Assumes ETRS89 and WGS 84 can be considered the same to within the accuracy of the transformation.,EPSG,EPSG,2001-06-05 00:00:00,,1,0
-1644,Pulkovo 1942(58) to ETRS89 (1),transformation,4179,4258,GUGK-Pol,1,1192,For applications to an accuracy of 1 metre.,9606,,,May be taken as approximate transformation Pulkovo 1942(58) to WGS 84 - see code 1645.,Glowny Urzad Geodezji i Kartografii via EuroGeographics; http://crs.ifag.de/,EPSG,2001-06-05 00:00:00,,1,0
-1645,Pulkovo 1942(58) to WGS 84 (1),transformation,4179,4326,EPSG-Pol,1,1192,For applications to an accuracy of 1 metre.,9606,,,Parameter values from Pulkovo 1942(58) to ETRS89 (1) (code 1644). Assumes ETRS89 and WGS 84 can be considered the same to within the accuracy of the transformation.,EPSG,EPSG,2001-06-05 00:00:00,,1,0
-1646,CH1903 to ETRS89 (1),transformation,4149,4258,BfL-Che,1,1286,Accuracy 1.5 metres.,9603,,,These parameters are strictly from CH1903+ to CHTRF95 or ETRS89 but are used as from CH1903 as an approximation which is within the accuracy of the distortions in the CH1903 network. They are given to full precision as CH1903 to WGS 84 (1) (code 1510).,Bundesamt f�r Landestopographie via EuroGeographics; http://crs.ifag.de/,EPSG,2001-06-05 00:00:00,,1,0
-1647,CH1903+ to ETRS89 (1),transformation,4150,4258,BfL-Che,1,1286,For applications to an accuracy of 0.1 metres.,9603,,,This transformation is also given as CH1903+ to CHTRF95 (1) (code 1509). CHTRF95 is a local realisation of ETRS89.,Bundesamt f�r Landestopographie via EuroGeographics; http://crs.ifag.de/,EPSG,2001-06-05 00:00:00,,1,0
-1648,EST97 to ETRS89 (1),transformation,4180,4258,NLB-Est,1,1090,EST97 is a realisation of ETRS89.,9603,,,May be taken as approximate transformation EST97 to WGS 84 - see code 1649.,Estonian National Land Board via EuroGeographics; http://crs.ifag.de/,EPSG,2001-06-05 00:00:00,,1,0
-1649,EST97 to WGS 84 (1),transformation,4180,4326,EPSG-Est,1,1090,For applications to an accuracy of 1 metre.,9603,,,Assumes ETRS89 and WGS 84 can be considered the same to within the accuracy of the transformation.,EPSG,EPSG,2001-06-05 00:00:00,,1,0
-1650,ED50 to ETRS89 (10),transformation,4230,4258,IGN-Fra,10,1096,For applications to an accuracy of 2 metres.,9603,,,These same parameter values are used to transform to WGS 84. See ED50 to WGS 84 (17) (code 1275).,Institut Geographique National via EuroGeographics; http://crs.ifag.de/,EPSG,2001-06-05 00:00:00,,1,0
-1651,NTF to ETRS89 (1),transformation,4275,4258,IGN-Fra,1,1096,For applications to an accuracy of 2 metres.,9603,,,These same parameter values are used to transform to WGS 84. See NTF to WGS 84 (1) (code 1193).,Institut Geographique National via EuroGeographics; http://crs.ifag.de/,EPSG,2001-06-05 00:00:00,,1,0
-1652,BD72 to ETRS89 (1),transformation,4313,4258,IGN-Bel,1,1044,For applications to an accuracy of 1 metre.,9606,,,May be taken as approximate transformation BD72 to WGS 84 - see code 1609.,Institut Geographique National via EuroGeographics; http://crs.ifag.de/,EPSG,2001-06-05 00:00:00,,1,0
-1653,NGO 1948 to ETRS89 (1),transformation,4273,4258,SKV-Nor,1,1352,For applications to an accuracy of 3 metres.,9606,,,May be taken as approximate transformation NGO 1948 to WGS 84 - see code 1654.,Statens Kartverk via EuroGeographics; http://crs.ifag.de/,EPSG,2001-06-05 00:00:00,,1,0
-1654,NGO 1948 to WGS 84 (1),transformation,4273,4326,EPSG-Nor,1,1352,For applications to an accuracy of 3 metres.,9606,,,Parameter values from NGO 1948 to ETRS89 (1) (code 1653). Assumes ETRS89 and WGS 84 can be considered the same to within the accuracy of the transformation.,EPSG,EPSG,2001-06-05 00:00:00,,1,0
-1655,Lisbon to ETRS89 (1),transformation,4207,4258,ICC-Prt 2000,1,1294,For applications to an accuracy of 3 metres.,9606,,,Derived in 2000 at 8 stations.  Superseded by 2001 derivation (code 1790).,Instituto Portugues de Cartografia e Cadastro via EuroGeographics; http://crs.ifag.de/,EPSG,2001-06-05 00:00:00,,1,0
-1656,Lisbon to WGS 84 (1),transformation,4207,4258,EPSG-Prt 2000,1,1294,For applications to an accuracy of 3 metres.,9606,,,Parameter values from Lisbon to ETRS89 (1) (code 1655). Assumes ETRS89 and WGS 84 can be considered the same to within the accuracy of the transformation.,EPSG,EPSG,2001-06-05 00:00:00,,1,1
-1657,Datum 73 to ETRS89 (1),transformation,4274,4258,ICC-Prt 2000,1,1294,For applications to an accuracy of 2 metres.,9606,,,Derived in 2000 at 8 stations.  Superseded by 2001 derivation (code 1792).,Instituto Portugues de Cartografia e Cadastro via EuroGeographics; http://crs.ifag.de/,EPSG,2001-06-05 00:00:00,,1,0
-1658,Datum 73 to WGS 84 (1),transformation,4274,4258,EPSG-Prt 2000,1,1294,For applications to an accuracy of 2 metres.,9606,,,Parameter values from Datum 73 to ETRS89 (1) (code 1657). Assumes ETRS89 and WGS 84 can be considered the same to within the accuracy of the transformation.,EPSG,EPSG,2001-06-05 00:00:00,,1,1
-1659,Monte Mario to ETRS89 (1),transformation,4265,4258,IGM-Ita main,1,2372,Accuracy: 4 metres,9606,,,May be taken as approximate transformation Monte Mario to WGS 84 - see code 1660.,Istituto Geografico Militare Italiano via EuroGeographics; http://crs.ifag.de/,EPSG,2001-06-05 00:00:00,,1,0
-1660,Monte Mario to WGS 84 (4),transformation,4265,4326,EPSG-Ita main,4,2372,Accuracy: 4 metres,9606,,,Parameter values from Monte Mario to ETRS89 (1) (code 1659). Assumes ETRS89 and WGS 84 can be considered the same to within the accuracy of the transformation.,EPSG,EPSG,2001-06-05 00:00:00,,1,0
-1661,Monte Mario to ETRS89 (2),transformation,4265,4258,IGM-Ita Sar,2,2339,Accuracy: 4 metres,9606,,,May be taken as approximate transformation Monte Mario to WGS 84 - see code 1662.,Istituto Geografico Militare Italiano via EuroGeographics; http://crs.ifag.de/,EPSG,2001-06-05 00:00:00,,1,0
-1662,Monte Mario to WGS 84 (2),transformation,4265,4326,EPSG-Ita Sar,2,2339,Accuracy: 4 metres,9606,,,Parameter values from Monte Mario to ETRS89 (2) (code 1661). Assumes ETRS89 and WGS 84 can be considered the same to within the accuracy of the transformation.,EPSG,EPSG,2001-06-05 00:00:00,,1,0
-1663,Monte Mario to ETRS89 (3),transformation,4265,4258,IGM-Ita Sic,3,2340,Accuracy: 4 metres,9606,,,May be taken as approximate transformation Monte Mario to WGS 84 - see code 1664.,Istituto Geografico Militare Italiano via EuroGeographics; http://crs.ifag.de/,EPSG,2001-06-05 00:00:00,,1,0
-1664,Monte Mario to WGS 84 (3),transformation,4265,4326,EPSG-Ita Sic,3,2340,Accuracy: 4 metres,9606,,,Parameter values from Monte Mario to ETRS89 (3) (code 1663). Assumes ETRS89 and WGS 84 can be considered the same to within the accuracy of the transformation.,EPSG,EPSG,2001-06-05 00:00:00,,1,0
-1665,AGD66 to WGS 84 (12),transformation,4202,4326,EPSG-ACT 1m,12,2283,Recommended for mid-accuracy use in A.C.T.  1m accuracy.,9607,,,Parameter values from AGD66 to GDA94 (2) (code 1458). Assumes GDA94 and WGS 84 can be considered the same to within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-1666,AGD66 to WGS 84 (13),transformation,4202,4326,EPSG-NSW Vic 1m,13,2286,Recommended for mid-accuracy use in NSW and Victoria.  1m accuracy.,9607,,,Parameter values from AGD66 to GDA94 (4) (code 1460). Assumes GDA94 and WGS 84 can be considered the same to within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-1667,AGD66 to WGS 84 (14),transformation,4202,4326,EPSG-Tas 1m,14,1282,Recommended for mid-accuracy use in Tasmania.  1m accuracy.,9607,,,Parameter values from AGD66 to GDA94 (8) (code 1594). Assumes GDA94 and WGS 84 can be considered the same to within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-1668,AGD66 to WGS 84 (15),transformation,4202,4326,EPSG-NT 1m,15,2284,Recommended for mid-accuracy use in Northern Territory. 1m accuracy.,9607,,,Parameter values from AGD66 to GDA94 (9) (code 1595). Assumes GDA94 and WGS 84 can be considered the same to within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-1669,AGD84 to WGS 84 (7),transformation,4203,4326,EPSG-Aus 1m,7,1036,1m accuracy.,9607,,,Parameter values from AGD84 to GDA94 (2) (code 1280). Assumes GDA94 and WGS 84 can be considered the same to within the accuracy of the transformation. Supersedes AGD84 to WGS 84 (2) (code 1236).,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-1670,NZGD49 to WGS 84 (3),transformation,4272,4326,EPSG-Nzl 1m,3,1175,Accuracy about 1m.,9615,,,Parameter file is from NZGD49 to NZGD2000 (3) (code 1568) and assumes  WGS 84 is coincident with NZGD2000 to the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-1671,RGF93 to WGS 84 (1),transformation,4171,4326,EPSG-Fra,1,1096,Approximation at the +/- 1m level.,9603,,,Parameter values from RGF93 to ETRS89 (1) (code 1591) assuming that ETRS89 is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-1672,Amersfoort to WGS 84 (2),transformation,4289,4326,EPSG-Nld,2,1275,Approximation at the +/- 1m level.,9607,,,Parameter values from Amersfoort to ETRS89 (2) (code 1751) assuming that ETRS89 is equivalent to WGS 84 within the accuracy of the transformation. Supersedes Amersfoort to WGS 84 (1) (code 1112).,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-1673,DHDN to WGS 84 (1),transformation,4314,4326,EPSG-Deu W,1,2326,For applications with an accuracy at 5 m level.,9607,,,Parameter values from DHDN to ETRS89 (1) (code 1309) assuming that ETRS89 is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-1674,Pulkovo 1942(83) to ETRS89 (1),transformation,4178,4258,IfAG-Deu E,1,1343,Residuals under 2 m.,9607,,,Mean of 20 stations. May be taken as approximate transformation to WGS 84 - see code 1675. Also given by EuroGeographics at http://crs.ifag.de/ as a Position Vector transformation with changed values for rotations. Superseded in 2001 by code 1775.,Institute for Cartography and Geodesy; Leipzig.,EPSG,2001-08-15 00:00:00,,1,0
-1675,Pulkovo 1942(83) to WGS 84 (1),transformation,4178,4326,EPSG-Deu E,1,1343,Residuals under 2 m.,9607,,,Parameter values from Pulkovo 1942(83) to ETRS89 (1) (code 1674) assuming that ETRS89 is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-1676,CH1903+ to WGS 84 (1),transformation,4150,4326,BfL-CH,1,1286,Approximation at the +/- 1m level.,9603,,,Parameter values are from CH1903+ to CHTRF95 (1) (code 1509) assuming that CHTRF95 is equivalent to WGS 84. That transformation is also given as CH1903+ to ETRS89 (1) (code 1647). CHTRF95 is a realisation of ETRS89.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-1677,HD72 to WGS 84 (1),transformation,4237,4326,EPSG-Hun,1,1119,Approximation at the +/- 1m level.,9607,,,Parameter values taken from HD72 to ETRS89 (1) (code 1273) assuming that ETRS89 is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,1
-1678,IRENET95 to WGS 84 (1),transformation,4173,4326,EPSG-Ire,1,1305,Approximation at the +/- 1m level.,9603,,,Assumes that ETRS89 is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-1679,Pulkovo 1942 to WGS 84 (2),transformation,4284,4326,EPSG-Ltu,2,1145,Approximation at the +/- 1m level.,9607,,,Parameter values taken from Pulkovo 1942 to LKS94(ETRS89) (1) (code 1274) assuming that LKS94(ETRS89) is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-1680,RT90 to WGS 84 (1),transformation,4124,4326,EPSG-Swe,1,1225,Approximation at the +/- 1m level.,9607,,,Parameter values from RT90 to ETRS89 (1) (code 1437) assuming that ETRS89 is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-1681,OSGB 1936 / British National Grid to WGS 84 (1),transformation,27700,4326,EPSG-Gbr,1,1264,Accuracy about 0.5m.,9633,,,Parameter values taken from OSGB 1936 / British National Grid to ETRS89 (1) (code 1036) assuming that ETRS89 is coincident with WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-1682,South Yemen to WGS 84 (1),transformation,4164,4326,EPSG-Yem South,1,1340,Approximation at the +/- 1m level.,9603,,,Parameter values taken from South Yemen to Yemen NGN96 (1) (code 1539) assuming that NGN96 is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-1683,Tete to WGS 84 (1),transformation,4127,4326,EPSG-Moz,1,1167,Residuals as high as 30 metres.,9607,,,Parameter values taken from Tete to Moznet (1) (code 1297) assuming that Moznet is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-1684,Tete to WGS 84 (2),transformation,4127,4326,EPSG-Moz A,2,2350,Residuals are generally under 1 metre.,9607,,,Parameter values taken from Tete to Moznet (2) (code 1298) assuming that Moznet is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-1685,Tete to WGS 84 (3),transformation,4127,4326,EPSG-Moz B,3,2351,Residuals are generally under 4 metres.,9607,,,Parameter values taken from Tete to Moznet (3) (code 1299) assuming that Moznet is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-1686,Tete to WGS 84 (4),transformation,4127,4326,EPSG-Moz C,4,2352,Residuals are generally under 3 metres.,9607,,,Parameter values taken from Tete to Moznet (4) (code 1300) assuming that Moznet is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-1687,Tete to WGS 84 (5),transformation,4127,4326,EPSG-Moz D,5,2353,Residuals are 5-10 metres.,9607,,,Parameter values taken from Tete to Moznet (5) (code 1301) assuming that Moznet is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-1688,ATS77 to WGS 84 (1),transformation,4122,4326,EPSG-Can NB,1,1447,Approximation at the +/- 1m level.,9615,,,Parameter file is from ATS77 to NAD83(CSRS) (1) (code 1841) assuming that NAD83(CSRS) is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-1689,ATS77 to WGS 84 (2),transformation,4122,4326,EPSG-Can PEI,2,1533,Approximation at the +/- 1m level.,9615,,,Parameter file is from ATS77 to NAD83(CSRS) (2) (code 1846) assuming that NAD83(CSRS) is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-1690,NAD27(76) to WGS 84 (1),transformation,4608,4326,EPSG-Can On,1,1367,Approximation at the +/- 1m level.,9615,,,Parameter file is from NAD27(76) to NAD83 (1) (code 1463) assuming that NAD83 is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-1691,NAD27(CGQ77) to WGS 84 (3),transformation,4609,4326,EPSG-Can Qc NT2,3,1368,Approximation at the +/- 1m level.,9615,,,Parameter file is from NAD27(CGQ77) to NAD83(CSRS) (1) (code 1845) assuming that NAD83(CSRS98) is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-1692,NAD27 to WGS 84 (34),transformation,4267,4326,EPSG-Can QC,34,1368,Approximation at the +/- 1m level.,9615,,,Parameter file is from NAD27 to NAD83(CSRS) (1) (code 1844) assuming that NAD83(CSRS) is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-1693,NAD27 to WGS 84 (33),transformation,4267,4326,EPSG-Can,33,1061,Approximation at the +/- 1m level.,9615,,,Parameter file is from NAD27 to NAD83 (4) (code 1313) assuming that NAD83 is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-1694,American Samoa 1962 to WGS 84 (2),transformation,4169,4326,EPSG-Asm W,2,2288,Accuracy 1m.,9613,,,"Parameter files are from American Samoa 1962 to NAD83(HARN) (1) (code 1578), but for many purposes NAD83(HARN) can be considered to be coincident with WGS 84 within the accuracy of the transformation.",EPSG,EPSG,2001-08-15 00:00:00,,1,0
-1695,American Samoa 1962 to WGS 84 (3),transformation,4169,4326,EPSG-Asm E,3,2289,Accuracy 1m.,9613,,,"Parameter files are from American Samoa 1962 to NAD83(HARN) (2) (code 1579), but for many purposes NAD83(HARN) can be considered to be coincident with WGS 84 within the accuracy of the transformation.",EPSG,EPSG,2001-08-15 00:00:00,,1,0
-1696,NAD83 to WGS 84 (6),transformation,4269,4326,EPSG-Can QC,6,1368,Approximation at the +/- 1m level.,9615,,,Parameter file is from NAD83 to NAD83(CSRS) (1) (code 1843) assuming that NAD83(CSRS) is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-1697,NAD83 to WGS 84 (7),transformation,4269,4326,EPSG-Can SK,7,2375,Approximation at the +/- 1m level.,9615,,,Parameter file is from NAD83 to NAD83(CSRS8) (2) (code 1848) assuming that NAD83(CSRS) is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-1698,St. George Island to WGS 84 (1),transformation,4138,4326,EPSG-Usa AK StG,1,1331,Approximation at the +/- 1 to 2m level.,9613,,,Parameter files are from St. George Island to NAD83 (1) (code 1457) assuming that NAD83 is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-1699,St. Lawrence Island to WGS 84 (1),transformation,4136,4326,EPSG-Usa AK StL,1,1332,Approximation at the +/- 1 to 2m level.,9613,,,Parameter files are from St. Lawrence Island to NAD83 (1) (code 1455) assuming that NAD83 is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-1700,St. Paul Island to WGS 84 (1),transformation,4137,4326,EPSG-Usa AK StP,1,1333,Approximation at the +/- 1 to 2m level.,9613,,,Parameter files are from St. Paul Island to NAD83 (1) (code 1456) assuming that NAD83 is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-1701,NZGD49 to NZGD2000 (2),transformation,4272,4167,OSG-Nzl 4m,2,1175,4m accuracy.,9607,,,For better accuracy use NZGD49 to NZGD2000 (3) (code 1568).,http://www.linz.govt.nz/services/surveysystem/osgpublications/nzgd2000_trans.html,EPSG,2001-08-28 00:00:00,,1,0
-1702,NAD83 to WGS 84 (8),transformation,4269,4326,EPSG-Can AB,8,2376,Approximation at the +/- 1m level.,9615,,,Parameter file is from NAD83 to NAD83(CSRS) (3) (code 1849) assuming that NAD83(CSRS) is equivalent to WGS 84 within the accuracy of the transformation. This file  AB_CSRS.DAC will need to be renamed to AB_CSRS.gsb to run in some sodtware.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-1703,NAD27 to WGS 84 (32),transformation,4267,4326,EPSG-Can SK,32,2375,Approximation at the +/- 1m level.,9615,,,Parameter file is from NAD27 to NAD83(CSRS98) (1) (code 1600) assuming that NAD83(CSRS98) is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-1704,NAD83 to NAD83(HARN) (40),transformation,4269,4152,NGS-Usa AR,40,1374,Geodetic survey. Accuracy 0.05m at 67% confidence level.,9613,,,Uses NADCON method which expects longitudes positive west; EPSG GeogCRSs NAD83 (code 4269) and NAD83(HARN) (code 4152) have longitudes positive east.   May be taken as approximate transformation NAD83-WGS 84 - see code 1708.,US Coast & Geodetic Survey  ftp://ftp.ngs.noaa.gov/pub/pcsoft/nadcon,EPSG,2001-08-15 00:00:00,,1,0
-1705,NAD83 to NAD83(HARN) (41),transformation,4269,4152,NGS-Usa IA,41,1384,Geodetic survey. Accuracy 0.05m at 67% confidence level.,9613,,,Uses NADCON method which expects longitudes positive west; EPSG GeogCRSs NAD83 (code 4269) and NAD83(HARN) (code 4152) have longitudes positive east.  May be taken as approximate transformation NAD83-WGS 84 - see code 1709.,US Coast & Geodetic Survey  ftp://ftp.ngs.noaa.gov/pub/pcsoft/nadcon,EPSG,2001-08-15 00:00:00,,1,0
-1706,NAD83 to NAD83(HARN) (42),transformation,4269,4152,NGS-Usa MN,42,1392,Geodetic survey. Accuracy 0.05m at 67% confidence level.,9613,,,Uses NADCON method which expects longitudes positive west; EPSG GeogCRSs NAD83 (code 4269) and NAD83(HARN) (code 4152) have longitudes positive east.   May be taken as approximate transformation NAD83-WGS 84 - see code 1710.,US Coast & Geodetic Survey  ftp://ftp.ngs.noaa.gov/pub/pcsoft/nadcon,EPSG,2001-08-15 00:00:00,,1,0
-1707,NAD83 to NAD83(HARN) (43),transformation,4269,4152,NGS-Usa MO,43,1394,Geodetic survey. Accuracy 0.05m at 67% confidence level.,9613,,,Uses NADCON method which expects longitudes positive west; EPSG GeogCRSs NAD83 (code 4269) and NAD83(HARN) (code 4152) have longitudes positive east.  May be taken as approximate transformation NAD83-WGS 84 - see code 1711.,US Coast & Geodetic Survey  ftp://ftp.ngs.noaa.gov/pub/pcsoft/nadcon,EPSG,2001-08-15 00:00:00,,1,0
-1708,NAD83 to WGS 84 (12),transformation,4269,4326,EPSG-USA Ar,12,1374,Approximation at the +/- 1m level.,9613,,,Parameter files are from NAD83 to NAD83(HARN) (40) (code 1704) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-1709,NAD83 to WGS 84 (13),transformation,4269,4326,EPSG-Usa IA,13,1384,Approximation at the +/- 1m level.,9613,,,Parameter files are from NAD83 to NAD83(HARN) (41) (code 1705) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-1710,NAD83 to WGS 84 (14),transformation,4269,4326,EPSG-Usa MN,14,1392,Approximation at the +/- 1m level.,9613,,,Parameter files are from NAD83 to NAD83(HARN) (42) (code 1706) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-1711,NAD83 to WGS 84 (15),transformation,4269,4326,EPSG-Usa MO,15,1394,Approximation at the +/- 1m level.,9613,,,Parameter files are from NAD83 to NAD83(HARN) (43) (code 1707) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-1712,NAD83 to WGS 84 (16),transformation,4269,4326,EPSG-Usa CO,16,1376,Approximation at the +/- 1m level.,9613,,,Parameter files are from NAD83 to NAD83(HARN) (5) (code 1478) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-1713,NAD83 to WGS 84 (17),transformation,4269,4326,EPSG-Usa GA,17,1380,Approximation at the +/- 1m level.,9613,,,Parameter files are from NAD83 to NAD83(HARN) (6) (code 1479) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-1714,NAD83 to WGS 84 (18),transformation,4269,4326,EPSG-Usa FL,18,1379,Approximation at the +/- 1m level.,9613,,,Parameter files are from NAD83 to NAD83(HARN) (7) (code 1480) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-1715,NAD83 to WGS 84 (19),transformation,4269,4326,EPSG-Usa ID MT e,19,2382,Approximation at the +/- 1m level.,9613,,,Parameter files are from NAD83 to NAD83(HARN) (8) (code 1481) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-1716,NAD83 to WGS 84 (20),transformation,4269,4326,EPSG-Usa ID MT w,20,2383,Approximation at the +/- 1m level.,9613,,,Parameter files are from NAD83 to NAD83(HARN) (9) (code 1482) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-1717,NAD83 to WGS 84 (21),transformation,4269,4326,EPSG-Usa AL,21,1372,Approximation at the +/- 1m level.,9613,,,Parameter files are from NAD83 to NAD83(HARN) (1) (code 1474) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-1718,NAD83 to WGS 84 (22),transformation,4269,4326,EPSG-Usa KY,22,1386,Approximation at the +/- 1m level.,9613,,,Parameter files are from NAD83 to NAD83(HARN) (10) (code 1483) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-1719,NAD83 to WGS 84 (23),transformation,4269,4326,EPSG-Usa LA,23,1387,Approximation at the +/- 1m level.,9613,,,Parameter files are from NAD83 to NAD83(HARN) (11) (code 1484) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-1720,NAD83 to WGS 84 (24),transformation,4269,4326,EPSG-Usa DE MD,24,2377,Approximation at the +/- 1m level.,9613,,,Parameter files are from NAD83 to NAD83(HARN) (12) (code 1485) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-1721,NAD83 to WGS 84 (25),transformation,4269,4326,EPSG-Usa ME,25,1388,Approximation at the +/- 1m level.,9613,,,Parameter files are from NAD83 to NAD83(HARN) (13) (code 1486) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-1722,NAD83 to WGS 84 (26),transformation,4269,4326,EPSG-Usa MI,26,1391,Approximation at the +/- 1m level.,9613,,,Parameter files are from NAD83 to NAD83(HARN) (14) (code 1487) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-1723,NAD83 to WGS 84 (27),transformation,4269,4326,EPSG-Usa MS,27,1393,Approximation at the +/- 1m level.,9613,,,Parameter files are from NAD83 to NAD83(HARN) (15) (code 1488) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-1724,NAD83 to WGS 84 (28),transformation,4269,4326,EPSG-Usa NE,28,1396,Approximation at the +/- 1m level.,9613,,,Parameter files are from NAD83 to NAD83(HARN) (16) (code 1489) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-1725,NAD83 to WGS 84 (29),transformation,4269,4326,EPSG-Usa NewEng,29,2378,Approximation at the +/- 1m level.,9613,,,Parameter files are from NAD83 to NAD83(HARN) (17) (code 1490) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-1726,NAD83 to WGS 84 (30),transformation,4269,4326,EPSG-Usa NM,30,1400,Approximation at the +/- 1m level.,9613,,,Parameter files are from NAD83 to NAD83(HARN) (18) (code 1491) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-1727,NAD83 to WGS 84 (31),transformation,4269,4326,EPSG-Usa NY,31,1401,Approximation at the +/- 1m level.,9613,,,Parameter files are from NAD83 to NAD83(HARN) (19) (code 1492) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-1728,NAD83 to WGS 84 (32),transformation,4269,4326,EPSG-Usa AZ,32,1373,Approximation at the +/- 1m level.,9613,,,Parameter files are from NAD83 to NAD83(HARN) (2) (code 1475) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-1729,NAD83 to WGS 84 (33),transformation,4269,4326,EPSG-Usa ND,33,1403,Approximation at the +/- 1m level.,9613,,,Parameter files are from NAD83 to NAD83(HARN) (20) (code 1493) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-1730,NAD83 to WGS 84 (34),transformation,4269,4326,EPSG-Usa OK,34,1405,Approximation at the +/- 1m level.,9613,,,Parameter files are from NAD83 to NAD83(HARN) (21) (code 1494) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-1731,NAD83 to WGS 84 (35),transformation,4269,4326,EPSG-PRVI,35,1335,Approximation at the +/- 1m level.,9613,,,Parameter files are from NAD83 to NAD83(HARN) (22) (code 1495) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-1732,NAD83 to WGS 84 (36),transformation,4269,4326,EPSG-Usa SD,36,1410,Approximation at the +/- 1m level.,9613,,,Parameter files are from NAD83 to NAD83(HARN) (23) (code 1496) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-1733,NAD83 to WGS 84 (37),transformation,4269,4326,EPSG-Usa TN,37,1411,Approximation at the +/- 1m level.,9613,,,Parameter files are from NAD83 to NAD83(HARN) (24) (code 1497) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-1734,NAD83 to WGS 84 (38),transformation,4269,4326,EPSG-Usa TX e,38,2379,Approximation at the +/- 1m level.,9613,,,Parameter files are from NAD83 to NAD83(HARN) (25) (code 1498) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-1735,NAD83 to WGS 84 (39),transformation,4269,4326,EPSG-Usa TX w,39,2380,Approximation at the +/- 1m level.,9613,,,Parameter files are from NAD83 to NAD83(HARN) (26) (code 1499) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-1736,NAD83 to WGS 84 (40),transformation,4269,4326,EPSG-Usa VA,40,1415,Approximation at the +/- 1m level.,9613,,,Parameter files are from NAD83 to NAD83(HARN) (27) (code 1500) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-1737,NAD83 to WGS 84 (41),transformation,4269,4326,EPSG-Usa OR WA,41,2381,Approximation at the +/- 1m level.,9613,,,Parameter files are from NAD83 to NAD83(HARN) (28) (code 1501) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-1738,NAD83 to WGS 84 (42),transformation,4269,4326,EPSG-Usa WI,42,1418,Approximation at the +/- 1m level.,9613,,,Parameter files are from NAD83 to NAD83(HARN) (29) (code 1502) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-1739,NAD83 to WGS 84 (43),transformation,4269,4326,EPSG-Usa CA n,43,2297,Approximation at the +/- 1m level.,9613,,,Parameter files are from NAD83 to NAD83(HARN) (3) (code 1476) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-1740,NAD83 to WGS 84 (44),transformation,4269,4326,EPSG-Usa WY,44,1419,Approximation at the +/- 1m level.,9613,,,Parameter files are from NAD83 to NAD83(HARN) (30) (code 1503) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-1741,NAD83 to WGS 84 (45),transformation,4269,4326,EPSG-Usa HI,45,1334,Approximation at the +/- 1m level.,9613,,,Parameter files are from NAD83 to NAD83(HARN) (31) (code 1520) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-1742,NAD83 to WGS 84 (46),transformation,4269,4326,EPSG-Usa IN,46,1383,Approximation at the +/- 1m level.,9613,,,Parameter files are from NAD83 to NAD83(HARN) (32) (code 1521) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-1743,NAD83 to WGS 84 (47),transformation,4269,4326,EPSG-Usa KS,47,1385,Approximation at the +/- 1m level.,9613,,,Parameter files are from NAD83 to NAD83(HARN) (33) (code 1522) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-1744,NAD83 to WGS 84 (48),transformation,4269,4326,EPSG-Usa NV,48,1397,Approximation at the +/- 1m level.,9613,,,Parameter files are from NAD83 to NAD83(HARN) (34) (code 1523) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-1745,NAD83 to WGS 84 (49),transformation,4269,4326,EPSG-Usa OH,49,1404,Approximation at the +/- 1m level.,9613,,,Parameter files are from NAD83 to NAD83(HARN) (35) (code 1524) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-1746,NAD83 to WGS 84 (50),transformation,4269,4326,EPSG-Usa UT,50,1413,Approximation at the +/- 1m level.,9613,,,Parameter files are from NAD83 to NAD83(HARN) (36) (code 1525) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-1747,NAD83 to WGS 84 (51),transformation,4269,4326,EPSG-Usa WV,51,1417,Approximation at the +/- 1m level.,9613,,,Parameter files are from NAD83 to NAD83(HARN) (37) (code 1526) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-1748,NAD83 to WGS 84 (52),transformation,4269,4326,EPSG-Usa IL,52,1382,Approximation at the +/- 1m level.,9613,,,Parameter files are from NAD83 to NAD83(HARN) (38) (code 1553) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-1749,NAD83 to WGS 84 (53),transformation,4269,4326,EPSG-Usa NJ,53,1399,Approximation at the +/- 1m level.,9613,,,Parameter files are from NAD83 to NAD83(HARN) (39) (code 1554) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-1750,NAD83 to WGS 84 (54),transformation,4269,4326,EPSG-Usa CA s,54,2298,Approximation at the +/- 1m level.,9613,,,Parameter files are from NAD83 to NAD83(HARN) (4) (code 1477) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-1751,Amersfoort to ETRS89 (1),transformation,4289,4258,NCG-Nld 2000,1,1172,Accuracy 0.5m,9607,,,"Dutch sources also quote an equivalent transformation with parameter values dX=+593.032 dY=+26.000 dZ=+478.741m, rX rY rZ and dS as this tfm. These values belong to a different transformation method and cannot be used with the Coordinate Frame method.",http://rdnap.kadaster.nl/rd/index.html  Also Nederlandse Commissie voor Geodesie publication 30; 3rd edition 1997.  Also with change of method [...]
-1752,NAD83 to NAD83(CSRS98) (3),transformation,4269,4140,AB Env-Can AB,3,2376,?,9615,,,"This gridded difference file  AB_CSRS.DAC will need to be renamed to AB_CSRS.gsb to run in some software suites.  Formats identical, but AB file is provincial fit only.  Can be taken as an approximate transformation NAD83 to WGS 84 - see code 1702.",Geodetic Control Section; Land and Forest Svc; Alberta Environment; http://www.gov.ab.ca/env/land/dos/ or email to geoff.banham at gov.ab.ca,EPSG,2000-10-19  [...]
-1753,CH1903 to WGS 84 (1),transformation,4149,4326,BfL-CH 1,1,1286,?,9607,,,Implemented in Bundesamt f�r Landestopographie programme GRANIT.,Bundesamt f�r Landestopographie.  Aufbau der Landesvermessung der Schweiz 'LV95' Teil 3: Terrestrische Bezugssysteme und Bezugsrahmen. L+T 1999.,EPSG,2001-08-28 00:00:00,,1,0
-1754,Minna to WGS 84 (3),transformation,4263,4326,SHL-Nga S,3,2371,Oil exploration.,9606,,,"Used by Shell SPDC throughout southern Nigeria onshore, delta and shallow offshore from 1994; adopted by Total for offshore OPL246.",Shell Petroleum Development Company,EPSG,2002-03-15 00:00:00,2001.38  2002.29,1,0
-1755,Bogota 1975 (Bogota) to Bogota 1975,transformation,4802,4218,IGAC-Col,1,1070,Change of prime meridian.,9601,,,,EPSG,EPSG,2001-10-04 00:00:00,2001.39,1,0
-1756,Lisbon (Lisbon) to Lisbon,transformation,4803,4207,IGC-Prt,1,1294,Change of prime meridian.,9601,,,,EPSG,EPSG,2001-10-04 00:00:00,2001.39,1,0
-1757,MGI (Ferro) to MGI,transformation,4805,4312,BEV-Aut balk,1,1166,Change of prime meridian.,9601,,,,EPSG,EPSG,2001-10-04 00:00:00,2001.39,1,0
-1758,Padang (Jakarta) to Padang,transformation,4808,4280,EPSG-Idn Sumatra,1,1355,Change of prime meridian.,9601,,,,EPSG,EPSG,2001-10-04 00:00:00,2001.39,1,0
-1759,Batavia (Jakarta) to Batavia,transformation,4813,4211,EPSG-Idn Java,1,1285,Change of prime meridian.,9601,,,,EPSG,EPSG,2001-10-04 00:00:00,2001.39,1,0
-1760,RT38 (Stockholm) to RT38,transformation,4814,4308,NLS-Swe,1,1225,Change of prime meridian.,9601,,,,EPSG,EPSG,2001-10-04 00:00:00,2001.39,1,0
-1761,Greek (Athens) to Greek,transformation,4815,4120,NTU-Grc,1,1106,Change of prime meridian.,9601,,,,Topography Department; National Technical University of Athens.,EPSG,2001-10-04 00:00:00,2001.39,1,0
-1762,NGO 1948 (Oslo) to NGO1948,transformation,4817,4273,NGO-Nor,1,1352,Change of prime meridian.,9601,,,,"J. Danielsen; ""Transformasjoner ved Norges Geografiske Oppm�ling""; Kart Og Plan nr 1; 1982.",EPSG,2001-10-04 00:00:00,2001.39,1,0
-1763,NTF (Paris) to NTF (1),transformation,4807,4275,IGN-Fra,1,1096,Change of prime meridian.,9601,,,,IGN Paris.,EPSG,2001-10-04 00:00:00,2001.39,1,0
-1764,NTF (Paris) to NTF (2),transformation,4807,4275,RGS,2,1096,Change of prime meridian.,9601,,,EPSG prefers value from IGN Paris (code 1467).,Royal Geographic Society; London,EPSG,2001-10-04 00:00:00,2001.39,1,0
-1765,Bern 1898 (Bern) to CH1903,transformation,4801,4149,BfL-CH,1,1286,Change of prime meridian.,9601,,,,EPSG,EPSG,2001-10-04 00:00:00,2001.39,1,0
-1766,CH1903 to WGS 84 (2),transformation,4149,4326,BfL-CH 2,2,1286,Accuracy 1.5 metres.,9603,,,These parameters are strictly between CH1903+ and CHTRF95 (code 1509) or ETRS89 (code 1647) but are used given to lesser precision from CH1903 to WGS 84 as an approximation which is within the accuracy of the distortions in the CH1903 network.,Bundesamt f�r Landestopographie.  Aufbau der Landesvermessung der Schweiz 'LV95' Teil 3: Terrestrische Bezugssysteme und Bezugsrahmen. L+T 1999.,EPSG,200 [...]
-1767,REGVEN to SIRGAS (1),transformation,4189,4170,CN-Ven,1,1251,Accuracy 2 centimetres.,9603,,,,Instituto Geografia de Venezuela Simon Bolivar,EPSG,2001-11-06 00:00:00,,1,0
-1768,REGVEN to WGS 84 (1),transformation,4189,4326,EPSG-Ven,1,1251,Approximation at the +/- 1m level.,9603,,,,EPSG,EPSG,2001-11-06 00:00:00,,1,0
-1769,PSAD56 to REGVEN (1),transformation,4248,4189,IGSB-Ven,1,1251,?,9636,,,,Instituto Geografia de Venezuela Simon Bolivar,EPSG,2001-11-06 00:00:00,,1,0
-1770,PSAD56 to WGS84 (1),transformation,4248,4326,EPSG-Ven,1,1251,Approximation at the +/- 1m level.,9636,,,Parameter vales are from PSAD56 to REGVEN (1) (code 1769) assuming that REGVEN is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-11-06 00:00:00,,1,0
-1771,La Canoa to REGVEN (1),transformation,4247,4189,IGSB-Ven,1,1251,?,9636,,,,Instituto Geografia de Venezuela Simon Bolivar,EPSG,2001-11-06 00:00:00,,1,0
-1772,La Canoa to WGS84 (1),transformation,4247,4326,EPSG-Ven,1,1251,Approximation at the +/- 1m level.,9636,,,Parameter vales are from La Canoa to REGVEN (1) (code 1771) assuming that REGVEN is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-11-06 00:00:00,,1,0
-1773,POSGAR 98 to WGS 84 (1),transformation,4190,4326,EPSG-Arg,1,1033,Approximation at the +/- 1m level.,9603,,,,EPSG,EPSG,2001-11-06 00:00:00,,1,0
-1774,POSGAR 98 to SIRGAS (1),transformation,4190,4170,IGM-Arg,1,1033,POSGAR 98 is a densification of SIRGAS.,9603,,,,ISBN 85-240-0647-1. Sistema de Refer�ncia Geoc�ntrico para a Am�rica do Sul: Relat�rio Final. IGBE Rio de Janeiro 1997.,EPSG,2001-11-06 00:00:00,,1,0
-1775,Pulkovo 1942(83) to ETRS89 (2),transformation,4178,4258,IfAG-Deu E 0.1m,2,1343,For applications with an accuracy at 0.1m level,9606,,,Derived at 35 points of the German GPS Network DREF. From 2001 supersedes Pulkovo 1942(83) to ETRS89 (1) (code 1674).,Institute for Cartography and Geodesy; Leipzig via EuroGeographics; http://crs.ifag.de/,EPSG,2001-11-06 00:00:00,,1,0
-1776,DHDN to ETRS89 (2),transformation,4314,4258,IfAG-Deu W 3m,2,2326,For applications with an accuracy at 3 m level,9606,,,Mean of 109 stations. May be taken as approximate transformation DHDN to WGS 84 - see code 1777.,Institute for Cartography and Geodesy; Leipzig via EuroGeographics; http://crs.ifag.de/,EPSG,2001-11-06 00:00:00,,1,0
-1777,DHDN to WGS 84 (2),transformation,4314,4326,EPSG-Deu W 3m,2,2326,For applications with an accuracy at 3 m level,9606,,,Parameter values from DHDN to ETRS89 (2) (code 1776) assuming that ETRS89 is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-11-06 00:00:00,,1,0
-1778,DHDN to ETRS89 (3),transformation,4314,4258,IfAG-Deu W-S,3,2543,For applications with an accuracy at 0.1m level,9606,,,Derived at 10 points of the German GPS Network DREF.,Institute for Cartography and Geodesy; Leipzig via EuroGeographics; http://crs.ifag.de/,EPSG,2001-11-06 00:00:00,,1,0
-1779,DHDN to ETRS89 (4),transformation,4314,4258,IfAG-Deu W-cen,4,2542,For applications with an accuracy at 0.1m level,9606,,,Derived at 27 points of the German GPS Network DREF.,Institute for Cartography and Geodesy; Leipzig via EuroGeographics; http://crs.ifag.de/,EPSG,2001-11-06 00:00:00,,1,0
-1780,DHDN to ETRS89 (5),transformation,4314,4258,IfAG-Deu W-N,5,2541,For applications with an accuracy at 0.1m level,9606,,,Derived at 21 points of the German GPS Network DREF.,Institute for Cartography and Geodesy; Leipzig via EuroGeographics; http://crs.ifag.de/,EPSG,2001-11-06 00:00:00,,1,0
-1781,DHDN to ETRS89 (6),transformation,4314,4258,IfAG-Deu Thur,6,2544,For applications with an accuracy at 0.1m level,9606,,,Derived at 10 points of the German GPS Network DREF.,Institute for Cartography and Geodesy; Leipzig via EuroGeographics; http://crs.ifag.de/,EPSG,2001-11-06 00:00:00,,1,0
-1782,DHDN to ETRS89 (7),transformation,4314,4258,IfAG-Deu Sach,7,2545,For applications with an accuracy at 0.1m level,9606,,,Derived at 35 points of the German GPS Network DREF.,Institute for Cartography and Geodesy; Leipzig via EuroGeographics; http://crs.ifag.de/,EPSG,2001-11-06 00:00:00,,1,0
-1783,ED50 to ETRS89 (9),transformation,4230,4258,HGK-Tur,9,1237,For applications to an accuracy of 2 metres.,9606,,,May be taken as approximate transformation ED50 to WGS 84 - see code 1784.,General Command of Mapping via EuroGeographics; http://crs.ifag.de/,EPSG,2001-11-06 00:00:00,,1,0
-1784,ED50 to WGS 84 (30),transformation,4230,4326,EPSG-Tur,30,1237,For applications to an accuracy of 2 metres.,9606,,,Parameter values from ED50 to ETRS89 (9) (code 1783). Assumes ETRS89 and WGS 84 can be considered the same to within the accuracy of the transformation.,EPSG,EPSG,2001-11-06 00:00:00,,1,0
-1785,MGI to ETRS89 (3),transformation,4312,4258,GURS-Svn,3,1212,For applications to an accuracy of 1 metre.,9606,,,May be taken as approximate transformation MGI to WGS 84 - see code 1786.,Geodetska Uprava Republike Slovenij via EuroGeographics; http://crs.ifag.de/,EPSG,2001-11-06 00:00:00,,1,0
-1786,MGI to WGS 84 (5),transformation,4312,4326,EPSG-Svn,5,1212,For applications to an accuracy of 1 metre.,9606,,,Parameter values from MGI to ETRS89 (3) (code 1785). Assumes ETRS89 and WGS 84 can be considered the same to within the accuracy of the transformation.,EPSG,EPSG,2001-11-06 00:00:00,,1,0
-1787,RT90 to ETRS89 (2),transformation,4124,4258,NLS-Swe 2001,2,1225,Accuracy 0.1m.,9607,,,Derived at 165 points. Supersedes RT90 to ETRS89 (1) (code 1437). May be taken as approximate transformation RT90 to WGS 84 - see code 1787.,National Land Survey of Sweden (http://www.lm.se/geodesi/refsys/eng/refsys-eng.htm) via EuroGeographics; http://crs.ifag.de/,EPSG,2001-11-06 00:00:00,,1,0
-1788,RT90 to WGS 84 (2),transformation,4124,4326,EPSG-Swe 2001,2,1225,Approximation at the +/- 1m level.,9607,,,Parameter values from RT90 to ETRS89 (1) (code 1787) assuming that ETRS89 is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-11-06 00:00:00,,1,0
-1789,Dealui Piscului 1933 to WGS 84 (1),transformation,4316,4326,NAMR-Rom,1,1197,?,9603,,,,Petromar and NAMR,EPSG,2001-11-06 00:00:00,,1,0
-1790,Lisbon to ETRS89 (2),transformation,4207,4258,ICC-Prt 2001,2,1294,For applications to an accuracy of 2 metres.,9606,,,Derived in 2001.  Supersedes Lisbon to ETRS89 (1) (code 1655). May be taken as approximate transformation Lisbon to WGS 84 - see code 1791.,Instituto Portugues de Cartografia e Cadastro via EuroGeographics; http://crs.ifag.de/,EPSG,2002-01-18 00:00:00,,1,0
-1791,Lisbon to WGS 84 (2),transformation,4207,4258,EPSG-Prt 2001,2,1294,For applications to an accuracy of 2 metres.,9606,,,Parameter values from Lisbon to ETRS89 (2) (code 1790). Assumes ETRS89 and WGS 84 can be considered the same to within the accuracy of the transformation.,EPSG,EPSG,2002-01-18 00:00:00,,1,0
-1792,Datum 73 to ETRS89 (2),transformation,4274,4258,ICC-Prt 2001,2,1294,For applications to an accuracy of 1 metre.,9606,,,Derived in 2001.  Supersedes Datum 73 to ETRS89 (1) (code 1657).  May be taken as approximate transformation Datum 73 to WGS 84 - see code 1793.,Instituto Portugues de Cartografia e Cadastro via EuroGeographics; http://crs.ifag.de/,EPSG,2002-01-18 00:00:00,,1,0
-1793,Datum 73 to WGS 84 (2),transformation,4274,4258,EPSG-Prt 2001,2,1294,For applications to an accuracy of 1 metre.,9606,,,Parameter values from Datum 73 to ETRS89 (2) (code 1792). Assumes ETRS89 and WGS 84 can be considered the same to within the accuracy of the transformation.,EPSG,EPSG,2002-01-18 00:00:00,,1,0
-1794,MGI to WGS 84 (6),transformation,4312,4326,JPet-Yug,6,2547,Oil industry,9603,,,For more accurate transformation see MGI to WGS 84 (7) (code 1795).,Jugopetrol,EPSG,2002-01-18 00:00:00,,1,0
-1795,MGI to WGS 84 (7),transformation,4312,4326,JPET-Yug MB,7,2547,Oil industry,9636,,,,Jugopetrol,EPSG,2002-01-18 00:00:00,,1,0
-1796,Manoca 1962 to WGS 84 (1),transformation,4193,4326,ELF94-Cmr,1,2555,Oil industry,9603,,,"Derived at two points, checked at a third by Stolt Comex Seaway and Geoid for Elf.",TotalFinaElf,EPSG,2002-01-18 00:00:00,,1,0
-1797,Qornoq 1927 to WGS 84 (1),transformation,4194,4326,DMA-Grl S,1,2407,"For military purposes.  Accuracy 25m, 25m and 32m in X, Y and Z axes.",9603,,,Derived at 2 stations.,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,2002-01-18 00:00:00,,1,0
-1798,Qornoq 1927 to WGS 84 (2),transformation,4194,4326,KMS-Grl,2,1107,Topographic mapping.,9606,,,,"Kort og Matrikelstyrelsen, Copenhagen.",EPSG,2002-01-26 00:00:00,,1,0
-1799,Scoresbysund 1952 to WGS 84 (1),transformation,4195,4326,KMS-Grl Scosd,1,2570,Topographic mapping.,9606,,,,"Kort og Matrikelstyrelsen, Copenhagen.",EPSG,2002-01-26 00:00:00,,1,0
-1800,Ammassalik 1958 to WGS 84 (1),transformation,4196,4326,KMS-Grl Ammlk,1,2571,Topographic mapping.,9606,,,,"Kort og Matrikelstyrelsen, Copenhagen.",EPSG,2002-01-26 00:00:00,,1,0
-1801,Pointe Noire to WGS 84 (2),transformation,4282,4326,CGG94-Cog,2,2574,?,9603,,,Derived in 1994 by CGG/Topnav using DORIS system on various stations along the coastline.,TotalFinaElf,EPSG,2002-02-08 00:00:00,,1,0
-1802,Pointe Noire to WGS 84 (3),transformation,4282,4326,ELF95-Cog,3,2574,Used by Elf since May 1995 for all offshore Congo operations.,9606,,,Derived by Geoid for Elf in May 1995 using GPS and IGS data by tying 4 geodetic points to ITRF93 epoch 1995.4.,TotalFinaElf,EPSG,2002-02-08 00:00:00,,1,0
-1803,AGD66 to GDA94 (11),transformation,4202,4283,ICSM-Aus 0.1m,11,2575,0.1m accuracy.,9615,,,"Supersedes AGD66 to GDA94 variants 6, 7 and 10 (codes 1506 1507 1596). Variant 10 (1596) superseded #5 (1464). Input expects longitudes to be positive west; EPSG GeogCRS AGD66 (code 4202) and GDA94 (code 4283) both have longitudes positive east.",GDA Technical Manual.  http://www.anzlic.org.au/icsm/gdatm/chapter7.htm,EPSG,2002-01-18 00:00:00,,1,0
-1804,AGD84 to GDA94 (5),transformation,4203,4283,Auslig-Aus 0.1m,5,2576,0.1m accuracy.,9615,,,Supersedes AGD84 to GDA94 (4) (code 1593) which itself replaced variant 3 (code1159).  Input expects longitudes to be positive west; EPSG GeogCRS AGD84 (code 4203) and GDA94 (code 4283) both have longitudes positive east.,GDA Technical Manual.  http://www.anzlic.org.au/icsm/gdatm/chapter7.htm,EPSG,2002-01-18 00:00:00,,1,0
-1805,Garoua to WGS 72BE (1),transformation,4197,4324,ELF-Cmr,1,2590,Oil industry exploration.,9603,,,Derived in 1981 by Decca Survey France for Elf Serepca.,TotalFinaElf,EPSG,2002-02-12 00:00:00,,1,0
-1806,Kousseri to WGS 72BE (1),transformation,4198,4324,ELF-Cmr,1,2591,Oil industry expoloration.,9603,,,Derived in 1981 by Decca Survey France for Elf Serepca.,TotalFinaElf,EPSG,2002-02-12 00:00:00,,1,0
-1807,Pulkovo 1942 to WGS 84 (13),transformation,4284,4326,BP-Aze Aioc95,13,1038,Oil industry operations by AIOC prior to 1997.,9606,,,"Derived via WGS72 values taken from SOCAR Magnavox 1502 manual. Used by AIOC 1995-1997 then superseded by the AIOC97 values (tfm code 1808).
-Do not confuse with AIOC95 vertical datum as used in southern Caspian Sea and at Sangachal terminal by AIOC.",BP,EPSG,2002-02-12 00:00:00,,1,0
-1808,Pulkovo 1942 to WGS 84 (14),transformation,4284,4326,BP-Aze Aioc97,14,2593,Oil industry operations.,9606,,,"Mean of 3 stations in western Georgia, 4 stations in eastern Georgia and 4 stations in eastern Azerbaijan.  Derived for use on AIOC early oil western export pipeline, but adopted for all AIOC work superseding the 1995 AIOC transformation (code 1807).",BP,EPSG,2002-02-12 00:00:00,,1,0
-1809,Pulkovo 1942 to WGS 84 (15),transformation,4284,4326,TFE-Aze97,15,2594,Oil industry operations.,9606,,,Parameter values calculated by Elf Exp[loration and Production based on geodetic survey carried out by Azerbaijan State Committee for Geodesy and Cartography.,TotalFinaElf,EPSG,2002-02-12 00:00:00,,1,0
-1810,ED50 to WGS 84 (31),transformation,4230,4326,wgc72-Egy,31,2595,Oil industry exploration and production operations.,9606,,,Derived via concatenation through WGS72.  The ED50 to WGS72 step is the Sepplin 1974 value for all Europe.,Western Geophysical,EPSG,2002-02-12 00:00:00,,1,0
-1811,PSAD56 to WGS 84 (12),transformation,4248,4326,PB-Braz N,12,1754,Oil industry exploration.,9603,,,Used by Petrobras for shelf operations.,Petrobras,EPSG,2002-02-12 00:00:00,,1,0
-1812,Indian 1975 to WGS 84 (4),transformation,4240,4326,Auslig-Tha,4,1231,Cadastral survey.,9606,,,,Auslig via GPS World.,EPSG,2002-02-12 00:00:00,,1,0
-1813,Batavia to WGS 84 (2),transformation,4211,4326,ARCO-Idn ONWJ,2,2577,Oil industry operations.,9603,,,,Arco geodetic database,EPSG,2002-02-12 00:00:00,,1,0
-1814,Batavia to WGS 84 (3),transformation,4211,4326,KOM-Idn EJGP,3,2588,Oil industry operations.,9603,,,Used by PT Komaritim for Nippon Steel during East Java Gas Pipeline construction.,PT Komaritim report S808/91.,EPSG,2002-02-12 00:00:00,,1,0
-1815,Nord Sahara 1959 to WGS 84 (4),transformation,4307,4326,BP-Alg D3,4,2598,Oil industry operations.,9606,,,Used by BP in District 3 and In Salah Gas.,BP,EPSG,2002-02-12 00:00:00,,1,0
-1816,Nord Sahara 1959 to WGS 84 (5),transformation,4307,4326,BPA-Alg InAm,5,2599,Oil industry operations.,9603,,,Derived at astro station central to concession.  Significant and varying differences (>100m) at 4 neighbouring astro stations.,BP,EPSG,2002-02-12 00:00:00,,1,0
-1817,Nord Sahara 1959 to WGS 84 (6),transformation,4307,4326,ARCO-Alg HBR,6,2600,Oil industry operations.,9603,,,Derived at astro station Guerrara.,Arco geodetic database,EPSG,2002-02-12 00:00:00,,1,0
-1818,Minna to WGS 84 (4),transformation,4263,4326,RSL-Nga,4,1717,Oil industry operations.,9606,,,Concatenated via WGS 72BE. Adopted by Statoil.,Racal Survey Nigeria,EPSG,2002-02-12 00:00:00,,1,0
-1819,Minna to WGS 84 (5),transformation,4263,4326,SPD-Nga S,5,2371,Oil industry operations.,9606,,,Used by Shell in southern Nigeria and Total in OPL246.,TotalFinaElf,EPSG,2002-02-12 00:00:00,,1,1
-1820,Minna to WGS 84 (6),transformation,4263,4326,CON89-Nga,6,1717,Oil industry operations.,9603,,,Derived by Nortech at station L40 Minna using NNPC 1989 GPS network tied to 4 ADOS stations. Used by Conoco in OPLs 219-220 to cm precision and ExxonMobil in OPL 209 to dm precision..,TotalFinaElf,EPSG,2002-07-16 00:00:00,2002.29,1,0
-1821,Minna to WGS 84 (7),transformation,4263,4326,ELF94-Nga,7,1717,Oil industry operations.,9603,,,"Derived by Elf Petroleum Nigeria in 1994 at 3 stations (M101 onshore, offshore platforms XSW06 and XSV39) and used in OMLs 99-102 and OPLs 222-223.",TotalFinaElf,EPSG,2002-07-16 00:00:00,2002.29,1,0
-1822,Minna to WGS 84 (8),transformation,4263,4326,SHL-Nga OPL W,8,1717,Oil industry exploration and production.,9603,,,"Used by Shell SNEPCO for OPLs 209-213 and 316. Derived during 1990 Niger Delta control survey at 4 stations (XSU27, 30 31 and 35).",Shell Nigeria Exploration and Production Company,EPSG,2002-03-15 00:00:00,,1,0
-1823,Minna to WGS 84 (9),transformation,4263,4326,SHL-Nga OPL S,9,1717,Oil industry exploration and production.,9603,,,"Used by Shell SNEPCO for OPLs 217-223. Derived during 1990 Niger Delta control survey at 4 stations (XSU38, 41, 44 and 45).",Shell Nigeria Exploration and Production Company,EPSG,2002-03-15 00:00:00,,1,0
-1824,Minna to WGS 84 (10),transformation,4263,4326,SHL-Nga Gongola,10,2371,Oil industry exploration and production.,9603,,,Used by Shell SNEPCO for Gongola basin.,Shell International Exploration and Production,EPSG,2002-03-15 00:00:00,,1,0
-1825,Hong Kong 1980 to WGS 84 (1),transformation,4611,4326,LSD-HKG 2002,1,1118,Accuracy to 1m level.,9606,,,Published 1st March 2002.,"Geodetic Survey Section, Survey and Mapping Office, Lands Department, Hong Kong. http://www.info.gov.hk/landsd/mapping/tindex.htm",EPSG,2002-06-22 00:00:00,,1,0
-1826,JGD2000 to WGS 84 (1),transformation,4612,4326,EPSG-Jpn,1,1129,Approximation at the +/- 1m level.,9603,,,,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-1827,Tokyo to WGS 84 (6),transformation,4301,4326,GSI-Jpn 452141,6,2425,For medium accuracy.,9618,,,,http://vldb.gsi.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,2002-06-22 00:00:00,,1,0
-1828,Yoff to WGS 72 (1),transformation,4310,4322,DMA-SEN,1,1207,Military survey.,9603,,,,DMA,EPSG,2002-06-22 00:00:00,,1,0
-1829,HD72 to ETRS89 (1),transformation,4237,4258,FOMI-Hun,1,1119,Accuracy at decimetre level throughout Hungary.,9607,,,May be taken as approximate transformation HD72 to WGS 84 - see code 1830.,Institute of Geodetic Survey and Remote Sensing (FOMI) reflected at http://lazarus.elte.hu/gb/geodez/geod5.htm,EPSG,2002-06-22 00:00:00,,1,0
-1830,HD72 to WGS 84 (1),transformation,4237,4326,EPSG-Hun,1,1119,Approximation at the +/- 1m level assuming that ETRS89 is equivalent to WGS 84.,9607,,,Parameter values taken from HD72 to ETRS89 (1) (code 1829) assuming that ETRS89 is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-1831,HD72 to WGS 84 (2),transformation,4237,4326,ELTE-Hun,2,1119,Accuracy better than 1m in all three dimensions throughout Hungary.,9603,,,Derived at fundamental point Szolohegy and tested at 99 stations throughout Hungary.,"Timar, Molnar and Pasztor; Eotvos University, in Geodezia es Kartografia 54(1) pp11-16.  www.fomi.hu/internet/magyar/szaklap/geodkart.htm",EPSG,2002-06-22 00:00:00,,1,0
-1832,ID74 to WGS 84 (2),transformation,4238,4326,Rac91-Idn,2,1122,For oil industry purposes.,9606,,,Derived via coordinates of 2 Pulse8 stations. Use of D74 to WGS 84 (3) (code 1833) is recommended.,Racal Survey,EPSG,2002-06-22 00:00:00,,1,0
-1833,ID74 to WGS 84 (3),transformation,4238,4326,Bak-Idn,3,1122,"Standard deviations of translations are 1.3, 1.1 and 3.6m, of rotations 0.11, 0.06 and 0.04 sec and ppm 0.18.",9607,,,Derived at 38 stations.,Bakosurtanal.,EPSG,2002-06-22 00:00:00,,1,0
-1834,Segara to WGS 84 (1),transformation,4294,4326,NIMA-Idn Kal,1,2354,For military purposes.,9603,,,Accuracy estimate not available.,U.S. National Imagery and Mapping Agency  TR8350.2 revision of October 1997; http://164.214.2.59/geospatial/products/GandG/tr83502b/toc.html,EPSG,2002-06-22 00:00:00,,1,0
-1835,Segara to WGS 84 (2),transformation,4294,4326,Shl-Idn Kal E,2,1360,Oil exploration.,9603,,,,Shell,EPSG,2002-06-22 00:00:00,,1,0
-1836,Segara to WGS 84 (3),transformation,4294,4326,Shl-Idn Kal NE,3,2770,Oil exploration.,9603,,,,Shell,EPSG,2002-06-22 00:00:00,,1,0
-1837,Makassar to WGS 84 (1),transformation,4257,4326,Shl-Idn Sul SW,1,1316,Oil exploration.,9603,,,,Shell,EPSG,2002-06-22 00:00:00,,1,0
-1838,Segara to WGS 84 (4),transformation,4613,4326,TOT-Idn Mah,4,1328,Oil exploration.,9603,,,Datum shift derived through ITRF93.,Total Indonesia.,EPSG,2002-06-22 00:00:00,,1,0
-1839,Beduaram to WGS 72BE (1),transformation,4213,4324,ELF-Ner SE,1,2771,Oil exploration.,9603,,,,TotalFinaElf,EPSG,2002-06-28 00:00:00,,1,0
-1840,QND95 to WGS 84 (1),transformation,4614,4326,CGIS-Qat,1,1346,Parameter values are defined and therefore exact.,9606,,,"Transformation defines QND95. May be approximated to 1m throughout Qatar by geocentric translation transformation with dX=-127.78098m, dY=-283.37477m, dZ=+21.24081m.",Qatar Centre for Geographic Information.,EPSG,2002-06-28 00:00:00,,1,0
-1841,ATS77 to NAD83(CSRS) (1),transformation,4122,4617,GIC-Can NB,1,1447,Accuracy 1-2 metres.,9615,,,Introduced in 1999. Can be taken as an approximate transformation ATS77 to WGS 84 - see code 1688.,New Brunswick Geographic Information Corporation land and water information standards manual.,EPSG,2002-07-13 00:00:00,,1,0
-1842,NAD83(CSRS) to WGS 84 (1),transformation,4617,4326,EPSG-Can,1,1336,Approximation at the +/- 1m level assuming that NAD83(CSRS) is equivalent to WGS 84.,9603,,,For many purposes NAD83(CSRS) can be considered to be coincident with WGS 84.,EPSG,EPSG,2002-07-13 00:00:00,,1,0
-1843,NAD83 to NAD83(CSRS) (1),transformation,4269,4617,SGQ-Can QC,1,1368,Accuracy 1-2 metres.,9615,,,Uses NT method which expects longitudes positive west; EPSG GeogCRSs NAD83 (code 4269) and NAD83(CSRS) (code 4617) have longitudes positive east. Can be taken as an approximate transformation NAD83 to WGS 84 - see code 1696.,Geodetic Service of Quebec.  Contact alain.bernard at mrn.gouv.qc.ca,EPSG,2002-07-13 00:00:00,,1,0
-1844,NAD27 to NAD83(CSRS) (1),transformation,4267,4617,SGQ-Can QC,1,1368,Accuracy 1-2 metres.,9615,,,Uses NT method which expects longitudes positive west; EPSG GeogCRSs NAD27 (code 4267) and NAD83(CSRS) (code 4617) have longitudes positive east. Can be taken as an approximate transformation NAD27 to WGS 84 - see code 1692.,Geodetic Service of Quebec.  Contact alain.bernard at mrn.gouv.qc.ca,EPSG,2002-07-13 00:00:00,,1,0
-1845,NAD27(CGQ77) to NAD83(CSRS) (1),transformation,4609,4617,SGQ-Can QC,1,1368,Accuracy 1-2 metres.,9615,,,Uses NT method which expects longitudes positive west; EPSG GeogCRSs NAD27(CGQ77) (code 4609) and NAD83(CSRS) (code 4617) have longitudes positive east. Can be taken as an approximate transformation NAD27(CGQ77) to WGS 84 - see code 1691.,Geodetic Service of Quebec.  Contact alain.bernard at mrn.gouv.qc.ca,EPSG,2002-07-13 00:00:00,,1,0
-1846,ATS77 to NAD83(CSRS) (2),transformation,4122,4617,PEI DOT-Can PEI,2,1533,Accuracy 1-2 metres.,9615,,,Can be taken as an approximate transformation ATS77 to WGS 84 - see code 1689.,PEI Department of Transportation & Public Works,EPSG,2002-07-13 00:00:00,,1,0
-1847,NAD27 to NAD83(CSRS) (2),transformation,4267,4617,SK PMC-Can SK,2,2375,Accuracy 1-2 metres.,9615,,,Can be taken as an approximate transformation NAD27 to WGS 84 - see code 1703.,Dir Geodetic Surveys; SaskGeomatics Div.; Saskatchewan Property Management Company.,EPSG,2002-07-13 00:00:00,,1,0
-1848,NAD83 to NAD83(CSRS) (2),transformation,4269,4617,SK PMC-Can SK,2,2375,Accuracy 1-2 metres.,9615,,,Can be taken as an approximate transformation NAD83 to WGS 84 - see code 1697.,Dir Geodetic Surveys; SaskGeomatics Div.; Saskatchewan Property Management Company.,EPSG,2002-07-13 00:00:00,,1,0
-1849,NAD83 to NAD83(CSRS) (3),transformation,4269,4617,AB Env-Can AB,3,2376,Accuracy 1-2 metres.,9615,,,"This gridded difference file  AB_CSRS.DAC will need to be renamed to AB_CSRS.gsb to run in some software suites.  Formats identical, but AB file is provincial fit only.  Can be taken as an approximate transformation NAD83 to WGS 84 - see code 1702.",Geodetic Control Section; Land and Forest Svc; Alberta Environment; http://www.gov.ab.ca/env/land/dos/ or email to geoff.banham at gov.ab.ca [...]
-1850,ATS77 to NAD83(CSRS) (3),transformation,4122,4617,NSGC-Can NS,2,2313,Accuracy 1-2 metres.,9615,,,Can be taken as an approximate transformation ATS77 to WGS 84 - see code 1851.,Nova Scotia Geomatics Centre -   Contact aflemmin at linux1.nsgc.gov.ns.ca or telephone 902-667-6409,EPSG,2002-07-13 00:00:00,,1,0
-1851,ATS77 to WGS 84 (3),transformation,4122,4326,EPSG-Can NS,2,2313,Approximation at the +/- 1m level.,9615,,,Parameter file is from ATS77 to NAD83(CSRS) (3) (code 1850) assuming that NAD83(CSRS) is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2002-07-13 00:00:00,,1,0
-1852,Timbalai 1948 to WGS 84 (4),transformation,4298,4326,SSB-Mys E,4,2780,Oil exploration.,9606,,,Derived by Racal Survey for SSB at 24 coastal stations (including Timbalai fundamental point and 6 other primary triangulation stations) between in Sabah (Kudat southwards) and Sarawak (Sibu northwards).,Sarawak Shell Berhard,EPSG,2002-07-13 00:00:00,,1,0
-1854,FD58 to WGS 84 (2),transformation,4132,4326,TFE-Irn Lavan,2,2782,Oil Exploration,9603,,,Derived by Geoid for Elf in 1999.  EGM96 geoid used.,TotalFinaElf,EPSG,2002-07-13 00:00:00,,1,0
-1855,FD58 to WGS 84 (3),transformation,4132,4326,TFE-Irn Kharg,3,2781,Oil Exploration,9603,,,Derived by Geoid for Elf in 1999.  EGM96 geoid used.,TotalFinaElf,EPSG,2002-07-13 00:00:00,,1,0
-1856,ED50(ED77) to WGS 84 (3),transformation,4154,4326,TFE-Irn SPars,3,2783,Oil Exploration,9603,,,Derived in Kangan district by Geoid for Total in 1998.  Used for South Pars phases 2 and 3.,TotalFinaElf,EPSG,2002-07-13 00:00:00,,1,0
-1857,ED50(ED77) to WGS 84 (4),transformation,4154,4326,TFE-Irn Lavan,4,2782,Oil Exploration,9603,,,Derived in 1999 on Lavan island by Geoid for Elf.,TotalFinaElf,EPSG,2002-07-13 00:00:00,,1,0
-1858,ED50(ED77) to WGS 84 (5),transformation,4154,4326,TFE-Irn Kharg,5,2781,Oil Exploration,9603,,,Derived by Geoid for Elf in 1999.  EGM96 geoid used.,TotalFinaElf,EPSG,2002-07-13 00:00:00,,1,0
-1859,ELD79 to WGS 84 (1),transformation,4159,4326,REP-Lby MZQ,1,2785,Oil Exploration,9603,,,Used by Repsol. Reliability of connection to ELD79 questionned.,Oil industry sources.,EPSG,2002-07-16 00:00:00,,1,0
-1860,ELD79 to WGS 84 (2),transformation,4159,4326,TFE-Lby MZQ,2,2785,Oil Exploration. 3-dimensional SD at 11 points is 0.5m.,9603,,,Derived December 2001 by NAGECO. Connected to ITRF via Remsa 2000 data. Used by TotalFinaElf.,TotalFinaElf,EPSG,2002-07-16 00:00:00,,1,0
-1861,ELD79 to WGS 84 (3),transformation,4159,4326,TFE-Lby MBK94,3,2786,Oil Exploration,9603,,,Derived by GEOID in 1994 from Transit satellite data. Used by TotalFinaElf.,TotalFinaElf,EPSG,2002-07-16 00:00:00,,1,0
-1862,ELD79 to WGS 84 (4),transformation,4159,4326,TFE-Lby MBK00,4,2786,Oil Exploration,9606,,,Derived by Geoid in 2000 from ITRF connection by NAGECO for TotalFinaElf. For historic compatibility TFE use the 1994 tfm ELD79 to WGS 84 (3) (code 1861).,TotalFinaElf,EPSG,2002-07-16 00:00:00,,1,0
-1863,ELD79 to WGS 84 (5),transformation,4159,4326,GMRA-Lby,5,2786,Engineering survey and oil exploration,9607,,,Derived for the Great Man-made River Authority (GMRA). Used by Saga in Mabruk blocks A and B.,Norsk Hydro,EPSG,2002-07-16 00:00:00,,1,0
-5400,Baltic to Caspian,transformation,5705,5706,Caspian Sea,1,2314,Vertical datum change for hydrographic charting.,9616,,,Baltic datum is 28m above Caspian datum.,,EPSG,1999-09-07 00:00:00,97.61,1,0
-5401,Belfast to Malin Head,transformation,5732,5731,OSNI-Gbr NI,1,1305,Vertical datum change for large scale topographic mapping and engineering survey.,9616,,,Belfast datum is 37mm above Malin Head datum.,,EPSG,2001-11-06 00:00:00,,1,0
-5402,Baltic to AIOC95,transformation,5705,5734,AIOC95-Aze,1,2592,Vertical datum change for engineering surveying.,9616,,,Baltic datum is 26.3m above AIOC95 datum.,BP,EPSG,2002-02-12 00:00:00,,1,0
-5403,AIOC95 to Caspian,transformation,5734,5706,AIOC95-Aze,1,2592,Vertical datum change for hydrographic charting.,9616,,,AIOC95 datum is 1.7m above Caspian datum.,BP,EPSG,2002-02-12 00:00:00,,1,0
-5404,Baltic to Black Sea,transformation,5705,5735,Black Sea,1,1102,Vertical datum change.,9616,,,Baltic datum is 0.4m above Black Sea datum.,BP,EPSG,2002-02-12 00:00:00,,1,0
-5405,Hong Kong Principal height to Hong Kong Chart depth,transformation,5738,5739,SMO-HK,1,1118,Vertical datum change for hydrographic charting.,9616,,,HKPD is 0.146m above chart datum.,"Survey and Mapping Office, Lands Department. Http://www.info.gov.hk/landsd/mapping/tindex.htm",EPSG,2002-06-22 00:00:00,,1,0
-8046,ED50 to WGS 84 (14),concatenated operation,4230,4326,5Nat-NSea90,14,2330,Primarily oil industry usage.,,,,"1990 agreement between Denmark, Germany, Great Britain, Netherlands and Norway.  Supersedes 1981 6-nations agreement between ED50 and WGS72 or WGS72BE. Only actively used offshore Norway but see ED50 to WGS 84 (24) (code 1613) for simpler transformation.","Norwegian Mapping Authority publication 1990:1 ""The transformation between ED50 and WGS84 for exploration purposes in the  [...]
-8047,ED50 to WGS 84 (15),concatenated operation,4230,4326,NMA-Nor N65 1991,15,2331,Oil exploration before 2001.,,,,"Superseded by codes 8569 and 1612 in 1997 and 2001.
-The concatenation of transformations 1147 and 1146 gives the following position vector tfm: dX=-84.491  dY=-100.559  dZ=-114.209 metres rX= -2.4006  rY=-0.5367  rZ=-2.3742 microradians  dS=+0.2947 ppm.","Statenskartverk note of January 1991 ""Om transformasjon mellom geodetiske datum i Norge"".",EPSG,1996-10-18 00:00:00,,1,0
-8094,NTF (Paris) to WGS 84 (1),concatenated operation,4807,4326,EPSG-Fra,1,1096,?,,,,,EPSG,EPSG,1996-10-18 00:00:00,,1,0
-8174,Bogota 1975 (Bogota) to WGS 84 (1),concatenated operation,4802,4326,DMA-Col,1,1070,"For military purposes.  Accuracy 6m, 5m and 6m in X, Y and Z axes.",,,,,EPSG,EPSG,1997-04-11 00:00:00,,1,0
-8175,Monte Mario (Rome) to WGS 84 (1),concatenated operation,4806,4326,EPSG-Ita,1,2339,For military purposes.  Accuracy 25m in each axis.,,,,,EPSG,EPSG,1997-04-11 00:00:00,,1,0
-8176,Tananarive (Paris) to WGS 84 (1),concatenated operation,4810,4326,EPSG-Mdg,1,1149,For military purposes.  Accuracy not available.,,,,,EPSG,EPSG,1997-04-11 00:00:00,,1,0
-8178,Batavia (Jakarta) to WGS 84 (1),concatenated operation,4813,4326,EPSG-Idn Sumatra,1,1355,For military purposes.  Accuracy 3m in each axis.,,,,,EPSG,EPSG,1997-04-11 00:00:00,,1,0
-8183,HD72 to WGS 84 (1),concatenated operation,4237,4326,EPSG-Hun,1,1119,Approximation at the +/- 1m level assuming that ETRS89 is equivalent to WGS 84.,,,,Approximation at the +/- 1m level assuming that ETRF89 is equivalent to WGS 84.,EPSG,EPSG,1997-07-22 00:00:00,,1,1
-8186,NTF (Paris) to ED50 (1),concatenated operation,4807,4230,EPSG-Fra,1,1096,?,,,,,EPSG,EPSG,1997-11-13 00:00:00,,1,0
-8188,NTF (Paris) to WGS 72 (1),concatenated operation,4807,4322,EPSG-Fra,1,1096,?,,,,,EPSG,EPSG,1997-11-13 00:00:00,,1,0
-8190,AGD66 to WGS 84 (2),concatenated operation,4202,4326,EPSG-Aus 5m,2,1036,Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84.,,,,Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84.  0.1m accuracy.,EPSG,EPSG,1998-12-16 00:00:00,98.50,1,1
-8192,AGD84 to WGS 84 (3),concatenated operation,4203,4326,EPSG-Aus 5m,3,1036,5m accuracy. Approximation assuming that GDA94 is equivalent to WGS 84.,,,,Approximation assuming that GDA94 is equivalent to WGS 84.,EPSG,EPSG,1998-12-16 00:00:00,98.50,1,1
-8194,AGD84 to WGS 84 (4),concatenated operation,4203,4326,EPSG-Aus 1m,4,1036,Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84.,,,,Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84.,EPSG,EPSG,1998-12-16 00:00:00,98.50,1,1
-8195,RT90 to WGS 84 (1),concatenated operation,4124,4326,EPSG-Swe,1,1225,Approximation at the +/- 1m level assuming that ETRS89 is equivalent to WGS 84.,,,,Approximation at the +/- 1m level assuming that ETRF89 is equivalent to WGS 84.,EPSG,EPSG,1999-04-22 00:00:00,99.11,1,1
-8199,Pulkovo 1942 to WGS 84 (2),concatenated operation,4284,4326,EPSG-Ltu,2,1145,Approximation at the +/- 1m level assuming that LKS94(ETRS89) is equivalent to WGS 84.,,,,Approximation at the +/- 1m level assuming that LKS94(ETRS89) is equivalent to WGS 84.,EPSG,EPSG,1998-03-12 00:00:00,,1,1
-8211,Voirol 1875 (Paris) to WGS 84 (1),concatenated operation,4811,4326,EPSG-Dza N,1,2347,Oil exploration.,,,,,EPSG,EPSG,1998-03-12 00:00:00,,1,0
-8215,Tete to WGS 84 (1),concatenated operation,4127,4326,EPSG-Moz,1,1167,Approximation at the +/- 1m level assuming that Moznet is equivalent to WGS 84.,,,,Approximation at the +/- 1m level assuming that Moznet is equivalent to WGS 84.,EPSG,EPSG,1998-04-16 00:00:00,,1,1
-8217,Tete to WGS 84 (2),concatenated operation,4127,4326,EPSG-Moz A,2,2350,Approximation at the +/- 1m level assuming that Moznet is equivalent to WGS 84.,,,,Approximation at the +/- 1m level assuming that Moznet is equivalent to WGS 84.,EPSG,EPSG,1998-04-16 00:00:00,,1,1
-8219,Tete to WGS 84 (3),concatenated operation,4127,4326,EPSG-Moz B,3,2351,Approximation at the +/- 1m level assuming that Moznet is equivalent to WGS 84.,,,,Approximation at the +/- 1m level assuming that Moznet is equivalent to WGS 84.,EPSG,EPSG,1998-04-16 00:00:00,,1,1
-8221,Tete to WGS 84 (4),concatenated operation,4127,4326,EPSG-Moz C,4,2352,Approximation at the +/- 1m level assuming that Moznet is equivalent to WGS 84.,,,,Approximation at the +/- 1m level assuming that Moznet is equivalent to WGS 84.,EPSG,EPSG,1998-04-16 00:00:00,,1,1
-8223,Tete to WGS 84 (5),concatenated operation,4127,4326,EPSG-Moz D,5,2353,Approximation at the +/- 1m level assuming that Moznet is equivalent to WGS 84.,,,,Approximation at the +/- 1m level assuming that Moznet is equivalent to WGS 84.,EPSG,EPSG,1998-04-16 00:00:00,,1,1
-8234,DHDN to WGS 84 (1),concatenated operation,4314,4326,EPSG-Deu W,1,2326,Approximation at the +/- 1m level assuming that ETRS89 is equivalent to WGS 84.,,,,Approximation at the +/- 1m level assuming that ETRF89 is equivalent to WGS 84.,EPSG,EPSG,1998-06-30 00:00:00,,1,1
-8236,Pulkovo 1942 to WGS 84 (11),concatenated operation,4284,4326,EPSG-Deu E,11,1343,Approximation at the +/- 1m level assuming that ETRF89 is equivalent to WGS 84.,,,,Approximation at the +/- 1m level assuming that ETRF89 is equivalent to WGS 84.,EPSG,EPSG,1998-06-30 00:00:00,,1,1
-8241,Madrid 1870 (Madrid) to WGS 84 (1),concatenated operation,4903,4326,EPSG-Esp,1,1217,?,,,,,See individual transformations.,EPSG,1998-11-11 00:00:00,,1,0
-8243,NAD27 to WGS 84 (25),concatenated operation,4267,4326,EPSG-Can old,25,1061,Approximation at the +/- 1m level assuming that NAD83 is equivalent to WGS 84.,,,,Approximation at the +/- 1m level assuming that NAD83 is equivalent to WGS 84.  Superseded by NAD27 to WGS 84 (27) (code 8404) in Quebec and NAD27 to WGS 84 (26) (code 8245) elsewhere in Canada.,EPSG,EPSG,1998-11-11 00:00:00,,1,1
-8245,NAD27 to WGS 84 (26),concatenated operation,4267,4326,EPSG-Can,26,1061,Approximation at the +/- 1m level assuming that NAD83 is equivalent to WGS 84.,,,,Approximation at the +/- 1m level assuming that NAD83 is equivalent to WGS 84.,EPSG,EPSG,1998-11-11 00:00:00,,1,1
-8263,MGI (Ferro) to WGS 84 (1),concatenated operation,4805,4326,DMA-balk,1,2370,For military purposes only.,,,,Accuracy estimate is not available.,EPSG,EPSG,1998-12-12 00:00:00,,1,0
-8386,Old Hawaiian to WGS 84 (1),concatenated operation,4135,4326,EPSG-Usa Hi,1,1334,Approximation at the +/- 1m level assuming that NAD83 is equivalent to WGS 84.,,,,Approximation at the +/- 1m level assuming that NAD83 is equivalent to WGS 84.,EPSG,EPSG,1999-05-24 00:00:00,,1,1
-8388,St. Lawrence Island to WGS 84 (1),concatenated operation,4136,4326,EPSG-Usa AK StL,1,1332,Approximation at the +/- 1m level assuming that NAD83 is equivalent to WGS 84.,,,,Approximation at the +/- 1m level assuming that NAD83 is equivalent to WGS 84.,EPSG,EPSG,1999-05-24 00:00:00,,1,1
-8390,St. Paul Island to WGS 84 (1),concatenated operation,4137,4326,EPSG-Usa AK StP,1,1333,Approximation at the +/- 1m level assuming that NAD83 is equivalent to WGS 84.,,,,Approximation at the +/- 1m level assuming that NAD83 is equivalent to WGS 84.,EPSG,EPSG,1999-05-24 00:00:00,,1,1
-8392,St. George Island to WGS 84 (1),concatenated operation,4138,4326,EPSG-Usa AK StG,1,1331,Approximation at the +/- 1m level assuming that NAD83 is equivalent to WGS 84.,,,,Approximation at the +/- 1m level assuming that NAD83 is equivalent to WGS 84.,EPSG,EPSG,1999-05-24 00:00:00,,1,1
-8394,NAD27(CGQ77) to WGS 84 (1),concatenated operation,4609,4326,EPSG-Can Qc NT1,1,1368,Approximation at the +/- 1m level assuming that NAD83 is equivalent to WGS 84.,,,,Approximation at the +/- 1m level assuming that NAD83 is equivalent to WGS 84.  Superseded by NAD27(CGQ77) to WGS 84 (2) (code 8564).,EPSG,EPSG,1999-05-24 00:00:00,,1,1
-8396,AGD66 to WGS 84 (3),concatenated operation,4202,4326,EPSG-Aus ACT 1m,3,2283,Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84.,,,,Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84.  Superseded by AGD66 to WGS 84 (11) (code 8581).,EPSG,EPSG,1999-05-24 00:00:00,,1,1
-8398,AGD66 to WGS 84 (4),concatenated operation,4202,4326,EPSG-Aus Tas 1m,4,1282,Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84.,,,,Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84.  Superseded by AGD66 to WGS 84 (9) (code 8576).,EPSG,EPSG,1999-05-24 00:00:00,,1,1
-8400,AGD66 to WGS 84 (5),concatenated operation,4202,4326,EPSG-Aus NSW Vic 1m,5,2286,Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84.,,,,Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84.,EPSG,EPSG,1999-05-24 00:00:00,,1,1
-8402,Puerto Rico to WGS 84 (1),concatenated operation,4139,4326,EPSG-PRVI,1,1335,Approximation at the +/- 1m level assuming that NAD83 is equivalent to WGS 84.,,,,Approximation at the +/- 1m level assuming that NAD83 is equivalent to WGS 84.,EPSG,EPSG,1999-05-24 00:00:00,,1,1
-8404,NAD27 to WGS 84 (27),concatenated operation,4267,4326,EPSG-Can QC,27,1368,Approximation at the +/- 1m level assuming that NAD83 is equivalent to WGS 84.,,,,Approximation at the +/- 1m level assuming that NAD83 is equivalent to WGS 84.  Superseded by NAD27 to WGS 84 (31) (code 8565).,EPSG,EPSG,1999-05-24 00:00:00,,1,1
-8406,NAD27(76) to WGS 84 (1),concatenated operation,4608,4326,EPSG-Can On,1,1367,Approximation at the +/- 1m level assuming that NAD83 is equivalent to WGS 84.,,,,Approximation at the +/- 1m level assuming that NAD83 is equivalent to WGS 84.,EPSG,EPSG,1999-05-24 00:00:00,,1,1
-8408,AGD66 to WGS 84 (6),concatenated operation,4202,4326,EPSG-Aus Vic 0.1m,6,2285,Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84.,,,,Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84.   Superseded by AGD66 to WGS 84 (11) (code 8578).,EPSG,EPSG,1999-05-24 00:00:00,,1,1
-8418,ATS77 to WGS 84 (1),concatenated operation,4122,4326,EPSG-Can NB,1,1447,Approximation at the +/- 1m level assuming that NAD83(CSRS98) is equivalent to WGS 84.,,,,Approximation at the +/- 1m level assuming that NAD83(CSRS98) is equivalent to WGS 84.,EPSG,EPSG,1999-10-20 00:00:00,,1,1
-8419,ATS77 to WGS 84 (2),concatenated operation,4122,4326,EPSG-Can PEI,2,1533,Approximation at the +/- 1m level assuming that NAD83(CSRS98) is equivalent to WGS 84.,,,,Approximation at the +/- 1m level assuming that NAD83(CSRS98) is equivalent to WGS 84.,EPSG,EPSG,2000-10-19 00:00:00,,1,1
-8420,NAD27 to WGS 84 (32),concatenated operation,4267,4326,SK PMC-Can SK,32,2375,Approximation at the +/- 1m level assuming that NAD83(CSRS98) is equivalent to WGS 84.,,,,,Dir Geodetic Surveys; SaskGeomatics Div.; Saskatchewan Property Management Company.,EPSG,2000-10-19 00:00:00,,1,1
-8421,NAD83 to WGS 84 (7),concatenated operation,4269,4326,SK PMC-Can SK,7,2375,Approximation at the +/- 1m level assuming that NAD83(CSRS98) is equivalent to WGS 84.,,,,,Dir Geodetic Surveys; SaskGeomatics Div.; Saskatchewan Property Management Company.,EPSG,2000-10-19 00:00:00,,1,1
-8422,NAD83 to WGS 84 (8),concatenated operation,4269,4326,Alb Env-Can AB,8,2376,Approximation at the +/- 1m level assuming that NAD83(CSRS98) is equivalent to WGS 84.,,,,"The gridded difference file  AB_CSRS.DAC in STEP 1 will need to be renamed to AB_CSRS.gsb to run in some software suites.  Formats identical, but AB file is provincial fit only.",Geodetic Control Section; Land and Forest Svc; Alberta Environment; http://www.gov.ab.ca/env/land/dos/ or email to geoff.banham at gov.ab.ca,EPSG [...]
-8453,AGD66 to WGS 84 (7),concatenated operation,4202,4326,EPSG-Aus Tas 0.1m,7,1282,Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84.,,,,Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84.,EPSG,EPSG,1999-10-20 00:00:00,,1,1
-8454,AGD66 to WGS 84 (8),concatenated operation,4202,4326,EPSG-Aus NT 0.1m,8,2284,Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84.,,,,Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84.,EPSG,EPSG,1999-10-20 00:00:00,,1,1
-8457,CH1903+ to WGS 84 (1),concatenated operation,4150,4326,EPSG-CH,1,1286,Approximation at the +/- 1m level assuming that CHTRF95 is equivalent to WGS 84.,,,,Approximation at the +/- 1m level assuming that CHTRF95 is equivalent to WGS 84.,EPSG,EPSG,1999-10-20 00:00:00,,1,1
-8460,NAD27 to NAD83(HARN) (1),concatenated operation,4267,4152,NGS-Usa AL,1,1372,"Accuracy at 67% confidence level is 0.2m onshore, 5m nearshore and undetermined farther offshore.",,,,May be taken as approximate transformation NAD27 to WGS 84 - see code 8590.,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,1999-10-20 00:00:00,,1,0
-8461,NAD27 to NAD83(HARN) (2),concatenated operation,4267,4152,NGS-Usa AZ,2,1373,Accuracy at 67% confidence level is 0.2m.,,,,May be taken as approximate transformation NAD27 to WGS 84 - see code 8591.,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,1999-10-20 00:00:00,,1,0
-8462,NAD27 to NAD83(HARN) (3),concatenated operation,4267,4152,NGS-Usa CA n,3,2297,"Accuracy at 67% confidence level is 0.2m onshore, 5m nearshore and undetermined farther offshore.",,,,May be taken as approximate transformation NAD27 to WGS 84 - see code 8593.,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,1999-10-20 00:00:00,,1,0
-8463,NAD27 to NAD83(HARN) (4),concatenated operation,4267,4152,NGS-Usa CA s,4,2298,"Accuracy at 67% confidence level is 0.2m onshore, 5m nearshore and undetermined farther offshore.",,,,May be taken as approximate transformation NAD27 to WGS 84 - see code 8594.,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,1999-10-20 00:00:00,,1,0
-8464,NAD27 to NAD83(HARN) (5),concatenated operation,4267,4152,NGS-Usa CO,5,1376,Accuracy at 67% confidence level is 0.2m.,,,,May be taken as approximate transformation NAD27 to WGS 84 - see code 8595.,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,1999-10-20 00:00:00,,1,0
-8465,NAD27 to NAD83(HARN) (6),concatenated operation,4267,4152,NGS-Usa GA,6,1380,Accuracy at 67% confidence level is 0.2m.,,,,May be taken as approximate transformation NAD27 to WGS 84 - see code 8597.,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,1999-10-20 00:00:00,,1,0
-8466,NAD27 to NAD83(HARN) (7),concatenated operation,4267,4152,NGS-Usa FL,7,1379,"Accuracy at 67% confidence level is 0.2m onshore, 5m nearshore and undetermined farther offshore.",,,,May be taken as approximate transformation NAD27 to WGS 84 - see code 8596.,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,1999-10-20 00:00:00,,1,0
-8467,NAD27 to NAD83(HARN) (8),concatenated operation,4267,4152,NGS-Usa ID MT e,8,2382,Accuracy at 67% confidence level is 0.2m.,,,,May be taken as approximate transformation NAD27 to WGS 84 - see code 8611.,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,1999-10-20 00:00:00,,1,0
-8468,NAD27 to NAD83(HARN) (9),concatenated operation,4267,4152,NGS-Usa ID MT w,9,2383,Accuracy at 67% confidence level is 0.2m.,,,,May be taken as approximate transformation NAD27 to WGS 84 - see code 8612.,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,1999-10-20 00:00:00,,1,0
-8469,NAD27 to NAD83(HARN) (10),concatenated operation,4267,4152,NGS-Usa KY,10,1386,Accuracy at 67% confidence level is 0.2m.,,,,May be taken as approximate transformation NAD27 to WGS 84 - see code 8602.,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,1999-10-20 00:00:00,,1,0
-8470,NAD27 to NAD83(HARN) (11),concatenated operation,4267,4152,NGS-Usa LA,11,1387,"Accuracy at 67% confidence level is 0.2m onshore, 5m nearshore and undetermined farther offshore.",,,,May be taken as approximate transformation NAD27 to WGS 84 - see code 8603.,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,1999-10-20 00:00:00,,1,0
-8471,NAD27 to NAD83(HARN) (12),concatenated operation,4267,4152,NGS-Usa DE MD,12,2377,Accuracy at 67% confidence level is 0.2m.,,,,May be taken as approximate transformation NAD27 to WGS 84 - see code 8605.,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,1999-10-20 00:00:00,,1,0
-8472,NAD27 to NAD83(HARN) (13),concatenated operation,4267,4152,NGS-Usa ME,13,1388,"Accuracy at 67% confidence level is 0.2m onshore, 5m nearshore and undetermined farther offshore.",,,,May be taken as approximate transformation NAD27 to WGS 84 - see code 8604.,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,1999-10-20 00:00:00,,1,0
-8473,NAD27 to NAD83(HARN) (14),concatenated operation,4267,4152,NGS-Usa MI,14,1391,Accuracy at 67% confidence level is 0.2m.,,,,May be taken as approximate transformation NAD27 to WGS 84 - see code 8607.,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,1999-10-20 00:00:00,,1,0
-8474,NAD27 to NAD83(HARN) (15),concatenated operation,4267,4152,NGS-Usa MS,15,1393,"Accuracy at 67% confidence level is 0.2m onshore, 5m nearshore and undetermined farther offshore.",,,,May be taken as approximate transformation NAD27 to WGS 84 - see code 8609.,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,1999-10-20 00:00:00,,1,0
-8475,NAD27 to NAD83(HARN) (16),concatenated operation,4267,4152,NGS-Usa NE,16,1396,Accuracy at 67% confidence level is 0.2m.,,,,May be taken as approximate transformation NAD27 to WGS 84 - see code 8613.,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,1999-10-20 00:00:00,,1,0
-8476,NAD27 to NAD83(HARN) (17),concatenated operation,4267,4152,NGS-Usa NewEng,17,2378,"Accuracy at 67% confidence level is 0.2m onshore, 5m nearshore and undetermined farther offshore.",,,,May be taken as approximate transformation NAD27 to WGS 84 - see code 8606.,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,1999-10-20 00:00:00,,1,0
-8477,NAD27 to NAD83(HARN) (18),concatenated operation,4267,4152,NGS-Usa NM,18,1400,Accuracy at 67% confidence level is 0.2m.,,,,May be taken as approximate transformation NAD27 to WGS 84 - see code 8616.,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,1999-10-20 00:00:00,,1,0
-8478,NAD27 to NAD83(HARN) (19),concatenated operation,4267,4152,NGS-Usa NY,19,1401,"Accuracy at 67% confidence level is 0.2m onshore, 5m nearshore and undetermined farther offshore.",,,,May be taken as approximate transformation NAD27 to WGS 84 - see code 8617.,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,1999-10-20 00:00:00,,1,0
-8479,NAD27 to NAD83(HARN) (20),concatenated operation,4267,4152,NGS-Usa ND,20,1403,Accuracy at 67% confidence level is 0.2m.,,,,May be taken as approximate transformation NAD27 to WGS 84 - see code 8618.,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,1999-10-20 00:00:00,,1,0
-8480,NAD27 to NAD83(HARN) (21),concatenated operation,4267,4152,NGS-Usa OK,21,1405,Accuracy at 67% confidence level is 0.2m.,,,,May be taken as approximate transformation NAD27 to WGS 84 - see code 8620.,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,1999-10-20 00:00:00,,1,0
-8481,Puerto Rico to NAD83(HARN) (1),concatenated operation,4139,4152,NGS-PRVI,1,1335,Accuracy 0.1m at 67% confidence level.,,,,May be taken as approximate transformation Puerto Rico to WGS 84 - see code 8583.,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,1999-10-20 00:00:00,,1,0
-8482,NAD27 to NAD83(HARN) (22),concatenated operation,4267,4152,NGS-Usa SD,22,1410,Accuracy at 67% confidence level is 0.2m.,,,,May be taken as approximate transformation NAD27 to WGS 84 - see code 8622.,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,1999-10-20 00:00:00,,1,0
-8483,NAD27 to NAD83(HARN) (23),concatenated operation,4267,4152,NGS-Usa TN,23,1411,Accuracy at 67% confidence level is 0.2m.,,,,May be taken as approximate transformation NAD27 to WGS 84 - see code 8623.,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,1999-10-20 00:00:00,,1,0
-8484,NAD27 to NAD83(HARN) (24),concatenated operation,4267,4152,NGS-Usa TX e,24,2379,"Accuracy at 67% confidence level is 0.2m onshore, 5m nearshore and undetermined farther offshore.",,,,May be taken as approximate transformation NAD27 to WGS 84 - see code 8624.,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,1999-10-20 00:00:00,,1,0
-8485,NAD27 to NAD83(HARN) (25),concatenated operation,4267,4152,NGS-Usa TX w,25,2380,Accuracy at 67% confidence level is 0.2m.,,,,May be taken as approximate transformation NAD27 to WGS 84 - see code 8625.,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,1999-10-20 00:00:00,,1,0
-8486,NAD27 to NAD83(HARN) (26),concatenated operation,4267,4152,NGS-Usa VA,26,1415,Accuracy at 67% confidence level is 0.2m.,,,,May be taken as approximate transformation NAD27 to WGS 84 - see code 8627.,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,1999-10-20 00:00:00,,1,0
-8487,NAD27 to NAD83(HARN) (27),concatenated operation,4267,4152,NGS-Usa OR WA,27,2381,"Accuracy at 67% confidence level is 0.2m onshore, 5m nearshore and undetermined farther offshore.",,,,May be taken as approximate transformation NAD27 to WGS 84 - see code 8621.,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,1999-10-20 00:00:00,,1,0
-8488,NAD27 to NAD83(HARN) (28),concatenated operation,4267,4152,NGS-Usa WI,28,1418,Accuracy at 67% confidence level is 0.2m.,,,,May be taken as approximate transformation NAD27 to WGS 84 - see code 8629.,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,1999-10-20 00:00:00,,1,0
-8489,NAD27 to NAD83(HARN) (29),concatenated operation,4267,4152,NGS-Usa WY,29,1419,Accuracy at 67% confidence level is 0.2m.,,,,May be taken as approximate transformation NAD27 to WGS 84 - see code 8630.,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,1999-10-20 00:00:00,,1,0
-8496,NAD27 to WGS 84 (28),concatenated operation,4267,4326,NGS-Usa conus,28,2374,Geodetic survey.,,,,,Both transformations from US National Geodetic Survey.,EPSG,1999-10-20 00:00:00,,1,0
-8497,NAD27 to WGS 84 (29),concatenated operation,4267,4326,NGS-Usa AK,29,2373,Geodetic survey.,,,,,Both transformations from US National Geodetic Survey.,EPSG,1999-10-20 00:00:00,,1,1
-8508,Old Hawaiian to NAD83(HARN) (1),concatenated operation,4135,4152,NGS-Usa HI,1,1334,Assumes NAD83 is coincident with NAD83(HARN). Accuracy about 1m.,,,,"Uses NADCON method which expects longitudes positive west; EPSG GeogCRSs Old Hawaiian (code 4135), NAD83 (code 4269) and NAD83(HARN) have longitudes positive east.  May be taken as approximate transformation Old Hawaiin to WGS 84 - see code 8582.",US Coast & Geodetic Survey  ftp://ftp.ngs.noaa.gov/pub/pcsoft/nadcon,EPSG,2000-01-06 00 [...]
-8509,NAD27 to NAD83(HARN) (30),concatenated operation,4267,4152,NGS-Usa IN,30,1383,Accuracy at 67% confidence level is 0.2m.,,,,May be taken as approximate transformation NAD27 to WGS 84 - see code 8599.,US Coast & Geodetic Survey  ftp://ftp.ngs.noaa.gov/pub/pcsoft/nadcon,EPSG,2000-01-06 00:00:00,,1,0
-8510,NAD27 to NAD83(HARN) (31),concatenated operation,4267,4152,NGS-Usa KS,31,1385,Accuracy at 67% confidence level is 0.2m.,,,,May be taken as approximate transformation NAD27 to WGS 84 - see code 8601.,US Coast & Geodetic Survey  ftp://ftp.ngs.noaa.gov/pub/pcsoft/nadcon,EPSG,2000-01-06 00:00:00,,1,0
-8511,NAD27 to NAD83(HARN) (32),concatenated operation,4267,4152,NGS-Usa NV,32,1397,Accuracy at 67% confidence level is 0.2m.,,,,May be taken as approximate transformation NAD27 to WGS 84 - see code 8614.,US Coast & Geodetic Survey  ftp://ftp.ngs.noaa.gov/pub/pcsoft/nadcon,EPSG,2000-01-06 00:00:00,,1,0
-8512,NAD27 to NAD83(HARN) (33),concatenated operation,4267,4152,NGS-Usa OH,33,1404,Accuracy at 67% confidence level is 0.2m.,,,,May be taken as approximate transformation NAD27 to WGS 84 - see code 8619.,US Coast & Geodetic Survey  ftp://ftp.ngs.noaa.gov/pub/pcsoft/nadcon,EPSG,2000-01-06 00:00:00,,1,0
-8513,NAD27 to NAD83(HARN) (34),concatenated operation,4267,4152,NGS-Usa UT,34,1413,Accuracy at 67% confidence level is 0.2m.,,,,May be taken as approximate transformation NAD27 to WGS 84 - see code 8626.,US Coast & Geodetic Survey  ftp://ftp.ngs.noaa.gov/pub/pcsoft/nadcon,EPSG,2000-01-06 00:00:00,,1,0
-8514,NAD27 to NAD83(HARN) (35),concatenated operation,4267,4152,NGS-Usa WV,35,1417,Accuracy at 67% confidence level is 0.2m.,,,,May be taken as approximate transformation NAD27 to WGS 84 - see code 8628.,US Coast & Geodetic Survey  ftp://ftp.ngs.noaa.gov/pub/pcsoft/nadcon,EPSG,2000-01-06 00:00:00,,1,0
-8517,Chos Malal 1914 to WGS 84 (1),concatenated operation,4160,4326,TOT-Arg Neu,1,2325,Oil exploration,,,,May be implemented using a single step geocentric translations of dx=+5.5m dY=+176.7m dZ=+141.4m.,Total-Fina,EPSG,2000-03-07 00:00:00,,1,0
-8530,South Yemen to WGS 84 (1),concatenated operation,4164,4326,IGN-Yem South,1,1340,Approximation at the +/- 1m level assuming that NGN96 is equivalent to WGS 84.,,,,May be implemented as a single transformation using geocentric translations transformation method with parameter values dX=-76m dY=-138m dZ=+67m.,IGN Paris,EPSG,2000-03-07 00:00:00,,1,1
-8532,Indian 1960 to WGS 84 (1),concatenated operation,4131,4326,PV-Vnm,1,1495,Oil exploration.,,,,May be implemented as a single transformation using position vector 7-parameter geocentric transformation method with parameter values dX=+199m dY=+931m dZ=+318.9m rX=rY=0 sec rZ=+0.814 sec dS=-0.38 ppm.,Various oil company sources.,EPSG,2000-03-07 00:00:00,,1,0
-8537,Egypt 1907 to WGS 84 (2),concatenated operation,4229,4326,MCE-Egy,2,1086,Oil exploration.,,,,Used by Shell.  May be implemented as a single transformation using position vector 7-parameter geocentric transformation method with parameter values dX=-121.8m dY=+98.1m dZ=-10.7m rX=rY=0 sec rZ=+0.554 sec dS=+0.2263 ppm.,Maridive,EPSG,2000-03-07 00:00:00,,1,0
-8553,NAD27 to NAD83(HARN) (36),concatenated operation,4267,4152,NGS-Usa IL,36,1382,Accuracy at 67% confidence level is 0.2m.,,,,May be taken as approximate transformation NAD27 to WGS 84 - see code 8598.,US Coast & Geodetic Survey  ftp://ftp.ngs.noaa.gov/pub/pcsoft/nadcon,EPSG,2000-01-06 00:00:00,,1,0
-8554,NAD27 to NAD83(HARN) (37),concatenated operation,4267,4152,NGS-Usa NJ,37,1399,Accuracy at 67% confidence level is 0.2m.,,,,May be taken as approximate transformation NAD27 to WGS 84 - see code 8615.,US Coast & Geodetic Survey  ftp://ftp.ngs.noaa.gov/pub/pcsoft/nadcon,EPSG,2000-01-06 00:00:00,,1,0
-8560,AGD84 to WGS 84 (5),concatenated operation,4203,4326,EPSG-Aus WA,5,1280,Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84.,,,,Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84.  Superseded by AGD84 to WGS 84 (6) (code 8579).,EPSG,EPSG,2000-06-10 00:00:00,,1,1
-8562,Nord Sahara 1959 to WGS 84 (3),concatenated operation,4307,4326,CGG-Alg HM,3,2393,Oil exploration.,,,,Derived at IGN monument CFP19 using Transit.  Can be implemented as a single 7-param Position Vector transformation with parameter values of dX=-156m dY=-87.2m dZ=+287.8m; rX=rY=0 rZ=+0.814sec; dS=-0.38ppm.,,EPSG,2000-06-23 00:00:00,,1,0
-8563,NZGD49 to WGS 84 (3),concatenated operation,4272,4326,OSG-Nzl 1m,3,1175,Assumes WGS 84 is coincident with NZGD2000. Accuracy about 1m.,,,,Assumes WGS 84 is coincident with NZGD2000. Accuracy about 1m.,EPSG,EPSG,2000-10-19 00:00:00,,1,1
-8564,NAD27(CGQ77) to WGS 84 (2),concatenated operation,4609,4326,EPSG-Can Qc NT2,2,1368,Approximation at the +/- 1m level assuming that NAD83(CSRS98) is equivalent to WGS 84.,,,,,EPSG,EPSG,2000-10-19 00:00:00,,1,1
-8565,NAD27 to WGS 84 (31),concatenated operation,4267,4326,EPSG-Can Que,31,1368,Approximation at the +/- 1m level assuming that NAD83(CSRS98) is equivalent to WGS 84.,,,,,EPSG,EPSG,2000-10-19 00:00:00,,1,1
-8566,NAD83 to WGS 84 (6),concatenated operation,4269,4326,EPSG-Can Qc,6,1368,Approximation at the +/- 1m level assuming that NAD83(CSRS98) is equivalent to WGS 84.,,,,,EPSG,EPSG,2000-10-19 00:00:00,,1,1
-8567,OSGB36 / National Grid to WGS 84 (1),concatenated operation,27700,4326,EPSG-Gbr,1,1264,Assumes ETRS89 is coincident with WGS 84.  Accuracy about 0.5m.,,,,Assumes ETRF89 is coincident with WGS 84.  Accuracy about 0.5m.,EPSG,EPSG,2000-10-19 00:00:00,,1,1
-8568,Deir ez Zor to WGS 84 (1),concatenated operation,4227,4326,EPSG-Syr,1,2329,Oil exploration,,,,"Can be implemented as a position vector tfm with param. values dX=-174.6  dY=-3.1 dZ=238.1m; rX=rY=0 rZ=0.814""; dS=-0.38 ppm.",EPSG,EPSG,2000-10-19 00:00:00,,1,0
-8569,ED50 to WGS 84 (21),concatenated operation,4230,4326,EPSG-Nor N65 1997,21,2332,Oil exploration before 1997/2001.,,,,Included in Statens Kartverk programme wsktrans between 1997 (v3.1) and 2001 (v4.0). Superseded by ED50 to WGS 84 (23) (code 1612) in April 2001.,EPSG guidance note #10.,EPSG,2000-10-19 00:00:00,2001.224,1,0
-8570,ED50 to ETRS89 (2),concatenated operation,4230,4258,5Nat-NSea98,2,2330,Offshore.,,,,Taken from ED50 to WGS 84 (14) (code 8046). In 1998 agreed that within the accuracy of that transformation WGS 84 equates to ETRS89 and the transformation would relate ED50 to ETRS89.,Statens Kartverk.,EPSG,2001-06-05 00:00:00,2000.72  2001.06,1,0
-8571,Accra to WGS 84 (2),concatenated operation,4168,4326,EPSG-Gha,2,1505,Oil industry.,,,,"Can be implemented as a position vector tfm with param. values dX=-171.16 dY=17.29 dZ=325.21m; rX=rY=0 rZ=0.814""; dS=-0.38 ppm. Found in use within oil industry erroneously concatenated as dX=-171.16 dY=17.29 dZ=327.81m; rX=rY0 rZ=0.554"" dS=0.2263 ppm.",EPSG,EPSG,2000-10-19 00:00:00,,1,0
-8572,Amersfoort to WGS 84 (2),concatenated operation,4289,4326,EPSG-Nld,2,1275,Approximation at the +/- 1m level assuming that ETRS89 is equivalent to WGS 84.,,,,Parameter values for step 1 from Amersfoort to ETRS89 (2) (code 1751). Step 2 assumes that ETRS89 is equivalent to WGS 84 within the accuracy of the transformation. Supersedes Amersfoort to WGS 84 (1) (code 1112).,EPSG,EPSG,2000-10-19 00:00:00,,1,1
-8573,RGF93 to WGS 84 (1),concatenated operation,4171,4326,EPSG-Fra,1,1096,Approximation at the +/- 1m level assuming that ETRS89 is equivalent to WGS 84.,,,,,EPSG,EPSG,2000-10-19 00:00:00,,1,1
-8574,American Samoa 1962 to WGS 84 (2),concatenated operation,4169,4326,EPSG-Asm,2,2288,"Transformation actually to NAD83(HARN), but for many purposes NAD83(HARN) can be considered to be coincident with WGS 84.",,,,"Transformation actually to NAD83(HARN), but for many purposes NAD83(HARNS) can be considered to be coincident with WGS 84.",EPSG,EPSG,2000-10-19 00:00:00,,1,1
-8575,American Samoa 1962 to WGS 84 (3),concatenated operation,4169,4326,EPSG-Asm,3,2289,"Transformation actually to NAD83(HARN), but for many purposes NAD83(HARN) can be considered to be coincident with WGS 84.",,,,"Transformation actually to NAD83(HARN), but for many purposes NAD83(HARNS) can be considered to be coincident with WGS 84.",EPSG,EPSG,2000-10-19 00:00:00,,1,1
-8576,AGD66 to WGS 84 (9),concatenated operation,4202,4326,EPSG-Aus Tas 1m,9,1282,Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84.,,,,Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84.  Supersedes AGD66 to WGS 84 (4) (code 8398).,EPSG,EPSG,2000-10-19 00:00:00,,1,1
-8577,AGD66 to WGS 84 (10),concatenated operation,4202,4326,EPSG-Aus NT,10,2284,Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84.,,,,Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84.,EPSG,EPSG,2000-10-19 00:00:00,,1,1
-8578,AGD66 to WGS 84 (11),concatenated operation,4202,4326,EPSG-Aus,11,2287,Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84.,,,,Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84.   Supersedes AGD66 to WGS 84 (3) (code 8396) and AGD66 to WGS 84 (6) (code 8408).,EPSG,EPSG,2000-10-19 00:00:00,,1,1
-8579,AGD84 to WGS 84 (6),concatenated operation,4203,4326,EPSG-Aus WA,6,1280,Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84.,,,,Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84.  Supersedes AGD84 to WGS 84 (5) (code 8560).,EPSG,EPSG,2000-10-19 00:00:00,,1,1
-8580,IRENET95 to WGS 84 (1),concatenated operation,4173,4326,OSI-Ire,1,1305,Approximation at the +/- 1m level assuming that ETRS89 is equivalent to WGS 84.,,,,Approximation at the +/- 1m level assuming that ETRS89 is equivalent to WGS 84.,EPSG,EPSG,2000-10-19 00:00:00,,1,1
-8581,PSD93 to WGS 84 (2),concatenated operation,4134,4326,PDO-Omn 93,2,1183,Oil exploration.,,,,"Superseded by PSD93 to WGS 84 (1) (code 1439) in 1997. Can be implemented as a position vector tfm with parameter values dX= -182.046 dY= -225.604 dZ=+173.384m rX= -0.616 rY= -1.655 rZ=+8.378"" dS=16.8673ppm.",Petroleum Development Oman,EPSG,2001-06-05 00:00:00,,1,0
-8582,Old Hawaiian to WGS 84 (2),concatenated operation,4135,4326,EPSG-Usa Hi,2,1334,Approximation at the +/- 1m level.,,,,Transformation steps are from Old Hawaiian to NAD83(HARN) (1) (code 8508) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-8583,Puerto Rico to WGS 84 (2),concatenated operation,4139,4326,EPSG-PRVI,2,1335,Approximation at the +/- 1m level.,,,,Transformation steps are from Puerto Rico to NAD83(HARN) (1) (code 8481) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2002-01-18 00:00:00,2002.02,1,0
-8584,NAD27 to NAD83(CSRS98) (3),concatenated operation,4267,4140,EPSG-Can AB,3,2376,Accuracy 1-2 metres.,,,,Can be taken as an approximate transformation NAD27 to WGS 84 - see code 8585.,EPSG,EPSG,2001-08-15 00:00:00,,1,1
-8585,NAD27 to WGS 84 (36),concatenated operation,4267,4326,EPSG-Can AB,36,2376,Approximation at the +/- 1m level.,,,,Steps based on concatenated transformation NAD27 to NAD83(CSRS) (3) (code 8635) assuming that NAD83(CSRS) is equivalent to WGS 84.,EPSG,EPSG,2002-07-13 00:00:00,2002.41,1,0
-8586,NAD27 to NAD83(HARN) (38),concatenated operation,4267,4152,NGS-Usa AR,38,1374,Accuracy at 67% confidence level is 0.2m.,,,,May be taken as approximate transformation NAD27 to WGS 84 - see code 8592.,US Coast & Geodetic Survey  ftp://ftp.ngs.noaa.gov/pub/pcsoft/nadcon,EPSG,2001-08-15 00:00:00,,1,0
-8587,NAD27 to NAD83(HARN) (39),concatenated operation,4267,4152,NGS-Usa IA,39,1384,Accuracy at 67% confidence level is 0.2m.,,,,May be taken as approximate transformation NAD27 to WGS 84 - see code 8600.,US Coast & Geodetic Survey  ftp://ftp.ngs.noaa.gov/pub/pcsoft/nadcon,EPSG,2001-08-15 00:00:00,,1,0
-8588,NAD27 to NAD83(HARN) (40),concatenated operation,4267,4152,NGS-Usa MN,40,1392,Accuracy at 67% confidence level is 0.2m.,,,,May be taken as approximate transformation NAD27 to WGS 84 - see code 8608.,US Coast & Geodetic Survey  ftp://ftp.ngs.noaa.gov/pub/pcsoft/nadcon,EPSG,2001-08-15 00:00:00,,1,0
-8589,NAD27 to NAD83(HARN) (41),concatenated operation,4267,4152,NGS-Usa MO,41,1394,Accuracy at 67% confidence level is 0.2m.,,,,May be taken as approximate transformation NAD27 to WGS 84 - see code 8610.,US Coast & Geodetic Survey  ftp://ftp.ngs.noaa.gov/pub/pcsoft/nadcon,EPSG,2001-08-15 00:00:00,,1,0
-8590,NAD27 to WGS 84 (37),concatenated operation,4267,4152,EPSG-Usa AL,37,1372,Approximation at the +/- 1m level.,,,,Transformation steps are from NAD27 to NAD83(HARN) (1) (code 8460) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-8591,NAD27 to WGS 84 (38),concatenated operation,4267,4326,EPSG-Usa AZ,38,1373,Approximation at the +/- 1m level.,,,,Transformation steps are from NAD27 to NAD83(HARN) (2) (code 8461) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-8592,NAD27 to WGS 84 (39),concatenated operation,4267,4326,EPSG-Usa AR,39,1374,Approximation at the +/- 1m level.,,,,Transformation steps are from NAD27 to NAD83(HARN) (38) (code 8586) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-8593,NAD27 to WGS 84 (40),concatenated operation,4267,4326,EPSG-Usa CA n,40,2297,Approximation at the +/- 1m level.,,,,Transformation steps are from NAD27 to NAD83(HARN) (3) (code 8462) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-8594,NAD27 to WGS 84 (41),concatenated operation,4267,4326,EPSG-Usa CA s,41,2298,Approximation at the +/- 1m level.,,,,Transformation steps are from NAD27 to NAD83(HARN) (4) (code 8463) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-8595,NAD27 to WGS 84 (42),concatenated operation,4267,4326,EPSG-Usa CO,42,1376,Approximation at the +/- 1m level.,,,,Transformation steps are from NAD27 to NAD83(HARN) (5) (code 8464) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-8596,NAD27 to WGS 84 (43),concatenated operation,4267,4326,EPSG-Usa FL,43,1379,Approximation at the +/- 1m level.,,,,Transformation steps are from NAD27 to NAD83(HARN) (7) (code 8466) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-8597,NAD27 to WGS 84 (44),concatenated operation,4267,4326,EPSG-Usa GA,44,1380,Approximation at the +/- 1m level.,,,,Transformation steps are from NAD27 to NAD83(HARN) (6) (code 8465) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-8598,NAD27 to WGS 84 (45),concatenated operation,4267,4326,EPSG-Usa IL,45,1382,Approximation at the +/- 1m level.,,,,Transformation steps are from NAD27 to NAD83(HARN) (36) (code 8553) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-8599,NAD27 to WGS 84 (46),concatenated operation,4267,4326,EPSG-Usa IN,46,1383,Approximation at the +/- 1m level.,,,,Transformation steps are from NAD27 to NAD83(HARN) (30) (code 8509) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-8600,NAD27 to WGS 84 (47),concatenated operation,4267,4326,EPSG-Usa IA,47,1384,Approximation at the +/- 1m level.,,,,Transformation steps are from NAD27 to NAD83(HARN) (39) (code 8587) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-8601,NAD27 to WGS 84 (48),concatenated operation,4267,4326,EPSG-Usa KS,48,1385,Approximation at the +/- 1m level.,,,,Transformation steps are from NAD27 to NAD83(HARN) (31) (code 8510) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-8602,NAD27 to WGS 84 (49),concatenated operation,4267,4326,EPSG-Usa KY,49,1386,Approximation at the +/- 1m level.,,,,Transformation steps are from NAD27 to NAD83(HARN) (10) (code 8469) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-8603,NAD27 to WGS 84 (50),concatenated operation,4267,4326,EPSG-Usa LA,50,1387,Approximation at the +/- 1m level.,,,,Transformation steps are from NAD27 to NAD83(HARN) (11) (code 8470) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-8604,NAD27 to WGS 84 (51),concatenated operation,4267,4326,EPSG-Usa ME,51,1388,Approximation at the +/- 1m level.,,,,Transformation steps are from NAD27 to NAD83(HARN) (13) (code 8472) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-8605,NAD27 to WGS 84 (52),concatenated operation,4267,4326,EPSG-Usa DE MD,52,2377,Approximation at the +/- 1m level.,,,,Transformation steps are from NAD27 to NAD83(HARN) (12) (code 8471) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-8606,NAD27 to WGS 84 (53),concatenated operation,4267,4326,EPSG-Usa NewEng,53,2378,Approximation at the +/- 1m level.,,,,Transformation steps are from NAD27 to NAD83(HARN) (17) (code 8476) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-8607,NAD27 to WGS 84 (54),concatenated operation,4267,4326,EPSG-Usa MI,54,1391,Approximation at the +/- 1m level.,,,,Transformation steps are from NAD27 to NAD83(HARN) (14) (code 8473) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-8608,NAD27 to WGS 84 (55),concatenated operation,4267,4326,EPSG-Usa MN,55,1392,Approximation at the +/- 1m level.,,,,Transformation steps are from NAD27 to NAD83(HARN) (40) (code 8588) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-8609,NAD27 to WGS 84 (56),concatenated operation,4267,4326,EPSG-Usa MS,56,1393,Approximation at the +/- 1m level.,,,,Transformation steps are from NAD27 to NAD83(HARN) (15) (code 8474) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-8610,NAD27 to WGS 84 (57),concatenated operation,4267,4326,EPSG-Usa MO,57,1394,Approximation at the +/- 1m level.,,,,Transformation steps are from NAD27 to NAD83(HARN) (41) (code 8589) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-8611,NAD27 to WGS 84 (58),concatenated operation,4267,4326,EPSG-Usa ID MT e,58,2382,Approximation at the +/- 1m level.,,,,Transformation steps are from NAD27 to NAD83(HARN) (8) (code 8467) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-8612,NAD27 to WGS 84 (59),concatenated operation,4267,4326,EPSG-Usa ID MT w,59,2383,Approximation at the +/- 1m level.,,,,Transformation steps are from NAD27 to NAD83(HARN) (9) (code 8468) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-8613,NAD27 to WGS 84 (60),concatenated operation,4267,4326,EPSG-Usa NE,60,1396,Approximation at the +/- 1m level.,,,,Transformation steps are from NAD27 to NAD83(HARN) (16) (code 8475) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-8614,NAD27 to WGS 84 (61),concatenated operation,4267,4326,EPSG-Usa NV,61,1397,Approximation at the +/- 1m level.,,,,Transformation steps are from NAD27 to NAD83(HARN) (32) (code 8511) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-8615,NAD27 to WGS 84 (62),concatenated operation,4267,4326,EPSG-Usa NJ,62,1399,Approximation at the +/- 1m level.,,,,Transformation steps are from NAD27 to NAD83(HARN) (37) (code 8554) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-8616,NAD27 to WGS 84 (63),concatenated operation,4267,4326,EPSG-Usa NM,63,1400,Approximation at the +/- 1m level.,,,,Transformation steps are from NAD27 to NAD83(HARN) (18) (code 8477) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-8617,NAD27 to WGS 84 (64),concatenated operation,4267,4326,EPSG-Usa NY,64,1401,Approximation at the +/- 1m level.,,,,Transformation steps are from NAD27 to NAD83(HARN) (19) (code 8478) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-8618,NAD27 to WGS 84 (65),concatenated operation,4267,4326,EPSG-Usa ND,65,1403,Approximation at the +/- 1m level.,,,,Transformation steps are from NAD27 to NAD83(HARN) (20) (code 8479) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-8619,NAD27 to WGS 84 (66),concatenated operation,4267,4326,EPSG-Usa OH,66,1404,Approximation at the +/- 1m level.,,,,Transformation steps are from NAD27 to NAD83(HARN) (33) (code 8512) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-8620,NAD27 to WGS 84 (67),concatenated operation,4267,4326,EPSG-Usa OK,67,1405,Approximation at the +/- 1m level.,,,,Transformation steps are from NAD27 to NAD83(HARN) (21) (code 8480) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-8621,NAD27 to WGS 84 (68),concatenated operation,4267,4326,EPSG-Usa OR WA,68,2381,Approximation at the +/- 1m level.,,,,Transformation steps are from NAD27 to NAD83(HARN) (27) (code 8487) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-8622,NAD27 to WGS 84 (69),concatenated operation,4267,4326,EPSG-Usa SD,69,1410,Approximation at the +/- 1m level.,,,,Transformation steps are from NAD27 to NAD83(HARN) (22) (code 8482) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-8623,NAD27 to WGS 84 (70),concatenated operation,4267,4326,EPSG-Usa TN,70,1411,Approximation at the +/- 1m level.,,,,Transformation steps are from NAD27 to NAD83(HARN) (23) (code 8483) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-8624,NAD27 to WGS 84 (71),concatenated operation,4267,4326,EPSG-Usa TX e,71,2379,Approximation at the +/- 1m level.,,,,Transformation steps are from NAD27 to NAD83(HARN) (24) (code 8484) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-8625,NAD27 to WGS 84 (72),concatenated operation,4267,4326,EPSG-Usa TX w,72,2380,Approximation at the +/- 1m level.,,,,Transformation steps are from NAD27 to NAD83(HARN) (25) (code 8485) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-8626,NAD27 to WGS 84 (73),concatenated operation,4267,4326,EPSG-Usa UT,73,1413,Approximation at the +/- 1m level.,,,,Transformation steps are from NAD27 to NAD83(HARN) (34) (code 8513) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-8627,NAD27 to WGS 84 (74),concatenated operation,4267,4326,EPSG-Usa VA,74,1415,Approximation at the +/- 1m level.,,,,Transformation steps are from NAD27 to NAD83(HARN) (26) (code 8486) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-8628,NAD27 to WGS 84 (75),concatenated operation,4267,4326,EPSG-Usa WV,75,1417,Approximation at the +/- 1m level.,,,,Transformation steps are from NAD27 to NAD83(HARN) (35) (code 8514) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-8629,NAD27 to WGS 84 (76),concatenated operation,4267,4326,EPSG-Usa WI,76,1418,Approximation at the +/- 1m level.,,,,Transformation steps are from NAD27 to NAD83(HARN) (28) (code 8488) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-8630,NAD27 to WGS 84 (77),concatenated operation,4267,4326,EPSG-Usa WY,77,1419,Approximation at the +/- 1m level.,,,,Transformation steps are from NAD27 to NAD83(HARN) (29) (code 8489) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.,EPSG,EPSG,2001-08-15 00:00:00,,1,0
-8631,Garoua to WGS 84 (1),concatenated operation,4197,4326,EPSG-Cmr,1,2590,Oil industry.,,,,,EPSG,EPSG,2002-02-12 00:00:00,,1,0
-8632,Kousseri to WGS 84 (1),concatenated operation,4198,4326,EPSG-Cmr,1,2591,Oil industry.,,,,,EPSG,EPSG,2002-02-12 00:00:00,,1,0
-8633,Yoff to WGS 84 (1),concatenated operation,4310,4326,EPSG-SEN,1,1207,Military purposes.,,,,"Derived via WGS72. Can be used as a single positon vector transformation with parameter vaues of dX = -37 m, dY = +157 m, dZ = +89.5 m, rX = rY = 0 sec, RZ = 0.554 sec, dS = 0.219 ppm",TotalFinaElf,EPSG,2002-06-22 00:00:00,,1,0
-8634,Beduaram to WGS 84 (1),concatenated operation,4213,4326,ELF-Ner SE,1,2771,Oil exploration.,,,,"Derived via WGS72BE. Can be used as a single positon vector transformation with parameter vaues of dX = -101 m, dY = -111 m, dZ = +188.9 m, rX = rY = 0 sec, RZ = 0.814 sec, dS = -0.38 ppm",TotalFinaElf,EPSG,2002-06-28 00:00:00,,1,0
-8635,NAD27 to NAD83(CSRS) (3),concatenated operation,4267,4617,EPSG-Can AB,3,2376,Accuracy 1-2 metres.,,,,Can be taken as an approximate transformation NAD27 to WGS 84 - see code 8585.,EPSG,EPSG,2002-07-13 00:00:00,,1,0
-10101,Alabama CS27 East zone,conversion,,,,,2154,Used for large and medium scale topographic mapping and engineering survey.,9807,,,,USGS Professional Paper #1395,EPSG,1995-12-02 00:00:00,95.30  96.29,1,0
-10102,Alabama CS27 West zone,conversion,,,,,2155,Used for large and medium scale topographic mapping and engineering survey.,9807,,,,USGS Professional Paper #1395,EPSG,1995-12-02 00:00:00,95.30  96.29,1,0
-10131,SPCS83 Alabama East zone (meters),conversion,,,,,2154,Used for large and medium scale topographic mapping and engineering survey.,9807,,,,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  2001.03,1,0
-10132,SPCS83 Alabama West zone (meters),conversion,,,,,2155,Used for large and medium scale topographic mapping and engineering survey.,9807,,,,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  2001.03,1,0
-10201,Arizona Coordinate System East zone,conversion,,,,,2167,Used for large and medium scale topographic mapping and engineering survey.,9807,,,,USGS Professional Paper #1395,EPSG,2000-03-07 00:00:00,95.30  96.29  2000.092,1,0
-10202,Arizona Coordinate System Central zone,conversion,,,,,2166,Used for large and medium scale topographic mapping and engineering survey.,9807,,,,USGS Professional Paper #1395,EPSG,1995-12-02 00:00:00,95.30  96.29,1,0
-10203,Arizona Coordinate System West zone,conversion,,,,,2168,Used for large and medium scale topographic mapping and engineering survey.,9807,,,,USGS Professional Paper #1395,EPSG,2000-03-07 00:00:00,95.30  96.29  2000.092,1,0
-10231,SPCS83 Arizona East zone (meters),conversion,,,,,2167,Used for large and medium scale topographic mapping and engineering survey.,9807,,,State law defines origin in International feet.  FE = 700000ft.  See code 15304 for equivalent non-metric definition.,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  2000.093  2001.03,1,0
-10232,SPCS83 Arizona Central zone (meters),conversion,,,,,2166,Used for large and medium scale topographic mapping and engineering survey.,9807,,,State law defines origin in International feet.  FE = 700000ft.  See code 15305 for equivalent non-metric definition.,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  2001.03,1,0
-10233,SPCS83 Arizona West zone (meters),conversion,,,,,2168,Used for large and medium scale topographic mapping and engineering survey.,9807,,,State law defines origin in International feet.  FE = 700000ft.  See code 15306 for equivalent non-metric definition.,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  2000.093  2001.03,1,0
-10301,Arkansas CS27 North,conversion,,,,,2169,Used for large and medium scale topographic mapping and engineering survey.,9802,,,,USGS Professional Paper #1395,EPSG,1999-04-22 00:00:00,95.30  96.29  99.28,1,0
-10302,Arkansas CS27 South,conversion,,,,,2170,Used for large and medium scale topographic mapping and engineering survey.,9802,,,,USGS Professional Paper #1395,EPSG,1999-04-22 00:00:00,95.30  96.29  99.28,1,0
-10331,SPCS83 Arkansas North zone (meters),conversion,,,,,2169,Used for large and medium scale topographic mapping and engineering survey.,9802,,,,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  99.28  2001.03,1,0
-10332,SPCS83 Arkansas South zone (meters),conversion,,,,,2170,Used for large and medium scale topographic mapping and engineering survey.,9802,,,,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  99.28  2001.03,1,0
-10401,California CS27 zone I,conversion,,,,,2175,Used for large and medium scale topographic mapping and engineering survey.,9802,,,,USGS Professional Paper #1395,EPSG,1999-04-22 00:00:00,95.30  96.29  99.28,1,0
-10402,California CS27 zone II,conversion,,,,,2176,Used for large and medium scale topographic mapping and engineering survey.,9802,,,,USGS Professional Paper #1395,EPSG,1999-04-22 00:00:00,95.30  96.29  99.28,1,0
-10403,California CS27 zone III,conversion,,,,,2177,Used for large and medium scale topographic mapping and engineering survey.,9802,,,,USGS Professional Paper #1395,EPSG,1999-04-22 00:00:00,95.30  96.29  99.28,1,0
-10404,California CS27 zone IV,conversion,,,,,2178,Used for large and medium scale topographic mapping and engineering survey.,9802,,,,USGS Professional Paper #1395,EPSG,1999-04-22 00:00:00,95.30  96.29  99.28,1,0
-10405,California CS27 zone V,conversion,,,,,2179,Used for large and medium scale topographic mapping and engineering survey.,9802,,,,USGS Professional Paper #1395,EPSG,1999-04-22 00:00:00,95.30  96.29  99.28,1,0
-10406,California CS27 zone VI,conversion,,,,,2180,Used for large and medium scale topographic mapping and engineering survey.,9802,,,,USGS Professional Paper #1395,EPSG,1999-04-22 00:00:00,95.30  96.29  99.28,1,0
-10407,California CS27 zone VII,conversion,,,,,2181,Used for large and medium scale topographic mapping and engineering survey.,9802,,,,USGS Professional Paper #1395,EPSG,1999-04-22 00:00:00,95.30  96.29  99.28,1,0
-10431,SPCS83 California zone 1 (meters),conversion,,,,,2175,Used for large and medium scale topographic mapping and engineering survey.,9802,,,See code 15307 for equivalent non-metric definition.,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  99.28  2001.03,1,0
-10432,SPCS83 California zone 2 (meters),conversion,,,,,2176,Used for large and medium scale topographic mapping and engineering survey.,9802,,,See code 15308 for equivalent non-metric definition.,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  99.28  2001.03,1,0
-10433,SPCS83 California zone 3 (meters),conversion,,,,,2177,Used for large and medium scale topographic mapping and engineering survey.,9802,,,See code 15309 for equivalent non-metric definition.,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  99.28  2001.03,1,0
-10434,SPCS83 California zone 4 (meters),conversion,,,,,2178,Used for large and medium scale topographic mapping and engineering survey.,9802,,,See code 15310 for equivalent non-metric definition.,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  99.28  2001.03,1,0
-10435,SPCS83 California zone 5 (meters),conversion,,,,,2182,Used for large and medium scale topographic mapping and engineering survey.,9802,,,See code 15311 for equivalent non-metric definition.,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  99.28  2001.03,1,0
-10436,SPCS83 California zone 6 (meters),conversion,,,,,2180,Used for large and medium scale topographic mapping and engineering survey.,9802,,,See code 15312 for equivalent non-metric definition.,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  99.28  2001.03,1,0
-10501,Colorado CS27 North zone,conversion,,,,,2184,Used for large and medium scale topographic mapping and engineering survey.,9802,,,,USGS Professional Paper #1395,EPSG,1999-04-22 00:00:00,95.30  96.29  99.28,1,0
-10502,Colorado CS27 Central zone,conversion,,,,,2183,Used for large and medium scale topographic mapping and engineering survey.,9802,,,,USGS Professional Paper #1395,EPSG,1999-04-22 00:00:00,95.30  96.29  99.28,1,0
-10503,Colorado CS27 South zone,conversion,,,,,2185,Used for large and medium scale topographic mapping and engineering survey.,9802,,,,USGS Professional Paper #1395,EPSG,1999-04-22 00:00:00,95.30  96.29  99.28,1,0
-10531,SPCS83 Colorado North zone (meters),conversion,,,,,2184,Used for large and medium scale topographic mapping and engineering survey.,9802,,,See code 15313 for equivalent non-metric definition.,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  99.28  2001.03,1,0
-10532,SPCS83 Colorado Central zone (meters),conversion,,,,,2183,Used for large and medium scale topographic mapping and engineering survey.,9802,,,See code 15314 for equivalent non-metric definition.,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  99.28  2001.03,1,0
-10533,SPCS83 Colorado South zone (meters),conversion,,,,,2185,Used for large and medium scale topographic mapping and engineering survey.,9802,,,See code 15315 for equivalent non-metric definition.,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  99.28  2001.03,1,0
-10600,Connecticut CS27,conversion,,,,,1377,Used for large and medium scale topographic mapping and engineering survey.,9802,,,,USGS Professional Paper #1395,EPSG,2000-03-07 00:00:00,95.30  96.29  99.28  2000.094,1,0
-10630,SPCS83 Connecticut zone (meters),conversion,,,,,1377,Used for large and medium scale topographic mapping and engineering survey.,9802,,,See code 15316 for equivalent non-metric definition.,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  99.28  2000.094  2001.03,1,0
-10700,Delaware CS27,conversion,,,,,1378,Used for large and medium scale topographic mapping and engineering survey.,9807,,,,USGS Professional Paper #1395,EPSG,2000-03-07 00:00:00,95.30  96.29  2000.092,1,0
-10730,SPCS83 Delaware zone (meters),conversion,,,,,1378,Used for large and medium scale topographic mapping and engineering survey.,9807,,,See code 15317 for equivalent non-metric definition.,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  2000.094  2001.03,1,0
-10901,Florida CS27 East zone,conversion,,,,,2186,Used for large and medium scale topographic mapping and engineering survey.,9807,,,,USGS Professional Paper #1395,EPSG,2000-03-07 00:00:00,95.30  96.29  2000.092,1,0
-10902,Florida CS27 West zone,conversion,,,,,2188,Used for large and medium scale topographic mapping and engineering survey.,9807,,,,USGS Professional Paper #1395,EPSG,2000-03-07 00:00:00,95.30  96.29  2000.092,1,0
-10903,Florida CS27 North zone,conversion,,,,,2187,Used for large and medium scale topographic mapping and engineering survey.,9802,,,,USGS Professional Paper #1395,EPSG,1999-04-22 00:00:00,95.30  96.29  99.28,1,0
-10931,SPCS83 Florida East zone (meters),conversion,,,,,2186,Used for large and medium scale topographic mapping and engineering survey.,9807,,,See code 15318 for equivalent non-metric definition.,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  2001.03,1,0
-10932,SPCS83 Florida West zone (meters),conversion,,,,,2188,Used for large and medium scale topographic mapping and engineering survey.,9807,,,See code 15319 for equivalent non-metric definition.,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  2001.03,1,0
-10933,SPCS83 Florida North zone (meters),conversion,,,,,2187,Used for large and medium scale topographic mapping and engineering survey.,9802,,,See code 15320 for equivalent non-metric definition.,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  99.28  2001.03,1,0
-11001,Georgia CS27 East zone,conversion,,,,,2189,Used for large and medium scale topographic mapping and engineering survey.,9807,,,,USGS Professional Paper #1395,EPSG,2000-03-07 00:00:00,95.30  96.29  2000.092,1,0
-11002,Georgia CS27 West zone,conversion,,,,,2190,Used for large and medium scale topographic mapping and engineering survey.,9807,,,,USGS Professional Paper #1395,EPSG,2000-03-07 00:00:00,95.30  96.29  2000.092,1,0
-11031,SPCS83 Georgia East zone (meters),conversion,,,,,2189,Used for large and medium scale topographic mapping and engineering survey.,9807,,,See code 15321 for equivalent non-metric definition.,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  2001.03,1,0
-11032,SPCS83 Georgia West zone (meters),conversion,,,,,2190,Used for large and medium scale topographic mapping and engineering survey.,9807,,,See code 15322 for equivalent non-metric definition.,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  2001.03,1,0
-11101,Idaho CS27 East zone,conversion,,,,,2192,Used for large and medium scale topographic mapping and engineering survey.,9807,,,,USGS Professional Paper #1395,EPSG,2000-03-07 00:00:00,95.30  96.29  2000.092,1,0
-11102,Idaho CS27 Central zone,conversion,,,,,2191,Used for large and medium scale topographic mapping and engineering survey.,9807,,,,USGS Professional Paper #1395,EPSG,2000-03-07 00:00:00,95.30  96.29  2000.092,1,0
-11103,Idaho CS27 West zone,conversion,,,,,2193,Used for large and medium scale topographic mapping and engineering survey.,9807,,,,USGS Professional Paper #1395,EPSG,2000-03-07 00:00:00,95.30  96.29  2000.092,1,0
-11131,SPCS83 Idaho East zone (meters),conversion,,,,,2192,Used for large and medium scale topographic mapping and engineering survey.,9807,,,See code 15323 for equivalent non-metric definition.,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  2001.03,1,0
-11132,SPCS83 Idaho Central zone (meters),conversion,,,,,2191,Used for large and medium scale topographic mapping and engineering survey.,9807,,,See code 15324 for equivalent non-metric definition.,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  2001.03,1,0
-11133,SPCS83 Idaho West zone (meters),conversion,,,,,2193,Used for large and medium scale topographic mapping and engineering survey.,9807,,,See code 15325 for equivalent non-metric definition.,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  2001.03,1,0
-11201,Illinois CS27 East zone,conversion,,,,,2194,Used for large and medium scale topographic mapping and engineering survey.,9807,,,,USGS Professional Paper #1395,EPSG,2000-03-07 00:00:00,95.30  96.29  2000.092,1,0
-11202,Illinois CS27 West zone,conversion,,,,,2195,Used for large and medium scale topographic mapping and engineering survey.,9807,,,,USGS Professional Paper #1395,EPSG,2000-03-07 00:00:00,95.30  96.29  2000.092,1,0
-11231,SPCS83 Illinois East zone (meters),conversion,,,,,2194,Used for large and medium scale topographic mapping and engineering survey.,9807,,,,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  2001.03,1,0
-11232,SPCS83 Illinois West zone (meters),conversion,,,,,2195,Used for large and medium scale topographic mapping and engineering survey.,9807,,,,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  2001.03,1,0
-11301,Indiana CS27 East zone,conversion,,,,,2196,Used for large and medium scale topographic mapping and engineering survey.,9807,,,,USGS Professional Paper #1395,EPSG,2000-03-07 00:00:00,95.30  96.29  2000.092,1,0
-11302,Indiana CS27 West zone,conversion,,,,,2197,Used for large and medium scale topographic mapping and engineering survey.,9807,,,,USGS Professional Paper #1395,EPSG,2000-03-07 00:00:00,95.30  96.29  2000.092,1,0
-11331,SPCS83 Indiana East zone (meters),conversion,,,,,2196,Used for large and medium scale topographic mapping and engineering survey.,9807,,,See code 15326 for equivalent non-metric definition.,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  2001.03,1,0
-11332,SPCS83 Indiana West zone (meters),conversion,,,,,2197,Used for large and medium scale topographic mapping and engineering survey.,9807,,,See code 15327 for equivalent non-metric definition.,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  2001.03,1,0
-11401,Iowa CS27 North zone,conversion,,,,,2198,Used for large and medium scale topographic mapping and engineering survey.,9802,,,,USGS Professional Paper #1395,EPSG,1999-04-22 00:00:00,95.30  96.29  99.28,1,0
-11402,Iowa CS27 South zone,conversion,,,,,2199,Used for large and medium scale topographic mapping and engineering survey.,9802,,,,USGS Professional Paper #1395,EPSG,1999-04-22 00:00:00,95.30  96.29  99.28,1,0
-11431,SPCS83 Iowa North zone (meters),conversion,,,,,2198,Used for large and medium scale topographic mapping and engineering survey.,9802,,,,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  99.28  2001.03,1,0
-11432,SPCS83 Iowa South zone (meters),conversion,,,,,2199,Used for large and medium scale topographic mapping and engineering survey.,9802,,,,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  99.28  2001.03,1,0
-11501,Kansas CS27 North zone,conversion,,,,,2200,Used for large and medium scale topographic mapping and engineering survey.,9802,,,,USGS Professional Paper #1395,EPSG,1999-04-22 00:00:00,95.30  96.29  99.28,1,0
-11502,Kansas CS27 South zone,conversion,,,,,2201,Used for large and medium scale topographic mapping and engineering survey.,9802,,,,USGS Professional Paper #1395,EPSG,1999-04-22 00:00:00,95.30  96.29  99.28,1,0
-11531,SPCS83 Kansas North zone (meters),conversion,,,,,2200,Used for large and medium scale topographic mapping and engineering survey.,9802,,,,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  99.28  2001.03,1,0
-11532,SPCS83 Kansas South zone (meters),conversion,,,,,2201,Used for large and medium scale topographic mapping and engineering survey.,9802,,,,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  99.28  2001.03,1,0
-11601,Kentucky CS27 North zone,conversion,,,,,2202,Used for large and medium scale topographic mapping and engineering survey.,9802,,,,USGS Professional Paper #1395,EPSG,1999-04-22 00:00:00,95.30  96.29  99.28,1,0
-11602,Kentucky CS27 South zone,conversion,,,,,2203,Used for large and medium scale topographic mapping and engineering survey.,9802,,,,USGS Professional Paper #1395,EPSG,1999-04-22 00:00:00,95.30  96.29  99.28,1,0
-11631,Kentucky CS83 North zone,conversion,,,,,2202,Used for large and medium scale topographic mapping and engineering survey.,9802,,,,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  99.28,1,1
-11632,SPCS83 Kentucky South zone (meters),conversion,,,,,2203,Used for large and medium scale topographic mapping and engineering survey.,9802,,,See code 15329 for equivalent non-metric definition.,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  99.28  2001.03,1,0
-11701,Louisiana CS27 North zone,conversion,,,,,2204,Used for large and medium scale topographic mapping and engineering survey.,9802,,,,USGS Professional Paper #1395,EPSG,1999-04-22 00:00:00,95.30  96.29  99.28,1,0
-11702,Louisiana CS27 South zone,conversion,,,,,2205,Used for large and medium scale topographic mapping and engineering survey.,9802,,,,USGS Professional Paper #1395,EPSG,1999-04-22 00:00:00,95.30  96.29  99.28,1,0
-11731,SPCS83 Louisiana North zone (meters),conversion,,,,,2204,Used for large and medium scale topographic mapping and engineering survey.,9802,,,,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  99.28  2001.03,1,0
-11732,SPCS83 Louisiana South zone (meters),conversion,,,,,2529,Used for large and medium scale topographic mapping and engineering survey.,9802,,,,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  99.28  2001.03,1,0
-11801,Maine CS27 East zone,conversion,,,,,2206,Used for large and medium scale topographic mapping and engineering survey.,9807,,,,USGS Professional Paper #1395,EPSG,2000-03-07 00:00:00,95.30  96.29  2000.092,1,0
-11802,Maine CS27 West zone,conversion,,,,,2207,Used for large and medium scale topographic mapping and engineering survey.,9807,,,,USGS Professional Paper #1395,EPSG,2000-03-07 00:00:00,95.30  96.29  2000.092,1,0
-11831,SPCS83 Maine East zone (meters),conversion,,,,,2206,Used for large and medium scale topographic mapping and engineering survey.,9807,,,,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  2001.03,1,0
-11832,SPCS83 Maine West zone (meters),conversion,,,,,2207,Used for large and medium scale topographic mapping and engineering survey.,9807,,,,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  2001.03,1,0
-11900,Maryland CS27,conversion,,,,,1389,Used for large and medium scale topographic mapping and engineering survey.,9802,,,,USGS Professional Paper #1395,EPSG,2000-03-07 00:00:00,95.30  96.29  99.28  2000.094,1,0
-11930,SPCS83 Maryland zone (meters),conversion,,,,,1389,Used for large and medium scale topographic mapping and engineering survey.,9802,,,See code 15330 for equivalent non-metric definition.,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  99.28  2000.094  2001.03,1,0
-12001,Massachusetts CS27 Mainland zone,conversion,,,,,2209,Used for large and medium scale topographic mapping and engineering survey.,9802,,,,USGS Professional Paper #1395,EPSG,1999-04-22 00:00:00,95.30  96.29  99.28,1,0
-12002,Massachusetts CS27 Island zone,conversion,,,,,2208,Used for large and medium scale topographic mapping and engineering survey.,9802,,,,USGS Professional Paper #1395,EPSG,1999-04-22 00:00:00,95.30  96.29  99.28,1,0
-12031,SPCS83 Massachusetts Mainland zone (meters),conversion,,,,,2209,Used for large and medium scale topographic mapping and engineering survey.,9802,,,See code 15331 for equivalent non-metric definition.,NOAA manual NOS NGS 5,EPSG,1999-04-22 00:00:00,95.30  96.29  99.28  2001.03,1,0
-12032,SPCS83 Massachusetts Island zone (meters),conversion,,,,,2208,Used for large and medium scale topographic mapping and engineering survey.,9802,,,See code 15332 for equivalent non-metric definition.,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  99.28  2001.03,1,0
-12101,Michigan State Plane East zone,conversion,,,,,1720,Obsolete.,9807,,,Superseded by north central and south zones.,USGS Professional Paper #1395,EPSG,2000-03-07 00:00:00,95.30  96.29  98.22  2000.092,1,0
-12102,Michigan State Plane Old Central zone,conversion,,,,,1721,Obsolete.,9807,,,Superseded by north central and south zones.,USGS Professional Paper #1395,EPSG,1998-11-11 00:00:00,95.30  96.29  98.22,1,0
-12103,Michigan State Plane West zone,conversion,,,,,1722,Obsolete.,9807,,,Superseded by north central and south zones.,USGS Professional Paper #1395,EPSG,2000-03-07 00:00:00,95.30  96.29  98.22  2000.092,1,0
-12111,Michigan CS27 North zone,conversion,,,,,1723,Used for large and medium scale topographic mapping and engineering survey.,9802,,,,USGS Professional Paper #1395,EPSG,1999-04-22 00:00:00,95.30  96.28  96.29  98.22  99.28,1,0
-12112,Michigan CS27 Central zone,conversion,,,,,1724,Used for large and medium scale topographic mapping and engineering survey.,9802,,,,USGS Professional Paper #1395,EPSG,1999-04-22 00:00:00,95.30  96.28  96.29  98.22  99.28,1,0
-12113,Michigan CS27 South zone,conversion,,,,,1725,Used for large and medium scale topographic mapping and engineering survey.,9802,,,,USGS Professional Paper #1395,EPSG,1999-04-22 00:00:00,95.30  96.28  96.29  98.22  99.28,1,0
-12141,SPCS83 Michigan North zone (meters),conversion,,,,,1723,Used for large and medium scale topographic mapping and engineering survey.,9802,,,See code 15333 for equivalent non-metric definition.,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  99.28  2001.03,1,0
-12142,SPCS83 Michigan Central zone (meters),conversion,,,,,1724,Used for large and medium scale topographic mapping and engineering survey.,9802,,,See code 15334 for equivalent non-metric definition.,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  99.28  2001.03,1,0
-12143,SPCS83 Michigan South zone (meters),conversion,,,,,1725,Used for large and medium scale topographic mapping and engineering survey.,9802,,,See code 15335 for equivalent non-metric definition.,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  99.28  2001.03,1,0
-12201,Minnesota CS27 North zone,conversion,,,,,2214,Used for large and medium scale topographic mapping and engineering survey.,9802,,,,USGS Professional Paper #1395,EPSG,1999-04-22 00:00:00,95.30  96.29  99.28,1,0
-12202,Minnesota CS27 Central zone,conversion,,,,,2213,Used for large and medium scale topographic mapping and engineering survey.,9802,,,,USGS Professional Paper #1395,EPSG,1999-04-22 00:00:00,95.30  96.29  99.28,1,0
-12203,Minnesota CS27 South zone,conversion,,,,,2215,Used for large and medium scale topographic mapping and engineering survey.,9802,,,,USGS Professional Paper #1395,EPSG,1999-04-22 00:00:00,95.30  96.29  99.28,1,0
-12231,SPCS83 Minnesota North zone (meters),conversion,,,,,2214,Used for large and medium scale topographic mapping and engineering survey.,9802,,,,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  99.28  2001.03,1,0
-12232,SPCS83 Minnesota Central zone (meters),conversion,,,,,2213,Used for large and medium scale topographic mapping and engineering survey.,9802,,,,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  99.28  2001.03,1,0
-12233,SPCS83 Minnesota South zone (meters),conversion,,,,,2215,Used for large and medium scale topographic mapping and engineering survey.,9802,,,,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  99.28  2001.03,1,0
-12301,Mississippi CS27 East zone,conversion,,,,,2216,Used for large and medium scale topographic mapping and engineering survey.,9807,,,,USGS Professional Paper #1395,EPSG,1995-12-02 00:00:00,95.30  96.29,1,0
-12302,Mississippi CS27 West zone,conversion,,,,,2217,Used for large and medium scale topographic mapping and engineering survey.,9807,,,,USGS Professional Paper #1395,EPSG,1995-12-02 00:00:00,95.30  96.29,1,0
-12331,SPCS83 Mississippi East zone (meters),conversion,,,,,2216,Used for large and medium scale topographic mapping and engineering survey.,9807,,,See code 15336 for equivalent non-metric definition.,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  2001.03,1,0
-12332,SPCS83 Mississippi West zone (meters),conversion,,,,,2217,Used for large and medium scale topographic mapping and engineering survey.,9807,,,See code 15337 for equivalent non-metric definition.,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  2001.03,1,0
-12401,Missouri CS27 East zone,conversion,,,,,2219,Used for large and medium scale topographic mapping and engineering survey.,9807,,,,USGS Professional Paper #1395,EPSG,2000-03-07 00:00:00,95.18  95.30  96.29  2000.092,1,0
-12402,Missouri CS27 Central zone,conversion,,,,,2218,Used for large and medium scale topographic mapping and engineering survey.,9807,,,,USGS Professional Paper #1395,EPSG,1995-12-02 00:00:00,95.30  96.29,1,0
-12403,Missouri CS27 West zone,conversion,,,,,2220,Used for large and medium scale topographic mapping and engineering survey.,9807,,,,USGS Professional Paper #1395,EPSG,2000-03-07 00:00:00,95.30  96.29  2000.092,1,0
-12431,SPCS83 Missouri East zone (meters),conversion,,,,,2219,Used for large and medium scale topographic mapping and engineering survey.,9807,,,,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  2001.03,1,0
-12432,SPCS83 Missouri Central zone (meters),conversion,,,,,2218,Used for large and medium scale topographic mapping and engineering survey.,9807,,,,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  2001.03,1,0
-12433,SPCS83 Missouri West zone (meters),conversion,,,,,2220,Used for large and medium scale topographic mapping and engineering survey.,9807,,,,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  2001.03,1,0
-12501,Montana CS27 North zone,conversion,,,,,2211,Used for large and medium scale topographic mapping and engineering survey.,9802,,,,USGS Professional Paper #1395,EPSG,1999-04-22 00:00:00,95.30  96.29  99.28,1,0
-12502,Montana CS27 Central zone,conversion,,,,,2210,Used for large and medium scale topographic mapping and engineering survey.,9802,,,,USGS Professional Paper #1395,EPSG,1999-04-22 00:00:00,95.30  96.29  99.28,1,0
-12503,Montana CS27 South zone,conversion,,,,,2212,Used for large and medium scale topographic mapping and engineering survey.,9802,,,,USGS Professional Paper #1395,EPSG,1999-04-22 00:00:00,95.30  96.29  99.28,1,0
-12530,SPCS83 Montana zone (meters),conversion,,,,,1395,Used for large and medium scale topographic mapping and engineering survey.,9802,,,See code 15338 for equivalent non-metric definition.,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  99.28  2000.094  2001.03,1,0
-12601,Nebraska CS27 North zone,conversion,,,,,2221,Used for large and medium scale topographic mapping and engineering survey.,9802,,,,USGS Professional Paper #1395,EPSG,1999-04-22 00:00:00,95.30  96.29  99.28,1,0
-12602,Nebraska CS27 South zone,conversion,,,,,2222,Used for large and medium scale topographic mapping and engineering survey.,9802,,,,USGS Professional Paper #1395,EPSG,1999-04-22 00:00:00,95.30  96.29  99.28,1,0
-12630,SPCS83 Nebraska zone (meters),conversion,,,,,1396,Used for large and medium scale topographic mapping and engineering survey.,9802,,,,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  99.28  2000.094  2001.03,1,0
-12701,Nevada CS27 East zone,conversion,,,,,2224,Used for large and medium scale topographic mapping and engineering survey.,9807,,,,USGS Professional Paper #1395,EPSG,2000-03-07 00:00:00,95.30  96.29  2000.092,1,0
-12702,Nevada CS27 Central zone,conversion,,,,,2223,Used for large and medium scale topographic mapping and engineering survey.,9807,,,,USGS Professional Paper #1395,EPSG,2000-03-07 00:00:00,95.30  96.29  2000.093,1,0
-12703,Nevada CS27 West zone,conversion,,,,,2225,Used for large and medium scale topographic mapping and engineering survey.,9807,,,,USGS Professional Paper #1395,EPSG,2000-03-07 00:00:00,95.30  96.29  2000.092,1,0
-12731,SPCS83 Nevada East zone (meters),conversion,,,,,2224,Used for large and medium scale topographic mapping and engineering survey.,9807,,,,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  2001.03,1,0
-12732,SPCS83 Nevada Central zone (meters),conversion,,,,,2223,Used for large and medium scale topographic mapping and engineering survey.,9807,,,,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  2001.03,1,0
-12733,SPCS83 Nevada West zone (meters),conversion,,,,,2225,Used for large and medium scale topographic mapping and engineering survey.,9807,,,,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  2001.03,1,0
-12800,New Hampshire CS27,conversion,,,,,1398,Used for large and medium scale topographic mapping and engineering survey.,9807,,,,USGS Professional Paper #1395,EPSG,2000-03-07 00:00:00,95.30  96.29  2000.092,1,0
-12830,SPCS83 New Hampshire zone (meters),conversion,,,,,1398,Used for large and medium scale topographic mapping and engineering survey.,9807,,,,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  2000.094  2001.03,1,0
-12900,New Jersey CS27,conversion,,,,,1399,Used for large and medium scale topographic mapping and engineering survey.,9807,,,,USGS Professional Paper #1395,EPSG,2000-03-07 00:00:00,95.30  96.29  2000.094,1,0
-12930,SPCS83 New Jersey zone (meters),conversion,,,,,1399,Used for large and medium scale topographic mapping and engineering survey.,9807,,,,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  2000.094  2001.03,1,0
-13001,New Mexico CS27 East zone,conversion,,,,,2228,Used for large and medium scale topographic mapping and engineering survey.,9807,,,,USGS Professional Paper #1395,EPSG,2000-03-07 00:00:00,95.30  96.29  2000.092,1,0
-13002,New Mexico CS27 Central zone,conversion,,,,,2229,Used for large and medium scale topographic mapping and engineering survey.,9807,,,,USGS Professional Paper #1395,EPSG,1995-12-02 00:00:00,95.30  96.29,1,0
-13003,New Mexico CS27 West zone,conversion,,,,,2230,Used for large and medium scale topographic mapping and engineering survey.,9807,,,,USGS Professional Paper #1395,EPSG,2000-03-07 00:00:00,95.30  96.29  2000.092,1,0
-13031,SPCS83 New Mexico East zone (meters),conversion,,,,,2228,Used for large and medium scale topographic mapping and engineering survey.,9807,,,See code 15339 for equivalent non-metric definition.,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  2001.03,1,0
-13032,SPCS83 New Mexico Central zone (meters),conversion,,,,,2231,Used for large and medium scale topographic mapping and engineering survey.,9807,,,See code 15340 for equivalent non-metric definition.,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  2001.03,1,0
-13033,SPCS83 New Mexico West zone (meters),conversion,,,,,2232,Used for large and medium scale topographic mapping and engineering survey.,9807,,,See code 15341 for equivalent non-metric definition.,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  2001.03,1,0
-13101,New York CS27 East zone,conversion,,,,,2234,Used for large and medium scale topographic mapping and engineering survey.,9807,,,,USGS Professional Paper #1395,EPSG,2000-03-07 00:00:00,95.18  95.30  96.29  2000.092,1,0
-13102,New York CS27 Central zone,conversion,,,,,2233,Used for large and medium scale topographic mapping and engineering survey.,9807,,,,USGS Professional Paper #1395,EPSG,1995-12-02 00:00:00,95.30  96.29,1,0
-13103,New York CS27 West zone,conversion,,,,,2236,Used for large and medium scale topographic mapping and engineering survey.,9807,,,,USGS Professional Paper #1395,EPSG,2000-03-07 00:00:00,95.30  96.29  2000.092,1,0
-13104,New York CS27 Long Island zone,conversion,,,,,2235,Used for large and medium scale topographic mapping and engineering survey.,9802,,,,USGS Professional Paper #1395,EPSG,1999-04-22 00:00:00,95.30  96.29  99.28,1,0
-13131,SPCS83 New York East zone (meters),conversion,,,,,2234,Used for large and medium scale topographic mapping and engineering survey.,9807,,,See code 15342 for equivalent non-metric definition.,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  2001.03,1,0
-13132,SPCS83 New York Central zone (meters),conversion,,,,,2233,Used for large and medium scale topographic mapping and engineering survey.,9807,,,See code 15343 for equivalent non-metric definition.,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  2001.03,1,0
-13133,SPCS83 New York West zone (meters),conversion,,,,,2236,Used for large and medium scale topographic mapping and engineering survey.,9807,,,See code 15344 for equivalent non-metric definition.,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  2001.03,1,0
-13134,SPCS83 New York Long Island zone (meters),conversion,,,,,2235,Used for large and medium scale topographic mapping and engineering survey.,9802,,,See code 15345 for equivalent non-metric definition.,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  99.28  2001.03,1,0
-13200,North Carolina CS27,conversion,,,,,1402,Used for large and medium scale topographic mapping and engineering survey.,9802,,,,USGS Professional Paper #1395,EPSG,2000-03-07 00:00:00,95.30  96.29  99.28  2000.094,1,0
-13230,SPCS83 North Carolina zone (meters),conversion,,,,,1402,Used for large and medium scale topographic mapping and engineering survey.,9802,,,See code 15346 for equivalent non-metric definition.,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  99.28  2000.094  2001.03,1,0
-13301,North Dakota CS27 North zone,conversion,,,,,2237,Used for large and medium scale topographic mapping and engineering survey.,9802,,,,USGS Professional Paper #1395,EPSG,1999-04-22 00:00:00,95.30  96.29  99.28,1,0
-13302,North Dakota CS27 South zone,conversion,,,,,2238,Used for large and medium scale topographic mapping and engineering survey.,9802,,,,USGS Professional Paper #1395,EPSG,1999-04-22 00:00:00,95.30  96.29  99.28,1,0
-13331,SPCS83 North Dakota North zone (meters),conversion,,,,,2237,Used for large and medium scale topographic mapping and engineering survey.,9802,,,See code 15347 for equivalent non-metric definition.,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  99.28  2001.03,1,0
-13332,SPCS83 North Dakota South zone (meters),conversion,,,,,2238,Used for large and medium scale topographic mapping and engineering survey.,9802,,,See code 15348 for equivalent non-metric definition.,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  99.28  2001.03,1,0
-13401,Ohio CS27 North zone,conversion,,,,,2239,Used for large and medium scale topographic mapping and engineering survey.,9802,,,,USGS Professional Paper #1395,EPSG,1999-04-22 00:00:00,95.30  96.29  99.28,1,0
-13402,Ohio CS27 South zone,conversion,,,,,2240,Used for large and medium scale topographic mapping and engineering survey.,9802,,,,USGS Professional Paper #1395,EPSG,1999-04-22 00:00:00,95.30  96.29  99.28,1,0
-13431,SPCS83 Ohio North zone (meters),conversion,,,,,2239,Used for large and medium scale topographic mapping and engineering survey.,9802,,,,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  99.28  2001.03,1,0
-13432,SPCS83 Ohio South zone (meters),conversion,,,,,2240,Used for large and medium scale topographic mapping and engineering survey.,9802,,,,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  99.28  2001.03,1,0
-13501,Oklahoma CS27 North zone,conversion,,,,,2241,Used for large and medium scale topographic mapping and engineering survey.,9802,,,,USGS Professional Paper #1395,EPSG,1999-04-22 00:00:00,95.30  96.29  99.28,1,0
-13502,Oklahoma CS27 South zone,conversion,,,,,2242,Used for large and medium scale topographic mapping and engineering survey.,9802,,,,USGS Professional Paper #1395,EPSG,1999-04-22 00:00:00,95.30  96.29  99.28,1,0
-13531,SPCS83 Oklahoma North zone (meters),conversion,,,,,2241,Used for large and medium scale topographic mapping and engineering survey.,9802,,,See code 15349 for equivalent non-metric definition.,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  99.28  2001.03,1,0
-13532,SPCS83 Oklahoma South zone (meters),conversion,,,,,2242,Used for large and medium scale topographic mapping and engineering survey.,9802,,,See code 15350 for equivalent non-metric definition.,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  99.28  2001.03,1,0
-13601,Oregon CS27 North zone,conversion,,,,,2243,Used for large and medium scale topographic mapping and engineering survey.,9802,,,,USGS Professional Paper #1395,EPSG,1999-04-22 00:00:00,95.30  96.29  99.28,1,0
-13602,Oregon CS27 South zone,conversion,,,,,2244,Used for large and medium scale topographic mapping and engineering survey.,9802,,,,USGS Professional Paper #1395,EPSG,1999-04-22 00:00:00,95.30  96.29  99.28,1,0
-13631,SPCS83 Oregon North zone (meters),conversion,,,,,2243,Used for large and medium scale topographic mapping and engineering survey.,9802,,,See code 15351 for equivalent non-metric definition.,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  99.28  2001.03,1,0
-13632,SPCS83 Oregon South zone (meters),conversion,,,,,2244,Used for large and medium scale topographic mapping and engineering survey.,9802,,,See code 15352 for equivalent non-metric definition.,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  99.28  2001.03,1,0
-13701,Pennsylvania CS27 North zone,conversion,,,,,2245,Used for large and medium scale topographic mapping and engineering survey.,9802,,,,USGS Professional Paper #1395,EPSG,1999-04-22 00:00:00,95.30  96.29  99.28,1,0
-13702,Pennsylvania CS27 South zone,conversion,,,,,2246,Used for large and medium scale topographic mapping and engineering survey.,9802,,,,USGS Professional Paper #1395,EPSG,1999-04-22 00:00:00,95.30  96.29  99.28,1,0
-13731,SPCS83 Pennsylvania North zone (meters),conversion,,,,,2245,Used for large and medium scale topographic mapping and engineering survey.,9802,,,See code 15353 for equivalent non-metric definition.,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  99.28  2001.03,1,0
-13732,SPCS83 Pennsylvania South zone (meters),conversion,,,,,2246,Used for large and medium scale topographic mapping and engineering survey.,9802,,,See code 15354 for equivalent non-metric definition.,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  99.28  2001.03,1,0
-13800,Rhode Island CS27,conversion,,,,,1408,Used for large and medium scale topographic mapping and engineering survey.,9807,,,,USGS Professional Paper #1395,EPSG,2000-03-07 00:00:00,95.30  96.29  2000.094,1,0
-13830,SPCS83 Rhode Island zone (meters),conversion,,,,,1408,Used for large and medium scale topographic mapping and engineering survey.,9807,,,,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  2000.094  2001.03,1,0
-13901,South Carolina CS27 North zone,conversion,,,,,2247,Used for large and medium scale topographic mapping and engineering survey.,9802,,,,USGS Professional Paper #1395,EPSG,1999-04-22 00:00:00,95.30  96.29  99.28,1,0
-13902,South Carolina CS27 South zone,conversion,,,,,2248,Used for large and medium scale topographic mapping and engineering survey.,9802,,,,USGS Professional Paper #1395,EPSG,1999-04-22 00:00:00,95.30  96.29  99.28,1,0
-13930,SPCS83 South Carolina zone (meters),conversion,,,,,1409,Used for large and medium scale topographic mapping and engineering survey.,9802,,,See code 15355 for equivalent non-metric definition.,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  99.28  2000.094  2001.03,1,0
-14001,South Dakota CS27 North zone,conversion,,,,,2249,Used for large and medium scale topographic mapping and engineering survey.,9802,,,,USGS Professional Paper #1395,EPSG,1999-04-22 00:00:00,95.30  96.29  99.28,1,0
-14002,South Dakota CS27 South zone,conversion,,,,,2250,Used for large and medium scale topographic mapping and engineering survey.,9802,,,,USGS Professional Paper #1395,EPSG,1999-04-22 00:00:00,95.30  96.29  99.28,1,0
-14031,SPCS83 South Dakota North zone (meters),conversion,,,,,2249,Used for large and medium scale topographic mapping and engineering survey.,9802,,,,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  99.28  2001.03,1,0
-14032,SPCS83 South Dakota South zone (meters),conversion,,,,,2250,Used for large and medium scale topographic mapping and engineering survey.,9802,,,,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  99.28  2001.03,1,0
-14100,Tennessee CS27,conversion,,,,,1411,Used for large and medium scale topographic mapping and engineering survey.,9802,,,,USGS Professional Paper #1395,EPSG,2000-03-07 00:00:00,95.30  96.29  99.28  2000.094,1,1
-14130,SPCS83 Tennessee zone (meters),conversion,,,,,1411,Used for large and medium scale topographic mapping and engineering survey.,9802,,,See code 15356 for equivalent non-metric definition.,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  99.28  2000.094  2001.03,1,0
-14201,Texas CS27 North zone,conversion,,,,,2253,Used for large and medium scale topographic mapping and engineering survey.,9802,,,,USGS Professional Paper #1395,EPSG,1999-04-22 00:00:00,95.30  96.29  99.28,1,0
-14202,Texas CS27 North Central zone,conversion,,,,,2254,Used for large and medium scale topographic mapping and engineering survey.,9802,,,,USGS Professional Paper #1395,EPSG,1999-04-22 00:00:00,95.30  96.29  99.28,1,0
-14203,Texas CS27 Central zone,conversion,,,,,2252,Used for large and medium scale topographic mapping and engineering survey.,9802,,,,USGS Professional Paper #1395,EPSG,1999-04-22 00:00:00,95.30  96.29  99.28,1,0
-14204,Texas CS27 South Central zone,conversion,,,,,2256,Used for large and medium scale topographic mapping and engineering survey.,9802,,,,USGS Professional Paper #1395,EPSG,1999-04-22 00:00:00,95.30  96.29  99.28,1,0
-14205,Texas CS27 South zone,conversion,,,,,2255,Used for large and medium scale topographic mapping and engineering survey.,9802,,,,USGS Professional Paper #1395,EPSG,1999-04-22 00:00:00,95.30  96.29  99.28,1,0
-14231,SPCS83 Texas North zone (meters),conversion,,,,,2253,Used for large and medium scale topographic mapping and engineering survey.,9802,,,See code 15357 for equivalent non-metric definition.,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  99.28  2001.03,1,0
-14232,SPCS83 Texas North Central zone (meters),conversion,,,,,2254,Used for large and medium scale topographic mapping and engineering survey.,9802,,,See code 15358 for equivalent non-metric definition.,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  99.28  2001.03,1,0
-14233,SPCS83 Texas Central zone (meters),conversion,,,,,2252,Used for large and medium scale topographic mapping and engineering survey.,9802,,,See code 15359 for equivalent non-metric definition.,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  99.28  2001.03,1,0
-14234,SPCS83 Texas South Central zone (meters),conversion,,,,,2527,Used for large and medium scale topographic mapping and engineering survey.,9802,,,See code 15360 for equivalent non-metric definition.,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  99.28  2001.03,1,0
-14235,SPCS83 Texas South zone (meters),conversion,,,,,2528,Used for large and medium scale topographic mapping and engineering survey.,9802,,,See code 15361 for equivalent non-metric definition.,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  99.28  2001.03,1,0
-14301,Utah CS27 North zone,conversion,,,,,2258,Used for large and medium scale topographic mapping and engineering survey.,9802,,,,USGS Professional Paper #1395,EPSG,1999-04-22 00:00:00,95.30  96.29  99.28,1,0
-14302,Utah CS27 Central zone,conversion,,,,,2257,Used for large and medium scale topographic mapping and engineering survey.,9802,,,,USGS Professional Paper #1395,EPSG,1999-04-22 00:00:00,95.30  96.29  99.28,1,0
-14303,Utah CS27 South zone,conversion,,,,,2259,Used for large and medium scale topographic mapping and engineering survey.,9802,,,,USGS Professional Paper #1395,EPSG,1999-04-22 00:00:00,95.30  96.29  99.28,1,0
-14331,SPCS83 Utah North zone (meters),conversion,,,,,2258,Used for large and medium scale topographic mapping and engineering survey.,9802,,,See code 15362 for equivalent non-metric definition.,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  99.28  2001.03,1,0
-14332,SPCS83 Utah Central zone (meters),conversion,,,,,2257,Used for large and medium scale topographic mapping and engineering survey.,9802,,,See code 15363 for equivalent non-metric definition.,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  99.28  2001.03,1,0
-14333,SPCS83 Utah South zone (meters),conversion,,,,,2259,Used for large and medium scale topographic mapping and engineering survey.,9802,,,See code 15364 for equivalent non-metric definition.,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  99.28  2001.03,1,0
-14400,Vermont CS27,conversion,,,,,1414,Used for large and medium scale topographic mapping and engineering survey.,9807,,,,USGS Professional Paper #1395,EPSG,2000-03-07 00:00:00,95.30  96.29  2000.094,1,0
-14430,SPCS83 Vermont zone (meters),conversion,,,,,1414,Used for large and medium scale topographic mapping and engineering survey.,9807,,,,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  2000.094  2001.03,1,0
-14501,Virginia CS27 North zone,conversion,,,,,2260,Used for large and medium scale topographic mapping and engineering survey.,9802,,,,USGS Professional Paper #1395,EPSG,1999-04-22 00:00:00,95.30  96.29  99.28,1,0
-14502,Virginia CS27 South zone,conversion,,,,,2261,Used for large and medium scale topographic mapping and engineering survey.,9802,,,,USGS Professional Paper #1395,EPSG,1999-04-22 00:00:00,95.30  96.29  99.28,1,0
-14531,SPCS83 Virginia North zone (meters),conversion,,,,,2260,Used for large and medium scale topographic mapping and engineering survey.,9802,,,See code 15365 for equivalent non-metric definition.,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  99.28  2001.03,1,0
-14532,SPCS83 Virginia South zone (meters),conversion,,,,,2261,Used for large and medium scale topographic mapping and engineering survey.,9802,,,See code 15366 for equivalent non-metric definition.,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  99.28  2001.03,1,0
-14601,Washington CS27 North zone,conversion,,,,,2262,Used for large and medium scale topographic mapping and engineering survey.,9802,,,,USGS Professional Paper #1395,EPSG,1999-04-22 00:00:00,95.30  96.29  99.28,1,0
-14602,Washington CS27 South zone,conversion,,,,,2263,Used for large and medium scale topographic mapping and engineering survey.,9802,,,,USGS Professional Paper #1395,EPSG,1999-04-22 00:00:00,95.30  96.29  99.28,1,0
-14631,SPCS83 Washington North zone (meters),conversion,,,,,2273,Used for large and medium scale topographic mapping and engineering survey.,9802,,,See code 15367 for equivalent non-metric definition.,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  99.28  2001.03,1,0
-14632,SPCS83 Washington South zone (meters),conversion,,,,,2274,Used for large and medium scale topographic mapping and engineering survey.,9802,,,See code 15368 for equivalent non-metric definition.,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  99.28  2001.03,1,0
-14701,West Virginia CS27 North zone,conversion,,,,,2264,Used for large and medium scale topographic mapping and engineering survey.,9802,,,,USGS Professional Paper #1395,EPSG,1999-04-22 00:00:00,95.30  96.29  99.28,1,0
-14702,West Virginia CS27 South zone,conversion,,,,,2265,Used for large and medium scale topographic mapping and engineering survey.,9802,,,,USGS Professional Paper #1395,EPSG,1999-04-22 00:00:00,95.30  96.29  99.28,1,0
-14731,SPCS83 West Virginia North zone (meters),conversion,,,,,2264,Used for large and medium scale topographic mapping and engineering survey.,9802,,,,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  99.28  2001.03,1,0
-14732,SPCS83 West Virginia South zone (meters),conversion,,,,,2265,Used for large and medium scale topographic mapping and engineering survey.,9802,,,,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  99.28  2001.03,1,0
-14801,Wisconsin CS27 North zone,conversion,,,,,2267,Used for large and medium scale topographic mapping and engineering survey.,9802,,,,USGS Professional Paper #1395,EPSG,1999-04-22 00:00:00,95.30  96.29  99.28,1,0
-14802,Wisconsin CS27 Central zone,conversion,,,,,2266,Used for large and medium scale topographic mapping and engineering survey.,9802,,,,USGS Professional Paper #1395,EPSG,1999-04-22 00:00:00,95.30  96.29  99.28,1,0
-14803,Wisconsin CS27 South zone,conversion,,,,,2268,Used for large and medium scale topographic mapping and engineering survey.,9802,,,,USGS Professional Paper #1395,EPSG,1999-04-22 00:00:00,95.30  96.29  99.28,1,0
-14831,SPCS83 Wisconsin North zone (meters),conversion,,,,,2267,Used for large and medium scale topographic mapping and engineering survey.,9802,,,See code 15369 for equivalent non-metric definition.,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  99.28  2001.03,1,0
-14832,SPCS83 Wisconsin Central zone (meters),conversion,,,,,2266,Used for large and medium scale topographic mapping and engineering survey.,9802,,,See code 15370 for equivalent non-metric definition.,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  99.28  2001.03,1,0
-14833,SPCS83 Wisconsin South zone (meters),conversion,,,,,2268,Used for large and medium scale topographic mapping and engineering survey.,9802,,,See code 15371 for equivalent non-metric definition.,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  99.28  2001.03,1,0
-14901,Wyoming CS27 East zone,conversion,,,,,2269,Used for large and medium scale topographic mapping and engineering survey.,9807,,,,USGS Professional Paper #1395,EPSG,2000-03-07 00:00:00,95.30  96.29  2000.092,1,0
-14902,Wyoming CS27 East Central zone,conversion,,,,,2270,Used for large and medium scale topographic mapping and engineering survey.,9807,,,,USGS Professional Paper #1395,EPSG,2000-03-07 00:00:00,95.30  96.29  2000.092,1,0
-14903,Wyoming CS27 West Central zone,conversion,,,,,2272,Used for large and medium scale topographic mapping and engineering survey.,9807,,,,USGS Professional Paper #1395,EPSG,2000-03-07 00:00:00,95.30  96.29  2000.092,1,0
-14904,Wyoming CS27 West zone,conversion,,,,,2271,Used for large and medium scale topographic mapping and engineering survey.,9807,,,,USGS Professional Paper #1395,EPSG,2000-03-07 00:00:00,95.30  96.29  2000.092,1,0
-14931,SPCS83 Wyoming East zone (meters),conversion,,,,,2269,Used for large and medium scale topographic mapping and engineering survey.,9807,,,,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  2000.092  2001.03,1,0
-14932,SPCS83 Wyoming East Central zone (meters),conversion,,,,,2270,Used for large and medium scale topographic mapping and engineering survey.,9807,,,,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  2000.092  2001.03,1,0
-14933,SPCS83 Wyoming West Central zone (meters),conversion,,,,,2272,Used for large and medium scale topographic mapping and engineering survey.,9807,,,,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  2000.092  2001.03,1,0
-14934,SPCS83 Wyoming West zone (meters),conversion,,,,,2271,Used for large and medium scale topographic mapping and engineering survey.,9807,,,,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  2000.092  2001.03,1,0
-15001,Alaska CS27 zone 1,conversion,,,,,2156,Used for large and medium scale topographic mapping and engineering survey.,9812,,,"If using Oblique Mercator method (code 9815), Ec=2685642.82 ftUS, Nc=1887198.47 ftUS.",USGS Professional Paper #1395,EPSG,1997-04-11 00:00:00,96.29  97.08,1,0
-15002,Alaska CS27 zone 2,conversion,,,,,2158,Used for large and medium scale topographic mapping and engineering survey.,9807,,,,USGS Professional Paper #1395,EPSG,1995-12-02 00:00:00,95.30  96.29,1,0
-15003,Alaska CS27 zone 3,conversion,,,,,2159,Used for large and medium scale topographic mapping and engineering survey.,9807,,,,USGS Professional Paper #1395,EPSG,1995-12-02 00:00:00,95.30  96.29,1,0
-15004,Alaska CS27 zone 4,conversion,,,,,2160,Used for large and medium scale topographic mapping and engineering survey.,9807,,,,USGS Professional Paper #1395,EPSG,1995-12-02 00:00:00,95.30  96.29,1,0
-15005,Alaska CS27 zone 5,conversion,,,,,2161,Used for large and medium scale topographic mapping and engineering survey.,9807,,,,USGS Professional Paper #1395,EPSG,1995-12-02 00:00:00,95.30  96.29,1,0
-15006,Alaska CS27 zone 6,conversion,,,,,2162,Used for large and medium scale topographic mapping and engineering survey.,9807,,,,USGS Professional Paper #1395,EPSG,1995-12-02 00:00:00,95.30  96.29,1,0
-15007,Alaska CS27 zone 7,conversion,,,,,2163,Used for large and medium scale topographic mapping and engineering survey.,9807,,,,USGS Professional Paper #1395,EPSG,1995-12-02 00:00:00,95.30  96.29,1,0
-15008,Alaska CS27 zone 8,conversion,,,,,2164,Used for large and medium scale topographic mapping and engineering survey.,9807,,,,USGS Professional Paper #1395,EPSG,1995-12-02 00:00:00,95.30  96.29,1,0
-15009,Alaska CS27 zone 9,conversion,,,,,2165,Used for large and medium scale topographic mapping and engineering survey.,9807,,,,USGS Professional Paper #1395,EPSG,1995-12-02 00:00:00,95.30  96.29,1,0
-15010,Alaska CS27 zone 10,conversion,,,,,2157,Used for large and medium scale topographic mapping and engineering survey.,9802,,,,USGS Professional Paper #1395,EPSG,1999-04-22 00:00:00,95.30  96.29  99.28,1,0
-15031,SPCS83 Alaska zone 1 (meters),conversion,,,,,2156,Used for large and medium scale topographic mapping and engineering survey.,9812,,,"If using Oblique Mercator method (code 9815), Ec=818585.57 m, Nc=575219.25 m.",NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,96.29  2001.03,1,0
-15032,SPCS83 Alaska zone 2 (meters),conversion,,,,,2158,Used for large and medium scale topographic mapping and engineering survey.,9807,,,,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  2001.03,1,0
-15033,SPCS83 Alaska zone 3 (meters),conversion,,,,,2159,Used for large and medium scale topographic mapping and engineering survey.,9807,,,,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  2001.03,1,0
-15034,SPCS83 Alaska zone 4 (meters),conversion,,,,,2160,Used for large and medium scale topographic mapping and engineering survey.,9807,,,,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  2001.03,1,0
-15035,SPCS83 Alaska zone 5 (meters),conversion,,,,,2161,Used for large and medium scale topographic mapping and engineering survey.,9807,,,,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  2001.03,1,0
-15036,SPCS83 Alaska zone 6 (meters),conversion,,,,,2162,Used for large and medium scale topographic mapping and engineering survey.,9807,,,,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  2001.03,1,0
-15037,SPCS83 Alaska zone 7 (meters),conversion,,,,,2163,Used for large and medium scale topographic mapping and engineering survey.,9807,,,,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  2001.03,1,0
-15038,SPCS83 Alaska zone 8 (meters),conversion,,,,,2164,Used for large and medium scale topographic mapping and engineering survey.,9807,,,,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  2001.03,1,0
-15039,SPCS83 Alaska zone 9 (meters),conversion,,,,,2165,Used for large and medium scale topographic mapping and engineering survey.,9807,,,,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  2001.03,1,0
-15040,SPCS83 Alaska zone 10 (meters),conversion,,,,,2157,Used for large and medium scale topographic mapping and engineering survey.,9802,,,,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  99.28  2001.03,1,0
-15101,Hawaii CS27 zone 1,conversion,,,,,1546,Used for large and medium scale topographic mapping and engineering survey.,9807,,,,USGS Professional Paper #1395,EPSG,1995-12-02 00:00:00,95.30  96.29,1,0
-15102,Hawaii CS27 zone 2,conversion,,,,,1547,Used for large and medium scale topographic mapping and engineering survey.,9807,,,,USGS Professional Paper #1395,EPSG,1995-12-02 00:00:00,95.30  96.29,1,0
-15103,Hawaii CS27 zone 3,conversion,,,,,1548,Used for large and medium scale topographic mapping and engineering survey.,9807,,,,USGS Professional Paper #1395,EPSG,1995-12-02 00:00:00,95.30  96.29,1,0
-15104,Hawaii CS27 zone 4,conversion,,,,,1549,Used for large and medium scale topographic mapping and engineering survey.,9807,,,,USGS Professional Paper #1395,EPSG,1995-12-02 00:00:00,95.30  96.29,1,0
-15105,Hawaii CS27 zone 5,conversion,,,,,1550,Used for large and medium scale topographic mapping and engineering survey.,9807,,,,USGS Professional Paper #1395,EPSG,1995-12-02 00:00:00,95.30  96.29,1,0
-15131,SPCS83 Hawaii zone 1 (meters),conversion,,,,,1546,Used for large and medium scale topographic mapping and engineering survey.,9807,,,,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  2001.03,1,0
-15132,SPCS83 Hawaii zone 2 (meters),conversion,,,,,1547,Used for large and medium scale topographic mapping and engineering survey.,9807,,,,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  2001.03,1,0
-15133,SPCS83 Hawaii zone 3 (meters),conversion,,,,,1548,Used for large and medium scale topographic mapping and engineering survey.,9807,,,,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  2001.03,1,0
-15134,SPCS83 Hawaii zone 4 (meters),conversion,,,,,1549,Used for large and medium scale topographic mapping and engineering survey.,9807,,,,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  2001.03,1,0
-15135,SPCS83 Hawaii zone 5 (meters),conversion,,,,,1550,Used for large and medium scale topographic mapping and engineering survey.,9807,,,,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  2001.03,1,0
-15201,Puerto Rico CS27,conversion,,,,,1194,Used for large and medium scale topographic mapping and engineering survey.,9802,,,,USGS Professional Paper #1395,EPSG,2000-03-07 00:00:00,95.30  96.29  99.28  2000.094,1,0
-15202,St. Croix CS27,conversion,,,,,1254,Used for large and medium scale topographic mapping and engineering survey.,9802,,,,USGS Professional Paper #1395,EPSG,2000-03-07 00:00:00,95.30  96.29  99.28  2000.094,1,0
-15230,SPCS83 Puerto Rico & Virgin Islands zone (meters),conversion,,,,,2251,Used for large and medium scale topographic mapping and engineering survey.,9802,,,,NOAA manual NOS NGS 5,EPSG,2001-11-06 00:00:00,95.30  96.29  99.28  2001.03,1,0
-15300,American Samoa Lambert,conversion,,,,,1027,Used for large and medium scale topographic mapping and engineering survey.,9801,,,Per Snyder: Map Projections - a Working Manual:  At origin x=500000 ft; y=o but radius to latitude of origin = -82000000 feet.  US National Geodetic Survey confirms use of zero for False Northing.,US National Geodetic Survey (NGS),EPSG,2000-10-19 00:00:00,,1,1
-15301,American Samoa Lambert,conversion,,,,,1027,Used for large and medium scale topographic mapping and engineering survey.,9801,,,Per Snyder: Map Projections - a Working Manual:  At origin x=500000 ft; y=o but radius to latitude of origin = -82000000 feet.  US National Geodetic Survey confirms use of zero for False Northing.,US National Geodetic Survey (NGS),EPSG,2001-08-28 00:00:00,,1,0
-15302,Tennessee CS27,conversion,,,,,1411,Used for large and medium scale topographic mapping and engineering survey.,9802,,,,USGS Professional Paper #1395,EPSG,2001-10-04 00:00:00,2001.45,1,0
-15303,SPCS83 Kentucky North zone (meters),conversion,,,,,2202,Used for large and medium scale topographic mapping and engineering survey.,9802,,,See code 15328 for equivalent non-metric definition.,NOAA manual NOS NGS 5,EPSG,2001-10-04 00:00:00,2001.03  2001.45,1,0
-15304,SPCS83 Arizona East zone (International feet),conversion,,,,,2167,Used for large and medium scale topographic mapping and engineering survey.,9807,,,State law defines grid unit as International feet (note: not US Survey feet). For equivalent metric Federal definition see code 10231.,National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-15305,SPCS83 Arizona Central zone (International feet),conversion,,,,,2166,Used for large and medium scale topographic mapping and engineering survey.,9807,,,State law defines grid unit as International feet (note: not US Survey feet). For equivalent metric Federal definition see code 10232.,National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-15306,SPCS83 Arizona West zone (International feet),conversion,,,,,2168,Used for large and medium scale topographic mapping and engineering survey.,9807,,,State law defines grid unit as International feet (note: not US Survey feet). For equivalent metric Federal definition see code 10233.,National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-15307,SPCS83 California zone 1 (US Survey feet),conversion,,,,,2175,Used for large and medium scale topographic mapping and engineering survey.,9802,,,State law defines grid unit as US Survey feet. For equivalent metric Federal definition see code 10431.,National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-15308,SPCS83 California zone 2 (US Survey feet),conversion,,,,,2176,Used for large and medium scale topographic mapping and engineering survey.,9802,,,State law defines grid unit as US Survey feet. For equivalent metric Federal definition see code 10432.,National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-15309,SPCS83 California zone 3 (US Survey feet),conversion,,,,,2177,Used for large and medium scale topographic mapping and engineering survey.,9802,,,State law defines grid unit as US Survey feet. For equivalent metric Federal definition see code 10433.,National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-15310,SPCS83 California zone 4 (US Survey feet),conversion,,,,,2178,Used for large and medium scale topographic mapping and engineering survey.,9802,,,State law defines grid unit as US Survey feet. For equivalent metric Federal definition see code 10434.,National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-15311,SPCS83 California zone 5 (US Survey feet),conversion,,,,,2182,Used for large and medium scale topographic mapping and engineering survey.,9802,,,State law defines grid unit as US Survey feet. For equivalent metric Federal definition see code 10435.,National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-15312,SPCS83 California zone 6 (US Survey feet),conversion,,,,,2180,Used for large and medium scale topographic mapping and engineering survey.,9802,,,State law defines grid unit as US Survey feet. For equivalent metric Federal definition see code 10436.,National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-15313,SPCS83 Colorado North zone (US Survey feet),conversion,,,,,2184,Used for large and medium scale topographic mapping and engineering survey.,9802,,,State law defines grid unit as US Survey feet. For equivalent metric Federal definition see code 10531.,National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-15314,SPCS83 Colorado Central zone (US Survey feet),conversion,,,,,2183,Used for large and medium scale topographic mapping and engineering survey.,9802,,,State law defines grid unit as US Survey feet. For equivalent metric Federal definition see code 10532.,National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-15315,SPCS83 Colorado South zone (US Survey feet),conversion,,,,,2185,Used for large and medium scale topographic mapping and engineering survey.,9802,,,State law defines grid unit as US Survey feet. For equivalent metric Federal definition see code 10533.,National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-15316,SPCS83 Connecticut zone (US Survey feet),conversion,,,,,1377,Used for large and medium scale topographic mapping and engineering survey.,9802,,,State law defines grid unit as US Survey feet. For equivalent metric Federal definition see code 10630.,National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-15317,SPCS83 Delaware zone (US Survey feet),conversion,,,,,1378,Used for large and medium scale topographic mapping and engineering survey.,9807,,,State law defines grid unit as US Survey feet. For equivalent metric Federal definition see code 10730.,National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-15318,SPCS83 Florida East zone (US Survey feet),conversion,,,,,2186,Used for large and medium scale topographic mapping and engineering survey.,9807,,,State law defines grid unit as US Survey feet. For equivalent metric Federal definition see code 10931.,National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-15319,SPCS83 Florida West zone (US Survey feet),conversion,,,,,2188,Used for large and medium scale topographic mapping and engineering survey.,9807,,,State law defines grid unit as US Survey feet. For equivalent metric Federal definition see code 10932.,National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-15320,SPCS83 Florida North zone (US Survey feet),conversion,,,,,2187,Used for large and medium scale topographic mapping and engineering survey.,9802,,,State law defines grid unit as US Survey feet. For equivalent metric Federal definition see code 10933.,National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-15321,SPCS83 Georgia East zone (US Survey feet),conversion,,,,,2189,Used for large and medium scale topographic mapping and engineering survey.,9807,,,State law defines grid unit as US Survey feet. For equivalent metric Federal definition see code 11031.,National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-15322,SPCS83 Georgia West zone (US Survey feet),conversion,,,,,2190,Used for large and medium scale topographic mapping and engineering survey.,9807,,,State law defines grid unit as US Survey feet. For equivalent metric Federal definition see code 10031.,National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-15323,SPCS83 Idaho East zone (US Survey feet),conversion,,,,,2192,Used for large and medium scale topographic mapping and engineering survey.,9807,,,State law defines grid unit as US Survey feet. For equivalent metric Federal definition see code 11131.,National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-15324,SPCS83 Idaho Central zone (US Survey feet),conversion,,,,,2191,Used for large and medium scale topographic mapping and engineering survey.,9807,,,State law defines grid unit as US Survey feet. For equivalent metric Federal definition see code 11132.,National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-15325,SPCS83 Idaho West zone (US Survey feet),conversion,,,,,2193,Used for large and medium scale topographic mapping and engineering survey.,9807,,,State law defines grid unit as US Survey feet. For equivalent metric Federal definition see code 11133.,National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-15326,SPCS83 Indiana East zone (US Survey feet),conversion,,,,,2196,Used for large and medium scale topographic mapping and engineering survey.,9807,,,State law defines grid unit as US Survey feet. For equivalent metric Federal definition see code 11331.,National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-15327,SPCS83 Indiana West zone (US Survey feet),conversion,,,,,2197,Used for large and medium scale topographic mapping and engineering survey.,9807,,,State law defines grid unit as US Survey feet. For equivalent metric Federal definition see code 11332.,National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-15328,SPCS83 Kentucky North zone (US Survey feet),conversion,,,,,2202,Used for large and medium scale topographic mapping and engineering survey.,9802,,,State law defines grid unit as US Survey feet. For equivalent metric Federal definition see code 15303.,National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-15329,SPCS83 Kentucky South zone (US Survey feet),conversion,,,,,2203,Used for large and medium scale topographic mapping and engineering survey.,9802,,,State law defines grid unit as US Survey feet. For equivalent metric Federal definition see code 11632.,National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-15330,SPCS83 Maryland zone (US Survey feet),conversion,,,,,1389,Used for large and medium scale topographic mapping and engineering survey.,9802,,,State law defines grid unit as US Survey feet. For equivalent metric Federal definition see code 11930.,National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-15331,SPCS83 Massachusetts Mainland zone (US Survey feet),conversion,,,,,2209,Used for large and medium scale topographic mapping and engineering survey.,9802,,,State law defines grid unit as US Survey feet. For equivalent metric Federal definition see code 12031.,National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-15332,SPCS83 Massachusetts Island zone (US Survey feet),conversion,,,,,2208,Used for large and medium scale topographic mapping and engineering survey.,9802,,,State law defines grid unit as US Survey feet. For equivalent metric Federal definition see code 12032.,National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-15333,SPCS83 Michigan North zone (International feet),conversion,,,,,1723,Used for large and medium scale topographic mapping and engineering survey.,9802,,,State law defines grid unit as International feet (note: not US Survey feet). For equivalent metric Federal definition see code 12141.,National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-15334,SPCS83 Michigan Central zone (International feet),conversion,,,,,1724,Used for large and medium scale topographic mapping and engineering survey.,9802,,,State law defines grid unit as International feet (note: not US Survey feet). For equivalent metric Federal definition see code 12142.,National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-15335,SPCS83 Michigan South zone (International feet),conversion,,,,,1725,Used for large and medium scale topographic mapping and engineering survey.,9802,,,State law defines grid unit as International feet (note: not US Survey feet). For equivalent metric Federal definition see code 12143.,National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-15336,SPCS83 Mississippi East zone (US Survey feet),conversion,,,,,2216,Used for large and medium scale topographic mapping and engineering survey.,9807,,,State law defines grid unit as US Survey feet. For equivalent metric Federal definition see code 12331.,National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-15337,SPCS83 Mississippi West zone (US Survey feet),conversion,,,,,2217,Used for large and medium scale topographic mapping and engineering survey.,9807,,,State law defines grid unit as US Survey feet. For equivalent metric Federal definition see code 12332.,National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-15338,SPCS83 Montana zone (International feet),conversion,,,,,1395,Used for large and medium scale topographic mapping and engineering survey.,9802,,,State law defines grid unit as International feet (note: not US Survey feet). For equivalent metric Federal definition see code 12530.,National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-15339,SPCS83 New Mexico East zone (US Survey feet),conversion,,,,,2228,Used for large and medium scale topographic mapping and engineering survey.,9807,,,State law defines grid unit as US Survey feet. For equivalent metric Federal definition see code 13031.,National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-15340,SPCS83 New Mexico Central zone (US Survey feet),conversion,,,,,2231,Used for large and medium scale topographic mapping and engineering survey.,9807,,,State law defines grid unit as US Survey feet. For equivalent metric Federal definition see code 13032.,National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-15341,SPCS83 New Mexico West zone (US Survey feet),conversion,,,,,2232,Used for large and medium scale topographic mapping and engineering survey.,9807,,,State law defines grid unit as US Survey feet. For equivalent metric Federal definition see code 13033.,National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-15342,SPCS83 New York East zone (US Survey feet),conversion,,,,,2234,Used for large and medium scale topographic mapping and engineering survey.,9807,,,State law defines grid unit as US Survey feet. For equivalent metric Federal definition see code 13131.,National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-15343,SPCS83 New York Central zone (US Survey feet),conversion,,,,,2233,Used for large and medium scale topographic mapping and engineering survey.,9807,,,State law defines grid unit as US Survey feet. For equivalent metric Federal definition see code 13132.,National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-15344,SPCS83 New York West zone (US Survey feet),conversion,,,,,2236,Used for large and medium scale topographic mapping and engineering survey.,9807,,,State law defines grid unit as US Survey feet. For equivalent metric Federal definition see code 13133.,National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-15345,SPCS83 New York Long Island zone (US Survey feet),conversion,,,,,2235,Used for large and medium scale topographic mapping and engineering survey.,9802,,,State law defines grid unit as US Survey feet. For equivalent metric Federal definition see code 13134.,National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-15346,SPCS83 North Carolina zone (US Survey feet),conversion,,,,,1402,Used for large and medium scale topographic mapping and engineering survey.,9802,,,State law defines grid unit as US Survey feet. For equivalent metric Federal definition see code 13230.,National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-15347,SPCS83 North Dakota North zone (International feet),conversion,,,,,2237,Used for large and medium scale topographic mapping and engineering survey.,9802,,,State law defines grid unit as International feet (note: not US Survey feet). For equivalent metric Federal definition see code 13331.,National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-15348,SPCS83 North Dakota South zone (International feet),conversion,,,,,2238,Used for large and medium scale topographic mapping and engineering survey.,9802,,,State law defines grid unit as International feet (note: not US Survey feet). For equivalent metric Federal definition see code 13332.,National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-15349,SPCS83 Oklahoma North zone (US Survey feet),conversion,,,,,2241,Used for large and medium scale topographic mapping and engineering survey.,9802,,,State law defines grid unit as US Survey feet. For equivalent metric Federal definition see code 13531.,National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-15350,SPCS83 Oklahoma South zone (US Survey feet),conversion,,,,,2242,Used for large and medium scale topographic mapping and engineering survey.,9802,,,State law defines grid unit as US Survey feet. For equivalent metric Federal definition see code 13532.,National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-15351,SPCS83 Oregon North zone (International feet),conversion,,,,,2243,Used for large and medium scale topographic mapping and engineering survey.,9802,,,State law defines grid unit as International feet (note: not US Survey feet). For equivalent metric Federal definition see code 13631.,National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-15352,SPCS83 Oregon South zone (International feet),conversion,,,,,2244,Used for large and medium scale topographic mapping and engineering survey.,9802,,,State law defines grid unit as International feet (note: not US Survey feet). For equivalent metric Federal definition see code 13632.,National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-15353,SPCS83 Pennsylvania North zone (US Survey feet),conversion,,,,,2245,Used for large and medium scale topographic mapping and engineering survey.,9802,,,State law defines grid unit as US Survey feet. For equivalent metric Federal definition see code 13731.,National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-15354,SPCS83 Pennsylvania South zone (US Survey feet),conversion,,,,,2246,Used for large and medium scale topographic mapping and engineering survey.,9802,,,State law defines grid unit as US Survey feet. For equivalent metric Federal definition see code 13732.,National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-15355,SPCS83 South Carolina zone (International feet),conversion,,,,,1409,Used for large and medium scale topographic mapping and engineering survey.,9802,,,State law defines grid unit as International feet (note: not US Survey feet). For equivalent metric Federal definition see code 13930.,National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-15356,SPCS83 Tennessee zone (US Survey feet),conversion,,,,,1411,Used for large and medium scale topographic mapping and engineering survey.,9802,,,State law defines grid unit as US Survey feet. For equivalent metric Federal definition see code 14130.,National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-15357,SPCS83 Texas North zone (US Survey feet),conversion,,,,,2253,Used for large and medium scale topographic mapping and engineering survey.,9802,,,State law defines grid unit as US Survey feet. For equivalent metric Federal definition see code 14231.,National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-15358,SPCS83 Texas North Central zone (US Survey feet),conversion,,,,,2254,Used for large and medium scale topographic mapping and engineering survey.,9802,,,State law defines grid unit as US Survey feet. For equivalent metric Federal definition see code 14232.,National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-15359,SPCS83 Texas Central zone (US Survey feet),conversion,,,,,2252,Used for large and medium scale topographic mapping and engineering survey.,9802,,,State law defines grid unit as US Survey feet. For equivalent metric Federal definition see code 14233.,National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-15360,SPCS83 Texas South Central zone (US Survey feet),conversion,,,,,2527,Used for large and medium scale topographic mapping and engineering survey.,9802,,,State law defines grid unit as US Survey feet. For equivalent metric Federal definition see code 14234.,National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-15361,SPCS83 Texas South zone (US Survey feet),conversion,,,,,2528,Used for large and medium scale topographic mapping and engineering survey.,9802,,,State law defines grid unit as US Survey feet. For equivalent metric Federal definition see code 14235.,National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-15362,SPCS83 Utah North zone (International feet),conversion,,,,,2258,Used for large and medium scale topographic mapping and engineering survey.,9802,,,State law defines grid unit as International feet (note: not US Survey feet). For equivalent metric Federal definition see code 14331.,National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-15363,SPCS83 Utah Central zone (International feet),conversion,,,,,2257,Used for large and medium scale topographic mapping and engineering survey.,9802,,,State law defines grid unit as International feet (note: not US Survey feet). For equivalent metric Federal definition see code 14333.,National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-15364,SPCS83 Utah South zone (International feet),conversion,,,,,2259,Used for large and medium scale topographic mapping and engineering survey.,9802,,,State law defines grid unit as International feet (note: not US Survey feet). For equivalent metric Federal definition see code 14334.,National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-15365,SPCS83 Virginia North zone (US Survey feet),conversion,,,,,2260,Used for large and medium scale topographic mapping and engineering survey.,9802,,,State law defines grid unit as US Survey feet. For equivalent metric Federal definition see code 14531.,National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-15366,SPCS83 Virginia South zone (US Survey feet),conversion,,,,,2261,Used for large and medium scale topographic mapping and engineering survey.,9802,,,State law defines grid unit as US Survey feet. For equivalent metric Federal definition see code 14532.,National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-15367,SPCS83 Washington North zone (US Survey feet),conversion,,,,,2273,Used for large and medium scale topographic mapping and engineering survey.,9802,,,State law defines grid unit as US Survey feet. For equivalent metric Federal definition see code 14631.,National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-15368,SPCS83 Washington South zone (US Survey feet),conversion,,,,,2274,Used for large and medium scale topographic mapping and engineering survey.,9802,,,State law defines grid unit as US Survey feet. For equivalent metric Federal definition see code 14632.,National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-15369,SPCS83 Wisconsin North zone (US Survey feet),conversion,,,,,2267,Used for large and medium scale topographic mapping and engineering survey.,9802,,,State law defines grid unit as US Survey feet. For equivalent metric Federal definition see code 14831.,National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-15370,SPCS83 Wisconsin Central zone (US Survey feet),conversion,,,,,2266,Used for large and medium scale topographic mapping and engineering survey.,9802,,,State law defines grid unit as US Survey feet. For equivalent metric Federal definition see code 14832.,National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-15371,SPCS83 Wisconsin South zone (US Survey feet),conversion,,,,,2268,Used for large and medium scale topographic mapping and engineering survey.,9802,,,State law defines grid unit as US Survey feet. For equivalent metric Federal definition see code 14833.,National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-15914,BLM zone 14N (US survey feet),conversion,,,,,2171,US survey foot form of UTM zone 14N,9807,,,"Sometimes locally referred to as ""UTM zone 14"".",Minerals Management Service offshore protraction diagrams.,EPSG,2002-02-12 00:00:00,95.30  96.29  2002.12,1,0
-15915,BLM zone 15N (US survey feet),conversion,,,,,2172,US survey foot form of UTM zone 15N,9807,,,"Sometimes locally referred to as ""UTM zone 15"".",Minerals Management Service offshore protraction diagrams.,EPSG,2002-02-12 00:00:00,95.30  96.29  2002.12,1,0
-15916,BLM zone 16N (US survey feet),conversion,,,,,2173,US survey foot form of UTM zone 16N,9807,,,"Sometimes locally referred to as ""UTM zone 16"".",Minerals Management Service offshore protraction diagrams.,EPSG,2002-02-12 00:00:00,95.30  96.29  2002.12,1,0
-15917,BLM zone 17N (US survey feet),conversion,,,,,2174,US survey foot form of UTM zone 17N,9807,,,"Sometimes locally referred to as ""UTM zone 17"".",Minerals Management Service offshore protraction diagrams.,EPSG,2002-02-12 00:00:00,95.30  96.29  2002.12,1,0
-16000,UTM grid system (northern hemisphere),conversion,,,,,1998,For strict use within zone boundaries,9824,,,Use UTM zone xx N (codes 16001-16060) for use outwith zone boundary or when easting is not prefixed by zone number.,EPSG,EPSG,2001-06-05 00:00:00,,1,0
-16001,UTM zone 1N,conversion,,,,,1873,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16002,UTM zone 2N,conversion,,,,,1875,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16003,UTM zone 3N,conversion,,,,,1877,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16004,UTM zone 4N,conversion,,,,,1879,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16005,UTM zone 5N,conversion,,,,,1881,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16006,UTM zone 6N,conversion,,,,,1883,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16007,UTM zone 7N,conversion,,,,,1885,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16008,UTM zone 8N,conversion,,,,,1887,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16009,UTM zone 9N,conversion,,,,,1889,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16010,UTM zone 10N,conversion,,,,,1891,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16011,UTM zone 11N,conversion,,,,,1893,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16012,UTM zone 12N,conversion,,,,,1895,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16013,UTM zone 13N,conversion,,,,,1897,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16014,UTM zone 14N,conversion,,,,,1899,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16015,UTM zone 15N,conversion,,,,,1901,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16016,UTM zone 16N,conversion,,,,,1903,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16017,UTM zone 17N,conversion,,,,,1905,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16018,UTM zone 18N,conversion,,,,,1907,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16019,UTM zone 19N,conversion,,,,,1909,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16020,UTM zone 20N,conversion,,,,,1911,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16021,UTM zone 21N,conversion,,,,,1913,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16022,UTM zone 22N,conversion,,,,,1915,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16023,UTM zone 23N,conversion,,,,,1917,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16024,UTM zone 24N,conversion,,,,,1919,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16025,UTM zone 25N,conversion,,,,,1921,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16026,UTM zone 26N,conversion,,,,,1923,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16027,UTM zone 27N,conversion,,,,,1925,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16028,UTM zone 28N,conversion,,,,,1927,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16029,UTM zone 29N,conversion,,,,,1929,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16030,UTM zone 30N,conversion,,,,,1931,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16031,UTM zone 31N,conversion,,,,,1933,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16032,UTM zone 32N,conversion,,,,,1935,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16033,UTM zone 33N,conversion,,,,,1937,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16034,UTM zone 34N,conversion,,,,,1939,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16035,UTM zone 35N,conversion,,,,,1941,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16036,UTM zone 36N,conversion,,,,,1943,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16037,UTM zone 37N,conversion,,,,,1945,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16038,UTM zone 38N,conversion,,,,,1947,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16039,UTM zone 39N,conversion,,,,,1949,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16040,UTM zone 40N,conversion,,,,,1951,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16041,UTM zone 41N,conversion,,,,,1953,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16042,UTM zone 42N,conversion,,,,,1955,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16043,UTM zone 43N,conversion,,,,,1957,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16044,UTM zone 44N,conversion,,,,,1959,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16045,UTM zone 45N,conversion,,,,,1961,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16046,UTM zone 46N,conversion,,,,,1963,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16047,UTM zone 47N,conversion,,,,,1965,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16048,UTM zone 48N,conversion,,,,,1967,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16049,UTM zone 49N,conversion,,,,,1969,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16050,UTM zone 50N,conversion,,,,,1971,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16051,UTM zone 51N,conversion,,,,,1973,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16052,UTM zone 52N,conversion,,,,,1975,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16053,UTM zone 53N,conversion,,,,,1977,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16054,UTM zone 54N,conversion,,,,,1979,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16055,UTM zone 55N,conversion,,,,,1981,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16056,UTM zone 56N,conversion,,,,,1983,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16057,UTM zone 57N,conversion,,,,,1985,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16058,UTM zone 58N,conversion,,,,,1987,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16059,UTM zone 59N,conversion,,,,,1989,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16060,UTM zone 60N,conversion,,,,,1991,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16061,Universal Polar Stereographic North,conversion,,,,,1996,Large and medium scale topographic mapping and engineering survey.,9810,,,,,EPSG,2000-03-07 00:00:00,97.18  2000.094,1,0
-16070,3-degree Gauss-Kruger zone 40,conversion,,,,,2628,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,Also found with zone truncated from false easting: see 3-degree Gauss-Kruger cm 120E (code 16170). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-16071,3-degree Gauss-Kruger zone 41,conversion,,,,,2629,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,Also found with zone truncated from false easting: see 3-degree Gauss-Kruger cm 123E (code 16171). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-16072,3-degree Gauss-Kruger zone 42,conversion,,,,,2630,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,Also found with zone truncated from false easting: see 3-degree Gauss-Kruger cm 126E (code 16172). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-16073,3-degree Gauss-Kruger zone 43,conversion,,,,,2631,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,Also found with zone truncated from false easting: see 3-degree Gauss-Kruger cm 129E (code 16173). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-16074,3-degree Gauss-Kruger zone 44,conversion,,,,,2632,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,Also found with zone truncated from false easting: see 3-degree Gauss-Kruger cm 132E (code 16174). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-16075,3-degree Gauss-Kruger zone 45,conversion,,,,,2633,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,Also found with zone truncated from false easting: see 3-degree Gauss-Kruger cm 135E (code 16175). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-16076,3-degree Gauss-Kruger zone 46,conversion,,,,,2634,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,Also found with zone truncated from false easting: see 3-degree Gauss-Kruger cm 138E (code 16176). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-16077,3-degree Gauss-Kruger zone 47,conversion,,,,,2635,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,Also found with zone truncated from false easting: see 3-degree Gauss-Kruger cm 141E (code 16177). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-16078,3-degree Gauss-Kruger zone 48,conversion,,,,,2636,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,Also found with zone truncated from false easting: see 3-degree Gauss-Kruger cm 144E (code 16178). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-16079,3-degree Gauss-Kruger zone 49,conversion,,,,,2637,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,Also found with zone truncated from false easting: see 3-degree Gauss-Kruger cm 147E (code 16179). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-16080,3-degree Gauss-Kruger zone 50,conversion,,,,,2638,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,Also found with zone truncated from false easting: see 3-degree Gauss-Kruger cm 150E (code 16180). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-16081,3-degree Gauss-Kruger zone 51,conversion,,,,,2639,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,Also found with zone truncated from false easting: see 3-degree Gauss-Kruger cm 153E (code 16181). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-16082,3-degree Gauss-Kruger zone 52,conversion,,,,,2640,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,Also found with zone truncated from false easting: see 3-degree Gauss-Kruger cm 156E (code 16182). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-16083,3-degree Gauss-Kruger zone 53,conversion,,,,,2641,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,Also found with zone truncated from false easting: see 3-degree Gauss-Kruger cm 159E (code 16183). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-16084,3-degree Gauss-Kruger zone 54,conversion,,,,,2642,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,Also found with zone truncated from false easting: see 3-degree Gauss-Kruger cm 162E (code 16184). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-16085,3-degree Gauss-Kruger zone 55,conversion,,,,,2643,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,Also found with zone truncated from false easting: see 3-degree Gauss-Kruger cm 165E (code 16185). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-16086,3-degree Gauss-Kruger zone 56,conversion,,,,,2644,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,Also found with zone truncated from false easting: see 3-degree Gauss-Kruger cm 168E (code 16186). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-16087,3-degree Gauss-Kruger zone 57,conversion,,,,,2645,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,Also found with zone truncated from false easting: see 3-degree Gauss-Kruger cm 171E (code 16187). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-16088,3-degree Gauss-Kruger zone 58,conversion,,,,,2646,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,Also found with zone truncated from false easting: see 3-degree Gauss-Kruger cm 174E (code 16188). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-16089,3-degree Gauss-Kruger zone 59,conversion,,,,,2647,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,Also found with zone truncated from false easting: see 3-degree Gauss-Kruger cm 177E (code 16189). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-16090,3-degree Gauss-Kruger zone 60,conversion,,,,,2648,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,Also found with zone truncated from false easting: see 3-degree Gauss-Kruger cm 180 (code 16190). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-16091,3-degree Gauss-Kruger zone 61,conversion,,,,,2649,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,Also found with zone truncated from false easting: see 3-degree Gauss-Kruger cm 177W (code 16191). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-16092,3-degree Gauss-Kruger zone 62,conversion,,,,,2650,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,Also found with zone truncated from false easting: see 3-degree Gauss-Kruger cm 174W (code 16192). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-16093,3-degree Gauss-Kruger zone 63,conversion,,,,,2651,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,Also found with zone truncated from false easting: see 3-degree Gauss-Kruger cm 171W (code 16193). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-16094,3-degree Gauss-Kruger zone 64,conversion,,,,,2652,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,Also found with zone truncated from false easting: see 3-degree Gauss-Kruger cm 168W (code 16194). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-16100,UTM grid system (southern hemisphere),conversion,,,,,1999,For strict use within zone boundaries,9824,,,Use UTM zone xx S (codes 16101-16160) for use outwith zone boundary or when easting is not prefixed by zone number.,EPSG,EPSG,2001-06-05 00:00:00,,1,0
-16101,UTM zone 1S,conversion,,,,,1874,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16102,UTM zone 2S,conversion,,,,,1876,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16103,UTM zone 3S,conversion,,,,,1878,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16104,UTM zone 4S,conversion,,,,,1880,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16105,UTM zone 5S,conversion,,,,,1882,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16106,UTM zone 6S,conversion,,,,,1884,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16107,UTM zone 7S,conversion,,,,,1886,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16108,UTM zone 8S,conversion,,,,,1888,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16109,UTM zone 9S,conversion,,,,,1890,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16110,UTM zone 10S,conversion,,,,,1892,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16111,UTM zone 11S,conversion,,,,,1894,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16112,UTM zone 12S,conversion,,,,,1896,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16113,UTM zone 13S,conversion,,,,,1898,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16114,UTM zone 14S,conversion,,,,,1900,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16115,UTM zone 15S,conversion,,,,,1902,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16116,UTM zone 16S,conversion,,,,,1904,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16117,UTM zone 17S,conversion,,,,,1906,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16118,UTM zone 18S,conversion,,,,,1908,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16119,UTM zone 19S,conversion,,,,,1910,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16120,UTM zone 20S,conversion,,,,,1912,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16121,UTM zone 21S,conversion,,,,,1914,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16122,UTM zone 22S,conversion,,,,,1916,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16123,UTM zone 23S,conversion,,,,,1918,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16124,UTM zone 24S,conversion,,,,,1920,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16125,UTM zone 25S,conversion,,,,,1922,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16126,UTM zone 26S,conversion,,,,,1924,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16127,UTM zone 27S,conversion,,,,,1926,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16128,UTM zone 28S,conversion,,,,,1928,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16129,UTM zone 29S,conversion,,,,,1930,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16130,UTM zone 30S,conversion,,,,,1932,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16131,UTM zone 31S,conversion,,,,,1934,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16132,UTM zone 32S,conversion,,,,,1936,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16133,UTM zone 33S,conversion,,,,,1938,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16134,UTM zone 34S,conversion,,,,,1940,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16135,UTM zone 35S,conversion,,,,,1942,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16136,UTM zone 36S,conversion,,,,,1944,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16137,UTM zone 37S,conversion,,,,,1946,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16138,UTM zone 38S,conversion,,,,,1948,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16139,UTM zone 39S,conversion,,,,,1950,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16140,UTM zone 40S,conversion,,,,,1952,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16141,UTM zone 41S,conversion,,,,,1954,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16142,UTM zone 42S,conversion,,,,,1956,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16143,UTM zone 43S,conversion,,,,,1958,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16144,UTM zone 44S,conversion,,,,,1960,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16145,UTM zone 45S,conversion,,,,,1962,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16146,UTM zone 46S,conversion,,,,,1964,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16147,UTM zone 47S,conversion,,,,,1966,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16148,UTM zone 48S,conversion,,,,,1968,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16149,UTM zone 49S,conversion,,,,,1970,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16150,UTM zone 50S,conversion,,,,,1972,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16151,UTM zone 51S,conversion,,,,,1974,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16152,UTM zone 52S,conversion,,,,,1976,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16153,UTM zone 53S,conversion,,,,,1978,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16154,UTM zone 54S,conversion,,,,,1980,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16155,UTM zone 55S,conversion,,,,,1982,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16156,UTM zone 56S,conversion,,,,,1984,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16157,UTM zone 57S,conversion,,,,,1986,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16158,UTM zone 58S,conversion,,,,,1988,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16159,UTM zone 59S,conversion,,,,,1990,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16160,UTM zone 60S,conversion,,,,,1992,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.28,1,0
-16161,Universal Polar Stereographic South,conversion,,,,,1997,Large and medium scale topographic mapping and engineering survey.,9810,,,,,EPSG,2000-03-07 00:00:00,97.18  2000.094,1,0
-16170,3-degree Gauss-Kruger CM 120E,conversion,,,,,2628,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,3-degree Gauss-Kruger zone 40N (code 16070) without zone prefix to false easting value. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16171,3-degree Gauss-Kruger CM 123E,conversion,,,,,2629,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,3-degree Gauss-Kruger zone 41N (code 16071) without zone prefix to false easting value. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16172,3-degree Gauss-Kruger CM 126E,conversion,,,,,2630,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,3-degree Gauss-Kruger zone 42N (code 16072) without zone prefix to false easting value. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16173,3-degree Gauss-Kruger CM 129E,conversion,,,,,2631,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,3-degree Gauss-Kruger zone 43N (code 16073) without zone prefix to false easting value. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16174,3-degree Gauss-Kruger CM 132E,conversion,,,,,2632,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,3-degree Gauss-Kruger zone 44N (code 16074) without zone prefix to false easting value. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16175,3-degree Gauss-Kruger CM 135E,conversion,,,,,2633,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,3-degree Gauss-Kruger zone 45N (code 16075) without zone prefix to false easting value. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16176,3-degree Gauss-Kruger CM 138E,conversion,,,,,2634,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,3-degree Gauss-Kruger zone 46N (code 16076) without zone prefix to false easting value. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16177,3-degree Gauss-Kruger CM 141E,conversion,,,,,2635,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,3-degree Gauss-Kruger zone 47N (code 16077) without zone prefix to false easting value. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16178,3-degree Gauss-Kruger CM 144E,conversion,,,,,2636,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,3-degree Gauss-Kruger zone 48N (code 16078) without zone prefix to false easting value. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16179,3-degree Gauss-Kruger CM 147E,conversion,,,,,2637,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,3-degree Gauss-Kruger zone 49N (code 16079) without zone prefix to false easting value. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16180,3-degree Gauss-Kruger CM 150E,conversion,,,,,2638,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,3-degree Gauss-Kruger zone 50N (code 16080) without zone prefix to false easting value. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16181,3-degree Gauss-Kruger CM 153E,conversion,,,,,2639,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,3-degree Gauss-Kruger zone 51N (code 16081) without zone prefix to false easting value. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16182,3-degree Gauss-Kruger CM 156E,conversion,,,,,2640,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,3-degree Gauss-Kruger zone 52N (code 16082) without zone prefix to false easting value. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16183,3-degree Gauss-Kruger CM 159E,conversion,,,,,2641,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,3-degree Gauss-Kruger zone 53N (code 16083) without zone prefix to false easting value. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16184,3-degree Gauss-Kruger CM 162E,conversion,,,,,2642,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,3-degree Gauss-Kruger zone 54N (code 16084) without zone prefix to false easting value. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16185,3-degree Gauss-Kruger CM 165E,conversion,,,,,2643,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,3-degree Gauss-Kruger zone 55N (code 16085) without zone prefix to false easting value. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16186,3-degree Gauss-Kruger CM 168E,conversion,,,,,2644,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,3-degree Gauss-Kruger zone 56N (code 16086) without zone prefix to false easting value. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16187,3-degree Gauss-Kruger CM 171E,conversion,,,,,2645,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,3-degree Gauss-Kruger zone 57N (code 16087) without zone prefix to false easting value. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16188,3-degree Gauss-Kruger CM 174E,conversion,,,,,2646,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,3-degree Gauss-Kruger zone 58N (code 16088) without zone prefix to false easting value. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16189,3-degree Gauss-Kruger CM 177E,conversion,,,,,2647,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,3-degree Gauss-Kruger zone 59N (code 16089) without zone prefix to false easting value. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16190,3-degree Gauss-Kruger CM 180,conversion,,,,,2648,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,3-degree Gauss-Kruger zone 60N (code 16090) without zone prefix to false easting value. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16191,3-degree Gauss-Kruger CM 177W,conversion,,,,,2649,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,3-degree Gauss-Kruger zone 61N (code 16091) without zone prefix to false easting value. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16192,3-degree Gauss-Kruger CM 174W,conversion,,,,,2650,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,3-degree Gauss-Kruger zone 62N (code 16092) without zone prefix to false easting value. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16193,3-degree Gauss-Kruger CM 171W,conversion,,,,,2651,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,3-degree Gauss-Kruger zone 63N (code 16093) without zone prefix to false easting value. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16194,3-degree Gauss-Kruger CM 168W,conversion,,,,,2652,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,3-degree Gauss-Kruger zone 64N (code 16094) without zone prefix to false easting value. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16201,6-degree Gauss-Kruger zone 1,conversion,,,,,1933,Medium scale topographic mapping.,9807,,,Also found with zone truncated from false easting: see 6-degree Gauss-Kruger cm 3E (code 16301). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16202,6-degree Gauss-Kruger zone 2,conversion,,,,,2741,Medium scale topographic mapping.,9807,,,Also found with zone truncated from false easting: see 6-degree Gauss-Kruger cm 9E (code 16302). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-16203,6-degree Gauss-Kruger zone 3,conversion,,,,,2742,Medium scale topographic mapping.,9807,,,Also found with zone truncated from false easting: see 6-degree Gauss-Kruger cm 15E (code 16303). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-16204,6-degree Gauss-Kruger zone 4,conversion,,,,,2743,Medium scale topographic mapping.,9807,,,Also found with zone truncated from false easting: see 6-degree Gauss-Kruger cm 21E (code 16304). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,95.28 2002.36,1,0
-16205,6-degree Gauss-Kruger zone 5,conversion,,,,,2744,Medium scale topographic mapping.,9807,,,Also found with zone truncated from false easting: see 6-degree Gauss-Kruger cm 27E (code 16305). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,95.28 2002.36,1,0
-16206,6-degree Gauss-Kruger zone 6,conversion,,,,,2745,Medium scale topographic mapping.,9807,,,Also found with zone truncated from false easting: see 6-degree Gauss-Kruger cm 33E (code 16306). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,95.28 2002.36,1,0
-16207,6-degree Gauss-Kruger zone 7,conversion,,,,,2746,Medium scale topographic mapping.,9807,,,Also found with zone truncated from false easting: see 6-degree Gauss-Kruger cm 39E (code 16307). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,95.28 2002.36,1,0
-16208,6-degree Gauss-Kruger zone 8,conversion,,,,,1947,Medium scale topographic mapping.,9807,,,Also found with zone truncated from false easting: see 6-degree Gauss-Kruger cm 45E (code 16308). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,95.28 2002.36,1,0
-16209,6-degree Gauss-Kruger zone 9,conversion,,,,,1949,Medium scale topographic mapping.,9807,,,Also found with zone truncated from false easting: see 6-degree Gauss-Kruger cm 51E (code 16309). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,95.28 2002.36,1,0
-16210,6-degree Gauss-Kruger zone 10,conversion,,,,,1951,Medium scale topographic mapping.,9807,,,Also found with zone truncated from false easting: see 6-degree Gauss-Kruger cm 57E (code 16310). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,95.28 2002.36,1,0
-16211,6-degree Gauss-Kruger zone 11,conversion,,,,,1953,Medium scale topographic mapping.,9807,,,Also found with zone truncated from false easting: see 6-degree Gauss-Kruger cm 63E (code 16311). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,95.28 2002.36,1,0
-16212,6-degree Gauss-Kruger zone 12,conversion,,,,,1955,Medium scale topographic mapping.,9807,,,Also found with zone truncated from false easting: see 6-degree Gauss-Kruger cm 69E (code 16312). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,95.28 2002.36,1,0
-16213,6-degree Gauss-Kruger zone 13,conversion,,,,,1957,Medium scale topographic mapping.,9807,,,Also found with zone truncated from false easting: see 6-degree Gauss-Kruger cm 75E (code 16313). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,95.28 2002.36,1,0
-16214,6-degree Gauss-Kruger zone 14,conversion,,,,,1959,Medium scale topographic mapping.,9807,,,Also found with zone truncated from false easting: see 6-degree Gauss-Kruger cm 81E (code 16314). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,95.28 2002.36,1,0
-16215,6-degree Gauss-Kruger zone 15,conversion,,,,,1961,Medium scale topographic mapping.,9807,,,Also found with zone truncated from false easting: see 6-degree Gauss-Kruger cm 87E (code 16315). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,95.28 2002.36,1,0
-16216,6-degree Gauss-Kruger zone 16,conversion,,,,,1963,Medium scale topographic mapping.,9807,,,Also found with zone truncated from false easting: see 6-degree Gauss-Kruger cm 93E (code 16316). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,95.28 2002.36,1,0
-16217,6-degree Gauss-Kruger zone 17,conversion,,,,,1965,Medium scale topographic mapping.,9807,,,Also found with zone truncated from false easting: see 6-degree Gauss-Kruger cm 99E (code 16317). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,95.28 2002.36,1,0
-16218,6-degree Gauss-Kruger zone 18,conversion,,,,,1967,Medium scale topographic mapping.,9807,,,Also found with zone truncated from false easting: see 6-degree Gauss-Kruger cm 105E (code 16318). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,95.28 2002.36,1,0
-16219,6-degree Gauss-Kruger zone 19,conversion,,,,,1969,Medium scale topographic mapping.,9807,,,Also found with zone truncated from false easting: see 6-degree Gauss-Kruger cm 111E (code 16319). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,95.28 2002.36,1,0
-16220,6-degree Gauss-Kruger zone 20,conversion,,,,,1971,Medium scale topographic mapping.,9807,,,Also found with zone truncated from false easting: see 6-degree Gauss-Kruger cm 117E (code 16320). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,95.28 2002.36,1,0
-16221,6-degree Gauss-Kruger zone 21,conversion,,,,,1973,Medium scale topographic mapping.,9807,,,Also found with zone truncated from false easting: see 6-degree Gauss-Kruger cm 123E (code 16321). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,95.28 2002.36,1,0
-16222,6-degree Gauss-Kruger zone 22,conversion,,,,,1975,Medium scale topographic mapping.,9807,,,Also found with zone truncated from false easting: see 6-degree Gauss-Kruger cm 129E (code 16322). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,95.28 2002.36,1,0
-16223,6-degree Gauss-Kruger zone 23,conversion,,,,,1977,Medium scale topographic mapping.,9807,,,Also found with zone truncated from false easting: see 6-degree Gauss-Kruger cm 135E (code 16323). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,95.28 2002.36,1,0
-16224,6-degree Gauss-Kruger zone 24,conversion,,,,,1979,Medium scale topographic mapping.,9807,,,Also found with zone truncated from false easting: see 6-degree Gauss-Kruger cm 141E (code 16324). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,95.28 2002.36,1,0
-16225,6-degree Gauss-Kruger zone 25,conversion,,,,,1981,Medium scale topographic mapping.,9807,,,Also found with zone truncated from false easting: see 6-degree Gauss-Kruger cm 147E (code 16325). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,95.28 2002.36,1,0
-16226,6-degree Gauss-Kruger zone 26,conversion,,,,,1983,Medium scale topographic mapping.,9807,,,Also found with zone truncated from false easting: see 6-degree Gauss-Kruger cm 153E (code 16326). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,95.28 2002.36,1,0
-16227,6-degree Gauss-Kruger zone 27,conversion,,,,,1985,Medium scale topographic mapping.,9807,,,Also found with zone truncated from false easting: see 6-degree Gauss-Kruger cm 159E (code 16327). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,95.28 2002.36,1,0
-16228,6-degree Gauss-Kruger zone 28,conversion,,,,,1987,Medium scale topographic mapping.,9807,,,Also found with zone truncated from false easting: see 6-degree Gauss-Kruger cm 165E (code 16328). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,95.28 2002.36,1,0
-16229,6-degree Gauss-Kruger zone 29,conversion,,,,,1989,Medium scale topographic mapping.,9807,,,Also found with zone truncated from false easting: see 6-degree Gauss-Kruger cm 171E (code 16329). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,95.28 2002.36,1,0
-16230,6-degree Gauss-Kruger zone 30,conversion,,,,,1991,Medium scale topographic mapping.,9807,,,Also found with zone truncated from false easting: see 6-degree Gauss-Kruger cm 177E (code 16330). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,95.28 2002.36,1,0
-16231,6-degree Gauss-Kruger zone 31,conversion,,,,,1873,Medium scale topographic mapping.,9807,,,Also found with zone truncated from false easting: see 6-degree Gauss-Kruger cm 177W (code 16331). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,95.28 2002.36,1,0
-16232,6-degree Gauss-Kruger zone 32,conversion,,,,,1875,Medium scale topographic mapping.,9807,,,Also found with zone truncated from false easting: see 6-degree Gauss-Kruger cm 171W (code 16332). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,95.28 2002.36,1,0
-16233,6-degree Gauss-Kruger zone 33,conversion,,,,,1877,Medium scale topographic mapping.,9807,,,Also found with zone truncated from false easting: see 6-degree Gauss-Kruger cm 165W (code 16333). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16234,6-degree Gauss-Kruger zone 34,conversion,,,,,1879,Medium scale topographic mapping.,9807,,,Also found with zone truncated from false easting: see 6-degree Gauss-Kruger cm 159W (code 16334). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16235,6-degree Gauss-Kruger zone 35,conversion,,,,,1881,Medium scale topographic mapping.,9807,,,Also found with zone truncated from false easting: see 6-degree Gauss-Kruger cm 153W (code 16335). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16236,6-degree Gauss-Kruger zone 36,conversion,,,,,1883,Medium scale topographic mapping.,9807,,,Also found with zone truncated from false easting: see 6-degree Gauss-Kruger cm 147W (code 16336). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16237,6-degree Gauss-Kruger zone 37,conversion,,,,,1885,Medium scale topographic mapping.,9807,,,Also found with zone truncated from false easting: see 6-degree Gauss-Kruger cm 141W (code 16337). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16238,6-degree Gauss-Kruger zone 38,conversion,,,,,1887,Medium scale topographic mapping.,9807,,,Also found with zone truncated from false easting: see 6-degree Gauss-Kruger cm 135W (code 16338). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16239,6-degree Gauss-Kruger zone 39,conversion,,,,,1889,Medium scale topographic mapping.,9807,,,Also found with zone truncated from false easting: see 6-degree Gauss-Kruger cm 129W (code 16339). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16240,6-degree Gauss-Kruger zone 40,conversion,,,,,1891,Medium scale topographic mapping.,9807,,,Also found with zone truncated from false easting: see 6-degree Gauss-Kruger cm 123W (code 16340). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16241,6-degree Gauss-Kruger zone 41,conversion,,,,,1893,Medium scale topographic mapping.,9807,,,Also found with zone truncated from false easting: see 6-degree Gauss-Kruger cm 117W (code 16341). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16242,6-degree Gauss-Kruger zone 42,conversion,,,,,1895,Medium scale topographic mapping.,9807,,,Also found with zone truncated from false easting: see 6-degree Gauss-Kruger cm 111W (code 16342). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16243,6-degree Gauss-Kruger zone 43,conversion,,,,,1897,Medium scale topographic mapping.,9807,,,Also found with zone truncated from false easting: see 6-degree Gauss-Kruger cm 105W (code 16343). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16244,6-degree Gauss-Kruger zone 44,conversion,,,,,1899,Medium scale topographic mapping.,9807,,,Also found with zone truncated from false easting: see 6-degree Gauss-Kruger cm 99W (code 16344). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16245,6-degree Gauss-Kruger zone 45,conversion,,,,,1901,Medium scale topographic mapping.,9807,,,Also found with zone truncated from false easting: see 6-degree Gauss-Kruger cm 93W (code 16345). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16246,6-degree Gauss-Kruger zone 46,conversion,,,,,1903,Medium scale topographic mapping.,9807,,,Also found with zone truncated from false easting: see 6-degree Gauss-Kruger cm 87W (code 16346). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16247,6-degree Gauss-Kruger zone 47,conversion,,,,,2732,Medium scale topographic mapping.,9807,,,Also found with zone truncated from false easting: see 6-degree Gauss-Kruger cm 81W (code 16347). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16248,6-degree Gauss-Kruger zone 48,conversion,,,,,2733,Medium scale topographic mapping.,9807,,,Also found with zone truncated from false easting: see 6-degree Gauss-Kruger cm 75W (code 16348). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16249,6-degree Gauss-Kruger zone 49,conversion,,,,,2734,Medium scale topographic mapping.,9807,,,Also found with zone truncated from false easting: see 6-degree Gauss-Kruger cm 69W (code 16349). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16250,6-degree Gauss-Kruger zone 50,conversion,,,,,2735,Medium scale topographic mapping.,9807,,,Also found with zone truncated from false easting: see 6-degree Gauss-Kruger cm 63W (code 16350). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16251,6-degree Gauss-Kruger zone 51,conversion,,,,,2736,Medium scale topographic mapping.,9807,,,Also found with zone truncated from false easting: see 6-degree Gauss-Kruger cm 57W (code 16351). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16252,6-degree Gauss-Kruger zone 52,conversion,,,,,2737,Medium scale topographic mapping.,9807,,,Also found with zone truncated from false easting: see 6-degree Gauss-Kruger cm 51W (code 16352). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16253,6-degree Gauss-Kruger zone 53,conversion,,,,,2738,Medium scale topographic mapping.,9807,,,Also found with zone truncated from false easting: see 6-degree Gauss-Kruger cm 45W (code 16353). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16254,6-degree Gauss-Kruger zone 54,conversion,,,,,2739,Medium scale topographic mapping.,9807,,,Also found with zone truncated from false easting: see 6-degree Gauss-Kruger cm 39W (code 16354). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16255,6-degree Gauss-Kruger zone 55,conversion,,,,,1921,Medium scale topographic mapping.,9807,,,Also found with zone truncated from false easting: see 6-degree Gauss-Kruger cm 33W (code 16355). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16256,6-degree Gauss-Kruger zone 56,conversion,,,,,1923,Medium scale topographic mapping.,9807,,,Also found with zone truncated from false easting: see 6-degree Gauss-Kruger cm 27W (code 16356). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16257,6-degree Gauss-Kruger zone 57,conversion,,,,,1925,Medium scale topographic mapping.,9807,,,Also found with zone truncated from false easting: see 6-degree Gauss-Kruger cm 21W (code 16357). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16258,6-degree Gauss-Kruger zone 58,conversion,,,,,1927,Medium scale topographic mapping.,9807,,,Also found with zone truncated from false easting: see 6-degree Gauss-Kruger cm 15W (code 16358). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16259,6-degree Gauss-Kruger zone 59,conversion,,,,,1929,Medium scale topographic mapping.,9807,,,Also found with zone truncated from false easting: see 6-degree Gauss-Kruger cm 9W (code 16359). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16260,6-degree Gauss-Kruger zone 60,conversion,,,,,1931,Medium scale topographic mapping.,9807,,,Also found with zone truncated from false easting: see 6-degree Gauss-Kruger cm 3W (code 16360). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16261,3-degree Gauss-Kruger zone 1,conversion,,,,,2299,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,Also found with zone truncated from false easting: see 3-degree Gauss-Kruger cm 3E (code 16361). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-16262,3-degree Gauss-Kruger zone 2,conversion,,,,,2300,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,Also found with zone truncated from false easting: see 3-degree Gauss-Kruger cm 6E (code 16362). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-16263,3-degree Gauss-Kruger zone 3,conversion,,,,,2301,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,Also found with zone truncated from false easting: see 3-degree Gauss-Kruger cm 9E (code 16363). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-16264,3-degree Gauss-Kruger zone 4,conversion,,,,,2302,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,Also found with zone truncated from false easting: see 3-degree Gauss-Kruger cm 12E (code 16364). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-16265,3-degree Gauss-Kruger zone 5,conversion,,,,,2303,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,Also found with zone truncated from false easting: see 3-degree Gauss-Kruger cm 15E (code 16365). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-16266,3-degree Gauss-Kruger zone 6,conversion,,,,,2304,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,Also found with zone truncated from false easting: see 3-degree Gauss-Kruger cm 18E (code 16366). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-16267,3-degree Gauss-Kruger zone 7,conversion,,,,,2305,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,Also found with zone truncated from false easting: see 3-degree Gauss-Kruger cm 21E (code 16367). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-16268,3-degree Gauss-Kruger zone 8,conversion,,,,,2306,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,Also found with zone truncated from false easting: see 3-degree Gauss-Kruger cm 24E (code 16368). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-16269,3-degree Gauss-Kruger zone 9,conversion,,,,,2534,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,Also found with zone truncated from false easting: see 3-degree Gauss-Kruger cm 27E (code 16369). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-16270,3-degree Gauss-Kruger zone 10,conversion,,,,,2535,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,Also found with zone truncated from false easting: see 3-degree Gauss-Kruger cm 30E (code 16370). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-16271,3-degree Gauss-Kruger zone 11,conversion,,,,,2536,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,Also found with zone truncated from false easting: see 3-degree Gauss-Kruger cm 33E (code 16371). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-16272,3-degree Gauss-Kruger zone 12,conversion,,,,,2537,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,Also found with zone truncated from false easting: see 3-degree Gauss-Kruger cm 36E (code 16372). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-16273,3-degree Gauss-Kruger zone 13,conversion,,,,,2538,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,Also found with zone truncated from false easting: see 3-degree Gauss-Kruger cm 39E (code 16373). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-16274,3-degree Gauss-Kruger zone 14,conversion,,,,,2539,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,Also found with zone truncated from false easting: see 3-degree Gauss-Kruger cm 42E (code 16374). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-16275,3-degree Gauss-Kruger zone 15,conversion,,,,,2540,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,Also found with zone truncated from false easting: see 3-degree Gauss-Kruger cm 45E (code 16375). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-16276,3-degree Gauss-Kruger zone 16,conversion,,,,,2604,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,Also found with zone truncated from false easting: see 3-degree Gauss-Kruger cm 48E (code 16376). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-16277,3-degree Gauss-Kruger zone 17,conversion,,,,,2605,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,Also found with zone truncated from false easting: see 3-degree Gauss-Kruger cm 51E (code 16377). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-16278,3-degree Gauss-Kruger zone 18,conversion,,,,,2606,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,Also found with zone truncated from false easting: see 3-degree Gauss-Kruger cm 54E (code 16378). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-16279,3-degree Gauss-Kruger zone 19,conversion,,,,,2607,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,Also found with zone truncated from false easting: see 3-degree Gauss-Kruger cm 57E (code 16379). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-16280,3-degree Gauss-Kruger zone 20,conversion,,,,,2608,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,Also found with zone truncated from false easting: see 3-degree Gauss-Kruger cm 60E (code 16380). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-16281,3-degree Gauss-Kruger zone 21,conversion,,,,,2609,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,Also found with zone truncated from false easting: see 3-degree Gauss-Kruger cm 63E (code 16381). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-16282,3-degree Gauss-Kruger zone 22,conversion,,,,,2610,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,Also found with zone truncated from false easting: see 3-degree Gauss-Kruger cm 66E (code 16382). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-16283,3-degree Gauss-Kruger zone 23,conversion,,,,,2611,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,Also found with zone truncated from false easting: see 3-degree Gauss-Kruger cm 69E (code 16383). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-16284,3-degree Gauss-Kruger zone 24,conversion,,,,,2612,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,Also found with zone truncated from false easting: see 3-degree Gauss-Kruger cm 72E (code 16384). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-16285,3-degree Gauss-Kruger zone 25,conversion,,,,,2613,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,Also found with zone truncated from false easting: see 3-degree Gauss-Kruger cm 75E (code 16385). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-16286,3-degree Gauss-Kruger zone 26,conversion,,,,,2614,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,Also found with zone truncated from false easting: see 3-degree Gauss-Kruger cm 78E (code 16386). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-16287,3-degree Gauss-Kruger zone 27,conversion,,,,,2615,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,Also found with zone truncated from false easting: see 3-degree Gauss-Kruger cm 81E (code 16387). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-16288,3-degree Gauss-Kruger zone 28,conversion,,,,,2616,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,Also found with zone truncated from false easting: see 3-degree Gauss-Kruger cm 84E (code 16388). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-16289,3-degree Gauss-Kruger zone 29,conversion,,,,,2617,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,Also found with zone truncated from false easting: see 3-degree Gauss-Kruger cm 87E (code 16389). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-16290,3-degree Gauss-Kruger zone 30,conversion,,,,,2618,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,Also found with zone truncated from false easting: see 3-degree Gauss-Kruger cm 90E (code 16390). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-16291,3-degree Gauss-Kruger zone 31,conversion,,,,,2619,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,Also found with zone truncated from false easting: see 3-degree Gauss-Kruger cm 93E (code 16391). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-16292,3-degree Gauss-Kruger zone 32,conversion,,,,,2620,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,Also found with zone truncated from false easting: see 3-degree Gauss-Kruger cm 96E (code 16392). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-16293,3-degree Gauss-Kruger zone 33,conversion,,,,,2621,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,Also found with zone truncated from false easting: see 3-degree Gauss-Kruger cm 99E (code 16393). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-16294,3-degree Gauss-Kruger zone 34,conversion,,,,,2622,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,Also found with zone truncated from false easting: see 3-degree Gauss-Kruger cm 102E (code 16394). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-16295,3-degree Gauss-Kruger zone 35,conversion,,,,,2623,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,Also found with zone truncated from false easting: see 3-degree Gauss-Kruger cm 105E (code 16395). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-16296,3-degree Gauss-Kruger zone 36,conversion,,,,,2624,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,Also found with zone truncated from false easting: see 3-degree Gauss-Kruger cm 108E (code 16396). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-16297,3-degree Gauss-Kruger zone 37,conversion,,,,,2625,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,Also found with zone truncated from false easting: see 3-degree Gauss-Kruger cm 111E (code 16397). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-16298,3-degree Gauss-Kruger zone 38,conversion,,,,,2626,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,Also found with zone truncated from false easting: see 3-degree Gauss-Kruger cm 114E (code 16398). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-16299,3-degree Gauss-Kruger zone 39,conversion,,,,,2627,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,Also found with zone truncated from false easting: see 3-degree Gauss-Kruger cm 117E (code 16399). Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-16301,6-degree Gauss-Kruger CM 3E,conversion,,,,,1933,Medium scale topographic mapping.,9807,,,6-degree Gauss-Kruger zone 1N (code 16201) without zone prefix to FE. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16302,6-degree Gauss-Kruger CM 9E,conversion,,,,,1935,Medium scale topographic mapping.,9807,,,6-degree Gauss-Kruger zone 2N (code 16202) without zone prefix to FE. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-16303,6-degree Gauss-Kruger CM 15E,conversion,,,,,1937,Medium scale topographic mapping.,9807,,,6-degree Gauss-Kruger zone 3N (code 16203) without zone prefix to FE. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-16304,6-degree Gauss-Kruger CM 21E,conversion,,,,,1939,Medium scale topographic mapping.,9807,,,6-degree Gauss-Kruger zone 4N (code 16204) without zone prefix to FE. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,95.28 2002.36,1,0
-16305,6-degree Gauss-Kruger CM 27E,conversion,,,,,1941,Medium scale topographic mapping.,9807,,,6-degree Gauss-Kruger zone 5N (code 16205) without zone prefix to FE. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,95.28 2002.36,1,0
-16306,6-degree Gauss-Kruger CM 33E,conversion,,,,,1943,Medium scale topographic mapping.,9807,,,6-degree Gauss-Kruger zone 6N (code 16206) without zone prefix to FE. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,95.28 2002.36,1,0
-16307,6-degree Gauss-Kruger CM 39E,conversion,,,,,1945,Medium scale topographic mapping.,9807,,,6-degree Gauss-Kruger zone 7N (code 16207) without zone prefix to FE. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,95.28 2002.36,1,0
-16308,6-degree Gauss-Kruger CM 45E,conversion,,,,,1947,Medium scale topographic mapping.,9807,,,6-degree Gauss-Kruger zone 8N (code 16208) without zone prefix to FE. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,95.28 2002.36,1,0
-16309,6-degree Gauss-Kruger CM 51E,conversion,,,,,1949,Medium scale topographic mapping.,9807,,,6-degree Gauss-Kruger zone 9N (code 16209) without zone prefix to FE. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,95.28 2002.36,1,0
-16310,6-degree Gauss-Kruger CM 57E,conversion,,,,,1951,Medium scale topographic mapping.,9807,,,6-degree Gauss-Kruger zone 10N (code 16210) without zone prefix to FE. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,95.28 2002.36,1,0
-16311,6-degree Gauss-Kruger CM 63E,conversion,,,,,1953,Medium scale topographic mapping.,9807,,,6-degree Gauss-Kruger zone 11N (code 16211) without zone prefix to FE. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,95.28 2002.36,1,0
-16312,6-degree Gauss-Kruger CM 69E,conversion,,,,,1955,Medium scale topographic mapping.,9807,,,6-degree Gauss-Kruger zone 12N (code 16212) without zone prefix to FE. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,95.28 2002.36,1,0
-16313,6-degree Gauss-Kruger CM 75E,conversion,,,,,1957,Medium scale topographic mapping.,9807,,,6-degree Gauss-Kruger zone 13N (code 16213) without zone prefix to FE. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,95.28 2002.36,1,0
-16314,6-degree Gauss-Kruger CM 81E,conversion,,,,,1959,Medium scale topographic mapping.,9807,,,6-degree Gauss-Kruger zone 14N (code 16214) without zone prefix to FE. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,95.28 2002.36,1,0
-16315,6-degree Gauss-Kruger CM 87E,conversion,,,,,1961,Medium scale topographic mapping.,9807,,,6-degree Gauss-Kruger zone 15N (code 16215) without zone prefix to FE. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,95.28 2002.36,1,0
-16316,6-degree Gauss-Kruger CM 93E,conversion,,,,,1963,Medium scale topographic mapping.,9807,,,6-degree Gauss-Kruger zone 16N (code 16216) without zone prefix to FE. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,95.28 2002.36,1,0
-16317,6-degree Gauss-Kruger CM 99E,conversion,,,,,1965,Medium scale topographic mapping.,9807,,,6-degree Gauss-Kruger zone 17N (code 16217) without zone prefix to FE. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,95.28 2002.36,1,0
-16318,6-degree Gauss-Kruger CM 105E,conversion,,,,,1967,Medium scale topographic mapping.,9807,,,6-degree Gauss-Kruger zone 18N (code 16218) without zone prefix to FE. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,95.28 2002.36,1,0
-16319,6-degree Gauss-Kruger CM 111E,conversion,,,,,1969,Medium scale topographic mapping.,9807,,,6-degree Gauss-Kruger zone 19N (code 16219) without zone prefix to FE. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,95.28 2002.36,1,0
-16320,6-degree Gauss-Kruger CM 117E,conversion,,,,,1971,Medium scale topographic mapping.,9807,,,6-degree Gauss-Kruger zone 20N (code 16220) without zone prefix to FE. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,95.28 2002.36,1,0
-16321,6-degree Gauss-Kruger CM 123E,conversion,,,,,1973,Medium scale topographic mapping.,9807,,,6-degree Gauss-Kruger zone 21N (code 16221) without zone prefix to FE. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,95.28 2002.36,1,0
-16322,6-degree Gauss-Kruger CM 129E,conversion,,,,,1975,Medium scale topographic mapping.,9807,,,6-degree Gauss-Kruger zone 22N (code 16222) without zone prefix to FE. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,95.28 2002.36,1,0
-16323,6-degree Gauss-Kruger CM 135E,conversion,,,,,1977,Medium scale topographic mapping.,9807,,,6-degree Gauss-Kruger zone 23N (code 16223) without zone prefix to FE. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,95.28 2002.36,1,0
-16324,6-degree Gauss-Kruger CM 141E,conversion,,,,,1979,Medium scale topographic mapping.,9807,,,6-degree Gauss-Kruger zone 24N (code 16224) without zone prefix to FE. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,95.28 2002.36,1,0
-16325,6-degree Gauss-Kruger CM 147E,conversion,,,,,1981,Medium scale topographic mapping.,9807,,,6-degree Gauss-Kruger zone 25N (code 16225) without zone prefix to FE. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,95.28 2002.36,1,0
-16326,6-degree Gauss-Kruger CM 153E,conversion,,,,,1983,Medium scale topographic mapping.,9807,,,6-degree Gauss-Kruger zone 26N (code 16226) without zone prefix to FE. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,95.28 2002.36,1,0
-16327,6-degree Gauss-Kruger CM 159E,conversion,,,,,1985,Medium scale topographic mapping.,9807,,,6-degree Gauss-Kruger zone 27N (code 16227) without zone prefix to FE. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,95.28 2002.36,1,0
-16328,6-degree Gauss-Kruger CM 165E,conversion,,,,,1987,Medium scale topographic mapping.,9807,,,6-degree Gauss-Kruger zone 28N (code 16228) without zone prefix to FE. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,95.28 2002.36,1,0
-16329,6-degree Gauss-Kruger CM 171E,conversion,,,,,1989,Medium scale topographic mapping.,9807,,,6-degree Gauss-Kruger zone 29N (code 16229) without zone prefix to FE. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,95.28 2002.36,1,0
-16330,6-degree Gauss-Kruger CM 177E,conversion,,,,,1991,Medium scale topographic mapping.,9807,,,6-degree Gauss-Kruger zone 30N (code 16230) without zone prefix to FE. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,95.28 2002.36,1,0
-16331,6-degree Gauss-Kruger CM 177W,conversion,,,,,1873,Medium scale topographic mapping.,9807,,,6-degree Gauss-Kruger zone 31N (code 16231) without zone prefix to FE. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,95.28 2002.36,1,0
-16332,6-degree Gauss-Kruger CM 171W,conversion,,,,,1875,Medium scale topographic mapping.,9807,,,6-degree Gauss-Kruger zone 32N (code 16232) without zone prefix to FE. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,95.28 2002.36,1,0
-16333,6-degree Gauss-Kruger CM 165W,conversion,,,,,1877,Medium scale topographic mapping.,9807,,,6-degree Gauss-Kruger zone 33N (code 16233) without zone prefix to FE. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16334,6-degree Gauss-Kruger CM 159W,conversion,,,,,1879,Medium scale topographic mapping.,9807,,,6-degree Gauss-Kruger zone 34N (code 16234) without zone prefix to FE. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16335,6-degree Gauss-Kruger CM 153W,conversion,,,,,1881,Medium scale topographic mapping.,9807,,,6-degree Gauss-Kruger zone 35N (code 16235) without zone prefix to FE. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16336,6-degree Gauss-Kruger CM 147W,conversion,,,,,1883,Medium scale topographic mapping.,9807,,,6-degree Gauss-Kruger zone 36N (code 16236) without zone prefix to FE. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16337,6-degree Gauss-Kruger CM 141W,conversion,,,,,1885,Medium scale topographic mapping.,9807,,,6-degree Gauss-Kruger zone 37N (code 16237) without zone prefix to FE. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16338,6-degree Gauss-Kruger CM 135W,conversion,,,,,1887,Medium scale topographic mapping.,9807,,,6-degree Gauss-Kruger zone 38N (code 16238) without zone prefix to FE. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16339,6-degree Gauss-Kruger CM 129W,conversion,,,,,1889,Medium scale topographic mapping.,9807,,,6-degree Gauss-Kruger zone 39N (code 16239) without zone prefix to FE. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16340,6-degree Gauss-Kruger CM 123W,conversion,,,,,1891,Medium scale topographic mapping.,9807,,,6-degree Gauss-Kruger zone 40N (code 16240) without zone prefix to FE. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16341,6-degree Gauss-Kruger CM 117W,conversion,,,,,1893,Medium scale topographic mapping.,9807,,,6-degree Gauss-Kruger zone 41N (code 16241) without zone prefix to FE. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16342,6-degree Gauss-Kruger CM 111W,conversion,,,,,1895,Medium scale topographic mapping.,9807,,,6-degree Gauss-Kruger zone 42N (code 16242) without zone prefix to FE. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16343,6-degree Gauss-Kruger CM 105W,conversion,,,,,1897,Medium scale topographic mapping.,9807,,,6-degree Gauss-Kruger zone 43N (code 16243) without zone prefix to FE. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16344,6-degree Gauss-Kruger CM 99W,conversion,,,,,1899,Medium scale topographic mapping.,9807,,,6-degree Gauss-Kruger zone 44N (code 16244) without zone prefix to FE. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16345,6-degree Gauss-Kruger CM 93W,conversion,,,,,1901,Medium scale topographic mapping.,9807,,,6-degree Gauss-Kruger zone 45N (code 16245) without zone prefix to FE. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16346,6-degree Gauss-Kruger CM 87W,conversion,,,,,1903,Medium scale topographic mapping.,9807,,,6-degree Gauss-Kruger zone 46N (code 16246) without zone prefix to FE. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16347,6-degree Gauss-Kruger CM 81W,conversion,,,,,1905,Medium scale topographic mapping.,9807,,,6-degree Gauss-Kruger zone 47N (code 16247) without zone prefix to FE. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16348,6-degree Gauss-Kruger CM 75W,conversion,,,,,1907,Medium scale topographic mapping.,9807,,,6-degree Gauss-Kruger zone 48N (code 16248) without zone prefix to FE. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16349,6-degree Gauss-Kruger CM 69W,conversion,,,,,1909,Medium scale topographic mapping.,9807,,,6-degree Gauss-Kruger zone 49N (code 16249) without zone prefix to FE. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16350,6-degree Gauss-Kruger CM 63W,conversion,,,,,1911,Medium scale topographic mapping.,9807,,,6-degree Gauss-Kruger zone 50N (code 16250) without zone prefix to FE. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16351,6-degree Gauss-Kruger CM 57W,conversion,,,,,1913,Medium scale topographic mapping.,9807,,,6-degree Gauss-Kruger zone 51N (code 16251) without zone prefix to FE. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16352,6-degree Gauss-Kruger CM 51W,conversion,,,,,1915,Medium scale topographic mapping.,9807,,,6-degree Gauss-Kruger zone 52N (code 16252) without zone prefix to FE. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16353,6-degree Gauss-Kruger CM 45W,conversion,,,,,1917,Medium scale topographic mapping.,9807,,,6-degree Gauss-Kruger zone 53N (code 16253) without zone prefix to FE. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16354,6-degree Gauss-Kruger CM 39W,conversion,,,,,1919,Medium scale topographic mapping.,9807,,,6-degree Gauss-Kruger zone 54N (code 16254) without zone prefix to FE. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16355,6-degree Gauss-Kruger CM 33W,conversion,,,,,1921,Medium scale topographic mapping.,9807,,,6-degree Gauss-Kruger zone 55N (code 16255) without zone prefix to FE. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16356,6-degree Gauss-Kruger CM 27W,conversion,,,,,1923,Medium scale topographic mapping.,9807,,,6-degree Gauss-Kruger zone 56N (code 16256) without zone prefix to FE. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16357,6-degree Gauss-Kruger CM 21W,conversion,,,,,1925,Medium scale topographic mapping.,9807,,,6-degree Gauss-Kruger zone 57N (code 16257) without zone prefix to FE. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16358,6-degree Gauss-Kruger CM 15W,conversion,,,,,1927,Medium scale topographic mapping.,9807,,,6-degree Gauss-Kruger zone 58N (code 16258) without zone prefix to FE. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16359,6-degree Gauss-Kruger CM 9W,conversion,,,,,1929,Medium scale topographic mapping.,9807,,,6-degree Gauss-Kruger zone 59N (code 16259) without zone prefix to FE. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16360,6-degree Gauss-Kruger CM 3W,conversion,,,,,1931,Medium scale topographic mapping.,9807,,,6-degree Gauss-Kruger zone 60N (code 16260) without zone prefix to FE. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16361,3-degree Gauss-Kruger CM 3E,conversion,,,,,2299,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,3-degree Gauss-Kruger zone 1N (code 16261) without zone prefix to false easting value. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-16362,3-degree Gauss-Kruger CM 6E,conversion,,,,,2300,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,3-degree Gauss-Kruger zone 2N (code 16262) without zone prefix to false easting value. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-16363,3-degree Gauss-Kruger CM 9E,conversion,,,,,2301,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,3-degree Gauss-Kruger zone 3N (code 16263) without zone prefix to false easting value. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-16364,3-degree Gauss-Kruger CM 12E,conversion,,,,,2302,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,3-degree Gauss-Kruger zone 4N (code 16264) without zone prefix to false easting value. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-16365,3-degree Gauss-Kruger CM 15E,conversion,,,,,2303,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,3-degree Gauss-Kruger zone 5N (code 16265) without zone prefix to false easting value. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-16366,3-degree Gauss-Kruger CM 18E,conversion,,,,,2304,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,3-degree Gauss-Kruger zone 6N (code 16266) without zone prefix to false easting value. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-16367,3-degree Gauss-Kruger CM 21E,conversion,,,,,2305,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,3-degree Gauss-Kruger zone 7N (code 16267) without zone prefix to false easting value. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-16368,3-degree Gauss-Kruger CM 24E,conversion,,,,,2306,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,3-degree Gauss-Kruger zone 8N (code 16268) without zone prefix to false easting value. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-16369,3-degree Gauss-Kruger CM 27E,conversion,,,,,2534,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,3-degree Gauss-Kruger zone 9N (code 16269) without zone prefix to false easting value. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16370,3-degree Gauss-Kruger CM 30E,conversion,,,,,2535,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,3-degree Gauss-Kruger zone 10N (code 16270) without zone prefix to false easting value. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16371,3-degree Gauss-Kruger CM 33E,conversion,,,,,2536,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,3-degree Gauss-Kruger zone 11N (code 16271) without zone prefix to false easting value. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16372,3-degree Gauss-Kruger CM 36E,conversion,,,,,2537,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,3-degree Gauss-Kruger zone 12N (code 16272) without zone prefix to false easting value. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16373,3-degree Gauss-Kruger CM 39E,conversion,,,,,2538,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,3-degree Gauss-Kruger zone 13N (code 16273) without zone prefix to false easting value. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16374,3-degree Gauss-Kruger CM 42E,conversion,,,,,2539,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,3-degree Gauss-Kruger zone 14N (code 16274) without zone prefix to false easting value. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16375,3-degree Gauss-Kruger CM 45E,conversion,,,,,2540,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,3-degree Gauss-Kruger zone 15N (code 16275) without zone prefix to false easting value. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16376,3-degree Gauss-Kruger CM 48E,conversion,,,,,2604,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,3-degree Gauss-Kruger zone 16N (code 16276) without zone prefix to false easting value. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16377,3-degree Gauss-Kruger CM 51E,conversion,,,,,2605,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,3-degree Gauss-Kruger zone 17N (code 16277) without zone prefix to false easting value. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16378,3-degree Gauss-Kruger CM 54E,conversion,,,,,2606,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,3-degree Gauss-Kruger zone 18N (code 16278) without zone prefix to false easting value. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16379,3-degree Gauss-Kruger CM 57E,conversion,,,,,2607,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,3-degree Gauss-Kruger zone 19N (code 16279) without zone prefix to false easting value. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16380,3-degree Gauss-Kruger CM 60E,conversion,,,,,2608,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,3-degree Gauss-Kruger zone 20N (code 16280) without zone prefix to false easting value. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16381,3-degree Gauss-Kruger CM 63E,conversion,,,,,2609,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,3-degree Gauss-Kruger zone 21N (code 16281) without zone prefix to false easting value. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16382,3-degree Gauss-Kruger CM 66E,conversion,,,,,2610,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,3-degree Gauss-Kruger zone 22N (code 16282) without zone prefix to false easting value. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16383,3-degree Gauss-Kruger CM 69E,conversion,,,,,2611,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,3-degree Gauss-Kruger zone 23N (code 16283) without zone prefix to false easting value. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16384,3-degree Gauss-Kruger CM 72E,conversion,,,,,2612,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,3-degree Gauss-Kruger zone 24N (code 16284) without zone prefix to false easting value. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16385,3-degree Gauss-Kruger CM 75E,conversion,,,,,2613,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,3-degree Gauss-Kruger zone 25N (code 16285) without zone prefix to false easting value. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16386,3-degree Gauss-Kruger CM 78E,conversion,,,,,2614,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,3-degree Gauss-Kruger zone 26N (code 16286) without zone prefix to false easting value. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16387,3-degree Gauss-Kruger CM 81E,conversion,,,,,2615,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,3-degree Gauss-Kruger zone 27N (code 16287) without zone prefix to false easting value. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16388,3-degree Gauss-Kruger CM 84E,conversion,,,,,2616,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,3-degree Gauss-Kruger zone 28N (code 16288) without zone prefix to false easting value. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16389,3-degree Gauss-Kruger CM 87E,conversion,,,,,2617,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,3-degree Gauss-Kruger zone 29N (code 16289) without zone prefix to false easting value. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16390,3-degree Gauss-Kruger CM 90E,conversion,,,,,2618,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,3-degree Gauss-Kruger zone 30N (code 16290) without zone prefix to false easting value. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16391,3-degree Gauss-Kruger CM 93E,conversion,,,,,2619,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,3-degree Gauss-Kruger zone 31N (code 16291) without zone prefix to false easting value. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16392,3-degree Gauss-Kruger CM 96E,conversion,,,,,2620,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,3-degree Gauss-Kruger zone 32N (code 16292) without zone prefix to false easting value. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16393,3-degree Gauss-Kruger CM 99E,conversion,,,,,2621,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,3-degree Gauss-Kruger zone 33N (code 16293) without zone prefix to false easting value. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16394,3-degree Gauss-Kruger CM 102E,conversion,,,,,2622,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,3-degree Gauss-Kruger zone 34N (code 16294) without zone prefix to false easting value. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16395,3-degree Gauss-Kruger CM 105E,conversion,,,,,2623,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,3-degree Gauss-Kruger zone 35N (code 16295) without zone prefix to false easting value. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16396,3-degree Gauss-Kruger CM 108E,conversion,,,,,2624,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,3-degree Gauss-Kruger zone 36N (code 16296) without zone prefix to false easting value. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16397,3-degree Gauss-Kruger CM 111E,conversion,,,,,2625,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,3-degree Gauss-Kruger zone 37N (code 16297) without zone prefix to false easting value. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16398,3-degree Gauss-Kruger CM 114E,conversion,,,,,2626,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,3-degree Gauss-Kruger zone 38N (code 16298) without zone prefix to false easting value. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16399,3-degree Gauss-Kruger CM 117E,conversion,,,,,2627,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,3-degree Gauss-Kruger zone 39N (code 16299) without zone prefix to false easting value. Original transformation by Gauss-Kruger formula.,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-16400,TM 0 N,conversion,,,,,1629,Oil exploration.,9807,,,,Shell UK,EPSG,1998-11-11 00:00:00,,1,0
-16405,TM 5 NE,conversion,,,,,1630,Oil exploration.,9807,,,,NAM,EPSG,1998-11-11 00:00:00,,1,0
-16406,TM 6 NE,conversion,,,,,1717,Oil exploration.,9807,,,Used by ExxonMobil for deepwater blocks offshore Nigeria.,ExxonMobil,EPSG,2002-02-12 00:00:00,,1,0
-16411,TM 11 NE,conversion,,,,,1489,Oil exploration.,9807,,,,Total-Fina,EPSG,2000-03-07 00:00:00,,1,0
-16412,TM 12 NE,conversion,,,,,1143,Oil exploration.,9807,,,,Total-Fina,EPSG,2000-03-07 00:00:00,,1,0
-16413,TM 13 NE,conversion,,,,,2771,Oil exploration.,9807,,,,TotalFinaElf,EPSG,2002-06-28 00:00:00,,1,0
-16430,TM 30 NE,conversion,,,,,2546,Oil exploration.,9807,,,,TotalFinaElf,EPSG,2001-11-06 00:00:00,,1,0
-16506,TM 106 NE,conversion,,,,,1495,Oil exploration.,9807,,,,PetroVietnam,EPSG,2000-03-07 00:00:00,,1,0
-16586,GK 106 NE,conversion,,,,,1494,Oil exploration.,9807,,,,BP Amoco,EPSG,2000-03-07 00:00:00,,1,0
-16611,TM 11.30 SE,conversion,,,,,1605,Oil exploration.,9807,,,,Esso Angola,EPSG,1998-11-11 00:00:00,,1,0
-16612,TM 12 SE,conversion,,,,,1604,Oil exploration.,9807,,,,Shell Angola,EPSG,1998-11-11 00:00:00,,1,0
-16636,TM 36 SE,conversion,,,,,1726,Oil exploration.,9807,,,,BP Mozambique,EPSG,1998-11-11 00:00:00,,1,0
-16709,TM 109 SE,conversion,,,,,2577,Oil exploration.,9807,,,Used by Arco and BP for ONWJ.,BP,EPSG,2002-02-12 00:00:00,,1,0
-16716,TM 116 SE,conversion,,,,,2588,Oil exploration.,9807,,,Used by BP for Terang-Sirasun.,BP,EPSG,2002-02-12 00:00:00,,1,0
-16732,TM 132 SE,conversion,,,,,2589,Oil exploration.,9807,,,Used for Tangguh developments.,BP,EPSG,2002-02-12 00:00:00,,1,0
-17001,TM 1 NW,conversion,,,,,1505,Oil exploration.,9807,,,,Various industry sources,EPSG,2000-10-19 00:00:00,,1,0
-17005,TM 5 NW,conversion,,,,,2296,Oil exploration.,9807,,,,Various oil industry sources,EPSG,2001-06-05 00:00:00,,1,0
-17054,TM 54 NW,conversion,,,,,1727,Oil exploration.,9807,,,,Shell,EPSG,2000-06-10 00:00:00,,1,0
-17348,Map Grid of Australia zone 48,conversion,,,,,1556,Large and medium scale topographic mapping and engineering survey.,9807,,,Grid convergence uses opposite sign convention to UTM,Australian Surveying and Land Information Group Internet WWW page.,EPSG,1995-12-02 00:00:00,95.30  96.29,1,0
-17349,Map Grid of Australia zone 49,conversion,,,,,1557,Large and medium scale topographic mapping and engineering survey.,9807,,,Grid convergence uses opposite sign convention to UTM,Australian Surveying and Land Information Group Internet WWW page.,EPSG,1995-12-02 00:00:00,95.30  96.29,1,0
-17350,Map Grid of Australia zone 50,conversion,,,,,1558,Large and medium scale topographic mapping and engineering survey.,9807,,,Grid convergence uses opposite sign convention to UTM,Australian Surveying and Land Information Group Internet WWW page.,EPSG,1995-12-02 00:00:00,95.30  96.29,1,0
-17351,Map Grid of Australia zone 51,conversion,,,,,1559,Large and medium scale topographic mapping and engineering survey.,9807,,,Grid convergence uses opposite sign convention to UTM,Australian Surveying and Land Information Group Internet WWW page.,EPSG,1995-12-02 00:00:00,95.30  96.29,1,0
-17352,Map Grid of Australia zone 52,conversion,,,,,1560,Large and medium scale topographic mapping and engineering survey.,9807,,,Grid convergence uses opposite sign convention to UTM,Australian Surveying and Land Information Group Internet WWW page.,EPSG,1995-12-02 00:00:00,95.30  96.29,1,0
-17353,Map Grid of Australia zone 53,conversion,,,,,1561,Large and medium scale topographic mapping and engineering survey.,9807,,,Grid convergence uses opposite sign convention to UTM,Australian Surveying and Land Information Group Internet WWW page.,EPSG,1995-12-02 00:00:00,95.30  96.29,1,0
-17354,Map Grid of Australia zone 54,conversion,,,,,1562,Large and medium scale topographic mapping and engineering survey.,9807,,,Grid convergence uses opposite sign convention to UTM,Australian Surveying and Land Information Group Internet WWW page.,EPSG,1995-12-02 00:00:00,95.30  96.29,1,0
-17355,Map Grid of Australia zone 55,conversion,,,,,1563,Large and medium scale topographic mapping and engineering survey.,9807,,,Grid convergence uses opposite sign convention to UTM,Australian Surveying and Land Information Group Internet WWW page.,EPSG,1995-12-02 00:00:00,95.30  96.29,1,0
-17356,Map Grid of Australia zone 56,conversion,,,,,1564,Large and medium scale topographic mapping and engineering survey.,9807,,,Grid convergence uses opposite sign convention to UTM,Australian Surveying and Land Information Group Internet WWW page.,EPSG,1995-12-02 00:00:00,95.30  96.29,1,0
-17357,Map Grid of Australia zone 57,conversion,,,,,1565,Large and medium scale topographic mapping and engineering survey.,9807,,,Grid convergence uses opposite sign convention to UTM,Australian Surveying and Land Information Group Internet WWW page.,EPSG,1995-12-02 00:00:00,95.30  96.29,1,0
-17358,Map Grid of Australia zone 58,conversion,,,,,1566,Large and medium scale topographic mapping and engineering survey.,9807,,,Grid convergence uses opposite sign convention to UTM,Australian Surveying and Land Information Group Internet WWW page.,EPSG,1995-12-02 00:00:00,95.30  96.29,1,0
-17448,Australian Map Grid zone 48,conversion,,,,,1556,Large and medium scale topographic mapping and engineering survey.,9807,,,Grid convergence uses opposite sign convention to UTM,The Australian Map Grid Technical Manual; National Mapping Council of Australia; 1972,EPSG,1995-12-02 00:00:00,95.30  96.29,1,0
-17449,Australian Map Grid zone 49,conversion,,,,,1557,Large and medium scale topographic mapping and engineering survey.,9807,,,Grid convergence uses opposite sign convention to UTM,The Australian Map Grid Technical Manual; National Mapping Council of Australia; 1972,EPSG,1995-12-02 00:00:00,95.30  96.29,1,0
-17450,Australian Map Grid zone 50,conversion,,,,,1558,Large and medium scale topographic mapping and engineering survey.,9807,,,Grid convergence uses opposite sign convention to UTM,The Australian Map Grid Technical Manual; National Mapping Council of Australia; 1972,EPSG,1995-12-02 00:00:00,95.30  96.29,1,0
-17451,Australian Map Grid zone 51,conversion,,,,,1559,Large and medium scale topographic mapping and engineering survey.,9807,,,Grid convergence uses opposite sign convention to UTM,The Australian Map Grid Technical Manual; National Mapping Council of Australia; 1972,EPSG,1995-12-02 00:00:00,95.30  96.29,1,0
-17452,Australian Map Grid zone 52,conversion,,,,,1560,Large and medium scale topographic mapping and engineering survey.,9807,,,Grid convergence uses opposite sign convention to UTM,The Australian Map Grid Technical Manual; National Mapping Council of Australia; 1972,EPSG,1995-12-02 00:00:00,95.30  96.29,1,0
-17453,Australian Map Grid zone 53,conversion,,,,,1561,Large and medium scale topographic mapping and engineering survey.,9807,,,Grid convergence uses opposite sign convention to UTM,The Australian Map Grid Technical Manual; National Mapping Council of Australia; 1972,EPSG,1995-12-02 00:00:00,95.30  96.29,1,0
-17454,Australian Map Grid zone 54,conversion,,,,,1567,Large and medium scale topographic mapping and engineering survey.,9807,,,Grid convergence uses opposite sign convention to UTM,The Australian Map Grid Technical Manual; National Mapping Council of Australia; 1972,EPSG,1995-12-02 00:00:00,95.30  96.29,1,0
-17455,Australian Map Grid zone 55,conversion,,,,,1568,Large and medium scale topographic mapping and engineering survey.,9807,,,Grid convergence uses opposite sign convention to UTM,The Australian Map Grid Technical Manual; National Mapping Council of Australia; 1972,EPSG,1995-12-02 00:00:00,95.30  96.29,1,0
-17456,Australian Map Grid zone 56,conversion,,,,,2291,Large and medium scale topographic mapping and engineering survey.,9807,,,Grid convergence uses opposite sign convention to UTM,The Australian Map Grid Technical Manual; National Mapping Council of Australia; 1972,EPSG,1995-12-02 00:00:00,95.30  96.29,1,0
-17457,Australian Map Grid zone 57,conversion,,,,,1565,Large and medium scale topographic mapping and engineering survey.,9807,,,Grid convergence uses opposite sign convention to UTM,The Australian Map Grid Technical Manual; National Mapping Council of Australia; 1972,EPSG,1995-12-02 00:00:00,95.30  96.29,1,0
-17458,Australian Map Grid zone 58,conversion,,,,,1566,Large and medium scale topographic mapping and engineering survey.,9807,,,Grid convergence uses opposite sign convention to UTM,The Australian Map Grid Technical Manual; National Mapping Council of Australia; 1972,EPSG,1995-12-02 00:00:00,95.30  96.29,1,0
-17515,South African Survey Grid zone 15,conversion,,,,,1454,"Large and medium scale topographic mapping, cadastral and engineering survey.",9808,,,"Transformation method sometimes described as ""Gauss conform"".",,EPSG,1996-04-12 00:00:00,95.30  96.29,1,0
-17517,South African Survey Grid zone 17,conversion,,,,,1455,"Large and medium scale topographic mapping, cadastral and engineering survey.",9808,,,"Transformation method sometimes described as ""Gauss conform"".",,EPSG,1996-04-12 00:00:00,95.30  96.29,1,0
-17519,South African Survey Grid zone 19,conversion,,,,,1456,"Large and medium scale topographic mapping, cadastral and engineering survey.",9808,,,"Transformation method sometimes described as ""Gauss conform"".",,EPSG,1996-04-12 00:00:00,95.30  96.29,1,0
-17521,South African Survey Grid zone 21,conversion,,,,,1457,"Large and medium scale topographic mapping, cadastral and engineering survey.",9808,,,"Transformation method sometimes described as ""Gauss conform"".",,EPSG,1996-04-12 00:00:00,95.30  96.29,1,0
-17523,South African Survey Grid zone 23,conversion,,,,,1458,"Large and medium scale topographic mapping, cadastral and engineering survey.",9808,,,"Transformation method sometimes described as ""Gauss conform"".",,EPSG,1996-04-12 00:00:00,95.30  96.29,1,0
-17525,South African Survey Grid zone 25,conversion,,,,,1459,"Large and medium scale topographic mapping, cadastral and engineering survey.",9808,,,"Transformation method sometimes described as ""Gauss conform"".",,EPSG,1996-04-12 00:00:00,95.30  96.29,1,0
-17527,South African Survey Grid zone 27,conversion,,,,,1460,"Large and medium scale topographic mapping, cadastral and engineering survey.",9808,,,"Transformation method sometimes described as ""Gauss conform"".",,EPSG,1996-04-12 00:00:00,95.30  96.29,1,0
-17529,South African Survey Grid zone 29,conversion,,,,,1461,"Large and medium scale topographic mapping, cadastral and engineering survey.",9808,,,"Transformation method sometimes described as ""Gauss conform"".",,EPSG,1996-04-12 00:00:00,95.30  96.29,1,0
-17531,South African Survey Grid zone 31,conversion,,,,,1462,"Large and medium scale topographic mapping, cadastral and engineering survey.",9808,,,"Transformation method sometimes described as ""Gauss conform"".",,EPSG,1996-04-12 00:00:00,95.30  96.29,1,0
-17533,South African Survey Grid zone 33,conversion,,,,,1463,"Large and medium scale topographic mapping, cadastral and engineering survey.",9808,,,"Transformation method sometimes described as ""Gauss conform"".",,EPSG,1996-04-12 00:00:00,95.30  96.29,1,0
-17611,South West African Survey Grid zone 11,conversion,,,,,1838,"Large and medium scale topographic mapping, cadastral and engineering survey.",9808,,,"Transformation method sometimes described as ""Gauss conform"".",Chief Directorate Surveys and Land Information; Mowbray; South Africa.,EPSG,1997-06-16 00:00:00,95.30  96.29  97.16,1,0
-17613,South West African Survey Grid zone 13,conversion,,,,,1839,"Large and medium scale topographic mapping, cadastral and engineering survey.",9808,,,"Transformation method sometimes described as ""Gauss conform"".",Chief Directorate Surveys and Land Information; Mowbray; South Africa.,EPSG,1997-06-16 00:00:00,95.30  96.29  97.16,1,0
-17615,South West African Survey Grid zone 15,conversion,,,,,1840,"Large and medium scale topographic mapping, cadastral and engineering survey.",9808,,,"Transformation method sometimes described as ""Gauss conform"".",Chief Directorate Surveys and Land Information; Mowbray; South Africa.,EPSG,1997-06-16 00:00:00,95.30  96.29  97.16,1,0
-17617,South West African Survey Grid zone 17,conversion,,,,,1841,"Large and medium scale topographic mapping, cadastral and engineering survey.",9808,,,"Transformation method sometimes described as ""Gauss conform"".",Chief Directorate Surveys and Land Information; Mowbray; South Africa.,EPSG,1997-06-16 00:00:00,95.30  96.29  97.16,1,0
-17619,South West African Survey Grid zone 19,conversion,,,,,1842,"Large and medium scale topographic mapping, cadastral and engineering survey.",9808,,,"Transformation method sometimes described as ""Gauss conform"".",Chief Directorate Surveys and Land Information; Mowbray; South Africa.,EPSG,1997-06-16 00:00:00,95.30  96.29  97.16,1,0
-17621,South West African Survey Grid zone 21,conversion,,,,,1843,"Large and medium scale topographic mapping, cadastral and engineering survey.",9808,,,"Transformation method sometimes described as ""Gauss conform"".",Chief Directorate Surveys and Land Information; Mowbray; South Africa.,EPSG,1997-06-16 00:00:00,95.30  96.29  97.16,1,0
-17623,South West African Survey Grid zone 23,conversion,,,,,1844,"Large and medium scale topographic mapping, cadastral and engineering survey.",9808,,,"Transformation method sometimes described as ""Gauss conform"".",Chief Directorate Surveys and Land Information; Mowbray; South Africa.,EPSG,1997-06-16 00:00:00,95.30  96.29  97.16,1,0
-17625,South West African Survey Grid zone 25,conversion,,,,,1845,"Large and medium scale topographic mapping, cadastral and engineering survey.",9808,,,"Transformation method sometimes described as ""Gauss conform"".",Chief Directorate Surveys and Land Information; Mowbray; South Africa.,EPSG,1997-06-16 00:00:00,95.30  96.29  97.16,1,0
-17700,MTM Quebec zone 2,conversion,,,,,1420,Large and medium scale topographic mapping and engineering survey.,9807,,,,Topographic Mapping Section; Quebec Ministry of Natural Resources.,EPSG,1997-11-13 00:00:00,,1,0
-17701,MTM zone 1,conversion,,,,,2226,Large and medium scale topographic mapping and engineering survey.,9807,,,,Geodetic Surveys Section; Newfoundland Department of Government Services and Lands.,EPSG,1997-11-13 00:00:00,,1,0
-17702,MTM Newfoundland zone 2,conversion,,,,,2227,Large and medium scale topographic mapping and engineering survey.,9807,,,,Geodetic Surveys Section; Newfoundland Department of Government Services and Lands.,EPSG,1997-11-13 00:00:00,,1,0
-17703,MTM zone 3,conversion,,,,,2290,Large and medium scale topographic mapping and engineering survey.,9807,,,,Topographic Mapping Section; Quebec Ministry of Natural Resources. Also Geodetic Surveys Section; Newfoundland Department of Government Services and Lands.,EPSG,1997-11-13 00:00:00,,1,0
-17704,MTM zone 4,conversion,,,,,2276,Large and medium scale topographic mapping and engineering survey.,9807,,,,Topographic Mapping Section; Quebec Ministry of Natural Resources. Also Geodetic Surveys Section; Newfoundland Department of Government Services and Lands.,EPSG,1997-11-13 00:00:00,,1,0
-17705,MTM zone 5,conversion,,,,,2277,Large and medium scale topographic mapping and engineering survey.,9807,,,,Topographic Mapping Section; Quebec Ministry of Natural Resources. Also Geodetic Surveys Section; Newfoundland Department of Government Services and Lands.,EPSG,1997-11-13 00:00:00,,1,0
-17706,MTM zone 6,conversion,,,,,2278,Large and medium scale topographic mapping and engineering survey.,9807,,,,Topographic Mapping Section; Quebec Ministry of Natural Resources. Also Geodetic Surveys Section; Newfoundland Department of Government Services and Lands.,EPSG,1997-11-13 00:00:00,,1,0
-17707,MTM zone 7,conversion,,,,,1425,Large and medium scale topographic mapping and engineering survey.,9807,,,,Topographic Mapping Section; Quebec Ministry of Natural Resources.,EPSG,1997-11-13 00:00:00,,1,0
-17708,MTM zone 8,conversion,,,,,2279,Large and medium scale topographic mapping and engineering survey.,9807,,,,Surveys and Mapping Section; Ontario Ministry of Transportation.,EPSG,1997-11-13 00:00:00,,1,0
-17709,MTM zone 9,conversion,,,,,2280,Large and medium scale topographic mapping and engineering survey.,9807,,,,Surveys and Mapping Section; Ontario Ministry of Transportation.,EPSG,1997-11-13 00:00:00,,1,0
-17710,MTM zone 10,conversion,,,,,2281,Large and medium scale topographic mapping and engineering survey.,9807,,,,Surveys and Mapping Section; Ontario Ministry of Transportation.,EPSG,1997-11-13 00:00:00,,1,0
-17711,MTM zone 11,conversion,,,,,1432,Large and medium scale topographic mapping and engineering survey.,9807,,,,Surveys and Mapping Section; Ontario Ministry of Transportation.,EPSG,1997-11-13 00:00:00,,1,0
-17712,MTM zone 12,conversion,,,,,1433,Large and medium scale topographic mapping and engineering survey.,9807,,,,Surveys and Mapping Section; Ontario Ministry of Transportation.,EPSG,1997-11-13 00:00:00,,1,0
-17713,MTM zone 13,conversion,,,,,1434,Large and medium scale topographic mapping and engineering survey.,9807,,,,Surveys and Mapping Section; Ontario Ministry of Transportation.,EPSG,1997-11-13 00:00:00,,1,0
-17714,MTM zone 14,conversion,,,,,1435,Large and medium scale topographic mapping and engineering survey.,9807,,,,Surveys and Mapping Section; Ontario Ministry of Transportation.,EPSG,1997-11-13 00:00:00,,1,0
-17715,MTM zone 15,conversion,,,,,1436,Large and medium scale topographic mapping and engineering survey.,9807,,,,Surveys and Mapping Section; Ontario Ministry of Transportation.,EPSG,1997-11-13 00:00:00,,1,0
-17716,MTM zone 16,conversion,,,,,1437,Large and medium scale topographic mapping and engineering survey.,9807,,,,Surveys and Mapping Section; Ontario Ministry of Transportation.,EPSG,1997-11-13 00:00:00,,1,0
-17717,MTM zone 17,conversion,,,,,1438,Large and medium scale topographic mapping and engineering survey.,9807,,,,Surveys and Mapping Section; Ontario Ministry of Transportation.,EPSG,1997-11-13 00:00:00,,1,0
-17794,MTM Nova Scotia zone 4,conversion,,,,,1534,Large and medium scale topographic mapping and engineering survey.,9807,,,,Geomatics Centre; Nova Scotia Ministry of Housing and Municipal Affairs.,EPSG,1999-05-24 00:00:00,99.042,1,0
-17795,MTM Nova Scotia zone 5,conversion,,,,,1535,Large and medium scale topographic mapping and engineering survey.,9807,,,,Geomatics Centre; Nova Scotia Ministry of Housing and Municipal Affairs.,EPSG,1999-05-24 00:00:00,99.042,1,0
-17801,Japan Plane Rectangular CS zone I,conversion,,,,,1854,"Large and medium scale topographic mapping, cadastral and engineering survey.",9807,,,Original transformation by Gauss-Kruger formula.,Ministry of Construction; Japan.  http://vldb.gsi.go.jp/sokuchi/datum/image/heichoku2.gif,EPSG,2002-06-22 00:00:00,99.97 2002.08,1,0
-17802,Japan Plane Rectangular CS zone II,conversion,,,,,1855,"Large and medium scale topographic mapping, cadastral and engineering survey.",9807,,,Original transformation by Gauss-Kruger formula.,Ministry of Construction; Japan.  http://vldb.gsi.go.jp/sokuchi/datum/image/heichoku2.gif,EPSG,2002-06-22 00:00:00,99.97 2002.08,1,0
-17803,Japan Plane Rectangular CS zone III,conversion,,,,,1856,"Large and medium scale topographic mapping, cadastral and engineering survey.",9807,,,Original transformation by Gauss-Kruger formula.,Ministry of Construction; Japan.  http://vldb.gsi.go.jp/sokuchi/datum/image/heichoku2.gif,EPSG,2002-06-22 00:00:00,99.97 2002.08,1,0
-17804,Japan Plane Rectangular CS zone IV,conversion,,,,,1857,"Large and medium scale topographic mapping, cadastral and engineering survey.",9807,,,Original transformation by Gauss-Kruger formula.,Ministry of Construction; Japan.  http://vldb.gsi.go.jp/sokuchi/datum/image/heichoku2.gif,EPSG,2002-06-22 00:00:00,99.97 2002.08,1,0
-17805,Japan Plane Rectangular CS zone V,conversion,,,,,1858,"Large and medium scale topographic mapping, cadastral and engineering survey.",9807,,,Original transformation by Gauss-Kruger formula.,Ministry of Construction; Japan.  http://vldb.gsi.go.jp/sokuchi/datum/image/heichoku2.gif,EPSG,2002-06-22 00:00:00,99.97 2002.08,1,0
-17806,Japan Plane Rectangular CS zone VI,conversion,,,,,1859,"Large and medium scale topographic mapping, cadastral and engineering survey.",9807,,,Original transformation by Gauss-Kruger formula.,Ministry of Construction; Japan.  http://vldb.gsi.go.jp/sokuchi/datum/image/heichoku2.gif,EPSG,2002-06-22 00:00:00,99.97 2002.08,1,0
-17807,Japan Plane Rectangular CS zone VII,conversion,,,,,1860,"Large and medium scale topographic mapping, cadastral and engineering survey.",9807,,,Original transformation by Gauss-Kruger formula.,Ministry of Construction; Japan.  http://vldb.gsi.go.jp/sokuchi/datum/image/heichoku2.gif,EPSG,2002-06-22 00:00:00,99.97 2002.08,1,0
-17808,Japan Plane Rectangular CS zone VIII,conversion,,,,,1861,"Large and medium scale topographic mapping, cadastral and engineering survey.",9807,,,Original transformation by Gauss-Kruger formula.,Ministry of Construction; Japan.  http://vldb.gsi.go.jp/sokuchi/datum/image/heichoku2.gif,EPSG,2002-06-22 00:00:00,99.97 2002.08,1,0
-17809,Japan Plane Rectangular CS zone IX,conversion,,,,,1862,"Large and medium scale topographic mapping, cadastral and engineering survey.",9807,,,Original transformation by Gauss-Kruger formula.,Ministry of Construction; Japan.  http://vldb.gsi.go.jp/sokuchi/datum/image/heichoku2.gif,EPSG,2002-06-22 00:00:00,99.97 2002.08,1,0
-17810,Japan Plane Rectangular CS zone X,conversion,,,,,1863,"Large and medium scale topographic mapping, cadastral and engineering survey.",9807,,,Original transformation by Gauss-Kruger formula.,Ministry of Construction; Japan.  http://vldb.gsi.go.jp/sokuchi/datum/image/heichoku2.gif,EPSG,2002-06-22 00:00:00,99.97 2002.08,1,0
-17811,Japan Plane Rectangular CS zone XI,conversion,,,,,1864,"Large and medium scale topographic mapping, cadastral and engineering survey.",9807,,,Original transformation by Gauss-Kruger formula.,Ministry of Construction; Japan.  http://vldb.gsi.go.jp/sokuchi/datum/image/heichoku2.gif,EPSG,2002-06-22 00:00:00,99.97 2002.08,1,0
-17812,Japan Plane Rectangular CS zone XII,conversion,,,,,1865,"Large and medium scale topographic mapping, cadastral and engineering survey.",9807,,,Original transformation by Gauss-Kruger formula.,Ministry of Construction; Japan.  http://vldb.gsi.go.jp/sokuchi/datum/image/heichoku2.gif,EPSG,2002-06-22 00:00:00,99.97 2002.08,1,0
-17813,Japan Plane Rectangular CS zone XIII,conversion,,,,,1866,"Large and medium scale topographic mapping, cadastral and engineering survey.",9807,,,Original transformation by Gauss-Kruger formula.,Ministry of Construction; Japan.  http://vldb.gsi.go.jp/sokuchi/datum/image/heichoku2.gif,EPSG,2002-06-22 00:00:00,99.97 2002.08,1,0
-17814,Japan Plane Rectangular CS zone XIV,conversion,,,,,1867,"Large and medium scale topographic mapping, cadastral and engineering survey.",9807,,,Original transformation by Gauss-Kruger formula.,Ministry of Construction; Japan.  http://vldb.gsi.go.jp/sokuchi/datum/image/heichoku2.gif,EPSG,2002-06-22 00:00:00,2002.08,1,0
-17815,Japan Plane Rectangular CS zone XV,conversion,,,,,1868,"Large and medium scale topographic mapping, cadastral and engineering survey.",9807,,,Original transformation by Gauss-Kruger formula.,Ministry of Construction; Japan.  http://vldb.gsi.go.jp/sokuchi/datum/image/heichoku2.gif,EPSG,2002-06-22 00:00:00,2002.08,1,0
-17816,Japan Plane Rectangular CS zone XVI,conversion,,,,,1869,"Large and medium scale topographic mapping, cadastral and engineering survey.",9807,,,Original transformation by Gauss-Kruger formula.,Ministry of Construction; Japan.  http://vldb.gsi.go.jp/sokuchi/datum/image/heichoku2.gif,EPSG,2002-06-22 00:00:00,2002.08,1,0
-17817,Japan Plane Rectangular CS zone XVII,conversion,,,,,1870,"Large and medium scale topographic mapping, cadastral and engineering survey.",9807,,,Original transformation by Gauss-Kruger formula.,Ministry of Construction; Japan.  http://vldb.gsi.go.jp/sokuchi/datum/image/heichoku2.gif,EPSG,2002-06-22 00:00:00,2002.08,1,0
-17818,Japan Plane Rectangular CS zone XVIII,conversion,,,,,1871,"Large and medium scale topographic mapping, cadastral and engineering survey.",9807,,,Original transformation by Gauss-Kruger formula.,Ministry of Construction; Japan.  http://vldb.gsi.go.jp/sokuchi/datum/image/heichoku2.gif,EPSG,2002-06-22 00:00:00,2002.08,1,0
-17819,Japan Plane Rectangular CS zone XIX,conversion,,,,,1872,"Large and medium scale topographic mapping, cadastral and engineering survey.",9807,,,Original transformation by Gauss-Kruger formula.,Ministry of Construction; Japan.  http://vldb.gsi.go.jp/sokuchi/datum/image/heichoku2.gif,EPSG,2002-06-22 00:00:00,2002.08,1,0
-17901,Mount Eden Circuit,conversion,,,,,1500,Cadastral surveying.,9807,,,Superseded Imperial measure circuit in 1972.  Superseded by Mount Eden Circuit 2000 (code 17931) from March 2000.,Land Information New Zealand OSG Technical Report 8; April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-17902,Bay of Plenty Circuit,conversion,,,,,1500,Cadastral surveying.,9807,,,Superseded Imperial measure circuit in 1972.  Superseded by Bay of Plenty Circuit 2000 (code 17932) from March 2000.,Land Information New Zealand OSG Technical Report 8; April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-17903,Poverty Bay Circuit,conversion,,,,,1500,Cadastral surveying.,9807,,,Superseded Imperial measure circuit in 1972.  Superseded by Poverty Bay Circuit 2000 (code 17933) from March 2000.,Land Information New Zealand OSG Technical Report 8; April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-17904,Hawkes Bay Circuit,conversion,,,,,1500,Cadastral surveying.,9807,,,Superseded Imperial measure circuit in 1972.  Superseded by Hawkes Bay Circuit 2000 (code 17934) from March 2000.,Land Information New Zealand OSG Technical Report 8; April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-17905,Taranaki Circuit,conversion,,,,,1500,Cadastral surveying.,9807,,,Superseded Imperial measure circuit in 1972.  Superseded by Taranaki Circuit 2000 (code 17935) from March 2000.,Land Information New Zealand OSG Technical Report 8; April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-17906,Tuhirangi Circuit,conversion,,,,,1500,Cadastral surveying.,9807,,,Superseded Imperial measure circuit in 1972.  Superseded by Tuhirangi Circuit 2000 (code 17936) from March 2000.,Land Information New Zealand OSG Technical Report 8; April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-17907,Wanganui Circuit,conversion,,,,,1500,Cadastral surveying.,9807,,,Superseded Imperial measure circuit in 1972.  Superseded by Wanganui Circuit 2000 (code 17937) from March 2000.,Land Information New Zealand OSG Technical Report 8; April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-17908,Wairarapa Circuit,conversion,,,,,1500,Cadastral surveying.,9807,,,Superseded Imperial measure circuit in 1972.  Superseded by Wairarapa Circuit 2000 (code 17938) from March 2000.,Land Information New Zealand OSG Technical Report 8; April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-17909,Wellington Circuit,conversion,,,,,1500,Cadastral surveying.,9807,,,Superseded Imperial measure circuit in 1972.  Superseded by Wellington Circuit 2000 (code 17939) from March 2000.,Land Information New Zealand OSG Technical Report 8; April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-17910,Collingwood Circuit,conversion,,,,,1501,Cadastral surveying.,9807,,,Superseded Imperial measure circuit in 1972.  Superseded by Collingwood Circuit 2000 (code 17940) from March 2000.,Land Information New Zealand OSG Technical Report 8; April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-17911,Nelson Circuit,conversion,,,,,1501,Cadastral surveying.,9807,,,Superseded Imperial measure circuit in 1972.  Superseded by Nelson Circuit 2000 (code 17941) from March 2000.,Land Information New Zealand OSG Technical Report 8; April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-17912,Karamea Circuit,conversion,,,,,1501,Cadastral surveying.,9807,,,Superseded Imperial measure circuit in 1972.  Superseded by Karamea Circuit 2000 (code 17942) from March 2000.,Land Information New Zealand OSG Technical Report 8; April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-17913,Buller Circuit,conversion,,,,,1501,Cadastral surveying.,9807,,,Superseded Imperial measure circuit in 1972.  Superseded by Buller Circuit 2000 (code 17943) from March 2000.,Land Information New Zealand OSG Technical Report 8; April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-17914,Grey Circuit,conversion,,,,,1501,Cadastral surveying.,9807,,,Superseded Imperial measure circuit in 1972.  Superseded by Grey Circuit 2000 (code 17944) from March 2000.,Land Information New Zealand OSG Technical Report 8; April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-17915,Amuri Circuit,conversion,,,,,1501,Cadastral surveying.,9807,,,Superseded Imperial measure circuit in 1972.  Superseded by Amuri Circuit 2000 (code 17945) from March 2000.,Land Information New Zealand OSG Technical Report 8; April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-17916,Marlborough Circuit,conversion,,,,,1501,Cadastral surveying.,9807,,,Superseded Imperial measure circuit in 1972.  Superseded by Marlborough Circuit 2000 (code 17946) from March 2000.,Land Information New Zealand OSG Technical Report 8; April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-17917,Hokitika Circuit,conversion,,,,,1501,Cadastral surveying.,9807,,,Superseded Imperial measure circuit in 1972.  Superseded by Hokitika Circuit 2000 (code 17947) from March 2000.,Land Information New Zealand OSG Technical Report 8; April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-17918,Okarito Circuit,conversion,,,,,1501,Cadastral surveying.,9807,,,Superseded Imperial measure circuit in 1972.  Superseded by Okarito Circuit 2000 (code 17948) from March 2000.,Land Information New Zealand OSG Technical Report 8; April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-17919,Jacksons Bay Circuit,conversion,,,,,1501,Cadastral surveying.,9807,,,Superseded Imperial measure circuit in 1972.  Superseded by Jacksons Bay Circuit 2000 (code 17949) from March 2000.,Land Information New Zealand OSG Technical Report 8; April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-17920,Mount Pleasant Circuit,conversion,,,,,1501,Cadastral surveying.,9807,,,Superseded Imperial measure circuit in 1972.  Superseded by Mount Pleasant Circuit 2000 (code 17950) from March 2000.,Land Information New Zealand OSG Technical Report 8; April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-17921,Gawler Circuit,conversion,,,,,1501,Cadastral surveying.,9807,,,Superseded Imperial measure circuit in 1972.  Superseded by Gawler Circuit 2000 (code 17951) from March 2000.,Land Information New Zealand OSG Technical Report 8; April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-17922,Timaru Circuit,conversion,,,,,1501,Cadastral surveying.,9807,,,Superseded Imperial measure circuit in 1972.  Superseded by Timaru Circuit 2000 (code 17952) from March 2000.,Land Information New Zealand OSG Technical Report 8; April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-17923,Lindis Peak Circuit,conversion,,,,,1501,Cadastral surveying.,9807,,,Superseded Imperial measure circuit in 1972.  Superseded by Lindis Peak Circuit 2000 (code 17953) from March 2000.,Land Information New Zealand OSG Technical Report 8; April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-17924,Mount Nicholas Circuit,conversion,,,,,1501,Cadastral surveying.,9807,,,Superseded Imperial measure circuit in 1972.  Superseded by Mount Nicholas Circuit 2000 (code 17954) from March 2000.,Land Information New Zealand OSG Technical Report 8; April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-17925,Mount York Circuit,conversion,,,,,1501,Cadastral surveying.,9807,,,Superseded Imperial measure circuit in 1972.  Superseded by Mount York Circuit 2000 (code 17955) from March 2000.,Land Information New Zealand OSG Technical Report 8; April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-17926,Observation Point Circuit,conversion,,,,,1501,Cadastral surveying.,9807,,,Superseded Imperial measure circuit in 1972.  Superseded by Observation Point Circuit 2000 (code 17956) from March 2000.,Land Information New Zealand OSG Technical Report 8; April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-17927,North Taieri Circuit,conversion,,,,,1501,Cadastral surveying.,9807,,,Superseded Imperial measure circuit in 1972.  Superseded by North Taieri Circuit 2000 (code 17957) from March 2000.,Land Information New Zealand OSG Technical Report 8; April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-17928,Bluff Circuit,conversion,,,,,1501,Cadastral surveying.,9807,,,Superseded Imperial measure circuit in 1972.  Superseded by Bluff Circuit 2000 (code 17958) from March 2000.,Land Information New Zealand OSG Technical Report 8; April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-17931,Mount Eden Circuit 2000,conversion,,,,,1500,Cadastral surveying.,9807,,,Supersedes Mount Eden Circuit (code 17901) after 1st March 2000.,Land Information New Zealand OSG Technical Report 8; April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-17932,Bay of Plenty Circuit 2000,conversion,,,,,1500,Cadastral surveying.,9807,,,Supersedes Bay of Plenty Circuit (code 17902) after 1st March 2000.,Land Information New Zealand OSG Technical Report 8; April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-17933,Poverty Bay Circuit 2000,conversion,,,,,1500,Cadastral surveying.,9807,,,Supersedes Poverty Bay Circuit (code 17903) after 1st March 2000.,Land Information New Zealand OSG Technical Report 8; April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-17934,Hawkes Bay Circuit 2000,conversion,,,,,1500,Cadastral surveying.,9807,,,Supersedes Hawkes Bay Circuit (code 17904) after 1st March 2000.,Land Information New Zealand OSG Technical Report 8; April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-17935,Taranaki Circuit 2000,conversion,,,,,1500,Cadastral surveying.,9807,,,Supersedes Taranaki Circuit (code 17905) after 1st March 2000.,Land Information New Zealand OSG Technical Report 8; April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-17936,Tuhirangi Circuit 2000,conversion,,,,,1500,Cadastral surveying.,9807,,,Supersedes Tuhirangi Circuit (code 17906) after 1st March 2000.,Land Information New Zealand OSG Technical Report 8; April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-17937,Wanganui Circuit 2000,conversion,,,,,1500,Cadastral surveying.,9807,,,Supersedes Wanganui Circuit (code 17907) after 1st March 2000.,Land Information New Zealand OSG Technical Report 8; April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-17938,Wairarapa Circuit 2000,conversion,,,,,1500,Cadastral surveying.,9807,,,Supersedes Wairarapa Circuit (code 17908) after 1st March 2000.,Land Information New Zealand OSG Technical Report 8; April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-17939,Wellington Circuit 2000,conversion,,,,,1500,Cadastral surveying.,9807,,,Supersedes Wellington Circuit (code 17909) after 1st March 2000.,Land Information New Zealand OSG Technical Report 8; April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-17940,Collingwood Circuit 2000,conversion,,,,,1501,Cadastral surveying.,9807,,,Supersedes Collingwood Circuit (code 17910) after 1st March 2000.,Land Information New Zealand OSG Technical Report 8; April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-17941,Nelson Circuit 2000,conversion,,,,,1501,Cadastral surveying.,9807,,,Supersedes Nelson Circuit (code 17911) after 1st March 2000.,Land Information New Zealand OSG Technical Report 8; April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-17942,Karamea Circuit 2000,conversion,,,,,1501,Cadastral surveying.,9807,,,Supersedes Karamea Circuit (code 17912) after 1st March 2000.,Land Information New Zealand OSG Technical Report 8; April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-17943,Buller Circuit 2000,conversion,,,,,1501,Cadastral surveying.,9807,,,Supersedes Buller Circuit (code 17913) after 1st March 2000.,Land Information New Zealand OSG Technical Report 8; April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-17944,Grey Circuit 2000,conversion,,,,,1501,Cadastral surveying.,9807,,,Supersedes Grey Circuit (code 17914) after 1st March 2000.,Land Information New Zealand OSG Technical Report 8; April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-17945,Amuri Circuit 2000,conversion,,,,,1501,Cadastral surveying.,9807,,,Supersedes Amuri Circuit (code 17915) after 1st March 2000.,Land Information New Zealand OSG Technical Report 8; April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-17946,Marlborough Circuit 2000,conversion,,,,,1501,Cadastral surveying.,9807,,,Supersedes Marlborough Circuit (code 17916) after 1st March 2000.,Land Information New Zealand OSG Technical Report 8; April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-17947,Hokitika Circuit 2000,conversion,,,,,1501,Cadastral surveying.,9807,,,Supersedes Hokitika Circuit (code 17917) after 1st March 2000.,Land Information New Zealand OSG Technical Report 8; April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-17948,Okarito Circuit 2000,conversion,,,,,1501,Cadastral surveying.,9807,,,Supersedes Okarito Circuit (code 17918) after 1st March 2000.,Land Information New Zealand OSG Technical Report 8; April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-17949,Jacksons Bay Circuit 2000,conversion,,,,,1501,Cadastral surveying.,9807,,,Supersedes Jacksons Bay Circuit (code 17919) after 1st March 2000.,Land Information New Zealand OSG Technical Report 8; April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-17950,Mount Pleasant Circuit 2000,conversion,,,,,1501,Cadastral surveying.,9807,,,Supersedes Mount Pleasant Circuit (code 17920) after 1st March 2000.,Land Information New Zealand OSG Technical Report 8; April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-17951,Gawler Circuit 2000,conversion,,,,,1501,Cadastral surveying.,9807,,,Supersedes Gawler Circuit (code 17921) after 1st March 2000.,Land Information New Zealand OSG Technical Report 8; April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-17952,Timaru Circuit 2000,conversion,,,,,1501,Cadastral surveying.,9807,,,Supersedes Timaru Circuit (code 17922) after 1st March 2000.,Land Information New Zealand OSG Technical Report 8; April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-17953,Lindis Peak Circuit 2000,conversion,,,,,1501,Cadastral surveying.,9807,,,Supersedes Lindis Peak Circuit (code 17923) after 1st March 2000.,Land Information New Zealand OSG Technical Report 8; April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-17954,Mount Nicholas Circuit 2000,conversion,,,,,1501,Cadastral surveying.,9807,,,Supersedes Mount Nicholas Circuit (code 17924) after 1st March 2000.,Land Information New Zealand OSG Technical Report 8; April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-17955,Mount York Circuit 2000,conversion,,,,,1501,Cadastral surveying.,9807,,,Supersedes Mount York Circuit (code 17925) after 1st March 2000.,Land Information New Zealand OSG Technical Report 8; April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-17956,Observation Point Circuit 2000,conversion,,,,,1501,Cadastral surveying.,9807,,,Supersedes Observation Point Circuit (code 17926) after 1st March 2000.,Land Information New Zealand OSG Technical Report 8; April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-17957,North Taieri Circuit 2000,conversion,,,,,1501,Cadastral surveying.,9807,,,Supersedes North Taieri Circuit (code 17927) after 1st March 2000.,Land Information New Zealand OSG Technical Report 8; April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-17958,Bluff Circuit 2000,conversion,,,,,1501,Cadastral surveying.,9807,,,Supersedes Bluff Circuit (code 17928) after 1st March 2000.,Land Information New Zealand OSG Technical Report 8; April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-18011,Nord Algerie (ancienne),conversion,,,,,1728,Large and medium scale topographic mapping and engineering survey.,9801,,,Used with Voirol 1875 datum - now superseded.,,EPSG,1996-09-12 00:00:00,,1,0
-18012,Sud Algerie (ancienne),conversion,,,,,1729,Large and medium scale topographic mapping and engineering survey.,9801,,,Used with Voirol 1875 datum - now superseded.,,EPSG,1996-09-12 00:00:00,,1,0
-18021,Nord Algerie,conversion,,,,,1728,Large and medium scale topographic mapping and engineering survey.,9801,,,Use with Nord Sahara 1959 datum.,,EPSG,1996-09-12 00:00:00,,1,0
-18022,Sud Algerie,conversion,,,,,1729,Large and medium scale topographic mapping and engineering survey.,9801,,,Use with Nord Sahara 1959 datum.,,EPSG,1996-09-12 00:00:00,,1,0
-18031,Argentina zone 1,conversion,,,,,1608,Large and medium scale topographic mapping and engineering survey.,9807,,,Original transformation by Gauss-Kruger formula,,EPSG,2002-06-22 00:00:00,95.30 2002.36,1,0
-18032,Argentina zone 2,conversion,,,,,1609,Large and medium scale topographic mapping and engineering survey.,9807,,,Original transformation by Gauss-Kruger formula,,EPSG,2002-06-22 00:00:00,95.30 2002.36,1,0
-18033,Argentina zone 3,conversion,,,,,1610,Large and medium scale topographic mapping and engineering survey.,9807,,,Original transformation by Gauss-Kruger formula,,EPSG,2002-06-22 00:00:00,95.30 2002.36,1,0
-18034,Argentina zone 4,conversion,,,,,1611,Large and medium scale topographic mapping and engineering survey.,9807,,,Original transformation by Gauss-Kruger formula,,EPSG,2002-06-22 00:00:00,95.30 2002.36,1,0
-18035,Argentina zone 5,conversion,,,,,1612,Large and medium scale topographic mapping and engineering survey.,9807,,,Original transformation by Gauss-Kruger formula,,EPSG,2002-06-22 00:00:00,95.30 2002.36,1,0
-18036,Argentina zone 6,conversion,,,,,1613,Large and medium scale topographic mapping and engineering survey.,9807,,,Original transformation by Gauss-Kruger formula,,EPSG,2002-06-22 00:00:00,95.30 2002.36,1,0
-18037,Argentina zone 7,conversion,,,,,1614,Large and medium scale topographic mapping and engineering survey.,9807,,,Original transformation by Gauss-Kruger formula,,EPSG,2002-06-22 00:00:00,95.30 2002.36,1,0
-18041,Austria West Zone,conversion,,,,,1706,Large and medium scale topographic mapping and engineering survey.,9807,,,Superseded by M28 (EPSG code 18044).,,EPSG,1997-04-11 00:00:00,95.30  96.29  97.01  98.48,1,0
-18042,Austria Central Zone,conversion,,,,,1707,Large and medium scale topographic mapping and engineering survey.,9807,,,Superseded by M31 (EPSG code 18045).,,EPSG,1997-04-11 00:00:00,95.30  96.29  97.01  98.48,1,0
-18043,Austria East Zone,conversion,,,,,1708,Large and medium scale topographic mapping and engineering survey.,9807,,,Superseded by M34 (EPSG code 18046).,,EPSG,1997-04-11 00:00:00,95.30  96.29  97.01  98.48,1,0
-18044,Austria M28,conversion,,,,,1706,Large and medium scale topographic mapping and engineering survey.,9807,,,Supersedes Austria West zone (EPSG code 18041).,Bundesamt f�r Eich- und Vermessungswesen,EPSG,1999-10-20 00:00:00,,1,0
-18045,Austria M31,conversion,,,,,1707,Large and medium scale topographic mapping and engineering survey.,9807,,,Supersedes Austria Central zone (EPSG code 18042).,Bundesamt f�r Eich- und Vermessungswesen,EPSG,1999-10-20 00:00:00,,1,0
-18046,Austria M34,conversion,,,,,1708,Large and medium scale topographic mapping and engineering survey.,9807,,,Supersedes Austria East zone (EPSG code 18043).,Bundesamt f�r Eich- und Vermessungswesen,EPSG,1999-10-20 00:00:00,,1,0
-18051,Colombia West zone,conversion,,,,,1598,Large and medium scale topographic mapping and engineering survey.,9807,,,"Original transformation by Gauss-Kruger formula.  Zone name sometimes referred to as ""6 west"".",,EPSG,1997-04-11 00:00:00,95.30  96.29  97.11,1,0
-18052,Colombia Bogota zone,conversion,,,,,1599,Large and medium scale topographic mapping and engineering survey.,9807,,,Original transformation by Gauss-Kruger formula,,EPSG,1997-04-11 00:00:00,95.30  96.29  97.11,1,0
-18053,Colombia East Central zone,conversion,,,,,1600,Large and medium scale topographic mapping and engineering survey.,9807,,,"Original transformation by Gauss-Kruger formula.  Zone name sometimes referred to as ""3 east"".",,EPSG,1997-04-11 00:00:00,95.30  96.29  97.11,1,0
-18054,Colombia East zone,conversion,,,,,1601,Large and medium scale topographic mapping and engineering survey.,9807,,,"Original transformation by Gauss-Kruger formula.  Zone name sometimes referred to as ""6 east"".",,EPSG,1997-04-11 00:00:00,95.30  96.29  97.11,1,0
-18061,Cuba Norte,conversion,,,,,1487,Large and medium scale topographic mapping and engineering survey.,9801,,,,,EPSG,1995-12-02 00:00:00,95.30  96.29,1,0
-18062,Cuba Sur,conversion,,,,,1488,Large and medium scale topographic mapping and engineering survey.,9801,,,,,EPSG,1995-12-02 00:00:00,95.30  96.29,1,0
-18071,Egypt Blue Belt,conversion,,,,,1642,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,2002-07-16 00:00:00,2002.49,1,0
-18072,Egypt Red Belt,conversion,,,,,1643,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.30,1,0
-18073,Egypt Purple Belt,conversion,,,,,1644,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.30,1,0
-18074,Egypt Extended Purple Belt,conversion,,,,,1645,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.30,1,0
-18081,Lambert zone I,conversion,,,,,1731,Large and medium scale topographic mapping and engineering survey.,9801,,,Introduced 1972. Supersedes Lambert Nord France (code 18091).,IGN Paris.,EPSG,2001-11-06 00:00:00,95.26  2001.54,1,0
-18082,Lambert zone II,conversion,,,,,1734,Large and medium scale topographic mapping and engineering survey.,9801,,,Introduced 1972. Supersedes Lambert Centre France (code 18092).,IGN Paris.,EPSG,2001-11-06 00:00:00,95.26  2001.54,1,0
-18083,Lambert zone III,conversion,,,,,1733,Large and medium scale topographic mapping and engineering survey.,9801,,,Introduced 1972. Supersedes Lambert Sud France (code 18093).,IGN Paris.,EPSG,2001-11-06 00:00:00,95.26  2001.54,1,0
-18084,Lambert zone IV,conversion,,,,,1327,Large and medium scale topographic mapping and engineering survey.,9801,,,Introduced 1972. Supersedes Lambert Corse (code 18094).,IGN Paris.,EPSG,2001-11-06 00:00:00,2001.54,1,0
-18085,Lambert-93,conversion,,,,,1326,Large and medium scale topographic mapping and engineering survey.,9802,,,,IGN - Paris,EPSG,2000-10-19 00:00:00,,1,0
-18086,France EuroLambert,conversion,,,,,1326,Medium scale topographic and statistical mapping.,9801,,,This is Lambert zone II (code 18082) parameters converted from grads/Paris to degrees/Greenwich for use with ED50.,IGN Paris via EuroGeographics; http://crs.ifag.de/,EPSG,2001-06-05 00:00:00,,1,0
-18091,Lambert Nord France,conversion,,,,,1731,Large and medium scale topographic mapping and engineering survey.,9801,,,Superseded in 1972 by Lambert zone I (code 18081).,IGN Paris.,EPSG,2001-11-06 00:00:00,95.26  2001.54,1,0
-18092,Lambert Centre France,conversion,,,,,1734,Large and medium scale topographic mapping and engineering survey.,9801,,,Superseded in 1972 by Lambert zone II (code 18082).,IGN Paris.,EPSG,2001-11-06 00:00:00,95.26  2001.54,1,0
-18093,Lambert Sud France,conversion,,,,,1733,Large and medium scale topographic mapping and engineering survey.,9801,,,Superseded in 1972 by Lambert zone III (code 18083).,IGN Paris.,EPSG,2001-11-06 00:00:00,95.26  2001.54,1,0
-18094,Lambert Corse,conversion,,,,,1327,Large and medium scale topographic mapping and engineering survey.,9801,,,Superseded in 1972 by Lambert zone IV (code 18084).,IGN Paris.,EPSG,2001-11-06 00:00:00,2001.54,1,0
-18110,India zone 0,conversion,,,,,1668,Large and medium scale topographic mapping and engineering survey.,9801,,,BEWARE !  Different yard to metre conversion values have been used in different parts of south Asia. Some areas have changed conversion value with time.,US Army Map Service projection tables; 1943.,EPSG,1999-10-20 00:00:00,95.30  96.01  96.02  96.29  97.23,1,0
-18111,India zone I,conversion,,,,,1669,Large and medium scale topographic mapping and engineering survey.,9801,,,BEWARE !  Different yard to metre conversion values have been used in different parts of south Asia. Some areas have changed conversion value with time.,US Army Map Service projection tables; 1943.,EPSG,1999-10-20 00:00:00,95.30  96.02  96.29  97.23,1,0
-18112,India zone IIa,conversion,,,,,1670,Large and medium scale topographic mapping and engineering survey.,9801,,,BEWARE !  Different yard to metre conversion values have been used in different parts of south Asia. Some areas have changed conversion value with time.,US Army Map Service projection tables; 1943.,EPSG,1999-10-20 00:00:00,95.28  96.02  97.23,1,0
-18113,India zone IIb,conversion,,,,,1671,Large and medium scale topographic mapping and engineering survey.,9801,,,BEWARE !  Different yard to metre conversion values have been used in different parts of south Asia. Some areas have changed conversion value with time.,US Army Map Service projection tables; 1943.,EPSG,2000-03-07 00:00:00,95.28  96.02  97.23  2000.094,1,0
-18114,India zone IIIa,conversion,,,,,1672,Large and medium scale topographic mapping and engineering survey.,9801,,,BEWARE !  Different yard to metre conversion values have been used in different parts of south Asia. Some areas have changed conversion value with time.,US Army Map Service projection tables; 1943.,EPSG,2000-03-07 00:00:00,95.28  96.02  97.23  2000.094,1,0
-18115,India zone IIIb,conversion,,,,,2292,Large and medium scale topographic mapping and engineering survey.,9801,,,BEWARE !  Different yard to metre conversion values have been used in different parts of south Asia. Some areas have changed conversion value with time.,US Army Map Service projection tables; 1943.,EPSG,1999-10-20 00:00:00,95.28  96.02  97.23,1,0
-18116,India zone IVa,conversion,,,,,1673,Large and medium scale topographic mapping and engineering survey.,9801,,,BEWARE !  Different yard to metre conversion values have been used in different parts of south Asia. Some areas have changed conversion value with time.,US Army Map Service projection tables; 1943.,EPSG,2000-03-07 00:00:00,95.28  96.02  97.23  2000.094,1,0
-18117,India zone IVb,conversion,,,,,2293,Large and medium scale topographic mapping and engineering survey.,9801,,,BEWARE !  Different yard to metre conversion values have been used in different parts of south Asia. Some areas have changed conversion value with time.,US Army Map Service projection tables; 1943.,EPSG,1999-10-20 00:00:00,95.28  96.02  97.23,1,0
-18121,Italy zone 1,conversion,,,,,1718,Large and medium scale topographic mapping and engineering survey.,9807,,,Original transformation by Gauss-Boaga formula,,EPSG,1995-12-02 00:00:00,,1,0
-18122,Italy zone 2,conversion,,,,,1719,Large and medium scale topographic mapping and engineering survey.,9807,,,Original transformation by Gauss-Boaga formula,,EPSG,1995-12-02 00:00:00,,1,0
-18131,Nord Maroc,conversion,,,,,1703,Large and medium scale topographic mapping and engineering survey.,9801,,,A projection with the same parameter values used the Lambert Conic Near-Conformal method (EPSG code 9817) prior to 1953.,IGN Paris.,EPSG,1996-09-12 00:00:00,99.203,1,0
-18132,Sud Maroc,conversion,,,,,1704,Large and medium scale topographic mapping and engineering survey.,9801,,,A projection with the same parameter values used the Lambert Conic Near-Conformal method (EPSG code 9817) prior to 1953.,IGN Paris.,EPSG,1996-09-12 00:00:00,99.203,1,0
-18133,Sahara,conversion,,,,,1705,Large and medium scale topographic mapping and engineering survey.,9801,,,Created in 1977 to cover Sahara Marocain (ex Spanish Sahara),IGN Paris.,EPSG,1996-09-12 00:00:00,,1,0
-18141,New Zealand North Island National Grid,conversion,,,,,1500,Large and medium scale topographic mapping and engineering survey.,9807,,,Superseded by New Zealand Map Grid (code 19917).  Used for topographic mapping.,,EPSG,1999-10-20 00:00:00,95.30  96.29  97.231,1,0
-18142,New Zealand South Island National Grid,conversion,,,,,1501,Large and medium scale topographic mapping and engineering survey.,9807,,,Superseded by New Zealand Map Grid (code 19917).  Used for topographic mapping.,,EPSG,1999-10-20 00:00:00,95.30  96.29  97.231,1,0
-18151,Nigeria West Belt,conversion,,,,,1715,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.30  96.29,1,0
-18152,Nigeria Mid Belt,conversion,,,,,1714,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.30  96.29,1,0
-18153,Nigeria East Belt,conversion,,,,,1713,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.30  96.29,1,0
-18161,Peru west zone,conversion,,,,,1753,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.30  96.29,1,0
-18162,Peru central zone,conversion,,,,,1752,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.30  96.29,1,0
-18163,Peru east zone,conversion,,,,,1751,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.30  96.29,1,0
-18171,Philippines zone I,conversion,,,,,1698,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,2000-03-07 00:00:00,95.30 2000.93,1,0
-18172,Philippines zone II,conversion,,,,,1699,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,2000-03-07 00:00:00,95.30 2000.93,1,0
-18173,Philippines zone III,conversion,,,,,1700,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,2000-03-07 00:00:00,95.30 2000.93,1,0
-18174,Philippines zone IV,conversion,,,,,1701,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,2000-03-07 00:00:00,95.30 2000.93,1,0
-18175,Philippines zone V,conversion,,,,,1702,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,2000-03-07 00:00:00,95.30 2000.93,1,0
-18181,Nord Tunisie,conversion,,,,,1619,Large and medium scale topographic mapping and engineering survey.,9801,,,,,EPSG,1996-09-12 00:00:00,95.30,1,0
-18182,Sud Tunisie,conversion,,,,,1620,Large and medium scale topographic mapping and engineering survey.,9801,,,,,EPSG,1996-09-12 00:00:00,,1,0
-18191,Finland zone 1,conversion,,,,,1536,Large and medium scale topographic mapping and engineering survey.,9807,,,,www.nls.fi/maa/papers/kkj.html,EPSG,1997-07-22 00:00:00,,1,0
-18192,Finland zone 2,conversion,,,,,1537,Large and medium scale topographic mapping and engineering survey.,9807,,,,www.nls.fi/maa/papers/kkj.html,EPSG,1997-07-22 00:00:00,,1,0
-18193,Finland Uniform Coordinate System,conversion,,,,,1095,Large and medium scale topographic mapping and engineering survey.,9807,,,Used by Uniform Coordinate System over all country and also by zone 3 of Basic Coordinate System at larger scales.,www.nls.fi/maa/papers/kkj.html,EPSG,1997-07-22 00:00:00,,1,0
-18194,Finland zone 4,conversion,,,,,1539,Large and medium scale topographic mapping and engineering survey.,9807,,,,www.nls.fi/maa/papers/kkj.html,EPSG,1997-07-22 00:00:00,,1,0
-18201,Palestine Grid,conversion,,,,,1356,Large and medium scale topographic mapping and engineering survey.,9806,,,Also encountered as a Transverse Mercator projection with scale factor of 1.  The difference in conversion caused by the change of formula does not exceed 2m within Israel.  Within the State of Israel superseded by the Israeli CS Grid (EPSG code 18203).,,EPSG,1999-04-22 00:00:00,,1,0
-18202,Palestine Belt,conversion,,,,,1356,Large and medium scale topographic mapping and engineering survey.,9807,,,"Originally constructed as the Palestine Grid - EPSG code 18201. Adopted by the US Army Map Service as ""Palestine Belt"" with change of projection method and false northing (FN). Sometimes seen with unchanged FN of 126867.909.",,EPSG,1999-04-22 00:00:00,,1,0
-18203,Israeli CS,conversion,,,,,2603,Large and medium scale topographic mapping and engineering survey.,9806,,,,Survey of Israel   ftp://ftp.rd.soi.gov.il/doc,EPSG,2002-06-22 00:00:00,2002.34,1,0
-18204,Israeli TM,conversion,,,,,2603,Large and medium scale topographic mapping and engineering survey.,9807,,,Designed to approximate Israeli CRS grid in north-central Israel.,Survey of Israel   ftp://ftp.rd.soi.gov.il/doc,EPSG,2002-06-22 00:00:00,2002.34,1,0
-18211,Guatemala Norte,conversion,,,,,2120,Large and medium scale topographic mapping and engineering survey.,9801,,,,,EPSG,1999-08-16 00:00:00,,1,0
-18212,Guatemala Sur,conversion,,,,,2121,Large and medium scale topographic mapping and engineering survey.,9801,,,,,EPSG,2000-01-06 00:00:00,99.95,1,0
-18221,NGO zone I,conversion,,,,,1741,"Large and medium scale topographic mapping, cadastral and engineering survey.",9807,,,,"J. Danielsen; ""Transformasjoner ved Norges Geografiske Oppm�ling""; Kart Og Plan nr 1; 1982.",EPSG,1999-10-20 00:00:00,,1,0
-18222,NGO zone II,conversion,,,,,1742,"Large and medium scale topographic mapping, cadastral and engineering survey.",9807,,,,"J. Danielsen; ""Transformasjoner ved Norges Geografiske Oppm�ling""; Kart Og Plan nr 1; 1982.",EPSG,1999-10-20 00:00:00,,1,0
-18223,NGO zone III,conversion,,,,,1743,"Large and medium scale topographic mapping, cadastral and engineering survey.",9807,,,,"J. Danielsen; ""Transformasjoner ved Norges Geografiske Oppm�ling""; Kart Og Plan nr 1; 1982.",EPSG,1999-10-20 00:00:00,,1,0
-18224,NGO zone IV,conversion,,,,,1744,"Large and medium scale topographic mapping, cadastral and engineering survey.",9807,,,,"J. Danielsen; ""Transformasjoner ved Norges Geografiske Oppm�ling""; Kart Og Plan nr 1; 1982.",EPSG,1999-10-20 00:00:00,,1,0
-18225,NGO zone V,conversion,,,,,1745,"Large and medium scale topographic mapping, cadastral and engineering survey.",9807,,,,"J. Danielsen; ""Transformasjoner ved Norges Geografiske Oppm�ling""; Kart Og Plan nr 1; 1982.",EPSG,1999-10-20 00:00:00,,1,0
-18226,NGO zone VI,conversion,,,,,1746,"Large and medium scale topographic mapping, cadastral and engineering survey.",9807,,,,"J. Danielsen; ""Transformasjoner ved Norges Geografiske Oppm�ling""; Kart Og Plan nr 1; 1982.",EPSG,1999-10-20 00:00:00,,1,0
-18227,NGO zone VII,conversion,,,,,1747,"Large and medium scale topographic mapping, cadastral and engineering survey.",9807,,,,"J. Danielsen; ""Transformasjoner ved Norges Geografiske Oppm�ling""; Kart Og Plan nr 1; 1982.",EPSG,1999-10-20 00:00:00,,1,0
-18228,NGO zone VIII,conversion,,,,,1748,"Large and medium scale topographic mapping, cadastral and engineering survey.",9807,,,,"J. Danielsen; ""Transformasjoner ved Norges Geografiske Oppm�ling""; Kart Og Plan nr 1; 1982.",EPSG,1999-10-20 00:00:00,,1,0
-18231,India zone I (1975 metres),conversion,,,,,1676,Large and medium scale topographic mapping and engineering survey.,9801,,,BEWARE !  Different yard to metre conversion values have been used in different parts of south Asia. Some areas have changed conversion value with time.,,EPSG,2000-04-23 00:00:00,2000.39,1,0
-18232,India zone IIa (1975 metres),conversion,,,,,1677,Large and medium scale topographic mapping and engineering survey.,9801,,,BEWARE !  Different yard to metre conversion values have been used in different parts of south Asia. Some areas have changed conversion value with time.,,EPSG,2000-04-23 00:00:00,2000.39,1,0
-18233,India zone IIIa (1975 metres),conversion,,,,,1672,Large and medium scale topographic mapping and engineering survey.,9801,,,BEWARE !  Different yard to metre conversion values have been used in different parts of south Asia. Some areas have changed conversion value with time.,,EPSG,2000-04-23 00:00:00,2000.39,1,0
-18234,India zone IVa (1975 metres),conversion,,,,,1673,Large and medium scale topographic mapping and engineering survey.,9801,,,BEWARE !  Different yard to metre conversion values have been used in different parts of south Asia. Some areas have changed conversion value with time.,,EPSG,2000-04-23 00:00:00,2000.39,1,0
-18235,India zone IIb (1975 metres),conversion,,,,,1678,Large and medium scale topographic mapping and engineering survey.,9801,,,BEWARE !  Different yard to metre conversion values have been used in different parts of south Asia. Some areas have changed conversion value with time.,,EPSG,2000-04-23 00:00:00,2000.39,1,0
-18236,India zone I (1962 metres),conversion,,,,,1685,Large and medium scale topographic mapping and engineering survey.,9801,,,BEWARE !  Different yard to metre conversion values have been used in different parts of south Asia. Some areas have changed conversion value with time.,,EPSG,1999-10-20 00:00:00,,1,0
-18237,India zone IIa (1962 metres),conversion,,,,,1686,Large and medium scale topographic mapping and engineering survey.,9801,,,BEWARE !  Different yard to metre conversion values have been used in different parts of south Asia. Some areas have changed conversion value with time.,,EPSG,1999-10-20 00:00:00,,1,0
-18238,India zone IIb (1937 metres),conversion,,,,,1041,Large and medium scale topographic mapping and engineering survey.,9801,,,BEWARE !  Different yard to metre conversion values have been used in different parts of south Asia. Some areas have changed conversion value with time.,,EPSG,2000-04-23 00:00:00,2000.39,1,0
-18240,Libya zone 5,conversion,,,,,1470,Large and medium scale topographic mapping and engineering survey.,9807,,,,Brown and Root,EPSG,2000-03-07 00:00:00,,1,0
-18241,Libya zone 6,conversion,,,,,1471,Large and medium scale topographic mapping and engineering survey.,9807,,,,Brown and Root,EPSG,2000-03-07 00:00:00,,1,0
-18242,Libya zone 7,conversion,,,,,1472,Large and medium scale topographic mapping and engineering survey.,9807,,,,Brown and Root,EPSG,2000-03-07 00:00:00,,1,0
-18243,Libya zone 8,conversion,,,,,1473,Large and medium scale topographic mapping and engineering survey.,9807,,,,Brown and Root,EPSG,2000-03-07 00:00:00,,1,0
-18244,Libya zone 9,conversion,,,,,1474,Large and medium scale topographic mapping and engineering survey.,9807,,,,Brown and Root,EPSG,2000-03-07 00:00:00,,1,0
-18245,Libya zone 10,conversion,,,,,1475,Large and medium scale topographic mapping and engineering survey.,9807,,,,Brown and Root,EPSG,2000-03-07 00:00:00,,1,0
-18246,Libya zone 11,conversion,,,,,1476,Large and medium scale topographic mapping and engineering survey.,9807,,,,Brown and Root,EPSG,2000-03-07 00:00:00,,1,0
-18247,Libya zone 12,conversion,,,,,1477,Large and medium scale topographic mapping and engineering survey.,9807,,,,Brown and Root,EPSG,2000-03-07 00:00:00,,1,0
-18248,Libya zone 13,conversion,,,,,1478,Large and medium scale topographic mapping and engineering survey.,9807,,,,Brown and Root,EPSG,2000-03-07 00:00:00,,1,0
-18251,Korea East Belt,conversion,,,,,1496,Large and medium scale topographic mapping and engineering survey.,9807,,,,Clifford J. Mugnier; Photogrammertric Engineering and Remote Sensing,EPSG,2000-03-07 00:00:00,,1,0
-18252,Korea Central Belt,conversion,,,,,1497,Large and medium scale topographic mapping and engineering survey.,9807,,,,Clifford J. Mugnier; Photogrammertric Engineering and Remote Sensing,EPSG,2000-03-07 00:00:00,,1,0
-18253,Korea West Belt,conversion,,,,,1498,Large and medium scale topographic mapping and engineering survey.,9807,,,,Clifford J. Mugnier; Photogrammertric Engineering and Remote Sensing,EPSG,2000-03-07 00:00:00,,1,0
-18260,Maracaibo Grid (M1),conversion,,,,,1319,Oil exploration.,9801,,,Grid coordinates are (0 0) at Maracaibo Cathedral.,Various oil company sources.,EPSG,2000-03-07 00:00:00,,1,0
-18261,Maracaibo Grid,conversion,,,,,1319,Oil exploration.,9801,,,Grid coordinates are (200000 200000) at Maracaibo Cathedral.,Various oil company sources.,EPSG,2000-03-07 00:00:00,,1,0
-18262,Maracaibo Grid (M3),conversion,,,,,1319,Oil exploration.,9801,,,Grid coordinates are (500000 500000) at Maracaibo Cathedral.,Various oil company sources.,EPSG,2000-03-07 00:00:00,,1,0
-18263,Maracaibo La Rosa Grid,conversion,,,,,1319,Oil exploration.,9801,,,Grid coordinates are (-17044E 29545N) at Maracaibo Cathedral.,Various oil company sources.,EPSG,2000-06-23 00:00:00,,1,0
-18275,Balkans zone 5,conversion,,,,,1709,Large and medium scale topographic mapping and engineering survey.,9807,,,,EPSG,EPSG,2001-06-05 00:00:00,,1,0
-18276,Balkans zone 6,conversion,,,,,1710,Large and medium scale topographic mapping and engineering survey.,9807,,,,EPSG,EPSG,2001-06-05 00:00:00,,1,0
-18277,Balkans zone 7,conversion,,,,,1711,Large and medium scale topographic mapping and engineering survey.,9807,,,,EPSG,EPSG,2001-06-05 00:00:00,,1,0
-18278,Balkans zone 8,conversion,,,,,1712,Large and medium scale topographic mapping and engineering survey.,9807,,,,EPSG,EPSG,2001-06-05 00:00:00,,1,0
-18281,Poland zone I,conversion,,,,,1515,"Civilian topographic mapping, cadastral and engineering survey.",9809,,,,Glowny Urzad Geodezji i Kartografii via EuroGeographics; http://crs.ifag.de/,EPSG,2001-06-05 00:00:00,,1,0
-18282,Poland zone II,conversion,,,,,1516,"Civilian topographic mapping, cadastral and engineering survey.",9809,,,,Glowny Urzad Geodezji i Kartografii via EuroGeographics; http://crs.ifag.de/,EPSG,2001-06-05 00:00:00,,1,0
-18283,Poland zone III,conversion,,,,,1517,"Civilian topographic mapping, cadastral and engineering survey.",9809,,,,Glowny Urzad Geodezji i Kartografii via EuroGeographics; http://crs.ifag.de/,EPSG,2001-06-05 00:00:00,,1,0
-18284,Poland zone IV,conversion,,,,,1518,"Civilian topographic mapping, cadastral and engineering survey.",9809,,,,Glowny Urzad Geodezji i Kartografii via EuroGeographics; http://crs.ifag.de/,EPSG,2001-06-05 00:00:00,,1,0
-18285,Poland zone V,conversion,,,,,1519,"Civilian topographic mapping, cadastral and engineering survey.",9807,,,,Glowny Urzad Geodezji i Kartografii via EuroGeographics; http://crs.ifag.de/,EPSG,2001-06-05 00:00:00,,1,0
-18300,Poland CS92,conversion,,,,,1192,"Mapping at scales of 1:10,000 and smaller",9807,,,See Poland CS2000 zones (codes 18305-08) for cadastral survey and mapping at larger scales.,Glowny Urzad Geodezji i Kartografii via EuroGeographics; http://crs.ifag.de/,EPSG,2001-06-05 00:00:00,,1,0
-18305,Poland CS2000 zone 5,conversion,,,,,1520,"Topographic mapping at scales of 1:5,000 and larger, cadastral and engineering survey.",9807,,,"See Poland CS92 (code 18300) for mapping at 1:10,000 and smaller scales.",Glowny Urzad Geodezji i Kartografii via EuroGeographics; http://crs.ifag.de/,EPSG,2001-06-05 00:00:00,,1,0
-18306,Poland CS2000 zone 6,conversion,,,,,1521,"Topographic mapping at scales of 1:5,000 and larger, cadastral and engineering survey.",9807,,,"See Poland CS92 (code 18300) for mapping at 1:10,000 and smaller scales.",Glowny Urzad Geodezji i Kartografii via EuroGeographics; http://crs.ifag.de/,EPSG,2001-06-05 00:00:00,,1,0
-18307,Poland CS2000 zone 7,conversion,,,,,1522,"Topographic mapping at scales of 1:5,000 and larger, cadastral and engineering survey.",9807,,,"See Poland CS92 (code 18300) for mapping at 1:10,000 and smaller scales.",Glowny Urzad Geodezji i Kartografii via EuroGeographics; http://crs.ifag.de/,EPSG,2001-06-05 00:00:00,,1,0
-18308,Poland CS2000 zone 8,conversion,,,,,1523,"Topographic mapping at scales of 1:5,000 and larger, cadastral and engineering survey.",9807,,,"See Poland CS92 (code 18300) for mapping at 1:10,000 and smaller scales.",Glowny Urzad Geodezji i Kartografii via EuroGeographics; http://crs.ifag.de/,EPSG,2001-06-05 00:00:00,,1,0
-18401,Kp2000 Jylland og Fyn,conversion,,,,,2531,"Topographic mapping at scales of 1:5,000 and larger, cadastral and engineering survey.",9807,,,"See UTM zone 32N (code 16032) for mapping at 1:10,000 and smaller scales.",Kort og Matrikelstyrelsen,EPSG,2001-11-06 00:00:00,,1,0
-18402,Kp2000 Sjaelland,conversion,,,,,2532,"Topographic mapping at scales of 1:5,000 and larger, cadastral and engineering survey.",9807,,,"See UTM zone 32N (code 16032) for mapping at 1:10,000 and smaller scales.",Kort og Matrikelstyrelsen,EPSG,2001-11-06 00:00:00,,1,0
-18403,Kp2000 Bornholm,conversion,,,,,2533,"Topographic mapping at scales of 1:5,000 and larger, cadastral and engineering survey.",9807,,,"See UTM zone 33N (code 16033) for mapping at 1:10,000 and smaller scales.",Kort og Matrikelstyrelsen,EPSG,2001-11-06 00:00:00,,1,0
-18411,French West Africa Senegal zone,conversion,,,,,2548,Small scale topographic mapping.,9807,,,Superseded in 1950 by UTM.,TotatFinaElf,EPSG,2002-01-18 00:00:00,,1,0
-18412,French West Africa Ivory Coast zone,conversion,,,,,2549,Small scale topographic mapping.,9807,,,Superseded in 1950 by UTM.,TotatFinaElf,EPSG,2002-01-18 00:00:00,,1,0
-18413,French West Africa Dahomey zone,conversion,,,,,2550,Small scale topographic mapping.,9807,,,Superseded in 1950 by UTM.,TotatFinaElf,EPSG,2002-01-18 00:00:00,,1,0
-18414,French West Africa Niger zone,conversion,,,,,2551,Small scale topographic mapping.,9807,,,Superseded in 1950 by UTM.,TotatFinaElf,EPSG,2002-01-18 00:00:00,,1,0
-18415,French Equatorial Africa west zone,conversion,,,,,2552,Small scale topographic mapping.,9807,,,Superseded in 1950 by UTM.,TotatFinaElf,EPSG,2002-01-18 00:00:00,,1,0
-18416,French Equatorial Africa central zone,conversion,,,,,2553,Small scale topographic mapping.,9807,,,Superseded in 1950 by UTM.,TotatFinaElf,EPSG,2002-01-18 00:00:00,,1,0
-18417,French Equatorial Africa east zone,conversion,,,,,2554,Small scale topographic mapping.,9807,,,Superseded in 1950 by UTM.,TotatFinaElf,EPSG,2002-01-18 00:00:00,,1,0
-18421,Greenland zone 1 east,conversion,,,,,2556,Topographic mapping,9826,,,,"Kort og Matrikelstyrelsen, Copenhagen.",EPSG,2002-01-26 00:00:00,,1,0
-18422,Greenland zone 2 east,conversion,,,,,2557,Topographic mapping,9826,,,,"Kort og Matrikelstyrelsen, Copenhagen.",EPSG,2002-01-26 00:00:00,,1,0
-18423,Greenland zone 3 east,conversion,,,,,2558,Topographic mapping,9826,,,,"Kort og Matrikelstyrelsen, Copenhagen.",EPSG,2002-01-26 00:00:00,,1,0
-18424,Greenland zone 4 east,conversion,,,,,2559,Topographic mapping,9826,,,,"Kort og Matrikelstyrelsen, Copenhagen.",EPSG,2002-01-26 00:00:00,,1,0
-18425,Greenland zone 5 east,conversion,,,,,2560,Topographic mapping,9826,,,,"Kort og Matrikelstyrelsen, Copenhagen.",EPSG,2002-01-26 00:00:00,,1,0
-18426,Greenland zone 6 east,conversion,,,,,2561,Topographic mapping,9826,,,,"Kort og Matrikelstyrelsen, Copenhagen.",EPSG,2002-01-26 00:00:00,,1,0
-18427,Greenland zone 7 east,conversion,,,,,2562,Topographic mapping,9826,,,,"Kort og Matrikelstyrelsen, Copenhagen.",EPSG,2002-01-26 00:00:00,,1,0
-18428,Greenland zone 8 east,conversion,,,,,2569,Topographic mapping,9826,,,,"Kort og Matrikelstyrelsen, Copenhagen.",EPSG,2002-01-26 00:00:00,,1,0
-18432,Greenland zone 2 west,conversion,,,,,2563,Topographic mapping,9826,,,,"Kort og Matrikelstyrelsen, Copenhagen.",EPSG,2002-01-26 00:00:00,,1,0
-18433,Greenland zone 3 west,conversion,,,,,2564,Topographic mapping,9826,,,,"Kort og Matrikelstyrelsen, Copenhagen.",EPSG,2002-01-26 00:00:00,,1,0
-18434,Greenland zone 4 west,conversion,,,,,2565,Topographic mapping,9826,,,,"Kort og Matrikelstyrelsen, Copenhagen.",EPSG,2002-01-26 00:00:00,,1,0
-18435,Greenland zone 5 west,conversion,,,,,2566,Topographic mapping,9826,,,,"Kort og Matrikelstyrelsen, Copenhagen.",EPSG,2002-01-26 00:00:00,,1,0
-18436,Greenland zone 6 west,conversion,,,,,2567,Topographic mapping,9826,,,,"Kort og Matrikelstyrelsen, Copenhagen.",EPSG,2002-01-26 00:00:00,,1,0
-18437,Greenland zone 7 west,conversion,,,,,2568,Topographic mapping,9826,,,,"Kort og Matrikelstyrelsen, Copenhagen.",EPSG,2002-01-26 00:00:00,,1,0
-18441,CS63 zone A1,conversion,,,,,2772,Large scale topographic mapping and engineering survey.,9807,,,,EPSG,EPSG,2002-06-28 00:00:00,,1,0
-18442,CS63 zone A2,conversion,,,,,2773,Large scale topographic mapping and engineering survey.,9807,,,,EPSG,EPSG,2002-06-28 00:00:00,,1,0
-18443,CS63 zone A3,conversion,,,,,2774,Large scale topographic mapping and engineering survey.,9807,,,,EPSG,EPSG,2002-06-28 00:00:00,,1,0
-18444,CS63 zone A4,conversion,,,,,2775,Large scale topographic mapping and engineering survey.,9807,,,,EPSG,EPSG,2002-06-28 00:00:00,,1,0
-18446,CS63 zone K2,conversion,,,,,2776,Large scale topographic mapping and engineering survey.,9807,,,,EPSG,EPSG,2002-06-28 00:00:00,,1,0
-18447,CS63 zone K3,conversion,,,,,2777,Large scale topographic mapping and engineering survey.,9807,,,,EPSG,EPSG,2002-06-28 00:00:00,,1,0
-18448,CS63 zone K4,conversion,,,,,2778,Large scale topographic mapping and engineering survey.,9807,,,,KazGeodezia,EPSG,2002-06-28 00:00:00,,1,0
-19900,Bahrain State Grid,conversion,,,,,1040,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.30,1,0
-19901,Belge Lambert 50,conversion,,,,,1347,Large and medium scale topographic mapping and engineering survey.,9802,,,"If software cannot handle latitude of false origin of 90 deg N, use latitude of false origin = 50.5 sexagesimal degrees with northing at false origin = 131983.890 m.","""Systemes de reference et formules de transformation en usage en Belgique""; IGN Brussels",EPSG,1999-04-22 00:00:00,95.30  96.29  99.28,1,0
-19902,Belge Lambert 72,conversion,,,,,1347,Large and medium scale topographic mapping and engineering survey.,9803,,,"Rotation from Belge Lambert 50 to Belge Lambert 72 is +29.2985sec. An equivalent using the conventional Lambert Conic Conformal (2SP) method (Belgian Lambert 72, code 19961) was introduced in 2000.","""Systemes de reference et formules de transformation en usage en Belgique""; IGN Brussels",EPSG,1999-04-22 00:00:00,95.30  96.29  99.28,1,0
-19903,Nord de Guerre,conversion,,,,,1369,Obsolete.,9801,,,,,EPSG,1996-09-12 00:00:00,,1,0
-19904,Ghana Metre Grid,conversion,,,,,1104,Large and medium scale topographic mapping and engineering survey.,9807,,,Supersedes Ghana National Grid (code 19959) from 1978.  British foot (Sears 1922) used to convert projection defining parameters.,Ordnance Survey International,EPSG,1995-12-02 00:00:00,95.30  96.29,1,0
-19905,Netherlands East Indies Equatorial Zone,conversion,,,,,1122,Large and medium scale topographic mapping and engineering survey.,9804,,,,US Army Map Service projection tables; 1943.,EPSG,1995-12-02 00:00:00,95.30,1,0
-19906,Iraq zone,conversion,,,,,2294,Large and medium scale topographic mapping and engineering survey.,9801,,,,US Army Map Service projection tables; 1943.,EPSG,1996-04-12 00:00:00,95.30  96.29,1,0
-19907,Iraq National Grid,conversion,,,,,1124,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.30  96.29,1,0
-19908,Irish National Grid,conversion,,,,,1305,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.30  96.29,1,1
-19909,Jamaica (Old Grid),conversion,,,,,1128,Large and medium scale topographic mapping and engineering survey.,9801,,,Superseded by Jamaica (New Grid).,,EPSG,1995-12-02 00:00:00,95.28,1,0
-19910,Jamaica National Grid,conversion,,,,,1128,Large and medium scale topographic mapping and engineering survey.,9801,,,Supersedes Jamaica (Old Grid).,,EPSG,1995-12-02 00:00:00,95.28,1,0
-19911,Laborde Grid,conversion,,,,,1149,Large and medium scale topographic mapping and engineering survey.,9815,,,Can also use transformation method 9813.,,EPSG,1997-11-13 00:00:00,97.613,1,0
-19913,RD Old,conversion,,,,,1275,Large and medium scale topographic mapping and engineering survey.,9809,,,,Nederlandse Commissie voor Geodesie publication 30.,EPSG,1995-12-02 00:00:00,95.30  96.29,1,0
-19914,RD New,conversion,,,,,1275,Large and medium scale topographic mapping and engineering survey.,9809,,,,Nederlandse Commissie voor Geodesie publication 30.,EPSG,1995-12-02 00:00:00,95.30  96.29,1,0
-19915,Aden Zone,conversion,,,,,1257,Large and medium scale topographic mapping and engineering survey.,9801,,,,US Army Map Service projection tables; 1943.,EPSG,1995-12-02 00:00:00,95.28,1,0
-19916,British National Grid,conversion,,,,,1264,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.30,1,0
-19917,New Zealand Map Grid,conversion,,,,,1175,Large and medium scale topographic mapping and engineering survey.,9811,,,Supersedes North and South Island National Grids (codes 18141-2).  Used for topographic mapping.,Dept. of Lands and Surveys Technical Circular 1973/32; 23 Nov 1973.,EPSG,1995-12-02 00:00:00,95.28,1,0
-19919,Qatar National Grid,conversion,,,,,1195,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1995-12-02 00:00:00,95.30  96.29,1,0
-19920,Singapore Grid,conversion,,,,,1210,Large and medium scale topographic mapping and engineering survey.,9806,,,,,EPSG,1995-12-02 00:00:00,95.30  96.29,1,0
-19921,Spain,conversion,,,,,1217,Large and medium scale topographic mapping and engineering survey.,9801,,,Superseded by UTM,,EPSG,1995-12-02 00:00:00,95.28,1,0
-19922,Swiss New Grid,conversion,,,,,1286,Large and medium scale topographic mapping and engineering survey.,9815,,,,"""Die Projektionen der schweizerischen Plan- und Kartenwerke""; J. Bolliger 1967",EPSG,1997-11-13 00:00:00,95.30  96.29  97.27  97.612  97.62,1,0
-19923,Swiss Old Grid,conversion,,,,,1286,Large and medium scale topographic mapping and engineering survey.,9815,,,Superseded by LV03 (19922).,"""Die Projektionen der schweizerischen Plan- und Kartenwerke""; J. Bolliger 1967",EPSG,1997-11-13 00:00:00,95.30  96.29  97.612  97.62,1,0
-19924,Tobago Grid,conversion,,,,,1322,Large and medium scale topographic mapping and engineering survey.,9806,,,,,EPSG,1999-10-20 00:00:00,95.30  96.29  97.231,1,0
-19925,Trinidad Grid,conversion,,,,,1339,Large and medium scale topographic mapping and engineering survey.,9806,,,,,EPSG,1999-10-20 00:00:00,95.30  96.29  97.231,1,0
-19926,Stereo 70,conversion,,,,,1197,Large and medium scale topographic mapping and engineering survey.,9809,,,Supersedes Stereo 33 (code 19927).,,EPSG,1996-04-12 00:00:00,,1,0
-19927,Stereo 33,conversion,,,,,1197,Large and medium scale topographic mapping and engineering survey.,9809,,,Superseded by Stereo 70 (code 19926),,EPSG,1996-04-12 00:00:00,96.29,1,0
-19928,Kuwait TM,conversion,,,,,1310,Large and medium scale topographic mapping and engineering survey.,9807,,,,,EPSG,1996-04-12 00:00:00,,1,0
-19929,Swedish National Projection,conversion,,,,,1225,"Large and medium scale topographic mapping, cadastral and engineering survey.",9807,,,"Used since 1938 superseding 6 old zones.  Longitude of natural origin is 2.5 gon west of Stockholm prime meridian; transformation is also known as ""2.5 gon West of old Stockholm observatory"".",Lantmateriet of Sweden; private communication.,EPSG,1997-11-13 00:00:00,96.29  97.39,1,0
-19930,Greek Grid,conversion,,,,,1106,Large and medium scale topographic mapping and engineering survey.,9807,,,Created for use with GGRS87.,Geodesy Department; Public Petroleum Corporation of Greece.,EPSG,1997-06-16 00:00:00,,1,0
-19931,Egyseges Orszagos Vetuleti,conversion,,,,,1119,Large and medium scale topographic mapping and engineering survey.,9815,,,EOV = Uniform National Projection,http://lazarus.elte.hu/gb/geodez/geod2.htm,EPSG,1997-07-22 00:00:00,,1,0
-19933,Prince Edward Island Stereographic (ATS77),conversion,,,,,1533,Large and medium scale topographic mapping and engineering survey.,9809,,,In use from 1979.  To be phased out in late 1990's.,Geomatics Centre; Nova Scotia Ministry of Housing and Municipal Affairs.,EPSG,1997-11-13 00:00:00,,1,0
-19934,Lithuania 1994,conversion,,,,,1145,Large and medium scale topographic mapping and engineering survey.,9807,,,,HNIT-BALTIC GeoInfoServisas,EPSG,1998-03-12 00:00:00,,1,0
-19935,Rectified Skew Orthomorphic Malaya Grid,conversion,,,,,1690,Large and medium scale topographic mapping and engineering survey.,9812,,,"If using Oblique Mercator method (code 9815), Ec=23505.515 chSe, Nc=21992.646 chSe.",UK Directorate of Overseas Surveys paper,EPSG,1999-10-20 00:00:00,97.231,1,0
-19936,Portuguese National Grid,conversion,,,,,1294,Large and medium scale topographic mapping and engineering survey for military purposes.,9807,,,Original transformation by Gauss-Kruger formula.,Instituto Portugues de Cartografia e Cadastro,EPSG,1998-11-11 00:00:00,95.30  96.29  98.42,1,0
-19937,Tunisia Mining Grid,conversion,,,,,1618,Minerals licencing,9816,,,Origin: Djebel Kebar,Mining decree of 1st January 1953,EPSG,1999-11-15 00:00:00,99.81,1,0
-19938,Estonian National Grid,conversion,,,,,1090,Large and medium scale topographic mapping and engineering survey.,9802,,,Coordinates at the projection origin match those of TM Baltic 93.,http://www.geo.ut.ee/~raivo/estcoord.html,EPSG,1999-04-22 00:00:00,99.28,1,0
-19939,TM Baltic 93,conversion,,,,,1646,Large and medium scale topographic mapping and engineering survey.,9807,,,,http://www.geo.ut.ee/~raivo/estcoord.html,EPSG,1998-12-14 00:00:00,,1,0
-19940,Levant Zone,conversion,,,,,1623,Large and medium scale topographic mapping and engineering survey.,9817,,,Superseded by projection using full Lambert formula  (EPSG code 19948) from 1973.,US Army Map Service projection tables; 1943.,EPSG,1999-04-22 00:00:00,,1,0
-19941,Brazil Polyconic,conversion,,,,,1053,Small scale mapping,9818,,,,PetroBras,EPSG,1999-10-20 00:00:00,99.55,1,0
-19942,British West Indies Grid,conversion,,,,,2295,Large and medium scale topographic mapping and engineering survey.,9807,,,,"UK Royal Engineers projection tables P10/25, 1943.",EPSG,1999-04-22 00:00:00,,1,0
-19943,Barbados National Grid,conversion,,,,,1042,Large and medium scale topographic mapping and engineering survey.,9807,,,Superseded British West Indies Grid (19942) after 1983.,Ordnance Survey of Great Britain,EPSG,1999-04-22 00:00:00,,1,0
-19944,Quebec Lambert Projection,conversion,,,,,1368,Medium and small scale mapping,9802,,,,Service de la Cartographie; Minist�re des Ressources Naturelles; Quebec,EPSG,1999-10-22 00:00:00,,1,0
-19945,New Brunswick Stereographic (ATS77),conversion,,,,,1447,Large and medium scale topographic mapping and engineering survey.,9809,,,In use from 1979.  To be phased out in late 1990's.,New Brunswick Geographic Information Corporation land and water information standards manual.,EPSG,1999-10-20 00:00:00,99.61,1,0
-19946,New Brunswick Stereographic (NAD83),conversion,,,,,1447,Large and medium scale topographic mapping and engineering survey.,9809,,,In use from 1999.,New Brunswick Geographic Information Corporation land and water information standards manual.,EPSG,1999-10-20 00:00:00,,1,0
-19947,Austria Lambert,conversion,,,,,1037,Medium and small scale mapping,9802,,,,Bundesamt f�r Eich- und Vermessungswesen,EPSG,2000-01-07 00:00:00,99.94,1,0
-19948,Syria Lambert,conversion,,,,,1623,Large and medium scale topographic mapping and engineering survey.,9801,,,Superseded Levant zone using same parameters but truncated near-conformal method (code 19940) from 1973.,IGN Paris,EPSG,1999-10-20 00:00:00,,1,0
-19949,Levant Stereographic,conversion,,,,,1623,Large and medium scale topographic mapping and engineering survey.,9809,,,Used  prior to World War II for cadastral and large scale topographic mapping.,IGN Paris,EPSG,1999-10-20 00:00:00,,1,0
-19950,Landesvermessung 1995,conversion,,,,,1286,Large and medium scale topographic mapping and engineering survey.,9815,,,,Bundesamt f�r Landestopographie.  Aufbau der Landesvermessung der Schweiz 'LV95' Teil 3: Terrestrische Bezugssysteme und Bezugsrahmen. L+T 1999.,EPSG,1999-10-20 00:00:00,,1,0
-19951,Nakhl e Taqi Oblique Mercator,conversion,,,,,1338,Large and medium scale topographic mapping and engineering survey.,9815,,,Used only for terminal site.,Total-Fina,EPSG,1999-10-20 00:00:00,,1,0
-19952,Krovak,conversion,,,,,1306,Large and medium scale topographic mapping and engineering survey.,9819,,,,Research Institute for Geodesy Topography and Cartography (VUGTK); Prague.,EPSG,2000-03-07 00:00:00,,1,0
-19953,Qatar Grid,conversion,,,,,1346,Large and medium scale topographic mapping and engineering survey.,9806,,,,Maersk Oil and Gas,EPSG,2000-03-07 00:00:00,,1,0
-19954,Suriname Old TM,conversion,,,,,1222,Large and medium scale topographic mapping and engineering survey.,9807,,,Introduced in 1975.  Superseded by Suriname TM in 1979.,Shell International,EPSG,2000-06-10 00:00:00,,1,0
-19955,Suriname TM,conversion,,,,,1222,Large and medium scale topographic mapping and engineering survey.,9807,,,Superseded Suriname Old TM in 1979 (scale factor changed).,Shell International,EPSG,2000-06-10 00:00:00,,1,0
-19956,Rectified Skew Orthomorphic Borneo Grid (chains),conversion,,,,,1362,Large and medium scale topographic mapping and engineering survey.,9815,,,See 19957 and 19958 for feet and metres versions. If using Hotine Oblique Mercator method (code 9812) FE = FN = 0 chSe.  Being superseded by metric version (code 19958).,Directorate of Colonial Surveys projection tables 1954 revision.,EPSG,2002-07-13 00:00:00,2002.47,1,0
-19957,Rectified Skew Orthomorphic Borneo Grid (feet),conversion,,,,,1851,Large and medium scale topographic mapping and engineering survey.,9815,,,See 19956 and 19958 for chains and metres versions. If using Hotine Oblique Mercator method (code 9812) FE = FN = 0 ftSe.   Being superseded by metric version (code 19958).,EPSG unit conversion of Directorate of Colonial Surveys projection tables 1954 revision.,EPSG,2002-07-13 00:00:00,2002.47,1,0
-19958,Rectified Skew Orthomorphic Borneo Grid (metres),conversion,,,,,1362,Large and medium scale topographic mapping and engineering survey.,9815,,,See 19956 and 19957 for chains and feet versions.  Uses Sear's 1922 British yard-metre ratio as given by Bomford as 39.370147 inches per metre.  If using Hotine Oblique Mercator method (code 9812) FE = FN = 0 m.,EPSG unit conversion of Directorate of Colonial Surveys projection tables 1954 revision.,EPSG,2000-10-19 00:00:00,,1,0
-19959,Ghana National Grid,conversion,,,,,1104,Large and medium scale topographic mapping and engineering survey.,9807,,,Superseded by Ghana metric grid (code 19904).,Ordnance Survey International,EPSG,2000-10-19 00:00:00,,1,0
-19960,Prince Edward Isl. Stereographic (NAD83),conversion,,,,,1533,Large and medium scale topographic mapping and engineering survey.,9809,,,False Easting and False Northing changed from values used with ATS77  (which were FE=700000m; FN=400000m) to these new values when used with NAD83 (CSRS).   New values are FE=400000m; FN=800000m; adopted in 2000.,PEI Department of Transportation & Public Works; Mr. Serge Bernard,EPSG,2000-10-19 00:00:00,,1,0
-19961,Belgian Lambert 72,conversion,,,,,1347,Large and medium scale topographic mapping and engineering survey.,9802,,,"Introduced in 2000. Equivalent to Belge Lambert 72 (code 19902).  
-If software cannot handle latitude of false origin of 90 deg N, use latitude of false origin = 50� 47' 57.704"" with northing at false origin = 165 372.956 m.",IGN Brussels www.ngi.be/FR/FR2-1-5-1.shtm and EuroGeographics; http://crs.ifag.de/,EPSG,2000-10-19 00:00:00,,1,0
-19962,Irish Transverse Mercator,conversion,,,,,1305,Large and medium scale topographic mapping and engineering survey.,9807,,,,Ordnance Survey of Ireland,EPSG,2000-10-19 00:00:00,,1,0
-19963,Sierra Leone New Colony Grid,conversion,,,,,1342,Topographic mapping and engineering survey.,9807,,,Supersedes the Sierra Leone Colony Grid. New grid is 422.3 ft west and 112.1 ft south of old grid.,Ordnance Survey International,EPSG,2001-06-05 00:00:00,,1,0
-19964,New War Office Sierra Leone Grid,conversion,,,,,1342,Topographic mapping and engineering survey.,9807,,,Supersedes the War Office Sierra Leone Grid. New grid is 422.3 ft west and 112.1 ft south of old grid.,Ordnance Survey International,EPSG,2001-06-05 00:00:00,,1,0
-19965,US National Atlas Equal Area,conversion,,,,,1245,Statistical mapping,9821,,,,"United States Geological Survey, Western Geographic Science Center.",EPSG,2001-06-05 00:00:00,,1,0
-19966,Luxembourg Gauss,conversion,,,,,1146,Large and medium scale topographic mapping and engineering survey.,9807,,,,Administration du Cadastre et de la Topographie via EuroGeographics; http://crs.ifag.de/,EPSG,2001-06-05 00:00:00,,1,0
-19967,Slovenia Grid,conversion,,,,,1212,Large and medium scale topographic mapping and engineering survey.,9807,,,,Geodetska Uprava Republike Slovenije via EuroGeographics; http://crs.ifag.de/,EPSG,2001-06-05 00:00:00,,1,0
-19968,Plate Carree,conversion,,,,,1262,Graticule coordinates in rectangular Cartesian form.,9823,,,Origin at intersection of equator and prime meridian.,EPSG,EPSG,2001-06-05 00:00:00,,1,0
-19969,Portuguese Grid,conversion,,,,,1294,Large and medium scale topographic mapping and engineering survey.,9807,,,Original transformation by Gauss-Kruger formula.,Instituto Portugues de Cartografia e Cadastro via EuroGeographics; http://crs.ifag.de/,EPSG,2001-06-05 00:00:00,,1,0
-19971,New Zealand Transverse Mercator,conversion,,,,,1175,Large and medium scale topographic mapping and engineering survey.,9807,,,,Land Information New Zealand,EPSG,2001-08-28 00:00:00,,1,0
-19972,Irish Grid,conversion,,,,,1305,Large and medium scale topographic mapping and engineering survey.,9807,,,Defined as part of the 1965 and 1975 mapping adustments in which the scale factor was introduced as a best fit to retain existing grid coordinates.,Ordnance Survey of Ireland.,EPSG,2001-11-06 00:00:00,,1,0
-19973,Irish National Grid,conversion,,,,,2530,Large and medium scale topographic mapping and engineering survey.,9807,,,Used only with the 1952 geodetic adjustment. Superseded by the 1975 Mapping Adjustment: see code 19972.,Ordnance Survey of Northern Ireland.,EPSG,2001-11-06 00:00:00,,1,0
-19974,Modified Portuguese Grid,conversion,,,,,1294,Large and medium scale topographic mapping and engineering survey.,9807,,,Applied to Datum 73. Grid position at origin is coincident with the unmodified grid applied to Lisbon datum.,Instituto Portugues de Cartografia e Cadastro via EuroGeographics; http://crs.ifag.de/,EPSG,2001-11-06 00:00:00,,1,0
-19975,Trinidad Grid (Clarke's feet),conversion,,,,,1339,Oil industry exploration and production.,9806,,,"Foot version of EPSG code 19925. Not an official system, but used by some US-based organisations including Amoco Trinidad.",BP,EPSG,2002-02-12 00:00:00,,1,0
-19976,ICN Regional,conversion,,,,,1251,Small scale topographic and geological mapping.,9802,,,,Institute Cartografica Nacional,EPSG,2002-02-12 00:00:00,,1,0
-19977,Aramco Lambert,conversion,,,,,1206,Oil industry exploration and production.,9802,,,Used by Saudi Aramco when area of interest crosses UTM zone boundary. Adopted by partners for Core Venture 1 (South Ghawar) area.,Saudi Aramco,EPSG,2002-02-12 00:00:00,,1,0
-19978,Hong Kong 1980 Grid,conversion,,,,,1118,"Large scale topographic mapping, cadastral and engineering survey.",9807,,,"Grid origin is Partiridge Hill triangulation station (old trig ""2"").","Survey and Mapping Office, Lands Department. Http://www.info.gov.hk/landsd/mapping/tindex.htm",EPSG,2002-06-22 00:00:00,,1,0
-19979,Portugal Bonne,conversion,,,,,1294,"1:50,000 topographic mapping.",9828,,,,"Instituto Portugues de Cartografia e Cadastro, http://www.ipcc.pt/portuguese/produtos/cartografia/50m.html",EPSG,2002-07-13 00:00:00,,1,0
diff --git a/src/tiff/csv/coordinate_operation_method.csv b/src/tiff/csv/coordinate_operation_method.csv
deleted file mode 100644
index 066de77..0000000
--- a/src/tiff/csv/coordinate_operation_method.csv
+++ /dev/null
@@ -1,1513 +0,0 @@
-"COORD_OP_METHOD_CODE","COORD_OP_METHOD_NAME","REVERSE_OP","FORMULA","EXAMPLE","REMARKS","INFORMATION_SOURCE","DATA_SOURCE","REVISION_DATE","CHANGE_ID","DEPRECATED"
-9601,Longitude rotation,1,Target_longitude = Source_longitude + longitude_offset.,,This transformation allows calculation of the longitude of a point in the target system by adding the parameter value to the longitude value of the point in the source system.,EPSG guidance note #7.,EPSG,1999-11-12 00:00:00,99.79,0
-9602,Geographic/geocentric conversions,1,"Latitude, P, and Longitude, L, in terms of Geographic Coordinate Reference System A may 
-be expressed in terms of a geocentric (earth centred) Cartesian coordinate reference system X, Y, Z 
-with the Z axis corresponding with the Polar axis positive northwards, the X axis through 
-the intersection of the Greenwich meridian and equator, and the Y axis through the 
-intersection of the equator with longitude 90 degrees E. If the prime meridian for geogCRS A is not 
-Greewich, longitudes must first be transformed to their Greenwich equivalent. If the earth's 
-spheroidal semi major axis is a, semi minor axis  b, and inverse flattening 1/f,  then
-
-   XA=   (nu + hA) cos P cos L
-   YA=   (nu + hA) cos P sin L
-   ZA=  ((1 - e^2) nu + hA) sin P
-
-where nu is the prime vertical radius of curvature at latitude P and is equal to 
-   nu = a /(1 - e^2*sin^2(P))^0.5,
-   P and L are respectively the latitude and longitude (related to Greenwich) of the point 
-   h is height above the ellipsoid, (topographic height plus geoidal height), and
-   e is the eccentricity of the ellipsoid where e^2 = (a^2 -b^2)/a^2 = 2f -f^2
-                                                                                                                                                 
-Cartesian coordinates in geocentric coordinate reference system B may be used to derive geographical coordinates in terms of geographic coordinate reference system B by:
-   P   =  arctan (ZB + e^2* nu*sin P) / (XB^2 + YB^2)^0.5 by iteration
-   L   = arctan YB/XB
-   hB  =  XB sec L sec P  - nu
-
-where LB is relative to Greenwich. If the geographic system has a non Greenwich prime 
-meridian, the Greenwich value of the local prime meridian should be applied to longitude.
-
-(Note that h is the height above the ellipsoid. This is the height value which is 
-delivered by Transit and GPS satellite observations but is not the topographic 
-height value which is normally used for national mapping and levelling operations. 
-The topographic height is usually the height above mean sea level or an alternative 
-level reference for the country. If one starts with a topographic height,  it will be 
-necessary to convert it to an ellipsoid height before using the above transformation 
-formulas. h = N + H, where N is the geoid height above the ellipsoid at the point 
-and is sometimes negative, and H is the height of the point above the geoid. The 
-height above the geoid is often taken to be that above mean sea level, perhaps with 
-a constant correction applied. Geoid heights of points above the nationally used 
-ellipsoid may not be readily available. For the WGS84 ellipsoid the value of N, 
-representing the height of the geoid relative to the ellipsoid, can vary between 
-values of -100m in the Sri Lanka area to +60m in the North Atlantic.)","Consider a North Sea point with coordinates derived by GPS satellite in the WGS 84 geographical coordinate system with coordinates of:
-
-           latitude    53 deg 48 min 33.82 sec N, 
-           longitude 02 deg 07 min 46.38 sec E, 
-    and ellipsoidal height 73.0m, 
-
-whose coordinates are required in terms of the ED50 geographical coordinate system which takes the International 1924 ellipsoid. The three parameter datum shift from WGS 84 to ED50 for this North Sea area is given as dX = +84.87m, dY = +96.49m, dZ = +116.95m. 
-
-The WGS 84 geographical coordinates convert to the following geocentric values using the above formulas for X, Y, Z:
-
-   XA = 3771 793.97m
-   YA =   140 253.34m
-   ZA = 5124 304.35m
-
-Applying the quoted datum shifts to these, we obtain new geocentric values now related to ED50:
-
-   XB = 3771 878.84m
-   YB =   140 349.83m
-   ZB = 5124 421.30m
-
-These convert to ED50 values on the International 1924 ellipsoid as:
-           latitude    53 deg 48 min 36.565 sec N, 
-           longitude 02 deg 07 min 51.477 sec E, 
-    and ellipsoidal height 28.02 m, 
-
-Note that the derived height is referred to the International 1924 ellipsoidal surface and will need a further correction for the height of the geoid at this point in order to relate it to Mean Sea Level.","This is a parameter-less conversion.   It is often concatenated in applications with the 3- or 7-parameter transformations 9603, 9606 and 9607 to form a geographic to geographic transformation.","EPSG guidance note #7 from ""Transformation from spatial to geographical coordinates""; B [...]
-9603,Geocentric translations,1,Xt = Xs + dX;  Yt = Ys + dY;  Zt = Zs + dZ,"Given a three parameter datum shift from WGS 84 to ED50 for this North Sea area is given as 
-dX = +84.87m, dY = +96.49m, dZ = +116.95m. 
-
-The WGS84 geographical coordinates convert to the following WGS 84 geocentric values using 
-the above formulas for X, Y, Z:
-
-   XA = 3771 793.97m
-   YA =   140 253.34m
-   ZA = 5124 304.35m
-
-Applying the given datum shifts to these, we obtain new geocentric values now related 
-to ED50:
-
-   XB = 3771 878.84m
-   YB =   140 349.83m
-   ZB = 5124 421.30m",This transformation allows calculation of coordinates in the target system by adding the parameter value to the corresponding coordinate values of the point in the source system.,EPSG guidance note #7.,EPSG,1996-09-18 00:00:00,,0
-9604,Molodenski,1,See information source.,See information source.,,,EPSG,1996-09-18 00:00:00,,0
-9605,Abridged Molodenski,1,"As an alternative to the computation of the new latitude, longitude and height above ellipsoid in discrete steps through geocentric coordinates, the changes in these geographic coordinates may be derived directly by formulas derived by Molodenski. Abridged versions of these formulas, which are quite satisfactory for three parameter transformations, are as follows:
-
-Dlat "" = [(-dX*sin(lat)*cos(lon)) - (dY*sin(lat)*sin(lon)) + (dZ*cos(lat)) + (((a*Df) + (f*Da))*sin(2*lat))] / (rho * sin(1""))
-
-Dlon "" = (-dX*sin(lon) + dY*cos(lon)) / ((nu*cos(lat)) * sin(1""))
-
-Dh = (dX*cos(lat)*cos(lon)) + (dY*cos(lat)*sin(lon)) + (dZ*sin(lat)) + ((a*Df + f*Da)*(sin(lat)^2)) - Da
-
-where the dX, dY and dZ terms are as before, and rho and nu are the meridian and prime vertical radii of curvature at the given latitude (lat) on the first ellipsoid, Da is the difference in the semi-major axes (a1 - a2) of the first and second ellipsoids and Df  is the difference in the flattening of the two ellipsoids.
-
-The formulas for Dlat and Dlon indicate changes in latitude and longitude in arc-seconds.",See information source.,"This transformation is a truncated Taylor series expansion of a transformation between two geographic coordinate systems, modelled as a set of geocentric translations.",EPSG guidance note #7.,EPSG,1999-04-22 00:00:00,99.01,0
-9606,Position Vector 7-param. transformation,1,"Transformation of coordinates from one geographic coordinate reference system into another (also known as a ""datum transformation"") is usually carried out as an implicit concatenation of three transformations:
-[geographical to geocentric >> geocentric to geocentric >> geocentric to geographic]
-
-The middle part of the concatenated transformation, from geocentric to geocentric, is usually described as a simplified 7-parameter Helmert transformation, expressed in matrix form with 7 parameters, in what is known as the ""Bursa-Wolf"" formula:
-
-   (Xt)             (  1       -Rz    +Ry)      (Xs)     (dX)
-   (Yt)  =  M *  ( +Rz      1      -Rx)  *  (Ys)  + (dY)
-   (Zt)              ( -Ry   +Rx       1 )      (Zs)      (dZ)
-
-The parameters are commonly referred to defining the transformation ""from source coordinate reference system to target coordinate reference system"", whereby (Xs, Ys, Zs) are the coordinates of the point in the source geocentric coordinate reference system and (Xt, Yt, Zt) are the coordinates of the point in the target geocentric coordinate reference system.  But that does not define the parameters uniquely; neither is the definition of the parameters implied in the formula, as is often [...]
-
-(dX, dY, dZ)   :Translation vector, to be added to the point's position vector in the source coordinate reference system in order to transform from source system to target system; also: the coordinates of the origin of the source coordinate reference system in the target coordinate reference system.
-
-(Rx, Ry, Rz)   :Rotations to be applied to the point's vector.  The sign convention is such that a positive rotation about an axis is defined as a clockwise rotation of the position vector when viewed from the origin of the Cartesian coordinate reference system in the positive direction of that axis; e.g. a positive rotation about the Z-axis only from source system to target system will result in a larger longitude value for the point in the target system.  Although rotation angles may b [...]
-
-M                  :The scale correction to be made to the position vector in the source coordinate reference system in order to obtain the correct scale in the target coordinate reference system. M = (1 + dS*10^-6), where dS is the scale correction expressed in parts per million. 
-
-<<<<<This text continues in the description of the Coordinate Frame Rotation formula>>>>>","Input point: 
-Coordinate reference system: WGS 72 (geographic 3D)
-  Latitude =   55 deg 00 min 00 sec 
-  Longitude =  4 deg 00 min 00 sec 
-  Ellipsoidal height =  0 m
-
-This transforms to Cartesian geocentric coords:
-    X = 3 657 660.66 (m)  
-    Y =    255 768.55 (m)
-    Z = 5 201 382.11 (m)
-
-Transformation parameters WGS 72 to WGS 84:
-   dX (m) = 0.000 
-   dY (m) = 0.000 
-   dZ (m) = +4.5
-   RX ("") = 0.000 
-   RY ("") = 0.000
-   RZ ("") = +0.554
-   Scale (ppm) = +0.219
-
-Application of the 7 parameter Position Vector Transformation results in WGS 84 coordinates of:
-   X = 3 657 660.78 (m)
-   Y =    255 778.43 (m)
-   Z = 5 201 387.75 (m)
-
-This converts into:
-   Latitude =   55 deg 00 min 00.090 sec
-   Longitude =  4 deg 00 min 00.554 sec
-   Ellipsoidal height =  +3.22 m
-on the WGS 84 geographic 3D coordinate reference system.",Note the analogy with the Coordinate Frame Rotation (code 9607) but beware of the differences!  The Position Vector convention is used by IAG and recommended by ISO 19111.,EPSG guidance note #7.,EPSG,1996-09-18 00:00:00,98.16,0
-9607,Coordinate Frame rotation,1,"<<<<<This text is continued from the description of the Position Vector Transformation formula>>>>>
-
-Although being common practice particularly in the European E&P industry, the Position Vector Transformation sign convention is not universally accepted.  A variation on this formula is also used, particularly in the USA E&P industry.  That formula is based on the same definition of translation and scale parameters, but a different definition of the rotation parameters.  The associated convention is known as the ""Coordinate Frame Rotation"" convention (EPSG coordinate operation method c [...]
-The formula is:
-
-   (X�)             (  1      +Rz      -Ry)     (X)      (dX)
-   (Y�)  =  M *  ( -Rz       1      +Rx)  * (Y)  +  (dY)
-   (Z�)              ( +Ry   -Rx        1 )     (Z)       (dZ)
-
-and the parameters are defined as:
-
-(dX, dY, dZ)   : Translation vector, to be added to the point's position vector in the source coordinate reference system in order to transform from source coordinate reference system to target coordinate reference system; also: the coordinates of the origin of source coordinate reference system in the target frame.
-
-(Rx, Ry, Rz)   : Rotations to be applied to the coordinate reference frame.  The sign convention is such that a positive rotation of the frame about an axis is defined as a clockwise rotation of the coordinate reference frame when viewed from the origin of the Cartesian coordinate reference system in the positive direction of that axis, that is a positive rotation about the Z-axis only from source coordinate reference system to target coordinate reference system will result in a smaller  [...]
-
-M                  : The scale factor to be applied to the position vector in the source coordinate reference system  in order to obtain the correct scale of the target coordinate reference system. M = (1+dS*10^-6), where dS is the scale correction expressed in parts per million.
-
-In the absence of rotations the two formulas are identical; the difference is solely in the rotations. The name of the second method reflects this.
-
-Note that the same rotation that is defined as positive in the first method is consequently negative in the second and vice versa.  It is therefore crucial that the convention underlying the definition of the rotation parameters is clearly understood and is communicated when exchanging datum transformation parameters, so that the parameters may be associated with the correct coordinate transformation method (algorithm).","The same example as for the Position Vector Transformation (coordi [...]
-
-Transformation parameters Coordinate Frame Rotation convention:
-dX (m) = 0.000 
-dY (m) = 0.000 
-dZ (m) = +4.5 
-RX ("") = 0.000
-RY ("") = 0.000
-RZ ("") = -0.554
-Scale (ppm) = +0.219
-
-Please note that only the rotation has changed sign as compared to the Position Vector Transformation.",Note the analogy with the Position Vector transformation (code 9606) but beware of the differences!  The Position Vector convention is used by IAG and recommended by ISO 19111.,EPSG guidance note #7.,EPSG,1996-09-18 00:00:00,,0
-9613,NADCON,1,See information source.,,Geodetic transformation operating on geographic coordinate differences by bi-linear interpolation.  Input expects longitudes to be positive west.,US Coast and geodetic Survey - http://www.ngs.noaa.gov,EPSG,1996-09-18 00:00:00,,0
-9614,NTv1,1,See information source.,,Geodetic transformation operating on geographic coordinate differences by bi-linear interpolation.  Superseded in 1997 by NTv2 (transformation method code 9615).   Input expects longitudes to be positive west.,Geomatics Canada - Geodetic Survey Division.,EPSG,1997-11-13 00:00:00,,0
-9615,NTv2,1,See information source.,,Geodetic transformation operating on geographic coordinate differences by bi-linear interpolation.  Supersedes  NTv1 (transformation method code 9614).  Input expects longitudes to be positive west.,http://www.geod.nrcan.gc.ca/products/html-public/GSDapps/English/NTv2_Fact_Sheet.html,EPSG,1997-11-13 00:00:00,,0
-9616,Vertical Offset,1,"Xt = [(Xs * Us) + (A * Ua)] * (m / Ut)
-
-where 
-Xt = value in the target vertical coordinate reference system.
-
-Xs = value in the source vertical coordinate reference system; 
-
-A is the value of the origin of the target system in the source system.
-
-m is unit direction multiplier (m=1 if both systems are height or both are depth; m = �1 if one system is height and the other system is depth; the value of m is implied through the vertical coordinate reference system type attribute).
-
-Us Ut and Ua are unit conversion ratios to metres for the source and target systems and the offset value A respectively.",,This transformation allows calculation of height (or depth) in the target system by adding the parameter value to the height (or depth)-value of the point in the source system.,EPSG guidance note #7.,EPSG,1999-11-12 00:00:00,99.79,0
-9617,Madrid to ED50,0,"The polynomial expressions are:
-
-      dLat seconds = A0 + (A1*lat) + (A2*lon) + (A3*H)
-      dLon seconds = B00 + B0 + (B1*lat) + (B2*lon) + (B3*H)
-
-where latitude lat and longitude lon are in decimal degrees referred to the Madrid 1870 (Madrid) geographic coordinate reference system and H is gravity-related height in metres.  B00 is the longitude (in seconds) of the Madrid meridian measured from the Greenwich meridian; it is the value to be applied to a longitude relative to the Madrid meridian to transform it to a longitude relative to the Greenwich meridan.
-
-The results of these expressions are applied through the formulae:
-Lat(ED50) = Lat(M1870(M))  + dLat
-and Lon(ED50) = Lon(M1870(M))  + dLon.","Input point coordinate system: Madrid 1870 (Madrid) (geographic 3D)
-   Latitude    =  42 deg 38 min 52.77 sec N 
-                    = 42.647992 degrees
-   Longitude  =    3 deg 39 min 34.57 sec E of Madrid
-                     = +3.659603 degrees from the Madrid meridian.
-   Height        =  0 m
-
-For the north zone transformation:
-A1 = 11.328779
-A2 = -0.1674
-A3 = -0.03852
-A4 = 0.0000379
-B0 = -13276.58
-B1 = 2.5079425
-B2 = 0.8352
-B3 = -0.00864
-B4 = -0.0000038
-
-dLat = +4.05 seconds
-
-Then ED50 latitude = 42 deg 38 min 52.77 sec N + 4.05sec
-                               = 42 deg 38 min 56.82 sec N
-
-
-dLon = -13270.54 seconds  = -3 deg 41 min 10.54 sec
-
-Then ED50 longitude = 3 deg 39 min 34.57 sec E - 3 deg 41 min 10.54 sec
-                                  = 0 deg 01 min 35.97 sec W of Greenwich.",,"EPSG guidance note #7, after Institut de Geomatica; Barcelona.",EPSG,2000-03-07 00:00:00,99.284  99.82  99.64,0
-9618,Geographical and Height Offsets,1,"Lat_T = Lat_S + latitude_offset 
-Lon_T = Lon_S + longitude_offset 
-EllipsoidHeight_T = GravityHeight_S + gravity-related_to_ellipsoid_height_offset.",,This transformation allows calculation of coordinates in the target system by adding the parameter value to the coordinate values of the point in the source system.,EPSG guidance note #7.,EPSG,1999-11-12 00:00:00,99.79,0
-9619,Geographical Offsets,1,"Lat_T = Lat_S + latitude_offset 
-Lon_T = Lon_S + longitude_offset.",,This transformation allows calculation of coordinates in the target system by adding the parameter value to the coordinate values of the point in the source system.,EPSG guidance note #7.,EPSG,1999-11-12 00:00:00,99.79,0
-9620,Norway Offshore Interpolation,0,See information source.,,,"Norwegian Mapping Authority note of 13-Feb-1991 ""Om Transformasjon mellom Geodetiske Datum i Norge"".",EPSG,1999-04-22 00:00:00,,0
-9621,Similarity transformation,0,"The similarity transformation in algebraic form is:
-
-XT = XT0  + XS. dS. cos q  + YS. dS . sin q
-YT = YT0  � XS. dS. sin q  + YS. dS . cos q
-
-where:
-XT0 , YT0    =   the coordinates of the origin point of the source coordinate reference system expressed in the target coordinate reference system;
-1+dS           =  the length of one unit in the source coordinate reference system expressed in units of the target coordinate reference system;
-q                  = the angle about which the axes of the source coordinate reference system need to be rotated to coincide with the axes of the target coordinate reference system, counter-clockwise being positive. Alternatively, the bearing of the source coordinate reference system Y-axis measured relative to target coordinate reference system north.
-
-The similarity transformation can also be described as a special case of the parametric affine transformation where coefficients A1 = B2  and  A2 =  - B1.
-
-Reversibility
-In contrast with the affine transformation, the similarity transformation parameters are reversible, but only on the condition that the scale difference between the two coordinate systems is small (order of several parts per million).  Then dS is the deviation from unity of the ratio of the units of measure of the two coordinate reference systems. In these cases the reverse transformation would require a scale correction of 1/(1+dS) * (1-dS).  This enables usage of the same scale and rot [...]
-Target coordinate system:	Campo Inchauspe / Argentina 2 (projected 2D system)
-
-Note that for the Astra Minas Grid the coordinate axes are:
-X  (positive axis oriented north)
-Y  (positive axis oriented west)
-and coordinates are quoted in that order.
-
-whereas for Campo Inchauspe / Argentina 2 the axes are:
-X (positive axis oriented north)
-Y (positive axis oriented east)
-and coordinates are quoted in that order.
-
-Thus the Astra Minas grid X and Y axes map to the Campo Inchauspe / Argentina 2 Y and X-axes respectively.  With respect to the symbols in the formulas,
-XS  = Astra Minas X
-YS  = Astra Minas Y
-XT  = Campo Inchauspe / Argentina 2 Y
-YT  = Campo Inchauspe / Argentina 2 X
-
-Parameters of the similarity transformation:
-XT0	=	2610200.48 metre
-YT0	=	4905282.73 metre
-*	= 271o 05� 30�  = 271.0916667 degrees
-k	= 0  whence (1+k)=1.0
-
-Forward calculation for Astra Minas point :  X (north) =10000 m, Y (west) =50000 m. 
-
-XS  = Astra Minas X = 10000
-YS  = Astra Minas Y = 50000
-
-Gauss-Kruger zone 2 Easting (Y) = XT = XT0  + XS. dS. cos q  + YS. dS . sin q
-					  = 2610200.48 + (50000 * 1.0 * cos(271.0916667deg)) 
-						+ (10000 * 1.0 * sin(271.0916667deg))
-					  = 2601154.90 m.
-
-Gauss-Kruger zone 2 Northing (X) =YT = YT0  � XS. dS. sin q  + YS. dS . cos q
-				    = 4905282.73 - (50000*1.0* sin(271.0916667deg))
-					+ (10000 * 1.0 * cos(271.0916667deg))
-						    = 4955464.17 m.",Defined for two-dimensional coordinate systems.,EPSG guidance note #7.,EPSG,2000-10-19 00:00:00,2000.83,0
-9622,Affine orthogonal geometric transformation,0,"XT = XT0   +   XS .  k . dSX . cos q   +   YS .  k .  dSY  . sin q
-YT = YT0   �   XS .  k .  dSX . sin q    +   YS .  k .  dSY  . cos q
-
-where:
-
-XT0 ,YT0  = the coordinates of the origin point of the source coordinate reference system, expressed in the target coordinate reference system;
-dSX , dSY  = the length of one unit of the source  axis, expressed in units of the target axis, for the X axes and the Y- axes respectively;
-k = point scale factor of the target coordinate reference system in a chosen reference point;
-q  = the angle through which the source coordinate reference system axes must be rotated to coincide with the target coordinate refderence system axes (counter-clockwise is positive). Alternatively, the bearing (clockwise positive) of the source coordinate reference system Y-axis measured relative to target coordinate reference system north.","Source coordinate system: imaginary 3D seismic acquisition bin grid.  The two axes are orthogonal, but the unit on the I-axis is 25 metres, whilst [...]
-The target projected coordinate system is WGS 84 / UTM Zone 31N and the origin of the bin grid (centre of bin 0,0) is defined at E = 456781.0, N = 5836723.0.  The projected coordinate system point scale factor at the bin grid origin is 0.99984.
-The map grid bearing of the I and J axes are 110* and 20* respectively.  Thus the angle through which both the positive I and J axes need to be rotated to coincide with the positive Easting axis and Northing axis respectively is +20 degrees.
-
-Hence: 
-XT0 ,	=    456 781.0 m
-YT0	= 5 836 723.0 m
-dSX 	= 25
-dSY	= 12.5
-k 	= 0.99984
-q	= +20 degrees
-
-Forward calculation for centre of bin with coordinates: I = 300, J = 247:
-
-XT = Easting   = XT0   +   XS . k . dSX . cos q   +   YS . k . dSY  . sin q    = 464 855.62 m.
-
-YT = Northing = YT0   �   XS . k . dSX . sin q    +   YS . k . dSY  . cos q  = 5 837 055.90 m
-
-Reverse calculation for this point:
-XS = [( XT  � XT0) . cos qY  �  (YT � YT0) . sin qY ] / [k . dSX  . cos (qX � qY)] = 230 bins
-
-YS = [(XT   � XT0) . sin qX   +  (YT � YT0) . cos qX ] / [k . dSY . cos (qX � qY)]  = 162 bins",,EPSG guidance note #7.,EPSG,2000-06-10 00:00:00,,0
-9623,Affine general geometric transformation,0,"The geometric representation of the general affine transformation:
-XT = XT0   +  XS . k . dSX  . cos qX   +  YS . k . dSY  . sin qY
-YT = YT0  �  XS . k . dSX   . sin qX   +  YS . k. dSY  . cos qY 
-where:
-
-XT0 ,YT0  = the coordinates of the origin point of the source coordinate reference system, expressed in the target coordinate reference system;
-dSX , dSY  = the length of one unit of the source axis, expressed in units of the target axis, for the first and second source and target axis pairs respectively;
-qX , qY   = the angles about which the source coordinate reference system axes XS and YS must be rotated to coincide with the target coordinate reference system axes XT and YT respectively (counter-clockwise being positive).
-k = point scale factor of the target coordinate reference system in a chosen reference point;
- 
-Comparing the algebraic representation with the parameters of the parameteric form (code 9624) it can be seen that the parametric and geometric forms of the affine transformation are related as follows:
-A0  =  XT0
-A1  = k . dSX . cos qX  
-A2  = k . dSY . sin qY
-B0  =  YT0
-B1  =   � k . dSX . sin qX
-B2  =   k . dSY . cos qY
-
-Reversibility
-The parameters for an affine transformation cannot be used for the reverse transformation.  However, the reverse transformation is another affine transformation using the same formulas but with different parameters.  The reverse parameter values can be calculated from from the formulae provided above and applying those to same algorithm.  Alternatively the reverse transformation can be described by a different formula, as shown below, using the same parameters as the forward transformation:
-
-XS = [( XT  � XT0) . cos qY  �  (YT � YT0) . sin qY ] / [k . dSX  . cos (qX � qY)]
-YS = [(XT   � XT0) . sin qX   +  (YT � YT0) . cos qX ] / [k . dSY . cos (qX � qY)]",,,EPSG guidance note #7.,EPSG,2000-06-10 00:00:00,,0
-9624,Affine general parametric transformation,0,"XT   =  A0  +  A1. XS  +  A2.YS
-YT   =  B0  +  B1. XS  +  B2.YS
-where
-XT , YT  are the coordinates of a point P in the target coordinate reference system;
-XS , YS   are the coordinates of P in the source coordinate reference system.
-
-Reversibility
-The parameter values for an affine transformation cannot be used for the reverse transformation.  However, the reverse transformation is another affine transformation using the same formulas but with different parameter values.  The reverse parameter values, indicated by a prime (�), can be calculated from those of the forward transformation as follows:
-
-D    = A1 . B2   �   A2 . B1
-A0� = (A2 . B0   �   B2 . A0) / D
-B0� = (B1 . A0   �   A1 . B0) / D
-A1� = +B2 / D
-A2� = � A2 / D
-B1� = � B1 / D
-B2� = +A1 / D",,,EPSG guidance note #7,EPSG,2000-06-10 00:00:00,,0
-9625,General polynomial (2nd-order),0,"The simplest of all polynomials is the general polynomial function. In order to avoid problems of numerical instability this type of polynomial should be used after reducing the input parameters, usually coordinate offsets U and V relative to a central evaluation point, to �manageable� numbers, between �10 and +10 at most.
-
-U = XS - XS0 in defined units (which may not be those of the coordinate reference system),
-V = YS - YS0
-
-Then (XT - XT0) = (XS - XS0) + dX
-         (YT - YT0) = (YS - YS0) + dY 
-or
-XT  = XS - XS0 + XT0 + dX
-YT  = YS - YS0 + YT0 + dY
-
-where
-XT , YT   are coordinates in the target coordinate reference system,
-XS , YS  are coordinates in the source coordinate reference system,
-XS0 , YS0 are coordinates of the evaluation point in the source coordinate reference system,
-XT0 , YT0  are coordinates of the evaluation point in the target coordinate reference system.
-
-and where
-dX = A0 + A1.U + A2.V + A3.U2 + A4.U.V + A5.V2
-dY = B0 + B1.U + B2.V +B3.U2 +B4.U.V +B5.V2",,,EPSG guidance note #7.,EPSG,2000-03-07 00:00:00,,0
-9626,General polynomial (3rd-order),0,"The simplest of all polynomials is the general polynomial function. In order to avoid problems of numerical instability this type of polynomial should be used after reducing the input parameters, usually coordinate offsets U and V relative to a central evaluation point, to �manageable� numbers, between �10 and +10 at most.
-
-U = XS - XS0 in defined units (which may not be those of the coordinate reference system),
-V = YS - YS0
-
-Then (XT - XT0) = (XS - XS0) + dX
-         (YT - YT0) = (YS - YS0) + dY 
-or
-XT  = XS - XS0 + XT0 + dX
-YT  = YS - YS0 + YT0 + dY
-
-where
-XT , YT   are coordinates in the target coordinate reference system,
-XS , YS  are coordinates in the source coordinate reference system,
-XS0 , YS0 are coordinates of the evaluation point in the source coordinate reference system,
-XT0 , YT0  are coordinates of the evaluation point in the target coordinate reference system.
-
-and where
-dX = A0 + A1.U + A2.V + A3.U2 + A4.U.V + A5.V2 + A6.U3 + A7.U2.V + A8.U.V2 + A9.V3
-dY = B0 + B1.U + B2.V +B3.U2 +B4.U.V +B5.V2 + B6.U3 +B7.U2.V +B8.U.V2 +B9.V3",,,EPSG guidance note #7.,EPSG,2000-03-07 00:00:00,,0
-9627,General polynomial (4th-order),0,"The simplest of all polynomials is the general polynomial function. In order to avoid problems of numerical instability this type of polynomial should be used after reducing the input parameters, usually coordinate offsets U and V relative to a central evaluation point, to �manageable� numbers, between �10 and +10 at most.
-
-U = XS - XS0 in defined units (which may not be those of the coordinate reference system),
-V = YS - YS0
-
-Then (XT - XT0) = (XS - XS0) + dX
-         (YT - YT0) = (YS - YS0) + dY 
-or
-XT  = XS - XS0 + XT0 + dX
-YT  = YS - YS0 + YT0 + dY
-
-where
-XT , YT   are coordinates in the target coordinate reference system,
-XS , YS  are coordinates in the source coordinate reference system,
-XS0 , YS0 are coordinates of the evaluation point in the source coordinate reference system,
-XT0 , YT0  are coordinates of the evaluation point in the target coordinate reference system.
-
-and where
-dX = A0 + A1.U + A2.V + A3.U2 + A4.U.V + A5.V2 + A6.U3 + A7.U2.V + A8.U.V2 + A9.V3 + A10.U4 + A11.U3.V + A12.U2.V2 + A13.U.V3 + A14.V4
-
-dY = B0 + B1.U + B2.V +B3.U2 +B4.U.V +B5.V2 + B6.U3 +B7.U2.V +B8.U.V2 +B9.V3 + B10.U4 + B11.U3.V + B12.U2.V2 + B13.U.V3 + B14.V4",,,EPSG guidance note #7.,EPSG,2000-03-07 00:00:00,,0
-9628,Reversible polynomial (2nd-order),1,See EPSG Guidance Note 7.,,Reversibility is subject to constraints.  See Guidance Note 7 for clarification.,EPSG guidance note #7.,EPSG,2000-03-07 00:00:00,99.64,0
-9629,Reversible polynomial (3rd-order),1,See EPSG Guidance Note 7.,,Reversibility is subject to constraints.  See Guidance Note 7 for clarification.,EPSG guidance note #7.,EPSG,2000-03-07 00:00:00,99.64,0
-9630,Reversible polynomial (4th-order),1,See EPSG Guidance Note 7.,"For geodetic transformation ED50 to ED87 (1)
-
-Offset unit:  degree
-Ordinate 1 of evaluation point X0  =   55� 00' 00.000""N  = +55 degrees
-Ordinate 2 of evaluation point Y0  =     0� 00' 00.000""E   =   +0 degrees
-
-Parameters:
-A0 = -5.56098E-06   A1 = -1.55391E-06   ...   A14 = -4.01383E-09
-B0 = +1.48944E-05   B2 = +2.68191E-05  ...   B14 = +7.62236E-09
-
-Forward calculation for: 
-ED50 Latitude     = Xs =52* 30�30""N   =     +52.508333333 degrees
-ED50 Longitude  = Ys =  2*E=      +2.0 degrees   
-
-U = XS - X0 =  * ED50 - X0  = 52.508333333 - 55.0 = -2.491666667 degrees
-V = YS - Y0 =  * ED50 - Y0   = 2.0 - 0.0 = 2.0 degrees
-
-dX = A0 + A1.U + ... + A14.V4
-      = -5.56098E-06 + (-1.55391E-06 * -2.491666667) + ... + (-4.01383E-09 * 2.0^4)
-      = -3.12958E-06 degrees
-
-dY = B0 + B1.U + ... + B14.V4
-      = +1.48944E-05 + (2.68191E-05 * -2.491666667) + ... + (7.62236E-09 * 2.0^4)
-      = +9.80126E-06 degrees
-
-Then  ED87 Latitude  =   XT = XS + dX
-                                  =  52.508333333 - 3.12958E-06   degrees
-                                  = 52* 30� 29.9887"" N
-
-ED87 Longitude  =   YT = YS + dY
-                           = 2* 00� 00.0353"" E
-
-
-Reverse calculation for transformation ED50 to ED87 (1).
-The transformation method for the ED50 to ED87 (1) transformation, 4th-order reversible polynomial, is reversible. The same formulas may be applied for the reverse calculation, but coefficients A0 through A14 and B0 through B14 are applied with reversal of their signs. Sign reversal is not applied to the coordinates of the evaluation point. Thus:
-Ordinate 1 of evaluation point X0  =   55� 00' 00.000""N  = +55 degrees
-Ordinate 2 of evaluation point Y0  =     0� 00' 00.000""E   =   +0 degrees
-A0  = +5.56098E-06   A1 = +1.55391E-06   ...   A14 = +4.01383E-09
-B0  = -1.48944E-05    B1 = -2.68191E-05    ...   B14 = -7.62236E-09
-
-Reverse calculation for: 
-ED87 Latitude     = XS = 52� 30�29.9887""N   =     +52.5083301944 degrees
-ED87 Longitude  = YS =   2� 00� 00.0353"" E   =     +2.0000098055 degrees   
-
-U = 52.5083301944 - 55.0 = -2.4916698056 degrees
-V = 2.0000098055 - 0.0 = 2.0000098055 degrees
-
-dX = A0 + A1.U + ... + A14.V4
-      = +5.56098E-06 + (1.55391E-06 * -2.491666667) + ... + (4.01383E-09 * 2.0000098055^4)
-      = +3.12957E-06 degrees
-
-dY = B0 + B1.U + ... + B14.V4
-      = -1.48944E-05 + (-2.68191E-05 * -2.491666667) + ... + (-7.62236E-09 * 2.0000098055^4)
-      = -9.80124E-06 degrees
-
-Then ED50 Latitude  =   XT = XS + dX
-                                 = 52.5083301944 + 3.12957E-06   degrees
-                                 = 52� 30� 30.000"" N
-
-ED50 Longitude  =   YT = YS + dY
-                           = 2� 00� 00.000"" E",Reversibility is subject to constraints.  See Guidance Note 7 for clarification.,EPSG guidance note #7.,EPSG,2000-03-07 00:00:00,99.64,0
-9631,Complex polynomial (3rd-order),0,"The relationship between two projected coordinate reference systems may be approximated more elegantly by a single polynomial regression formula written in terms of complex numbers. The advantage is that the dependence between the �A� and �B� coefficients (for U and V) is taken into account in the formula, resulting in fewer coefficients for the same order polynomial. A third-order polynomial in complex numbers is used in Belgium.  A fourth-order po [...]
-
-(dX + i. dY) = (A1 + i. A2).(U + i.V) + (A3 + i. A4).(U + i.V)^2 + (A5 + i. A6).(U + i.V)^3 
-
-where U = (XS - XS0).10-5
-and     V = (YS - YS0).10-5
-
-Then
-XT  = XS - XS0 + XT0 + dX
-YT  = YS - YS0 + YT0 + dY
-
-where
-XT , YT      are coordinates in the target coordinate reference system,
-XS , YS      are coordinates in the source coordinate reference system,
-XS0 , YS0   are coordinates of the evaluation point in the source coordinate reference system,
-XT0 , YT0   are coordinates of the evaluation point in the target coordinate reference system.
-
-Note that the zero order coefficients of the general polynomial, A0 and B0, have apparently disappeared.  In reality they are absorbed by the different coordinates of the source and of the target evaluation point, which in this case, are numerically very different because of the use of two different projected coordinate reference systems for source and target.
-
-The transformation parameter values (the coefficients) are not reversible.  For the reverse transformation a different set of parameter values are required, used within the same formulas as the forward direction","For transformation Belge Lambert 72 to ED50 / UTM zone 31N,
-
-Eo1 = 0
-No1 = 0
-Eo2 = 449681.702
-No2 = 5460505.326
-A1 = -71.3747
-A2 = 1858.8407
-A3 = -5.4504
-A4 = -16.9681
-A5 = 4.0783
-A6 = 0.2193
-
-For source coordinate system E1=200000  N1=100000, then
-E2 = 647737.377  N2 = 5564124.227.",Coordinate pairs treated as complex numbers.  This exploits the correlation between the polynomial coefficients and leads to a smaller number of coefficients than the regular 3rd-order polynomial.,EPSG guidance note #7.,EPSG,2000-03-07 00:00:00,,0
-9632,Complex polynomial (4th-order),0,"The relationship between two projected coordinate reference systems may be approximated more elegantly by a single polynomial regression formula written in terms of complex numbers. The advantage is that the dependence between the �A� and �B� coefficients (for U and V) is taken into account in the formula, resulting in fewer coefficients for the same order polynomial. A third-order polynomial in complex numbers is used in Belgium.  A fourth-order po [...]
-
-(dX + i. dY) = (A1 + i. A2).(U + i.V) + (A3 + i. A4).(U + i.V)^2 + (A5 + i. A6).(U + i.V)^3 + (A7 + i.A8).(U + i.V)^4
-
-where U = (XS - XS0).10-5
-and     V = (YS - YS0).10-5
-
-Then
-XT  = XS - XS0 + XT0 + dX
-YT  = YS - YS0 + YT0 + dY
-
-where
-XT , YT      are coordinates in the target coordinate reference system,
-XS , YS      are coordinates in the source coordinate reference system,
-XS0 , YS0   are coordinates of the evaluation point in the source coordinate reference system,
-XT0 , YT0   are coordinates of the evaluation point in the target coordinate reference system.
-
-Note that the zero order coefficients of the general polynomial, A0 and B0, have apparently disappeared.  In reality they are absorbed by the different coordinates of the source and of the target evaluation point, which in this case, are numerically very different because of the use of two different projected coordinate reference systems for source and target.
-
-The transformation parameter values (the coefficients) are not reversible.  For the reverse transformation a different set of parameter values are required, used within the same formulas as the forward direction.","For transformation RD / Netherlands New to ED50 / UTM zone 31N,
-
-Eo1 = 155000
-No1 = 463000
-Eo2 = 663395.607
-No2 = 5781194.380
-A1 = -51.681
-A2 = 3290.525
-A3 = 20.172
-A4 = 1.133
-A5 = 2.075
-A6 = 0.251
-A7 = 0.075
-A8 = -0.012
-
-For source coordinate system E1=200000  N1=500000, then
-E2 =707155.557  N2 = 5819663.128.",Coordinate pairs treated as complex numbers.  This exploits the correlation between the polynomial coefficients and leads to a smaller number of coefficients than the regular 4th-order polynomial.,EPSG guidance note #7.,EPSG,2000-03-07 00:00:00,,0
-9633,Ordnance Survey National Transformation,1,See information source.,See information source.,Geodetic transformation between ETRS89 (or WGS 84) and OSGB36 / National Grid.  Uses ETRS89 / National Grid as an intermediate coordinate system for bi-linear interpolation of gridded grid coordinate differences.,http://www.gps.gov.uk/gpssurveying.asp,EPSG,2000-10-19 00:00:00,,0
-9634,Maritime Provinces polynomial interpolation,0,"The transformation makes use of a residual file for each Canadian maritime province.  The process of residual interpolation accounts for local variations in the coordinate system and provides a transformation accuracy of +/- 5 cm.
-
-By using a second residual file, the transformation may be reversed.  Only one residual file is in use by the method during any given execution.",,This transformation is an executable module within the application NBGeocalc.  It is an adaptation of the ESTPM program developed by Geodetic Survey of Canada.,Survey of New Brunswick,EPSG,2000-10-19 00:00:00,,0
-9635,Geographic3D to Geographic2D+GravityRelatedHeight,1,"This is a complex, multi-step transformation, involving the application of a geoid height difference interpolated at a point in a ""geoid model"". The geoid model should be available as a regular grid of latitude and longitude with the height of the geoid above the ellipsoid at each grid node. Only the height is affected by this transformation; the geodetic latitude and longitude are not.
-
-The transformation involves the following sequence of steps:
-�  Selection of a subset of the geoid file covering the extent of the points to be transformed.
-�  If the geoid file is not based on the source or target CRS, it needs to be transformed first. This involves transformation of the chosen subset of the geoid file from its orignal Geographic 3D CRS to the Geographic 3D CRS that is the source or the target of this transformation.
-�  Calculation of the height of the geoid above the ellipsoid (""geoid undulation"") at the relevant point(s). This is achieved through a bi-linear interpolation of the geoid undulation, using the latitude and longitude to locate the point in the sub-grid.  This step results in the height of the geoid above the ellipsoid (N) of the Geographic 3D CRS, whether source or target.
-�  At each point, the application of the calculated geoid undulation to the height to be transformed.
-
-H=h-N for Geographic3D to Geographic2D+GravityRelatedHeight
-
-h=H+N for Geographic2D+GravityRelatedHeight to Geographic3D
-
-where h = the ellipsoidal height (height above the ellipsoid in a geographic 3D CRS)
-and H = the Gravity-Related Height component of the compound CRS.",,"Transformation from a Geographic 3D CRS to a Compound CRS consisting of a Geographic 2D CRS and a Vertical CRS, or vice versa. The Geographic 3D and the Geographic 2D CRS must be based on the same Geodetic Datum.",,EPSG,2001-06-05 00:00:00,,0
-9636,Molodenski-Badekas transformation,1,"To eliminate high correlation between the translations and rotations in the derivation of parameter values for the Helmert transformation methods (coordinate operation metghod codes 9606 and 9607), instead of the rotations being derived about the geocentric coordinate reference system origin they may be derived at a location within the points used in the determination. Three additional parameters, the coordinates of the rotation point, are then r [...]
-
-   (Xt)             (  1       +Rz    -Ry)      (Xs - Xp)      (Xp)       (dX)
-   (Yt)  =  M *  ( -Rz      1      +Rx)  *  (Ys - Yp)  +  (Yp)  +  (dY)
-   (Zt)              ( +Ry   -Rx       1 )      (Zs - Zp)      (Zp)       (dZ)
-
-and the parameters are defined as:
-
-(dX, dY, dZ)   : Translation vector, to be added to the point's position vector in the source coordinate system in order to transform from source coordinate reference system to target coordinate reference system; also: the coordinates of the origin of source coordinate reference system in the target frame.
-
-(Rx, Ry, Rz)   : Rotations to be applied to the coordinate reference frame.  The sign convention is such that a positive rotation of the frame about an axis is defined as a clockwise rotation of the coordinate reference frame when viewed from the origin of the Cartesian coordinate system in the positive direction of that axis, that is a positive rotation about the Z-axis only from source coordinate reference system to target coordinate reference system will result in a smaller longitude  [...]
-
-(Xp, Yp, Zp)   : Coordinates of the point about which the coordinate reference frame is rotated, given in the source Cartesian coordinate reference system. 
-
-M                  : The scale factor to be applied to the position vector in the source coordinate reference system  in order to obtain the correct scale of the target coordinate reference system. M = (1+dS*10^-6), where dS is the scale correction expressed in parts per million.
-
-Reversibility.
-The Molodensky-Badekas transformation in a strict mathematical sense is not reversible, i.e. in principle the same parameter values cannot be used to execute the reverse transformation. This is because the evaluation point coordinates are in the forward direction source coordinate reference system and the rotations have been derived about this point. They should not be applied about the point having the same coordinate values in the target coordinate reference system, as is required for  [...]
-9801,Lambert Conic Conformal (1SP),1,"To derive the projected Easting and Northing coordinates of a point with geographical coordinates (lat,lon) the formulas for the one standard parallel case are:
-
-E = FE + r sin(theta)
-N = FN + r0 - r cos(theta)
-where
-n = sin lat0
-r = a F t^n k0     for r0, and r
-m = cos(lat)/(1 - e^2 sin^2(lat))^0.5     for m0, lat0, and m2, lat2 where lat1 and lat2 are the latitudes of the standard parallels.
-t  = tan(pi/4 - lat/2)/[(1 - e sin(lat))/(1 + e sin(lat))]^(e/2)   for t0 and t using lat0 and lat respectively.
-F = m0/(n  t1^n)
-theta = n(lon - lon0)
-
-The reverse formulas to derive the latitude and longitude of a point from its Easting and Northing values are:
-
-lat = pi/2 - 2arctan{t'[(1 - esin(lat))/(1 + esin(lat))]^(e/2)}
-lon = theta'/n +lon0
-where
-theta' = arctan[(E - FE)/{r0 -(N - FN)}]
-r' = +/-[(E - FE)^2 + {r0 - (N - FN)}^2]^0.5
-t' = (r'/(a k0 F))^(1/n)
-and n, F, and rF are derived as for the forward calculation.","For Projected Coordinate System JAD69 / Jamaica National Grid
-
-Parameters:
-Ellipsoid:  Clarke 1866, a = 6378206.400 m., 1/f = 294.97870
-                                   then  e = 0.08227185 and e^2 = 0.00676866
-
-Latitude Natural Origin         18 deg 00 min 00 sec N  =  0.31415927 rad
-Longitude Natural Origin     77 deg 00 min 00 sec W = -1.34390352 rad
-Scale factor at origin            1.000000
-False Eastings  FE               250000.00 m
-False Northings FN              150000.00 m
-
-Forward calculation for: 
-Latitude:     17 deg 55 min 55.80 sec N  =  0.31297535 rad
-Longitude:  76 deg 56 min 37.26 sec W = -1.34292061 rad
-first gives
-m0    =  0.95136402        t0 =  0.72806411
-F       =  3.39591092        n  =  0.30901699
-r        =  19643955.26     r0  =  19636447.86
-theta =  0.00030374        t   =  0.728965259
-
-Then Easting E   =     255966.58 m
-         Northing N =      142493.51 m
-
-Reverse calculation for the same easting and northing first gives
-
-theta' =  0.000303736
-t'        =  0.728965259
-m0     =  0.95136402
-r'        =  19643955.26
-
-Then Latitude     = 17 deg 55 min 55.800 sec N
-         Longitude  = 76 deg 56 min 37.260 sec W",,EPSG guidance note #7.,EPSG,2001-06-05 00:00:00,2001.08,0
-9802,Lambert Conic Conformal (2SP),1,"To derive the projected Easting and Northing coordinates of a point with geographical coordinates (lat,lon) the formulas for the one standard parallel case are:
-
-E = EF + r sin(theta)
-N = NF + rF - r cos(theta)
-where
-m = cos(lat)/(1 - e^2 sin^2(lat))^0.5     for m1, lat1, and m2, lat2 where lat1 and lat2 are the latitudes of the standard parallels.
-t  = tan(pi/4 - lat/2)/[(1 - e sin(lat))/(1 + e sin(lat))]^(e/2)   for t1, t2, tF and t using lat1, lat2, latF and lat respectively.
-n = (loge(m1) - loge(m2))/(loge(t1) - loge(t2))
-F = m1/(n  t1^n)
-r =  a F t^n         for rF and r, where rF is the radius of the parallel of latitude of the false origin.
-theta = n(lon - lon0)
-
-The reverse formulas to derive the latitude and longitude of a point from its Easting and Northing values are:
-
-lat = pi/2 - 2arctan{t'[(1 - esin(lat))/(1 + esin(lat))]^(e/2)}
-lon = theta'/n +lon0
-where
-r' = +/-[(E - EF)^2 + {rF - (N - NF)}^2]^0.5 , taking the sign of n
-t' = (r'/(aF))^(1/n)
-theta' = arctan [(E- EF)/(rF - (N- NF))]
-and n, F, and rF are derived as for the forward calculation.","For Projected Coordinate System NAD27 / Texas South Central
-
-Parameters:
-Ellipsoid  Clarke 1866, a = 6378206.400 metres = 20925832.16 US survey feet
-                                   1/f = 294.97870
-then e = 0.08227185 and e^2 = 0.00676866
-
-First Standard Parallel          28o23'00""N  =   0.49538262 rad
-Second Standard Parallel    30o17'00""N  =   0.52854388 rad
-Latitude False Origin            27o50'00""N  =   0.48578331 rad
-Longitude False Origin         99o00'00""W = -1.72787596 rad
-Easting at false origin           2000000.00  US survey feet
-Northing at false origin          0.00  US survey feet
-
-Forward calculation for: 
-Latitude       28o30'00.00""N  =  0.49741884 rad
-Longitude    96o00'00.00""W = -1.67551608 rad
-
-first gives :
-m1    = 0.88046050      m2 = 0.86428642
-t        = 0.59686306      tF  = 0.60475101
-t1      = 0.59823957      t2 = 0.57602212
-n       = 0.48991263       F = 2.31154807
-r        = 37565039.86    rF = 37807441.20
-theta = 0.02565177
-
-Then Easting E =      2963503.91 US survey feet
-         Northing N =      254759.80 US survey feet
-
-Reverse calculation for same easting and northing first gives:
-theta' = 0.025651765     r' = 37565039.86
-t'        = 0.59686306
-
-Then Latitude     	= 28o30'00.000""N
-         Longitude   = 96o00'00.000""W",,EPSG guidance note #7.,EPSG,2001-06-05 00:00:00,99.281  2001.08,0
-9803,Lambert Conic Conformal (2SP Belgium),1,"For the Lambert Conic Conformal (2 SP Belgium), the formulas for the regular two standard parallel case (coordinate operation method code 9802) are used except for: 
-
-Easting, E = EF + r sin (theta - alpha)
-Northing, N = NF + rF - r cos (theta - alpha)
-
-and for the reverse formulas
-lon = ((theta' + alpha)/n) +lon0
-where alpha = 29.2985 seconds.","For Projected Coordinate System Belge 1972 / Belge Lambert 72
-
-Parameters:
-Ellipsoid  International 1924,  a = 6378388 metres
-                                              1/f = 297
-then e = 0.08199189 and e^2 = 0.006722670
-
-First Standard Parallel        49o50'00""N       =   0.86975574 rad
-Second Standard Parallel  51o10'00""N       =   0.89302680 rad
-Latitude False Origin          90o00'00""N       =   1.57079633 rad
-Longitude False Origin         4o21'24.983""E = 0.07604294 rad
-Easting at false origin EF        150000.01  metres
-Northing at false origin NF    5400088.44  metres
-
-Forward calculation for: 
-Latitude        50o40'46.461""N  =  0.88452540 rad
-Longitude       5o48'26.533""E   = 0.10135773 rad
-
-first gives :
-m1     = 0.64628304         m2 = 0.62834001
-t        = 0.59686306          tF  = 0.00000000
-t1      = 0.36750382           t2 = 0.35433583
-n       = 0.77164219            F = 1.81329763
-r        = 37565039.86         rF = 0.00
-alpha =	0.00014204     theta = 0.01953396
-
-Then Easting E  =      251763.20 metres
-         Northing N =      153034.13 metres
-
-Reverse calculation for same easting and northing first gives:
-theta' = 0.01939192      r' = 548041.03
-t' = 0.35913403
-Then Latitude   =    50o40'46.461""N
-         Longitude =     5o48'26.533""E",In 2000 this modification was replaced through use of the regular Lambert Conic Conformal (2SP) method [9802] with appropriately modified parameter values.,EPSG guidance note #7.,EPSG,1999-04-22 00:00:00,99.281,0
-9804,Mercator (1SP),1,"The formulas to derive projected Easting and Northing coordinates are:
-
-E = FE + a*k0(lon - lon0)              
-N = FN + a*k0* ln{tan(pi/4 + lat/2)[(1 - esin(lat))/(1 + esin(lat))]^e/2} where symbols are as listed above and logarithms are natural.
-
-The reverse formulas to derive latitude and longitude from E and N values are:
-
-lat = chi + (esq/2 + 5e^4/24 + e^6/12 + 13e^8/360) sin(2chi) 
-+ (7e^4/48 + 29e^6/240 + 811e^8/11520) sin(4chi)
-+ (7e^6/120 +  81e^8/1120) sin(6chi)  + (4279e^8/161280) sin(8chi)
-
-where chi = pi/2 - 2 arctan t
-t = B^((FN-N)/(a*k0)) 
-B = base of the natural logarithm, 2.7182818...
-and  for the 2 SP Case, k0 is calculated as for the forward transformation above.
-lon  =  ((E - FE)/(a*k0))  + lon0","For Projected Coordinate System Makassar / NEIEZ
-
-Parameters:
-Ellipsoid   Bessel 1841  a = 6377397.155 m   1/f = 299.15281
-then e = 0.08169683
-
-Latitude Natural Origin         00o00'00""N  = 0.0000000 rad
-Longitude Natural Origin    110o00'00""E  = 1.91986218 rad
-Scale factor ko                  0.997
-False Eastings FE              3900000.00 m
-False Northings FN              900000.00 m
-
-Forward calculation for: 
-Latitude            3o00'00.00""S   = -0.05235988 rad
-Longitude     120o00'00.00""E   =  2.09439510 rad
-gives
-Easting  E   =      5009726.58 m
-Northing N  =        569150.82 m
-
-Reverse calculation for same easting and northing first gives :
-t    = 1.0534121
-chi = -0.0520110
-
-Then Latitude     =   3o00'00.000""S
-         Longitude  = 120o00'00.000""E",,EPSG guidance note #7.,EPSG,2001-06-05 00:00:00,2001.08,0
-9805,Mercator (2SP),1,"The formulas to derive projected Easting and Northing coordinates are:
-
-For the two standard parallel case, k0 is first calculated from
-
-k0 = cos(latSP1)/(1 - e^2*sin^2(latSP1))^0.5 
- 
-where latSP1 is the absolute value of the first standard parallel (i.e. positive).  
-
-Then, for both one and two standard parallel cases, 
-
-E = FE + a*k0(lon - lon0)              
-N = FN + a*k0* ln{tan(pi/4 + lat/2)[(1 - esin(lat))(1 + esin(lat))]^e/2} where symbols are as listed above and logarithms are natural.
-
-The reverse formulas to derive latitude and longitude from E and N values are:
-
-lat = chi + (esq/2 + 5e^4/24 + e^6/12 + 13e^8/360) sin(2chi) 
-+ (7e^4/48 + 29e^6/240 + 811e^8/11520) sin(4chi)
-+ (7e^6/120 +  81e^8/1120) sin(6chi)  + (4279e^8/161280) sin(8chi)
-
-where chi = pi/2 - 2 arctan t
-t = B^((FN-N)/a*k0) 
-B = base of the natural logarithm, 2.7182818...
-and  for the 2 SP Case, k0 is calculated as for the forward transformation above.
-lon  =  ((E - FE)/a*k0)  + lon0","For Projected Coordinate System Pulkovo 1942 / Mercator Caspian Sea
-
-Parameters:
-Ellipsoid  Krassowski 1940   a = 6378245.00m   1/f = 298.300
-then e = 0.08181333 and e^2 = 0.00669342
-
-Latitude first SP                             42o00'00""N = 0.73303829 rad
-Longitude Natural Origin                51o00'00""E = 0.89011792 rad
-False Eastings FE                          0.00 m
-False Northings (at equator) FN     0.00 m
-  
-then natural origin at latitude of 0oN has scale factor k0=  0.74426089
-
-Forward calculation for: 
-Latitude        53o00'00.00""N = 0.9250245 rad
-Longitude     53o00'00.00""E  = 0.9250245 rad
-
-gives Easting E   =     165704.29 m 
-          Northing N =   5171848.07 m
-
-Reverse calculation for same easting and northing first gives :
-t = 0.33639129    chi = 0.92179596
-
-Then Latitude     =  53o00'00.000""N
-          Longitude  =  53o00'00.000""E",,EPSG guidance note #7.,EPSG,1996-09-18 00:00:00,,0
-9806,Cassini-Soldner,1,"The formulas to derive projected Easting and Northing coordinates are:
-
-Easting E = FE + nu[A - TA^3/6 -(8 - T + 8C)TA^5/120]
-
-Northing N = FN + M - M0 + nu*tan(lat)*[A^2/2 + (5 - T + 6C)A^4/24]
-
-where A = (lon - lon0)cos(lat)
-T = tan^2(lat)
-C = e2 cos2*/(1 - e2)        nu = a /(1 - esq*sin^2(lat))^0.5 
-and M, the distance along the meridian from equator to latitude lat, is given by
-M = a[1 - e^2/4 - 3e^4/64 - 5e^6/256 -....)*lat - (3e^2/8 + 3e^4/32 + 45e^6/1024 +....)sin(2*lat) + (15e^4/256 + 45e^6/1024 +.....)sin(4*lat) - (35e^6/3072 + ....)sin(6*lat) + .....]
-with lat in radians.
-
-M0 is the value of M calculated for the latitude of the chosen origin. This may not necessarily be chosen as the equator.
-
-To compute latitude and longitude from Easting and Northing the reverse formulas are:
-lat = lat1 - (nu1tan(lat1)/rho1)[D2/2 - (1 + 3*T1)D^4/24]
-lon =  lon0 + [D - T1*D^3/3 + (1 + 3*T1)T1*D^5/15]/cos(lat1)
-
-where lat1 is the latitude of the point on the central meridian which has the same Northing as the point whose coordinates are sought, and is found from:
-lat1 = mu1 + (3*e1/2 - 27*e1^3/32 +.....)sin(2*mu1) + (21*e1^2/16 - 55*e1^4/32 + ....)sin(4*mu1)+ (151*e1^3/96 +.....)sin(6*mu1) + (1097*e1^4/512 - ....)sin(8*mu1) + ......
-where
-e1 = [1- (1 - esq)^0.5]/[1 + (1 - esq)^0.5]
-mu1 = M1/[a(1 - esq/4 - 3e^4/64 - 5e^6/256 - ....)]
-M1 = M0 + (N - FN)
-T1 = tan^2(lat1)
-D = (E - FE)/nu1","For Projected Coordinate System Trinidad 1903 / Trinidad Grid 
-Parameters:
-Ellipsoid   Clarke 1858     a = 20926348 ft    = 31706587.88 links
-                                        b = 20855233 ft
-
-then 1/f = 294.97870 and e^2 = 0.00676866
-
-Latitude Natural Origin       10o26'30""N  =  0.182241463 rad
-Longitude Natural Origin    61o20'00""W = -1.07046861 rad
-False Eastings FE              430000.00 links
-False Northings FN            325000.00 links
-
-Forward calculation for: 
-Latitude       10o00'00.00"" N = 0.17453293 rad
-Longitude    62o00'00.00""W = -1.08210414 rad
-
-A = -0.01145876      C = 0.00662550
-T = 0.03109120      M = 5496860.24    nu = 31709831.92     M0 = 5739691.12
-
-Then Easting E    =  66644.94 links
-          Northing N =  82536.22 links
-
-Reverse calculation for same easting and northing first gives :
-e1    =   0.00170207       D  =     -0.01145875
-T1   = 0.03109544         M1 =      5497227.34
-nu1  = 31709832.34       mu1 =    0.17367306
-phi1 = 0.17454458         rho1 =    31501122.40
-
-
-Then Latitude     = 10o00'00.000""N
-         Longitude  =  62o00'00.000""W",,EPSG guidance note #7.,EPSG,1996-09-18 00:00:00,,0
-9807,Transverse Mercator,1,"The formulas to derive the projected Easting and Northing coordinates are in the form of a series as follows:
-
-Easting, E =  FE + k0*nu[A + (1 - T + C)A^3/6 + (5 - 18T + T^2 + 72C - 58e'sq)A^5/120]	
-
-Northing, N =  FN + k0{M - M0 + nu*tan(lat)[A^2/2 + (5 - T + 9C + 4C^2)A^4/24 + (61 - 58T + T^2 + 600C - 330e'sq)A^6/720]} 
-where T = tan^2(lat)                nu = a /(1 - esq*sin^2(lat))^0.5
-C = esq*cos^2(lat)/(1 - esq)
-A = (lon - lon0)cos(lat), with lon and lon0 in radians.
-M = a[(1 - esq/4 - 3e^4/64 - 5e^6/256 -....)lat - (3esq/8 + 3e^4/32 + 45e^6/1024+....)sin(2*lat) + (15e^4/256 + 45e^6/1024 +.....)sin(4*lat) - (35e^6/3072 + ....)sin(6*lat) + .....]
-with lat in radians and M0 for lat0, the latitude of the origin, derived in the same way.
-
-The reverse formulas to convert Easting and Northing projected coordinates to latitude and longitude are:
-
-lat = lat1 - (nu1*tan(lat1)/rho1)[D^2/2 - (5 + 3*T1 + 10*C1 - 4*C1^2 - 9*e'^2)D^4/24 + (61 + 90*T1 + 298*C1 + 45*T1^2 - 252*e'^2 - 3*C1^2)D^6/720]
-lon = lon0 + [D - (1 + 2*T1 + C1)D^3/6 + (5 - 2*C1 + 28*T1 - 3*C1^2 + 8*e'^2 + 24*T1^2)D^5/120] / cos(lat1)
-where lat1 may be found as for the Cassini projection from:
-
-lat1 = mu1 + ((3*e1)/2 - 27*e1^3/32 +.....)sin(2*lat1) + (21*e1^2/16 -55*e1^4/32 + ....)sin(4*lat1)+ (151*e1^3/96 +.....)sin(6*lat1) + (1097*e1^4/512 - ....)sin(8*lat1) + ......
-and where  nu1 = a /(1 - esq*sin^2(lat1))^0.5                                     rho1 = a(1 - esq)/(1 - esq*sin^2(lat1))^1.5
-e1 = [1- (1 - esq)^0.5]/[1 + (1 - esq)^0.5]
-mu1 = M1/[a(1 - esq/4 - 3e^4/64 - 5e^6/256 - ....)]
-M1 = M0 + (N - FN)/k0
-T1 = tan^2(lat1)
-C1 = e'^2*cos^2(lat1)
-D = (E - FE)/(nu1*k0), with nu1 = nu for lat1
-
-For areas south of the equator the value of latitude lat will be negative and the formulas above, to compute the E and N,  will automatically result in the correct values. Note that the false northings of the origin, if the equator, will need to be large to avoid negative northings and for the UTM projection is in fact 10,000,000m. Alternatively, as in the case of Argentina's Transverse Mercator (Gauss-Kruger) zones, the origin is at the south pole with a northings of zero. However each  [...]
-different zones having the same eastings, every point in the country, irrespective of its projection zone, will have a unique set of projected system coordinates. Strict application of the above formulas, with south latitudes negative, will result in the derivation of the correct Eastings and Northings. 
-
-Similarly, in applying the reverse formulas to determine a latitude south of the equator, a negative sign for lat results from a negative lat1 which in turn results from a negative M1.","For Projected Coordinate System OSGB 1936 / British National Grid
-
-Parameters:
-Ellipsoid  Airy 1830  a = 6377563.396 m  1/f = 299.32496
-then e'^2 = 0.00671534 and e^2 = 0.00667054
-
-Latitude Natural Origin         49o00'00""N   = 0.85521133 rad
-Longitude Natural Origin        2o00'00""W  = -0.03490659 rad
-Scale factor ko                     0.9996013                                                                                              False Eastings FE                 400000.00 m
-False Northings FN              -100000.00 m
-
-Forward calculation for: 
-Latitude       50o30'00.00""N  = 0.88139127 rad
-Longitude    00o30'00.00""E  = 0.00872665 rad
-A  = 0.02775415       C = 0.00271699
-T =  1.47160434       M = 5596050.46
-M0 = 5429228.60     nu  = 6390266.03
-
-Then Easting E =        577274.99 m
-          Northing N =       69740.50 m
-
-Reverse calculations for same easting and northing first gives :
-e1 =    0.00167322      mu1 = 0.87939562
-M1 = 5599036.80        nu1 = 6390275.88
-phi1  = 0.88185987      D = 0.02775243
-rho1 =6372980.21       C1 =  0.00271391
-T1 = 1.47441726
-
-Then Latitude       = 50o30'00.000""N
-         Longitude    = 00o30'00.000""E",,EPSG guidance note #7.,EPSG,1996-09-18 00:00:00,,0
-9808,Transverse Mercator (South Orientated),1,"For the mapping of southern Africa a south oriented Transverse Mercator projection is used. Here the coordinate axes are called Westings and Southings and increment to the West and South from the origin respectively.  The standard Transverse Mercator formulas (coordinate operation method code 9807) need to be modified to cope with this arrangement with
-
-Westing, W = FE - k0 nu[A + (1 - T + C)A^3/6 + (5 - 18*T + T^2 + 72*C - 58*e'^2)A^5/120]
-
-Southing, S = FN - k0{M - M0 + nu*tan(lat)*[A^2/2 + (5 - T + 9*C + 4*C^2)A^4/24 + (61 - 58*T + T^2 + 600*C - 330*e'^2)A^6/720]}
-
-In these formulas the terms FE and FN retain their definition, i.e. in the Transverse Mercator (South Orientated) method they increase the Westing and Southing value at the natural origin. In this method they are effectively false westing (FW) and false southing (FS) respectively.
-
-For the reverse formulas, those for the standard Transverse Mercator above apply, with the exception that:
-
-M1 = M0 - (S - FN)/k0
-and D = -(W - FE)/(nu1*k0), with nu1 = nu for lat1",,,EPSG guidance note #7.,EPSG,2002-07-31 00:00:00,2002.51,0
-9809,Oblique Stereographic,1,"Given the geodetic origin of the projection at the tangent point (lat0, lon0), the parameters defining the conformal sphere are:
-
-R= sqrt( rho0 * nu0)
-n=  sqrt{1+[(e2*cos^4(lat0))/(1-e2)}
-c=  [(n+sin(lat0)) (1-sin(chi0))]/[(n-sin(lat0)) (1+sin(chi0))]
-
-where:	sin(chi0) = (w1-1)/(w1+1)
-w1 = (S1.(S2)^e)^n
-S1 = (1+sin(lat0))/(1-sin(lat0))
-S2 = (1-e sin(lat0))/(1+e sin(lat0))
-
-The conformal latitude and longitude (chi0,lambda0) of the origin are then computed from :
-
-chi0 = asin[(w2-1)/(w2+1)]
-
-where S1 and S2 are as above and  w2 = c (S1(S2)^e)^n
- 
-lambda0  = lon0
-
-For any point with geodetic coordinates (lat, lon) the equivalent conformal latitude and longitude (chi, lambda) are computed from 
-lambda = n(lon-lambda0) + lambda0
-chi = asin[(w-1)/(w+1)]
-
-where w = c (Ss (Sb)^e)^n
-Sa = (1+sin(lat))/(1-sin(lat))
-Sb = (1-e.sin(lat))/(1+e.sin(lat))
- 
-Then B = [1+sin(chi) sin(chi0) + cos(chi) cos(chi0) cos(lambda-lambda0)]
-
-N = FN + 2 R k0 [sin(chi) cos(chi0) - cos(chi) sin(chi0) cos(lambda-lambda0)] / B
-
-E = FE + 2 R k0 cos(chi) sin(lambda-lambda0) / B
-
-
-The reverse formulae to compute the geodetic coordinates from the grid coordinates involves computing the conformal values, then the isometric latitude and finally the geodetic values.
-
-The parameters of the conformal sphere and conformal latitude and longitude at the origin are computed as above. Then for any point with Stereographic grid coordinates (E,N) :
-
-chi = chi0 + 2 atan[{(N-FN)-(E-FE) tan (j/2)} / (2 R k0)]
-
-lambda = j + 2 i + lambda0
-
-where g = 2 R k0 tan(pi/4 - chi0/2)
-h = 4 R k0 tan(chi0) + g
-i = atan[(E-FE) / {h+(N-FN)}]
-j = atan[(E-FE) / (g-(N-FN)] - i
-
-Geodetic longitude lon = (lambda-lambda0 ) / n +  lambda0
-
-Isometric latitude psi = 0.5 ln [(1+ sin(chi)) / { c (1-  sin(chi))}] / n
-
-First approximation lat1 = 2 atan(e^psi)  - pi/2  where e=base of natural logarithms.
-
-psii = isometric latitude at lati
-
-where psii= ln[{tan(lati/2 + pi/4}  {(1-e sin(lati))/(1+e sin(lati))}^(e/2)]
- 
-Then iterate lat(i+1) = lati - ( psii - psi ) cos(lati) (1 -e^2 sin^2(lati)) / (1 - e^2)
-
-until the change in lat is sufficiently small.
-
-For Oblique Stereographic projections centred on points in the southern hemisphere,  the signs of E, N, lon0, lon,  must be reversed to be used in the equations and lat will be negative anyway as a southerly latitude.
-
-An alternative approach is given by Snyder, where, instead of defining a single conformal sphere at the origin point, the conformal latitude at each point on the ellipsoid is computed.  The conformal longitude is then always equivalent to the geodetic longitude.  This approach is a valid alternative to the above, but gives slightly different results away from the origin point. It is therefore considered by EPSG to be a different coordinate operation method to that described above.","For  [...]
-
-Parameters:
-Ellipsoid   Bessel 1841    a = 6377397.155 m    1/f = 299.15281
-then e = 0.08169683
-
-Latitude Natural Origin      52o09'22.178""N  = 0.910296727 rad
-Longitude Natural Origin     5o23'15.500""E  =  0.094032038 rad
-Scale factor k0                 0.9999079
-False Eastings FE             155000.00 m
-False Northings FN           463000.00 m
-
-Forward calculation for: 
-
-Latitude    53oN = 0.925024504 rad
-Longitude   6oE = 0.104719755 rad
-
-first gives the conformal sphere constants:
-
-rho0 = 6374588.71    nu0 = 6390710.613
-R = 6382644.571    n = 1.000475857    c  = 1.007576465
-
-where S1 = 8.509582274  S2 = 0.878790173  w1 = 8.428769183
-sin chi0 = 0.787883237
-
-w   = 8.492629457   chi0 = 0.909684757      D0 = d0 
-
-for the point  chi  = 0.924394997    D = 0.104724841
-
-hence B = 1.999870665    N = 557057.739    E = 196105.283
-
-reverse calculation for the same Easting and Northing first gives:
-
-g = 4379954.188    h = 37197327.96   i = 0.001102255   j = 0.008488122
-
-then  D = 0.10472467  Longitude = 0.104719584 rad =  6 deg E
-
-chi  = 0.924394767    psi = 1.089495123
-phi1 = 0.921804948       psi1 = 1.084170164
-phi2 = 0.925031162       psi2 = 1.089506925
-phi3 = 0.925024504       psi3 = 1.089495505
-phi4 = 0.925024504
-
-Then Latitude      = 53o00'00.000""N
-          Longitude   =   6o00'00.000""E","This is not the same as the projection method of the same name in USGS Professional Paper no. 1395, ""Map Projections - A Working Manual"" by John P. Snyder.",EPSG guidance note #7.,EPSG,1999-11-15 00:00:00,99.811,0
-9810,Polar Stereographic,1,"For the forward transformation from latitude and longitude,
-
-E = FE + rho sin(lon - lon0)
-N = FN - rho cos(lon - lon0)
-where
-rho = 2 a ko t /{[((1+e)^(1+e)) ((1-e)^(1-e))]^0.5}
-t = tan (pi/4 - lat/2) / [(1-esin(lat) ) / (1 + e sin(lat))]^(e/2)
-
-For the reverse transformation,
-
-lat = chi+ (e^2/2 + 5e^4/24 + e^6/12 + 13e^8/360) sin(2 chi) 
-+ (7e^4/48 + 29e^6/240 + 811e^8/11520) sin(4 chi)
-+ (7e^6/120 +  81e^8/1120) sin(6 chi)  + (4279e^8/161280) sin(8 chi)
-
-lon = lon0+ arctan [(E-FE) / (FN-N)]
-
-where chi  = pi/2 - 2 arctan t
-t   =  rho [((1+e)^(1+e)) ((1-e)^(1-e))]^0.5} / 2 a ko
-rho = [(E-FE)^2  + (N - FN)^2]^0.5",,,"US Geological Survey Professional Paper 1395; ""Map Projections - A Working Manual"";  J. Snyder",EPSG,1996-09-18 00:00:00,,0
-9811,New Zealand Map Grid,1,b,,,New Zealand Department of Lands technical circular 1973/32,EPSG,1996-09-18 00:00:00,,0
-9812,Hotine Oblique Mercator,1,"The following constants for the projection may be calculated :
-
-B = (1 + esq * cos^4(latc) / (1 - esq ))^0.5
-A = a * B * kc *(1 - esq )^0.5 / ( 1 - esq * sin^2(latc))
-t0 = tan(pi/4 - latc/2) / ((1 - e*sin(latc)) / (1 + e*sin(latc)))^(e/2)
-D = B (1 - esq)^0.5  / (cos(latc) * ( 1 - esq*sin^2(latc))^0.5)
-if D < 1 to avoid problems with computation of F make D^2  = 1 
-F = D + (D^2 - 1)^0.5  * SIGN(latc)
-H = F* t0*B
-G = (F - 1/F) / 2
-gamma0 = asin(sin(alphac) / D)
-lon0 = lonc - (asin(G*tan(gamma0))) / B
-
-Then compute the (uc , vc) co-ordinates for the centre point (fc , lc).
-vc =0
-
-In general: uc = (A / B) atan((Dsq - 1)^0.5 / cos (alphac) ) * SIGN(latc)
-but for the special cases where alphac = 90 degrees then 
-uc = A*(lonc - lon0)  
-
- 
-Forward case: To compute (E,N) from a given (lat,lon) :
-
-t = tan(pi/4 - lat/2) / ((1 - e sin (lat)) / (1 + e sin (lat)))^(e/2)
-Q = H / t^B
-S = (Q - 1 / Q) / 2
-T = (Q + 1 / Q) / 2
-V = sin(B (lon - lon0))
-U = (- V cos(gamma0) + S sin(gamma0)) / T
-v = A ln((1 - U) / (1 + U)) / 2 B
-u = A atan((S cos(gamma0) + V sin(gamma0)) / cos(B (lon - lon0 ))) / B
-
-The rectified skew co-ordinates are then derived from:
-E = v cos(gammac) + u sin(gammac) + FE
-N = u cos(gammac) - v sin(gammac) + FN
-
-Reverse case: Compute (lat,lon)  from a given (E,N)  :
-
-v� = (E - FE) cos(gammac) - (N - FN) sin(gammac)
-u� = (N - FN) cos(gammac) + (E - FE) sin(gammac)
-
-Q� = e- (B v �/ A)  where e is the base of natural logarithms.
-S' = (Q� - 1 / Q�) / 2
-T� = (Q� + 1 / Q�) / 2
-V� = sin (B u� / A)
-U� = (V� cos(gammac) + S� sin(gammac)) / T�
-t� = (H / ((1 + U�) / (1 - U�))^0.5)^(1 / B)
-
-chi = pi / 2 - 2 atan(t�)
-
-lat = chi + sin(2chi).( e^2 / 2 + 5*e^4 / 24 + e^6 / 12 + 13*e^8 / 360) +  sin(4*chi).( 7*e^4 /48 + 29*e^6 / 240 + 811*e8 / 11520) +  sin(6chi).( 7*e^6 / 120 + 81*e8 / 1120) +  sin(8chi).(4279 e^8 / 161280)
-
-lon=  lon0  - atan ((S� cos(gammac) - V� sin(gammac)) / cos(B*u� / A)) / B","For Projected Coordinate System  Timbalai 1948 / R.S.O. Borneo (m)
-
-Parameters:
-Ellipsoid:  Everest 1830 (1967 Definition)
-a = 6377298.556 metres 1/f = 300.8017
-then e = 0.081472981and e2 = 0.006637847
-
-Latitude Projection Centre fc = 4o00'00""N = 0.069813170 rad
-Longitude Projection Centre lc = 115o00'00""E = 2.007128640 rad
-Azimuth of central line ac = 53o18'56.9537"" = 0.930536611 rad
-Rectified to skew gc= 53o07'48.3685"" = 0.927295218 rad
-Scale factor ko= 0.99984
-False Eastings FE = 0.00 m
-False Northings FN = 0.00 m
-
-Forward calculation for: 
-Latitude lat = 5o23'14.1129""N = 0.094025313 rad
-Longitude lon = 115o48'19.8196""E = 2.021187362 rad
-
-B = 1.003303209            F = 1.072121256
-A =6376278.686            H = 1.000002991
-to = 0.932946976          g0 = 0.927295218
-D = 1.002425787           lon0 = 1.914373469
-D2 =1.004857458
-uc =738096.09              vc =0.00
-
-t =0.910700729             Q =1.098398182
-S =0.093990763            T = 1.004407419
-V =0.106961709            U = 0.010967247
-v =-69702.787                u =901334.257
-
-Then Easting E =      679245.73 m
-        Northing N =     596562.78 m
-
-Reverse calculations for same easting and northing first gives :
-v� =   -69702.787              u� =901334.257
-Q� = 1.011028053
-S�  = 0.010967907          T� = 1.000060146
-V� = 0.141349378           U� = 0.093578324
-t� = 0.910700729             c = 0.093404829
-
-Then Latitude = 5o23'14.113""N
-         Longitude = 115o48'19.820""E",,EPSG guidance note #7.,EPSG,1999-11-15 00:00:00,97.62  99.811,0
-9813,Laborde Oblique Mercator,1,See information source.,See information source.,Can be accomodated by Oblique Mercator method (code 9815).,"""La nouvelle projection du Service Geographique de Madagascar""; J. Laborde; 1928",EPSG,1996-09-18 00:00:00,97.613,0
-9814,Swiss Oblique Cylindrical,1,See information source.,See information source.,Can be accomodated by Oblique Mercator method (code 9815).,"""Die projecktionen der Schweizerischen Plan und Kartenwerke""; J Bollinger; 1967",EPSG,1996-09-18 00:00:00,97.612,0
-9815,Oblique Mercator,1,"The following constants for the projection may be calculated :
-
-B = (1 + e^2 * cos^4(latc) / (1 - e^2 ))^0.5
-A = a * B * kc *(1 - e^2 )^0.5 / ( 1 - e^2 * sin^2(latc))
-t0 = tan(pi/4 - latc/2) / ((1 - e*sin(latc)) / (1 + e*sin(latc)))^(e/2)
-D = B (1 - e^2)^0.5  / (cos(latc) * ( 1 - e^2*sin^2(latc))^0.5)
-if D < 1 to avoid problems with computation of F make D^2  = 1 
-F = D + (D^2 - 1)^0.5  * SIGN(latc)
-H = F* t0*B
-G = (F - 1/F) / 2
-gamma0 = asin(sin(alphac) / D)
-lon0 = lonc - (asin(G*tan(gamma0))) / B
-vc =0
-In general: uc = (A / B) atan((Dsq - 1)^0.5 / cos (alphac) ) * SIGN(latc)
-but for the special cases where alphac = 90 degrees (e.g. Hungary, Switzerland) then 
-uc = A*(lonc - lon0)  
-
- 
-Forward case: To compute (E,N) from a given (lat,lon) :
-
-t = tan(pi/4 - lat/2) / ((1 - e sin (lat)) / (1 + e sin (lat)))^(e/2)
-Q = H / t^B
-S = (Q - 1 / Q) / 2
-T = (Q + 1 / Q) / 2
-V = sin(B (lon - lon0))
-U = (- V cos(gamma0) + S sin(gamma0)) / T
-v = A ln((1 - U) / (1 + U)) / 2 B
-u = (A atan((S cos(gamma0) + V sin(gamma0)) / cos(B (lon - lon0 ))) / B) - (uc . SIGN(lon - lonc))
-
-The rectified skew co-ordinates are then derived from:
-E = v cos(gammac) + u sin(gammac) + Ec
-N = u cos(gammac) - v sin(gammac) + Nc
-
-Reverse case: Compute (lat,lon)  from a given (E,N)  :
-
-v� = (E - Ec) cos(gammac) - (N - Nc) sin(gammac)
-u� = (N - Nc) cos(gammac) + (E - Ec) sin(gammac) + uc
-
-Q� = e- (B v �/ A)  where e is the base of natural logarithms.
-S' = (Q� - 1 / Q�) / 2
-T� = (Q� + 1 / Q�) / 2
-V� = sin (B u� / A)
-U� = (V� cos(gammac) + S� sin(gammac)) / T�
-t� = (H / ((1 + U�) / (1 - U�))^0.5)^(1 / B)
-
-chi = pi / 2 - 2 atan(t�)
-
-lat = chi + sin(2chi).( e^2 / 2 + 5*e^4 / 24 + e^6 / 12 + 13*e^8 / 360) +  sin(4*chi).( 7*e^4 /48 + 29*e^6 / 240 + 811*e8 / 11520) +  sin(6chi).( 7*e^6 / 120 + 81*e8 / 1120) +  sin(8chi).(4279 e^8 / 161280)
-
-lon=  lon0  - atan ((S� cos(gammac) - V� sin(gammac)) / cos(B*u� / A)) / B","For Projected Coordinate System  Timbalai 1948 / R.S.O. Borneo (m)
-
-Parameters:
-Ellipsoid:  Everest 1830 (1967 Definition)
-a = 6377298.556 metres 1/f = 300.8017
-then e = 0.081472981and e2 = 0.006637847
-
-Latitude Projection Centre fc = 4o00'00""N = 0.069813170 rad
-Longitude Projection Centre lc = 115o00'00""E = 2.007128640 rad
-Azimuth of central line ac = 53o18'56.9537"" = 0.930536611 rad
-Rectified to skew gc= 53o07'48.3685"" = 0.927295218 rad
-Scale factor ko= 0.99984
-Easting at projection centre Ec = 590476.87 m
-Northing at projection centre Nc = 442857.65 m
-
-Forward calculation for: 
-Latitude lat = 5o23'14.1129""N = 0.094025313 rad
-Longitude lon = 115o48'19.8196""E = 2.021187362 rad
-
-B = 1.003303209            F = 1.072121256
-A =6376278.686            H = 1.000002991
-to = 0.932946976          g0 = 0.927295218
-D = 1.002425787           lon0 = 1.914373469
-D2 =1.004857458
-uc =738096.09              vc =0.00
-
-t =0.910700729             Q =1.098398182
-S =0.093990763            T = 1.004407419
-V =0.106961709            U = 0.010967247
-v =-69702.787                u =163238.163
-
-Then Easting E =      679245.73 m
-        Northing N =     596562.78 m
-
-Reverse calculations for same easting and northing first gives :
-v� =   -69702.787              u� =901334.257
-Q� = 1.011028053
-S�  = 0.010967907          T� = 1.000060146
-V� = 0.141349378           U� = 0.093578324
-t� = 0.910700729             c = 0.093404829
-
-Then Latitude = 5o23'14.113""N
-         Longitude = 115o48'19.820""E",,EPSG guidance note #7.,EPSG,1999-11-15 00:00:00,99.811,0
-9816,Tunisia Mining Grid,1,"This grid is used as the basis for mineral leasing in Tunsia.  Lease areas are approximately 2 x 2 km or 400 hectares.  The corners of these blocks are defined through a six figure grid reference where the first three digits are an easting in kilometres and the last three digits are a northing.  The latitudes and longitudes for block corners at 2 km intervals are tabulated in a mining decree dated 1st January 1953.  From this tabulation in which geographical c [...]
-a)  the minimum easting is 94 km, on which the longitude is 5.68989 grads east of Paris.
-b)  the maximum easting is 490 km, on which the longitude is 10.51515 grads east of Paris.
-c)  each 2 km grid easting interval equals 0.02437 grads.
-d)  the minimum northing is 40 km, on which the latitude is 33.39 grads.
-e)  the maximum northing is 860 km, on which the latitude is 41.6039 grads.
-f)  between 40 km N and 360 km N, each 2 km grid northing interval equals 0.02004 grads.
-g)  between 360 km N and 860 km N, each 2 km grid northing interval equals 0.02003 grads.
-
-Formulae are:
-
-Grads from Paris
-
-Lat (grads) = 36.5964 + [(N - 360) * A] 
-where N is in kilometres and A = 0.010015 if N > 360, else A = 0.01002.
-
-LonParis (grads) = 7.83445 + [(E - 270) * 0.012185], where E is in kilometres.
-
-The reverse formulae are:
-
-E (km) = 270 + [(LonParis - 7.83445) / 0.012185] where LonParis is in grads.
-
-N (km) = 360 + [(Lat - 36.5964) / B] 
-where Lat is in grads and B = 0.010015  if  lat>36.5964, else B = 0.01002.
-
-Degrees from Greenwich.
-
-Modern practice in Tunisia is to quote latitude and longitude in degrees with longitudes referenced to the Greenwich meridian.  The formulae required in addition to the above are:
-
-Lat (degrees) =  (Latg * 0.9) where Latg is in grads.
-LonGreenwich (degrees) = [(LonParis + 2.5969213) * 0.9] where LonParis is in grads.
-
-
-Lat (grads) =  (Latd / 0.9) where Latd is in decimal degrees.
-LonParis (grads) = [(LonGreenwich / 0.9) - 2.5969213)] where LonGreenwich is in decimal degrees.","For grid location 302598,
-Latitude = 36.5964 + [(598 - 360) * A].  As N > 360, A = 0.010015.
-Latitude = 38.97997 grads = 35.08197 degrees.
-
-Longitude  = 7.83445 + [(E - 270) * 0.012185, where E = 302.
-Longitude  = 8.22437 grads east of Paris = 9.73916 degrees east of Greenwich.",,EPSG guidance note #7.,EPSG,2000-03-07 00:00:00,99.811  2000.08,0
-9817,Lambert Conic Near-Conformal,1,"To compute the Lambert Conic Near-Conformal the following formulae are used;
-
-E = FE + r sin(theta)
-N = FN + M + r sin(theta) tan(theta/2) using the natural origin rather than the false origin.
-
-Compute constants for the ellipse:
-
-n = (a-b)/(a+b)  
-A� = a [ 1- n + 5 (n^2 - n^3 ) / 4 + 81 ( n^4 - n^5 ) / 64]*pi /180 
-B� = 3 a [ n - n^2 + 7 ( n^3 - n^4 ) / 8 + 55 n^5 / 64] / 2
-C� = 15 a [ n^2 -n^3 + 3 ( n^4 - n^5 ) / 4 ] / 16
-D� = 35 a [ n^3 - n^4 + 11 n^5 / 16 ] / 48
-E� = 315 a [ n^4 - n^5 ] / 512
-
-Then compute the meridional arc from the equator to the parallel.
-s0 = A� lat0 - B� sin(2 lat0) + C� sin(4 lat0) - D� sin(6 lat0) + E� sin(8 lat0) where lat0 in the first term is in degrees
-s0 = A� lat - B� sin(2 lat) + C� sin(4 lat) - D� sin(6 lat) + E� sin(8 lat) where lat0 in the first term is in degrees
-m = s - s0
-A = 1 / (6 rho0 nu0) 
-M = ko ( m + A m^3.  This is the term that is truncated to the third order.
-Ms = M per second of arc = M / ((lat - lat0) * 3600)
-
-theta = (lon - lon0) sin(lat0)
-ro = ko nu0 / tan(lat0)
-r = ro - M
-
-The reverse formulas for lat and lon  from E and N with r0 and Ms as above:
-
-lat  = M�/ (Ms * 3600) + lat0   where lat0 and lat are in degrees
-lon  =  lon0 + theta� / sin(lat0)  where lont0 and lon are in radians
-
-where
-E� = E - FE              N� = N - FN
-theta� = arctan [E� / (r0 - N�)]
-r� = E� / sin(theta�) 
-M� = r0 - r'","For Projected Coordinate System: Deir ez Zor / Levant Zone
-
-Parameters:
-Ellipsoid  Clarke 1880 (IGN)  a = 6378249.2 m  1/f = 293.46602
-then b = 6356515.000    n = 0.001706682563
-
-Latitude Natural Origin  = 34o 39'00"" N = 0.604756586 rad
-Longitude Natural Origin = 37o 21'00"" E=  0.651880476 rad
-Scale factor at origin ko = 0.99962560
-False Eastings FE  = 300000.00 m
-False Northings FN  = 300000.00 m
-
-Forward calculation for: 
-Latitude of 37d 31' 17.625"" N = 0.654874806 rad
-Longitude of 34d 08' 11.291"" E = 0.595793792 rad
-first gives
-A = 4.1067494 * 10e-15      A�=111131.8633
-B�= 16300.64407     C�= 17.38751     D�= 0.02308      E�= 0.000033
-so = 3835482.233    s  = 4154101.458     m = 318619.225
-M = 318632.72         Ms = 30.82262319
-q = -0.03188875       ro = 9235264.405     r = 8916631.685
-
-Then Easting E =   15707.96 m (c.f. E =   15708.00 using full formulae)
-         Northing N =      623165.96 m (c.f. N = 623167.20 using full formulae)
-
-Reverse calculation for the same easting and northing first gives
-
-q' = -0.03188875
-r�  =  8916631.685
-M�= 318632.72 
-
-Latitude =      0.654874806 rad = 37d 31' 17.625"" N
-Longitude = 0.595793792 rad =  34d 08' 11.291"" E",The Lambert Near-Conformal projection is derived from the Lambert Conformal Conic projection by truncating the series expansion of the projection formulae.,EPSG guidance note #7.,EPSG,1999-11-15 00:00:00,99.811,0
-9818,American Polyconic,1,See information source.,,See information source for formula and example.,"US Geological Survey Professional Paper 1395; ""Map Projections - A Working Manual"";  J. Snyder",EPSG,1999-10-20 00:00:00,99.55,0
-9819,Krovak Oblique Conic Conformal,1,"From the defining parameters the following constants for the projection may be calculated :
-
-B=((1 + e^2 cos^4(latC)) / (1 - e^2 ))^0.5
-A=a (1 - e^2 )^0.5 / ( 1 - e^2 sin^2 (latC))
-gamma0=asin(sin (latC) / B)
-t0 =tan(pi / 4 + gamma0 / 2) . ((1 + e sin(latC)) / (1 - e sin (latC)))^(e.B/2) / tan(pi / 4 + latC/ 2)^B
-n = sin lat1
-r0=kc  A / tan (lat1)
-
-To derive the projected Southing and Westing coordinates of a point with geographical coordinates (lat, lon) the formulas for the oblique conic conformal are:
-
-Southing:    X  = Ec + r cos theta
-Westing:     Y = Nc + r sin theta
- 
-where
-
-U=2 (atan ( k tan^B (lat/2 + pi / 4 ) ((1 + e sin (lat)) / (1 - e sin (lat)))^(e.B/2 )) - pi / 4)
-V=B (lonc -  lon)
-S=asin ( cos (alphaC) sin ( U ) + sin (alphaC) cos (U) cos (V) )
-D=asin ( cos ( U ) sin ( V ) / cos ( S ) )
-theta=n D
-r=r0 tan(pi / 4 + gamma0/ 2) / tan^n ( S/2 + pi / 4 )
-
-The reverse formulas to derive the latitude and longitude of a point from its Southing and Westing values are:
-
-latj = 2*(atan(k^(-1/B) tan^(1/B) ( U�/2 + pi / 4 ) ((1 + e sin ( lat j-1) / (1 - e sin ( latj-1))^(e/2) ) - pi / 4) 
-where j = 1,2 and the latitude is found by iteration.
-lon = lonc - V' / B
-where
-r' =[(X - Ec)^2 + (Y - Nc)^2]^(1/2)  
-theta'=arctan [(X- Ec)/(Y- Nc)]
-D'=theta' / sin ( lat1)
-S'=2*(atan((r0 / r )^(1/n) tan(pi / 4 + lat0/ 2)) - pi / 4)
-U'=asin ( cos (alphaC) sin ( S' ) - sin (alphaC) cos (S') cos (D') )
-V'=asin ( cos (S') sin (D') / cos (U'))","For Projected Coordinate Reference System: S-JTSK (Ferro) / Krovak
-
-N.B. Krovak projection uses Ferro as the prime meridian. This has a longitude with reference to Greenwich of 17 deg 40 min West. To apply the formulae the defining longitudes must be corrected to the Greenwich meridian.
-
-Parameters:
-Ellipsoid  Bessel 1841   a = 6377397.155m  1/f = 299.15281
-    then    e = 0.081696831        e2 = 0.006674372
-
-Latitude of projection centre = 49o 30'00"" N =  0.604756586 rad
-Longitude of Origin = 42o 30'00"" East of Ferro
-Longitude of Ferro is 17o 40'00"" West of Greenwich
-Longitude of Origin = 24o 50'00"" East of Greenwich = 0.433423431   rad
-Latitude of pseudo standard parallel = 78o 30'00"" N
-Azimuth of centre line = 30o 17' 17.303""
-Scale factor on pseudo Standard Parallel (ko) = 0.99990
-Easting at projection centre (Ec) = 0.00 m
-Northing  at projection centre = 0.00 m
-
-Projection constants:
-B=1.000597498
-A=6380703.61
-*gamma0=0.863239103
-t0=1.003419164
-n= 0.979924705
-r0=1298039.005
-
-Forward calculation for: 
-Latitude = 50o 12' 32.4416"" N = 0.876312566 rad
-Longitude = 16o 50' 59.1790"" E = 0.294083999 rad
-
-Gives
-
-U=0.875596949
-V=0.139422687
-S=1.386275049
-D=0.506554623
-theta=0.496385389
-r0=1194731.014
-
-Then Southing X =  1050538.643 m
-         Westing  Y =    568990.997 m
-
-Reverse calculation for the same Southing and Westing gives
-
-r' =1194731.014
-theta' =0.496385389
-D'=0.506554623
-S'=1.386275049
-U'=0.875596949
-V'=0.139422687
-lat(iteration 1)=0.876310601 
-lat(iteration 2)=0.876312560
-lat(iteration3)=0.876312566
-
-Latitude = 0.876312566 rad = 50o 12' 32.4416"" N
-Longitude = 0.595793792 rad = 16o 50' 59.1790"" E",,Research Institute for Geodesy Topography and Cartography (VUGTK); Prague.,EPSG,2000-03-07 00:00:00,,0
-9820,Lambert Azimuthal Equal Area,1,See information source or EPSG Guidance Note 7.,See information source.,This is the ellipsoidal form of the projection.,"USGS Professional Paper 1395, ""Map Projections - A Working Manual"" by John P. Snyder.",EPSG,2001-06-05 00:00:00,,0
-9821,Lambert Azimuthal Equal Area (Spherical),1,See information source.,See information source.,This is the spherical form of the projection.  See coordinate operation method Lambert Azimuthal Equal Area (code 9820) for ellipsoidal form.  Differences of several tens of metres result from comparison of the two methods.,"USGS Professional Paper 1395, ""Map Projections - A Working Manual"" by John P. Snyder.",EPSG,2001-06-05 00:00:00,,0
-9822,Albers Equal Area,1,See information source or EPSG Guidance Note 7.,See Information Source.,,"USGS Professional Paper 1395, ""Map Projections - A Working Manual"" by John P. Snyder.",EPSG,2001-06-05 00:00:00,,0
-9823,Equidistant Cylindrical,1,"This method has one of the simplest formulas available. If the latitude of natural origin (*O) is at the equator the method is also known as Plate Carr�e. It is not used for rigorous topographic mapping because its distortion characteristics are unsuitable. Formulas are included to distinguish this map projection method from an approach sometimes mistakenly called by the same name and used for simple computer display of geographic coordinates � see Pseudo  [...]
-
-For the forward calculation:
-
-X =  R . (lon - lonO) . cos(latO)
-Y =  R .  lat
-
-where R = [a^2 * (1 �  e^2)]^0.5
-and lat and lon are expressed in radians.
-
-For the reverse calculation:
-
-lat = Y / R  
-lon = lonO + (X / R cos(latO))
-
-where R is as for the forward method.",See information source.,"If the latitude of natural origin is at the equator, also known as Plate Carr�e. See also Pseudo Plate Carree, method code 9825.","US Geological Survey Professional Paper 1395; ""Map Projections - A Working Manual"";  J. Snyder.",EPSG,2001-11-06 00:00:00,,0
-9824,Transverse Mercator Zoned Grid System,1,"The standard Transverse Mercator formulas (coordinate operation method 9807) are modified as follows:
-
-Zone number, Z, = int((Long + LongI + W) / W)  with Long,  LongI and W in degrees. 
-where (LongI) is the Initial Longitude of the zoned grid system
-and W is the width of each zone of the zoned grid system.
-If Long < 0, Long = (Long + 360) degrees.
-
-Then,
-   Long0  = [Z * W] � [LongI + (W/2)]
-
-For the forward calculation,
-   Easting, E =  Z*10^6 + FE + k0.nu[A + (1 - T + C)A^3/6 + (5 - 18T + T^2 + 72C - 58e'^2)A^5/120]
-   
-and in the reverse calculation for longitude, 
-   D = (E � [FE + Z*10^6])/(nu1.k0)",,If locations fall outwith the fixed zones the general Transverse Mercator method (code 9807) must be used for each zone.,EPSG Guidance Note #7.,EPSG,2001-06-05 00:00:00,,0
-9825,Pseudo Plate Carree,1,"X = Lon
-Y = Lat
-
-Lat = Y
-Lon = X",,"Used only for depiction of graticule (latitude/longitude) coordinates on a computer display. The axes units are decimal degrees and of variable scale. The origin is at Lat = 0, Long = 0. See Equidistant Cylindrical, code 9823, for proper Plate Carr�e.",EPSG,EPSG,2001-11-06 00:00:00,,0
-9826,Lambert Conic Conformal (West Orientated),1,"In older mapping of Denmark and Greenland the Lambert Conic Conformal is used with axes positive north and west. To derive the projected Westing and Northing coordinates of a point with geographical coordinates (Lat, Lon) the formulas are as for the standard Lambert Conic Conformal (1SP) case (coordinate operation method code 9801) except for:
-
-W =  FE � r.sin(theta)
-
-In this formula the term FE retains its definition, i.e. in the Lambert Conic Conformal (West Orientated) method it increases the Westing value at the natural origin. In this method it is effectively false westing (FW).
-
-The reverse formulas to derive the latitude and longitude of a point from its Westing and Northing values are as for the standard Lambert Conic Conformal (1SP) case except for:
-
-theta' = arctan[(FE � W)/{r0 � (N � FN)}]
-r' = +/-[(FE � W)^2 + {r0 � (N � FN)}^2]^0.5",,,EPSG guidance note #7.,EPSG,2002-01-16 00:00:00,,0
-9827,Bonne,1,See information source or EPSG Guidance Note 7.,See information source.,,"US Geological Survey Professional Paper 1395, ""Map Projections - A Working Manual"" by John P Snyder.",EPSG,2002-07-13 00:00:00,,0
-9828,Bonne (South Orientated),1,See EPSG Guidance Note 7.,,,EPSG Guidance Note number 7.,EPSG,2002-07-13 00:00:00,,0
diff --git a/src/tiff/csv/coordinate_operation_parameter.csv b/src/tiff/csv/coordinate_operation_parameter.csv
deleted file mode 100644
index f1d0880..0000000
--- a/src/tiff/csv/coordinate_operation_parameter.csv
+++ /dev/null
@@ -1,99 +0,0 @@
-"PARAMETER_CODE","PARAMETER_NAME","DESCRIPTION","INFORMATION_SOURCE","DATA_SOURCE","REVISION_DATE","CHANGE_ID","DEPRECATED"
-8601,Latitude offset,The difference between the latitude values of a point in the target and source coordinate reference systems.,EPSG guidance note number 7.,EPSG,2000-06-23 00:00:00,,0
-8602,Longitude offset,The difference between the longitude values of a point in the target and source coordinate reference systems.,EPSG guidance note number 7.,EPSG,2000-06-23 00:00:00,,0
-8603,Vertical Offset,The difference between the height or depth values of a point in the target and source coordinate reference systems.,EPSG guidance note number 7.,EPSG,2000-06-23 00:00:00,,0
-8604,Geoid undulation,"The height of the geoid above a specified ellipsoid.  Indicated by symbol N.  Usually interpolated within a geoid model.
-N = h - H, where h is the height above the ellipsoid and H is the gravity-related height.",EPSG guidance note number 7.,EPSG,2000-06-23 00:00:00,,0
-8605,X-axis translation,The difference between the X values of a point in the target and source coordinate reference systems.,EPSG guidance note number 7.,EPSG,2000-06-23 00:00:00,,0
-8606,Y-axis translation,The difference between the Y values of a point in the target and source coordinate reference systems.,EPSG guidance note number 7.,EPSG,2000-06-23 00:00:00,,0
-8607,Z-axis translation,The difference between the Z values of a point in the target and source coordinate reference systems.,EPSG guidance note number 7.,EPSG,2000-06-23 00:00:00,,0
-8608,X-axis rotation,"The angular difference between the Y and Z axes directions of target and source coordinate reference systems. This is a rotation about the X axis as viewed from the origin looking along that axis. The particular method defines which direction is positive, and what is being rotated (point or axis).",EPSG guidance note number 7.,EPSG,2000-06-23 00:00:00,,0
-8609,Y-axis rotation,"The angular difference between the X and Z axes directions of target and source coordinate reference systems. This is a rotation about theY axis as viewed from the origin looking along that axis. The particular method defines which direction is positive, and what is being rotated (point or axis).",EPSG guidance note number 7.,EPSG,2000-06-23 00:00:00,,0
-8610,Z-axis rotation,"The angular difference between the X and Y axes directions of target and source coordinate reference systems. This is a rotation about the Z axis as viewed from the origin looking along that axis. The particular method defines which direction is positive, and what is being rotated (point or axis).",EPSG guidance note number 7.,EPSG,2000-06-23 00:00:00,,0
-8611,Scale difference,"The scale difference increased by unity equals the ratio of an the length of an arbitrary distance between two points in target and source coordinate reference systems.  This is usually averaged for the intersection area of the two coordinate reference systems. 
-
-If a distance of 100 km in the source coordinate reference system translates into a distance of 100.001 km in the target coordinate reference system, the scale difference is 1 ppm (the ratio being 1.000001).",EPSG guidance note number 7.,EPSG,2000-06-23 00:00:00,,0
-8612,Scale factor for source coordinate reference system first axis,"The unit of measure of the source coordinate reference system first axis, expressed in the unit of measure of the target coordinate reference system.",EPSG guidance note number 7.,EPSG,2000-06-23 00:00:00,,0
-8613,Scale factor for source coordinate reference system second axis,"The unit of measure of the source coordinate reference system second axis, expressed in the unit of measure of the target coordinate reference system",EPSG guidance note number 7.,EPSG,2000-06-23 00:00:00,,0
-8614,Rotation angle of source coordinate reference system axes,"Angle (counter-clockwise positive) through which both of the source coordinate reference system axes need to rotated to coincide with the corresponding target coordinate reference system axes.  
-
-Alternatively, the bearing (clockwise positive) of the source coordinate reference system YS-axis measured relative to target coordinate reference system north.",EPSG guidance note number 7.,EPSG,2000-06-23 00:00:00,,0
-8615,Rotation angle of source coordinate reference system first axis,Angle (counter-clockwise positive) through which the source coordinate reference system's first axis needs to rotated to coincide with the corresponding axis of the target coordinate reference system.,EPSG guidance note number 7.,EPSG,2000-06-23 00:00:00,,0
-8616,Rotation angle of source coordinate reference system second axis,Angle (counter-clockwise positive) through which the source coordinate reference system's second axis needs to rotated to coincide with the corresponding axis of the target coordinate reference system.,EPSG guidance note number 7.,EPSG,2000-06-23 00:00:00,,0
-8617,Ordinate 1 of evaluation point,The value of the first ordinate value of the evaluation point.,EPSG guidance note number 7.,EPSG,2000-06-23 00:00:00,,0
-8618,Ordinate 2 of evaluation point,The value of the second ordinate of the evaluation point.,EPSG guidance note number 7.,EPSG,2000-06-23 00:00:00,,0
-8619,Ordinate 1 of evaluation point in source CRS,The value of the first ordinate of the evaluation point expressed in the source coordinate reference system.,EPSG guidance note number 7.,EPSG,2000-06-23 00:00:00,,0
-8620,Ordinate 2 of evaluation point in source CRS,The value of the second ordinate of the evaluation point expressed in the source coordinate reference system.,EPSG guidance note number 7.,EPSG,2000-06-23 00:00:00,,0
-8621,Ordinate 1 of evaluation point in target CRS,The value of the first ordinate of the evaluation point expressed in the target coordinate reference system.  In the case of an affine transformation the evaluation point is the origin of the source coordinate reference system.,EPSG guidance note number 7.,EPSG,2000-06-23 00:00:00,,0
-8622,Ordinate 2 of evaluation point in target CRS,The value of the second ordinate of the evaluation point expressed in the target coordinate reference system.  In the case of an affine transformation the evaluation point is the origin of the source coordinate reference system.,EPSG guidance note number 7.,EPSG,2000-06-23 00:00:00,,0
-8623,A0,Coefficient used in affine (general parametric) and polynomial transformations.,EPSG guidance note number 7.,EPSG,2000-06-23 00:00:00,,0
-8624,A1,Coefficient used in affine (general parametric) and polynomial transformations.,EPSG guidance note number 7.,EPSG,2000-06-23 00:00:00,,0
-8625,A2,Coefficient used in affine (general parametric) and polynomial transformations.,EPSG guidance note number 7.,EPSG,2000-06-23 00:00:00,,0
-8626,A3,Coefficient used in polynomial transformations.,EPSG guidance note number 7.,EPSG,2000-06-23 00:00:00,,0
-8627,A4,Coefficient used in polynomial transformations.,EPSG guidance note number 7.,EPSG,2000-06-23 00:00:00,,0
-8628,A5,Coefficient used in polynomial transformations.,EPSG guidance note number 7.,EPSG,2000-06-23 00:00:00,,0
-8629,A6,Coefficient used in polynomial transformations.,EPSG guidance note number 7.,EPSG,2000-06-23 00:00:00,,0
-8630,A7,Coefficient used in polynomial transformations.,EPSG guidance note number 7.,EPSG,2000-06-23 00:00:00,,0
-8631,A8,Coefficient used in polynomial transformations.,EPSG guidance note number 7.,EPSG,2000-06-23 00:00:00,,0
-8632,A9,Coefficient used in polynomial transformations.,EPSG guidance note number 7.,EPSG,2000-06-23 00:00:00,,0
-8633,A10,Coefficient used in polynomial transformations.,EPSG guidance note number 7.,EPSG,2000-06-23 00:00:00,,0
-8634,A11,Coefficient used in polynomial transformations.,EPSG guidance note number 7.,EPSG,2000-06-23 00:00:00,,0
-8635,A12,Coefficient used in polynomial transformations.,EPSG guidance note number 7.,EPSG,2000-06-23 00:00:00,,0
-8636,A13,Coefficient used in polynomial transformations.,EPSG guidance note number 7.,EPSG,2000-06-23 00:00:00,,0
-8637,A14,Coefficient used in polynomial transformations.,EPSG guidance note number 7.,EPSG,2000-06-23 00:00:00,,0
-8638,B00,Coefficient used only in the Madrid to ED50 polynomial transformation method.,EPSG guidance note number 7.,EPSG,2000-06-23 00:00:00,,0
-8639,B0,Coefficient used in affine (general parametric) and polynomial transformations.,EPSG guidance note number 7.,EPSG,2000-06-23 00:00:00,,0
-8640,B1,Coefficient used in affine (general parametric) and polynomial transformations.,EPSG guidance note number 7.,EPSG,2000-06-23 00:00:00,,0
-8641,B2,Coefficient used in affine (general parametric) and polynomial transformations.,EPSG guidance note number 7.,EPSG,2000-06-23 00:00:00,,0
-8642,B3,Coefficient used in polynomial transformations.,EPSG guidance note number 7.,EPSG,2000-06-23 00:00:00,,0
-8643,B4,Coefficient used in polynomial transformations.,EPSG guidance note number 7.,EPSG,2000-06-23 00:00:00,,0
-8644,B5,Coefficient used in polynomial transformations.,EPSG guidance note number 7.,EPSG,2000-06-23 00:00:00,,0
-8645,B6,Coefficient used in polynomial transformations.,EPSG guidance note number 7.,EPSG,2000-06-23 00:00:00,,0
-8646,B7,Coefficient used in polynomial transformations.,EPSG guidance note number 7.,EPSG,2000-06-23 00:00:00,,0
-8647,B8,Coefficient used in polynomial transformations.,EPSG guidance note number 7.,EPSG,2000-06-23 00:00:00,,0
-8648,B9,Coefficient used in polynomial transformations.,EPSG guidance note number 7.,EPSG,2000-06-23 00:00:00,,0
-8649,B10,Coefficient used in polynomial transformations.,EPSG guidance note number 7.,EPSG,2000-06-23 00:00:00,,0
-8650,B11,Coefficient used in polynomial transformations.,EPSG guidance note number 7.,EPSG,2000-06-23 00:00:00,,0
-8651,B12,Coefficient used in polynomial transformations.,EPSG guidance note number 7.,EPSG,2000-06-23 00:00:00,,0
-8652,B13,Coefficient used in polynomial transformations.,EPSG guidance note number 7.,EPSG,2000-06-23 00:00:00,,0
-8653,B14,Coefficient used in polynomial transformations.,EPSG guidance note number 7.,EPSG,2000-06-23 00:00:00,,0
-8654,Semi-major axis length difference,The difference between the semi-major axis values of the ellipsoids used in the target and source coordinate reference systems.,EPSG guidance note number 7.,EPSG,2000-06-23 00:00:00,,0
-8655,Flattening difference,"The difference between the flattening values of the ellipsoids used in the target and source coordinate reference systems. 
-
-flattening  = 1 / (inverse_flattening).",EPSG guidance note number 7.,EPSG,2000-06-23 00:00:00,,0
-8656,Latitude and longitude difference file,The name of the [path and] file containing latitude and longitude differences.,EPSG guidance note number 7.,EPSG,2000-06-23 00:00:00,,0
-8657,Latitude difference file,The name of the [path and] file containing latitude differences.,EPSG guidance note number 7.,EPSG,2000-06-23 00:00:00,,0
-8658,Longitude difference file,The name of the [path and] file containing longitude differences.,EPSG guidance note number 7.,EPSG,2000-06-23 00:00:00,,0
-8659,Geod. tfm. code for northern boundary,The EPSG code for the geodetic transformation applied at the northern boundary of the interpolation area.  Applies to Norwegian offshore interpolation method.,EPSG guidance note number 7.,EPSG,2000-06-23 00:00:00,,0
-8660,Geod. tfm. code for southern boundary,The EPSG code for the geodetic transformation applied at the southern boundary of the interpolation area.  Applies to Norwegian offshore interpolation method.,EPSG guidance note number 7.,EPSG,2000-06-23 00:00:00,,0
-8661,Geod. tfm. name for northern boundary,The EPSG name for the geodetic transformation applied at the northern boundary of the interpolation area.  Applies to Norwegian offshore interpolation method.,EPSG guidance note number 7.,EPSG,2000-06-23 00:00:00,,0
-8662,Geod. tfm. name for southern boundary,The EPSG name for the geodetic transformation applied at the southern boundary of the interpolation area.  Applies to Norwegian offshore interpolation method.,EPSG guidance note number 7.,EPSG,2000-06-23 00:00:00,,0
-8663,Point scale factor,The point scale factor in a selected point of the target coordinate reference system. to be used as representative figure of the scale of the target coordinate reference system in a the area to which a coordinate transformation is defined.,EPSG guidance note number 7 (June 2000 Revision),EPSG,2000-06-29 00:00:00,,0
-8664,Easting and northing difference file,The name of the [path and] file containing easting and northing differences.,Ordnance Survey of Great Britain,EPSG,2000-10-19 00:00:00,,0
-8665,Maritime Province residual file,Coordinate differences at control points,Survey of New Brunswick,EPSG,2000-10-19 00:00:00,,0
-8666,Geoid model file,The name of the [path and] file containing geoid heights.,EPSG,EPSG,2001-06-05 00:00:00,,0
-8667,Ordinate 3 of evaluation point,The value of the third ordinate of the evaluation point.,EPSG guidance note number 7.,EPSG,2001-11-06 00:00:00,,0
-8801,Latitude of natural origin,"The latitude of the point from which the values of both the geographical coordinates on the ellipsoid and the grid coordinates on the projection are deemed to increment or decrement for computational purposes. Alternatively it may be considered as the latitude of the point which in the absence of application of false coordinates has grid coordinates of (0,0).",EPSG guidance note number 7.,EPSG,1999-09-09 00:00:00,,0
-8802,Longitude of natural origin,"The longitude of the point from which the values of both the geographical coordinates on the ellipsoid and the grid coordinates on the projection are deemed to increment or decrement for computational purposes. Alternatively it may be considered as the longitude of the point which in the absence of application of false coordinates has grid coordinates of (0,0).  Sometimes known as ""central meridian (CM)"".",EPSG guidance note number 7.,EPSG,2002-06-22 0 [...]
-8805,Scale factor at natural origin,"The factor by which the map grid is reduced or enlarged during the projection process, defined by its value at the natural origin.",EPSG guidance note number 7.,EPSG,1999-09-09 00:00:00,,0
-8806,False easting,"Since the natural origin may be at or near the centre of the projection and under normal coordinate circumstances would thus give rise to negative coordinates over parts of the mapped area, this origin is usually given false coordinates which are large enough to avoid this inconvenience. The False Easting, FE, is the value assigned to the abscissa (east or west) axis of the projection grid at the natural origin.",EPSG guidance note number 7.,EPSG,2002-07-31 00:00:00,2 [...]
-8807,False northing,"Since the natural origin may be at or near the centre of the projection and under normal coordinate circumstances would thus give rise to negative coordinates over parts of the mapped area, this origin is usually given false coordinates which are large enough to avoid this inconvenience. The False Northing, FN, is the value assigned to the ordinate (north or south) axis of the projection grid at the natural origin.",EPSG guidance note number 7.,EPSG,2002-07-31 00:00: [...]
-8811,Latitude of projection centre,"For an oblique projection, this is the latitude of the point at which the azimuth of the central line is defined.",EPSG guidance note number 7.,EPSG,1999-09-09 00:00:00,,0
-8812,Longitude of projection centre,"For an oblique projection, this is the longitude of the point at which the azimuth of the central line is defined.",EPSG guidance note number 7.,EPSG,1999-09-09 00:00:00,,0
-8813,Azimuth of initial line,"The azimuthal direction (north zero, east of north being positive) of the great circle which is the centre line of an oblique projection. The azimuth is given at the projection center.",EPSG guidance note number 7.,EPSG,1999-09-09 00:00:00,,0
-8814,Angle from Rectified to Skew Grid,The angle at the natural origin of an oblique projection through which the natural coordinate reference system is rotated to make the projection north axis parallel with true north.,EPSG guidance note number 7.,EPSG,1999-09-09 00:00:00,,0
-8815,Scale factor on initial line,"The factor by which the map grid is reduced or enlarged during the projection process, defined by its value at the projection center.",EPSG guidance note number 7.,EPSG,1999-09-09 00:00:00,,0
-8816,Easting at projection centre,The easting value assigned to the projection centre.,EPSG guidance note number 7.,EPSG,1999-09-09 00:00:00,,0
-8817,Northing at projection centre,The northing value assigned to the projection centre.,EPSG guidance note number 7.,EPSG,1999-09-09 00:00:00,,0
-8818,Latitude of pseudo standard parallel,"Latitude of the parallel on which the conic or cylindrical projection is based.  This latitude is not geographic, but is defined on the conformal sphere AFTER its rotation to obtain the oblique aspect of the projection",EPSG guidance note number 7,EPSG,2000-03-07 00:00:00,,0
-8819,Scale factor on pseudo standard parallel,"The factor by which the map grid is reduced or enlarged during the projection process, defined by its value at the pseudo-standard parallel.",EPSG guidance note number 7.,EPSG,2000-03-07 00:00:00,,0
-8821,Latitude of false origin,The latitude of the point which is not the natural origin and at which grid coordinate values false easting and false northing are defined.,EPSG guidance note number 7.,EPSG,1999-09-09 00:00:00,,0
-8822,Longitude of false origin,The longitude of the point which is not the natural origin and at which grid coordinate values false easting and false northing are defined.,EPSG guidance note number 7.,EPSG,1999-09-09 00:00:00,,0
-8823,Latitude of 1st standard parallel,"For a conic projection with two standard parallels, this is the latitude of intersection of the cone with the ellipsoid that is nearest the pole.  Scale is true along this parallel.",EPSG guidance note number 7.,EPSG,1999-09-09 00:00:00,,0
-8824,Latitude of 2nd standard parallel,"For a conic projection with two standard parallels, this is the latitude of intersection of the cone with the ellipsoid that is furthest from the pole.  Scale is true along this parallel.",EPSG guidance note number 7.,EPSG,1999-09-09 00:00:00,,0
-8826,Easting at false origin,The easting value assigned to the false origin.,EPSG guidance note number 7.,EPSG,1999-09-09 00:00:00,,0
-8827,Northing at false origin,The northing value assigned to the false origin.,EPSG guidance note number 7.,EPSG,1999-09-09 00:00:00,,0
-8828,Spherical latitude of origin,The latitude of the point from which the values of both the geographical coordinates on the sphere and the grid coordinates on a spherical projection are deemed to increment or decrement for computational purposes.,EPSG guidance note number 7.,EPSG,2001-06-05 00:00:00,,0
-8829,Spherical longitude of origin,The longitude of the point from which the values of both the geographical coordinates on the sphere and the grid coordinates on a spherical projection are deemed to increment or decrement for computational purposes.,EPSG guidance note number 7.,EPSG,2001-06-05 00:00:00,,0
-8830,Initial longitude,The longitude of the western limit of the first zone of a Transverse Mercator zoned grid system.,EPSG,EPSG,2001-06-05 00:00:00,,0
-8831,Zone width,The longitude width of a zone of a Transverse Mercator zoned grid system.,EPSG,EPSG,2001-06-05 00:00:00,,0
diff --git a/src/tiff/csv/coordinate_operation_parameter_value.csv b/src/tiff/csv/coordinate_operation_parameter_value.csv
deleted file mode 100644
index d3e43b3..0000000
--- a/src/tiff/csv/coordinate_operation_parameter_value.csv
+++ /dev/null
@@ -1,8406 +0,0 @@
-"COORD_OP_CODE","COORD_OP_METHOD_CODE","PARAMETER_CODE","PARAMETER_VALUE","PARAM_VALUE_FILE_REF","UOM_CODE"
-1025,9630,8617,55.0,,9102
-1025,9630,8618,0.0,,9102
-1025,9630,8623,-0.00000556098,,9203
-1025,9630,8624,-0.00000155391,,9203
-1025,9630,8625,-0.00000040262,,9203
-1025,9630,8626,-0.000000509693,,9203
-1025,9630,8627,-0.000000819775,,9203
-1025,9630,8628,-0.000000247592,,9203
-1025,9630,8629,0.000000136682,,9203
-1025,9630,8630,0.000000186198,,9203
-1025,9630,8631,0.00000012335,,9203
-1025,9630,8632,0.0000000568797,,9203
-1025,9630,8633,-0.00000000232217,,9203
-1025,9630,8634,-0.00000000769931,,9203
-1025,9630,8635,-0.00000000786953,,9203
-1025,9630,8636,-0.00000000612216,,9203
-1025,9630,8637,-0.00000000401382,,9203
-1025,9630,8639,0.0000148944,,9203
-1025,9630,8640,0.00000268191,,9203
-1025,9630,8641,0.0000024529,,9203
-1025,9630,8642,0.0000002944,,9203
-1025,9630,8643,0.0000015226,,9203
-1025,9630,8644,0.000000910592,,9203
-1025,9630,8645,-0.000000382241,,9203
-1025,9630,8646,-0.000000851732,,9203
-1025,9630,8647,-0.000000566713,,9203
-1025,9630,8648,-0.000000185188,,9203
-1025,9630,8649,0.0000000284312,,9203
-1025,9630,8650,0.0000000684853,,9203
-1025,9630,8651,0.0000000500828,,9203
-1025,9630,8652,0.0000000415937,,9203
-1025,9630,8653,0.00000000762236,,9203
-1026,9617,8623,8.4386918,,9203
-1026,9617,8624,-0.0972,,9203
-1026,9617,8625,-0.03672,,9203
-1026,9617,8626,0.0000406,,9203
-1026,9617,8638,-13276.58,,9203
-1026,9617,8639,2.6620443,,9203
-1026,9617,8640,0.07992,,9203
-1026,9617,8641,-0.0036,,9203
-1026,9617,8642,-0.0000109,,9203
-1027,9617,8623,11.328779,,9203
-1027,9617,8624,-0.1674,,9203
-1027,9617,8625,-0.03852,,9203
-1027,9617,8626,0.0000379,,9203
-1027,9617,8638,-13276.58,,9203
-1027,9617,8639,2.5079425,,9203
-1027,9617,8640,0.08352,,9203
-1027,9617,8641,-0.00864,,9203
-1027,9617,8642,-0.0000038,,9203
-1028,9617,8623,6.2280987,,9203
-1028,9617,8624,-0.03924,,9203
-1028,9617,8625,-0.03276,,9203
-1028,9617,8626,0.0000284,,9203
-1028,9617,8638,-13276.58,,9104
-1028,9617,8639,2.9368989,,9203
-1028,9617,8640,0.07272,,9203
-1028,9617,8641,0.00216,,9203
-1028,9617,8642,-0.0000179,,9203
-1029,9632,8619,155000.0,,9001
-1029,9632,8620,463000.0,,9001
-1029,9632,8621,663395.607,,9001
-1029,9632,8622,5781194.38,,9001
-1029,9632,8624,-51.681,,9203
-1029,9632,8625,3290.525,,9203
-1029,9632,8626,20.172,,9203
-1029,9632,8627,1.133,,9203
-1029,9632,8628,2.075,,9203
-1029,9632,8629,0.251,,9203
-1029,9632,8630,0.075,,9203
-1029,9632,8631,-0.012,,9203
-1030,9632,8619,663395.607,,9001
-1030,9632,8620,5781194.38,,9001
-1030,9632,8621,155000.0,,9001
-1030,9632,8622,463000.0,,9001
-1030,9632,8624,56.619,,9203
-1030,9632,8625,3290.362,,9203
-1030,9632,8626,20.184,,9203
-1030,9632,8627,-0.861,,9203
-1030,9632,8628,2.082,,9203
-1030,9632,8629,-0.023,,9203
-1030,9632,8630,0.07,,9203
-1030,9632,8631,-0.025,,9203
-1031,9632,8619,155000.0,,9001
-1031,9632,8620,463000.0,,9001
-1031,9632,8621,663395.563,,9001
-1031,9632,8622,5781194.442,,9001
-1031,9632,8624,-51.718,,9203
-1031,9632,8625,3290.521,,9203
-1031,9632,8626,20.154,,9203
-1031,9632,8627,1.152,,9203
-1031,9632,8628,2.061,,9203
-1031,9632,8629,0.238,,9203
-1031,9632,8630,0.058,,9203
-1031,9632,8631,-0.013,,9203
-1032,9632,8619,663395.563,,9001
-1032,9632,8620,5781194.442,,9001
-1032,9632,8621,155000.0,,9001
-1032,9632,8622,463000.0,,9001
-1032,9632,8624,99943.4175,,9203
-1032,9632,8625,-3290.3612,,9203
-1032,9632,8626,-20.1673,,9203
-1032,9632,8627,0.8387,,9203
-1032,9632,8628,-2.0651,,9203
-1032,9632,8629,0.0334,,9203
-1032,9632,8630,-0.0523,,9203
-1032,9632,8631,0.23,,9203
-1033,9631,8619,0.0,,9001
-1033,9631,8620,0.0,,9001
-1033,9631,8621,449681.702,,9001
-1033,9631,8622,5460505.326,,9001
-1033,9631,8624,-71.3747,,9203
-1033,9631,8625,1858.8407,,9203
-1033,9631,8626,-5.4504,,9203
-1033,9631,8627,-16.9681,,9203
-1033,9631,8628,4.0783,,9203
-1033,9631,8629,0.2193,,9203
-1034,9631,8619,500000.0,,9001
-1034,9631,8620,5500000.0,,9001
-1034,9631,8621,448933.793,,9001
-1034,9631,8622,5461423.984,,9001
-1034,9631,8624,28.7827,,9203
-1034,9631,8625,-1843.8236,,9203
-1034,9631,8626,0.0864,,9203
-1034,9631,8627,11.9065,,9203
-1034,9631,8628,-4.0793,,9203
-1034,9631,8629,0.0809,,9203
-1035,9621,8611,0.0,,9202
-1035,9621,8614,271.053,,9110
-1035,9621,8621,2610200.48,,9001
-1035,9621,8622,4905282.73,,9001
-1036,9633,8664,,ostn97.txt,
-1037,9632,8619,155000.0,,9001
-1037,9632,8620,463000.0,,9001
-1037,9632,8621,526577.124,,9001
-1037,9632,8622,5778575.474,,9001
-1037,9632,8624,99969.1014,,9203
-1037,9632,8625,533.6385,,9203
-1037,9632,8626,3.3943,,9203
-1037,9632,8627,-0.1391,,9203
-1037,9632,8628,2.0658,,9203
-1037,9632,8629,0.0677,,9203
-1037,9632,8630,0.0561,,9203
-1037,9632,8631,-0.0148,,9203
-1038,9632,8619,526577.124,,9001
-1038,9632,8620,5778575.474,,9001
-1038,9632,8621,155000.0,,9001
-1038,9632,8622,463000.0,,9001
-1038,9632,8624,100028.0577,,9203
-1038,9632,8625,-533.9532,,9203
-1038,9632,8626,-3.3943,,9203
-1038,9632,8627,0.1935,,9203
-1038,9632,8628,-2.0687,,9203
-1038,9632,8629,-0.0235,,9203
-1038,9632,8630,-0.0554,,9203
-1038,9632,8631,0.0167,,9203
-1100,9603,8605,-166.0,,9001
-1100,9603,8606,-15.0,,9001
-1100,9603,8607,204.0,,9001
-1101,9603,8605,-118.0,,9001
-1101,9603,8606,-14.0,,9001
-1101,9603,8607,218.0,,9001
-1102,9603,8605,-134.0,,9001
-1102,9603,8606,-2.0,,9001
-1102,9603,8607,210.0,,9001
-1103,9603,8605,-165.0,,9001
-1103,9603,8606,-11.0,,9001
-1103,9603,8607,206.0,,9001
-1104,9603,8605,-123.0,,9001
-1104,9603,8606,-20.0,,9001
-1104,9603,8607,220.0,,9001
-1105,9603,8605,-128.0,,9001
-1105,9603,8606,-18.0,,9001
-1105,9603,8607,224.0,,9001
-1106,9603,8605,-161.0,,9001
-1106,9603,8606,-14.0,,9001
-1106,9603,8607,205.0,,9001
-1107,9603,8605,-43.0,,9001
-1107,9603,8606,-163.0,,9001
-1107,9603,8607,45.0,,9001
-1108,9603,8605,-133.0,,9001
-1108,9603,8606,-48.0,,9001
-1108,9603,8607,148.0,,9001
-1109,9603,8605,-134.0,,9001
-1109,9603,8606,-48.0,,9001
-1109,9603,8607,149.0,,9001
-1110,9603,8605,-150.0,,9001
-1110,9603,8606,-250.0,,9001
-1110,9603,8607,-1.0,,9001
-1111,9603,8605,-143.0,,9001
-1111,9603,8606,-236.0,,9001
-1111,9603,8607,7.0,,9001
-1112,9606,8605,593.16,,9001
-1112,9606,8606,26.15,,9001
-1112,9606,8607,478.54,,9001
-1112,9606,8608,-6.3239,,9109
-1112,9606,8609,-0.5008,,9109
-1112,9606,8610,-5.5487,,9109
-1112,9606,8611,4.0775,,9202
-1113,9603,8605,-143.0,,9001
-1113,9603,8606,-90.0,,9001
-1113,9603,8607,-294.0,,9001
-1114,9603,8605,-138.0,,9001
-1114,9603,8606,-105.0,,9001
-1114,9603,8607,-289.0,,9001
-1115,9603,8605,-153.0,,9001
-1115,9603,8606,-5.0,,9001
-1115,9603,8607,-292.0,,9001
-1116,9603,8605,-125.0,,9001
-1116,9603,8606,-108.0,,9001
-1116,9603,8607,-295.0,,9001
-1117,9603,8605,-161.0,,9001
-1117,9603,8606,-73.0,,9001
-1117,9603,8607,-317.0,,9001
-1118,9603,8605,-134.0,,9001
-1118,9603,8606,-105.0,,9001
-1118,9603,8607,-295.0,,9001
-1119,9603,8605,-169.0,,9001
-1119,9603,8606,-19.0,,9001
-1119,9603,8607,-278.0,,9001
-1120,9603,8605,-147.0,,9001
-1120,9603,8606,-74.0,,9001
-1120,9603,8607,-283.0,,9001
-1121,9603,8605,-142.0,,9001
-1121,9603,8606,-96.0,,9001
-1121,9603,8607,-293.0,,9001
-1122,9603,8605,-160.0,,9001
-1122,9603,8606,-6.0,,9001
-1122,9603,8607,-302.0,,9001
-1123,9603,8605,-377.0,,9001
-1123,9603,8606,681.0,,9001
-1123,9603,8607,-50.0,,9001
-1124,9603,8605,-73.0,,9001
-1124,9603,8606,213.0,,9001
-1124,9603,8607,296.0,,9001
-1125,9603,8605,307.0,,9001
-1125,9603,8606,304.0,,9001
-1125,9603,8607,-318.0,,9001
-1126,9603,8605,-384.0,,9001
-1126,9603,8606,664.0,,9001
-1126,9603,8607,-48.0,,9001
-1127,9603,8605,-148.0,,9001
-1127,9603,8606,136.0,,9001
-1127,9603,8607,90.0,,9001
-1128,9603,8605,-136.0,,9001
-1128,9603,8606,-108.0,,9001
-1128,9603,8607,-292.0,,9001
-1129,9603,8605,-134.73,,9001
-1129,9603,8606,-110.92,,9001
-1129,9603,8607,-292.66,,9001
-1130,9603,8605,-263.0,,9001
-1130,9603,8606,6.0,,9001
-1130,9603,8607,431.0,,9001
-1131,9603,8605,-134.0,,9001
-1131,9603,8606,229.0,,9001
-1131,9603,8607,-29.0,,9001
-1132,9603,8605,-206.0,,9001
-1132,9603,8606,172.0,,9001
-1132,9603,8607,-6.0,,9001
-1133,9603,8605,-87.0,,9001
-1133,9603,8606,-98.0,,9001
-1133,9603,8607,-121.0,,9001
-1134,9603,8605,-87.0,,9001
-1134,9603,8606,-96.0,,9001
-1134,9603,8607,-120.0,,9001
-1135,9603,8605,-103.0,,9001
-1135,9603,8606,-106.0,,9001
-1135,9603,8607,-141.0,,9001
-1136,9603,8605,-104.0,,9001
-1136,9603,8606,-101.0,,9001
-1136,9603,8607,-140.0,,9001
-1137,9603,8605,-130.0,,9001
-1137,9603,8606,-117.0,,9001
-1137,9603,8607,-151.0,,9001
-1138,9603,8605,-86.0,,9001
-1138,9603,8606,-96.0,,9001
-1138,9603,8607,-120.0,,9001
-1139,9603,8605,-87.0,,9001
-1139,9603,8606,-95.0,,9001
-1139,9603,8607,-120.0,,9001
-1140,9603,8605,-84.0,,9001
-1140,9603,8606,-95.0,,9001
-1140,9603,8607,-130.0,,9001
-1141,9603,8605,-117.0,,9001
-1141,9603,8606,-132.0,,9001
-1141,9603,8607,-164.0,,9001
-1142,9603,8605,-97.0,,9001
-1142,9603,8606,-103.0,,9001
-1142,9603,8607,-120.0,,9001
-1143,9603,8605,-97.0,,9001
-1143,9603,8606,-88.0,,9001
-1143,9603,8607,-135.0,,9001
-1144,9603,8605,-107.0,,9001
-1144,9603,8606,-88.0,,9001
-1144,9603,8607,-149.0,,9001
-1145,9603,8605,-84.0,,9001
-1145,9603,8606,-107.0,,9001
-1145,9603,8607,-120.0,,9001
-1146,9606,8605,-82.981,,9001
-1146,9606,8606,-99.719,,9001
-1146,9606,8607,-110.709,,9001
-1146,9606,8608,-0.5076,,9109
-1146,9606,8609,0.1503,,9109
-1146,9606,8610,0.3898,,9109
-1146,9606,8611,-0.3143,,9202
-1147,9606,8605,-1.51,,9001
-1147,9606,8606,-0.84,,9001
-1147,9606,8607,-3.5,,9001
-1147,9606,8608,-1.893,,9109
-1147,9606,8609,-0.687,,9109
-1147,9606,8610,-2.764,,9109
-1147,9606,8611,0.609,,9202
-1148,9603,8605,-130.0,,9001
-1148,9603,8606,110.0,,9001
-1148,9603,8607,-13.0,,9001
-1149,9603,8605,0.0,,9001
-1149,9603,8606,0.0,,9001
-1149,9603,8607,0.0,,9001
-1150,9603,8605,0.0,,9001
-1150,9603,8606,0.0,,9001
-1150,9603,8607,0.0,,9001
-1151,9603,8605,84.0,,9001
-1151,9603,8606,-22.0,,9001
-1151,9603,8607,209.0,,9001
-1152,9603,8605,-637.0,,9001
-1152,9603,8606,-549.0,,9001
-1152,9603,8607,-203.0,,9001
-1153,9603,8605,217.0,,9001
-1153,9603,8606,823.0,,9001
-1153,9603,8607,299.0,,9001
-1154,9603,8605,209.0,,9001
-1154,9603,8606,818.0,,9001
-1154,9603,8607,290.0,,9001
-1155,9603,8605,282.0,,9001
-1155,9603,8606,726.0,,9001
-1155,9603,8607,254.0,,9001
-1156,9603,8605,295.0,,9001
-1156,9603,8606,736.0,,9001
-1156,9603,8607,257.0,,9001
-1157,9603,8605,-97.0,,9001
-1157,9603,8606,787.0,,9001
-1157,9603,8607,86.0,,9001
-1158,9603,8605,-11.0,,9001
-1158,9603,8606,851.0,,9001
-1158,9603,8607,5.0,,9001
-1159,9603,8605,-130.0,,9001
-1159,9603,8606,29.0,,9001
-1159,9603,8607,364.0,,9001
-1160,9603,8605,-90.0,,9001
-1160,9603,8606,40.0,,9001
-1160,9603,8607,88.0,,9001
-1161,9603,8605,-133.0,,9001
-1161,9603,8606,-77.0,,9001
-1161,9603,8607,-51.0,,9001
-1162,9603,8605,-133.0,,9001
-1162,9603,8606,-79.0,,9001
-1162,9603,8607,-72.0,,9001
-1163,9603,8605,-74.0,,9001
-1163,9603,8606,-130.0,,9001
-1163,9603,8607,42.0,,9001
-1164,9603,8605,41.0,,9001
-1164,9603,8606,-220.0,,9001
-1164,9603,8607,-134.0,,9001
-1165,9603,8605,639.0,,9001
-1165,9603,8606,405.0,,9001
-1165,9603,8607,60.0,,9001
-1166,9603,8605,31.0,,9001
-1166,9603,8606,146.0,,9001
-1166,9603,8607,47.0,,9001
-1167,9603,8605,-81.0,,9001
-1167,9603,8606,-84.0,,9001
-1167,9603,8607,115.0,,9001
-1168,9603,8605,-92.0,,9001
-1168,9603,8606,-93.0,,9001
-1168,9603,8607,122.0,,9001
-1169,9603,8605,-225.0,,9001
-1169,9603,8606,-65.0,,9001
-1169,9603,8607,9.0,,9001
-1170,9603,8605,-3.0,,9001
-1170,9603,8606,142.0,,9001
-1170,9603,8607,183.0,,9001
-1171,9603,8605,0.0,,9001
-1171,9603,8606,125.0,,9001
-1171,9603,8607,194.0,,9001
-1172,9603,8605,-10.0,,9001
-1172,9603,8606,158.0,,9001
-1172,9603,8607,187.0,,9001
-1173,9603,8605,-8.0,,9001
-1173,9603,8606,160.0,,9001
-1173,9603,8607,176.0,,9001
-1174,9603,8605,-9.0,,9001
-1174,9603,8606,161.0,,9001
-1174,9603,8607,179.0,,9001
-1175,9603,8605,-8.0,,9001
-1175,9603,8606,159.0,,9001
-1175,9603,8607,175.0,,9001
-1176,9603,8605,-5.0,,9001
-1176,9603,8606,135.0,,9001
-1176,9603,8607,172.0,,9001
-1177,9603,8605,-4.0,,9001
-1177,9603,8606,154.0,,9001
-1177,9603,8607,178.0,,9001
-1178,9603,8605,1.0,,9001
-1178,9603,8606,140.0,,9001
-1178,9603,8607,165.0,,9001
-1179,9603,8605,-7.0,,9001
-1179,9603,8606,162.0,,9001
-1179,9603,8607,188.0,,9001
-1180,9603,8605,-9.0,,9001
-1180,9603,8606,157.0,,9001
-1180,9603,8607,184.0,,9001
-1181,9603,8605,-22.0,,9001
-1181,9603,8606,160.0,,9001
-1181,9603,8607,190.0,,9001
-1182,9603,8605,4.0,,9001
-1182,9603,8606,159.0,,9001
-1182,9603,8607,188.0,,9001
-1183,9603,8605,-7.0,,9001
-1183,9603,8606,139.0,,9001
-1183,9603,8607,181.0,,9001
-1184,9603,8605,0.0,,9001
-1184,9603,8606,125.0,,9001
-1184,9603,8607,201.0,,9001
-1185,9603,8605,-9.0,,9001
-1185,9603,8606,152.0,,9001
-1185,9603,8607,178.0,,9001
-1186,9603,8605,11.0,,9001
-1186,9603,8606,114.0,,9001
-1186,9603,8607,195.0,,9001
-1187,9603,8605,-12.0,,9001
-1187,9603,8606,130.0,,9001
-1187,9603,8607,190.0,,9001
-1188,9603,8605,0.0,,9001
-1188,9603,8606,0.0,,9001
-1188,9603,8607,0.0,,9001
-1189,9603,8605,-247.0,,9001
-1189,9603,8606,-148.0,,9001
-1189,9603,8607,369.0,,9001
-1190,9603,8605,-243.0,,9001
-1190,9603,8606,-192.0,,9001
-1190,9603,8607,477.0,,9001
-1191,9603,8605,-249.0,,9001
-1191,9603,8606,-156.0,,9001
-1191,9603,8607,381.0,,9001
-1192,9603,8605,-10.0,,9001
-1192,9603,8606,375.0,,9001
-1192,9603,8607,165.0,,9001
-1193,9603,8605,-168.0,,9001
-1193,9603,8606,-60.0,,9001
-1193,9603,8607,320.0,,9001
-1195,9603,8605,375.0,,9001
-1195,9603,8606,-111.0,,9001
-1195,9603,8607,431.0,,9001
-1196,9603,8605,371.0,,9001
-1196,9603,8606,-112.0,,9001
-1196,9603,8607,434.0,,9001
-1197,9603,8605,371.0,,9001
-1197,9603,8606,-111.0,,9001
-1197,9603,8607,434.0,,9001
-1198,9603,8605,384.0,,9001
-1198,9603,8606,-111.0,,9001
-1198,9603,8607,425.0,,9001
-1199,9603,8605,370.0,,9001
-1199,9603,8606,-108.0,,9001
-1199,9603,8607,434.0,,9001
-1200,9603,8605,-148.0,,9001
-1200,9603,8606,51.0,,9001
-1200,9603,8607,-291.0,,9001
-1201,9603,8605,-288.0,,9001
-1201,9603,8606,175.0,,9001
-1201,9603,8607,-376.0,,9001
-1202,9603,8605,-270.0,,9001
-1202,9603,8606,188.0,,9001
-1202,9603,8607,-388.0,,9001
-1203,9603,8605,-270.0,,9001
-1203,9603,8606,183.0,,9001
-1203,9603,8607,-390.0,,9001
-1204,9603,8605,-305.0,,9001
-1204,9603,8606,243.0,,9001
-1204,9603,8607,-442.0,,9001
-1205,9603,8605,-282.0,,9001
-1205,9603,8606,169.0,,9001
-1205,9603,8607,-371.0,,9001
-1206,9603,8605,-278.0,,9001
-1206,9603,8606,171.0,,9001
-1206,9603,8607,-367.0,,9001
-1207,9603,8605,-298.0,,9001
-1207,9603,8606,159.0,,9001
-1207,9603,8607,-369.0,,9001
-1208,9603,8605,-279.0,,9001
-1208,9603,8606,175.0,,9001
-1208,9603,8607,-379.0,,9001
-1209,9603,8605,-295.0,,9001
-1209,9603,8606,173.0,,9001
-1209,9603,8607,-371.0,,9001
-1211,9603,8605,164.0,,9001
-1211,9603,8606,138.0,,9001
-1211,9603,8607,-189.0,,9001
-1212,9603,8605,-57.0,,9001
-1212,9603,8606,1.0,,9001
-1212,9603,8607,-41.0,,9001
-1213,9603,8605,-62.0,,9001
-1213,9603,8606,-1.0,,9001
-1213,9603,8607,-37.0,,9001
-1214,9603,8605,-61.0,,9001
-1214,9603,8606,2.0,,9001
-1214,9603,8607,-48.0,,9001
-1215,9603,8605,-60.0,,9001
-1215,9603,8606,-2.0,,9001
-1215,9603,8607,-41.0,,9001
-1216,9603,8605,-75.0,,9001
-1216,9603,8606,-1.0,,9001
-1216,9603,8607,-44.0,,9001
-1217,9603,8605,-44.0,,9001
-1217,9603,8606,6.0,,9001
-1217,9603,8607,-36.0,,9001
-1218,9603,8605,-48.0,,9001
-1218,9603,8606,3.0,,9001
-1218,9603,8607,-44.0,,9001
-1219,9603,8605,-47.0,,9001
-1219,9603,8606,26.0,,9001
-1219,9603,8607,-42.0,,9001
-1220,9603,8605,-53.0,,9001
-1220,9603,8606,3.0,,9001
-1220,9603,8607,-47.0,,9001
-1221,9603,8605,-61.0,,9001
-1221,9603,8606,2.0,,9001
-1221,9603,8607,-33.0,,9001
-1222,9603,8605,-58.0,,9001
-1222,9603,8606,0.0,,9001
-1222,9603,8607,-44.0,,9001
-1223,9603,8605,-45.0,,9001
-1223,9603,8606,12.0,,9001
-1223,9603,8607,-33.0,,9001
-1224,9603,8605,-45.0,,9001
-1224,9603,8606,8.0,,9001
-1224,9603,8607,-33.0,,9001
-1225,9603,8605,-355.0,,9001
-1225,9603,8606,21.0,,9001
-1225,9603,8607,72.0,,9001
-1226,9603,8605,616.0,,9001
-1226,9603,8606,97.0,,9001
-1226,9603,8607,-251.0,,9001
-1227,9603,8605,-189.0,,9001
-1227,9603,8606,-242.0,,9001
-1227,9603,8607,-91.0,,9001
-1228,9603,8605,-679.0,,9001
-1228,9603,8606,669.0,,9001
-1228,9603,8607,-48.0,,9001
-1229,9603,8605,506.0,,9001
-1229,9603,8606,-122.0,,9001
-1229,9603,8607,611.0,,9001
-1230,9603,8605,-148.0,,9001
-1230,9603,8606,507.0,,9001
-1230,9603,8607,685.0,,9001
-1231,9603,8605,-148.0,,9001
-1231,9603,8606,507.0,,9001
-1231,9603,8607,685.0,,9001
-1232,9603,8605,-146.0,,9001
-1232,9603,8606,507.0,,9001
-1232,9603,8607,687.0,,9001
-1233,9603,8605,-158.0,,9001
-1233,9603,8606,507.0,,9001
-1233,9603,8607,676.0,,9001
-1234,9603,8605,-155.0,,9001
-1234,9603,8606,171.0,,9001
-1234,9603,8607,37.0,,9001
-1235,9603,8605,-265.0,,9001
-1235,9603,8606,120.0,,9001
-1235,9603,8607,-358.0,,9001
-1236,9607,8605,-116.0,,9001
-1236,9607,8606,-50.47,,9001
-1236,9607,8607,141.69,,9001
-1236,9607,8608,-0.23,,9104
-1236,9607,8609,-0.39,,9104
-1236,9607,8610,-0.344,,9104
-1236,9607,8611,0.0983,,9202
-1237,9606,8605,0.0,,9001
-1237,9606,8606,0.0,,9001
-1237,9606,8607,4.5,,9001
-1237,9606,8608,0.0,,9104
-1237,9606,8609,0.0,,9104
-1237,9606,8610,0.554,,9104
-1237,9606,8611,0.2263,,9202
-1238,9606,8605,0.0,,9001
-1238,9606,8606,0.0,,9001
-1238,9606,8607,4.5,,9001
-1238,9606,8608,0.0,,9104
-1238,9606,8609,0.0,,9104
-1238,9606,8610,0.554,,9104
-1238,9606,8611,0.219,,9202
-1239,9606,8605,0.0,,9001
-1239,9606,8606,0.0,,9001
-1239,9606,8607,-2.6,,9001
-1239,9606,8608,0.0,,9104
-1239,9606,8609,0.0,,9104
-1239,9606,8610,0.26,,9104
-1239,9606,8611,-0.6063,,9202
-1240,9606,8605,0.0,,9001
-1240,9606,8606,0.0,,9001
-1240,9606,8607,1.9,,9001
-1240,9606,8608,0.0,,9104
-1240,9606,8609,0.0,,9104
-1240,9606,8610,0.814,,9104
-1240,9606,8611,-0.38,,9202
-1241,9613,8657,,conus.las,
-1241,9613,8658,,conus.los,
-1243,9613,8657,,alaska.las,
-1243,9613,8658,,alaska.los,
-1245,9603,8605,-112.0,,9001
-1245,9603,8606,-77.0,,9001
-1245,9603,8607,-145.0,,9001
-1246,9603,8605,-333.0,,9001
-1246,9603,8606,-222.0,,9001
-1246,9603,8607,114.0,,9001
-1247,9603,8605,283.0,,9001
-1247,9603,8606,682.0,,9001
-1247,9603,8607,231.0,,9001
-1248,9603,8605,-24.0,,9001
-1248,9603,8606,-15.0,,9001
-1248,9603,8607,5.0,,9001
-1249,9603,8605,-2.0,,9001
-1249,9603,8606,152.0,,9001
-1249,9603,8607,149.0,,9001
-1250,9603,8605,2.0,,9001
-1250,9603,8606,204.0,,9001
-1250,9603,8607,105.0,,9001
-1251,9603,8605,-2.0,,9001
-1251,9603,8606,0.0,,9001
-1251,9603,8607,4.0,,9001
-1252,9603,8605,1.0,,9001
-1252,9603,8606,1.0,,9001
-1252,9603,8607,-1.0,,9001
-1253,9603,8605,-186.0,,9001
-1253,9603,8606,-93.0,,9001
-1253,9603,8607,310.0,,9001
-1254,9603,8605,28.0,,9001
-1254,9603,8606,-130.0,,9001
-1254,9603,8607,-95.0,,9001
-1255,9603,8605,-123.0,,9001
-1255,9603,8606,-206.0,,9001
-1255,9603,8607,219.0,,9001
-1256,9603,8605,-346.0,,9001
-1256,9603,8606,-1.0,,9001
-1256,9603,8607,224.0,,9001
-1258,9601,8602,-74.04513,,9110
-1259,9601,8602,-9.0754862,,9110
-1260,9601,8602,106.482779,,9110
-1261,9601,8602,-17.4,,9110
-1262,9601,8602,12.27084,,9110
-1263,9601,8602,106.482779,,9110
-1264,9601,8602,4.220471,,9110
-1265,9601,8602,2.5969213,,9105
-1266,9601,8602,2.5969213,,9105
-1268,9601,8602,106.482779,,9110
-1269,9601,8602,18.03298,,9110
-1270,9601,8602,23.4258815,,9110
-1271,9603,8605,615.64,,9001
-1271,9603,8606,102.08,,9001
-1271,9603,8607,-255.81,,9001
-1272,9603,8605,-199.87,,9001
-1272,9603,8606,74.79,,9001
-1272,9603,8607,246.62,,9001
-1273,9607,8605,-56.0,,9001
-1273,9607,8606,75.77,,9001
-1273,9607,8607,15.31,,9001
-1273,9607,8608,-0.37,,9104
-1273,9607,8609,-0.2,,9104
-1273,9607,8610,-0.21,,9104
-1273,9607,8611,-1.01,,9202
-1274,9607,8605,-40.595,,9001
-1274,9607,8606,-18.55,,9001
-1274,9607,8607,-69.339,,9001
-1274,9607,8608,-2.508,,9104
-1274,9607,8609,-1.832,,9104
-1274,9607,8610,2.611,,9104
-1274,9607,8611,-4.299,,9202
-1275,9603,8605,-84.0,,9001
-1275,9603,8606,-97.0,,9001
-1275,9603,8607,-117.0,,9001
-1276,9603,8605,-84.0,,9001
-1276,9603,8606,37.0,,9001
-1276,9603,8607,437.0,,9001
-1277,9603,8605,-168.0,,9001
-1277,9603,8606,-72.0,,9001
-1277,9603,8607,314.0,,9001
-1278,9603,8605,-127.8,,9001
-1278,9603,8606,-52.3,,9001
-1278,9603,8607,152.9,,9001
-1279,9603,8605,-128.5,,9001
-1279,9603,8606,-53.0,,9001
-1279,9603,8607,153.4,,9001
-1280,9607,8605,-117.763,,9001
-1280,9607,8606,-51.51,,9001
-1280,9607,8607,139.061,,9001
-1280,9607,8608,-0.292,,9104
-1280,9607,8609,-0.443,,9104
-1280,9607,8610,-0.277,,9104
-1280,9607,8611,-0.191,,9202
-1282,9603,8605,-404.78,,9001
-1282,9603,8606,685.68,,9001
-1282,9603,8607,45.47,,9001
-1283,9603,8605,0.0,,9001
-1283,9603,8606,0.0,,9001
-1283,9603,8607,0.0,,9001
-1284,9603,8605,-157.0,,9001
-1284,9603,8606,-2.0,,9001
-1284,9603,8607,-299.0,,9001
-1285,9603,8605,-175.0,,9001
-1285,9603,8606,-23.0,,9001
-1285,9603,8607,-303.0,,9001
-1286,9603,8605,-403.0,,9001
-1286,9603,8606,684.0,,9001
-1286,9603,8607,41.0,,9001
-1287,9603,8605,28.0,,9001
-1287,9603,8606,-121.0,,9001
-1287,9603,8607,-77.0,,9001
-1288,9603,8605,23.0,,9001
-1288,9603,8606,-124.0,,9001
-1288,9603,8607,-82.0,,9001
-1289,9603,8605,26.0,,9001
-1289,9603,8606,-121.0,,9001
-1289,9603,8607,-78.0,,9001
-1290,9603,8605,24.0,,9001
-1290,9603,8606,-124.0,,9001
-1290,9603,8607,-82.0,,9001
-1291,9603,8605,15.0,,9001
-1291,9603,8606,-130.0,,9001
-1291,9603,8607,-84.0,,9001
-1292,9603,8605,24.0,,9001
-1292,9603,8606,-130.0,,9001
-1292,9603,8607,-92.0,,9001
-1293,9603,8605,28.0,,9001
-1293,9603,8606,-121.0,,9001
-1293,9603,8607,-77.0,,9001
-1294,9603,8605,-73.0,,9001
-1294,9603,8606,-247.0,,9001
-1294,9603,8607,227.0,,9001
-1296,9603,8605,-61.702,,9001
-1296,9603,8606,284.488,,9001
-1296,9603,8607,472.052,,9001
-1297,9607,8605,-115.064,,9001
-1297,9607,8606,-87.39,,9001
-1297,9607,8607,-101.716,,9001
-1297,9607,8608,0.058,,9104
-1297,9607,8609,-4.001,,9104
-1297,9607,8610,2.062,,9104
-1297,9607,8611,9.366,,9202
-1298,9607,8605,-82.875,,9001
-1298,9607,8606,-57.097,,9001
-1298,9607,8607,-156.768,,9001
-1298,9607,8608,2.158,,9104
-1298,9607,8609,-1.524,,9104
-1298,9607,8610,0.982,,9104
-1298,9607,8611,-0.359,,9202
-1299,9607,8605,-138.527,,9001
-1299,9607,8606,-91.999,,9001
-1299,9607,8607,-114.591,,9001
-1299,9607,8608,0.14,,9104
-1299,9607,8609,-3.363,,9104
-1299,9607,8610,2.217,,9104
-1299,9607,8611,11.748,,9202
-1300,9607,8605,-73.472,,9001
-1300,9607,8606,-51.66,,9001
-1300,9607,8607,-112.482,,9001
-1300,9607,8608,-0.953,,9104
-1300,9607,8609,-4.6,,9104
-1300,9607,8610,2.368,,9104
-1300,9607,8611,0.586,,9202
-1301,9607,8605,219.315,,9001
-1301,9607,8606,168.975,,9001
-1301,9607,8607,-166.145,,9001
-1301,9607,8608,-0.198,,9104
-1301,9607,8609,-5.926,,9104
-1301,9607,8610,2.356,,9104
-1301,9607,8611,-57.104,,9202
-1302,9607,8605,0.0,,9001
-1302,9607,8606,0.0,,9001
-1302,9607,8607,0.0,,9001
-1302,9607,8608,0.0,,9104
-1302,9607,8609,0.0,,9104
-1302,9607,8610,0.0,,9104
-1302,9607,8611,0.0,,9202
-1303,9606,8605,43.822,,9001
-1303,9606,8606,-108.842,,9001
-1303,9606,8607,-119.585,,9001
-1303,9606,8608,1.455,,9104
-1303,9606,8609,-0.761,,9104
-1303,9606,8610,0.737,,9104
-1303,9606,8611,0.549,,9202
-1304,9603,8605,210.0,,9001
-1304,9603,8606,814.0,,9001
-1304,9603,8607,289.0,,9001
-1305,9603,8605,-147.0,,9001
-1305,9603,8606,506.0,,9001
-1305,9603,8607,687.0,,9001
-1306,9603,8605,682.0,,9001
-1306,9603,8606,-203.0,,9001
-1306,9603,8607,480.0,,9001
-1307,9603,8605,-2.0,,9001
-1307,9603,8606,374.0,,9001
-1307,9603,8607,172.0,,9001
-1308,9607,8605,-0.9738,,9001
-1308,9607,8606,1.9453,,9001
-1308,9607,8607,0.5486,,9001
-1308,9607,8608,-0.00000013357,,9101
-1308,9607,8609,-0.00000004872,,9101
-1308,9607,8610,-0.00000005507,,9101
-1308,9607,8611,0.0,,9202
-1309,9607,8605,582.0,,9001
-1309,9607,8606,105.0,,9001
-1309,9607,8607,414.0,,9001
-1309,9607,8608,-1.04,,9104
-1309,9607,8609,-0.35,,9104
-1309,9607,8610,3.08,,9104
-1309,9607,8611,8.3,,9202
-1310,9607,8605,24.0,,9001
-1310,9607,8606,-123.0,,9001
-1310,9607,8607,-94.0,,9001
-1310,9607,8608,-0.02,,9104
-1310,9607,8609,0.25,,9104
-1310,9607,8610,0.13,,9104
-1310,9607,8611,1.1,,9202
-1311,9606,8605,-89.5,,9001
-1311,9606,8606,-93.8,,9001
-1311,9606,8607,-123.1,,9001
-1311,9606,8608,0.0,,9104
-1311,9606,8609,0.0,,9104
-1311,9606,8610,-0.156,,9104
-1311,9606,8611,1.2,,9202
-1312,9614,8656,,NTv1_0.gsb,
-1313,9615,8656,,NTv2_0.gsb,
-1314,9606,8605,446.448,,9001
-1314,9606,8606,-125.157,,9001
-1314,9606,8607,542.06,,9001
-1314,9606,8608,0.15,,9104
-1314,9606,8609,0.247,,9104
-1314,9606,8610,0.842,,9104
-1314,9606,8611,-20.489,,9202
-1315,9606,8605,535.948,,9001
-1315,9606,8606,-31.357,,9001
-1315,9606,8607,665.16,,9001
-1315,9606,8608,0.15,,9104
-1315,9606,8609,0.247,,9104
-1315,9606,8610,0.998,,9104
-1315,9606,8611,-21.689,,9202
-1316,9603,8605,-70.9,,9001
-1316,9603,8606,-151.8,,9001
-1316,9603,8607,-41.4,,9001
-1317,9603,8605,-37.2,,9001
-1317,9603,8606,-370.6,,9001
-1317,9603,8607,-228.5,,9001
-1318,9603,8605,-42.01,,9001
-1318,9603,8606,-332.21,,9001
-1318,9603,8607,-229.75,,9001
-1319,9603,8605,-40.0,,9001
-1319,9603,8606,-354.0,,9001
-1319,9603,8607,-224.0,,9001
-1320,9606,8605,-37.2,,9001
-1320,9606,8606,-370.6,,9001
-1320,9606,8607,-224.0,,9001
-1320,9606,8608,0.0,,9104
-1320,9606,8609,0.0,,9104
-1320,9606,8610,0.554,,9104
-1320,9606,8611,0.219,,9202
-1321,9603,8605,-41.8,,9001
-1321,9603,8606,-342.2,,9001
-1321,9603,8607,-228.2,,9001
-1322,9603,8605,-55.5,,9001
-1322,9603,8606,-348.0,,9001
-1322,9603,8607,-229.2,,9001
-1323,9603,8605,-43.0,,9001
-1323,9603,8606,-337.0,,9001
-1323,9603,8607,-233.0,,9001
-1324,9603,8605,-48.0,,9001
-1324,9603,8606,-345.0,,9001
-1324,9603,8607,-231.0,,9001
-1325,9603,8605,-48.6,,9001
-1325,9603,8606,-345.1,,9001
-1325,9603,8607,-230.8,,9001
-1326,9606,8605,-41.057,,9001
-1326,9606,8606,-374.564,,9001
-1326,9606,8607,-226.287,,9001
-1326,9606,8608,0.0,,9104
-1326,9606,8609,0.0,,9104
-1326,9606,8610,0.554,,9104
-1326,9606,8611,0.219,,9202
-1327,9603,8605,-50.9,,9001
-1327,9603,8606,-347.6,,9001
-1327,9603,8607,-231.0,,9001
-1328,9603,8605,0.0,,9001
-1328,9603,8606,0.0,,9001
-1328,9603,8607,0.0,,9001
-1329,9603,8605,-252.95,,9001
-1329,9603,8606,-4.11,,9001
-1329,9603,8607,-96.38,,9001
-1330,9603,8605,-252.95,,9001
-1330,9603,8606,-4.11,,9001
-1330,9603,8607,-96.38,,9001
-1331,9607,8605,0.0,,9001
-1331,9607,8606,0.0,,9001
-1331,9607,8607,0.0,,9001
-1331,9607,8608,0.0,,9104
-1331,9607,8609,0.0,,9104
-1331,9607,8610,0.0,,9104
-1331,9607,8611,0.0,,9202
-1332,9607,8605,21.53219,,9001
-1332,9607,8606,-97.00027,,9001
-1332,9607,8607,-60.74046,,9001
-1332,9607,8608,-0.99548,,9104
-1332,9607,8609,-0.58147,,9104
-1332,9607,8610,-0.2418,,9104
-1332,9607,8611,-4.5981,,9202
-1333,9607,8605,0.055,,9001
-1333,9607,8606,-0.541,,9001
-1333,9607,8607,-0.185,,9001
-1333,9607,8608,-0.0183,,9104
-1333,9607,8609,0.0003,,9104
-1333,9607,8610,0.007,,9104
-1333,9607,8611,-0.014,,9202
-1334,9607,8605,21.58719,,9001
-1334,9607,8606,-97.54127,,9001
-1334,9607,8607,-60.92546,,9001
-1334,9607,8608,-1.01378,,9104
-1334,9607,8609,-0.58117,,9104
-1334,9607,8610,-0.2348,,9104
-1334,9607,8611,-4.6121,,9202
-1335,9618,8601,7.92,,9108
-1335,9618,8602,-13.88,,9104
-1335,9618,8604,26.1,,9001
-1336,9618,8601,7.94,,9104
-1336,9618,8602,-13.97,,9104
-1336,9618,8604,26.9,,9001
-1337,9618,8601,8.1,,9104
-1337,9618,8602,-13.81,,9104
-1337,9618,8604,27.2,,9001
-1338,9618,8601,8.15,,9104
-1338,9618,8602,-13.95,,9104
-1338,9618,8604,28.4,,9001
-1339,9618,8601,8.37,,9104
-1339,9618,8602,-13.65,,9104
-1339,9618,8604,29.0,,9001
-1340,9618,8601,8.44,,9104
-1340,9618,8602,-13.87,,9104
-1340,9618,8604,30.9,,9001
-1341,9618,8601,8.61,,9104
-1341,9618,8602,-14.08,,9104
-1341,9618,8604,30.7,,9001
-1342,9618,8601,8.73,,9104
-1342,9618,8602,-14.3,,9104
-1342,9618,8604,30.9,,9001
-1343,9618,8601,8.63,,9104
-1343,9618,8602,-13.49,,9104
-1343,9618,8604,30.9,,9001
-1344,9618,8601,8.71,,9104
-1344,9618,8602,-13.73,,9104
-1344,9618,8604,31.6,,9001
-1345,9618,8601,8.84,,9104
-1345,9618,8602,-14.03,,9104
-1345,9618,8604,31.2,,9001
-1346,9618,8601,8.98,,9104
-1346,9618,8602,-14.33,,9104
-1346,9618,8604,32.5,,9001
-1347,9618,8601,9.1,,9104
-1347,9618,8602,-14.56,,9104
-1347,9618,8604,32.6,,9001
-1348,9618,8601,8.79,,9104
-1348,9618,8602,-13.0,,9104
-1348,9618,8604,33.3,,9001
-1349,9618,8601,8.84,,9104
-1349,9618,8602,-13.31,,9104
-1349,9618,8604,31.4,,9001
-1350,9618,8601,8.98,,9104
-1350,9618,8602,-13.59,,9104
-1350,9618,8604,30.9,,9001
-1351,9618,8601,9.1,,9104
-1351,9618,8602,-13.91,,9104
-1351,9618,8604,29.3,,9001
-1352,9618,8601,9.17,,9104
-1352,9618,8602,-14.27,,9104
-1352,9618,8604,31.3,,9001
-1353,9618,8601,9.23,,9104
-1353,9618,8602,-14.52,,9104
-1353,9618,8604,31.4,,9001
-1354,9618,8601,8.9,,9104
-1354,9618,8602,-12.68,,9104
-1354,9618,8604,34.4,,9001
-1355,9618,8601,8.99,,9104
-1355,9618,8602,-12.8,,9104
-1355,9618,8604,34.2,,9001
-1356,9618,8601,9.0,,9104
-1356,9618,8602,-13.07,,9104
-1356,9618,8604,31.7,,9001
-1357,9618,8601,9.21,,9104
-1357,9618,8602,-13.51,,9104
-1357,9618,8604,27.5,,9001
-1358,9618,8601,9.33,,9104
-1358,9618,8602,-13.66,,9104
-1358,9618,8604,23.8,,9001
-1359,9618,8601,9.25,,9104
-1359,9618,8602,-12.72,,9104
-1359,9618,8604,34.2,,9001
-1360,9618,8601,9.39,,9104
-1360,9618,8602,-12.91,,9104
-1360,9618,8604,31.8,,9001
-1361,9618,8601,9.55,,9104
-1361,9618,8602,-12.63,,9104
-1361,9618,8604,35.6,,9001
-1362,9618,8601,9.62,,9104
-1362,9618,8602,-12.82,,9104
-1362,9618,8604,34.7,,9001
-1363,9618,8601,9.81,,9104
-1363,9618,8602,-12.29,,9104
-1363,9618,8604,36.6,,9001
-1364,9618,8601,9.81,,9104
-1364,9618,8602,-12.45,,9104
-1364,9618,8604,37.5,,9001
-1365,9618,8601,9.92,,9104
-1365,9618,8602,-12.79,,9104
-1365,9618,8604,38.3,,9001
-1366,9618,8601,9.91,,9104
-1366,9618,8602,-12.21,,9104
-1366,9618,8604,36.6,,9001
-1367,9618,8601,10.08,,9104
-1367,9618,8602,-12.35,,9104
-1367,9618,8604,39.0,,9001
-1368,9618,8601,10.19,,9104
-1368,9618,8602,-12.74,,9104
-1368,9618,8604,40.3,,9001
-1369,9618,8601,10.29,,9104
-1369,9618,8602,-12.13,,9104
-1369,9618,8604,38.5,,9001
-1370,9618,8601,10.33,,9104
-1370,9618,8602,-12.27,,9104
-1370,9618,8604,40.1,,9001
-1371,9618,8601,10.45,,9104
-1371,9618,8602,-12.61,,9104
-1371,9618,8604,41.7,,9001
-1372,9618,8601,10.54,,9104
-1372,9618,8602,-11.96,,9104
-1372,9618,8604,39.1,,9001
-1373,9618,8601,10.65,,9104
-1373,9618,8602,-12.27,,9104
-1373,9618,8604,41.7,,9001
-1374,9618,8601,10.67,,9104
-1374,9618,8602,-12.5,,9104
-1374,9618,8604,41.1,,9001
-1375,9618,8601,10.67,,9104
-1375,9618,8602,-10.86,,9104
-1375,9618,8604,38.5,,9001
-1376,9618,8601,10.68,,9104
-1376,9618,8602,-10.97,,9104
-1376,9618,8604,36.0,,9001
-1377,9618,8601,10.8,,9104
-1377,9618,8602,-11.53,,9104
-1377,9618,8604,39.7,,9001
-1378,9618,8601,10.8,,9104
-1378,9618,8602,-11.73,,9104
-1378,9618,8604,40.9,,9001
-1379,9618,8601,10.92,,9104
-1379,9618,8602,-12.16,,9104
-1379,9618,8604,42.3,,9001
-1380,9618,8601,11.0,,9104
-1380,9618,8602,-12.25,,9104
-1380,9618,8604,41.2,,9001
-1381,9618,8601,10.83,,9104
-1381,9618,8602,-10.77,,9104
-1381,9618,8604,36.2,,9001
-1382,9618,8601,10.95,,9104
-1382,9618,8602,-11.0,,9104
-1382,9618,8604,38.7,,9001
-1383,9618,8601,10.97,,9104
-1383,9618,8602,-11.34,,9104
-1383,9618,8604,40.8,,9001
-1384,9618,8601,11.04,,9104
-1384,9618,8602,-11.69,,9104
-1384,9618,8604,43.3,,9001
-1385,9618,8601,11.17,,9104
-1385,9618,8602,-12.05,,9104
-1385,9618,8604,42.6,,9001
-1386,9618,8601,11.11,,9104
-1386,9618,8602,-10.59,,9104
-1386,9618,8604,37.3,,9001
-1387,9618,8601,11.16,,9104
-1387,9618,8602,-10.97,,9104
-1387,9618,8604,40.3,,9001
-1388,9618,8601,11.29,,9104
-1388,9618,8602,-11.23,,9104
-1388,9618,8604,42.4,,9001
-1389,9618,8601,11.36,,9104
-1389,9618,8602,-11.59,,9104
-1389,9618,8604,42.5,,9001
-1390,9618,8601,11.44,,9104
-1390,9618,8602,-11.88,,9104
-1390,9618,8604,40.3,,9001
-1391,9618,8601,11.27,,9104
-1391,9618,8602,-9.31,,9104
-1391,9618,8604,30.9,,9001
-1392,9618,8601,11.33,,9104
-1392,9618,8602,-9.52,,9104
-1392,9618,8604,33.8,,9001
-1393,9618,8601,11.38,,9104
-1393,9618,8602,-9.86,,9104
-1393,9618,8604,34.9,,9001
-1394,9618,8601,11.41,,9104
-1394,9618,8602,-10.14,,9104
-1394,9618,8604,35.7,,9001
-1395,9618,8601,11.39,,9104
-1395,9618,8602,-10.52,,9104
-1395,9618,8604,37.5,,9001
-1396,9618,8601,11.49,,9104
-1396,9618,8602,-10.83,,9104
-1396,9618,8604,39.3,,9001
-1397,9618,8601,11.58,,9104
-1397,9618,8602,-11.21,,9104
-1397,9618,8604,41.7,,9001
-1398,9618,8601,11.65,,9104
-1398,9618,8602,-11.53,,9104
-1398,9618,8604,38.5,,9001
-1399,9618,8601,11.72,,9104
-1399,9618,8602,-11.8,,9104
-1399,9618,8604,34.5,,9001
-1400,9618,8601,11.44,,9104
-1400,9618,8602,-9.21,,9104
-1400,9618,8604,32.7,,9001
-1401,9618,8601,11.47,,9104
-1401,9618,8602,-9.52,,9104
-1401,9618,8604,35.2,,9001
-1402,9618,8601,11.55,,9104
-1402,9618,8602,-9.8,,9104
-1402,9618,8604,35.4,,9001
-1403,9618,8601,11.61,,9104
-1403,9618,8602,-10.12,,9104
-1403,9618,8604,35.9,,9001
-1404,9618,8601,11.66,,9104
-1404,9618,8602,-10.47,,9104
-1404,9618,8604,37.0,,9001
-1405,9618,8601,11.78,,9104
-1405,9618,8602,-10.79,,9104
-1405,9618,8604,39.8,,9001
-1406,9618,8601,11.85,,9104
-1406,9618,8602,-11.13,,9104
-1406,9618,8604,39.9,,9001
-1407,9618,8601,11.9,,9104
-1407,9618,8602,-11.47,,9104
-1407,9618,8604,36.9,,9001
-1408,9618,8601,11.91,,9104
-1408,9618,8602,-11.69,,9104
-1408,9618,8604,33.7,,9001
-1409,9618,8601,11.65,,9104
-1409,9618,8602,-8.59,,9104
-1409,9618,8604,29.7,,9001
-1410,9618,8601,11.68,,9104
-1410,9618,8602,-8.8,,9104
-1410,9618,8604,30.5,,9001
-1411,9618,8601,11.73,,9104
-1411,9618,8602,-9.04,,9104
-1411,9618,8604,30.9,,9001
-1412,9618,8601,11.72,,9104
-1412,9618,8602,-9.48,,9104
-1412,9618,8604,35.1,,9001
-1413,9618,8601,11.81,,9104
-1413,9618,8602,9.74,,9104
-1413,9618,8604,35.8,,9001
-1414,9618,8601,11.88,,9104
-1414,9618,8602,-10.1,,9104
-1414,9618,8604,37.1,,9001
-1415,9618,8601,11.91,,9104
-1415,9618,8602,-10.35,,9104
-1415,9618,8604,37.9,,9001
-1416,9618,8601,11.9,,9104
-1416,9618,8602,-10.7,,9104
-1416,9618,8604,39.3,,9001
-1417,9618,8601,12.02,,9104
-1417,9618,8602,-11.09,,9104
-1417,9618,8604,38.2,,9001
-1418,9618,8601,11.87,,9104
-1418,9618,8602,-8.23,,9104
-1418,9618,8604,29.7,,9001
-1419,9618,8601,11.84,,9104
-1419,9618,8602,-8.44,,9104
-1419,9618,8604,30.6,,9001
-1420,9618,8601,11.94,,9104
-1420,9618,8602,-8.71,,9104
-1420,9618,8604,30.2,,9001
-1421,9618,8601,11.99,,9104
-1421,9618,8602,-9.02,,9104
-1421,9618,8604,30.9,,9001
-1422,9618,8601,12.05,,9104
-1422,9618,8602,-9.36,,9104
-1422,9618,8604,35.0,,9001
-1423,9618,8601,12.1,,9104
-1423,9618,8602,-9.64,,9104
-1423,9618,8604,35.5,,9001
-1424,9618,8601,12.1,,9104
-1424,9618,8602,-10.08,,9104
-1424,9618,8604,37.3,,9001
-1425,9618,8601,12.07,,9104
-1425,9618,8602,-10.25,,9104
-1425,9618,8604,37.3,,9001
-1426,9618,8601,12.0,,9104
-1426,9618,8602,-8.15,,9104
-1426,9618,8604,32.1,,9001
-1427,9618,8601,12.06,,9104
-1427,9618,8602,-8.38,,9104
-1427,9618,8604,31.0,,9001
-1428,9618,8601,12.17,,9104
-1428,9618,8602,-8.69,,9104
-1428,9618,8604,30.3,,9001
-1429,9618,8601,12.23,,9104
-1429,9618,8602,-8.99,,9104
-1429,9618,8604,31.7,,9001
-1430,9618,8601,12.21,,9104
-1430,9618,8602,-9.21,,9104
-1430,9618,8604,34.3,,9001
-1431,9618,8601,12.28,,9104
-1431,9618,8602,-9.6,,9104
-1431,9618,8604,33.3,,9001
-1432,9618,8601,12.28,,9104
-1432,9618,8602,-8.25,,9104
-1432,9618,8604,31.0,,9001
-1433,9618,8601,12.37,,9104
-1433,9618,8602,-8.55,,9104
-1433,9618,8604,29.1,,9001
-1434,9618,8601,12.53,,9104
-1434,9618,8602,-8.21,,9104
-1434,9618,8604,31.0,,9001
-1435,9618,8601,12.57,,9104
-1435,9618,8602,-8.4,,9104
-1435,9618,8604,28.4,,9001
-1436,9618,8601,12.71,,9104
-1436,9618,8602,-8.17,,9104
-1436,9618,8604,29.9,,9001
-1437,9607,8605,419.3836,,9001
-1437,9607,8606,99.3335,,9001
-1437,9607,8607,591.3451,,9001
-1437,9607,8608,-0.850389,,9104
-1437,9607,8609,-1.817277,,9104
-1437,9607,8610,7.862238,,9104
-1437,9607,8611,-0.99496,,9202
-1438,9606,8605,-333.102,,9001
-1438,9606,8606,-11.02,,9001
-1438,9606,8607,230.69,,9001
-1438,9606,8608,0.0,,9104
-1438,9606,8609,0.0,,9104
-1438,9606,8610,0.554,,9104
-1438,9606,8611,0.219,,9202
-1439,9606,8605,-180.624,,9001
-1439,9606,8606,-225.516,,9001
-1439,9606,8607,173.919,,9001
-1439,9606,8608,-0.81,,9104
-1439,9606,8609,-1.898,,9104
-1439,9606,8610,8.336,,9104
-1439,9606,8611,16.71006,,9202
-1440,9603,8605,-86.0,,9001
-1440,9603,8606,-92.2,,9001
-1440,9603,8607,-127.5,,9001
-1441,9603,8605,-255.0,,9001
-1441,9603,8606,-15.0,,9001
-1441,9603,8607,71.0,,9001
-1442,9603,8605,725.0,,9001
-1442,9603,8606,685.0,,9001
-1442,9603,8607,536.0,,9001
-1443,9603,8605,72.0,,9001
-1443,9603,8606,213.7,,9001
-1443,9603,8607,93.0,,9001
-1444,9603,8605,174.0,,9001
-1444,9603,8606,359.0,,9001
-1444,9603,8607,365.0,,9001
-1445,9603,8605,9.0,,9001
-1445,9603,8606,183.0,,9001
-1445,9603,8607,236.0,,9001
-1446,9603,8605,-149.0,,9001
-1446,9603,8606,128.0,,9001
-1446,9603,8607,296.0,,9001
-1447,9619,8601,-18.0,,9104
-1447,9619,8602,4.4,,9104
-1450,9620,8659,8047.0,,
-1450,9620,8660,8046.0,,
-1450,9620,8661,,ED50 to WGS 84 (15),
-1450,9620,8662,,ED50 to WGS 84 (14),
-1451,9614,8656,,PQV4.DAC,
-1454,9613,8657,,hawaii.las,
-1454,9613,8658,,hawaii.los,
-1455,9613,8657,,stlrnc.las,
-1455,9613,8658,,stlrnc.los,
-1456,9613,8657,,stpaul.las,
-1456,9613,8658,,stpaul.los,
-1457,9613,8657,,stgeorge.las,
-1457,9613,8658,,stgeorge.los,
-1458,9607,8605,-129.193,,9001
-1458,9607,8606,-41.212,,9001
-1458,9607,8607,130.73,,9001
-1458,9607,8608,-0.246,,9104
-1458,9607,8609,-0.374,,9104
-1458,9607,8610,-0.329,,9104
-1458,9607,8611,-2.955,,9202
-1459,9607,8605,-120.695,,9001
-1459,9607,8606,-62.73,,9001
-1459,9607,8607,165.46,,9001
-1459,9607,8608,-0.109,,9104
-1459,9607,8609,0.141,,9104
-1459,9607,8610,0.116,,9104
-1459,9607,8611,2.733,,9202
-1460,9607,8605,-119.353,,9001
-1460,9607,8606,-48.301,,9001
-1460,9607,8607,139.484,,9001
-1460,9607,8608,-0.415,,9104
-1460,9607,8609,-0.26,,9104
-1460,9607,8610,-0.437,,9104
-1460,9607,8611,-0.613,,9202
-1461,9613,8657,,prvi.las,
-1461,9613,8658,,prvi.los,
-1462,9614,8656,,GS2783v1.QUE,
-1463,9615,8656,,May76v20.gsb,
-1464,9615,8656,,vic_0799.gsb,
-1466,9601,8602,10.43225,,9110
-1467,9601,8602,2.5969213,,9105
-1468,9601,8602,2.201395,,9110
-1469,9603,8605,-125.0,,9001
-1469,9603,8606,53.0,,9001
-1469,9603,8607,467.0,,9001
-1470,9603,8605,-124.76,,9001
-1470,9603,8606,53.0,,9001
-1470,9603,8607,466.79,,9001
-1471,9606,8605,-577.326,,9001
-1471,9606,8606,-90.129,,9001
-1471,9606,8607,-463.919,,9001
-1471,9606,8608,-15.8537,,9113
-1471,9606,8609,-4.55,,9113
-1471,9606,8610,-16.3489,,9113
-1471,9606,8611,-2.4232,,9201
-1472,9615,8656,,NB7783v2.gsb,
-1473,9603,8605,0.0,,9001
-1473,9603,8606,0.0,,9001
-1473,9603,8607,0.0,,9001
-1474,9613,8657,,alhpgn.las,
-1474,9613,8658,,alhpgn.los,
-1475,9613,8657,,azhpgn.las,
-1475,9613,8658,,azhpgn.los,
-1476,9613,8657,,cnhpgn.las,
-1476,9613,8658,,cnhpgn.los,
-1477,9613,8657,,cshpgn.las,
-1477,9613,8658,,cshpgn.los,
-1478,9613,8657,,cohpgn.las,
-1478,9613,8658,,cohpgn.los,
-1479,9613,8657,,gahpgn.las,
-1479,9613,8658,,gahpgn.los,
-1480,9613,8657,,flhpgn.las,
-1480,9613,8658,,flhpgn.los,
-1481,9613,8657,,emhpgn.las,
-1481,9613,8658,,emhpgn.los,
-1482,9613,8657,,wmhpgn.las,
-1482,9613,8658,,wmhpgn.los,
-1483,9613,8657,,kyhpgn.las,
-1483,9613,8658,,kyhpgn.los,
-1484,9613,8657,,lahpgn.las,
-1484,9613,8658,,lahpgn.los,
-1485,9613,8657,,mdhpgn.las,
-1485,9613,8658,,mdhpgn.los,
-1486,9613,8657,,mehpgn.las,
-1486,9613,8658,,mehpgn.los,
-1487,9613,8657,,mihpgn.las,
-1487,9613,8658,,mihpgn.los,
-1488,9613,8657,,mshpgn.las,
-1488,9613,8658,,mshpgn.los,
-1489,9613,8657,,nbhpgn.las,
-1489,9613,8658,,nbhpgn.los,
-1490,9613,8657,,nehpgn.las,
-1490,9613,8658,,nehpgn.los,
-1491,9613,8657,,nmhpgn.las,
-1491,9613,8658,,nmhpgn.los,
-1492,9613,8657,,nyhpgn.las,
-1492,9613,8658,,nyhpgn.los,
-1493,9613,8657,,ndhpgn.las,
-1493,9613,8658,,ndhpgn.los,
-1494,9613,8657,,okhpgn.las,
-1494,9613,8658,,okhpgn.los,
-1495,9613,8657,,pvhpgn.las,
-1495,9613,8658,,pvhpgn.los,
-1496,9613,8657,,sdhpgn.las,
-1496,9613,8658,,sdhpgn.los,
-1497,9613,8657,,tnhpgn.las,
-1497,9613,8658,,tnhpgn.los,
-1498,9613,8657,,ethpgn.las,
-1498,9613,8658,,ethpgn.los,
-1499,9613,8657,,wthpgn.las,
-1499,9613,8658,,wthpgn.los,
-1500,9613,8657,,vahpgn.las,
-1500,9613,8658,,vahpgn.los,
-1501,9613,8657,,wohpgn.las,
-1501,9613,8658,,wohpgn.los,
-1502,9613,8657,,wihpgn.las,
-1502,9613,8658,,wihpgn.los,
-1503,9613,8657,,wyhpgn.las,
-1503,9613,8658,,wyhpgn.los,
-1504,9603,8605,-134.73,,9001
-1504,9603,8606,-110.92,,9001
-1504,9603,8607,-292.66,,9001
-1505,9603,8605,0.0,,9001
-1505,9603,8606,0.0,,9001
-1505,9603,8607,0.0,,9001
-1506,9615,8656,,tas_1098.gsb,
-1507,9615,8656,,nt_0599.gsb,
-1508,9607,8605,660.077,,9001
-1508,9607,8606,13.551,,9001
-1508,9607,8607,369.344,,9001
-1508,9607,8608,2.484,,9113
-1508,9607,8609,1.783,,9113
-1508,9607,8610,2.939,,9113
-1508,9607,8611,5.66,,9201
-1509,9603,8605,674.374,,9001
-1509,9603,8606,15.056,,9001
-1509,9603,8607,405.346,,9001
-1510,9603,8605,674.374,,9001
-1510,9603,8606,15.056,,9001
-1510,9603,8607,405.346,,9001
-1511,9603,8605,0.0,,9001
-1511,9603,8606,0.0,,9001
-1511,9603,8607,0.0,,9001
-1512,9603,8605,-133.63,,9001
-1512,9603,8606,-157.5,,9001
-1512,9603,8607,-158.62,,9001
-1513,9603,8605,-241.54,,9001
-1513,9603,8606,-163.64,,9001
-1513,9603,8607,396.06,,9001
-1514,9606,8605,-110.33,,9001
-1514,9606,8606,-97.73,,9001
-1514,9606,8607,-119.85,,9001
-1514,9606,8608,0.3423,,9104
-1514,9606,8609,1.1634,,9104
-1514,9606,8610,0.2715,,9104
-1514,9606,8611,0.063,,9202
-1515,9607,8605,-0.991,,9001
-1515,9607,8606,1.9072,,9001
-1515,9607,8607,0.5129,,9001
-1515,9607,8608,-0.000000125033,,9101
-1515,9607,8609,-0.000000046785,,9101
-1515,9607,8610,-0.000000056529,,9101
-1515,9607,8611,0.0,,9202
-1516,9603,8605,-273.5,,9001
-1516,9603,8606,110.6,,9001
-1516,9603,8607,-357.9,,9001
-1517,9603,8605,-23.0,,9001
-1517,9603,8606,259.0,,9001
-1517,9603,8607,-9.0,,9001
-1518,9603,8605,-83.0,,9001
-1518,9603,8606,37.0,,9001
-1518,9603,8607,124.0,,9001
-1519,9601,8602,7.26225,,9110
-1520,9613,8657,,hihpgn.las,
-1520,9613,8658,,hihpgn.los,
-1521,9613,8657,,inhpgn.las,
-1521,9613,8658,,inhpgn.los,
-1522,9613,8657,,kshpgn.las,
-1522,9613,8658,,kshpgn.los,
-1523,9613,8657,,nvhpgn.las,
-1523,9613,8658,,nvhpgn.los,
-1524,9613,8657,,ohhpgn.las,
-1524,9613,8658,,ohhpgn.los,
-1525,9613,8657,,uthpgn.las,
-1525,9613,8658,,uthpgn.los,
-1526,9613,8657,,wvhpgn.las,
-1526,9613,8658,,wvhpgn.los,
-1527,9603,8605,-154.5,,9001
-1527,9603,8606,150.7,,9001
-1527,9603,8607,100.4,,9001
-1528,9603,8605,160.0,,9001
-1528,9603,8606,26.0,,9001
-1528,9603,8607,41.0,,9001
-1529,9606,8605,18.38,,9001
-1529,9606,8606,192.45,,9001
-1529,9606,8607,96.82,,9001
-1529,9606,8608,0.056,,9104
-1529,9606,8609,-0.142,,9104
-1529,9606,8610,-0.2,,9104
-1529,9606,8611,-0.0013,,9202
-1530,9603,8605,-4.2,,9001
-1530,9603,8606,135.4,,9001
-1530,9603,8607,181.9,,9001
-1531,9603,8605,-245.0,,9001
-1531,9603,8606,-153.9,,9001
-1531,9603,8607,382.8,,9001
-1532,9603,8605,-80.7,,9001
-1532,9603,8606,-132.5,,9001
-1532,9603,8607,41.1,,9001
-1533,9603,8605,214.0,,9001
-1533,9603,8606,804.0,,9001
-1533,9603,8607,268.0,,9001
-1534,9606,8605,-111.92,,9001
-1534,9606,8606,-87.85,,9001
-1534,9606,8607,114.5,,9001
-1534,9606,8608,1.875,,9104
-1534,9606,8609,0.202,,9104
-1534,9606,8610,0.219,,9104
-1534,9606,8611,0.032,,9201
-1536,9603,8605,-250.2,,9001
-1536,9603,8606,-153.09,,9001
-1536,9603,8607,391.7,,9001
-1537,9603,8605,204.64,,9001
-1537,9603,8606,834.74,,9001
-1537,9603,8607,293.8,,9001
-1538,9603,8605,-260.1,,9001
-1538,9603,8606,5.5,,9001
-1538,9603,8607,432.2,,9001
-1539,9603,8605,-76.0,,9001
-1539,9603,8606,-138.0,,9001
-1539,9603,8607,67.0,,9001
-1540,9603,8605,0.0,,9001
-1540,9603,8606,0.0,,9001
-1540,9603,8607,0.0,,9001
-1541,9603,8605,199.0,,9001
-1541,9603,8606,931.0,,9001
-1541,9603,8607,317.0,,9001
-1542,9603,8605,198.0,,9001
-1542,9603,8606,881.0,,9001
-1542,9603,8607,317.0,,9001
-1543,9603,8605,182.0,,9001
-1543,9603,8606,915.0,,9001
-1543,9603,8607,344.0,,9001
-1544,9603,8605,-17.51,,9001
-1544,9603,8606,-108.32,,9001
-1544,9603,8607,-62.39,,9001
-1545,9603,8605,-121.8,,9001
-1545,9603,8606,98.1,,9001
-1545,9603,8607,-15.2,,9001
-1546,9603,8605,-146.21,,9001
-1546,9603,8606,112.63,,9001
-1546,9603,8607,4.05,,9001
-1547,9603,8605,-173.0,,9001
-1547,9603,8606,253.0,,9001
-1547,9603,8607,27.0,,9001
-1548,9603,8605,-66.87,,9001
-1548,9603,8606,4.37,,9001
-1548,9603,8607,-38.52,,9001
-1549,9603,8605,-158.0,,9001
-1549,9603,8606,315.0,,9001
-1549,9603,8607,-148.0,,9001
-1550,9603,8605,-139.62,,9001
-1550,9603,8606,290.53,,9001
-1550,9603,8607,-150.29,,9001
-1551,9603,8605,-141.15,,9001
-1551,9603,8606,293.44,,9001
-1551,9603,8607,-150.56,,9001
-1552,9603,8605,-142.48,,9001
-1552,9603,8606,296.03,,9001
-1552,9603,8607,-149.74,,9001
-1553,9613,8657,,ilhpgn.las,
-1553,9613,8658,,ilhpgn.los,
-1554,9613,8657,,njhpgn.las,
-1554,9613,8658,,njhpgn.los,
-1555,9603,8605,-0.465,,9001
-1555,9603,8606,372.095,,9001
-1555,9603,8607,171.736,,9001
-1556,9603,8605,-2.0,,9001
-1556,9603,8606,374.0,,9001
-1556,9603,8607,172.0,,9001
-1557,9603,8605,-254.1,,9001
-1557,9603,8606,-5.4,,9001
-1557,9603,8607,-100.3,,9001
-1558,9603,8605,0.0,,9001
-1558,9603,8606,0.0,,9001
-1558,9603,8607,0.0,,9001
-1559,9615,8656,,wa_0400.gsb,
-1560,9603,8605,-156.5,,9001
-1560,9603,8606,-87.2,,9001
-1560,9603,8607,285.9,,9001
-1561,9603,8605,-128.0,,9001
-1561,9603,8606,-283.0,,9001
-1561,9603,8607,22.0,,9001
-1562,9603,8605,-128.16,,9001
-1562,9603,8606,-282.42,,9001
-1562,9603,8607,21.93,,9001
-1563,9603,8605,-128.033,,9001
-1563,9603,8606,-283.697,,9001
-1563,9603,8607,21.052,,9001
-1564,9607,8605,59.47,,9001
-1564,9607,8606,-5.04,,9001
-1564,9607,8607,187.44,,9001
-1564,9607,8608,-0.47,,9104
-1564,9607,8609,0.1,,9104
-1564,9607,8610,-1.024,,9104
-1564,9607,8611,-4.5993,,9202
-1565,9603,8605,0.0,,9001
-1565,9603,8606,0.0,,9001
-1565,9603,8607,0.0,,9001
-1566,9603,8605,54.4,,9001
-1566,9603,8606,-20.1,,9001
-1566,9603,8607,183.1,,9001
-1567,9607,8605,59.47,,9001
-1567,9607,8606,-5.04,,9001
-1567,9607,8607,187.44,,9001
-1567,9607,8608,-0.47,,9104
-1567,9607,8609,0.1,,9104
-1567,9607,8610,1.024,,9104
-1567,9607,8611,-4.5993,,9202
-1568,9615,8656,,nzgd2kgrid0005.gsb,
-1569,9603,8605,-199.0,,9001
-1569,9603,8606,32.0,,9001
-1569,9603,8607,322.0,,9001
-1570,9603,8605,-171.16,,9001
-1570,9603,8606,17.29,,9001
-1570,9603,8607,323.31,,9001
-1571,9607,8605,565.04,,9001
-1571,9607,8606,49.91,,9001
-1571,9607,8607,465.84,,9001
-1571,9607,8608,1.9848,,9109
-1571,9607,8609,-1.7439,,9109
-1571,9607,8610,9.0587,,9109
-1571,9607,8611,4.0772,,9202
-1572,9615,8656,,NAD83-98.gsb,
-1573,9615,8656,,QUE27-83.gsb,
-1574,9615,8656,,QUE27-98.gsb,
-1575,9615,8656,,CGQ77-83.gsb,
-1576,9615,8656,,CGQ77-98.gsb,
-1577,9603,8605,-115.0,,9001
-1577,9603,8606,118.0,,9001
-1577,9603,8607,426.0,,9001
-1578,9613,8657,,wshpgn.las,
-1578,9613,8658,,wshpgn.los,
-1579,9613,8657,,eshpgn.las,
-1579,9613,8658,,eshpgn.los,
-1580,9603,8605,0.0,,9001
-1580,9603,8606,0.0,,9001
-1580,9603,8607,0.0,,9001
-1581,9603,8605,0.0,,9001
-1581,9603,8606,0.0,,9001
-1581,9603,8607,0.0,,9001
-1582,9603,8605,-259.73,,9001
-1582,9603,8606,173.12,,9001
-1582,9603,8607,-398.27,,9001
-1583,9603,8605,-307.7,,9001
-1583,9603,8606,265.3,,9001
-1583,9603,8607,-363.5,,9001
-1584,9603,8605,-174.6,,9001
-1584,9603,8606,-3.1,,9001
-1584,9603,8607,236.2,,9001
-1585,9603,8605,-177.5,,9001
-1585,9603,8606,14.1,,9001
-1585,9603,8607,237.6,,9001
-1586,9606,8605,-175.09,,9001
-1586,9606,8606,1.218,,9001
-1586,9606,8607,238.831,,9001
-1586,9606,8608,-0.047,,9104
-1586,9606,8609,0.019,,9104
-1586,9606,8610,0.808,,9104
-1586,9606,8611,0.1698,,9202
-1587,9603,8605,-191.77,,9001
-1587,9603,8606,15.01,,9001
-1587,9603,8607,235.07,,9001
-1588,9606,8605,-116.641,,9001
-1588,9606,8606,-56.931,,9001
-1588,9606,8607,-110.559,,9001
-1588,9606,8608,4.327,,9109
-1588,9606,8609,4.464,,9109
-1588,9606,8610,-4.444,,9109
-1588,9606,8611,-3.52,,9202
-1589,9620,8659,1588.0,,
-1589,9620,8660,8570.0,,
-1589,9620,8661,,ED50 to ETRF89 (1),
-1589,9620,8662,,ED50 to ETRF89 (2),
-1590,9620,8659,8569.0,,
-1590,9620,8660,8046.0,,
-1590,9620,8661,,ED50 to WGS 84 (21),
-1590,9620,8662,,ED50 to WGS 84 (14),
-1591,9603,8605,0.0,,9001
-1591,9603,8606,0.0,,9001
-1591,9603,8607,0.0,,9001
-1592,9603,8605,-678.0,,9001
-1592,9603,8606,670.0,,9001
-1592,9603,8607,-48.0,,9001
-1593,9615,8656,,wa_0700.gsb,
-1594,9607,8605,-120.271,,9001
-1594,9607,8606,-64.543,,9001
-1594,9607,8607,161.632,,9001
-1594,9607,8608,-0.217,,9104
-1594,9607,8609,0.067,,9104
-1594,9607,8610,0.129,,9104
-1594,9607,8611,2.499,,9202
-1595,9607,8605,-124.133,,9001
-1595,9607,8606,-42.003,,9001
-1595,9607,8607,137.4,,9001
-1595,9607,8608,0.008,,9104
-1595,9607,8609,-0.557,,9104
-1595,9607,8610,-0.178,,9104
-1595,9607,8611,-1.854,,9202
-1596,9615,8656,,SEAust_21_06_00.gsb,
-1597,9603,8605,304.5,,9001
-1597,9603,8606,306.5,,9001
-1597,9603,8607,-318.1,,9001
-1598,9603,8605,0.0,,9001
-1598,9603,8606,0.0,,9001
-1598,9603,8607,0.0,,9001
-1599,9615,8656,,PE7783V2.gsb,
-1600,9615,8656,,SK27-98.gsb,
-1601,9615,8656,,SK83-98.gsb,
-1602,9615,8656,,AB_CSRS.DAC,
-1603,9634,8665,,TRNB2777.DAT,
-1604,9634,8665,,TRNS2777.DAT,
-1605,9634,8665,,TRPE2777.DAT,
-1606,9634,8665,,TRNB2777.DAT,
-1607,9634,8665,,TRNS2777.DAT,
-1608,9634,8665,,TRPE2777.DAT,
-1609,9607,8605,-99.059,,9001
-1609,9607,8606,53.322,,9001
-1609,9607,8607,-112.486,,9001
-1609,9607,8608,-0.419,,9104
-1609,9607,8609,0.83,,9104
-1609,9607,8610,-1.885,,9104
-1609,9607,8611,0.999999,,9201
-1610,9603,8605,-125.8,,9001
-1610,9603,8606,79.9,,9001
-1610,9603,8607,-100.5,,9001
-1611,9603,8605,0.0,,9001
-1611,9603,8606,0.0,,9001
-1611,9603,8607,0.0,,9001
-1612,9606,8605,-116.641,,9001
-1612,9606,8606,-56.931,,9001
-1612,9606,8607,-110.559,,9001
-1612,9606,8608,0.893,,9104
-1612,9606,8609,0.921,,9104
-1612,9606,8610,-0.917,,9104
-1612,9606,8611,-3.52,,9202
-1613,9606,8605,-90.365,,9001
-1613,9606,8606,-101.13,,9001
-1613,9606,8607,-123.384,,9001
-1613,9606,8608,0.333,,9104
-1613,9606,8609,0.077,,9104
-1613,9606,8610,0.894,,9104
-1613,9606,8611,1.994,,9202
-1614,9603,8605,-88.0,,9001
-1614,9603,8606,4.0,,9001
-1614,9603,8607,101.0,,9001
-1615,9603,8605,-726.282,,9001
-1615,9603,8606,703.611,,9001
-1615,9603,8607,-48.999,,9001
-1616,9606,8605,-182.046,,9001
-1616,9606,8606,-225.604,,9001
-1616,9606,8607,168.884,,9001
-1616,9606,8608,-0.616,,9104
-1616,9606,8609,-1.655,,9104
-1616,9606,8610,7.824,,9104
-1616,9606,8611,16.641,,9202
-1617,9606,8605,-191.808,,9001
-1617,9606,8606,-250.512,,9001
-1617,9606,8607,167.861,,9001
-1617,9606,8608,-0.792,,9104
-1617,9606,8609,-1.653,,9104
-1617,9606,8610,8.558,,9104
-1617,9606,8611,20.703,,9202
-1618,9606,8605,577.326,,9001
-1618,9606,8606,90.129,,9001
-1618,9606,8607,463.919,,9001
-1618,9606,8608,5.137,,9104
-1618,9606,8609,1.474,,9104
-1618,9606,8610,5.297,,9104
-1618,9606,8611,2.4232,,9202
-1619,9606,8605,577.3,,9001
-1619,9606,8606,90.1,,9001
-1619,9606,8607,463.9,,9001
-1619,9606,8608,5.137,,9104
-1619,9606,8609,1.474,,9104
-1619,9606,8610,5.297,,9104
-1619,9606,8611,2.42,,9202
-1620,9606,8605,551.7,,9001
-1620,9606,8606,162.9,,9001
-1620,9606,8607,467.9,,9001
-1620,9606,8608,6.04,,9104
-1620,9606,8609,1.96,,9104
-1620,9606,8610,-11.38,,9104
-1620,9606,8611,-4.82,,9202
-1621,9606,8605,551.7,,9001
-1621,9606,8606,162.9,,9001
-1621,9606,8607,467.9,,9001
-1621,9606,8608,6.04,,9104
-1621,9606,8609,1.96,,9104
-1621,9606,8610,-11.38,,9104
-1621,9606,8611,-4.82,,9202
-1622,9606,8605,570.8,,9001
-1622,9606,8606,85.7,,9001
-1622,9606,8607,462.8,,9001
-1622,9606,8608,4.998,,9104
-1622,9606,8609,1.587,,9104
-1622,9606,8610,5.261,,9104
-1622,9606,8611,3.56,,9202
-1623,9606,8605,570.8,,9001
-1623,9606,8606,85.7,,9001
-1623,9606,8607,462.8,,9001
-1623,9606,8608,4.998,,9104
-1623,9606,8609,1.587,,9104
-1623,9606,8610,5.261,,9104
-1623,9606,8611,3.56,,9202
-1624,9606,8605,559.0,,9001
-1624,9606,8606,68.7,,9001
-1624,9606,8607,451.5,,9001
-1624,9606,8608,7.92,,9104
-1624,9606,8609,4.073,,9104
-1624,9606,8610,4.251,,9104
-1624,9606,8611,5.71,,9202
-1625,9606,8605,559.0,,9001
-1625,9606,8606,68.7,,9001
-1625,9606,8607,451.5,,9001
-1625,9606,8608,7.92,,9104
-1625,9606,8609,4.073,,9104
-1625,9606,8610,4.251,,9104
-1625,9606,8611,5.71,,9202
-1626,9606,8605,-81.1,,9001
-1626,9606,8606,-89.4,,9001
-1626,9606,8607,-115.8,,9001
-1626,9606,8608,0.485,,9104
-1626,9606,8609,0.024,,9104
-1626,9606,8610,0.413,,9104
-1626,9606,8611,-0.54,,9202
-1627,9606,8605,-81.1,,9001
-1627,9606,8606,-89.4,,9001
-1627,9606,8607,-115.8,,9001
-1627,9606,8608,0.485,,9104
-1627,9606,8609,0.024,,9104
-1627,9606,8610,0.413,,9104
-1627,9606,8611,-0.54,,9202
-1628,9603,8605,-116.8,,9001
-1628,9603,8606,-106.4,,9001
-1628,9603,8607,-154.4,,9001
-1629,9603,8605,-116.8,,9001
-1629,9603,8606,-106.4,,9001
-1629,9603,8607,-154.4,,9001
-1630,9606,8605,-181.5,,9001
-1630,9606,8606,-90.3,,9001
-1630,9606,8607,-187.2,,9001
-1630,9606,8608,0.144,,9104
-1630,9606,8609,0.492,,9104
-1630,9606,8610,-0.394,,9104
-1630,9606,8611,17.57,,9202
-1631,9606,8605,-181.5,,9001
-1631,9606,8606,-90.3,,9001
-1631,9606,8607,-187.2,,9001
-1631,9606,8608,0.144,,9104
-1631,9606,8609,0.492,,9104
-1631,9606,8610,-0.394,,9104
-1631,9606,8611,17.57,,9202
-1632,9606,8605,-131.0,,9001
-1632,9606,8606,-100.3,,9001
-1632,9606,8607,-163.4,,9001
-1632,9606,8608,-1.244,,9104
-1632,9606,8609,-0.02,,9104
-1632,9606,8610,-1.144,,9104
-1632,9606,8611,9.39,,9202
-1633,9606,8605,-131.0,,9001
-1633,9606,8606,-100.3,,9001
-1633,9606,8607,-163.4,,9001
-1633,9606,8608,-1.244,,9104
-1633,9606,8609,-0.02,,9104
-1633,9606,8610,-1.144,,9104
-1633,9606,8611,9.39,,9202
-1634,9606,8605,-178.4,,9001
-1634,9606,8606,-83.2,,9001
-1634,9606,8607,-221.3,,9001
-1634,9606,8608,0.54,,9104
-1634,9606,8609,-0.532,,9104
-1634,9606,8610,-0.126,,9104
-1634,9606,8611,21.2,,9202
-1635,9606,8605,-178.4,,9001
-1635,9606,8606,-83.2,,9001
-1635,9606,8607,-221.3,,9001
-1635,9606,8608,0.54,,9104
-1635,9606,8609,-0.532,,9104
-1635,9606,8610,-0.126,,9104
-1635,9606,8611,21.2,,9202
-1638,9606,8605,-90.7,,9001
-1638,9606,8606,-106.1,,9001
-1638,9606,8607,-119.2,,9001
-1638,9606,8608,4.09,,9104
-1638,9606,8609,0.218,,9104
-1638,9606,8610,-1.05,,9104
-1638,9606,8611,1.37,,9202
-1639,9606,8605,-90.7,,9001
-1639,9606,8606,-106.1,,9001
-1639,9606,8607,-119.2,,9001
-1639,9606,8608,4.09,,9104
-1639,9606,8609,0.218,,9104
-1639,9606,8610,-1.05,,9104
-1639,9606,8611,1.37,,9202
-1640,9606,8605,482.5,,9001
-1640,9606,8606,-130.6,,9001
-1640,9606,8607,564.6,,9001
-1640,9606,8608,-1.042,,9104
-1640,9606,8609,-0.214,,9104
-1640,9606,8610,-0.631,,9104
-1640,9606,8611,8.15,,9202
-1641,9606,8605,482.5,,9001
-1641,9606,8606,-130.6,,9001
-1641,9606,8607,564.6,,9001
-1641,9606,8608,-1.042,,9104
-1641,9606,8609,-0.214,,9104
-1641,9606,8610,-0.631,,9104
-1641,9606,8611,8.15,,9202
-1642,9606,8605,-193.0,,9001
-1642,9606,8606,13.7,,9001
-1642,9606,8607,-39.3,,9001
-1642,9606,8608,-0.41,,9104
-1642,9606,8609,-2.933,,9104
-1642,9606,8610,2.688,,9104
-1642,9606,8611,0.43,,9202
-1643,9606,8605,-193.0,,9001
-1643,9606,8606,13.7,,9001
-1643,9606,8607,-39.3,,9001
-1643,9606,8608,-0.41,,9104
-1643,9606,8609,-2.933,,9104
-1643,9606,8610,2.688,,9104
-1643,9606,8611,0.43,,9202
-1644,9606,8605,33.4,,9001
-1644,9606,8606,-146.6,,9001
-1644,9606,8607,-76.3,,9001
-1644,9606,8608,-0.359,,9104
-1644,9606,8609,-0.053,,9104
-1644,9606,8610,0.844,,9104
-1644,9606,8611,-0.84,,9202
-1645,9606,8605,33.4,,9001
-1645,9606,8606,-146.6,,9001
-1645,9606,8607,-76.3,,9001
-1645,9606,8608,-0.359,,9104
-1645,9606,8609,-0.053,,9104
-1645,9606,8610,0.844,,9104
-1645,9606,8611,-0.84,,9202
-1646,9603,8605,674.4,,9001
-1646,9603,8606,15.1,,9001
-1646,9603,8607,405.3,,9001
-1647,9603,8605,674.374,,9001
-1647,9603,8606,15.056,,9001
-1647,9603,8607,405.346,,9001
-1648,9603,8605,0.0,,9001
-1648,9603,8606,0.0,,9001
-1648,9603,8607,0.0,,9001
-1649,9603,8605,0.0,,9001
-1649,9603,8606,0.0,,9001
-1649,9603,8607,0.0,,9001
-1650,9603,8605,-84.0,,9001
-1650,9603,8606,-97.0,,9001
-1650,9603,8607,-117.0,,9001
-1651,9603,8605,-168.0,,9001
-1651,9603,8606,-60.0,,9001
-1651,9603,8607,320.0,,9001
-1652,9606,8605,-99.1,,9001
-1652,9606,8606,53.3,,9001
-1652,9606,8607,-112.5,,9001
-1652,9606,8608,0.419,,9104
-1652,9606,8609,-0.83,,9104
-1652,9606,8610,1.885,,9104
-1652,9606,8611,-1.0,,9202
-1653,9606,8605,278.3,,9001
-1653,9606,8606,93.0,,9001
-1653,9606,8607,474.5,,9001
-1653,9606,8608,7.889,,9104
-1653,9606,8609,0.05,,9104
-1653,9606,8610,-6.61,,9104
-1653,9606,8611,6.21,,9202
-1654,9606,8605,278.3,,9001
-1654,9606,8606,93.0,,9001
-1654,9606,8607,474.5,,9001
-1654,9606,8608,7.889,,9104
-1654,9606,8609,0.05,,9104
-1654,9606,8610,-6.61,,9104
-1654,9606,8611,6.21,,9202
-1655,9606,8605,-280.9,,9001
-1655,9606,8606,-89.8,,9001
-1655,9606,8607,130.2,,9001
-1655,9606,8608,-1.721,,9104
-1655,9606,8609,0.355,,9104
-1655,9606,8610,-0.371,,9104
-1655,9606,8611,-5.92,,9202
-1656,9606,8605,-280.9,,9001
-1656,9606,8606,-89.8,,9001
-1656,9606,8607,130.2,,9001
-1656,9606,8608,-1.721,,9104
-1656,9606,8609,0.355,,9104
-1656,9606,8610,-0.371,,9104
-1656,9606,8611,-5.92,,9202
-1657,9606,8605,-238.2,,9001
-1657,9606,8606,85.2,,9001
-1657,9606,8607,29.9,,9001
-1657,9606,8608,0.166,,9104
-1657,9606,8609,0.046,,9104
-1657,9606,8610,1.248,,9104
-1657,9606,8611,2.03,,9202
-1658,9606,8605,-238.2,,9001
-1658,9606,8606,85.2,,9001
-1658,9606,8607,29.9,,9001
-1658,9606,8608,0.166,,9104
-1658,9606,8609,0.046,,9104
-1658,9606,8610,1.248,,9104
-1658,9606,8611,2.03,,9202
-1659,9606,8605,-104.1,,9001
-1659,9606,8606,-49.1,,9001
-1659,9606,8607,-9.9,,9001
-1659,9606,8608,0.971,,9104
-1659,9606,8609,-2.917,,9104
-1659,9606,8610,0.714,,9104
-1659,9606,8611,-11.68,,9202
-1660,9606,8605,-104.1,,9001
-1660,9606,8606,-49.1,,9001
-1660,9606,8607,-9.9,,9001
-1660,9606,8608,0.971,,9104
-1660,9606,8609,-2.917,,9104
-1660,9606,8610,0.714,,9104
-1660,9606,8611,-11.68,,9202
-1661,9606,8605,-168.6,,9001
-1661,9606,8606,-34.0,,9001
-1661,9606,8607,38.6,,9001
-1661,9606,8608,-0.374,,9104
-1661,9606,8609,-0.679,,9104
-1661,9606,8610,-1.379,,9104
-1661,9606,8611,-9.48,,9202
-1662,9606,8605,-168.6,,9001
-1662,9606,8606,-34.0,,9001
-1662,9606,8607,38.6,,9001
-1662,9606,8608,-0.374,,9104
-1662,9606,8609,-0.679,,9104
-1662,9606,8610,-1.379,,9104
-1662,9606,8611,-9.48,,9202
-1663,9606,8605,-50.2,,9001
-1663,9606,8606,-50.4,,9001
-1663,9606,8607,84.8,,9001
-1663,9606,8608,-0.69,,9104
-1663,9606,8609,-2.012,,9104
-1663,9606,8610,0.459,,9104
-1663,9606,8611,-28.08,,9202
-1664,9606,8605,-50.2,,9001
-1664,9606,8606,-50.4,,9001
-1664,9606,8607,84.8,,9001
-1664,9606,8608,-0.69,,9104
-1664,9606,8609,-2.012,,9104
-1664,9606,8610,0.459,,9104
-1664,9606,8611,-28.08,,9202
-1665,9607,8605,-129.193,,9001
-1665,9607,8606,-41.212,,9001
-1665,9607,8607,130.73,,9001
-1665,9607,8608,-0.246,,9104
-1665,9607,8609,-0.374,,9104
-1665,9607,8610,-0.329,,9104
-1665,9607,8611,-2.955,,9202
-1666,9607,8605,-119.353,,9001
-1666,9607,8606,-48.301,,9001
-1666,9607,8607,139.484,,9001
-1666,9607,8608,-0.415,,9104
-1666,9607,8609,-0.26,,9104
-1666,9607,8610,-0.437,,9104
-1666,9607,8611,-0.613,,9202
-1667,9607,8605,-120.271,,9001
-1667,9607,8606,-64.543,,9001
-1667,9607,8607,161.632,,9001
-1667,9607,8608,-0.217,,9104
-1667,9607,8609,0.067,,9104
-1667,9607,8610,0.129,,9104
-1667,9607,8611,2.499,,9202
-1668,9607,8605,-124.133,,9001
-1668,9607,8606,-42.003,,9001
-1668,9607,8607,137.4,,9001
-1668,9607,8608,0.008,,9104
-1668,9607,8609,-0.557,,9104
-1668,9607,8610,-0.178,,9104
-1668,9607,8611,-1.854,,9202
-1669,9607,8605,-117.763,,9001
-1669,9607,8606,-51.51,,9001
-1669,9607,8607,139.061,,9001
-1669,9607,8608,-0.292,,9104
-1669,9607,8609,-0.443,,9104
-1669,9607,8610,-0.277,,9104
-1669,9607,8611,-0.191,,9202
-1670,9615,8656,,nzgd2kgrid0005.gsb,
-1671,9603,8605,0.0,,9001
-1671,9603,8606,0.0,,9001
-1671,9603,8607,0.0,,9001
-1672,9607,8605,565.04,,9001
-1672,9607,8606,49.91,,9001
-1672,9607,8607,465.84,,9001
-1672,9607,8608,1.9848,,9109
-1672,9607,8609,-1.7439,,9109
-1672,9607,8610,9.0587,,9109
-1672,9607,8611,4.0772,,9202
-1673,9607,8605,582.0,,9001
-1673,9607,8606,105.0,,9001
-1673,9607,8607,414.0,,9001
-1673,9607,8608,-1.04,,9104
-1673,9607,8609,-0.35,,9104
-1673,9607,8610,3.08,,9104
-1673,9607,8611,8.3,,9202
-1674,9607,8605,24.0,,9001
-1674,9607,8606,-123.0,,9001
-1674,9607,8607,-94.0,,9001
-1674,9607,8608,-0.02,,9104
-1674,9607,8609,0.25,,9104
-1674,9607,8610,0.13,,9104
-1674,9607,8611,1.1,,9202
-1675,9607,8605,24.0,,9001
-1675,9607,8606,-123.0,,9001
-1675,9607,8607,-94.0,,9001
-1675,9607,8608,-0.02,,9104
-1675,9607,8609,0.25,,9104
-1675,9607,8610,0.13,,9104
-1675,9607,8611,1.1,,9202
-1676,9603,8605,674.374,,9001
-1676,9603,8606,15.056,,9001
-1676,9603,8607,405.346,,9001
-1677,9607,8605,56.0,,9001
-1677,9607,8606,75.77,,9001
-1677,9607,8607,15.31,,9001
-1677,9607,8608,-0.37,,9104
-1677,9607,8609,-0.2,,9104
-1677,9607,8610,-0.21,,9104
-1677,9607,8611,-1.01,,9202
-1678,9603,8605,0.0,,9001
-1678,9603,8606,0.0,,9001
-1678,9603,8607,0.0,,9001
-1679,9607,8605,-40.595,,9001
-1679,9607,8606,-18.55,,9001
-1679,9607,8607,-69.339,,9001
-1679,9607,8608,-2.508,,9104
-1679,9607,8609,-1.832,,9104
-1679,9607,8610,2.611,,9104
-1679,9607,8611,-4.299,,9202
-1680,9607,8605,419.3836,,9001
-1680,9607,8606,99.3335,,9001
-1680,9607,8607,591.3451,,9001
-1680,9607,8608,-0.850389,,9104
-1680,9607,8609,-1.817277,,9104
-1680,9607,8610,7.862238,,9104
-1680,9607,8611,-0.99496,,9202
-1681,9633,8664,,ostn97.txt,
-1682,9603,8605,-76.0,,9001
-1682,9603,8606,-138.0,,9001
-1682,9603,8607,67.0,,9001
-1683,9607,8605,-115.064,,9001
-1683,9607,8606,-87.39,,9001
-1683,9607,8607,-101.716,,9001
-1683,9607,8608,0.058,,9104
-1683,9607,8609,-4.001,,9104
-1683,9607,8610,2.062,,9104
-1683,9607,8611,9.366,,9202
-1684,9607,8605,-82.875,,9001
-1684,9607,8606,-57.097,,9001
-1684,9607,8607,-156.768,,9001
-1684,9607,8608,2.158,,9104
-1684,9607,8609,-1.524,,9104
-1684,9607,8610,0.982,,9104
-1684,9607,8611,-0.359,,9202
-1685,9607,8605,-138.527,,9001
-1685,9607,8606,-91.999,,9001
-1685,9607,8607,-114.591,,9001
-1685,9607,8608,0.14,,9104
-1685,9607,8609,-3.363,,9104
-1685,9607,8610,2.217,,9104
-1685,9607,8611,11.748,,9202
-1686,9607,8605,-73.472,,9001
-1686,9607,8606,-51.66,,9001
-1686,9607,8607,-112.482,,9001
-1686,9607,8608,-0.953,,9104
-1686,9607,8609,-4.6,,9104
-1686,9607,8610,2.368,,9104
-1686,9607,8611,0.586,,9202
-1687,9607,8605,219.315,,9001
-1687,9607,8606,168.975,,9001
-1687,9607,8607,-166.145,,9001
-1687,9607,8608,-0.198,,9104
-1687,9607,8609,-5.926,,9104
-1687,9607,8610,2.356,,9104
-1687,9607,8611,-57.104,,9202
-1688,9615,8656,,NB7783v2.gsb,
-1689,9615,8656,,PE7783V2.gsb,
-1690,9615,8656,,May76v20.gsb,
-1691,9615,8656,,CGQ77-98.gsb,
-1692,9615,8656,,QUE27-98.gsb,
-1693,9615,8656,,NTv2_0.gsb,
-1694,9613,8657,,wshpgn.las,
-1694,9613,8658,,wshpgn.los,
-1695,9613,8657,,eshpgn.las,
-1695,9613,8658,,eshpgn.los,
-1696,9615,8656,,NAD83-98.gsb,
-1697,9615,8656,,SK83-98.gsb,
-1698,9613,8657,,stgeorge.las,
-1698,9613,8658,,stgeorge.los,
-1699,9613,8657,,stlrnc.las,
-1699,9613,8658,,stlrnc.los,
-1700,9613,8657,,stpaul.las,
-1700,9613,8658,,stpaul.los,
-1701,9607,8605,59.47,,9001
-1701,9607,8606,-5.04,,9001
-1701,9607,8607,187.44,,9001
-1701,9607,8608,-0.47,,9104
-1701,9607,8609,0.1,,9104
-1701,9607,8610,-1.024,,9104
-1701,9607,8611,-4.5993,,9202
-1702,9615,8656,,AB_CSRS.DAC,
-1703,9615,8656,,SK27-98.gsb,
-1704,9613,8657,,arhpgn.las,
-1704,9613,8658,,arhpgn.los,
-1705,9613,8657,,iahpgn.las,
-1705,9613,8658,,iahpgn.los,
-1706,9613,8657,,mnhpgn.las,
-1706,9613,8658,,mnhpgn.los,
-1707,9613,8657,,mohpgn.las,
-1707,9613,8658,,mohpgn.los,
-1708,9613,8657,,arhpgn.las,
-1708,9613,8658,,arhpgn.los,
-1709,9613,8657,,iahpgn.las,
-1709,9613,8658,,iahpgn.los,
-1710,9613,8657,,mnhpgn.las,
-1710,9613,8658,,mnhpgn.los,
-1711,9613,8657,,mohpgn.las,
-1711,9613,8658,,mohpgn.los,
-1712,9613,8657,,cohpgn.las,
-1712,9613,8658,,cohpgn.los,
-1713,9613,8657,,gahpgn.las,
-1713,9613,8658,,gahpgn.los,
-1714,9613,8657,,flhpgn.las,
-1714,9613,8658,,flhpgn.los,
-1715,9613,8657,,emhpgn.las,
-1715,9613,8658,,emhpgn.los,
-1716,9613,8657,,wmhpgn.las,
-1716,9613,8658,,wmhpgn.los,
-1717,9613,8657,,alhpgn.las,
-1717,9613,8658,,alhpgn.los,
-1718,9613,8657,,kyhpgn.las,
-1718,9613,8658,,kyhpgn.los,
-1719,9613,8657,,lahpgn.las,
-1719,9613,8658,,lahpgn.los,
-1720,9613,8657,,mdhpgn.las,
-1720,9613,8658,,mdhpgn.los,
-1721,9613,8657,,mehpgn.las,
-1721,9613,8658,,mehpgn.los,
-1722,9613,8657,,mihpgn.las,
-1722,9613,8658,,mihpgn.los,
-1723,9613,8657,,mshpgn.las,
-1723,9613,8658,,mshpgn.los,
-1724,9613,8657,,nbhpgn.las,
-1724,9613,8658,,nbhpgn.los,
-1725,9613,8657,,nehpgn.las,
-1725,9613,8658,,nehpgn.los,
-1726,9613,8657,,nmhpgn.las,
-1726,9613,8658,,nmhpgn.los,
-1727,9613,8657,,nyhpgn.las,
-1727,9613,8658,,nyhpgn.los,
-1728,9613,8657,,azhpgn.las,
-1728,9613,8658,,azhpgn.los,
-1729,9613,8657,,ndhpgn.las,
-1729,9613,8658,,ndhpgn.los,
-1730,9613,8657,,okhpgn.las,
-1730,9613,8658,,okhpgn.los,
-1731,9613,8657,,pvhpgn.las,
-1731,9613,8658,,pvhpgn.los,
-1732,9613,8657,,sdhpgn.las,
-1732,9613,8658,,sdhpgn.los,
-1733,9613,8657,,tnhpgn.las,
-1733,9613,8658,,tnhpgn.los,
-1734,9613,8657,,ethpgn.las,
-1734,9613,8658,,ethpgn.los,
-1735,9613,8657,,wthpgn.las,
-1735,9613,8658,,wthpgn.los,
-1736,9613,8657,,vahpgn.las,
-1736,9613,8658,,vahpgn.los,
-1737,9613,8657,,wohpgn.las,
-1737,9613,8658,,wohpgn.los,
-1738,9613,8657,,wihpgn.las,
-1738,9613,8658,,wihpgn.los,
-1739,9613,8657,,cnhpgn.las,
-1739,9613,8658,,cnhpgn.los,
-1740,9613,8657,,wyhpgn.las,
-1740,9613,8658,,wyhpgn.los,
-1741,9613,8657,,hihpgn.las,
-1741,9613,8658,,hihpgn.los,
-1742,9613,8657,,inhpgn.las,
-1742,9613,8658,,inhpgn.los,
-1743,9613,8657,,kshpgn.las,
-1743,9613,8658,,kshpgn.los,
-1744,9613,8657,,nvhpgn.las,
-1744,9613,8658,,nvhpgn.los,
-1745,9613,8657,,ohhpgn.las,
-1745,9613,8658,,ohhpgn.los,
-1746,9613,8657,,uthpgn.las,
-1746,9613,8658,,uthpgn.los,
-1747,9613,8657,,wvhpgn.las,
-1747,9613,8658,,wvhpgn.los,
-1748,9613,8657,,ilhpgn.las,
-1748,9613,8658,,ilhpgn.los,
-1749,9613,8657,,njhpgn.las,
-1749,9613,8658,,njhpgn.los,
-1750,9613,8657,,cshpgn.las,
-1750,9613,8658,,cshpgn.los,
-1751,9607,8605,565.04,,9001
-1751,9607,8606,49.91,,9001
-1751,9607,8607,465.84,,9001
-1751,9607,8608,1.9848,,9109
-1751,9607,8609,-1.7439,,9109
-1751,9607,8610,9.0587,,9109
-1751,9607,8611,4.0772,,9202
-1752,9615,8656,,AB_CSRS.DAC,
-1753,9607,8605,660.077,,9001
-1753,9607,8606,13.551,,9001
-1753,9607,8607,369.344,,9001
-1753,9607,8608,2.484,,9113
-1753,9607,8609,1.783,,9113
-1753,9607,8610,2.939,,9113
-1753,9607,8611,5.66,,9202
-1754,9606,8605,-111.92,,9001
-1754,9606,8606,-87.85,,9001
-1754,9606,8607,114.5,,9001
-1754,9606,8608,1.875,,9104
-1754,9606,8609,0.202,,9104
-1754,9606,8610,0.219,,9104
-1754,9606,8611,0.032,,9202
-1755,9601,8602,-74.04513,,9110
-1756,9601,8602,-9.0754862,,9110
-1757,9601,8602,-17.4,,9110
-1758,9601,8602,106.482779,,9110
-1759,9601,8602,106.482779,,9110
-1760,9601,8602,18.03298,,9110
-1761,9601,8602,23.4258815,,9110
-1762,9601,8602,10.43225,,9110
-1763,9601,8602,2.5969213,,9105
-1764,9601,8602,2.201395,,9110
-1765,9601,8602,7.26225,,9110
-1766,9603,8605,674.4,,9001
-1766,9603,8606,15.1,,9001
-1766,9603,8607,405.3,,9001
-1767,9603,8605,0.0,,9001
-1767,9603,8606,0.0,,9001
-1767,9603,8607,0.0,,9001
-1768,9603,8605,0.0,,9001
-1768,9603,8606,0.0,,9001
-1768,9603,8607,0.0,,9001
-1769,9636,8605,-270.933,,9001
-1769,9636,8606,115.599,,9001
-1769,9636,8607,-360.226,,9001
-1769,9636,8608,-5.266,,9104
-1769,9636,8609,-1.238,,9104
-1769,9636,8610,2.381,,9104
-1769,9636,8611,-5.109,,9202
-1769,9636,8617,2464351.59,,9001
-1769,9636,8618,-5783466.61,,9001
-1769,9636,8667,974809.81,,9001
-1770,9636,8605,-270.933,,9001
-1770,9636,8606,115.599,,9001
-1770,9636,8607,-360.226,,9001
-1770,9636,8608,-5.266,,9104
-1770,9636,8609,-1.238,,9104
-1770,9636,8610,2.381,,9104
-1770,9636,8611,-5.109,,9202
-1770,9636,8617,2464351.59,,9001
-1770,9636,8618,-5783466.61,,9001
-1770,9636,8667,974809.81,,9001
-1771,9636,8605,-270.933,,9001
-1771,9636,8606,115.599,,9001
-1771,9636,8607,-360.226,,9001
-1771,9636,8608,-5.266,,9104
-1771,9636,8609,-1.238,,9104
-1771,9636,8610,2.381,,9104
-1771,9636,8611,-5.109,,9202
-1771,9636,8617,2464351.59,,9001
-1771,9636,8618,-5783466.61,,9001
-1771,9636,8667,974809.81,,9001
-1772,9636,8605,-270.933,,9001
-1772,9636,8606,115.599,,9001
-1772,9636,8607,-360.226,,9001
-1772,9636,8608,-5.266,,9104
-1772,9636,8609,-1.238,,9104
-1772,9636,8610,2.381,,9104
-1772,9636,8611,-5.109,,9202
-1772,9636,8617,2464351.59,,9001
-1772,9636,8618,-5783466.61,,9001
-1772,9636,8667,974809.81,,9001
-1773,9603,8605,0.0,,9001
-1773,9603,8606,0.0,,9001
-1773,9603,8607,0.0,,9001
-1774,9603,8605,0.0,,9001
-1774,9603,8606,0.0,,9001
-1774,9603,8607,0.0,,9001
-1775,9606,8605,24.9,,9001
-1775,9606,8606,-126.4,,9001
-1775,9606,8607,-93.2,,9001
-1775,9606,8608,-0.063,,9104
-1775,9606,8609,-0.247,,9104
-1775,9606,8610,-0.041,,9104
-1775,9606,8611,1.01,,9202
-1776,9606,8605,598.1,,9001
-1776,9606,8606,73.7,,9001
-1776,9606,8607,418.2,,9001
-1776,9606,8608,0.202,,9104
-1776,9606,8609,0.045,,9104
-1776,9606,8610,-2.455,,9104
-1776,9606,8611,6.7,,9202
-1777,9606,8605,598.1,,9001
-1777,9606,8606,73.7,,9001
-1777,9606,8607,418.2,,9001
-1777,9606,8608,0.202,,9104
-1777,9606,8609,0.045,,9104
-1777,9606,8610,-2.455,,9104
-1777,9606,8611,6.7,,9202
-1778,9606,8605,597.1,,9001
-1778,9606,8606,71.4,,9001
-1778,9606,8607,412.1,,9001
-1778,9606,8608,0.894,,9104
-1778,9606,8609,0.068,,9104
-1778,9606,8610,-1.563,,9104
-1778,9606,8611,7.58,,9202
-1779,9606,8605,584.8,,9001
-1779,9606,8606,67.0,,9001
-1779,9606,8607,400.3,,9001
-1779,9606,8608,0.105,,9104
-1779,9606,8609,0.013,,9104
-1779,9606,8610,-2.378,,9104
-1779,9606,8611,10.29,,9202
-1780,9606,8605,590.5,,9001
-1780,9606,8606,69.5,,9001
-1780,9606,8607,411.6,,9001
-1780,9606,8608,-0.796,,9104
-1780,9606,8609,-0.052,,9104
-1780,9606,8610,-3.601,,9104
-1780,9606,8611,8.3,,9202
-1781,9606,8605,599.4,,9001
-1781,9606,8606,72.4,,9001
-1781,9606,8607,419.2,,9001
-1781,9606,8608,-0.062,,9104
-1781,9606,8609,-0.022,,9104
-1781,9606,8610,-2.723,,9104
-1781,9606,8611,6.46,,9202
-1782,9606,8605,612.4,,9001
-1782,9606,8606,77.0,,9001
-1782,9606,8607,440.2,,9001
-1782,9606,8608,-0.054,,9104
-1782,9606,8609,0.057,,9104
-1782,9606,8610,-2.797,,9104
-1782,9606,8611,2.55,,9202
-1783,9606,8605,-84.1,,9001
-1783,9606,8606,-101.8,,9001
-1783,9606,8607,-129.7,,9001
-1783,9606,8608,0.0,,9104
-1783,9606,8609,0.0,,9104
-1783,9606,8610,0.468,,9104
-1783,9606,8611,1.05,,9202
-1784,9606,8605,-84.1,,9001
-1784,9606,8606,-101.8,,9001
-1784,9606,8607,-129.7,,9001
-1784,9606,8608,0.0,,9104
-1784,9606,8609,0.0,,9104
-1784,9606,8610,0.468,,9104
-1784,9606,8611,1.05,,9202
-1785,9606,8605,426.9,,9001
-1785,9606,8606,142.6,,9001
-1785,9606,8607,460.1,,9001
-1785,9606,8608,4.91,,9104
-1785,9606,8609,4.49,,9104
-1785,9606,8610,-12.42,,9104
-1785,9606,8611,17.1,,9202
-1786,9606,8605,426.9,,9001
-1786,9606,8606,142.6,,9001
-1786,9606,8607,460.1,,9001
-1786,9606,8608,4.91,,9104
-1786,9606,8609,4.49,,9104
-1786,9606,8610,-12.42,,9104
-1786,9606,8611,17.1,,9202
-1787,9607,8605,414.1,,9001
-1787,9607,8606,41.3,,9001
-1787,9607,8607,603.1,,9001
-1787,9607,8608,-0.855,,9104
-1787,9607,8609,2.141,,9104
-1787,9607,8610,-7.023,,9104
-1787,9607,8611,0.0,,9202
-1788,9607,8605,414.1,,9001
-1788,9607,8606,41.3,,9001
-1788,9607,8607,603.1,,9001
-1788,9607,8608,-0.855,,9104
-1788,9607,8609,2.141,,9104
-1788,9607,8610,-7.023,,9104
-1788,9607,8611,0.0,,9202
-1789,9603,8605,103.25,,9001
-1789,9603,8606,-100.4,,9001
-1789,9603,8607,-307.19,,9001
-1790,9606,8605,-282.1,,9001
-1790,9606,8606,-72.2,,9001
-1790,9606,8607,120.0,,9001
-1790,9606,8608,-1.592,,9104
-1790,9606,8609,0.145,,9104
-1790,9606,8610,-0.89,,9104
-1790,9606,8611,-4.46,,9202
-1791,9606,8605,-282.1,,9001
-1791,9606,8606,-72.2,,9001
-1791,9606,8607,120.0,,9001
-1791,9606,8608,-1.592,,9104
-1791,9606,8609,0.145,,9104
-1791,9606,8610,-0.89,,9104
-1791,9606,8611,-4.46,,9202
-1792,9606,8605,-231.0,,9001
-1792,9606,8606,102.6,,9001
-1792,9606,8607,29.8,,9001
-1792,9606,8608,0.615,,9104
-1792,9606,8609,-0.198,,9104
-1792,9606,8610,0.881,,9104
-1792,9606,8611,1.79,,9202
-1793,9606,8605,-231.0,,9001
-1793,9606,8606,102.6,,9001
-1793,9606,8607,29.8,,9001
-1793,9606,8608,0.615,,9104
-1793,9606,8609,-0.198,,9104
-1793,9606,8610,0.881,,9104
-1793,9606,8611,1.79,,9202
-1794,9603,8605,695.5,,9001
-1794,9603,8606,-216.6,,9001
-1794,9603,8607,491.1,,9001
-1795,9636,8605,408.0895,,9001
-1795,9636,8606,-288.9616,,9001
-1795,9636,8607,791.5498,,9001
-1795,9636,8608,-4.078662,,9104
-1795,9636,8609,0.022669,,9104
-1795,9636,8610,9.825424,,9104
-1795,9636,8611,94.060626,,9202
-1795,9636,8617,4444943.0248,,9001
-1795,9636,8618,1518098.4827,,9001
-1795,9636,8667,4302370.0765,,9001
-1796,9603,8605,-70.9,,9001
-1796,9603,8606,-151.8,,9001
-1796,9603,8607,-41.4,,9001
-1797,9603,8605,164.0,,9001
-1797,9603,8606,138.0,,9001
-1797,9603,8607,-189.0,,9001
-1798,9606,8605,163.511,,9001
-1798,9606,8606,127.533,,9001
-1798,9606,8607,-159.789,,9001
-1798,9606,8608,0.0,,9104
-1798,9606,8609,0.0,,9104
-1798,9606,8610,0.814,,9104
-1798,9606,8611,-0.6,,9202
-1799,9606,8605,105.0,,9001
-1799,9606,8606,326.0,,9001
-1799,9606,8607,-102.5,,9001
-1799,9606,8608,0.0,,9104
-1799,9606,8609,0.0,,9104
-1799,9606,8610,0.814,,9104
-1799,9606,8611,-0.6,,9202
-1800,9606,8605,-45.0,,9001
-1800,9606,8606,417.0,,9001
-1800,9606,8607,-3.5,,9001
-1800,9606,8608,0.0,,9104
-1800,9606,8609,0.0,,9104
-1800,9606,8610,0.814,,9104
-1800,9606,8611,-0.6,,9202
-1801,9603,8605,-145.0,,9001
-1801,9603,8606,52.7,,9001
-1801,9603,8607,-291.6,,9001
-1802,9606,8605,-178.3,,9001
-1802,9606,8606,-316.7,,9001
-1802,9606,8607,-131.5,,9001
-1802,9606,8608,5.278,,9104
-1802,9606,8609,6.077,,9104
-1802,9606,8610,10.979,,9104
-1802,9606,8611,19.166,,9202
-1803,9615,8656,,A66 National (13.09.01).gsb,
-1804,9615,8656,,National 84 (02.07.01).gsb,
-1805,9603,8605,-56.1,,9001
-1805,9603,8606,-167.8,,9001
-1805,9603,8607,13.1,,9001
-1806,9603,8605,-104.4,,9001
-1806,9603,8606,-136.6,,9001
-1806,9603,8607,201.2,,9001
-1807,9606,8605,27.0,,9001
-1807,9606,8606,-135.0,,9001
-1807,9606,8607,-84.5,,9001
-1807,9606,8608,0.0,,9104
-1807,9606,8609,0.0,,9104
-1807,9606,8610,0.554,,9104
-1807,9606,8611,0.2263,,9202
-1808,9606,8605,686.1,,9001
-1808,9606,8606,-123.5,,9001
-1808,9606,8607,-574.4,,9001
-1808,9606,8608,8.045,,9104
-1808,9606,8609,-23.366,,9104
-1808,9606,8610,10.791,,9104
-1808,9606,8611,-2.926,,9202
-1809,9606,8605,926.4,,9001
-1809,9606,8606,-715.9,,9001
-1809,9606,8607,-186.4,,9001
-1809,9606,8608,-10.364,,9104
-1809,9606,8609,-20.78,,9104
-1809,9606,8610,26.452,,9104
-1809,9606,8611,-7.224,,9202
-1810,9606,8605,-84.0,,9001
-1810,9606,8606,-103.0,,9001
-1810,9606,8607,-122.5,,9001
-1810,9606,8608,0.0,,9104
-1810,9606,8609,0.0,,9104
-1810,9606,8610,0.554,,9104
-1810,9606,8611,0.2263,,9202
-1811,9603,8605,-291.87,,9001
-1811,9603,8606,106.37,,9001
-1811,9603,8607,-364.52,,9001
-1812,9606,8605,293.0,,9001
-1812,9606,8606,836.0,,9001
-1812,9606,8607,318.0,,9001
-1812,9606,8608,0.5,,9104
-1812,9606,8609,1.6,,9104
-1812,9606,8610,-2.8,,9104
-1812,9606,8611,2.1,,9202
-1813,9603,8605,-378.873,,9001
-1813,9603,8606,676.002,,9001
-1813,9603,8607,-46.255,,9001
-1814,9603,8605,-377.7,,9001
-1814,9603,8606,675.1,,9001
-1814,9603,8607,-52.2,,9001
-1815,9606,8605,-152.9,,9001
-1815,9606,8606,43.8,,9001
-1815,9606,8607,358.3,,9001
-1815,9606,8608,2.714,,9104
-1815,9606,8609,1.386,,9104
-1815,9606,8610,-2.788,,9104
-1815,9606,8611,-6.743,,9202
-1816,9603,8605,-95.7,,9001
-1816,9603,8606,10.2,,9001
-1816,9603,8607,158.9,,9001
-1817,9603,8605,-165.914,,9001
-1817,9603,8606,-70.607,,9001
-1817,9603,8607,305.009,,9001
-1818,9606,8605,-89.0,,9001
-1818,9606,8606,-112.0,,9001
-1818,9606,8607,125.9,,9001
-1818,9606,8608,0.0,,9104
-1818,9606,8609,0.0,,9104
-1818,9606,8610,0.814,,9104
-1818,9606,8611,-0.38,,9202
-1819,9606,8605,-111.92,,9001
-1819,9606,8606,-87.85,,9001
-1819,9606,8607,114.5,,9001
-1819,9606,8608,1.875,,9104
-1819,9606,8609,0.202,,9104
-1819,9606,8610,0.219,,9104
-1819,9606,8611,0.032,,9202
-1820,9603,8605,-93.2,,9001
-1820,9603,8606,-93.31,,9001
-1820,9603,8607,121.156,,9001
-1821,9603,8605,-88.98,,9001
-1821,9603,8606,-83.23,,9001
-1821,9603,8607,113.55,,9001
-1822,9603,8605,-92.726,,9001
-1822,9603,8606,-90.304,,9001
-1822,9603,8607,115.735,,9001
-1823,9603,8605,-93.134,,9001
-1823,9603,8606,-86.647,,9001
-1823,9603,8607,114.196,,9001
-1824,9603,8605,-93.0,,9001
-1824,9603,8606,-94.0,,9001
-1824,9603,8607,124.0,,9001
-1825,9606,8605,-162.619,,9001
-1825,9606,8606,-276.959,,9001
-1825,9606,8607,-161.764,,9001
-1825,9606,8608,0.067753,,9104
-1825,9606,8609,-2.243649,,9104
-1825,9606,8610,-1.158827,,9104
-1825,9606,8611,-1.094246,,9202
-1826,9603,8605,0.0,,9001
-1826,9603,8606,0.0,,9001
-1826,9603,8607,0.0,,9001
-1827,9618,8601,7.92,,9104
-1827,9618,8602,-13.88,,9104
-1827,9618,8604,26.1,,9001
-1828,9603,8605,-37.0,,9001
-1828,9603,8606,157.0,,9001
-1828,9603,8607,85.0,,9001
-1829,9607,8605,56.0,,9001
-1829,9607,8606,-75.77,,9001
-1829,9607,8607,-15.31,,9001
-1829,9607,8608,0.37,,9104
-1829,9607,8609,0.2,,9104
-1829,9607,8610,0.21,,9104
-1829,9607,8611,1.01,,9202
-1830,9607,8605,56.0,,9001
-1830,9607,8606,-75.77,,9001
-1830,9607,8607,-15.31,,9001
-1830,9607,8608,0.37,,9104
-1830,9607,8609,0.2,,9104
-1830,9607,8610,0.21,,9104
-1830,9607,8611,1.01,,9202
-1831,9603,8605,57.01,,9001
-1831,9603,8606,-69.97,,9001
-1831,9603,8607,-9.29,,9001
-1832,9606,8605,2.691,,9001
-1832,9606,8606,-14.757,,9001
-1832,9606,8607,4.724,,9001
-1832,9606,8608,0.0,,9104
-1832,9606,8609,0.0,,9104
-1832,9606,8610,0.774,,9104
-1832,9606,8611,-0.6,,9202
-1833,9607,8605,-1.977,,9001
-1833,9607,8606,-13.06,,9001
-1833,9607,8607,-9.993,,9001
-1833,9607,8608,-0.364,,9104
-1833,9607,8609,-0.254,,9104
-1833,9607,8610,-0.689,,9104
-1833,9607,8611,-1.037,,9202
-1834,9603,8605,-403.0,,9001
-1834,9603,8606,684.0,,9001
-1834,9603,8607,41.0,,9001
-1835,9603,8605,-387.06,,9001
-1835,9603,8606,636.53,,9001
-1835,9603,8607,46.29,,9001
-1836,9603,8605,-403.4,,9001
-1836,9603,8606,681.12,,9001
-1836,9603,8607,46.56,,9001
-1837,9603,8605,-587.8,,9001
-1837,9603,8606,519.75,,9001
-1837,9603,8607,145.76,,9001
-1838,9603,8605,-404.78,,9001
-1838,9603,8606,685.68,,9001
-1838,9603,8607,45.47,,9001
-1839,9603,8605,-101.0,,9001
-1839,9603,8606,-111.0,,9001
-1839,9603,8607,187.0,,9001
-1840,9606,8605,-119.4248,,9001
-1840,9606,8606,-303.65872,,9001
-1840,9606,8607,-11.00061,,9001
-1840,9606,8608,1.164298,,9104
-1840,9606,8609,0.174458,,9104
-1840,9606,8610,1.096259,,9104
-1840,9606,8611,3.657065,,9202
-1841,9615,8656,,NB7783v2.gsb,
-1842,9603,8605,0.0,,9001
-1842,9603,8606,0.0,,9001
-1842,9603,8607,0.0,,9001
-1843,9615,8656,,NAD83-98.gsb,
-1844,9615,8656,,QUE27-98.gsb,
-1845,9615,8656,,CGQ77-98.gsb,
-1846,9615,8656,,PE7783V2.gsb,
-1847,9615,8656,,SK27-98.gsb,
-1848,9615,8656,,SK83-98.gsb,
-1849,9615,8656,,AB_CSRS.DAC,
-1850,9615,8656,,NS778301.gsb,
-1851,9615,8656,,NS778301.gsb,
-1852,9606,8605,-533.4,,9001
-1852,9606,8606,669.2,,9001
-1852,9606,8607,-52.5,,9001
-1852,9606,8608,0.0,,9104
-1852,9606,8609,0.0,,9104
-1852,9606,8610,4.28,,9104
-1852,9606,8611,9.4,,9202
-1854,9603,8605,-239.1,,9001
-1854,9603,8606,-170.02,,9001
-1854,9603,8607,397.5,,9001
-1855,9603,8605,-244.72,,9001
-1855,9603,8606,-162.773,,9001
-1855,9603,8607,400.75,,9001
-1856,9603,8605,-122.89,,9001
-1856,9603,8606,-159.08,,9001
-1856,9603,8607,-168.74,,9001
-1857,9603,8605,-84.78,,9001
-1857,9603,8606,-107.55,,9001
-1857,9603,8607,-137.25,,9001
-1858,9603,8605,-123.92,,9001
-1858,9603,8606,-155.515,,9001
-1858,9603,8607,-157.721,,9001
-1859,9603,8605,-69.06,,9001
-1859,9603,8606,-90.71,,9001
-1859,9603,8607,-142.56,,9001
-1860,9603,8605,-113.997,,9001
-1860,9603,8606,-97.076,,9001
-1860,9603,8607,-152.312,,9001
-1861,9603,8605,-114.5,,9001
-1861,9603,8606,-96.1,,9001
-1861,9603,8607,-151.9,,9001
-1862,9606,8605,-194.513,,9001
-1862,9606,8606,-63.978,,9001
-1862,9606,8607,-25.759,,9001
-1862,9606,8608,-3.4027,,9104
-1862,9606,8609,3.756,,9104
-1862,9606,8610,-3.352,,9104
-1862,9606,8611,-0.9175,,9202
-1863,9607,8605,-389.691,,9001
-1863,9607,8606,64.502,,9001
-1863,9607,8607,210.209,,9001
-1863,9607,8608,-0.086,,9104
-1863,9607,8609,-14.314,,9104
-1863,9607,8610,6.39,,9104
-1863,9607,8611,0.9264,,9202
-5400,9616,8603,-28.0,,9001
-5401,9616,8603,-0.037,,9001
-5402,9616,8603,-26.3,,9001
-5403,9616,8603,-1.7,,9001
-5404,9616,8603,-0.4,,9001
-5405,9616,8603,0.146,,9001
-10101,9807,8801,30.3,,9110
-10101,9807,8802,-85.5,,9110
-10101,9807,8805,0.99996,,9201
-10101,9807,8806,500000.0,,9003
-10101,9807,8807,0.0,,9003
-10102,9807,8801,30.0,,9110
-10102,9807,8802,-87.3,,9110
-10102,9807,8805,0.999933333,,9201
-10102,9807,8806,500000.0,,9003
-10102,9807,8807,0.0,,9003
-10131,9807,8801,30.3,,9110
-10131,9807,8802,-85.5,,9110
-10131,9807,8805,0.99996,,9201
-10131,9807,8806,200000.0,,9001
-10131,9807,8807,0.0,,9001
-10132,9807,8801,30.0,,9110
-10132,9807,8802,-87.3,,9110
-10132,9807,8805,0.999933333,,9201
-10132,9807,8806,600000.0,,9001
-10132,9807,8807,0.0,,9001
-10201,9807,8801,31.0,,9110
-10201,9807,8802,-110.1,,9110
-10201,9807,8805,0.9999,,9201
-10201,9807,8806,500000.0,,9003
-10201,9807,8807,0.0,,9003
-10202,9807,8801,31.0,,9110
-10202,9807,8802,-111.55,,9110
-10202,9807,8805,0.9999,,9201
-10202,9807,8806,500000.0,,9003
-10202,9807,8807,0.0,,9003
-10203,9807,8801,31.0,,9110
-10203,9807,8802,-113.45,,9110
-10203,9807,8805,0.999933333,,9201
-10203,9807,8806,500000.0,,9003
-10203,9807,8807,0.0,,9003
-10231,9807,8801,31.0,,9110
-10231,9807,8802,-110.1,,9110
-10231,9807,8805,0.9999,,9201
-10231,9807,8806,213360.0,,9001
-10231,9807,8807,0.0,,9001
-10232,9807,8801,31.0,,9110
-10232,9807,8802,-111.55,,9110
-10232,9807,8805,0.9999,,9201
-10232,9807,8806,213360.0,,9001
-10232,9807,8807,0.0,,9001
-10233,9807,8801,31.0,,9110
-10233,9807,8802,-113.45,,9110
-10233,9807,8805,0.999933333,,9201
-10233,9807,8806,213360.0,,9001
-10233,9807,8807,0.0,,9001
-10301,9802,8821,34.2,,9110
-10301,9802,8822,-92.0,,9110
-10301,9802,8823,36.14,,9110
-10301,9802,8824,34.56,,9110
-10301,9802,8826,2000000.0,,9003
-10301,9802,8827,0.0,,9003
-10302,9802,8821,32.4,,9110
-10302,9802,8822,-92.0,,9110
-10302,9802,8823,34.46,,9110
-10302,9802,8824,33.18,,9110
-10302,9802,8826,2000000.0,,9003
-10302,9802,8827,0.0,,9003
-10331,9802,8821,34.2,,9110
-10331,9802,8822,-92.0,,9110
-10331,9802,8823,36.14,,9110
-10331,9802,8824,34.56,,9110
-10331,9802,8826,400000.0,,9001
-10331,9802,8827,0.0,,9001
-10332,9802,8821,32.4,,9110
-10332,9802,8822,-92.0,,9110
-10332,9802,8823,34.46,,9110
-10332,9802,8824,33.18,,9110
-10332,9802,8826,400000.0,,9001
-10332,9802,8827,400000.0,,9001
-10401,9802,8821,39.2,,9110
-10401,9802,8822,-122.0,,9110
-10401,9802,8823,41.4,,9110
-10401,9802,8824,40.0,,9110
-10401,9802,8826,2000000.0,,9003
-10401,9802,8827,0.0,,9003
-10402,9802,8821,37.4,,9110
-10402,9802,8822,-122.0,,9110
-10402,9802,8823,39.5,,9110
-10402,9802,8824,38.2,,9110
-10402,9802,8826,2000000.0,,9003
-10402,9802,8827,0.0,,9003
-10403,9802,8821,36.3,,9110
-10403,9802,8822,-120.3,,9110
-10403,9802,8823,38.26,,9110
-10403,9802,8824,37.04,,9110
-10403,9802,8826,2000000.0,,9003
-10403,9802,8827,0.0,,9003
-10404,9802,8821,35.2,,9110
-10404,9802,8822,-119.0,,9110
-10404,9802,8823,37.15,,9110
-10404,9802,8824,36.0,,9110
-10404,9802,8826,2000000.0,,9003
-10404,9802,8827,0.0,,9003
-10405,9802,8821,33.3,,9110
-10405,9802,8822,-118.0,,9110
-10405,9802,8823,35.28,,9110
-10405,9802,8824,34.02,,9110
-10405,9802,8826,2000000.0,,9003
-10405,9802,8827,0.0,,9003
-10406,9802,8821,32.1,,9110
-10406,9802,8822,-116.15,,9110
-10406,9802,8823,33.53,,9110
-10406,9802,8824,32.47,,9110
-10406,9802,8826,2000000.0,,9003
-10406,9802,8827,0.0,,9003
-10407,9802,8821,34.08,,9110
-10407,9802,8822,-118.2,,9110
-10407,9802,8823,34.25,,9110
-10407,9802,8824,33.52,,9110
-10407,9802,8826,4186692.58,,9003
-10407,9802,8827,416926.74,,9003
-10431,9802,8821,39.2,,9110
-10431,9802,8822,-122.0,,9110
-10431,9802,8823,41.4,,9110
-10431,9802,8824,40.0,,9110
-10431,9802,8826,2000000.0,,9001
-10431,9802,8827,500000.0,,9001
-10432,9802,8821,37.4,,9110
-10432,9802,8822,-122.0,,9110
-10432,9802,8823,39.5,,9110
-10432,9802,8824,38.2,,9110
-10432,9802,8826,2000000.0,,9001
-10432,9802,8827,500000.0,,9001
-10433,9802,8821,36.3,,9110
-10433,9802,8822,-120.3,,9110
-10433,9802,8823,38.26,,9110
-10433,9802,8824,37.04,,9110
-10433,9802,8826,2000000.0,,9001
-10433,9802,8827,500000.0,,9001
-10434,9802,8821,35.2,,9110
-10434,9802,8822,-119.0,,9110
-10434,9802,8823,37.15,,9110
-10434,9802,8824,36.0,,9110
-10434,9802,8826,2000000.0,,9001
-10434,9802,8827,500000.0,,9001
-10435,9802,8821,33.3,,9110
-10435,9802,8822,-118.0,,9110
-10435,9802,8823,35.28,,9110
-10435,9802,8824,34.02,,9110
-10435,9802,8826,2000000.0,,9001
-10435,9802,8827,500000.0,,9001
-10436,9802,8821,32.1,,9110
-10436,9802,8822,-116.15,,9110
-10436,9802,8823,33.53,,9110
-10436,9802,8824,32.47,,9110
-10436,9802,8826,2000000.0,,9001
-10436,9802,8827,500000.0,,9001
-10501,9802,8821,39.2,,9110
-10501,9802,8822,-105.3,,9110
-10501,9802,8823,39.43,,9110
-10501,9802,8824,40.47,,9110
-10501,9802,8826,2000000.0,,9003
-10501,9802,8827,0.0,,9003
-10502,9802,8821,37.5,,9110
-10502,9802,8822,-105.3,,9110
-10502,9802,8823,39.45,,9110
-10502,9802,8824,38.27,,9110
-10502,9802,8826,2000000.0,,9003
-10502,9802,8827,0.0,,9003
-10503,9802,8821,36.4,,9110
-10503,9802,8822,-105.3,,9110
-10503,9802,8823,38.26,,9110
-10503,9802,8824,37.14,,9110
-10503,9802,8826,2000000.0,,9003
-10503,9802,8827,0.0,,9003
-10531,9802,8821,39.2,,9110
-10531,9802,8822,-105.3,,9110
-10531,9802,8823,40.47,,9110
-10531,9802,8824,39.43,,9110
-10531,9802,8826,914401.8289,,9001
-10531,9802,8827,304800.6096,,9001
-10532,9802,8821,37.5,,9110
-10532,9802,8822,-105.3,,9110
-10532,9802,8823,39.45,,9110
-10532,9802,8824,38.27,,9110
-10532,9802,8826,914401.8289,,9001
-10532,9802,8827,304800.6096,,9001
-10533,9802,8821,36.4,,9110
-10533,9802,8822,-105.3,,9110
-10533,9802,8823,38.26,,9110
-10533,9802,8824,37.14,,9110
-10533,9802,8826,914401.8289,,9001
-10533,9802,8827,304800.6096,,9001
-10600,9802,8821,40.5,,9110
-10600,9802,8822,-72.45,,9110
-10600,9802,8823,41.52,,9110
-10600,9802,8824,41.12,,9110
-10600,9802,8826,600000.0,,9003
-10600,9802,8827,0.0,,9003
-10630,9802,8821,40.5,,9110
-10630,9802,8822,-72.45,,9110
-10630,9802,8823,41.52,,9110
-10630,9802,8824,41.12,,9110
-10630,9802,8826,304800.6096,,9001
-10630,9802,8827,152400.3048,,9001
-10700,9807,8801,38.0,,9110
-10700,9807,8802,-75.25,,9110
-10700,9807,8805,0.999995,,9201
-10700,9807,8806,500000.0,,9003
-10700,9807,8807,0.0,,9003
-10730,9807,8801,38.0,,9110
-10730,9807,8802,-75.25,,9110
-10730,9807,8805,0.999995,,9201
-10730,9807,8806,200000.0,,9001
-10730,9807,8807,0.0,,9001
-10901,9807,8801,24.2,,9110
-10901,9807,8802,-81.0,,9110
-10901,9807,8805,0.999941177,,9201
-10901,9807,8806,500000.0,,9003
-10901,9807,8807,0.0,,9003
-10902,9807,8801,24.2,,9110
-10902,9807,8802,-82.0,,9110
-10902,9807,8805,0.999941177,,9201
-10902,9807,8806,500000.0,,9003
-10902,9807,8807,0.0,,9003
-10903,9802,8821,29.0,,9110
-10903,9802,8822,-84.3,,9110
-10903,9802,8823,30.45,,9110
-10903,9802,8824,29.35,,9110
-10903,9802,8826,2000000.0,,9003
-10903,9802,8827,0.0,,9003
-10931,9807,8801,24.2,,9110
-10931,9807,8802,-81.0,,9110
-10931,9807,8805,0.999941177,,9201
-10931,9807,8806,200000.0,,9001
-10931,9807,8807,0.0,,9001
-10932,9807,8801,24.2,,9110
-10932,9807,8802,-82.0,,9110
-10932,9807,8805,0.999941177,,9201
-10932,9807,8806,200000.0,,9001
-10932,9807,8807,0.0,,9001
-10933,9802,8821,29.0,,9110
-10933,9802,8822,-84.3,,9110
-10933,9802,8823,30.45,,9110
-10933,9802,8824,29.35,,9110
-10933,9802,8826,600000.0,,9001
-10933,9802,8827,0.0,,9001
-11001,9807,8801,30.0,,9110
-11001,9807,8802,-82.1,,9110
-11001,9807,8805,0.9999,,9201
-11001,9807,8806,500000.0,,9003
-11001,9807,8807,0.0,,9003
-11002,9807,8801,30.0,,9110
-11002,9807,8802,-84.1,,9110
-11002,9807,8805,0.9999,,9201
-11002,9807,8806,500000.0,,9003
-11002,9807,8807,0.0,,9003
-11031,9807,8801,30.0,,9110
-11031,9807,8802,-82.1,,9110
-11031,9807,8805,0.9999,,9201
-11031,9807,8806,200000.0,,9001
-11031,9807,8807,0.0,,9001
-11032,9807,8801,30.0,,9110
-11032,9807,8802,-84.1,,9110
-11032,9807,8805,0.9999,,9201
-11032,9807,8806,700000.0,,9001
-11032,9807,8807,0.0,,9001
-11101,9807,8801,41.4,,9110
-11101,9807,8802,-112.1,,9110
-11101,9807,8805,0.999947368,,9201
-11101,9807,8806,500000.0,,9003
-11101,9807,8807,0.0,,9003
-11102,9807,8801,41.4,,9110
-11102,9807,8802,-114.0,,9110
-11102,9807,8805,0.999947368,,9201
-11102,9807,8806,500000.0,,9003
-11102,9807,8807,0.0,,9003
-11103,9807,8801,41.4,,9110
-11103,9807,8802,-115.45,,9110
-11103,9807,8805,0.999933333,,9201
-11103,9807,8806,500000.0,,9003
-11103,9807,8807,0.0,,9003
-11131,9807,8801,41.4,,9110
-11131,9807,8802,-112.1,,9110
-11131,9807,8805,0.999947368,,9201
-11131,9807,8806,200000.0,,9001
-11131,9807,8807,0.0,,9001
-11132,9807,8801,41.4,,9110
-11132,9807,8802,-114.0,,9110
-11132,9807,8805,0.999947368,,9201
-11132,9807,8806,500000.0,,9001
-11132,9807,8807,0.0,,9001
-11133,9807,8801,41.4,,9110
-11133,9807,8802,-115.45,,9110
-11133,9807,8805,0.999933333,,9201
-11133,9807,8806,800000.0,,9001
-11133,9807,8807,0.0,,9001
-11201,9807,8801,36.4,,9110
-11201,9807,8802,-88.2,,9110
-11201,9807,8805,0.999975,,9201
-11201,9807,8806,500000.0,,9003
-11201,9807,8807,0.0,,9003
-11202,9807,8801,36.4,,9110
-11202,9807,8802,-90.1,,9110
-11202,9807,8805,0.999941177,,9201
-11202,9807,8806,500000.0,,9003
-11202,9807,8807,0.0,,9003
-11231,9807,8801,36.4,,9110
-11231,9807,8802,-88.2,,9110
-11231,9807,8805,0.999975,,9201
-11231,9807,8806,300000.0,,9001
-11231,9807,8807,0.0,,9001
-11232,9807,8801,36.4,,9110
-11232,9807,8802,-90.1,,9110
-11232,9807,8805,0.999941177,,9201
-11232,9807,8806,700000.0,,9001
-11232,9807,8807,0.0,,9001
-11301,9807,8801,37.3,,9110
-11301,9807,8802,-85.4,,9110
-11301,9807,8805,0.999966667,,9201
-11301,9807,8806,500000.0,,9003
-11301,9807,8807,0.0,,9003
-11302,9807,8801,37.3,,9110
-11302,9807,8802,-87.05,,9110
-11302,9807,8805,0.999966667,,9201
-11302,9807,8806,500000.0,,9003
-11302,9807,8807,0.0,,9003
-11331,9807,8801,37.3,,9110
-11331,9807,8802,-85.4,,9110
-11331,9807,8805,0.999966667,,9201
-11331,9807,8806,100000.0,,9001
-11331,9807,8807,250000.0,,9001
-11332,9807,8801,37.3,,9110
-11332,9807,8802,-87.05,,9110
-11332,9807,8805,0.999966667,,9201
-11332,9807,8806,900000.0,,9001
-11332,9807,8807,250000.0,,9001
-11401,9802,8821,41.3,,9110
-11401,9802,8822,-93.3,,9110
-11401,9802,8823,43.16,,9110
-11401,9802,8824,42.04,,9110
-11401,9802,8826,2000000.0,,9003
-11401,9802,8827,0.0,,9003
-11402,9802,8821,40.0,,9110
-11402,9802,8822,-93.3,,9110
-11402,9802,8823,41.47,,9110
-11402,9802,8824,40.37,,9110
-11402,9802,8826,2000000.0,,9003
-11402,9802,8827,0.0,,9003
-11431,9802,8821,41.3,,9110
-11431,9802,8822,-93.3,,9110
-11431,9802,8823,43.16,,9110
-11431,9802,8824,42.04,,9110
-11431,9802,8826,1500000.0,,9001
-11431,9802,8827,1000000.0,,9001
-11432,9802,8821,40.0,,9110
-11432,9802,8822,-93.3,,9110
-11432,9802,8823,41.47,,9110
-11432,9802,8824,40.37,,9110
-11432,9802,8826,500000.0,,9001
-11432,9802,8827,0.0,,9001
-11501,9802,8821,38.2,,9110
-11501,9802,8822,-98.0,,9110
-11501,9802,8823,39.47,,9110
-11501,9802,8824,38.43,,9110
-11501,9802,8826,2000000.0,,9003
-11501,9802,8827,0.0,,9003
-11502,9802,8821,36.4,,9110
-11502,9802,8822,-98.3,,9110
-11502,9802,8823,38.34,,9110
-11502,9802,8824,37.16,,9110
-11502,9802,8826,2000000.0,,9003
-11502,9802,8827,0.0,,9003
-11531,9802,8821,38.2,,9110
-11531,9802,8822,-98.0,,9110
-11531,9802,8823,39.47,,9110
-11531,9802,8824,38.43,,9110
-11531,9802,8826,400000.0,,9001
-11531,9802,8827,0.0,,9001
-11532,9802,8821,36.4,,9110
-11532,9802,8822,-98.3,,9110
-11532,9802,8823,38.34,,9110
-11532,9802,8824,37.16,,9110
-11532,9802,8826,400000.0,,9001
-11532,9802,8827,400000.0,,9001
-11601,9802,8821,37.3,,9110
-11601,9802,8822,-84.15,,9110
-11601,9802,8823,37.58,,9110
-11601,9802,8824,38.58,,9110
-11601,9802,8826,2000000.0,,9003
-11601,9802,8827,0.0,,9003
-11602,9802,8821,36.2,,9110
-11602,9802,8822,-85.45,,9110
-11602,9802,8823,36.44,,9110
-11602,9802,8824,37.56,,9110
-11602,9802,8826,2000000.0,,9003
-11602,9802,8827,0.0,,9003
-11631,9802,8821,37.3,,9110
-11631,9802,8822,-84.15,,9110
-11631,9802,8823,37.58,,9110
-11631,9802,8824,37.58,,9110
-11631,9802,8826,500000.0,,9001
-11631,9802,8827,0.0,,9001
-11632,9802,8821,36.2,,9110
-11632,9802,8822,-85.45,,9110
-11632,9802,8823,37.56,,9110
-11632,9802,8824,36.44,,9110
-11632,9802,8826,500000.0,,9001
-11632,9802,8827,500000.0,,9001
-11701,9802,8821,30.4,,9110
-11701,9802,8822,-92.3,,9110
-11701,9802,8823,31.1,,9110
-11701,9802,8824,32.4,,9110
-11701,9802,8826,2000000.0,,9003
-11701,9802,8827,0.0,,9003
-11702,9802,8821,28.4,,9110
-11702,9802,8822,-91.2,,9110
-11702,9802,8823,29.18,,9110
-11702,9802,8824,30.42,,9110
-11702,9802,8826,2000000.0,,9003
-11702,9802,8827,0.0,,9003
-11731,9802,8821,30.3,,9110
-11731,9802,8822,-92.3,,9110
-11731,9802,8823,32.4,,9110
-11731,9802,8824,31.1,,9110
-11731,9802,8826,1000000.0,,9001
-11731,9802,8827,0.0,,9001
-11732,9802,8821,28.3,,9110
-11732,9802,8822,-91.2,,9110
-11732,9802,8823,30.42,,9110
-11732,9802,8824,29.18,,9110
-11732,9802,8826,1000000.0,,9001
-11732,9802,8827,0.0,,9001
-11801,9807,8801,43.5,,9110
-11801,9807,8802,-68.3,,9110
-11801,9807,8805,0.9999,,9201
-11801,9807,8806,500000.0,,9003
-11801,9807,8807,0.0,,9003
-11802,9807,8801,42.5,,9110
-11802,9807,8802,-70.1,,9110
-11802,9807,8805,0.999966667,,9201
-11802,9807,8806,500000.0,,9003
-11802,9807,8807,0.0,,9003
-11831,9807,8801,43.4,,9110
-11831,9807,8802,-68.3,,9110
-11831,9807,8805,0.9999,,9201
-11831,9807,8806,300000.0,,9001
-11831,9807,8807,0.0,,9001
-11832,9807,8801,42.5,,9110
-11832,9807,8802,-70.1,,9110
-11832,9807,8805,0.999966667,,9201
-11832,9807,8806,900000.0,,9001
-11832,9807,8807,0.0,,9001
-11900,9802,8821,37.5,,9110
-11900,9802,8822,-77.0,,9110
-11900,9802,8823,38.18,,9110
-11900,9802,8824,39.27,,9110
-11900,9802,8826,800000.0,,9003
-11900,9802,8827,0.0,,9003
-11930,9802,8821,37.4,,9110
-11930,9802,8822,-77.0,,9110
-11930,9802,8823,39.27,,9110
-11930,9802,8824,38.18,,9110
-11930,9802,8826,400000.0,,9001
-11930,9802,8827,0.0,,9001
-12001,9802,8821,41.0,,9110
-12001,9802,8822,-71.3,,9110
-12001,9802,8823,41.43,,9110
-12001,9802,8824,42.41,,9110
-12001,9802,8826,600000.0,,9003
-12001,9802,8827,0.0,,9003
-12002,9802,8821,41.0,,9110
-12002,9802,8822,-70.3,,9110
-12002,9802,8823,41.17,,9110
-12002,9802,8824,41.29,,9110
-12002,9802,8826,200000.0,,9003
-12002,9802,8827,0.0,,9003
-12031,9802,8821,41.0,,9110
-12031,9802,8822,-71.3,,9110
-12031,9802,8823,42.41,,9110
-12031,9802,8824,41.43,,9110
-12031,9802,8826,200000.0,,9001
-12031,9802,8827,750000.0,,9001
-12032,9802,8821,41.0,,9110
-12032,9802,8822,-70.3,,9110
-12032,9802,8823,41.29,,9110
-12032,9802,8824,41.17,,9110
-12032,9802,8826,500000.0,,9001
-12032,9802,8827,0.0,,9001
-12101,9807,8801,41.3,,9110
-12101,9807,8802,-83.4,,9110
-12101,9807,8805,0.999942857,,9201
-12101,9807,8806,500000.0,,9003
-12101,9807,8807,0.0,,9003
-12102,9807,8801,41.3,,9110
-12102,9807,8802,-85.45,,9110
-12102,9807,8805,0.999909091,,9201
-12102,9807,8806,500000.0,,9003
-12102,9807,8807,0.0,,9003
-12103,9807,8801,41.3,,9110
-12103,9807,8802,-88.45,,9110
-12103,9807,8805,0.999909091,,9201
-12103,9807,8806,500000.0,,9003
-12103,9807,8807,0.0,,9003
-12111,9802,8821,44.47,,9110
-12111,9802,8822,-87.0,,9110
-12111,9802,8823,45.29,,9110
-12111,9802,8824,47.05,,9110
-12111,9802,8826,2000000.0,,9003
-12111,9802,8827,0.0,,9003
-12112,9802,8821,43.19,,9110
-12112,9802,8822,-84.2,,9110
-12112,9802,8823,44.11,,9110
-12112,9802,8824,45.42,,9110
-12112,9802,8826,2000000.0,,9003
-12112,9802,8827,0.0,,9003
-12113,9802,8821,41.3,,9110
-12113,9802,8822,-84.2,,9110
-12113,9802,8823,42.06,,9110
-12113,9802,8824,43.4,,9110
-12113,9802,8826,2000000.0,,9003
-12113,9802,8827,0.0,,9003
-12141,9802,8821,44.47,,9110
-12141,9802,8822,-87.0,,9110
-12141,9802,8823,47.05,,9110
-12141,9802,8824,45.29,,9110
-12141,9802,8826,8000000.0,,9001
-12141,9802,8827,0.0,,9001
-12142,9802,8821,43.19,,9110
-12142,9802,8822,-84.22,,9110
-12142,9802,8823,45.42,,9110
-12142,9802,8824,44.11,,9110
-12142,9802,8826,6000000.0,,9001
-12142,9802,8827,0.0,,9001
-12143,9802,8821,41.3,,9110
-12143,9802,8822,-84.22,,9110
-12143,9802,8823,43.4,,9110
-12143,9802,8824,42.06,,9110
-12143,9802,8826,4000000.0,,9001
-12143,9802,8827,0.0,,9001
-12201,9802,8821,46.3,,9110
-12201,9802,8822,-93.06,,9110
-12201,9802,8823,47.02,,9110
-12201,9802,8824,48.38,,9110
-12201,9802,8826,2000000.0,,9003
-12201,9802,8827,0.0,,9003
-12202,9802,8821,45.0,,9110
-12202,9802,8822,-94.15,,9110
-12202,9802,8823,45.37,,9110
-12202,9802,8824,47.03,,9110
-12202,9802,8826,2000000.0,,9003
-12202,9802,8827,0.0,,9003
-12203,9802,8821,43.0,,9110
-12203,9802,8822,-94.0,,9110
-12203,9802,8823,43.47,,9110
-12203,9802,8824,45.13,,9110
-12203,9802,8826,2000000.0,,9003
-12203,9802,8827,0.0,,9003
-12231,9802,8821,46.3,,9110
-12231,9802,8822,-93.06,,9110
-12231,9802,8823,48.38,,9110
-12231,9802,8824,47.02,,9110
-12231,9802,8826,800000.0,,9001
-12231,9802,8827,100000.0,,9001
-12232,9802,8821,45.0,,9110
-12232,9802,8822,-94.15,,9110
-12232,9802,8823,47.03,,9110
-12232,9802,8824,45.37,,9110
-12232,9802,8826,800000.0,,9001
-12232,9802,8827,100000.0,,9001
-12233,9802,8821,43.0,,9110
-12233,9802,8822,-94.0,,9110
-12233,9802,8823,45.13,,9110
-12233,9802,8824,43.47,,9110
-12233,9802,8826,800000.0,,9001
-12233,9802,8827,100000.0,,9001
-12301,9807,8801,29.4,,9110
-12301,9807,8802,-88.5,,9110
-12301,9807,8805,0.99996,,9201
-12301,9807,8806,500000.0,,9003
-12301,9807,8807,0.0,,9003
-12302,9807,8801,30.3,,9110
-12302,9807,8802,-90.2,,9110
-12302,9807,8805,0.999941177,,9201
-12302,9807,8806,500000.0,,9003
-12302,9807,8807,0.0,,9003
-12331,9807,8801,29.3,,9110
-12331,9807,8802,-88.5,,9110
-12331,9807,8805,0.99995,,9201
-12331,9807,8806,300000.0,,9001
-12331,9807,8807,0.0,,9001
-12332,9807,8801,29.3,,9110
-12332,9807,8802,-90.2,,9110
-12332,9807,8805,0.99995,,9201
-12332,9807,8806,700000.0,,9001
-12332,9807,8807,0.0,,9001
-12401,9807,8801,35.5,,9110
-12401,9807,8802,-90.3,,9110
-12401,9807,8805,0.999933333,,9201
-12401,9807,8806,500000.0,,9003
-12401,9807,8807,0.0,,9003
-12402,9807,8801,35.5,,9110
-12402,9807,8802,-92.3,,9110
-12402,9807,8805,0.999933333,,9201
-12402,9807,8806,500000.0,,9003
-12402,9807,8807,0.0,,9003
-12403,9807,8801,36.1,,9110
-12403,9807,8802,-94.3,,9110
-12403,9807,8805,0.999941177,,9201
-12403,9807,8806,500000.0,,9003
-12403,9807,8807,0.0,,9003
-12431,9807,8801,35.5,,9110
-12431,9807,8802,-90.3,,9110
-12431,9807,8805,0.999933333,,9201
-12431,9807,8806,250000.0,,9001
-12431,9807,8807,0.0,,9001
-12432,9807,8801,35.5,,9110
-12432,9807,8802,-92.3,,9110
-12432,9807,8805,0.999933333,,9201
-12432,9807,8806,500000.0,,9001
-12432,9807,8807,0.0,,9001
-12433,9807,8801,36.1,,9110
-12433,9807,8802,-94.3,,9110
-12433,9807,8805,0.999941177,,9201
-12433,9807,8806,850000.0,,9001
-12433,9807,8807,0.0,,9001
-12501,9802,8821,47.0,,9110
-12501,9802,8822,-109.3,,9110
-12501,9802,8823,48.43,,9110
-12501,9802,8824,47.51,,9110
-12501,9802,8826,2000000.0,,9003
-12501,9802,8827,0.0,,9003
-12502,9802,8821,45.5,,9110
-12502,9802,8822,-109.3,,9110
-12502,9802,8823,47.53,,9110
-12502,9802,8824,46.27,,9110
-12502,9802,8826,2000000.0,,9003
-12502,9802,8827,0.0,,9003
-12503,9802,8821,44.0,,9110
-12503,9802,8822,-109.3,,9110
-12503,9802,8823,46.24,,9110
-12503,9802,8824,44.52,,9110
-12503,9802,8826,2000000.0,,9003
-12503,9802,8827,0.0,,9003
-12530,9802,8821,44.15,,9110
-12530,9802,8822,-109.3,,9110
-12530,9802,8823,49.0,,9110
-12530,9802,8824,45.0,,9110
-12530,9802,8826,600000.0,,9001
-12530,9802,8827,0.0,,9001
-12601,9802,8821,41.2,,9110
-12601,9802,8822,-100.0,,9110
-12601,9802,8823,41.51,,9110
-12601,9802,8824,42.49,,9110
-12601,9802,8826,2000000.0,,9003
-12601,9802,8827,0.0,,9003
-12602,9802,8821,39.4,,9110
-12602,9802,8822,-99.3,,9110
-12602,9802,8823,40.17,,9110
-12602,9802,8824,41.43,,9110
-12602,9802,8826,2000000.0,,9003
-12602,9802,8827,0.0,,9003
-12630,9802,8821,39.5,,9110
-12630,9802,8822,-100.0,,9110
-12630,9802,8823,43.0,,9110
-12630,9802,8824,40.0,,9110
-12630,9802,8826,500000.0,,9001
-12630,9802,8827,0.0,,9001
-12701,9807,8801,34.45,,9110
-12701,9807,8802,-115.35,,9110
-12701,9807,8805,0.9999,,9201
-12701,9807,8806,500000.0,,9003
-12701,9807,8807,0.0,,9003
-12702,9807,8801,34.45,,9110
-12702,9807,8802,-116.4,,9110
-12702,9807,8805,0.9999,,9201
-12702,9807,8806,500000.0,,9003
-12702,9807,8807,0.0,,9003
-12703,9807,8801,34.45,,9110
-12703,9807,8802,-118.35,,9110
-12703,9807,8805,0.9999,,9201
-12703,9807,8806,500000.0,,9003
-12703,9807,8807,0.0,,9003
-12731,9807,8801,34.45,,9110
-12731,9807,8802,-115.35,,9110
-12731,9807,8805,0.9999,,9201
-12731,9807,8806,200000.0,,9001
-12731,9807,8807,8000000.0,,9001
-12732,9807,8801,34.45,,9110
-12732,9807,8802,-116.4,,9110
-12732,9807,8805,0.9999,,9201
-12732,9807,8806,500000.0,,9001
-12732,9807,8807,6000000.0,,9001
-12733,9807,8801,34.45,,9110
-12733,9807,8802,-118.35,,9110
-12733,9807,8805,0.9999,,9201
-12733,9807,8806,800000.0,,9001
-12733,9807,8807,4000000.0,,9001
-12800,9807,8801,42.3,,9110
-12800,9807,8802,-71.4,,9110
-12800,9807,8805,0.999966667,,9201
-12800,9807,8806,500000.0,,9003
-12800,9807,8807,0.0,,9003
-12830,9807,8801,42.3,,9110
-12830,9807,8802,-71.4,,9110
-12830,9807,8805,0.999966667,,9201
-12830,9807,8806,300000.0,,9001
-12830,9807,8807,0.0,,9001
-12900,9807,8801,38.5,,9110
-12900,9807,8802,-74.4,,9110
-12900,9807,8805,0.999975,,9201
-12900,9807,8806,2000000.0,,9003
-12900,9807,8807,0.0,,9003
-12930,9807,8801,38.5,,9110
-12930,9807,8802,-74.3,,9110
-12930,9807,8805,0.9999,,9201
-12930,9807,8806,150000.0,,9001
-12930,9807,8807,0.0,,9001
-13001,9807,8801,31.0,,9110
-13001,9807,8802,-104.2,,9110
-13001,9807,8805,0.999909091,,9201
-13001,9807,8806,500000.0,,9003
-13001,9807,8807,0.0,,9003
-13002,9807,8801,31.0,,9110
-13002,9807,8802,-106.15,,9110
-13002,9807,8805,0.9999,,9201
-13002,9807,8806,500000.0,,9003
-13002,9807,8807,0.0,,9003
-13003,9807,8801,31.0,,9110
-13003,9807,8802,-107.5,,9110
-13003,9807,8805,0.999916667,,9201
-13003,9807,8806,500000.0,,9003
-13003,9807,8807,0.0,,9003
-13031,9807,8801,31.0,,9110
-13031,9807,8802,-104.2,,9110
-13031,9807,8805,0.999909091,,9201
-13031,9807,8806,165000.0,,9001
-13031,9807,8807,0.0,,9001
-13032,9807,8801,31.0,,9110
-13032,9807,8802,-106.15,,9110
-13032,9807,8805,0.9999,,9201
-13032,9807,8806,500000.0,,9001
-13032,9807,8807,0.0,,9001
-13033,9807,8801,31.0,,9110
-13033,9807,8802,-107.5,,9110
-13033,9807,8805,0.999916667,,9201
-13033,9807,8806,830000.0,,9001
-13033,9807,8807,0.0,,9001
-13101,9807,8801,40.0,,9110
-13101,9807,8802,-74.2,,9110
-13101,9807,8805,0.999966667,,9201
-13101,9807,8806,500000.0,,9003
-13101,9807,8807,0.0,,9003
-13102,9807,8801,40.0,,9110
-13102,9807,8802,-76.35,,9110
-13102,9807,8805,0.9999375,,9201
-13102,9807,8806,500000.0,,9003
-13102,9807,8807,0.0,,9003
-13103,9807,8801,40.0,,9110
-13103,9807,8802,-78.35,,9110
-13103,9807,8805,0.9999375,,9201
-13103,9807,8806,500000.0,,9003
-13103,9807,8807,0.0,,9003
-13104,9802,8821,40.3,,9110
-13104,9802,8822,-74.0,,9110
-13104,9802,8823,41.02,,9110
-13104,9802,8824,40.4,,9110
-13104,9802,8826,1000000.0,,9003
-13104,9802,8827,0.0,,9003
-13131,9807,8801,38.5,,9110
-13131,9807,8802,-74.3,,9110
-13131,9807,8805,0.9999,,9201
-13131,9807,8806,150000.0,,9001
-13131,9807,8807,0.0,,9001
-13132,9807,8801,40.0,,9110
-13132,9807,8802,-76.35,,9110
-13132,9807,8805,0.9999375,,9201
-13132,9807,8806,250000.0,,9001
-13132,9807,8807,0.0,,9001
-13133,9807,8801,40.0,,9110
-13133,9807,8802,-78.35,,9110
-13133,9807,8805,0.9999375,,9201
-13133,9807,8806,350000.0,,9001
-13133,9807,8807,0.0,,9001
-13134,9802,8821,40.1,,9110
-13134,9802,8822,-74.0,,9110
-13134,9802,8823,41.02,,9110
-13134,9802,8824,40.4,,9110
-13134,9802,8826,300000.0,,9001
-13134,9802,8827,0.0,,9001
-13200,9802,8821,33.45,,9110
-13200,9802,8822,-79.0,,9110
-13200,9802,8823,34.2,,9110
-13200,9802,8824,36.1,,9110
-13200,9802,8826,2000000.0,,9003
-13200,9802,8827,0.0,,9003
-13230,9802,8821,33.45,,9110
-13230,9802,8822,-79.0,,9110
-13230,9802,8823,36.1,,9110
-13230,9802,8824,34.2,,9110
-13230,9802,8826,609601.22,,9001
-13230,9802,8827,0.0,,9001
-13301,9802,8821,47.0,,9110
-13301,9802,8822,-100.3,,9110
-13301,9802,8823,47.26,,9110
-13301,9802,8824,48.44,,9110
-13301,9802,8826,2000000.0,,9003
-13301,9802,8827,0.0,,9003
-13302,9802,8821,45.4,,9110
-13302,9802,8822,-100.3,,9110
-13302,9802,8823,46.11,,9110
-13302,9802,8824,47.29,,9110
-13302,9802,8826,2000000.0,,9003
-13302,9802,8827,0.0,,9003
-13331,9802,8821,47.0,,9110
-13331,9802,8822,-100.3,,9110
-13331,9802,8823,48.44,,9110
-13331,9802,8824,47.26,,9110
-13331,9802,8826,600000.0,,9001
-13331,9802,8827,0.0,,9001
-13332,9802,8821,45.4,,9110
-13332,9802,8822,-100.3,,9110
-13332,9802,8823,47.29,,9110
-13332,9802,8824,46.11,,9110
-13332,9802,8826,600000.0,,9001
-13332,9802,8827,0.0,,9001
-13401,9802,8821,39.4,,9110
-13401,9802,8822,-82.3,,9110
-13401,9802,8823,40.26,,9110
-13401,9802,8824,41.42,,9110
-13401,9802,8826,2000000.0,,9003
-13401,9802,8827,0.0,,9003
-13402,9802,8821,38.0,,9110
-13402,9802,8822,-82.3,,9110
-13402,9802,8823,38.44,,9110
-13402,9802,8824,40.02,,9110
-13402,9802,8826,2000000.0,,9003
-13402,9802,8827,0.0,,9003
-13431,9802,8821,39.4,,9110
-13431,9802,8822,-82.3,,9110
-13431,9802,8823,41.42,,9110
-13431,9802,8824,40.26,,9110
-13431,9802,8826,600000.0,,9001
-13431,9802,8827,0.0,,9001
-13432,9802,8821,38.0,,9110
-13432,9802,8822,-82.3,,9110
-13432,9802,8823,40.02,,9110
-13432,9802,8824,38.44,,9110
-13432,9802,8826,600000.0,,9001
-13432,9802,8827,0.0,,9001
-13501,9802,8821,35.0,,9110
-13501,9802,8822,-98.0,,9110
-13501,9802,8823,35.34,,9110
-13501,9802,8824,36.46,,9110
-13501,9802,8826,2000000.0,,9003
-13501,9802,8827,0.0,,9003
-13502,9802,8821,33.2,,9110
-13502,9802,8822,-98.0,,9110
-13502,9802,8823,33.56,,9110
-13502,9802,8824,35.14,,9110
-13502,9802,8826,2000000.0,,9003
-13502,9802,8827,0.0,,9003
-13531,9802,8821,35.0,,9110
-13531,9802,8822,-98.0,,9110
-13531,9802,8823,36.46,,9110
-13531,9802,8824,35.34,,9110
-13531,9802,8826,600000.0,,9001
-13531,9802,8827,0.0,,9001
-13532,9802,8821,33.2,,9110
-13532,9802,8822,-98.0,,9110
-13532,9802,8823,35.14,,9110
-13532,9802,8824,33.56,,9110
-13532,9802,8826,600000.0,,9001
-13532,9802,8827,0.0,,9001
-13601,9802,8821,43.4,,9110
-13601,9802,8822,-120.3,,9110
-13601,9802,8823,44.2,,9110
-13601,9802,8824,46.0,,9110
-13601,9802,8826,2000000.0,,9003
-13601,9802,8827,0.0,,9003
-13602,9802,8821,41.4,,9110
-13602,9802,8822,-120.3,,9110
-13602,9802,8823,42.2,,9110
-13602,9802,8824,44.0,,9110
-13602,9802,8826,2000000.0,,9003
-13602,9802,8827,0.0,,9003
-13631,9802,8821,43.4,,9110
-13631,9802,8822,-120.3,,9110
-13631,9802,8823,46.0,,9110
-13631,9802,8824,44.2,,9110
-13631,9802,8826,2500000.0,,9001
-13631,9802,8827,0.0,,9001
-13632,9802,8821,41.4,,9110
-13632,9802,8822,-120.3,,9110
-13632,9802,8823,44.0,,9110
-13632,9802,8824,42.2,,9110
-13632,9802,8826,1500000.0,,9001
-13632,9802,8827,0.0,,9001
-13701,9802,8821,40.1,,9110
-13701,9802,8822,-77.45,,9110
-13701,9802,8823,40.53,,9110
-13701,9802,8824,41.57,,9110
-13701,9802,8826,2000000.0,,9003
-13701,9802,8827,0.0,,9003
-13702,9802,8821,39.2,,9110
-13702,9802,8822,-77.45,,9110
-13702,9802,8823,39.56,,9110
-13702,9802,8824,40.48,,9110
-13702,9802,8826,2000000.0,,9003
-13702,9802,8827,0.0,,9003
-13731,9802,8821,40.1,,9110
-13731,9802,8822,-77.45,,9110
-13731,9802,8823,41.57,,9110
-13731,9802,8824,40.53,,9110
-13731,9802,8826,600000.0,,9001
-13731,9802,8827,0.0,,9001
-13732,9802,8821,39.2,,9110
-13732,9802,8822,-77.45,,9110
-13732,9802,8823,40.58,,9110
-13732,9802,8824,39.56,,9110
-13732,9802,8826,600000.0,,9001
-13732,9802,8827,0.0,,9001
-13800,9807,8801,41.05,,9110
-13800,9807,8802,-71.3,,9110
-13800,9807,8805,0.9999938,,9201
-13800,9807,8806,500000.0,,9003
-13800,9807,8807,0.0,,9003
-13830,9807,8801,41.05,,9110
-13830,9807,8802,-71.3,,9110
-13830,9807,8805,0.99999375,,9201
-13830,9807,8806,100000.0,,9001
-13830,9807,8807,0.0,,9001
-13901,9802,8821,33.0,,9110
-13901,9802,8822,-81.0,,9110
-13901,9802,8823,33.46,,9110
-13901,9802,8824,34.58,,9110
-13901,9802,8826,2000000.0,,9003
-13901,9802,8827,0.0,,9003
-13902,9802,8821,31.5,,9110
-13902,9802,8822,-81.0,,9110
-13902,9802,8823,32.2,,9110
-13902,9802,8824,33.4,,9110
-13902,9802,8826,2000000.0,,9003
-13902,9802,8827,0.0,,9003
-13930,9802,8821,31.5,,9110
-13930,9802,8822,-81.0,,9110
-13930,9802,8823,34.5,,9110
-13930,9802,8824,32.3,,9110
-13930,9802,8826,609600.0,,9001
-13930,9802,8827,0.0,,9001
-14001,9802,8821,43.5,,9110
-14001,9802,8822,-100.0,,9110
-14001,9802,8823,44.25,,9110
-14001,9802,8824,45.41,,9110
-14001,9802,8826,2000000.0,,9003
-14001,9802,8827,0.0,,9003
-14002,9802,8821,42.2,,9110
-14002,9802,8822,-100.2,,9110
-14002,9802,8823,42.5,,9110
-14002,9802,8824,44.24,,9110
-14002,9802,8826,2000000.0,,9003
-14002,9802,8827,0.0,,9003
-14031,9802,8821,43.5,,9110
-14031,9802,8822,-100.0,,9110
-14031,9802,8823,45.41,,9110
-14031,9802,8824,44.25,,9110
-14031,9802,8826,600000.0,,9001
-14031,9802,8827,0.0,,9001
-14032,9802,8821,42.2,,9110
-14032,9802,8822,-100.2,,9110
-14032,9802,8823,44.24,,9110
-14032,9802,8824,42.5,,9110
-14032,9802,8826,600000.0,,9001
-14032,9802,8827,0.0,,9001
-14100,9802,8821,34.4,,9110
-14100,9802,8822,-86.0,,9110
-14100,9802,8823,35.15,,9110
-14100,9802,8824,36.25,,9110
-14100,9802,8826,100000.0,,9003
-14100,9802,8827,0.0,,9003
-14130,9802,8821,34.2,,9110
-14130,9802,8822,-86.0,,9110
-14130,9802,8823,36.25,,9110
-14130,9802,8824,35.15,,9110
-14130,9802,8826,600000.0,,9001
-14130,9802,8827,0.0,,9001
-14201,9802,8821,34.0,,9110
-14201,9802,8822,-101.3,,9110
-14201,9802,8823,34.39,,9110
-14201,9802,8824,36.11,,9110
-14201,9802,8826,2000000.0,,9003
-14201,9802,8827,0.0,,9003
-14202,9802,8821,31.4,,9110
-14202,9802,8822,-97.3,,9110
-14202,9802,8823,32.08,,9110
-14202,9802,8824,33.58,,9110
-14202,9802,8826,2000000.0,,9003
-14202,9802,8827,0.0,,9003
-14203,9802,8821,29.4,,9110
-14203,9802,8822,-100.2,,9110
-14203,9802,8823,30.07,,9110
-14203,9802,8824,31.53,,9110
-14203,9802,8826,2000000.0,,9003
-14203,9802,8827,0.0,,9003
-14204,9802,8821,27.5,,9110
-14204,9802,8822,-99.0,,9110
-14204,9802,8823,28.23,,9110
-14204,9802,8824,30.17,,9110
-14204,9802,8826,2000000.0,,9003
-14204,9802,8827,0.0,,9003
-14205,9802,8821,25.4,,9110
-14205,9802,8822,-98.3,,9110
-14205,9802,8823,26.1,,9110
-14205,9802,8824,27.5,,9110
-14205,9802,8826,2000000.0,,9003
-14205,9802,8827,0.0,,9003
-14231,9802,8821,34.0,,9110
-14231,9802,8822,-101.3,,9110
-14231,9802,8823,36.11,,9110
-14231,9802,8824,34.39,,9110
-14231,9802,8826,200000.0,,9001
-14231,9802,8827,1000000.0,,9001
-14232,9802,8821,31.4,,9110
-14232,9802,8822,-98.3,,9110
-14232,9802,8823,33.58,,9110
-14232,9802,8824,32.08,,9110
-14232,9802,8826,600000.0,,9001
-14232,9802,8827,2000000.0,,9001
-14233,9802,8821,29.4,,9110
-14233,9802,8822,-100.2,,9110
-14233,9802,8823,31.53,,9110
-14233,9802,8824,30.07,,9110
-14233,9802,8826,700000.0,,9001
-14233,9802,8827,3000000.0,,9001
-14234,9802,8821,27.5,,9110
-14234,9802,8822,-99.0,,9110
-14234,9802,8823,30.17,,9110
-14234,9802,8824,28.23,,9110
-14234,9802,8826,600000.0,,9001
-14234,9802,8827,4000000.0,,9001
-14235,9802,8821,25.4,,9110
-14235,9802,8822,-98.3,,9110
-14235,9802,8823,27.5,,9110
-14235,9802,8824,26.1,,9110
-14235,9802,8826,300000.0,,9001
-14235,9802,8827,5000000.0,,9001
-14301,9802,8821,40.2,,9110
-14301,9802,8822,-111.3,,9110
-14301,9802,8823,40.43,,9110
-14301,9802,8824,41.47,,9110
-14301,9802,8826,2000000.0,,9003
-14301,9802,8827,0.0,,9003
-14302,9802,8821,38.2,,9110
-14302,9802,8822,-111.3,,9110
-14302,9802,8823,39.01,,9110
-14302,9802,8824,40.39,,9110
-14302,9802,8826,2000000.0,,9003
-14302,9802,8827,0.0,,9003
-14303,9802,8821,36.4,,9110
-14303,9802,8822,-111.3,,9110
-14303,9802,8823,37.13,,9110
-14303,9802,8824,38.21,,9110
-14303,9802,8826,2000000.0,,9003
-14303,9802,8827,0.0,,9003
-14331,9802,8821,40.2,,9110
-14331,9802,8822,-111.3,,9110
-14331,9802,8823,41.47,,9110
-14331,9802,8824,40.43,,9110
-14331,9802,8826,500000.0,,9001
-14331,9802,8827,1000000.0,,9001
-14332,9802,8821,38.2,,9110
-14332,9802,8822,-111.3,,9110
-14332,9802,8823,40.39,,9110
-14332,9802,8824,39.01,,9110
-14332,9802,8826,500000.0,,9001
-14332,9802,8827,2000000.0,,9001
-14333,9802,8821,36.4,,9110
-14333,9802,8822,-111.3,,9110
-14333,9802,8823,38.21,,9110
-14333,9802,8824,37.13,,9110
-14333,9802,8826,500000.0,,9001
-14333,9802,8827,3000000.0,,9001
-14400,9807,8801,42.3,,9110
-14400,9807,8802,-72.3,,9110
-14400,9807,8805,0.999964286,,9201
-14400,9807,8806,500000.0,,9003
-14400,9807,8807,0.0,,9003
-14430,9807,8801,42.3,,9110
-14430,9807,8802,-72.3,,9110
-14430,9807,8805,0.999964286,,9201
-14430,9807,8806,500000.0,,9001
-14430,9807,8807,0.0,,9001
-14501,9802,8821,37.4,,9110
-14501,9802,8822,-78.3,,9110
-14501,9802,8823,38.02,,9110
-14501,9802,8824,39.12,,9110
-14501,9802,8826,2000000.0,,9003
-14501,9802,8827,0.0,,9003
-14502,9802,8821,36.2,,9110
-14502,9802,8822,-78.3,,9110
-14502,9802,8823,36.46,,9110
-14502,9802,8824,37.58,,9110
-14502,9802,8826,2000000.0,,9003
-14502,9802,8827,0.0,,9003
-14531,9802,8821,37.4,,9110
-14531,9802,8822,-78.3,,9110
-14531,9802,8823,39.12,,9110
-14531,9802,8824,38.02,,9110
-14531,9802,8826,3500000.0,,9001
-14531,9802,8827,2000000.0,,9001
-14532,9802,8821,36.2,,9110
-14532,9802,8822,-78.3,,9110
-14532,9802,8823,37.58,,9110
-14532,9802,8824,36.46,,9110
-14532,9802,8826,3500000.0,,9001
-14532,9802,8827,1000000.0,,9001
-14601,9802,8821,47.0,,9110
-14601,9802,8822,-120.5,,9110
-14601,9802,8823,47.3,,9110
-14601,9802,8824,48.44,,9110
-14601,9802,8826,2000000.0,,9003
-14601,9802,8827,0.0,,9003
-14602,9802,8821,45.2,,9110
-14602,9802,8822,-120.3,,9110
-14602,9802,8823,45.5,,9110
-14602,9802,8824,47.2,,9110
-14602,9802,8826,2000000.0,,9003
-14602,9802,8827,0.0,,9003
-14631,9802,8821,47.0,,9110
-14631,9802,8822,-120.5,,9110
-14631,9802,8823,48.44,,9110
-14631,9802,8824,47.3,,9110
-14631,9802,8826,500000.0,,9001
-14631,9802,8827,0.0,,9001
-14632,9802,8821,45.2,,9110
-14632,9802,8822,-120.3,,9110
-14632,9802,8823,47.2,,9110
-14632,9802,8824,45.5,,9110
-14632,9802,8826,500000.0,,9001
-14632,9802,8827,0.0,,9001
-14701,9802,8821,38.3,,9110
-14701,9802,8822,-79.3,,9110
-14701,9802,8823,39.0,,9110
-14701,9802,8824,40.15,,9110
-14701,9802,8826,2000000.0,,9003
-14701,9802,8827,0.0,,9003
-14702,9802,8821,37.0,,9110
-14702,9802,8822,-81.0,,9110
-14702,9802,8823,37.29,,9110
-14702,9802,8824,38.53,,9110
-14702,9802,8826,2000000.0,,9003
-14702,9802,8827,0.0,,9003
-14731,9802,8821,38.3,,9110
-14731,9802,8822,-79.3,,9110
-14731,9802,8823,40.15,,9110
-14731,9802,8824,39.0,,9110
-14731,9802,8826,600000.0,,9001
-14731,9802,8827,0.0,,9001
-14732,9802,8821,37.0,,9110
-14732,9802,8822,-81.0,,9110
-14732,9802,8823,38.53,,9110
-14732,9802,8824,37.29,,9110
-14732,9802,8826,600000.0,,9001
-14732,9802,8827,0.0,,9001
-14801,9802,8821,45.1,,9110
-14801,9802,8822,-90.0,,9110
-14801,9802,8823,45.34,,9110
-14801,9802,8824,46.46,,9110
-14801,9802,8826,2000000.0,,9003
-14801,9802,8827,0.0,,9003
-14802,9802,8821,43.5,,9110
-14802,9802,8822,-90.0,,9110
-14802,9802,8823,44.15,,9110
-14802,9802,8824,45.3,,9110
-14802,9802,8826,2000000.0,,9003
-14802,9802,8827,0.0,,9003
-14803,9802,8821,42.0,,9110
-14803,9802,8822,-90.0,,9110
-14803,9802,8823,42.44,,9110
-14803,9802,8824,44.04,,9110
-14803,9802,8826,2000000.0,,9003
-14803,9802,8827,0.0,,9003
-14831,9802,8821,45.1,,9110
-14831,9802,8822,-90.0,,9110
-14831,9802,8823,46.46,,9110
-14831,9802,8824,45.34,,9110
-14831,9802,8826,600000.0,,9001
-14831,9802,8827,0.0,,9001
-14832,9802,8821,43.5,,9110
-14832,9802,8822,-90.0,,9110
-14832,9802,8823,45.3,,9110
-14832,9802,8824,44.15,,9110
-14832,9802,8826,600000.0,,9001
-14832,9802,8827,0.0,,9001
-14833,9802,8821,42.0,,9110
-14833,9802,8822,-90.0,,9110
-14833,9802,8823,44.04,,9110
-14833,9802,8824,42.44,,9110
-14833,9802,8826,600000.0,,9001
-14833,9802,8827,0.0,,9001
-14901,9807,8801,40.4,,9110
-14901,9807,8802,-105.1,,9110
-14901,9807,8805,0.999941177,,9201
-14901,9807,8806,500000.0,,9003
-14901,9807,8807,0.0,,9003
-14902,9807,8801,40.4,,9110
-14902,9807,8802,-107.2,,9110
-14902,9807,8805,0.999941177,,9201
-14902,9807,8806,500000.0,,9003
-14902,9807,8807,0.0,,9003
-14903,9807,8801,40.4,,9110
-14903,9807,8802,-108.45,,9110
-14903,9807,8805,0.999941177,,9201
-14903,9807,8806,500000.0,,9003
-14903,9807,8807,0.0,,9003
-14904,9807,8801,40.4,,9110
-14904,9807,8802,-110.05,,9110
-14904,9807,8805,0.999941177,,9201
-14904,9807,8806,500000.0,,9003
-14904,9807,8807,0.0,,9003
-14931,9807,8801,40.3,,9110
-14931,9807,8802,-105.1,,9110
-14931,9807,8805,0.9999375,,9201
-14931,9807,8806,200000.0,,9001
-14931,9807,8807,0.0,,9001
-14932,9807,8801,40.3,,9110
-14932,9807,8802,-107.2,,9110
-14932,9807,8805,0.9999375,,9201
-14932,9807,8806,400000.0,,9001
-14932,9807,8807,100000.0,,9001
-14933,9807,8801,40.3,,9110
-14933,9807,8802,-108.45,,9110
-14933,9807,8805,0.9999375,,9201
-14933,9807,8806,600000.0,,9001
-14933,9807,8807,0.0,,9001
-14934,9807,8801,40.3,,9110
-14934,9807,8802,-110.05,,9110
-14934,9807,8805,0.9999375,,9201
-14934,9807,8806,800000.0,,9001
-14934,9807,8807,100000.0,,9001
-15001,9812,8806,16404166.67,,9003
-15001,9812,8807,-16404166.67,,9003
-15001,9812,8811,57.0,,9110
-15001,9812,8812,-133.4,,9110
-15001,9812,8813,323.07483685,,9110
-15001,9812,8814,323.07483685,,9110
-15001,9812,8815,0.9999,,9201
-15002,9807,8801,54.0,,9102
-15002,9807,8802,-142.0,,9102
-15002,9807,8805,0.9999,,9201
-15002,9807,8806,500000.0,,9003
-15002,9807,8807,0.0,,9003
-15003,9807,8801,54.0,,9102
-15003,9807,8802,-146.0,,9102
-15003,9807,8805,0.9999,,9201
-15003,9807,8806,500000.0,,9003
-15003,9807,8807,0.0,,9003
-15004,9807,8801,54.0,,9102
-15004,9807,8802,-150.0,,9102
-15004,9807,8805,0.9999,,9201
-15004,9807,8806,500000.0,,9003
-15004,9807,8807,0.0,,9003
-15005,9807,8801,54.0,,9102
-15005,9807,8802,-154.0,,9102
-15005,9807,8805,0.9999,,9201
-15005,9807,8806,500000.0,,9003
-15005,9807,8807,0.0,,9003
-15006,9807,8801,54.0,,9102
-15006,9807,8802,-158.0,,9102
-15006,9807,8805,0.9999,,9201
-15006,9807,8806,500000.0,,9003
-15006,9807,8807,0.0,,9003
-15007,9807,8801,54.0,,9102
-15007,9807,8802,-162.0,,9102
-15007,9807,8805,0.9999,,9201
-15007,9807,8806,700000.0,,9003
-15007,9807,8807,0.0,,9003
-15008,9807,8801,54.0,,9102
-15008,9807,8802,-166.0,,9102
-15008,9807,8805,0.9999,,9201
-15008,9807,8806,500000.0,,9003
-15008,9807,8807,0.0,,9003
-15009,9807,8801,54.0,,9102
-15009,9807,8802,-170.0,,9102
-15009,9807,8805,0.9999,,9201
-15009,9807,8806,600000.0,,9003
-15009,9807,8807,0.0,,9003
-15010,9802,8821,51.0,,9110
-15010,9802,8822,-176.0,,9110
-15010,9802,8823,53.5,,9110
-15010,9802,8824,51.5,,9110
-15010,9802,8826,3000000.0,,9003
-15010,9802,8827,0.0,,9003
-15031,9812,8806,5000000.0,,9001
-15031,9812,8807,-5000000.0,,9001
-15031,9812,8811,57.0,,9110
-15031,9812,8812,-133.4,,9110
-15031,9812,8813,323.07483685,,9110
-15031,9812,8814,323.07483685,,9110
-15031,9812,8815,0.9999,,9201
-15032,9807,8801,54.0,,9102
-15032,9807,8802,-142.0,,9102
-15032,9807,8805,0.9999,,9201
-15032,9807,8806,500000.0,,9001
-15032,9807,8807,0.0,,9001
-15033,9807,8801,54.0,,9102
-15033,9807,8802,-146.0,,9102
-15033,9807,8805,0.9999,,9201
-15033,9807,8806,500000.0,,9001
-15033,9807,8807,0.0,,9001
-15034,9807,8801,54.0,,9102
-15034,9807,8802,-150.0,,9102
-15034,9807,8805,0.9999,,9201
-15034,9807,8806,500000.0,,9001
-15034,9807,8807,0.0,,9001
-15035,9807,8801,54.0,,9102
-15035,9807,8802,-154.0,,9102
-15035,9807,8805,0.9999,,9201
-15035,9807,8806,500000.0,,9001
-15035,9807,8807,0.0,,9001
-15036,9807,8801,54.0,,9102
-15036,9807,8802,-158.0,,9102
-15036,9807,8805,0.9999,,9201
-15036,9807,8806,500000.0,,9001
-15036,9807,8807,0.0,,9001
-15037,9807,8801,54.0,,9102
-15037,9807,8802,-162.0,,9102
-15037,9807,8805,0.9999,,9201
-15037,9807,8806,500000.0,,9001
-15037,9807,8807,0.0,,9001
-15038,9807,8801,54.0,,9102
-15038,9807,8802,-166.0,,9102
-15038,9807,8805,0.9999,,9201
-15038,9807,8806,500000.0,,9001
-15038,9807,8807,0.0,,9001
-15039,9807,8801,54.0,,9102
-15039,9807,8802,-170.0,,9102
-15039,9807,8805,0.9999,,9201
-15039,9807,8806,500000.0,,9001
-15039,9807,8807,0.0,,9001
-15040,9802,8821,51.0,,9110
-15040,9802,8822,-176.0,,9110
-15040,9802,8823,53.5,,9110
-15040,9802,8824,51.5,,9110
-15040,9802,8826,1000000.0,,9001
-15040,9802,8827,0.0,,9001
-15101,9807,8801,18.5,,9110
-15101,9807,8802,-155.3,,9110
-15101,9807,8805,0.999966667,,9201
-15101,9807,8806,500000.0,,9003
-15101,9807,8807,0.0,,9003
-15102,9807,8801,20.2,,9110
-15102,9807,8802,-156.4,,9110
-15102,9807,8805,0.999966667,,9201
-15102,9807,8806,500000.0,,9003
-15102,9807,8807,0.0,,9003
-15103,9807,8801,21.1,,9110
-15103,9807,8802,-158.0,,9110
-15103,9807,8805,0.99999,,9201
-15103,9807,8806,500000.0,,9003
-15103,9807,8807,0.0,,9003
-15104,9807,8801,21.5,,9110
-15104,9807,8802,-159.3,,9110
-15104,9807,8805,0.99999,,9201
-15104,9807,8806,500000.0,,9003
-15104,9807,8807,0.0,,9003
-15105,9807,8801,21.4,,9110
-15105,9807,8802,-160.1,,9110
-15105,9807,8805,1.0,,9201
-15105,9807,8806,500000.0,,9003
-15105,9807,8807,0.0,,9003
-15131,9807,8801,18.5,,9110
-15131,9807,8802,-155.3,,9110
-15131,9807,8805,0.999966667,,9201
-15131,9807,8806,500000.0,,9001
-15131,9807,8807,0.0,,9001
-15132,9807,8801,20.2,,9110
-15132,9807,8802,-156.4,,9110
-15132,9807,8805,0.999966667,,9201
-15132,9807,8806,500000.0,,9001
-15132,9807,8807,0.0,,9001
-15133,9807,8801,21.1,,9110
-15133,9807,8802,-158.0,,9110
-15133,9807,8805,0.99999,,9201
-15133,9807,8806,500000.0,,9001
-15133,9807,8807,0.0,,9001
-15134,9807,8801,21.5,,9110
-15134,9807,8802,-159.3,,9110
-15134,9807,8805,0.99999,,9201
-15134,9807,8806,500000.0,,9001
-15134,9807,8807,0.0,,9001
-15135,9807,8801,21.4,,9110
-15135,9807,8802,-160.1,,9110
-15135,9807,8805,1.0,,9201
-15135,9807,8806,500000.0,,9001
-15135,9807,8807,0.0,,9001
-15201,9802,8821,17.5,,9110
-15201,9802,8822,-66.26,,9110
-15201,9802,8823,18.26,,9110
-15201,9802,8824,18.02,,9110
-15201,9802,8826,500000.0,,9003
-15201,9802,8827,0.0,,9003
-15202,9802,8821,17.5,,9110
-15202,9802,8822,-66.26,,9110
-15202,9802,8823,18.26,,9110
-15202,9802,8824,18.02,,9110
-15202,9802,8826,500000.0,,9003
-15202,9802,8827,100000.0,,9003
-15230,9802,8821,17.5,,9110
-15230,9802,8822,-66.26,,9110
-15230,9802,8823,18.26,,9110
-15230,9802,8824,18.02,,9110
-15230,9802,8826,200000.0,,9001
-15230,9802,8827,200000.0,,9001
-15300,9801,8801,-14.16,,9110
-15300,9801,8802,170.0,,9110
-15300,9801,8805,1.0,,9201
-15300,9801,8806,500000.0,,9003
-15300,9801,8807,0.0,,9003
-15301,9801,8801,-14.16,,9110
-15301,9801,8802,-170.0,,9110
-15301,9801,8805,1.0,,9201
-15301,9801,8806,500000.0,,9003
-15301,9801,8807,0.0,,9003
-15302,9802,8821,34.4,,9110
-15302,9802,8822,-86.0,,9110
-15302,9802,8823,35.15,,9110
-15302,9802,8824,36.25,,9110
-15302,9802,8826,2000000.0,,9003
-15302,9802,8827,100000.0,,9003
-15303,9802,8821,37.3,,9110
-15303,9802,8822,-84.15,,9110
-15303,9802,8823,37.58,,9110
-15303,9802,8824,38.58,,9110
-15303,9802,8826,500000.0,,9001
-15303,9802,8827,0.0,,9001
-15304,9807,8801,31.0,,9110
-15304,9807,8802,-110.1,,9110
-15304,9807,8805,0.9999,,9201
-15304,9807,8806,700000.0,,9002
-15304,9807,8807,0.0,,9002
-15305,9807,8801,31.0,,9110
-15305,9807,8802,-111.55,,9110
-15305,9807,8805,0.9999,,9201
-15305,9807,8806,700000.0,,9002
-15305,9807,8807,0.0,,9002
-15306,9807,8801,31.0,,9110
-15306,9807,8802,-113.45,,9110
-15306,9807,8805,0.999933333,,9201
-15306,9807,8806,700000.0,,9002
-15306,9807,8807,0.0,,9002
-15307,9802,8821,39.2,,9110
-15307,9802,8822,-122.0,,9110
-15307,9802,8823,41.4,,9110
-15307,9802,8824,40.0,,9110
-15307,9802,8826,6561666.667,,9003
-15307,9802,8827,1640416.667,,9003
-15308,9802,8821,37.4,,9110
-15308,9802,8822,-122.0,,9110
-15308,9802,8823,39.5,,9110
-15308,9802,8824,38.2,,9110
-15308,9802,8826,6561666.667,,9003
-15308,9802,8827,1640416.667,,9003
-15309,9802,8821,36.3,,9110
-15309,9802,8822,-120.3,,9110
-15309,9802,8823,38.26,,9110
-15309,9802,8824,37.04,,9110
-15309,9802,8826,6561666.667,,9003
-15309,9802,8827,1640416.667,,9003
-15310,9802,8821,35.2,,9110
-15310,9802,8822,-119.0,,9110
-15310,9802,8823,37.15,,9110
-15310,9802,8824,36.0,,9110
-15310,9802,8826,6561666.667,,9003
-15310,9802,8827,1640416.667,,9003
-15311,9802,8821,33.3,,9110
-15311,9802,8822,-118.0,,9110
-15311,9802,8823,35.28,,9110
-15311,9802,8824,34.02,,9110
-15311,9802,8826,6561666.667,,9003
-15311,9802,8827,1640416.667,,9003
-15312,9802,8821,32.1,,9110
-15312,9802,8822,-116.15,,9110
-15312,9802,8823,33.53,,9110
-15312,9802,8824,32.47,,9110
-15312,9802,8826,6561666.667,,9003
-15312,9802,8827,1640416.667,,9003
-15313,9802,8821,39.2,,9110
-15313,9802,8822,-105.3,,9110
-15313,9802,8823,40.47,,9110
-15313,9802,8824,39.43,,9110
-15313,9802,8826,3000000.0,,9003
-15313,9802,8827,1000000.0,,9003
-15314,9802,8821,37.5,,9110
-15314,9802,8822,-105.3,,9110
-15314,9802,8823,39.45,,9110
-15314,9802,8824,38.27,,9110
-15314,9802,8826,3000000.0,,9003
-15314,9802,8827,1000000.0,,9003
-15315,9802,8821,36.4,,9110
-15315,9802,8822,-105.3,,9110
-15315,9802,8823,38.26,,9110
-15315,9802,8824,37.14,,9110
-15315,9802,8826,3000000.0,,9003
-15315,9802,8827,1000000.0,,9003
-15316,9802,8821,40.5,,9110
-15316,9802,8822,-72.45,,9110
-15316,9802,8823,41.52,,9110
-15316,9802,8824,41.12,,9110
-15316,9802,8826,1000000.0,,9003
-15316,9802,8827,500000.0,,9003
-15317,9807,8801,38.0,,9110
-15317,9807,8802,-75.25,,9110
-15317,9807,8805,0.999995,,9201
-15317,9807,8806,656166.667,,9003
-15317,9807,8807,0.0,,9003
-15318,9807,8801,24.2,,9110
-15318,9807,8802,-81.0,,9110
-15318,9807,8805,0.999941177,,9201
-15318,9807,8806,656166.667,,9003
-15318,9807,8807,0.0,,9003
-15319,9807,8801,24.2,,9110
-15319,9807,8802,-82.0,,9110
-15319,9807,8805,0.999941177,,9201
-15319,9807,8806,656166.667,,9003
-15319,9807,8807,0.0,,9003
-15320,9802,8821,29.0,,9110
-15320,9802,8822,-84.3,,9110
-15320,9802,8823,30.45,,9110
-15320,9802,8824,29.35,,9110
-15320,9802,8826,1968500.0,,9003
-15320,9802,8827,0.0,,9003
-15321,9807,8801,30.0,,9110
-15321,9807,8802,-82.1,,9110
-15321,9807,8805,0.9999,,9201
-15321,9807,8806,656166.667,,9003
-15321,9807,8807,0.0,,9003
-15322,9807,8801,30.0,,9110
-15322,9807,8802,-84.1,,9110
-15322,9807,8805,0.9999,,9201
-15322,9807,8806,2296583.333,,9003
-15322,9807,8807,0.0,,9003
-15323,9807,8801,41.4,,9110
-15323,9807,8802,-112.1,,9110
-15323,9807,8805,0.999947368,,9201
-15323,9807,8806,656166.667,,9003
-15323,9807,8807,0.0,,9003
-15324,9807,8801,41.4,,9110
-15324,9807,8802,-114.0,,9110
-15324,9807,8805,0.999947368,,9201
-15324,9807,8806,1640416.667,,9003
-15324,9807,8807,0.0,,9003
-15325,9807,8801,41.4,,9110
-15325,9807,8802,-115.45,,9110
-15325,9807,8805,0.999933333,,9201
-15325,9807,8806,2624666.667,,9003
-15325,9807,8807,0.0,,9003
-15326,9807,8801,37.3,,9110
-15326,9807,8802,-85.4,,9110
-15326,9807,8805,0.999966667,,9201
-15326,9807,8806,328083.333,,9003
-15326,9807,8807,818125.0,,9003
-15327,9807,8801,37.3,,9110
-15327,9807,8802,-87.05,,9110
-15327,9807,8805,0.999966667,,9201
-15327,9807,8806,2952750.0,,9003
-15327,9807,8807,818125.0,,9003
-15328,9802,8821,37.3,,9110
-15328,9802,8822,-84.15,,9110
-15328,9802,8823,37.58,,9110
-15328,9802,8824,38.58,,9110
-15328,9802,8826,1640416.667,,9003
-15328,9802,8827,0.0,,9003
-15329,9802,8821,36.2,,9110
-15329,9802,8822,-85.45,,9110
-15329,9802,8823,37.56,,9110
-15329,9802,8824,36.44,,9110
-15329,9802,8826,1640416.667,,9003
-15329,9802,8827,1640416.667,,9003
-15330,9802,8821,37.4,,9110
-15330,9802,8822,-77.0,,9110
-15330,9802,8823,39.27,,9110
-15330,9802,8824,38.18,,9110
-15330,9802,8826,1312333.333,,9003
-15330,9802,8827,0.0,,9003
-15331,9802,8821,41.0,,9110
-15331,9802,8822,-71.3,,9110
-15331,9802,8823,42.41,,9110
-15331,9802,8824,41.43,,9110
-15331,9802,8826,656166.667,,9003
-15331,9802,8827,2460625.0,,9003
-15332,9802,8821,41.0,,9110
-15332,9802,8822,-70.3,,9110
-15332,9802,8823,41.29,,9110
-15332,9802,8824,41.17,,9110
-15332,9802,8826,1640416.667,,9003
-15332,9802,8827,0.0,,9003
-15333,9802,8821,44.47,,9110
-15333,9802,8822,-87.0,,9110
-15333,9802,8823,47.05,,9110
-15333,9802,8824,45.29,,9110
-15333,9802,8826,26246719.16,,9002
-15333,9802,8827,0.0,,9002
-15334,9802,8821,43.19,,9110
-15334,9802,8822,-84.22,,9110
-15334,9802,8823,45.42,,9110
-15334,9802,8824,44.11,,9110
-15334,9802,8826,19685039.37,,9002
-15334,9802,8827,0.0,,9002
-15335,9802,8821,41.3,,9110
-15335,9802,8822,-84.22,,9110
-15335,9802,8823,43.4,,9110
-15335,9802,8824,42.06,,9110
-15335,9802,8826,13123359.58,,9002
-15335,9802,8827,0.0,,9002
-15336,9807,8801,29.3,,9110
-15336,9807,8802,-88.5,,9110
-15336,9807,8805,0.99995,,9201
-15336,9807,8806,984250.0,,9003
-15336,9807,8807,0.0,,9003
-15337,9807,8801,29.3,,9110
-15337,9807,8802,-90.2,,9110
-15337,9807,8805,0.99995,,9201
-15337,9807,8806,2296583.333,,9003
-15337,9807,8807,0.0,,9003
-15338,9802,8821,44.15,,9110
-15338,9802,8822,-109.3,,9110
-15338,9802,8823,49.0,,9110
-15338,9802,8824,45.0,,9110
-15338,9802,8826,1968503.937,,9002
-15338,9802,8827,0.0,,9002
-15339,9807,8801,31.0,,9110
-15339,9807,8802,-104.2,,9110
-15339,9807,8805,0.999909091,,9201
-15339,9807,8806,541337.5,,9003
-15339,9807,8807,0.0,,9003
-15340,9807,8801,31.0,,9110
-15340,9807,8802,-106.15,,9110
-15340,9807,8805,0.9999,,9201
-15340,9807,8806,1640416.667,,9003
-15340,9807,8807,0.0,,9003
-15341,9807,8801,31.0,,9110
-15341,9807,8802,-107.5,,9110
-15341,9807,8805,0.999916667,,9201
-15341,9807,8806,2723091.667,,9003
-15341,9807,8807,0.0,,9003
-15342,9807,8801,38.5,,9110
-15342,9807,8802,-74.3,,9110
-15342,9807,8805,0.9999,,9201
-15342,9807,8806,492125.0,,9003
-15342,9807,8807,0.0,,9003
-15343,9807,8801,40.0,,9110
-15343,9807,8802,-76.35,,9110
-15343,9807,8805,0.9999375,,9201
-15343,9807,8806,820208.333,,9003
-15343,9807,8807,0.0,,9003
-15344,9807,8801,40.0,,9110
-15344,9807,8802,-78.35,,9110
-15344,9807,8805,0.9999375,,9201
-15344,9807,8806,1148291.667,,9003
-15344,9807,8807,0.0,,9003
-15345,9802,8821,40.1,,9110
-15345,9802,8822,-74.0,,9110
-15345,9802,8823,41.02,,9110
-15345,9802,8824,40.4,,9110
-15345,9802,8826,984250.0,,9003
-15345,9802,8827,0.0,,9003
-15346,9802,8821,33.45,,9110
-15346,9802,8822,-79.0,,9110
-15346,9802,8823,36.1,,9110
-15346,9802,8824,34.2,,9110
-15346,9802,8826,2000000.0,,9003
-15346,9802,8827,0.0,,9003
-15347,9802,8821,47.0,,9110
-15347,9802,8822,-100.3,,9110
-15347,9802,8823,48.44,,9110
-15347,9802,8824,47.26,,9110
-15347,9802,8826,1968503.937,,9002
-15347,9802,8827,0.0,,9002
-15348,9802,8821,45.4,,9110
-15348,9802,8822,-100.3,,9110
-15348,9802,8823,47.29,,9110
-15348,9802,8824,46.11,,9110
-15348,9802,8826,1968503.937,,9002
-15348,9802,8827,0.0,,9002
-15349,9802,8821,35.0,,9110
-15349,9802,8822,-98.0,,9110
-15349,9802,8823,36.46,,9110
-15349,9802,8824,35.34,,9110
-15349,9802,8826,1968500.0,,9003
-15349,9802,8827,0.0,,9003
-15350,9802,8821,33.2,,9110
-15350,9802,8822,-98.0,,9110
-15350,9802,8823,35.14,,9110
-15350,9802,8824,33.56,,9110
-15350,9802,8826,1968500.0,,9003
-15350,9802,8827,0.0,,9003
-15351,9802,8821,43.4,,9110
-15351,9802,8822,-120.3,,9110
-15351,9802,8823,46.0,,9110
-15351,9802,8824,44.2,,9110
-15351,9802,8826,8202099.738,,9002
-15351,9802,8827,0.0,,9002
-15352,9802,8821,41.4,,9110
-15352,9802,8822,-120.3,,9110
-15352,9802,8823,44.0,,9110
-15352,9802,8824,42.2,,9110
-15352,9802,8826,4921259.843,,9002
-15352,9802,8827,0.0,,9002
-15353,9802,8821,40.1,,9110
-15353,9802,8822,-77.45,,9110
-15353,9802,8823,41.57,,9110
-15353,9802,8824,40.53,,9110
-15353,9802,8826,1968500.0,,9003
-15353,9802,8827,0.0,,9003
-15354,9802,8821,39.2,,9110
-15354,9802,8822,-77.45,,9110
-15354,9802,8823,40.58,,9110
-15354,9802,8824,39.56,,9110
-15354,9802,8826,1968500.0,,9003
-15354,9802,8827,0.0,,9003
-15355,9802,8821,31.5,,9110
-15355,9802,8822,-81.0,,9110
-15355,9802,8823,34.5,,9110
-15355,9802,8824,32.3,,9110
-15355,9802,8826,2000000.0,,9002
-15355,9802,8827,0.0,,9002
-15356,9802,8821,34.2,,9110
-15356,9802,8822,-86.0,,9110
-15356,9802,8823,36.25,,9110
-15356,9802,8824,35.15,,9110
-15356,9802,8826,1968500.0,,9003
-15356,9802,8827,0.0,,9003
-15357,9802,8821,34.0,,9110
-15357,9802,8822,-101.3,,9110
-15357,9802,8823,36.11,,9110
-15357,9802,8824,34.39,,9110
-15357,9802,8826,656166.667,,9003
-15357,9802,8827,3280833.333,,9003
-15358,9802,8821,31.4,,9110
-15358,9802,8822,-98.3,,9110
-15358,9802,8823,33.58,,9110
-15358,9802,8824,32.08,,9110
-15358,9802,8826,1968500.0,,9003
-15358,9802,8827,6561666.667,,9003
-15359,9802,8821,29.4,,9110
-15359,9802,8822,-100.2,,9110
-15359,9802,8823,31.53,,9110
-15359,9802,8824,30.07,,9110
-15359,9802,8826,2296583.333,,9003
-15359,9802,8827,9842500.0,,9003
-15360,9802,8821,27.5,,9110
-15360,9802,8822,-99.0,,9110
-15360,9802,8823,30.17,,9110
-15360,9802,8824,28.23,,9110
-15360,9802,8826,1968500.0,,9003
-15360,9802,8827,13123333.333,,9003
-15361,9802,8821,25.4,,9110
-15361,9802,8822,-98.3,,9110
-15361,9802,8823,27.5,,9110
-15361,9802,8824,26.1,,9110
-15361,9802,8826,984250.0,,9003
-15361,9802,8827,16404166.667,,9003
-15362,9802,8821,40.2,,9110
-15362,9802,8822,-111.3,,9110
-15362,9802,8823,41.47,,9110
-15362,9802,8824,40.43,,9110
-15362,9802,8826,1640419.948,,9002
-15362,9802,8827,3280839.895,,9002
-15363,9802,8821,38.2,,9110
-15363,9802,8822,-111.3,,9110
-15363,9802,8823,40.39,,9110
-15363,9802,8824,39.01,,9110
-15363,9802,8826,1640419.948,,9002
-15363,9802,8827,6561679.79,,9002
-15364,9802,8821,36.4,,9110
-15364,9802,8822,-111.3,,9110
-15364,9802,8823,38.21,,9110
-15364,9802,8824,37.13,,9110
-15364,9802,8826,1640419.948,,9002
-15364,9802,8827,9842519.685,,9002
-15365,9802,8821,37.4,,9110
-15365,9802,8822,-78.3,,9110
-15365,9802,8823,39.12,,9110
-15365,9802,8824,38.02,,9110
-15365,9802,8826,11482916.667,,9003
-15365,9802,8827,6561666.667,,9003
-15366,9802,8821,36.2,,9110
-15366,9802,8822,-78.3,,9110
-15366,9802,8823,37.58,,9110
-15366,9802,8824,36.46,,9110
-15366,9802,8826,11482916.667,,9003
-15366,9802,8827,3280833.333,,9003
-15367,9802,8821,47.0,,9110
-15367,9802,8822,-120.5,,9110
-15367,9802,8823,48.44,,9110
-15367,9802,8824,47.3,,9110
-15367,9802,8826,1640416.667,,9003
-15367,9802,8827,0.0,,9003
-15368,9802,8821,45.2,,9110
-15368,9802,8822,-120.3,,9110
-15368,9802,8823,47.2,,9110
-15368,9802,8824,45.5,,9110
-15368,9802,8826,1640416.667,,9003
-15368,9802,8827,0.0,,9003
-15369,9802,8821,45.1,,9110
-15369,9802,8822,-90.0,,9110
-15369,9802,8823,46.46,,9110
-15369,9802,8824,45.34,,9110
-15369,9802,8826,1968500.0,,9003
-15369,9802,8827,0.0,,9003
-15370,9802,8821,43.5,,9110
-15370,9802,8822,-90.0,,9110
-15370,9802,8823,45.3,,9110
-15370,9802,8824,44.15,,9110
-15370,9802,8826,1968500.0,,9003
-15370,9802,8827,0.0,,9003
-15371,9802,8821,42.0,,9110
-15371,9802,8822,-90.0,,9110
-15371,9802,8823,44.04,,9110
-15371,9802,8824,42.44,,9110
-15371,9802,8826,1968500.0,,9003
-15371,9802,8827,0.0,,9003
-15914,9807,8801,0.0,,9102
-15914,9807,8802,-99.0,,9102
-15914,9807,8805,0.9996,,9201
-15914,9807,8806,1640416.67,,9003
-15914,9807,8807,0.0,,9003
-15915,9807,8801,0.0,,9102
-15915,9807,8802,-93.0,,9102
-15915,9807,8805,0.9996,,9201
-15915,9807,8806,1640416.67,,9003
-15915,9807,8807,0.0,,9003
-15916,9807,8801,0.0,,9102
-15916,9807,8802,-87.0,,9102
-15916,9807,8805,0.9996,,9201
-15916,9807,8806,1640416.67,,9003
-15916,9807,8807,0.0,,9003
-15917,9807,8801,0.0,,9102
-15917,9807,8802,-81.0,,9102
-15917,9807,8805,0.9996,,9201
-15917,9807,8806,1640416.67,,9003
-15917,9807,8807,0.0,,9003
-16000,9824,8801,0.0,,9102
-16000,9824,8805,0.9996,,9201
-16000,9824,8806,500000.0,,9001
-16000,9824,8807,0.0,,9001
-16000,9824,8830,-180.0,,9102
-16000,9824,8831,6.0,,9102
-16001,9807,8801,0.0,,9102
-16001,9807,8802,-177.0,,9102
-16001,9807,8805,0.9996,,9201
-16001,9807,8806,500000.0,,9001
-16001,9807,8807,0.0,,9001
-16002,9807,8801,0.0,,9102
-16002,9807,8802,-171.0,,9102
-16002,9807,8805,0.9996,,9201
-16002,9807,8806,500000.0,,9001
-16002,9807,8807,0.0,,9001
-16003,9807,8801,0.0,,9102
-16003,9807,8802,-165.0,,9102
-16003,9807,8805,0.9996,,9201
-16003,9807,8806,500000.0,,9001
-16003,9807,8807,0.0,,9001
-16004,9807,8801,0.0,,9102
-16004,9807,8802,-159.0,,9102
-16004,9807,8805,0.9996,,9201
-16004,9807,8806,500000.0,,9001
-16004,9807,8807,0.0,,9001
-16005,9807,8801,0.0,,9102
-16005,9807,8802,-153.0,,9102
-16005,9807,8805,0.9996,,9201
-16005,9807,8806,500000.0,,9001
-16005,9807,8807,0.0,,9001
-16006,9807,8801,0.0,,9102
-16006,9807,8802,-147.0,,9102
-16006,9807,8805,0.9996,,9201
-16006,9807,8806,500000.0,,9001
-16006,9807,8807,0.0,,9001
-16007,9807,8801,0.0,,9102
-16007,9807,8802,-141.0,,9102
-16007,9807,8805,0.9996,,9201
-16007,9807,8806,500000.0,,9001
-16007,9807,8807,0.0,,9001
-16008,9807,8801,0.0,,9102
-16008,9807,8802,-135.0,,9102
-16008,9807,8805,0.9996,,9201
-16008,9807,8806,500000.0,,9001
-16008,9807,8807,0.0,,9001
-16009,9807,8801,0.0,,9102
-16009,9807,8802,-129.0,,9102
-16009,9807,8805,0.9996,,9201
-16009,9807,8806,500000.0,,9001
-16009,9807,8807,0.0,,9001
-16010,9807,8801,0.0,,9102
-16010,9807,8802,-123.0,,9102
-16010,9807,8805,0.9996,,9201
-16010,9807,8806,500000.0,,9001
-16010,9807,8807,0.0,,9001
-16011,9807,8801,0.0,,9102
-16011,9807,8802,-117.0,,9102
-16011,9807,8805,0.9996,,9201
-16011,9807,8806,500000.0,,9001
-16011,9807,8807,0.0,,9001
-16012,9807,8801,0.0,,9102
-16012,9807,8802,-111.0,,9102
-16012,9807,8805,0.9996,,9201
-16012,9807,8806,500000.0,,9001
-16012,9807,8807,0.0,,9001
-16013,9807,8801,0.0,,9102
-16013,9807,8802,-105.0,,9102
-16013,9807,8805,0.9996,,9201
-16013,9807,8806,500000.0,,9001
-16013,9807,8807,0.0,,9001
-16014,9807,8801,0.0,,9102
-16014,9807,8802,-99.0,,9102
-16014,9807,8805,0.9996,,9201
-16014,9807,8806,500000.0,,9001
-16014,9807,8807,0.0,,9001
-16015,9807,8801,0.0,,9102
-16015,9807,8802,-93.0,,9102
-16015,9807,8805,0.9996,,9201
-16015,9807,8806,500000.0,,9001
-16015,9807,8807,0.0,,9001
-16016,9807,8801,0.0,,9102
-16016,9807,8802,-87.0,,9102
-16016,9807,8805,0.9996,,9201
-16016,9807,8806,500000.0,,9001
-16016,9807,8807,0.0,,9001
-16017,9807,8801,0.0,,9102
-16017,9807,8802,-81.0,,9102
-16017,9807,8805,0.9996,,9201
-16017,9807,8806,500000.0,,9001
-16017,9807,8807,0.0,,9001
-16018,9807,8801,0.0,,9102
-16018,9807,8802,-75.0,,9102
-16018,9807,8805,0.9996,,9201
-16018,9807,8806,500000.0,,9001
-16018,9807,8807,0.0,,9001
-16019,9807,8801,0.0,,9102
-16019,9807,8802,-69.0,,9102
-16019,9807,8805,0.9996,,9201
-16019,9807,8806,500000.0,,9001
-16019,9807,8807,0.0,,9001
-16020,9807,8801,0.0,,9102
-16020,9807,8802,-63.0,,9102
-16020,9807,8805,0.9996,,9201
-16020,9807,8806,500000.0,,9001
-16020,9807,8807,0.0,,9001
-16021,9807,8801,0.0,,9102
-16021,9807,8802,-57.0,,9102
-16021,9807,8805,0.9996,,9201
-16021,9807,8806,500000.0,,9001
-16021,9807,8807,0.0,,9001
-16022,9807,8801,0.0,,9102
-16022,9807,8802,-51.0,,9102
-16022,9807,8805,0.9996,,9201
-16022,9807,8806,500000.0,,9001
-16022,9807,8807,0.0,,9001
-16023,9807,8801,0.0,,9102
-16023,9807,8802,-45.0,,9102
-16023,9807,8805,0.9996,,9201
-16023,9807,8806,500000.0,,9001
-16023,9807,8807,0.0,,9001
-16024,9807,8801,0.0,,9102
-16024,9807,8802,-39.0,,9102
-16024,9807,8805,0.9996,,9201
-16024,9807,8806,500000.0,,9001
-16024,9807,8807,0.0,,9001
-16025,9807,8801,0.0,,9102
-16025,9807,8802,-33.0,,9102
-16025,9807,8805,0.9996,,9201
-16025,9807,8806,500000.0,,9001
-16025,9807,8807,0.0,,9001
-16026,9807,8801,0.0,,9102
-16026,9807,8802,-27.0,,9102
-16026,9807,8805,0.9996,,9201
-16026,9807,8806,500000.0,,9001
-16026,9807,8807,0.0,,9001
-16027,9807,8801,0.0,,9102
-16027,9807,8802,-21.0,,9102
-16027,9807,8805,0.9996,,9201
-16027,9807,8806,500000.0,,9001
-16027,9807,8807,0.0,,9001
-16028,9807,8801,0.0,,9102
-16028,9807,8802,-15.0,,9102
-16028,9807,8805,0.9996,,9201
-16028,9807,8806,500000.0,,9001
-16028,9807,8807,0.0,,9001
-16029,9807,8801,0.0,,9102
-16029,9807,8802,-9.0,,9102
-16029,9807,8805,0.9996,,9201
-16029,9807,8806,500000.0,,9001
-16029,9807,8807,0.0,,9001
-16030,9807,8801,0.0,,9102
-16030,9807,8802,-3.0,,9102
-16030,9807,8805,0.9996,,9201
-16030,9807,8806,500000.0,,9001
-16030,9807,8807,0.0,,9001
-16031,9807,8801,0.0,,9102
-16031,9807,8802,3.0,,9102
-16031,9807,8805,0.9996,,9201
-16031,9807,8806,500000.0,,9001
-16031,9807,8807,0.0,,9001
-16032,9807,8801,0.0,,9102
-16032,9807,8802,9.0,,9102
-16032,9807,8805,0.9996,,9201
-16032,9807,8806,500000.0,,9001
-16032,9807,8807,0.0,,9001
-16033,9807,8801,0.0,,9102
-16033,9807,8802,15.0,,9102
-16033,9807,8805,0.9996,,9201
-16033,9807,8806,500000.0,,9001
-16033,9807,8807,0.0,,9001
-16034,9807,8801,0.0,,9102
-16034,9807,8802,21.0,,9102
-16034,9807,8805,0.9996,,9201
-16034,9807,8806,500000.0,,9001
-16034,9807,8807,0.0,,9001
-16035,9807,8801,0.0,,9102
-16035,9807,8802,27.0,,9102
-16035,9807,8805,0.9996,,9201
-16035,9807,8806,500000.0,,9001
-16035,9807,8807,0.0,,9001
-16036,9807,8801,0.0,,9102
-16036,9807,8802,33.0,,9102
-16036,9807,8805,0.9996,,9201
-16036,9807,8806,500000.0,,9001
-16036,9807,8807,0.0,,9001
-16037,9807,8801,0.0,,9102
-16037,9807,8802,39.0,,9102
-16037,9807,8805,0.9996,,9201
-16037,9807,8806,500000.0,,9001
-16037,9807,8807,0.0,,9001
-16038,9807,8801,0.0,,9102
-16038,9807,8802,45.0,,9102
-16038,9807,8805,0.9996,,9201
-16038,9807,8806,500000.0,,9001
-16038,9807,8807,0.0,,9001
-16039,9807,8801,0.0,,9102
-16039,9807,8802,51.0,,9102
-16039,9807,8805,0.9996,,9201
-16039,9807,8806,500000.0,,9001
-16039,9807,8807,0.0,,9001
-16040,9807,8801,0.0,,9102
-16040,9807,8802,57.0,,9102
-16040,9807,8805,0.9996,,9201
-16040,9807,8806,500000.0,,9001
-16040,9807,8807,0.0,,9001
-16041,9807,8801,0.0,,9102
-16041,9807,8802,63.0,,9102
-16041,9807,8805,0.9996,,9201
-16041,9807,8806,500000.0,,9001
-16041,9807,8807,0.0,,9001
-16042,9807,8801,0.0,,9102
-16042,9807,8802,69.0,,9102
-16042,9807,8805,0.9996,,9201
-16042,9807,8806,500000.0,,9001
-16042,9807,8807,0.0,,9001
-16043,9807,8801,0.0,,9102
-16043,9807,8802,75.0,,9102
-16043,9807,8805,0.9996,,9201
-16043,9807,8806,500000.0,,9001
-16043,9807,8807,0.0,,9001
-16044,9807,8801,0.0,,9102
-16044,9807,8802,81.0,,9102
-16044,9807,8805,0.9996,,9201
-16044,9807,8806,500000.0,,9001
-16044,9807,8807,0.0,,9001
-16045,9807,8801,0.0,,9102
-16045,9807,8802,87.0,,9102
-16045,9807,8805,0.9996,,9201
-16045,9807,8806,500000.0,,9001
-16045,9807,8807,0.0,,9001
-16046,9807,8801,0.0,,9102
-16046,9807,8802,93.0,,9102
-16046,9807,8805,0.9996,,9201
-16046,9807,8806,500000.0,,9001
-16046,9807,8807,0.0,,9001
-16047,9807,8801,0.0,,9102
-16047,9807,8802,99.0,,9102
-16047,9807,8805,0.9996,,9201
-16047,9807,8806,500000.0,,9001
-16047,9807,8807,0.0,,9001
-16048,9807,8801,0.0,,9102
-16048,9807,8802,105.0,,9102
-16048,9807,8805,0.9996,,9201
-16048,9807,8806,500000.0,,9001
-16048,9807,8807,0.0,,9001
-16049,9807,8801,0.0,,9102
-16049,9807,8802,111.0,,9102
-16049,9807,8805,0.9996,,9201
-16049,9807,8806,500000.0,,9001
-16049,9807,8807,0.0,,9001
-16050,9807,8801,0.0,,9102
-16050,9807,8802,117.0,,9102
-16050,9807,8805,0.9996,,9201
-16050,9807,8806,500000.0,,9001
-16050,9807,8807,0.0,,9001
-16051,9807,8801,0.0,,9102
-16051,9807,8802,123.0,,9102
-16051,9807,8805,0.9996,,9201
-16051,9807,8806,500000.0,,9001
-16051,9807,8807,0.0,,9001
-16052,9807,8801,0.0,,9102
-16052,9807,8802,129.0,,9102
-16052,9807,8805,0.9996,,9201
-16052,9807,8806,500000.0,,9001
-16052,9807,8807,0.0,,9001
-16053,9807,8801,0.0,,9102
-16053,9807,8802,135.0,,9102
-16053,9807,8805,0.9996,,9201
-16053,9807,8806,500000.0,,9001
-16053,9807,8807,0.0,,9001
-16054,9807,8801,0.0,,9102
-16054,9807,8802,141.0,,9102
-16054,9807,8805,0.9996,,9201
-16054,9807,8806,500000.0,,9001
-16054,9807,8807,0.0,,9001
-16055,9807,8801,0.0,,9102
-16055,9807,8802,147.0,,9102
-16055,9807,8805,0.9996,,9201
-16055,9807,8806,500000.0,,9001
-16055,9807,8807,0.0,,9001
-16056,9807,8801,0.0,,9102
-16056,9807,8802,153.0,,9102
-16056,9807,8805,0.9996,,9201
-16056,9807,8806,500000.0,,9001
-16056,9807,8807,0.0,,9001
-16057,9807,8801,0.0,,9102
-16057,9807,8802,159.0,,9102
-16057,9807,8805,0.9996,,9201
-16057,9807,8806,500000.0,,9001
-16057,9807,8807,0.0,,9001
-16058,9807,8801,0.0,,9102
-16058,9807,8802,165.0,,9102
-16058,9807,8805,0.9996,,9201
-16058,9807,8806,500000.0,,9001
-16058,9807,8807,0.0,,9001
-16059,9807,8801,0.0,,9102
-16059,9807,8802,171.0,,9102
-16059,9807,8805,0.9996,,9201
-16059,9807,8806,500000.0,,9001
-16059,9807,8807,0.0,,9001
-16060,9807,8801,0.0,,9102
-16060,9807,8802,177.0,,9102
-16060,9807,8805,0.9996,,9201
-16060,9807,8806,500000.0,,9001
-16060,9807,8807,0.0,,9001
-16061,9810,8801,90.0,,9102
-16061,9810,8802,0.0,,9102
-16061,9810,8805,0.994,,9201
-16061,9810,8806,2000000.0,,9001
-16061,9810,8807,2000000.0,,9001
-16070,9807,8801,0.0,,9102
-16070,9807,8802,120.0,,9102
-16070,9807,8805,1.0,,9201
-16070,9807,8806,40500000.0,,9001
-16070,9807,8807,0.0,,9001
-16071,9807,8801,0.0,,9102
-16071,9807,8802,123.0,,9102
-16071,9807,8805,1.0,,9201
-16071,9807,8806,41500000.0,,9001
-16071,9807,8807,0.0,,9001
-16072,9807,8801,0.0,,9102
-16072,9807,8802,126.0,,9102
-16072,9807,8805,1.0,,9201
-16072,9807,8806,42500000.0,,9001
-16072,9807,8807,0.0,,9001
-16073,9807,8801,0.0,,9102
-16073,9807,8802,129.0,,9102
-16073,9807,8805,1.0,,9201
-16073,9807,8806,43500000.0,,9001
-16073,9807,8807,0.0,,9001
-16074,9807,8801,0.0,,9102
-16074,9807,8802,132.0,,9102
-16074,9807,8805,1.0,,9201
-16074,9807,8806,44500000.0,,9001
-16074,9807,8807,0.0,,9001
-16075,9807,8801,0.0,,9102
-16075,9807,8802,135.0,,9102
-16075,9807,8805,1.0,,9201
-16075,9807,8806,45500000.0,,9001
-16075,9807,8807,0.0,,9001
-16076,9807,8801,0.0,,9102
-16076,9807,8802,138.0,,9102
-16076,9807,8805,1.0,,9201
-16076,9807,8806,46500000.0,,9001
-16076,9807,8807,0.0,,9001
-16077,9807,8801,0.0,,9102
-16077,9807,8802,141.0,,9102
-16077,9807,8805,1.0,,9201
-16077,9807,8806,47500000.0,,9001
-16077,9807,8807,0.0,,9001
-16078,9807,8801,0.0,,9102
-16078,9807,8802,144.0,,9102
-16078,9807,8805,1.0,,9201
-16078,9807,8806,48500000.0,,9001
-16078,9807,8807,0.0,,9001
-16079,9807,8801,0.0,,9102
-16079,9807,8802,147.0,,9102
-16079,9807,8805,1.0,,9201
-16079,9807,8806,49500000.0,,9001
-16079,9807,8807,0.0,,9001
-16080,9807,8801,0.0,,9102
-16080,9807,8802,150.0,,9102
-16080,9807,8805,1.0,,9201
-16080,9807,8806,50500000.0,,9001
-16080,9807,8807,0.0,,9001
-16081,9807,8801,0.0,,9102
-16081,9807,8802,153.0,,9102
-16081,9807,8805,1.0,,9201
-16081,9807,8806,51500000.0,,9001
-16081,9807,8807,0.0,,9001
-16082,9807,8801,0.0,,9102
-16082,9807,8802,156.0,,9102
-16082,9807,8805,1.0,,9201
-16082,9807,8806,52500000.0,,9001
-16082,9807,8807,0.0,,9001
-16083,9807,8801,0.0,,9102
-16083,9807,8802,159.0,,9102
-16083,9807,8805,1.0,,9201
-16083,9807,8806,53500000.0,,9001
-16083,9807,8807,0.0,,9001
-16084,9807,8801,0.0,,9102
-16084,9807,8802,162.0,,9102
-16084,9807,8805,1.0,,9201
-16084,9807,8806,54500000.0,,9001
-16084,9807,8807,0.0,,9001
-16085,9807,8801,0.0,,9102
-16085,9807,8802,165.0,,9102
-16085,9807,8805,1.0,,9201
-16085,9807,8806,55500000.0,,9001
-16085,9807,8807,0.0,,9001
-16086,9807,8801,0.0,,9102
-16086,9807,8802,168.0,,9102
-16086,9807,8805,1.0,,9201
-16086,9807,8806,56500000.0,,9001
-16086,9807,8807,0.0,,9001
-16087,9807,8801,0.0,,9102
-16087,9807,8802,171.0,,9102
-16087,9807,8805,1.0,,9201
-16087,9807,8806,57500000.0,,9001
-16087,9807,8807,0.0,,9001
-16088,9807,8801,0.0,,9102
-16088,9807,8802,174.0,,9102
-16088,9807,8805,1.0,,9201
-16088,9807,8806,58500000.0,,9001
-16088,9807,8807,0.0,,9001
-16089,9807,8801,0.0,,9102
-16089,9807,8802,177.0,,9102
-16089,9807,8805,1.0,,9201
-16089,9807,8806,59500000.0,,9001
-16089,9807,8807,0.0,,9001
-16090,9807,8801,0.0,,9102
-16090,9807,8802,180.0,,9102
-16090,9807,8805,1.0,,9201
-16090,9807,8806,60000000.0,,9001
-16090,9807,8807,0.0,,9001
-16091,9807,8801,0.0,,9102
-16091,9807,8802,-177.0,,9102
-16091,9807,8805,1.0,,9201
-16091,9807,8806,61500000.0,,9001
-16091,9807,8807,0.0,,9001
-16092,9807,8801,0.0,,9102
-16092,9807,8802,-174.0,,9102
-16092,9807,8805,1.0,,9201
-16092,9807,8806,62500000.0,,9001
-16092,9807,8807,0.0,,9001
-16093,9807,8801,0.0,,9102
-16093,9807,8802,-171.0,,9102
-16093,9807,8805,1.0,,9201
-16093,9807,8806,63500000.0,,9001
-16093,9807,8807,0.0,,9001
-16094,9807,8801,0.0,,9102
-16094,9807,8802,-168.0,,9102
-16094,9807,8805,1.0,,9201
-16094,9807,8806,64500000.0,,9001
-16094,9807,8807,0.0,,9001
-16100,9824,8801,0.0,,9102
-16100,9824,8805,0.9996,,9201
-16100,9824,8806,500000.0,,9001
-16100,9824,8807,10000000.0,,9001
-16100,9824,8830,-180.0,,9102
-16100,9824,8831,6.0,,9102
-16101,9807,8801,0.0,,9102
-16101,9807,8802,-177.0,,9102
-16101,9807,8805,0.9996,,9201
-16101,9807,8806,500000.0,,9001
-16101,9807,8807,10000000.0,,9001
-16102,9807,8801,0.0,,9102
-16102,9807,8802,-171.0,,9102
-16102,9807,8805,0.9996,,9201
-16102,9807,8806,500000.0,,9001
-16102,9807,8807,10000000.0,,9001
-16103,9807,8801,0.0,,9102
-16103,9807,8802,-165.0,,9102
-16103,9807,8805,0.9996,,9201
-16103,9807,8806,500000.0,,9001
-16103,9807,8807,10000000.0,,9001
-16104,9807,8801,0.0,,9102
-16104,9807,8802,-159.0,,9102
-16104,9807,8805,0.9996,,9201
-16104,9807,8806,500000.0,,9001
-16104,9807,8807,10000000.0,,9001
-16105,9807,8801,0.0,,9102
-16105,9807,8802,-153.0,,9102
-16105,9807,8805,0.9996,,9201
-16105,9807,8806,500000.0,,9001
-16105,9807,8807,10000000.0,,9001
-16106,9807,8801,0.0,,9102
-16106,9807,8802,-147.0,,9102
-16106,9807,8805,0.9996,,9201
-16106,9807,8806,500000.0,,9001
-16106,9807,8807,10000000.0,,9001
-16107,9807,8801,0.0,,9102
-16107,9807,8802,-141.0,,9102
-16107,9807,8805,0.9996,,9201
-16107,9807,8806,500000.0,,9001
-16107,9807,8807,10000000.0,,9001
-16108,9807,8801,0.0,,9102
-16108,9807,8802,-135.0,,9102
-16108,9807,8805,0.9996,,9201
-16108,9807,8806,500000.0,,9001
-16108,9807,8807,10000000.0,,9001
-16109,9807,8801,0.0,,9102
-16109,9807,8802,-129.0,,9102
-16109,9807,8805,0.9996,,9201
-16109,9807,8806,500000.0,,9001
-16109,9807,8807,10000000.0,,9001
-16110,9807,8801,0.0,,9102
-16110,9807,8802,-123.0,,9102
-16110,9807,8805,0.9996,,9201
-16110,9807,8806,500000.0,,9001
-16110,9807,8807,10000000.0,,9001
-16111,9807,8801,0.0,,9102
-16111,9807,8802,-117.0,,9102
-16111,9807,8805,0.9996,,9201
-16111,9807,8806,500000.0,,9001
-16111,9807,8807,10000000.0,,9001
-16112,9807,8801,0.0,,9102
-16112,9807,8802,-111.0,,9102
-16112,9807,8805,0.9996,,9201
-16112,9807,8806,500000.0,,9001
-16112,9807,8807,10000000.0,,9001
-16113,9807,8801,0.0,,9102
-16113,9807,8802,-105.0,,9102
-16113,9807,8805,0.9996,,9201
-16113,9807,8806,500000.0,,9001
-16113,9807,8807,10000000.0,,9001
-16114,9807,8801,0.0,,9102
-16114,9807,8802,-99.0,,9102
-16114,9807,8805,0.9996,,9201
-16114,9807,8806,500000.0,,9001
-16114,9807,8807,10000000.0,,9001
-16115,9807,8801,0.0,,9102
-16115,9807,8802,-93.0,,9102
-16115,9807,8805,0.9996,,9201
-16115,9807,8806,500000.0,,9001
-16115,9807,8807,10000000.0,,9001
-16116,9807,8801,0.0,,9102
-16116,9807,8802,-87.0,,9102
-16116,9807,8805,0.9996,,9201
-16116,9807,8806,500000.0,,9001
-16116,9807,8807,10000000.0,,9001
-16117,9807,8801,0.0,,9102
-16117,9807,8802,-81.0,,9102
-16117,9807,8805,0.9996,,9201
-16117,9807,8806,500000.0,,9001
-16117,9807,8807,10000000.0,,9001
-16118,9807,8801,0.0,,9102
-16118,9807,8802,-75.0,,9102
-16118,9807,8805,0.9996,,9201
-16118,9807,8806,500000.0,,9001
-16118,9807,8807,10000000.0,,9001
-16119,9807,8801,0.0,,9102
-16119,9807,8802,-69.0,,9102
-16119,9807,8805,0.9996,,9201
-16119,9807,8806,500000.0,,9001
-16119,9807,8807,10000000.0,,9001
-16120,9807,8801,0.0,,9102
-16120,9807,8802,-63.0,,9102
-16120,9807,8805,0.9996,,9201
-16120,9807,8806,500000.0,,9001
-16120,9807,8807,10000000.0,,9001
-16121,9807,8801,0.0,,9102
-16121,9807,8802,-57.0,,9102
-16121,9807,8805,0.9996,,9201
-16121,9807,8806,500000.0,,9001
-16121,9807,8807,10000000.0,,9001
-16122,9807,8801,0.0,,9102
-16122,9807,8802,-51.0,,9102
-16122,9807,8805,0.9996,,9201
-16122,9807,8806,500000.0,,9001
-16122,9807,8807,10000000.0,,9001
-16123,9807,8801,0.0,,9102
-16123,9807,8802,-45.0,,9102
-16123,9807,8805,0.9996,,9201
-16123,9807,8806,500000.0,,9001
-16123,9807,8807,10000000.0,,9001
-16124,9807,8801,0.0,,9102
-16124,9807,8802,-39.0,,9102
-16124,9807,8805,0.9996,,9201
-16124,9807,8806,500000.0,,9001
-16124,9807,8807,10000000.0,,9001
-16125,9807,8801,0.0,,9102
-16125,9807,8802,-33.0,,9102
-16125,9807,8805,0.9996,,9201
-16125,9807,8806,500000.0,,9001
-16125,9807,8807,10000000.0,,9001
-16126,9807,8801,0.0,,9102
-16126,9807,8802,-27.0,,9102
-16126,9807,8805,0.9996,,9201
-16126,9807,8806,500000.0,,9001
-16126,9807,8807,10000000.0,,9001
-16127,9807,8801,0.0,,9102
-16127,9807,8802,-21.0,,9102
-16127,9807,8805,0.9996,,9201
-16127,9807,8806,500000.0,,9001
-16127,9807,8807,10000000.0,,9001
-16128,9807,8801,0.0,,9102
-16128,9807,8802,-15.0,,9102
-16128,9807,8805,0.9996,,9201
-16128,9807,8806,500000.0,,9001
-16128,9807,8807,10000000.0,,9001
-16129,9807,8801,0.0,,9102
-16129,9807,8802,-9.0,,9102
-16129,9807,8805,0.9996,,9201
-16129,9807,8806,500000.0,,9001
-16129,9807,8807,10000000.0,,9001
-16130,9807,8801,0.0,,9102
-16130,9807,8802,-3.0,,9102
-16130,9807,8805,0.9996,,9201
-16130,9807,8806,500000.0,,9001
-16130,9807,8807,10000000.0,,9001
-16131,9807,8801,0.0,,9102
-16131,9807,8802,3.0,,9102
-16131,9807,8805,0.9996,,9201
-16131,9807,8806,500000.0,,9001
-16131,9807,8807,10000000.0,,9001
-16132,9807,8801,0.0,,9102
-16132,9807,8802,9.0,,9102
-16132,9807,8805,0.9996,,9201
-16132,9807,8806,500000.0,,9001
-16132,9807,8807,10000000.0,,9001
-16133,9807,8801,0.0,,9102
-16133,9807,8802,15.0,,9102
-16133,9807,8805,0.9996,,9201
-16133,9807,8806,500000.0,,9001
-16133,9807,8807,10000000.0,,9001
-16134,9807,8801,0.0,,9102
-16134,9807,8802,21.0,,9102
-16134,9807,8805,0.9996,,9201
-16134,9807,8806,500000.0,,9001
-16134,9807,8807,10000000.0,,9001
-16135,9807,8801,0.0,,9102
-16135,9807,8802,27.0,,9102
-16135,9807,8805,0.9996,,9201
-16135,9807,8806,500000.0,,9001
-16135,9807,8807,10000000.0,,9001
-16136,9807,8801,0.0,,9102
-16136,9807,8802,33.0,,9102
-16136,9807,8805,0.9996,,9201
-16136,9807,8806,500000.0,,9001
-16136,9807,8807,10000000.0,,9001
-16137,9807,8801,0.0,,9102
-16137,9807,8802,39.0,,9102
-16137,9807,8805,0.9996,,9201
-16137,9807,8806,500000.0,,9001
-16137,9807,8807,10000000.0,,9001
-16138,9807,8801,0.0,,9102
-16138,9807,8802,45.0,,9102
-16138,9807,8805,0.9996,,9201
-16138,9807,8806,500000.0,,9001
-16138,9807,8807,10000000.0,,9001
-16139,9807,8801,0.0,,9102
-16139,9807,8802,51.0,,9102
-16139,9807,8805,0.9996,,9201
-16139,9807,8806,500000.0,,9001
-16139,9807,8807,10000000.0,,9001
-16140,9807,8801,0.0,,9102
-16140,9807,8802,57.0,,9102
-16140,9807,8805,0.9996,,9201
-16140,9807,8806,500000.0,,9001
-16140,9807,8807,10000000.0,,9001
-16141,9807,8801,0.0,,9102
-16141,9807,8802,63.0,,9102
-16141,9807,8805,0.9996,,9201
-16141,9807,8806,500000.0,,9001
-16141,9807,8807,10000000.0,,9001
-16142,9807,8801,0.0,,9102
-16142,9807,8802,69.0,,9102
-16142,9807,8805,0.9996,,9201
-16142,9807,8806,500000.0,,9001
-16142,9807,8807,10000000.0,,9001
-16143,9807,8801,0.0,,9102
-16143,9807,8802,75.0,,9102
-16143,9807,8805,0.9996,,9201
-16143,9807,8806,500000.0,,9001
-16143,9807,8807,10000000.0,,9001
-16144,9807,8801,0.0,,9102
-16144,9807,8802,81.0,,9102
-16144,9807,8805,0.9996,,9201
-16144,9807,8806,500000.0,,9001
-16144,9807,8807,10000000.0,,9001
-16145,9807,8801,0.0,,9102
-16145,9807,8802,87.0,,9102
-16145,9807,8805,0.9996,,9201
-16145,9807,8806,500000.0,,9001
-16145,9807,8807,10000000.0,,9001
-16146,9807,8801,0.0,,9102
-16146,9807,8802,93.0,,9102
-16146,9807,8805,0.9996,,9201
-16146,9807,8806,500000.0,,9001
-16146,9807,8807,10000000.0,,9001
-16147,9807,8801,0.0,,9102
-16147,9807,8802,99.0,,9102
-16147,9807,8805,0.9996,,9201
-16147,9807,8806,500000.0,,9001
-16147,9807,8807,10000000.0,,9001
-16148,9807,8801,0.0,,9102
-16148,9807,8802,105.0,,9102
-16148,9807,8805,0.9996,,9201
-16148,9807,8806,500000.0,,9001
-16148,9807,8807,10000000.0,,9001
-16149,9807,8801,0.0,,9102
-16149,9807,8802,111.0,,9102
-16149,9807,8805,0.9996,,9201
-16149,9807,8806,500000.0,,9001
-16149,9807,8807,10000000.0,,9001
-16150,9807,8801,0.0,,9102
-16150,9807,8802,117.0,,9102
-16150,9807,8805,0.9996,,9201
-16150,9807,8806,500000.0,,9001
-16150,9807,8807,10000000.0,,9001
-16151,9807,8801,0.0,,9102
-16151,9807,8802,123.0,,9102
-16151,9807,8805,0.9996,,9201
-16151,9807,8806,500000.0,,9001
-16151,9807,8807,10000000.0,,9001
-16152,9807,8801,0.0,,9102
-16152,9807,8802,129.0,,9102
-16152,9807,8805,0.9996,,9201
-16152,9807,8806,500000.0,,9001
-16152,9807,8807,10000000.0,,9001
-16153,9807,8801,0.0,,9102
-16153,9807,8802,135.0,,9102
-16153,9807,8805,0.9996,,9201
-16153,9807,8806,500000.0,,9001
-16153,9807,8807,10000000.0,,9001
-16154,9807,8801,0.0,,9102
-16154,9807,8802,141.0,,9102
-16154,9807,8805,0.9996,,9201
-16154,9807,8806,500000.0,,9001
-16154,9807,8807,10000000.0,,9001
-16155,9807,8801,0.0,,9102
-16155,9807,8802,147.0,,9102
-16155,9807,8805,0.9996,,9201
-16155,9807,8806,500000.0,,9001
-16155,9807,8807,10000000.0,,9001
-16156,9807,8801,0.0,,9102
-16156,9807,8802,153.0,,9102
-16156,9807,8805,0.9996,,9201
-16156,9807,8806,500000.0,,9001
-16156,9807,8807,10000000.0,,9001
-16157,9807,8801,0.0,,9102
-16157,9807,8802,159.0,,9102
-16157,9807,8805,0.9996,,9201
-16157,9807,8806,500000.0,,9001
-16157,9807,8807,10000000.0,,9001
-16158,9807,8801,0.0,,9102
-16158,9807,8802,165.0,,9102
-16158,9807,8805,0.9996,,9201
-16158,9807,8806,500000.0,,9001
-16158,9807,8807,10000000.0,,9001
-16159,9807,8801,0.0,,9102
-16159,9807,8802,171.0,,9102
-16159,9807,8805,0.9996,,9201
-16159,9807,8806,500000.0,,9001
-16159,9807,8807,10000000.0,,9001
-16160,9807,8801,0.0,,9102
-16160,9807,8802,177.0,,9102
-16160,9807,8805,0.9996,,9201
-16160,9807,8806,500000.0,,9001
-16160,9807,8807,10000000.0,,9001
-16161,9810,8801,-90.0,,9102
-16161,9810,8802,0.0,,9102
-16161,9810,8805,0.994,,9201
-16161,9810,8806,2000000.0,,9001
-16161,9810,8807,2000000.0,,9001
-16170,9807,8801,0.0,,9102
-16170,9807,8802,120.0,,9102
-16170,9807,8805,1.0,,9201
-16170,9807,8806,500000.0,,9001
-16170,9807,8807,0.0,,9001
-16171,9807,8801,0.0,,9102
-16171,9807,8802,123.0,,9102
-16171,9807,8805,1.0,,9201
-16171,9807,8806,500000.0,,9001
-16171,9807,8807,0.0,,9001
-16172,9807,8801,0.0,,9102
-16172,9807,8802,126.0,,9102
-16172,9807,8805,1.0,,9201
-16172,9807,8806,500000.0,,9001
-16172,9807,8807,0.0,,9001
-16173,9807,8801,0.0,,9102
-16173,9807,8802,129.0,,9102
-16173,9807,8805,1.0,,9201
-16173,9807,8806,500000.0,,9001
-16173,9807,8807,0.0,,9001
-16174,9807,8801,0.0,,9102
-16174,9807,8802,132.0,,9102
-16174,9807,8805,1.0,,9201
-16174,9807,8806,500000.0,,9001
-16174,9807,8807,0.0,,9001
-16175,9807,8801,0.0,,9102
-16175,9807,8802,135.0,,9102
-16175,9807,8805,1.0,,9201
-16175,9807,8806,500000.0,,9001
-16175,9807,8807,0.0,,9001
-16176,9807,8801,0.0,,9102
-16176,9807,8802,138.0,,9102
-16176,9807,8805,1.0,,9201
-16176,9807,8806,500000.0,,9001
-16176,9807,8807,0.0,,9001
-16177,9807,8801,0.0,,9102
-16177,9807,8802,141.0,,9102
-16177,9807,8805,1.0,,9201
-16177,9807,8806,500000.0,,9001
-16177,9807,8807,0.0,,9001
-16178,9807,8801,0.0,,9102
-16178,9807,8802,144.0,,9102
-16178,9807,8805,1.0,,9201
-16178,9807,8806,500000.0,,9001
-16178,9807,8807,0.0,,9001
-16179,9807,8801,0.0,,9102
-16179,9807,8802,147.0,,9102
-16179,9807,8805,1.0,,9201
-16179,9807,8806,500000.0,,9001
-16179,9807,8807,0.0,,9001
-16180,9807,8801,0.0,,9102
-16180,9807,8802,150.0,,9102
-16180,9807,8805,1.0,,9201
-16180,9807,8806,500000.0,,9001
-16180,9807,8807,0.0,,9001
-16181,9807,8801,0.0,,9102
-16181,9807,8802,153.0,,9102
-16181,9807,8805,1.0,,9201
-16181,9807,8806,500000.0,,9001
-16181,9807,8807,0.0,,9001
-16182,9807,8801,0.0,,9102
-16182,9807,8802,156.0,,9102
-16182,9807,8805,1.0,,9201
-16182,9807,8806,500000.0,,9001
-16182,9807,8807,0.0,,9001
-16183,9807,8801,0.0,,9102
-16183,9807,8802,159.0,,9102
-16183,9807,8805,1.0,,9201
-16183,9807,8806,500000.0,,9001
-16183,9807,8807,0.0,,9001
-16184,9807,8801,0.0,,9102
-16184,9807,8802,162.0,,9102
-16184,9807,8805,1.0,,9201
-16184,9807,8806,500000.0,,9001
-16184,9807,8807,0.0,,9001
-16185,9807,8801,0.0,,9102
-16185,9807,8802,165.0,,9102
-16185,9807,8805,1.0,,9201
-16185,9807,8806,500000.0,,9001
-16185,9807,8807,0.0,,9001
-16186,9807,8801,0.0,,9102
-16186,9807,8802,168.0,,9102
-16186,9807,8805,1.0,,9201
-16186,9807,8806,500000.0,,9001
-16186,9807,8807,0.0,,9001
-16187,9807,8801,0.0,,9102
-16187,9807,8802,171.0,,9102
-16187,9807,8805,1.0,,9201
-16187,9807,8806,500000.0,,9001
-16187,9807,8807,0.0,,9001
-16188,9807,8801,0.0,,9102
-16188,9807,8802,174.0,,9102
-16188,9807,8805,1.0,,9201
-16188,9807,8806,500000.0,,9001
-16188,9807,8807,0.0,,9001
-16189,9807,8801,0.0,,9102
-16189,9807,8802,177.0,,9102
-16189,9807,8805,1.0,,9201
-16189,9807,8806,500000.0,,9001
-16189,9807,8807,0.0,,9001
-16190,9807,8801,0.0,,9102
-16190,9807,8802,180.0,,9102
-16190,9807,8805,1.0,,9201
-16190,9807,8806,500000.0,,9001
-16190,9807,8807,0.0,,9001
-16191,9807,8801,0.0,,9102
-16191,9807,8802,-177.0,,9102
-16191,9807,8805,1.0,,9201
-16191,9807,8806,500000.0,,9001
-16191,9807,8807,0.0,,9001
-16192,9807,8801,0.0,,9102
-16192,9807,8802,-174.0,,9102
-16192,9807,8805,1.0,,9201
-16192,9807,8806,500000.0,,9001
-16192,9807,8807,0.0,,9001
-16193,9807,8801,0.0,,9102
-16193,9807,8802,-171.0,,9102
-16193,9807,8805,1.0,,9201
-16193,9807,8806,500000.0,,9001
-16193,9807,8807,0.0,,9001
-16194,9807,8801,0.0,,9102
-16194,9807,8802,-168.0,,9102
-16194,9807,8805,1.0,,9201
-16194,9807,8806,500000.0,,9001
-16194,9807,8807,0.0,,9001
-16201,9807,8801,0.0,,9102
-16201,9807,8802,3.0,,9102
-16201,9807,8805,1.0,,9201
-16201,9807,8806,1500000.0,,9001
-16201,9807,8807,0.0,,9001
-16202,9807,8801,0.0,,9102
-16202,9807,8802,9.0,,9102
-16202,9807,8805,1.0,,9201
-16202,9807,8806,2500000.0,,9001
-16202,9807,8807,0.0,,9001
-16203,9807,8801,0.0,,9102
-16203,9807,8802,15.0,,9102
-16203,9807,8805,1.0,,9201
-16203,9807,8806,3500000.0,,9001
-16203,9807,8807,0.0,,9001
-16204,9807,8801,0.0,,9102
-16204,9807,8802,21.0,,9102
-16204,9807,8805,1.0,,9201
-16204,9807,8806,4500000.0,,9001
-16204,9807,8807,0.0,,9001
-16205,9807,8801,0.0,,9102
-16205,9807,8802,27.0,,9102
-16205,9807,8805,1.0,,9201
-16205,9807,8806,5500000.0,,9001
-16205,9807,8807,0.0,,9001
-16206,9807,8801,0.0,,9102
-16206,9807,8802,33.0,,9102
-16206,9807,8805,1.0,,9201
-16206,9807,8806,6500000.0,,9001
-16206,9807,8807,0.0,,9001
-16207,9807,8801,0.0,,9102
-16207,9807,8802,39.0,,9102
-16207,9807,8805,1.0,,9201
-16207,9807,8806,7500000.0,,9001
-16207,9807,8807,0.0,,9001
-16208,9807,8801,0.0,,9102
-16208,9807,8802,45.0,,9102
-16208,9807,8805,1.0,,9201
-16208,9807,8806,8500000.0,,9001
-16208,9807,8807,0.0,,9001
-16209,9807,8801,0.0,,9102
-16209,9807,8802,51.0,,9102
-16209,9807,8805,1.0,,9201
-16209,9807,8806,9500000.0,,9001
-16209,9807,8807,0.0,,9001
-16210,9807,8801,0.0,,9102
-16210,9807,8802,57.0,,9102
-16210,9807,8805,1.0,,9201
-16210,9807,8806,10500000.0,,9001
-16210,9807,8807,0.0,,9001
-16211,9807,8801,0.0,,9102
-16211,9807,8802,63.0,,9102
-16211,9807,8805,1.0,,9201
-16211,9807,8806,11500000.0,,9001
-16211,9807,8807,0.0,,9001
-16212,9807,8801,0.0,,9102
-16212,9807,8802,69.0,,9102
-16212,9807,8805,1.0,,9201
-16212,9807,8806,12500000.0,,9001
-16212,9807,8807,0.0,,9001
-16213,9807,8801,0.0,,9102
-16213,9807,8802,75.0,,9102
-16213,9807,8805,1.0,,9201
-16213,9807,8806,13500000.0,,9001
-16213,9807,8807,0.0,,9001
-16214,9807,8801,0.0,,9102
-16214,9807,8802,81.0,,9102
-16214,9807,8805,1.0,,9201
-16214,9807,8806,14500000.0,,9001
-16214,9807,8807,0.0,,9001
-16215,9807,8801,0.0,,9102
-16215,9807,8802,87.0,,9102
-16215,9807,8805,1.0,,9201
-16215,9807,8806,15500000.0,,9001
-16215,9807,8807,0.0,,9001
-16216,9807,8801,0.0,,9102
-16216,9807,8802,93.0,,9102
-16216,9807,8805,1.0,,9201
-16216,9807,8806,16500000.0,,9001
-16216,9807,8807,0.0,,9001
-16217,9807,8801,0.0,,9102
-16217,9807,8802,99.0,,9102
-16217,9807,8805,1.0,,9201
-16217,9807,8806,17500000.0,,9001
-16217,9807,8807,0.0,,9001
-16218,9807,8801,0.0,,9102
-16218,9807,8802,105.0,,9102
-16218,9807,8805,1.0,,9201
-16218,9807,8806,18500000.0,,9001
-16218,9807,8807,0.0,,9001
-16219,9807,8801,0.0,,9102
-16219,9807,8802,111.0,,9102
-16219,9807,8805,1.0,,9201
-16219,9807,8806,19500000.0,,9001
-16219,9807,8807,0.0,,9001
-16220,9807,8801,0.0,,9102
-16220,9807,8802,117.0,,9102
-16220,9807,8805,1.0,,9201
-16220,9807,8806,20500000.0,,9001
-16220,9807,8807,0.0,,9001
-16221,9807,8801,0.0,,9102
-16221,9807,8802,123.0,,9102
-16221,9807,8805,1.0,,9201
-16221,9807,8806,21500000.0,,9001
-16221,9807,8807,0.0,,9001
-16222,9807,8801,0.0,,9102
-16222,9807,8802,129.0,,9102
-16222,9807,8805,1.0,,9201
-16222,9807,8806,22500000.0,,9001
-16222,9807,8807,0.0,,9001
-16223,9807,8801,0.0,,9102
-16223,9807,8802,135.0,,9102
-16223,9807,8805,1.0,,9201
-16223,9807,8806,23500000.0,,9001
-16223,9807,8807,0.0,,9001
-16224,9807,8801,0.0,,9102
-16224,9807,8802,141.0,,9102
-16224,9807,8805,1.0,,9201
-16224,9807,8806,24500000.0,,9001
-16224,9807,8807,0.0,,9001
-16225,9807,8801,0.0,,9102
-16225,9807,8802,147.0,,9102
-16225,9807,8805,1.0,,9201
-16225,9807,8806,25500000.0,,9001
-16225,9807,8807,0.0,,9001
-16226,9807,8801,0.0,,9102
-16226,9807,8802,153.0,,9102
-16226,9807,8805,1.0,,9201
-16226,9807,8806,26500000.0,,9001
-16226,9807,8807,0.0,,9001
-16227,9807,8801,0.0,,9102
-16227,9807,8802,159.0,,9102
-16227,9807,8805,1.0,,9201
-16227,9807,8806,27500000.0,,9001
-16227,9807,8807,0.0,,9001
-16228,9807,8801,0.0,,9102
-16228,9807,8802,165.0,,9102
-16228,9807,8805,1.0,,9201
-16228,9807,8806,28500000.0,,9001
-16228,9807,8807,0.0,,9001
-16229,9807,8801,0.0,,9102
-16229,9807,8802,171.0,,9102
-16229,9807,8805,1.0,,9201
-16229,9807,8806,29500000.0,,9001
-16229,9807,8807,0.0,,9001
-16230,9807,8801,0.0,,9102
-16230,9807,8802,177.0,,9102
-16230,9807,8805,1.0,,9201
-16230,9807,8806,30500000.0,,9001
-16230,9807,8807,0.0,,9001
-16231,9807,8801,0.0,,9102
-16231,9807,8802,-177.0,,9102
-16231,9807,8805,1.0,,9201
-16231,9807,8806,31500000.0,,9001
-16231,9807,8807,0.0,,9001
-16232,9807,8801,0.0,,9102
-16232,9807,8802,-171.0,,9102
-16232,9807,8805,1.0,,9201
-16232,9807,8806,32500000.0,,9001
-16232,9807,8807,0.0,,9001
-16233,9807,8801,0.0,,9102
-16233,9807,8802,-165.0,,9102
-16233,9807,8805,1.0,,9201
-16233,9807,8806,33500000.0,,9001
-16233,9807,8807,0.0,,9001
-16234,9807,8801,0.0,,9102
-16234,9807,8802,-159.0,,9102
-16234,9807,8805,1.0,,9201
-16234,9807,8806,34500000.0,,9001
-16234,9807,8807,0.0,,9001
-16235,9807,8801,0.0,,9102
-16235,9807,8802,-153.0,,9102
-16235,9807,8805,1.0,,9201
-16235,9807,8806,35500000.0,,9001
-16235,9807,8807,0.0,,9001
-16236,9807,8801,0.0,,9102
-16236,9807,8802,-147.0,,9102
-16236,9807,8805,1.0,,9201
-16236,9807,8806,36500000.0,,9001
-16236,9807,8807,0.0,,9001
-16237,9807,8801,0.0,,9102
-16237,9807,8802,-141.0,,9102
-16237,9807,8805,1.0,,9201
-16237,9807,8806,37500000.0,,9001
-16237,9807,8807,0.0,,9001
-16238,9807,8801,0.0,,9102
-16238,9807,8802,-135.0,,9102
-16238,9807,8805,1.0,,9201
-16238,9807,8806,38500000.0,,9001
-16238,9807,8807,0.0,,9001
-16239,9807,8801,0.0,,9102
-16239,9807,8802,-129.0,,9102
-16239,9807,8805,1.0,,9201
-16239,9807,8806,39500000.0,,9001
-16239,9807,8807,0.0,,9001
-16240,9807,8801,0.0,,9102
-16240,9807,8802,-123.0,,9102
-16240,9807,8805,1.0,,9201
-16240,9807,8806,40500000.0,,9001
-16240,9807,8807,0.0,,9001
-16241,9807,8801,0.0,,9102
-16241,9807,8802,-117.0,,9102
-16241,9807,8805,1.0,,9201
-16241,9807,8806,41500000.0,,9001
-16241,9807,8807,0.0,,9001
-16242,9807,8801,0.0,,9102
-16242,9807,8802,-111.0,,9102
-16242,9807,8805,1.0,,9201
-16242,9807,8806,42500000.0,,9001
-16242,9807,8807,0.0,,9001
-16243,9807,8801,0.0,,9102
-16243,9807,8802,-105.0,,9102
-16243,9807,8805,1.0,,9201
-16243,9807,8806,43500000.0,,9001
-16243,9807,8807,0.0,,9001
-16244,9807,8801,0.0,,9102
-16244,9807,8802,-99.0,,9102
-16244,9807,8805,1.0,,9201
-16244,9807,8806,44500000.0,,9001
-16244,9807,8807,0.0,,9001
-16245,9807,8801,0.0,,9102
-16245,9807,8802,-93.0,,9102
-16245,9807,8805,1.0,,9201
-16245,9807,8806,45500000.0,,9001
-16245,9807,8807,0.0,,9001
-16246,9807,8801,0.0,,9102
-16246,9807,8802,-87.0,,9102
-16246,9807,8805,1.0,,9201
-16246,9807,8806,46500000.0,,9001
-16246,9807,8807,0.0,,9001
-16247,9807,8801,0.0,,9102
-16247,9807,8802,-81.0,,9102
-16247,9807,8805,1.0,,9201
-16247,9807,8806,47500000.0,,9001
-16247,9807,8807,0.0,,9001
-16248,9807,8801,0.0,,9102
-16248,9807,8802,-75.0,,9102
-16248,9807,8805,1.0,,9201
-16248,9807,8806,48500000.0,,9001
-16248,9807,8807,0.0,,9001
-16249,9807,8801,0.0,,9102
-16249,9807,8802,-69.0,,9102
-16249,9807,8805,1.0,,9201
-16249,9807,8806,49500000.0,,9001
-16249,9807,8807,0.0,,9001
-16250,9807,8801,0.0,,9102
-16250,9807,8802,-63.0,,9102
-16250,9807,8805,1.0,,9201
-16250,9807,8806,50500000.0,,9001
-16250,9807,8807,0.0,,9001
-16251,9807,8801,0.0,,9102
-16251,9807,8802,-57.0,,9102
-16251,9807,8805,1.0,,9201
-16251,9807,8806,51500000.0,,9001
-16251,9807,8807,0.0,,9001
-16252,9807,8801,0.0,,9102
-16252,9807,8802,-51.0,,9102
-16252,9807,8805,1.0,,9201
-16252,9807,8806,52500000.0,,9001
-16252,9807,8807,0.0,,9001
-16253,9807,8801,0.0,,9102
-16253,9807,8802,-45.0,,9102
-16253,9807,8805,1.0,,9201
-16253,9807,8806,53500000.0,,9001
-16253,9807,8807,0.0,,9001
-16254,9807,8801,0.0,,9102
-16254,9807,8802,-39.0,,9102
-16254,9807,8805,1.0,,9201
-16254,9807,8806,54500000.0,,9001
-16254,9807,8807,0.0,,9001
-16255,9807,8801,0.0,,9102
-16255,9807,8802,-33.0,,9102
-16255,9807,8805,1.0,,9201
-16255,9807,8806,55500000.0,,9001
-16255,9807,8807,0.0,,9001
-16256,9807,8801,0.0,,9102
-16256,9807,8802,-27.0,,9102
-16256,9807,8805,1.0,,9201
-16256,9807,8806,56500000.0,,9001
-16256,9807,8807,0.0,,9001
-16257,9807,8801,0.0,,9102
-16257,9807,8802,-21.0,,9102
-16257,9807,8805,1.0,,9201
-16257,9807,8806,57500000.0,,9001
-16257,9807,8807,0.0,,9001
-16258,9807,8801,0.0,,9102
-16258,9807,8802,-15.0,,9102
-16258,9807,8805,1.0,,9201
-16258,9807,8806,58500000.0,,9001
-16258,9807,8807,0.0,,9001
-16259,9807,8801,0.0,,9102
-16259,9807,8802,-9.0,,9102
-16259,9807,8805,1.0,,9201
-16259,9807,8806,59500000.0,,9001
-16259,9807,8807,0.0,,9001
-16260,9807,8801,0.0,,9102
-16260,9807,8802,-3.0,,9102
-16260,9807,8805,1.0,,9201
-16260,9807,8806,60500000.0,,9001
-16260,9807,8807,0.0,,9001
-16261,9807,8801,0.0,,9102
-16261,9807,8802,3.0,,9102
-16261,9807,8805,1.0,,9201
-16261,9807,8806,1500000.0,,9001
-16261,9807,8807,0.0,,9001
-16262,9807,8801,0.0,,9102
-16262,9807,8802,6.0,,9102
-16262,9807,8805,1.0,,9201
-16262,9807,8806,2500000.0,,9001
-16262,9807,8807,0.0,,9001
-16263,9807,8801,0.0,,9102
-16263,9807,8802,9.0,,9102
-16263,9807,8805,1.0,,9201
-16263,9807,8806,3500000.0,,9001
-16263,9807,8807,0.0,,9001
-16264,9807,8801,0.0,,9102
-16264,9807,8802,12.0,,9102
-16264,9807,8805,1.0,,9201
-16264,9807,8806,4500000.0,,9001
-16264,9807,8807,0.0,,9001
-16265,9807,8801,0.0,,9102
-16265,9807,8802,15.0,,9102
-16265,9807,8805,1.0,,9201
-16265,9807,8806,5500000.0,,9001
-16265,9807,8807,0.0,,9001
-16266,9807,8801,0.0,,9102
-16266,9807,8802,18.0,,9102
-16266,9807,8805,1.0,,9201
-16266,9807,8806,6500000.0,,9001
-16266,9807,8807,0.0,,9001
-16267,9807,8801,0.0,,9102
-16267,9807,8802,21.0,,9102
-16267,9807,8805,1.0,,9201
-16267,9807,8806,7500000.0,,9001
-16267,9807,8807,0.0,,9001
-16268,9807,8801,0.0,,9102
-16268,9807,8802,24.0,,9102
-16268,9807,8805,1.0,,9201
-16268,9807,8806,8500000.0,,9001
-16268,9807,8807,0.0,,9001
-16269,9807,8801,0.0,,9102
-16269,9807,8802,27.0,,9102
-16269,9807,8805,1.0,,9201
-16269,9807,8806,9500000.0,,9001
-16269,9807,8807,0.0,,9001
-16270,9807,8801,0.0,,9102
-16270,9807,8802,30.0,,9102
-16270,9807,8805,1.0,,9201
-16270,9807,8806,10500000.0,,9001
-16270,9807,8807,0.0,,9001
-16271,9807,8801,0.0,,9102
-16271,9807,8802,33.0,,9102
-16271,9807,8805,1.0,,9201
-16271,9807,8806,11500000.0,,9001
-16271,9807,8807,0.0,,9001
-16272,9807,8801,0.0,,9102
-16272,9807,8802,36.0,,9102
-16272,9807,8805,1.0,,9201
-16272,9807,8806,12500000.0,,9001
-16272,9807,8807,0.0,,9001
-16273,9807,8801,0.0,,9102
-16273,9807,8802,39.0,,9102
-16273,9807,8805,1.0,,9201
-16273,9807,8806,13500000.0,,9001
-16273,9807,8807,0.0,,9001
-16274,9807,8801,0.0,,9102
-16274,9807,8802,42.0,,9102
-16274,9807,8805,1.0,,9201
-16274,9807,8806,14500000.0,,9001
-16274,9807,8807,0.0,,9001
-16275,9807,8801,0.0,,9102
-16275,9807,8802,45.0,,9102
-16275,9807,8805,1.0,,9201
-16275,9807,8806,15500000.0,,9001
-16275,9807,8807,0.0,,9001
-16276,9807,8801,0.0,,9102
-16276,9807,8802,48.0,,9102
-16276,9807,8805,1.0,,9201
-16276,9807,8806,16500000.0,,9001
-16276,9807,8807,0.0,,9001
-16277,9807,8801,0.0,,9102
-16277,9807,8802,51.0,,9102
-16277,9807,8805,1.0,,9201
-16277,9807,8806,17500000.0,,9001
-16277,9807,8807,0.0,,9001
-16278,9807,8801,0.0,,9102
-16278,9807,8802,54.0,,9102
-16278,9807,8805,1.0,,9201
-16278,9807,8806,18500000.0,,9001
-16278,9807,8807,0.0,,9001
-16279,9807,8801,0.0,,9102
-16279,9807,8802,57.0,,9102
-16279,9807,8805,1.0,,9201
-16279,9807,8806,19500000.0,,9001
-16279,9807,8807,0.0,,9001
-16280,9807,8801,0.0,,9102
-16280,9807,8802,60.0,,9102
-16280,9807,8805,1.0,,9201
-16280,9807,8806,20500000.0,,9001
-16280,9807,8807,0.0,,9001
-16281,9807,8801,0.0,,9102
-16281,9807,8802,63.0,,9102
-16281,9807,8805,1.0,,9201
-16281,9807,8806,21500000.0,,9001
-16281,9807,8807,0.0,,9001
-16282,9807,8801,0.0,,9102
-16282,9807,8802,66.0,,9102
-16282,9807,8805,1.0,,9201
-16282,9807,8806,22500000.0,,9001
-16282,9807,8807,0.0,,9001
-16283,9807,8801,0.0,,9102
-16283,9807,8802,69.0,,9102
-16283,9807,8805,1.0,,9201
-16283,9807,8806,23500000.0,,9001
-16283,9807,8807,0.0,,9001
-16284,9807,8801,0.0,,9102
-16284,9807,8802,72.0,,9102
-16284,9807,8805,1.0,,9201
-16284,9807,8806,24500000.0,,9001
-16284,9807,8807,0.0,,9001
-16285,9807,8801,0.0,,9102
-16285,9807,8802,75.0,,9102
-16285,9807,8805,1.0,,9201
-16285,9807,8806,25500000.0,,9001
-16285,9807,8807,0.0,,9001
-16286,9807,8801,0.0,,9102
-16286,9807,8802,78.0,,9102
-16286,9807,8805,1.0,,9201
-16286,9807,8806,26500000.0,,9001
-16286,9807,8807,0.0,,9001
-16287,9807,8801,0.0,,9102
-16287,9807,8802,81.0,,9102
-16287,9807,8805,1.0,,9201
-16287,9807,8806,27500000.0,,9001
-16287,9807,8807,0.0,,9001
-16288,9807,8801,0.0,,9102
-16288,9807,8802,84.0,,9102
-16288,9807,8805,1.0,,9201
-16288,9807,8806,28500000.0,,9001
-16288,9807,8807,0.0,,9001
-16289,9807,8801,0.0,,9102
-16289,9807,8802,87.0,,9102
-16289,9807,8805,1.0,,9201
-16289,9807,8806,29500000.0,,9001
-16289,9807,8807,0.0,,9001
-16290,9807,8801,0.0,,9102
-16290,9807,8802,90.0,,9102
-16290,9807,8805,1.0,,9201
-16290,9807,8806,30500000.0,,9001
-16290,9807,8807,0.0,,9001
-16291,9807,8801,0.0,,9102
-16291,9807,8802,93.0,,9102
-16291,9807,8805,1.0,,9201
-16291,9807,8806,31500000.0,,9001
-16291,9807,8807,0.0,,9001
-16292,9807,8801,0.0,,9102
-16292,9807,8802,96.0,,9102
-16292,9807,8805,1.0,,9201
-16292,9807,8806,32500000.0,,9001
-16292,9807,8807,0.0,,9001
-16293,9807,8801,0.0,,9102
-16293,9807,8802,99.0,,9102
-16293,9807,8805,1.0,,9201
-16293,9807,8806,33500000.0,,9001
-16293,9807,8807,0.0,,9001
-16294,9807,8801,0.0,,9102
-16294,9807,8802,102.0,,9102
-16294,9807,8805,1.0,,9201
-16294,9807,8806,34500000.0,,9001
-16294,9807,8807,0.0,,9001
-16295,9807,8801,0.0,,9102
-16295,9807,8802,105.0,,9102
-16295,9807,8805,1.0,,9201
-16295,9807,8806,35500000.0,,9001
-16295,9807,8807,0.0,,9001
-16296,9807,8801,0.0,,9102
-16296,9807,8802,108.0,,9102
-16296,9807,8805,1.0,,9201
-16296,9807,8806,36500000.0,,9001
-16296,9807,8807,0.0,,9001
-16297,9807,8801,0.0,,9102
-16297,9807,8802,111.0,,9102
-16297,9807,8805,1.0,,9201
-16297,9807,8806,37500000.0,,9001
-16297,9807,8807,0.0,,9001
-16298,9807,8801,0.0,,9102
-16298,9807,8802,114.0,,9102
-16298,9807,8805,1.0,,9201
-16298,9807,8806,38500000.0,,9001
-16298,9807,8807,0.0,,9001
-16299,9807,8801,0.0,,9102
-16299,9807,8802,117.0,,9102
-16299,9807,8805,1.0,,9201
-16299,9807,8806,39500000.0,,9001
-16299,9807,8807,0.0,,9001
-16301,9807,8801,0.0,,9102
-16301,9807,8802,3.0,,9102
-16301,9807,8805,1.0,,9201
-16301,9807,8806,500000.0,,9001
-16301,9807,8807,0.0,,9001
-16302,9807,8801,0.0,,9102
-16302,9807,8802,9.0,,9102
-16302,9807,8805,1.0,,9201
-16302,9807,8806,500000.0,,9001
-16302,9807,8807,0.0,,9001
-16303,9807,8801,0.0,,9102
-16303,9807,8802,15.0,,9102
-16303,9807,8805,1.0,,9201
-16303,9807,8806,500000.0,,9001
-16303,9807,8807,0.0,,9001
-16304,9807,8801,0.0,,9102
-16304,9807,8802,21.0,,9102
-16304,9807,8805,1.0,,9201
-16304,9807,8806,500000.0,,9001
-16304,9807,8807,0.0,,9001
-16305,9807,8801,0.0,,9102
-16305,9807,8802,27.0,,9102
-16305,9807,8805,1.0,,9201
-16305,9807,8806,500000.0,,9001
-16305,9807,8807,0.0,,9001
-16306,9807,8801,0.0,,9102
-16306,9807,8802,33.0,,9102
-16306,9807,8805,1.0,,9201
-16306,9807,8806,500000.0,,9001
-16306,9807,8807,0.0,,9001
-16307,9807,8801,0.0,,9102
-16307,9807,8802,39.0,,9102
-16307,9807,8805,1.0,,9201
-16307,9807,8806,500000.0,,9001
-16307,9807,8807,0.0,,9001
-16308,9807,8801,0.0,,9102
-16308,9807,8802,45.0,,9102
-16308,9807,8805,1.0,,9201
-16308,9807,8806,500000.0,,9001
-16308,9807,8807,0.0,,9001
-16309,9807,8801,0.0,,9102
-16309,9807,8802,51.0,,9102
-16309,9807,8805,1.0,,9201
-16309,9807,8806,500000.0,,9001
-16309,9807,8807,0.0,,9001
-16310,9807,8801,0.0,,9102
-16310,9807,8802,57.0,,9102
-16310,9807,8805,1.0,,9201
-16310,9807,8806,500000.0,,9001
-16310,9807,8807,0.0,,9001
-16311,9807,8801,0.0,,9102
-16311,9807,8802,63.0,,9102
-16311,9807,8805,1.0,,9201
-16311,9807,8806,500000.0,,9001
-16311,9807,8807,0.0,,9001
-16312,9807,8801,0.0,,9102
-16312,9807,8802,69.0,,9102
-16312,9807,8805,1.0,,9201
-16312,9807,8806,500000.0,,9001
-16312,9807,8807,0.0,,9001
-16313,9807,8801,0.0,,9102
-16313,9807,8802,75.0,,9102
-16313,9807,8805,1.0,,9201
-16313,9807,8806,500000.0,,9001
-16313,9807,8807,0.0,,9001
-16314,9807,8801,0.0,,9102
-16314,9807,8802,81.0,,9102
-16314,9807,8805,1.0,,9201
-16314,9807,8806,500000.0,,9001
-16314,9807,8807,0.0,,9001
-16315,9807,8801,0.0,,9102
-16315,9807,8802,87.0,,9102
-16315,9807,8805,1.0,,9201
-16315,9807,8806,500000.0,,9001
-16315,9807,8807,0.0,,9001
-16316,9807,8801,0.0,,9102
-16316,9807,8802,93.0,,9102
-16316,9807,8805,1.0,,9201
-16316,9807,8806,500000.0,,9001
-16316,9807,8807,0.0,,9001
-16317,9807,8801,0.0,,9102
-16317,9807,8802,99.0,,9102
-16317,9807,8805,1.0,,9201
-16317,9807,8806,500000.0,,9001
-16317,9807,8807,0.0,,9001
-16318,9807,8801,0.0,,9102
-16318,9807,8802,105.0,,9102
-16318,9807,8805,1.0,,9201
-16318,9807,8806,500000.0,,9001
-16318,9807,8807,0.0,,9001
-16319,9807,8801,0.0,,9102
-16319,9807,8802,111.0,,9102
-16319,9807,8805,1.0,,9201
-16319,9807,8806,500000.0,,9001
-16319,9807,8807,0.0,,9001
-16320,9807,8801,0.0,,9102
-16320,9807,8802,117.0,,9102
-16320,9807,8805,1.0,,9201
-16320,9807,8806,500000.0,,9001
-16320,9807,8807,0.0,,9001
-16321,9807,8801,0.0,,9102
-16321,9807,8802,123.0,,9102
-16321,9807,8805,1.0,,9201
-16321,9807,8806,500000.0,,9001
-16321,9807,8807,0.0,,9001
-16322,9807,8801,0.0,,9102
-16322,9807,8802,129.0,,9102
-16322,9807,8805,1.0,,9201
-16322,9807,8806,500000.0,,9001
-16322,9807,8807,0.0,,9001
-16323,9807,8801,0.0,,9102
-16323,9807,8802,135.0,,9102
-16323,9807,8805,1.0,,9201
-16323,9807,8806,500000.0,,9001
-16323,9807,8807,0.0,,9001
-16324,9807,8801,0.0,,9102
-16324,9807,8802,141.0,,9102
-16324,9807,8805,1.0,,9201
-16324,9807,8806,500000.0,,9001
-16324,9807,8807,0.0,,9001
-16325,9807,8801,0.0,,9102
-16325,9807,8802,147.0,,9102
-16325,9807,8805,1.0,,9201
-16325,9807,8806,500000.0,,9001
-16325,9807,8807,0.0,,9001
-16326,9807,8801,0.0,,9102
-16326,9807,8802,153.0,,9102
-16326,9807,8805,1.0,,9201
-16326,9807,8806,500000.0,,9001
-16326,9807,8807,0.0,,9001
-16327,9807,8801,0.0,,9102
-16327,9807,8802,159.0,,9102
-16327,9807,8805,1.0,,9201
-16327,9807,8806,500000.0,,9001
-16327,9807,8807,0.0,,9001
-16328,9807,8801,0.0,,9102
-16328,9807,8802,165.0,,9102
-16328,9807,8805,1.0,,9201
-16328,9807,8806,500000.0,,9001
-16328,9807,8807,0.0,,9001
-16329,9807,8801,0.0,,9102
-16329,9807,8802,171.0,,9102
-16329,9807,8805,1.0,,9201
-16329,9807,8806,500000.0,,9001
-16329,9807,8807,0.0,,9001
-16330,9807,8801,0.0,,9102
-16330,9807,8802,177.0,,9102
-16330,9807,8805,1.0,,9201
-16330,9807,8806,500000.0,,9001
-16330,9807,8807,0.0,,9001
-16331,9807,8801,0.0,,9102
-16331,9807,8802,-177.0,,9102
-16331,9807,8805,1.0,,9201
-16331,9807,8806,500000.0,,9001
-16331,9807,8807,0.0,,9001
-16332,9807,8801,0.0,,9102
-16332,9807,8802,-171.0,,9102
-16332,9807,8805,1.0,,9201
-16332,9807,8806,500000.0,,9001
-16332,9807,8807,0.0,,9001
-16333,9807,8801,0.0,,9102
-16333,9807,8802,-165.0,,9102
-16333,9807,8805,1.0,,9201
-16333,9807,8806,500000.0,,9001
-16333,9807,8807,0.0,,9001
-16334,9807,8801,0.0,,9102
-16334,9807,8802,-159.0,,9102
-16334,9807,8805,1.0,,9201
-16334,9807,8806,500000.0,,9001
-16334,9807,8807,0.0,,9001
-16335,9807,8801,0.0,,9102
-16335,9807,8802,-153.0,,9102
-16335,9807,8805,1.0,,9201
-16335,9807,8806,500000.0,,9001
-16335,9807,8807,0.0,,9001
-16336,9807,8801,0.0,,9102
-16336,9807,8802,-147.0,,9102
-16336,9807,8805,1.0,,9201
-16336,9807,8806,500000.0,,9001
-16336,9807,8807,0.0,,9001
-16337,9807,8801,0.0,,9102
-16337,9807,8802,-141.0,,9102
-16337,9807,8805,1.0,,9201
-16337,9807,8806,500000.0,,9001
-16337,9807,8807,0.0,,9001
-16338,9807,8801,0.0,,9102
-16338,9807,8802,-135.0,,9102
-16338,9807,8805,1.0,,9201
-16338,9807,8806,500000.0,,9001
-16338,9807,8807,0.0,,9001
-16339,9807,8801,0.0,,9102
-16339,9807,8802,-129.0,,9102
-16339,9807,8805,1.0,,9201
-16339,9807,8806,500000.0,,9001
-16339,9807,8807,0.0,,9001
-16340,9807,8801,0.0,,9102
-16340,9807,8802,-123.0,,9102
-16340,9807,8805,1.0,,9201
-16340,9807,8806,500000.0,,9001
-16340,9807,8807,0.0,,9001
-16341,9807,8801,0.0,,9102
-16341,9807,8802,-117.0,,9102
-16341,9807,8805,1.0,,9201
-16341,9807,8806,500000.0,,9001
-16341,9807,8807,0.0,,9001
-16342,9807,8801,0.0,,9102
-16342,9807,8802,-111.0,,9102
-16342,9807,8805,1.0,,9201
-16342,9807,8806,500000.0,,9001
-16342,9807,8807,0.0,,9001
-16343,9807,8801,0.0,,9102
-16343,9807,8802,-105.0,,9102
-16343,9807,8805,1.0,,9201
-16343,9807,8806,500000.0,,9001
-16343,9807,8807,0.0,,9001
-16344,9807,8801,0.0,,9102
-16344,9807,8802,-99.0,,9102
-16344,9807,8805,1.0,,9201
-16344,9807,8806,500000.0,,9001
-16344,9807,8807,0.0,,9001
-16345,9807,8801,0.0,,9102
-16345,9807,8802,-93.0,,9102
-16345,9807,8805,1.0,,9201
-16345,9807,8806,500000.0,,9001
-16345,9807,8807,0.0,,9001
-16346,9807,8801,0.0,,9102
-16346,9807,8802,-87.0,,9102
-16346,9807,8805,1.0,,9201
-16346,9807,8806,500000.0,,9001
-16346,9807,8807,0.0,,9001
-16347,9807,8801,0.0,,9102
-16347,9807,8802,-81.0,,9102
-16347,9807,8805,1.0,,9201
-16347,9807,8806,500000.0,,9001
-16347,9807,8807,0.0,,9001
-16348,9807,8801,0.0,,9102
-16348,9807,8802,-75.0,,9102
-16348,9807,8805,1.0,,9201
-16348,9807,8806,500000.0,,9001
-16348,9807,8807,0.0,,9001
-16349,9807,8801,0.0,,9102
-16349,9807,8802,-69.0,,9102
-16349,9807,8805,1.0,,9201
-16349,9807,8806,500000.0,,9001
-16349,9807,8807,0.0,,9001
-16350,9807,8801,0.0,,9102
-16350,9807,8802,-63.0,,9102
-16350,9807,8805,1.0,,9201
-16350,9807,8806,500000.0,,9001
-16350,9807,8807,0.0,,9001
-16351,9807,8801,0.0,,9102
-16351,9807,8802,-57.0,,9102
-16351,9807,8805,1.0,,9201
-16351,9807,8806,500000.0,,9001
-16351,9807,8807,0.0,,9001
-16352,9807,8801,0.0,,9102
-16352,9807,8802,-51.0,,9102
-16352,9807,8805,1.0,,9201
-16352,9807,8806,500000.0,,9001
-16352,9807,8807,0.0,,9001
-16353,9807,8801,0.0,,9102
-16353,9807,8802,-45.0,,9102
-16353,9807,8805,1.0,,9201
-16353,9807,8806,500000.0,,9001
-16353,9807,8807,0.0,,9001
-16354,9807,8801,0.0,,9102
-16354,9807,8802,-39.0,,9102
-16354,9807,8805,1.0,,9201
-16354,9807,8806,500000.0,,9001
-16354,9807,8807,0.0,,9001
-16355,9807,8801,0.0,,9102
-16355,9807,8802,-33.0,,9102
-16355,9807,8805,1.0,,9201
-16355,9807,8806,500000.0,,9001
-16355,9807,8807,0.0,,9001
-16356,9807,8801,0.0,,9102
-16356,9807,8802,-27.0,,9102
-16356,9807,8805,1.0,,9201
-16356,9807,8806,500000.0,,9001
-16356,9807,8807,0.0,,9001
-16357,9807,8801,0.0,,9102
-16357,9807,8802,-21.0,,9102
-16357,9807,8805,1.0,,9201
-16357,9807,8806,500000.0,,9001
-16357,9807,8807,0.0,,9001
-16358,9807,8801,0.0,,9102
-16358,9807,8802,-15.0,,9102
-16358,9807,8805,1.0,,9201
-16358,9807,8806,500000.0,,9001
-16358,9807,8807,0.0,,9001
-16359,9807,8801,0.0,,9102
-16359,9807,8802,-9.0,,9102
-16359,9807,8805,1.0,,9201
-16359,9807,8806,500000.0,,9001
-16359,9807,8807,0.0,,9001
-16360,9807,8801,0.0,,9102
-16360,9807,8802,-3.0,,9102
-16360,9807,8805,1.0,,9201
-16360,9807,8806,500000.0,,9001
-16360,9807,8807,0.0,,9001
-16361,9807,8801,0.0,,9102
-16361,9807,8802,3.0,,9102
-16361,9807,8805,1.0,,9201
-16361,9807,8806,500000.0,,9001
-16361,9807,8807,0.0,,9001
-16362,9807,8801,0.0,,9102
-16362,9807,8802,6.0,,9102
-16362,9807,8805,1.0,,9201
-16362,9807,8806,500000.0,,9001
-16362,9807,8807,0.0,,9001
-16363,9807,8801,0.0,,9102
-16363,9807,8802,9.0,,9102
-16363,9807,8805,1.0,,9201
-16363,9807,8806,500000.0,,9001
-16363,9807,8807,0.0,,9001
-16364,9807,8801,0.0,,9102
-16364,9807,8802,12.0,,9102
-16364,9807,8805,1.0,,9201
-16364,9807,8806,500000.0,,9001
-16364,9807,8807,0.0,,9001
-16365,9807,8801,0.0,,9102
-16365,9807,8802,15.0,,9102
-16365,9807,8805,1.0,,9201
-16365,9807,8806,500000.0,,9001
-16365,9807,8807,0.0,,9001
-16366,9807,8801,0.0,,9102
-16366,9807,8802,18.0,,9102
-16366,9807,8805,1.0,,9201
-16366,9807,8806,500000.0,,9001
-16366,9807,8807,0.0,,9001
-16367,9807,8801,0.0,,9102
-16367,9807,8802,21.0,,9102
-16367,9807,8805,1.0,,9201
-16367,9807,8806,500000.0,,9001
-16367,9807,8807,0.0,,9001
-16368,9807,8801,0.0,,9102
-16368,9807,8802,24.0,,9102
-16368,9807,8805,1.0,,9201
-16368,9807,8806,500000.0,,9001
-16368,9807,8807,0.0,,9001
-16369,9807,8801,0.0,,9102
-16369,9807,8802,27.0,,9102
-16369,9807,8805,1.0,,9201
-16369,9807,8806,500000.0,,9001
-16369,9807,8807,0.0,,9001
-16370,9807,8801,0.0,,9102
-16370,9807,8802,30.0,,9102
-16370,9807,8805,1.0,,9201
-16370,9807,8806,500000.0,,9001
-16370,9807,8807,0.0,,9001
-16371,9807,8801,0.0,,9102
-16371,9807,8802,33.0,,9102
-16371,9807,8805,1.0,,9201
-16371,9807,8806,500000.0,,9001
-16371,9807,8807,0.0,,9001
-16372,9807,8801,0.0,,9102
-16372,9807,8802,36.0,,9102
-16372,9807,8805,1.0,,9201
-16372,9807,8806,500000.0,,9001
-16372,9807,8807,0.0,,9001
-16373,9807,8801,0.0,,9102
-16373,9807,8802,39.0,,9102
-16373,9807,8805,1.0,,9201
-16373,9807,8806,500000.0,,9001
-16373,9807,8807,0.0,,9001
-16374,9807,8801,0.0,,9102
-16374,9807,8802,42.0,,9102
-16374,9807,8805,1.0,,9201
-16374,9807,8806,500000.0,,9001
-16374,9807,8807,0.0,,9001
-16375,9807,8801,0.0,,9102
-16375,9807,8802,45.0,,9102
-16375,9807,8805,1.0,,9201
-16375,9807,8806,500000.0,,9001
-16375,9807,8807,0.0,,9001
-16376,9807,8801,0.0,,9102
-16376,9807,8802,48.0,,9102
-16376,9807,8805,1.0,,9001
-16376,9807,8806,500000.0,,9001
-16376,9807,8807,0.0,,9201
-16377,9807,8801,0.0,,9102
-16377,9807,8802,51.0,,9102
-16377,9807,8805,1.0,,9201
-16377,9807,8806,500000.0,,9001
-16377,9807,8807,0.0,,9001
-16378,9807,8801,0.0,,9102
-16378,9807,8802,54.0,,9102
-16378,9807,8805,1.0,,9201
-16378,9807,8806,500000.0,,9001
-16378,9807,8807,0.0,,9001
-16379,9807,8801,0.0,,9102
-16379,9807,8802,57.0,,9102
-16379,9807,8805,1.0,,9201
-16379,9807,8806,500000.0,,9001
-16379,9807,8807,0.0,,9001
-16380,9807,8801,0.0,,9102
-16380,9807,8802,60.0,,9102
-16380,9807,8805,1.0,,9201
-16380,9807,8806,500000.0,,9001
-16380,9807,8807,0.0,,9001
-16381,9807,8801,0.0,,9102
-16381,9807,8802,63.0,,9102
-16381,9807,8805,1.0,,9201
-16381,9807,8806,500000.0,,9001
-16381,9807,8807,0.0,,9001
-16382,9807,8801,0.0,,9102
-16382,9807,8802,66.0,,9102
-16382,9807,8805,1.0,,9201
-16382,9807,8806,500000.0,,9001
-16382,9807,8807,0.0,,9001
-16383,9807,8801,0.0,,9102
-16383,9807,8802,69.0,,9102
-16383,9807,8805,1.0,,9201
-16383,9807,8806,500000.0,,9001
-16383,9807,8807,0.0,,9001
-16384,9807,8801,0.0,,9102
-16384,9807,8802,72.0,,9102
-16384,9807,8805,1.0,,9201
-16384,9807,8806,500000.0,,9001
-16384,9807,8807,0.0,,9001
-16385,9807,8801,0.0,,9102
-16385,9807,8802,75.0,,9102
-16385,9807,8805,1.0,,9201
-16385,9807,8806,500000.0,,9001
-16385,9807,8807,0.0,,9001
-16386,9807,8801,0.0,,9102
-16386,9807,8802,78.0,,9102
-16386,9807,8805,1.0,,9201
-16386,9807,8806,500000.0,,9001
-16386,9807,8807,0.0,,9001
-16387,9807,8801,0.0,,9102
-16387,9807,8802,81.0,,9102
-16387,9807,8805,1.0,,9201
-16387,9807,8806,500000.0,,9001
-16387,9807,8807,0.0,,9001
-16388,9807,8801,0.0,,9102
-16388,9807,8802,84.0,,9102
-16388,9807,8805,1.0,,9201
-16388,9807,8806,500000.0,,9001
-16388,9807,8807,0.0,,9001
-16389,9807,8801,0.0,,9102
-16389,9807,8802,87.0,,9102
-16389,9807,8805,1.0,,9201
-16389,9807,8806,500000.0,,9001
-16389,9807,8807,0.0,,9001
-16390,9807,8801,0.0,,9102
-16390,9807,8802,90.0,,9102
-16390,9807,8805,1.0,,9201
-16390,9807,8806,500000.0,,9001
-16390,9807,8807,0.0,,9001
-16391,9807,8801,0.0,,9102
-16391,9807,8802,93.0,,9102
-16391,9807,8805,1.0,,9201
-16391,9807,8806,500000.0,,9001
-16391,9807,8807,0.0,,9001
-16392,9807,8801,0.0,,9102
-16392,9807,8802,96.0,,9102
-16392,9807,8805,1.0,,9201
-16392,9807,8806,500000.0,,9001
-16392,9807,8807,0.0,,9001
-16393,9807,8801,0.0,,9102
-16393,9807,8802,99.0,,9102
-16393,9807,8805,1.0,,9201
-16393,9807,8806,500000.0,,9001
-16393,9807,8807,0.0,,9001
-16394,9807,8801,0.0,,9102
-16394,9807,8802,102.0,,9102
-16394,9807,8805,1.0,,9201
-16394,9807,8806,500000.0,,9001
-16394,9807,8807,0.0,,9001
-16395,9807,8801,0.0,,9102
-16395,9807,8802,105.0,,9102
-16395,9807,8805,1.0,,9201
-16395,9807,8806,500000.0,,9001
-16395,9807,8807,0.0,,9001
-16396,9807,8801,0.0,,9102
-16396,9807,8802,108.0,,9102
-16396,9807,8805,1.0,,9201
-16396,9807,8806,500000.0,,9001
-16396,9807,8807,0.0,,9001
-16397,9807,8801,0.0,,9102
-16397,9807,8802,111.0,,9102
-16397,9807,8805,1.0,,9201
-16397,9807,8806,500000.0,,9001
-16397,9807,8807,0.0,,9001
-16398,9807,8801,0.0,,9102
-16398,9807,8802,114.0,,9102
-16398,9807,8805,1.0,,9201
-16398,9807,8806,500000.0,,9001
-16398,9807,8807,0.0,,9001
-16399,9807,8801,0.0,,9102
-16399,9807,8802,117.0,,9102
-16399,9807,8805,1.0,,9201
-16399,9807,8806,500000.0,,9001
-16399,9807,8807,0.0,,9001
-16400,9807,8801,0.0,,9102
-16400,9807,8802,0.0,,9102
-16400,9807,8805,0.9996,,9201
-16400,9807,8806,500000.0,,9001
-16400,9807,8807,0.0,,9001
-16405,9807,8801,0.0,,9102
-16405,9807,8802,5.0,,9102
-16405,9807,8805,0.9996,,9201
-16405,9807,8806,500000.0,,9001
-16405,9807,8807,0.0,,9001
-16406,9807,8801,0.0,,9102
-16406,9807,8802,6.0,,9102
-16406,9807,8805,0.9996,,9201
-16406,9807,8806,500000.0,,9001
-16406,9807,8807,0.0,,9001
-16411,9807,8801,0.0,,9102
-16411,9807,8802,11.0,,9102
-16411,9807,8805,0.9996,,9201
-16411,9807,8806,500000.0,,9001
-16411,9807,8807,0.0,,9001
-16412,9807,8801,0.0,,9102
-16412,9807,8802,12.0,,9102
-16412,9807,8805,0.9996,,9201
-16412,9807,8806,500000.0,,9001
-16412,9807,8807,0.0,,9001
-16413,9807,8801,0.0,,9102
-16413,9807,8802,13.0,,9102
-16413,9807,8805,0.9996,,9201
-16413,9807,8806,500000.0,,9001
-16413,9807,8807,0.0,,9001
-16430,9807,8801,0.0,,9102
-16430,9807,8802,30.0,,9102
-16430,9807,8805,0.9996,,9201
-16430,9807,8806,500000.0,,9001
-16430,9807,8807,0.0,,9001
-16506,9807,8801,0.0,,9102
-16506,9807,8802,106.0,,9102
-16506,9807,8805,0.9996,,9201
-16506,9807,8806,500000.0,,9001
-16506,9807,8807,0.0,,9001
-16586,9807,8801,0.0,,9102
-16586,9807,8802,106.0,,9102
-16586,9807,8805,1.0,,9201
-16586,9807,8806,500000.0,,9001
-16586,9807,8807,0.0,,9001
-16611,9807,8801,0.0,,9110
-16611,9807,8802,11.3,,9110
-16611,9807,8805,0.9996,,9201
-16611,9807,8806,500000.0,,9001
-16611,9807,8807,10000000.0,,9001
-16612,9807,8801,0.0,,9102
-16612,9807,8802,12.0,,9102
-16612,9807,8805,0.9996,,9201
-16612,9807,8806,500000.0,,9001
-16612,9807,8807,10000000.0,,9001
-16636,9807,8801,0.0,,9102
-16636,9807,8802,36.0,,9102
-16636,9807,8805,0.9996,,9201
-16636,9807,8806,500000.0,,9001
-16636,9807,8807,10000000.0,,9001
-16709,9807,8801,0.0,,9102
-16709,9807,8802,109.0,,9102
-16709,9807,8805,0.9996,,9201
-16709,9807,8806,500000.0,,9001
-16709,9807,8807,10000000.0,,9001
-16716,9807,8801,0.0,,9102
-16716,9807,8802,116.0,,9102
-16716,9807,8805,0.9996,,9201
-16716,9807,8806,500000.0,,9001
-16716,9807,8807,10000000.0,,9001
-16732,9807,8801,0.0,,9102
-16732,9807,8802,132.0,,9102
-16732,9807,8805,0.9996,,9201
-16732,9807,8806,500000.0,,9001
-16732,9807,8807,10000000.0,,9001
-17001,9807,8801,0.0,,9102
-17001,9807,8802,-1.0,,9102
-17001,9807,8805,0.9996,,9201
-17001,9807,8806,500000.0,,9001
-17001,9807,8807,0.0,,9001
-17005,9807,8801,0.0,,9102
-17005,9807,8802,-5.0,,9102
-17005,9807,8805,0.9996,,9201
-17005,9807,8806,500000.0,,9001
-17005,9807,8807,0.0,,9001
-17054,9807,8801,0.0,,9102
-17054,9807,8802,-54.0,,9102
-17054,9807,8805,0.9996,,9201
-17054,9807,8806,500000.0,,9001
-17054,9807,8807,0.0,,9001
-17348,9807,8801,0.0,,9102
-17348,9807,8802,105.0,,9102
-17348,9807,8805,0.9996,,9201
-17348,9807,8806,500000.0,,9001
-17348,9807,8807,10000000.0,,9001
-17349,9807,8801,0.0,,9102
-17349,9807,8802,111.0,,9102
-17349,9807,8805,0.9996,,9201
-17349,9807,8806,500000.0,,9001
-17349,9807,8807,10000000.0,,9001
-17350,9807,8801,0.0,,9102
-17350,9807,8802,117.0,,9102
-17350,9807,8805,0.9996,,9201
-17350,9807,8806,500000.0,,9001
-17350,9807,8807,10000000.0,,9001
-17351,9807,8801,0.0,,9102
-17351,9807,8802,123.0,,9102
-17351,9807,8805,0.9996,,9201
-17351,9807,8806,500000.0,,9001
-17351,9807,8807,10000000.0,,9001
-17352,9807,8801,0.0,,9102
-17352,9807,8802,129.0,,9102
-17352,9807,8805,0.9996,,9201
-17352,9807,8806,500000.0,,9001
-17352,9807,8807,10000000.0,,9001
-17353,9807,8801,0.0,,9102
-17353,9807,8802,135.0,,9102
-17353,9807,8805,0.9996,,9201
-17353,9807,8806,500000.0,,9001
-17353,9807,8807,10000000.0,,9001
-17354,9807,8801,0.0,,9102
-17354,9807,8802,141.0,,9102
-17354,9807,8805,0.9996,,9201
-17354,9807,8806,500000.0,,9001
-17354,9807,8807,10000000.0,,9001
-17355,9807,8801,0.0,,9102
-17355,9807,8802,147.0,,9102
-17355,9807,8805,0.9996,,9201
-17355,9807,8806,500000.0,,9001
-17355,9807,8807,10000000.0,,9001
-17356,9807,8801,0.0,,9102
-17356,9807,8802,153.0,,9102
-17356,9807,8805,0.9996,,9201
-17356,9807,8806,500000.0,,9001
-17356,9807,8807,10000000.0,,9001
-17357,9807,8801,0.0,,9102
-17357,9807,8802,159.0,,9102
-17357,9807,8805,0.9996,,9201
-17357,9807,8806,500000.0,,9001
-17357,9807,8807,10000000.0,,9001
-17358,9807,8801,0.0,,9102
-17358,9807,8802,165.0,,9102
-17358,9807,8805,0.9996,,9201
-17358,9807,8806,500000.0,,9001
-17358,9807,8807,10000000.0,,9001
-17448,9807,8801,0.0,,9102
-17448,9807,8802,105.0,,9102
-17448,9807,8805,0.9996,,9201
-17448,9807,8806,500000.0,,9001
-17448,9807,8807,10000000.0,,9001
-17449,9807,8801,0.0,,9102
-17449,9807,8802,111.0,,9102
-17449,9807,8805,0.9996,,9201
-17449,9807,8806,500000.0,,9001
-17449,9807,8807,10000000.0,,9001
-17450,9807,8801,0.0,,9102
-17450,9807,8802,117.0,,9102
-17450,9807,8805,0.9996,,9201
-17450,9807,8806,500000.0,,9001
-17450,9807,8807,10000000.0,,9001
-17451,9807,8801,0.0,,9102
-17451,9807,8802,123.0,,9102
-17451,9807,8805,0.9996,,9201
-17451,9807,8806,500000.0,,9001
-17451,9807,8807,10000000.0,,9001
-17452,9807,8801,0.0,,9102
-17452,9807,8802,129.0,,9102
-17452,9807,8805,0.9996,,9201
-17452,9807,8806,500000.0,,9001
-17452,9807,8807,10000000.0,,9001
-17453,9807,8801,0.0,,9102
-17453,9807,8802,135.0,,9102
-17453,9807,8805,0.9996,,9201
-17453,9807,8806,500000.0,,9001
-17453,9807,8807,10000000.0,,9001
-17454,9807,8801,0.0,,9102
-17454,9807,8802,141.0,,9102
-17454,9807,8805,0.9996,,9201
-17454,9807,8806,500000.0,,9001
-17454,9807,8807,10000000.0,,9001
-17455,9807,8801,0.0,,9102
-17455,9807,8802,147.0,,9102
-17455,9807,8805,0.9996,,9201
-17455,9807,8806,500000.0,,9001
-17455,9807,8807,10000000.0,,9001
-17456,9807,8801,0.0,,9102
-17456,9807,8802,153.0,,9102
-17456,9807,8805,0.9996,,9201
-17456,9807,8806,500000.0,,9001
-17456,9807,8807,10000000.0,,9001
-17457,9807,8801,0.0,,9102
-17457,9807,8802,159.0,,9102
-17457,9807,8805,0.9996,,9201
-17457,9807,8806,500000.0,,9001
-17457,9807,8807,10000000.0,,9001
-17458,9807,8801,0.0,,9102
-17458,9807,8802,165.0,,9102
-17458,9807,8805,0.9996,,9201
-17458,9807,8806,500000.0,,9001
-17458,9807,8807,10000000.0,,9001
-17515,9808,8801,0.0,,9102
-17515,9808,8802,15.0,,9102
-17515,9808,8805,1.0,,9201
-17515,9808,8806,0.0,,9001
-17515,9808,8807,0.0,,9001
-17517,9808,8801,0.0,,9102
-17517,9808,8802,17.0,,9102
-17517,9808,8805,1.0,,9201
-17517,9808,8806,0.0,,9001
-17517,9808,8807,0.0,,9001
-17519,9808,8801,0.0,,9102
-17519,9808,8802,19.0,,9102
-17519,9808,8805,1.0,,9201
-17519,9808,8806,0.0,,9001
-17519,9808,8807,0.0,,9001
-17521,9808,8801,0.0,,9102
-17521,9808,8802,21.0,,9102
-17521,9808,8805,1.0,,9201
-17521,9808,8806,0.0,,9001
-17521,9808,8807,0.0,,9001
-17523,9808,8801,0.0,,9102
-17523,9808,8802,23.0,,9102
-17523,9808,8805,1.0,,9201
-17523,9808,8806,0.0,,9001
-17523,9808,8807,0.0,,9001
-17525,9808,8801,0.0,,9102
-17525,9808,8802,25.0,,9102
-17525,9808,8805,1.0,,9201
-17525,9808,8806,0.0,,9001
-17525,9808,8807,0.0,,9001
-17527,9808,8801,0.0,,9102
-17527,9808,8802,27.0,,9102
-17527,9808,8805,1.0,,9201
-17527,9808,8806,0.0,,9001
-17527,9808,8807,0.0,,9001
-17529,9808,8801,0.0,,9102
-17529,9808,8802,29.0,,9102
-17529,9808,8805,1.0,,9201
-17529,9808,8806,0.0,,9001
-17529,9808,8807,0.0,,9001
-17531,9808,8801,0.0,,9102
-17531,9808,8802,31.0,,9102
-17531,9808,8805,1.0,,9201
-17531,9808,8806,0.0,,9001
-17531,9808,8807,0.0,,9001
-17533,9808,8801,0.0,,9102
-17533,9808,8802,33.0,,9102
-17533,9808,8805,1.0,,9201
-17533,9808,8806,0.0,,9001
-17533,9808,8807,0.0,,9001
-17611,9808,8801,-22.0,,9102
-17611,9808,8802,11.0,,9102
-17611,9808,8805,1.0,,9201
-17611,9808,8806,0.0,,9031
-17611,9808,8807,0.0,,9031
-17613,9808,8801,-22.0,,9102
-17613,9808,8802,13.0,,9102
-17613,9808,8805,1.0,,9201
-17613,9808,8806,0.0,,9031
-17613,9808,8807,0.0,,9031
-17615,9808,8801,-22.0,,9102
-17615,9808,8802,15.0,,9102
-17615,9808,8805,1.0,,9201
-17615,9808,8806,0.0,,9031
-17615,9808,8807,0.0,,9031
-17617,9808,8801,-22.0,,9102
-17617,9808,8802,17.0,,9102
-17617,9808,8805,1.0,,9201
-17617,9808,8806,0.0,,9031
-17617,9808,8807,0.0,,9031
-17619,9808,8801,-22.0,,9102
-17619,9808,8802,19.0,,9102
-17619,9808,8805,1.0,,9201
-17619,9808,8806,0.0,,9031
-17619,9808,8807,0.0,,9031
-17621,9808,8801,-22.0,,9102
-17621,9808,8802,21.0,,9102
-17621,9808,8805,1.0,,9201
-17621,9808,8806,0.0,,9031
-17621,9808,8807,0.0,,9031
-17623,9808,8801,-22.0,,9102
-17623,9808,8802,23.0,,9102
-17623,9808,8805,1.0,,9201
-17623,9808,8806,0.0,,9031
-17623,9808,8807,0.0,,9031
-17625,9808,8801,-22.0,,9102
-17625,9808,8802,25.0,,9102
-17625,9808,8805,1.0,,9201
-17625,9808,8806,0.0,,9031
-17625,9808,8807,0.0,,9031
-17700,9807,8801,0.0,,9110
-17700,9807,8802,-55.3,,9110
-17700,9807,8805,0.9999,,9201
-17700,9807,8806,304800.0,,9001
-17700,9807,8807,0.0,,9001
-17701,9807,8801,0.0,,9102
-17701,9807,8802,-53.0,,9102
-17701,9807,8805,0.9999,,9201
-17701,9807,8806,304800.0,,9001
-17701,9807,8807,0.0,,9001
-17702,9807,8801,0.0,,9102
-17702,9807,8802,-56.0,,9102
-17702,9807,8805,0.9999,,9201
-17702,9807,8806,304800.0,,9001
-17702,9807,8807,0.0,,9001
-17703,9807,8801,0.0,,9110
-17703,9807,8802,-58.3,,9110
-17703,9807,8805,0.9999,,9201
-17703,9807,8806,304800.0,,9001
-17703,9807,8807,0.0,,9001
-17704,9807,8801,0.0,,9110
-17704,9807,8802,-61.3,,9110
-17704,9807,8805,0.9999,,9201
-17704,9807,8806,304800.0,,9001
-17704,9807,8807,0.0,,9001
-17705,9807,8801,0.0,,9110
-17705,9807,8802,-64.3,,9110
-17705,9807,8805,0.9999,,9201
-17705,9807,8806,304800.0,,9001
-17705,9807,8807,0.0,,9001
-17706,9807,8801,0.0,,9110
-17706,9807,8802,-67.3,,9110
-17706,9807,8805,0.9999,,9201
-17706,9807,8806,304800.0,,9001
-17706,9807,8807,0.0,,9001
-17707,9807,8801,0.0,,9110
-17707,9807,8802,-70.3,,9110
-17707,9807,8805,0.9999,,9201
-17707,9807,8806,304800.0,,9001
-17707,9807,8807,0.0,,9001
-17708,9807,8801,0.0,,9110
-17708,9807,8802,-73.3,,9110
-17708,9807,8805,0.9999,,9201
-17708,9807,8806,304800.0,,9001
-17708,9807,8807,0.0,,9001
-17709,9807,8801,0.0,,9110
-17709,9807,8802,-76.3,,9110
-17709,9807,8805,0.9999,,9201
-17709,9807,8806,304800.0,,9001
-17709,9807,8807,0.0,,9001
-17710,9807,8801,0.0,,9110
-17710,9807,8802,-79.3,,9110
-17710,9807,8805,0.9999,,9201
-17710,9807,8806,304800.0,,9001
-17710,9807,8807,0.0,,9001
-17711,9807,8801,0.0,,9110
-17711,9807,8802,-82.3,,9110
-17711,9807,8805,0.9999,,9201
-17711,9807,8806,304800.0,,9001
-17711,9807,8807,0.0,,9001
-17712,9807,8801,0.0,,9102
-17712,9807,8802,-81.0,,9102
-17712,9807,8805,0.9999,,9201
-17712,9807,8806,304800.0,,9001
-17712,9807,8807,0.0,,9001
-17713,9807,8801,0.0,,9102
-17713,9807,8802,-84.0,,9102
-17713,9807,8805,0.9999,,9201
-17713,9807,8806,304800.0,,9001
-17713,9807,8807,0.0,,9001
-17714,9807,8801,0.0,,9102
-17714,9807,8802,-87.0,,9102
-17714,9807,8805,0.9999,,9201
-17714,9807,8806,304800.0,,9001
-17714,9807,8807,0.0,,9001
-17715,9807,8801,0.0,,9102
-17715,9807,8802,-90.0,,9102
-17715,9807,8805,0.9999,,9201
-17715,9807,8806,304800.0,,9001
-17715,9807,8807,0.0,,9001
-17716,9807,8801,0.0,,9102
-17716,9807,8802,-93.0,,9102
-17716,9807,8805,0.9999,,9201
-17716,9807,8806,304800.0,,9001
-17716,9807,8807,0.0,,9001
-17717,9807,8801,0.0,,9102
-17717,9807,8802,-96.0,,9102
-17717,9807,8805,0.9999,,9201
-17717,9807,8806,304800.0,,9001
-17717,9807,8807,0.0,,9001
-17794,9807,8801,0.0,,9110
-17794,9807,8802,-61.3,,9110
-17794,9807,8805,0.9999,,9201
-17794,9807,8806,4500000.0,,9001
-17794,9807,8807,0.0,,9001
-17795,9807,8801,0.0,,9110
-17795,9807,8802,-64.3,,9110
-17795,9807,8805,0.9999,,9201
-17795,9807,8806,5500000.0,,9001
-17795,9807,8807,0.0,,9001
-17801,9807,8801,33.0,,9110
-17801,9807,8802,129.3,,9110
-17801,9807,8805,0.9999,,9201
-17801,9807,8806,0.0,,9001
-17801,9807,8807,0.0,,9001
-17802,9807,8801,33.0,,9110
-17802,9807,8802,131.0,,9110
-17802,9807,8805,0.9999,,9201
-17802,9807,8806,0.0,,9001
-17802,9807,8807,0.0,,9001
-17803,9807,8801,36.0,,9110
-17803,9807,8802,132.1,,9110
-17803,9807,8805,0.9999,,9201
-17803,9807,8806,0.0,,9001
-17803,9807,8807,0.0,,9001
-17804,9807,8801,33.0,,9110
-17804,9807,8802,133.3,,9110
-17804,9807,8805,0.9999,,9201
-17804,9807,8806,0.0,,9001
-17804,9807,8807,0.0,,9001
-17805,9807,8801,36.0,,9110
-17805,9807,8802,134.2,,9110
-17805,9807,8805,0.9999,,9201
-17805,9807,8806,0.0,,9001
-17805,9807,8807,0.0,,9001
-17806,9807,8801,36.0,,9110
-17806,9807,8802,136.0,,9110
-17806,9807,8805,0.9999,,9201
-17806,9807,8806,0.0,,9001
-17806,9807,8807,0.0,,9001
-17807,9807,8801,36.0,,9110
-17807,9807,8802,137.1,,9110
-17807,9807,8805,0.9999,,9201
-17807,9807,8806,0.0,,9001
-17807,9807,8807,0.0,,9001
-17808,9807,8801,36.0,,9110
-17808,9807,8802,138.3,,9110
-17808,9807,8805,0.9999,,9201
-17808,9807,8806,0.0,,9001
-17808,9807,8807,0.0,,9001
-17809,9807,8801,36.0,,9110
-17809,9807,8802,139.5,,9110
-17809,9807,8805,0.9999,,9201
-17809,9807,8806,0.0,,9001
-17809,9807,8807,0.0,,9001
-17810,9807,8801,40.0,,9110
-17810,9807,8802,140.5,,9110
-17810,9807,8805,0.9999,,9201
-17810,9807,8806,0.0,,9001
-17810,9807,8807,0.0,,9001
-17811,9807,8801,44.0,,9110
-17811,9807,8802,140.15,,9110
-17811,9807,8805,0.9999,,9201
-17811,9807,8806,0.0,,9001
-17811,9807,8807,0.0,,9001
-17812,9807,8801,44.0,,9110
-17812,9807,8802,142.15,,9110
-17812,9807,8805,0.9999,,9201
-17812,9807,8806,0.0,,9001
-17812,9807,8807,0.0,,9001
-17813,9807,8801,44.0,,9110
-17813,9807,8802,144.15,,9110
-17813,9807,8805,0.9999,,9201
-17813,9807,8806,0.0,,9001
-17813,9807,8807,0.0,,9001
-17814,9807,8801,26.0,,9110
-17814,9807,8802,142.0,,9110
-17814,9807,8805,0.9999,,9201
-17814,9807,8806,0.0,,9001
-17814,9807,8807,0.0,,9001
-17815,9807,8801,26.0,,9110
-17815,9807,8802,127.3,,9110
-17815,9807,8805,0.9999,,9201
-17815,9807,8806,0.0,,9001
-17815,9807,8807,0.0,,9001
-17816,9807,8801,26.0,,9110
-17816,9807,8802,124.0,,9110
-17816,9807,8805,0.9999,,9201
-17816,9807,8806,0.0,,9001
-17816,9807,8807,0.0,,9001
-17817,9807,8801,26.0,,9110
-17817,9807,8802,131.0,,9110
-17817,9807,8805,0.9999,,9201
-17817,9807,8806,0.0,,9001
-17817,9807,8807,0.0,,9001
-17818,9807,8801,20.0,,9110
-17818,9807,8802,136.0,,9110
-17818,9807,8805,0.9999,,9201
-17818,9807,8806,0.0,,9001
-17818,9807,8807,0.0,,9001
-17819,9807,8801,26.0,,9110
-17819,9807,8802,154.0,,9110
-17819,9807,8805,0.9999,,9201
-17819,9807,8806,0.0,,9001
-17819,9807,8807,0.0,,9001
-17901,9807,8801,-36.5247515,,9110
-17901,9807,8802,174.45516217,,9110
-17901,9807,8805,0.9999,,9201
-17901,9807,8806,300000.0,,9001
-17901,9807,8807,700000.0,,9001
-17902,9807,8801,-37.45404993,,9110
-17902,9807,8802,176.27583101,,9110
-17902,9807,8805,1.0,,9201
-17902,9807,8806,300000.0,,9001
-17902,9807,8807,700000.0,,9001
-17903,9807,8801,-38.372893,,9110
-17903,9807,8802,177.53082906,,9110
-17903,9807,8805,1.0,,9201
-17903,9807,8806,300000.0,,9001
-17903,9807,8807,700000.0,,9001
-17904,9807,8801,-39.39033455,,9110
-17904,9807,8802,176.40252499,,9110
-17904,9807,8805,1.0,,9201
-17904,9807,8806,300000.0,,9001
-17904,9807,8807,700000.0,,9001
-17905,9807,8801,-39.08087299,,9110
-17905,9807,8802,174.13408423,,9110
-17905,9807,8805,1.0,,9201
-17905,9807,8806,300000.0,,9001
-17905,9807,8807,700000.0,,9001
-17906,9807,8801,-39.30448934,,9110
-17906,9807,8802,175.38241325,,9110
-17906,9807,8805,1.0,,9201
-17906,9807,8806,300000.0,,9001
-17906,9807,8807,700000.0,,9001
-17907,9807,8801,-40.14310097,,9110
-17907,9807,8802,175.29171586,,9110
-17907,9807,8805,1.0,,9201
-17907,9807,8806,300000.0,,9001
-17907,9807,8807,700000.0,,9001
-17908,9807,8801,-40.55319175,,9110
-17908,9807,8802,175.38504588,,9110
-17908,9807,8805,1.0,,9201
-17908,9807,8806,300000.0,,9001
-17908,9807,8807,700000.0,,9001
-17909,9807,8801,-41.18047507,,9110
-17909,9807,8802,174.46358432,,9110
-17909,9807,8805,1.0,,9201
-17909,9807,8806,300000.0,,9001
-17909,9807,8807,700000.0,,9001
-17910,9807,8801,-40.42531326,,9110
-17910,9807,8802,172.40193674,,9110
-17910,9807,8805,1.0,,9201
-17910,9807,8806,300000.0,,9001
-17910,9807,8807,700000.0,,9001
-17911,9807,8801,-41.1628361,,9110
-17911,9807,8802,173.17575405,,9110
-17911,9807,8805,1.0,,9201
-17911,9807,8806,300000.0,,9001
-17911,9807,8807,700000.0,,9001
-17912,9807,8801,-41.17236815,,9110
-17912,9807,8802,172.06325015,,9110
-17912,9807,8805,1.0,,9201
-17912,9807,8806,300000.0,,9001
-17912,9807,8807,700000.0,,9001
-17913,9807,8801,-41.48388903,,9110
-17913,9807,8802,171.34525362,,9110
-17913,9807,8805,1.0,,9201
-17913,9807,8806,300000.0,,9001
-17913,9807,8807,700000.0,,9001
-17914,9807,8801,-42.20012994,,9110
-17914,9807,8802,171.32591767,,9110
-17914,9807,8805,1.0,,9201
-17914,9807,8806,300000.0,,9001
-17914,9807,8807,700000.0,,9001
-17915,9807,8801,-42.41208197,,9110
-17915,9807,8802,173.00364802,,9110
-17915,9807,8805,1.0,,9201
-17915,9807,8806,300000.0,,9001
-17915,9807,8807,700000.0,,9001
-17916,9807,8801,-41.3240152,,9110
-17916,9807,8802,173.48074668,,9110
-17916,9807,8805,1.0,,9201
-17916,9807,8806,300000.0,,9001
-17916,9807,8807,700000.0,,9001
-17917,9807,8801,-42.53107605,,9110
-17917,9807,8802,170.58479766,,9110
-17917,9807,8805,1.0,,9201
-17917,9807,8806,300000.0,,9001
-17917,9807,8807,700000.0,,9001
-17918,9807,8801,-43.06364613,,9110
-17918,9807,8802,170.1539333,,9110
-17918,9807,8805,1.0,,9201
-17918,9807,8806,300000.0,,9001
-17918,9807,8807,700000.0,,9001
-17919,9807,8801,-43.58400904,,9110
-17919,9807,8802,168.36225612,,9110
-17919,9807,8805,1.0,,9201
-17919,9807,8806,300000.0,,9001
-17919,9807,8807,700000.0,,9001
-17920,9807,8801,-43.35262953,,9110
-17920,9807,8802,172.43378969,,9110
-17920,9807,8805,1.0,,9201
-17920,9807,8806,300000.0,,9001
-17920,9807,8807,700000.0,,9001
-17921,9807,8801,-43.44553616,,9110
-17921,9807,8802,171.21386945,,9110
-17921,9807,8805,1.0,,9201
-17921,9807,8806,300000.0,,9001
-17921,9807,8807,700000.0,,9001
-17922,9807,8801,-44.24079933,,9110
-17922,9807,8802,171.0326103,,9110
-17922,9807,8805,1.0,,9201
-17922,9807,8806,300000.0,,9001
-17922,9807,8807,700000.0,,9001
-17923,9807,8801,-44.44069647,,9110
-17923,9807,8802,169.28039183,,9110
-17923,9807,8805,1.0,,9201
-17923,9807,8806,300000.0,,9001
-17923,9807,8807,700000.0,,9001
-17924,9807,8801,-45.07584493,,9110
-17924,9807,8802,168.23551083,,9110
-17924,9807,8805,1.0,,9201
-17924,9807,8806,300000.0,,9001
-17924,9807,8807,700000.0,,9001
-17925,9807,8801,-45.33494142,,9110
-17925,9807,8802,167.44199024,,9110
-17925,9807,8805,1.0,,9201
-17925,9807,8806,300000.0,,9001
-17925,9807,8807,700000.0,,9001
-17926,9807,8801,-45.48583078,,9110
-17926,9807,8802,170.37429426,,9110
-17926,9807,8805,1.0,,9201
-17926,9807,8806,300000.0,,9001
-17926,9807,8807,700000.0,,9001
-17927,9807,8801,-45.51414481,,9110
-17927,9807,8802,170.16573208,,9110
-17927,9807,8805,0.99996,,9201
-17927,9807,8806,300000.0,,9001
-17927,9807,8807,700000.0,,9001
-17928,9807,8801,-46.36000346,,9110
-17928,9807,8802,168.20343392,,9110
-17928,9807,8805,1.0,,9201
-17928,9807,8806,300002.66,,9001
-17928,9807,8807,699999.58,,9001
-17931,9807,8801,-36.5247,,9110
-17931,9807,8802,174.4551,,9110
-17931,9807,8805,0.9999,,9201
-17931,9807,8806,400000.0,,9001
-17931,9807,8807,800000.0,,9001
-17932,9807,8801,-37.454,,9110
-17932,9807,8802,176.2758,,9110
-17932,9807,8805,1.0,,9201
-17932,9807,8806,400000.0,,9001
-17932,9807,8807,800000.0,,9001
-17933,9807,8801,-38.3728,,9110
-17933,9807,8802,177.5308,,9110
-17933,9807,8805,1.0,,9201
-17933,9807,8806,400000.0,,9001
-17933,9807,8807,800000.0,,9001
-17934,9807,8801,-39.3903,,9110
-17934,9807,8802,176.4025,,9110
-17934,9807,8805,1.0,,9201
-17934,9807,8806,400000.0,,9001
-17934,9807,8807,800000.0,,9001
-17935,9807,8801,-39.0808,,9110
-17935,9807,8802,174.134,,9110
-17935,9807,8805,1.0,,9201
-17935,9807,8806,400000.0,,9001
-17935,9807,8807,800000.0,,9001
-17936,9807,8801,-39.3044,,9110
-17936,9807,8802,175.3824,,9110
-17936,9807,8805,1.0,,9201
-17936,9807,8806,400000.0,,9001
-17936,9807,8807,800000.0,,9001
-17937,9807,8801,-40.1431,,9110
-17937,9807,8802,175.2917,,9110
-17937,9807,8805,1.0,,9201
-17937,9807,8806,400000.0,,9001
-17937,9807,8807,800000.0,,9001
-17938,9807,8801,-40.5531,,9110
-17938,9807,8802,175.385,,9110
-17938,9807,8805,1.0,,9201
-17938,9807,8806,400000.0,,9001
-17938,9807,8807,800000.0,,9001
-17939,9807,8801,-41.1804,,9110
-17939,9807,8802,174.4635,,9110
-17939,9807,8805,1.0,,9201
-17939,9807,8806,400000.0,,9001
-17939,9807,8807,800000.0,,9001
-17940,9807,8801,-40.4253,,9110
-17940,9807,8802,172.4019,,9110
-17940,9807,8805,1.0,,9201
-17940,9807,8806,400000.0,,9001
-17940,9807,8807,800000.0,,9001
-17941,9807,8801,-41.1628,,9110
-17941,9807,8802,173.1757,,9110
-17941,9807,8805,1.0,,9201
-17941,9807,8806,400000.0,,9001
-17941,9807,8807,800000.0,,9001
-17942,9807,8801,-41.1723,,9110
-17942,9807,8802,172.0632,,9110
-17942,9807,8805,1.0,,9201
-17942,9807,8806,400000.0,,9001
-17942,9807,8807,800000.0,,9001
-17943,9807,8801,-41.4838,,9110
-17943,9807,8802,171.3452,,9110
-17943,9807,8805,1.0,,9201
-17943,9807,8806,400000.0,,9001
-17943,9807,8807,800000.0,,9001
-17944,9807,8801,-42.2001,,9110
-17944,9807,8802,171.3259,,9110
-17944,9807,8805,1.0,,9201
-17944,9807,8806,400000.0,,9001
-17944,9807,8807,800000.0,,9001
-17945,9807,8801,-42.412,,9110
-17945,9807,8802,173.0036,,9110
-17945,9807,8805,1.0,,9201
-17945,9807,8806,400000.0,,9001
-17945,9807,8807,800000.0,,9001
-17946,9807,8801,-41.324,,9110
-17946,9807,8802,173.4807,,9110
-17946,9807,8805,1.0,,9201
-17946,9807,8806,400000.0,,9001
-17946,9807,8807,800000.0,,9001
-17947,9807,8801,-42.531,,9110
-17947,9807,8802,170.5847,,9110
-17947,9807,8805,1.0,,9201
-17947,9807,8806,400000.0,,9001
-17947,9807,8807,800000.0,,9001
-17948,9807,8801,-43.0636,,9110
-17948,9807,8802,170.1539,,9110
-17948,9807,8805,1.0,,9201
-17948,9807,8806,400000.0,,9001
-17948,9807,8807,800000.0,,9001
-17949,9807,8801,-43.584,,9110
-17949,9807,8802,168.3622,,9110
-17949,9807,8805,1.0,,9201
-17949,9807,8806,400000.0,,9001
-17949,9807,8807,800000.0,,9001
-17950,9807,8801,-43.3526,,9110
-17950,9807,8802,172.4337,,9110
-17950,9807,8805,1.0,,9201
-17950,9807,8806,400000.0,,9001
-17950,9807,8807,800000.0,,9001
-17951,9807,8801,-43.4455,,9110
-17951,9807,8802,171.2138,,9110
-17951,9807,8805,1.0,,9201
-17951,9807,8806,400000.0,,9001
-17951,9807,8807,800000.0,,9001
-17952,9807,8801,-44.2407,,9110
-17952,9807,8802,171.0326,,9110
-17952,9807,8805,1.0,,9201
-17952,9807,8806,400000.0,,9001
-17952,9807,8807,800000.0,,9001
-17953,9807,8801,-44.4406,,9110
-17953,9807,8802,169.2803,,9110
-17953,9807,8805,1.0,,9201
-17953,9807,8806,400000.0,,9001
-17953,9807,8807,800000.0,,9001
-17954,9807,8801,-45.0758,,9110
-17954,9807,8802,168.2355,,9110
-17954,9807,8805,1.0,,9201
-17954,9807,8806,400000.0,,9001
-17954,9807,8807,800000.0,,9001
-17955,9807,8801,-45.3349,,9110
-17955,9807,8802,167.4419,,9110
-17955,9807,8805,1.0,,9201
-17955,9807,8806,400000.0,,9001
-17955,9807,8807,800000.0,,9001
-17956,9807,8801,-45.4858,,9110
-17956,9807,8802,170.3742,,9110
-17956,9807,8805,1.0,,9201
-17956,9807,8806,400000.0,,9001
-17956,9807,8807,800000.0,,9001
-17957,9807,8801,-45.5141,,9110
-17957,9807,8802,170.1657,,9110
-17957,9807,8805,0.99996,,9201
-17957,9807,8806,400000.0,,9001
-17957,9807,8807,800000.0,,9001
-17958,9807,8801,-46.36,,9110
-17958,9807,8802,168.2034,,9110
-17958,9807,8805,1.0,,9201
-17958,9807,8806,400000.0,,9001
-17958,9807,8807,800000.0,,9001
-18011,9801,8801,40.0,,9105
-18011,9801,8802,3.0,,9105
-18011,9801,8805,0.999625544,,9201
-18011,9801,8806,500000.0,,9001
-18011,9801,8807,300000.0,,9001
-18012,9801,8801,37.0,,9105
-18012,9801,8802,3.0,,9105
-18012,9801,8805,0.999625769,,9201
-18012,9801,8806,500000.0,,9001
-18012,9801,8807,300000.0,,9001
-18021,9801,8801,40.0,,9105
-18021,9801,8802,3.0,,9105
-18021,9801,8805,0.999625544,,9201
-18021,9801,8806,500135.0,,9001
-18021,9801,8807,300090.0,,9001
-18022,9801,8801,37.0,,9105
-18022,9801,8802,3.0,,9105
-18022,9801,8805,0.999625769,,9201
-18022,9801,8806,500135.0,,9001
-18022,9801,8807,300090.0,,9001
-18031,9807,8801,-90.0,,9102
-18031,9807,8802,-72.0,,9102
-18031,9807,8805,1.0,,9201
-18031,9807,8806,1500000.0,,9001
-18031,9807,8807,0.0,,9001
-18032,9807,8801,-90.0,,9102
-18032,9807,8802,-69.0,,9102
-18032,9807,8805,1.0,,9201
-18032,9807,8806,2500000.0,,9001
-18032,9807,8807,0.0,,9001
-18033,9807,8801,-90.0,,9102
-18033,9807,8802,-66.0,,9102
-18033,9807,8805,1.0,,9201
-18033,9807,8806,3500000.0,,9001
-18033,9807,8807,0.0,,9001
-18034,9807,8801,-90.0,,9102
-18034,9807,8802,-63.0,,9102
-18034,9807,8805,1.0,,9201
-18034,9807,8806,4500000.0,,9001
-18034,9807,8807,0.0,,9001
-18035,9807,8801,-90.0,,9102
-18035,9807,8802,-60.0,,9102
-18035,9807,8805,1.0,,9201
-18035,9807,8806,5500000.0,,9001
-18035,9807,8807,0.0,,9001
-18036,9807,8801,-90.0,,9102
-18036,9807,8802,-57.0,,9102
-18036,9807,8805,1.0,,9201
-18036,9807,8806,6500000.0,,9001
-18036,9807,8807,0.0,,9001
-18037,9807,8801,-90.0,,9102
-18037,9807,8802,-54.0,,9102
-18037,9807,8805,1.0,,9201
-18037,9807,8806,7500000.0,,9001
-18037,9807,8807,0.0,,9001
-18041,9807,8801,0.0,,9102
-18041,9807,8802,28.0,,9102
-18041,9807,8805,1.0,,9201
-18041,9807,8806,0.0,,9001
-18041,9807,8807,0.0,,9001
-18042,9807,8801,0.0,,9102
-18042,9807,8802,31.0,,9102
-18042,9807,8805,1.0,,9201
-18042,9807,8806,0.0,,9001
-18042,9807,8807,0.0,,9001
-18043,9807,8801,0.0,,9102
-18043,9807,8802,34.0,,9102
-18043,9807,8805,1.0,,9201
-18043,9807,8806,0.0,,9001
-18043,9807,8807,0.0,,9001
-18044,9807,8801,0.0,,9110
-18044,9807,8802,10.2,,9110
-18044,9807,8805,1.0,,9201
-18044,9807,8806,150000.0,,9001
-18044,9807,8807,0.0,,9001
-18045,9807,8801,0.0,,9110
-18045,9807,8802,13.2,,9110
-18045,9807,8805,1.0,,9201
-18045,9807,8806,450000.0,,9001
-18045,9807,8807,0.0,,9001
-18046,9807,8801,0.0,,9110
-18046,9807,8802,16.2,,9110
-18046,9807,8805,1.0,,9201
-18046,9807,8806,750000.0,,9001
-18046,9807,8807,0.0,,9001
-18051,9807,8801,4.355657,,9110
-18051,9807,8802,-77.04513,,9110
-18051,9807,8805,1.0,,9201
-18051,9807,8806,1000000.0,,9001
-18051,9807,8807,1000000.0,,9001
-18052,9807,8801,4.355657,,9110
-18052,9807,8802,-74.04513,,9110
-18052,9807,8805,1.0,,9201
-18052,9807,8806,1000000.0,,9001
-18052,9807,8807,1000000.0,,9001
-18053,9807,8801,4.355657,,9110
-18053,9807,8802,-71.04513,,9110
-18053,9807,8805,1.0,,9201
-18053,9807,8806,1000000.0,,9001
-18053,9807,8807,1000000.0,,9001
-18054,9807,8801,4.355657,,9110
-18054,9807,8802,-68.04513,,9110
-18054,9807,8805,1.0,,9201
-18054,9807,8806,1000000.0,,9001
-18054,9807,8807,1000000.0,,9001
-18061,9801,8801,22.21,,9110
-18061,9801,8802,-81.0,,9110
-18061,9801,8805,0.99993602,,9201
-18061,9801,8806,500000.0,,9001
-18061,9801,8807,280296.016,,9001
-18062,9801,8801,20.43,,9110
-18062,9801,8802,-76.5,,9110
-18062,9801,8805,0.99994848,,9201
-18062,9801,8806,500000.0,,9001
-18062,9801,8807,229126.939,,9001
-18071,9807,8801,30.0,,9102
-18071,9807,8802,35.0,,9102
-18071,9807,8805,1.0,,9201
-18071,9807,8806,300000.0,,9001
-18071,9807,8807,1100000.0,,9001
-18072,9807,8801,30.0,,9102
-18072,9807,8802,31.0,,9102
-18072,9807,8805,1.0,,9201
-18072,9807,8806,615000.0,,9001
-18072,9807,8807,810000.0,,9001
-18073,9807,8801,30.0,,9102
-18073,9807,8802,27.0,,9102
-18073,9807,8805,1.0,,9201
-18073,9807,8806,700000.0,,9001
-18073,9807,8807,200000.0,,9001
-18074,9807,8801,30.0,,9102
-18074,9807,8802,27.0,,9102
-18074,9807,8805,1.0,,9201
-18074,9807,8806,700000.0,,9001
-18074,9807,8807,1200000.0,,9001
-18081,9801,8801,55.0,,9105
-18081,9801,8802,0.0,,9105
-18081,9801,8805,0.999877341,,9201
-18081,9801,8806,600000.0,,9001
-18081,9801,8807,1200000.0,,9001
-18082,9801,8801,52.0,,9105
-18082,9801,8802,0.0,,9105
-18082,9801,8805,0.99987742,,9201
-18082,9801,8806,600000.0,,9001
-18082,9801,8807,2200000.0,,9001
-18083,9801,8801,49.0,,9105
-18083,9801,8802,0.0,,9105
-18083,9801,8805,0.999877499,,9201
-18083,9801,8806,600000.0,,9001
-18083,9801,8807,3200000.0,,9001
-18084,9801,8801,46.85,,9105
-18084,9801,8802,0.0,,9105
-18084,9801,8805,0.99994471,,9201
-18084,9801,8806,234.358,,9001
-18084,9801,8807,4185861.369,,9001
-18085,9802,8821,46.3,,9110
-18085,9802,8822,3.0,,9110
-18085,9802,8823,49.0,,9110
-18085,9802,8824,44.0,,9110
-18085,9802,8826,700000.0,,9001
-18085,9802,8827,6600000.0,,9001
-18086,9801,8801,46.48,,9110
-18086,9801,8802,2.2014025,,9110
-18086,9801,8805,0.99987742,,9201
-18086,9801,8806,600000.0,,9001
-18086,9801,8807,2200000.0,,9001
-18091,9801,8801,55.0,,9105
-18091,9801,8802,0.0,,9105
-18091,9801,8805,0.999877341,,9201
-18091,9801,8806,600000.0,,9001
-18091,9801,8807,200000.0,,9001
-18092,9801,8801,52.0,,9105
-18092,9801,8802,0.0,,9105
-18092,9801,8805,0.99987742,,9201
-18092,9801,8806,600000.0,,9001
-18092,9801,8807,200000.0,,9001
-18093,9801,8801,49.0,,9105
-18093,9801,8802,0.0,,9105
-18093,9801,8805,0.999877499,,9201
-18093,9801,8806,600000.0,,9001
-18093,9801,8807,200000.0,,9001
-18094,9801,8801,46.85,,9105
-18094,9801,8802,0.0,,9105
-18094,9801,8805,0.99994471,,9201
-18094,9801,8806,234.358,,9001
-18094,9801,8807,185861.369,,9001
-18110,9801,8801,39.3,,9110
-18110,9801,8802,68.0,,9110
-18110,9801,8805,0.99846154,,9201
-18110,9801,8806,2355500.0,,9084
-18110,9801,8807,2590000.0,,9084
-18111,9801,8801,32.3,,9110
-18111,9801,8802,68.0,,9110
-18111,9801,8805,0.99878641,,9201
-18111,9801,8806,3000000.0,,9084
-18111,9801,8807,1000000.0,,9084
-18112,9801,8801,26.0,,9102
-18112,9801,8802,74.0,,9102
-18112,9801,8805,0.99878641,,9201
-18112,9801,8806,3000000.0,,9084
-18112,9801,8807,1000000.0,,9084
-18113,9801,8801,26.0,,9102
-18113,9801,8802,90.0,,9102
-18113,9801,8805,0.99878641,,9201
-18113,9801,8806,3000000.0,,9084
-18113,9801,8807,1000000.0,,9084
-18114,9801,8801,19.0,,9102
-18114,9801,8802,80.0,,9102
-18114,9801,8805,0.99878641,,9201
-18114,9801,8806,3000000.0,,9084
-18114,9801,8807,1000000.0,,9084
-18115,9801,8801,19.0,,9102
-18115,9801,8802,100.0,,9102
-18115,9801,8805,0.99878641,,9201
-18115,9801,8806,3000000.0,,9084
-18115,9801,8807,1000000.0,,9084
-18116,9801,8801,12.0,,9102
-18116,9801,8802,80.0,,9102
-18116,9801,8805,0.99878641,,9201
-18116,9801,8806,3000000.0,,9084
-18116,9801,8807,1000000.0,,9084
-18117,9801,8801,12.0,,9102
-18117,9801,8802,100.0,,9102
-18117,9801,8805,0.99878641,,9201
-18117,9801,8806,3000000.0,,9084
-18117,9801,8807,1000000.0,,9084
-18121,9807,8801,0.0,,9102
-18121,9807,8802,9.0,,9102
-18121,9807,8805,0.9996,,9201
-18121,9807,8806,1500000.0,,9001
-18121,9807,8807,0.0,,9001
-18122,9807,8801,0.0,,9102
-18122,9807,8802,15.0,,9102
-18122,9807,8805,0.9996,,9201
-18122,9807,8806,2520000.0,,9001
-18122,9807,8807,0.0,,9001
-18131,9801,8801,37.0,,9105
-18131,9801,8802,-6.0,,9105
-18131,9801,8805,0.999625769,,9201
-18131,9801,8806,500000.0,,9001
-18131,9801,8807,300000.0,,9001
-18132,9801,8801,33.0,,9105
-18132,9801,8802,-6.0,,9105
-18132,9801,8805,0.999615596,,9201
-18132,9801,8806,500000.0,,9001
-18132,9801,8807,300000.0,,9001
-18133,9801,8801,29.0,,9105
-18133,9801,8802,-6.0,,9105
-18133,9801,8805,0.9996,,9201
-18133,9801,8806,1200000.0,,9001
-18133,9801,8807,400000.0,,9001
-18141,9807,8801,-39.0,,9110
-18141,9807,8802,175.3,,9110
-18141,9807,8805,1.0,,9201
-18141,9807,8806,300000.0,,9040
-18141,9807,8807,400000.0,,9040
-18142,9807,8801,-44.0,,9110
-18142,9807,8802,171.3,,9110
-18142,9807,8805,1.0,,9201
-18142,9807,8806,500000.0,,9040
-18142,9807,8807,500000.0,,9040
-18151,9807,8801,4.0,,9110
-18151,9807,8802,4.3,,9110
-18151,9807,8805,0.99975,,9201
-18151,9807,8806,230738.26,,9001
-18151,9807,8807,0.0,,9001
-18152,9807,8801,4.0,,9110
-18152,9807,8802,8.3,,9110
-18152,9807,8805,0.99975,,9201
-18152,9807,8806,670553.98,,9001
-18152,9807,8807,0.0,,9001
-18153,9807,8801,4.0,,9110
-18153,9807,8802,12.3,,9110
-18153,9807,8805,0.99975,,9201
-18153,9807,8806,1110369.7,,9001
-18153,9807,8807,0.0,,9001
-18161,9807,8801,-6.0,,9110
-18161,9807,8802,-80.3,,9110
-18161,9807,8805,0.99983008,,9201
-18161,9807,8806,222000.0,,9001
-18161,9807,8807,1426834.743,,9001
-18162,9807,8801,-9.3,,9110
-18162,9807,8802,-76.0,,9110
-18162,9807,8805,0.99932994,,9201
-18162,9807,8806,720000.0,,9001
-18162,9807,8807,1039979.159,,9001
-18163,9807,8801,-9.3,,9110
-18163,9807,8802,-70.3,,9110
-18163,9807,8805,0.99952992,,9201
-18163,9807,8806,1324000.0,,9001
-18163,9807,8807,1040084.558,,9001
-18171,9807,8801,0.0,,9102
-18171,9807,8802,117.0,,9102
-18171,9807,8805,0.99995,,9201
-18171,9807,8806,500000.0,,9001
-18171,9807,8807,0.0,,9001
-18172,9807,8801,0.0,,9102
-18172,9807,8802,119.0,,9102
-18172,9807,8805,0.99995,,9201
-18172,9807,8806,500000.0,,9001
-18172,9807,8807,0.0,,9001
-18173,9807,8801,0.0,,9102
-18173,9807,8802,121.0,,9102
-18173,9807,8805,0.99995,,9201
-18173,9807,8806,500000.0,,9001
-18173,9807,8807,0.0,,9001
-18174,9807,8801,0.0,,9102
-18174,9807,8802,123.0,,9102
-18174,9807,8805,0.99995,,9201
-18174,9807,8806,500000.0,,9001
-18174,9807,8807,0.0,,9001
-18175,9807,8801,0.0,,9102
-18175,9807,8802,125.0,,9102
-18175,9807,8805,0.99995,,9201
-18175,9807,8806,500000.0,,9001
-18175,9807,8807,0.0,,9001
-18181,9801,8801,40.0,,9105
-18181,9801,8802,11.0,,9105
-18181,9801,8805,0.999625544,,9201
-18181,9801,8806,500000.0,,9001
-18181,9801,8807,300000.0,,9001
-18182,9801,8801,37.0,,9105
-18182,9801,8802,11.0,,9105
-18182,9801,8805,0.999625769,,9201
-18182,9801,8806,500000.0,,9001
-18182,9801,8807,300000.0,,9001
-18191,9807,8801,0.0,,9102
-18191,9807,8802,21.0,,9102
-18191,9807,8805,1.0,,9201
-18191,9807,8806,1500000.0,,9001
-18191,9807,8807,0.0,,9001
-18192,9807,8801,0.0,,9102
-18192,9807,8802,24.0,,9102
-18192,9807,8805,1.0,,9201
-18192,9807,8806,2500000.0,,9001
-18192,9807,8807,0.0,,9001
-18193,9807,8801,0.0,,9102
-18193,9807,8802,27.0,,9102
-18193,9807,8805,1.0,,9201
-18193,9807,8806,3500000.0,,9001
-18193,9807,8807,0.0,,9001
-18194,9807,8801,0.0,,9102
-18194,9807,8802,30.0,,9102
-18194,9807,8805,1.0,,9201
-18194,9807,8806,4500000.0,,9001
-18194,9807,8807,0.0,,9001
-18201,9806,8801,31.4402749,,9110
-18201,9806,8802,35.124349,,9110
-18201,9806,8806,170251.555,,9001
-18201,9806,8807,126867.909,,9001
-18202,9807,8801,31.4402749,,9110
-18202,9807,8802,35.124349,,9110
-18202,9807,8805,1.0,,9201
-18202,9807,8806,170251.555,,9001
-18202,9807,8807,1126867.909,,9001
-18203,9806,8801,31.4402749,,9110
-18203,9806,8802,35.124349,,9110
-18203,9806,8806,170251.555,,9001
-18203,9806,8807,1126867.909,,9001
-18204,9807,8801,31.4403817,,9110
-18204,9807,8802,35.1216261,,9110
-18204,9807,8805,1.0000067,,9201
-18204,9807,8806,219529.584,,9001
-18204,9807,8807,626907.39,,9001
-18211,9801,8801,16.49,,9110
-18211,9801,8802,-90.2,,9110
-18211,9801,8805,0.99992226,,9201
-18211,9801,8806,500000.0,,9001
-18211,9801,8807,292209.579,,9001
-18212,9801,8801,14.54,,9110
-18212,9801,8802,-90.2,,9110
-18212,9801,8805,0.99989906,,9201
-18212,9801,8806,500000.0,,9001
-18212,9801,8807,325992.681,,9001
-18221,9807,8801,58.0,,9110
-18221,9807,8802,-4.4,,9110
-18221,9807,8805,1.0,,9201
-18221,9807,8806,0.0,,9001
-18221,9807,8807,0.0,,9001
-18222,9807,8801,58.0,,9110
-18222,9807,8802,-2.2,,9110
-18222,9807,8805,1.0,,9201
-18222,9807,8806,0.0,,9001
-18222,9807,8807,0.0,,9001
-18223,9807,8801,58.0,,9110
-18223,9807,8802,0.0,,9110
-18223,9807,8805,1.0,,9201
-18223,9807,8806,0.0,,9001
-18223,9807,8807,0.0,,9001
-18224,9807,8801,58.0,,9110
-18224,9807,8802,2.3,,9110
-18224,9807,8805,1.0,,9201
-18224,9807,8806,0.0,,9001
-18224,9807,8807,0.0,,9001
-18225,9807,8801,58.0,,9110
-18225,9807,8802,6.1,,9110
-18225,9807,8805,1.0,,9201
-18225,9807,8806,0.0,,9001
-18225,9807,8807,0.0,,9001
-18226,9807,8801,58.0,,9110
-18226,9807,8802,10.1,,9110
-18226,9807,8805,1.0,,9201
-18226,9807,8806,0.0,,9001
-18226,9807,8807,0.0,,9001
-18227,9807,8801,58.0,,9110
-18227,9807,8802,14.1,,9110
-18227,9807,8805,1.0,,9201
-18227,9807,8806,0.0,,9001
-18227,9807,8807,0.0,,9001
-18228,9807,8801,58.0,,9110
-18228,9807,8802,18.2,,9110
-18228,9807,8805,1.0,,9201
-18228,9807,8806,0.0,,9001
-18228,9807,8807,0.0,,9001
-18231,9801,8801,32.3,,9110
-18231,9801,8802,68.0,,9110
-18231,9801,8805,0.99878641,,9201
-18231,9801,8806,2743195.5,,9001
-18231,9801,8807,914398.5,,9001
-18232,9801,8801,26.0,,9102
-18232,9801,8802,74.0,,9102
-18232,9801,8805,0.99878641,,9201
-18232,9801,8806,2743195.5,,9001
-18232,9801,8807,914398.5,,9001
-18233,9801,8801,19.0,,9102
-18233,9801,8802,80.0,,9102
-18233,9801,8805,0.99878641,,9201
-18233,9801,8806,2743195.5,,9001
-18233,9801,8807,914398.5,,9001
-18234,9801,8801,12.0,,9102
-18234,9801,8802,80.0,,9102
-18234,9801,8805,0.99878641,,9201
-18234,9801,8806,2743195.5,,9001
-18234,9801,8807,914398.5,,9001
-18235,9801,8801,26.0,,9102
-18235,9801,8802,90.0,,9102
-18235,9801,8805,0.99878641,,9201
-18235,9801,8806,2743195.5,,9001
-18235,9801,8807,914398.5,,9001
-18236,9801,8801,32.3,,9110
-18236,9801,8802,68.0,,9110
-18236,9801,8805,0.99878641,,9201
-18236,9801,8806,2743196.4,,9001
-18236,9801,8807,914398.8,,9001
-18237,9801,8801,26.0,,9102
-18237,9801,8802,74.0,,9102
-18237,9801,8805,0.99878641,,9201
-18237,9801,8806,2743196.4,,9001
-18237,9801,8807,914398.8,,9001
-18238,9801,8801,26.0,,9102
-18238,9801,8802,90.0,,9102
-18238,9801,8805,0.99878641,,9201
-18238,9801,8806,2743185.69,,9001
-18238,9801,8807,914395.23,,9001
-18240,9807,8801,0.0,,9102
-18240,9807,8802,9.0,,9102
-18240,9807,8805,0.9999,,9201
-18240,9807,8806,200000.0,,9001
-18240,9807,8807,0.0,,9001
-18241,9807,8801,0.0,,9102
-18241,9807,8802,11.0,,9102
-18241,9807,8805,0.9999,,9201
-18241,9807,8806,200000.0,,9001
-18241,9807,8807,0.0,,9001
-18242,9807,8801,0.0,,9102
-18242,9807,8802,13.0,,9102
-18242,9807,8805,0.9999,,9201
-18242,9807,8806,200000.0,,9001
-18242,9807,8807,0.0,,9001
-18243,9807,8801,0.0,,9102
-18243,9807,8802,15.0,,9102
-18243,9807,8805,0.9999,,9201
-18243,9807,8806,200000.0,,9001
-18243,9807,8807,0.0,,9001
-18244,9807,8801,0.0,,9102
-18244,9807,8802,17.0,,9102
-18244,9807,8805,0.9999,,9201
-18244,9807,8806,200000.0,,9001
-18244,9807,8807,0.0,,9001
-18245,9807,8801,0.0,,9102
-18245,9807,8802,19.0,,9102
-18245,9807,8805,0.9999,,9201
-18245,9807,8806,200000.0,,9001
-18245,9807,8807,0.0,,9001
-18246,9807,8801,0.0,,9102
-18246,9807,8802,21.0,,9102
-18246,9807,8805,0.9999,,9201
-18246,9807,8806,200000.0,,9001
-18246,9807,8807,0.0,,9001
-18247,9807,8801,0.0,,9102
-18247,9807,8802,23.0,,9102
-18247,9807,8805,0.9999,,9201
-18247,9807,8806,200000.0,,9001
-18247,9807,8807,0.0,,9001
-18248,9807,8801,0.0,,9102
-18248,9807,8802,25.0,,9102
-18248,9807,8805,0.9999,,9201
-18248,9807,8806,200000.0,,9001
-18248,9807,8807,0.0,,9001
-18251,9807,8801,38.0,,9102
-18251,9807,8802,129.0,,9102
-18251,9807,8805,1.0,,9201
-18251,9807,8806,200000.0,,9001
-18251,9807,8807,500000.0,,9001
-18252,9807,8801,38.0,,9102
-18252,9807,8802,127.0,,9102
-18252,9807,8805,1.0,,9201
-18252,9807,8806,200000.0,,9001
-18252,9807,8807,500000.0,,9001
-18253,9807,8801,38.0,,9102
-18253,9807,8802,125.0,,9102
-18253,9807,8805,1.0,,9201
-18253,9807,8806,200000.0,,9001
-18253,9807,8807,500000.0,,9001
-18260,9801,8801,10.1,,9110
-18260,9801,8802,-71.3620224,,9110
-18260,9801,8805,1.0,,9201
-18260,9801,8806,0.0,,9001
-18260,9801,8807,-52684.972,,9001
-18261,9801,8801,10.1,,9110
-18261,9801,8802,-71.3620224,,9110
-18261,9801,8805,1.0,,9201
-18261,9801,8806,200000.0,,9001
-18261,9801,8807,147315.028,,9001
-18262,9801,8801,10.1,,9110
-18262,9801,8802,-71.3620224,,9110
-18262,9801,8805,1.0,,9201
-18262,9801,8806,500000.0,,9001
-18262,9801,8807,447315.028,,9001
-18263,9801,8801,10.1,,9110
-18263,9801,8802,-71.3620224,,9110
-18263,9801,8805,1.0,,9201
-18263,9801,8806,-17044.0,,9001
-18263,9801,8807,-23139.97,,9001
-18275,9807,8801,0.0,,9102
-18275,9807,8802,15.0,,9102
-18275,9807,8805,0.9999,,9201
-18275,9807,8806,5500000.0,,9001
-18275,9807,8807,0.0,,9001
-18276,9807,8801,0.0,,9102
-18276,9807,8802,18.0,,9102
-18276,9807,8805,0.9999,,9201
-18276,9807,8806,6500000.0,,9001
-18276,9807,8807,0.0,,9001
-18277,9807,8801,0.0,,9102
-18277,9807,8802,21.0,,9102
-18277,9807,8805,0.9999,,9201
-18277,9807,8806,7500000.0,,9001
-18277,9807,8807,0.0,,9001
-18278,9807,8801,0.0,,9102
-18278,9807,8802,24.0,,9102
-18278,9807,8805,0.9999,,9201
-18278,9807,8806,8500000.0,,9001
-18278,9807,8807,0.0,,9001
-18281,9809,8801,50.373,,9110
-18281,9809,8802,21.05,,9110
-18281,9809,8805,0.9998,,9201
-18281,9809,8806,4637000.0,,9001
-18281,9809,8807,5647000.0,,9001
-18282,9809,8801,53.0007,,9110
-18282,9809,8802,21.301,,9110
-18282,9809,8805,0.9998,,9201
-18282,9809,8806,4603000.0,,9001
-18282,9809,8807,5806000.0,,9001
-18283,9809,8801,53.35,,9110
-18283,9809,8802,17.003,,9110
-18283,9809,8805,0.9998,,9201
-18283,9809,8806,3501000.0,,9001
-18283,9809,8807,5999000.0,,9001
-18284,9809,8801,51.4015,,9110
-18284,9809,8802,16.402,,9110
-18284,9809,8805,0.9998,,9201
-18284,9809,8806,3703000.0,,9001
-18284,9809,8807,5627000.0,,9001
-18285,9807,8801,0.0,,9110
-18285,9807,8802,18.573,,9110
-18285,9807,8805,0.999983,,9201
-18285,9807,8806,237000.0,,9001
-18285,9807,8807,-4700000.0,,9001
-18300,9807,8801,0.0,,9102
-18300,9807,8802,19.0,,9102
-18300,9807,8805,0.9993,,9201
-18300,9807,8806,500000.0,,9001
-18300,9807,8807,-5300000.0,,9001
-18305,9807,8801,0.0,,9102
-18305,9807,8802,15.0,,9102
-18305,9807,8805,0.999923,,9201
-18305,9807,8806,5500000.0,,9001
-18305,9807,8807,0.0,,9001
-18306,9807,8801,0.0,,9102
-18306,9807,8802,18.0,,9102
-18306,9807,8805,0.999923,,9201
-18306,9807,8806,6500000.0,,9001
-18306,9807,8807,0.0,,9001
-18307,9807,8801,0.0,,9102
-18307,9807,8802,21.0,,9102
-18307,9807,8805,0.999923,,9201
-18307,9807,8806,7500000.0,,9001
-18307,9807,8807,0.0,,9001
-18308,9807,8801,0.0,,9102
-18308,9807,8802,24.0,,9102
-18308,9807,8805,0.999923,,9201
-18308,9807,8806,8500000.0,,9001
-18308,9807,8807,0.0,,9001
-18401,9807,8801,0.0,,9110
-18401,9807,8802,9.3,,9110
-18401,9807,8805,0.99995,,9201
-18401,9807,8806,200000.0,,9001
-18401,9807,8807,0.0,,9001
-18402,9807,8801,0.0,,9102
-18402,9807,8802,12.0,,9102
-18402,9807,8805,0.99995,,9201
-18402,9807,8806,500000.0,,9001
-18402,9807,8807,0.0,,9001
-18403,9807,8801,0.0,,9102
-18403,9807,8802,15.0,,9102
-18403,9807,8805,1.0,,9201
-18403,9807,8806,900000.0,,9001
-18403,9807,8807,0.0,,9001
-18411,9807,8801,0.0,,9110
-18411,9807,8802,-13.3,,9110
-18411,9807,8805,0.999,,9201
-18411,9807,8806,1000000.0,,9001
-18411,9807,8807,1000000.0,,9001
-18412,9807,8801,0.0,,9110
-18412,9807,8802,-6.3,,9110
-18412,9807,8805,0.999,,9201
-18412,9807,8806,1000000.0,,9001
-18412,9807,8807,1000000.0,,9001
-18413,9807,8801,0.0,,9110
-18413,9807,8802,0.3,,9110
-18413,9807,8805,0.999,,9201
-18413,9807,8806,1000000.0,,9001
-18413,9807,8807,1000000.0,,9001
-18414,9807,8801,0.0,,9110
-18414,9807,8802,7.3,,9110
-18414,9807,8805,0.999,,9201
-18414,9807,8806,1000000.0,,9001
-18414,9807,8807,1000000.0,,9001
-18415,9807,8801,0.0,,9110
-18415,9807,8802,10.3,,9110
-18415,9807,8805,0.999,,9201
-18415,9807,8806,1000000.0,,9001
-18415,9807,8807,1000000.0,,9001
-18416,9807,8801,0.0,,9110
-18416,9807,8802,17.4,,9110
-18416,9807,8805,0.999,,9201
-18416,9807,8806,1000000.0,,9001
-18416,9807,8807,1000000.0,,9001
-18417,9807,8801,0.0,,9110
-18417,9807,8802,24.3,,9110
-18417,9807,8805,0.999,,9201
-18417,9807,8806,1000000.0,,9001
-18417,9807,8807,1000000.0,,9001
-18421,9826,8801,82.3,,9110
-18421,9826,8802,-40.0,,9110
-18421,9826,8805,1.0,,9201
-18421,9826,8806,0.0,,9001
-18421,9826,8807,0.0,,9001
-18422,9826,8801,79.3,,9110
-18422,9826,8802,-24.0,,9110
-18422,9826,8805,1.0,,9201
-18422,9826,8806,0.0,,9001
-18422,9826,8807,0.0,,9001
-18423,9826,8801,76.3,,9110
-18423,9826,8802,-20.0,,9110
-18423,9826,8805,1.0,,9201
-18423,9826,8806,0.0,,9001
-18423,9826,8807,0.0,,9001
-18424,9826,8801,73.3,,9110
-18424,9826,8802,-24.0,,9110
-18424,9826,8805,1.0,,9201
-18424,9826,8806,0.0,,9001
-18424,9826,8807,0.0,,9001
-18425,9826,8801,70.3,,9110
-18425,9826,8802,-24.0,,9110
-18425,9826,8805,1.0,,9201
-18425,9826,8806,0.0,,9001
-18425,9826,8807,0.0,,9001
-18426,9826,8801,67.3,,9110
-18426,9826,8802,-32.0,,9110
-18426,9826,8805,1.0,,9201
-18426,9826,8806,0.0,,9001
-18426,9826,8807,0.0,,9001
-18427,9826,8801,64.3,,9110
-18427,9826,8802,-40.0,,9110
-18427,9826,8805,1.0,,9201
-18427,9826,8806,0.0,,9001
-18427,9826,8807,0.0,,9001
-18428,9826,8801,61.3,,9110
-18428,9826,8802,-48.0,,9110
-18428,9826,8805,1.0,,9201
-18428,9826,8806,0.0,,9001
-18428,9826,8807,0.0,,9001
-18432,9826,8801,79.3,,9110
-18432,9826,8802,-64.0,,9110
-18432,9826,8805,1.0,,9201
-18432,9826,8806,0.0,,9001
-18432,9826,8807,0.0,,9001
-18433,9826,8801,76.3,,9110
-18433,9826,8802,-64.0,,9110
-18433,9826,8805,1.0,,9201
-18433,9826,8806,0.0,,9001
-18433,9826,8807,0.0,,9001
-18434,9826,8801,73.3,,9110
-18434,9826,8802,-52.0,,9110
-18434,9826,8805,1.0,,9201
-18434,9826,8806,0.0,,9001
-18434,9826,8807,0.0,,9001
-18435,9826,8801,70.3,,9110
-18435,9826,8802,-52.0,,9110
-18435,9826,8805,1.0,,9201
-18435,9826,8806,0.0,,9001
-18435,9826,8807,0.0,,9001
-18436,9826,8801,67.3,,9110
-18436,9826,8802,-52.0,,9110
-18436,9826,8805,1.0,,9201
-18436,9826,8806,0.0,,9001
-18436,9826,8807,0.0,,9001
-18437,9826,8801,64.3,,9110
-18437,9826,8802,-52.0,,9110
-18437,9826,8805,1.0,,9201
-18437,9826,8806,0.0,,9001
-18437,9826,8807,0.0,,9001
-18441,9807,8801,0.07,,9110
-18441,9807,8802,41.32,,9110
-18441,9807,8805,1.0,,9003
-18441,9807,8806,1300000.0,,9001
-18441,9807,8807,0.0,,9001
-18442,9807,8801,0.07,,9110
-18442,9807,8802,44.32,,9110
-18442,9807,8805,1.0,,9003
-18442,9807,8806,2300000.0,,9001
-18442,9807,8807,0.0,,9001
-18443,9807,8801,0.07,,9110
-18443,9807,8802,47.32,,9110
-18443,9807,8805,1.0,,9201
-18443,9807,8806,3300000.0,,9001
-18443,9807,8807,0.0,,9001
-18444,9807,8801,0.07,,9110
-18444,9807,8802,50.32,,9110
-18444,9807,8805,1.0,,9201
-18444,9807,8806,4300000.0,,9001
-18444,9807,8807,0.0,,9001
-18446,9807,8801,0.08,,9110
-18446,9807,8802,50.46,,9110
-18446,9807,8805,1.0,,9201
-18446,9807,8806,2300000.0,,9001
-18446,9807,8807,0.0,,9001
-18447,9807,8801,0.08,,9110
-18447,9807,8802,53.46,,9110
-18447,9807,8805,1.0,,9201
-18447,9807,8806,3300000.0,,9001
-18447,9807,8807,0.0,,9001
-18448,9807,8801,0.08,,9110
-18448,9807,8802,56.46,,9110
-18448,9807,8805,1.0,,9201
-18448,9807,8806,4300000.0,,9001
-18448,9807,8807,0.0,,9001
-19900,9807,8801,0.0,,9102
-19900,9807,8802,51.0,,9102
-19900,9807,8805,0.9996,,9201
-19900,9807,8806,500000.0,,9001
-19900,9807,8807,0.0,,9001
-19901,9802,8821,90.0,,9110
-19901,9802,8822,0.0,,9110
-19901,9802,8823,49.5,,9110
-19901,9802,8824,51.1,,9110
-19901,9802,8826,150000.0,,9001
-19901,9802,8827,5400000.0,,9001
-19902,9803,8821,90.0,,9110
-19902,9803,8822,4.2124983,,9110
-19902,9803,8823,49.5,,9110
-19902,9803,8824,51.1,,9110
-19902,9803,8826,150000.01256,,9001
-19902,9803,8827,5400088.4378,,9001
-19903,9801,8801,55.0,,9105
-19903,9801,8802,6.0,,9105
-19903,9801,8805,0.99950908,,9201
-19903,9801,8806,500000.0,,9001
-19903,9801,8807,300000.0,,9001
-19904,9807,8801,4.4,,9110
-19904,9807,8802,-1.0,,9110
-19904,9807,8805,0.99975,,9201
-19904,9807,8806,274319.51,,9001
-19904,9807,8807,0.0,,9001
-19905,9804,8801,0.0,,9102
-19905,9804,8802,110.0,,9102
-19905,9804,8805,0.997,,9201
-19905,9804,8806,3900000.0,,9001
-19905,9804,8807,900000.0,,9001
-19906,9801,8801,32.3,,9110
-19906,9801,8802,45.0,,9110
-19906,9801,8805,0.9987864078,,9201
-19906,9801,8806,1500000.0,,9001
-19906,9801,8807,1166200.0,,9001
-19907,9807,8801,29.0134566,,9110
-19907,9807,8802,46.3,,9110
-19907,9807,8805,0.9994,,9201
-19907,9807,8806,800000.0,,9001
-19907,9807,8807,0.0,,9001
-19908,9807,8801,53.3,,9110
-19908,9807,8802,-8.0,,9110
-19908,9807,8805,1.000035,,9201
-19908,9807,8806,200000.0,,9001
-19908,9807,8807,250000.0,,9001
-19909,9801,8801,18.0,,9102
-19909,9801,8802,-77.0,,9102
-19909,9801,8805,1.0,,9201
-19909,9801,8806,550000.0,,9005
-19909,9801,8807,400000.0,,9005
-19910,9801,8801,18.0,,9102
-19910,9801,8802,-77.0,,9102
-19910,9801,8805,1.0,,9201
-19910,9801,8806,250000.0,,9001
-19910,9801,8807,150000.0,,9001
-19911,9815,8811,-21.0,,9105
-19911,9815,8812,49.0,,9105
-19911,9815,8813,21.0,,9105
-19911,9815,8814,21.0,,9105
-19911,9815,8815,0.9995,,9201
-19911,9815,8816,400000.0,,9001
-19911,9815,8817,800000.0,,9001
-19913,9809,8801,52.0922178,,9110
-19913,9809,8802,5.23155,,9110
-19913,9809,8805,0.9999079,,9201
-19913,9809,8806,0.0,,9001
-19913,9809,8807,0.0,,9001
-19914,9809,8801,52.0922178,,9110
-19914,9809,8802,5.23155,,9110
-19914,9809,8805,0.9999079,,9201
-19914,9809,8806,155000.0,,9001
-19914,9809,8807,463000.0,,9001
-19915,9801,8801,15.0,,9102
-19915,9801,8802,45.0,,9102
-19915,9801,8805,0.999365678,,9201
-19915,9801,8806,1500000.0,,9001
-19915,9801,8807,1000000.0,,9001
-19916,9807,8801,49.0,,9102
-19916,9807,8802,-2.0,,9102
-19916,9807,8805,0.999601272,,9201
-19916,9807,8806,400000.0,,9001
-19916,9807,8807,-100000.0,,9001
-19917,9811,8801,-41.0,,9102
-19917,9811,8802,173.0,,9102
-19917,9811,8806,2510000.0,,9001
-19917,9811,8807,6023150.0,,9001
-19919,9807,8801,24.27,,9110
-19919,9807,8802,51.13,,9110
-19919,9807,8805,0.99999,,9201
-19919,9807,8806,200000.0,,9001
-19919,9807,8807,300000.0,,9001
-19920,9806,8801,1.1715528,,9110
-19920,9806,8802,103.5110808,,9110
-19920,9806,8806,30000.0,,9001
-19920,9806,8807,30000.0,,9001
-19921,9801,8801,40.0,,9102
-19921,9801,8802,0.0,,9102
-19921,9801,8805,0.9988085293,,9201
-19921,9801,8806,600000.0,,9001
-19921,9801,8807,600000.0,,9001
-19922,9815,8811,46.570866,,9110
-19922,9815,8812,7.26225,,9110
-19922,9815,8813,90.0,,9110
-19922,9815,8814,90.0,,9110
-19922,9815,8815,1.0,,9201
-19922,9815,8816,600000.0,,9001
-19922,9815,8817,200000.0,,9001
-19923,9815,8811,46.570866,,9110
-19923,9815,8812,0.0,,9110
-19923,9815,8813,90.0,,9110
-19923,9815,8814,90.0,,9110
-19923,9815,8815,1.0,,9201
-19923,9815,8816,0.0,,9001
-19923,9815,8817,0.0,,9001
-19924,9806,8801,11.1507843,,9110
-19924,9806,8802,-60.4109632,,9110
-19924,9806,8806,187500.0,,9039
-19924,9806,8807,180000.0,,9039
-19925,9806,8801,10.263,,9110
-19925,9806,8802,-61.2,,9110
-19925,9806,8806,430000.0,,9039
-19925,9806,8807,325000.0,,9039
-19926,9809,8801,46.0,,9102
-19926,9809,8802,25.0,,9102
-19926,9809,8805,0.99975,,9201
-19926,9809,8806,500000.0,,9001
-19926,9809,8807,500000.0,,9001
-19927,9809,8801,45.54,,9110
-19927,9809,8802,25.23328772,,9110
-19927,9809,8805,0.9996667,,9201
-19927,9809,8806,500000.0,,9001
-19927,9809,8807,500000.0,,9001
-19928,9807,8801,0.0,,9102
-19928,9807,8802,48.0,,9102
-19928,9807,8805,0.9996,,9201
-19928,9807,8806,500000.0,,9001
-19928,9807,8807,0.0,,9001
-19929,9807,8801,0.0,,9110
-19929,9807,8802,15.48298,,9110
-19929,9807,8805,1.0,,9201
-19929,9807,8806,1500000.0,,9001
-19929,9807,8807,0.0,,9001
-19930,9807,8801,0.0,,9102
-19930,9807,8802,24.0,,9102
-19930,9807,8805,0.9996,,9201
-19930,9807,8806,500000.0,,9001
-19930,9807,8807,0.0,,9001
-19931,9815,8811,47.08398174,,9110
-19931,9815,8812,19.02548584,,9110
-19931,9815,8813,90.0,,9110
-19931,9815,8814,90.0,,9110
-19931,9815,8815,0.99993,,9201
-19931,9815,8816,650000.0,,9001
-19931,9815,8817,200000.0,,9001
-19933,9809,8801,47.15,,9110
-19933,9809,8802,-63.0,,9110
-19933,9809,8805,0.999912,,9201
-19933,9809,8806,700000.0,,9001
-19933,9809,8807,400000.0,,9001
-19934,9807,8801,0.0,,9102
-19934,9807,8802,24.0,,9102
-19934,9807,8805,0.9998,,9201
-19934,9807,8806,500000.0,,9001
-19934,9807,8807,0.0,,9001
-19935,9812,8806,40000.0,,9062
-19935,9812,8807,0.0,,9062
-19935,9812,8811,4.0,,9110
-19935,9812,8812,102.15,,9110
-19935,9812,8813,323.01328458,,9110
-19935,9812,8814,323.07483685,,9110
-19935,9812,8815,0.99984,,9201
-19936,9807,8801,39.4,,9110
-19936,9807,8802,1.0,,9110
-19936,9807,8805,1.0,,9201
-19936,9807,8806,200000.0,,9001
-19936,9807,8807,300000.0,,9001
-19937,9816,8821,38.81973,,9105
-19937,9816,8822,7.83445,,9105
-19937,9816,8826,270.0,,9036
-19937,9816,8827,582.0,,9036
-19938,9802,8821,57.310319415,,9110
-19938,9802,8822,24.0,,9110
-19938,9802,8823,59.2,,9110
-19938,9802,8824,58.0,,9110
-19938,9802,8826,500000.0,,9001
-19938,9802,8827,6375000.0,,9001
-19939,9807,8801,0.0,,9102
-19939,9807,8802,24.0,,9102
-19939,9807,8805,0.9996,,9201
-19939,9807,8806,500000.0,,9001
-19939,9807,8807,0.0,,9001
-19940,9817,8801,34.39,,9110
-19940,9817,8802,37.21,,9110
-19940,9817,8805,0.9996256,,9201
-19940,9817,8806,300000.0,,9001
-19940,9817,8807,300000.0,,9001
-19941,9818,8801,0.0,,9102
-19941,9818,8802,-54.0,,9102
-19941,9818,8806,5000000.0,,9001
-19941,9818,8807,10000000.0,,9001
-19942,9807,8801,0.0,,9102
-19942,9807,8802,-62.0,,9102
-19942,9807,8805,0.9995,,9201
-19942,9807,8806,400000.0,,9001
-19942,9807,8807,0.0,,9001
-19943,9807,8801,13.1035,,9110
-19943,9807,8802,-59.3335,,9110
-19943,9807,8805,0.9999986,,9201
-19943,9807,8806,30000.0,,9001
-19943,9807,8807,75000.0,,9001
-19944,9802,8821,44.0,,9110
-19944,9802,8822,-68.3,,9110
-19944,9802,8823,60.0,,9110
-19944,9802,8824,46.0,,9110
-19944,9802,8826,0.0,,9001
-19944,9802,8827,0.0,,9001
-19945,9809,8801,46.3,,9110
-19945,9809,8802,-66.3,,9110
-19945,9809,8805,0.999912,,9201
-19945,9809,8806,300000.0,,9001
-19945,9809,8807,800000.0,,9001
-19946,9809,8801,46.3,,9110
-19946,9809,8802,-66.3,,9110
-19946,9809,8805,0.999912,,9201
-19946,9809,8806,2500000.0,,9001
-19946,9809,8807,7500000.0,,9001
-19947,9802,8821,47.3,,9110
-19947,9802,8822,13.2,,9110
-19947,9802,8823,49.0,,9110
-19947,9802,8824,46.0,,9110
-19947,9802,8826,400000.0,,9001
-19947,9802,8827,400000.0,,9001
-19948,9801,8801,34.39,,9110
-19948,9801,8802,37.21,,9110
-19948,9801,8805,0.9996256,,9201
-19948,9801,8806,300000.0,,9001
-19948,9801,8807,300000.0,,9001
-19949,9809,8801,38.0,,9105
-19949,9809,8802,43.5,,9105
-19949,9809,8805,0.9995341,,9201
-19949,9809,8806,0.0,,9001
-19949,9809,8807,0.0,,9001
-19950,9815,8811,46.570866,,9110
-19950,9815,8812,7.26225,,9110
-19950,9815,8813,90.0,,9110
-19950,9815,8814,90.0,,9110
-19950,9815,8815,1.0,,9201
-19950,9815,8816,2600000.0,,9001
-19950,9815,8817,1200000.0,,9001
-19951,9815,8811,27.31077837,,9110
-19951,9815,8812,52.3612741,,9110
-19951,9815,8813,0.34179803,,9110
-19951,9815,8814,0.34179803,,9110
-19951,9815,8815,0.999895934,,9201
-19951,9815,8816,658377.437,,9001
-19951,9815,8817,3044969.194,,9001
-19952,9819,8811,49.3,,9110
-19952,9819,8812,42.3,,9110
-19952,9819,8813,30.1717303,,9110
-19952,9819,8816,0.0,,9001
-19952,9819,8817,0.0,,9001
-19952,9819,8818,78.3,,9110
-19952,9819,8819,0.9999,,9201
-19953,9806,8801,25.22565,,9110
-19953,9806,8802,50.4541,,9110
-19953,9806,8806,100000.0,,9001
-19953,9806,8807,100000.0,,9001
-19954,9807,8801,0.0,,9110
-19954,9807,8802,-55.41,,9110
-19954,9807,8805,0.9996,,9201
-19954,9807,8806,500000.0,,9001
-19954,9807,8807,0.0,,9001
-19955,9807,8801,0.0,,9110
-19955,9807,8802,-55.41,,9110
-19955,9807,8805,0.9999,,9201
-19955,9807,8806,500000.0,,9001
-19955,9807,8807,0.0,,9001
-19956,9815,8811,4.0,,9110
-19956,9815,8812,115.0,,9110
-19956,9815,8813,53.18569537,,9110
-19956,9815,8814,53.07483685,,9110
-19956,9815,8815,0.99984,,9201
-19956,9815,8816,29352.4763,,9042
-19956,9815,8817,22014.3572,,9042
-19957,9815,8811,4.0,,9110
-19957,9815,8812,115.0,,9110
-19957,9815,8813,53.18569537,,9110
-19957,9815,8814,53.07483685,,9110
-19957,9815,8815,0.99984,,9201
-19957,9815,8816,1937263.44,,9041
-19957,9815,8817,1452947.58,,9041
-19958,9815,8811,4.0,,9110
-19958,9815,8812,115.0,,9110
-19958,9815,8813,53.18569537,,9110
-19958,9815,8814,53.07483685,,9110
-19958,9815,8815,0.99984,,9201
-19958,9815,8816,590476.87,,9001
-19958,9815,8817,442857.65,,9001
-19959,9807,8801,4.4,,9110
-19959,9807,8802,-1.0,,9110
-19959,9807,8805,0.99975,,9201
-19959,9807,8806,900000.0,,9094
-19959,9807,8807,0.0,,9094
-19960,9809,8801,47.15,,9110
-19960,9809,8802,-63.0,,9110
-19960,9809,8805,0.999912,,9201
-19960,9809,8806,400000.0,,9001
-19960,9809,8807,800000.0,,9001
-19961,9802,8821,90.0,,9110
-19961,9802,8822,4.2202952,,9110
-19961,9802,8823,51.100000204,,9110
-19961,9802,8824,49.500000204,,9110
-19961,9802,8826,150000.013,,9001
-19961,9802,8827,5400088.438,,9001
-19962,9807,8801,53.3,,9110
-19962,9807,8802,-8.0,,9110
-19962,9807,8805,0.99982,,9201
-19962,9807,8806,600000.0,,9001
-19962,9807,8807,750000.0,,9001
-19963,9807,8801,6.4,,9110
-19963,9807,8802,-12.0,,9110
-19963,9807,8805,1.0,,9201
-19963,9807,8806,500000.0,,9094
-19963,9807,8807,0.0,,9094
-19964,9807,8801,6.4,,9110
-19964,9807,8802,-12.0,,9110
-19964,9807,8805,1.0,,9201
-19964,9807,8806,800000.0,,9094
-19964,9807,8807,600000.0,,9094
-19965,9821,8806,0.0,,9001
-19965,9821,8807,0.0,,9001
-19965,9821,8828,45.0,,9102
-19965,9821,8829,-100.0,,9102
-19966,9807,8801,49.5,,9110
-19966,9807,8802,6.1,,9110
-19966,9807,8805,1.0,,9201
-19966,9807,8806,80000.0,,9001
-19966,9807,8807,100000.0,,9001
-19967,9807,8801,0.0,,9110
-19967,9807,8802,15.0,,9110
-19967,9807,8805,0.9999,,9201
-19967,9807,8806,500000.0,,9001
-19967,9807,8807,0.0,,9001
-19968,9823,8801,0.0,,9102
-19968,9823,8802,0.0,,9102
-19969,9807,8801,39.4,,9110
-19969,9807,8802,1.0,,9110
-19969,9807,8805,1.0,,9201
-19969,9807,8806,0.0,,9001
-19969,9807,8807,0.0,,9001
-19971,9807,8801,0.0,,9102
-19971,9807,8802,173.0,,9102
-19971,9807,8805,0.9996,,9201
-19971,9807,8806,1600000.0,,9001
-19971,9807,8807,10000000.0,,9001
-19972,9807,8801,53.3,,9110
-19972,9807,8802,-8.0,,9110
-19972,9807,8805,1.000035,,9201
-19972,9807,8806,200000.0,,9001
-19972,9807,8807,250000.0,,9001
-19973,9807,8801,53.3,,9110
-19973,9807,8802,-8.0,,9110
-19973,9807,8805,1.0,,9201
-19973,9807,8806,200000.0,,9001
-19973,9807,8807,250000.0,,9001
-19974,9807,8801,39.4,,9110
-19974,9807,8802,-8.0754862,,9110
-19974,9807,8805,1.0,,9201
-19974,9807,8806,180.598,,9001
-19974,9807,8807,-86.99,,9001
-19975,9806,8801,10.263,,9110
-19975,9806,8802,-61.2,,9110
-19975,9806,8806,283800.0,,9005
-19975,9806,8807,214500.0,,9005
-19976,9802,8821,6.0,,9102
-19976,9802,8822,-66.0,,9102
-19976,9802,8823,9.0,,9102
-19976,9802,8824,3.0,,9102
-19976,9802,8826,1000000.0,,9001
-19976,9802,8827,1000000.0,,9001
-19977,9802,8821,25.0522236,,9110
-19977,9802,8822,48.0,,9102
-19977,9802,8823,17.0,,9102
-19977,9802,8824,33.0,,9102
-19977,9802,8826,0.0,,9001
-19977,9802,8827,0.0,,9001
-19978,9807,8801,22.184368,,9110
-19978,9807,8802,114.10428,,9110
-19978,9807,8805,1.0,,9201
-19978,9807,8806,836694.05,,9001
-19978,9807,8807,819069.8,,9001
-19979,9828,8801,39.4,,9110
-19979,9828,8802,1.0,,9110
-19979,9828,8806,0.0,,9001
-19979,9828,8807,0.0,,9001
diff --git a/src/tiff/csv/coordinate_operation_path.csv b/src/tiff/csv/coordinate_operation_path.csv
deleted file mode 100644
index 89d46e4..0000000
--- a/src/tiff/csv/coordinate_operation_path.csv
+++ /dev/null
@@ -1,336 +0,0 @@
-"CONCAT_OPERATION_CODE","SINGLE_OPERATION_CODE","OP_PATH_STEP"
-8046,1025,1
-8046,1146,2
-8047,1146,2
-8047,1147,1
-8094,1193,2
-8094,1763,1
-8174,1125,2
-8174,1755,1
-8175,1169,2
-8175,1262,1
-8176,1227,2
-8176,1265,1
-8178,1123,2
-8178,1759,1
-8183,1149,2
-8183,1273,1
-8186,1276,2
-8186,1763,1
-8188,1277,2
-8188,1763,1
-8190,1150,2
-8190,1278,1
-8192,1150,2
-8192,1279,1
-8194,1150,2
-8194,1280,1
-8195,1149,2
-8195,1437,1
-8199,1274,1
-8199,1283,2
-8211,1266,1
-8211,1294,2
-8215,1297,1
-8215,1302,2
-8217,1298,1
-8217,1302,2
-8219,1299,1
-8219,1302,2
-8221,1300,1
-8221,1302,2
-8223,1301,1
-8223,1302,2
-8234,1149,2
-8234,1309,1
-8236,1149,2
-8236,1310,1
-8241,1026,1
-8241,1145,2
-8243,1188,2
-8243,1312,1
-8245,1188,2
-8245,1313,1
-8263,1306,2
-8263,1757,1
-8386,1188,2
-8386,1454,1
-8388,1188,2
-8388,1455,1
-8390,1188,2
-8390,1456,1
-8392,1188,2
-8392,1457,1
-8394,1188,2
-8394,1451,1
-8396,1150,2
-8396,1458,1
-8398,1150,2
-8398,1459,1
-8400,1150,2
-8400,1460,1
-8402,1188,2
-8402,1461,1
-8404,1188,2
-8404,1462,1
-8406,1188,2
-8406,1463,1
-8408,1150,2
-8408,1464,1
-8418,1472,1
-8418,1473,2
-8419,1473,2
-8419,1599,1
-8420,1473,2
-8420,1600,1
-8421,1473,2
-8421,1601,1
-8422,1473,2
-8422,1602,1
-8453,1150,2
-8453,1506,1
-8454,1150,2
-8454,1507,1
-8457,1509,1
-8457,1511,2
-8460,1241,1
-8460,1474,2
-8461,1241,1
-8461,1475,2
-8462,1241,1
-8462,1476,2
-8463,1241,1
-8463,1477,2
-8464,1241,1
-8464,1478,2
-8465,1241,1
-8465,1479,2
-8466,1241,1
-8466,1480,2
-8467,1241,1
-8467,1481,2
-8468,1241,1
-8468,1482,2
-8469,1241,1
-8469,1483,2
-8470,1241,1
-8470,1484,2
-8471,1241,1
-8471,1485,2
-8472,1241,1
-8472,1486,2
-8473,1241,1
-8473,1487,2
-8474,1241,1
-8474,1488,2
-8475,1241,1
-8475,1489,2
-8476,1241,1
-8476,1490,2
-8477,1241,1
-8477,1491,2
-8478,1241,1
-8478,1492,2
-8479,1241,1
-8479,1493,2
-8480,1241,1
-8480,1494,2
-8481,1241,1
-8481,1495,2
-8482,1496,2
-8482,1747,1
-8483,1241,1
-8483,1497,2
-8484,1241,1
-8484,1498,2
-8485,1241,1
-8485,1499,2
-8486,1241,1
-8486,1500,2
-8487,1241,1
-8487,1501,2
-8488,1241,1
-8488,1502,2
-8489,1241,1
-8489,1503,2
-8496,1241,1
-8496,1515,2
-8497,1243,1
-8497,1515,2
-8508,1454,1
-8508,1520,2
-8509,1241,1
-8509,1521,2
-8510,1241,1
-8510,1522,2
-8511,1241,1
-8511,1523,2
-8512,1241,1
-8512,1524,2
-8513,1241,1
-8513,1525,2
-8514,1241,1
-8514,1526,2
-8517,1527,2
-8517,1528,1
-8530,1539,1
-8530,1540,2
-8532,1240,2
-8532,1541,1
-8537,1237,2
-8537,1545,1
-8553,1241,1
-8553,1553,2
-8554,1241,1
-8554,1554,2
-8560,1150,2
-8560,1559,1
-8562,1240,2
-8562,1560,1
-8563,1565,2
-8563,1568,1
-8564,1473,2
-8564,1576,1
-8565,1188,2
-8565,1574,1
-8566,1188,2
-8566,1572,1
-8567,1036,1
-8567,1149,2
-8568,1240,2
-8568,1584,1
-8569,1149,2
-8569,1588,1
-8570,1025,1
-8570,1146,2
-8570,1149,3
-8571,1240,2
-8571,1570,1
-8572,1149,2
-8572,1571,1
-8573,1149,2
-8573,1591,1
-8574,1578,1
-8574,1580,2
-8575,1579,1
-8575,1580,2
-8576,1150,2
-8576,1594,1
-8577,1150,2
-8577,1595,1
-8578,1150,2
-8578,1596,1
-8579,1150,2
-8579,1593,1
-8580,1149,2
-8580,1611,1
-8581,1237,2
-8581,1616,1
-8582,1454,1
-8582,1741,2
-8583,1461,1
-8583,1731,2
-8584,1313,1
-8584,1752,2
-8585,1313,1
-8585,1702,2
-8586,1241,1
-8586,1704,2
-8587,1241,1
-8587,1705,2
-8588,1241,1
-8588,1706,2
-8589,1241,1
-8589,1707,2
-8590,1241,1
-8590,1717,2
-8591,1241,1
-8591,1728,2
-8592,1241,1
-8592,1708,2
-8593,1241,1
-8593,1739,2
-8594,1241,1
-8594,1750,2
-8595,1241,1
-8595,1712,2
-8596,1241,1
-8596,1714,2
-8597,1241,1
-8597,1713,2
-8598,1241,1
-8598,1748,2
-8599,1241,1
-8599,1742,2
-8600,1241,1
-8600,1709,2
-8601,1241,1
-8601,1743,2
-8602,1241,1
-8602,1718,2
-8603,1241,1
-8603,1719,2
-8604,1241,1
-8604,1721,2
-8605,1241,1
-8605,1720,2
-8606,1241,1
-8606,1725,2
-8607,1241,1
-8607,1722,2
-8608,1241,1
-8608,1710,2
-8609,1241,1
-8609,1723,2
-8610,1241,1
-8610,1711,2
-8611,1241,1
-8611,1715,2
-8612,1241,1
-8612,1716,2
-8613,1241,1
-8613,1724,2
-8614,1241,1
-8614,1744,2
-8615,1241,1
-8615,1749,2
-8616,1241,1
-8616,1726,2
-8617,1241,1
-8617,1727,2
-8618,1241,1
-8618,1729,2
-8619,1241,1
-8619,1745,2
-8620,1241,1
-8620,1730,2
-8621,1241,1
-8621,1737,2
-8622,1241,1
-8622,1732,2
-8623,1241,1
-8623,1733,2
-8624,1241,1
-8624,1734,2
-8625,1241,1
-8625,1735,2
-8626,1241,1
-8626,1746,2
-8627,1241,1
-8627,1736,2
-8628,1241,1
-8628,1747,2
-8629,1241,1
-8629,1738,2
-8630,1241,1
-8630,1740,2
-8631,1240,2
-8631,1805,1
-8632,1240,2
-8632,1806,1
-8633,1238,2
-8633,1828,1
-8634,1240,2
-8634,1839,1
-8635,1313,1
-8635,1849,2
diff --git a/src/tiff/csv/coordinate_reference_system.csv b/src/tiff/csv/coordinate_reference_system.csv
deleted file mode 100644
index 0318fb6..0000000
--- a/src/tiff/csv/coordinate_reference_system.csv
+++ /dev/null
@@ -1,2609 +0,0 @@
-"COORD_REF_SYS_CODE","COORD_REF_SYS_NAME","AREA_OF_USE_CODE","COORD_REF_SYS_KIND","COORD_SYS_CODE","DATUM_CODE","SOURCE_GEOGCRS_CODE","PROJECTION_CONV_CODE","CMPD_HORIZCRS_CODE","CMPD_VERTCRS_CODE","CRS_SCOPE","REMARKS","INFORMATION_SOURCE","DATA_SOURCE","REVISION_DATE","CHANGE_ID","SHOW_CRS","DEPRECATED"
-2100,GGRS87 / Greek Grid,1106,projected,4400,,4121,19930,,,Large and medium scale topographic mapping and engineering survey.,Oil industry uses ED50 / UTM zone 34N and ED50 / UTM zone 35N.,Geodesy Department; Public Petroleum Corporation of Greece.,EPSG,1997-06-16 00:00:00,,1,0
-2101,Lake / Maracaibo Grid M1,1319,projected,4499,,4249,18260,,,Oil exploration.,Grid coordinates are (0 0) at Maracaibo Cathedral (10deg 38min 34.678sec N; 71deg 36min 20.224sec W; Lake datum).   Used by Creole; MGO and Sun.,Various oil company sources.,EPSG,2000-06-10 00:00:00,,1,0
-2102,Lake / Maracaibo Grid,1319,projected,4499,,4249,18261,,,Oil exploration.,Grid coordinates are (200000 200000) at Maracaibo Cathedral (10deg 38min 34.678sec N; 71deg 36min 20.224sec W; Lake datum).  Used for Lake triangulation coordinate listing.,Various oil company sources.,EPSG,2000-06-10 00:00:00,,1,0
-2103,Lake / Maracaibo Grid M3,1319,projected,4499,,4249,18262,,,Oil exploration.,Grid coordinates are (500000 500000) at Maracaibo Cathedral (10deg 38min 34.678sec N; 71deg 36min 20.224sec W; Lake datum).  Used by Varco.,Various oil company sources.,EPSG,2000-06-10 00:00:00,,1,0
-2104,Lake / Maracaibo La Rosa Grid,1499,projected,4499,,4249,18263,,,Oil exploration.,"Grid coordinates are (X=-17044 Y=29545) at Maracaibo Cathedral (10deg 38min 34.678sec N; 71deg 36min 20.224sec W; Lake datum).
-Do not confuse with the La Rosa grid used in the Cabinas area (code 5810).",Various oil company sources.,EPSG,2000-06-23 00:00:00,,1,0
-2105,NZGD2000 / Mount Eden Circuit 2000,1500,projected,4500,,4167,17931,,,Cadastral surveys.,Superseded NZGD49 / Mount Eden Circuit 2000 (code 27205) from March 2000.,Land Information New Zealand OSG Technical Report 8; 16 April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-2106,NZGD2000 / Bay of Plenty Circuit 2000,1500,projected,4500,,4167,17932,,,Cadastral surveys.,Superseded NZGD49 / Bay of Plenty Circuit 2000 (code 27206) from March 2000.,Land Information New Zealand OSG Technical Report 8; 16 April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-2107,NZGD2000 / Poverty Bay Circuit 2000,1500,projected,4500,,4167,17933,,,Cadastral surveys.,Superseded NZGD49 / Poverty Bay 2000 (code 27207) from March 2000.,Land Information New Zealand OSG Technical Report 8; 16 April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-2108,NZGD2000 / Hawkes Bay Circuit 2000,1500,projected,4500,,4167,17934,,,Cadastral surveys.,Superseded NZGD49 / Hawkes Bay Circuit 2000 (code 27208) from March 2000.,Land Information New Zealand OSG Technical Report 8; 16 April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-2109,NZGD2000 / Taranaki Circuit 2000,1500,projected,4500,,4167,17935,,,Cadastral surveys.,Superseded NZGD49 / Taranaki Circuit 2000 (code 27209) from March 2000.,Land Information New Zealand OSG Technical Report 8; 16 April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-2110,NZGD2000 / Tuhirangi Circuit 2000,1500,projected,4500,,4167,17936,,,Cadastral surveys.,Superseded NZGD49 / Tuhirangi Circuit 2000 (code 27210) from March 2000.,Land Information New Zealand OSG Technical Report 8; 16 April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-2111,NZGD2000 / Wanganui Circuit 2000,1500,projected,4500,,4167,17937,,,Cadastral surveys.,Superseded NZGD49 / Wanganui Circuit 2000 (code 27211) from March 2000.,Land Information New Zealand OSG Technical Report 8; 16 April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-2112,NZGD2000 / Wairarapa Circuit 2000,1500,projected,4500,,4167,17938,,,Cadastral surveys.,Superseded NZGD49 / Wairarapa Circuit 2000 (code 27212) from March 2000.,Land Information New Zealand OSG Technical Report 8; 16 April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-2113,NZGD2000 / Wellington Circuit 2000,1500,projected,4500,,4167,17939,,,Cadastral surveys.,Superseded NZGD49 / Wellington Circuit 2000 (code 27213) from March 2000.,Land Information New Zealand OSG Technical Report 8; 16 April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-2114,NZGD2000 / Collingwood Circuit 2000,1501,projected,4500,,4167,17940,,,Cadastral surveys.,Superseded NZGD49 / Collingwood Circuit 2000 (code 27214) from March 2000.,Land Information New Zealand OSG Technical Report 8; 16 April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-2115,NZGD2000 / Nelson Circuit 2000,1501,projected,4500,,4167,17941,,,Cadastral surveys.,Superseded NZGD49 / Nelson Circuit 2000 (code 27215) from March 2000.,Land Information New Zealand OSG Technical Report 8; 16 April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-2116,NZGD2000 / Karamea Circuit 2000,1501,projected,4500,,4167,17942,,,Cadastral surveys.,Superseded NZGD49 / Karamea Circuit 2000 (code 27216) from March 2000.,Land Information New Zealand OSG Technical Report 8; 16 April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-2117,NZGD2000 / Buller Circuit 2000,1501,projected,4500,,4167,17943,,,Cadastral surveys.,Superseded NZGD49 / Buller Circuit 2000 (code 27217) from March 2000.,Land Information New Zealand OSG Technical Report 8; 16 April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-2118,NZGD2000 / Grey Circuit 2000,1501,projected,4500,,4167,17944,,,Cadastral surveys.,Superseded NZGD49 / Grey Circuit 2000 (code 27218) from March 2000.,Land Information New Zealand OSG Technical Report 8; 16 April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-2119,NZGD2000 / Amuri Circuit 2000,1501,projected,4500,,4167,17945,,,Cadastral surveys.,Superseded NZGD49 / Amuri Circuit 2000 (code 27219) from March 2000.,Land Information New Zealand OSG Technical Report 8; 16 April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-2120,NZGD2000 / Marlborough Circuit 2000,1501,projected,4500,,4167,17946,,,Cadastral surveys.,Superseded NZGD49 / Marlborough Circuit 2000 (code 27220) from March 2000.,Land Information New Zealand OSG Technical Report 8; 16 April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-2121,NZGD2000 / Hokitika Circuit 2000,1501,projected,4500,,4167,17947,,,Cadastral surveys.,Superseded NZGD49 / Hokitika Circuit 2000 (code 27221) from March 2000.,Land Information New Zealand OSG Technical Report 8; 16 April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-2122,NZGD2000 / Okarito Circuit 2000,1501,projected,4500,,4167,17948,,,Cadastral surveys.,Superseded NZGD49 / Okarito Circuit 2000 (code 27222) from March 2000.,Land Information New Zealand OSG Technical Report 8; 16 April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-2123,NZGD2000 / Jacksons Bay Circuit 2000,1501,projected,4500,,4167,17949,,,Cadastral surveys.,Superseded NZGD49 / Jacksons Bay Circuit 2000 (code 27223) from March 2000.,Land Information New Zealand OSG Technical Report 8; 16 April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-2124,NZGD2000 / Mount Pleasant Circuit 2000,1501,projected,4500,,4167,17950,,,Cadastral surveys.,Superseded NZGD49 / Mount Pleasant Circuit 2000 (code 27224) from March 2000.,Land Information New Zealand OSG Technical Report 8; 16 April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-2125,NZGD2000 / Gawler Circuit 2000,1501,projected,4500,,4167,17951,,,Cadastral surveys.,Superseded NZGD49 / Gawler Circuit 2000 (code 27225) from March 2000.,Land Information New Zealand OSG Technical Report 8; 16 April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-2126,NZGD2000 / Timaru Circuit 2000,1501,projected,4500,,4167,17952,,,Cadastral surveys.,Superseded NZGD49 / Timaru Circuit 2000 (code 27226) from March 2000.,Land Information New Zealand OSG Technical Report 8; 16 April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-2127,NZGD2000 / Lindis Peak Circuit 2000,1501,projected,4500,,4167,17953,,,Cadastral surveys.,Superseded NZGD49 / Lindis Peak Circuit 2000 (code 27227) from March 2000.,Land Information New Zealand OSG Technical Report 8; 16 April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-2128,NZGD2000 / Mount Nicholas Circuit 2000,1501,projected,4500,,4167,17954,,,Cadastral surveys.,Superseded NZGD49 / Mount Nicholas Circuit 2000 (code 27228) from March 2000.,Land Information New Zealand OSG Technical Report 8; 16 April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-2129,NZGD2000 / Mount York Circuit 2000,1501,projected,4500,,4167,17955,,,Cadastral surveys.,Superseded NZGD49 / Mount York Circuit 2000 (code 27229) from March 2000.,Land Information New Zealand OSG Technical Report 8; 16 April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-2130,NZGD2000 / Observation Point Circuit 2000,1501,projected,4500,,4167,17956,,,Cadastral surveys.,Superseded NZGD49 / Observation Point Circuit 2000 (code 27230) from March 2000.,Land Information New Zealand OSG Technical Report 8; 16 April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-2131,NZGD2000 / North Taieri Circuit 2000,1501,projected,4500,,4167,17957,,,Cadastral surveys.,Superseded NZGD49 / North Taieri Circuit 2000 (code 27231) from March 2000.,Land Information New Zealand OSG Technical Report 8; 16 April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-2132,NZGD2000 / Bluff Circuit 2000,1501,projected,4500,,4167,17958,,,Cadastral surveys.,Superseded NZGD49 / Bluff Circuit 2000 (code 27232) from March 2000.,Land Information New Zealand OSG Technical Report 8; 16 April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-2133,NZGD2000 / UTM zone 58S,1502,projected,4400,,4167,16158,,,Large and medium scale topographic mapping and engineering survey.,Supersedes NZGD49 / UTM zone 58S (code 27258) from March 2000.,,EPSG,2000-10-19 00:00:00,,1,0
-2134,NZGD2000 / UTM zone 59S,1503,projected,4400,,4167,16159,,,Large and medium scale topographic mapping and engineering survey.,Supersedes NZGD49 / UTM zone 59S (code 27259) from March 2000.,,EPSG,2000-10-19 00:00:00,,1,0
-2135,NZGD2000 / UTM zone 60S,1504,projected,4400,,4167,16160,,,Large and medium scale topographic mapping and engineering survey.,Supersedes NZGD49 / UTM zone 60S (code 27260) from March 2000.,,EPSG,2000-10-19 00:00:00,,1,0
-2136,Accra / Ghana National Grid,1104,projected,4404,,4168,19959,,,Large and medium scale topographic mapping and engineering survey.,"Ellipsoid semi-major axis (a)=20926201 Gold Coast feet.  ProjCRS sometimes found in metric form: 1 Gold Coast foot = 0.3047997101815 m.
-Superseded by Leigon / Ghana Metric Grid from 1978.",Ordnance Survey International,EPSG,2000-10-19 00:00:00,,1,0
-2137,Accra / TM 1 NW,1505,projected,4400,,4168,17001,,,Oil exploration.,,Various oil industry sources,EPSG,2000-10-19 00:00:00,,1,0
-2138,NAD27(CGQ77) / Quebec Lambert,1368,projected,4499,,4609,19944,,,Medium and small scale mapping.,Superseded NAD27 / Quebec Lambert (code 32098) in 1977.,Service de la Cartographie; Minist�re des Ressources Naturelles; Quebec,EPSG,2000-10-19 00:00:00,,1,0
-2139,NAD83(CSRS98) / SCoPQ zone 2,1420,projected,4499,,4140,17700,,,Large and medium scale topographic mapping and engineering survey.,,Topographic Mapping Section; Quebec Ministry of Natural Resources.,EPSG,2000-10-19 00:00:00,,1,1
-2140,NAD83(CSRS98) / MTM zone 3,1421,projected,4496,,4140,17703,,,Large and medium scale topographic mapping and engineering survey.,"Known in Quebec as ""NAD83(CSRS98) / SCoPQ zone 3"" with axis 1 and 2 abbreviations of ""X"" and ""Y"" respectively.",Topographic Mapping Section; Quebec Ministry of Natural Resources.,EPSG,2000-10-19 00:00:00,,1,1
-2141,NAD83(CSRS98) / MTM zone 4,1422,projected,4496,,4140,17704,,,Large and medium scale topographic mapping and engineering survey.,"Known in Quebec as ""NAD83(CSRS98) / SCoPQ zone 4"" with axis 1 and 2 abbreviations of ""X"" and ""Y"" respectively.",Topographic Mapping Section; Quebec Ministry of Natural Resources.,EPSG,2000-10-19 00:00:00,,1,1
-2142,NAD83(CSRS98) / MTM zone 5,1423,projected,4496,,4140,17705,,,Large and medium scale topographic mapping and engineering survey.,"Known in Quebec as ""NAD83(CSRS98) / SCoPQ zone 5"" with axis 1 and 2 abbreviations of ""X"" and ""Y"" respectively.",Topographic Mapping Section; Quebec Ministry of Natural Resources.,EPSG,2000-10-19 00:00:00,,1,1
-2143,NAD83(CSRS98) / MTM zone 6,1424,projected,4496,,4140,17706,,,Large and medium scale topographic mapping and engineering survey.,"Known in Quebec as ""NAD83(CSRS98) / SCoPQ zone 6"" with axis 1 and 2 abbreviations of ""X"" and ""Y"" respectively.",Topographic Mapping Section; Quebec Ministry of Natural Resources.,EPSG,2000-10-19 00:00:00,,1,1
-2144,NAD83(CSRS98) / MTM zone 7,1425,projected,4496,,4140,17707,,,Large and medium scale topographic mapping and engineering survey.,"Known in Quebec as ""NAD83(CSRS98) / SCoPQ zone 7"" with axis 1 and 2 abbreviations of ""X"" and ""Y"" respectively.",Topographic Mapping Section; Quebec Ministry of Natural Resources.,EPSG,2000-10-19 00:00:00,,1,1
-2145,NAD83(CSRS98) / MTM zone 8,1426,projected,4496,,4140,17708,,,Large and medium scale topographic mapping and engineering survey.,"Known in Quebec as ""NAD83(CSRS98) / SCoPQ zone 8"" with axis 1 and 2 abbreviations of ""X"" and ""Y"" respectively.",Topographic Mapping Section; Quebec Ministry of Natural Resources.,EPSG,2000-10-19 00:00:00,,1,1
-2146,NAD83(CSRS98) / MTM zone 9,1427,projected,4496,,4140,17709,,,Large and medium scale topographic mapping and engineering survey.,"Known in Quebec as ""NAD83(CSRS98) / SCoPQ zone 9"" with axis 1 and 2 abbreviations of ""X"" and ""Y"" respectively.",Topographic Mapping Section; Quebec Ministry of Natural Resources.,EPSG,2000-10-19 00:00:00,,1,1
-2147,NAD83(CSRS98) / MTM zone 10,1428,projected,4496,,4140,17710,,,Large and medium scale topographic mapping and engineering survey.,"Known in Quebec as ""NAD83(CSRS98) / SCoPQ zone 10"" with axis 1 and 2 abbreviations of ""X"" and ""Y"" respectively.",Topographic Mapping Section; Quebec Ministry of Natural Resources.,EPSG,2000-10-19 00:00:00,,1,1
-2148,NAD83(CSRS98) / UTM zone 21N,1446,projected,4400,,4140,16021,,,Large and medium scale topographic mapping and engineering survey.,In use from 2000.,Geomatics Canada.,EPSG,2000-10-19 00:00:00,,1,1
-2149,NAD83(CSRS98) / UTM zone 18N,1443,projected,4400,,4140,16018,,,Large and medium scale topographic mapping and engineering survey.,In use from 2000.,Geomatics Canada.,EPSG,2000-10-19 00:00:00,,1,1
-2150,NAD83(CSRS98) / UTM zone 17N,1428,projected,4400,,4140,16017,,,Large and medium scale topographic mapping and engineering survey.,In use from 2000.,Geomatics Canada.,EPSG,2000-10-19 00:00:00,,1,1
-2151,NAD83(CSRS98) / UTM zone 13N,1506,projected,4400,,4140,16013,,,Large and medium scale topographic mapping and engineering survey.,In use from 2000.,Geomatics Canada.,EPSG,2000-10-19 00:00:00,,1,1
-2152,NAD83(CSRS98) / UTM zone 12N,1507,projected,4400,,4140,16012,,,Large and medium scale topographic mapping and engineering survey.,In use from 2000.,Geomatics Canada.,EPSG,2000-10-19 00:00:00,,1,1
-2153,NAD83(CSRS98) / UTM zone 11N,1508,projected,4400,,4140,16011,,,Large and medium scale topographic mapping and engineering survey.,In use from 2000.,Geomatics Canada.,EPSG,2000-10-19 00:00:00,,1,1
-2154,RGF93 / Lambert-93,1326,projected,4499,,4171,18085,,,Large and medium scale topographic mapping and engineering survey.,,IGN - Paris,EPSG,2000-10-19 00:00:00,,1,0
-2155,American Samoa 1962 / American Samoa Lambert,1027,projected,4497,,4169,15300,,,Large and medium scale topographic mapping and engineering survey.,Superseded by projCRS 2156 as of mid-2000.,US National Geodetic Survey (NGS)  http://www.ngs.noaa.gov/,EPSG,2000-10-19 00:00:00,,1,1
-2156,NAD83(HARN) / UTM zone 59S,1027,projected,4400,,4152,16159,,,Large and medium scale topographic mapping and engineering survey.,Supersedes projCRS 2155; effective in 2000.    Deprecated due to error in projection and replaced by code 2195.,US National Geodetic Survey (NGS)  http://www.ngs.noaa.gov/,EPSG,2000-10-19 00:00:00,,1,1
-2157,IRENET95 / Irish Transverse Mercator,1305,projected,4400,,4173,19962,,,Large and medium scale topographic mapping and engineering survey.,Supersedes TM75 / Irish Grid (code 29903) from 1/1/2001.,Ordnance Survey of Ireland,EPSG,2000-10-19 00:00:00,,1,0
-2158,IRENET95 / UTM zone 29N,1305,projected,4400,,4173,16029,,,Large and medium scale topographic mapping and engineering survey.,,Ordnance Survey of Ireland,EPSG,2000-10-19 00:00:00,,1,0
-2159,Sierra Leone 1924 / New Colony Grid,1342,projected,4404,,4174,19963,,,Topographic mapping and engineering survey.,Supersedes the Sierra Leone 1924 / Colony Grid. New grid is 422.3 ft west and 112.1 ft south of old grid.  Ellipsoid semi-major axis (a)=20926201 Gold Coast feet; 1 Gold Coast foot = 0.3047997101815 m.,Ordnance Survey International,EPSG,2001-06-05 00:00:00,,1,0
-2160,Sierra Leone 1924 / New War Office Grid,1342,projected,4404,,4174,19964,,,Topographic mapping,Supersedes the Sierra Leone War Office Grid. New grid is 422.3 ft west and 112.1 ft south of old grid. Ellipsoid semi-major axis (a)=20926201 Gold Coast feet; 1 Gold Coast foot = 0.3047997101815 m.,Ordnance Survey International,EPSG,2001-06-05 00:00:00,,1,0
-2161,Sierra Leone 1968 / UTM zone 28N,1509,projected,4400,,4175,16028,,,Topographic mapping and engineering survey.,Supersedes Sierra Leone 1960 / UTM zone 28N.  The 1968 readjustment coordinates are within 3m of the 1960 provisional adjustment.,Ordnance Survey International,EPSG,2001-06-05 00:00:00,,1,0
-2162,Sierra Leone 1968 / UTM zone 29N,1510,projected,4400,,4175,16029,,,Topographic mapping and engineering survey.,Supersedes Sierra Leone 1960 / UTM zone 29N.  The 1968 readjustment coordinates are within 3m of the 1960 provisional adjustment.,Ordnance Survey International,EPSG,2001-06-05 00:00:00,,1,0
-2163,US National Atlas Equal Area,1245,projected,4499,,4047,19965,,,For small scale (1:1million and smaller) statistical mapping.,Uses spherical projection formulae.  USGS describe geogCRS as NAD83 but this would require ellipsoidal projection formulae.,"United States Geological Survey, Western Geographic Science Center",EPSG,2001-06-05 00:00:00,,1,0
-2164,Locodjo 1965 / TM 5 NW,2296,projected,4400,,4142,17005,,,Oil industry use.,,Various oil industry sources,EPSG,2001-06-05 00:00:00,,1,0
-2165,Abidjan 1987 / TM 5 NW,2296,projected,4400,,4143,17005,,,Oil Industry,,Various oil industry sources,EPSG,2001-06-05 00:00:00,,1,0
-2166,Pulkovo 1942(83) / Gauss Kruger zone 3,1512,projected,4530,,4178,16263,,,"Large and medium scale topographic mapping and engineering survey, cadastral survey.",In Thuringen superseded by DHDN / Gauss Kruger zone 3.,EuroGeographics; http://crs.ifag.de/,EPSG,2001-06-05 00:00:00,,1,1
-2167,Pulkovo 1942(83) / Gauss Kruger zone 4,1513,projected,4530,,4178,16264,,,"Large and medium scale topographic mapping and engineering survey, cadastral survey.","In Brandenburg superseded by ETRS89 / UTM zone 33N. 
-In Sachsen and Thuringen superseded by DHDN / Gauss Kruger zone 4.",Bundesamt f�r Kartographie und Geod�sie via EuroGeographics; http://crs.ifag.de/,EPSG,2001-06-05 00:00:00,,1,1
-2168,Pulkovo 1942(83) / Gauss Kruger zone 5,1512,projected,4530,,4178,16265,,,"Large and medium scale topographic mapping and engineering survey, cadastral survey.","In Brandenburg superseded by ETRS89 / UTM zone 33N. 
-In Sachsen superseded by DHDN / Gauss Kruger zone 5.",Bundesamt f�r Kartographie und Geod�sie via EuroGeographics; http://crs.ifag.de/,EPSG,2001-06-05 00:00:00,,1,1
-2169,Luxembourg 1930 / Gauss,1146,projected,4530,,4181,19966,,,Large and medium scale topographic mapping and engineering survey.,,Administration du Cadastre et de la Topographie via EuroGeographics; http://crs.ifag.de/,EPSG,2001-06-05 00:00:00,,1,0
-2170,MGI / Slovenia Grid,1212,projected,4530,,4312,19967,,,Large and medium scale topographic mapping and engineering survey.,Truncated form of MGI / Balkans zone 5 (code 31275).,,EPSG,2001-06-05 00:00:00,,1,0
-2171,Pulkovo 1942(58) / Poland zone I,1515,projected,4530,,4179,18281,,,Large and medium scale topographic mapping and engineering survey.,To be phased out after 2009. Superseded by ETRS89 / Poland CS2000 zones 7 and 8 (codes 2178-79).,Glowny Urzad Geodezji i Kartografii via EuroGeographics; http://crs.ifag.de/,EPSG,2001-06-05 00:00:00,,1,0
-2172,Pulkovo 1942(58) / Poland zone II,1516,projected,4530,,4179,18282,,,Large and medium scale topographic mapping and engineering survey.,To be phased out after 2009. Superseded by ETRS89 / Poland CS2000 zones 7 and 8 (codes 2178-79).,Glowny Urzad Geodezji i Kartografii via EuroGeographics; http://crs.ifag.de/,EPSG,2001-06-05 00:00:00,,1,0
-2173,Pulkovo 1942(58) / Poland zone III,1517,projected,4530,,4179,18283,,,Large and medium scale topographic mapping and engineering survey.,To be phased out after 2009. Superseded by ETRS89 / Poland CS2000 zones 5 and 6 (codes 2176-77).,Glowny Urzad Geodezji i Kartografii via EuroGeographics; http://crs.ifag.de/,EPSG,2001-06-05 00:00:00,,1,0
-2174,Pulkovo 1942(58) / Poland zone IV,1518,projected,4530,,4179,18284,,,Large and medium scale topographic mapping and engineering survey.,To be phased out after 2009. Superseded by ETRS89 / Poland CS2000 zones 5 and 6 (codes 2176-77).,Glowny Urzad Geodezji i Kartografii via EuroGeographics; http://crs.ifag.de/,EPSG,2001-06-05 00:00:00,,1,0
-2175,Pulkovo 1942(58) / Poland zone V,1519,projected,4530,,4179,18285,,,Large and medium scale topographic mapping and engineering survey.,To be phased out after 2009. Superseded by ETRS89 / Poland CS2000 zone 6 (code 2177).,Glowny Urzad Geodezji i Kartografii via EuroGeographics; http://crs.ifag.de/,EPSG,2001-06-05 00:00:00,,1,0
-2176,ETRS89 / Poland CS2000 zone 5,1520,projected,4531,,4258,18305,,,"Large (1:5,000 and greater) scale topographic mapping and cadastral survey.",See ETRS89 / Poland CS92 (code 2170) for smaller scale mapping.,Glowny Urzad Geodezji i Kartografii via EuroGeographics; http://crs.ifag.de/,EPSG,2001-06-05 00:00:00,,1,0
-2177,ETRS89 / Poland CS2000 zone 6,1521,projected,4531,,4258,18306,,,"Large (1:5,000 and greater) scale topographic mapping and cadastral survey.",See ETRS89 / Poland CS92 (code 2170) for smaller scale mapping.,Glowny Urzad Geodezji i Kartografii via EuroGeographics; http://crs.ifag.de/,EPSG,2001-06-05 00:00:00,,1,0
-2178,ETRS89 / Poland CS2000 zone 7,1522,projected,4531,,4258,18307,,,"Large (1:5,000 and greater) scale topographic mapping and cadastral survey.",See ETRS89 / Poland CS92 (code 2170) for smaller scale mapping.,Glowny Urzad Geodezji i Kartografii via EuroGeographics; http://crs.ifag.de/,EPSG,2001-06-05 00:00:00,,1,0
-2179,ETRS89 / Poland CS2000 zone 8,1523,projected,4531,,4258,18308,,,"Large (1:5,000 and greater) scale topographic mapping and cadastral survey.",See ETRS89 / Poland CS92 (code 2170) for smaller scale mapping.,Glowny Urzad Geodezji i Kartografii via EuroGeographics; http://crs.ifag.de/,EPSG,2001-06-05 00:00:00,,1,0
-2180,ETRS89 / Poland CS92,1192,projected,4531,,4258,18300,,,"Medium and small scale topographic mapping (1:10,000 and smaller).",See ETRS89 / Poland CS2000 zones 5- 8 (codes 2176-79) for large scale purposes.,Glowny Urzad Geodezji i Kartografii via EuroGeographics; http://crs.ifag.de/,EPSG,2001-06-05 00:00:00,,1,0
-2188,Azores Occidental 1939 / UTM zone 25N,1344,projected,4400,,4182,16025,,,Topographic mapping.,,Instituto Geografico e Cadastral Lisbon via EuroGeographics; http://crs.ifag.de/,EPSG,2001-06-05 00:00:00,,1,0
-2189,Azores Central 1948 / UTM zone 26N,1301,projected,4400,,4183,16026,,,Topographic mapping.,,Instituto Geografico e Cadastral Lisbon via EuroGeographics; http://crs.ifag.de/,EPSG,2001-06-05 00:00:00,,1,0
-2190,Azores Oriental 1940 / UTM zone 26N,1345,projected,4400,,4184,16026,,,Topographic mapping.,,Instituto Geografico e Cadastral Lisbon via EuroGeographics; http://crs.ifag.de/,EPSG,2001-06-05 00:00:00,,1,0
-2191,Madeira 1936 / UTM zone 28N,1314,projected,4400,,4185,16028,,,Topographic mapping.,,Instituto Geografico e Cadastral Lisbon via EuroGeographics; http://crs.ifag.de/,EPSG,2001-06-05 00:00:00,,1,1
-2192,ED50 / France EuroLambert,1326,projected,4499,,4230,18086,,,Medium scale topographic and statistical mapping.,,IGN Paris via EuroGeographics; http://crs.ifag.de/,EPSG,2001-06-05 00:00:00,,1,0
-2193,NZGD2000 / New Zealand Transverse Mercator,1175,projected,4500,,4167,19971,,,Large and medium scale topographic mapping and engineering survey.,Supersedes NZGD49 / New Zealand Map Grid (code 27200) from July 2001.,Shell Todd Oil Services.,EPSG,2001-08-28 00:00:00,,1,0
-2194,American Samoa 1962 / American Samoa Lambert,1027,projected,4497,,4169,15301,,,Large and medium scale topographic mapping and engineering survey.,Superseded by projCRS 2156 as of mid-2000.,US National Geodetic Survey (NGS)  http://www.ngs.noaa.gov/,EPSG,2001-08-28 00:00:00,,1,0
-2195,NAD83(HARN) / UTM zone 2S,1027,projected,4400,,4152,16102,,,Large and medium scale topographic mapping and engineering survey.,Supersedes projCRS 2194; effective in 2000,US National Geodetic Survey (NGS)  http://www.ngs.noaa.gov/,EPSG,2001-08-28 00:00:00,,1,0
-2196,ETRS89 / Kp2000 Jutland,2531,projected,4400,,4258,18401,,,"Large and scale topographic mapping, cadastral and engineering survey.  Note: for medium scale topographic mapping ETRS89 / UTM zone 32N (code 25832) is used.",Supersedes System 34 Jutland zone.,Kort & Matrikelstyrelsen,EPSG,2001-11-06 00:00:00,,1,0
-2197,ETRS89 / Kp2000 Zealand,2532,projected,4400,,4258,18402,,,"Large and scale topographic mapping, cadastral and engineering survey.  Note: for medium scale topographic mapping ETRS89 / UTM zone 32N (code 25832) is used.",Supersedes System 34 Zealand zone.,Kort & Matrikelstyrelsen,EPSG,2001-11-06 00:00:00,,1,0
-2198,ETRS89 / Kp2000 Bornholm,2533,projected,4400,,4258,18403,,,"Large and scale topographic mapping, cadastral and engineering survey.  Note: for medium scale topographic mapping ETRS89 / UTM zone 33N (code 25833) is used.",Supersedes System 45.,Kort & Matrikelstyrelsen,EPSG,2001-11-06 00:00:00,,1,0
-2199,Albanian 1987 / Gauss Kruger zone 4,1025,projected,4530,,4191,16204,,,"Large and medium scale topographic mapping and engineering survey, cadastral survey.",,EuroGeographics; http://crs.ifag.de/,EPSG,2001-11-06 00:00:00,,1,1
-2200,ATS77 / New Brunswick Stereographic (ATS77),1447,projected,4500,,4122,19945,,,Large and medium scale topographic mapping and engineering survey.,In use from 1979.  To be phased out in late 1990's.,New Brunswick Geographic Information Corporation land and water information standards manual.,EPSG,1999-10-20 00:00:00,99.61,1,0
-2201,REGVEN / UTM zone 18N,1693,projected,4400,,4189,16018,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2001-11-06 00:00:00,,1,0
-2000,Anguilla 1957 / British West Indies Grid,1030,projected,4400,,4600,19942,,,Large and medium scale topographic mapping and engineering survey.,,Ordnance Survey of Great Britain,EPSG,2000-03-07 00:00:00,99.74,1,0
-2001,Antigua 1943 / British West Indies Grid,1273,projected,4400,,4601,19942,,,Large and medium scale topographic mapping and engineering survey.,,Ordnance Survey of Great Britain,EPSG,2000-03-07 00:00:00,99.74,1,0
-2002,Dominica 1945 / British West Indies Grid,1082,projected,4400,,4602,19942,,,Large and medium scale topographic mapping and engineering survey.,,Ordnance Survey of Great Britain,EPSG,2000-03-07 00:00:00,99.74,1,0
-2003,Grenada 1953 / British West Indies Grid,1551,projected,4400,,4603,19942,,,Large and medium scale topographic mapping and engineering survey.,,Ordnance Survey of Great Britain,EPSG,2000-03-07 00:00:00,99.74,1,0
-2004,Montserrat 58 / British West Indies Grid,1165,projected,4400,,4604,19942,,,Large and medium scale topographic mapping and engineering survey.,,Ordnance Survey of Great Britain,EPSG,2000-03-07 00:00:00,99.74,1,0
-2005,St Kitts 1955 / British West Indies Grid,1200,projected,4400,,4605,19942,,,Large and medium scale topographic mapping and engineering survey.,,Ordnance Survey of Great Britain,EPSG,2000-03-07 00:00:00,99.74,1,0
-2006,St Lucia 1955 / British West Indies Grid,1201,projected,4400,,4606,19942,,,Large and medium scale topographic mapping and engineering survey.,,Ordnance Survey of Great Britain,EPSG,2000-03-07 00:00:00,99.74,1,0
-2007,St Vincent 45 / British West Indies Grid,1202,projected,4400,,4607,19942,,,Large and medium scale topographic mapping and engineering survey.,,Ordnance Survey of Great Britain,EPSG,2000-03-07 00:00:00,99.74,1,0
-2008,NAD27(CGQ77) / SCoPQ zone 2,1420,projected,4499,,4609,17700,,,Large and medium scale topographic mapping and engineering survey.,,Geodetic Service of Quebec; Quebec Ministry of Natural Resources.,EPSG,2000-03-07 00:00:00,99.74,1,0
-2009,NAD27(CGQ77) / SCoPQ zone 3,1421,projected,4499,,4609,17703,,,Large and medium scale topographic mapping and engineering survey.,,Geodetic Service of Quebec; Quebec Ministry of Natural Resources.,EPSG,2000-03-07 00:00:00,99.74,1,0
-2010,NAD27(CGQ77) / SCoPQ zone 4,1422,projected,4499,,4609,17704,,,Large and medium scale topographic mapping and engineering survey.,,Geodetic Service of Quebec; Quebec Ministry of Natural Resources.,EPSG,2000-03-07 00:00:00,99.74,1,0
-2011,NAD27(CGQ77) / SCoPQ zone 5,1423,projected,4499,,4609,17705,,,Large and medium scale topographic mapping and engineering survey.,,Geodetic Service of Quebec; Quebec Ministry of Natural Resources.,EPSG,2000-03-07 00:00:00,99.74,1,0
-2012,NAD27(CGQ77) / SCoPQ zone 6,1424,projected,4499,,4609,17706,,,Large and medium scale topographic mapping and engineering survey.,,Geodetic Service of Quebec; Quebec Ministry of Natural Resources.,EPSG,2000-03-07 00:00:00,99.74,1,0
-2013,NAD27(CGQ77) / SCoPQ zone 7,1425,projected,4499,,4609,17707,,,Large and medium scale topographic mapping and engineering survey.,,Geodetic Service of Quebec; Quebec Ministry of Natural Resources.,EPSG,2000-03-07 00:00:00,99.74,1,0
-2014,NAD27(CGQ77) / SCoPQ zone 8,1426,projected,4499,,4609,17708,,,Large and medium scale topographic mapping and engineering survey.,,Geodetic Service of Quebec; Quebec Ministry of Natural Resources.,EPSG,2000-03-07 00:00:00,99.74,1,0
-2015,NAD27(CGQ77) / SCoPQ zone 9,1427,projected,4499,,4609,17709,,,Large and medium scale topographic mapping and engineering survey.,,Geodetic Service of Quebec; Quebec Ministry of Natural Resources.,EPSG,2000-03-07 00:00:00,99.74,1,0
-2016,NAD27(CGQ77) / SCoPQ zone 10,1428,projected,4499,,4609,17710,,,Large and medium scale topographic mapping and engineering survey.,,Geodetic Service of Quebec; Quebec Ministry of Natural Resources.,EPSG,2000-03-07 00:00:00,99.74,1,0
-2017,NAD27(76) / MTM zone 8,1429,projected,4499,,4608,17708,,,Large and medium scale topographic mapping and engineering survey.,,Surveys and Mapping Section; Ontario Ministry of Transportation.,EPSG,2000-03-07 00:00:00,99.74,1,0
-2018,NAD27(76) / MTM zone 9,1430,projected,4499,,4608,17709,,,Large and medium scale topographic mapping and engineering survey.,,Surveys and Mapping Section; Ontario Ministry of Transportation.,EPSG,2000-03-07 00:00:00,99.74,1,0
-2019,NAD27(76) / MTM zone 10,1431,projected,4499,,4608,17710,,,Large and medium scale topographic mapping and engineering survey.,,Surveys and Mapping Section; Ontario Ministry of Transportation.,EPSG,2000-03-07 00:00:00,99.74,1,0
-2020,NAD27(76) / MTM zone 11,1432,projected,4400,,4608,17711,,,Large and medium scale topographic mapping and engineering survey.,,Surveys and Mapping Section; Ontario Ministry of Transportation.,EPSG,2000-03-07 00:00:00,99.74,1,0
-2021,NAD27(76) / MTM zone 12,1433,projected,4400,,4608,17712,,,Large and medium scale topographic mapping and engineering survey.,,Surveys and Mapping Section; Ontario Ministry of Transportation.,EPSG,2000-03-07 00:00:00,99.74,1,0
-2022,NAD27(76) / MTM zone 13,1434,projected,4400,,4608,17713,,,Large and medium scale topographic mapping and engineering survey.,,Surveys and Mapping Section; Ontario Ministry of Transportation.,EPSG,2000-03-07 00:00:00,99.74,1,0
-2023,NAD27(76) / MTM zone 14,1435,projected,4400,,4608,17714,,,Large and medium scale topographic mapping and engineering survey.,,Surveys and Mapping Section; Ontario Ministry of Transportation.,EPSG,2000-03-07 00:00:00,99.74,1,0
-2024,NAD27(76) / MTM zone 15,1436,projected,4400,,4608,17715,,,Large and medium scale topographic mapping and engineering survey.,,Surveys and Mapping Section; Ontario Ministry of Transportation.,EPSG,2000-03-07 00:00:00,99.74,1,0
-2025,NAD27(76) / MTM zone 16,1437,projected,4400,,4608,17716,,,Large and medium scale topographic mapping and engineering survey.,,Surveys and Mapping Section; Ontario Ministry of Transportation.,EPSG,2000-03-07 00:00:00,99.74,1,0
-2026,NAD27(76) / MTM zone 17,1438,projected,4400,,4608,17717,,,Large and medium scale topographic mapping and engineering survey.,,Surveys and Mapping Section; Ontario Ministry of Transportation.,EPSG,2000-03-07 00:00:00,99.74,1,0
-2027,NAD27(76) / UTM zone 15N,1439,projected,4400,,4608,16015,,,Large and medium scale topographic mapping and engineering survey.,Supersedes NAD27 / UTM zone 15N (code 26715).,,EPSG,2000-03-07 00:00:00,99.74,1,0
-2028,NAD27(76) / UTM zone 16N,1440,projected,4400,,4608,16016,,,Large and medium scale topographic mapping and engineering survey.,Supersedes NAD27 / UTM zone 16N (code 26716).,,EPSG,2000-03-07 00:00:00,99.74,1,0
-2029,NAD27(76) / UTM zone 17N,1441,projected,4400,,4608,16017,,,Large and medium scale topographic mapping and engineering survey.,Supersedes NAD27 / UTM zone 17N (code 26717).,,EPSG,2000-03-07 00:00:00,99.74,1,0
-2030,NAD27(76) / UTM zone 18N,1442,projected,4400,,4608,16018,,,Large and medium scale topographic mapping and engineering survey.,Supersedes NAD27 / UTM zone 18N (code 26718).,,EPSG,2000-03-07 00:00:00,99.74,1,0
-2031,NAD27(CGQ77) / UTM zone 17N,1428,projected,4400,,4609,16017,,,Large and medium scale topographic mapping and engineering survey.,Supersedes NAD27 / UTM zone 17N (code 26717).,,EPSG,2000-03-07 00:00:00,99.74,1,0
-2032,NAD27(CGQ77) / UTM zone 18N,1443,projected,4400,,4609,16018,,,Large and medium scale topographic mapping and engineering survey.,Supersedes NAD27 / UTM zone 18N (code 26718).,,EPSG,2000-03-07 00:00:00,99.74,1,0
-2033,NAD27(CGQ77) / UTM zone 19N,1444,projected,4400,,4609,16019,,,Large and medium scale topographic mapping and engineering survey.,Supersedes NAD27 / UTM zone 19N (code 26719).,,EPSG,2000-03-07 00:00:00,99.74,1,0
-2034,NAD27(CGQ77) / UTM zone 20N,1445,projected,4400,,4609,16020,,,Large and medium scale topographic mapping and engineering survey.,Supersedes NAD27 / UTM zone 20N (code 26720).,,EPSG,2000-03-07 00:00:00,99.74,1,0
-2035,NAD27(CGQ77) / UTM zone 21N,1446,projected,4400,,4609,16021,,,Large and medium scale topographic mapping and engineering survey.,Supersedes NAD27 / UTM zone 21N (code 26721).,,EPSG,2000-03-07 00:00:00,99.74,1,0
-2036,NAD83(CSRS98) / New Brunswick Stereo,1447,projected,4500,,4140,19946,,,Large and medium scale topographic mapping and engineering survey.,In use from 1999.,Service New Brunswick Land and Information Standards Manual,EPSG,2000-03-07 00:00:00,99.74  99.90,1,1
-2037,NAD83(CSRS98) / UTM zone 19N,1448,projected,4400,,4140,16019,,,Large and medium scale topographic mapping and engineering survey.,In use from 1999.,Service New Brunswick Land and Information Standards Manual,EPSG,2000-03-07 00:00:00,99.74  99.90,1,1
-2038,NAD83(CSRS98) / UTM zone 20N,1449,projected,4400,,4140,16020,,,Large and medium scale topographic mapping and engineering survey.,In use from 1999.,Service New Brunswick Land and Information Standards Manual,EPSG,2000-03-07 00:00:00,99.74  99.90,1,1
-2039,Israel / Israeli TM Grid,2603,projected,4400,,4141,18204,,,Large and medium scale topographic mapping and engineering survey.,Supersedes Israeli CS Grid (EPSG code 28193).,Survey of Israel.,EPSG,2002-06-22 00:00:00,99.74  2002.34,1,0
-2040,Locodjo 1965 / UTM zone 30N,1450,projected,4400,,4142,16030,,,Large and medium scale topographic mapping and engineering survey.,Superseded by Abidjan 87 / UTM 30N (EPSG code 2041).,IGN Paris,EPSG,2000-03-07 00:00:00,99.74,1,0
-2041,Abidjan 1987 / UTM zone 30N,1450,projected,4400,,4143,16030,,,Large and medium scale topographic mapping and engineering survey.,Supersedes Locodjo 65 / UTM 30N (EPSG code 2040).,IGN Paris,EPSG,2000-03-07 00:00:00,99.74,1,0
-2042,Locodjo 1965 / UTM zone 29N,1451,projected,4400,,4142,16029,,,Large and medium scale topographic mapping and engineering survey.,Superseded by Abidjan 87 / UTM 29N (EPSG code 2043).,IGN Paris,EPSG,2000-03-07 00:00:00,99.74,1,0
-2043,Abidjan 1987 / UTM zone 29N,1451,projected,4400,,4143,16029,,,Large and medium scale topographic mapping and engineering survey.,Supersedes Locodjo 65 / UTM 29N (EPSG code 2042).,IGN Paris,EPSG,2000-03-07 00:00:00,99.74,1,0
-2044,Hanoi 1972 / Gauss-Kruger zone 18,1452,projected,4530,,4147,16218,,,Large and medium scale topographic mapping and engineering survey.,Replaces use of Indian 1960 / UTM zone 48 after 1988.,,EPSG,2000-03-07 00:00:00,99.74,1,0
-2045,Hanoi 1972 / Gauss-Kruger zone 19,1453,projected,4530,,4147,16219,,,Large and medium scale topographic mapping and engineering survey.,Replaces use of Indian 1960 / UTM zone 49 after 1988.,,EPSG,2000-03-07 00:00:00,99.74,1,0
-2046,Hartebeesthoek94 / Lo15,1454,projected,6503,,4148,17515,,,"Large and medium scale topographic mapping, cadastral and engineering survey.",,Directorate of Surveys and Mapping; http://w3sli.wcape.gov.za/surveys/mapping/wgs84.htm,EPSG,2000-03-07 00:00:00,99.74  99.96  99.98  2000.04,1,0
-2047,Hartebeesthoek94 / Lo17,1455,projected,6503,,4148,17517,,,"Large and medium scale topographic mapping, cadastral and engineering survey.",,Directorate of Surveys and Mapping; http://w3sli.wcape.gov.za/surveys/mapping/wgs84.htm,EPSG,2000-03-07 00:00:00,99.74  99.96  99.98  2000.04,1,0
-2048,Hartebeesthoek94 / Lo19,1456,projected,6503,,4148,17519,,,"Large and medium scale topographic mapping, cadastral and engineering survey.",,Directorate of Surveys and Mapping; http://w3sli.wcape.gov.za/surveys/mapping/wgs84.htm,EPSG,2000-03-07 00:00:00,99.74  99.96  99.98  2000.04,1,0
-2049,Hartebeesthoek94 / Lo21,1457,projected,6503,,4148,17521,,,"Large and medium scale topographic mapping, cadastral and engineering survey.",,Directorate of Surveys and Mapping; http://w3sli.wcape.gov.za/surveys/mapping/wgs84.htm,EPSG,2000-03-07 00:00:00,99.74  99.96  99.98  2000.04,1,0
-2050,Hartebeesthoek94 / Lo23,1458,projected,6503,,4148,17523,,,"Large and medium scale topographic mapping, cadastral and engineering survey.",,Directorate of Surveys and Mapping; http://w3sli.wcape.gov.za/surveys/mapping/wgs84.htm,EPSG,2000-03-07 00:00:00,99.74  99.96  99.98  2000.04,1,0
-2051,Hartebeesthoek94 / Lo25,1459,projected,6503,,4148,17525,,,"Large and medium scale topographic mapping, cadastral and engineering survey.",,Directorate of Surveys and Mapping; http://w3sli.wcape.gov.za/surveys/mapping/wgs84.htm,EPSG,2000-03-07 00:00:00,99.74  99.96  99.98  2000.04,1,0
-2052,Hartebeesthoek94 / Lo27,1460,projected,6503,,4148,17527,,,"Large and medium scale topographic mapping, cadastral and engineering survey.",,Directorate of Surveys and Mapping; http://w3sli.wcape.gov.za/surveys/mapping/wgs84.htm,EPSG,2000-03-07 00:00:00,99.74  99.96  99.98  2000.04,1,0
-2053,Hartebeesthoek94 / Lo29,1461,projected,6503,,4148,17529,,,"Large and medium scale topographic mapping, cadastral and engineering survey.",,Directorate of Surveys and Mapping; http://w3sli.wcape.gov.za/surveys/mapping/wgs84.htm,EPSG,2000-03-07 00:00:00,99.74  99.96  99.98  2000.04,1,0
-2054,Hartebeesthoek94 / Lo31,1462,projected,6503,,4148,17531,,,"Large and medium scale topographic mapping, cadastral and engineering survey.",,Directorate of Surveys and Mapping; http://w3sli.wcape.gov.za/surveys/mapping/wgs84.htm,EPSG,2000-03-07 00:00:00,99.74  99.96  99.98  2000.04,1,0
-2055,Hartebeesthoek94 / Lo33,1463,projected,6503,,4148,17533,,,"Large and medium scale topographic mapping, cadastral and engineering survey.",,Directorate of Surveys and Mapping; http://w3sli.wcape.gov.za/surveys/mapping/wgs84.htm,EPSG,2000-03-07 00:00:00,99.74  99.96  99.98  2000.04,1,0
-2056,CH1903+ / LV95,1286,projected,4498,,4150,19950,,,"Large and medium scale topographic mapping, cadastral and engineering survey.",Supersedes CH1903/LV03 (code 21781).,,EPSG,2000-03-07 00:00:00,99.74,1,0
-2057,Rassadiran / Nakhl e Taqi,1338,projected,4400,,4153,19951,,,Engineering survey for terminal site only.,,Total-Fina,EPSG,2000-03-07 00:00:00,99.74,1,0
-2058,ED50(ED77) / UTM zone 38N,1464,projected,4400,,4154,16038,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2000-03-07 00:00:00,99.74,1,0
-2059,ED50(ED77) / UTM zone 39N,1465,projected,4400,,4154,16039,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2000-03-07 00:00:00,99.74,1,0
-2060,ED50(ED77) / UTM zone 40N,1466,projected,4400,,4154,16040,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2000-03-07 00:00:00,99.74,1,0
-2061,ED50(ED77) / UTM zone 41N,1467,projected,4400,,4154,16041,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2000-03-07 00:00:00,99.74,1,0
-2062,Madrid 1870 (Madrid) / Spain,1217,projected,4499,,4903,19921,,,Large and medium scale topographic mapping and engineering survey.,Superseded by ED50 / UTM after 1966.,,EPSG,2000-03-07 00:00:00,99.74,1,0
-2063,Dabola 1981 / UTM zone 28N,1468,projected,4400,,4315,16028,,,Large and medium scale topographic mapping and engineering survey.,Supersedes Conakry 1905 / UTM zone 28 (EPSG code 31528).,,EPSG,1999-12-09 00:00:00,,1,0
-2064,Dabola 1981 / UTM zone 29N,1469,projected,4400,,4315,16029,,,Large and medium scale topographic mapping and engineering survey.,Supersedes Conakry 1905 / UTM zone 29 (EPSG code 31529).,,EPSG,1999-12-09 00:00:00,,1,0
-2065,S-JTSK (Ferro) / Krovak,1306,projected,6501,,4818,19952,,,Large and medium scale topographic mapping and engineering survey.,,Research Institute for Geodesy Topography and Cartography (VUGTK); Prague.,EPSG,2000-03-07 00:00:00,,1,0
-2066,Mount Dillon / Tobago Grid,1322,projected,4407,,4157,19924,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2000-03-07 00:00:00,,1,0
-2067,Naparima 1955 / UTM zone 20N,1339,projected,4400,,4158,16020,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2000-03-07 00:00:00,,1,0
-2068,ELD79 / Libya zone 5,1470,projected,4499,,4159,18240,,,Large and medium scale topographic mapping and engineering survey.,,Brown and Root,EPSG,2000-03-07 00:00:00,,1,0
-2069,ELD79 / Libya zone 6,1471,projected,4499,,4159,18241,,,Large and medium scale topographic mapping and engineering survey.,,Brown and Root,EPSG,2000-03-07 00:00:00,,1,0
-2070,ELD79 / Libya zone 7,1472,projected,4499,,4159,18242,,,Large and medium scale topographic mapping and engineering survey.,,Brown and Root,EPSG,2000-03-07 00:00:00,,1,0
-2071,ELD79 / Libya zone 8,1473,projected,4499,,4159,18243,,,Large and medium scale topographic mapping and engineering survey.,,Brown and Root,EPSG,2000-03-07 00:00:00,,1,0
-2072,ELD79 / Libya zone 9,1474,projected,4499,,4159,18244,,,Large and medium scale topographic mapping and engineering survey.,,Brown and Root,EPSG,2000-03-07 00:00:00,,1,0
-2073,ELD79 / Libya zone 10,1475,projected,4499,,4159,18245,,,Large and medium scale topographic mapping and engineering survey.,,Brown and Root,EPSG,2000-03-07 00:00:00,,1,0
-2074,ELD79 / Libya zone 11,1476,projected,4499,,4159,18246,,,Large and medium scale topographic mapping and engineering survey.,,Brown and Root,EPSG,2000-03-07 00:00:00,,1,0
-2075,ELD79 / Libya zone 12,1477,projected,4499,,4159,18247,,,Large and medium scale topographic mapping and engineering survey.,,Brown and Root,EPSG,2000-03-07 00:00:00,,1,0
-2076,ELD79 / Libya zone 13,1478,projected,4499,,4159,18248,,,Large and medium scale topographic mapping and engineering survey.,,Brown and Root,EPSG,2000-03-07 00:00:00,,1,0
-2077,ELD79 / UTM zone 32N,1479,projected,4400,,4159,16032,,,Large and medium scale topographic mapping and engineering survey.,,Brown and Root,EPSG,2000-03-07 00:00:00,,1,0
-2078,ELD79 / UTM zone 33N,1480,projected,4400,,4159,16033,,,Large and medium scale topographic mapping and engineering survey.,,Brown and Root,EPSG,2000-03-07 00:00:00,,1,0
-2079,ELD79 / UTM zone 34N,1481,projected,4400,,4159,16034,,,Large and medium scale topographic mapping and engineering survey.,,Brown and Root,EPSG,2000-03-07 00:00:00,,1,0
-2080,ELD79 / UTM zone 35N,1478,projected,4400,,4159,16035,,,Large and medium scale topographic mapping and engineering survey.,,Brown and Root,EPSG,2000-03-07 00:00:00,,1,0
-2081,Chos Malal 1914 / Argentina zone 2,1483,projected,4530,,4160,18032,,,Oil exploration.,,Various oil industry records,EPSG,2002-06-22 00:00:00,2002.36,1,0
-2082,Pampa del Castillo / Argentina zone 2,1484,projected,4530,,4161,18032,,,Oil exploration.,,Various oil industry records,EPSG,2002-06-22 00:00:00,2002.36,1,0
-2083,Hito XVIII 1963 / Argentina zone 2,1485,projected,4530,,4254,18032,,,Large and medium scale topographic mapping and engineering survey.,,Total-Fina,EPSG,2002-06-22 00:00:00,2002.36,1,0
-2084,Hito XVIII 1963 / UTM zone 19S,1486,projected,4400,,4254,16119,,,Large and medium scale topographic mapping and engineering survey.,,Total-Fina,EPSG,2000-03-07 00:00:00,,1,0
-2085,NAD27 / Cuba Norte,1487,projected,4532,,4267,18061,,,Large and medium scale topographic mapping and engineering survey.,,Institut Cubano di Hidrografia (ICH),EPSG,2000-03-07 00:00:00,,1,0
-2086,NAD27 / Cuba Sur,1488,projected,4532,,4267,18062,,,Large and medium scale topographic mapping and engineering survey.,,Institut Cubano di Hidrografia (ICH),EPSG,2000-03-07 00:00:00,,1,0
-2087,ELD79 / TM 12 NE,1482,projected,4400,,4159,16412,,,Oil exploration.,,Total-Fina,EPSG,2000-03-07 00:00:00,,1,0
-2088,Carthage / TM 11 NE,1489,projected,4400,,4223,16411,,,Oil exploration by Total.,,Total-Fina,EPSG,2000-03-07 00:00:00,,1,0
-2089,Yemen NGN96 / UTM zone 38N,1490,projected,4400,,4163,16038,,,Large and medium scale topographic mapping and engineering survey.,,IGN Paris,EPSG,2000-03-07 00:00:00,,1,0
-2090,Yemen NGN96 / UTM zone 39N,1491,projected,4400,,4163,16039,,,Large and medium scale topographic mapping and engineering survey.,,IGN Paris,EPSG,2000-03-07 00:00:00,,1,0
-2091,South Yemen / Gauss Kruger zone 8,1492,projected,4530,,4164,16208,,,Large and medium scale topographic mapping and engineering survey.,,IGN Paris,EPSG,2000-03-07 00:00:00,,1,1
-2092,South Yemen / Gauss Kruger zone 9,1493,projected,4530,,4164,16209,,,Large and medium scale topographic mapping and engineering survey.,,IGN Paris,EPSG,2000-03-07 00:00:00,,1,1
-2093,Hanoi 1972 / GK 106 NE,1494,projected,4530,,4147,16586,,,Used for cadastral and large scale topographic mapping.,,BP Amoco,EPSG,2000-03-07 00:00:00,,1,0
-2094,WGS 72BE / TM 106 NE,1495,projected,4400,,4324,16506,,,Oil exploration by Total for blocks 10 and 11-1.,,Total-Fina,EPSG,2000-03-07 00:00:00,,1,0
-2095,Bissau / UTM zone 28N,1113,projected,4400,,4165,16028,,,Large and medium scale topographic mapping and engineering survey.,,US National Imagery and Mapping Agency TR8350.2.,EPSG,2000-03-07 00:00:00,,1,0
-2096,Korean 1985 / Korea East Belt,1496,projected,4530,,4162,18251,,,Large and medium scale topographic mapping and engineering survey.,,Clifford J. Mugnier; in Photogrammetric Engineering & Remote Sensing November 1999. http://www.asprs.org/resources.html,EPSG,2000-03-07 00:00:00,2001.28,1,0
-2097,Korean 1985 / Korea Central Belt,1497,projected,4530,,4162,18252,,,Large and medium scale topographic mapping and engineering survey.,,Clifford J. Mugnier; in Photogrammetric Engineering & Remote Sensing November 1999. http://www.asprs.org/resources.html,EPSG,2000-03-07 00:00:00,2001.28,1,0
-2098,Korean 1985 / Korea West Belt,1498,projected,4530,,4162,18253,,,Large and medium scale topographic mapping and engineering survey.,,Clifford J. Mugnier; in Photogrammetric Engineering & Remote Sensing November 1999. http://www.asprs.org/resources.html,EPSG,2000-03-07 00:00:00,2001.28,1,0
-2099,Qatar 1948 / Qatar Grid,1346,projected,4400,,4286,19953,,,Large and medium scale topographic mapping and engineering survey.,Also known as Qatar Plane Coordinate or QPC system.  Superseded by Qatar National Grid (code 28600).,,EPSG,2000-03-07 00:00:00,,1,0
-2202,REGVEN / UTM zone 19N,1694,projected,4400,,4189,16019,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2001-11-06 00:00:00,,1,0
-2203,REGVEN / UTM zone 20N,1695,projected,4400,,4189,16020,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2001-11-06 00:00:00,,1,0
-2204,NAD27 / Tennessee,1411,projected,4497,,4267,15302,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2001-11-06 00:00:00,2001.45,1,0
-2205,NAD83 / Kentucky North,2202,projected,4499,,4269,15303,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  See code 2246 for equivalent non-metric definition. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,2001-11-06 00:00:00,2001.45,1,0
-2206,ED50 / 3-degree Gauss-Kruger zone 9,1524,projected,4530,,4230,16269,,,Large scale topographic mapping and cadastral survey.,Also found with truncated false easting - see ED50 / TM27 (code 2319).,EPSG,EPSG,2001-11-06 00:00:00,,1,0
-2207,ED50 / 3-degree Gauss-Kruger zone 10,1525,projected,4530,,4230,16270,,,Large scale topographic mapping and cadastral survey.,Also found with truncated false easting - see ED50 / TM30 (code 2320).,EPSG,EPSG,2001-11-06 00:00:00,,1,0
-2208,ED50 / 3-degree Gauss-Kruger zone 11,1526,projected,4530,,4230,16271,,,Large scale topographic mapping and cadastral survey.,Also found with truncated false easting - see ED50 / TM33 (code 2321).,EPSG,EPSG,2001-11-06 00:00:00,,1,0
-2209,ED50 / 3-degree Gauss-Kruger zone 12,1527,projected,4530,,4230,16272,,,Large scale topographic mapping and cadastral survey.,Also found with truncated false easting - see ED50 / TM36 (code 2322).,EPSG,EPSG,2001-11-06 00:00:00,,1,0
-2210,ED50 / 3-degree Gauss-Kruger zone 13,1528,projected,4530,,4230,16273,,,Large scale topographic mapping and cadastral survey.,Also found with truncated false easting - see ED50 / TM39 (code 2323).,EPSG,EPSG,2001-11-06 00:00:00,,1,0
-2211,ED50 / 3-degree Gauss-Kruger zone 14,1529,projected,4530,,4230,16274,,,Large scale topographic mapping and cadastral survey.,Also found with truncated false easting - see ED50 / TM42 (code 2324).,EPSG,EPSG,2001-11-06 00:00:00,,1,0
-2212,ED50 / 3-degree Gauss-Kruger zone 15,1530,projected,4530,,4230,16275,,,Large scale topographic mapping and cadastral survey.,Also found with truncated false easting - see ED50 / TM45 (code 2325).,EPSG,EPSG,2001-11-06 00:00:00,,1,0
-2213,ETRS89 / TM 30 NE,2546,projected,4400,,4258,16430,,,Oil industry usage.,,,EPSG,2001-11-06 00:00:00,,1,0
-2214,Douala 1948 / AOF west,1060,projected,4400,,4192,18415,,,Medium and small scale topographic mapping and engineering survey.,Superseded by Manoca 1962 / UTM zone 32N (code 2215).,,EPSG,2002-01-18 00:00:00,,1,0
-2215,Manoca 1962 / UTM zone 32N,1060,projected,4400,,4193,16032,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2002-01-18 00:00:00,,1,0
-2216,Qornoq 1927 / UTM zone 22N,2573,projected,4400,,4194,16022,,,Topographic mapping.,,"Kort & Matrikelstyrelsen, Copenhagen.",EPSG,2002-01-18 00:00:00,,1,0
-2217,Qornoq 1927 / UTM zone 23N,2572,projected,4400,,4194,16023,,,Topographic mapping.,,"Kort & Matrikelstyrelsen, Copenhagen.",EPSG,2002-01-18 00:00:00,,1,0
-2218,Scoresbysund 1952 / Greenland zone 5 east,2560,projected,4501,,4195,18425,,,Topographic mapping.,Coordinate system second axis has abbreviation E but is positive to the west.,"Kort & Matrikelstyrelsen, Copenhagen.",EPSG,2002-01-26 00:00:00,,1,0
-2219,ATS77 / UTM zone 19N,1531,projected,4400,,4122,16019,,,Large and medium scale topographic mapping and engineering survey.,In use from 1979.  To be phased out in late 1990's.,New Brunswick Geographic Information Corporation land and water information standards manual.,EPSG,1997-07-22 00:00:00,,1,0
-2220,ATS77 / UTM zone 20N,1532,projected,4400,,4122,16020,,,Large and medium scale topographic mapping and engineering survey.,In use from 1979.  To be phased out in late 1990's.,New Brunswick Geographic Information Corporation land and water information standards manual.,EPSG,1997-07-22 00:00:00,,1,0
-2221,Scoresbysund 1952 / Greenland zone 6 east,2561,projected,4501,,4195,18426,,,Topographic mapping.,Coordinate system second axis has abbreviation E but is positive to the west.,"Kort & Matrikelstyrelsen, Copenhagen.",EPSG,2002-01-26 00:00:00,,1,0
-2222,NAD83 / Arizona East (ft),2167,projected,4495,,4269,15304,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in International feet (note: not US survey feet).  Federal definition is metric - see code 26948. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-2223,NAD83 / Arizona Central (ft),2166,projected,4495,,4269,15305,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in International feet (note: not US survey feet).  Federal definition is metric - see code 26949. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-2224,NAD83 / Arizona West (ft),2168,projected,4495,,4269,15306,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in International feet (note: not US survey feet).  Federal definition is metric - see code 26950. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-2225,NAD83 / California zone 1 (ftUS),2175,projected,4497,,4269,15307,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  Federal definition is metric - see code 26941. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-2226,NAD83 / California zone 2 (ftUS),2176,projected,4497,,4269,15308,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  Federal definition is metric - see code 26942. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-2227,NAD83 / California zone 3 (ftUS),2177,projected,4497,,4269,15309,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  Federal definition is metric - see code 26943. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-2228,NAD83 / California zone 4 (ftUS),2178,projected,4497,,4269,15310,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  Federal definition is metric - see code 26944. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-2229,NAD83 / California zone 5 (ftUS),2182,projected,4497,,4269,15311,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  Federal definition is metric - see code 26945. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-2230,NAD83 / California zone 6 (ftUS),2180,projected,4497,,4269,15312,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  Federal definition is metric - see code 26946. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-2231,NAD83 / Colorado North (ftUS),2184,projected,4497,,4269,15313,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  Federal definition is metric - see code 26953. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-2232,NAD83 / Colorado Central (ftUS),2183,projected,4497,,4269,15314,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  Federal definition is metric - see code 26954. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-2233,NAD83 / Colorado South (ftUS),2185,projected,4497,,4269,15315,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  Federal definition is metric - see code 26955. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-2234,NAD83 / Connecticut (ftUS),1377,projected,4497,,4269,15316,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  Federal definition is metric - see code 26956. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-2235,NAD83 / Delaware (ftUS),1378,projected,4497,,4269,15317,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  Federal definition is metric - see code 26957. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-2236,NAD83 / Florida East (ftUS),2186,projected,4497,,4269,15318,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  Federal definition is metric - see code 26958. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-2237,NAD83 / Florida West (ftUS),2188,projected,4497,,4269,15319,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  Federal definition is metric - see code 26959. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-2238,NAD83 / Florida North (ftUS),2187,projected,4497,,4269,15320,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  Federal definition is metric - see code 26960. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-2239,NAD83 / Georgia East (ftUS),2189,projected,4497,,4269,15321,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  Federal definition is metric - see code 26966. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-2240,NAD83 / Georgia West (ftUS),2190,projected,4497,,4269,15322,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  Federal definition is metric - see code 26967. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-2241,NAD83 / Idaho East (ftUS),2192,projected,4497,,4269,15323,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  Federal definition is metric - see code 26968. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-2242,NAD83 / Idaho Central (ftUS),2191,projected,4497,,4269,15324,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  Federal definition is metric - see code 26969. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-2243,NAD83 / Idaho West (ftUS),2193,projected,4497,,4269,15325,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  Federal definition is metric - see code 26970. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-2244,NAD83 / Indiana East (ftUS),2196,projected,4497,,4269,15326,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  Federal definition is metric - see code 26973. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-2245,NAD83 / Indiana West (ftUS),2197,projected,4497,,4269,15327,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  Federal definition is metric - see code 26974. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-2246,NAD83 / Kentucky North (ftUS),2202,projected,4497,,4269,15328,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  Federal definition is metric - see code 2205. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-2247,NAD83 / Kentucky South (ftUS),2203,projected,4497,,4269,15329,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  Federal definition is metric - see code 26980. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-2248,NAD83 / Maryland (ftUS),1389,projected,4497,,4269,15330,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  Federal definition is metric - see code 26985. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-2249,NAD83 / Massachusetts Mainland (ftUS),2209,projected,4497,,4269,15331,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  Federal definition is metric - see code 26986. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-2250,NAD83 / Massachusetts Island (ftUS),2208,projected,4497,,4269,15332,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  Federal definition is metric - see code 26987. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-2251,NAD83 / Michigan North (ft),1723,projected,4495,,4269,15333,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in International feet (note: not US survey feet).  Federal definition is metric - see code 26988. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-2252,NAD83 / Michigan Central (ft),1724,projected,4495,,4269,15334,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in International feet (note: not US survey feet).  Federal definition is metric - see code 26989. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-2253,NAD83 / Michigan South (ft),1725,projected,4495,,4269,15335,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in International feet (note: not US survey feet).  Federal definition is metric - see code 26990. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-2254,NAD83 / Mississippi East (ftUS),2216,projected,4497,,4269,15336,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  Federal definition is metric - see code 26994. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-2255,NAD83 / Mississippi West (ftUS),2217,projected,4497,,4269,15337,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  Federal definition is metric - see code 26995. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-2256,NAD83 / Montana (ft),1395,projected,4495,,4269,15338,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in International feet (note: not US survey feet).  Federal definition is metric - see code 32100. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-2257,NAD83 / New Mexico East (ftUS),2228,projected,4497,,4269,15339,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  Federal definition is metric - see code 32112. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-2258,NAD83 / New Mexico Central (ftUS),2231,projected,4497,,4269,15340,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  Federal definition is metric - see code 32113. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-2259,NAD83 / New Mexico West (ftUS),2232,projected,4497,,4269,15341,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  Federal definition is metric - see code 32114. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-2260,NAD83 / New York East (ftUS),2234,projected,4497,,4269,15342,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  Federal definition is metric - see code 32115. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-2261,NAD83 / New York Central (ftUS),2233,projected,4497,,4269,15343,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  Federal definition is metric - see code 32116. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-2262,NAD83 / New York West (ftUS),2236,projected,4497,,4269,15344,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  Federal definition is metric - see code 32117. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-2263,NAD83 / New York Long Island (ftUS),2235,projected,4497,,4269,15345,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  Federal definition is metric - see code 32118. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-2264,NAD83 / North Carolina (ftUS),1402,projected,4497,,4269,15346,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  Federal definition is metric - see code 32119.,National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-2265,NAD83 / North Dakota North (ft),2237,projected,4495,,4269,15347,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in International feet (note: not US survey feet).  Federal definition is metric - see code 32120. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-2266,NAD83 / North Dakota South (ft),2238,projected,4495,,4269,15348,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in International feet (note: not US survey feet).  Federal definition is metric - see code 32121. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-2267,NAD83 / Oklahoma North (ftUS),2241,projected,4497,,4269,15349,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  Federal definition is metric - see code 32124. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-2268,NAD83 / Oklahoma South (ftUS),2242,projected,4497,,4269,15350,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  Federal definition is metric - see code 32125. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-2269,NAD83 / Oregon North (ft),2243,projected,4495,,4269,15351,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in International feet (note: not US survey feet).  Federal definition is metric - see code 32126. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-2270,NAD83 / Oregon South (ft),2244,projected,4495,,4269,15352,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in International feet (note: not US survey feet).  Federal definition is metric - see code 32127. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-2271,NAD83 / Pennsylvania North (ftUS),2245,projected,4497,,4269,15353,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  Federal definition is metric - see code 32128.,National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-2272,NAD83 / Pennsylvania South (ftUS),2246,projected,4497,,4269,15354,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  Federal definition is metric - see code 32129.,National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-2273,NAD83 / South Carolina (ft),1409,projected,4495,,4269,15355,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  Federal definition is metric - see code 32133.,National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-2274,NAD83 / Tennessee (ftUS),1411,projected,4497,,4269,15356,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  Federal definition is metric - see code 32136. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-2275,NAD83 / Texas North (ftUS),2253,projected,4497,,4269,15357,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  Federal definition is metric - see code 32137. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-2276,NAD83 / Texas North Central (ftUS),2254,projected,4497,,4269,15358,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  Federal definition is metric - see code 32138. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-2277,NAD83 / Texas Central (ftUS),2252,projected,4497,,4269,15359,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  Federal definition is metric - see code 32139. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-2278,NAD83 / Texas South Central (ftUS),2527,projected,4497,,4269,15360,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  Federal definition is metric - see code 32140. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-2279,NAD83 / Texas South (ftUS),2528,projected,4497,,4269,15361,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  Federal definition is metric - see code 32141. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-2280,NAD83 / Utah North (ft),2258,projected,4495,,4269,15362,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in International feet (note: not US survey feet).  Federal definition is metric - see code 32142. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-2281,NAD83 / Utah Central (ft),2257,projected,4495,,4269,15363,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in International feet (note: not US survey feet).  Federal definition is metric - see code 32143. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-2282,NAD83 / Utah South (ft),2259,projected,4495,,4269,15364,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in International feet (note: not US survey feet).  Federal definition is metric - see code 32144. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-2283,NAD83 / Virginia North (ftUS),2260,projected,4497,,4269,15365,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  Federal definition is metric - see code 32146. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-2284,NAD83 / Virginia South (ftUS),2261,projected,4497,,4269,15366,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  Federal definition is metric - see code 32147. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-2285,NAD83 / Washington North (ftUS),2273,projected,4497,,4269,15367,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  Federal definition is metric - see code 32148. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-2286,NAD83 / Washington South (ftUS),2274,projected,4497,,4269,15368,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  Federal definition is metric - see code 32149. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-2287,NAD83 / Wisconsin North (ftUS),2267,projected,4497,,4269,15369,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  Federal definition is metric - see code 32152. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-2288,NAD83 / Wisconsin Central (ftUS),2266,projected,4497,,4269,15370,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  Federal definition is metric - see code 32153. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-2289,NAD83 / Wisconsin South (ftUS),2268,projected,4497,,4269,15371,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  Federal definition is metric - see code 32154. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",National Geodetic Survey  http://www.ngs.noaa.gov/INFO/Policy/st_plane.html,EPSG,2001-11-06 00:00:00,,1,0
-2290,ATS77 / Prince Edward Isl. Stereographic (ATS77),1533,projected,4496,,4122,19933,,,Large and medium scale topographic mapping and engineering survey.,In use from 1979.  To be phased out in late 1990's.,Geomatics Centre; Nova Scotia Ministry of Housing and Municipal Affairs.,EPSG,1997-11-13 00:00:00,,1,0
-2291,NAD83(CSRS98) / Prince Edward Isl. Stereographic (NAD83),1533,projected,4496,,4122,19960,,,Large and medium scale topographic mapping and engineering survey.,Deprecated due to error in source geogCRS.,PEI Department of Transportation & Public Works,EPSG,2000-10-19 00:00:00,,1,1
-2292,NAD83(CSRS98) / Prince Edward Isl. Stereographic (NAD83),1533,projected,4496,,4140,19960,,,Large and medium scale topographic mapping and engineering survey.,,PEI Department of Transportation & Public Works,EPSG,2001-08-28 00:00:00,,1,1
-2294,ATS77 / MTM Nova Scotia zone 4,1534,projected,4400,,4122,17794,,,Large and medium scale topographic mapping and engineering survey.,In use from 1979.  To be phased out in late 1990's.,Geomatics Centre; Nova Scotia Ministry of Housing and Municipal Affairs.,EPSG,1997-11-13 00:00:00,,1,0
-2295,ATS77 / MTM Nova Scotia zone 5,1535,projected,4400,,4122,17795,,,Large and medium scale topographic mapping and engineering survey.,In use from 1979.  To be phased out in late 1990's.,Geomatics Centre; Nova Scotia Ministry of Housing and Municipal Affairs.,EPSG,1997-11-13 00:00:00,,1,0
-2296,Ammassalik 1958 / Greenland zone 7 east,2562,projected,4501,,4196,18427,,,Topographic mapping.,Coordinate system second axis has abbreviation E but is positive to the west.,"Kort & Matrikelstyrelsen, Copenhagen.",EPSG,2002-01-26 00:00:00,,1,0
-2297,Qornoq 1927 / Greenland zone 1 east,2556,projected,4501,,4194,18421,,,Topographic mapping.,Coordinate system second axis has abbreviation E but is positive to the west.,"Kort & Matrikelstyrelsen, Copenhagen.",EPSG,2002-01-26 00:00:00,,1,0
-2298,Qornoq 1927 / Greenland zone 2 east,2557,projected,4501,,4194,18422,,,Topographic mapping.,Coordinate system second axis has abbreviation E but is positive to the west.,"Kort & Matrikelstyrelsen, Copenhagen.",EPSG,2002-01-26 00:00:00,,1,0
-2299,Qornoq 1927 / Greenland zone 2 west,2563,projected,4501,,4194,18432,,,Topographic mapping.,Coordinate system second axis has abbreviation E but is positive to the west.,"Kort & Matrikelstyrelsen, Copenhagen.",EPSG,2002-01-26 00:00:00,,1,0
-2300,Qornoq 1927 / Greenland zone 3 east,2558,projected,4501,,4194,18423,,,Topographic mapping.,Coordinate system second axis has abbreviation E but is positive to the west.,"Kort & Matrikelstyrelsen, Copenhagen.",EPSG,2002-01-26 00:00:00,,1,0
-2301,Qornoq 1927 / Greenland zone 3 west,2564,projected,4501,,4194,18433,,,Topographic mapping.,Coordinate system second axis has abbreviation E but is positive to the west.,"Kort & Matrikelstyrelsen, Copenhagen.",EPSG,2002-01-26 00:00:00,,1,0
-2302,Qornoq 1927 / Greenland zone 4 east,2559,projected,4501,,4194,18424,,,Topographic mapping.,Coordinate system second axis has abbreviation E but is positive to the west.,"Kort & Matrikelstyrelsen, Copenhagen.",EPSG,2002-01-26 00:00:00,,1,0
-2303,Qornoq 1927 / Greenland zone 4 west,2565,projected,4501,,4194,18434,,,Topographic mapping.,Coordinate system second axis has abbreviation E but is positive to the west.,"Kort & Matrikelstyrelsen, Copenhagen.",EPSG,2002-01-26 00:00:00,,1,0
-2304,Qornoq 1927 / Greenland zone 5 west,2566,projected,4501,,4194,18435,,,Topographic mapping.,Coordinate system second axis has abbreviation E but is positive to the west.,"Kort & Matrikelstyrelsen, Copenhagen.",EPSG,2002-01-26 00:00:00,,1,0
-2305,Qornoq 1927 / Greenland zone 6 west,2567,projected,4501,,4194,18436,,,Topographic mapping.,Coordinate system second axis has abbreviation E but is positive to the west.,"Kort & Matrikelstyrelsen, Copenhagen.",EPSG,2002-01-26 00:00:00,,1,0
-2306,Qornoq 1927 / Greenland zone 7 west,2568,projected,4501,,4194,18437,,,Topographic mapping.,Coordinate system second axis has abbreviation E but is positive to the west.,"Kort & Matrikelstyrelsen, Copenhagen.",EPSG,2002-01-26 00:00:00,,1,0
-2307,Qornoq 1927 / Greenland zone 8 east,2569,projected,4501,,4194,18428,,,Topographic mapping.,Coordinate system second axis has abbreviation E but is positive to the west.,"Kort & Matrikelstyrelsen, Copenhagen.",EPSG,2002-01-26 00:00:00,,1,0
-2308,Batavia / TM 109 SE,2577,projected,4400,,4211,16709,,,Used by Arco and BP for ONWJ.,,BP Indonesia.,EPSG,2002-02-12 00:00:00,,1,0
-2309,WGS 84 / TM 116 SE,2588,projected,4400,,4326,16716,,,Used by BP for Terang-Sirasun.,,BP Indonesia.,EPSG,2002-06-22 00:00:00,2002.151,1,0
-2310,WGS 84 / TM 132 SE,2589,projected,4400,,4326,16732,,,Used for hydrocarbons exploration and development.,,BP Indonesia.,EPSG,2002-06-22 00:00:00,2002.151,1,0
-2311,WGS 84 / TM 6 NE,1717,projected,4400,,4326,16406,,,Used for oil exploration by ExxonMobil.,,ExxonMobil.,EPSG,2002-02-12 00:00:00,,1,0
-2312,Garoua / UTM zone 33N,2590,projected,4400,,4197,16033,,,Large and medium scale topographic mapping and engineering survey.,,TotalFinaElf,EPSG,2002-02-12 00:00:00,,1,0
-2313,Kousseri / UTM zone 33N,2591,projected,4400,,4198,16033,,,Large and medium scale topographic mapping and engineering survey.,,TotalFinaElf,EPSG,2002-02-12 00:00:00,,1,0
-2314,Trinidad 1903 / Trinidad Grid (ftCla),1322,projected,4403,,4302,19975,,,Oil industry exploration and production.,Foot version of Trinidad 1903 / Trinidad Grid (code 30200) used by some US-based companies including Amoco Trinidad.,BP,EPSG,2002-02-12 00:00:00,,1,0
-2315,Campo Inchauspe / UTM zone 19S,2596,projected,4400,,4221,16119,,,Oil industry exploration.,,TotalFinaElf,EPSG,2002-02-12 00:00:00,,1,0
-2316,Campo Inchauspe / UTM zone 20S,2597,projected,4400,,4221,16120,,,Oil industry exploration.,,TotalFinaElf,EPSG,2002-02-12 00:00:00,,1,0
-2317,PSAD56 / ICN Regional,1251,projected,4499,,4248,19976,,,Small scale topographic and geological mapping.,,Institute Cartografica Nacional,EPSG,2002-02-12 00:00:00,,1,0
-2318,Ain el Abd / Aramco Lambert,1206,projected,4400,,4204,19977,,,Oil industry exploration and production.,Used by Saudi Aramco when area of interest crosses UTM zone boundary. Adopted by partners for Core Venture 1 (South Ghawar) area.,Saudi Aramco,EPSG,2002-02-12 00:00:00,,1,0
-2319,ED50 / TM27,1524,projected,4530,,4230,16369,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with zone number prefix to false easting - see ED50 / 3-degree Gauss-Kruger zone 9 (code 2206).,General Command of Mapping via EuroGeographics; http://crs.ifag.de/,EPSG,2002-06-22 00:00:00,,1,0
-2320,ED50 / TM30,1525,projected,4530,,4230,16370,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with zone number prefix to false easting - see ED50 / 3-degree Gauss-Kruger zone 10 (code 2207).,General Command of Mapping via EuroGeographics; http://crs.ifag.de/,EPSG,2002-06-22 00:00:00,,1,0
-2321,ED50 / TM33,1526,projected,4530,,4230,16371,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with zone number prefix to false easting - see ED50 / 3-degree Gauss-Kruger zone 11 (code 2208).,General Command of Mapping via EuroGeographics; http://crs.ifag.de/,EPSG,2002-06-22 00:00:00,,1,0
-2322,ED50 / TM36,1527,projected,4530,,4230,16372,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with zone number prefix to false easting - see ED50 / 3-degree Gauss-Kruger zone 12 (code 2209).,General Command of Mapping via EuroGeographics; http://crs.ifag.de/,EPSG,2002-06-22 00:00:00,,1,0
-2323,ED50 / TM39,1528,projected,4530,,4230,16373,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with zone number prefix to false easting - see ED50 / 3-degree Gauss-Kruger zone 13 (code 2210).,General Command of Mapping via EuroGeographics; http://crs.ifag.de/,EPSG,2002-06-22 00:00:00,,1,0
-2324,ED50 / TM42,1529,projected,4530,,4230,16374,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with zone number prefix to false easting - see ED50 / 3-degree Gauss-Kruger zone 14 (code 2211).,General Command of Mapping via EuroGeographics; http://crs.ifag.de/,EPSG,2002-06-22 00:00:00,,1,0
-2325,ED50 / TM45,1530,projected,4530,,4230,16375,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with zone number prefix to false easting - see ED50 / 3-degree Gauss-Kruger zone 15 (code 2212).,General Command of Mapping via EuroGeographics; http://crs.ifag.de/,EPSG,2002-06-22 00:00:00,,1,0
-2326,Hong Kong 1980 Grid System,1118,projected,4500,,4611,19978,,,"Large scale topographic mapping, cadastral and engineering survey.",Supersedes Hong Kong 1963 Grid system and its 1976 metric variant.,"Survey and Mapping Office, Lands Department. Http://www.info.gov.hk/landsd/mapping/tindex.htm",EPSG,2002-06-22 00:00:00,,1,0
-2327,Xian 1980 / Gauss-Kruger zone 13,1587,projected,4530,,4610,16213,,,Medium scale topographic mapping.,Also found with truncated false easting - see Xian 1980 / [6-degree] Gauss-Kruger CM 75E (code 2338).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2328,Xian 1980 / Gauss-Kruger zone 14,1588,projected,4530,,4610,16214,,,Medium scale topographic mapping.,Also found with truncated false easting - see Xian 1980 / [6-degree] Gauss-Kruger CM 81E (code 2339).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2329,Xian 1980 / Gauss-Kruger zone 15,1589,projected,4530,,4610,16215,,,Medium scale topographic mapping.,Also found with truncated false easting - see Xian 1980 / [6-degree] Gauss-Kruger CM 87E (code 2340).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2330,Xian 1980 / Gauss-Kruger zone 16,1590,projected,4530,,4610,16216,,,Medium scale topographic mapping.,Also found with truncated false easting - see Xian 1980 / [6-degree] Gauss-Kruger CM 93E (code 2341).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2331,Xian 1980 / Gauss-Kruger zone 17,1591,projected,4530,,4610,16217,,,Medium scale topographic mapping.,Also found with truncated false easting - see Xian 1980 / [6-degree] Gauss-Kruger CM 99E (code 2342).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2332,Xian 1980 / Gauss-Kruger zone 18,1592,projected,4530,,4610,16218,,,Medium scale topographic mapping.,Also found with truncated false easting - see Xian 1980 / [6-degree] Gauss-Kruger CM 105E (code 2343).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2333,Xian 1980 / Gauss-Kruger zone 19,1593,projected,4530,,4610,16219,,,Medium scale topographic mapping.,Also found with truncated false easting - see Xian 1980 / [6-degree] Gauss-Kruger CM 111E (code 2344).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2334,Xian 1980 / Gauss-Kruger zone 20,1594,projected,4530,,4610,16220,,,Medium scale topographic mapping.,Also found with truncated false easting - see Xian 1980 / [6-degree] Gauss-Kruger CM 117E (code 2345).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2335,Xian 1980 / Gauss-Kruger zone 21,1595,projected,4530,,4610,16221,,,Medium scale topographic mapping.,Also found with truncated false easting - see Xian 1980 / [6-degree] Gauss-Kruger CM 123E (code 2346).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2336,Xian 1980 / Gauss-Kruger zone 22,1596,projected,4530,,4610,16222,,,Medium scale topographic mapping.,Also found with truncated false easting - see Xian 1980 / [6-degree] Gauss-Kruger CM 129E (code 2347).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2337,Xian 1980 / Gauss-Kruger zone 23,1597,projected,4530,,4610,16223,,,Medium scale topographic mapping.,Also found with truncated false easting - see Xian 1980 / [6-degree] Gauss-Kruger CM 135E (code 2348).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2338,Xian 1980 / Gauss-Kruger CM 75E,1587,projected,4530,,4610,16313,,,Medium scale topographic mapping.,Truncated form of Xian 1980 / [6-degree] Gauss-Kruger zone 13 (code 2327).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2339,Xian 1980 / Gauss-Kruger CM 81E,1588,projected,4530,,4610,16314,,,Medium scale topographic mapping.,Truncated form of Xian 1980 / [6-degree] Gauss-Kruger zone 14 (code 2328).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2340,Xian 1980 / Gauss-Kruger CM 87E,1589,projected,4530,,4610,16315,,,Medium scale topographic mapping.,Truncated form of Xian 1980 / [6-degree] Gauss-Kruger zone 15 (code 2329).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2341,Xian 1980 / Gauss-Kruger CM 93E,1590,projected,4530,,4610,16316,,,Medium scale topographic mapping.,Truncated form of Xian 1980 / [6-degree] Gauss-Kruger zone 16 (code 2330).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2342,Xian 1980 / Gauss-Kruger CM 99E,1591,projected,4530,,4610,16317,,,Medium scale topographic mapping.,Truncated form of Xian 1980 / [6-degree] Gauss-Kruger zone 17 (code 2331).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2343,Xian 1980 / Gauss-Kruger CM 105E,1592,projected,4530,,4610,16318,,,Medium scale topographic mapping.,Truncated form of Xian 1980 / [6-degree] Gauss-Kruger zone 18 (code 2332).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2344,Xian 1980 / Gauss-Kruger CM 111E,1593,projected,4530,,4610,16319,,,Medium scale topographic mapping.,Truncated form of Xian 1980 / [6-degree] Gauss-Kruger zone 19 (code 2333).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2345,Xian 1980 / Gauss-Kruger CM 117E,1594,projected,4530,,4610,16320,,,Medium scale topographic mapping.,Truncated form of Xian 1980 / [6-degree] Gauss-Kruger zone 20 (code 2334).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2346,Xian 1980 / Gauss-Kruger CM 123E,1595,projected,4530,,4610,16321,,,Medium scale topographic mapping.,Truncated form of Xian 1980 / [6-degree] Gauss-Kruger zone 21 (code 2335).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2347,Xian 1980 / Gauss-Kruger CM 129E,1596,projected,4530,,4610,16322,,,Medium scale topographic mapping.,Truncated form of Xian 1980 / [6-degree] Gauss-Kruger zone 22 (code 2336).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2348,Xian 1980 / Gauss-Kruger CM 135E,1597,projected,4530,,4610,16323,,,Medium scale topographic mapping.,Truncated form of Xian 1980 / [6-degree] Gauss-Kruger zone 23 (code 2337).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2349,Xian 1980 / 3-degree Gauss-Kruger zone 25,2711,projected,4530,,4610,16285,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Xian 1980 / 3-degree Gauss-Kruger CM 75E (code 2370).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2350,Xian 1980 / 3-degree Gauss-Kruger zone 26,2712,projected,4530,,4610,16286,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Xian 1980 / 3-degree Gauss-Kruger CM 78E (code 2371).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2351,Xian 1980 / 3-degree Gauss-Kruger zone 27,2713,projected,4530,,4610,16287,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Xian 1980 / 3-degree Gauss-Kruger CM 81E (code 2372).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2352,Xian 1980 / 3-degree Gauss-Kruger zone 28,2714,projected,4530,,4610,16288,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Xian 1980 / 3-degree Gauss-Kruger CM 84E (code 2373).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2353,Xian 1980 / 3-degree Gauss-Kruger zone 29,2715,projected,4530,,4610,16289,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Xian 1980 / 3-degree Gauss-Kruger CM 87E (code 2374).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2354,Xian 1980 / 3-degree Gauss-Kruger zone 30,2716,projected,4530,,4610,16290,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Xian 1980 / 3-degree Gauss-Kruger CM 90E (code 2375).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2355,Xian 1980 / 3-degree Gauss-Kruger zone 31,2717,projected,4530,,4610,16291,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Xian 1980 / 3-degree Gauss-Kruger CM 93E (code 2376).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2356,Xian 1980 / 3-degree Gauss-Kruger zone 32,2718,projected,4530,,4610,16292,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Xian 1980 / 3-degree Gauss-Kruger CM 96E (code 2377).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2357,Xian 1980 / 3-degree Gauss-Kruger zone 33,2719,projected,4530,,4610,16293,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Xian 1980 / 3-degree Gauss-Kruger CM 99E (code 2378).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2358,Xian 1980 / 3-degree Gauss-Kruger zone 34,2720,projected,4530,,4610,16294,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Xian 1980 / 3-degree Gauss-Kruger CM 102E (code 2379).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2359,Xian 1980 / 3-degree Gauss-Kruger zone 35,2721,projected,4530,,4610,16295,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Xian 1980 / 3-degree Gauss-Kruger CM 105E (code 2380).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2360,Xian 1980 / 3-degree Gauss-Kruger zone 36,2722,projected,4530,,4610,16296,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Xian 1980 / 3-degree Gauss-Kruger CM 108E (code 2381).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2361,Xian 1980 / 3-degree Gauss-Kruger zone 37,2723,projected,4530,,4610,16297,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Xian 1980 / 3-degree Gauss-Kruger CM 111E (code 2382).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2362,Xian 1980 / 3-degree Gauss-Kruger zone 38,2724,projected,4530,,4610,16298,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Xian 1980 / 3-degree Gauss-Kruger CM 114E (code 2383).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2363,Xian 1980 / 3-degree Gauss-Kruger zone 39,2725,projected,4530,,4610,16299,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Xian 1980 / 3-degree Gauss-Kruger CM 117E (code 2384).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2364,Xian 1980 / 3-degree Gauss-Kruger zone 40,2726,projected,4530,,4610,16070,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Xian 1980 / 3-degree Gauss-Kruger CM 123E (code 2385).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2365,Xian 1980 / 3-degree Gauss-Kruger zone 41,2727,projected,4530,,4610,16071,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Xian 1980 / 3-degree Gauss-Kruger CM 126E (code 2386).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2366,Xian 1980 / 3-degree Gauss-Kruger zone 42,2728,projected,4530,,4610,16072,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Xian 1980 / 3-degree Gauss-Kruger CM 126E (code 2387).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2367,Xian 1980 / 3-degree Gauss-Kruger zone 43,2729,projected,4530,,4610,16073,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Xian 1980 / 3-degree Gauss-Kruger CM 129E (code 2388).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2368,Xian 1980 / 3-degree Gauss-Kruger zone 44,2730,projected,4530,,4610,16074,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Xian 1980 / 3-degree Gauss-Kruger CM 132E (code 2389).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2369,Xian 1980 / 3-degree Gauss-Kruger zone 45,2731,projected,4530,,4610,16075,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Xian 1980 / 3-degree Gauss-Kruger CM 135E (code 2390).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2370,Xian 1980 / 3-degree Gauss-Kruger CM 75E,2711,projected,4530,,4610,16385,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Xian 1980 / 3-degree Gauss-Kruger zone 25 (code 2349).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2371,Xian 1980 / 3-degree Gauss-Kruger CM 78E,2712,projected,4530,,4610,16386,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Xian 1980 / 3-degree Gauss-Kruger zone 26 (code 2350).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2372,Xian 1980 / 3-degree Gauss-Kruger CM 81E,2713,projected,4530,,4610,16387,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Xian 1980 / 3-degree Gauss-Kruger zone 27 (code 2351).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2373,Xian 1980 / 3-degree Gauss-Kruger CM 84E,2714,projected,4530,,4610,16388,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Xian 1980 / 3-degree Gauss-Kruger zone 28 (code 2352).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2374,Xian 1980 / 3-degree Gauss-Kruger CM 87E,2715,projected,4530,,4610,16389,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Xian 1980 / 3-degree Gauss-Kruger zone 29 (code 2353).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2375,Xian 1980 / 3-degree Gauss-Kruger CM 90E,2716,projected,4530,,4610,16390,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Xian 1980 / 3-degree Gauss-Kruger zone 30 (code 2354).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2376,Xian 1980 / 3-degree Gauss-Kruger CM 93E,2717,projected,4530,,4610,16391,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Xian 1980 / 3-degree Gauss-Kruger zone 31 (code 2355).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2377,Xian 1980 / 3-degree Gauss-Kruger CM 96E,2718,projected,4530,,4610,16392,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Xian 1980 / 3-degree Gauss-Kruger zone 32 (code 2356).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2378,Xian 1980 / 3-degree Gauss-Kruger CM 99E,2719,projected,4530,,4610,16393,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Xian 1980 / 3-degree Gauss-Kruger zone 33 (code 2357).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2379,Xian 1980 / 3-degree Gauss-Kruger CM 102E,2720,projected,4530,,4610,16394,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Xian 1980 / 3-degree Gauss-Kruger zone 34 (code 2358).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2380,Xian 1980 / 3-degree Gauss-Kruger CM 105E,2721,projected,4530,,4610,16395,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Xian 1980 / 3-degree Gauss-Kruger zone 35 (code 2359).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2381,Xian 1980 / 3-degree Gauss-Kruger CM 108E,2722,projected,4530,,4610,16396,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Xian 1980 / 3-degree Gauss-Kruger zone 36 (code 2360).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2382,Xian 1980 / 3-degree Gauss-Kruger CM 111E,2723,projected,4530,,4610,16397,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Xian 1980 / 3-degree Gauss-Kruger zone 37 (code 2361).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2383,Xian 1980 / 3-degree Gauss-Kruger CM 114E,2724,projected,4530,,4610,16398,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Xian 1980 / 3-degree Gauss-Kruger zone 38 (code 2362).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2384,Xian 1980 / 3-degree Gauss-Kruger CM 117E,2725,projected,4530,,4610,16399,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Xian 1980 / 3-degree Gauss-Kruger zone 39 (code 2363).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2385,Xian 1980 / 3-degree Gauss-Kruger CM 120E,2726,projected,4530,,4610,16170,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Xian 1980 / 3-degree Gauss-Kruger zone 40 (code 2364).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2386,Xian 1980 / 3-degree Gauss-Kruger CM 123E,2727,projected,4530,,4610,16171,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Xian 1980 / 3-degree Gauss-Kruger zone 41 (code 2365).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2387,Xian 1980 / 3-degree Gauss-Kruger CM 126E,2728,projected,4530,,4610,16172,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Xian 1980 / 3-degree Gauss-Kruger zone 42 (code 2366).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2388,Xian 1980 / 3-degree Gauss-Kruger CM 129E,2729,projected,4530,,4610,16173,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Xian 1980 / 3-degree Gauss-Kruger zone 43 (code 2367).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2389,Xian 1980 / 3-degree Gauss-Kruger CM 132E,2730,projected,4530,,4610,16174,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Xian 1980 / 3-degree Gauss-Kruger zone 44 (code 2368).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2390,Xian 1980 / 3-degree Gauss-Kruger CM 135E,2731,projected,4530,,4610,16175,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Xian 1980 / 3-degree Gauss-Kruger zone 45 (code 2369).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2391,KKJ / Finland zone 1,1536,projected,4530,,4123,18191,,,Large and medium scale topographic mapping and engineering survey.,,www.nls.fi/maa/papers/kkj.html,EPSG,1997-07-22 00:00:00,,1,0
-2392,KKJ / Finland zone 2,1537,projected,4530,,4123,18192,,,Large and medium scale topographic mapping and engineering survey.,,www.nls.fi/maa/papers/kkj.html,EPSG,1997-07-22 00:00:00,,1,0
-2393,KKJ / Finland Uniform Coordinate System,1538,projected,4530,,4123,18193,,,Large and medium scale topographic mapping and engineering survey.,Known as Uniform Coordinate System when used over all country and also as Basic Coordinate System zone 3 at larger scales.,www.nls.fi/maa/papers/kkj.html,EPSG,1997-07-22 00:00:00,,1,0
-2394,KKJ / Finland zone 4,1539,projected,4530,,4123,18194,,,Large and medium scale topographic mapping and engineering survey.,,www.nls.fi/maa/papers/kkj.html,EPSG,1997-07-22 00:00:00,,1,0
-2395,South Yemen / Gauss-Kruger zone 8,1492,projected,4530,,4164,16208,,,Large and medium scale topographic mapping and engineering survey.,,IGN Paris,EPSG,2002-06-22 00:00:00,,1,0
-2396,South Yemen / Gauss-Kruger zone 9,1493,projected,4530,,4164,16209,,,Large and medium scale topographic mapping and engineering survey.,,IGN Paris,EPSG,2002-06-22 00:00:00,,1,0
-2397,Pulkovo 1942(83) / Gauss-Kruger zone 3,1512,projected,4530,,4178,16263,,,"Large and medium scale topographic mapping and engineering survey, cadastral survey.",In Thuringen superseded by DHDN / Gauss Kruger zone 3.,EuroGeographics; http://crs.ifag.de/,EPSG,2002-06-22 00:00:00,,1,0
-2398,Pulkovo 1942(83) / Gauss-Kruger zone 4,1513,projected,4530,,4178,16264,,,"Large and medium scale topographic mapping and engineering survey, cadastral survey.","In Brandenburg superseded by ETRS89 / UTM zone 33N. 
-In Sachsen and Thuringen superseded by DHDN / Gauss Kruger zone 4.",Bundesamt f�r Kartographie und Geod�sie via EuroGeographics; http://crs.ifag.de/,EPSG,2002-06-22 00:00:00,,1,0
-2399,Pulkovo 1942(83) / Gauss-Kruger zone 5,1512,projected,4530,,4178,16265,,,"Large and medium scale topographic mapping and engineering survey, cadastral survey.","In Brandenburg superseded by ETRS89 / UTM zone 33N. 
-In Sachsen superseded by DHDN / Gauss Kruger zone 5.",Bundesamt f�r Kartographie und Geod�sie via EuroGeographics; http://crs.ifag.de/,EPSG,2002-06-22 00:00:00,,1,0
-2400,RT90 2.5 gon W,1225,projected,4530,,4124,19929,,,Large and medium scale topographic mapping and engineering survey.,,National Land Survey of Sweden,EPSG,1997-11-13 00:00:00,,1,0
-2401,Beijing 1954 / 3-degree Gauss-Kruger zone 25,2711,projected,4530,,4214,16285,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Beijing 1954 / 3-degree Gauss-Kruger CM 75E (code 2422). Superseded by Xian 1980 / 3-degree Gauss-Kruger zone 25 (code 2349).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2402,Beijing 1954 / 3-degree Gauss-Kruger zone 26,2712,projected,4530,,4214,16286,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Beijing 1954 / 3-degree Gauss-Kruger CM 78E (code 2423). Superseded by Xian 1980 / 3-degree Gauss-Kruger zone 26 (code 2350).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2403,Beijing 1954 / 3-degree Gauss-Kruger zone 27,2713,projected,4530,,4214,16287,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Beijing 1954 / 3-degree Gauss-Kruger CM 81E (code 2424). Superseded by Xian 1980 / 3-degree Gauss-Kruger zone 27 (code 2351).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2404,Beijing 1954 / 3-degree Gauss-Kruger zone 28,2714,projected,4530,,4214,16288,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Beijing 1954 / 3-degree Gauss-Kruger CM 84E (code 2425). Superseded by Xian 1980 / 3-degree Gauss-Kruger zone 28 (code 2352).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2405,Beijing 1954 / 3-degree Gauss-Kruger zone 29,2715,projected,4530,,4214,16289,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Beijing 1954 / 3-degree Gauss-Kruger CM 87E (code 2426). Superseded by Xian 1980 / 3-degree Gauss-Kruger zone 29 (code 2353).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2406,Beijing 1954 / 3-degree Gauss-Kruger zone 30,2716,projected,4530,,4214,16290,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Beijing 1954 / 3-degree Gauss-Kruger CM 90E (code 2427). Superseded by Xian 1980 / 3-degree Gauss-Kruger zone 30 (code 2354).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2407,Beijing 1954 / 3-degree Gauss-Kruger zone 31,2717,projected,4530,,4214,16291,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Beijing 1954 / 3-degree Gauss-Kruger CM 93E (code 2428). Superseded by Xian 1980 / 3-degree Gauss-Kruger zone 31 (code 2355).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2408,Beijing 1954 / 3-degree Gauss-Kruger zone 32,2718,projected,4530,,4214,16292,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Beijing 1954 / 3-degree Gauss-Kruger CM 96E (code 2429). Superseded by Xian 1980 / 3-degree Gauss-Kruger zone 32 (code 2356).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2409,Beijing 1954 / 3-degree Gauss-Kruger zone 33,2719,projected,4530,,4214,16293,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Beijing 1954 / 3-degree Gauss-Kruger CM 99E (code 2430). Superseded by Xian 1980 / 3-degree Gauss-Kruger zone 33 (code 2357).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2410,Beijing 1954 / 3-degree Gauss-Kruger zone 34,2720,projected,4530,,4214,16294,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Beijing 1954 / 3-degree Gauss-Kruger CM 102E (code 2431). Superseded by Xian 1980 / 3-degree Gauss-Kruger zone 34 (code 2358).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2411,Beijing 1954 / 3-degree Gauss-Kruger zone 35,2721,projected,4530,,4214,16295,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Beijing 1954 / 3-degree Gauss-Kruger CM 105E (code 2432). Superseded by Xian 1980 / 3-degree Gauss-Kruger zone 35 (code 2359).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2412,Beijing 1954 / 3-degree Gauss-Kruger zone 36,2722,projected,4530,,4214,16296,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Beijing 1954 / 3-degree Gauss-Kruger CM 108E (code 2433). Superseded by Xian 1980 / 3-degree Gauss-Kruger zone 36 (code 2360).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2413,Beijing 1954 / 3-degree Gauss-Kruger zone 37,2723,projected,4530,,4214,16297,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Beijing 1954 / 3-degree Gauss-Kruger CM 111E (code 2434). Superseded by Xian 1980 / 3-degree Gauss-Kruger zone 37 (code 2361).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2414,Beijing 1954 / 3-degree Gauss-Kruger zone 38,2724,projected,4530,,4214,16298,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Beijing 1954 / 3-degree Gauss-Kruger CM 114E (code 2435). Superseded by Xian 1980 / 3-degree Gauss-Kruger zone 38 (code 2362).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2415,Beijing 1954 / 3-degree Gauss-Kruger zone 39,2725,projected,4530,,4214,16299,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Beijing 1954 / 3-degree Gauss-Kruger CM 117E (code 2436). Superseded by Xian 1980 / 3-degree Gauss-Kruger zone 39 (code 2363).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2416,Beijing 1954 / 3-degree Gauss-Kruger zone 40,2726,projected,4530,,4214,16070,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Beijing 1954 / 3-degree Gauss-Kruger CM 120E (code 2437). Superseded by Xian 1980 / 3-degree Gauss-Kruger zone 40 (code 2364).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2417,Beijing 1954 / 3-degree Gauss-Kruger zone 41,2727,projected,4530,,4214,16071,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Beijing 1954 / 3-degree Gauss-Kruger CM 123E (code 2438). Superseded by Xian 1980 / 3-degree Gauss-Kruger zone 41 (code 2365).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2418,Beijing 1954 / 3-degree Gauss-Kruger zone 42,2728,projected,4530,,4214,16072,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Beijing 1954 / 3-degree Gauss-Kruger CM 126E (code 2439). Superseded by Xian 1980 / 3-degree Gauss-Kruger zone 42 (code 2366).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2419,Beijing 1954 / 3-degree Gauss-Kruger zone 43,2729,projected,4530,,4214,16073,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Beijing 1954 / 3-degree Gauss-Kruger CM 129E (code 2440). Superseded by Xian 1980 / 3-degree Gauss-Kruger zone 43 (code 2367).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2420,Beijing 1954 / 3-degree Gauss-Kruger zone 44,2730,projected,4530,,4214,16074,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Beijing 1954 / 3-degree Gauss-Kruger CM 132E (code 2441). Superseded by Xian 1980 / 3-degree Gauss-Kruger zone 44 (code 2368).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2421,Beijing 1954 / 3-degree Gauss-Kruger zone 45,2731,projected,4530,,4214,16075,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Beijing 1954 / 3-degree Gauss-Kruger CM 135E (code 2442). Superseded by Xian 1980 / 3-degree Gauss-Kruger zone 45 (code 2369).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2422,Beijing 1954 / 3-degree Gauss-Kruger CM 75E,2711,projected,4530,,4214,16385,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Beijing 1954 / 3-degree Gauss-Kruger zone 25 (code 2401). Superseded by Xian 1980 / 3-degree Gauss-Kruger CM 75E (code 2370).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2423,Beijing 1954 / 3-degree Gauss-Kruger CM 78E,2712,projected,4530,,4214,16386,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Beijing 1954 / 3-degree Gauss-Kruger zone 26 (code 2402). Superseded by Xian 1980 / 3-degree Gauss-Kruger CM 78E (code 2371).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2424,Beijing 1954 / 3-degree Gauss-Kruger CM 81E,2713,projected,4530,,4214,16387,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Beijing 1954 / 3-degree Gauss-Kruger zone 27 (code 2403). Superseded by Xian 1980 / 3-degree Gauss-Kruger CM 81E (code 2372).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2425,Beijing 1954 / 3-degree Gauss-Kruger CM 84E,2714,projected,4530,,4214,16388,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Beijing 1954 / 3-degree Gauss-Kruger zone 28 (code 2404). Superseded by Xian 1980 / 3-degree Gauss-Kruger CM 84E (code 2373).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2426,Beijing 1954 / 3-degree Gauss-Kruger CM 87E,2715,projected,4530,,4214,16389,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Beijing 1954 / 3-degree Gauss-Kruger zone 29 (code 2405). Superseded by Xian 1980 / 3-degree Gauss-Kruger CM 87E (code 2374).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2427,Beijing 1954 / 3-degree Gauss-Kruger CM 90E,2716,projected,4530,,4214,16390,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Beijing 1954 / 3-degree Gauss-Kruger zone 30 (code 2406). Superseded by Xian 1980 / 3-degree Gauss-Kruger CM 90E (code 2375).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2428,Beijing 1954 / 3-degree Gauss-Kruger CM 93E,2717,projected,4530,,4214,16391,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Beijing 1954 / 3-degree Gauss-Kruger zone 31 (code 2407). Superseded by Xian 1980 / 3-degree Gauss-Kruger CM 93E (code 2376).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2429,Beijing 1954 / 3-degree Gauss-Kruger CM 96E,2718,projected,4530,,4214,16392,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Beijing 1954 / 3-degree Gauss-Kruger zone 32 (code 2408). Superseded by Xian 1980 / 3-degree Gauss-Kruger CM 96E (code 2377).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2430,Beijing 1954 / 3-degree Gauss-Kruger CM 99E,2719,projected,4530,,4214,16393,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Beijing 1954 / 3-degree Gauss-Kruger zone 33 (code 2409). Superseded by Xian 1980 / 3-degree Gauss-Kruger CM 99E (code 2378).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2431,Beijing 1954 / 3-degree Gauss-Kruger CM 102E,2720,projected,4530,,4214,16394,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Beijing 1954 / 3-degree Gauss-Kruger zone 45 (code 2421). Superseded by Xian 1980 / 3-degree Gauss-Kruger CM 102E (code 2379).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2432,Beijing 1954 / 3-degree Gauss-Kruger CM 105E,2721,projected,4530,,4214,16395,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Beijing 1954 / 3-degree Gauss-Kruger zone 35 (code 2411). Superseded by Xian 1980 / 3-degree Gauss-Kruger CM 105E (code 2380).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2433,Beijing 1954 / 3-degree Gauss-Kruger CM 108E,2722,projected,4530,,4214,16396,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Beijing 1954 / 3-degree Gauss-Kruger zone 36 (code 2412). Superseded by Xian 1980 / 3-degree Gauss-Kruger CM 108E (code 2381).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2434,Beijing 1954 / 3-degree Gauss-Kruger CM 111E,2723,projected,4530,,4214,16397,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Beijing 1954 / 3-degree Gauss-Kruger zone 37 (code 2413). Superseded by Xian 1980 / 3-degree Gauss-Kruger CM 111E (code 2382).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2435,Beijing 1954 / 3-degree Gauss-Kruger CM 114E,2724,projected,4530,,4214,16398,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Beijing 1954 / 3-degree Gauss-Kruger zone 38 (code 2414). Superseded by Xian 1980 / 3-degree Gauss-Kruger CM 114E (code 2383).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2436,Beijing 1954 / 3-degree Gauss-Kruger CM 117E,2725,projected,4530,,4214,16399,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Beijing 1954 / 3-degree Gauss-Kruger zone 39 (code 2415). Superseded by Xian 1980 / 3-degree Gauss-Kruger CM 117E (code 2384).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2437,Beijing 1954 / 3-degree Gauss-Kruger CM 120E,2726,projected,4530,,4214,16170,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Beijing 1954 / 3-degree Gauss-Kruger zone 40 (code 2416). Superseded by Xian 1980 / 3-degree Gauss-Kruger CM 120E (code 2385).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2438,Beijing 1954 / 3-degree Gauss-Kruger CM 123E,2727,projected,4530,,4214,16171,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Beijing 1954 / 3-degree Gauss-Kruger zone 41 (code 2417). Superseded by Xian 1980 / 3-degree Gauss-Kruger CM 123E (code 2386).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2439,Beijing 1954 / 3-degree Gauss-Kruger CM 126E,2728,projected,4530,,4214,16172,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Beijing 1954 / 3-degree Gauss-Kruger zone 42 (code 2418). Superseded by Xian 1980 / 3-degree Gauss-Kruger CM 126E (code 2387).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2440,Beijing 1954 / 3-degree Gauss-Kruger CM 129E,2729,projected,4530,,4214,16173,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Beijing 1954 / 3-degree Gauss-Kruger zone 43 (code 2419). Superseded by Xian 1980 / 3-degree Gauss-Kruger CM 129E (code 2388).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2441,Beijing 1954 / 3-degree Gauss-Kruger CM 132E,2730,projected,4530,,4214,16174,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Beijing 1954 / 3-degree Gauss-Kruger zone 44 (code 2420). Superseded by Xian 1980 / 3-degree Gauss-Kruger CM 132E (code 2389).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2442,Beijing 1954 / 3-degree Gauss-Kruger CM 135E,2731,projected,4530,,4214,16175,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Beijing 1954 / 3-degree Gauss-Kruger zone 45 (code 2421). Superseded by Xian 1980 / 3-degree Gauss-Kruger CM 135E (code 2390).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2443,JGD2000 / Japan Plane Rectangular CS I,1854,projected,4530,,4612,17801,,,"Large and medium scale topographic mapping, cadastral and engineering survey.",Supersedes Tokyo / Japan Plane Rectangular CS I (code 30161).,Geographic Survey Institute; Japan.  http://vldb.gsi.go.jp/sokuchi/datum/tokyodatum.html,EPSG,2002-06-22 00:00:00,,1,0
-2444,JGD2000 / Japan Plane Rectangular CS II,1855,projected,4530,,4612,17802,,,"Large and medium scale topographic mapping, cadastral and engineering survey.",Supersedes Tokyo / Japan Plane Rectangular CS II (code 30162).,Geographic Survey Institute; Japan.  http://vldb.gsi.go.jp/sokuchi/datum/tokyodatum.html,EPSG,2002-06-22 00:00:00,,1,0
-2445,JGD2000 / Japan Plane Rectangular CS III,1856,projected,4530,,4612,17803,,,"Large and medium scale topographic mapping, cadastral and engineering survey.",Supersedes Tokyo / Japan Plane Rectangular CS III (code 30163).,Geographic Survey Institute; Japan.  http://vldb.gsi.go.jp/sokuchi/datum/tokyodatum.html,EPSG,2002-06-22 00:00:00,,1,0
-2446,JGD2000 / Japan Plane Rectangular CS IV,1857,projected,4530,,4612,17804,,,"Large and medium scale topographic mapping, cadastral and engineering survey.",Supersedes Tokyo / Japan Plane Rectangular CS IV (code 30164).,Geographic Survey Institute; Japan.  http://vldb.gsi.go.jp/sokuchi/datum/tokyodatum.html,EPSG,2002-06-22 00:00:00,,1,0
-2447,JGD2000 / Japan Plane Rectangular CS V,1858,projected,4530,,4612,17805,,,"Large and medium scale topographic mapping, cadastral and engineering survey.",Supersedes Tokyo / Japan Plane Rectangular CS V (code 30165).,Geographic Survey Institute; Japan.  http://vldb.gsi.go.jp/sokuchi/datum/tokyodatum.html,EPSG,2002-06-22 00:00:00,,1,0
-2448,JGD2000 / Japan Plane Rectangular CS VI,1859,projected,4530,,4612,17806,,,"Large and medium scale topographic mapping, cadastral and engineering survey.",Supersedes Tokyo / Japan Plane Rectangular CS VI (code 30166).,Geographic Survey Institute; Japan.  http://vldb.gsi.go.jp/sokuchi/datum/tokyodatum.html,EPSG,2002-06-22 00:00:00,,1,0
-2449,JGD2000 / Japan Plane Rectangular CS VII,1860,projected,4530,,4612,17807,,,"Large and medium scale topographic mapping, cadastral and engineering survey.",Supersedes Tokyo / Japan Plane Rectangular CS VII (code 30167).,Geographic Survey Institute; Japan.  http://vldb.gsi.go.jp/sokuchi/datum/tokyodatum.html,EPSG,2002-06-22 00:00:00,,1,0
-2450,JGD2000 / Japan Plane Rectangular CS VIII,1861,projected,4530,,4612,17808,,,"Large and medium scale topographic mapping, cadastral and engineering survey.",Supersedes Tokyo / Japan Plane Rectangular CS VIII (code 30168).,Geographic Survey Institute; Japan.  http://vldb.gsi.go.jp/sokuchi/datum/tokyodatum.html,EPSG,2002-06-22 00:00:00,,1,0
-2451,JGD2000 / Japan Plane Rectangular CS IX,1862,projected,4530,,4612,17809,,,"Large and medium scale topographic mapping, cadastral and engineering survey.",Supersedes Tokyo / Japan Plane Rectangular CS IX (code 30169).,Geographic Survey Institute; Japan.  http://vldb.gsi.go.jp/sokuchi/datum/tokyodatum.html,EPSG,2002-06-22 00:00:00,,1,0
-2452,JGD2000 / Japan Plane Rectangular CS X,1863,projected,4530,,4612,17810,,,"Large and medium scale topographic mapping, cadastral and engineering survey.",Supersedes Tokyo / Japan Plane Rectangular CS X (code 30170).,Geographic Survey Institute; Japan.  http://vldb.gsi.go.jp/sokuchi/datum/tokyodatum.html,EPSG,2002-06-22 00:00:00,,1,0
-2453,JGD2000 / Japan Plane Rectangular CS XI,1864,projected,4530,,4612,17811,,,"Large and medium scale topographic mapping, cadastral and engineering survey.",Supersedes Tokyo / Japan Plane Rectangular CS XI (code 30171).,Geographic Survey Institute; Japan.  http://vldb.gsi.go.jp/sokuchi/datum/tokyodatum.html,EPSG,2002-06-22 00:00:00,,1,0
-2454,JGD2000 / Japan Plane Rectangular CS XII,1865,projected,4530,,4612,17812,,,"Large and medium scale topographic mapping, cadastral and engineering survey.",Supersedes Tokyo / Japan Plane Rectangular CS XII (code 30172).,Geographic Survey Institute; Japan.  http://vldb.gsi.go.jp/sokuchi/datum/tokyodatum.html,EPSG,2002-06-22 00:00:00,,1,0
-2455,JGD2000 / Japan Plane Rectangular CS XIII,1866,projected,4530,,4612,17813,,,"Large and medium scale topographic mapping, cadastral and engineering survey.",Supersedes Tokyo / Japan Plane Rectangular CS XIII (code 30173).,Geographic Survey Institute; Japan.  http://vldb.gsi.go.jp/sokuchi/datum/tokyodatum.html,EPSG,2002-06-22 00:00:00,,1,0
-2456,JGD2000 / Japan Plane Rectangular CS XIV,1867,projected,4530,,4612,17814,,,"Large and medium scale topographic mapping, cadastral and engineering survey.",Supersedes Tokyo / Japan Plane Rectangular CS XIV (code 30174).,Geographic Survey Institute; Japan.  http://vldb.gsi.go.jp/sokuchi/datum/tokyodatum.html,EPSG,2002-06-22 00:00:00,,1,0
-2457,JGD2000 / Japan Plane Rectangular CS XV,1868,projected,4530,,4612,17815,,,"Large and medium scale topographic mapping, cadastral and engineering survey.",Supersedes Tokyo / Japan Plane Rectangular CS XV (code 30175).,Geographic Survey Institute; Japan.  http://vldb.gsi.go.jp/sokuchi/datum/tokyodatum.html,EPSG,2002-06-22 00:00:00,,1,0
-2458,JGD2000 / Japan Plane Rectangular CS XVI,1869,projected,4530,,4612,17816,,,"Large and medium scale topographic mapping, cadastral and engineering survey.",Supersedes Tokyo / Japan Plane Rectangular CS XVI (code 30176).,Geographic Survey Institute; Japan.  http://vldb.gsi.go.jp/sokuchi/datum/tokyodatum.html,EPSG,2002-06-22 00:00:00,,1,0
-2459,JGD2000 / Japan Plane Rectangular CS XVII,1870,projected,4530,,4612,17817,,,"Large and medium scale topographic mapping, cadastral and engineering survey.",Supersedes Tokyo / Japan Plane Rectangular CS XVII (code 30177).,Geographic Survey Institute; Japan.  http://vldb.gsi.go.jp/sokuchi/datum/tokyodatum.html,EPSG,2002-06-22 00:00:00,,1,0
-2460,JGD2000 / Japan Plane Rectangular CS XVIII,1871,projected,4530,,4612,17818,,,"Large and medium scale topographic mapping, cadastral and engineering survey.",Supersedes Tokyo / Japan Plane Rectangular CS XVIII (code 30178).,Geographic Survey Institute; Japan.  http://vldb.gsi.go.jp/sokuchi/datum/tokyodatum.html,EPSG,2002-06-22 00:00:00,,1,0
-2461,JGD2000 / Japan Plane Rectangular CS XIX,1872,projected,4530,,4612,17819,,,"Large and medium scale topographic mapping, cadastral and engineering survey.",Supersedes Tokyo / Japan Plane Rectangular CS XIX (code 30179).,Geographic Survey Institute; Japan.  http://vldb.gsi.go.jp/sokuchi/datum/tokyodatum.html,EPSG,2002-06-22 00:00:00,,1,0
-2462,Albanian 1987 / Gauss-Kruger zone 4,1025,projected,4530,,4191,16204,,,"Large and medium scale topographic mapping and engineering survey, cadastral survey.",,EuroGeographics; http://crs.ifag.de/,EPSG,2002-06-22 00:00:00,,1,0
-2463,Pulkovo 1995 / Gauss-Kruger CM 21E,1763,projected,4530,,4200,16304,,,Medium scale topographic mapping.,Truncated form of Pulkovo 1995 / Gauss-Kruger zone 4 (code 20004).,"""Main Terms of Reference for the State Geodetic Network""; Federal Geodetic Service of Russia; 1994",EPSG,1996-09-12 00:00:00,,1,0
-2464,Pulkovo 1995 / Gauss-Kruger CM 27E,1764,projected,4530,,4200,16305,,,Medium scale topographic mapping.,Truncated form of Pulkovo 1995 / Gauss-Kruger zone 5 (code 20005).,"""Main Terms of Reference for the State Geodetic Network""; Federal Geodetic Service of Russia; 1994",EPSG,2002-06-22 00:00:00,,1,0
-2465,Pulkovo 1995 / Gauss-Kruger CM 33E,1765,projected,4530,,4200,16306,,,Medium scale topographic mapping.,Truncated form of Pulkovo 1995 / Gauss-Kruger zone 6 (code 20006).,"""Main Terms of Reference for the State Geodetic Network""; Federal Geodetic Service of Russia; 1994",EPSG,2002-06-22 00:00:00,,1,0
-2466,Pulkovo 1995 / Gauss-Kruger CM 39E,1766,projected,4530,,4200,16307,,,Medium scale topographic mapping.,Truncated form of Pulkovo 1995 / Gauss-Kruger zone 7 (code 20007).,"""Main Terms of Reference for the State Geodetic Network""; Federal Geodetic Service of Russia; 1994",EPSG,2002-06-22 00:00:00,,1,0
-2467,Pulkovo 1995 / Gauss-Kruger CM 45E,1767,projected,4530,,4200,16308,,,Medium scale topographic mapping.,Truncated form of Pulkovo 1995 / Gauss-Kruger zone 8 (code 20008).,"""Main Terms of Reference for the State Geodetic Network""; Federal Geodetic Service of Russia; 1994",EPSG,2002-06-22 00:00:00,,1,0
-2468,Pulkovo 1995 / Gauss-Kruger CM 51E,1768,projected,4530,,4200,16309,,,Medium scale topographic mapping.,Truncated form of Pulkovo 1995 / Gauss-Kruger zone 9 (code 20009).,"""Main Terms of Reference for the State Geodetic Network""; Federal Geodetic Service of Russia; 1994",EPSG,2002-06-22 00:00:00,,1,0
-2469,Pulkovo 1995 / Gauss-Kruger CM 57E,1769,projected,4530,,4200,16310,,,Medium scale topographic mapping.,Truncated form of Pulkovo 1995 / Gauss-Kruger zone 10 (code 20010).,"""Main Terms of Reference for the State Geodetic Network""; Federal Geodetic Service of Russia; 1994",EPSG,2002-06-22 00:00:00,,1,0
-2470,Pulkovo 1995 / Gauss-Kruger CM 63E,1770,projected,4530,,4200,16311,,,Medium scale topographic mapping.,Truncated form of Pulkovo 1995 / Gauss-Kruger zone 11 (code 20011).,"""Main Terms of Reference for the State Geodetic Network""; Federal Geodetic Service of Russia; 1994",EPSG,2002-06-22 00:00:00,,1,0
-2471,Pulkovo 1995 / Gauss-Kruger CM 69E,1771,projected,4530,,4200,16312,,,Medium scale topographic mapping.,Truncated form of Pulkovo 1995 / Gauss-Kruger zone 12 (code 20012).,"""Main Terms of Reference for the State Geodetic Network""; Federal Geodetic Service of Russia; 1994",EPSG,2002-06-22 00:00:00,,1,0
-2472,Pulkovo 1995 / Gauss-Kruger CM 75E,1772,projected,4530,,4200,16313,,,Medium scale topographic mapping.,Truncated form of Pulkovo 1995 / Gauss-Kruger zone 13 (code 20013).,"""Main Terms of Reference for the State Geodetic Network""; Federal Geodetic Service of Russia; 1994",EPSG,2002-06-22 00:00:00,,1,0
-2473,Pulkovo 1995 / Gauss-Kruger CM 81E,1773,projected,4530,,4200,16314,,,Medium scale topographic mapping.,Truncated form of Pulkovo 1995 / Gauss-Kruger zone 14 (code 20014).,"""Main Terms of Reference for the State Geodetic Network""; Federal Geodetic Service of Russia; 1994",EPSG,2002-06-22 00:00:00,,1,0
-2474,Pulkovo 1995 / Gauss-Kruger CM 87E,1774,projected,4530,,4200,16315,,,Medium scale topographic mapping.,Truncated form of Pulkovo 1995 / Gauss-Kruger zone 15 (code 20015).,"""Main Terms of Reference for the State Geodetic Network""; Federal Geodetic Service of Russia; 1994",EPSG,2002-06-22 00:00:00,,1,0
-2475,Pulkovo 1995 / Gauss-Kruger CM 93E,1775,projected,4530,,4200,16316,,,Medium scale topographic mapping.,Truncated form of Pulkovo 1995 / Gauss-Kruger zone 16 (code 20016).,"""Main Terms of Reference for the State Geodetic Network""; Federal Geodetic Service of Russia; 1994",EPSG,2002-06-22 00:00:00,,1,0
-2476,Pulkovo 1995 / Gauss-Kruger CM 99E,1776,projected,4530,,4200,16317,,,Medium scale topographic mapping.,Truncated form of Pulkovo 1995 / Gauss-Kruger zone 17 (code 20017).,"""Main Terms of Reference for the State Geodetic Network""; Federal Geodetic Service of Russia; 1994",EPSG,2002-06-22 00:00:00,,1,0
-2477,Pulkovo 1995 / Gauss-Kruger CM 105E,1777,projected,4530,,4200,16318,,,Medium scale topographic mapping.,Truncated form of Pulkovo 1995 / Gauss-Kruger zone 18 (code 20018).,"""Main Terms of Reference for the State Geodetic Network""; Federal Geodetic Service of Russia; 1994",EPSG,2002-06-22 00:00:00,,1,0
-2478,Pulkovo 1995 / Gauss-Kruger CM 111E,1778,projected,4530,,4200,16319,,,Medium scale topographic mapping.,Truncated form of Pulkovo 1995 / Gauss-Kruger zone 19 (code 20019).,"""Main Terms of Reference for the State Geodetic Network""; Federal Geodetic Service of Russia; 1994",EPSG,2002-06-22 00:00:00,,1,0
-2479,Pulkovo 1995 / Gauss-Kruger CM 117E,1779,projected,4530,,4200,16320,,,Medium scale topographic mapping.,Truncated form of Pulkovo 1995 / Gauss-Kruger zone 20 (code 20020).,"""Main Terms of Reference for the State Geodetic Network""; Federal Geodetic Service of Russia; 1994",EPSG,2002-06-22 00:00:00,,1,0
-2480,Pulkovo 1995 / Gauss-Kruger CM 123E,1780,projected,4530,,4200,16321,,,Medium scale topographic mapping.,Truncated form of Pulkovo 1995 / Gauss-Kruger zone 21 (code 20021).,"""Main Terms of Reference for the State Geodetic Network""; Federal Geodetic Service of Russia; 1994",EPSG,2002-06-22 00:00:00,,1,0
-2481,Pulkovo 1995 / Gauss-Kruger CM 129E,1781,projected,4530,,4200,16322,,,Medium scale topographic mapping.,Truncated form of Pulkovo 1995 / Gauss-Kruger zone 22 (code 20022).,"""Main Terms of Reference for the State Geodetic Network""; Federal Geodetic Service of Russia; 1994",EPSG,2002-06-22 00:00:00,,1,0
-2482,Pulkovo 1995 / Gauss-Kruger CM 135E,1782,projected,4530,,4200,16323,,,Medium scale topographic mapping.,Truncated form of Pulkovo 1995 / Gauss-Kruger zone 23 (code 20023).,"""Main Terms of Reference for the State Geodetic Network""; Federal Geodetic Service of Russia; 1994",EPSG,2002-06-22 00:00:00,,1,0
-2483,Pulkovo 1995 / Gauss-Kruger CM 141E,1783,projected,4530,,4200,16324,,,Medium scale topographic mapping.,Truncated form of Pulkovo 1995 / Gauss-Kruger zone 24 (code 20024).,"""Main Terms of Reference for the State Geodetic Network""; Federal Geodetic Service of Russia; 1994",EPSG,2002-06-22 00:00:00,,1,0
-2484,Pulkovo 1995 / Gauss-Kruger CM 147E,1784,projected,4530,,4200,16325,,,Medium scale topographic mapping.,Truncated form of Pulkovo 1995 / Gauss-Kruger zone 25 (code 20025).,"""Main Terms of Reference for the State Geodetic Network""; Federal Geodetic Service of Russia; 1994",EPSG,2002-06-22 00:00:00,,1,0
-2485,Pulkovo 1995 / Gauss-Kruger CM 153E,1785,projected,4530,,4200,16326,,,Medium scale topographic mapping.,Truncated form of Pulkovo 1995 / Gauss-Kruger zone 26 (code 20026).,"""Main Terms of Reference for the State Geodetic Network""; Federal Geodetic Service of Russia; 1994",EPSG,2002-06-22 00:00:00,,1,0
-2486,Pulkovo 1995 / Gauss-Kruger CM 159E,1786,projected,4530,,4200,16327,,,Medium scale topographic mapping.,Truncated form of Pulkovo 1995 / Gauss-Kruger zone 27 (code 20027).,"""Main Terms of Reference for the State Geodetic Network""; Federal Geodetic Service of Russia; 1994",EPSG,2002-06-22 00:00:00,,1,0
-2487,Pulkovo 1995 / Gauss-Kruger CM 165E,1787,projected,4530,,4200,16328,,,Medium scale topographic mapping.,Truncated form of Pulkovo 1995 / Gauss-Kruger zone 28 (code 20028).,"""Main Terms of Reference for the State Geodetic Network""; Federal Geodetic Service of Russia; 1994",EPSG,2002-06-22 00:00:00,,1,0
-2488,Pulkovo 1995 / Gauss-Kruger CM 171E,1788,projected,4530,,4200,16329,,,Medium scale topographic mapping.,Truncated form of Pulkovo 1995 / Gauss-Kruger zone 29 (code 20029).,"""Main Terms of Reference for the State Geodetic Network""; Federal Geodetic Service of Russia; 1994",EPSG,2002-06-22 00:00:00,,1,0
-2489,Pulkovo 1995 / Gauss-Kruger CM 177E,1789,projected,4530,,4200,16330,,,Medium scale topographic mapping.,Truncated form of Pulkovo 1995 / Gauss-Kruger zone 30 (code 20030).,"""Main Terms of Reference for the State Geodetic Network""; Federal Geodetic Service of Russia; 1994",EPSG,2002-06-22 00:00:00,,1,0
-2490,Pulkovo 1995 / Gauss-Kruger CM 177W,1790,projected,4530,,4200,16331,,,Medium scale topographic mapping.,Truncated form of Pulkovo 1995 / Gauss-Kruger zone 31 (code 20031).,"""Main Terms of Reference for the State Geodetic Network""; Federal Geodetic Service of Russia; 1994",EPSG,2002-06-22 00:00:00,,1,0
-2491,Pulkovo 1995 / Gauss-Kruger CM 171W,1791,projected,4530,,4200,16332,,,Medium scale topographic mapping.,Truncated form of Pulkovo 1995 / Gauss-Kruger zone 32 (code 20032).,"""Main Terms of Reference for the State Geodetic Network""; Federal Geodetic Service of Russia; 1994",EPSG,2002-06-22 00:00:00,,1,0
-2492,Pulkovo 1942 / Gauss-Kruger CM 9E,1805,projected,4530,,4284,16302,,,Military mapping.,Truncated form of Pulkovo 1942 / Gauss-Kruger zone 2 (code 28402).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2493,Pulkovo 1942 / Gauss-Kruger CM 15E,1792,projected,4530,,4284,16303,,,Military mapping.,Truncated form of Pulkovo 1942 / Gauss-Kruger zone 3 (code 28403).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2494,Pulkovo 1942 / Gauss-Kruger CM 21E,1793,projected,4530,,4284,16304,,,Medium scale topographic mapping.,Truncated form of Pulkovo 1942 / Gauss-Kruger zone 4 (code 28404).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2495,Pulkovo 1942 / Gauss-Kruger CM 27E,1794,projected,4530,,4284,16305,,,Medium scale topographic mapping.,Truncated form of Pulkovo 1942 / Gauss-Kruger zone 5 (code 28405).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2496,Pulkovo 1942 / Gauss-Kruger CM 33E,1795,projected,4530,,4284,16306,,,Medium scale topographic mapping.,Truncated form of Pulkovo 1942 / Gauss-Kruger zone 6 (code 28406).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2497,Pulkovo 1942 / Gauss-Kruger CM 39E,1796,projected,4530,,4284,16307,,,Medium scale topographic mapping.,Truncated form of Pulkovo 1942 / Gauss-Kruger zone 7 (code 28407).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2498,Pulkovo 1942 / Gauss-Kruger CM 45E,1797,projected,4530,,4284,16308,,,Medium scale topographic mapping.,Truncated form of Pulkovo 1942 / Gauss-Kruger zone 8 (code 28408).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2499,Pulkovo 1942 / Gauss-Kruger CM 51E,1798,projected,4530,,4284,16309,,,Medium scale topographic mapping.,Truncated form of Pulkovo 1942 / Gauss-Kruger zone 9 (code 28409).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2500,Pulkovo 1942 / Gauss-Kruger CM 57E,1799,projected,4530,,4284,16310,,,Medium scale topographic mapping.,Truncated form of Pulkovo 1942 / Gauss-Kruger zone 10 (code 28410).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2501,Pulkovo 1942 / Gauss-Kruger CM 63E,1800,projected,4530,,4284,16311,,,Medium scale topographic mapping.,Truncated form of Pulkovo 1942 / Gauss-Kruger zone 11 (code 28411).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2502,Pulkovo 1942 / Gauss-Kruger CM 69E,1801,projected,4530,,4284,16312,,,Medium scale topographic mapping.,Truncated form of Pulkovo 1942 / Gauss-Kruger zone 12 (code 28412).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2503,Pulkovo 1942 / Gauss-Kruger CM 75E,1802,projected,4530,,4284,16313,,,Medium scale topographic mapping.,Truncated form of Pulkovo 1942 / Gauss-Kruger zone 13 (code 28413).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2504,Pulkovo 1942 / Gauss-Kruger CM 81E,1803,projected,4530,,4284,16314,,,Medium scale topographic mapping.,Truncated form of Pulkovo 1942 / Gauss-Kruger zone 14 (code 28414).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2505,Pulkovo 1942 / Gauss-Kruger CM 87E,1804,projected,4530,,4284,16315,,,Medium scale topographic mapping.,Truncated form of Pulkovo 1942 / Gauss-Kruger zone 15 (code 28415).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2506,Pulkovo 1942 / Gauss-Kruger CM 93E,1775,projected,4530,,4284,16316,,,Medium scale topographic mapping.,Truncated form of Pulkovo 1942 / Gauss-Kruger zone 16 (code 28416).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2507,Pulkovo 1942 / Gauss-Kruger CM 99E,1776,projected,4530,,4284,16317,,,Medium scale topographic mapping.,Truncated form of Pulkovo 1942 / Gauss-Kruger zone 17 (code 28417).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2508,Pulkovo 1942 / Gauss-Kruger CM 105E,1777,projected,4530,,4284,16318,,,Medium scale topographic mapping.,Truncated form of Pulkovo 1942 / Gauss-Kruger zone 18 (code 28418).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2509,Pulkovo 1942 / Gauss-Kruger CM 111E,1778,projected,4530,,4284,16319,,,Medium scale topographic mapping.,Truncated form of Pulkovo 1942 / Gauss-Kruger zone 19 (code 28419).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2510,Pulkovo 1942 / Gauss-Kruger CM 117E,1779,projected,4530,,4284,16320,,,Medium scale topographic mapping.,Truncated form of Pulkovo 1942 / Gauss-Kruger zone 20 (code 28420).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2511,Pulkovo 1942 / Gauss-Kruger CM 123E,1780,projected,4530,,4284,16321,,,Medium scale topographic mapping.,Truncated form of Pulkovo 1942 / Gauss-Kruger zone 21 (code 28421).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2512,Pulkovo 1942 / Gauss-Kruger CM 129E,1781,projected,4530,,4284,16322,,,Medium scale topographic mapping.,Truncated form of Pulkovo 1942 / Gauss-Kruger zone 22 (code 28422).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2513,Pulkovo 1942 / Gauss-Kruger CM 135E,1782,projected,4530,,4284,16323,,,Medium scale topographic mapping.,Truncated form of Pulkovo 1942 / Gauss-Kruger zone 23 (code 28423).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2514,Pulkovo 1942 / Gauss-Kruger CM 141E,1783,projected,4530,,4284,16324,,,Medium scale topographic mapping.,Truncated form of Pulkovo 1942 / Gauss-Kruger zone 24 (code 28424).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2515,Pulkovo 1942 / Gauss-Kruger CM 147E,1784,projected,4530,,4284,16325,,,Medium scale topographic mapping.,Truncated form of Pulkovo 1942 / Gauss-Kruger zone 25 (code 28425).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2516,Pulkovo 1942 / Gauss-Kruger CM 153E,1785,projected,4530,,4284,16326,,,Medium scale topographic mapping.,Truncated form of Pulkovo 1942 / Gauss-Kruger zone 26 (code 28426).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2517,Pulkovo 1942 / Gauss-Kruger CM 159E,1786,projected,4530,,4284,16327,,,Medium scale topographic mapping.,Truncated form of Pulkovo 1942 / Gauss-Kruger zone 27 (code 28427).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2518,Pulkovo 1942 / Gauss-Kruger CM 165E,1787,projected,4530,,4284,16328,,,Medium scale topographic mapping.,Truncated form of Pulkovo 1942 / Gauss-Kruger zone 28 (code 28428).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2519,Pulkovo 1942 / Gauss-Kruger CM 171E,1788,projected,4530,,4284,16329,,,Medium scale topographic mapping.,Truncated form of Pulkovo 1942 / Gauss-Kruger zone 29 (code 28429).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2520,Pulkovo 1942 / Gauss-Kruger CM 177E,1789,projected,4530,,4284,16330,,,Medium scale topographic mapping.,Truncated form of Pulkovo 1942 / Gauss-Kruger zone 30 (code 28430).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2521,Pulkovo 1942 / Gauss-Kruger CM 177W,1790,projected,4530,,4284,16331,,,Medium scale topographic mapping.,Truncated form of Pulkovo 1942 / Gauss-Kruger zone 31 (code 28431).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2522,Pulkovo 1942 / Gauss-Kruger CM 171W,1791,projected,4530,,4284,16332,,,Medium scale topographic mapping.,Truncated form of Pulkovo 1942 / Gauss-Kruger zone 32 (code 28432).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2523,Pulkovo 1942 / 3-degree Gauss-Kruger zone 7,2653,projected,4530,,4284,16267,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1942 / 3-degree Gauss-Kruger CM 21E (code 2582).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2524,Pulkovo 1942 / 3-degree Gauss-Kruger zone 8,2654,projected,4530,,4284,16268,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1942 / 3-degree Gauss-Kruger CM 24E (code 2583).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2525,Pulkovo 1942 / 3-degree Gauss-Kruger zone 9,2655,projected,4530,,4284,16269,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1942 / 3-degree Gauss-Kruger CM 27E (code 2584).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2526,Pulkovo 1942 / 3-degree Gauss-Kruger zone 10,2656,projected,4530,,4284,16270,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1942 / 3-degree Gauss-Kruger CM 30E (code 2585).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2527,Pulkovo 1942 / 3-degree Gauss-Kruger zone 11,2657,projected,4530,,4284,16271,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1942 / 3-degree Gauss-Kruger CM 33E (code 2586).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2528,Pulkovo 1942 / 3-degree Gauss-Kruger zone 12,2658,projected,4530,,4284,16272,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1942 / 3-degree Gauss-Kruger CM 36E (code 2587).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2529,Pulkovo 1942 / 3-degree Gauss-Kruger zone 13,2659,projected,4530,,4284,16273,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1942 / 3-degree Gauss-Kruger CM 39E (code 2588).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2530,Pulkovo 1942 / 3-degree Gauss-Kruger zone 14,2660,projected,4530,,4284,16274,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1942 / 3-degree Gauss-Kruger CM 42E (code 2589).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2531,Pulkovo 1942 / 3-degree Gauss-Kruger zone 15,2661,projected,4530,,4284,16275,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1942 / 3-degree Gauss-Kruger CM 45E (code 2590).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2532,Pulkovo 1942 / 3-degree Gauss-Kruger zone 16,2662,projected,4530,,4284,16276,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1942 / 3-degree Gauss-Kruger CM 48E (code 2591).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2533,Pulkovo 1942 / 3-degree Gauss-Kruger zone 17,2663,projected,4530,,4284,16277,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1942 / 3-degree Gauss-Kruger CM 51E (code 2592).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2534,Pulkovo 1942 / 3-degree Gauss-Kruger zone 18,2664,projected,4530,,4284,16278,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1942 / 3-degree Gauss-Kruger CM 54E (code 2593).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2535,Pulkovo 1942 / 3-degree Gauss-Kruger zone 19,2665,projected,4530,,4284,16279,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1942 / 3-degree Gauss-Kruger CM 57E (code 2594).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2536,Pulkovo 1942 / 3-degree Gauss-Kruger zone 20,2666,projected,4530,,4284,16280,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1942 / 3-degree Gauss-Kruger CM 60E (code 2595).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2537,Pulkovo 1942 / 3-degree Gauss-Kruger zone 21,2667,projected,4530,,4284,16281,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1942 / 3-degree Gauss-Kruger CM 63E (code 2596).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2538,Pulkovo 1942 / 3-degree Gauss-Kruger zone 22,2668,projected,4530,,4284,16282,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1942 / 3-degree Gauss-Kruger CM 66E (code 2597).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2539,Pulkovo 1942 / 3-degree Gauss-Kruger zone 23,2669,projected,4530,,4284,16283,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1942 / 3-degree Gauss-Kruger CM 69E (code 2598).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2540,Pulkovo 1942 / 3-degree Gauss-Kruger zone 24,2670,projected,4530,,4284,16284,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1942 / 3-degree Gauss-Kruger CM 72E (code 2599).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2541,Pulkovo 1942 / 3-degree Gauss-Kruger zone 25,2671,projected,4530,,4284,16285,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1942 / 3-degree Gauss-Kruger CM 75E (code 2601).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2542,Pulkovo 1942 / 3-degree Gauss-Kruger zone 26,2672,projected,4530,,4284,16286,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1942 / 3-degree Gauss-Kruger CM 78E (code 2602).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2543,Pulkovo 1942 / 3-degree Gauss-Kruger zone 27,2673,projected,4530,,4284,16287,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1942 / 3-degree Gauss-Kruger CM 81E (code 2603).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2544,Pulkovo 1942 / 3-degree Gauss-Kruger zone 28,2674,projected,4530,,4284,16288,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1942 / 3-degree Gauss-Kruger CM 84E (code 2604).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2545,Pulkovo 1942 / 3-degree Gauss-Kruger zone 29,2675,projected,4530,,4284,16289,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1942 / 3-degree Gauss-Kruger CM 87E (code 2605).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2546,Pulkovo 1942 / 3-degree Gauss-Kruger zone 30,2676,projected,4530,,4284,16290,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1942 / 3-degree Gauss-Kruger CM 90E (code 2606).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2547,Pulkovo 1942 / 3-degree Gauss-Kruger zone 31,2677,projected,4530,,4284,16291,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1942 / 3-degree Gauss-Kruger CM 93E (code 2607).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2548,Pulkovo 1942 / 3-degree Gauss-Kruger zone 32,2678,projected,4530,,4284,16292,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1942 / 3-degree Gauss-Kruger CM 96E (code 2608).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2549,Pulkovo 1942 / 3-degree Gauss-Kruger zone 33,2679,projected,4530,,4284,16293,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1942 / 3-degree Gauss-Kruger CM 99E (code 2609).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2550,Samboja / UTM zone 50S,1328,projected,4400,,4125,16150,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1997-11-13 00:00:00,,1,1
-2551,Pulkovo 1942 / 3-degree Gauss-Kruger zone 34,2680,projected,4530,,4284,16294,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1942 / 3-degree Gauss-Kruger CM 102E (code 2610).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2552,Pulkovo 1942 / 3-degree Gauss-Kruger zone 35,2681,projected,4530,,4284,16295,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1942 / 3-degree Gauss-Kruger CM 105E (code 2611).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2553,Pulkovo 1942 / 3-degree Gauss-Kruger zone 36,2682,projected,4530,,4284,16296,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1942 / 3-degree Gauss-Kruger CM 108E (code 2612).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2554,Pulkovo 1942 / 3-degree Gauss-Kruger zone 37,2683,projected,4530,,4284,16297,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1942 / 3-degree Gauss-Kruger CM 111E (code 2613).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2555,Pulkovo 1942 / 3-degree Gauss-Kruger zone 38,2684,projected,4530,,4284,16298,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1942 / 3-degree Gauss-Kruger CM 114E (code 2614).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2556,Pulkovo 1942 / 3-degree Gauss-Kruger zone 39,2685,projected,4530,,4284,16299,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1942 / 3-degree Gauss-Kruger CM 117E (code 2615).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2557,Pulkovo 1942 / 3-degree Gauss-Kruger zone 40,2686,projected,4530,,4284,16070,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1942 / 3-degree Gauss-Kruger CM 120E (code 2616).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2558,Pulkovo 1942 / 3-degree Gauss-Kruger zone 41,2687,projected,4530,,4284,16071,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1942 / 3-degree Gauss-Kruger CM 123E (code 2617).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2559,Pulkovo 1942 / 3-degree Gauss-Kruger zone 42,2688,projected,4530,,4284,16072,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1942 / 3-degree Gauss-Kruger CM 126E (code 2618).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2560,Pulkovo 1942 / 3-degree Gauss-Kruger zone 43,2689,projected,4530,,4284,16073,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1942 / 3-degree Gauss-Kruger CM 129E (code 2619).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2561,Pulkovo 1942 / 3-degree Gauss-Kruger zone 44,2690,projected,4530,,4284,16074,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1942 / 3-degree Gauss-Kruger CM 132E (code 2620).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2562,Pulkovo 1942 / 3-degree Gauss-Kruger zone 45,2691,projected,4530,,4284,16075,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1942 / 3-degree Gauss-Kruger CM 135E (code 2621).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2563,Pulkovo 1942 / 3-degree Gauss-Kruger zone 46,2692,projected,4530,,4284,16076,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1942 / 3-degree Gauss-Kruger CM 138E (code 2622).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2564,Pulkovo 1942 / 3-degree Gauss-Kruger zone 47,2693,projected,4530,,4284,16077,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1942 / 3-degree Gauss-Kruger CM 141E (code 2623).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2565,Pulkovo 1942 / 3-degree Gauss-Kruger zone 48,2694,projected,4530,,4284,16078,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1942 / 3-degree Gauss-Kruger CM 144E (code 2624).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2566,Pulkovo 1942 / 3-degree Gauss-Kruger zone 49,2695,projected,4530,,4284,16079,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1942 / 3-degree Gauss-Kruger CM 147E (code 2625).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2567,Pulkovo 1942 / 3-degree Gauss-Kruger zone 50,2696,projected,4530,,4284,16080,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1942 / 3-degree Gauss-Kruger CM 150E (code 2626).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2568,Pulkovo 1942 / 3-degree Gauss-Kruger zone 51,2697,projected,4530,,4284,16081,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1942 / 3-degree Gauss-Kruger CM 153E (code 2627).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2569,Pulkovo 1942 / 3-degree Gauss-Kruger zone 52,2698,projected,4530,,4284,16082,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1942 / 3-degree Gauss-Kruger CM 156E (code 2628).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2570,Pulkovo 1942 / 3-degree Gauss-Kruger zone 53,2699,projected,4530,,4284,16083,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1942 / 3-degree Gauss-Kruger CM 159E (code 2629).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2571,Pulkovo 1942 / 3-degree Gauss-Kruger zone 54,2700,projected,4530,,4284,16084,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1942 / 3-degree Gauss-Kruger CM 162E (code 2630).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2572,Pulkovo 1942 / 3-degree Gauss-Kruger zone 55,2701,projected,4530,,4284,16085,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1942 / 3-degree Gauss-Kruger CM 165E (code 2631).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2573,Pulkovo 1942 / 3-degree Gauss-Kruger zone 56,2702,projected,4530,,4284,16086,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1942 / 3-degree Gauss-Kruger CM 168E (code 2632).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2574,Pulkovo 1942 / 3-degree Gauss-Kruger zone 57,2703,projected,4530,,4284,16087,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1942 / 3-degree Gauss-Kruger CM 171E (code 2633).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2575,Pulkovo 1942 / 3-degree Gauss-Kruger zone 58,2704,projected,4530,,4284,16088,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1942 / 3-degree Gauss-Kruger CM 174E (code 2634).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2576,Pulkovo 1942 / 3-degree Gauss-Kruger zone 59,2705,projected,4530,,4284,16089,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1942 / 3-degree Gauss-Kruger CM 177E (code 2635).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2577,Pulkovo 1942 / 3-degree Gauss-Kruger zone 60,2706,projected,4530,,4284,16090,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1942 / 3-degree Gauss-Kruger CM 180E (code 2636).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2578,Pulkovo 1942 / 3-degree Gauss-Kruger zone 61,2707,projected,4530,,4284,16091,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1942 / 3-degree Gauss-Kruger CM 177W (code 2637).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2579,Pulkovo 1942 / 3-degree Gauss-Kruger zone 62,2708,projected,4530,,4284,16092,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1942 / 3-degree Gauss-Kruger CM 174W (code 2638).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2580,Pulkovo 1942 / 3-degree Gauss-Kruger zone 63,2709,projected,4530,,4284,16093,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1942 / 3-degree Gauss-Kruger CM 171W (code 2639).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2581,Pulkovo 1942 / 3-degree Gauss-Kruger zone 64,2710,projected,4530,,4284,16094,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1942 / 3-degree Gauss-Kruger CM 168W (code 2640).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2582,Pulkovo 1942 / 3-degree Gauss-Kruger CM 21E,2747,projected,4530,,4284,16367,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1942 / 3-degree Gauss-Kruger zone 7 (code 2523).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2583,Pulkovo 1942 / 3-degree Gauss-Kruger CM 24E,2654,projected,4530,,4284,16368,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1942 / 3-degree Gauss-Kruger zone 8 (code 2524).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2584,Pulkovo 1942 / 3-degree Gauss-Kruger CM 27E,2655,projected,4530,,4284,16369,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1942 / 3-degree Gauss-Kruger zone 9 (code 2525).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2585,Pulkovo 1942 / 3-degree Gauss-Kruger CM 30E,2656,projected,4530,,4284,16370,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1942 / 3-degree Gauss-Kruger zone 10 (code 2526).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2586,Pulkovo 1942 / 3-degree Gauss-Kruger CM 33E,2657,projected,4530,,4284,16371,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1942 / 3-degree Gauss-Kruger zone 11 (code 2527).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2587,Pulkovo 1942 / 3-degree Gauss-Kruger CM 36E,2658,projected,4530,,4284,16372,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1942 / 3-degree Gauss-Kruger zone 12 (code 2528).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2588,Pulkovo 1942 / 3-degree Gauss-Kruger CM 39E,2659,projected,4530,,4284,16373,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1942 / 3-degree Gauss-Kruger zone 13 (code 2529).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2589,Pulkovo 1942 / 3-degree Gauss-Kruger CM 42E,2660,projected,4530,,4284,16374,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1942 / 3-degree Gauss-Kruger zone 14 (code 2530).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2590,Pulkovo 1942 / 3-degree Gauss-Kruger CM 45E,2661,projected,4530,,4284,16375,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1942 / 3-degree Gauss-Kruger zone 15 (code 2531).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2591,Pulkovo 1942 / 3-degree Gauss-Kruger CM 48E,2662,projected,4530,,4284,16376,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1942 / 3-degree Gauss-Kruger zone 16 (code 2532).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2592,Pulkovo 1942 / 3-degree Gauss-Kruger CM 51E,2663,projected,4530,,4284,16377,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1942 / 3-degree Gauss-Kruger zone 17 (code 2533).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2593,Pulkovo 1942 / 3-degree Gauss-Kruger CM 54E,2664,projected,4530,,4284,16378,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1942 / 3-degree Gauss-Kruger zone 18 (code 2534).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2594,Pulkovo 1942 / 3-degree Gauss-Kruger CM 57E,2665,projected,4530,,4284,16379,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1942 / 3-degree Gauss-Kruger zone 19 (code 2535).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2595,Pulkovo 1942 / 3-degree Gauss-Kruger CM 60E,2666,projected,4530,,4284,16380,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1942 / 3-degree Gauss-Kruger zone 20 (code 2536).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2596,Pulkovo 1942 / 3-degree Gauss-Kruger CM 63E,2667,projected,4530,,4284,16381,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1942 / 3-degree Gauss-Kruger zone 21 (code 2537).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2597,Pulkovo 1942 / 3-degree Gauss-Kruger CM 66E,2668,projected,4530,,4284,16382,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1942 / 3-degree Gauss-Kruger zone 22 (code 2538).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2598,Pulkovo 1942 / 3-degree Gauss-Kruger CM 69E,2669,projected,4530,,4284,16383,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1942 / 3-degree Gauss-Kruger zone 23 (code 2539).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2599,Pulkovo 1942 / 3-degree Gauss-Kruger CM 72E,2670,projected,4530,,4284,16384,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1942 / 3-degree Gauss-Kruger zone 24 (code 2540).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2600,Lietuvos Koordinoei Sistema 1994,1145,projected,4530,,4126,19934,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1998-03-12 00:00:00,,1,0
-2601,Pulkovo 1942 / 3-degree Gauss-Kruger CM 75E,2671,projected,4530,,4284,16385,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1942 / 3-degree Gauss-Kruger zone 25 (code 2541).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2602,Pulkovo 1942 / 3-degree Gauss-Kruger CM 78E,2672,projected,4530,,4284,16386,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1942 / 3-degree Gauss-Kruger zone 26 (code 2542).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2603,Pulkovo 1942 / 3-degree Gauss-Kruger CM 81E,2673,projected,4530,,4284,16387,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1942 / 3-degree Gauss-Kruger zone 27 (code 2543).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2604,Pulkovo 1942 / 3-degree Gauss-Kruger CM 84E,2674,projected,4530,,4284,16388,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1942 / 3-degree Gauss-Kruger zone 28 (code 2544).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2605,Pulkovo 1942 / 3-degree Gauss-Kruger CM 87E,2675,projected,4530,,4284,16389,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1942 / 3-degree Gauss-Kruger zone 29 (code 2545).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2606,Pulkovo 1942 / 3-degree Gauss-Kruger CM 90E,2676,projected,4530,,4284,16390,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1942 / 3-degree Gauss-Kruger zone 30 (code 2546).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2607,Pulkovo 1942 / 3-degree Gauss-Kruger CM 93E,2677,projected,4530,,4284,16391,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1942 / 3-degree Gauss-Kruger zone 31 (code 2547).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2608,Pulkovo 1942 / 3-degree Gauss-Kruger CM 96E,2678,projected,4530,,4284,16392,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1942 / 3-degree Gauss-Kruger zone 32 (code 2548).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2609,Pulkovo 1942 / 3-degree Gauss-Kruger CM 99E,2679,projected,4530,,4284,16393,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1942 / 3-degree Gauss-Kruger zone 33 (code 2549).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2610,Pulkovo 1942 / 3-degree Gauss-Kruger CM 102E,2680,projected,4530,,4284,16394,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1942 / 3-degree Gauss-Kruger zone 34 (code 2551).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2611,Pulkovo 1942 / 3-degree Gauss-Kruger CM 105E,2681,projected,4530,,4284,16395,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1942 / 3-degree Gauss-Kruger zone 35 (code 2552).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2612,Pulkovo 1942 / 3-degree Gauss-Kruger CM 108E,2682,projected,4530,,4284,16396,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1942 / 3-degree Gauss-Kruger zone 36 (code 2553).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2613,Pulkovo 1942 / 3-degree Gauss-Kruger CM 111E,2683,projected,4530,,4284,16397,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1942 / 3-degree Gauss-Kruger zone 37 (code 2554).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2614,Pulkovo 1942 / 3-degree Gauss-Kruger CM 114E,2684,projected,4530,,4284,16398,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1942 / 3-degree Gauss-Kruger zone 38 (code 2555).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2615,Pulkovo 1942 / 3-degree Gauss-Kruger CM 117E,2685,projected,4530,,4284,16399,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1942 / 3-degree Gauss-Kruger zone 39 (code 2556).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2616,Pulkovo 1942 / 3-degree Gauss-Kruger CM 120E,2686,projected,4530,,4284,16170,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1942 / 3-degree Gauss-Kruger zone 40 (code 2557).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2617,Pulkovo 1942 / 3-degree Gauss-Kruger CM 123E,2687,projected,4530,,4284,16171,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1942 / 3-degree Gauss-Kruger zone 41 (code 2558).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2618,Pulkovo 1942 / 3-degree Gauss-Kruger CM 126E,2688,projected,4530,,4284,16172,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1942 / 3-degree Gauss-Kruger zone 42 (code 2559).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2619,Pulkovo 1942 / 3-degree Gauss-Kruger CM 129E,2689,projected,4530,,4284,16173,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1942 / 3-degree Gauss-Kruger zone 43 (code 2560).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2620,Pulkovo 1942 / 3-degree Gauss-Kruger CM 132E,2690,projected,4530,,4284,16174,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1942 / 3-degree Gauss-Kruger zone 44 (code 2561).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2621,Pulkovo 1942 / 3-degree Gauss-Kruger CM 135E,2691,projected,4530,,4284,16175,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1942 / 3-degree Gauss-Kruger zone 45 (code 2562).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2622,Pulkovo 1942 / 3-degree Gauss-Kruger CM 138E,2692,projected,4530,,4284,16176,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1942 / 3-degree Gauss-Kruger zone 46 (code 2563).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2623,Pulkovo 1942 / 3-degree Gauss-Kruger CM 141E,2693,projected,4530,,4284,16177,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1942 / 3-degree Gauss-Kruger zone 47 (code 2564).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2624,Pulkovo 1942 / 3-degree Gauss-Kruger CM 144E,2694,projected,4530,,4284,16178,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1942 / 3-degree Gauss-Kruger zone 48 (code 2565).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2625,Pulkovo 1942 / 3-degree Gauss-Kruger CM 147E,2695,projected,4530,,4284,16179,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1942 / 3-degree Gauss-Kruger zone 49 (code 2566).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2626,Pulkovo 1942 / 3-degree Gauss-Kruger CM 150E,2696,projected,4530,,4284,16180,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1942 / 3-degree Gauss-Kruger zone 50 (code 2567).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2627,Pulkovo 1942 / 3-degree Gauss-Kruger CM 153E,2697,projected,4530,,4284,16181,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1942 / 3-degree Gauss-Kruger zone 51 (code 2568).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2628,Pulkovo 1942 / 3-degree Gauss-Kruger CM 156E,2698,projected,4530,,4284,16182,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1942 / 3-degree Gauss-Kruger zone 52 (code 2569).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2629,Pulkovo 1942 / 3-degree Gauss-Kruger CM 159E,2699,projected,4530,,4284,16183,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1942 / 3-degree Gauss-Kruger zone 53 (code 2570).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2630,Pulkovo 1942 / 3-degree Gauss-Kruger CM 162E,2700,projected,4530,,4284,16184,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1942 / 3-degree Gauss-Kruger zone 54 (code 2571).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2631,Pulkovo 1942 / 3-degree Gauss-Kruger CM 165E,2701,projected,4530,,4284,16185,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1942 / 3-degree Gauss-Kruger zone 55 (code 2572).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2632,Pulkovo 1942 / 3-degree Gauss-Kruger CM 168E,2702,projected,4530,,4284,16186,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1942 / 3-degree Gauss-Kruger zone 56 (code 2573).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2633,Pulkovo 1942 / 3-degree Gauss-Kruger CM 171E,2703,projected,4530,,4284,16187,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1942 / 3-degree Gauss-Kruger zone 57 (code 2574).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2634,Pulkovo 1942 / 3-degree Gauss-Kruger CM 174E,2704,projected,4530,,4284,16188,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1942 / 3-degree Gauss-Kruger zone 58 (code 2575).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2635,Pulkovo 1942 / 3-degree Gauss-Kruger CM 177E,2705,projected,4530,,4284,16189,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1942 / 3-degree Gauss-Kruger zone 59 (code 2576).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2636,Pulkovo 1942 / 3-degree Gauss-Kruger CM 180E,2706,projected,4530,,4284,16190,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1942 / 3-degree Gauss-Kruger zone 60 (code 2577).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2637,Pulkovo 1942 / 3-degree Gauss-Kruger CM 177W,2707,projected,4530,,4284,16191,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1942 / 3-degree Gauss-Kruger zone 61 (code 2578).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2638,Pulkovo 1942 / 3-degree Gauss-Kruger CM 174W,2708,projected,4530,,4284,16192,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1942 / 3-degree Gauss-Kruger zone 62 (code 2579).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2639,Pulkovo 1942 / 3-degree Gauss-Kruger CM 171W,2709,projected,4530,,4284,16193,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1942 / 3-degree Gauss-Kruger zone 63 (code 2580).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2640,Pulkovo 1942 / 3-degree Gauss-Kruger CM 168W,2710,projected,4530,,4284,16194,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1942 / 3-degree Gauss-Kruger zone 64 (code 2581).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2641,Pulkovo 1995 / 3-degree Gauss-Kruger zone 7,2747,projected,4530,,4284,16267,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1995 / 3-degree Gauss-Kruger CM 21E (code 2699).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2642,Pulkovo 1995 / 3-degree Gauss-Kruger zone 8,2748,projected,4530,,4284,16268,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1995 / 3-degree Gauss-Kruger CM 24E (code 2700).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2643,Pulkovo 1995 / 3-degree Gauss-Kruger zone 9,2749,projected,4530,,4284,16269,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1995 / 3-degree Gauss-Kruger CM 27E (code 2701).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2644,Pulkovo 1995 / 3-degree Gauss-Kruger zone 10,2750,projected,4530,,4284,16270,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1995 / 3-degree Gauss-Kruger CM 30E (code 2702).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2645,Pulkovo 1995 / 3-degree Gauss-Kruger zone 11,2751,projected,4530,,4284,16271,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1995 / 3-degree Gauss-Kruger CM 33E (code 2703).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2646,Pulkovo 1995 / 3-degree Gauss-Kruger zone 12,2752,projected,4530,,4284,16272,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1995 / 3-degree Gauss-Kruger CM 36E (code 2704).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2647,Pulkovo 1995 / 3-degree Gauss-Kruger zone 13,2753,projected,4530,,4284,16273,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1995 / 3-degree Gauss-Kruger CM 39E (code 2705).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2648,Pulkovo 1995 / 3-degree Gauss-Kruger zone 14,2754,projected,4530,,4284,16274,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1995 / 3-degree Gauss-Kruger CM 42E (code 2706).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2649,Pulkovo 1995 / 3-degree Gauss-Kruger zone 15,2755,projected,4530,,4284,16275,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1995 / 3-degree Gauss-Kruger CM 45E (code 2707).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2650,Pulkovo 1995 / 3-degree Gauss-Kruger zone 16,2756,projected,4530,,4284,16276,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1995 / 3-degree Gauss-Kruger CM 48E (code 2708).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2651,Pulkovo 1995 / 3-degree Gauss-Kruger zone 17,2757,projected,4530,,4284,16277,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1995 / 3-degree Gauss-Kruger CM 51E (code 2709).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2652,Pulkovo 1995 / 3-degree Gauss-Kruger zone 18,2758,projected,4530,,4284,16278,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1995 / 3-degree Gauss-Kruger CM 54E (code 2710).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2653,Pulkovo 1995 / 3-degree Gauss-Kruger zone 19,2759,projected,4530,,4284,16279,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1995 / 3-degree Gauss-Kruger CM 57E (code 2711).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2654,Pulkovo 1995 / 3-degree Gauss-Kruger zone 20,2760,projected,4530,,4284,16280,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1995 / 3-degree Gauss-Kruger CM 60E (code 2712).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2655,Pulkovo 1995 / 3-degree Gauss-Kruger zone 21,2761,projected,4530,,4284,16281,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1995 / 3-degree Gauss-Kruger CM 63E (code 2713).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2656,Pulkovo 1995 / 3-degree Gauss-Kruger zone 22,2762,projected,4530,,4284,16282,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1995 / 3-degree Gauss-Kruger CM 66E (code 2714).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2657,Pulkovo 1995 / 3-degree Gauss-Kruger zone 23,2763,projected,4530,,4284,16283,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1995 / 3-degree Gauss-Kruger CM 69E (code 2715).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2658,Pulkovo 1995 / 3-degree Gauss-Kruger zone 24,2764,projected,4530,,4284,16284,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1995 / 3-degree Gauss-Kruger CM 72E (code 2716).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2659,Pulkovo 1995 / 3-degree Gauss-Kruger zone 25,2765,projected,4530,,4284,16285,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1995 / 3-degree Gauss-Kruger CM 75E (code 2717).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2660,Pulkovo 1995 / 3-degree Gauss-Kruger zone 26,2766,projected,4530,,4284,16286,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1995 / 3-degree Gauss-Kruger CM 78E (code 2718).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2661,Pulkovo 1995 / 3-degree Gauss-Kruger zone 27,2767,projected,4530,,4284,16287,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1995 / 3-degree Gauss-Kruger CM 81E (code 2719).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2662,Pulkovo 1995 / 3-degree Gauss-Kruger zone 28,2768,projected,4530,,4284,16288,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1995 / 3-degree Gauss-Kruger CM 84E (code 2720).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2663,Pulkovo 1995 / 3-degree Gauss-Kruger zone 29,2769,projected,4530,,4284,16289,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1995 / 3-degree Gauss-Kruger CM 87E (code 2721).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2664,Pulkovo 1995 / 3-degree Gauss-Kruger zone 30,2676,projected,4530,,4284,16290,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1995 / 3-degree Gauss-Kruger CM 90E (code 2722).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2665,Pulkovo 1995 / 3-degree Gauss-Kruger zone 31,2677,projected,4530,,4284,16291,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1995 / 3-degree Gauss-Kruger CM 93E (code 2723).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2666,Pulkovo 1995 / 3-degree Gauss-Kruger zone 32,2678,projected,4530,,4284,16292,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1995 / 3-degree Gauss-Kruger CM 96E (code 2724).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2667,Pulkovo 1995 / 3-degree Gauss-Kruger zone 33,2679,projected,4530,,4284,16293,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1995 / 3-degree Gauss-Kruger CM 99E (code 2725).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2668,Pulkovo 1995 / 3-degree Gauss-Kruger zone 34,2680,projected,4530,,4284,16294,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1995 / 3-degree Gauss-Kruger CM 102E (code 2726).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2669,Pulkovo 1995 / 3-degree Gauss-Kruger zone 35,2681,projected,4530,,4284,16295,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1995 / 3-degree Gauss-Kruger CM 105E (code 2727).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2670,Pulkovo 1995 / 3-degree Gauss-Kruger zone 36,2682,projected,4530,,4284,16296,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1995 / 3-degree Gauss-Kruger CM 108E (code 2728).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2671,Pulkovo 1995 / 3-degree Gauss-Kruger zone 37,2683,projected,4530,,4284,16297,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1995 / 3-degree Gauss-Kruger CM 111E (code 2729).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2672,Pulkovo 1995 / 3-degree Gauss-Kruger zone 38,2684,projected,4530,,4284,16298,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1995 / 3-degree Gauss-Kruger CM 114E (code 2730).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2673,Pulkovo 1995 / 3-degree Gauss-Kruger zone 39,2685,projected,4530,,4284,16299,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1995 / 3-degree Gauss-Kruger CM 117E (code 2731).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2674,Pulkovo 1995 / 3-degree Gauss-Kruger zone 40,2686,projected,4530,,4284,16070,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1995 / 3-degree Gauss-Kruger CM 120E (code 2732).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2675,Pulkovo 1995 / 3-degree Gauss-Kruger zone 41,2687,projected,4530,,4284,16071,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1995 / 3-degree Gauss-Kruger CM 123E (code 2733).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2676,Pulkovo 1995 / 3-degree Gauss-Kruger zone 42,2688,projected,4530,,4284,16072,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1995 / 3-degree Gauss-Kruger CM 126E (code 2734).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2677,Pulkovo 1995 / 3-degree Gauss-Kruger zone 43,2689,projected,4530,,4284,16073,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1995 / 3-degree Gauss-Kruger CM 129E (code 2735).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2678,Pulkovo 1995 / 3-degree Gauss-Kruger zone 44,2690,projected,4530,,4284,16074,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1995 / 3-degree Gauss-Kruger CM 132E (code 2738).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2679,Pulkovo 1995 / 3-degree Gauss-Kruger zone 45,2691,projected,4530,,4284,16075,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1995 / 3-degree Gauss-Kruger CM 135E (code 2739).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2680,Pulkovo 1995 / 3-degree Gauss-Kruger zone 46,2692,projected,4530,,4284,16076,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1995 / 3-degree Gauss-Kruger CM 138E (code 2740).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2681,Pulkovo 1995 / 3-degree Gauss-Kruger zone 47,2693,projected,4530,,4284,16077,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1995 / 3-degree Gauss-Kruger CM 141E (code 2741).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2682,Pulkovo 1995 / 3-degree Gauss-Kruger zone 48,2694,projected,4530,,4284,16078,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1995 / 3-degree Gauss-Kruger CM 144E (code 2742).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2683,Pulkovo 1995 / 3-degree Gauss-Kruger zone 49,2695,projected,4530,,4284,16079,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1995 / 3-degree Gauss-Kruger CM 147E (code 2743).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2684,Pulkovo 1995 / 3-degree Gauss-Kruger zone 50,2696,projected,4530,,4284,16080,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1995 / 3-degree Gauss-Kruger CM 150E (code 2744).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2685,Pulkovo 1995 / 3-degree Gauss-Kruger zone 51,2697,projected,4530,,4284,16081,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1995 / 3-degree Gauss-Kruger CM 153E (code 2745).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2686,Pulkovo 1995 / 3-degree Gauss-Kruger zone 52,2698,projected,4530,,4284,16082,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1995 / 3-degree Gauss-Kruger CM 156E (code 2746).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2687,Pulkovo 1995 / 3-degree Gauss-Kruger zone 53,2699,projected,4530,,4284,16083,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1995 / 3-degree Gauss-Kruger CM 159E (code 2747).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2688,Pulkovo 1995 / 3-degree Gauss-Kruger zone 54,2700,projected,4530,,4284,16084,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1995 / 3-degree Gauss-Kruger CM 162E (code 2748).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2689,Pulkovo 1995 / 3-degree Gauss-Kruger zone 55,2701,projected,4530,,4284,16085,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1995 / 3-degree Gauss-Kruger CM 165E (code 2749).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2690,Pulkovo 1995 / 3-degree Gauss-Kruger zone 56,2702,projected,4530,,4284,16086,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1995 / 3-degree Gauss-Kruger CM 168E (code 2750).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2691,Pulkovo 1995 / 3-degree Gauss-Kruger zone 57,2703,projected,4530,,4284,16087,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1995 / 3-degree Gauss-Kruger CM 171E (code 2751).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2692,Pulkovo 1995 / 3-degree Gauss-Kruger zone 58,2704,projected,4530,,4284,16088,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1995 / 3-degree Gauss-Kruger CM 174E (code 2752).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2693,Pulkovo 1995 / 3-degree Gauss-Kruger zone 59,2705,projected,4530,,4284,16089,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1995 / 3-degree Gauss-Kruger CM 177E (code 2753).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2694,Pulkovo 1995 / 3-degree Gauss-Kruger zone 60,2706,projected,4530,,4284,16090,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1995 / 3-degree Gauss-Kruger CM 180E (code 2754).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2695,Pulkovo 1995 / 3-degree Gauss-Kruger zone 61,2707,projected,4530,,4284,16091,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1995 / 3-degree Gauss-Kruger CM 177W (code 2755).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2696,Pulkovo 1995 / 3-degree Gauss-Kruger zone 62,2708,projected,4530,,4284,16092,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1995 / 3-degree Gauss-Kruger CM 174W (code 2756).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2697,Pulkovo 1995 / 3-degree Gauss-Kruger zone 63,2709,projected,4530,,4284,16093,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1995 / 3-degree Gauss-Kruger CM 171W (code 2757).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2698,Pulkovo 1995 / 3-degree Gauss-Kruger zone 64,2710,projected,4530,,4284,16094,,,"Large scale topographic mapping, cadastral and engineering survey.",Also found with truncated false easting - see Pulkovo 1995 / 3-degree Gauss-Kruger CM 168W (code 2758).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2699,Pulkovo 1995 / 3-degree Gauss-Kruger CM 21E,2747,projected,4530,,4284,16367,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1995 / 3-degree Gauss-Kruger zone 7 (code 2641).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2700,Pulkovo 1995 / 3-degree Gauss-Kruger CM 24E,2654,projected,4530,,4284,16368,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1995 / 3-degree Gauss-Kruger zone 8 (code 2642).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2701,Pulkovo 1995 / 3-degree Gauss-Kruger CM 27E,2655,projected,4530,,4284,16369,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1995 / 3-degree Gauss-Kruger zone 9 (code 2643).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2702,Pulkovo 1995 / 3-degree Gauss-Kruger CM 30E,2656,projected,4530,,4284,16370,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1995 / 3-degree Gauss-Kruger zone 10 (code 2644).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2703,Pulkovo 1995 / 3-degree Gauss-Kruger CM 33E,2657,projected,4530,,4284,16371,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1995 / 3-degree Gauss-Kruger zone 11 (code 2645).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2704,Pulkovo 1995 / 3-degree Gauss-Kruger CM 36E,2658,projected,4530,,4284,16372,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1995 / 3-degree Gauss-Kruger zone 12 (code 2646).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2705,Pulkovo 1995 / 3-degree Gauss-Kruger CM 39E,2659,projected,4530,,4284,16373,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1995 / 3-degree Gauss-Kruger zone 13 (code 2647).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2706,Pulkovo 1995 / 3-degree Gauss-Kruger CM 42E,2660,projected,4530,,4284,16374,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1995 / 3-degree Gauss-Kruger zone 14 (code 2648).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2707,Pulkovo 1995 / 3-degree Gauss-Kruger CM 45E,2661,projected,4530,,4284,16375,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1995 / 3-degree Gauss-Kruger zone 15 (code 2649).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2708,Pulkovo 1995 / 3-degree Gauss-Kruger CM 48E,2662,projected,4530,,4284,16376,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1995 / 3-degree Gauss-Kruger zone 16 (code 2650).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2709,Pulkovo 1995 / 3-degree Gauss-Kruger CM 51E,2663,projected,4530,,4284,16377,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1995 / 3-degree Gauss-Kruger zone 17 (code 2651).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2710,Pulkovo 1995 / 3-degree Gauss-Kruger CM 54E,2664,projected,4530,,4284,16378,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1995 / 3-degree Gauss-Kruger zone 18 (code 2652).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2711,Pulkovo 1995 / 3-degree Gauss-Kruger CM 57E,2665,projected,4530,,4284,16379,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1995 / 3-degree Gauss-Kruger zone 19 (code 2653).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2712,Pulkovo 1995 / 3-degree Gauss-Kruger CM 60E,2666,projected,4530,,4284,16380,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1995 / 3-degree Gauss-Kruger zone 20 (code 2654).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2713,Pulkovo 1995 / 3-degree Gauss-Kruger CM 63E,2667,projected,4530,,4284,16381,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1995 / 3-degree Gauss-Kruger zone 21 (code 2655).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2714,Pulkovo 1995 / 3-degree Gauss-Kruger CM 66E,2668,projected,4530,,4284,16382,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1995 / 3-degree Gauss-Kruger zone 22 (code 2656).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2715,Pulkovo 1995 / 3-degree Gauss-Kruger CM 69E,2669,projected,4530,,4284,16383,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1995 / 3-degree Gauss-Kruger zone 23 (code 2657).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2716,Pulkovo 1995 / 3-degree Gauss-Kruger CM 72E,2670,projected,4530,,4284,16384,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1995 / 3-degree Gauss-Kruger zone 24 (code 2658).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2717,Pulkovo 1995 / 3-degree Gauss-Kruger CM 75E,2671,projected,4530,,4284,16385,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1995 / 3-degree Gauss-Kruger zone 25 (code 2659).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2718,Pulkovo 1995 / 3-degree Gauss-Kruger CM 78E,2672,projected,4530,,4284,16386,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1995 / 3-degree Gauss-Kruger zone 26 (code 2660).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2719,Pulkovo 1995 / 3-degree Gauss-Kruger CM 81E,2673,projected,4530,,4284,16387,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1995 / 3-degree Gauss-Kruger zone 27 (code 2661).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2720,Pulkovo 1995 / 3-degree Gauss-Kruger CM 84E,2674,projected,4530,,4284,16388,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1995 / 3-degree Gauss-Kruger zone 28 (code 2662).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2721,Pulkovo 1995 / 3-degree Gauss-Kruger CM 87E,2675,projected,4530,,4284,16389,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1995 / 3-degree Gauss-Kruger zone 29 (code 2663).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2722,Pulkovo 1995 / 3-degree Gauss-Kruger CM 90E,2676,projected,4530,,4284,16390,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1995 / 3-degree Gauss-Kruger zone 30 (code 2664).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2723,Pulkovo 1995 / 3-degree Gauss-Kruger CM 93E,2677,projected,4530,,4284,16391,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1995 / 3-degree Gauss-Kruger zone 31 (code 2665).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2724,Pulkovo 1995 / 3-degree Gauss-Kruger CM 96E,2678,projected,4530,,4284,16392,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1995 / 3-degree Gauss-Kruger zone 32 (code 2666).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2725,Pulkovo 1995 / 3-degree Gauss-Kruger CM 99E,2679,projected,4530,,4284,16393,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1995 / 3-degree Gauss-Kruger zone 33 (code 2667).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2726,Pulkovo 1995 / 3-degree Gauss-Kruger CM 102E,2680,projected,4530,,4284,16394,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1995 / 3-degree Gauss-Kruger zone 34 (code 2668).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2727,Pulkovo 1995 / 3-degree Gauss-Kruger CM 105E,2681,projected,4530,,4284,16395,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1995 / 3-degree Gauss-Kruger zone 35 (code 2669).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2728,Pulkovo 1995 / 3-degree Gauss-Kruger CM 108E,2682,projected,4530,,4284,16396,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1995 / 3-degree Gauss-Kruger zone 36 (code 2670).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2729,Pulkovo 1995 / 3-degree Gauss-Kruger CM 111E,2683,projected,4530,,4284,16397,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1995 / 3-degree Gauss-Kruger zone 37 (code 2671).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2730,Pulkovo 1995 / 3-degree Gauss-Kruger CM 114E,2684,projected,4530,,4284,16398,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1995 / 3-degree Gauss-Kruger zone 38 (code 2672).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2731,Pulkovo 1995 / 3-degree Gauss-Kruger CM 117E,2685,projected,4530,,4284,16399,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1995 / 3-degree Gauss-Kruger zone 39 (code 2673).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2732,Pulkovo 1995 / 3-degree Gauss-Kruger CM 120E,2686,projected,4530,,4284,16170,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1995 / 3-degree Gauss-Kruger zone 40 (code 2674).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2733,Pulkovo 1995 / 3-degree Gauss-Kruger CM 123E,2687,projected,4530,,4284,16171,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1995 / 3-degree Gauss-Kruger zone 41 (code 2675).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2734,Pulkovo 1995 / 3-degree Gauss-Kruger CM 126E,2688,projected,4530,,4284,16172,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1995 / 3-degree Gauss-Kruger zone 42 (code 2676).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2735,Pulkovo 1995 / 3-degree Gauss-Kruger CM 129E,2689,projected,4530,,4284,16173,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1995 / 3-degree Gauss-Kruger zone 43 (code 2677).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2736,Tete / UTM zone 36S,1540,projected,4400,,4127,16136,,,Large and medium scale topographic mapping and engineering survey.,,Direc��o Nacional de Geografia e Cadastral (DINAGECA).,EPSG,1998-04-16 00:00:00,,1,0
-2737,Tete / UTM zone 37S,1541,projected,4400,,4127,16137,,,Large and medium scale topographic mapping and engineering survey.,,Direc��o Nacional de Geografia e Cadastral (DINAGECA).,EPSG,1998-04-16 00:00:00,,1,0
-2738,Pulkovo 1995 / 3-degree Gauss-Kruger CM 132E,2690,projected,4530,,4284,16174,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1995 / 3-degree Gauss-Kruger zone 44 (code 2678).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2739,Pulkovo 1995 / 3-degree Gauss-Kruger CM 135E,2691,projected,4530,,4284,16175,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1995 / 3-degree Gauss-Kruger zone 45 (code 2679).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2740,Pulkovo 1995 / 3-degree Gauss-Kruger CM 138E,2692,projected,4530,,4284,16176,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1995 / 3-degree Gauss-Kruger zone 46 (code 2680).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2741,Pulkovo 1995 / 3-degree Gauss-Kruger CM 141E,2693,projected,4530,,4284,16177,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1995 / 3-degree Gauss-Kruger zone 47 (code 2681).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2742,Pulkovo 1995 / 3-degree Gauss-Kruger CM 144E,2694,projected,4530,,4284,16178,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1995 / 3-degree Gauss-Kruger zone 48 (code 2682).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2743,Pulkovo 1995 / 3-degree Gauss-Kruger CM 147E,2695,projected,4530,,4284,16179,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1995 / 3-degree Gauss-Kruger zone 49 (code 2683).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2744,Pulkovo 1995 / 3-degree Gauss-Kruger CM 150E,2696,projected,4530,,4284,16180,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1995 / 3-degree Gauss-Kruger zone 50 (code 2684).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2745,Pulkovo 1995 / 3-degree Gauss-Kruger CM 153E,2697,projected,4530,,4284,16181,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1995 / 3-degree Gauss-Kruger zone 51 (code 2685).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2746,Pulkovo 1995 / 3-degree Gauss-Kruger CM 156E,2698,projected,4530,,4284,16182,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1995 / 3-degree Gauss-Kruger zone 52 (code 2686).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2747,Pulkovo 1995 / 3-degree Gauss-Kruger CM 159E,2699,projected,4530,,4284,16183,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1995 / 3-degree Gauss-Kruger zone 53 (code 2687).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2748,Pulkovo 1995 / 3-degree Gauss-Kruger CM 162E,2700,projected,4530,,4284,16184,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1995 / 3-degree Gauss-Kruger zone 54 (code 2688).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2749,Pulkovo 1995 / 3-degree Gauss-Kruger CM 165E,2701,projected,4530,,4284,16185,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1995 / 3-degree Gauss-Kruger zone 55 (code 2689).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2750,Pulkovo 1995 / 3-degree Gauss-Kruger CM 168E,2702,projected,4530,,4284,16186,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1995 / 3-degree Gauss-Kruger zone 56 (code 2690).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2751,Pulkovo 1995 / 3-degree Gauss-Kruger CM 171E,2703,projected,4530,,4284,16187,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1995 / 3-degree Gauss-Kruger zone 57 (code 2691).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2752,Pulkovo 1995 / 3-degree Gauss-Kruger CM 174E,2704,projected,4530,,4284,16188,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1995 / 3-degree Gauss-Kruger zone 58 (code 2692).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2753,Pulkovo 1995 / 3-degree Gauss-Kruger CM 177E,2705,projected,4530,,4284,16189,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1995 / 3-degree Gauss-Kruger zone 59 (code 2693).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2754,Pulkovo 1995 / 3-degree Gauss-Kruger CM 180E,2706,projected,4530,,4284,16190,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1995 / 3-degree Gauss-Kruger zone 60 (code 2694).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2755,Pulkovo 1995 / 3-degree Gauss-Kruger CM 177W,2707,projected,4530,,4284,16191,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1995 / 3-degree Gauss-Kruger zone 61 (code 2695).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2756,Pulkovo 1995 / 3-degree Gauss-Kruger CM 174W,2708,projected,4530,,4284,16192,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1995 / 3-degree Gauss-Kruger zone 62 (code 2696).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2757,Pulkovo 1995 / 3-degree Gauss-Kruger CM 171W,2709,projected,4530,,4284,16193,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1995 / 3-degree Gauss-Kruger zone 63 (code 2697).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2758,Pulkovo 1995 / 3-degree Gauss-Kruger CM 168W,2710,projected,4530,,4284,16194,,,"Large scale topographic mapping, cadastral and engineering survey.",Truncated form of Pulkovo 1995 / 3-degree Gauss-Kruger zone 64 (code 2698).,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2759,NAD83(HARN) / Alabama East,2154,projected,4499,,4152,10131,,,Large and medium scale topographic mapping and engineering survey.,,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2760,NAD83(HARN) / Alabama West,2155,projected,4499,,4152,10132,,,Large and medium scale topographic mapping and engineering survey.,,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2761,NAD83(HARN) / Arizona East,2167,projected,4499,,4152,10231,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in International feet (note: not US survey feet).  See code 2222 for equivalent non-metric definition.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2762,NAD83(HARN) / Arizona Central,2166,projected,4499,,4152,10232,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in International feet (note: not US survey feet).  See code 2223 for equivalent non-metric definition.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2763,NAD83(HARN) / Arizona West,2168,projected,4499,,4152,10233,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in International feet (note: not US survey feet).  See code 2224 for equivalent non-metric definition.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2764,NAD83(HARN) / Arkansas North,2169,projected,4499,,4152,10331,,,Large and medium scale topographic mapping and engineering survey.,,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2765,NAD83(HARN) / Arkansas South,2170,projected,4499,,4152,10332,,,Large and medium scale topographic mapping and engineering survey.,,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2766,NAD83(HARN) / California zone 1,2175,projected,4499,,4152,10431,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  See code 2225 for equivalent non-metric definition.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2767,NAD83(HARN) / California zone 2,2176,projected,4499,,4152,10432,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  See code 2226 for equivalent non-metric definition.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2768,NAD83(HARN) / California zone 3,2177,projected,4499,,4152,10433,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  See code 2227 for equivalent non-metric definition.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2769,NAD83(HARN) / California zone 4,2178,projected,4499,,4152,10434,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  See code 2228 for equivalent non-metric definition.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2770,NAD83(HARN) / California zone 5,2182,projected,4499,,4152,10435,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  See code 2229 for equivalent non-metric definition.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2771,NAD83(HARN) / California zone 6,2180,projected,4499,,4152,10436,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  See code 2230 for equivalent non-metric definition.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2772,NAD83(HARN) / Colorado North,2184,projected,4499,,4152,10531,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  See code 2231 for equivalent non-metric definition.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2773,NAD83(HARN) / Colorado Central,2183,projected,4499,,4152,10532,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  See code 2232 for equivalent non-metric definition.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2774,NAD83(HARN) / Colorado South,2185,projected,4499,,4152,10533,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  See code 2233 for equivalent non-metric definition.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2775,NAD83(HARN) / Connecticut,1377,projected,4499,,4152,10630,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  See code 2234 for equivalent non-metric definition.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2776,NAD83(HARN) / Delaware,1378,projected,4499,,4152,10730,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  See code 2235 for equivalent non-metric definition.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2777,NAD83(HARN) / Florida East,2186,projected,4499,,4152,10931,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  See code 2236 for equivalent non-metric definition.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2778,NAD83(HARN) / Florida West,2188,projected,4499,,4152,10932,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  See code 2237 for equivalent non-metric definition.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2779,NAD83(HARN) / Florida North,2187,projected,4499,,4152,10933,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  See code 2238 for equivalent non-metric definition.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2780,NAD83(HARN) / Georgia East,2189,projected,4499,,4152,11031,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  See code 2239 for equivalent non-metric definition.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2781,NAD83(HARN) / Georgia West,2190,projected,4499,,4152,11032,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  See code 2240 for equivalent non-metric definition.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2782,NAD83(HARN) / Hawaii zone 1,1546,projected,4499,,4152,15131,,,Large and medium scale topographic mapping and engineering survey.,,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2783,NAD83(HARN) / Hawaii zone 2,1547,projected,4499,,4152,15132,,,Large and medium scale topographic mapping and engineering survey.,,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2784,NAD83(HARN) / Hawaii zone 3,1548,projected,4499,,4152,15133,,,Large and medium scale topographic mapping and engineering survey.,,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2785,NAD83(HARN) / Hawaii zone 4,1549,projected,4499,,4152,15134,,,Large and medium scale topographic mapping and engineering survey.,,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2786,NAD83(HARN) / Hawaii zone 5,1550,projected,4499,,4152,15135,,,Large and medium scale topographic mapping and engineering survey.,,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2787,NAD83(HARN) / Idaho East,2192,projected,4499,,4152,11131,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  See code 2241 for equivalent non-metric definition.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2788,NAD83(HARN) / Idaho Central,2191,projected,4499,,4152,11132,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  See code 2242 for equivalent non-metric definition.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2789,NAD83(HARN) / Idaho West,2193,projected,4499,,4152,11133,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  See code 2243 for equivalent non-metric definition.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2790,NAD83(HARN) / Illinois East,2194,projected,4499,,4152,11231,,,Large and medium scale topographic mapping and engineering survey.,,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2791,NAD83(HARN) / Illinois West,2195,projected,4499,,4152,11232,,,Large and medium scale topographic mapping and engineering survey.,,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2792,NAD83(HARN) / Indiana East,2196,projected,4499,,4152,11331,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  See code 2244 for equivalent non-metric definition.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2793,NAD83(HARN) / Indiana West,2197,projected,4499,,4152,11332,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  See code 2245 for equivalent non-metric definition.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2794,NAD83(HARN) / Iowa North,2198,projected,4499,,4152,11431,,,Large and medium scale topographic mapping and engineering survey.,,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2795,NAD83(HARN) / Iowa South,2199,projected,4499,,4152,11432,,,Large and medium scale topographic mapping and engineering survey.,,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2796,NAD83(HARN) / Kansas North,2200,projected,4499,,4152,11531,,,Large and medium scale topographic mapping and engineering survey.,,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2797,NAD83(HARN) / Kansas South,2201,projected,4499,,4152,11532,,,Large and medium scale topographic mapping and engineering survey.,,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2798,NAD83(HARN) / Kentucky North,2202,projected,4499,,4152,15303,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  See code 2246 for equivalent non-metric definition.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2799,NAD83(HARN) / Kentucky South,2203,projected,4499,,4152,11632,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  See code 2247 for equivalent non-metric definition.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2800,NAD83(HARN) / Louisiana North,2204,projected,4499,,4152,11731,,,Large and medium scale topographic mapping and engineering survey.,,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2801,NAD83(HARN) / Louisiana South,2529,projected,4499,,4152,11732,,,Large and medium scale topographic mapping and engineering survey.,,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2802,NAD83(HARN) / Maine East,2206,projected,4499,,4152,11831,,,Large and medium scale topographic mapping and engineering survey.,,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2803,NAD83(HARN) / Maine West,2207,projected,4499,,4152,11832,,,Large and medium scale topographic mapping and engineering survey.,,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2804,NAD83(HARN) / Maryland,1389,projected,4499,,4152,11930,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  See code 2248 for equivalent non-metric definition.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2805,NAD83(HARN) / Massachusetts Mainland,2209,projected,4499,,4152,12031,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  See code 2249 for equivalent non-metric definition.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2806,NAD83(HARN) / Massachusetts Island,2208,projected,4499,,4152,12032,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  See code 2250 for equivalent non-metric definition.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2807,NAD83(HARN) / Michigan North,1723,projected,4499,,4152,12141,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in International feet (note: not US survey feet).  See code 2251 for equivalent non-metric definition.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2808,NAD83(HARN) / Michigan Central,1724,projected,4499,,4152,12142,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in International feet (note: not US survey feet).  See code 2252 for equivalent non-metric definition.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2809,NAD83(HARN) / Michigan South,1725,projected,4499,,4152,12143,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in International feet (note: not US survey feet).  See code 2253 for equivalent non-metric definition.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2810,NAD83(HARN) / Minnesota North,2214,projected,4499,,4152,12231,,,Large and medium scale topographic mapping and engineering survey.,,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2811,NAD83(HARN) / Minnesota Central,2213,projected,4499,,4152,12232,,,Large and medium scale topographic mapping and engineering survey.,,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2812,NAD83(HARN) / Minnesota South,2215,projected,4499,,4152,12233,,,Large and medium scale topographic mapping and engineering survey.,,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2813,NAD83(HARN) / Mississippi East,2216,projected,4499,,4152,12331,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  See code 2254 for equivalent non-metric definition.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2814,NAD83(HARN) / Mississippi West,2217,projected,4499,,4152,12332,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  See code 2255 for equivalent non-metric definition.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2815,NAD83(HARN) / Missouri East,2219,projected,4499,,4152,12431,,,Large and medium scale topographic mapping and engineering survey.,,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2816,NAD83(HARN) / Missouri Central,2218,projected,4499,,4152,12432,,,Large and medium scale topographic mapping and engineering survey.,,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2817,NAD83(HARN) / Missouri West,2220,projected,4499,,4152,12433,,,Large and medium scale topographic mapping and engineering survey.,,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2818,NAD83(HARN) / Montana,1395,projected,4499,,4152,12530,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in International feet (note: not US survey feet).  See code 2256 for equivalent non-metric definition.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2819,NAD83(HARN) / Nebraska,1396,projected,4499,,4152,12630,,,Large and medium scale topographic mapping and engineering survey.,,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2820,NAD83(HARN) / Nevada East,2224,projected,4499,,4152,12731,,,Large and medium scale topographic mapping and engineering survey.,,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2821,NAD83(HARN) / Nevada Central,2223,projected,4499,,4152,12732,,,Large and medium scale topographic mapping and engineering survey.,,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2822,NAD83(HARN) / Nevada West,2225,projected,4499,,4152,12733,,,Large and medium scale topographic mapping and engineering survey.,,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2823,NAD83(HARN) / New Hampshire,1398,projected,4499,,4152,12830,,,Large and medium scale topographic mapping and engineering survey.,,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2824,NAD83(HARN) / New Jersey,1399,projected,4499,,4152,12930,,,Large and medium scale topographic mapping and engineering survey.,,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2825,NAD83(HARN) / New Mexico East,2228,projected,4499,,4152,13031,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  See code 2257 for equivalent non-metric definition.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2826,NAD83(HARN) / New Mexico Central,2231,projected,4499,,4152,13032,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  See code 2258 for equivalent non-metric definition.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2827,NAD83(HARN) / New Mexico West,2232,projected,4499,,4152,13033,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  See code 2259 for equivalent non-metric definition.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2828,NAD83(HARN) / New York East,2234,projected,4499,,4152,13131,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  See code 2260 for equivalent non-metric definition.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2829,NAD83(HARN) / New York Central,2233,projected,4499,,4152,13132,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  See code 2261 for equivalent non-metric definition.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2830,NAD83(HARN) / New York West,2236,projected,4499,,4152,13133,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  See code 2263 for equivalent non-metric definition.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2831,NAD83(HARN) / New York Long Island,2235,projected,4499,,4152,13134,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  See code 2264 for equivalent non-metric definition.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2832,NAD83(HARN) / North Dakota North,2237,projected,4499,,4152,13331,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in International feet (note: not US survey feet).  See code 2265 for equivalent non-metric definition.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2833,NAD83(HARN) / North Dakota South,2238,projected,4499,,4152,13332,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in International feet (note: not US survey feet).  See code 2266 for equivalent non-metric definition.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2834,NAD83(HARN) / Ohio North,2239,projected,4499,,4152,13431,,,Large and medium scale topographic mapping and engineering survey.,,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2835,NAD83(HARN) / Ohio South,2240,projected,4499,,4152,13432,,,Large and medium scale topographic mapping and engineering survey.,,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2836,NAD83(HARN) / Oklahoma North,2241,projected,4499,,4152,13531,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  See code 2267 for equivalent non-metric definition.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2837,NAD83(HARN) / Oklahoma South,2242,projected,4499,,4152,13532,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  See code 2268 for equivalent non-metric definition.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2838,NAD83(HARN) / Oregon North,2243,projected,4499,,4152,13631,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in International feet (note: not US survey feet).  See code 2269 for equivalent non-metric definition.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2839,NAD83(HARN) / Oregon South,2244,projected,4499,,4152,13632,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in International feet (note: not US survey feet).  See code 2270 for equivalent non-metric definition.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2840,NAD83(HARN) / Rhode Island,1408,projected,4499,,4152,13830,,,Large and medium scale topographic mapping and engineering survey.,,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2841,NAD83(HARN) / South Dakota North,2249,projected,4499,,4152,14031,,,Large and medium scale topographic mapping and engineering survey.,,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2842,NAD83(HARN) / South Dakota South,2250,projected,4499,,4152,14032,,,Large and medium scale topographic mapping and engineering survey.,,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2843,NAD83(HARN) / Tennessee,1411,projected,4499,,4152,14130,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  See code 2274 for equivalent non-metric definition.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2844,NAD83(HARN) / Texas North,2253,projected,4499,,4152,14231,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  See code 2275 for equivalent non-metric definition.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2845,NAD83(HARN) / Texas North Central,2254,projected,4499,,4152,14232,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  See code 2276 for equivalent non-metric definition.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2846,NAD83(HARN) / Texas Central,2252,projected,4499,,4152,14233,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  See code 2277 for equivalent non-metric definition.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2847,NAD83(HARN) / Texas South Central,2527,projected,4499,,4152,14234,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  See code 2278 for equivalent non-metric definition.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2848,NAD83(HARN) / Texas South,2528,projected,4499,,4152,14235,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  See code 2279 for equivalent non-metric definition.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2849,NAD83(HARN) / Utah North,2258,projected,4499,,4152,14331,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in International feet (note: not US survey feet).  See code 2280 for equivalent non-metric definition.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2850,NAD83(HARN) / Utah Central,2257,projected,4499,,4152,14332,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in International feet (note: not US survey feet).  See code 2281 for equivalent non-metric definition.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2851,NAD83(HARN) / Utah South,2259,projected,4499,,4152,14333,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in International feet (note: not US survey feet).  See code 2282 for equivalent non-metric definition.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2852,NAD83(HARN) / Vermont,1414,projected,4499,,4152,14430,,,Large and medium scale topographic mapping and engineering survey.,,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2853,NAD83(HARN) / Virginia North,2260,projected,4499,,4152,14531,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  See code 2283 for equivalent non-metric definition.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2854,NAD83(HARN) / Virginia South,2261,projected,4499,,4152,14532,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  See code 2284 for equivalent non-metric definition.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2855,NAD83(HARN) / Washington North,2273,projected,4499,,4152,14631,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  See code 2285 for equivalent non-metric definition.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2856,NAD83(HARN) / Washington South,2274,projected,4499,,4152,14632,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  See code 2286 for equivalent non-metric definition.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2857,NAD83(HARN) / West Virginia North,2264,projected,4499,,4152,14731,,,Large and medium scale topographic mapping and engineering survey.,,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2858,NAD83(HARN) / West Virginia South,2265,projected,4499,,4152,14732,,,Large and medium scale topographic mapping and engineering survey.,,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2859,NAD83(HARN) / Wisconsin North,2267,projected,4499,,4152,14831,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  See code 2287 for equivalent non-metric definition.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2860,NAD83(HARN) / Wisconsin Central,2266,projected,4499,,4152,14832,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  See code 2288 for equivalent non-metric definition.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2861,NAD83(HARN) / Wisconsin South,2268,projected,4499,,4152,14833,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  See code 2289 for equivalent non-metric definition.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2862,NAD83(HARN) / Wyoming East,2269,projected,4499,,4152,14931,,,Large and medium scale topographic mapping and engineering survey.,,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2863,NAD83(HARN) / Wyoming East Central,2270,projected,4499,,4152,14932,,,Large and medium scale topographic mapping and engineering survey.,,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2864,NAD83(HARN) / Wyoming West Central,2272,projected,4499,,4152,14933,,,Large and medium scale topographic mapping and engineering survey.,,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2865,NAD83(HARN) / Wyoming West,2271,projected,4499,,4152,14934,,,Large and medium scale topographic mapping and engineering survey.,,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2866,NAD83(HARN) / Puerto Rico & Virgin Is.,2251,projected,4499,,4152,15230,,,Large and medium scale topographic mapping and engineering survey.,,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2867,NAD83(HARN) / Arizona East (ft),2167,projected,4495,,4152,15304,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in International feet (note: not US survey feet).  Federal definition is metric - see code 26948.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2868,NAD83(HARN) / Arizona Central (ft),2166,projected,4495,,4152,15305,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in International feet (note: not US survey feet).  Federal definition is metric - see code 26949.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2869,NAD83(HARN) / Arizona West (ft),2168,projected,4495,,4152,15306,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in International feet (note: not US survey feet).  Federal definition is metric - see code 26950.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2870,NAD83(HARN) / California zone 1 (ftUS),2175,projected,4497,,4152,15307,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  Federal definition is metric - see code 26941.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2871,NAD83(HARN) / California zone 2 (ftUS),2176,projected,4497,,4152,15308,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  Federal definition is metric - see code 26942.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2872,NAD83(HARN) / California zone 3 (ftUS),2177,projected,4497,,4152,15309,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  Federal definition is metric - see code 26943.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2873,NAD83(HARN) / California zone 4 (ftUS),2178,projected,4497,,4152,15310,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  Federal definition is metric - see code 26944.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2874,NAD83(HARN) / California zone 5 (ftUS),2182,projected,4497,,4152,15311,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  Federal definition is metric - see code 26945.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2875,NAD83(HARN) / California zone 6 (ftUS),2180,projected,4497,,4152,15312,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  Federal definition is metric - see code 26946.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2876,NAD83(HARN) / Colorado North (ftUS),2184,projected,4497,,4152,15313,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  Federal definition is metric - see code 26953.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2877,NAD83(HARN) / Colorado Central (ftUS),2183,projected,4497,,4152,15314,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  Federal definition is metric - see code 26954.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2878,NAD83(HARN) / Colorado South (ftUS),2185,projected,4497,,4152,15315,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  Federal definition is metric - see code 26955.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2879,NAD83(HARN) / Connecticut (ftUS),1377,projected,4497,,4152,15316,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  Federal definition is metric - see code 26956.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2880,NAD83(HARN) / Delaware (ftUS),1378,projected,4497,,4152,15317,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  Federal definition is metric - see code 26957.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2881,NAD83(HARN) / Florida East (ftUS),2186,projected,4497,,4152,15318,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  Federal definition is metric - see code 26958.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2882,NAD83(HARN) / Florida West (ftUS),2188,projected,4497,,4152,15319,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  Federal definition is metric - see code 26959.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2883,NAD83(HARN) / Florida North (ftUS),2187,projected,4497,,4152,15320,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  Federal definition is metric - see code 26960.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2884,NAD83(HARN) / Georgia East (ftUS),2189,projected,4497,,4152,15321,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  Federal definition is metric - see code 26966.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2885,NAD83(HARN) / Georgia West (ftUS),2190,projected,4497,,4152,15322,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  Federal definition is metric - see code 26967.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2886,NAD83(HARN) / Idaho East (ftUS),2192,projected,4497,,4152,15323,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  Federal definition is metric - see code 26968.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2887,NAD83(HARN) / Idaho Central (ftUS),2191,projected,4497,,4152,15324,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  Federal definition is metric - see code 26969.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2888,NAD83(HARN) / Idaho West (ftUS),2193,projected,4497,,4152,15325,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  Federal definition is metric - see code 26970.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2889,NAD83(HARN) / Indiana East (ftUS),2196,projected,4497,,4152,15326,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  Federal definition is metric - see code 26973.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2890,NAD83(HARN) / Indiana West (ftUS),2197,projected,4497,,4152,15327,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  Federal definition is metric - see code 26974.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2891,NAD83(HARN) / Kentucky North (ftUS),2202,projected,4497,,4152,15328,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  Federal definition is metric - see code 26979.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2892,NAD83(HARN) / Kentucky South (ftUS),2203,projected,4497,,4152,15329,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  Federal definition is metric - see code 26980.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2893,NAD83(HARN) / Maryland (ftUS),1389,projected,4497,,4152,15330,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  Federal definition is metric - see code 26985.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2894,NAD83(HARN) / Massachusetts Mainland (ftUS),2209,projected,4497,,4152,15331,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  Federal definition is metric - see code 26986.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2895,NAD83(HARN) / Massachusetts Island (ftUS),2208,projected,4497,,4152,15332,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  Federal definition is metric - see code 26987.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2896,NAD83(HARN) / Michigan North (ft),1723,projected,4495,,4152,15333,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in International feet (note: not US survey feet).  Federal definition is metric - see code 26988.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2897,NAD83(HARN) / Michigan Central (ft),1724,projected,4495,,4152,15334,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in International feet (note: not US survey feet).  Federal definition is metric - see code 26989.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2898,NAD83(HARN) / Michigan South (ft),1725,projected,4495,,4152,15335,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in International feet (note: not US survey feet).  Federal definition is metric - see code 26990.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2899,NAD83(HARN) / Mississippi East (ftUS),2216,projected,4497,,4152,15336,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  Federal definition is metric - see code 26994.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2900,NAD83(HARN) / Mississippi West (ftUS),2217,projected,4497,,4152,15337,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  Federal definition is metric - see code 26995.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2901,NAD83(HARN) / Montana (ft),1395,projected,4495,,4152,15338,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in International feet (note: not US survey feet).  Federal definition is metric - see code 32100.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2902,NAD83(HARN) / New Mexico East (ftUS),2228,projected,4497,,4152,15339,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  Federal definition is metric - see code 32112.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2903,NAD83(HARN) / New Mexico Central (ftUS),2231,projected,4497,,4152,15340,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  Federal definition is metric - see code 32113.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2904,NAD83(HARN) / New Mexico West (ftUS),2232,projected,4497,,4152,15341,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  Federal definition is metric - see code 32114.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2905,NAD83(HARN) / New York East (ftUS),2234,projected,4497,,4152,15342,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  Federal definition is metric - see code 32115.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2906,NAD83(HARN) / New York Central (ftUS),2233,projected,4497,,4152,15343,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  Federal definition is metric - see code 32116.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2907,NAD83(HARN) / New York West (ftUS),2236,projected,4497,,4152,15344,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  Federal definition is metric - see code 32117.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2908,NAD83(HARN) / New York Long Island (ftUS),2235,projected,4497,,4152,15345,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  Federal definition is metric - see code 32118.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2909,NAD83(HARN) / North Dakota North (ft),2237,projected,4495,,4152,15347,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in International feet (note: not US survey feet).  Federal definition is metric - see code 32120.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2910,NAD83(HARN) / North Dakota South (ft),2238,projected,4495,,4152,15348,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in International feet (note: not US survey feet).  Federal definition is metric - see code 32121.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2911,NAD83(HARN) / Oklahoma North (ftUS),2241,projected,4497,,4152,15349,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  Federal definition is metric - see code 32124.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2912,NAD83(HARN) / Oklahoma South (ftUS),2242,projected,4497,,4152,15350,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  Federal definition is metric - see code 32125.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2913,NAD83(HARN) / Oregon North (ft),2243,projected,4495,,4152,15351,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in International feet (note: not US survey feet).  Federal definition is metric - see code 32126.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2914,NAD83(HARN) / Oregon South (ft),2244,projected,4495,,4152,15352,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in International feet (note: not US survey feet).  Federal definition is metric - see code 32127.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2915,NAD83(HARN) / Tennessee (ftUS),1411,projected,4497,,4152,15356,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  Federal definition is metric - see code 32136.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2916,NAD83(HARN) / Texas North (ftUS),2253,projected,4497,,4152,15357,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  Federal definition is metric - see code 32137.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2917,NAD83(HARN) / Texas North Central (ftUS),2254,projected,4497,,4152,15358,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  Federal definition is metric - see code 32138.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2918,NAD83(HARN) / Texas Central (ftUS),2252,projected,4497,,4152,15359,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  Federal definition is metric - see code 32139.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2919,NAD83(HARN) / Texas South Central (ftUS),2527,projected,4497,,4152,15360,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  Federal definition is metric - see code 32140.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2920,NAD83(HARN) / Texas South (ftUS),2528,projected,4497,,4152,15361,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  Federal definition is metric - see code 32141.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2921,NAD83(HARN) / Utah North (ft),2258,projected,4495,,4152,15362,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in International feet (note: not US survey feet).  Federal definition is metric - see code 32142.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2922,NAD83(HARN) / Utah Central (ft),2257,projected,4495,,4152,15363,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in International feet (note: not US survey feet).  Federal definition is metric - see code 32143.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2923,NAD83(HARN) / Utah South (ft),2259,projected,4495,,4152,15364,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in International feet (note: not US survey feet).  Federal definition is metric - see code 32144.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2924,NAD83(HARN) / Virginia North (ftUS),2260,projected,4497,,4152,15365,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  Federal definition is metric - see code 32146.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2925,NAD83(HARN) / Virginia South (ftUS),2261,projected,4497,,4152,15366,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  Federal definition is metric - see code 32147.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2926,NAD83(HARN) / Washington North (ftUS),2273,projected,4497,,4152,15367,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  Federal definition is metric - see code 32148.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2927,NAD83(HARN) / Washington South (ftUS),2274,projected,4497,,4152,15368,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  Federal definition is metric - see code 32149.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2928,NAD83(HARN) / Wisconsin North (ftUS),2267,projected,4497,,4152,15369,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  Federal definition is metric - see code 32152.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2929,NAD83(HARN) / Wisconsin Central (ftUS),2266,projected,4497,,4152,15370,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  Federal definition is metric - see code 32153.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2930,NAD83(HARN) / Wisconsin South (ftUS),2268,projected,4497,,4152,15371,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  Federal definition is metric - see code 32154.,National Geodetic Survey,EPSG,2002-06-22 00:00:00,,1,0
-2931,Beduaram / TM 13 NE,2771,projected,4497,,4213,16413,,,Oil exploration.,Used by Elf in 1986.,TotalFinaElf,EPSG,2002-06-28 00:00:00,,1,0
-2932,QND95 / Qatar National Grid,1346,projected,4400,,4614,19919,,,Large and medium scale topographic mapping and engineering survey.,,Qatar Centre for Geographic Information.,EPSG,2002-06-28 00:00:00,,1,0
-2933,Segara / UTM zone 50S,1328,projected,4400,,4613,16150,,,Large and medium scale topographic mapping and engineering survey.,,TotalFinaElf,EPSG,2002-06-22 00:00:00,,1,0
-2934,Segara (Jakarta) / NEIEZ,1360,projected,4499,,4820,19905,,,Large and medium scale topographic mapping and engineering survey.,,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-2935,Pulkovo 1942 / CS63 zone A1,2772,projected,4530,,4284,18441,,,"Large scale topographic mapping, cadastral and engineering survey.",,EPSG,EPSG,2002-06-28 00:00:00,,1,0
-2936,Pulkovo 1942 / CS63 zone A2,2773,projected,4530,,4284,18442,,,"Large scale topographic mapping, cadastral and engineering survey.",,EPSG,EPSG,2002-06-28 00:00:00,,1,0
-2937,Pulkovo 1942 / CS63 zone A3,2774,projected,4530,,4284,18443,,,"Large scale topographic mapping, cadastral and engineering survey.",,EPSG,EPSG,2002-06-28 00:00:00,,1,0
-2938,Pulkovo 1942 / CS63 zone A4,2775,projected,4530,,4284,18444,,,"Large scale topographic mapping, cadastral and engineering survey.",,EPSG,EPSG,2002-06-28 00:00:00,,1,0
-2939,Pulkovo 1942 / CS63 zone K2,2776,projected,4530,,4284,18446,,,"Large scale topographic mapping, cadastral and engineering survey.",,EPSG,EPSG,2002-06-28 00:00:00,,1,0
-2940,Pulkovo 1942 / CS63 zone K3,2777,projected,4530,,4284,18447,,,"Large scale topographic mapping, cadastral and engineering survey.",,EPSG,EPSG,2002-06-28 00:00:00,,1,0
-2941,Pulkovo 1942 / CS63 zone K4,2778,projected,4530,,4284,18448,,,"Large scale topographic mapping, cadastral and engineering survey.",,EPSG,EPSG,2002-06-28 00:00:00,,1,0
-2942,Porto Santo / UTM zone 28N,1314,projected,4400,,4615,16028,,,Topographic mapping.,,Instituto Geografico e Cadastral Lisbon; http://www.ipcc.pt,EPSG,2002-07-13 00:00:00,,1,0
-2943,Selvagem Grande / UTM zone 28N,2779,projected,4400,,4616,16028,,,Topographic mapping.,,Instituto Geografico e Cadastral Lisbon; http://www.ipcc.pt,EPSG,2002-07-13 00:00:00,,1,0
-2944,NAD83(CSRS) / SCoPQ zone 2,1420,projected,4499,,4617,17700,,,Large and medium scale topographic mapping and engineering survey.,,Topographic Mapping Section; Quebec Ministry of Natural Resources.,EPSG,2002-07-13 00:00:00,,1,0
-2945,NAD83(CSRS) / MTM zone 3,1421,projected,4496,,4617,17703,,,Large and medium scale topographic mapping and engineering survey.,"Known in Quebec as ""NAD83(CSRS98) / SCoPQ zone 3"" with axis 1 and 2 abbreviations of ""X"" and ""Y"" respectively.",Topographic Mapping Section; Quebec Ministry of Natural Resources.,EPSG,2002-07-13 00:00:00,,1,0
-2946,NAD83(CSRS) / MTM zone 4,1422,projected,4496,,4617,17704,,,Large and medium scale topographic mapping and engineering survey.,"Known in Quebec as ""NAD83(CSRS98) / SCoPQ zone 4"" with axis 1 and 2 abbreviations of ""X"" and ""Y"" respectively.",Topographic Mapping Section; Quebec Ministry of Natural Resources.,EPSG,2002-07-13 00:00:00,,1,0
-2947,NAD83(CSRS) / MTM zone 5,1423,projected,4496,,4617,17705,,,Large and medium scale topographic mapping and engineering survey.,"Known in Quebec as ""NAD83(CSRS98) / SCoPQ zone 5"" with axis 1 and 2 abbreviations of ""X"" and ""Y"" respectively.",Topographic Mapping Section; Quebec Ministry of Natural Resources.,EPSG,2002-07-13 00:00:00,,1,0
-2948,NAD83(CSRS) / MTM zone 6,1424,projected,4496,,4617,17706,,,Large and medium scale topographic mapping and engineering survey.,"Known in Quebec as ""NAD83(CSRS98) / SCoPQ zone 6"" with axis 1 and 2 abbreviations of ""X"" and ""Y"" respectively.",Topographic Mapping Section; Quebec Ministry of Natural Resources.,EPSG,2002-07-13 00:00:00,,1,0
-2949,NAD83(CSRS) / MTM zone 7,1425,projected,4496,,4617,17707,,,Large and medium scale topographic mapping and engineering survey.,"Known in Quebec as ""NAD83(CSRS98) / SCoPQ zone 7"" with axis 1 and 2 abbreviations of ""X"" and ""Y"" respectively.",Topographic Mapping Section; Quebec Ministry of Natural Resources.,EPSG,2002-07-13 00:00:00,,1,0
-2950,NAD83(CSRS) / MTM zone 8,1426,projected,4496,,4617,17708,,,Large and medium scale topographic mapping and engineering survey.,"Known in Quebec as ""NAD83(CSRS98) / SCoPQ zone 8"" with axis 1 and 2 abbreviations of ""X"" and ""Y"" respectively.",Topographic Mapping Section; Quebec Ministry of Natural Resources.,EPSG,2002-07-13 00:00:00,,1,0
-2951,NAD83(CSRS) / MTM zone 9,1427,projected,4496,,4617,17709,,,Large and medium scale topographic mapping and engineering survey.,"Known in Quebec as ""NAD83(CSRS98) / SCoPQ zone 9"" with axis 1 and 2 abbreviations of ""X"" and ""Y"" respectively.",Topographic Mapping Section; Quebec Ministry of Natural Resources.,EPSG,2002-07-13 00:00:00,,1,0
-2952,NAD83(CSRS) / MTM zone 10,1428,projected,4496,,4617,17710,,,Large and medium scale topographic mapping and engineering survey.,"Known in Quebec as ""NAD83(CSRS98) / SCoPQ zone 10"" with axis 1 and 2 abbreviations of ""X"" and ""Y"" respectively.",Topographic Mapping Section; Quebec Ministry of Natural Resources.,EPSG,2002-07-13 00:00:00,,1,0
-2953,NAD83(CSRS) / New Brunswick Stereo,1447,projected,4500,,4617,19946,,,Large and medium scale topographic mapping and engineering survey.,In use from 1999.,Service New Brunswick Land and Information Standards Manual,EPSG,2002-07-13 00:00:00,,1,0
-2954,NAD83(CSRS) / Prince Edward Isl. Stereographic (NAD83),1533,projected,4496,,4617,19960,,,Large and medium scale topographic mapping and engineering survey.,,PEI Department of Transportation & Public Works,EPSG,2002-07-13 00:00:00,,1,0
-2955,NAD83(CSRS) / UTM zone 11N,1508,projected,4400,,4617,16011,,,Large and medium scale topographic mapping and engineering survey.,In use from 2000.,Geomatics Canada.,EPSG,2002-07-13 00:00:00,,1,0
-2956,NAD83(CSRS) / UTM zone 12N,1507,projected,4400,,4617,16012,,,Large and medium scale topographic mapping and engineering survey.,In use from 2000.,Geomatics Canada.,EPSG,2002-07-13 00:00:00,,1,0
-2957,NAD83(CSRS) / UTM zone 13N,1506,projected,4400,,4617,16013,,,Large and medium scale topographic mapping and engineering survey.,In use from 2000.,Geomatics Canada.,EPSG,2002-07-13 00:00:00,,1,0
-2958,NAD83(CSRS) / UTM zone 17N,1428,projected,4400,,4617,16017,,,Large and medium scale topographic mapping and engineering survey.,In use from 2000.,Geomatics Canada.,EPSG,2002-07-13 00:00:00,,1,0
-2959,NAD83(CSRS) / UTM zone 18N,1443,projected,4400,,4617,16018,,,Large and medium scale topographic mapping and engineering survey.,In use from 2000.,Geomatics Canada.,EPSG,2002-07-13 00:00:00,,1,0
-2960,NAD83(CSRS) / UTM zone 19N,1448,projected,4400,,4617,16019,,,Large and medium scale topographic mapping and engineering survey.,In use from 1999.,Service New Brunswick Land and Information Standards Manual,EPSG,2002-07-13 00:00:00,,1,0
-2961,NAD83(CSRS) / UTM zone 20N,1449,projected,4400,,4617,16020,,,Large and medium scale topographic mapping and engineering survey.,In use from 1999.,Service New Brunswick Land and Information Standards Manual,EPSG,2002-07-13 00:00:00,,1,0
-2962,NAD83(CSRS) / UTM zone 21N,1446,projected,4400,,4617,16021,,,Large and medium scale topographic mapping and engineering survey.,In use from 2000.,Geomatics Canada.,EPSG,2002-07-13 00:00:00,,1,0
-2963,Lisbon 1890 (Lisbon) / Portugal Bonne,1294,projected,6509,,4904,19979,,,Medium scale topographic mapping.,,Instituto Geografico e Cadastral Lisbon; http://www.ipcc.pt/portuguese/produtos/cartografia/50m.html,EPSG,2002-07-13 00:00:00,,1,0
-3036,Moznet / UTM zone 36S,1540,projected,4400,,4130,16136,,,Large and medium scale topographic mapping and engineering survey.,,Direc��o Nacional de Geografia e Cadastral (DINAGECA).,EPSG,1998-04-16 00:00:00,,1,0
-3037,Moznet / UTM zone 37S,1541,projected,4400,,4130,16137,,,Large and medium scale topographic mapping and engineering survey.,,Direc��o Nacional de Geografia e Cadastral (DINAGECA).,EPSG,1998-04-16 00:00:00,,1,0
-3148,Indian 1960 / UTM zone 48N,1542,projected,4400,,4131,16048,,,Large and medium scale topographic mapping and engineering survey.,In Vietnam superseded by Hanoi 72 / Gauss zone 18 from 1988 onwards.,,EPSG,1998-11-11 00:00:00,,1,0
-3149,Indian 1960 / UTM zone 49N,1453,projected,4400,,4131,16049,,,Large and medium scale topographic mapping and engineering survey.,Superseded by Hanoi 72 / Gauss zone 18 from 1988 onwards.,,EPSG,1998-11-11 00:00:00,,1,0
-3176,Indian 1960 / TM 106 NE,1495,projected,4400,,4131,16506,,,Used by Petrovietnam for offshore block 15.,,Petrovietnam,EPSG,1998-11-11 00:00:00,,1,0
-3200,FD58 / Iraq zone,1300,projected,4400,,4132,19906,,,Large and medium scale topographic mapping and engineering survey.,,IOEPC records.,EPSG,1998-11-11 00:00:00,,1,0
-3300,Estonian Coordinate System of 1992,1090,projected,4530,,4133,19938,,,Used for 1:20000 and larger scale mapping.,Superseded by Estonian Coordinate System of 1997 (code 3301).,http://www.geo.ut.ee/~raivo/estcoord.html,EPSG,1998-12-14 00:00:00,,1,0
-3301,Estonian Coordinate System of 1997,1090,projected,4530,,4180,19938,,,Used for 1:20000 and larger scale mapping.,Supersedes Estonian Coordinate System of 1992 (code 3300).,Estonian National Land Board via EuroGeographics; http://crs.ifag.de/,EPSG,2001-06-05 00:00:00,,1,0
-3439,PSD93 / UTM zone 39N,1544,projected,4400,,4134,16039,,,Oil exploration and production.,Supersedes Fahud / UTM zone 39N projCS (code 23239). Maximum differences to Fahud adjustment are 20 metres.,Petroleum Development Oman,EPSG,1999-04-22 00:00:00,,1,0
-3440,PSD93 / UTM zone 40N,1545,projected,4400,,4134,16040,,,Oil exploration and production.,Supersedes Fahud / UTM zone 40N projCS (code 23240). Maximum differences to Fahud adjustment are 20 metres.,Petroleum Development Oman,EPSG,1999-04-22 00:00:00,,1,0
-3561,Old Hawaiian / Hawaii zone 1,1546,projected,4497,,4135,15101,,,Large and medium scale topographic mapping and engineering survey.,Sometimes erroneously referred to as NAD27 / Hawaii zone 1.,,EPSG,1999-05-24 00:00:00,99.322,1,0
-3562,Old Hawaiian / Hawaii zone 2,1547,projected,4497,,4135,15102,,,Large and medium scale topographic mapping and engineering survey.,Sometimes erroneously referred to as NAD27 / Hawaii zone 2.,,EPSG,1999-05-24 00:00:00,99.322,1,0
-3563,Old Hawaiian / Hawaii zone 3,1548,projected,4497,,4135,15103,,,Large and medium scale topographic mapping and engineering survey.,Sometimes erroneously referred to as NAD27 / Hawaii zone 3.,,EPSG,1999-05-24 00:00:00,99.322,1,0
-3564,Old Hawaiian / Hawaii zone 4,1549,projected,4497,,4135,15104,,,Large and medium scale topographic mapping and engineering survey.,Sometimes erroneously referred to as NAD27 / Hawaii zone 4.,,EPSG,1999-05-24 00:00:00,99.322,1,0
-3565,Old Hawaiian / Hawaii zone 5,1550,projected,4497,,4135,15105,,,Large and medium scale topographic mapping and engineering survey.,Sometimes erroneously referred to as NAD27 / Hawaii zone 5.,,EPSG,1999-05-24 00:00:00,99.322,1,0
-3920,Puerto Rico / UTM zone 20N,1253,projected,4400,,4139,16020,,,Large and medium scale topographic mapping and engineering survey.,NAD27 / UTM zone 20 N (code 26720) used for military purposes.,Ordnance Survey of Great Britain,EPSG,1999-04-22 00:00:00,,1,0
-3991,Puerto Rico State Plane CS of 1927,1194,projected,4497,,4139,15201,,,Large and medium scale topographic mapping and engineering survey.,Sometimes erroneously referred to as NAD27 / Puerto Rico State Plane CS.,US National Geodetic Survey,EPSG,1999-05-24 00:00:00,99.323,1,0
-3992,Puerto Rico / St. Croix,1254,projected,4497,,4139,15202,,,Large and medium scale topographic mapping and engineering survey.,Sometimes erroneously referred to as NAD27 / St. Croix State Plane CS.,US National Geodetic Survey,EPSG,1999-05-24 00:00:00,99.323,1,0
-4001,Unknown datum based upon the Airy 1830 ellipsoid,1263,geographic 2D,6402,6001,,,,,Not recommended.,Use only in cases where geodetic datum is unknown.,EPSG,EPSG,2000-05-03 00:00:00,96.08  2000.42,0,0
-4002,Unknown datum based upon the Airy Modified 1849 ellipsoid,1263,geographic 2D,6402,6002,,,,,Not recommended.,Use only in cases where geodetic datum is unknown.,EPSG,EPSG,2000-05-03 00:00:00,96.08  2000.42,0,0
-4003,Unknown datum based upon the Australian National Spheroid,1263,geographic 2D,6402,6003,,,,,Not recommended.,Use only in cases where geodetic datum is unknown.,EPSG,EPSG,2000-05-03 00:00:00,96.08  2000.42,0,0
-4004,Unknown datum based upon the Bessel 1841 ellipsoid,1263,geographic 2D,6402,6004,,,,,Not recommended.,Use only in cases where geodetic datum is unknown.,EPSG,EPSG,2000-05-03 00:00:00,96.08  2000.42,0,0
-4005,Unknown datum based upon the Bessel Modified ellipsoid,1263,geographic 2D,6402,6005,,,,,Not recommended.,Use only in cases where geodetic datum is unknown.,EPSG,EPSG,2000-05-03 00:00:00,96.08  2000.42,0,0
-4006,Unknown datum based upon the Bessel Namibia ellipsoid,1263,geographic 2D,6402,6006,,,,,Not recommended.,Use only in cases where geodetic datum is unknown.,EPSG,EPSG,2000-05-03 00:00:00,96.08  2000.42,0,0
-4007,Unknown datum based upon the Clarke 1858 ellipsoid,1263,geographic 2D,6402,6007,,,,,Not recommended.,Use only in cases where geodetic datum is unknown.,EPSG,EPSG,2000-05-03 00:00:00,96.08  2000.42,0,0
-4008,Unknown datum based upon the Clarke 1866 ellipsoid,1263,geographic 2D,6402,6008,,,,,Not recommended.,Use only in cases where geodetic datum is unknown.,EPSG,EPSG,2000-05-03 00:00:00,96.08  2000.42,0,0
-4009,Unknown datum based upon the Clarke 1866 Michigan ellipsoid,1263,geographic 2D,6402,6009,,,,,Not recommended.,Use only in cases where geodetic datum is unknown.,EPSG,EPSG,2000-05-03 00:00:00,96.08  2000.42,0,0
-4010,Unknown datum based upon the Clarke 1880 (Benoit) ellipsoid,1263,geographic 2D,6402,6010,,,,,Not recommended.,Use only in cases where geodetic datum is unknown.,EPSG,EPSG,2000-05-03 00:00:00,96.08  2000.42,0,0
-4011,Unknown datum based upon the Clarke 1880 (IGN) ellipsoid,1263,geographic 2D,6402,6011,,,,,Not recommended.,Use only in cases where geodetic datum is unknown.,EPSG,EPSG,2000-05-03 00:00:00,96.08  2000.42,0,0
-4012,Unknown datum based upon the Clarke 1880 (RGS) ellipsoid,1263,geographic 2D,6402,6012,,,,,Not recommended.,Use only in cases where geodetic datum is unknown.,EPSG,EPSG,2000-05-03 00:00:00,96.08  2000.42,0,0
-4013,Unknown datum based upon the Clarke 1880 (Arc) ellipsoid,1263,geographic 2D,6402,6013,,,,,Not recommended.,Use only in cases where geodetic datum is unknown.,EPSG,EPSG,2000-05-03 00:00:00,96.08  2000.42,0,0
-4014,Unknown datum based upon the Clarke 1880 (SGA 1922) ellipsoid,1263,geographic 2D,6402,6014,,,,,Not recommended.,Use only in cases where geodetic datum is unknown.,EPSG,EPSG,2000-05-03 00:00:00,96.08  2000.42,0,0
-4015,Unknown datum based upon the Everest 1830 (1937 Adjustment) ellipsoid,1263,geographic 2D,6402,6015,,,,,Not recommended.,Use only in cases where geodetic datum is unknown.,EPSG,EPSG,2000-05-03 00:00:00,96.08  2000.42,0,0
-4016,Unknown datum based upon the Everest 1830 (1967 Definition) ellipsoid,1263,geographic 2D,6402,6016,,,,,Not recommended.,Use only in cases where geodetic datum is unknown.,EPSG,EPSG,2000-05-03 00:00:00,96.08  2000.42,0,0
-4018,Unknown datum based upon the Everest 1830 Modified ellipsoid,1263,geographic 2D,6402,6018,,,,,Not recommended.,Use only in cases where geodetic datum is unknown.,EPSG,EPSG,2000-05-03 00:00:00,96.08  2000.42,0,0
-4019,Unknown datum based upon the GRS 1980 ellipsoid,1263,geographic 2D,6402,6019,,,,,Not recommended.,Use only in cases where geodetic datum is unknown.,EPSG,EPSG,2000-05-03 00:00:00,96.08  2000.42,0,0
-4020,Unknown datum based upon the Helmert 1906 ellipsoid,1263,geographic 2D,6402,6020,,,,,Not recommended.,Use only in cases where geodetic datum is unknown.,EPSG,EPSG,2000-05-03 00:00:00,96.08  2000.42,0,0
-4021,Unknown datum based upon the Indonesian National Spheroid,1263,geographic 2D,6402,6021,,,,,Not recommended.,Use only in cases where geodetic datum is unknown.,EPSG,EPSG,2000-05-03 00:00:00,96.08  2000.42,0,0
-4022,Unknown datum based upon the International 1924 ellipsoid,1263,geographic 2D,6402,6022,,,,,Not recommended.,Use only in cases where geodetic datum is unknown.,EPSG,EPSG,2000-05-03 00:00:00,96.08  2000.42,0,0
-4024,Unknown datum based upon the Krassowsky 1940 ellipsoid,1263,geographic 2D,6402,6024,,,,,Not recommended.,Use only in cases where geodetic datum is unknown.,EPSG,EPSG,2000-05-03 00:00:00,96.08  2000.42,0,0
-4025,Unknown datum based upon the NWL 9D ellipsoid,1263,geographic 2D,6402,6025,,,,,Not recommended.,Use only in cases where geodetic datum is unknown.,EPSG,EPSG,2000-05-03 00:00:00,96.08  2000.42,0,0
-4027,Unknown datum based upon the Plessis 1817 ellipsoid,1263,geographic 2D,6402,6027,,,,,Not recommended.,Use only in cases where geodetic datum is unknown.,EPSG,EPSG,2000-05-03 00:00:00,96.08  2000.42,0,0
-4028,Unknown datum based upon the Struve 1860 ellipsoid,1263,geographic 2D,6402,6028,,,,,Not recommended.,Use only in cases where geodetic datum is unknown.,EPSG,EPSG,2000-05-03 00:00:00,96.08  2000.42,0,0
-4029,Unknown datum based upon the War Office ellipsoid,1263,geographic 2D,6402,6029,,,,,Not recommended.,Use only in cases where geodetic datum is unknown.,EPSG,EPSG,2000-05-03 00:00:00,96.08  2000.42,0,0
-4030,Unknown datum based upon the WGS 84 ellipsoid,1263,geographic 2D,6402,6030,,,,,Not recommended.,Use only in cases where geodetic datum is unknown.,EPSG,EPSG,2000-05-03 00:00:00,96.08  2000.42,0,0
-4031,Unknown datum based upon the GEM 10C ellipsoid,1263,geographic 2D,6402,6031,,,,,Not recommended.,Use only in cases where geodetic datum is unknown.,EPSG,EPSG,2000-05-03 00:00:00,96.08  2000.42,0,0
-4032,Unknown datum based upon the OSU86F ellipsoid,1263,geographic 2D,6402,6032,,,,,Not recommended.,Use only in cases where geodetic datum is unknown.,EPSG,EPSG,2000-05-03 00:00:00,96.08  2000.42,0,0
-4033,Unknown datum based upon the OSU91A ellipsoid,1263,geographic 2D,6402,6033,,,,,Not recommended.,Use only in cases where geodetic datum is unknown.,EPSG,EPSG,2000-05-03 00:00:00,96.08  2000.42,0,0
-4034,Unknown datum based upon the Clarke 1880 ellipsoid,1263,geographic 2D,6402,6034,,,,,Not recommended.,Use only in cases where geodetic datum is unknown.,EPSG,EPSG,2000-05-03 00:00:00,96.08  2000.42,0,0
-4035,Unknown datum based upon the Authalic Sphere,1263,geographic 2D,6402,6035,,,,,Not recommended.,Deprecated. Use code 4047.,EPSG,EPSG,2000-05-03 00:00:00,96.08  2000.42,0,1
-4036,Unknown datum based upon the GRS 1967 ellipsoid,1263,geographic 2D,6402,6036,,,,,Not recommended.,Use only in cases where geodetic datum is unknown.,EPSG,EPSG,2000-05-03 00:00:00,2000.42,0,0
-4041,Unknown datum based upon the Average Terrestrial System 1977 ellipsoid,1263,geographic 2D,6402,6041,,,,,Not recommended.,Use only in cases where geodetic datum is unknown.,EPSG,EPSG,2000-05-03 00:00:00,2000.42,0,0
-4042,Unknown datum based upon the Everest (1830 Definition) ellipsoid,1263,geographic 2D,6402,6042,,,,,Not recommended.,Use only in cases where geodetic datum is unknown.,EPSG,EPSG,2000-05-03 00:00:00,2000.42,0,0
-4043,Unknown datum based upon the WGS 72 ellipsoid,1263,geographic 2D,6402,6043,,,,,Not recommended.,Use only in cases where geodetic datum is unknown.,EPSG,EPSG,2000-05-03 00:00:00,2000.42,0,0
-4044,Unknown datum based upon the Everest 1830 (1962 Definition) ellipsoid,1263,geographic 2D,6402,6044,,,,,Not recommended.,Use only in cases where geodetic datum is unknown.,EPSG,EPSG,2000-05-03 00:00:00,2000.42,0,0
-4045,Unknown datum based upon the Everest 1830 (1975 Definition) ellipsoid,1263,geographic 2D,6402,6045,,,,,Not recommended.,Use only in cases where geodetic datum is unknown.,EPSG,EPSG,2000-05-03 00:00:00,2000.42,0,0
-4047,Unspecified based upon the GRS 1980 Authalic Sphere,1263,geographic 2D,6402,6047,,,,,Small scale statistical mapping.,Use only in cases where geodetic datum is unknown.,EPSG,EPSG,2001-06-05 00:00:00,,0,0
-4120,Greek,1106,geographic 2D,6402,6120,,,,,Geodetic survey.,,Topography Department; National Technical University of Greece.,EPSG,1997-06-16 00:00:00,,1,0
-4121,GGRS87,1106,geographic 2D,6402,6121,,,,,Geodetic survey.,,Geodesy Department; Public Petroleum Corporation of Greece.,EPSG,1997-06-16 00:00:00,,1,0
-4122,ATS77,1283,geographic 2D,6402,6122,,,,,Geodetic survey.,In use from 1979.  To be phased out in late 1990's.,New Brunswick Geographic Information Corporation land and water information standards manual.,EPSG,1997-07-22 00:00:00,,1,0
-4123,KKJ,1095,geographic 2D,6402,6123,,,,,Geodetic survey.,,www.nls.fi/maa/papers/kkj.html,EPSG,1997-07-22 00:00:00,,1,0
-4124,RT90,1225,geographic 2D,6402,6124,,,,,Geodetic survey.,,National Land Survey of Sweden,EPSG,1997-11-13 00:00:00,,1,0
-4125,Samboja,1328,geographic 2D,6402,6125,,,,,Geodetic survey.,,,EPSG,1997-11-13 00:00:00,,1,1
-4126,LKS94 (ETRS89),1145,geographic 2D,6402,6126,,,,,Geodetic survey.,,,EPSG,1998-03-13 00:00:00,,1,0
-4127,Tete,1167,geographic 2D,6402,6127,,,,,Geodetic survey.,,Direc��o Nacional de Geografia e Cadastral (DINAGECA).,EPSG,1998-04-16 00:00:00,,1,0
-4128,Madzansua,1315,geographic 2D,6402,6128,,,,,Geodetic survey.,Superseded by values transformed to Tete geogCS (code 4127).,Direc��o Nacional de Geografia e Cadastral (DINAGECA).,EPSG,1998-04-16 00:00:00,,1,0
-4129,Observatario,1329,geographic 2D,6402,6129,,,,,Geodetic survey.,Superseded by values transformed to Tete geogCS (code 4127).,Direc��o Nacional de Geografia e Cadastral (DINAGECA).,EPSG,1998-04-16 00:00:00,,1,0
-4130,Moznet,1167,geographic 2D,6402,6130,,,,,Geodetic survey.,,Direc��o Nacional de Geografia e Cadastral (DINAGECA).,EPSG,1998-04-16 00:00:00,,1,0
-4131,Indian 1960,1302,geographic 2D,6402,6131,,,,,Geodetic survey.,,,EPSG,1998-11-11 00:00:00,,1,0
-4132,FD58,1300,geographic 2D,6402,6132,,,,,Geodetic survey.,,IOEPC records.,EPSG,1998-11-11 00:00:00,,1,0
-4133,EST92,1090,geographic 2D,6402,6133,,,,,Geodetic survey.,Superseded by EST97 (code 4180).,http://www.geo.ut.ee/~raivo/estcoord.html,EPSG,1998-12-14 00:00:00,,1,0
-4134,PDO Survey Datum 1993,1183,geographic 2D,6402,6134,,,,,Geodetic survey.,Supersedes Fahud geogCS (code 4232). Maximum differences to Fahud adjustment are 20 metres.,Petroleum Development Oman,EPSG,1999-04-22 00:00:00,,1,0
-4135,Old Hawaiian,1334,geographic 2D,6402,6135,,,,,Geodetic survey.,Note: this coordinate system includes longitudes which are POSITIVE EAST.,,EPSG,1999-05-24 00:00:00,,1,0
-4136,St. Lawrence Island,1332,geographic 2D,6402,6136,,,,,Geodetic survey.,Note: this coordinate system includes longitudes which are POSITIVE EAST.,,EPSG,1999-05-24 00:00:00,,1,0
-4137,St. Paul Island,1333,geographic 2D,6402,6137,,,,,Geodetic survey.,Note: this coordinate system includes longitudes which are POSITIVE EAST.,,EPSG,1999-05-24 00:00:00,,1,0
-4138,St. George Island,1331,geographic 2D,6402,6138,,,,,Geodetic survey.,Note: this coordinate system includes longitudes which are POSITIVE EAST.,,EPSG,1999-05-24 00:00:00,,1,0
-4139,Puerto Rico,1335,geographic 2D,6402,6139,,,,,Geodetic surveying for civilian purposes.,NAD27 (code 4267) used for military purposes.  Note: this coordinate system includes longitudes which are POSITIVE EAST.,,EPSG,1999-05-24 00:00:00,,1,0
-4140,NAD83(CSRS98),1336,geographic 2D,6402,6140,,,,,Geodetic survey.,In New Brunswick superseded ATS77 from 1999.,Service New Brunswick Land and Information Standards Manual,EPSG,2000-10-19 00:00:00,99.90,1,1
-4141,Israel,2603,geographic 2D,6402,6141,,,,,Geodetic survey.,Supersedes Palestine 1923.,Survey of Israel,EPSG,2002-06-22 00:00:00,2002.34,1,0
-4142,Locodjo 1965,1075,geographic 2D,6402,6142,,,,,Geodetic survey.,Superseded by Abidjan 1987 (EPSG code 4143).,IGN Paris,EPSG,1999-10-20 00:00:00,,1,0
-4143,Abidjan 1987,1075,geographic 2D,6402,6143,,,,,Geodetic survey.,Supersedes Locodjo 1965 (EPSG code 4142).,IGN Paris,EPSG,2001-06-05 00:00:00,2001.11,1,0
-4144,Kalianpur 1937,1308,geographic 2D,6402,6144,,,,,Geodetic survey.,Adopts 1937 metric conversion of 0.30479841 metres per Indian foot.,"G. Bomford; ""The Re-adjustment of the Indian Triangulation""; Survey of India Professional Paper 28; 1939.",EPSG,1999-10-20 00:00:00,,1,0
-4145,Kalianpur 1962,1184,geographic 2D,6402,6145,,,,,Geodetic survey.,Adopts 1962 metric conversion of 0.3047996 metres per Indian foot.,,EPSG,1999-10-20 00:00:00,,1,0
-4146,Kalianpur 1975,1121,geographic 2D,6402,6146,,,,,Geodetic survey.,Adopts 1975 metric conversion of 0.3047995 metres per Indian foot.,,EPSG,1999-10-20 00:00:00,,1,0
-4147,Hanoi 1972,1252,geographic 2D,6402,6147,,,,,Geodetic survey.,,,EPSG,1999-10-20 00:00:00,,1,0
-4148,Hartebeesthoek94,1215,geographic 2D,6402,6148,,,,,Geodetic survey.,Supersedes Cape (code 4222) from 1999.,Directorate of Surveys and Mapping; http://w3sli.wcape.gov.za/surveys/mapping/wgs84.htm,EPSG,2000-01-06 00:00:00,99.96  2000.04,1,0
-4149,CH1903,1286,geographic 2D,6402,6149,,,,,Geodetic survey.,,,EPSG,1999-10-20 00:00:00,,1,0
-4150,CH1903+,1286,geographic 2D,6402,6150,,,,,Geodetic survey.,,,EPSG,1999-10-20 00:00:00,,1,0
-4151,CHTRF95,1286,geographic 2D,6402,6151,,,,,Geodetic survey.,,,EPSG,1999-10-20 00:00:00,,1,0
-4152,NAD83(HARN),1337,geographic 2D,6402,6152,,,,,Geodetic survey.,,National Geodetic Survey,EPSG,1999-10-20 00:00:00,,1,0
-4153,Rassadiran,1338,geographic 2D,6402,6153,,,,,Geodetic survey.,,Total-Fina,EPSG,1999-10-20 00:00:00,,1,0
-4154,ED50(ED77),1123,geographic 2D,6402,6154,,,,,Geodetic survey.,,National Cartographic Centre of Iran,EPSG,1999-10-20 00:00:00,,1,0
-4155,Dabola 1981,1112,geographic 2D,6402,6155,,,,,Geodetic survey.,Supersedes Conakry 1905 (EPSG code 4315).,IGN Paris,EPSG,1999-12-09 00:00:00,,1,0
-4156,S-JTSK,1306,geographic 2D,6402,6156,,,,,Geodetic survey.,"S-JTSK is the Uniform Trigonometric Cadastral Network.  It is a modification of the Austrian MGI geogCRS, code 4312.",Research Institute for Geodesy Topography and Cartography (VUGTK); Prague.,EPSG,2001-08-28 00:00:00,2001.26,1,0
-4157,Mount Dillon,1322,geographic 2D,6402,6157,,,,,Geodetic survey.,,University of the West Indies Geodetic Services.,EPSG,2000-03-07 00:00:00,,1,0
-4158,Naparima 1955,1339,geographic 2D,6402,6158,,,,,Geodetic survey.,Naparima 1972 is an extension of the Naparima 1955 network of Trinidad to include Tobago.,Ordnance Survey International.,EPSG,2000-03-07 00:00:00,,1,0
-4159,ELD79,1143,geographic 2D,6402,6159,,,,,Geodetic survey.,,Various oil company records.,EPSG,2000-03-07 00:00:00,,1,0
-4160,Chos Malal 1914,1292,geographic 2D,6402,6160,,,,,Geodetic survey.,Superseded by Campo Inchauspe (geogCS code 4221).,Various oil company records.,EPSG,2000-03-07 00:00:00,,1,0
-4161,Pampa del Castillo,1265,geographic 2D,6402,6161,,,,,Geodetic surveying within the oil industry.,Superseded by Campo Inchauspe (geogCS code 4221).,Various oil company records.,EPSG,2000-03-07 00:00:00,,1,0
-4162,Korean 1985,1135,geographic 2D,6402,6162,,,,,Geodetic survey.,Supersedes use of Tokyo datum.,Clifford J. Mugnier; in Photogrammetric Engineering & Remote Sensing November 1999. http://www.asprs.org/resources.html,EPSG,2000-03-07 00:00:00,2001.28,1,0
-4163,Yemen NGN96,1257,geographic 2D,6402,6163,,,,,Geodetic survey.,,IGN Paris,EPSG,2000-03-07 00:00:00,,1,0
-4164,South Yemen,1340,geographic 2D,6402,6164,,,,,Geodetic survey.,,IGN Paris,EPSG,2000-03-07 00:00:00,,1,0
-4165,Bissau,1113,geographic 2D,6402,6165,,,,,Geodetic survey.,,NIMA,EPSG,2000-03-07 00:00:00,,1,0
-4166,Korean 1995,1135,geographic 2D,6402,6166,,,,,Geodetic survey.,,NIMA TR8350.2  ftp://164.214.2.65/pub/gg/tr8350.2/changes.pdf,EPSG,2000-05-08 00:00:00,,1,0
-4167,NZGD2000,1175,geographic 2D,6402,6167,,,,,Geodetic survey.,Supersedes NZGD49 (code 4272) from March 2000.,Land Information New Zealand.,EPSG,2000-10-19 00:00:00,,1,0
-4168,Accra,1104,geographic 2D,6402,6168,,,,,Geodetic survey.,"Ellipsoid semi-major axis (a)=20926201 exactly Gold Coast feet. 
-Superseded by Leigon (code 4250) in 1978.",Ordnance Survey International,EPSG,2000-10-19 00:00:00,,1,0
-4169,American Samoa 1962,1027,geographic 2D,6402,6169,,,,,Geodetic survey.,,NIMA TR8350.2 revision of January 2000 and ftp://ftp.ngs.noaa.gov/pub/pcsoft/nadcon/samoa_readme.txt,EPSG,2000-10-19 00:00:00,,1,0
-4170,SIRGAS,1341,geographic 2D,6402,6170,,,,,Geodetic survey.,,NIMA TR8350.2 revision of January 2000.,EPSG,2000-10-19 00:00:00,2001.33,1,0
-4171,RGF93,1096,geographic 2D,6402,6171,,,,,Geodetic survey.,,TotalFinaElf,EPSG,2000-10-19 00:00:00,,1,0
-4172,POSGAR,1033,geographic 2D,6402,6172,,,,,Geodetic survey.,"A geodetic network of 127 high accuracy surved points that define the National Geodetic System (Sistema Geod�sico Nacional), adopted by IGM in May 1997",http://www.igm.gov.ar/posgar.html,EPSG,2000-10-19 00:00:00,2001.051,1,1
-4173,IRENET95,1305,geographic 2D,6402,6173,,,,,Geodetic survey.,,Ordnance Survey of Ireland,EPSG,2000-10-19 00:00:00,,1,0
-4174,Sierra Leone 1924,1342,geographic 2D,6402,6174,,,,,Geodetic survey.,Ellipsoid semi-major axis (a)=20926201 exactly Gold Coast feet; 1 Gold Coast foot = 0.3047997101815 m.,Ordnance Survey International,EPSG,2001-06-05 00:00:00,,1,0
-4175,Sierra Leone 1968,1209,geographic 2D,6402,6175,,,,,Geodetic survey.,Supersedes Sierra Leone 1960.  The 1968 readjustment coordinates are within 3m of the 1960 provisional adjustment.,Ordnance Survey International.,EPSG,2001-06-05 00:00:00,,1,0
-4176,Australian Antarctic,1278,geographic 2D,6402,6176,,,,,Geodetic survey.,,Standards Australia,ISO 19127,2001-06-05 00:00:00,,1,0
-4178,Pulkovo 1942(83),1343,geographic 2D,6402,6178,,,,,Geodetic survey.,"In Brandenburg superseded by ETRS89. 
-In Sachsen and Thuringen superseded by DHDN.",Bundesamt f�r Kartographie und Geod�sie via EuroGeographics; http://crs.ifag.de/,EPSG,2001-06-05 00:00:00,,1,0
-4179,Pulkovo 1942(58),1192,geographic 2D,6402,6179,,,,,Geodetic survey.,,Glowny Urzad Geodezji i Kartografii via EuroGeographics; http://crs.ifag.de/,EPSG,2001-06-05 00:00:00,,1,0
-4180,EST97,1090,geographic 2D,6402,6180,,,,,Geodetic survey.,Supersedes EST92 (code 4133).,Estonian National Land Board via EuroGeographics; http://crs.ifag.de/,EPSG,2001-06-05 00:00:00,,1,0
-4181,Luxembourg 1930,1146,geographic 2D,6402,6181,,,,,Geodetic survey,,Administration du Cadastre et de la Topographie via EuroGeographics; http://crs.ifag.de/,EPSG,2001-06-05 00:00:00,,1,0
-4182,Azores Occidental 1939,1344,geographic 2D,6402,6182,,,,,Geodetic survey.,,Instituto Geografico e Cadastral Lisbon via EuroGeographics; http://crs.ifag.de/,EPSG,2001-06-05 00:00:00,,1,0
-4183,Azores Central 1948,1301,geographic 2D,6402,6183,,,,,Geodetic survey.,,Instituto Geografico e Cadastral Lisbon via EuroGeographics; http://crs.ifag.de/,EPSG,2001-06-05 00:00:00,,1,0
-4184,Azores Oriental 1940,1345,geographic 2D,6402,6184,,,,,Geodetic survey.,,Instituto Geografico e Cadastral Lisbon via EuroGeographics; http://crs.ifag.de/,EPSG,2001-06-05 00:00:00,,1,0
-4185,Madeira 1936,1314,geographic 2D,6402,6185,,,,,Geodetic survey.,,Instituto Geografico e Cadastral Lisbon via EuroGeographics; http://crs.ifag.de/,EPSG,2001-06-05 00:00:00,,1,1
-4188,OSNI 1952,2530,geographic 2D,6402,6188,,,,,Geodesy and topographic mapping.,Superseded by 1975 Mapping Adjustment.  See code 4300.,Ordnance Survey of Northern Ireland.,EPSG,2001-11-06 00:00:00,,0,0
-4189,REGVEN,1251,geographic 2D,6402,6189,,,,,Geodetic survey.,Densification in Venezuela of SIRGAS.,Servicio Autonomo de Geografia y Cartografia Nacional.,EPSG,2001-11-06 00:00:00,,1,0
-4190,POSGAR 98,1033,geographic 2D,6402,6190,,,,,Geodetic survey.,A geodetic network of 127 high accuracy surved points that define the National Geodetic System (Sistema Geod�sico Nacional). Densification of SIRGAS 1995.,http://www.igm.gov.ar/posgar.html,EPSG,2001-11-06 00:00:00,,1,0
-4191,Albanian 1987,1025,geographic 2D,6402,6191,,,,,Geodetic survey.,,EuroGeographics; http://crs.ifag.de/,EPSG,2001-11-06 00:00:00,,1,0
-4192,Douala 1948,1060,geographic 2D,6402,6192,,,,,Geodetic survey.,Superseded by Manoca 1962 (code 4193).,TotalFinaElf,EPSG,2002-01-18 00:00:00,,1,0
-4193,Manoca 1962,1060,geographic 2D,6402,6193,,,,,Geodetic survey.,Supersedes Doula 1948 (code 4192). The intent of the Bukuva 1953 conference was to adopt the Clarke 1880 (RGN) ellipsoid (code 7012) but in practice this datum has used the IGN version.,TotalFinaElf,EPSG,2002-01-18 00:00:00,,1,0
-4194,Qornoq 1927,1107,geographic 2D,6402,6194,,,,,Geodetic survey.,,"Kort & Matrikelstyrelsen, Copenhagen.",EPSG,2002-01-18 00:00:00,,1,0
-4195,Scoresbysund 1952,2570,geographic 2D,6402,6195,,,,,Geodetic survey.,,"Kort & Matrikelstyrelsen, Copenhagen.",EPSG,2002-01-18 00:00:00,,1,0
-4196,Ammassalik 1958,2571,geographic 2D,6402,6196,,,,,Geodetic survey.,,"Kort & Matrikelstyrelsen, Copenhagen.",EPSG,2002-01-18 00:00:00,,1,0
-4197,Garoua,2590,geographic 2D,6402,6197,,,,,Geodetic survey.,The intent of the Bukuva 1953 conference was to adopt the Clarke 1880 (RGN) ellipsoid (code 7012) but in practice this datum has used the IGN version.,TotalFinaElf,EPSG,2002-02-12 00:00:00,,1,0
-4198,Kousseri,2591,geographic 2D,6402,6198,,,,,Geodetic survey.,,TotalFinaElf,EPSG,2002-02-12 00:00:00,,1,0
-4199,Egypt 1930,1086,geographic 2D,6402,6199,,,,,Scientific purposes only.,"Note that Egypt 1930 uses the International 1924 ellipsoid, unlike the Egypt 1907 CRS (code 4229) which uses the Helmert ellipsoid. Oil industry references to the Egypt 1930 name and the Helmert ellipsoid probably mean Egypt 1907.",,EPSG,2002-02-12 00:00:00,,1,0
-4200,Pulkovo 1995,1198,geographic 2D,6402,6200,,,,,Geodetic survey.,,"""Main Terms of Reference for the State Geodetic Network""; Federal Geodetic Service of Russia; 1994",EPSG,1996-09-12 00:00:00,,1,0
-4201,Adindan,1271,geographic 2D,6402,6201,,,,,Geodetic survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-4202,AGD66,1279,geographic 2D,6402,6202,,,,,Geodetic survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-4203,AGD84,1036,geographic 2D,6402,6203,,,,,Geodetic survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-4204,Ain el Abd,1272,geographic 2D,6402,6204,,,,,Geodetic survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-4205,Afgooye,1214,geographic 2D,6402,6205,,,,,Geodetic survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-4206,Agadez,1177,geographic 2D,6402,6206,,,,,Geodetic survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-4207,Lisbon,1294,geographic 2D,6402,6207,,,,,Geodetic survey.,Supersedes Lisbon 1890 system which used Bessel 1841 ellipsoid. Superseded by Datum 73 (code 4274).,Instituto Geografico e Cadastral; Lisbon,EPSG,1995-06-02 00:00:00,2001.551,1,0
-4208,Aratu,1274,geographic 2D,6402,6208,,,,,Geodetic survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-4209,Arc 1950,1276,geographic 2D,6402,6209,,,,,Geodetic survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-4210,Arc 1960,1277,geographic 2D,6402,6210,,,,,Geodetic survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-4211,Batavia,1285,geographic 2D,6402,6211,,,,,Geodetic survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-4212,Barbados 1938,1042,geographic 2D,6402,6212,,,,,Geodetic survey.,,,EPSG,1999-04-22 00:00:00,99.171,1,0
-4213,Beduaram,2771,geographic 2D,6402,6213,,,,,Geodetic survey.,,,EPSG,2002-06-28 00:00:00,2002.43,1,0
-4214,Beijing 1954,1067,geographic 2D,6402,6214,,,,,Geodetic survey.,Superseded by Xian 1980 (code 4610).,,EPSG,1995-06-02 00:00:00,,1,0
-4215,Belge 1950,1347,geographic 2D,6402,6215,,,,,Geodetic survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-4216,Bermuda 1957,1047,geographic 2D,6402,6216,,,,,Geodetic survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-4218,Bogota 1975,1070,geographic 2D,6402,6218,,,,,Geodetic survey.,"Supersedes earlier 3 adjustments of 1951, 1944 and 1941.","IGAC special publication no. 1, ""Geodesia"" 4th edition, 1975.",EPSG,2000-10-19 00:00:00,2000.20,1,0
-4219,Bukit Rimpah,1287,geographic 2D,6402,6219,,,,,Geodetic survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-4220,Camacupa,1288,geographic 2D,6402,6220,,,,,Geodetic survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-4221,Campo Inchauspe,1033,geographic 2D,6402,6221,,,,,Geodetic survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-4222,Cape,1290,geographic 2D,6402,6222,,,,,Geodetic survey.,Superseded by Hartbeesthoek94 from 1999.,"Directorate of Surveys and Mapping, Mowbray, South Africa.",EPSG,1995-06-02 00:00:00,2000.04,1,0
-4223,Carthage,1236,geographic 2D,6402,6223,,,,,Geodetic survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-4224,Chua,1053,geographic 2D,6402,6224,,,,,Geodetic survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-4225,Corrego Alegre,1293,geographic 2D,6402,6225,,,,,Geodetic survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-4226,Cote d'Ivoire,1075,geographic 2D,6402,6226,,,,,Geodetic survey.,,,EPSG,1995-06-02 00:00:00,,1,1
-4227,Deir ez Zor,1623,geographic 2D,6402,6227,,,,,Geodetic survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-4228,Douala,1060,geographic 2D,6402,6228,,,,,Geodetic survey.,,,EPSG,1995-06-02 00:00:00,,1,1
-4229,Egypt 1907,1086,geographic 2D,6402,6229,,,,,Geodetic survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-4230,ED50,1296,geographic 2D,6402,6230,,,,,Geodetic survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-4231,ED87,1297,geographic 2D,6402,6231,,,,,Geodetic survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-4232,Fahud,1183,geographic 2D,6402,6232,,,,,Geodetic survey.,Since 1993 superseded by PSD93 geogCS (code 4134). Maximum differences to Fahud adjustment are 20 metres.,,EPSG,1995-06-02 00:00:00,,1,0
-4233,Gandajika 1970,1152,geographic 2D,6402,6233,,,,,Geodetic survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-4234,Garoua,1060,geographic 2D,6402,6234,,,,,Geodetic survey.,,,EPSG,1995-06-02 00:00:00,,1,1
-4235,Guyane Francaise,1097,geographic 2D,6402,6235,,,,,Geodetic survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-4236,Hu Tzu Shan,1228,geographic 2D,6402,6236,,,,,Geodetic survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-4237,HD72,1119,geographic 2D,6402,6237,,,,,Geodetic survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-4238,ID74,1122,geographic 2D,6402,6238,,,,,Geodetic survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-4239,Indian 1954,1304,geographic 2D,6402,6239,,,,,Geodetic survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-4240,Indian 1975,1231,geographic 2D,6402,6240,,,,,Geodetic survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-4241,Jamaica 1875,1128,geographic 2D,6402,6241,,,,,Geodetic survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-4242,JAD69,1128,geographic 2D,6402,6242,,,,,Geodetic survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-4243,Kalianpur 1880,1307,geographic 2D,6402,6243,,,,,Geodetic survey.,,"G. Bomford; ""The Re-adjustment of the Indian Triangulation""; Survey of India Professional Paper 28; 1939.",EPSG,1999-10-20 00:00:00,97.23,1,0
-4244,Kandawala,1218,geographic 2D,6402,6244,,,,,Geodetic survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-4245,Kertau,1309,geographic 2D,6402,6245,,,,,Geodetic survey.,Adopts metric conversion of 39.370113 inches per metre.,,EPSG,1995-06-02 00:00:00,,1,0
-4246,KOC,1136,geographic 2D,6402,6246,,,,,Geodetic survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-4247,La Canoa,1251,geographic 2D,6402,6247,,,,,Geodetic survey.,PSAD56 uses same origin.,,EPSG,1995-06-02 00:00:00,,1,0
-4248,PSAD56,1348,geographic 2D,6402,6248,,,,,Geodetic survey.,Origin is same as La Canoa.  In Venezuela known as La Canoa.,,EPSG,1995-06-02 00:00:00,,1,0
-4249,Lake,1312,geographic 2D,6402,6249,,,,,Geodetic survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-4250,Leigon,1104,geographic 2D,6402,6250,,,,,Geodetic survey.,Superseded Accra (code 4168) from 1978.,Ordnance Survey International,EPSG,1995-06-02 00:00:00,,1,0
-4251,Liberia 1964,1142,geographic 2D,6402,6251,,,,,Geodetic survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-4252,Lome,1232,geographic 2D,6402,6252,,,,,Geodetic survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-4253,Luzon 1911,1190,geographic 2D,6402,6253,,,,,Geodetic survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-4254,Hito XVIII 1963,1303,geographic 2D,6402,6254,,,,,Geodetic survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-4255,Herat North,1024,geographic 2D,6402,6255,,,,,Geodetic survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-4256,Mahe 1971,1208,geographic 2D,6402,6256,,,,,Geodetic survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-4257,Makassar,1316,geographic 2D,6402,6257,,,,,Geodetic survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-4258,ETRS89,1298,geographic 2D,6402,6258,,,,,Geodetic survey.,The distinction in usage between ETRF89 and ETRS89 is confused: although in principle conceptually different in practice both are used as synonyms.,Norwegian Geodetic Institute geodetic publication 1990:1,EPSG,2000-10-19 00:00:00,97.11  99.11 2000.72,1,0
-4259,Malongo 1987,1317,geographic 2D,6402,6259,,,,,Geodetic survey.,Offshore extension of Mhast GeogCS (4264) using Transit translocation from Station Y at Malongo base camp.,Chevron Petroleum Technology,EPSG,1995-06-02 00:00:00,,1,0
-4260,Manoca,1060,geographic 2D,6402,6260,,,,,Geodetic survey.,,,EPSG,1995-06-02 00:00:00,2002.01,1,1
-4261,Merchich,1166,geographic 2D,6402,6261,,,,,Geodetic survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-4262,Massawa,1089,geographic 2D,6402,6262,,,,,Geodetic survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-4263,Minna,1178,geographic 2D,6402,6263,,,,,Geodetic survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-4264,Mhast,1318,geographic 2D,6402,6264,,,,,Geodetic survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-4265,Monte Mario,1127,geographic 2D,6402,6265,,,,,Geodetic survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-4266,M'poraloko,1100,geographic 2D,6402,6266,,,,,Geodetic survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-4267,NAD27,1349,geographic 2D,6402,6267,,,,,Geodetic survey.,Note: this coordinate system includes longitudes which are POSITIVE EAST.  Superseded by NAD27(76) (code 4608) in Ontario and CGQ77 (code 4609) in Quebec.,,EPSG,1995-06-02 00:00:00,99.04,1,0
-4268,NAD27 Michigan,1391,geographic 2D,6402,6268,,,,,Geodetic survey.,Ellipsoid taken to be 800ft above geoid. Note: this coordinate system includes longitudes which are POSITIVE EAST.,,EPSG,1996-12-12 00:00:00,96.28,1,0
-4269,NAD83,1350,geographic 2D,6402,6269,,,,,Geodetic survey.,Note: this coordinate system includes longitudes which are POSITIVE EAST.,,EPSG,1995-06-02 00:00:00,,1,0
-4270,Nahrwan 1967,1351,geographic 2D,6402,6270,,,,,Geodetic survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-4271,Naparima 1972,1322,geographic 2D,6402,6271,,,,,Geodetic survey.,Naparima 1972 is an extension of the Naparima 1955 network of Trinidad to include Tobago.,Ordnance Survey International.,EPSG,1995-06-02 00:00:00,,1,0
-4272,NZGD49,1175,geographic 2D,6402,6272,,,,,Geodetic survey.,Superseded by NZGD49 in March 2000.,New Zealand Department of Lands and Surveys Technical Report No. 1; 1978.,EPSG,2000-10-19 00:00:00,2000.702,1,0
-4273,NGO 1948,1352,geographic 2D,6402,6273,,,,,Geodetic survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-4274,Datum 73,1294,geographic 2D,6402,6274,,,,,Geodetic survey.,,Instituto Geografico e Cadastral; Lisbon,EPSG,1995-06-02 00:00:00,,1,0
-4275,NTF,1353,geographic 2D,6402,6275,,,,,Geodetic survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-4276,NSWC 9Z-2,1262,geographic 2D,6402,6276,,,,,Geodetic survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-4277,OSGB 1936,1264,geographic 2D,6402,6277,,,,,Geodetic survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-4278,OSGB70,1264,geographic 2D,6402,6278,,,,,Geodetic survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-4279,OS(SN)80,1354,geographic 2D,6402,6279,,,,,Geodetic survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-4280,Padang,1355,geographic 2D,6402,6280,,,,,Geodetic survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-4281,Palestine 1923,1356,geographic 2D,6402,6281,,,,,Geodetic survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-4282,Pointe Noire,1072,geographic 2D,6402,6282,,,,,Geodetic survey.,,,EPSG,1995-06-02 00:00:00,2002.05,1,0
-4283,GDA94,1036,geographic 2D,6402,6283,,,,,Geodetic survey.,,Australian Surveying and Land Information Group Internet WWW page.,EPSG,1995-06-02 00:00:00,,1,0
-4284,Pulkovo 1942,1357,geographic 2D,6402,6284,,,,,Geodetic survey.,For Germany see Pulkovo 1942(83); for Poland see Pulkovo 1942(58).,,EPSG,1995-06-02 00:00:00,,1,0
-4285,Qatar 1974,1346,geographic 2D,6402,6285,,,,,Geodetic survey.,,Qatar Centre for Geographic Information.,EPSG,2000-03-07 00:00:00,2000.29  (2001.27),1,0
-4286,Qatar 1948,1346,geographic 2D,6402,6286,,,,,Geodetic survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-4287,Qornoq,1107,geographic 2D,6402,6287,,,,,Geodetic survey.,,,EPSG,1995-06-02 00:00:00,,1,1
-4288,Loma Quintana,1313,geographic 2D,6402,6288,,,,,Geodetic survey.,Superseded by La Canoa (code 4247).,,EPSG,1995-06-02 00:00:00,,1,0
-4289,Amersfoort,1275,geographic 2D,6402,6289,,,,,Geodetic survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-4291,SAD69,1358,geographic 2D,6402,6291,,,,,Geodetic survey.,Uses GRS67 ellipsoid with 1/f to exactly 2 decimal places.  Precision of ellipsoid entry increased from 2 to 5 dp with change id 97.251.  Error introduced if not using the truncated precision is 0 to 31mm.,,EPSG,1995-06-02 00:00:00,97.252,1,0
-4292,Sapper Hill 1943,1092,geographic 2D,6402,6292,,,,,Geodetic survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-4293,Schwarzeck,1169,geographic 2D,6402,6293,,,,,Geodetic survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-4294,Segora,1359,geographic 2D,6402,6294,,,,,Geodetic survey.,,,EPSG,1995-06-02 00:00:00,,1,1
-4295,Serindung,1360,geographic 2D,6402,6295,,,,,Geodetic survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-4296,Sudan,1361,geographic 2D,6402,6296,,,,,Geodetic survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-4297,Tananarive,1149,geographic 2D,6402,6297,,,,,Geodetic survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-4298,Timbalai 1948,1362,geographic 2D,6402,6298,,,,,Geodetic survey.,Adopts metric conversion of 39.370147 inches per metre.,,EPSG,1995-06-02 00:00:00,,1,0
-4299,TM65,1125,geographic 2D,6402,6299,,,,,Basis for topographic mapping in Republic of Ireland between 1965 and 1975; for scientific purposes only in Northern Ireland.,Superseded by 1975 Mapping Adjustment. See code 4300.,,EPSG,1995-06-02 00:00:00,,1,0
-4300,TM75,1305,geographic 2D,6402,6300,,,,,Basis for topographic mapping.,,,EPSG,1995-06-02 00:00:00,,1,0
-4301,Tokyo,1364,geographic 2D,6402,6301,,,,,Geodetic survey.,Superseded by JGD2000 (code 4612) from April 2002.,Geographic Survey Institute; Japan; Bulletin 40 (March 1994).  Also http://vldb.gsi.go.jp/sokuchi/datum/tokyodatum.html,EPSG,2002-06-22 00:00:00,2002.08,1,0
-4302,Trinidad 1903,1322,geographic 2D,6402,6302,,,,,Geodetic survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-4303,TC(1948),1363,geographic 2D,6402,6303,,,,,Geodetic survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-4304,Voirol 1875,1365,geographic 2D,6402,6304,,,,,Geodetic survey.,,IGN Paris,EPSG,1995-06-02 00:00:00,,1,0
-4306,Bern 1938,1286,geographic 2D,6402,6306,,,,,Used for the geographic coordinates overprinted on topographic maps constructed on the CH1903 / LV03 projected CS (code 21781).,,,EPSG,1995-06-02 00:00:00,,1,0
-4307,Nord Sahara 1959,1366,geographic 2D,6402,6307,,,,,Geodetic survey.,Sometimes incorrectly referred to as Voirol Unifie 1960. Voirol Unifie 1960 is NOT a GeogCRS:  it is two projected coordinate reference systems based on  Nord Sahara 1959.  See codes 30791 and 30792.,"""Le System Geodesique Nord-Sahara""; IGN Paris",EPSG,2002-08-29 00:00:00,2000.47  2002.56,1,0
-4308,RT38,1225,geographic 2D,6402,6308,,,,,Geodetic survey.,,,EPSG,1995-06-02 00:00:00,97.09,1,0
-4309,Yacare,1247,geographic 2D,6402,6309,,,,,Geodetic survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-4310,Yoff,1207,geographic 2D,6402,6310,,,,,Geodetic survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-4311,Zanderij,1222,geographic 2D,6402,6311,,,,,Geodetic survey.,Introduced in 1975.,Shell International,EPSG,1995-06-02 00:00:00,,1,0
-4312,MGI,1321,geographic 2D,6402,6312,,,,,Geodetic survey.,,Bundesamt fur Eich- und Vermessungswesen; Wien,EPSG,1995-06-02 00:00:00,,1,0
-4313,Belge 1972,1347,geographic 2D,6402,6313,,,,,Geodetic survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-4314,DHDN,1295,geographic 2D,6402,6314,,,,,Geodetic survey.,,EPSG,EPSG,1995-06-02 00:00:00,,1,0
-4315,Conakry 1905,1112,geographic 2D,6402,6315,,,,,Geodetic survey.,Superseded by Dabola 1981 (EPSG code 4155).,IGN Paris,EPSG,1995-06-02 00:00:00,,1,0
-4316,Dealul Piscului 1933,1197,geographic 2D,6402,6316,,,,,Geodetic survey.,Superseded by 1970 system (geogCS code 4317).,,EPSG,1996-04-12 00:00:00,,1,0
-4317,Dealul Piscului 1970,1197,geographic 2D,6402,6317,,,,,Geodetic survey.,Supersedes 1933 system (geogCS code 4316).,,EPSG,1996-04-12 00:00:00,,1,0
-4318,NGN,1136,geographic 2D,6402,6318,,,,,Geodetic survey.,,,EPSG,1996-04-12 00:00:00,,1,0
-4319,KUDAMS,1310,geographic 2D,6402,6319,,,,,Geodetic survey.,,,EPSG,1996-04-12 00:00:00,,1,0
-4322,WGS 72,1262,geographic 2D,6402,6322,,,,,Geodetic survey.,Superseded by WGS 84.,,EPSG,1995-06-02 00:00:00,,1,0
-4324,WGS 72BE,1262,geographic 2D,6402,6324,,,,,Geodetic survey.,Broadcast ephemeris. Superseded by WGS 84.,,EPSG,1995-06-02 00:00:00,,1,0
-4326,WGS 84,1262,geographic 2D,6402,6326,,,,,Used by the GPS satellite navigation system and for NATO military geodetic surveying.,,,EPSG,2002-06-22 00:00:00,2002.151,1,0
-4327,WGS 84 (geographic 3D),1262,geographic 3D,6401,6326,,,,,Used by the GPS satellite navigation system.,,,EPSG,2002-06-22 00:00:00,2002.151,1,0
-4328,WGS 84 (geocentric),1262,geocentric,6500,6326,,,,,Used by the GPS satellite navigation system.,,,EPSG,2002-06-22 00:00:00,2002.151,1,0
-4600,Anguilla 1957,1030,geographic 2D,6402,6600,,,,,Geodetic survey.,,,EPSG,1999-04-22 00:00:00,,1,0
-4601,Antigua 1943,1273,geographic 2D,6402,6601,,,,,Geodetic survey.,,,EPSG,1999-04-22 00:00:00,,1,0
-4602,Dominica 1945,1082,geographic 2D,6402,6602,,,,,Geodetic survey.,,,EPSG,1999-04-22 00:00:00,,1,0
-4603,Grenada 1953,1551,geographic 2D,6402,6603,,,,,Geodetic survey.,,,EPSG,1999-04-22 00:00:00,,1,0
-4604,Montserrat 1958,1165,geographic 2D,6402,6604,,,,,Geodetic survey.,,,EPSG,1999-04-22 00:00:00,,1,0
-4605,St. Kitts 1955,1200,geographic 2D,6402,6605,,,,,Geodetic survey.,,,EPSG,1999-04-22 00:00:00,,1,0
-4606,St. Lucia 1955,1201,geographic 2D,6402,6606,,,,,Geodetic survey.,,,EPSG,1999-04-22 00:00:00,,1,0
-4607,St. Vincent 1945,1202,geographic 2D,6402,6607,,,,,Geodetic survey.,,,EPSG,1999-04-22 00:00:00,,1,0
-4608,NAD27(76),1367,geographic 2D,6402,6608,,,,,Geodetic survey.,Note: this coordinate system includes longitudes which are POSITIVE EAST.,,EPSG,1999-05-12 00:00:00,,1,0
-4609,NAD27(CGQ77),1368,geographic 2D,6402,6609,,,,,Geodetic survey.,Note: this coordinate system includes longitudes which are POSITIVE EAST.,,EPSG,1999-05-12 00:00:00,,1,0
-4610,Xian 1980,1067,geographic 2D,6402,6610,,,,,Geodesy.,Supersedes Beijing 1954 (code 4214).,,EPSG,2002-02-12 00:00:00,,1,0
-4611,Hong Kong 1980,1118,geographic 2D,6402,6611,,,,,Geodetic and engineering surveying.,Supersedes Hong Kong 1963.,"Survey and Mapping Office, Lands Department. Http://www.info.gov.hk/landsd/mapping/tindex.htm",EPSG,2002-06-22 00:00:00,,1,0
-4612,JGD2000,1129,geographic 2D,6402,6612,,,,,Geodesy.,Supersedes Tokyo (code 4301) from April 2002.,Japanese Survey Federation.,EPSG,2002-04-25 00:00:00,,1,0
-4613,Segara,1360,geographic 2D,6402,6613,,,,,Geodetic survey.,,EPSG,EPSG,2002-06-22 00:00:00,,1,0
-4614,QND95,1346,geographic 2D,6402,6614,,,,,Geodetic survey.,,Qatar Centre for Geographic Information.,EPSG,2002-06-28 00:00:00,,1,0
-4615,Porto Santo,1314,geographic 2D,6402,6615,,,,,Geodetic survey.,,Instituto Geografico e Cadastral Lisbon; http://www.ipcc.pt,EPSG,2002-07-13 00:00:00,,1,0
-4616,Selvagem Grande,2779,geographic 2D,6402,6616,,,,,Geodetic survey.,,Instituto Geografico e Cadastral Lisbon; http://www.ipcc.pt,EPSG,2002-07-13 00:00:00,,1,0
-4617,NAD83(CSRS),1336,geographic 2D,6402,6140,,,,,Geodetic survey.,In New Brunswick superseded ATS77 from 1999.,Service New Brunswick Land and Information Standards Manual,EPSG,2002-07-13 00:00:00,,1,0
-4801,Bern 1898 (Bern),1286,geographic 2D,6402,6801,,,,,Geodetic survey.,,,EPSG,2000-03-07 00:00:00,2000.07,1,0
-4802,Bogota 1975 (Bogota),1070,geographic 2D,6402,6802,,,,,Geodetic survey.,"Supersedes earlier 3 adjustments of 1951, 1944 and 1941.","IGAC special publication no. 1, ""Geodesia"" 4th edition, 1975.",EPSG,2000-10-19 00:00:00,2000.07 2000.20,1,0
-4803,Lisbon (Lisbon),1294,geographic 2D,6402,6803,,,,,Geodetic survey.,Supersedes Lisbon 1890 system which used Bessel 1841 ellipsoid.  Superseded by Datum 73 (code 4274).,Instituto Geografico e Cadastral; Lisbon,EPSG,2000-03-07 00:00:00,97.12  2000.07  2001.551,1,0
-4804,Makassar (Jakarta),1316,geographic 2D,6402,6804,,,,,Geodetic survey.,,,EPSG,2000-03-07 00:00:00,2000.07,1,0
-4805,MGI (Ferro),1321,geographic 2D,6402,6805,,,,,Geodetic survey.,,Bundesamt fur Eich- und Vermessungswesen; Wien,EPSG,2000-03-07 00:00:00,2000.07,1,0
-4806,Monte Mario (Rome),1127,geographic 2D,6402,6806,,,,,Geodetic survey.,,,EPSG,2000-03-07 00:00:00,2000.07,1,0
-4807,NTF (Paris),1353,geographic 2D,6403,6807,,,,,Geodetic survey.,,,EPSG,2000-03-07 00:00:00,2000.07,1,0
-4808,Padang (Jakarta),1355,geographic 2D,6402,6808,,,,,Geodetic survey.,,,EPSG,2000-03-07 00:00:00,2000.07,1,0
-4809,Belge 1950 (Brussels),1347,geographic 2D,6402,6809,,,,,Geodetic survey.,,,EPSG,2000-03-07 00:00:00,2000.07,1,0
-4810,Tananarive (Paris),1149,geographic 2D,6403,6810,,,,,Geodetic survey.,,,EPSG,2000-03-07 00:00:00,2000.07,1,0
-4811,Voirol 1875 (Paris),1365,geographic 2D,6403,6811,,,,,Geodetic survey.,Superseded by Nord Sahara 1959 (Paris) (code 4812).,IGN Paris,EPSG,2000-03-07 00:00:00,2000.07,1,0
-4813,Batavia (Jakarta),1285,geographic 2D,6402,6813,,,,,Geodetic survey.,,,EPSG,2000-03-07 00:00:00,2000.07,1,0
-4814,RT38 (Stockholm),1225,geographic 2D,6402,6814,,,,,Geodetic survey.,,,EPSG,2000-03-07 00:00:00,2000.07,1,0
-4815,Greek (Athens),1106,geographic 2D,6402,6815,,,,,Geodetic survey.,,Topography Department; National Technical University of Greece.,EPSG,2000-03-07 00:00:00,2000.07,1,0
-4816,Carthage (Paris),1236,geographic 2D,6403,6816,,,,,Geodetic survey.,Superseded by Greenwich-based Carthage geogCS.,,EPSG,2000-03-07 00:00:00,2000.07,1,0
-4817,NGO 1948 (Oslo),1352,geographic 2D,6402,6817,,,,,Geodetic survey.,,,EPSG,2000-03-07 00:00:00,2000.07,1,0
-4818,S-JTSK (Ferro),1306,geographic 2D,6402,6818,,,,,Geodetic survey.,"S-JTSK(Ferro) is the Uniform Trigonometric Cadastral Network.  It is a modification of  the Austrian MGI (Ferro) geogCS, code 4805.",Research Institute for Geodesy Topography and Cartography (VUGTK); Prague.,EPSG,2000-03-07 00:00:00,,1,0
-4819,Nord Sahara 1959 (Paris),1366,geographic 2D,6403,6819,,,,,Geodetic survey.,,"""Le System Geodesique Nord-Sahara""; IGN Paris",EPSG,2000-10-19 00:00:00,2000.74,1,0
-4820,Segara (Jakarta),1285,geographic 2D,6402,6820,,,,,Geodetic survey.,,,EPSG,2002-06-22 00:00:00,,1,0
-4901,ATF (Paris),1326,geographic 2D,6403,6901,,,,,Geodetic survey.,,,EPSG,2000-03-07 00:00:00,2000.07,1,0
-4902,NDG (Paris),1369,geographic 2D,6403,6902,,,,,Geodetic survey.,,,EPSG,2000-03-07 00:00:00,2000.07,1,0
-4903,Madrid 1870 (Madrid),1217,geographic 2D,6402,6903,,,,,Geodetic survey.,,Institut de Geomatica; Barcelona.,EPSG,2000-03-07 00:00:00,2000.07,1,0
-4904,Lisbon 1890 (Lisbon),1294,geographic 2D,6402,6904,,,,,Geodetic survey.,Superseded by Lisbon 1937 system which uses International 1924 ellipsoid.,Instituto Geografico e Cadastral; Lisbon,EPSG,2002-07-13 00:00:00,,1,0
-5701,Newlyn,1264,vertical,6499,5101,,,,,Geodetic and engineering surveying.,,,EPSG,1995-06-02 00:00:00,,1,0
-5702,National Geodetic Vertical Datum of 1929,1323,vertical,6497,5102,,,,,Geodetic and engineering surveying.,,,EPSG,1996-10-18 00:00:00,,1,0
-5703,North American Vertical Datum of 1988,1730,vertical,6499,5103,,,,,Geodetic and engineering surveying.,,,EPSG,1996-10-18 00:00:00,,1,0
-5704,Yellow Sea,1067,vertical,6499,5104,,,,,Geodetic and engineering surveying.,,,EPSG,1995-06-02 00:00:00,,1,1
-5705,Baltic,1284,vertical,6499,5105,,,,,Geodetic and engineering surveying.,,,EPSG,1996-09-12 00:00:00,,1,0
-5706,Caspian,1291,vertical,6498,5106,,,,,Used for Soviet Union nautical charting of the Caspian Sea.,Capsian Sea water levels are now offset appreciably from this datum.,,EPSG,1996-09-12 00:00:00,,1,0
-5709,Normaal Amsterdams Peil,1275,vertical,6499,5109,,,,,Geodetic and engineering surveying.,,Nederlandse Commissie voor Geodesie publication 30; 1993,EPSG,2000-03-07 00:00:00,2000.10,1,0
-5710,Oostende,1347,vertical,6499,5110,,,,,Geodetic and engineering surveying.,,Nederlandse Commissie voor Geodesie publication 30; 1993,EPSG,1996-09-12 00:00:00,,1,0
-5711,Australian Height Datum,1281,vertical,6499,5111,,,,,Geodetic and engineering surveying.,,http://www.auslig.gov.au/geodesy,EPSG,1996-09-12 00:00:00,,1,0
-5712,Australian Height Datum (Tasmania),1282,vertical,6499,5112,,,,,Geodetic and engineering surveying.,,,EPSG,1996-09-12 00:00:00,,1,0
-5713,Canadian Vertical Datum of 1928,1289,vertical,6499,5114,,,,,Geodetic and engineering surveying.,,,EPSG,1996-12-12 00:00:00,,1,0
-5714,mean sea level height,1262,vertical,6499,5100,,,,,Used for hydrographic surveying.,Approximates geoid.  Not specific to any location or epoch.,,EPSG,1996-04-12 00:00:00,,1,0
-5715,mean sea level depth,1262,vertical,6498,5100,,,,,Used for hydrographic surveying.,Approximates geoid.  Not specific to any location or epoch.,,EPSG,1996-10-18 00:00:00,,1,0
-5716,Piraeus,1106,vertical,6499,5115,,,,,Geodetic and engineering surveying.,,Geodesy Department; Public Petroleum Corporation of Greece.,EPSG,1997-06-16 00:00:00,,1,0
-5717,N60,1095,vertical,6499,5116,,,,,Geodetic and engineering surveying.,In use since 1968.,www.nls.fi/maa/papers/kkj.html,EPSG,1997-07-22 00:00:00,,1,0
-5718,RH70,1225,vertical,6499,5117,,,,,Geodetic and engineering surveying.,,National and Survey of Sweden,EPSG,1997-11-13 00:00:00,,1,0
-5719,NGF Lallemand,1326,vertical,6499,5118,,,,,Geodetic and engineering surveying.,Generally but not entirely superseded by NGF IGN69 (code 5720).,"Conseil National de l'Information Geographique groupe de travail ""Reseaux de Nivellement"" recommendations v5.1 April 1994",EPSG,1997-11-13 00:00:00,,1,0
-5720,NGF IGN69,1326,vertical,6499,5119,,,,,Geodetic and engineering surveying.,,"Conseil National de l'Information Geographique groupe de travail ""Reseaux de Nivellement"" recommendations v5.1 April 1994",EPSG,1997-11-13 00:00:00,,1,0
-5721,NGF IGN78,1327,vertical,6499,5120,,,,,Geodetic and engineering surveying.,,"Conseil National de l'Information Geographique groupe de travail ""Reseaux de Nivellement"" recommendations v5.1 April 1994",EPSG,1997-11-13 00:00:00,,1,0
-5722,Maputo,1167,vertical,6499,5121,,,,,Geodetic and engineering surveying.,,Direc��o Nacional de Geografia e Cadastral (DINAGECA).,EPSG,1998-04-16 00:00:00,,1,0
-5723,Japanese Standard Levelling Datum,1129,vertical,6499,5122,,,,,Geodetic and engineering surveying.,,Ministry of Construction; Japan.  http://vldb.gsi-mc.jp/sokuchi/datum/image/heichoku2.gif,EPSG,2002-06-22 00:00:00,2002.08,1,0
-5724,PDO Height Datum 1993,1183,vertical,6499,5123,,,,,Geodetic and engineering surveying.,Supersedes Fahud vertical datum (code 5725) from 1993.,Petroleum Development Oman,EPSG,1999-04-22 00:00:00,,1,0
-5725,Fahud Height Datum 1993,1183,vertical,6499,5124,,,,,Geodetic and engineering surveying.,Superseded by PHD93 (code 5724)  from 1993.,Petroleum Development Oman,EPSG,1999-04-22 00:00:00,,1,0
-5726,Ha Tien 1960,1302,vertical,6499,5125,,,,,Geodetic and engineering surveying.,In Vietnam superseded by Hon Dau from 1992.,,EPSG,1999-10-20 00:00:00,,1,0
-5727,Hon Dau 1992,1252,vertical,6499,5126,,,,,Geodetic and engineering surveying.,In Vietnam supersedes Ha Tien from 1992.,,EPSG,1999-10-20 00:00:00,,1,0
-5728,Landesnivellement 1902,1286,vertical,6499,5127,,,,,Geodetic and engineering surveying.,To be superseded by LHN95 (code 5729).,Bundesamt f�r Landestopographie,EPSG,1999-10-20 00:00:00,,1,0
-5729,Landeshohennetz 1995,1286,vertical,6499,5128,,,,,Geodetic and engineering surveying.,To supersede LN02 (code 5728).,Bundesamt f�r Landestopographie,EPSG,1999-10-20 00:00:00,,1,0
-5730,European Vertical Reference System 2000,1298,vertical,6499,5129,,,,,For pan-European products and services.,,IAG subcommission for Europe,EPSG,2000-10-19 00:00:00,,1,0
-5731,Malin Head,1305,vertical,6499,5130,,,,,Topographic mapping at all scales in Republic and medium and small scales in Northern Ireland.,Belfast (code 5732) used for large scale topographic mapping in Northern Ireland.,Ordnance Survey of Ireland.,EPSG,2001-11-06 00:00:00,,1,0
-5732,Belfast,2530,vertical,6499,5131,,,,,Large scale topographic mapping.,Malin Head (code 5731) used for medium and small scale topographic mapping.,Ordnance Survey of Northern Ireland.,EPSG,2001-11-06 00:00:00,,1,0
-5733,Dansk Normal Nul,1080,vertical,6499,5132,,,,,Topographic mapping and engineering survey.,,Kort & Matrikelstyrelsen,EPSG,2001-11-06 00:00:00,,1,0
-5734,AIOC95 depths,2592,vertical,6498,5133,,,,,Used by AIOC and BP for all offshore Azerbaijan activities and also as a height system for engineering survey at Sangachal terminal.,AIOC95 datum is 1.7m above Caspian datum and 26.3m below Baltic datum.,BP,EPSG,2002-02-12 00:00:00,,1,0
-5735,Black Sea,1102,vertical,6499,5134,,,,,Hydrographic surveying and since breakup of Former Soviet Union also topographic mapping.,Black Sea datum is 0.4m below Baltic datum.,BP,EPSG,2002-02-12 00:00:00,,1,0
-5736,Yellow Sea 1956,1067,vertical,6499,5104,,,,,Geodetic and engineering surveying.,Superseded by Yellow Sea 1985 (code 5737).,Guangdong Province Land Resource Information Centre,EPSG,2002-06-22 00:00:00,,1,0
-5737,Yellow Sea 1985,1067,vertical,6499,5137,,,,,Geodetic and engineering surveying.,Supersedes Yellow Sea 1956 (code 5736).,Guangdong Province Land Resource Information Centre,EPSG,2002-06-22 00:00:00,,1,0
-5738,Hong Kong Principal Datum,1118,vertical,6499,5135,,,,,"Geodetic, topographic and engineering surveying.",,"Survey and Mapping Office, Lands Department. Http://www.info.gov.hk/landsd/mapping/tindex.htm",EPSG,2002-06-22 00:00:00,,1,0
-5739,Hong Kong Chart Datum,1118,vertical,6498,5136,,,,,Hydrographic charting.,Chart datum is 0.15 metres below Hong Kong Principal Datum (CRS code 5738) and 1.38m below MSL at Quarry Bay.,"Survey and Mapping Office, Lands Department. Http://www.info.gov.hk/landsd/mapping/tindex.htm",EPSG,2002-06-22 00:00:00,,1,0
-5800,Astra Minas Grid,1265,engineering,6507,9300,,,,,Oil exploration.,,,EPSG,2000-03-07 00:00:00,,1,0
-5801,Barcelona Grid B1,1266,engineering,4500,9301,,,,,Oil exploration by MGO and Talon.,Centre of the gateway of San Cristobal chuch; Plaza Boyaca; Barcelona.  500000E 300000 N at 10deg 08min 06sec N  64deg 41min 17sec W.,Ministry of Mines standards manual of 1974.,EPSG,2000-03-07 00:00:00,,1,0
-5802,Barcelona Grid B2,1266,engineering,4500,9301,,,,,Oil exploration by Phillips; Mobil; Texas; Mercedes; Varco.,Centre of the gateway of San Cristobal chuch; Plaza Boyaca; Barcelona.  500000E 300000 N at 10deg 08min 06sec N  64deg 41min 07.5sec W.,Ministry of Mines standards manual of 1974.,EPSG,2000-03-07 00:00:00,,1,0
-5803,Maturin Grid,1320,engineering,4500,9302,,,,,Oil exploration by MGO and Talon.,Centre of the gateway of San Cristobal chuch; Plaza Boyaca; Barcelona.  500000E 300000 N at 10deg 08min 06sec N  64deg 41min 17sec W.,Ministry of Mines standards manual of 1974.,EPSG,2000-03-07 00:00:00,,1,0
-5804,EPSG seismic bin grid example A,1263,engineering,6508,9312,,,,,Example only - fictitious.,"Bin grid I=J=1 at WGS 84 / UTM zone 31N 456781E 5836723N.
-Bin grid orientation = 20 degrees grid.  Bin width I=25m, J=12.5m.  Bin increment I=1, J=1.  Scale factor at origin 0.99984",UKOOA P6/98 seismic bin grid guideline.,EPSG,2000-06-23 00:00:00,,1,0
-5805,EPSG seismic bin grid example B,1263,engineering,6506,9312,,,,,Example only - fictitious.,,,EPSG,2000-06-23 00:00:00,,1,0
-5806,EPSG local engineering grid example A,1263,engineering,6505,9313,,,,,Example only - fictitious.,"Coordinates are 0,0 at conductor slot A1.",EPSG,EPSG,2000-06-23 00:00:00,,1,0
-5807,EPSG local engineering grid example B,1263,engineering,6504,9313,,,,,Example only - fictitious.,"Shows alternative use of coordinate axis name.
-
-Coordinates are 0,0 at conductor slot A1.",EPSG,EPSG,2000-06-23 00:00:00,,1,0
-5808,Maracaibo Cross Grid M4,1319,engineering,4500,9303,,,,,Oil exploration by Chevron and CVP.,Grid coordinates 200000N 200000E at Cruz Canada Morillo in Maracaibo.  The cross is ascribed coordinates of 10deg 38min 22sec N; 71deg 37min 18sec W.,Ministry of Mines standards manual of 1974.,EPSG,2000-06-23 00:00:00,,1,0
-5809,Maracaibo Cross Grid M5,1319,engineering,4500,9303,,,,,Oil exploration by Texas.,Grid coordinates 200000N 200000E at Cruz Canada Morillo in Maracaibo.  The cross is ascribed coordinates of 10deg 38min 32.3sec N; 71deg 37min 12.1sec W.,Ministry of Mines standards manual of 1974.,EPSG,2000-06-23 00:00:00,,1,0
-5810,La Rosa Grid,1311,engineering,4500,9304,,,,,Oil exploration.,Grid coordinates (0 0) at the monument in La Rosa (10deg 22min 40.417sec N 71deg 26min 59.488sec W; Loma Qunitana datum).  Origin possibly at Cerro Penal (71deg 12min 58sec W) where grid north aligned to true north.  See Lake / Maracaibo La Rosa grid.,Ministry of Mines standards manual of 1974.,EPSG,2000-06-23 00:00:00,,1,0
-5811,Mene Grande,1270,engineering,4500,9305,,,,,Oil exploration by Shell.,Grid coordinates (0 0) at the monument in Santa Barabara; Mene Grande.  The monument is ascribed coordinates of 9deg 52min 25.488sec N; 70deg 54min 35.310sec W.,Ministry of Mines standards manual of 1974.,EPSG,2000-06-23 00:00:00,,1,0
-5812,El Cubo,1269,engineering,4500,9306,,,,,Oil exploration by Shell.,Grid coordinates (0 0) at El Cubo (8deg 44min 17.258sec N; 72deg 30min 09.01sec W).,Ministry of Mines standards manual of 1974.,EPSG,2000-06-23 00:00:00,,1,0
-5813,Dabajuro,1268,engineering,4500,9307,,,,,Oil exploration by Chevron Creole and Texas.,Grid coordinates 200000N 200000E at the centre of the tower of the church at Dabajuro.  The tower is ascribed coordinates of 11deg 01min 19sec N; 70deg 40min 40sec W.,Ministry of Mines standards manual of 1974.,EPSG,2000-06-23 00:00:00,,1,0
-5814,Tucupita,1370,engineering,4500,9308,,,,,Oil exploration by Creole and Texas.,Grid coordinates 200000N 200000E at centre of the Bolivar plaza in Tucupita.  The plaza is ascribed coordinates of 9deg 03min 32sec N; 62deg 03min 07.6sec W.,Ministry of Mines standards manual of 1974.,EPSG,2000-06-23 00:00:00,,1,0
-5815,Santa Maria de Ipire,1371,engineering,4500,9310,,,,,Oil exploration by Creole  Phillips and Varco.,Grid coordinates 200000N 200000E at concrete monument PR-1 in the Bolivar plaza in Santa Maria de Ipire.  The monument is ascribed coordinates of 8deg 40min 06sec N; 65deg 19min 09sec W.,Ministry of Mines standards manual of 1974.,EPSG,2000-06-23 00:00:00,,1,0
-5816,Barinas west base,1267,engineering,4500,9311,,,,,Oil exploration by Sinclair.,Grid coordinates 200000N 200000E at the west base monument in Barinas.,Ministry of Mines standards manual of 1974.,EPSG,2000-06-23 00:00:00,,1,0
-7400,NTF (Paris) + NGF IGN69,1326,compound,,,,,4807,5720,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1997-11-13 00:00:00,,1,0
-7401,NTF (Paris) / France II + NGF Lallemand,1326,compound,,,,,27582,5719,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1997-11-13 00:00:00,,1,1
-7402,NTF (Paris) / France II + NGF IGN69,1326,compound,,,,,27582,5720,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1997-11-13 00:00:00,,1,1
-7403,NTF (Paris) / France III + NGF IGN69,1733,compound,,,,,27583,5720,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1997-11-13 00:00:00,,1,1
-7404,RT90 + RH70,1225,compound,,,,,4124,5718,Large and medium scale topographic mapping and engineering survey.,When combined with geoid model RN92 forms geographic 3D coordinate system RR92.,National Land Survey of Sweden,EPSG,1997-11-13 00:00:00,,1,0
-7405,OSGB36 / British National Grid + ODN,1264,compound,,,,,27700,5701,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1997-11-13 00:00:00,,1,0
-7406,NAD27 + NGVD29,1323,compound,,,,,4267,5702,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1997-11-13 00:00:00,,1,0
-7407,NAD27 / Texas North + NGVD29,2253,compound,,,,,32037,5702,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1997-11-13 00:00:00,,1,0
-7408,RD/NAP,1275,compound,,,,,4289,5709,Large and medium scale topographic mapping and engineering survey.,,http://rdnap.kadaster.nl/rd/index.html,EPSG,2000-10-19 00:00:00,,1,0
-7409,ETRS89 + EVRS2000,1298,compound,,,,,4258,5730,For pan-European products and services.,,IAG subcommission for Europe,EPSG,2000-10-19 00:00:00,,1,0
-7410,PSHD93,1183,compound,,,,,4134,5724,Oil exploration.,,Petroleum Development Oman,EPSG,2001-06-05 00:00:00,,1,0
-7411,NTF (Paris) / Lambert zone II + NGF Lallemand,1326,compound,,,,,27572,5719,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2001-11-06 00:00:00,,1,0
-7412,NTF (Paris) / Lambert zone II + NGF IGN69,1326,compound,,,,,27572,5719,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2001-11-06 00:00:00,,1,0
-7413,NTF (Paris) / Lambert zone III + NGF IGN69,1733,compound,,,,,27573,5719,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2001-11-06 00:00:00,,1,0
-20004,Pulkovo 1995 / Gauss-Kruger zone 4,1763,projected,4530,,4200,16204,,,Medium scale topographic mapping.,Also found with truncated false easting - see Pulkovo 1995 / Gauss-Kruger CM 21E (code 2463).,"""Main Terms of Reference for the State Geodetic Network""; Federal Geodetic Service of Russia; 1994",EPSG,2002-06-22 00:00:00,2002.36,1,0
-20005,Pulkovo 1995 / Gauss-Kruger zone 5,1764,projected,4530,,4200,16205,,,Medium scale topographic mapping.,Also found with truncated false easting - see Pulkovo 1995 / Gauss-Kruger CM 27E (code 2464).,"""Main Terms of Reference for the State Geodetic Network""; Federal Geodetic Service of Russia; 1994",EPSG,2002-06-22 00:00:00,2002.36,1,0
-20006,Pulkovo 1995 / Gauss-Kruger zone 6,1765,projected,4530,,4200,16206,,,Medium scale topographic mapping.,Also found with truncated false easting - see Pulkovo 1995 / Gauss-Kruger CM 33E (code 2465).,"""Main Terms of Reference for the State Geodetic Network""; Federal Geodetic Service of Russia; 1994",EPSG,2002-06-22 00:00:00,2002.36,1,0
-20007,Pulkovo 1995 / Gauss-Kruger zone 7,1766,projected,4530,,4200,16207,,,Medium scale topographic mapping.,Also found with truncated false easting - see Pulkovo 1995 / Gauss-Kruger CM 39E (code 2466).,"""Main Terms of Reference for the State Geodetic Network""; Federal Geodetic Service of Russia; 1994",EPSG,2002-06-22 00:00:00,2002.36,1,0
-20008,Pulkovo 1995 / Gauss-Kruger zone 8,1767,projected,4530,,4200,16208,,,Medium scale topographic mapping.,Also found with truncated false easting - see Pulkovo 1995 / Gauss-Kruger CM 45E (code 2467).,"""Main Terms of Reference for the State Geodetic Network""; Federal Geodetic Service of Russia; 1994",EPSG,2002-06-22 00:00:00,2002.36,1,0
-20009,Pulkovo 1995 / Gauss-Kruger zone 9,1768,projected,4530,,4200,16209,,,Medium scale topographic mapping.,Also found with truncated false easting - see Pulkovo 1995 / Gauss-Kruger CM 51E (code 2468).,"""Main Terms of Reference for the State Geodetic Network""; Federal Geodetic Service of Russia; 1994",EPSG,2002-06-22 00:00:00,2002.36,1,0
-20010,Pulkovo 1995 / Gauss-Kruger zone 10,1769,projected,4530,,4200,16210,,,Medium scale topographic mapping.,Also found with truncated false easting - see Pulkovo 1995 / Gauss-Kruger CM 57E (code 2469).,"""Main Terms of Reference for the State Geodetic Network""; Federal Geodetic Service of Russia; 1994",EPSG,2002-06-22 00:00:00,2002.36,1,0
-20011,Pulkovo 1995 / Gauss-Kruger zone 11,1770,projected,4530,,4200,16211,,,Medium scale topographic mapping.,Also found with truncated false easting - see Pulkovo 1995 / Gauss-Kruger CM 63E (code 2470).,"""Main Terms of Reference for the State Geodetic Network""; Federal Geodetic Service of Russia; 1994",EPSG,2002-06-22 00:00:00,2002.36,1,0
-20012,Pulkovo 1995 / Gauss-Kruger zone 12,1771,projected,4530,,4200,16212,,,Medium scale topographic mapping.,Also found with truncated false easting - see Pulkovo 1995 / Gauss-Kruger CM 69E (code 2471).,"""Main Terms of Reference for the State Geodetic Network""; Federal Geodetic Service of Russia; 1994",EPSG,2002-06-22 00:00:00,2002.36,1,0
-20013,Pulkovo 1995 / Gauss-Kruger zone 13,1772,projected,4530,,4200,16213,,,Medium scale topographic mapping.,Also found with truncated false easting - see Pulkovo 1995 / Gauss-Kruger CM 75E (code 2472).,"""Main Terms of Reference for the State Geodetic Network""; Federal Geodetic Service of Russia; 1994",EPSG,2002-06-22 00:00:00,2002.36,1,0
-20014,Pulkovo 1995 / Gauss-Kruger zone 14,1773,projected,4530,,4200,16214,,,Medium scale topographic mapping.,Also found with truncated false easting - see Pulkovo 1995 / Gauss-Kruger CM 81E (code 2473).,"""Main Terms of Reference for the State Geodetic Network""; Federal Geodetic Service of Russia; 1994",EPSG,2002-06-22 00:00:00,2002.36,1,0
-20015,Pulkovo 1995 / Gauss-Kruger zone 15,1774,projected,4530,,4200,16215,,,Medium scale topographic mapping.,Also found with truncated false easting - see Pulkovo 1995 / Gauss-Kruger CM 87E (code 2474).,"""Main Terms of Reference for the State Geodetic Network""; Federal Geodetic Service of Russia; 1994",EPSG,2002-06-22 00:00:00,2002.36,1,0
-20016,Pulkovo 1995 / Gauss-Kruger zone 16,1775,projected,4530,,4200,16216,,,Medium scale topographic mapping.,Also found with truncated false easting - see Pulkovo 1995 / Gauss-Kruger CM 93E (code 2475).,"""Main Terms of Reference for the State Geodetic Network""; Federal Geodetic Service of Russia; 1994",EPSG,2002-06-22 00:00:00,2002.36,1,0
-20017,Pulkovo 1995 / Gauss-Kruger zone 17,1776,projected,4530,,4200,16217,,,Medium scale topographic mapping.,Also found with truncated false easting - see Pulkovo 1995 / Gauss-Kruger CM 99E (code 2476).,"""Main Terms of Reference for the State Geodetic Network""; Federal Geodetic Service of Russia; 1994",EPSG,2002-06-22 00:00:00,2002.36,1,0
-20018,Pulkovo 1995 / Gauss-Kruger zone 18,1777,projected,4530,,4200,16218,,,Medium scale topographic mapping.,Also found with truncated false easting - see Pulkovo 1995 / Gauss-Kruger CM 105E (code 2477).,"""Main Terms of Reference for the State Geodetic Network""; Federal Geodetic Service of Russia; 1994",EPSG,2002-06-22 00:00:00,2002.36,1,0
-20019,Pulkovo 1995 / Gauss-Kruger zone 19,1778,projected,4530,,4200,16219,,,Medium scale topographic mapping.,Also found with truncated false easting - see Pulkovo 1995 / Gauss-Kruger CM 111E (code 2478).,"""Main Terms of Reference for the State Geodetic Network""; Federal Geodetic Service of Russia; 1994",EPSG,2002-06-22 00:00:00,2002.36,1,0
-20020,Pulkovo 1995 / Gauss-Kruger zone 20,1779,projected,4530,,4200,16220,,,Medium scale topographic mapping.,Also found with truncated false easting - see Pulkovo 1995 / Gauss-Kruger CM 117E (code 2479).,"""Main Terms of Reference for the State Geodetic Network""; Federal Geodetic Service of Russia; 1994",EPSG,2002-06-22 00:00:00,2002.36,1,0
-20021,Pulkovo 1995 / Gauss-Kruger zone 21,1780,projected,4530,,4200,16221,,,Medium scale topographic mapping.,Also found with truncated false easting - see Pulkovo 1995 / Gauss-Kruger CM 123E (code 2480).,"""Main Terms of Reference for the State Geodetic Network""; Federal Geodetic Service of Russia; 1994",EPSG,2002-06-22 00:00:00,2002.36,1,0
-20022,Pulkovo 1995 / Gauss-Kruger zone 22,1781,projected,4530,,4200,16222,,,Medium scale topographic mapping.,Also found with truncated false easting - see Pulkovo 1995 / Gauss-Kruger CM 129E (code 2481).,"""Main Terms of Reference for the State Geodetic Network""; Federal Geodetic Service of Russia; 1994",EPSG,2002-06-22 00:00:00,2002.36,1,0
-20023,Pulkovo 1995 / Gauss-Kruger zone 23,1782,projected,4530,,4200,16223,,,Medium scale topographic mapping.,Also found with truncated false easting - see Pulkovo 1995 / Gauss-Kruger CM 135E (code 2482).,"""Main Terms of Reference for the State Geodetic Network""; Federal Geodetic Service of Russia; 1994",EPSG,2002-06-22 00:00:00,2002.36,1,0
-20024,Pulkovo 1995 / Gauss-Kruger zone 24,1783,projected,4530,,4200,16224,,,Medium scale topographic mapping.,Also found with truncated false easting - see Pulkovo 1995 / Gauss-Kruger CM 141E (code 2483).,"""Main Terms of Reference for the State Geodetic Network""; Federal Geodetic Service of Russia; 1994",EPSG,2002-06-22 00:00:00,2002.36,1,0
-20025,Pulkovo 1995 / Gauss-Kruger zone 25,1784,projected,4530,,4200,16225,,,Medium scale topographic mapping.,Also found with truncated false easting - see Pulkovo 1995 / Gauss-Kruger CM 147E (code 2484).,"""Main Terms of Reference for the State Geodetic Network""; Federal Geodetic Service of Russia; 1994",EPSG,2002-06-22 00:00:00,2002.36,1,0
-20026,Pulkovo 1995 / Gauss-Kruger zone 26,1785,projected,4530,,4200,16226,,,Medium scale topographic mapping.,Also found with truncated false easting - see Pulkovo 1995 / Gauss-Kruger CM 153E (code 2485).,"""Main Terms of Reference for the State Geodetic Network""; Federal Geodetic Service of Russia; 1994",EPSG,2002-06-22 00:00:00,2002.36,1,0
-20027,Pulkovo 1995 / Gauss-Kruger zone 27,1786,projected,4530,,4200,16227,,,Medium scale topographic mapping.,Also found with truncated false easting - see Pulkovo 1995 / Gauss-Kruger CM 159E (code 2486).,"""Main Terms of Reference for the State Geodetic Network""; Federal Geodetic Service of Russia; 1994",EPSG,2002-06-22 00:00:00,2002.36,1,0
-20028,Pulkovo 1995 / Gauss-Kruger zone 28,1787,projected,4530,,4200,16228,,,Medium scale topographic mapping.,Also found with truncated false easting - see Pulkovo 1995 / Gauss-Kruger CM 165E (code 2487).,"""Main Terms of Reference for the State Geodetic Network""; Federal Geodetic Service of Russia; 1994",EPSG,2002-06-22 00:00:00,2002.36,1,0
-20029,Pulkovo 1995 / Gauss-Kruger zone 29,1788,projected,4530,,4200,16229,,,Medium scale topographic mapping.,Also found with truncated false easting - see Pulkovo 1995 / Gauss-Kruger CM 171E (code 2488).,"""Main Terms of Reference for the State Geodetic Network""; Federal Geodetic Service of Russia; 1994",EPSG,2002-06-22 00:00:00,2002.36,1,0
-20030,Pulkovo 1995 / Gauss-Kruger zone 30,1789,projected,4530,,4200,16230,,,Medium scale topographic mapping.,Also found with truncated false easting - see Pulkovo 1995 / Gauss-Kruger CM 177E (code 2489).,"""Main Terms of Reference for the State Geodetic Network""; Federal Geodetic Service of Russia; 1994",EPSG,2002-06-22 00:00:00,2002.36,1,0
-20031,Pulkovo 1995 / Gauss-Kruger zone 31,1790,projected,4530,,4200,16231,,,Medium scale topographic mapping.,Also found with truncated false easting - see Pulkovo 1995 / Gauss-Kruger CM 177W (code 2490).,"""Main Terms of Reference for the State Geodetic Network""; Federal Geodetic Service of Russia; 1994",EPSG,2002-06-22 00:00:00,2002.36,1,0
-20032,Pulkovo 1995 / Gauss-Kruger zone 32,1791,projected,4530,,4200,16232,,,Medium scale topographic mapping.,Also found with truncated false easting - see Pulkovo 1995 / Gauss-Kruger CM 171W (code 2491).,"""Main Terms of Reference for the State Geodetic Network""; Federal Geodetic Service of Russia; 1994",EPSG,2002-06-22 00:00:00,2002.36,1,0
-20064,Pulkovo 1995 / Gauss-Kruger 4N,1763,projected,4530,,4200,16304,,,Truncated form of Gauss-Kruger zone 4,,"""Main Terms of Reference for the State Geodetic Network""; Federal Geodetic Service of Russia; 1994",EPSG,1996-09-12 00:00:00,,1,1
-20065,Pulkovo 1995 / Gauss-Kruger 5N,1764,projected,4530,,4200,16305,,,Truncated form of Gauss-Kruger zone 5,,"""Main Terms of Reference for the State Geodetic Network""; Federal Geodetic Service of Russia; 1994",EPSG,1996-09-12 00:00:00,,1,1
-20066,Pulkovo 1995 / Gauss-Kruger 6N,1765,projected,4530,,4200,16306,,,Truncated form of Gauss-Kruger zone 6,,"""Main Terms of Reference for the State Geodetic Network""; Federal Geodetic Service of Russia; 1994",EPSG,1996-09-12 00:00:00,,1,1
-20067,Pulkovo 1995 / Gauss-Kruger 7N,1766,projected,4530,,4200,16307,,,Truncated form of Gauss-Kruger zone 7,,"""Main Terms of Reference for the State Geodetic Network""; Federal Geodetic Service of Russia; 1994",EPSG,1996-09-12 00:00:00,,1,1
-20068,Pulkovo 1995 / Gauss-Kruger 8N,1767,projected,4530,,4200,16308,,,Truncated form of Gauss-Kruger zone 8,,"""Main Terms of Reference for the State Geodetic Network""; Federal Geodetic Service of Russia; 1994",EPSG,1996-09-12 00:00:00,,1,1
-20069,Pulkovo 1995 / Gauss-Kruger 9N,1768,projected,4530,,4200,16309,,,Truncated form of Gauss-Kruger zone 9,,"""Main Terms of Reference for the State Geodetic Network""; Federal Geodetic Service of Russia; 1994",EPSG,1996-09-12 00:00:00,,1,1
-20070,Pulkovo 1995 / Gauss-Kruger 10N,1769,projected,4530,,4200,16310,,,Truncated form of Gauss-Kruger zone 10,,"""Main Terms of Reference for the State Geodetic Network""; Federal Geodetic Service of Russia; 1994",EPSG,1996-09-12 00:00:00,,1,1
-20071,Pulkovo 1995 / Gauss-Kruger 11N,1770,projected,4530,,4200,16311,,,Truncated form of Gauss-Kruger zone 11,,"""Main Terms of Reference for the State Geodetic Network""; Federal Geodetic Service of Russia; 1994",EPSG,1996-09-12 00:00:00,,1,1
-20072,Pulkovo 1995 / Gauss-Kruger 12N,1771,projected,4530,,4200,16312,,,Truncated form of Gauss-Kruger zone 12,,"""Main Terms of Reference for the State Geodetic Network""; Federal Geodetic Service of Russia; 1994",EPSG,1996-09-12 00:00:00,,1,1
-20073,Pulkovo 1995 / Gauss-Kruger 13N,1772,projected,4530,,4200,16313,,,Truncated form of Gauss-Kruger zone 13,,"""Main Terms of Reference for the State Geodetic Network""; Federal Geodetic Service of Russia; 1994",EPSG,1996-09-12 00:00:00,,1,1
-20074,Pulkovo 1995 / Gauss-Kruger 14N,1773,projected,4530,,4200,16314,,,Truncated form of Gauss-Kruger zone 14,,"""Main Terms of Reference for the State Geodetic Network""; Federal Geodetic Service of Russia; 1994",EPSG,1996-09-12 00:00:00,,1,1
-20075,Pulkovo 1995 / Gauss-Kruger 15N,1774,projected,4530,,4200,16315,,,Truncated form of Gauss-Kruger zone 15,,"""Main Terms of Reference for the State Geodetic Network""; Federal Geodetic Service of Russia; 1994",EPSG,1996-09-12 00:00:00,,1,1
-20076,Pulkovo 1995 / Gauss-Kruger 16N,1775,projected,4530,,4200,16316,,,Truncated form of Gauss-Kruger zone 16,,"""Main Terms of Reference for the State Geodetic Network""; Federal Geodetic Service of Russia; 1994",EPSG,1996-09-12 00:00:00,,1,1
-20077,Pulkovo 1995 / Gauss-Kruger 17N,1776,projected,4530,,4200,16317,,,Truncated form of Gauss-Kruger zone 17,,"""Main Terms of Reference for the State Geodetic Network""; Federal Geodetic Service of Russia; 1994",EPSG,1996-09-12 00:00:00,,1,1
-20078,Pulkovo 1995 / Gauss-Kruger 18N,1777,projected,4530,,4200,16318,,,Truncated form of Gauss-Kruger zone 18,,"""Main Terms of Reference for the State Geodetic Network""; Federal Geodetic Service of Russia; 1994",EPSG,1996-09-12 00:00:00,,1,1
-20079,Pulkovo 1995 / Gauss-Kruger 19N,1778,projected,4530,,4200,16319,,,Truncated form of Gauss-Kruger zone 19,,"""Main Terms of Reference for the State Geodetic Network""; Federal Geodetic Service of Russia; 1994",EPSG,1996-09-12 00:00:00,,1,1
-20080,Pulkovo 1995 / Gauss-Kruger 20N,1779,projected,4530,,4200,16320,,,Truncated form of Gauss-Kruger zone 20,,"""Main Terms of Reference for the State Geodetic Network""; Federal Geodetic Service of Russia; 1994",EPSG,1996-09-12 00:00:00,,1,1
-20081,Pulkovo 1995 / Gauss-Kruger 21N,1780,projected,4530,,4200,16321,,,Truncated form of Gauss-Kruger zone 21,,"""Main Terms of Reference for the State Geodetic Network""; Federal Geodetic Service of Russia; 1994",EPSG,1996-09-12 00:00:00,,1,1
-20082,Pulkovo 1995 / Gauss-Kruger 22N,1781,projected,4530,,4200,16322,,,Truncated form of Gauss-Kruger zone 22,,"""Main Terms of Reference for the State Geodetic Network""; Federal Geodetic Service of Russia; 1994",EPSG,1996-09-12 00:00:00,,1,1
-20083,Pulkovo 1995 / Gauss-Kruger 23N,1782,projected,4530,,4200,16323,,,Truncated form of Gauss-Kruger zone 23,,"""Main Terms of Reference for the State Geodetic Network""; Federal Geodetic Service of Russia; 1994",EPSG,1996-09-12 00:00:00,,1,1
-20084,Pulkovo 1995 / Gauss-Kruger 24N,1783,projected,4530,,4200,16324,,,Truncated form of Gauss-Kruger zone 24,,"""Main Terms of Reference for the State Geodetic Network""; Federal Geodetic Service of Russia; 1994",EPSG,1996-09-12 00:00:00,,1,1
-20085,Pulkovo 1995 / Gauss-Kruger 25N,1784,projected,4530,,4200,16325,,,Truncated form of Gauss-Kruger zone 25,,"""Main Terms of Reference for the State Geodetic Network""; Federal Geodetic Service of Russia; 1994",EPSG,1996-09-12 00:00:00,,1,1
-20086,Pulkovo 1995 / Gauss-Kruger 26N,1785,projected,4530,,4200,16326,,,Truncated form of Gauss-Kruger zone 26,,"""Main Terms of Reference for the State Geodetic Network""; Federal Geodetic Service of Russia; 1994",EPSG,1996-09-12 00:00:00,,1,1
-20087,Pulkovo 1995 / Gauss-Kruger 27N,1786,projected,4530,,4200,16327,,,Truncated form of Gauss-Kruger zone 27,,"""Main Terms of Reference for the State Geodetic Network""; Federal Geodetic Service of Russia; 1994",EPSG,1996-09-12 00:00:00,,1,1
-20088,Pulkovo 1995 / Gauss-Kruger 28N,1787,projected,4530,,4200,16328,,,Truncated form of Gauss-Kruger zone 28,,"""Main Terms of Reference for the State Geodetic Network""; Federal Geodetic Service of Russia; 1994",EPSG,1996-09-12 00:00:00,,1,1
-20089,Pulkovo 1995 / Gauss-Kruger 29N,1788,projected,4530,,4200,16329,,,Truncated form of Gauss-Kruger zone 29,,"""Main Terms of Reference for the State Geodetic Network""; Federal Geodetic Service of Russia; 1994",EPSG,1996-09-12 00:00:00,,1,1
-20090,Pulkovo 1995 / Gauss-Kruger 30N,1789,projected,4530,,4200,16330,,,Truncated form of Gauss-Kruger zone 30,,"""Main Terms of Reference for the State Geodetic Network""; Federal Geodetic Service of Russia; 1994",EPSG,1996-09-12 00:00:00,,1,1
-20091,Pulkovo 1995 / Gauss-Kruger 31N,1790,projected,4530,,4200,16331,,,Truncated form of Gauss-Kruger zone 31,,"""Main Terms of Reference for the State Geodetic Network""; Federal Geodetic Service of Russia; 1994",EPSG,1996-09-12 00:00:00,,1,1
-20092,Pulkovo 1995 / Gauss-Kruger 32N,1791,projected,4530,,4200,16332,,,Truncated form of Gauss-Kruger zone 32,,"""Main Terms of Reference for the State Geodetic Network""; Federal Geodetic Service of Russia; 1994",EPSG,1996-09-12 00:00:00,,1,1
-20137,Adindan / UTM zone 37N,1552,projected,4400,,4201,16037,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-20138,Adindan / UTM zone 38N,1553,projected,4400,,4201,16038,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-20248,AGD66 / AMG zone 48,1556,projected,4400,,4202,17448,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-20249,AGD66 / AMG zone 49,1557,projected,4400,,4202,17449,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-20250,AGD66 / AMG zone 50,1558,projected,4400,,4202,17450,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-20251,AGD66 / AMG zone 51,1559,projected,4400,,4202,17451,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-20252,AGD66 / AMG zone 52,1560,projected,4400,,4202,17452,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-20253,AGD66 / AMG zone 53,1561,projected,4400,,4202,17453,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-20254,AGD66 / AMG zone 54,1567,projected,4400,,4202,17454,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-20255,AGD66 / AMG zone 55,1568,projected,4400,,4202,17455,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-20256,AGD66 / AMG zone 56,1564,projected,4400,,4202,17456,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-20257,AGD66 / AMG zone 57,1565,projected,4400,,4202,17457,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-20258,AGD66 / AMG zone 58,1566,projected,4400,,4202,17458,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-20348,AGD84 / AMG zone 48,1556,projected,4400,,4203,17448,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-20349,AGD84 / AMG zone 49,1557,projected,4400,,4203,17449,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-20350,AGD84 / AMG zone 50,1558,projected,4400,,4203,17450,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-20351,AGD84 / AMG zone 51,1559,projected,4400,,4203,17451,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-20352,AGD84 / AMG zone 52,1560,projected,4400,,4203,17452,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-20353,AGD84 / AMG zone 53,1561,projected,4400,,4203,17453,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-20354,AGD84 / AMG zone 54,1562,projected,4400,,4203,17454,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-20355,AGD84 / AMG zone 55,1563,projected,4400,,4203,17455,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-20356,AGD84 / AMG zone 56,1564,projected,4400,,4203,17456,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-20357,AGD84 / AMG zone 57,1565,projected,4400,,4203,17457,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-20358,AGD84 / AMG zone 58,1566,projected,4400,,4203,17458,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-20437,Ain el Abd / UTM zone 37N,1569,projected,4400,,4204,16037,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1997-11-13 00:00:00,97.59,1,0
-20438,Ain el Abd / UTM zone 38N,1571,projected,4400,,4204,16038,,,"Large and medium scale topographic mapping and engineering survey. In Kuwait Oil production (but not exploration - see KOC Lambert, code 24600).","Known in Kuwait as ""KOC UTM"". Used by KOC for engineering but not explorartion (see KOC Lambert, code 24600).",,EPSG,1997-11-13 00:00:00,97.59,1,0
-20439,Ain el Abd / UTM zone 39N,1570,projected,4400,,4204,16039,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1997-11-13 00:00:00,97.59,1,0
-20499,Ain el Abd / Bahrain Grid,1040,projected,4400,,4204,19900,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-20538,Afgooye / UTM zone 38N,1554,projected,4400,,4205,16038,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-20539,Afgooye / UTM zone 39N,1555,projected,4400,,4205,16039,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-20790,Lisbon (Lisbon)/Portuguese National Grid,1294,projected,4499,,4803,19936,,,Large and medium scale topographic mapping and engineering survey for military purposes.,,Instituto Geografico e Cadastral; Lisbon,EPSG,1998-11-11 00:00:00,98.42  2000.551,1,0
-20791,Lisbon (Lisbon)/Portuguese Grid,1294,projected,4499,,4803,19969,,,Large and medium scale topographic mapping and engineering survey.,,Instituto Geografico e Cadastral Lisbon via EuroGeographics; http://crs.ifag.de/,EPSG,2001-06-05 00:00:00,,1,0
-20822,Aratu / UTM zone 22S,1572,projected,4400,,4208,16122,,,Oil exploration and production.,,,EPSG,1995-07-21 00:00:00,95.191,1,0
-20823,Aratu / UTM zone 23S,1573,projected,4400,,4208,16123,,,Oil exploration and production.,,,EPSG,1995-07-21 00:00:00,95.191,1,0
-20824,Aratu / UTM zone 24S,1574,projected,4400,,4208,16124,,,Oil exploration and production.,,,EPSG,1995-07-21 00:00:00,95.191,1,0
-20934,Arc 1950 / UTM zone 34S,1575,projected,4400,,4209,16134,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1997-11-13 00:00:00,,1,0
-20935,Arc 1950 / UTM zone 35S,1576,projected,4400,,4209,16135,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1997-11-13 00:00:00,,1,0
-20936,Arc 1950 / UTM zone 36S,1577,projected,4400,,4209,16136,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1997-11-13 00:00:00,,1,0
-21035,Arc 1960 / UTM zone 35S,1579,projected,4400,,4210,16135,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1997-11-13 00:00:00,,1,0
-21036,Arc 1960 / UTM zone 36S,1581,projected,4400,,4210,16136,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1997-11-13 00:00:00,,1,0
-21037,Arc 1960 / UTM zone 37S,1583,projected,4400,,4210,16137,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1997-11-13 00:00:00,,1,0
-21095,Arc 1960 / UTM zone 35N,1578,projected,4400,,4210,16035,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1997-11-13 00:00:00,,1,0
-21096,Arc 1960 / UTM zone 36N,1580,projected,4400,,4210,16036,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1997-11-13 00:00:00,,1,0
-21097,Arc 1960 / UTM zone 37N,1582,projected,4400,,4210,16037,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1997-11-13 00:00:00,,1,0
-21100,Batavia (Jakarta) / NEIEZ,1285,projected,4499,,4813,19905,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-21148,Batavia / UTM zone 48S,1584,projected,4400,,4211,16148,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-21149,Batavia / UTM zone 49S,1586,projected,4400,,4211,16149,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-21150,Batavia / UTM zone 50S,1585,projected,4400,,4211,16150,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-21291,Barbados 1938 / British West Indies Grid,1042,projected,4400,,4212,19942,,,"Large and medium scale topographic mapping, cadastral and engineering survey.",Superseded by Barbados National Grid (code 21292) from 1983.,Ordnance Survey of Great Britain,EPSG,1999-04-22 00:00:00,,1,0
-21292,Barbados 1938 / Barbados National Grid,1042,projected,4400,,4212,19943,,,"Large and medium scale topographic mapping, cadastral and engineering survey.",Supersedes Barbados 1938 / BWI Grid (code 21291) from 1983.,Ordnance Survey of Great Britain,EPSG,1999-04-22 00:00:00,,1,0
-21413,Beijing 1954 / Gauss-Kruger zone 13,1587,projected,4530,,4214,16213,,,Medium scale topographic mapping.,Also found with truncated false easting - see Beijing 1954 / Gauss-Kruger CM 75E (code 24153). Superseded by Xian 1980 / Gauss-Kruger zone 13 (code 2327).,,EPSG,2002-06-22 00:00:00,2002.16,1,0
-21414,Beijing 1954 / Gauss-Kruger zone 14,1588,projected,4530,,4214,16214,,,Medium scale topographic mapping.,Also found with truncated false easting - see Beijing 1954 / Gauss-Kruger CM 81E (code 24154). Superseded by Xian 1980 / Gauss-Kruger zone 14 (code 2328).,,EPSG,2002-06-22 00:00:00,2002.16,1,0
-21415,Beijing 1954 / Gauss-Kruger zone 15,1589,projected,4530,,4214,16215,,,Medium scale topographic mapping.,Also found with truncated false easting - see Beijing 1954 / Gauss-Kruger CM 87E (code 24155). Superseded by Xian 1980 / Gauss-Kruger zone 15 (code 2329).,,EPSG,2002-06-22 00:00:00,2002.16,1,0
-21416,Beijing 1954 / Gauss-Kruger zone 16,1590,projected,4530,,4214,16216,,,Medium scale topographic mapping.,Also found with truncated false easting - see Beijing 1954 / Gauss-Kruger CM 93E (code 24156). Superseded by Xian 1980 / Gauss-Kruger zone 16 (code 2330).,,EPSG,2002-06-22 00:00:00,2002.16,1,0
-21417,Beijing 1954 / Gauss-Kruger zone 17,1591,projected,4530,,4214,16217,,,Medium scale topographic mapping.,Also found with truncated false easting - see Beijing 1954 / Gauss-Kruger CM 99E (code 24157). Superseded by Xian 1980 / Gauss-Kruger zone 17 (code 2331).,,EPSG,2002-06-22 00:00:00,2002.16,1,0
-21418,Beijing 1954 / Gauss-Kruger zone 18,1592,projected,4530,,4214,16218,,,Medium scale topographic mapping.,Also found with truncated false easting - see Beijing 1954 / Gauss-Kruger CM 105E (code 24158). Superseded by Xian 1980 / Gauss-Kruger zone 18 (code 2332).,,EPSG,2002-06-22 00:00:00,2002.16,1,0
-21419,Beijing 1954 / Gauss-Kruger zone 19,1593,projected,4530,,4214,16219,,,Medium scale topographic mapping.,Also found with truncated false easting - see Beijing 1954 / Gauss-Kruger CM 111E (code 24159). Superseded by Xian 1980 / Gauss-Kruger zone 19 (code 2333).,,EPSG,2002-06-22 00:00:00,2002.16,1,0
-21420,Beijing 1954 / Gauss-Kruger zone 20,1594,projected,4530,,4214,16220,,,Medium scale topographic mapping.,Also found with truncated false easting - see Beijing 1954 / Gauss-Kruger CM 117E (code 24160). Superseded by Xian 1980 / Gauss-Kruger zone 20 (code 2334).,,EPSG,2002-06-22 00:00:00,2002.16,1,0
-21421,Beijing 1954 / Gauss-Kruger zone 21,1595,projected,4530,,4214,16221,,,Medium scale topographic mapping.,Also found with truncated false easting - see Beijing 1954 / Gauss-Kruger CM 123E (code 24161). Superseded by Xian 1980 / Gauss-Kruger zone 21 (code 2335).,,EPSG,2002-06-22 00:00:00,2002.16,1,0
-21422,Beijing 1954 / Gauss-Kruger zone 22,1596,projected,4530,,4214,16222,,,Medium scale topographic mapping.,Also found with truncated false easting - see Beijing 1954 / Gauss-Kruger CM 129E (code 24162). Superseded by Xian 1980 / Gauss-Kruger zone 22 (code 2336).,,EPSG,2002-06-22 00:00:00,2002.16,1,0
-21423,Beijing 1954 / Gauss-Kruger zone 23,1597,projected,4530,,4214,16223,,,Medium scale topographic mapping.,Also found with truncated false easting - see Beijing 1954 / Gauss-Kruger CM 135E (code 24163). Superseded by Xian 1980 / Gauss-Kruger zone 23 (code 2337).,,EPSG,2002-06-22 00:00:00,2002.16,1,0
-21453,Beijing 1954 / Gauss-Kruger CM 75E,1587,projected,4530,,4214,16313,,,Medium scale topographic mapping.,Truncated form of Beijing 1954 / Gauss-Kruger zone 13 (code 21413). Superseded by Xian 1980 / Gauss-Kruger CM 75E (code 2338).,,EPSG,2002-06-22 00:00:00,,1,0
-21454,Beijing 1954 / Gauss-Kruger CM 81E,1588,projected,4530,,4214,16314,,,Medium scale topographic mapping.,Truncated form of Beijing 1954 / Gauss-Kruger zone 14 (code 21414). Superseded by Xian 1980 / Gauss-Kruger CM 81E (code 2339).,,EPSG,2002-06-22 00:00:00,,1,0
-21455,Beijing 1954 / Gauss-Kruger CM 87E,1589,projected,4530,,4214,16315,,,Medium scale topographic mapping.,Truncated form of Beijing 1954 / Gauss-Kruger zone 15 (code 21415). Superseded by Xian 1980 / Gauss-Kruger CM 87E (code 2340).,,EPSG,2002-06-22 00:00:00,,1,0
-21456,Beijing 1954 / Gauss-Kruger CM 93E,1590,projected,4530,,4214,16316,,,Medium scale topographic mapping.,Truncated form of Beijing 1954 / Gauss-Kruger zone 16 (code 21416). Superseded by Xian 1980 / Gauss-Kruger CM 93E (code 2341).,,EPSG,2002-06-22 00:00:00,,1,0
-21457,Beijing 1954 / Gauss-Kruger CM 99E,1591,projected,4530,,4214,16317,,,Medium scale topographic mapping.,Truncated form of Beijing 1954 / Gauss-Kruger zone 17 (code 21417). Superseded by Xian 1980 / Gauss-Kruger CM 99E (code 2342).,,EPSG,2002-06-22 00:00:00,,1,0
-21458,Beijing 1954 / Gauss-Kruger CM 105E,1592,projected,4530,,4214,16318,,,Medium scale topographic mapping.,Truncated form of Beijing 1954 / Gauss-Kruger zone 18 (code 21418). Superseded by Xian 1980 / Gauss-Kruger CM 105E (code 2343).,,EPSG,2002-06-22 00:00:00,,1,0
-21459,Beijing 1954 / Gauss-Kruger CM 111E,1593,projected,4530,,4214,16319,,,Medium scale topographic mapping.,Truncated form of Beijing 1954 / Gauss-Kruger zone 19 (code 21419). Superseded by Xian 1980 / Gauss-Kruger CM 111E (code 2344).,,EPSG,2002-06-22 00:00:00,,1,0
-21460,Beijing 1954 / Gauss-Kruger CM 117E,1594,projected,4530,,4214,16320,,,Medium scale topographic mapping.,Truncated form of Beijing 1954 / Gauss-Kruger zone 20 (code 21420). Superseded by Xian 1980 / Gauss-Kruger CM 117E (code 2345).,,EPSG,2002-06-22 00:00:00,,1,0
-21461,Beijing 1954 / Gauss-Kruger CM 123E,1595,projected,4530,,4214,16321,,,Medium scale topographic mapping.,Truncated form of Beijing 1954 / Gauss-Kruger zone 21 (code 21421). Superseded by Xian 1980 / Gauss-Kruger CM 123E (code 2346).,,EPSG,2002-06-22 00:00:00,,1,0
-21462,Beijing 1954 / Gauss-Kruger CM 129E,1596,projected,4530,,4214,16322,,,Medium scale topographic mapping.,Truncated form of Beijing 1954 / Gauss-Kruger zone 22 (code 21422). Superseded by Xian 1980 / Gauss-Kruger CM 129E (code 2347).,,EPSG,2002-06-22 00:00:00,,1,0
-21463,Beijing 1954 / Gauss-Kruger CM 135E,1597,projected,4530,,4214,16323,,,Medium scale topographic mapping.,Truncated form of Beijing 1954 / Gauss-Kruger zone 33 (code 21423). Superseded by Xian 1980 / Gauss-Kruger CM 135E (code 2348).,,EPSG,2002-06-22 00:00:00,,1,0
-21473,Beijing 1954 / Gauss-Kruger 13N,1587,projected,4530,,4214,16313,,,Truncated form of Gauss-Kruger zone 13,,,EPSG,1995-06-02 00:00:00,,1,1
-21474,Beijing 1954 / Gauss-Kruger 14N,1588,projected,4530,,4214,16314,,,Truncated form of Gauss-Kruger zone 14,,,EPSG,1995-06-02 00:00:00,,1,1
-21475,Beijing 1954 / Gauss-Kruger 15N,1589,projected,4530,,4214,16315,,,Truncated form of Gauss-Kruger zone 15,,,EPSG,1995-06-02 00:00:00,,1,1
-21476,Beijing 1954 / Gauss-Kruger 16N,1590,projected,4530,,4214,16316,,,Truncated form of Gauss-Kruger zone 16,,,EPSG,1995-06-02 00:00:00,,1,1
-21477,Beijing 1954 / Gauss-Kruger 17N,1591,projected,4530,,4214,16317,,,Truncated form of Gauss-Kruger zone 17,,,EPSG,1995-06-02 00:00:00,,1,1
-21478,Beijing 1954 / Gauss-Kruger 18N,1592,projected,4530,,4214,16318,,,Truncated form of Gauss-Kruger zone 18,,,EPSG,1995-06-02 00:00:00,,1,1
-21479,Beijing 1954 / Gauss-Kruger 19N,1593,projected,4530,,4214,16319,,,Truncated form of Gauss-Kruger zone 19,,,EPSG,1995-06-02 00:00:00,,1,1
-21480,Beijing 1954 / Gauss-Kruger 20N,1594,projected,4530,,4214,16320,,,Truncated form of Gauss-Kruger zone 20,,,EPSG,1995-06-02 00:00:00,,1,1
-21481,Beijing 1954 / Gauss-Kruger 21N,1595,projected,4530,,4214,16321,,,Truncated form of Gauss-Kruger zone 21,,,EPSG,1995-06-02 00:00:00,,1,1
-21482,Beijing 1954 / Gauss-Kruger 22N,1596,projected,4530,,4214,16322,,,Truncated form of Gauss-Kruger zone 22,,,EPSG,1995-06-02 00:00:00,,1,1
-21483,Beijing 1954 / Gauss-Kruger 23N,1597,projected,4530,,4214,16323,,,Truncated form of Gauss-Kruger zone 23,,,EPSG,1995-06-02 00:00:00,,1,1
-21500,Belge 1950 (Brussels) / Belge Lambert 50,1347,projected,4499,,4809,19901,,,Large and medium scale topographic mapping and engineering survey.,Superseded by Belge 1972 / Belge Lambert 72 (code 31300) and Belge 1972 / Belgian Lambert 72 (code 31370).,,EPSG,1997-04-11 00:00:00,97.13,1,0
-21780,Bern 1898 (Bern) / LV03C,1286,projected,4498,,4801,19923,,,Large and medium scale topographic mapping and engineering survey.,Superseded by CH1903 / LV03 (code 21781).,,EPSG,1997-06-30 00:00:00,97.27  97.62,1,0
-21781,CH1903 / LV03,1286,projected,4498,,4149,19922,,,"Large and medium scale topographic mapping, cadastral and engineering survey.",Supersedes LV03C (code 21780).  Superseded by CH1903+/LV95 (code 2056).,,EPSG,1999-10-20 00:00:00,2001.29,1,0
-21817,Bogota 1975 / UTM zone 17N,1602,projected,4400,,4218,16017,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2000-10-19 00:00:00,2000.20,1,0
-21818,Bogota 1975 / UTM zone 18N,1603,projected,4400,,4218,16018,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2000-10-19 00:00:00,2000.20,1,0
-21891,Bogota 1975 / Colombia West zone,1598,projected,4499,,4218,18051,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2000-10-19 00:00:00,97.11  97.57 2000.20,1,0
-21892,Bogota 1975 / Colombia Bogota zone,1599,projected,4499,,4218,18052,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2000-10-19 00:00:00,97.11  97.57 2000.20,1,0
-21893,Bogota 1975 / Colombia East Central zone,1600,projected,4499,,4218,18053,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2000-10-19 00:00:00,97.11  97.57 2000.20,1,0
-21894,Bogota 1975 / Colombia East,1601,projected,4499,,4218,18054,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2000-10-19 00:00:00,97.11  97.57 2000.20,1,0
-22032,Camacupa / UTM zone 32S,1606,projected,4400,,4220,16132,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1997-11-13 00:00:00,97.58,1,0
-22033,Camacupa / UTM zone 33S,1607,projected,4400,,4220,16133,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1997-11-13 00:00:00,97.58,1,0
-22091,Camacupa / TM 11.30 SE,1605,projected,4400,,4220,16611,,,Oil exploration by Esso Angola offshore blocks 15 and 24.,,Esso Angola,EPSG,1998-11-11 00:00:00,,1,0
-22092,Camacupa / TM 12 SE,1604,projected,4400,,4220,16612,,,"Oil exploration by Shell Angola for offshore blocks 1 and 16  and by BP Amoco, Elf and Esso for offshore blocks 31-33.",,Shell Angola,EPSG,1998-11-11 00:00:00,,1,0
-22191,Campo Inchauspe / Argentina 1,1608,projected,4530,,4221,18031,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2002-06-22 00:00:00,97.72 2002.36,1,0
-22192,Campo Inchauspe / Argentina 2,1609,projected,4530,,4221,18032,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2002-06-22 00:00:00,97.72 2002.36,1,0
-22193,Campo Inchauspe / Argentina 3,1610,projected,4530,,4221,18033,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2002-06-22 00:00:00,97.72 2002.36,1,0
-22194,Campo Inchauspe / Argentina 4,1611,projected,4530,,4221,18034,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2002-06-22 00:00:00,97.72 2002.36,1,0
-22195,Campo Inchauspe / Argentina 5,1612,projected,4530,,4221,18035,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2002-06-22 00:00:00,97.72 2002.36,1,0
-22196,Campo Inchauspe / Argentina 6,1613,projected,4530,,4221,18036,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2002-06-22 00:00:00,97.72 2002.36,1,0
-22197,Campo Inchauspe / Argentina 7,1614,projected,4530,,4221,18037,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2002-06-22 00:00:00,97.72 2002.36,1,0
-22234,Cape / UTM zone 34S,1615,projected,4400,,4222,16134,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-12-08 00:00:00,,1,0
-22235,Cape / UTM zone 35S,1617,projected,4400,,4222,16135,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-12-08 00:00:00,,1,0
-22236,Cape / UTM zone 36S,1616,projected,4400,,4222,16136,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-12-08 00:00:00,,1,0
-22275,South African Coordinate System zone 15,1454,projected,6503,,4222,17515,,,"Large and medium scale topographic mapping, cadastral and engineering survey.",,"Directorate of Surveys and Mapping, Mowbray, South Africa.",EPSG,2000-03-07 00:00:00,99.98  2000.04,1,0
-22277,South African Coordinate System zone 17,1455,projected,6503,,4222,17517,,,"Large and medium scale topographic mapping, cadastral and engineering survey.",,"Directorate of Surveys and Mapping, Mowbray, South Africa.",EPSG,2000-03-07 00:00:00,99.98  2000.04,1,0
-22279,South African Coordinate System zone 19,1456,projected,6503,,4222,17519,,,"Large and medium scale topographic mapping, cadastral and engineering survey.",,"Directorate of Surveys and Mapping, Mowbray, South Africa.",EPSG,2000-03-07 00:00:00,99.98  2000.04,1,0
-22281,South African Coordinate System zone 21,1457,projected,6503,,4222,17521,,,"Large and medium scale topographic mapping, cadastral and engineering survey.",,"Directorate of Surveys and Mapping, Mowbray, South Africa.",EPSG,2000-03-07 00:00:00,99.98  2000.04,1,0
-22283,South African Coordinate System zone 23,1458,projected,6503,,4222,17523,,,"Large and medium scale topographic mapping, cadastral and engineering survey.",,"Directorate of Surveys and Mapping, Mowbray, South Africa.",EPSG,2000-03-07 00:00:00,99.98  2000.04,1,0
-22285,South African Coordinate System zone 25,1459,projected,6503,,4222,17525,,,"Large and medium scale topographic mapping, cadastral and engineering survey.",,"Directorate of Surveys and Mapping, Mowbray, South Africa.",EPSG,2000-03-07 00:00:00,99.98  2000.04,1,0
-22287,South African Coordinate System zone 27,1460,projected,6503,,4222,17527,,,"Large and medium scale topographic mapping, cadastral and engineering survey.",,"Directorate of Surveys and Mapping, Mowbray, South Africa.",EPSG,2000-03-07 00:00:00,99.98  2000.04,1,0
-22289,South African Coordinate System zone 29,1461,projected,6503,,4222,17529,,,"Large and medium scale topographic mapping, cadastral and engineering survey.",,"Directorate of Surveys and Mapping, Mowbray, South Africa.",EPSG,2000-03-07 00:00:00,99.98  2000.04,1,0
-22291,South African Coordinate System zone 31,1462,projected,6503,,4222,17531,,,"Large and medium scale topographic mapping, cadastral and engineering survey.",,"Directorate of Surveys and Mapping, Mowbray, South Africa.",EPSG,2000-03-07 00:00:00,99.98  2000.04,1,0
-22293,South African Coordinate System zone 33,1463,projected,6503,,4222,17533,,,"Large and medium scale topographic mapping, cadastral and engineering survey.",,"Directorate of Surveys and Mapping, Mowbray, South Africa.",EPSG,2000-03-07 00:00:00,99.98  2000.04,1,0
-22300,Carthage (Paris) / Tunisia Mining Grid,1618,projected,4406,,4816,19937,,,Large and medium scale topographic mapping and engineering survey.,CAUTION: Carthage datum did not exist when the 1953 decree was issued and an inference is that grid should be applied to the Voirol 1875 geogCS.  Common practice assumes that the current Tunisian geodetic datum of Carthage applies.,,EPSG,1998-11-11 00:00:00,,1,0
-22332,Carthage / UTM zone 32N,1489,projected,4400,,4223,16032,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-22391,Carthage / Nord Tunisie,1619,projected,4499,,4223,18181,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-22392,Carthage / Sud Tunisie,1620,projected,4499,,4223,18182,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-22523,Corrego Alegre / UTM zone 23S,1621,projected,4400,,4225,16123,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-22524,Corrego Alegre / UTM zone 24S,1622,projected,4400,,4225,16124,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-22700,Deir ez Zor / Levant Zone,1623,projected,4499,,4227,19940,,,Large and medium scale topographic mapping and engineering survey.,Superseded by Deir ez Zor / Syria Lambert (EPSG code 22770) from 1973.,,EPSG,1999-04-22 00:00:00,,1,0
-22770,Deir ez Zor / Syria Lambert,1623,projected,4499,,4227,19948,,,Large and medium scale topographic mapping and engineering survey.,Supersedes Deir ez Zor / Levant zone (EPSG code 22700) from 1973.,,EPSG,1999-10-20 00:00:00,,1,0
-22780,Deir ez Zor / Levant Stereographic,1623,projected,4499,,4227,19949,,,Used  prior to World War II for cadastral and large scale topographic mapping.,,,EPSG,2000-10-19 00:00:00,,1,0
-22832,Douala / UTM zone 32N,1060,projected,4400,,4228,16032,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,1
-22991,Egypt 1907 / Blue Belt,1642,projected,4400,,4229,18071,,,Military topographic mapping.  Oil industry usually uses Egypt 1907 / Red Belt rather than this projected CRS.,Also known as Egypt 1907 / Green Belt.,,EPSG,2002-07-16 00:00:00,2002.49,1,0
-22992,Egypt 1907 / Red Belt,1643,projected,4400,,4229,18072,,,Large and medium scale topographic mapping and engineering survey.,See also Egypt 1907 / Blue Belt for non oil industry usage in Sinai peninsula.,,EPSG,1995-06-02 00:00:00,,1,0
-22993,Egypt 1907 / Purple Belt,1644,projected,4400,,4229,18073,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-22994,Egypt 1907 / Extended Purple Belt,1645,projected,4400,,4229,18074,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-23028,ED50 / UTM zone 28N,1631,projected,4400,,4230,16028,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-23029,ED50 / UTM zone 29N,1632,projected,4400,,4230,16029,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-23030,ED50 / UTM zone 30N,1633,projected,4400,,4230,16030,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-23031,ED50 / UTM zone 31N,1634,projected,4400,,4230,16031,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-23032,ED50 / UTM zone 32N,1635,projected,4400,,4230,16032,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-23033,ED50 / UTM zone 33N,1636,projected,4400,,4230,16033,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-23034,ED50 / UTM zone 34N,1637,projected,4400,,4230,16034,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-23035,ED50 / UTM zone 35N,1638,projected,4400,,4230,16035,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-23036,ED50 / UTM zone 36N,1639,projected,4400,,4230,16036,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-23037,ED50 / UTM zone 37N,1640,projected,4400,,4230,16037,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-23038,ED50 / UTM zone 38N,1641,projected,4400,,4230,16038,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-23090,ED50 / TM 0 N,1629,projected,4400,,4230,16400,,,Used by Shell UK for UKCS North Sea oil exploration and production.,,Shell UK,EPSG,1998-11-11 00:00:00,,1,0
-23095,ED50 / TM 5 NE,1630,projected,4400,,4230,16405,,,Used by NAM for Dutch Sector of the North Sea oil exploration and production.,,NAM,EPSG,1998-11-11 00:00:00,,1,0
-23239,Fahud / UTM zone 39N,1544,projected,4400,,4232,16039,,,Large and medium scale topographic mapping and engineering survey.,Since 1993 superseded by PSD93 / UTM zone 39N projCS (code 3439). Maximum differences to Fahud adjustment are 20 metres.,,EPSG,1995-06-02 00:00:00,,1,0
-23240,Fahud / UTM zone 40N,1545,projected,4400,,4232,16040,,,Large and medium scale topographic mapping and engineering survey.,Since 1993 superseded by PSD93 / UTM zone 40N projCS (code 3440). Maximum differences to Fahud adjustment are 20 metres.,,EPSG,1995-06-02 00:00:00,,1,0
-23433,Garoua / UTM zone 33N,1060,projected,4400,,4234,16033,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,1
-23700,HD72 / EOV,1119,projected,4498,,4237,19931,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1997-07-22 00:00:00,,1,0
-23846,ID74 / UTM zone 46N,1647,projected,4400,,4238,16046,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-08-08 00:00:00,95.193  95.20,1,0
-23847,ID74 / UTM zone 47N,1649,projected,4400,,4238,16047,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-07-21 00:00:00,95.193,1,0
-23848,ID74 / UTM zone 48N,1651,projected,4400,,4238,16048,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-07-21 00:00:00,95.193,1,0
-23849,ID74 / UTM zone 49N,1653,projected,4400,,4238,16049,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-07-21 00:00:00,95.193,1,0
-23850,ID74 / UTM zone 50N,1655,projected,4400,,4238,16050,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-07-21 00:00:00,95.193,1,0
-23851,ID74 / UTM zone 51N,1657,projected,4400,,4238,16051,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-07-21 00:00:00,95.193,1,0
-23852,ID74 / UTM zone 52N,1659,projected,4400,,4238,16052,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-07-21 00:00:00,95.193,1,0
-23853,ID74 / UTM zone 53N,1661,projected,4400,,4238,16053,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-07-21 00:00:00,95.193,1,0
-23886,ID74 / UTM zone 46S,1648,projected,4400,,4238,16146,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-08-08 00:00:00,95.193  95.20,1,0
-23887,ID74 / UTM zone 47S,1650,projected,4400,,4238,16147,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-07-21 00:00:00,95.193,1,0
-23888,ID74 / UTM zone 48S,1652,projected,4400,,4238,16148,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-07-21 00:00:00,95.193,1,0
-23889,ID74 / UTM zone 49S,1654,projected,4400,,4238,16149,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-07-21 00:00:00,95.193,1,0
-23890,ID74 / UTM zone 50S,1656,projected,4400,,4238,16150,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-07-21 00:00:00,95.193,1,0
-23891,ID74 / UTM zone 51S,1658,projected,4400,,4238,16151,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-07-21 00:00:00,95.193,1,0
-23892,ID74 / UTM zone 52S,1660,projected,4400,,4238,16152,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-07-21 00:00:00,95.193,1,0
-23893,ID74 / UTM zone 53S,1662,projected,4400,,4238,16153,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-07-21 00:00:00,95.193,1,0
-23894,ID74 / UTM zone 54S,1663,projected,4400,,4238,16154,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-07-21 00:00:00,95.193,1,0
-23946,Indian 1954 / UTM zone 46N,1664,projected,4400,,4239,16046,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1998-06-13 00:00:00,,1,0
-23947,Indian 1954 / UTM zone 47N,1665,projected,4400,,4239,16047,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-23948,Indian 1954 / UTM zone 48N,1666,projected,4400,,4239,16048,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-24047,Indian 1975 / UTM zone 47N,1667,projected,4400,,4240,16047,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-24048,Indian 1975 / UTM zone 48N,1666,projected,4400,,4240,16048,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-24100,Jamaica 1875 / Jamaica (Old Grid),1128,projected,4403,,4241,19909,,,"Large and medium scale topographic mapping, cadastral and engineering survey.",Superseded by 24200 (JAD69 / Jamaica National Grid).,,EPSG,1995-06-02 00:00:00,,1,0
-24200,JAD69 / Jamaica National Grid,1128,projected,4400,,4242,19910,,,"Large and medium scale topographic mapping, cadastral and engineering survey.",Supersedes 24100 (JAD69 / Jamaica National Grid).,,EPSG,1995-06-02 00:00:00,,1,0
-24305,Kalianpur 1937 / UTM zone 45N,1674,projected,4400,,4144,16045,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1999-10-20 00:00:00,,1,0
-24306,Kalianpur 1937 / UTM zone 46N,1675,projected,4400,,4144,16046,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1999-10-20 00:00:00,,1,0
-24311,Kalianpur 1962 / UTM zone 41N,1687,projected,4400,,4145,16041,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1999-10-20 00:00:00,,1,0
-24312,Kalianpur 1962 / UTM zone 42N,1688,projected,4400,,4145,16042,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1999-10-20 00:00:00,,1,0
-24313,Kalianpur 1962 / UTM zone 43N,1689,projected,4400,,4145,16043,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1999-10-20 00:00:00,,1,0
-24342,Kalianpur 1975 / UTM zone 42N,1679,projected,4400,,4146,16042,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1999-10-20 00:00:00,,1,0
-24343,Kalianpur 1975 / UTM zone 43N,1680,projected,4400,,4146,16043,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1999-10-20 00:00:00,,1,0
-24344,Kalianpur 1975 / UTM zone 44N,1681,projected,4400,,4146,16044,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1999-10-20 00:00:00,,1,0
-24345,Kalianpur 1975 / UTM zone 45N,1682,projected,4400,,4146,16045,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1999-10-20 00:00:00,,1,0
-24346,Kalianpur 1975 / UTM zone 46N,1683,projected,4400,,4146,16046,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1999-10-20 00:00:00,,1,0
-24347,Kalianpur 1975 / UTM zone 47N,1684,projected,4400,,4146,16047,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1999-10-20 00:00:00,,1,0
-24370,Kalianpur 1880 / India zone 0,1668,projected,4408,,4243,18110,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1999-10-20 00:00:00,97.23,1,0
-24371,Kalianpur 1880 / India zone I,1669,projected,4408,,4243,18111,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1999-10-20 00:00:00,97.23,1,0
-24372,Kalianpur 1880 / India zone IIa,1670,projected,4408,,4243,18112,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1999-10-20 00:00:00,97.23,1,0
-24373,Kalianpur 1880 / India zone III,1672,projected,4408,,4243,18114,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1999-10-20 00:00:00,97.23,1,0
-24374,Kalianpur 1880 / India zone IV,1673,projected,4408,,4243,18116,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1999-10-20 00:00:00,97.23,1,0
-24375,Kalianpur 1937 / India zone IIb,1041,projected,4400,,4144,18238,,,Large and medium scale topographic mapping and engineering survey.,Used by Bangladesh since metrication.  Metric conversion applies A.R.Clarke's Indian foot-British foot ratio of 0.99999566 and Benoit's 1895 British inch-metre ratio of 39.370115 rounded as Ind ft = 0.30479841m exactly.,,EPSG,1999-10-20 00:00:00,97.23,1,0
-24376,Kalianpur 1962 / India zone I,1685,projected,4400,,4145,18236,,,Large and medium scale topographic mapping and engineering survey.,Used by Pakistan since metrication.  Metric conversion applies A.R.Clarke's Indian foot-British foot ratio of 0.99999566 and J.S.Clark's 1865 British inch-metre ratio of 39.369971 rounded by G.Bomford with slight error as Ind ft = 0.3048996m exactly.,,EPSG,1999-10-20 00:00:00,97.23,1,0
-24377,Kalianpur 1962 / India zone IIa,1686,projected,4400,,4145,18237,,,Large and medium scale topographic mapping and engineering survey.,Used by Pakistan since metrication.  Metric conversion applies A.R.Clarke's Indian foot-British foot ratio of 0.99999566 and J.S.Clark's 1865 British inch-metre ratio of 39.369971 rounded by G.Bomford with slight error as Ind ft = 0.3048996m exactly.,,EPSG,1999-10-20 00:00:00,97.23,1,0
-24378,Kalianpur 1975 / India zone I,1676,projected,4400,,4146,18231,,,Large and medium scale topographic mapping and engineering survey.,Used by India since metrication.  Metric conversion applies A.R.Clarke's Indian foot-British foot ratio of 0.99999566 and J.S.Clark's 1865 British inch-metre ratio of 39.369971 rounded as 1 Ind ft = 0.3048995m exactly.,,EPSG,1999-10-20 00:00:00,97.23,1,0
-24379,Kalianpur 1975 / India zone IIa,1677,projected,4400,,4146,18232,,,Large and medium scale topographic mapping and engineering survey.,Used by India since metrication.  Metric conversion applies A.R.Clarke's Indian foot-British foot ratio of 0.99999566 and J.S.Clark's 1865 British inch-metre ratio of 39.369971 rounded as 1 Ind ft = 0.3048995m exactly.,,EPSG,1999-10-20 00:00:00,97.23,1,0
-24380,Kalianpur 1975 / India zone IIb,1678,projected,4400,,4146,18235,,,Large and medium scale topographic mapping and engineering survey.,Used by India since metrication.  Metric conversion applies A.R.Clarke's Indian foot-British foot ratio of 0.99999566 and J.S.Clark's 1865 British inch-metre ratio of 39.369971 rounded as 1 Ind ft = 0.3048995m exactly.,,EPSG,1999-10-20 00:00:00,97.23,1,0
-24381,Kalianpur 1975 / India zone III,1672,projected,4400,,4146,18233,,,Large and medium scale topographic mapping and engineering survey.,Used by India since metrication.  Metric conversion applies A.R.Clarke's Indian foot-British foot ratio of 0.99999566 and J.S.Clark's 1865 British inch-metre ratio of 39.369971 rounded as 1 Ind ft = 0.3048995m exactly.,,EPSG,1999-10-20 00:00:00,97.23,1,0
-24382,Kalianpur 1880 / India zone IIb,1671,projected,4408,,4243,18113,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1999-10-20 00:00:00,97.23,1,0
-24383,Kalianpur 1975 / India zone IV,1673,projected,4400,,4146,18234,,,Large and medium scale topographic mapping and engineering survey.,Used by India since metrication.  Metric conversion applies A.R.Clarke's Indian foot-British foot ratio of 0.99999566 and J.S.Clark's 1865 British inch-metre ratio of 39.369971 rounded as 1 Ind ft = 0.3048995m exactly.,,EPSG,1999-10-20 00:00:00,97.23,1,0
-24500,Kertau / Singapore Grid,1210,projected,4400,,4245,19920,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-24547,Kertau / UTM zone 47N,1691,projected,4400,,4245,16047,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-24548,Kertau / UTM zone 48N,1692,projected,4400,,4245,16048,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-07-21 00:00:00,95.192,1,0
-24571,Kertau / R.S.O. Malaya (ch),1690,projected,4401,,4245,19935,,,Large and medium scale topographic mapping and engineering survey.,Adopts metric conversion of 39.370113 inches per metre.,,EPSG,1999-10-20 00:00:00,97.231,1,0
-24600,KOC Lambert,1136,projected,4400,,4246,19906,,,"Oil industry exploration (but not production - see Ain el Abd / UTM zone 38N, code 20438).","Used by KOC for exploration but not engineering (see Ain el Abd / UTM zone 38N, code 24600).",,EPSG,1996-04-12 00:00:00,,1,0
-24718,La Canoa / UTM zone 18N,1693,projected,4400,,4247,16018,,,Large and medium scale topographic mapping and engineering survey.,Sometimes referred to as PSAD56 / UTM zone 18N.,,EPSG,1999-10-20 00:00:00,,1,0
-24719,La Canoa / UTM zone 19N,1694,projected,4400,,4247,16019,,,Large and medium scale topographic mapping and engineering survey.,Sometimes referred to as PSAD56 / UTM zone 19N.,,EPSG,1999-10-20 00:00:00,,1,0
-24720,La Canoa / UTM zone 20N,1695,projected,4400,,4247,16020,,,Large and medium scale topographic mapping and engineering survey.,Sometimes referred to as PSAD56 / UTM zone 20N.,,EPSG,1995-06-02 00:00:00,,1,0
-24818,PSAD56 / UTM zone 18N,1756,projected,4400,,4248,16018,,,Large and medium scale topographic mapping and engineering survey.,In Venezuela also known as La Canoa / UTM zone 18N.,,EPSG,1995-06-02 00:00:00,,1,0
-24819,PSAD56 / UTM zone 19N,1758,projected,4400,,4248,16019,,,Large and medium scale topographic mapping and engineering survey.,In Venezuela also known as La Canoa / UTM zone 19N.,,EPSG,1995-06-02 00:00:00,,1,0
-24820,PSAD56 / UTM zone 20N,1760,projected,4400,,4248,16020,,,Large and medium scale topographic mapping and engineering survey.,In Venezuela also known as La Canoa / UTM zone 20N.,,EPSG,1995-06-02 00:00:00,,1,0
-24821,PSAD56 / UTM zone 21N,1762,projected,4400,,4248,16021,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-24877,PSAD56 / UTM zone 17S,1755,projected,4400,,4248,16117,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-24878,PSAD56 / UTM zone 18S,1757,projected,4400,,4248,16118,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-24879,PSAD56 / UTM zone 19S,1759,projected,4400,,4248,16119,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-24880,PSAD56 / UTM zone 20S,1761,projected,4400,,4248,16120,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-24882,PSAD56 / UTM zone 22S,1754,projected,4400,,4248,16122,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1999-04-22 00:00:00,,1,0
-24891,PSAD56 / Peru west zone,1753,projected,4499,,4248,18161,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-24892,PSAD56 / Peru central zone,1752,projected,4499,,4248,18162,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-24893,PSAD56 / Peru east zone,1751,projected,4499,,4248,18163,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-25000,Leigon / Ghana Metre Grid,1104,projected,4400,,4250,19904,,,Large and medium scale topographic mapping and engineering survey.,Superseded Accra / Ghana National Grid (code 2136) in 1978.,,EPSG,1995-06-02 00:00:00,,1,0
-25231,Lome / UTM zone 31N,1232,projected,4400,,4252,16031,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-25391,Luzon 1911 / Philippines zone I,1698,projected,4499,,4253,18171,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-25392,Luzon 1911 / Philippines zone II,1699,projected,4499,,4253,18172,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-25393,Luzon 1911 / Philippines zone III,1700,projected,4499,,4253,18173,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-25394,Luzon 1911 / Philippines zone IV,1701,projected,4499,,4253,18174,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-25395,Luzon 1911 / Philippines zone V,1702,projected,4499,,4253,18175,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-25700,Makassar (Jakarta) / NEIEZ,1316,projected,4499,,4804,19905,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-25828,ETRS89 / UTM zone 28N,2122,projected,4400,,4258,16028,,,Large and medium scale topographic mapping and engineering survey.,The distinction in usage between ETRF89 and ETRS89 is confused: although in principle conceptually different in practice both are used as synonyms.,,EPSG,2000-10-19 00:00:00,99.11 2000.72,1,0
-25829,ETRS89 / UTM zone 29N,2123,projected,4400,,4258,16029,,,Large and medium scale topographic mapping and engineering survey.,The distinction in usage between ETRF89 and ETRS89 is confused: although in principle conceptually different in practice both are used as synonyms.,,EPSG,2000-10-19 00:00:00,99.11 2000.72,1,0
-25830,ETRS89 / UTM zone 30N,2124,projected,4400,,4258,16030,,,Large and medium scale topographic mapping and engineering survey.,The distinction in usage between ETRF89 and ETRS89 is confused: although in principle conceptually different in practice both are used as synonyms.,,EPSG,2000-10-19 00:00:00,99.11 2000.72,1,0
-25831,ETRS89 / UTM zone 31N,2125,projected,4400,,4258,16031,,,Large and medium scale topographic mapping and engineering survey.,The distinction in usage between ETRF89 and ETRS89 is confused: although in principle conceptually different in practice both are used as synonyms.,,EPSG,2000-10-19 00:00:00,99.11 2000.72,1,0
-25832,ETRS89 / UTM zone 32N,2126,projected,4400,,4258,16032,,,Large and medium scale topographic mapping and engineering survey.,The distinction in usage between ETRF89 and ETRS89 is confused: although in principle conceptually different in practice both are used as synonyms.,,EPSG,2000-10-19 00:00:00,99.11 2000.72,1,0
-25833,ETRS89 / UTM zone 33N,2127,projected,4400,,4258,16033,,,Large and medium scale topographic mapping and engineering survey.,Used for all state of Brandenburg including those areas west of 12 deg E.,,EPSG,2000-10-19 00:00:00,99.11 2000.72,1,0
-25834,ETRS89 / UTM zone 34N,2128,projected,4400,,4258,16034,,,Large and medium scale topographic mapping and engineering survey.,The distinction in usage between ETRF89 and ETRS89 is confused: although in principle conceptually different in practice both are used as synonyms.,,EPSG,2000-10-19 00:00:00,99.11 2000.72,1,0
-25835,ETRS89 / UTM zone 35N,2129,projected,4400,,4258,16035,,,Large and medium scale topographic mapping and engineering survey.,The distinction in usage between ETRF89 and ETRS89 is confused: although in principle conceptually different in practice both are used as synonyms.,,EPSG,2000-10-19 00:00:00,99.11 2000.72,1,0
-25836,ETRS89 / UTM zone 36N,2130,projected,4400,,4258,16036,,,Large and medium scale topographic mapping and engineering survey.,The distinction in usage between ETRF89 and ETRS89 is confused: although in principle conceptually different in practice both are used as synonyms.,,EPSG,2000-10-19 00:00:00,99.11 2000.72,1,0
-25837,ETRS89 / UTM zone 37N,2131,projected,4400,,4258,16037,,,Large and medium scale topographic mapping and engineering survey.,The distinction in usage between ETRF89 and ETRS89 is confused: although in principle conceptually different in practice both are used as synonyms.,,EPSG,2000-10-19 00:00:00,99.11 2000.72,1,0
-25838,ETRS89 / UTM zone 38N,2132,projected,4400,,4258,16038,,,Large and medium scale topographic mapping and engineering survey.,The distinction in usage between ETRF89 and ETRS89 is confused: although in principle conceptually different in practice both are used as synonyms.,,EPSG,2000-10-19 00:00:00,99.11 2000.72,1,0
-25884,ETRS89 / TM Baltic93,1646,projected,4530,,4258,19939,,,Large and medium scale topographic mapping and engineering survey.,Used as a common coordinate system for the Baltic states and for medium and small scale mapping in Estonia since 1993.,http://www.geo.ut.ee/~raivo/estcoord.html,EPSG,2000-10-19 00:00:00,99.11 2000.72,1,0
-25932,Malongo 1987 / UTM zone 32S,1317,projected,4400,,4259,16132,,,Oil exploration,,,EPSG,1995-06-02 00:00:00,,1,0
-26191,Merchich / Nord Maroc,1703,projected,4499,,4261,18131,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26192,Merchich / Sud Maroc,1704,projected,4499,,4261,18132,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26193,Merchich / Sahara,1705,projected,4499,,4261,18133,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26237,Massawa / UTM zone 37N,1089,projected,4400,,4262,16037,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26331,Minna / UTM zone 31N,1716,projected,4400,,4263,16031,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26332,Minna / UTM zone 32N,1717,projected,4400,,4263,16032,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26391,Minna / Nigeria West Belt,1715,projected,4400,,4263,18151,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26392,Minna / Nigeria Mid Belt,1714,projected,4400,,4263,18152,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26393,Minna / Nigeria East Belt,1713,projected,4400,,4263,18153,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26432,Mhast / UTM zone 32S,1318,projected,4400,,4264,16132,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26591,Monte Mario (Rome) / Italy zone 1,1718,projected,4499,,4806,18121,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26592,Monte Mario (Rome) / Italy zone 2,1719,projected,4499,,4806,18122,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26632,M'poraloko / UTM zone 32N,1696,projected,4400,,4266,16032,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26692,M'poraloko / UTM zone 32S,1697,projected,4400,,4266,16132,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26703,NAD27 / UTM zone 3N,2133,projected,4400,,4267,16003,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26704,NAD27 / UTM zone 4N,2134,projected,4400,,4267,16004,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26705,NAD27 / UTM zone 5N,2135,projected,4400,,4267,16005,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26706,NAD27 / UTM zone 6N,2136,projected,4400,,4267,16006,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26707,NAD27 / UTM zone 7N,2137,projected,4400,,4267,16007,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26708,NAD27 / UTM zone 8N,2138,projected,4400,,4267,16008,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26709,NAD27 / UTM zone 9N,2139,projected,4400,,4267,16009,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26710,NAD27 / UTM zone 10N,2140,projected,4400,,4267,16010,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26711,NAD27 / UTM zone 11N,2141,projected,4400,,4267,16011,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26712,NAD27 / UTM zone 12N,2142,projected,4400,,4267,16012,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26713,NAD27 / UTM zone 13N,2143,projected,4400,,4267,16013,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26714,NAD27 / UTM zone 14N,2144,projected,4400,,4267,16014,,,Large and medium scale topographic mapping and engineering survey.,See NAD27 / BLM 14N (feet) (code 32064) for non-metric equivalent used in US Gulf of Mexico.,,EPSG,1995-06-02 00:00:00,,1,0
-26715,NAD27 / UTM zone 15N,2145,projected,4400,,4267,16015,,,Large and medium scale topographic mapping and engineering survey.,In Ontario superseded by NAD27(76) / UTM zone 15N (code 2027). See NAD27 / BLM 15N (feet) (code 32065) for non-metric equivalent used in US Gulf of Mexico.,,EPSG,1995-06-02 00:00:00,,1,0
-26716,NAD27 / UTM zone 16N,2146,projected,4400,,4267,16016,,,Large and medium scale topographic mapping and engineering survey.,In Ontario superseded by NAD27(76) / UTM zone 16N (code 2028). See NAD27 / BLM 16N (feet) (code 32066) for non-metric equivalent used in US Gulf of Mexico.,,EPSG,1995-06-02 00:00:00,,1,0
-26717,NAD27 / UTM zone 17N,2147,projected,4400,,4267,16017,,,Large and medium scale topographic mapping and engineering survey.,In Ontario superseded by NAD27(76) / UTM zone 17N (code 2029).  In Quebec superseded by NAD27(CGQ77) / UTM zone 17N (code 2031). See NAD27 / BLM 17N (feet) (code 32067) for non-metric equivalent used in US Gulf of Mexico.,,EPSG,1995-06-02 00:00:00,,1,0
-26718,NAD27 / UTM zone 18N,2148,projected,4400,,4267,16018,,,Large and medium scale topographic mapping and engineering survey.,In Ontario superseded by NAD27(76) / UTM zone 18N (code 2030).  In Quebec superseded by NAD27(CGQ77) / UTM zone 18N (code 2032).,,EPSG,1995-06-02 00:00:00,,1,0
-26719,NAD27 / UTM zone 19N,2149,projected,4400,,4267,16019,,,Large and medium scale topographic mapping and engineering survey.,In Quebec superseded by NAD27(CGQ77) / UTM zone 19N (code 2033).,,EPSG,1995-06-02 00:00:00,,1,0
-26720,NAD27 / UTM zone 20N,2150,projected,4400,,4267,16020,,,Large and medium scale topographic mapping and engineering survey.,In Quebec superseded by NAD27(CGQ77) / UTM zone 20N (code 2034).,,EPSG,1995-06-02 00:00:00,,1,0
-26721,NAD27 / UTM zone 21N,2151,projected,4400,,4267,16021,,,Large and medium scale topographic mapping and engineering survey.,In Quebec superseded by NAD27(CGQ77) / UTM zone 21N (code 2035).,,EPSG,1995-06-02 00:00:00,,1,0
-26722,NAD27 / UTM zone 22N,2152,projected,4400,,4267,16022,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26729,NAD27 / Alabama East,2154,projected,4497,,4267,10101,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26730,NAD27 / Alabama West,2155,projected,4497,,4267,10102,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26731,NAD27 / Alaska zone 1,2156,projected,4497,,4267,15001,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26732,NAD27 / Alaska zone 2,2158,projected,4497,,4267,15002,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26733,NAD27 / Alaska zone 3,2159,projected,4497,,4267,15003,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26734,NAD27 / Alaska zone 4,2160,projected,4497,,4267,15004,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26735,NAD27 / Alaska zone 5,2161,projected,4497,,4267,15005,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26736,NAD27 / Alaska zone 6,2162,projected,4497,,4267,15006,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26737,NAD27 / Alaska zone 7,2163,projected,4497,,4267,15007,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26738,NAD27 / Alaska zone 8,2164,projected,4497,,4267,15008,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26739,NAD27 / Alaska zone 9,2165,projected,4497,,4267,15009,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26740,NAD27 / Alaska zone 10,2157,projected,4497,,4267,15010,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26741,NAD27 / California zone I,2175,projected,4497,,4267,10401,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26742,NAD27 / California zone II,2176,projected,4497,,4267,10402,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26743,NAD27 / California zone III,2177,projected,4497,,4267,10403,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26744,NAD27 / California zone IV,2178,projected,4497,,4267,10404,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26745,NAD27 / California zone V,2179,projected,4497,,4267,10405,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26746,NAD27 / California zone VI,2180,projected,4497,,4267,10406,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26747,NAD27 / California zone VII,2181,projected,4497,,4267,10407,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26748,NAD27 / Arizona East,2167,projected,4497,,4267,10201,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2000-03-07 00:00:00,95.25  2000.091,1,0
-26749,NAD27 / Arizona Central,2166,projected,4497,,4267,10202,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-08-22 00:00:00,95.25,1,0
-26750,NAD27 / Arizona West,2168,projected,4497,,4267,10203,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2000-03-07 00:00:00,95.25  2000.091,1,0
-26751,NAD27 / Arkansas North,2169,projected,4497,,4267,10301,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26752,NAD27 / Arkansas South,2170,projected,4497,,4267,10302,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26753,NAD27 / Colorado North,2184,projected,4497,,4267,10501,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26754,NAD27 / Colorado Central,2183,projected,4497,,4267,10502,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26755,NAD27 / Colorado South,2185,projected,4497,,4267,10503,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26756,NAD27 / Connecticut,1377,projected,4497,,4267,10600,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2000-03-07 00:00:00,2000.091,1,0
-26757,NAD27 / Delaware,1378,projected,4497,,4267,10700,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2000-03-07 00:00:00,2000.091,1,0
-26758,NAD27 / Florida East,2186,projected,4497,,4267,10901,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2000-03-07 00:00:00,2000.091,1,0
-26759,NAD27 / Florida West,2188,projected,4497,,4267,10902,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2000-03-07 00:00:00,2000.091,1,0
-26760,NAD27 / Florida North,2187,projected,4497,,4267,10903,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26766,NAD27 / Georgia East,2189,projected,4497,,4267,11001,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2000-03-07 00:00:00,2000.091,1,0
-26767,NAD27 / Georgia West,2190,projected,4497,,4267,11002,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2000-03-07 00:00:00,2000.091,1,0
-26768,NAD27 / Idaho East,2192,projected,4497,,4267,11101,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2000-03-07 00:00:00,2000.091,1,0
-26769,NAD27 / Idaho Central,2191,projected,4497,,4267,11102,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2000-03-07 00:00:00,2000.091,1,0
-26770,NAD27 / Idaho West,2193,projected,4497,,4267,11103,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2000-03-07 00:00:00,2000.091,1,0
-26771,NAD27 / Illinois East,2194,projected,4497,,4267,11201,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2000-03-07 00:00:00,2000.091,1,0
-26772,NAD27 / Illinois West,2195,projected,4497,,4267,11202,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2000-03-07 00:00:00,2000.091,1,0
-26773,NAD27 / Indiana East,2196,projected,4497,,4267,11301,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2000-03-07 00:00:00,2000.091,1,0
-26774,NAD27 / Indiana West,2197,projected,4497,,4267,11302,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2000-03-07 00:00:00,2000.091,1,0
-26775,NAD27 / Iowa North,2198,projected,4497,,4267,11401,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26776,NAD27 / Iowa South,2199,projected,4497,,4267,11402,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26777,NAD27 / Kansas North,2200,projected,4497,,4267,11501,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26778,NAD27 / Kansas South,2201,projected,4497,,4267,11502,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26779,NAD27 / Kentucky North,2202,projected,4497,,4267,11601,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26780,NAD27 / Kentucky South,2203,projected,4497,,4267,11602,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26781,NAD27 / Louisiana North,2204,projected,4497,,4267,11701,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26782,NAD27 / Louisiana South,2205,projected,4497,,4267,11702,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26783,NAD27 / Maine East,2206,projected,4497,,4267,11801,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2000-03-07 00:00:00,2000.091,1,0
-26784,NAD27 / Maine West,2207,projected,4497,,4267,11802,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2000-03-07 00:00:00,2000.091,1,0
-26785,NAD27 / Maryland,1389,projected,4497,,4267,11900,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2000-03-07 00:00:00,2000.091,1,0
-26786,NAD27 / Massachusetts Mainland,2209,projected,4497,,4267,12001,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26787,NAD27 / Massachusetts Island,2208,projected,4497,,4267,12002,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26791,NAD27 / Minnesota North,2214,projected,4497,,4267,12201,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26792,NAD27 / Minnesota Central,2213,projected,4497,,4267,12202,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26793,NAD27 / Minnesota South,2215,projected,4497,,4267,12203,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26794,NAD27 / Mississippi East,2216,projected,4497,,4267,12301,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26795,NAD27 / Mississippi West,2217,projected,4497,,4267,12302,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26796,NAD27 / Missouri East,2219,projected,4497,,4267,12401,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2000-03-07 00:00:00,2000.091,1,0
-26797,NAD27 / Missouri Central,2218,projected,4497,,4267,12402,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26798,NAD27 / Missouri West,2220,projected,4497,,4267,12403,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26801,NAD Michigan / Michigan East,1720,projected,4497,,4268,12101,,,Large and medium scale topographic mapping and engineering survey.,Superseded by 26811 26812 and 26813.,,EPSG,1998-11-11 00:00:00,95.25  97.19  98.22  2000.091,1,0
-26802,NAD Michigan / Michigan Old Central,1721,projected,4497,,4268,12102,,,Large and medium scale topographic mapping and engineering survey.,Superseded by 26811 26812 and 26813.,,EPSG,1998-11-11 00:00:00,95.25  97.19  98.22,1,0
-26803,NAD Michigan / Michigan West,1722,projected,4497,,4268,12103,,,Large and medium scale topographic mapping and engineering survey.,Superseded by 26811 26812 and 26813.,,EPSG,1998-11-11 00:00:00,95.25  97.19  98.22  2000.091,1,0
-26811,NAD Michigan / Michigan North,1723,projected,4497,,4268,12111,,,Large and medium scale topographic mapping and engineering survey.,Supersedes 26801 26802 and 26803.,,EPSG,1998-11-11 00:00:00,96.28  98.22,1,0
-26812,NAD Michigan / Michigan Central,1724,projected,4497,,4268,12112,,,Large and medium scale topographic mapping and engineering survey.,Supersedes 26801 26802 and 26803.,,EPSG,1998-11-11 00:00:00,96.28  97.19  98.22,1,0
-26813,NAD Michigan / Michigan South,1725,projected,4497,,4268,12113,,,Large and medium scale topographic mapping and engineering survey.,Supersedes 26801 26802 and 26803.,,EPSG,1998-11-11 00:00:00,96.28  97.19  98.22,1,0
-26903,NAD83 / UTM zone 3N,2133,projected,4400,,4269,16003,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26904,NAD83 / UTM zone 4N,2134,projected,4400,,4269,16004,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26905,NAD83 / UTM zone 5N,2135,projected,4400,,4269,16005,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26906,NAD83 / UTM zone 6N,2136,projected,4400,,4269,16006,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26907,NAD83 / UTM zone 7N,2137,projected,4400,,4269,16007,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26908,NAD83 / UTM zone 8N,2138,projected,4400,,4269,16008,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26909,NAD83 / UTM zone 9N,2139,projected,4400,,4269,16009,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26910,NAD83 / UTM zone 10N,2140,projected,4400,,4269,16010,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26911,NAD83 / UTM zone 11N,2141,projected,4400,,4269,16011,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26912,NAD83 / UTM zone 12N,2142,projected,4400,,4269,16012,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26913,NAD83 / UTM zone 13N,2143,projected,4400,,4269,16013,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26914,NAD83 / UTM zone 14N,2144,projected,4400,,4269,16014,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26915,NAD83 / UTM zone 15N,2145,projected,4400,,4269,16015,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26916,NAD83 / UTM zone 16N,2146,projected,4400,,4269,16016,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26917,NAD83 / UTM zone 17N,2147,projected,4400,,4269,16017,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26918,NAD83 / UTM zone 18N,2148,projected,4400,,4269,16018,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26919,NAD83 / UTM zone 19N,2149,projected,4400,,4269,16019,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26920,NAD83 / UTM zone 20N,2150,projected,4400,,4269,16020,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26921,NAD83 / UTM zone 21N,2151,projected,4400,,4269,16021,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26922,NAD83 / UTM zone 22N,2152,projected,4400,,4269,16022,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26923,NAD83 / UTM zone 23N,2153,projected,4400,,4269,16023,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26929,NAD83 / Alabama East,2154,projected,4499,,4269,10131,,,Large and medium scale topographic mapping and engineering survey.,"For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,1995-06-02 00:00:00,,1,0
-26930,NAD83 / Alabama West,2155,projected,4499,,4269,10132,,,Large and medium scale topographic mapping and engineering survey.,"For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,1995-06-02 00:00:00,,1,0
-26931,NAD83 / Alaska zone 1,2156,projected,4499,,4269,15031,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26932,NAD83 / Alaska zone 2,2158,projected,4499,,4269,15032,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26933,NAD83 / Alaska zone 3,2159,projected,4499,,4269,15033,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26934,NAD83 / Alaska zone 4,2160,projected,4499,,4269,15034,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26935,NAD83 / Alaska zone 5,2161,projected,4499,,4269,15035,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26936,NAD83 / Alaska zone 6,2162,projected,4499,,4269,15036,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26937,NAD83 / Alaska zone 7,2163,projected,4499,,4269,15037,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26938,NAD83 / Alaska zone 8,2164,projected,4499,,4269,15038,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26939,NAD83 / Alaska zone 9,2165,projected,4499,,4269,15039,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26940,NAD83 / Alaska zone 10,2157,projected,4499,,4269,15040,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-26941,NAD83 / California zone 1,2175,projected,4499,,4269,10431,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  See code 2225 for equivalent non-metric definition. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,1995-06-02 00:00:00,,1,0
-26942,NAD83 / California zone 2,2176,projected,4499,,4269,10432,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  See code 2226 for equivalent non-metric definition. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,1995-06-02 00:00:00,,1,0
-26943,NAD83 / California zone 3,2177,projected,4499,,4269,10433,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  See code 2227 for equivalent non-metric definition. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,1995-06-02 00:00:00,,1,0
-26944,NAD83 / California zone 4,2178,projected,4499,,4269,10434,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  See code 2228 for equivalent non-metric definition. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,1995-06-02 00:00:00,,1,0
-26945,NAD83 / California zone 5,2182,projected,4499,,4269,10435,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  See code 2229 for equivalent non-metric definition. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,1995-06-02 00:00:00,,1,0
-26946,NAD83 / California zone 6,2180,projected,4499,,4269,10436,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  See code 2230 for equivalent non-metric definition. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,1995-06-02 00:00:00,,1,0
-26948,NAD83 / Arizona East,2167,projected,4499,,4269,10231,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in International feet (note: not US survey feet).  See code 2222 for equivalent non-metric definition. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,2000-03-07 00:00:00,2000.091,1,0
-26949,NAD83 / Arizona Central,2166,projected,4499,,4269,10232,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in International feet (note: not US survey feet).  See code 2223 for equivalent non-metric definition. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,1995-06-02 00:00:00,,1,0
-26950,NAD83 / Arizona West,2168,projected,4499,,4269,10233,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in International feet (note: not US survey feet).  See code 2224 for equivalent non-metric definition. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,1995-06-02 00:00:00,,1,0
-26951,NAD83 / Arkansas North,2169,projected,4499,,4269,10331,,,Large and medium scale topographic mapping and engineering survey.,"For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,1995-06-02 00:00:00,,1,0
-26952,NAD83 / Arkansas South,2170,projected,4499,,4269,10332,,,Large and medium scale topographic mapping and engineering survey.,"For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,1995-06-02 00:00:00,,1,0
-26953,NAD83 / Colorado North,2184,projected,4499,,4269,10531,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  See code 2231 for equivalent non-metric definition. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,1995-06-02 00:00:00,,1,0
-26954,NAD83 / Colorado Central,2183,projected,4499,,4269,10532,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  See code 2232 for equivalent non-metric definition. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,1995-06-02 00:00:00,,1,0
-26955,NAD83 / Colorado South,2185,projected,4499,,4269,10533,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  See code 2233 for equivalent non-metric definition. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,1995-06-02 00:00:00,,1,0
-26956,NAD83 / Connecticut,1377,projected,4499,,4269,10630,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  See code 2234 for equivalent non-metric definition. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,2000-03-07 00:00:00,2000.091,1,0
-26957,NAD83 / Delaware,1378,projected,4499,,4269,10730,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  See code 2235 for equivalent non-metric definition. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,2000-03-07 00:00:00,2000.091,1,0
-26958,NAD83 / Florida East,2186,projected,4499,,4269,10931,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  See code 2236 for equivalent non-metric definition. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,2000-03-07 00:00:00,2000.091,1,0
-26959,NAD83 / Florida West,2188,projected,4499,,4269,10932,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  See code 2237 for equivalent non-metric definition. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,2000-03-07 00:00:00,2000.091,1,0
-26960,NAD83 / Florida North,2187,projected,4499,,4269,10933,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  See code 2238 for equivalent non-metric definition. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,1995-06-02 00:00:00,,1,0
-26961,NAD83 / Hawaii zone 1,1546,projected,4499,,4269,15131,,,Large and medium scale topographic mapping and engineering survey.,"For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,2000-03-07 00:00:00,2000.091,1,0
-26962,NAD83 / Hawaii zone 2,1547,projected,4499,,4269,15132,,,Large and medium scale topographic mapping and engineering survey.,"For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,2000-03-07 00:00:00,2000.091,1,0
-26963,NAD83 / Hawaii zone 3,1548,projected,4499,,4269,15133,,,Large and medium scale topographic mapping and engineering survey.,"For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,2000-03-07 00:00:00,2000.091,1,0
-26964,NAD83 / Hawaii zone 4,1549,projected,4499,,4269,15134,,,Large and medium scale topographic mapping and engineering survey.,"For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,2000-03-07 00:00:00,2000.091,1,0
-26965,NAD83 / Hawaii zone 5,1550,projected,4499,,4269,15135,,,Large and medium scale topographic mapping and engineering survey.,"For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,2000-03-07 00:00:00,2000.091,1,0
-26966,NAD83 / Georgia East,2189,projected,4499,,4269,11031,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  See code 2239 for equivalent non-metric definition. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,2000-03-07 00:00:00,2000.091,1,0
-26967,NAD83 / Georgia West,2190,projected,4499,,4269,11032,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  See code 2240 for equivalent non-metric definition. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,1995-06-02 00:00:00,,1,0
-26968,NAD83 / Idaho East,2192,projected,4499,,4269,11131,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  See code 2241 for equivalent non-metric definition. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,2000-03-07 00:00:00,2000.091,1,0
-26969,NAD83 / Idaho Central,2191,projected,4499,,4269,11132,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  See code 2242 for equivalent non-metric definition. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,2000-03-07 00:00:00,2000.091,1,0
-26970,NAD83 / Idaho West,2193,projected,4499,,4269,11133,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  See code 2243 for equivalent non-metric definition. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,2000-03-07 00:00:00,2000.091,1,0
-26971,NAD83 / Illinois East,2194,projected,4499,,4269,11231,,,Large and medium scale topographic mapping and engineering survey.,"For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,2000-03-07 00:00:00,2000.091,1,0
-26972,NAD83 / Illinois West,2195,projected,4499,,4269,11232,,,Large and medium scale topographic mapping and engineering survey.,"For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,2000-03-07 00:00:00,2000.091,1,0
-26973,NAD83 / Indiana East,2196,projected,4499,,4269,11331,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  See code 2244 for equivalent non-metric definition. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,2000-03-07 00:00:00,2000.091,1,0
-26974,NAD83 / Indiana West,2197,projected,4499,,4269,11332,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  See code 2245 for equivalent non-metric definition. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,2000-03-07 00:00:00,2000.091,1,0
-26975,NAD83 / Iowa North,2198,projected,4499,,4269,11431,,,Large and medium scale topographic mapping and engineering survey.,"For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,1995-06-02 00:00:00,,1,0
-26976,NAD83 / Iowa South,2199,projected,4499,,4269,11432,,,Large and medium scale topographic mapping and engineering survey.,"For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,1995-06-02 00:00:00,,1,0
-26977,NAD83 / Kansas North,2200,projected,4499,,4269,11531,,,Large and medium scale topographic mapping and engineering survey.,"For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,1995-06-02 00:00:00,,1,0
-26978,NAD83 / Kansas South,2201,projected,4499,,4269,11532,,,Large and medium scale topographic mapping and engineering survey.,"For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,1995-06-02 00:00:00,,1,0
-26979,NAD83 / Kentucky North,2202,projected,4499,,4269,11631,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2000-03-07 00:00:00,2000.091,1,1
-26980,NAD83 / Kentucky South,2203,projected,4499,,4269,11632,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  See code 2247 for equivalent non-metric definition. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,1995-06-02 00:00:00,,1,0
-26981,NAD83 / Louisiana North,2204,projected,4499,,4269,11731,,,Large and medium scale topographic mapping and engineering survey.,"For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,1995-06-02 00:00:00,,1,0
-26982,NAD83 / Louisiana South,2529,projected,4499,,4269,11732,,,Large and medium scale topographic mapping and engineering survey.,"For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,1995-06-02 00:00:00,,1,0
-26983,NAD83 / Maine East,2206,projected,4499,,4269,11831,,,Large and medium scale topographic mapping and engineering survey.,"For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,2000-03-07 00:00:00,2000.091,1,0
-26984,NAD83 / Maine West,2207,projected,4499,,4269,11832,,,Large and medium scale topographic mapping and engineering survey.,"For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,2000-03-07 00:00:00,2000.091,1,0
-26985,NAD83 / Maryland,1389,projected,4499,,4269,11930,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  See code 2248 for equivalent non-metric definition. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,2000-03-07 00:00:00,2000.091,1,0
-26986,NAD83 / Massachusetts Mainland,2209,projected,4499,,4269,12031,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  See code 2249 for equivalent non-metric definition. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,1995-06-02 00:00:00,,1,0
-26987,NAD83 / Massachusetts Island,2208,projected,4499,,4269,12032,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  See code 2250 for equivalent non-metric definition. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,1995-06-02 00:00:00,,1,0
-26988,NAD83 / Michigan North,1723,projected,4499,,4269,12141,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in International feet (note: not US survey feet).  See code 2251 for equivalent non-metric definition. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,1995-06-02 00:00:00,,1,0
-26989,NAD83 / Michigan Central,1724,projected,4499,,4269,12142,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in International feet (note: not US survey feet).  See code 2252 for equivalent non-metric definition. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,1995-06-02 00:00:00,,1,0
-26990,NAD83 / Michigan South,1725,projected,4499,,4269,12143,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in International feet (note: not US survey feet).  See code 2253 for equivalent non-metric definition. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,1995-06-02 00:00:00,,1,0
-26991,NAD83 / Minnesota North,2214,projected,4499,,4269,12231,,,Large and medium scale topographic mapping and engineering survey.,"For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,1995-06-02 00:00:00,,1,0
-26992,NAD83 / Minnesota Central,2213,projected,4499,,4269,12232,,,Large and medium scale topographic mapping and engineering survey.,"For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,1995-06-02 00:00:00,,1,0
-26993,NAD83 / Minnesota South,2215,projected,4499,,4269,12233,,,Large and medium scale topographic mapping and engineering survey.,"For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,1995-06-02 00:00:00,,1,0
-26994,NAD83 / Mississippi East,2216,projected,4499,,4269,12331,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  See code 2254 for equivalent non-metric definition. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,1995-06-02 00:00:00,,1,0
-26995,NAD83 / Mississippi West,2217,projected,4499,,4269,12332,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  See code 2255 for equivalent non-metric definition. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,1995-06-02 00:00:00,,1,0
-26996,NAD83 / Missouri East,2219,projected,4499,,4269,12431,,,Large and medium scale topographic mapping and engineering survey.,"For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,2000-03-07 00:00:00,2000.091,1,0
-26997,NAD83 / Missouri Central,2218,projected,4499,,4269,12432,,,Large and medium scale topographic mapping and engineering survey.,"For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,1995-06-02 00:00:00,,1,0
-26998,NAD83 / Missouri West,2220,projected,4499,,4269,12433,,,Large and medium scale topographic mapping and engineering survey.,"For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,2000-03-07 00:00:00,2000.091,1,0
-27038,Nahrwan 1967 / UTM zone 38N,1739,projected,4400,,4270,16038,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1996-04-12 00:00:00,,1,0
-27039,Nahrwan 1967 / UTM zone 39N,1749,projected,4400,,4270,16039,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1996-04-12 00:00:00,96.12,1,0
-27040,Nahrwan 1967 / UTM zone 40N,1750,projected,4400,,4270,16040,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-27120,Naparima 1972 / UTM zone 20N,1322,projected,4400,,4271,16020,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2000-03-07 00:00:00,2000.351,1,0
-27200,NZGD49 / New Zealand Map Grid,1175,projected,4400,,4272,19917,,,Large and medium scale topographic mapping and engineering survey.,Supersedes 27291 (NZGD49 / North Island Grid) and 27292 (NZGD49 / South Island Grid) from 1972.,,EPSG,2000-10-19 00:00:00,2000.702,1,0
-27205,NZGD49 / Mount Eden Circuit,1501,projected,4500,,4272,17901,,,Cadastral survey.,Superseded Imperial measure version in 1972.  Superseded by NZGD2000 / Mount Eden Circuit 2000 (code 2105) from March 2000.,Land Information New Zealand OSG Technical Report 8; 16 April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-27206,NZGD49 / Bay of Plenty Circuit,1500,projected,4500,,4272,17902,,,Cadastral survey.,Superseded Imperial measure version in 1972.  Superseded by NZGD2000 / Bay of Plenty Circuit 2000 (code 2106) from March 2000.,Land Information New Zealand OSG Technical Report 8; 16 April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-27207,NZGD49 / Poverty Bay Circuit,1500,projected,4500,,4272,17903,,,Cadastral survey.,Superseded Imperial measure version in 1972.  Superseded by NZGD2000 / Poverty Bay Circuit 2000 (code 2107) from March 2000.,Land Information New Zealand OSG Technical Report 8; 16 April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-27208,NZGD49 / Hawkes Bay Circuit,1500,projected,4500,,4272,17904,,,Cadastral survey.,Superseded Hawkes Bay 1931 datum with Imperial measure version of projection in 1972.  Superseded by NZGD2000 / Hawkes Bay Circuit 2000 (code 2108) from March 2000.,Land Information New Zealand OSG Technical Report 8; 16 April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-27209,NZGD49 / Taranaki Circuit,1500,projected,4500,,4272,17905,,,Cadastral survey.,Superseded Imperial measure version in 1972.  Superseded by NZGD2000 / Taranaki Circuit 2000 (code 2109) from March 2000.,Land Information New Zealand OSG Technical Report 8; 16 April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-27210,NZGD49 / Tuhirangi Circuit,1500,projected,4500,,4272,17906,,,Cadastral survey.,Superseded Imperial measure version in 1972.  Superseded by NZGD2000 / Tuhirangi Circuit 2000 (code 2110) from March 2000.,Land Information New Zealand OSG Technical Report 8; 16 April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-27211,NZGD49 / Wanganui Circuit,1500,projected,4500,,4272,17907,,,Cadastral survey.,Superseded Imperial measure version in 1972.  Superseded by NZGD2000 / Wanganui Circuit 2000 (code 2111) from March 2000.,Land Information New Zealand OSG Technical Report 8; 16 April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-27212,NZGD49 / Wairarapa Circuit,1500,projected,4500,,4272,17908,,,Cadastral survey.,Superseded Imperial measure version in 1972.  Superseded by NZGD2000 / Wairarapa Circuit 2000 (code 2112) from March 2000.,Land Information New Zealand OSG Technical Report 8; 16 April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-27213,NZGD49 / Wellington Circuit,1500,projected,4500,,4272,17909,,,Cadastral survey.,Superseded Imperial measure version in 1972.  Superseded by NZGD2000 / Wellington Circuit 2000 (code 2113) from March 2000.,Land Information New Zealand OSG Technical Report 8; 16 April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-27214,NZGD49 / Collingwood Circuit,1501,projected,4500,,4272,17910,,,Cadastral survey.,Superseded Imperial measure version in 1972.  Superseded by NZGD2000 / Collingwood Circuit 2000 (code 2114) from March 2000.,Land Information New Zealand OSG Technical Report 8; 16 April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-27215,NZGD49 / Nelson Circuit,1501,projected,4500,,4272,17911,,,Cadastral survey.,Superseded Imperial measure version in 1972.  Superseded by NZGD2000 / Nelson Circuit 2000 (code 2115) from March 2000.,Land Information New Zealand OSG Technical Report 8; 16 April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-27216,NZGD49 / Karamea Circuit,1501,projected,4500,,4272,17912,,,Cadastral survey.,Superseded Imperial measure version in 1972.  Superseded by NZGD2000 / Karamea Circuit 2000 (code 2116) from March 2000.,Land Information New Zealand OSG Technical Report 8; 16 April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-27217,NZGD49 / Buller Circuit,1501,projected,4500,,4272,17913,,,Cadastral survey.,Superseded Imperial measure version in 1972.  Superseded by NZGD2000 / Buller Circuit 2000 (code 2117) from March 2000.,Land Information New Zealand OSG Technical Report 8; 16 April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-27218,NZGD49 / Grey Circuit,1501,projected,4500,,4272,17914,,,Cadastral survey.,Superseded Imperial measure version in 1972.  Superseded by NZGD2000 / Grey Circuit 2000 (code 2118) from March 2000.,Land Information New Zealand OSG Technical Report 8; 16 April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-27219,NZGD49 / Amuri Circuit,1501,projected,4500,,4272,17915,,,Cadastral survey.,Superseded Imperial measure version in 1972.  Superseded by NZGD2000 / Amuri Circuit 2000 (code 2119) from March 2000.,Land Information New Zealand OSG Technical Report 8; 16 April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-27220,NZGD49 / Marlborough Circuit,1501,projected,4500,,4272,17916,,,Cadastral survey.,Superseded Imperial measure version in 1972.  Superseded by NZGD2000 / Marlborough Circuit 2000 (code 2120) from March 2000.,Land Information New Zealand OSG Technical Report 8; 16 April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-27221,NZGD49 / Hokitika Circuit,1501,projected,4500,,4272,17917,,,Cadastral survey.,Superseded Imperial measure version in 1972.  Superseded by NZGD2000 / Hokitika Circuit 2000 (code 2121) from March 2000.,Land Information New Zealand OSG Technical Report 8; 16 April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-27222,NZGD49 / Okarito Circuit,1501,projected,4500,,4272,17918,,,Cadastral survey.,Superseded Imperial measure version in 1972.  Superseded by NZGD2000 / Okarito Circuit 2000 (code 2122) from March 2000.,Land Information New Zealand OSG Technical Report 8; 16 April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-27223,NZGD49 / Jacksons Bay Circuit,1501,projected,4500,,4272,17919,,,Cadastral survey.,Superseded Imperial measure version in 1972.  Superseded by NZGD2000 / Jacksons Bay Circuit 2000 (code 2123) from March 2000.,Land Information New Zealand OSG Technical Report 8; 16 April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-27224,NZGD49 / Mount Pleasant Circuit,1501,projected,4500,,4272,17920,,,Cadastral survey.,Superseded Imperial measure version in 1972.  Superseded by NZGD2000 / Mount Pleasant Circuit 2000 (code 2124) from March 2000.,Land Information New Zealand OSG Technical Report 8; 16 April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-27225,NZGD49 / Gawler Circuit,1501,projected,4500,,4272,17921,,,Cadastral survey.,Superseded Imperial measure version in 1972.  Superseded by NZGD2000 / Gawler Circuit 2000 (code 2125) from March 2000.,Land Information New Zealand OSG Technical Report 8; 16 April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-27226,NZGD49 / Timaru Circuit,1501,projected,4500,,4272,17922,,,Cadastral survey.,Superseded Imperial measure version in 1972.  Superseded by NZGD2000 / Timaru Circuit 2000 (code 2126) from March 2000.,Land Information New Zealand OSG Technical Report 8; 16 April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-27227,NZGD49 / Lindis Peak Circuit,1501,projected,4500,,4272,17923,,,Cadastral survey.,Superseded Imperial measure version in 1972.  Superseded by NZGD2000 / Lindis Peak Circuit 2000 (code 2127) from March 2000.,Land Information New Zealand OSG Technical Report 8; 16 April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-27228,NZGD49 / Mount Nicholas Circuit,1501,projected,4500,,4272,17924,,,Cadastral survey.,Superseded Imperial measure version in 1972.  Superseded by NZGD2000 / Mount Nicholas Circuit 2000 (code 2128) from March 2000.,Land Information New Zealand OSG Technical Report 8; 16 April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-27229,NZGD49 / Mount York Circuit,1501,projected,4500,,4272,17925,,,Cadastral survey.,Superseded Imperial measure version in 1972.  Superseded by NZGD2000 / Mount York Circuit 2000 (code 2129) from March 2000.,Land Information New Zealand OSG Technical Report 8; 16 April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-27230,NZGD49 / Observation Point Circuit,1501,projected,4500,,4272,17926,,,Cadastral survey.,Superseded Imperial measure version in 1972.  Superseded by NZGD2000 / Observation Point Circuit 2000 (code 2130) from March 2000.,Land Information New Zealand OSG Technical Report 8; 16 April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-27231,NZGD49 / North Taieri Circuit,1501,projected,4500,,4272,17927,,,Cadastral survey.,Superseded Imperial measure version in 1972.  Superseded by NZGD2000 / North Taieri Circuit 2000 (code 2131) from March 2000.,Land Information New Zealand OSG Technical Report 8; 16 April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-27232,NZGD49 / Bluff Circuit,1501,projected,4500,,4272,17928,,,Cadastral survey.,Superseded Imperial measure version in 1972.  Superseded by NZGD2000 / Bluff Circuit 2000 (code 2132) from March 2000.,Land Information New Zealand OSG Technical Report 8; 16 April 1999.,EPSG,2000-10-19 00:00:00,,1,0
-27258,NZGD49 / UTM zone 58S,1502,projected,4400,,4272,16158,,,Oil exploration.,Superseded by NZGD2000 / UTM zone 58S (code 2133) from March 2000.,,EPSG,2000-10-19 00:00:00,,1,0
-27259,NZGD49 / UTM zone 59S,1503,projected,4400,,4272,16159,,,Oil exploration.,Superseded by NZGD2000 / UTM zone 59S (code 2134) from March 2000.,,EPSG,2000-10-19 00:00:00,,1,0
-27260,NZGD49 / UTM zone 60S,1504,projected,4400,,4272,16160,,,Oil exploration.,Superseded by NZGD2000 / UTM zone 60S (code 2135) from March 2000.,,EPSG,2000-10-19 00:00:00,,1,0
-27291,NZGD49 / North Island Grid,1500,projected,4409,,4272,18141,,,Large and medium scale topographic mapping and engineering survey.,Sears 1922 British foot-metre conversion factor applied to ellipsoid.  Superseded by 27200 (GD49 / New Zealand Map Grid) in 1972.,,EPSG,2000-10-19 00:00:00,97.231 2000.702,1,0
-27292,NZGD49 / South Island Grid,1501,projected,4409,,4272,18142,,,Large and medium scale topographic mapping and engineering survey.,Sears 1922 British foot-metre conversion factor applied to ellipsoid.  Superseded by 27200 (GD49 / New Zealand Map Grid) in 1972.,,EPSG,2000-10-19 00:00:00,97.231 2000.702,1,0
-27391,NGO 1948 (Oslo) / NGO zone I,1741,projected,4531,,4817,18221,,,Large (>1:50000) scale mapping and cadastral work.,To be phased out and replaced by ETRF89 / UTM zone 32N.,,EPSG,1999-10-20 00:00:00,,1,0
-27392,NGO 1948 (Oslo) / NGO zone II,1742,projected,4531,,4817,18222,,,Large (>1:50000) scale mapping and cadastral work.,To be phased out and replaced by ETRF89 / UTM zone 32N.,,EPSG,1999-10-20 00:00:00,,1,0
-27393,NGO 1948 (Oslo) / NGO zone III,1743,projected,4531,,4817,18223,,,Large (>1:50000) scale mapping and cadastral work.,To be phased out and replaced by ETRF89 / UTM zone 32N.,,EPSG,1999-10-20 00:00:00,,1,0
-27394,NGO 1948 (Oslo) / NGO zone IV,1744,projected,4531,,4817,18224,,,Large (>1:50000) scale mapping and cadastral work.,To be phased out and replaced by ETRF89 / UTM zone 32N and ETRF89 / UTM zone 33N.,,EPSG,1999-10-20 00:00:00,,1,0
-27395,NGO 1948 (Oslo) / NGO zone V,1745,projected,4531,,4817,18225,,,Large (>1:50000) scale mapping and cadastral work.,To be phased out and replaced by ETRF89 / UTM zone 33N and ETRF89 / UTM zone 34N.,,EPSG,1999-10-20 00:00:00,,1,0
-27396,NGO 1948 (Oslo) / NGO zone VI,1746,projected,4531,,4817,18226,,,Large (>1:50000) scale mapping and cadastral work.,To be phased out and replaced by ETRF89 / UTM zone 34N.,,EPSG,1999-10-20 00:00:00,,1,0
-27397,NGO 1948 (Oslo) / NGO zone VII,1747,projected,4531,,4817,18227,,,Large (>1:50000) scale mapping and cadastral work.,To be phased out and replaced by ETRF89 / UTM zone 34N and ETRF89 / UTM zone 35N.,,EPSG,1999-10-20 00:00:00,,1,0
-27398,NGO 1948 (Oslo) / NGO zone VIII,1748,projected,4531,,4817,18228,,,Large (>1:50000) scale mapping and cadastral work.,To be phased out and replaced by ETRF89 / UTM zone 35N.,,EPSG,1999-10-20 00:00:00,,1,0
-27429,Datum 73 / UTM zone 29N,1294,projected,4400,,4274,16029,,,Large and medium scale topographic mapping and engineering survey.,,Instituto Geografico e Cadastral; Lisbon,EPSG,1995-06-02 00:00:00,,1,0
-27492,Datum 73 / Modified Portuguese Grid,1294,projected,4530,,4274,19974,,,Large and medium scale topographic mapping and engineering survey.,,Instituto Geografico e Cadastral Lisbon via EuroGeographics; http://crs.ifag.de/,EPSG,2001-06-05 00:00:00,,1,0
-27500,ATF (Paris) / Nord de Guerre,1369,projected,4499,,4901,19903,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-27561,NTF (Paris) / Lambert Nord France,1731,projected,4499,,4807,18091,,,Large and medium scale topographic mapping and engineering survey.,Superseded by NTF (Paris) / France zone I (code 27571) from 1972.,,EPSG,2001-11-06 00:00:00,,1,0
-27562,NTF (Paris) / Lambert Centre France,1732,projected,4499,,4807,18092,,,Large and medium scale topographic mapping and engineering survey.,Superseded by NTF (Paris) / France zone II (code 27572) from 1972.,,EPSG,2001-11-06 00:00:00,,1,0
-27563,NTF (Paris) / Lambert Sud France,1733,projected,4499,,4807,18093,,,Large and medium scale topographic mapping and engineering survey.,Superseded by NTF (Paris) / France zone III (code 27573) from 1972.,,EPSG,2001-11-06 00:00:00,,1,0
-27564,NTF (Paris) / Lambert Corse,1327,projected,4499,,4807,18094,,,Large and medium scale topographic mapping and engineering survey.,Superseded by NTF (Paris) / France zone IV (code 27574) from 1972.,,EPSG,2001-11-06 00:00:00,,1,0
-27571,NTF (Paris) / Lambert zone I,1731,projected,4499,,4807,18081,,,Large and medium scale topographic mapping and engineering survey.,Introduced 1972. Supersedes NTF (Paris) / Lambert Nord France (code 27561).,,EPSG,2001-11-06 00:00:00,,1,0
-27572,NTF (Paris) / Lambert zone II,1734,projected,4499,,4807,18082,,,Large and medium scale topographic mapping and engineering survey.,Introduced 1972. Supersedes NTF (Paris) / Lambert Centre France (code 27562).,,EPSG,2001-11-06 00:00:00,,1,0
-27573,NTF (Paris) / Lambert zone III,1733,projected,4499,,4807,18083,,,Large and medium scale topographic mapping and engineering survey.,Introduced 1972. Supersedes NTF (Paris) / Lambert Sud France (code 27563).,,EPSG,2001-11-06 00:00:00,,1,0
-27574,NTF (Paris) / Lambert zone IV,1327,projected,4499,,4807,18084,,,Large and medium scale topographic mapping and engineering survey.,Introduced 1972. Supersedes NTF (Paris) / Lambert Corse (code 27564).,,EPSG,2001-11-06 00:00:00,,1,0
-27581,NTF (Paris) / France I,1731,projected,4499,,4807,18081,,,Large and medium scale topographic mapping and engineering survey.,Introduced 1972. Supersedes NTF / Nord France (code 27591).,,EPSG,1996-04-12 00:00:00,95.26,1,1
-27582,NTF (Paris) / France II,1734,projected,4499,,4807,18082,,,Large and medium scale topographic mapping and engineering survey.,Introduced 1972. Supersedes NTF / Centre France (code 27592).,,EPSG,1996-04-12 00:00:00,95.26,1,1
-27583,NTF (Paris) / France III,1733,projected,4499,,4807,18083,,,Large and medium scale topographic mapping and engineering survey.,Introduced 1972. Supersedes NTF / Sud France (code 27593).,,EPSG,1996-04-12 00:00:00,95.26,1,1
-27584,NTF (Paris) / France IV,1327,projected,4499,,4807,18084,,,Large and medium scale topographic mapping and engineering survey.,Introduced 1972. Supersedes NTF / Corse (code 27594).,,EPSG,1996-04-12 00:00:00,,1,1
-27591,NTF (Paris) / Nord France,1731,projected,4499,,4807,18091,,,Large and medium scale topographic mapping and engineering survey.,Superseded by NTF / France I (code 27581) from 1972.,,EPSG,1996-04-12 00:00:00,95.26,1,1
-27592,NTF (Paris) / Centre France,1732,projected,4499,,4807,18092,,,Large and medium scale topographic mapping and engineering survey.,Superseded by NTF / France II (code 27582) from 1972.,,EPSG,1996-04-12 00:00:00,95.26,1,1
-27593,NTF (Paris) / Sud France,1733,projected,4499,,4807,18093,,,Large and medium scale topographic mapping and engineering survey.,Superseded by NTF / France III (code 27583) from 1972.,,EPSG,1996-04-12 00:00:00,95.26,1,1
-27594,NTF (Paris) / Corse,1327,projected,4499,,4807,18094,,,Large and medium scale topographic mapping and engineering survey.,Superseded by NTF / France IV (code 27584) from 1972.,,EPSG,1996-04-12 00:00:00,,1,1
-27700,OSGB 1936 / British National Grid,1264,projected,4400,,4277,19916,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-28191,Palestine 1923 / Palestine Grid,1356,projected,4400,,4281,18201,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1999-04-22 00:00:00,,1,0
-28192,Palestine 1923 / Palestine Belt,1356,projected,4400,,4281,18202,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1999-04-22 00:00:00,,1,0
-28193,Palestine 1923 / Israeli CS Grid,2603,projected,4400,,4281,18203,,,Large and medium scale topographic mapping and engineering survey.,Superseded by Israeli TM Grid (EPSG code 2039).,Survey of Israel.,EPSG,2002-06-22 00:00:00,2002.34,1,0
-28232,Pointe Noire / UTM zone 32S,1072,projected,4400,,4282,16132,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,2002.05,1,0
-28348,GDA94 / MGA zone 48,1556,projected,4400,,4283,17348,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-28349,GDA94 / MGA zone 49,1557,projected,4400,,4283,17349,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-28350,GDA94 / MGA zone 50,1558,projected,4400,,4283,17350,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-28351,GDA94 / MGA zone 51,1559,projected,4400,,4283,17351,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-28352,GDA94 / MGA zone 52,1560,projected,4400,,4283,17352,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-28353,GDA94 / MGA zone 53,1561,projected,4400,,4283,17353,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-28354,GDA94 / MGA zone 54,1562,projected,4400,,4283,17354,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-28355,GDA94 / MGA zone 55,1563,projected,4400,,4283,17355,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-28356,GDA94 / MGA zone 56,1564,projected,4400,,4283,17356,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-28357,GDA94 / MGA zone 57,1565,projected,4400,,4283,17357,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-28358,GDA94 / MGA zone 58,1566,projected,4400,,4283,17358,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-28402,Pulkovo 1942 / Gauss-Kruger zone 2,1805,projected,4530,,4284,16202,,,Military mapping.,Also found with truncated fase easting - see Pulkovo 1942 / Gauss-Kruger CM 9E (code 2492).,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-28403,Pulkovo 1942 / Gauss-Kruger zone 3,1792,projected,4530,,4284,16203,,,Military mapping.,Also found with truncated fase easting - see Pulkovo 1942 / Gauss-Kruger CM 15E (code 2493).,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-28404,Pulkovo 1942 / Gauss-Kruger zone 4,1793,projected,4530,,4284,16204,,,Medium scale topographic mapping.,Also found with truncated fase easting - see Pulkovo 1942 / Gauss-Kruger CM 21E (code 2494).,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-28405,Pulkovo 1942 / Gauss-Kruger zone 5,1794,projected,4530,,4284,16205,,,Medium scale topographic mapping.,Also found with truncated fase easting - see Pulkovo 1942 / Gauss-Kruger CM 27E (code 2495).,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-28406,Pulkovo 1942 / Gauss-Kruger zone 6,1795,projected,4530,,4284,16206,,,Medium scale topographic mapping.,Also found with truncated fase easting - see Pulkovo 1942 / Gauss-Kruger CM 33E (code 2496).,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-28407,Pulkovo 1942 / Gauss-Kruger zone 7,1796,projected,4530,,4284,16207,,,Medium scale topographic mapping.,Also found with truncated fase easting - see Pulkovo 1942 / Gauss-Kruger CM 39E (code 2497).,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-28408,Pulkovo 1942 / Gauss-Kruger zone 8,1797,projected,4530,,4284,16208,,,Medium scale topographic mapping.,Also found with truncated fase easting - see Pulkovo 1942 / Gauss-Kruger CM 45E (code 2498).,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-28409,Pulkovo 1942 / Gauss-Kruger zone 9,1798,projected,4530,,4284,16209,,,Medium scale topographic mapping.,Also found with truncated fase easting - see Pulkovo 1942 / Gauss-Kruger CM 51E (code 2499).,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-28410,Pulkovo 1942 / Gauss-Kruger zone 10,1799,projected,4530,,4284,16210,,,Medium scale topographic mapping.,Also found with truncated fase easting - see Pulkovo 1942 / Gauss-Kruger CM 57E (code 2500).,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-28411,Pulkovo 1942 / Gauss-Kruger zone 11,1800,projected,4530,,4284,16211,,,Medium scale topographic mapping.,Also found with truncated fase easting - see Pulkovo 1942 / Gauss-Kruger CM 63E (code 2501).,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-28412,Pulkovo 1942 / Gauss-Kruger zone 12,1801,projected,4530,,4284,16212,,,Medium scale topographic mapping.,Also found with truncated fase easting - see Pulkovo 1942 / Gauss-Kruger CM 69E (code 2502).,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-28413,Pulkovo 1942 / Gauss-Kruger zone 13,1802,projected,4530,,4284,16213,,,Medium scale topographic mapping.,Also found with truncated fase easting - see Pulkovo 1942 / Gauss-Kruger CM 75E (code 2503).,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-28414,Pulkovo 1942 / Gauss-Kruger zone 14,1803,projected,4530,,4284,16214,,,Medium scale topographic mapping.,Also found with truncated fase easting - see Pulkovo 1942 / Gauss-Kruger CM 81E (code 2504).,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-28415,Pulkovo 1942 / Gauss-Kruger zone 15,1804,projected,4530,,4284,16215,,,Medium scale topographic mapping.,Also found with truncated fase easting - see Pulkovo 1942 / Gauss-Kruger CM 87E (code 2505).,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-28416,Pulkovo 1942 / Gauss-Kruger zone 16,1775,projected,4530,,4284,16216,,,Medium scale topographic mapping.,Also found with truncated fase easting - see Pulkovo 1942 / Gauss-Kruger CM 93E (code 2506).,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-28417,Pulkovo 1942 / Gauss-Kruger zone 17,1776,projected,4530,,4284,16217,,,Medium scale topographic mapping.,Also found with truncated fase easting - see Pulkovo 1942 / Gauss-Kruger CM 99E (code 2507).,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-28418,Pulkovo 1942 / Gauss-Kruger zone 18,1777,projected,4530,,4284,16218,,,Medium scale topographic mapping.,Also found with truncated fase easting - see Pulkovo 1942 / Gauss-Kruger CM 105E (code 2508).,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-28419,Pulkovo 1942 / Gauss-Kruger zone 19,1778,projected,4530,,4284,16219,,,Medium scale topographic mapping.,Also found with truncated fase easting - see Pulkovo 1942 / Gauss-Kruger CM 111E (code 2509).,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-28420,Pulkovo 1942 / Gauss-Kruger zone 20,1779,projected,4530,,4284,16220,,,Medium scale topographic mapping.,Also found with truncated fase easting - see Pulkovo 1942 / Gauss-Kruger CM 117E (code 2510).,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-28421,Pulkovo 1942 / Gauss-Kruger zone 21,1780,projected,4530,,4284,16221,,,Medium scale topographic mapping.,Also found with truncated fase easting - see Pulkovo 1942 / Gauss-Kruger CM 123E (code 2511).,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-28422,Pulkovo 1942 / Gauss-Kruger zone 22,1781,projected,4530,,4284,16222,,,Medium scale topographic mapping.,Also found with truncated fase easting - see Pulkovo 1942 / Gauss-Kruger CM 129E (code 2512).,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-28423,Pulkovo 1942 / Gauss-Kruger zone 23,1782,projected,4530,,4284,16223,,,Medium scale topographic mapping.,Also found with truncated fase easting - see Pulkovo 1942 / Gauss-Kruger CM 135E (code 2513).,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-28424,Pulkovo 1942 / Gauss-Kruger zone 24,1783,projected,4530,,4284,16224,,,Medium scale topographic mapping.,Also found with truncated fase easting - see Pulkovo 1942 / Gauss-Kruger CM 141E (code 2514).,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-28425,Pulkovo 1942 / Gauss-Kruger zone 25,1784,projected,4530,,4284,16225,,,Medium scale topographic mapping.,Also found with truncated fase easting - see Pulkovo 1942 / Gauss-Kruger CM 147E (code 2515).,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-28426,Pulkovo 1942 / Gauss-Kruger zone 26,1785,projected,4530,,4284,16226,,,Medium scale topographic mapping.,Also found with truncated fase easting - see Pulkovo 1942 / Gauss-Kruger CM 153E (code 2516).,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-28427,Pulkovo 1942 / Gauss-Kruger zone 27,1786,projected,4530,,4284,16227,,,Medium scale topographic mapping.,Also found with truncated fase easting - see Pulkovo 1942 / Gauss-Kruger CM 159E (code 2517).,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-28428,Pulkovo 1942 / Gauss-Kruger zone 28,1787,projected,4530,,4284,16228,,,Medium scale topographic mapping.,Also found with truncated fase easting - see Pulkovo 1942 / Gauss-Kruger CM 165E (code 2518).,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-28429,Pulkovo 1942 / Gauss-Kruger zone 29,1788,projected,4530,,4284,16229,,,Medium scale topographic mapping.,Also found with truncated fase easting - see Pulkovo 1942 / Gauss-Kruger CM 171E (code 2519).,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-28430,Pulkovo 1942 / Gauss-Kruger zone 30,1789,projected,4530,,4284,16230,,,Medium scale topographic mapping.,Also found with truncated fase easting - see Pulkovo 1942 / Gauss-Kruger CM 177E (code 2520).,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-28431,Pulkovo 1942 / Gauss-Kruger zone 31,1790,projected,4530,,4284,16231,,,Medium scale topographic mapping.,Also found with truncated fase easting - see Pulkovo 1942 / Gauss-Kruger CM 177W (code 2521).,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-28432,Pulkovo 1942 / Gauss-Kruger zone 32,1791,projected,4530,,4284,16232,,,Medium scale topographic mapping.,Also found with truncated fase easting - see Pulkovo 1942 / Gauss-Kruger CM 171W (code 2522).,EPSG,EPSG,2002-06-22 00:00:00,2002.36,1,0
-28462,Pulkovo 1942 / Gauss-Kruger 2N,1805,projected,4530,,4284,16302,,,Truncated form of Gauss-Kruger zone 2,,,EPSG,1998-06-30 00:00:00,,1,1
-28463,Pulkovo 1942 / Gauss-Kruger 3N,1792,projected,4530,,4284,16303,,,Military mapping.,Truncated form of Gauss-Kruger zone 3,,EPSG,1998-06-30 00:00:00,,1,1
-28464,Pulkovo 1942 / Gauss-Kruger 4N,1793,projected,4530,,4284,16304,,,Military mapping.,,,EPSG,1995-06-02 00:00:00,,1,1
-28465,Pulkovo 1942 / Gauss-Kruger 5N,1794,projected,4530,,4284,16305,,,Truncated form of Gauss-Kruger zone 5,,,EPSG,1995-06-02 00:00:00,,1,1
-28466,Pulkovo 1942 / Gauss-Kruger 6N,1795,projected,4530,,4284,16306,,,Truncated form of Gauss-Kruger zone 6,,,EPSG,1995-06-02 00:00:00,,1,1
-28467,Pulkovo 1942 / Gauss-Kruger 7N,1796,projected,4530,,4284,16307,,,Truncated form of Gauss-Kruger zone 7,,,EPSG,1995-06-02 00:00:00,,1,1
-28468,Pulkovo 1942 / Gauss-Kruger 8N,1797,projected,4530,,4284,16308,,,Truncated form of Gauss-Kruger zone 8,,,EPSG,1995-06-02 00:00:00,,1,1
-28469,Pulkovo 1942 / Gauss-Kruger 9N,1798,projected,4530,,4284,16309,,,Truncated form of Gauss-Kruger zone 9,,,EPSG,1995-06-02 00:00:00,,1,1
-28470,Pulkovo 1942 / Gauss-Kruger 10N,1799,projected,4530,,4284,16310,,,Truncated form of Gauss-Kruger zone 10,,,EPSG,1995-06-02 00:00:00,,1,1
-28471,Pulkovo 1942 / Gauss-Kruger 11N,1800,projected,4530,,4284,16311,,,Truncated form of Gauss-Kruger zone 11,,,EPSG,1995-06-02 00:00:00,,1,1
-28472,Pulkovo 1942 / Gauss-Kruger 12N,1801,projected,4530,,4284,16312,,,Truncated form of Gauss-Kruger zone 12,,,EPSG,1995-06-02 00:00:00,,1,1
-28473,Pulkovo 1942 / Gauss-Kruger 13N,1802,projected,4530,,4284,16313,,,Truncated form of Gauss-Kruger zone 13,,,EPSG,1995-06-02 00:00:00,,1,1
-28474,Pulkovo 1942 / Gauss-Kruger 14N,1803,projected,4530,,4284,16314,,,Truncated form of Gauss-Kruger zone 14,,,EPSG,1995-06-02 00:00:00,,1,1
-28475,Pulkovo 1942 / Gauss-Kruger 15N,1804,projected,4530,,4284,16315,,,Truncated form of Gauss-Kruger zone 15,,,EPSG,1995-06-02 00:00:00,,1,1
-28476,Pulkovo 1942 / Gauss-Kruger 16N,1775,projected,4530,,4284,16316,,,Truncated form of Gauss-Kruger zone 16,,,EPSG,1995-06-02 00:00:00,,1,1
-28477,Pulkovo 1942 / Gauss-Kruger 17N,1776,projected,4530,,4284,16317,,,Truncated form of Gauss-Kruger zone 17,,,EPSG,1995-06-02 00:00:00,,1,1
-28478,Pulkovo 1942 / Gauss-Kruger 18N,1777,projected,4530,,4284,16318,,,Truncated form of Gauss-Kruger zone 18,,,EPSG,1995-06-02 00:00:00,,1,1
-28479,Pulkovo 1942 / Gauss-Kruger 19N,1778,projected,4530,,4284,16319,,,Truncated form of Gauss-Kruger zone 19,,,EPSG,1995-06-02 00:00:00,,1,1
-28480,Pulkovo 1942 / Gauss-Kruger 20N,1779,projected,4530,,4284,16320,,,Truncated form of Gauss-Kruger zone 20,,,EPSG,1995-06-02 00:00:00,,1,1
-28481,Pulkovo 1942 / Gauss-Kruger 21N,1780,projected,4530,,4284,16321,,,Truncated form of Gauss-Kruger zone 21,,,EPSG,1995-06-02 00:00:00,,1,1
-28482,Pulkovo 1942 / Gauss-Kruger 22N,1781,projected,4530,,4284,16322,,,Truncated form of Gauss-Kruger zone 22,,,EPSG,1995-06-02 00:00:00,,1,1
-28483,Pulkovo 1942 / Gauss-Kruger 23N,1782,projected,4530,,4284,16323,,,Truncated form of Gauss-Kruger zone 23,,,EPSG,1995-06-02 00:00:00,,1,1
-28484,Pulkovo 1942 / Gauss-Kruger 24N,1783,projected,4530,,4284,16324,,,Truncated form of Gauss-Kruger zone 24,,,EPSG,1995-06-02 00:00:00,,1,1
-28485,Pulkovo 1942 / Gauss-Kruger 25N,1784,projected,4530,,4284,16325,,,Truncated form of Gauss-Kruger zone 25,,,EPSG,1995-06-02 00:00:00,,1,1
-28486,Pulkovo 1942 / Gauss-Kruger 26N,1785,projected,4530,,4284,16326,,,Truncated form of Gauss-Kruger zone 26,,,EPSG,1995-06-02 00:00:00,,1,1
-28487,Pulkovo 1942 / Gauss-Kruger 27N,1786,projected,4530,,4284,16327,,,Truncated form of Gauss-Kruger zone 27,,,EPSG,1995-06-02 00:00:00,,1,1
-28488,Pulkovo 1942 / Gauss-Kruger 28N,1787,projected,4530,,4284,16328,,,Truncated form of Gauss-Kruger zone 28,,,EPSG,1995-06-02 00:00:00,,1,1
-28489,Pulkovo 1942 / Gauss-Kruger 29N,1788,projected,4530,,4284,16329,,,Truncated form of Gauss-Kruger zone 29,,,EPSG,1995-06-02 00:00:00,,1,1
-28490,Pulkovo 1942 / Gauss-Kruger 30N,1789,projected,4530,,4284,16330,,,Truncated form of Gauss-Kruger zone 30,,,EPSG,1995-06-02 00:00:00,,1,1
-28491,Pulkovo 1942 / Gauss-Kruger 31N,1790,projected,4530,,4284,16331,,,Truncated form of Gauss-Kruger zone 31,,,EPSG,1995-06-02 00:00:00,,1,1
-28492,Pulkovo 1942 / Gauss-Kruger 32N,1791,projected,4530,,4284,16332,,,Truncated form of Gauss-Kruger zone 32,,,EPSG,1995-06-02 00:00:00,,1,1
-28600,Qatar 1974 / Qatar National Grid,1346,projected,4400,,4285,19919,,,Large and medium scale topographic mapping and engineering survey.,,Qatar Centre for Geographic Information.,EPSG,2000-03-07 00:00:00,2000.29,1,0
-28991,Amersfoort / RD Old,1275,projected,4499,,4289,19913,,,Large and medium scale topographic mapping and engineering survey.,Superseded by 28992 (Amersfoort / RD New).,,EPSG,2000-03-07 00:00:00,2000.37,1,0
-28992,Amersfoort / RD New,1275,projected,4499,,4289,19914,,,Large and medium scale topographic mapping and engineering survey.,Supersedes 28991 (Amersfoort / RD Old).,,EPSG,2000-03-07 00:00:00,2000.37,1,0
-29100,SAD69 / Brazil Polyconic,1053,projected,4499,,4291,19941,,,Small scale mapping.,,PetroBras,EPSG,1999-04-22 00:00:00,,1,0
-29118,SAD69 / UTM zone 18N,1807,projected,4400,,4291,16018,,,Large and medium scale topographic mapping and engineering survey.,Uses GRS67 ellipsoid with 1/f to exactly 2 decimal places.  Precision of ellipsoid entry increased from 2 to 5 dp with change id 97.251.  Error introduced if not using the truncated precision will not exceed 5 cm.,,EPSG,1995-06-02 00:00:00,97.252,1,0
-29119,SAD69 / UTM zone 19N,1809,projected,4400,,4291,16019,,,Large and medium scale topographic mapping and engineering survey.,Uses GRS67 ellipsoid with 1/f to exactly 2 decimal places.  Precision of ellipsoid entry increased from 2 to 5 dp with change id 97.252.  Error introduced if not using the truncated precision will not exceed 5 cm.,,EPSG,1995-06-02 00:00:00,97.252,1,0
-29120,SAD69 / UTM zone 20N,1811,projected,4400,,4291,16020,,,Large and medium scale topographic mapping and engineering survey.,Uses GRS67 ellipsoid with 1/f to exactly 2 decimal places.  Precision of ellipsoid entry increased from 2 to 5 dp with change id 97.252.  Error introduced if not using the truncated precision will not exceed 5 cm.,,EPSG,1995-06-02 00:00:00,97.252,1,0
-29121,SAD69 / UTM zone 21N,1813,projected,4400,,4291,16021,,,Large and medium scale topographic mapping and engineering survey.,Uses GRS67 ellipsoid with 1/f to exactly 2 decimal places.  Precision of ellipsoid entry increased from 2 to 5 dp with change id 97.252.  Error introduced if not using the truncated precision will not exceed 5 cm.,,EPSG,1995-06-02 00:00:00,97.252,1,0
-29122,SAD69 / UTM zone 22N,1815,projected,4400,,4291,16022,,,Large and medium scale topographic mapping and engineering survey.,Uses GRS67 ellipsoid with 1/f to exactly 2 decimal places.  Precision of ellipsoid entry increased from 2 to 5 dp with change id 97.252.  Error introduced if not using the truncated precision will not exceed 5 cm.,,EPSG,1995-06-02 00:00:00,97.252,1,0
-29177,SAD69 / UTM zone 17S,1806,projected,4400,,4291,16117,,,Large and medium scale topographic mapping and engineering survey.,Uses GRS67 ellipsoid with 1/f to exactly 2 decimal places.  Precision of ellipsoid entry increased from 2 to 5 dp with change id 97.252.  Error introduced if not using the truncated precision will not exceed 5 cm.,,EPSG,1995-06-02 00:00:00,97.252,1,0
-29178,SAD69 / UTM zone 18S,1808,projected,4400,,4291,16118,,,Large and medium scale topographic mapping and engineering survey.,Uses GRS67 ellipsoid with 1/f to exactly 2 decimal places.  Precision of ellipsoid entry increased from 2 to 5 dp with change id 97.252.  Error introduced if not using the truncated precision will not exceed 5 cm.,,EPSG,1995-06-02 00:00:00,97.252,1,0
-29179,SAD69 / UTM zone 19S,1810,projected,4400,,4291,16119,,,Large and medium scale topographic mapping and engineering survey.,Uses GRS67 ellipsoid with 1/f to exactly 2 decimal places.  Precision of ellipsoid entry increased from 2 to 5 dp with change id 97.252.  Error introduced if not using the truncated precision will not exceed 5 cm.,,EPSG,1995-06-02 00:00:00,97.252,1,0
-29180,SAD69 / UTM zone 20S,1812,projected,4400,,4291,16120,,,Large and medium scale topographic mapping and engineering survey.,Uses GRS67 ellipsoid with 1/f to exactly 2 decimal places.  Precision of ellipsoid entry increased from 2 to 5 dp with change id 97.252.  Error introduced if not using the truncated precision will not exceed 5 cm.,,EPSG,1995-06-02 00:00:00,97.252,1,0
-29181,SAD69 / UTM zone 21S,1814,projected,4400,,4291,16121,,,Large and medium scale topographic mapping and engineering survey.,Uses GRS67 ellipsoid with 1/f to exactly 2 decimal places.  Precision of ellipsoid entry increased from 2 to 5 dp with change id 97.252.  Error introduced if not using the truncated precision will not exceed 5 cm.,,EPSG,1995-06-02 00:00:00,97.252,1,0
-29182,SAD69 / UTM zone 22S,1816,projected,4400,,4291,16122,,,Large and medium scale topographic mapping and engineering survey.,Uses GRS67 ellipsoid with 1/f to exactly 2 decimal places.  Precision of ellipsoid entry increased from 2 to 5 dp with change id 97.252.  Error introduced if not using the truncated precision will not exceed 5 cm.,,EPSG,1995-06-02 00:00:00,97.252,1,0
-29183,SAD69 / UTM zone 23S,1817,projected,4400,,4291,16123,,,Large and medium scale topographic mapping and engineering survey.,Uses GRS67 ellipsoid with 1/f to exactly 2 decimal places.  Precision of ellipsoid entry increased from 2 to 5 dp with change id 97.252.  Error introduced if not using the truncated precision will not exceed 5 cm.,,EPSG,1995-06-02 00:00:00,97.252,1,0
-29184,SAD69 / UTM zone 24S,1818,projected,4400,,4291,16124,,,Large and medium scale topographic mapping and engineering survey.,Uses GRS67 ellipsoid with 1/f to exactly 2 decimal places.  Precision of ellipsoid entry increased from 2 to 5 dp with change id 97.252.  Error introduced if not using the truncated precision will not exceed 5 cm.,,EPSG,1995-06-02 00:00:00,97.252,1,0
-29185,SAD69 / UTM zone 25S,1819,projected,4400,,4291,16125,,,Large and medium scale topographic mapping and engineering survey.,Uses GRS67 ellipsoid with 1/f to exactly 2 decimal places.  Precision of ellipsoid entry increased from 2 to 5 dp with change id 97.252.  Error introduced if not using the truncated precision will not exceed 5 cm.,,EPSG,1995-06-02 00:00:00,97.252,1,0
-29220,Sapper Hill 1943 / UTM zone 20S,1820,projected,4400,,4292,16120,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-29221,Sapper Hill 1943 / UTM zone 21S,1821,projected,4400,,4292,16121,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-29333,Schwarzeck / UTM zone 33S,1822,projected,4400,,4293,16133,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1996-04-12 00:00:00,,1,0
-29371,South West African Coord. System zone 11,1838,projected,6502,,4293,17611,,,"Large and medium scale topographic mapping, cadastral and engineering survey.",,,EPSG,2000-03-07 00:00:00,97.16  99.98,1,0
-29373,South West African Coord. System zone 13,1839,projected,6502,,4293,17613,,,"Large and medium scale topographic mapping, cadastral and engineering survey.",,,EPSG,2000-03-07 00:00:00,97.16  99.98,1,0
-29375,South West African Coord. System zone 15,1840,projected,6502,,4293,17615,,,"Large and medium scale topographic mapping, cadastral and engineering survey.",,,EPSG,2000-03-07 00:00:00,97.16  99.98,1,0
-29377,South West African Coord. System zone 17,1841,projected,6502,,4293,17617,,,"Large and medium scale topographic mapping, cadastral and engineering survey.",,,EPSG,2000-03-07 00:00:00,97.16  99.98,1,0
-29379,South West African Coord. System zone 19,1842,projected,6502,,4293,17619,,,"Large and medium scale topographic mapping, cadastral and engineering survey.",,,EPSG,2000-03-07 00:00:00,97.16  99.98,1,0
-29381,South West African Coord. System zone 21,1843,projected,6502,,4293,17621,,,"Large and medium scale topographic mapping, cadastral and engineering survey.",,,EPSG,2000-03-07 00:00:00,97.16  99.98,1,0
-29383,South West African Coord. System zone 23,1844,projected,6502,,4293,17623,,,"Large and medium scale topographic mapping, cadastral and engineering survey.",,,EPSG,2000-03-07 00:00:00,97.16  99.98,1,0
-29385,South West African Coord. System zone 25,1845,projected,6502,,4293,17625,,,"Large and medium scale topographic mapping, cadastral and engineering survey.",,,EPSG,2000-03-07 00:00:00,97.16  99.98,1,0
-29635,Sudan / UTM zone 35N,1846,projected,4400,,4296,16035,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-29636,Sudan / UTM zone 36N,1847,projected,4400,,4296,16036,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-29700,Tananarive (Paris) / Laborde Grid,1149,projected,4499,,4810,19911,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-29738,Tananarive / UTM zone 38S,1848,projected,4400,,4297,16138,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-29739,Tananarive / UTM zone 39S,1849,projected,4400,,4297,16139,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-29849,Timbalai 1948 / UTM zone 49N,1852,projected,4400,,4298,16049,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-29850,Timbalai 1948 / UTM zone 50N,1853,projected,4400,,4298,16050,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-29871,Timbalai 1948 / R.S.O. Borneo (ch),1362,projected,4402,,4298,19956,,,Large and medium scale topographic mapping and engineering survey.,Adopts metric conversion of 39.370147 inches per metre. Being superseded by metric version (code 29873).,,EPSG,2002-07-13 00:00:00,97.231  2000.60  2002.47,1,0
-29872,Timbalai 1948 / R.S.O. Borneo (ft),1851,projected,4405,,4298,19957,,,Large and medium scale topographic mapping and engineering survey.,Original projection definition in chains.  1 chain = 66 feet.  Adopts Sears 1922 metric conversion of 39.370147 inches per metre.  Being superseded by metric version (code 29873).,,EPSG,2002-07-13 00:00:00,97.231  2000.60  2002.47,1,0
-29873,Timbalai 1948 / R.S.O. Borneo (m),1362,projected,4400,,4298,19958,,,Large and medium scale topographic mapping and engineering survey.,Original projection definition in chains.  1 chain = 66 feet=792 inches.  Adopts Sears 1922 metric conversion of 39.370147 inches per metre.,,EPSG,2000-10-19 00:00:00,2000.60,1,0
-29900,TM65 / Irish National Grid,1305,projected,4400,,4299,19908,,,Large and medium scale topographic mapping and engineering survey.,Superseded by IRENET95 / Irish Transverse Mercator (code 2157) from 1/1/2001.  Deprecated due to change of name - see 29902.,Ordnance Survey of Ireland,EPSG,1995-06-02 00:00:00,,1,1
-29901,OSNI 1952 / Irish National Grid,2530,projected,4400,,4188,19973,,,Large and medium scale topographic mapping and engineering survey.,Not used in Republic of Ireland.  Superseded in 1975 by TM75 / Irish Grid (code 29903).,Ordnance Survey of Northern Ireland.,EPSG,2001-11-06 00:00:00,,1,0
-29902,TM65 / Irish Grid,1125,projected,4400,,4299,19972,,,Large and medium scale topographic mapping and engineering survey.,Not used in Northern Ireland.  Superseded by TM75 / Irish Grid (code 29903) in 1975.,Ordnance Survey of Ireland.,EPSG,2001-11-06 00:00:00,,1,0
-29903,TM75 / Irish Grid,1305,projected,4400,,4300,19972,,,Large and medium scale topographic mapping and engineering survey.,Supersedes both OSNI 1952 / Irish National Grid (code 29901) and TM65 / Irish Grid (code 29902) from 1975.  Superseded by IRENET95 / Irish Transverse Mercator (code 2157) from 1/1/2001.,Ordnance Survey of Ireland,EPSG,2001-11-06 00:00:00,,1,0
-30161,Tokyo / Japan Plane Rectangular CS I,1854,projected,4530,,4301,17801,,,"Large and medium scale topographic mapping, cadastral and engineering survey.",Superseded by JGD2000 / Japan Plane Rectangular CS I (code 2443) from April 2002.,Geographic Survey Institute; Japan.  http://vldb.gsi.go.jp/sokuchi/datum/tokyodatum.html,EPSG,2002-06-22 00:00:00,99.97 2002.08,1,0
-30162,Tokyo / Japan Plane Rectangular CS II,1855,projected,4530,,4301,17802,,,"Large and medium scale topographic mapping, cadastral and engineering survey.",Superseded by JGD2000 / Japan Plane Rectangular CS II (code 2444) from April 2002.,Geographic Survey Institute; Japan.  http://vldb.gsi.go.jp/sokuchi/datum/tokyodatum.html,EPSG,2002-06-22 00:00:00,99.97 2002.08,1,0
-30163,Tokyo / Japan Plane Rectangular CS III,1856,projected,4530,,4301,17803,,,"Large and medium scale topographic mapping, cadastral and engineering survey.",Superseded by JGD2000 / Japan Plane Rectangular CS III (code 2445) from April 2002.,Geographic Survey Institute; Japan.  http://vldb.gsi.go.jp/sokuchi/datum/tokyodatum.html,EPSG,2002-06-22 00:00:00,99.97 2002.08,1,0
-30164,Tokyo / Japan Plane Rectangular CS IV,1857,projected,4530,,4301,17804,,,"Large and medium scale topographic mapping, cadastral and engineering survey.",Superseded by JGD2000 / Japan Plane Rectangular CS IV (code 2446) from April 2002.,Geographic Survey Institute; Japan.  http://vldb.gsi.go.jp/sokuchi/datum/tokyodatum.html,EPSG,2002-06-22 00:00:00,99.97 2002.08,1,0
-30165,Tokyo / Japan Plane Rectangular CS V,1858,projected,4530,,4301,17805,,,"Large and medium scale topographic mapping, cadastral and engineering survey.",Superseded by JGD2000 / Japan Plane Rectangular CS V (code 2447) from April 2002.,Geographic Survey Institute; Japan.  http://vldb.gsi.go.jp/sokuchi/datum/tokyodatum.html,EPSG,2002-06-22 00:00:00,99.97 2002.08 2002.081,1,0
-30166,Tokyo / Japan Plane Rectangular CS VI,1859,projected,4530,,4301,17806,,,"Large and medium scale topographic mapping, cadastral and engineering survey.",Superseded by JGD2000 / Japan Plane Rectangular CS VI (code 2448) from April 2002.,Geographic Survey Institute; Japan.  http://vldb.gsi.go.jp/sokuchi/datum/tokyodatum.html,EPSG,2002-06-22 00:00:00,99.97 2002.08 2002.081,1,0
-30167,Tokyo / Japan Plane Rectangular CS VII,1860,projected,4530,,4301,17807,,,"Large and medium scale topographic mapping, cadastral and engineering survey.",Superseded by JGD2000 / Japan Plane Rectangular CS VII (code 2449) from April 2002.,Geographic Survey Institute; Japan.  http://vldb.gsi.go.jp/sokuchi/datum/tokyodatum.html,EPSG,2002-06-22 00:00:00,99.97 2002.08 2002.081,1,0
-30168,Tokyo / Japan Plane Rectangular CS VIII,1861,projected,4530,,4301,17808,,,"Large and medium scale topographic mapping, cadastral and engineering survey.",Superseded by JGD2000 / Japan Plane Rectangular CS VIII (code 2450) from April 2002.,Geographic Survey Institute; Japan.  http://vldb.gsi.go.jp/sokuchi/datum/tokyodatum.html,EPSG,2002-06-22 00:00:00,99.97 2002.08 2002.081,1,0
-30169,Tokyo / Japan Plane Rectangular CS IX,1862,projected,4530,,4301,17809,,,"Large and medium scale topographic mapping, cadastral and engineering survey.",Superseded by JGD2000 / Japan Plane Rectangular CS IX (code 2451) from April 2002.,Geographic Survey Institute; Japan.  http://vldb.gsi.go.jp/sokuchi/datum/tokyodatum.html,EPSG,2002-06-22 00:00:00,99.97 2002.08 2002.081,1,0
-30170,Tokyo / Japan Plane Rectangular CS X,1863,projected,4530,,4301,17810,,,"Large and medium scale topographic mapping, cadastral and engineering survey.",Superseded by JGD2000 / Japan Plane Rectangular CS X (code 2452) from April 2002.,Geographic Survey Institute; Japan.  http://vldb.gsi.go.jp/sokuchi/datum/tokyodatum.html,EPSG,2002-06-22 00:00:00,99.97 2002.08,1,0
-30171,Tokyo / Japan Plane Rectangular CS XI,1864,projected,4530,,4301,17811,,,"Large and medium scale topographic mapping, cadastral and engineering survey.",Superseded by JGD2000 / Japan Plane Rectangular CS XI (code 2453) from April 2002.,Geographic Survey Institute; Japan.  http://vldb.gsi.go.jp/sokuchi/datum/tokyodatum.html,EPSG,2002-06-22 00:00:00,99.97 2002.08,1,0
-30172,Tokyo / Japan Plane Rectangular CS XII,1865,projected,4530,,4301,17812,,,"Large and medium scale topographic mapping, cadastral and engineering survey.",Superseded by JGD2000 / Japan Plane Rectangular CS XII (code 2454) from April 2002.,Geographic Survey Institute; Japan.  http://vldb.gsi.go.jp/sokuchi/datum/tokyodatum.html,EPSG,2002-06-22 00:00:00,99.97 2002.08,1,0
-30173,Tokyo / Japan Plane Rectangular CS XIII,1866,projected,4530,,4301,17813,,,"Large and medium scale topographic mapping, cadastral and engineering survey.",Superseded by JGD2000 / Japan Plane Rectangular CS XIII (code 2455) from April 2002.,Geographic Survey Institute; Japan.  http://vldb.gsi.go.jp/sokuchi/datum/tokyodatum.html,EPSG,2002-06-22 00:00:00,99.97 2002.08,1,0
-30174,Tokyo / Japan Plane Rectangular CS XIV,1867,projected,4530,,4301,17814,,,"Large and medium scale topographic mapping, cadastral and engineering survey.",Although legally defined as Tokyo datum the accuracy of the geodetic connection to mainland Japan is low. Superseded by JGD2000 / Japan Plane Rectangular CS XIV (code 2456) from April 2002.,Geographic Survey Institute; Japan.  http://vldb.gsi.go.jp/sokuchi/datum/tokyodatum.html,EPSG,2002-06-22 00:00:00,2002.08,1,0
-30175,Tokyo / Japan Plane Rectangular CS XV,1868,projected,4530,,4301,17815,,,"Large and medium scale topographic mapping, cadastral and engineering survey.",Superseded by JGD2000 / Japan Plane Rectangular CS XV (code 2457) from April 2002.,Geographic Survey Institute; Japan.  http://vldb.gsi.go.jp/sokuchi/datum/tokyodatum.html,EPSG,2002-06-22 00:00:00,99.97 2002.08 2002.081,1,0
-30176,Tokyo / Japan Plane Rectangular CS XVI,1869,projected,4530,,4301,17816,,,"Large and medium scale topographic mapping, cadastral and engineering survey.",Superseded by JGD2000 / Japan Plane Rectangular CS XVI (code 2458) from April 2002.,Geographic Survey Institute; Japan.  http://vldb.gsi.go.jp/sokuchi/datum/tokyodatum.html,EPSG,2002-06-22 00:00:00,2002.08,1,0
-30177,Tokyo / Japan Plane Rectangular CS XVII,1870,projected,4530,,4301,17817,,,"Large and medium scale topographic mapping, cadastral and engineering survey.",Although legally defined as Tokyo datum the accuracy of the geodetic connection to mainland Japan is low. Superseded by JGD2000 / Japan Plane Rectangular CS XVII (code 2459) from April 2002.,Geographic Survey Institute; Japan.  http://vldb.gsi.go.jp/sokuchi/datum/tokyodatum.html,EPSG,2002-06-22 00:00:00,99.97 2002.08 2002.081,1,0
-30178,Tokyo / Japan Plane Rectangular CS XVIII,1871,projected,4530,,4301,17818,,,"Large and medium scale topographic mapping, cadastral and engineering survey.",Although legally defined as Tokyo datum the accuracy of the geodetic connection to mainland Japan is low. Superseded by JGD2000 / Japan Plane Rectangular CS XVIII (code 2460) from April 2002.,Geographic Survey Institute; Japan.  http://vldb.gsi.go.jp/sokuchi/datum/tokyodatum.html,EPSG,2002-06-22 00:00:00,99.97 2002.08 2002.081,1,0
-30179,Tokyo / Japan Plane Rectangular CS XIX,1872,projected,4530,,4301,17819,,,"Large and medium scale topographic mapping, cadastral and engineering survey.",Although legally defined as Tokyo datum the accuracy of the geodetic connection to mainland Japan is low. Superseded by JGD2000 / Japan Plane Rectangular CS XIX (code 2461) from April 2002.,Geographic Survey Institute; Japan.  http://vldb.gsi.go.jp/sokuchi/datum/tokyodatum.html,EPSG,2002-06-22 00:00:00,99.97 2002.08 2002.081,1,0
-30200,Trinidad 1903 / Trinidad Grid,1322,projected,4407,,4302,19925,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1999-10-20 00:00:00,97.231,1,0
-30339,TC(1948) / UTM zone 39N,1850,projected,4400,,4303,16039,,,Oil exploration.,,,EPSG,1995-06-02 00:00:00,,1,0
-30340,TC(1948) / UTM zone 40N,1750,projected,4400,,4303,16040,,,Oil exploration.,,,EPSG,1995-06-02 00:00:00,,1,0
-30491,Voirol 1875 / Nord Algerie (ancienne),1728,projected,4499,,4304,18011,,,Large and medium scale topographic mapping and engineering survey.,Superseded by Nord Sahara 1959 / Voirol Unifie Nord (code 30791).,,EPSG,1995-06-02 00:00:00,,1,0
-30492,Voirol 1875 / Sud Algerie (ancienne),1729,projected,4499,,4304,18012,,,Large and medium scale topographic mapping and engineering survey.,Superseded by Nord Sahara 1959 / Voirol Unifie Nord (code 30792).,,EPSG,1995-06-02 00:00:00,,1,0
-30729,Nord Sahara 1959 / UTM zone 29N,1735,projected,4400,,4307,16029,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1996-04-12 00:00:00,,1,0
-30730,Nord Sahara 1959 / UTM zone 30N,1736,projected,4400,,4307,16030,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1996-04-12 00:00:00,,1,0
-30731,Nord Sahara 1959 / UTM zone 31N,1737,projected,4400,,4307,16031,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1996-04-12 00:00:00,,1,0
-30732,Nord Sahara 1959 / UTM zone 32N,1738,projected,4400,,4307,16032,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1996-04-12 00:00:00,,1,0
-30791,Nord Sahara 1959 / Voirol Unifie Nord,1728,projected,4499,,4307,18021,,,Large and medium scale topographic mapping and engineering survey.,Supersedes Voirol 1875 / Nord Algeria ancienne (code 30491).  Grid coordinates on average across Algeria are unchanged although local differences reach 30 metres; geographic coordinate equivalents do change.,"""Le System Geodesique Nord-Sahara""; IGN Paris",EPSG,2002-08-29 00:00:00,2002.56,1,0
-30792,Nord Sahara 1959 / Voirol Unifie Sud,1729,projected,4499,,4307,18022,,,Large and medium scale topographic mapping and engineering survey.,Supersedes Voirol 1875 / Sud Algeria ancienne (code 30492).  Grid coordinates on average across Algeria are unchanged although local differences reach 30 metres; geographic coordinate equivalents do change.,"""Le System Geodesique Nord-Sahara""; IGN Paris",EPSG,2002-08-29 00:00:00,2002.56,1,0
-30800,RT38 2.5 gon W,1225,projected,4530,,4308,19929,,,Large and medium scale topographic mapping and engineering survey.,,National Land Survey of Sweden,EPSG,1997-11-13 00:00:00,97.14  97.39,1,0
-31028,Yoff / UTM zone 28N,1207,projected,4400,,4310,16028,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-31121,Zanderij / UTM zone 21N,1222,projected,4400,,4311,16021,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-31154,Zanderij / TM 54 NW,1727,projected,4400,,4311,17054,,,Large and medium scale topographic mapping and engineering survey.,,Shell International,EPSG,2000-06-10 00:00:00,,1,0
-31170,Zanderij / Suriname Old TM,1222,projected,4400,,4311,19954,,,Large and medium scale topographic mapping and engineering survey.,Introduced in 1975.  Superseded by Zanderij / Suriname TM in 1979.,Shell International,EPSG,2000-06-10 00:00:00,,1,0
-31171,Zanderij / Suriname TM,1222,projected,4400,,4311,19955,,,Large and medium scale topographic mapping and engineering survey.,Superseded Zanderij / Suriname Old TM in 1979.,Shell International,EPSG,2000-06-10 00:00:00,,1,0
-31265,MGI / 3-degree Gauss zone 5,1709,projected,4499,,4312,16265,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2000-03-07 00:00:00,,1,1
-31266,MGI / 3-degree Gauss zone 6,1710,projected,4499,,4312,16266,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2000-03-07 00:00:00,,1,1
-31267,MGI / 3-degree Gauss zone 7,1711,projected,4499,,4312,16267,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2000-03-07 00:00:00,,1,1
-31268,MGI / 3-degree Gauss zone 8,1712,projected,4499,,4312,16268,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2000-03-07 00:00:00,,1,1
-31275,MGI / Balkans zone 5,1709,projected,4530,,4312,18275,,,Large and medium scale topographic mapping and engineering survey.,In Slovenia the truncated form MGI / Slovenia Grid (code 2169) is preferred.,EPSG,EPSG,2001-06-05 00:00:00,,1,0
-31276,MGI / Balkans zone 6,1710,projected,4530,,4312,18276,,,Large and medium scale topographic mapping and engineering survey.,,EPSG,EPSG,2001-06-05 00:00:00,,1,0
-31277,MGI / Balkans zone 7,1711,projected,4530,,4312,18277,,,Large and medium scale topographic mapping and engineering survey.,,EPSG,EPSG,2001-06-05 00:00:00,,1,0
-31278,MGI / Balkans zone 8,1712,projected,4530,,4312,18277,,,Large and medium scale topographic mapping and engineering survey.,,EPSG,EPSG,2001-06-05 00:00:00,,1,1
-31279,MGI / Balkans zone 8,1712,projected,4530,,4312,18278,,,Large and medium scale topographic mapping and engineering survey.,,EPSG,EPSG,2001-08-28 00:00:00,,1,0
-31281,MGI (Ferro) / Austria West Zone,1706,projected,4530,,4805,18041,,,Large and medium scale topographic mapping and engineering survey.,Superseded by MGI / M28 (EPSG code 31284) based on Greenwich meridian.,Bundesamt fur Eich- und Vermessungswesen; Wien,EPSG,2001-06-05 00:00:00,,1,0
-31282,MGI (Ferro) / Austria Central Zone,1708,projected,4530,,4805,18042,,,Large and medium scale topographic mapping and engineering survey.,Superseded by MGI / M31 (EPSG code 31285) based on Greenwich meridian.,Bundesamt fur Eich- und Vermessungswesen; Wien,EPSG,2001-06-05 00:00:00,,1,0
-31283,MGI (Ferro) / Austria East Zone,1707,projected,4530,,4805,18043,,,Large and medium scale topographic mapping and engineering survey.,Superseded by MGI / M34 (EPSG code 31286) based on Greenwich meridian.,Bundesamt fur Eich- und Vermessungswesen; Wien,EPSG,2001-06-05 00:00:00,,1,0
-31284,MGI / M28,1706,projected,4530,,4312,18044,,,Large and medium scale topographic mapping and engineering survey.,Supersedes MGI (Ferro) / Austria West zone (EPSG code 31281).,Bundesamt fur Eich- und Vermessungswesen; Wien,EPSG,2001-06-05 00:00:00,,1,0
-31285,MGI / M31,1707,projected,4530,,4312,18045,,,Large and medium scale topographic mapping and engineering survey.,Supersedes MGI (Ferro) / Austria Central zone (EPSG code 31282).,Bundesamt fur Eich- und Vermessungswesen; Wien,EPSG,2001-06-05 00:00:00,,1,0
-31286,MGI / M34,1708,projected,4530,,4312,18046,,,Large and medium scale topographic mapping and engineering survey.,Supersedes MGI (Ferro) / Austria East zone (EPSG code 31283).,Bundesamt fur Eich- und Vermessungswesen; Wien,EPSG,2001-06-05 00:00:00,,1,0
-31287,MGI / Austria Lambert,1037,projected,4530,,4312,19947,,,Medium and small scale mapping.,,Bundesamt fur Eich- und Vermessungswesen; Wien,EPSG,2001-06-05 00:00:00,,1,0
-31291,MGI (Ferro) / Austria West Zone,1706,projected,4499,,4805,18041,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,97.01,1,1
-31292,MGI (Ferro) / Austria Central Zone,1708,projected,4499,,4805,18042,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,97.01,1,1
-31293,MGI (Ferro) / Austria East Zone,1707,projected,4499,,4805,18043,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,97.01,1,1
-31294,MGI / M28,1706,projected,4499,,4312,18044,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1999-10-20 00:00:00,97.01,1,1
-31295,MGI / M31,1707,projected,4499,,4312,18045,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1999-10-20 00:00:00,97.01,1,1
-31296,MGI / M34,1708,projected,4499,,4312,18046,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1999-10-20 00:00:00,97.01,1,1
-31297,MGI / Austria Lambert,1037,projected,4499,,4312,19947,,,Medium and small scale mapping.,,,EPSG,1999-10-20 00:00:00,97.01,1,1
-31300,Belge 1972 / Belge Lambert 72,1347,projected,4499,,4313,19902,,,Large and medium scale topographic mapping and engineering survey.,Supersedes 21500 (Belge 1950 / Belge Lambert 50).  An alternative - Belge 1972 / Belgian Lambert 72 (code 31370) - was introduced in 2000 to use the standard Lambert Conic Conformal (2SP) projection method (code 9802).  EPSG recommends this alternative.,IGN Brussels.,EPSG,1995-06-02 00:00:00,,1,0
-31370,Belge 1972 / Belgian Lambert 72,1347,projected,4499,,4313,19961,,,Large and medium scale topographic mapping and engineering survey.,"Introduced in 2000 as an alternative to CRS code 31300 to avoid the special projection method LCC (2SP Belgium) (code 9803). If software cannot handle latitude of origin 90�N, use latitude of origin = 50� 47' 57.704""N with Nf = 165372.956 m.",IGN Brussels www.ngi.be/html-files/french/0038.html,EPSG,2000-10-19 00:00:00,,1,0
-31461,DHDN / 3-degree Gauss zone 1,1628,projected,4499,,4314,16261,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2000-03-07 00:00:00,2000.101,1,1
-31462,DHDN / 3-degree Gauss zone 2,1624,projected,4499,,4314,16262,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2000-03-07 00:00:00,2000.101,1,1
-31463,DHDN / 3-degree Gauss zone 3,1625,projected,4499,,4314,16263,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2000-03-07 00:00:00,2000.101,1,1
-31464,DHDN / 3-degree Gauss zone 4,1626,projected,4499,,4314,16264,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2000-03-07 00:00:00,2000.101,1,1
-31465,DHDN / 3-degree Gauss zone 5,1627,projected,4499,,4314,16265,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2000-03-07 00:00:00,2000.101,1,1
-31466,DHDN / Gauss-Kruger zone 2,1624,projected,4530,,4314,16262,,,"Large and medium scale topographic mapping and engineering survey, cadastral survey.",Zone width 3 degrees.,Bundesamt f�r Kartographie und Geod�sie via EuroGeographics; http://crs.ifag.de/,EPSG,2001-06-05 00:00:00,,1,0
-31467,DHDN / Gauss-Kruger zone 3,1625,projected,4530,,4314,16263,,,"Large and medium scale topographic mapping and engineering survey, cadastral survey.",Zone width 3 degrees.,Bundesamt f�r Kartographie und Geod�sie via EuroGeographics; http://crs.ifag.de/,EPSG,2001-06-05 00:00:00,,1,0
-31468,DHDN / Gauss-Kruger zone 4,1626,projected,4530,,4314,16264,,,"Large and medium scale topographic mapping and engineering survey, cadastral survey.",Zone width 3 degrees.,Bundesamt f�r Kartographie und Geod�sie via EuroGeographics; http://crs.ifag.de/,EPSG,2001-06-05 00:00:00,,1,0
-31469,DHDN / Gauss-Kruger zone 5,1627,projected,4530,,4314,16265,,,"Large and medium scale topographic mapping and engineering survey, cadastral survey.",Zone width 3 degrees.,Bundesamt f�r Kartographie und Geod�sie via EuroGeographics; http://crs.ifag.de/,EPSG,2001-06-05 00:00:00,,1,0
-31528,Conakry 1905 / UTM zone 28N,1468,projected,4400,,4315,16028,,,Large and medium scale topographic mapping and engineering survey.,Superseded by Dabola 1981 / UTM zone 28 (EPSG code 2063).,,EPSG,1999-12-09 00:00:00,,1,0
-31529,Conakry 1905 / UTM zone 29N,1469,projected,4400,,4315,16029,,,Large and medium scale topographic mapping and engineering survey.,Superseded by Dabola 1981 / UTM zone 29 (EPSG code 2064).,,EPSG,1999-12-09 00:00:00,,1,0
-31600,Dealul Piscului 1933/ Stereo 33,1197,projected,4499,,4316,19927,,,Large and medium scale topographic mapping and engineering survey.,Superseded by Stereo 70 system (ProjCS code 31700).,,EPSG,1996-04-12 00:00:00,,1,0
-31700,Dealul Piscului 1970/ Stereo 70,1197,projected,4530,,4317,19926,,,Large and medium scale topographic mapping and engineering survey.,Supersedes Stereo 33 system.,,EPSG,1996-04-12 00:00:00,,1,0
-31838,NGN / UTM zone 38N,1739,projected,4400,,4318,16038,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1996-04-12 00:00:00,,1,0
-31839,NGN / UTM zone 39N,1740,projected,4400,,4318,16039,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1996-04-12 00:00:00,,1,0
-31900,KUDAMS / KTM,1310,projected,4400,,4319,19928,,,Large scale engineering and utility mapping.,,,EPSG,1996-04-12 00:00:00,,1,0
-31986,SIRGAS / UTM zone 17N,1823,projected,4400,,4170,16017,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2000-10-19 00:00:00,,1,0
-31987,SIRGAS / UTM zone 18N,1825,projected,4400,,4170,16018,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2000-10-19 00:00:00,,1,0
-31988,SIRGAS / UTM zone 19N,1827,projected,4400,,4170,16019,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2000-10-19 00:00:00,,1,0
-31989,SIRGAS / UTM zone 20N,1829,projected,4400,,4170,16020,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2000-10-19 00:00:00,,1,0
-31990,SIRGAS / UTM zone 21N,1831,projected,4400,,4170,16021,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2000-10-19 00:00:00,,1,0
-31991,SIRGAS / UTM zone 22N,1833,projected,4400,,4170,16022,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2000-10-19 00:00:00,,1,0
-31992,SIRGAS / UTM zone 17S,1824,projected,4400,,4170,16117,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2000-10-19 00:00:00,,1,0
-31993,SIRGAS / UTM zone 18S,1826,projected,4400,,4170,16118,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2000-10-19 00:00:00,,1,0
-31994,SIRGAS / UTM zone 19S,1828,projected,4400,,4170,16119,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2000-10-19 00:00:00,,1,0
-31995,SIRGAS / UTM zone 20S,1830,projected,4400,,4170,16120,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2000-10-19 00:00:00,,1,0
-31996,SIRGAS / UTM zone 21S,1832,projected,4400,,4170,16121,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2000-10-19 00:00:00,,1,0
-31997,SIRGAS / UTM zone 22S,1834,projected,4400,,4170,16122,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2000-10-19 00:00:00,,1,0
-31998,SIRGAS / UTM zone 23S,1835,projected,4400,,4170,16123,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2000-10-19 00:00:00,,1,0
-31999,SIRGAS / UTM zone 24S,1836,projected,4400,,4170,16124,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2000-10-19 00:00:00,,1,0
-32000,SIRGAS / UTM zone 25S,1837,projected,4400,,4170,16125,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2000-10-19 00:00:00,,1,0
-32001,NAD27 / Montana North,2211,projected,4497,,4267,12501,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32002,NAD27 / Montana Central,2210,projected,4497,,4267,12502,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32003,NAD27 / Montana South,2212,projected,4497,,4267,12503,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32005,NAD27 / Nebraska North,2221,projected,4497,,4267,12601,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32006,NAD27 / Nebraska South,2222,projected,4497,,4267,12602,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32007,NAD27 / Nevada East,2224,projected,4497,,4267,12701,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2000-03-07 00:00:00,2000.091,1,0
-32008,NAD27 / Nevada Central,2223,projected,4497,,4267,12702,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32009,NAD27 / Nevada West,2225,projected,4497,,4267,12703,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2000-03-07 00:00:00,2000.091,1,0
-32010,NAD27 / New Hampshire,1398,projected,4497,,4267,12800,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2000-03-07 00:00:00,2000.091,1,0
-32011,NAD27 / New Jersey,1399,projected,4497,,4267,12900,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2000-03-07 00:00:00,2000.091,1,0
-32012,NAD27 / New Mexico East,2228,projected,4497,,4267,13001,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2000-03-07 00:00:00,2000.091,1,0
-32013,NAD27 / New Mexico Central,2229,projected,4497,,4267,13002,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32014,NAD27 / New Mexico West,2230,projected,4497,,4267,13003,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2000-03-07 00:00:00,2000.091,1,0
-32015,NAD27 / New York East,2234,projected,4497,,4267,13101,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2000-03-07 00:00:00,2000.091,1,0
-32016,NAD27 / New York Central,2233,projected,4497,,4267,13102,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32017,NAD27 / New York West,2236,projected,4497,,4267,13103,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2000-03-07 00:00:00,2000.091,1,0
-32018,NAD27 / New York Long Island,2235,projected,4497,,4267,13104,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32019,NAD27 / North Carolina,1402,projected,4497,,4267,13200,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2000-03-07 00:00:00,2000.091,1,0
-32020,NAD27 / North Dakota North,2237,projected,4497,,4267,13301,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32021,NAD27 / North Dakota South,2238,projected,4497,,4267,13302,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32022,NAD27 / Ohio North,2239,projected,4497,,4267,13401,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32023,NAD27 / Ohio South,2240,projected,4497,,4267,13402,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32024,NAD27 / Oklahoma North,2241,projected,4497,,4267,13501,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32025,NAD27 / Oklahoma South,2242,projected,4497,,4267,13502,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32026,NAD27 / Oregon North,2243,projected,4497,,4267,13601,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32027,NAD27 / Oregon South,2244,projected,4497,,4267,13602,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32028,NAD27 / Pennsylvania North,2245,projected,4497,,4267,13701,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32029,NAD27 / Pennsylvania South,2246,projected,4497,,4267,13702,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32030,NAD27 / Rhode Island,1408,projected,4497,,4267,13800,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2000-03-07 00:00:00,2000.091,1,0
-32031,NAD27 / South Carolina North,2247,projected,4497,,4267,13901,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32033,NAD27 / South Carolina South,2248,projected,4497,,4267,13902,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32034,NAD27 / South Dakota North,2249,projected,4497,,4267,14001,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32035,NAD27 / South Dakota South,2250,projected,4497,,4267,14002,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32036,NAD27 / Tennessee,1411,projected,4497,,4267,14100,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2000-03-07 00:00:00,2000.091,1,1
-32037,NAD27 / Texas North,2253,projected,4497,,4267,14201,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32038,NAD27 / Texas North Central,2254,projected,4497,,4267,14202,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32039,NAD27 / Texas Central,2252,projected,4497,,4267,14203,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32040,NAD27 / Texas South Central,2256,projected,4497,,4267,14204,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32041,NAD27 / Texas South,2255,projected,4497,,4267,14205,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32042,NAD27 / Utah North,2258,projected,4497,,4267,14301,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32043,NAD27 / Utah Central,2257,projected,4497,,4267,14302,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32044,NAD27 / Utah South,2259,projected,4497,,4267,14303,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2000-03-07 00:00:00,2000.091,1,0
-32045,NAD27 / Vermont,1414,projected,4497,,4267,14400,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32046,NAD27 / Virginia North,2260,projected,4497,,4267,14501,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32047,NAD27 / Virginia South,2261,projected,4497,,4267,14502,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32048,NAD27 / Washington North,2262,projected,4497,,4267,14601,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32049,NAD27 / Washington South,2263,projected,4497,,4267,14602,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32050,NAD27 / West Virginia North,2264,projected,4497,,4267,14701,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32051,NAD27 / West Virginia South,2265,projected,4497,,4267,14702,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32052,NAD27 / Wisconsin North,2267,projected,4497,,4267,14801,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32053,NAD27 / Wisconsin Central,2266,projected,4497,,4267,14802,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32054,NAD27 / Wisconsin South,2268,projected,4497,,4267,14803,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32055,NAD27 / Wyoming East,2269,projected,4497,,4267,14901,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2000-03-07 00:00:00,2000.091,1,0
-32056,NAD27 / Wyoming East Central,2270,projected,4497,,4267,14902,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2000-03-07 00:00:00,2000.091,1,0
-32057,NAD27 / Wyoming West Central,2272,projected,4497,,4267,14903,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2000-03-07 00:00:00,2000.091,1,0
-32058,NAD27 / Wyoming West,2271,projected,4497,,4267,14904,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2000-03-07 00:00:00,2000.091,1,0
-32061,NAD27 / Guatemala Norte,2120,projected,4499,,4267,18211,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1999-08-18 00:00:00,,1,0
-32062,NAD27 / Guatemala Sur,2121,projected,4499,,4267,18212,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2000-01-06 00:00:00,99.95,1,0
-32064,NAD27 / BLM 14N (ftUS),2171,projected,4497,,4267,15914,,,"Minerals (including oil) management, exploration and production.",,EPSG,EPSG,2002-02-12 00:00:00,,1,0
-32065,NAD27 / BLM 15N (ftUS),2171,projected,4497,,4267,15915,,,"Minerals (including oil) management, exploration and production.",,EPSG,EPSG,2002-02-12 00:00:00,,1,0
-32066,NAD27 / BLM 16N (ftUS),2171,projected,4497,,4267,15916,,,"Minerals (including oil) management, exploration and production.",,EPSG,EPSG,2002-02-12 00:00:00,,1,0
-32067,NAD27 / BLM 17N (ftUS),2171,projected,4497,,4267,15917,,,"Minerals (including oil) management, exploration and production.",,EPSG,EPSG,2002-02-12 00:00:00,,1,0
-32074,NAD27 / BLM 14N (feet),2171,projected,4497,,4267,15914,,,"Minerals (including oil) management, exploration and production.",,,EPSG,1996-04-12 00:00:00,96.03,1,1
-32075,NAD27 / BLM 15N (feet),2172,projected,4497,,4267,15915,,,"Minerals (including oil) management, exploration and production.",,,EPSG,1996-04-12 00:00:00,96.03,1,1
-32076,NAD27 / BLM 16N (feet),2173,projected,4497,,4267,15916,,,"Minerals (including oil) management, exploration and production.",,,EPSG,1996-04-12 00:00:00,95.27  96.03,1,1
-32077,NAD27 / BLM 17N (feet),2174,projected,4497,,4267,15917,,,"Minerals (including oil) management, exploration and production.",,,EPSG,1996-04-12 00:00:00,96.03,1,1
-32081,NAD27 / MTM zone 1,2226,projected,4400,,4267,17701,,,Large and medium scale topographic mapping and engineering survey.,,Geodetic Surveys Section; Newfoundland Department of Government Services and Lands.,EPSG,1997-11-13 00:00:00,,1,0
-32082,NAD27 / MTM zone 2,2227,projected,4400,,4267,17702,,,Large and medium scale topographic mapping and engineering survey.,,Geodetic Surveys Section; Newfoundland Department of Government Services and Lands.,EPSG,1997-11-13 00:00:00,,1,0
-32083,NAD27 / MTM zone 3,2275,projected,4400,,4267,17703,,,Large and medium scale topographic mapping and engineering survey.,,Geodetic Surveys Section; Newfoundland Department of Government Services and Lands.,EPSG,1997-11-13 00:00:00,,1,0
-32084,NAD27 / MTM zone 4,2276,projected,4400,,4267,17704,,,Large and medium scale topographic mapping and engineering survey.,,Geodetic Surveys Section; Newfoundland Department of Government Services and Lands.,EPSG,1997-11-13 00:00:00,,1,0
-32085,NAD27 / MTM zone 5,2277,projected,4400,,4267,17705,,,Large and medium scale topographic mapping and engineering survey.,,Geodetic Surveys Section; Newfoundland Department of Government Services and Lands.,EPSG,1997-11-13 00:00:00,,1,0
-32086,NAD27 / MTM zone 6,2278,projected,4400,,4267,17706,,,Large and medium scale topographic mapping and engineering survey.,,Geodetic Surveys Section; Newfoundland Department of Government Services and Lands.,EPSG,1997-11-13 00:00:00,,1,0
-32098,NAD27 / Quebec Lambert,1368,projected,4499,,4267,19944,,,Large and medium scale topographic mapping and engineering survey.,Superseded by NAD27(CGQ77) / Quebec Lambert (code 2137) in 1977.,Service de la Cartographie; Minist�re des Ressources Naturelles; Quebec,EPSG,2000-10-19 00:00:00,,1,0
-32100,NAD83 / Montana,1395,projected,4499,,4269,12530,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in International feet (note: not US survey feet).  See code 2256 for equivalent non-metric definition. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,2000-03-07 00:00:00,2000.091,1,0
-32104,NAD83 / Nebraska,1396,projected,4499,,4269,12630,,,Large and medium scale topographic mapping and engineering survey.,"For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,2000-03-07 00:00:00,2000.091,1,0
-32107,NAD83 / Nevada East,2224,projected,4499,,4269,12731,,,Large and medium scale topographic mapping and engineering survey.,"For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,2000-03-07 00:00:00,2000.091,1,0
-32108,NAD83 / Nevada Central,2223,projected,4499,,4269,12732,,,Large and medium scale topographic mapping and engineering survey.,"For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,1995-06-02 00:00:00,,1,0
-32109,NAD83 / Nevada West,2225,projected,4499,,4269,12733,,,Large and medium scale topographic mapping and engineering survey.,"For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,1995-06-02 00:00:00,,1,0
-32110,NAD83 / New Hampshire,1398,projected,4499,,4269,12830,,,Large and medium scale topographic mapping and engineering survey.,"For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,2000-03-07 00:00:00,2000.091,1,0
-32111,NAD83 / New Jersey,1399,projected,4499,,4269,12930,,,Large and medium scale topographic mapping and engineering survey.,"For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,2000-03-07 00:00:00,2000.091,1,0
-32112,NAD83 / New Mexico East,2228,projected,4499,,4269,13031,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  See code 2257 for equivalent non-metric definition. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,1995-06-02 00:00:00,,1,0
-32113,NAD83 / New Mexico Central,2231,projected,4499,,4269,13032,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  See code 2258 for equivalent non-metric definition. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,1995-06-02 00:00:00,,1,0
-32114,NAD83 / New Mexico West,2232,projected,4499,,4269,13033,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  See code 2259 for equivalent non-metric definition. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,1995-06-02 00:00:00,,1,0
-32115,NAD83 / New York East,2234,projected,4499,,4269,13131,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  See code 2260 for equivalent non-metric definition. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,2000-03-07 00:00:00,2000.091,1,0
-32116,NAD83 / New York Central,2233,projected,4499,,4269,13132,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  See code 2261 for equivalent non-metric definition. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,1995-06-02 00:00:00,,1,0
-32117,NAD83 / New York West,2236,projected,4499,,4269,13133,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  See code 2263 for equivalent non-metric definition. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,2000-03-07 00:00:00,2000.091,1,0
-32118,NAD83 / New York Long Island,2235,projected,4499,,4269,13134,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  See code 2264 for equivalent non-metric definition. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,1995-06-02 00:00:00,,1,0
-32119,NAD83 / North Carolina,1402,projected,4499,,4269,13230,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  See code 2264 for equivalent non-metric definition.,,EPSG,2000-03-07 00:00:00,98.30  2000.091,1,0
-32120,NAD83 / North Dakota North,2237,projected,4499,,4269,13331,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in International feet (note: not US survey feet).  See code 2265 for equivalent non-metric definition. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,1995-06-02 00:00:00,,1,0
-32121,NAD83 / North Dakota South,2238,projected,4499,,4269,13332,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in International feet (note: not US survey feet).  See code 2266 for equivalent non-metric definition. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,1995-06-02 00:00:00,,1,0
-32122,NAD83 / Ohio North,2239,projected,4499,,4269,13431,,,Large and medium scale topographic mapping and engineering survey.,"For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,1995-06-02 00:00:00,,1,0
-32123,NAD83 / Ohio South,2240,projected,4499,,4269,13432,,,Large and medium scale topographic mapping and engineering survey.,"For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,1995-06-02 00:00:00,,1,0
-32124,NAD83 / Oklahoma North,2241,projected,4499,,4269,13531,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  See code 2267 for equivalent non-metric definition. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,1995-06-02 00:00:00,,1,0
-32125,NAD83 / Oklahoma South,2242,projected,4499,,4269,13532,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  See code 2268 for equivalent non-metric definition. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,1995-06-02 00:00:00,,1,0
-32126,NAD83 / Oregon North,2243,projected,4499,,4269,13631,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in International feet (note: not US survey feet).  See code 2269 for equivalent non-metric definition. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,1995-06-02 00:00:00,,1,0
-32127,NAD83 / Oregon South,2244,projected,4499,,4269,13632,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in International feet (note: not US survey feet).  See code 2270 for equivalent non-metric definition. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,1995-06-02 00:00:00,,1,0
-32128,NAD83 / Pennsylvania North,2245,projected,4499,,4269,13731,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  See code 2271 for equivalent non-metric definition.,,EPSG,1995-06-02 00:00:00,,1,0
-32129,NAD83 / Pennsylvania South,2246,projected,4499,,4269,13732,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in US survey feet.  See code 2272 for equivalent non-metric definition.,,EPSG,1995-06-02 00:00:00,,1,0
-32130,NAD83 / Rhode Island,1408,projected,4499,,4269,13830,,,Large and medium scale topographic mapping and engineering survey.,"For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,2000-03-07 00:00:00,2000.091,1,0
-32133,NAD83 / South Carolina,1409,projected,4499,,4269,13930,,,Large and medium scale topographic mapping and engineering survey.,State law defines system in International feet (note: not US survey feet).  See code 2273 for equivalent non-metric definition.,,EPSG,1995-06-02 00:00:00,,1,0
-32134,NAD83 / South Dakota North,2249,projected,4499,,4269,14031,,,Large and medium scale topographic mapping and engineering survey.,"For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,1995-06-02 00:00:00,,1,0
-32135,NAD83 / South Dakota South,2250,projected,4499,,4269,14032,,,Large and medium scale topographic mapping and engineering survey.,"For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,1995-06-02 00:00:00,,1,0
-32136,NAD83 / Tennessee,1411,projected,4499,,4269,14130,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  See code 2274 for equivalent non-metric definition. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,2000-03-07 00:00:00,2000.091,1,0
-32137,NAD83 / Texas North,2253,projected,4499,,4269,14231,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  See code 2275 for equivalent non-metric definition. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,1995-06-02 00:00:00,,1,0
-32138,NAD83 / Texas North Central,2254,projected,4499,,4269,14232,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  See code 2276 for equivalent non-metric definition. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,1995-06-02 00:00:00,,1,0
-32139,NAD83 / Texas Central,2252,projected,4499,,4269,14233,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  See code 2277 for equivalent non-metric definition. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,1995-06-02 00:00:00,,1,0
-32140,NAD83 / Texas South Central,2527,projected,4499,,4269,14234,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  See code 2278 for equivalent non-metric definition. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,1995-06-02 00:00:00,,1,0
-32141,NAD83 / Texas South,2528,projected,4499,,4269,14235,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  See code 2279 for equivalent non-metric definition. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,1995-06-02 00:00:00,,1,0
-32142,NAD83 / Utah North,2258,projected,4499,,4269,14331,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in International feet (note: not US survey feet).  See code 2280 for equivalent non-metric definition. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,1995-06-02 00:00:00,,1,0
-32143,NAD83 / Utah Central,2257,projected,4499,,4269,14332,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in International feet (note: not US survey feet).  See code 2281 for equivalent non-metric definition. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,1995-06-02 00:00:00,,1,0
-32144,NAD83 / Utah South,2259,projected,4499,,4269,14333,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in International feet (note: not US survey feet).  See code 2282 for equivalent non-metric definition. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,1995-06-02 00:00:00,,1,0
-32145,NAD83 / Vermont,1414,projected,4499,,4269,14430,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2000-03-07 00:00:00,2000.091,1,0
-32146,NAD83 / Virginia North,2260,projected,4499,,4269,14531,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  See code 2283 for equivalent non-metric definition. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,1995-06-02 00:00:00,,1,0
-32147,NAD83 / Virginia South,2261,projected,4499,,4269,14532,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  See code 2284 for equivalent non-metric definition. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,1995-06-02 00:00:00,,1,0
-32148,NAD83 / Washington North,2273,projected,4499,,4269,14631,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  See code 2285 for equivalent non-metric definition. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,1995-06-02 00:00:00,,1,0
-32149,NAD83 / Washington South,2274,projected,4499,,4269,14632,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  See code 2286 for equivalent non-metric definition. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,1995-06-02 00:00:00,,1,0
-32150,NAD83 / West Virginia North,2264,projected,4499,,4269,14731,,,Large and medium scale topographic mapping and engineering survey.,"For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,1995-06-02 00:00:00,,1,0
-32151,NAD83 / West Virginia South,2265,projected,4499,,4269,14732,,,Large and medium scale topographic mapping and engineering survey.,"For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,1995-06-02 00:00:00,,1,0
-32152,NAD83 / Wisconsin North,2267,projected,4499,,4269,14831,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  See code 2287 for equivalent non-metric definition. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,1995-06-02 00:00:00,,1,0
-32153,NAD83 / Wisconsin Central,2266,projected,4499,,4269,14832,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  See code 2288 for equivalent non-metric definition. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,1995-06-02 00:00:00,,1,0
-32154,NAD83 / Wisconsin South,2268,projected,4499,,4269,14833,,,Large and medium scale topographic mapping and engineering survey.,"State law defines system in US survey feet.  See code 2289 for equivalent non-metric definition. For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,1995-06-02 00:00:00,,1,0
-32155,NAD83 / Wyoming East,2269,projected,4499,,4269,14931,,,Large and medium scale topographic mapping and engineering survey.,"For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,2000-03-07 00:00:00,2000.091,1,0
-32156,NAD83 / Wyoming East Central,2270,projected,4499,,4269,14932,,,Large and medium scale topographic mapping and engineering survey.,"For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,2000-03-07 00:00:00,2000.091,1,0
-32157,NAD83 / Wyoming West Central,2272,projected,4499,,4269,14933,,,Large and medium scale topographic mapping and engineering survey.,"For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,2000-03-07 00:00:00,2000.091,1,0
-32158,NAD83 / Wyoming West,2271,projected,4499,,4269,14934,,,Large and medium scale topographic mapping and engineering survey.,"For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,2000-03-07 00:00:00,2000.091,1,0
-32161,NAD83 / Puerto Rico & Virgin Is.,2251,projected,4499,,4269,15230,,,Large and medium scale topographic mapping and engineering survey.,"For applications with an accuracy of better than 1m, superseded by NAD83(HARN) / SPCS.",,EPSG,1995-06-02 00:00:00,,1,0
-32180,NAD83 / SCoPQ zone 2,1420,projected,4499,,4269,17700,,,Large and medium scale topographic mapping and engineering survey.,,Topographic Mapping Section; Quebec Ministry of Natural Resources.,EPSG,1997-11-13 00:00:00,,1,0
-32181,NAD83 / MTM zone 1,2226,projected,4496,,4269,17701,,,Large and medium scale topographic mapping and engineering survey.,,Geodetic Surveys Section; Newfoundland Department of Government Services and Lands.,EPSG,1997-11-13 00:00:00,,1,0
-32182,NAD83 / MTM zone 2,2227,projected,4496,,4269,17702,,,Large and medium scale topographic mapping and engineering survey.,,Geodetic Surveys Section; Newfoundland Department of Government Services and Lands.,EPSG,1997-11-13 00:00:00,,1,0
-32183,NAD83 / MTM zone 3,2275,projected,4496,,4269,17703,,,Large and medium scale topographic mapping and engineering survey.,"Known in Quebec as ""NAD83 / SCoPQ zone 3"" with axis 1 and 2 abbreviations of ""X"" and ""Y"" respectively.",Topographic Mapping Section; Quebec Ministry of Natural Resources. Also Geodetic Surveys Section; Newfoundland Department of Government Services and Lands.,EPSG,1997-11-13 00:00:00,,1,0
-32184,NAD83 / MTM zone 4,2276,projected,4496,,4269,17704,,,Large and medium scale topographic mapping and engineering survey.,"Known in Quebec as ""NAD83 / SCoPQ zone 4"" with axis 1 and 2 abbreviations of ""X"" and ""Y"" respectively.",Topographic Mapping Section; Quebec Ministry of Natural Resources. Also Geodetic Surveys Section; Newfoundland Department of Government Services and Lands.,EPSG,1997-11-13 00:00:00,,1,0
-32185,NAD83 / MTM zone 5,2277,projected,4496,,4269,17705,,,Large and medium scale topographic mapping and engineering survey.,"Known in Quebec as ""NAD83 / SCoPQ zone 5"" with axis 1 and 2 abbreviations of ""X"" and ""Y"" respectively.",Topographic Mapping Section; Quebec Ministry of Natural Resources. Also Geodetic Surveys Section; Newfoundland Department of Government Services and Lands.,EPSG,1997-11-13 00:00:00,,1,0
-32186,NAD83 / MTM zone 6,2278,projected,4496,,4269,17706,,,Large and medium scale topographic mapping and engineering survey.,"Known in Quebec as ""NAD83 / SCoPQ zone 6"" with axis 1 and 2 abbreviations of ""X"" and ""Y"" respectively.",Topographic Mapping Section; Quebec Ministry of Natural Resources. Also Geodetic Surveys Section; Newfoundland Department of Government Services and Lands.,EPSG,1997-11-13 00:00:00,,1,0
-32187,NAD83 / MTM zone 7,1425,projected,4496,,4269,17707,,,Large and medium scale topographic mapping and engineering survey.,"Known in Quebec as ""NAD83 / SCoPQ zone 7"" with axis 1 and 2 abbreviations of ""X"" and ""Y"" respectively.",Topographic Mapping Section; Quebec Ministry of Natural Resources.,EPSG,1997-11-13 00:00:00,,1,0
-32188,NAD83 / MTM zone 8,2279,projected,4496,,4269,17708,,,Large and medium scale topographic mapping and engineering survey.,"Known in Quebec as ""NAD83 / SCoPQ zone 8"" with axis 1 and 2 abbreviations of ""X"" and ""Y"" respectively.",Surveys and Mapping Section; Ontario Ministry of Transportation.,EPSG,1997-11-13 00:00:00,,1,0
-32189,NAD83 / MTM zone 9,2280,projected,4496,,4269,17709,,,Large and medium scale topographic mapping and engineering survey.,"Known in Quebec as ""NAD83 / SCoPQ zone 9"" with axis 1 and 2 abbreviations of ""X"" and ""Y"" respectively.",Surveys and Mapping Section; Ontario Ministry of Transportation.,EPSG,1997-11-13 00:00:00,,1,0
-32190,NAD83 / MTM zone 10,2281,projected,4496,,4269,17710,,,Large and medium scale topographic mapping and engineering survey.,"Known in Quebec as ""NAD83 / SCoPQ zone 10"" with axis 1 and 2 abbreviations of ""X"" and ""Y"" respectively.",Surveys and Mapping Section; Ontario Ministry of Transportation.,EPSG,1997-11-13 00:00:00,,1,0
-32191,NAD83 / MTM zone 11,1432,projected,4400,,4269,17711,,,Large and medium scale topographic mapping and engineering survey.,,Surveys and Mapping Section; Ontario Ministry of Transportation.,EPSG,1997-11-13 00:00:00,,1,0
-32192,NAD83 / MTM zone 12,1433,projected,4400,,4269,17712,,,Large and medium scale topographic mapping and engineering survey.,,Surveys and Mapping Section; Ontario Ministry of Transportation.,EPSG,1997-11-13 00:00:00,,1,0
-32193,NAD83 / MTM zone 13,1434,projected,4400,,4269,17713,,,Large and medium scale topographic mapping and engineering survey.,,Surveys and Mapping Section; Ontario Ministry of Transportation.,EPSG,1997-11-13 00:00:00,,1,0
-32194,NAD83 / MTM zone 14,1435,projected,4400,,4269,17714,,,Large and medium scale topographic mapping and engineering survey.,,Surveys and Mapping Section; Ontario Ministry of Transportation.,EPSG,1997-11-13 00:00:00,,1,0
-32195,NAD83 / MTM zone 15,1436,projected,4400,,4269,17715,,,Large and medium scale topographic mapping and engineering survey.,,Surveys and Mapping Section; Ontario Ministry of Transportation.,EPSG,1997-11-13 00:00:00,,1,0
-32196,NAD83 / MTM zone 16,1437,projected,4400,,4269,17716,,,Large and medium scale topographic mapping and engineering survey.,,Surveys and Mapping Section; Ontario Ministry of Transportation.,EPSG,1997-11-13 00:00:00,,1,0
-32197,NAD83 / MTM zone 17,1438,projected,4400,,4269,17717,,,Large and medium scale topographic mapping and engineering survey.,,Surveys and Mapping Section; Ontario Ministry of Transportation.,EPSG,1997-11-13 00:00:00,,1,0
-32198,NAD83 / Quebec Lambert,1368,projected,4499,,4269,19944,,,Large and medium scale topographic mapping and engineering survey.,,Service de la Cartographie; Minist�re des Ressources Naturelles; Quebec,EPSG,1999-10-20 00:00:00,,1,0
-32201,WGS 72 / UTM zone 1N,1873,projected,4400,,4322,16001,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32202,WGS 72 / UTM zone 2N,1875,projected,4400,,4322,16002,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32203,WGS 72 / UTM zone 3N,1877,projected,4400,,4322,16003,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32204,WGS 72 / UTM zone 4N,1879,projected,4400,,4322,16004,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32205,WGS 72 / UTM zone 5N,1881,projected,4400,,4322,16005,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32206,WGS 72 / UTM zone 6N,1883,projected,4400,,4322,16006,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32207,WGS 72 / UTM zone 7N,1885,projected,4400,,4322,16007,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32208,WGS 72 / UTM zone 8N,1887,projected,4400,,4322,16008,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32209,WGS 72 / UTM zone 9N,1889,projected,4400,,4322,16009,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32210,WGS 72 / UTM zone 10N,1891,projected,4400,,4322,16010,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32211,WGS 72 / UTM zone 11N,1893,projected,4400,,4322,16011,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32212,WGS 72 / UTM zone 12N,1895,projected,4400,,4322,16012,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32213,WGS 72 / UTM zone 13N,1897,projected,4400,,4322,16013,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32214,WGS 72 / UTM zone 14N,1899,projected,4400,,4322,16014,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32215,WGS 72 / UTM zone 15N,1901,projected,4400,,4322,16015,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32216,WGS 72 / UTM zone 16N,1903,projected,4400,,4322,16016,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32217,WGS 72 / UTM zone 17N,1905,projected,4400,,4322,16017,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32218,WGS 72 / UTM zone 18N,1907,projected,4400,,4322,16018,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32219,WGS 72 / UTM zone 19N,1909,projected,4400,,4322,16019,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32220,WGS 72 / UTM zone 20N,1911,projected,4400,,4322,16020,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32221,WGS 72 / UTM zone 21N,1913,projected,4400,,4322,16021,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32222,WGS 72 / UTM zone 22N,1915,projected,4400,,4322,16022,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32223,WGS 72 / UTM zone 23N,1917,projected,4400,,4322,16023,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32224,WGS 72 / UTM zone 24N,1919,projected,4400,,4322,16024,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32225,WGS 72 / UTM zone 25N,1921,projected,4400,,4322,16025,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32226,WGS 72 / UTM zone 26N,1923,projected,4400,,4322,16026,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32227,WGS 72 / UTM zone 27N,1925,projected,4400,,4322,16027,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32228,WGS 72 / UTM zone 28N,1927,projected,4400,,4322,16028,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32229,WGS 72 / UTM zone 29N,1929,projected,4400,,4322,16029,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32230,WGS 72 / UTM zone 30N,1931,projected,4400,,4322,16030,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32231,WGS 72 / UTM zone 31N,1933,projected,4400,,4322,16031,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32232,WGS 72 / UTM zone 32N,1935,projected,4400,,4322,16032,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32233,WGS 72 / UTM zone 33N,1937,projected,4400,,4322,16033,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32234,WGS 72 / UTM zone 34N,1939,projected,4400,,4322,16034,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32235,WGS 72 / UTM zone 35N,1941,projected,4400,,4322,16035,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32236,WGS 72 / UTM zone 36N,1943,projected,4400,,4322,16036,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32237,WGS 72 / UTM zone 37N,1945,projected,4400,,4322,16037,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32238,WGS 72 / UTM zone 38N,1947,projected,4400,,4322,16038,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32239,WGS 72 / UTM zone 39N,1949,projected,4400,,4322,16039,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32240,WGS 72 / UTM zone 40N,1951,projected,4400,,4322,16040,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32241,WGS 72 / UTM zone 41N,1953,projected,4400,,4322,16041,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32242,WGS 72 / UTM zone 42N,1955,projected,4400,,4322,16042,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32243,WGS 72 / UTM zone 43N,1957,projected,4400,,4322,16043,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32244,WGS 72 / UTM zone 44N,1959,projected,4400,,4322,16044,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32245,WGS 72 / UTM zone 45N,1961,projected,4400,,4322,16045,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32246,WGS 72 / UTM zone 46N,1963,projected,4400,,4322,16046,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32247,WGS 72 / UTM zone 47N,1965,projected,4400,,4322,16047,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32248,WGS 72 / UTM zone 48N,1967,projected,4400,,4322,16048,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32249,WGS 72 / UTM zone 49N,1969,projected,4400,,4322,16049,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32250,WGS 72 / UTM zone 50N,1971,projected,4400,,4322,16050,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32251,WGS 72 / UTM zone 51N,1973,projected,4400,,4322,16051,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32252,WGS 72 / UTM zone 52N,1975,projected,4400,,4322,16052,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32253,WGS 72 / UTM zone 53N,1977,projected,4400,,4322,16053,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32254,WGS 72 / UTM zone 54N,1979,projected,4400,,4322,16054,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32255,WGS 72 / UTM zone 55N,1981,projected,4400,,4322,16055,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32256,WGS 72 / UTM zone 56N,1983,projected,4400,,4322,16056,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32257,WGS 72 / UTM zone 57N,1985,projected,4400,,4322,16057,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32258,WGS 72 / UTM zone 58N,1987,projected,4400,,4322,16058,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32259,WGS 72 / UTM zone 59N,1989,projected,4400,,4322,16059,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32260,WGS 72 / UTM zone 60N,1991,projected,4400,,4322,16060,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32301,WGS 72 / UTM zone 1S,1874,projected,4400,,4322,16101,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32302,WGS 72 / UTM zone 2S,1876,projected,4400,,4322,16102,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32303,WGS 72 / UTM zone 3S,1878,projected,4400,,4322,16103,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32304,WGS 72 / UTM zone 4S,1880,projected,4400,,4322,16104,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32305,WGS 72 / UTM zone 5S,1882,projected,4400,,4322,16105,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32306,WGS 72 / UTM zone 6S,1884,projected,4400,,4322,16106,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32307,WGS 72 / UTM zone 7S,1886,projected,4400,,4322,16107,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32308,WGS 72 / UTM zone 8S,1888,projected,4400,,4322,16108,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32309,WGS 72 / UTM zone 9S,1890,projected,4400,,4322,16109,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32310,WGS 72 / UTM zone 10S,1892,projected,4400,,4322,16110,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32311,WGS 72 / UTM zone 11S,1894,projected,4400,,4322,16111,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32312,WGS 72 / UTM zone 12S,1896,projected,4400,,4322,16112,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32313,WGS 72 / UTM zone 13S,1898,projected,4400,,4322,16113,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32314,WGS 72 / UTM zone 14S,1900,projected,4400,,4322,16114,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32315,WGS 72 / UTM zone 15S,1902,projected,4400,,4322,16115,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32316,WGS 72 / UTM zone 16S,1904,projected,4400,,4322,16116,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32317,WGS 72 / UTM zone 17S,1906,projected,4400,,4322,16117,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32318,WGS 72 / UTM zone 18S,1908,projected,4400,,4322,16118,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32319,WGS 72 / UTM zone 19S,1910,projected,4400,,4322,16119,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32320,WGS 72 / UTM zone 20S,1912,projected,4400,,4322,16120,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32321,WGS 72 / UTM zone 21S,1914,projected,4400,,4322,16121,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32322,WGS 72 / UTM zone 22S,1916,projected,4400,,4322,16122,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32323,WGS 72 / UTM zone 23S,1918,projected,4400,,4322,16123,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32324,WGS 72 / UTM zone 24S,1920,projected,4400,,4322,16124,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32325,WGS 72 / UTM zone 25S,1922,projected,4400,,4322,16125,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32326,WGS 72 / UTM zone 26S,1924,projected,4400,,4322,16126,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32327,WGS 72 / UTM zone 27S,1926,projected,4400,,4322,16127,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32328,WGS 72 / UTM zone 28S,1928,projected,4400,,4322,16128,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32329,WGS 72 / UTM zone 29S,1930,projected,4400,,4322,16129,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32330,WGS 72 / UTM zone 30S,1932,projected,4400,,4322,16130,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32331,WGS 72 / UTM zone 31S,1934,projected,4400,,4322,16131,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32332,WGS 72 / UTM zone 32S,1936,projected,4400,,4322,16132,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32333,WGS 72 / UTM zone 33S,1938,projected,4400,,4322,16133,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32334,WGS 72 / UTM zone 34S,1940,projected,4400,,4322,16134,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32335,WGS 72 / UTM zone 35S,1942,projected,4400,,4322,16135,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32336,WGS 72 / UTM zone 36S,1944,projected,4400,,4322,16136,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32337,WGS 72 / UTM zone 37S,1946,projected,4400,,4322,16137,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32338,WGS 72 / UTM zone 38S,1948,projected,4400,,4322,16138,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32339,WGS 72 / UTM zone 39S,1950,projected,4400,,4322,16139,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32340,WGS 72 / UTM zone 40S,1952,projected,4400,,4322,16140,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32341,WGS 72 / UTM zone 41S,1954,projected,4400,,4322,16141,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32342,WGS 72 / UTM zone 42S,1956,projected,4400,,4322,16142,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32343,WGS 72 / UTM zone 43S,1958,projected,4400,,4322,16143,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32344,WGS 72 / UTM zone 44S,1960,projected,4400,,4322,16144,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32345,WGS 72 / UTM zone 45S,1962,projected,4400,,4322,16145,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32346,WGS 72 / UTM zone 46S,1964,projected,4400,,4322,16146,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32347,WGS 72 / UTM zone 47S,1966,projected,4400,,4322,16147,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32348,WGS 72 / UTM zone 48S,1968,projected,4400,,4322,16148,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32349,WGS 72 / UTM zone 49S,1970,projected,4400,,4322,16149,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32350,WGS 72 / UTM zone 50S,1972,projected,4400,,4322,16150,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32351,WGS 72 / UTM zone 51S,1974,projected,4400,,4322,16151,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32352,WGS 72 / UTM zone 52S,1976,projected,4400,,4322,16152,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32353,WGS 72 / UTM zone 53S,1978,projected,4400,,4322,16153,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32354,WGS 72 / UTM zone 54S,1980,projected,4400,,4322,16154,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32355,WGS 72 / UTM zone 55S,1982,projected,4400,,4322,16155,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32356,WGS 72 / UTM zone 56S,1984,projected,4400,,4322,16156,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32357,WGS 72 / UTM zone 57S,1986,projected,4400,,4322,16157,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32358,WGS 72 / UTM zone 58S,1988,projected,4400,,4322,16158,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32359,WGS 72 / UTM zone 59S,1990,projected,4400,,4322,16159,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32360,WGS 72 / UTM zone 60S,1992,projected,4400,,4322,16160,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32401,WGS 72BE / UTM zone 1N,1873,projected,4400,,4324,16001,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32402,WGS 72BE / UTM zone 2N,1876,projected,4400,,4324,16002,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32403,WGS 72BE / UTM zone 3N,1877,projected,4400,,4324,16003,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32404,WGS 72BE / UTM zone 4N,1879,projected,4400,,4324,16004,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32405,WGS 72BE / UTM zone 5N,1881,projected,4400,,4324,16005,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32406,WGS 72BE / UTM zone 6N,1883,projected,4400,,4324,16006,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32407,WGS 72BE / UTM zone 7N,1885,projected,4400,,4324,16007,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32408,WGS 72BE / UTM zone 8N,1887,projected,4400,,4324,16008,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32409,WGS 72BE / UTM zone 9N,1889,projected,4400,,4324,16009,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32410,WGS 72BE / UTM zone 10N,1891,projected,4400,,4324,16010,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32411,WGS 72BE / UTM zone 11N,1893,projected,4400,,4324,16011,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32412,WGS 72BE / UTM zone 12N,1895,projected,4400,,4324,16012,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32413,WGS 72BE / UTM zone 13N,1897,projected,4400,,4324,16013,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32414,WGS 72BE / UTM zone 14N,1899,projected,4400,,4324,16014,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32415,WGS 72BE / UTM zone 15N,1901,projected,4400,,4324,16015,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32416,WGS 72BE / UTM zone 16N,1903,projected,4400,,4324,16016,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32417,WGS 72BE / UTM zone 17N,1905,projected,4400,,4324,16017,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32418,WGS 72BE / UTM zone 18N,1907,projected,4400,,4324,16018,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32419,WGS 72BE / UTM zone 19N,1909,projected,4400,,4324,16019,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32420,WGS 72BE / UTM zone 20N,1911,projected,4400,,4324,16020,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32421,WGS 72BE / UTM zone 21N,1913,projected,4400,,4324,16021,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32422,WGS 72BE / UTM zone 22N,1915,projected,4400,,4324,16022,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32423,WGS 72BE / UTM zone 23N,1917,projected,4400,,4324,16023,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32424,WGS 72BE / UTM zone 24N,1919,projected,4400,,4324,16024,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32425,WGS 72BE / UTM zone 25N,1921,projected,4400,,4324,16025,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32426,WGS 72BE / UTM zone 26N,1923,projected,4400,,4324,16026,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32427,WGS 72BE / UTM zone 27N,1925,projected,4400,,4324,16027,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32428,WGS 72BE / UTM zone 28N,1927,projected,4400,,4324,16028,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32429,WGS 72BE / UTM zone 29N,1929,projected,4400,,4324,16029,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32430,WGS 72BE / UTM zone 30N,1931,projected,4400,,4324,16030,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32431,WGS 72BE / UTM zone 31N,1933,projected,4400,,4324,16031,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32432,WGS 72BE / UTM zone 32N,1935,projected,4400,,4324,16032,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32433,WGS 72BE / UTM zone 33N,1937,projected,4400,,4324,16033,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32434,WGS 72BE / UTM zone 34N,1939,projected,4400,,4324,16034,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32435,WGS 72BE / UTM zone 35N,1941,projected,4400,,4324,16035,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32436,WGS 72BE / UTM zone 36N,1943,projected,4400,,4324,16036,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32437,WGS 72BE / UTM zone 37N,1945,projected,4400,,4324,16037,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32438,WGS 72BE / UTM zone 38N,1947,projected,4400,,4324,16038,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32439,WGS 72BE / UTM zone 39N,1949,projected,4400,,4324,16039,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32440,WGS 72BE / UTM zone 40N,1951,projected,4400,,4324,16040,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32441,WGS 72BE / UTM zone 41N,1953,projected,4400,,4324,16041,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32442,WGS 72BE / UTM zone 42N,1955,projected,4400,,4324,16042,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32443,WGS 72BE / UTM zone 43N,1957,projected,4400,,4324,16043,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32444,WGS 72BE / UTM zone 44N,1959,projected,4400,,4324,16044,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32445,WGS 72BE / UTM zone 45N,1961,projected,4400,,4324,16045,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32446,WGS 72BE / UTM zone 46N,1963,projected,4400,,4324,16046,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32447,WGS 72BE / UTM zone 47N,1965,projected,4400,,4324,16047,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32448,WGS 72BE / UTM zone 48N,1993,projected,4400,,4324,16048,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32449,WGS 72BE / UTM zone 49N,1994,projected,4400,,4324,16049,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32450,WGS 72BE / UTM zone 50N,1971,projected,4400,,4324,16050,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32451,WGS 72BE / UTM zone 51N,1973,projected,4400,,4324,16051,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32452,WGS 72BE / UTM zone 52N,1975,projected,4400,,4324,16052,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32453,WGS 72BE / UTM zone 53N,1977,projected,4400,,4324,16053,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32454,WGS 72BE / UTM zone 54N,1979,projected,4400,,4324,16054,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32455,WGS 72BE / UTM zone 55N,1981,projected,4400,,4324,16055,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32456,WGS 72BE / UTM zone 56N,1983,projected,4400,,4324,16056,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32457,WGS 72BE / UTM zone 57N,1985,projected,4400,,4324,16057,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32458,WGS 72BE / UTM zone 58N,1987,projected,4400,,4324,16058,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32459,WGS 72BE / UTM zone 59N,1989,projected,4400,,4324,16059,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32460,WGS 72BE / UTM zone 60N,1991,projected,4400,,4324,16060,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32501,WGS 72BE / UTM zone 1S,1874,projected,4400,,4324,16101,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32502,WGS 72BE / UTM zone 2S,1876,projected,4400,,4324,16102,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32503,WGS 72BE / UTM zone 3S,1878,projected,4400,,4324,16103,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32504,WGS 72BE / UTM zone 4S,1880,projected,4400,,4324,16104,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32505,WGS 72BE / UTM zone 5S,1882,projected,4400,,4324,16105,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32506,WGS 72BE / UTM zone 6S,1884,projected,4400,,4324,16106,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32507,WGS 72BE / UTM zone 7S,1886,projected,4400,,4324,16107,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32508,WGS 72BE / UTM zone 8S,1888,projected,4400,,4324,16108,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32509,WGS 72BE / UTM zone 9S,1890,projected,4400,,4324,16109,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32510,WGS 72BE / UTM zone 10S,1892,projected,4400,,4324,16110,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32511,WGS 72BE / UTM zone 11S,1894,projected,4400,,4324,16111,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32512,WGS 72BE / UTM zone 12S,1896,projected,4400,,4324,16112,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32513,WGS 72BE / UTM zone 13S,1898,projected,4400,,4324,16113,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32514,WGS 72BE / UTM zone 14S,1900,projected,4400,,4324,16114,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32515,WGS 72BE / UTM zone 15S,1902,projected,4400,,4324,16115,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32516,WGS 72BE / UTM zone 16S,1904,projected,4400,,4324,16116,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32517,WGS 72BE / UTM zone 17S,1906,projected,4400,,4324,16117,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32518,WGS 72BE / UTM zone 18S,1908,projected,4400,,4324,16118,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32519,WGS 72BE / UTM zone 19S,1910,projected,4400,,4324,16119,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32520,WGS 72BE / UTM zone 20S,1912,projected,4400,,4324,16120,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32521,WGS 72BE / UTM zone 21S,1914,projected,4400,,4324,16121,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32522,WGS 72BE / UTM zone 22S,1916,projected,4400,,4324,16122,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32523,WGS 72BE / UTM zone 23S,1918,projected,4400,,4324,16123,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32524,WGS 72BE / UTM zone 24S,1920,projected,4400,,4324,16124,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32525,WGS 72BE / UTM zone 25S,1922,projected,4400,,4324,16125,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32526,WGS 72BE / UTM zone 26S,1924,projected,4400,,4324,16126,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32527,WGS 72BE / UTM zone 27S,1926,projected,4400,,4324,16127,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32528,WGS 72BE / UTM zone 28S,1928,projected,4400,,4324,16128,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32529,WGS 72BE / UTM zone 29S,1930,projected,4400,,4324,16129,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32530,WGS 72BE / UTM zone 30S,1932,projected,4400,,4324,16130,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32531,WGS 72BE / UTM zone 31S,1934,projected,4400,,4324,16131,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32532,WGS 72BE / UTM zone 32S,1936,projected,4400,,4324,16132,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32533,WGS 72BE / UTM zone 33S,1938,projected,4400,,4324,16133,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32534,WGS 72BE / UTM zone 34S,1940,projected,4400,,4324,16134,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32535,WGS 72BE / UTM zone 35S,1942,projected,4400,,4324,16135,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32536,WGS 72BE / UTM zone 36S,1944,projected,4400,,4324,16136,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32537,WGS 72BE / UTM zone 37S,1946,projected,4400,,4324,16137,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32538,WGS 72BE / UTM zone 38S,1948,projected,4400,,4324,16138,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32539,WGS 72BE / UTM zone 39S,1950,projected,4400,,4324,16139,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32540,WGS 72BE / UTM zone 40S,1952,projected,4400,,4324,16140,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32541,WGS 72BE / UTM zone 41S,1954,projected,4400,,4324,16141,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32542,WGS 72BE / UTM zone 42S,1956,projected,4400,,4324,16142,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32543,WGS 72BE / UTM zone 43S,1958,projected,4400,,4324,16143,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32544,WGS 72BE / UTM zone 44S,1960,projected,4400,,4324,16144,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32545,WGS 72BE / UTM zone 45S,1962,projected,4400,,4324,16145,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32546,WGS 72BE / UTM zone 46S,1964,projected,4400,,4324,16146,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32547,WGS 72BE / UTM zone 47S,1966,projected,4400,,4324,16147,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32548,WGS 72BE / UTM zone 48S,1968,projected,4400,,4324,16148,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32549,WGS 72BE / UTM zone 49S,1995,projected,4400,,4324,16149,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32550,WGS 72BE / UTM zone 50S,1972,projected,4400,,4324,16150,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32551,WGS 72BE / UTM zone 51S,1974,projected,4400,,4324,16151,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32552,WGS 72BE / UTM zone 52S,1976,projected,4400,,4324,16152,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32553,WGS 72BE / UTM zone 53S,1978,projected,4400,,4324,16153,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32554,WGS 72BE / UTM zone 54S,1980,projected,4400,,4324,16154,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32555,WGS 72BE / UTM zone 55S,1982,projected,4400,,4324,16155,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32556,WGS 72BE / UTM zone 56S,1984,projected,4400,,4324,16156,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32557,WGS 72BE / UTM zone 57S,1986,projected,4400,,4324,16157,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32558,WGS 72BE / UTM zone 58S,1988,projected,4400,,4324,16158,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32559,WGS 72BE / UTM zone 59S,1990,projected,4400,,4324,16159,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32560,WGS 72BE / UTM zone 60S,1992,projected,4400,,4324,16160,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32600,WGS 84 / UTM grid system (northern hemisphere),1998,projected,4400,,4326,16000,,,For strict use within zone boundaries,Use WGS 84 / UTM zone xx N (codes 32601-32660) for use outwith zone boundary or when easting is not prefixed by zone number.,EPSG,EPSG,2001-06-05 00:00:00,,1,0
-32601,WGS 84 / UTM zone 1N,2000,projected,4400,,4326,16001,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32602,WGS 84 / UTM zone 2N,2002,projected,4400,,4326,16002,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32603,WGS 84 / UTM zone 3N,2004,projected,4400,,4326,16003,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32604,WGS 84 / UTM zone 4N,2006,projected,4400,,4326,16004,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32605,WGS 84 / UTM zone 5N,2008,projected,4400,,4326,16005,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32606,WGS 84 / UTM zone 6N,2010,projected,4400,,4326,16006,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32607,WGS 84 / UTM zone 7N,2012,projected,4400,,4326,16007,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32608,WGS 84 / UTM zone 8N,2014,projected,4400,,4326,16008,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32609,WGS 84 / UTM zone 9N,2016,projected,4400,,4326,16009,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32610,WGS 84 / UTM zone 10N,2018,projected,4400,,4326,16010,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32611,WGS 84 / UTM zone 11N,2020,projected,4400,,4326,16011,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32612,WGS 84 / UTM zone 12N,2022,projected,4400,,4326,16012,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32613,WGS 84 / UTM zone 13N,2024,projected,4400,,4326,16013,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32614,WGS 84 / UTM zone 14N,2026,projected,4400,,4326,16014,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32615,WGS 84 / UTM zone 15N,2028,projected,4400,,4326,16015,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32616,WGS 84 / UTM zone 16N,2030,projected,4400,,4326,16016,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32617,WGS 84 / UTM zone 17N,2032,projected,4400,,4326,16017,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32618,WGS 84 / UTM zone 18N,2034,projected,4400,,4326,16018,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32619,WGS 84 / UTM zone 19N,2036,projected,4400,,4326,16019,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32620,WGS 84 / UTM zone 20N,2038,projected,4400,,4326,16020,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32621,WGS 84 / UTM zone 21N,2040,projected,4400,,4326,16021,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32622,WGS 84 / UTM zone 22N,2042,projected,4400,,4326,16022,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32623,WGS 84 / UTM zone 23N,2044,projected,4400,,4326,16023,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32624,WGS 84 / UTM zone 24N,2046,projected,4400,,4326,16024,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32625,WGS 84 / UTM zone 25N,2048,projected,4400,,4326,16025,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32626,WGS 84 / UTM zone 26N,2050,projected,4400,,4326,16026,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32627,WGS 84 / UTM zone 27N,2052,projected,4400,,4326,16027,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32628,WGS 84 / UTM zone 28N,2054,projected,4400,,4326,16028,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32629,WGS 84 / UTM zone 29N,2056,projected,4400,,4326,16029,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32630,WGS 84 / UTM zone 30N,2058,projected,4400,,4326,16030,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32631,WGS 84 / UTM zone 31N,2060,projected,4400,,4326,16031,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32632,WGS 84 / UTM zone 32N,2062,projected,4400,,4326,16032,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32633,WGS 84 / UTM zone 33N,2064,projected,4400,,4326,16033,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32634,WGS 84 / UTM zone 34N,2066,projected,4400,,4326,16034,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32635,WGS 84 / UTM zone 35N,2068,projected,4400,,4326,16035,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32636,WGS 84 / UTM zone 36N,2070,projected,4400,,4326,16036,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32637,WGS 84 / UTM zone 37N,2072,projected,4400,,4326,16037,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32638,WGS 84 / UTM zone 38N,2074,projected,4400,,4326,16038,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32639,WGS 84 / UTM zone 39N,2076,projected,4400,,4326,16039,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32640,WGS 84 / UTM zone 40N,2078,projected,4400,,4326,16040,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32641,WGS 84 / UTM zone 41N,2080,projected,4400,,4326,16041,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32642,WGS 84 / UTM zone 42N,2082,projected,4400,,4326,16042,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32643,WGS 84 / UTM zone 43N,2084,projected,4400,,4326,16043,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32644,WGS 84 / UTM zone 44N,2086,projected,4400,,4326,16044,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32645,WGS 84 / UTM zone 45N,2088,projected,4400,,4326,16045,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32646,WGS 84 / UTM zone 46N,2090,projected,4400,,4326,16046,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2002-06-22 00:00:00,2002.151,1,0
-32647,WGS 84 / UTM zone 47N,2092,projected,4400,,4326,16047,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2002-06-22 00:00:00,2002.151,1,0
-32648,WGS 84 / UTM zone 48N,2094,projected,4400,,4326,16048,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2002-06-22 00:00:00,2002.151,1,0
-32649,WGS 84 / UTM zone 49N,2096,projected,4400,,4326,16049,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2002-06-22 00:00:00,2002.151,1,0
-32650,WGS 84 / UTM zone 50N,2098,projected,4400,,4326,16050,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2002-06-22 00:00:00,2002.151,1,0
-32651,WGS 84 / UTM zone 51N,2100,projected,4400,,4326,16051,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2002-06-22 00:00:00,2002.151,1,0
-32652,WGS 84 / UTM zone 52N,2102,projected,4400,,4326,16052,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2002-06-22 00:00:00,2002.151,1,0
-32653,WGS 84 / UTM zone 53N,2104,projected,4400,,4326,16053,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32654,WGS 84 / UTM zone 54N,2106,projected,4400,,4326,16054,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32655,WGS 84 / UTM zone 55N,2108,projected,4400,,4326,16055,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32656,WGS 84 / UTM zone 56N,2110,projected,4400,,4326,16056,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32657,WGS 84 / UTM zone 57N,2112,projected,4400,,4326,16057,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32658,WGS 84 / UTM zone 58N,2114,projected,4400,,4326,16058,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32659,WGS 84 / UTM zone 59N,2116,projected,4400,,4326,16059,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32660,WGS 84 / UTM zone 60N,2118,projected,4400,,4326,16060,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32661,WGS 84 / UPS North,1996,projected,4400,,4326,16061,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1996-09-12 00:00:00,,1,0
-32662,WGS 84 / Plate Carree,1262,projected,4499,,4326,19968,,,Graticule coordinates expressed in simple Cartesian form.,Origin is at intersection of equator and Greenwich meridian. Note: this is not the same as plotting unrectified graticule coordinates on a computer display using the so-called pseudo Plate Carr�e method: here the grid units are metres.,EPSG,EPSG,2001-11-06 00:00:00,,1,0
-32700,WGS 84 / UTM grid system (southern hemisphere),1999,projected,4400,,4326,16100,,,For strict use within zone boundaries,Use WGS 84 / UTM zone xx S (codes 32701-32760) for use outwith zone boundary or when easting is not prefixed by zone number.,EPSG,EPSG,2001-06-05 00:00:00,,1,0
-32701,WGS 84 / UTM zone 1S,2001,projected,4400,,4326,16101,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32702,WGS 84 / UTM zone 2S,2003,projected,4400,,4326,16102,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32703,WGS 84 / UTM zone 3S,2005,projected,4400,,4326,16103,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32704,WGS 84 / UTM zone 4S,2007,projected,4400,,4326,16104,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32705,WGS 84 / UTM zone 5S,2009,projected,4400,,4326,16105,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32706,WGS 84 / UTM zone 6S,2011,projected,4400,,4326,16106,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32707,WGS 84 / UTM zone 7S,2013,projected,4400,,4326,16107,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32708,WGS 84 / UTM zone 8S,2015,projected,4400,,4326,16108,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32709,WGS 84 / UTM zone 9S,2017,projected,4400,,4326,16109,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32710,WGS 84 / UTM zone 10S,2019,projected,4400,,4326,16110,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32711,WGS 84 / UTM zone 11S,2021,projected,4400,,4326,16111,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32712,WGS 84 / UTM zone 12S,2023,projected,4400,,4326,16112,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32713,WGS 84 / UTM zone 13S,2025,projected,4400,,4326,16113,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32714,WGS 84 / UTM zone 14S,2027,projected,4400,,4326,16114,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32715,WGS 84 / UTM zone 15S,2029,projected,4400,,4326,16115,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32716,WGS 84 / UTM zone 16S,2031,projected,4400,,4326,16116,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32717,WGS 84 / UTM zone 17S,2033,projected,4400,,4326,16117,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32718,WGS 84 / UTM zone 18S,2035,projected,4400,,4326,16118,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32719,WGS 84 / UTM zone 19S,2037,projected,4400,,4326,16119,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32720,WGS 84 / UTM zone 20S,2039,projected,4400,,4326,16120,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32721,WGS 84 / UTM zone 21S,2041,projected,4400,,4326,16121,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32722,WGS 84 / UTM zone 22S,2043,projected,4400,,4326,16122,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32723,WGS 84 / UTM zone 23S,2045,projected,4400,,4326,16123,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32724,WGS 84 / UTM zone 24S,2047,projected,4400,,4326,16124,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32725,WGS 84 / UTM zone 25S,2049,projected,4400,,4326,16125,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32726,WGS 84 / UTM zone 26S,2051,projected,4400,,4326,16126,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32727,WGS 84 / UTM zone 27S,2053,projected,4400,,4326,16127,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32728,WGS 84 / UTM zone 28S,2055,projected,4400,,4326,16128,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32729,WGS 84 / UTM zone 29S,2057,projected,4400,,4326,16129,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32730,WGS 84 / UTM zone 30S,2059,projected,4400,,4326,16130,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32731,WGS 84 / UTM zone 31S,2061,projected,4400,,4326,16131,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32732,WGS 84 / UTM zone 32S,2063,projected,4400,,4326,16132,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32733,WGS 84 / UTM zone 33S,2065,projected,4400,,4326,16133,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32734,WGS 84 / UTM zone 34S,2067,projected,4400,,4326,16134,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32735,WGS 84 / UTM zone 35S,2069,projected,4400,,4326,16135,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32736,WGS 84 / UTM zone 36S,2071,projected,4400,,4326,16136,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32737,WGS 84 / UTM zone 37S,2073,projected,4400,,4326,16137,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32738,WGS 84 / UTM zone 38S,2075,projected,4400,,4326,16138,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32739,WGS 84 / UTM zone 39S,2077,projected,4400,,4326,16139,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32740,WGS 84 / UTM zone 40S,2079,projected,4400,,4326,16140,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32741,WGS 84 / UTM zone 41S,2081,projected,4400,,4326,16141,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32742,WGS 84 / UTM zone 42S,2083,projected,4400,,4326,16142,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32743,WGS 84 / UTM zone 43S,2085,projected,4400,,4326,16143,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32744,WGS 84 / UTM zone 44S,2087,projected,4400,,4326,16144,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32745,WGS 84 / UTM zone 45S,2089,projected,4400,,4326,16145,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32746,WGS 84 / UTM zone 46S,2091,projected,4400,,4326,16146,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32747,WGS 84 / UTM zone 47S,2093,projected,4400,,4326,16147,,,Large and medium scale topographic mapping and engineering survey.Large and medium scale topographic mapping and engineering survey.,,,EPSG,2002-06-22 00:00:00,2002.151,1,0
-32748,WGS 84 / UTM zone 48S,2095,projected,4400,,4326,16148,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2002-06-22 00:00:00,2002.151,1,0
-32749,WGS 84 / UTM zone 49S,2097,projected,4400,,4326,16149,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2002-06-22 00:00:00,2002.151,1,0
-32750,WGS 84 / UTM zone 50S,2099,projected,4400,,4326,16150,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2002-06-22 00:00:00,2002.151,1,0
-32751,WGS 84 / UTM zone 51S,2101,projected,4400,,4326,16151,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2002-06-22 00:00:00,2002.151,1,0
-32752,WGS 84 / UTM zone 52S,2103,projected,4400,,4326,16152,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2002-06-22 00:00:00,2002.151,1,0
-32753,WGS 84 / UTM zone 53S,2105,projected,4400,,4326,16153,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2002-06-22 00:00:00,2002.151,1,0
-32754,WGS 84 / UTM zone 54S,2107,projected,4400,,4326,16154,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,2002-06-22 00:00:00,2002.151,1,0
-32755,WGS 84 / UTM zone 55S,2109,projected,4400,,4326,16155,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32756,WGS 84 / UTM zone 56S,2111,projected,4400,,4326,16156,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32757,WGS 84 / UTM zone 57S,2113,projected,4400,,4326,16157,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32758,WGS 84 / UTM zone 58S,2115,projected,4400,,4326,16158,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32759,WGS 84 / UTM zone 59S,2117,projected,4400,,4326,16159,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32760,WGS 84 / UTM zone 60S,2119,projected,4400,,4326,16160,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1995-06-02 00:00:00,,1,0
-32761,WGS 84 / UPS South,1997,projected,4400,,4326,16161,,,Large and medium scale topographic mapping and engineering survey.,,,EPSG,1996-09-12 00:00:00,,1,0
-32766,WGS 84 / TM 36 SE,1726,projected,4400,,4326,16636,,,Used for oil exploration by BP Mozambique for Offshore Zambezi block oil exploration.,,BP Mozambique.,EPSG,1998-11-11 00:00:00,,1,0
diff --git a/src/tiff/csv/coordinate_system.csv b/src/tiff/csv/coordinate_system.csv
deleted file mode 100644
index cb73572..0000000
--- a/src/tiff/csv/coordinate_system.csv
+++ /dev/null
@@ -1,38 +0,0 @@
-"COORD_SYS_CODE","COORD_SYS_NAME","COORD_SYS_TYPE","DIMENSION","REMARKS","INFORMATION_SOURCE","DATA_SOURCE","REVISION_DATE","CHANGE_ID","DEPRECATED"
-4400,"Cartesian 2D CS.  Axes: easting, northing (E,N). Orientations: east, north.  UoM: m.",Cartesian,2,Used in projected and engineering coordinate reference systems.,EPSG,EPSG,2001-04-29 00:00:00,,0
-4401,"Cartesian 2D CS.  Axes: easting, northing (E,N). Orientations: east, north.  UoM: chBnB.",Cartesian,2,Used in projected and engineering coordinate reference systems.,EPSG,EPSG,2001-04-29 00:00:00,,0
-4402,"Cartesian 2D CS.  Axes: easting, northing (E,N). Orientations: east, north.  UoM: chSe.",Cartesian,2,Used in projected and engineering coordinate reference systems.,EPSG,EPSG,2001-04-29 00:00:00,,0
-4403,"Cartesian 2D CS.  Axes: easting, northing (E,N). Orientations: east, north.  UoM: ftCla.",Cartesian,2,Used in projected and engineering coordinate reference systems.,EPSG,EPSG,2001-04-29 00:00:00,,0
-4404,"Cartesian 2D CS.  Axes: easting, northing (E,N). Orientations: east, north.  UoM: ftGC.",Cartesian,2,Used in projected and engineering coordinate reference systems.,EPSG,EPSG,2001-04-29 00:00:00,,0
-4405,"Cartesian 2D CS.  Axes: easting, northing (E,N). Orientations: east, north.  UoM: ftSe.",Cartesian,2,Used in projected and engineering coordinate reference systems.,EPSG,EPSG,2001-04-29 00:00:00,,0
-4406,"Cartesian 2D CS.  Axes: easting, northing (E,N). Orientations: east, north.  UoM: km.",Cartesian,2,Used in projected and engineering coordinate reference systems.,EPSG,EPSG,2001-04-29 00:00:00,,0
-4407,"Cartesian 2D CS.  Axes: easting, northing (E,N). Orientations: east, north.  UoM: lkCla.",Cartesian,2,Used in projected and engineering coordinate reference systems.,EPSG,EPSG,2001-04-29 00:00:00,,0
-4408,"Cartesian 2D CS.  Axes: easting, northing (E,N). Orientations: east, north.  UoM: ydInd.",Cartesian,2,Used in projected and engineering coordinate reference systems.,EPSG,EPSG,2001-04-29 00:00:00,,0
-4409,"Cartesian 2D CS.  Axes: easting, northing (E,N). Orientations: east, north.  UoM: ydSe.",Cartesian,2,Used in projected and engineering coordinate reference systems.,EPSG,EPSG,2001-04-29 00:00:00,,0
-4495,"Cartesian 2D CS.  Axes: easting, northing (X,Y). Orientations: east, north.  UoM: ft.",Cartesian,2,Used in projected and engineering coordinate reference systems.,EPSG,EPSG,2001-11-06 00:00:00,,0
-4496,"Cartesian 2D CS.  Axes: easting, northing [E(X),N(Y)]. Orientations: east, north.  UoM: m.",Cartesian,2,Used in projected and engineering coordinate reference systems.,EPSG,EPSG,2001-04-29 00:00:00,,0
-4497,"Cartesian 2D CS.  Axes: easting, northing (X,Y). Orientations: east, north.  UoM: ftUS.",Cartesian,2,Used in projected and engineering coordinate reference systems.,EPSG,EPSG,2001-04-29 00:00:00,,0
-4498,"Cartesian 2D CS.  Axes: easting, northing (Y,X). Orientations: east, north.  UoM: m.",Cartesian,2,Used in projected and engineering coordinate reference systems.,EPSG,EPSG,2001-04-29 00:00:00,,0
-4499,"Cartesian 2D CS.  Axes: easting, northing (X,Y). Orientations: east, north.  UoM: m.",Cartesian,2,Used in projected and engineering coordinate reference systems.,EPSG,EPSG,2001-04-29 00:00:00,,0
-4500,"Cartesian 2D CS.  Axes: northing, easting (N,E). Orientations: north, east.  UoM: m.",Cartesian,2,Used in projected and engineering coordinate reference systems.,EPSG,EPSG,2001-04-29 00:00:00,,0
-4501,"Cartesian 2D CS.  Axes: northing, westing (N,E). Orientations: north, west.  UoM: m.",Cartesian,2,Used in Danish projected coordinate reference systems. Note that second axis has abbreviation E but is positive west.,EPSG,EPSG,2002-01-26 00:00:00,,0
-4530,"Cartesian 2D CS.  Axes: northing, easting (X,Y). Orientations: north, east.  UoM: m.",Cartesian,2,Used in projected and engineering coordinate reference systems.,EPSG,EPSG,2001-04-29 00:00:00,,0
-4531,"Cartesian 2D CS.  Axes: northing, easting (x,y). Orientations: north, east.  UoM: m.",Cartesian,2,Used in projected and engineering coordinate reference systems.,EPSG,EPSG,2001-04-29 00:00:00,,0
-4532,"Cartesian 2D CS.  Axes: northing, easting (Y,X). Orientations: north, east.  UoM: m.",Cartesian,2,Used in projected and engineering coordinate reference systems.,EPSG,EPSG,2001-04-29 00:00:00,,0
-6401,"Ellipsoidal 3D CS. Axes: latitude, longitude, ellipsoidal height. Orientations: east, north, up.  UoM: DMSH,metres.",ellipsoidal,3,Used in geographic 3D coordinate reference systems.,EPSG,EPSG,2001-01-19 00:00:00,,0
-6402,"Ellipsoidal 2D CS. Axes: latitude, longitude. Orientations: east, north.  UoM: DMSH.",ellipsoidal,2,Used in geographic 2D coordinate reference systems.,EPSG,EPSG,2001-01-19 00:00:00,,0
-6403,"Ellipsoidal 2D CS. Axes: latitude, longitude. Orientations: east, north.  UoM: grads.",ellipsoidal,2,Used in geographic 2D coordinate reference systems.,EPSG,EPSG,2001-01-19 00:00:00,,0
-6404,"Spherical 3D CS. Axes: latitude, longitude, radius. Orientations: north, east, up.  UoM: degrees, degrees, metres.",spherical,3,Used in geocentric 3D coordinate reference systems.,Open GIS Consortium,EPSG,2002-06-22 00:00:00,2002.30,0
-6497,Gravity-related CS. Axis: height (H). Orientation: up.  UoM: ftUS.,gravity-related,1,Used in vertical coordinate reference systems.,EPSG,EPSG,2001-01-19 00:00:00,,0
-6498,Gravity-related CS. Axis: depth (D). Orientation: down.  UoM: m.,gravity-related,1,Used in vertical coordinate reference systems.,EPSG,EPSG,2001-01-19 00:00:00,,0
-6499,Gravity-related CS. Axis: height (H). Orientation: up.  UoM: m.,gravity-related,1,Used in vertical coordinate reference systems.,EPSG,EPSG,2001-01-19 00:00:00,,0
-6500,"Earth centred, earth fixed, righthanded 3D coordinate system, consisting of 3 orthogonal axes with X and Y axes in the equatorial plane,  positive Z-axis parallel to mean earth rotation axis and pointing towards North Pole. UoM: m.",Cartesian,3,"Cartesian 3D CS, used in geocentric coordinate reference systems.",EPSG,EPSG,2001-01-19 00:00:00,,0
-6501,"Cartesian 2D CS.  Axes: southing, westing (X,Y). Orientations: south, west.  UoM: m.",Cartesian,2,Used in projected and engineering coordinate reference systems.,EPSG,EPSG,2001-04-29 00:00:00,,0
-6502,"Cartesian 2D CS.  Axes: westing, southing (Y,X). Orientations: west, south.  UoM: GLM.",Cartesian,2,Used in projected and engineering coordinate reference systems.,EPSG,EPSG,2001-04-29 00:00:00,,0
-6503,"Cartesian 2D CS.  Axes: westing, southing (Y,X). Orientations: west, south.  UoM: m.",Cartesian,2,Used in projected and engineering coordinate reference systems.,EPSG,EPSG,2001-04-29 00:00:00,,0
-6504,"Cartesian 2D CS.  Axes: plant N, Plant E (n,e). Orientations: northwest, northeast.  UoM: m.",Cartesian,2,Used in engineering coordinate reference systems.,EPSG,EPSG,2001-01-19 00:00:00,,0
-6505,"Cartesian 2D CS.  Axes: 1st local axis, 2nd local axis (n,e). Orientations: northwest, northeast.  UoM: m.",Cartesian,2,Used in engineering coordinate reference systems.,EPSG,EPSG,2001-01-19 00:00:00,,0
-6506,"Cartesian 2D CS.  Axes: 1st local axis, 2nd local axis (I,J). Orientations: ese/nne.  UoM: 165 x 330 ftUS.",Cartesian,2,Used in engineering coordinate reference systems for seismic bin grids.,EPSG,EPSG,2001-01-19 00:00:00,,0
-6507,"Cartesian 2D CS.  Axes: 1st local axis, 2nd local axis (X,Y). Orientations: north, west.  UoM: m.",Cartesian,2,Used in engineering coordinate reference systems.,EPSG,EPSG,2001-01-19 00:00:00,,0
-6508,"Cartesian 2D CS.  Axes: bin grid J, bin grid I (J,I). Orientations: nne/ese.  UoM: 12.5 x 25m.",Cartesian,2,Used in engineering coordinate reference systems for seismic bin grids.,EPSG,EPSG,2001-01-19 00:00:00,,0
-6509,"Cartesian 2D CS.  Axes: southing, westing (P,M). Orientations: south, west.  UoM: m.",Cartesian,2,Used in old projected coordinate reference systems in Portugal.,EPSG,EPSG,2002-07-13 00:00:00,,0
diff --git a/src/tiff/csv/datum.csv b/src/tiff/csv/datum.csv
deleted file mode 100644
index 3f0f49a..0000000
--- a/src/tiff/csv/datum.csv
+++ /dev/null
@@ -1,332 +0,0 @@
-"DATUM_CODE","DATUM_NAME","DATUM_TYPE","ORIGIN_DESCRIPTION","REALIZATION_EPOCH","ELLIPSOID_CODE","PRIME_MERIDIAN_CODE","AREA_OF_USE_CODE","DATUM_SCOPE","REMARKS","INFORMATION_SOURCE","DATA_SOURCE","REVISION_DATE","CHANGE_ID","DEPRECATED"
-5100,Mean Sea Level,vertical,,,,,1262,Hydrography.,"msl has geographic and temporal components.  Users are advised to not use this generic vertical datum but to define specific instances of msl based on knowledge of these components; for instance ""msl at xxx during 19yy"".",,EPSG,1996-04-12 00:00:00,,0
-5101,Ordnance Datum Newlyn,vertical,,,,,1264,"Topographic mapping, geodesy.",,,EPSG,1996-10-18 00:00:00,,0
-5102,National Geodetic Vertical Datum 1929,vertical,26 tide gauges in the US and Canada.,1929,,,1323,"Topographic mapping, geodesy.",,,EPSG,1996-09-12 00:00:00,,0
-5103,North American Vertical Datum 1988,vertical,"Father's Point, Rimouski, Quebec.",1988,,,1325,"Topographic mapping, geodesy.",,,EPSG,1996-09-12 00:00:00,,0
-5104,Yellow Sea 1956,vertical,2 years tide readings at Qingdao.,1956,,,1067,"Topographic mapping, geodesy.",Superseded by Yellow Sea 1985 datum.,,EPSG,2002-06-22 00:00:00,2002.16,0
-5105,Baltic Sea,vertical,Average water level at Kronshtadt,,,,1284,"Topographic mapping, geodesy.",,,EPSG,1996-09-12 00:00:00,,0
-5106,Caspian Sea,vertical,Defined as -28.0m Baltic datum,,,,1291,Hydrography.,,,EPSG,1996-09-12 00:00:00,,0
-5107,Nivellement general de la France,vertical,Mean sea level at Marseille,,,,1326,"Topographic mapping, geodesy.",The CNIG states that NGF is a general term applying to all vertical network readjustments of France and recommends more specific terminology. See codes 5118-5120.,"Conseil National de l'Information Geographique groupe de travail ""Reseaux de Nivellement"" recommendations v5.1 April 1994.",EPSG,1996-09-12 00:00:00,,1
-5109,Normaal Amsterdams Peil,vertical,,,,,1172,"Topographic mapping, geodesy, hydrography.",,Nederlandse Commissie voor Geodesie publication 30; 1993,EPSG,1996-09-12 00:00:00,,0
-5110,Oostende,vertical,Mean low water during 1958,1958,,,1044,"Topographic mapping, geodesy.",,Nederlandse Commissie voor Geodesie publication 30; 1993,EPSG,1996-09-12 00:00:00,,0
-5111,Australian Height Datum,vertical,MSL 1966-68 at 30 gauges around coast.,1968,,,1281,"Topographic mapping, geodesy.",,http://www.auslig.gov.au/geodesy,EPSG,1996-09-12 00:00:00,,0
-5112,Australian Height Datum (Tasmania),vertical,MSL 1972 at Hobart and Burnie.,1972,,,1282,"Topographic mapping, geodesy.",,,EPSG,1996-09-12 00:00:00,,0
-5113,Sea Level,vertical,,,,,1262,Hydrography.,An unspecified local vertical datum not recommended for use.,,EPSG,1996-09-12 00:00:00,,0
-5114,Canadian Vertical Datum of 1928,vertical,,1928,,,1289,"Topographic mapping, geodesy.",,,EPSG,1996-12-12 00:00:00,,0
-5115,Piraeus Harbour 1986,vertical,MSL determined during 1986.,1986,,,1106,"Topographic mapping, geodesy.",,Geodesy Department; Public Pertoleum Corporation of Greece,EPSG,1997-06-16 00:00:00,,0
-5116,Helsinki 1960,vertical,MSL at Helsinki during 1960.,1960,,,1095,"Topographic mapping, geodesy.",,www.nls.fi/maa/papers/kkj.html,EPSG,1997-07-22 00:00:00,,0
-5117,Rikets hoghtsystem 1970,vertical,,1970,,,1225,"Topographic mapping, geodesy.",,National Land Survey of Sweden,EPSG,1997-11-13 00:00:00,,0
-5118,Nivellement general de la France - Lalle,vertical,Mean sea level at Marseille.,,,,1326,"Geodesy, topographic mapping, engineering survey.",,"Conseil National de l'Information Geographique groupe de travail ""Reseaux de Nivellement"" recommendations v5.1 April 1994.",EPSG,1997-11-13 00:00:00,2001.47,0
-5119,Nivellement general de la France - IGN69,vertical,Mean sea level at Marseille.,1969,,,1326,"Geodesy, topographic mapping, engineering survey.",,"Conseil National de l'Information Geographique groupe de travail ""Reseaux de Nivellement"" recommendations v5.1 April 1994.",EPSG,1997-11-13 00:00:00,2001.47,0
-5120,Nivellement general de la France - IGN78,vertical,,1978,,,1327,"Geodesy, topographic mapping, engineering survey.",,"Conseil National de l'Information Geographique groupe de travail ""Reseaux de Nivellement"" recommendations v5.1 April 1994.",EPSG,1997-11-13 00:00:00,2001.47,0
-5121,Maputo,vertical,Mean sea level at Maputo.,,,,1167,Topographic mapping.,,Direc��o Nacional de Geografia e Cadastral (DINAGECA).,EPSG,1998-04-16 00:00:00,,0
-5122,Japanese Standard Levelling Datum 1949,vertical,24.4140 metres above mean sea level Tokyo Bay.,1949,,,1129,"Topographic mapping, geodesy.",,Ministry of Construction; Japan.  http://vldb.gsi.go.jp/sokuchi/datum/tokyodatum.html,EPSG,2002-06-22 00:00:00,2002.08,0
-5123,PDO Height Datum 1993,vertical,,1993,,,1183,Oil industry mapping.,Misclosure between Muscat and Salalah less than .5 meters with differences from of up to 5 meters from old Fahud Datum.  The PHD93 adjustment was initially known as the Spine.  Supercedes Fahud Vertical Datum (Code 5124) from 1993.,Petroleum Development Oman,EPSG,1999-04-22 00:00:00,,0
-5124,Fahud Height Datum,vertical,,,,,1183,Oil industry mapping.,Superceded by PHD93 Datum (Code 5123) in 1993.  Based on reciprocal trigonometric heighting based on single MSL determination at Mina Al Fahal.,Petroleum Development Oman,EPSG,1999-04-22 00:00:00,,0
-5125,Ha Tien 1960,vertical,,1960,,,1302,"Topographic mapping, geodesy.",In Vietnam replaced by Hon Dau in 1992.,,EPSG,1999-10-20 00:00:00,,0
-5126,Hon Dau 1992,vertical,,1992,,,1252,"Topographic mapping, geodesy.",Supersedes Ha Tien in Vietnam.,,EPSG,1999-10-20 00:00:00,,0
-5127,Landesnivellement 1902,vertical,Origin at Repere Pierre du Niton (RPN) 373.6 metres above msl derived at Marseille.,1902,,,1286,"Topographic mapping, geodesy.",,Bundesamt f�r Landestopographie,EPSG,1999-10-20 00:00:00,,0
-5128,Landeshohennetz 1995,vertical,Origin at Repere Pierre du Niton (RPN) 373.6 metres above msl derived at Marseille.,1995,,,1286,"Geodesy, cadastre, topographic mapping, engineering survey.",,Bundesamt f�r Landestopographie,EPSG,1999-10-20 00:00:00,,0
-5129,European Vertical Reference Frame 2000,vertical,Geopotential number at Normaal Amsterdams Peil is zero.,2000,,,1299,Geodesy.,Realised by geopotential numbers and normal heights of the United European Levelling Network.,,EPSG,2000-10-19 00:00:00,,0
-5130,Malin Head,vertical,Mean sea level between January 1960 and December 1969.,1970,,,1305,Topographic mapping,,Ordnance Survey Ireland,EPSG,2001-11-06 00:00:00,,0
-5131,Belfast,vertical,"Mean sea level between 1951 and 1956 at Clarendon Dock, Belfast.",1957,,,2530,Large scale topographic mapping,,Ordnance Survey Northern Ireland,EPSG,2001-11-06 00:00:00,,0
-5132,Dansk Normal Nul,vertical,,,,,1080,Topographic mapping and engineering survey,,Kort & Matrikelstyrelsen,EPSG,2001-11-06 00:00:00,,0
-5133,AIOC 1995,vertical,Average level of Caspian Sea at the Oil Rocks tide gauge June-September 1995.,1995,,,2592,Oil industry mapping.,AIOC 1995 datum is 1.7m above Caspian datum and 26.3m below Baltic datum.,BP,EPSG,2002-02-12 00:00:00,,0
-5134,Black Sea,vertical,,,,,1102,Hydrographic surveying and since break-up of Former Soviet Union also topographic mapping.,Black Sea datum is 0.4m below Baltic datum.,BP,EPSG,2002-02-12 00:00:00,,0
-5135,Hong Kong Principal Datum,vertical,"1.23m below the mean of 19 years (1965-83) observations of tide levels at North Point, Victoria Harbour.",1980,,,1118,"Geodesy, engineering survey, cadastre.",,"Survey and Mapping Office, Lands Department. Http://www.info.gov.hk/landsd/mapping/tindex.htm",EPSG,2002-06-22 00:00:00,,0
-5136,Hong Kong Chart Datum,vertical,Approximates to Lowest Astronomic Tide level (LAT).,,,,1118,Hydrographic survey and charting.,Chart datum is 0.15 metres below Hong Kong Principal Datum (code 5135) and 1.38m below MSL at Quarry Bay.,"Survey and Mapping Office, Lands Department. Http://www.info.gov.hk/landsd/mapping/tindex.htm",EPSG,2002-06-22 00:00:00,,0
-5137,Yellow Sea 1985,vertical,20 years tide readings at Qingdao.,1985,,,1067,"Topographic mapping, geodesy.",Supersedes Yellow Sea 1956 datum.,Guangdong Province Land Resource Information Centre,EPSG,2002-06-22 00:00:00,,0
-6001,Not specified (based on Airy 1830 ellipsoid),geodetic,,,7001,8901,1263,Not a valid datum.,Included for coordinate reference systems where datum is unknown.,EPSG,EPSG,2000-05-03 00:00:00,96.08  2000.42,0
-6002,Not specified (based on Airy Modified 1849 ellipsoid),geodetic,,,7002,8901,1263,Not a valid datum.,Included for coordinate reference systems where datum is unknown.,EPSG,EPSG,2000-05-03 00:00:00,96.08  2000.42,0
-6003,Not specified (based on Australian National Spheroid),geodetic,,,7003,8901,1263,Not a valid datum.,Included for coordinate reference systems where datum is unknown.,EPSG,EPSG,2000-05-03 00:00:00,96.08  2000.42,0
-6004,Not specified (based on Bessel 1841 ellipsoid),geodetic,,,7004,8901,1263,Not a valid datum.,Included for coordinate reference systems where datum is unknown.,EPSG,EPSG,2000-05-03 00:00:00,96.08  2000.42,0
-6005,Not specified (based on Bessel Modified ellipsoid),geodetic,,,7005,8901,1263,Not a valid datum.,Included for coordinate reference systems where datum is unknown.,EPSG,EPSG,2000-05-03 00:00:00,96.08  2000.42,0
-6006,Not specified (based on Bessel Namibia ellipsoid),geodetic,,,7046,8901,1263,Not a valid datum.,Included for coordinate reference systems where datum is unknown.,EPSG,EPSG,2001-01-21 00:00:00,96.08  2000.42  2001.15,0
-6007,Not specified (based on Clarke 1858 ellipsoid),geodetic,,,7007,8901,1263,Not a valid datum.,Included for coordinate reference systems where datum is unknown.,EPSG,EPSG,2000-05-03 00:00:00,96.08  2000.42,0
-6008,Not specified (based on Clarke 1866 ellipsoid),geodetic,,,7008,8901,1263,Not a valid datum.,Included for coordinate reference systems where datum is unknown.,EPSG,EPSG,2000-05-03 00:00:00,96.08  2000.42,0
-6009,Not specified (based on Clarke 1866 Michigan ellipsoid),geodetic,,,7009,8901,1263,Not a valid datum.,Included for coordinate reference systems where datum is unknown.,EPSG,EPSG,2000-05-03 00:00:00,96.08  2000.42,0
-6010,Not specified (based on Clarke 1880 (Benoit) ellipsoid),geodetic,,,7010,8901,1263,Not a valid datum.,Included for coordinate reference systems where datum is unknown.,EPSG,EPSG,2000-05-03 00:00:00,96.08  2000.42,0
-6011,Not specified (based on Clarke 1880 (IGN) ellipsoid),geodetic,,,7011,8901,1263,Not a valid datum.,Included for coordinate reference systems where datum is unknown.,EPSG,EPSG,2000-05-03 00:00:00,96.08  2000.42,0
-6012,Not specified (based on Clarke 1880 (RGS) ellipsoid),geodetic,,,7012,8901,1263,Not a valid datum.,Included for coordinate reference systems where datum is unknown.,EPSG,EPSG,2000-05-03 00:00:00,96.08  2000.42,0
-6013,Not specified (based on Clarke 1880 (Arc) ellipsoid),geodetic,,,7013,8901,1263,Not a valid datum.,Included for coordinate reference systems where datum is unknown.,EPSG,EPSG,2000-05-03 00:00:00,96.08  2000.42,0
-6014,Not specified (based on Clarke 1880 (SGA 1922) ellipsoid),geodetic,,,7014,8901,1263,Not a valid datum.,Included for coordinate reference systems where datum is unknown.,EPSG,EPSG,2000-05-03 00:00:00,96.08  2000.42,0
-6015,Not specified (based on Everest 1830 (1937 Adjustment) ellipsoid),geodetic,,,7015,8901,1263,Not a valid datum.,Included for coordinate reference systems where datum is unknown.,EPSG,EPSG,2000-05-03 00:00:00,96.08  2000.42,0
-6016,Not specified (based on Everest 1830 (1967 Definition) ellipsoid),geodetic,,,7016,8901,1263,Not a valid datum.,Included for coordinate reference systems where datum is unknown.,EPSG,EPSG,2000-05-03 00:00:00,96.08  2000.42,0
-6018,Not specified (based on Everest 1830 Modified ellipsoid),geodetic,,,7018,8901,1263,Not a valid datum.,Included for coordinate reference systems where datum is unknown.,EPSG,EPSG,2000-05-03 00:00:00,96.08  2000.42,0
-6019,Not specified (based on GRS 1980 ellipsoid),geodetic,,,7019,8901,1263,Not a valid datum.,Included for coordinate reference systems where datum is unknown.,EPSG,EPSG,2000-05-03 00:00:00,96.08  2000.42,0
-6020,Not specified (based on Helmert 1906 ellipsoid),geodetic,,,7020,8901,1263,Not a valid datum.,Included for coordinate reference systems where datum is unknown.,EPSG,EPSG,2000-05-03 00:00:00,96.08  2000.42,0
-6021,Not specified (based on Indonesian National Spheroid),geodetic,,,7021,8901,1263,Not a valid datum.,Included for coordinate reference systems where datum is unknown.,EPSG,EPSG,2000-05-03 00:00:00,96.08  2000.42,0
-6022,Not specified (based on International 1924 ellipsoid),geodetic,,,7022,8901,1263,Not a valid datum.,Included for coordinate reference systems where datum is unknown.,EPSG,EPSG,2000-05-03 00:00:00,96.08  2000.42,0
-6024,Not specified (based on Krassowsky 1940 ellipsoid),geodetic,,,7024,8901,1263,Not a valid datum.,Included for coordinate reference systems where datum is unknown.,EPSG,EPSG,2000-05-03 00:00:00,96.08  2000.42,0
-6025,Not specified (based on NWL 9D ellipsoid),geodetic,,,7025,8901,1263,Not a valid datum.,Included for coordinate reference systems where datum is unknown.,EPSG,EPSG,2000-05-03 00:00:00,96.08  2000.42,0
-6027,Not specified (based on Plessis 1817 ellipsoid),geodetic,,,7027,8901,1263,Not a valid datum.,Included for coordinate reference systems where datum is unknown.,EPSG,EPSG,2000-05-03 00:00:00,96.08  2000.42,0
-6028,Not specified (based on Struve 1860 ellipsoid),geodetic,,,7028,8901,1263,Not a valid datum.,Included for coordinate reference systems where datum is unknown.,EPSG,EPSG,2000-05-03 00:00:00,96.08  2000.42,0
-6029,Not specified (based on War Office ellipsoid),geodetic,,,7029,8901,1263,Not a valid datum.,Included for coordinate reference systems where datum is unknown.,EPSG,EPSG,2000-05-03 00:00:00,96.08  2000.42,0
-6030,Not specified (based on WGS 84 ellipsoid),geodetic,,,7030,8901,1263,Not a valid datum.,Included for coordinate reference systems where datum is unknown.,EPSG,EPSG,2000-05-03 00:00:00,96.08  2000.42,0
-6031,Not specified (based on GEM 10C ellipsoid),geodetic,,,7031,8901,1263,Not a valid datum.,Included for coordinate reference systems where datum is unknown.,EPSG,EPSG,2000-05-03 00:00:00,96.08  2000.42,0
-6032,Not specified (based on OSU86F ellipsoid),geodetic,,,7032,8901,1263,Not a valid datum.,Included for coordinate reference systems where datum is unknown.,EPSG,EPSG,2000-05-03 00:00:00,96.08  2000.42,0
-6033,Not specified (based on OSU91A ellipsoid),geodetic,,,7033,8901,1263,Not a valid datum.,Included for coordinate reference systems where datum is unknown.,EPSG,EPSG,2000-05-03 00:00:00,96.08  2000.42,0
-6034,Not specified (based on Clarke 1880 ellipsoid),geodetic,,,7034,8901,1263,Not a valid datum.,Included for coordinate reference systems where datum is unknown.,EPSG,EPSG,2000-05-03 00:00:00,96.08  2000.42,0
-6035,Not specified (based on Authalic Sphere),geodetic,,,7035,8901,1263,Not a valid datum.,Included for coordinate reference systems where datum is unknown. Deprecated and superseded by 6047.,EPSG,EPSG,2001-06-05 00:00:00,96.08  2000.42,1
-6036,Not specified (based on GRS 1967 ellipsoid),geodetic,,,7036,8901,1263,Not a valid datum.,Included for coordinate reference systems where datum is unknown.,EPSG,EPSG,2000-05-03 00:00:00,2000.42,0
-6041,Not specified (based on Average Terrestrial System 1977 ellipsoid),geodetic,,,7041,8901,1263,Not a valid datum.,Included for coordinate reference systems where datum is unknown.,EPSG,EPSG,2000-05-03 00:00:00,2000.42,0
-6042,Not specified (based on Everest (1830 Definition) ellipsoid),geodetic,,,7042,8901,1263,Not a valid datum.,Included for coordinate reference systems where datum is unknown.,EPSG,EPSG,2000-05-03 00:00:00,2000.42,0
-6043,Not specified (based on WGS 72 ellipsoid),geodetic,,,7043,8901,1263,Not a valid datum.,Included for coordinate reference systems where datum is unknown.,EPSG,EPSG,2000-05-03 00:00:00,2000.42,0
-6044,Not specified (based on Everest 1830 (1962 Definition) ellipsoid),geodetic,,,7044,8901,1263,Not a valid datum.,Included for coordinate reference systems where datum is unknown.,EPSG,EPSG,2000-05-03 00:00:00,2000.42,0
-6045,Not specified (based on Everest 1830 (1975 Definition) ellipsoid),geodetic,,,7045,8901,1263,Not a valid datum.,Included for coordinate reference systems where datum is unknown.,EPSG,EPSG,2000-05-03 00:00:00,2000.42,0
-6047,Not specified (based on GRS 1980 Authalic Sphere),geodetic,,,7047,8901,1263,Not a valid datum.,Included for coordinate reference systems where datum is unknown.,EPSG,EPSG,2001-06-25 00:00:00,2001.19,0
-6120,Greek,geodetic,Fundamental point: Athens Observatory; latitude 37 deg 58 min 20.132 sec N; longitude 23 deg 42 min 58.815 sec E of Greenwich,,7004,8901,1106,Topographic mapping.,See geodetic datum alias 6404.  Used as basis of topographic mapping based on Hatt projection.,Topography Department; National Technical University of Athens,EPSG,1997-06-16 00:00:00,,0
-6121,Greek Geodetic Reference System 1987,geodetic,Fundamental point: Dionysos; latitude 38 deg 04 min 33.8 sec N; longitude 23 deg 55 min 51.0 sec E of Greenwich; geoid height 7.0 m.,1987,7019,8901,1106,Topographic mapping.,Superseded (old) Greek datum.  Oil industry work based on ED50.,L. Portokalakis; Public Petroleum Corporation of Greece,EPSG,1997-06-16 00:00:00,,0
-6122,Average Terrestrial System 1977,geodetic,,1977,7041,8901,1283,Topographic mapping.,In use from 1979.  To be phased out in late 1990's.,New Brunswick Geographic Information Corporation land and water information standards manual.,EPSG,1997-07-02 00:00:00,,0
-6123,Kartasto Koordinaati Jarjestelma 1966,geodetic,Adjustment with fundamental point SF31 based on ED50 transformed to best fit the older VVJ adjustment.,1966,7022,8901,1095,"Geodesy, cadastre, topographic mapping, engineering survey.",Adopted in 1970.,www.nls.fi/maa/papers/kkj.html,EPSG,1997-07-22 00:00:00,,0
-6124,Rikets koordinatsystem 1990,geodetic,,1982,7004,8901,1225,"Geodesy, cadastre, topographic mapping, engineering survey.",Supersedes RT38 adjustment (datum code 6308),National Land Survey of Sweden,EPSG,1997-11-13 00:00:00,,0
-6125,Samboja,geodetic,Original origin station P2 Exc now destroyed.  Extensions recomputed using Toran station T9 as origin.,,7004,8901,1328,Topographic mapping.,,Total Indonesia.,EPSG,1997-11-13 00:00:00,,1
-6126,Lithuania 1994 (ETRS89),geodetic,Densification from 4  ETRS89 points.,1994,7019,8901,1145,"Topographic mapping, geodesy.",Densification of ETRS89 during the 1992 Baltic campaign.,HNIT-Baltic GeoInfoServisas,EPSG,1998-03-12 00:00:00,,0
-6127,Tete,geodetic,Fundamental point: Tete.,,7008,8901,1167,Topographic mapping.,,Mozambique Direc��o Nacional de Geografia e Cadastral (DINAGECA).,EPSG,1998-04-16 00:00:00,,0
-6128,Madzansua,geodetic,Fundamental point: Madzansua.,,7008,8901,1315,Topographic mapping.,Superseded by transformation to Tete datum (datum code 6127).,Mozambique Direc��o Nacional de Geografia e Cadastral (DINAGECA).,EPSG,1998-04-16 00:00:00,,0
-6129,Observatario,geodetic,Fundamental point: Maputo observatory.,,7008,8901,1329,Topographic mapping.,Superseded by transformation to Tete datum (datum code 6127).,Mozambique Direc��o Nacional de Geografia e Cadastral (DINAGECA).,EPSG,1998-04-16 00:00:00,,0
-6130,Moznet (ITRF94),geodetic,ITRF 1994 epoch 20,,7030,8901,1167,Topographic mapping.,,Mozambique Direc��o Nacional de Geografia e Cadastral (DINAGECA).,EPSG,1998-04-16 00:00:00,,0
-6131,Indian 1960,geodetic,,,7015,8901,1302,Topographic mapping.,DMA adjustment of IndoChina part of the Indian 1954 network to better fit local geoid.  Also known as Indian (DMA Reduced).,,EPSG,1998-11-11 00:00:00,,0
-6132,Final Datum 1958,geodetic,Fundamental point: Maniyur.  Latitude: 31 deg 23 min 59.19 sec N; Longitude: 48 deg 32 min 31.38 sec E (of Greenwich).,,7012,8901,1300,Oil industry mapping.,Network included in Nahrwan 1967 adjustment.,IOEPC records,EPSG,1998-11-11 00:00:00,,0
-6133,Estonia 1992,geodetic,Densification from 4  ETRS89 points.,1992,7019,8901,1090,"Topographic mapping, geodesy.",Based on ETRS89 as established during the 1992 Baltic campaign. Superseded by Estonia 1997 adjustment (code 6180).,http://www.geo.ut.ee/~raivo/estcoord.html,EPSG,1998-12-14 00:00:00,,0
-6134,PDO Survey Datum 1993,geodetic,Adjustment best fitted to Fahud network.,1993,7012,8901,1183,Oil industry mapping.,Supersedes Fahud datum (code 6232). Maximum differences to Fahud adjustment are 20 metres.,Petroleum Development Oman,EPSG,1999-04-22 00:00:00,,0
-6135,Old Hawaiian,geodetic,Fundamental Point: Oahu West Base Astro.  Latitude: 21 deg 18 min 13.89 sec N; longitude 157 deg 50 min 55.79 sec W (of Greenwich),,7008,8901,1334,Topographic mapping.,Hawaiian Islands were never on NAD27 but rather on Old Hawaiian Datum.  NADCON conversion program provides transformation from Old Hawaiian Datum to NAD83 (original 1986 realization) but making the transformation appear to user as if from NAD27.,http://www.ngs.noaa.gov/ (NADCON readme file) and t [...]
-6136,St. Lawrence Island,geodetic,,,7008,8901,1332,Topographic mapping.,Many Alaskan islands were never on NAD27 but rather on independent datums.  NADCON conversion program provides transformation from St. Lawrence Island Datum to NAD83 (original 1986 realization) - making the transformation appear to user as if from NAD27.,http://www.ngs.noaa.gov/ (NADCON readme file),EPSG,1999-05-24 00:00:00,,0
-6137,St. Paul Island,geodetic,,,7008,8901,1333,Topographic mapping.,Many Alaskan islands were never on NAD27 but rather on independent datums.  NADCON conversion program provides transformation from St. Paul Island Datum to NAD83 (original 1986 realization) - making the transformation appear to user as if from NAD27.,http://www.ngs.noaa.gov/ (NADCON readme file),EPSG,1999-05-24 00:00:00,,0
-6138,St. George Island,geodetic,,,7008,8901,1331,Topographic mapping.,Many Alaskan islands were never on NAD27 but rather on independent datums.  NADCON conversion program provides transformation from St. George Island Datum to NAD83 (original 1986 realization) - making the transformation appear to user as if from NAD27.,http://www.ngs.noaa.gov/ (NADCON readme file),EPSG,1999-05-24 00:00:00,,0
-6139,Puerto Rico,geodetic,,,7008,8901,1335,Topographic mapping.,NADCON conversion program provides transformation from Puerto Rico Datum to NAD83 (original 1986 realization) but making the transformation appear to user as if from NAD27.,Ordnance Survey of Great Britain and http://www.ngs.noaa.gov/ (NADCON readme file).,EPSG,1999-05-24 00:00:00,,0
-6140,NAD83 Canadian Spatial Reference System,geodetic,,1998,7019,8901,1336,Geodesy.,Supersedes ATS77 from 1999 in New Brunswick.,Service New Brunswick Land and Information Standards Manual,EPSG,1999-10-20 00:00:00,,0
-6141,Israel,geodetic,Fundamental Point:  Latitude: 31 deg 44 min 03.817 sec N; Longitude: 35 deg 12 min 16.261 sec E (of Greenwich).,,7019,8901,2603,Topographic mapping.,,Survey of Israel.,EPSG,2002-06-22 00:00:00,2002.34,0
-6142,Locodjo 1965,geodetic,Fundamental Point: T5 Banco. Latitude: 5 deg 18 min 50.5 sec N; Longitude: 4 deg 02 min 05.1 sec W (of Greenwich).,1965,7012,8901,1075,Topographic mapping.,,IGN Paris.,EPSG,1999-10-20 00:00:00,,0
-6143,Abidjan 1987,geodetic,Fundamental Point: Abidjan I. Latitude: 5 deg 18 min 51.01 sec N; Longitude: 4 deg 02 min 06.04 sec W (of Greenwich).,1987,7012,8901,1075,Topographic mapping.,,IGN Paris.,EPSG,1999-10-20 00:00:00,,0
-6144,Kalianpur 1937,geodetic,Fundamental Point: Kalianpur. Latitude: 24 deg  07 min 11.260 sec N; Longitude: 77 deg 39 min 17.570 sec E (of Greenwich).,1937,7015,8901,1308,Topographic mapping.,Supersedes 1880 adjustment except for topographic mapping.  Superseded in Pakistan by 1962 metrication conversion and in India by 1975 metrication conversion.,"G. Bomford; ""The Re-adjustment of the Indian Triangulation""; Survey of India Professional Paper 28; 1939.",EPSG,1999-10-20 00:00:00,,0
-6145,Kalianpur 1962,geodetic,Fundamental Point: Kalianpur. Latitude: 24 deg  07 min 11.260 sec N; Longitude: 77 deg 39 min 17.570 sec E (of Greenwich).,1962,7044,8901,1184,Topographic mapping.,1937 adjustment rescaled by ratio metric conversions of Indian foot (1937) to Indian foot (1962).,,EPSG,1999-10-20 00:00:00,,0
-6146,Kalianpur 1975,geodetic,Fundamental Point: Kalianpur. Latitude: 24 deg  07 min 11.260 sec N; Longitude: 77 deg 39 min 17.570 sec E (of Greenwich).,1975,7045,8901,1121,Topographic mapping.,1937 adjustment rescaled by ratio metric conversions of Indian foot (1937) to Indian foot (1975).,,EPSG,1999-10-20 00:00:00,,0
-6147,Hanoi 1972,geodetic,,1972,7024,8901,1252,"Geodesy, cadastre, topographic mapping, engineering survey.",,PetroVietnam,EPSG,1999-10-20 00:00:00,,0
-6148,Hartebeesthoek94,geodetic,Coincident with ITRF91 (1994.0) at Hartebeesthoek astronomical observatory near Pretoria.,1994,7030,8901,1215,"Geodesy, cadastre, topographic mapping, engineering survey.",Supersedes Cape datum (code 6222).,Directorate of Surveys and Mapping; http://w3sli.wcape.gov.za/surveys/mapping/wgs84.htm,EPSG,2000-01-06 00:00:00,99.96,0
-6149,CH1903,geodetic,Fundamental Point: Old Bern observatory. Latitude: 46 deg 57 min  8.660 sec N; Longitude: 7 deg 26 min 22.500 sec E (of Greenwich).,1903,7004,8901,1286,Topographic mapping.,,Bundesamt f�r Landestopographie,EPSG,1999-10-20 00:00:00,,0
-6150,CH1903+,geodetic,Fundamental Point: Zimmerwald observatory.,,7004,8901,1286,"Geodesy, topographic mapping.",,Bundesamt f�r Landestopographie.  Aufbau der Landesvermessung der Schweiz 'LV95' Teil 3: Terrestrische Bezugssysteme und Bezugsrahmen. L+T 1999.,EPSG,2001-11-06 00:00:00,2001.52,0
-6151,Swiss Terrestrial Reference Frame 1995,geodetic,ETRF89 at 1993.0,1995,7019,8901,1286,"Geodesy, cadastre, topographic mapping, engineering survey.",,Bundesamt f�r Landestopographie.  Aufbau der Landesvermessung der Schweiz 'LV95' Teil 3: Terrestrische Bezugssysteme und Bezugsrahmen. L+T 1999.,EPSG,1999-10-20 00:00:00,,0
-6152,NAD83 (High Accuracy Regional Network),geodetic,,,7019,8901,1337,Geodesy.,,National Geodetic Survey,EPSG,1999-10-20 00:00:00,,0
-6153,Rassadiran,geodetic,Fundamental Point: Total1. Latitude: 27 deg 31 min 07.784 sec N; Longitude: 52 deg 36 min 12.741 sec E (of Greenwich).,,7022,8901,1338,Oil industry mapping.,,Total-Fina,EPSG,1999-11-20 00:00:00,,0
-6154,European Datum 1950(1977),geodetic,Extension of ED50 over Iran.,1977,7022,8901,1123,Topographic mapping.,Sometimes referred to as ED50-ED77.,National Cartographic Centre of Iran,EPSG,1999-11-20 00:00:00,,0
-6155,Dabola 1981,geodetic,,1981,7011,8901,1112,Topographic mapping.,,IGN Paris,EPSG,1999-12-09 00:00:00,,0
-6156,Jednotne Trigonometricke Site Katastralni,geodetic,"Modification of Austrian MGI datum, code 6312.",,7004,8901,1306,"Geodesy, cadastre, topographic mapping, engineering survey.",S-JTSK = System of the Unified Trigonometrical Cadastral Network.,Research Institute for Geodesy Topography and Cartography (VUGTK); Prague.,EPSG,2001-11-06 00:00:00,2001.26  2001.51,0
-6157,Mount Dillon,geodetic,Fundamental Point: Mount Dillon triangulation station. Latitude: 11 deg  15 min 07.843 sec N; Longitude: 60 deg 41 min 09.632 sec W (of Greenwich).,,7007,8901,1322,Topographic mapping.,,University of the West Indies Geodetic Services.,EPSG,2000-03-07 00:00:00,,0
-6158,Naparima 1955,geodetic,Fundamental Point: Naparima. Latitude: 10 deg 16 min 44.860 sec N; Longitude: 61 deg 27 min 34.620 sec W (of Greenwich).,1955,7022,8901,1339,Topographic mapping.,Naparima 1972 is an extension of the Naparima 1955 network of Trinidad to include Tobago.,Ordnance Survey International.,EPSG,2000-03-07 00:00:00,,0
-6159,European Libyan Datum 1979,geodetic,,1979,7022,8901,1143,Topographic mapping.,,Brown and Root,EPSG,2000-03-07 00:00:00,,0
-6160,Chos Malal 1914,geodetic,Chos Malal police station.,1914,7022,8901,1292,Oil industry mapping.,Also known as Quini-Huao.  Superseded by Campo Inchauspe (code 6221).,Various oil company records.,EPSG,2000-03-07 00:00:00,,0
-6161,Pampa del Castillo,geodetic,,,7022,8901,1265,Oil industry mapping.,Used in Comodoro Rivadavia area.  Superseded by Campo Inchauspe (code 6221).,Various oil company records.,EPSG,2000-03-07 00:00:00,,0
-6162,Korean Datum 1985,geodetic,Fundamental point: Suwon; latitude 37 deg 16 min 31.9034 sec N; longitude 127 deg 03 min 05.1451 sec E of Greenwich.,1985,7004,8901,1135,Topographic mapping.,,Clifford J. Mugnier; in Photogrammetric Engineering & Remote Sensing November 1999. http://www.asprs.org/resources.html,EPSG,2000-03-07 00:00:00,2001.28,0
-6163,Yemen National Geodetic Network 1996,geodetic,Sana'a IGN reference marker,1996,7030,8901,1257,Topographic mapping.,,IGN Paris,EPSG,2000-03-07 00:00:00,,0
-6164,South Yemen,geodetic,,,7024,8901,1340,Topographic mapping.,,IGN Paris,EPSG,2000-03-07 00:00:00,,0
-6165,Bissau,geodetic,,,7022,8901,1113,Topographic mapping.,,NIMA TR8350.2,EPSG,2000-03-07 00:00:00,,0
-6166,Korean Datum 1995,geodetic,,1995,7030,8901,1135,Topographic mapping.,,NIMA TR8350.2  ftp://164.214.2.65/pub/gg/tr8350.2/changes.pdf,EPSG,2000-05-08 00:00:00,,0
-6167,New Zealand Geodetic Datum 2000,geodetic,Based on ITRF96 epoch 2000.0,2000,7019,8901,1175,"Geodesy, cadastre, topographic mapping, engineering survey.",,Land Information New Zealand.,EPSG,2000-10-19 00:00:00,,0
-6168,Accra,geodetic,Fundamental Point: GCS Station 547. Latitude: 5 deg 23 min 43.3 sec N; Longitude: 0 deg 11 min 52.3 sec W (of Greenwich).,,7029,8901,1104,Topographic mapping.,Superseded in 1978 by Leigon datum (code 6250).,Ordnance Survey International,EPSG,2000-10-12 00:00:00,,0
-6169,American Samoa 1962,geodetic,,1962,7008,8901,1027,Topographic mapping.,,NIMA TR8350.2 revision of January 2000,EPSG,2000-10-19 00:00:00,,0
-6170,Sistema de Referencia Geocentrico para America del Sur,geodetic,ITRF94 epoch 1995.42.,1995,7019,8901,1342,Geodesy.,Realised by a frame of 58 stations observed in 1995 and adjusted in the ITRF94.,NIMA TR8350.2 revision of January 2000.,EPSG,2000-10-19 00:00:00,,0
-6171,Reseau Geodesique Francais 1993,geodetic,Coincident with ETRS89,1993,7019,8901,1096,Geodesy.,,TotalFinaElf,EPSG,2001-11-06 00:00:00,2001.51,0
-6172,Posiciones Geodesicas Argentinas,geodetic,,1994,7019,8901,1033,"Topographic mapping, geodesy.","Una red geod�sica de 127 puntos materializados
-en el terreno que definen el Sistema Geod�sico Nacional.  [A geodetic network of 127 points defining the National Geodetic System.] Superseded by POSGAR98 (code 6190).",http://www.igm.gov.ar/posgar.html,EPSG,2000-10-19 00:00:00,,1
-6173,IRENET95,geodetic,ETRS89 stations in Ireland,1995,7019,8901,1305,Geodesy.,Densification of ETRS89,Ordnance Survey of Ireland,EPSG,2000-10-19 00:00:00,,0
-6174,Sierra Leone Colony 1924,geodetic,Fundamental Point: Kortright. Latitude: 8 deg 28 min 44.4 sec N; Longitude: 13 deg 13 min 03.81 sec W (of Greenwich).,1924,7029,8901,1342,"Topographic mapping, engineering survey.",,Ordnance Survey International.,EPSG,2001-06-05 00:00:00,,0
-6175,Sierra Leone 1968,geodetic,Fundamental Point: SLX2 Astro. Latitude: 8 deg 27 min 17.567 sec N; Longitude: 12 deg 49 min 40.186 sec W (of Greenwich).,1968,7012,8901,1209,"Topographic mapping, engineering survey.",Extension and readjustment with additional observations of 1960 network.  Coordinates of 1960 stations change by less than 3 metres.,Ordnance Survey International.,EPSG,2001-06-05 00:00:00,,0
-6176,Australian Antarctic Datum 1998,geodetic,,1998,7019,8901,1278,Topographic mapping.,,Standards Australia,ISO 19127,2001-06-05 00:00:00,,0
-6178,Pulkovo 1942/83,geodetic,Fundamental Point: Pulkovo observatory. Latitude: 59 deg 46 min 18.550 sec N; Longitude: 30 deg 19 min 42.090 sec E (of Greenwich).,1983,7024,8901,1343,"Geodesy, cadastre, topographic mapping, engineering survey.",International adjustment of Uniforrm Astro-Geodetic Network of countries of central and eastern Europe.,Bundesamt f�r Kartographie und Geod�sie via EuroGeographics; http://crs.ifag.de/,EPSG,2001-06-05 00:00:00,,0
-6179,Pulkovo 1942/58,geodetic,Fundamental Point: Pulkovo observatory. Latitude: 59 deg 46 min 18.550 sec N; Longitude: 30 deg 19 min 42.090 sec E (of Greenwich).,1958,7024,8901,1192,"Geodesy, cadastre, topographic mapping, engineering survey.",,Glowny Urzad Geodezji i Kartografii via EuroGeographics; http://crs.ifag.de/,EPSG,2001-06-05 00:00:00,,0
-6180,Estonia 1997,geodetic,Densification of ETRS89 during EUREF-ESTONIA97 campaign through transformation from ITRF96 epoch 1997.56.,1997,7019,8901,1090,"Geodesy, cadastre, topographic mapping, engineering survey.",Supersedes Estonia 1992 adjustment (code 6133).,Estonian National Land Board via EuroGeographics; http://crs.ifag.de/,EPSG,2001-06-05 00:00:00,,0
-6181,Luxembourg 1930,geodetic,Northern station of Habay-la-Neuve baseline in Belgium.,1930,7022,8901,1146,"Geodesy, cadastre, topographic mapping, engineering survey.",,Administration du Cadastre et de la Topographie via EuroGeographics; http://crs.ifag.de/,EPSG,2001-06-05 00:00:00,,0
-6182,Azores Occidental Islands 1939,geodetic,Fundamental Point: Observatario Meteorologico Flores.,1939,7022,8901,1344,Topographic mapping.,,Instituto Geografico e Cadastral Lisbon via EuroGeographics; http://crs.ifag.de/,EPSG,2001-06-05 00:00:00,,0
-6183,Azores Central Islands 1948,geodetic,Fundamental Point: Graciosa west base.,1948,7022,8901,1301,Topographic mapping.,,Instituto Geografico e Cadastral Lisbon via EuroGeographics; http://crs.ifag.de/,EPSG,2002-07-13 00:00:00,2002.25,0
-6184,Azores Oriental Islands 1940,geodetic,Fundamental Point: Forte de S�o Bras.,1940,7022,8901,1345,Topographic mapping.,,Instituto Geografico e Cadastral Lisbon via EuroGeographics; http://crs.ifag.de/,EPSG,2001-06-05 00:00:00,,0
-6185,Madeira 1936,geodetic,Fundamental Point: Madeira SE Base.,1936,7022,8901,1314,Topographic mapping.,,Instituto Geografico e Cadastral Lisbon via EuroGeographics; http://crs.ifag.de/,EPSG,2001-06-05 00:00:00,,1
-6188,OSNI 1952,geodetic,Position fixed to the coordinates from the 19th century Principle Triangulation of station Divis. Scale and orientation controlled by position of Principle Triangulation stations Knocklayd and Trostan.,1952,7001,8901,2530,Geodesy and topographic mapping.,Superseded by 1975 Mapping Adjustment.,Ordnance Survey of Northern Ireland.,EPSG,2001-11-06 00:00:00,,0
-6189,Red Geodesica Venezolana,geodetic,Realised by a frame of 67 stations observed in 1995 as a densification of the SIRGAS campaign and adjusted in the ITRF94.,2000,7019,8901,1251,Geodesy.,,Servicio Autonomo de Geografia y Cartografia Nacional.,EPSG,2001-06-11 00:00:00,,0
-6190,Posiciones Geodesicas Argentinas 1998,geodetic,Densification of SIRGAS 1995; ITRF94 epoch 1995.42.,1998,7019,8901,1033,"Topographic mapping, geodesy.",Una red geod�sica de 127 puntos materializados en el terreno que definen el Sistema Geod�sico Nacional.  [A geodetic network of 127 points defining the National Geodetic System.] Supersedes the 1994 POSGAR adjustment (code 6172).,http://www.igm.gov.ar/posgar.html,EPSG,2001-11-06 00:00:00,,0
-6191,Albanian 1987,geodetic,,1987,7024,8901,1025,"Geodesy, cadastre, topographic mapping, engineering survey.",,EuroGeographics; http://crs.ifag.de/,EPSG,2001-11-06 00:00:00,,0
-6192,Douala 1948,geodetic,"South pillar of Doula base; 4deg 00min 40.64sec N, 9deg 42min 30.41sec E",1948,7022,8901,1060,Topographic mapping.,Superseded  by Manoca 1962 datum (code 6193).,TotalFinaElf,EPSG,2002-01-18 00:00:00,,0
-6193,Manoca 1962,geodetic,"Reservoir centre at the  Manoca tower (""tube Suel""), 3deg 51min 49.896sec N, 9deg 36min 49.347sec E.",1962,7011,8901,1060,Topographic mapping.,The intent of the Bukavu 1953 conference was to adopt the Clarke 1880 (RGN) ellipsoid (code 7012) but in practice this datum has used the IGN version.  Supersedes Douala 1948 (code 6192).,TotalFinaElf,EPSG,2002-01-18 00:00:00,,0
-6194,Qornoq 1927,geodetic,,1927,7022,8901,1107,Topographic mapping.,,"Kort & Matrikelstyrelsen, Copenhagen.",EPSG,2002-01-18 00:00:00,,0
-6195,Scoresbysund 1952,geodetic,,1952,7022,8901,2570,Topographic mapping.,,"Kort & Matrikelstyrelsen, Copenhagen.",EPSG,2002-01-18 00:00:00,,0
-6196,Ammassalik 1958,geodetic,,1958,7022,8901,2571,Topographic mapping.,,"Kort & Matrikelstyrelsen, Copenhagen.",EPSG,2002-01-18 00:00:00,,0
-6197,Garoua,geodetic,IGN astronomical station and benchmark no. 16 at Tongo; 8deg 55min 08.74sec N  13deg 30min 43.19sec E.,,7012,8901,2590,Topographic mapping.,,TotalFinaElf,EPSG,2002-02-12 00:00:00,,0
-6198,Kousseri,geodetic,IGN astronomical station Dabanga; 11deg 55min 05.9sec N  14deg 38min 40.8sec E.,,7012,8901,2591,Topographic mapping.,,TotalFinaElf,EPSG,2002-02-12 00:00:00,,0
-6199,Egypt 1930,geodetic,Fundamental Point: Station F1. Latitude: 30 deg 01 min 42.86 sec N; Longitude: 31 deg 16 min 37.05 sec E (of Greenwich).,1930,7022,8901,1086,Used for scientific purposes only.,"Note that Egypt 1930 uses the International 1924 ellipsoid, unlike the Egypt 1907 datum (code 6229) which uses the Helmert ellipsoid. Oil industry references to the Egypt 1930 datum name and the Helmert ellipsoid probably mean Egypt 1907 datum.",,EPSG,2002-02-12 00:00:00,,0
-6200,Pulkovo 1995,geodetic,Fundamental Point: Pulkovo observatory. Latitude: 59 deg 46 min 15.359 sec N; Longitude: 30 deg 19 min 28.318 sec E (of Greenwich).,1995,7024,8901,1198,Scientific adjustment.,,"""Main Terms of Reference for the State Geodetic Network""; Federal Geodetic Service of Russia; 1994",EPSG,1996-09-12 00:00:00,,0
-6201,Adindan,geodetic,Fundamental Point: Station 15; Adindan. Latitude: 22 deg 10 min  7.110 sec N; Longitude: 31 deg 29 min 21.608 sec E (of Greenwich).,,7012,8901,1271,Topographic mapping.,,,EPSG,1995-06-02 00:00:00,,0
-6202,Australian Geodetic Datum 1966,geodetic,Fundamental Point: Johnson Memorial. Latitude: 25 deg 56 min 54.551 sec S; Longitude: 133 deg 12 min 30.077 sec E (of Greenwich).,1966,7003,8901,1279,Topographic mapping.,,Australian Map Grid Technical Manual. National Mapping Council of Australia Technical Publication 7; 1972.,EPSG,1995-06-02 00:00:00,,0
-6203,Australian Geodetic Datum 1984,geodetic,,1984,7003,8901,1280,Topographic mapping.,,,EPSG,1995-06-02 00:00:00,,0
-6204,Ain el Abd 1970,geodetic,Fundamental Point: Ain El Abd.  Latitude: 28 deg  14 min 06.171 sec N; Longitude: 48 deg 16 min 20.906 sec E (of Greenwich).,1970,7022,8901,1272,Topographic mapping.,,,EPSG,1995-06-02 00:00:00,,0
-6205,Afgooye,geodetic,,,7024,8901,1214,Topographic mapping.,,,EPSG,1995-06-02 00:00:00,,0
-6206,Agadez,geodetic,,,7011,8901,1177,Topographic mapping.,,,EPSG,1995-06-02 00:00:00,,0
-6207,Lisbon 1937,geodetic,Fundamental Point: Castelo Sao Jorge; Lisbon. Latitude: 38 deg 42 min 43.631 sec N; Longitude: 9 deg 07 min 54.862 sec W (of Greenwich).,1937,7022,8901,1294,Topographic mapping.,Supersedes Lisbon 1890 adjustment (which used Bessel 1841 ellipsoid).,Instituto Geografico e Cadastral; Lisbon,EPSG,1995-06-02 00:00:00,2001.551,0
-6208,Aratu,geodetic,,,7022,8901,1274,Oil industry geodetic purposes.,,,EPSG,1995-06-02 00:00:00,,0
-6209,Arc 1950,geodetic,Fundamental Point: Buffelsfontein. Latitude: 33 deg 59 min 32.000 sec S; Longitude: 25 deg 30 min 44.622 sec E (of Greenwich).,1950,7013,8901,1276,"Topographic mapping, geodesy.",,,EPSG,1995-06-02 00:00:00,,0
-6210,Arc 1960,geodetic,Fundamental Point: Buffelsfontein. Latitude: 33 deg 59 min 32.000 sec S; Longitude: 25 deg 30 min 44.622 sec E (of Greenwich).,1960,7012,8901,1277,"Topographic mapping, geodesy.",,,EPSG,1995-06-02 00:00:00,,0
-6211,Batavia,geodetic,Fundamental Point: Longitude at Batavia Astro. Station. Latitude: 6 deg  7 min 39.520 sec S; Longitude: 106 deg 48 min 27.790 sec E (of Greenwich). Latitude and azimuth at Genuk.,,7004,8901,1285,Topographic mapping.,,,EPSG,1995-06-02 00:00:00,,0
-6212,Barbados 1938,geodetic,Fundamental point: HMS Challenger astro station M1; latitude 13 deg 04 min 32.53 sec N; longitude 59 deg 36 min 29.34 sec W (of Greenwich).,1938,7012,8901,1042,Topographic mapping.,,Ordnance Survey of Great Britain.,EPSG,1999-04-22 00:00:00,99.171,0
-6213,Beduaram,geodetic,,,7011,8901,1177,Topographic mapping.,,,EPSG,1995-06-02 00:00:00,,0
-6214,Beijing 1954,geodetic,,1954,7024,8901,1067,Topographic mapping.,,,EPSG,1995-06-02 00:00:00,,0
-6215,Reseau National Belge 1950,geodetic,Fundamental Point: Lommel (tower). Latitude: 51 deg 13 min 47.334 sec N; Longitude: 0 deg 56 min 44.773 sec E (of Brussels).,1950,7022,8901,1347,Topographic mapping.,,,EPSG,1995-06-02 00:00:00,,0
-6216,Bermuda 1957,geodetic,,1957,7008,8901,1047,Topographic mapping.,,,EPSG,1995-06-02 00:00:00,,0
-6218,Bogota 1975,geodetic,Fundamental Point: Bogota observatory. Latitude: 4 deg 35 min 56.570 sec N; Longitude: 74 deg  4 min 51.300 sec W (of Greenwich).,1975,7022,8901,1070,Topographic mapping.,Supersedes 1951 adjustment.,"Instituto Geografico Agustin Caduzzi (IGAC) special publication no. 1, 4th edition (1975) ""Geodesia: Resultados Definitvos de Parte de las Redes Geodesicas Establecidas en el Pais"".",EPSG,2000-10-19 00:00:00,2000.20,0
-6219,Bukit Rimpah,geodetic,2deg 00min 40.16sec S  105deg 51min 39.76sec E (of Greenwich).,,7004,8901,1287,Topographic mapping.,,,EPSG,1995-06-02 00:00:00,,0
-6220,Camacupa,geodetic,,,7012,8901,1288,Coastal hydrography.,,,EPSG,1995-06-02 00:00:00,,0
-6221,Campo Inchauspe,geodetic,Fundamental Point: Campo Inchauspe. Latitude: 35 deg 58 min 17.000 sec S; Longitude: 62 deg 10 min 12.000 sec W (of Greenwich).,,7022,8901,1033,Topographic mapping.,,,EPSG,1995-06-02 00:00:00,,0
-6222,Cape,geodetic,Fundamental Point: Buffelsfontein. Latitude: 33 deg 59 min 32.000 sec S; Longitude: 25 deg 30 min 44.622 sec E (of Greenwich).,,7013,8901,1290,"Geodesy, cadastre, topographic mapping, engineering survey.",,"Private Communication, Directorate of Surveys and Land Information, Cape Town.",EPSG,1996-10-18 00:00:00,96.25  99.69,0
-6223,Carthage,geodetic,,,7011,8901,1236,Topographic mapping.,,,EPSG,1995-06-02 00:00:00,,0
-6224,Chua,geodetic,Fundamental Point: Chua. Latitude: 19 deg 45 min 41.160 sec S; Longitude: 48 deg  6 min  7.560 sec W (of Greenwich).,,7022,8901,1053,Topographic mapping.,,,EPSG,1995-06-02 00:00:00,,0
-6225,Corrego Alegre,geodetic,Fundamental Point: Corrego Alegre. Latitude: 19 deg 50 min 15.140 sec S; Longitude: 48 deg 57 min 42.750 sec W (of Greenwich).,,7022,8901,1293,"Topographic mapping, geodesy.",,,EPSG,1995-06-02 00:00:00,,0
-6226,Cote d'Ivoire,geodetic,,,7011,8901,1075,Topographic mapping.,,,EPSG,1995-06-02 00:00:00,2001.11,1
-6227,Deir ez Zor,geodetic,Fundamental Point: Trig. 254 Deir. Latitude: 35 deg 21 min 49.975 sec N; Longitude: 40 deg  5 min 46.770 sec E (of Greenwich).,,7011,8901,1623,Topographic mapping.,,,EPSG,1995-06-02 00:00:00,,0
-6228,Douala,geodetic,,,7011,8901,1060,Topographic mapping.,,,EPSG,1995-06-02 00:00:00,,1
-6229,Egypt 1907,geodetic,Fundamental Point: Station F1. Latitude: 30 deg 01 min 42.86 sec N; Longitude: 31 deg 16 min 33.60 sec E (of Greenwich).,1907,7020,8901,1086,"Geodesy, cadastre, topographic mapping, engineering survey.",,,EPSG,1995-06-02 00:00:00,,0
-6230,European Datum 1950,geodetic,Fundamental Point: Potsdam (Helmert Tower). Latitude: 52 deg 22 min 51.4456 sec N; Longitude: 13 deg  3 min 58.9283 sec E (of Greenwich).,1950,7022,8901,1296,"Topographic mapping, geodesy.",,,EPSG,1995-06-02 00:00:00,,0
-6231,European Datum 1987,geodetic,,1987,7022,8901,2420,Scientific network.,,,EPSG,1995-06-02 00:00:00,,0
-6232,Fahud,geodetic,Fundamental Point: Station NO68-024 Fahud. Latitude: 22 deg 17 min 31.182 sec N; Longitude: 56 deg 29 min 18.820 sec E (of Greenwich).,,7012,8901,1183,Oil industry mapping.,Superseded by PSD93 (code 6134).,Petroleum Development Oman.,EPSG,1995-06-02 00:00:00,,0
-6233,Gandajika 1970,geodetic,,1970,7022,8901,1152,Topographic mapping.,,,EPSG,1995-06-02 00:00:00,,0
-6234,Garoua,geodetic,,,7011,8901,1060,Topographic mapping.,The intent of the Bukavu 1953 conference was to adopt the Clarke 1880 (RGN) ellipsoid (code 7012) but in practice this datum has used the IGN version.,,EPSG,1995-06-02 00:00:00,,1
-6235,Guyane Francaise,geodetic,,,7022,8901,1097,Topographic mapping.,,,EPSG,1995-06-02 00:00:00,,0
-6236,Hu Tzu Shan,geodetic,,,7022,8901,1228,Topographic mapping.,,,EPSG,1995-06-02 00:00:00,,0
-6237,Hungarian Datum 1972,geodetic,"Fundamental Point: Szolohegy. Latitude: 47 deg 17 min 32,6156 sec N; Longitude 19 deg 36 min 09.9865 sec E; geoid height 6.56m.",1972,7036,8901,1119,Topographic mapping.,,http://lazarus.elte.hu/gb/geodez/geod3.htm,EPSG,1996-10-18 00:00:00,96.09,0
-6238,Indonesian Datum 1974,geodetic,"Fundamental Point: Padang. Latitude: 0 deg 56 min 38.414 sec S; Longitude: 100 deg 22 min  8.804 sec E (of Greenwich). Ellipsoidal height 3.190m, gravity-related height 14.0m above mean sea level.",1974,7021,8901,1122,Topographic mapping.,,Bakosurtanal 1979 paper by Jacob Rais.,EPSG,2002-06-22 00:00:00,2002.151,0
-6239,Indian 1954,geodetic,Fundamental Point: Kalianpur. Latitude: 24 deg  07 min 11.260 sec N; Longitude: 77 deg 39 min 17.570 sec E (of Greenwich).,1954,7015,8901,1304,Topographic mapping.,,,EPSG,1995-06-02 00:00:00,,0
-6240,Indian 1975,geodetic,Fundamental Point: Khau Sakaerang,1975,7015,8901,1231,Topographic mapping.,,,EPSG,1995-06-02 00:00:00,,0
-6241,Jamaica 1875,geodetic,Fundamental Point: Fort Charles Flagstaff. Latitude: 17 deg 55 min 55.800 sec N; Longitude: 76 deg 56 min 37.260 sec W (of Greenwich).,1875,7034,8901,1128,Topographic mapping.,,,EPSG,1995-06-02 00:00:00,,0
-6242,Jamaica 1969,geodetic,Fundamental Point: Fort Charles Flagstaff. Latitude: 17 deg 55 min 55.800 sec N; Longitude: 76 deg 56 min 37.260 sec W (of Greenwich).,1969,7008,8901,1128,"Geodesy, cadastre, topographic mapping, engineering survey.",,,EPSG,1995-06-02 00:00:00,,0
-6243,Kalianpur 1880,geodetic,Fundamental Point: Kalianpur. Latitude: 24 deg  07 min 11.260 sec N; Longitude: 77 deg 39 min 17.570 sec E (of Greenwich).,1880,7042,8901,1307,Topographic mapping.,Includes 1916 extrension into Burma (Myanmar).  Superseded by 1937 adjustment.,"G. Bomford; ""The Re-adjustment of the Indian Triangulation""; Survey of India Professional Paper 28; 1939.",EPSG,1999-10-20 00:00:00,97.23,0
-6244,Kandawala,geodetic,,,7015,8901,1218,Topographic mapping.,,,EPSG,1995-06-02 00:00:00,,0
-6245,Kertau,geodetic,Fundamental Point: Kertau. Latitude: 3 deg 27 min 50.710 sec N; Longitude: 102 deg 37 min 24.550 sec E (of Greenwich).,,7018,8901,1309,Topographic mapping.,,,EPSG,1995-06-02 00:00:00,,0
-6246,Kuwait Oil Company,geodetic,,,7012,8901,1136,Oil industry mapping.,,,EPSG,1995-06-02 00:00:00,,0
-6247,La Canoa,geodetic,Fundamental Point: La Canoa. Latitude: 8 deg 34 min 17.170 sec N; Longitude: 63 deg 51 min 34.880 sec W (of Greenwich).,,7022,8901,1251,"Geodesy, topographic mapping, engineering survey.",Origin also adopted for PSAD56.,,EPSG,1995-06-02 00:00:00,,0
-6248,Provisional South American Datum 1956,geodetic,Fundamental Point: La Canoa. Latitude: 8 deg 34 min 17.170 sec N; Longitude: 63 deg 51 min 34.880 sec W (of Greenwich).,1956,7022,8901,1348,Topographic mapping.,Same origin as La Canoa datum.,,EPSG,1995-06-02 00:00:00,,0
-6249,Lake,geodetic,Fundamental Point: Maracaibo Cathedral. Latitude: 10 deg 38 min 34.678 sec N; Longitude: 71 deg 36 min 20.224 sec W (of Greenwich).,,7022,8901,1312,Oil industry mapping.,,,EPSG,1995-06-02 00:00:00,,0
-6250,Leigon,geodetic,"Fundamental Point: GCS Station 121, Leigon. Latitude: 5 deg 38 min 52.27 sec N; Longitude: 0 deg 11 min 46.08 sec W (of Greenwich).",,7012,8901,1104,Topographic mapping.,Superseded Accra datum (code 6168) from 1978.  Coordinates at Leigon fundamental point defined as Accra datum values for that point.,Ordnance Survey International,EPSG,1995-06-02 00:00:00,,0
-6251,Liberia 1964,geodetic,,1964,7012,8901,1142,Topographic mapping.,,,EPSG,1995-06-02 00:00:00,,0
-6252,Lome,geodetic,,,7011,8901,1232,Topographic mapping.,,,EPSG,1995-06-02 00:00:00,,0
-6253,Luzon 1911,geodetic,Fundamental Point: Balacan. Latitude: 13 deg 33 min 41.000 sec N; Longitude: 121 deg 52 min  03.000 sec E (of Greenwich).,1911,7008,8901,1190,Topographic mapping.,,,EPSG,1995-06-02 00:00:00,,0
-6254,Hito XVIII 1963,geodetic,Chile-Argentina boundary survey.,1963,7022,8901,1303,Geodesy.,Used in Tierra del Fuego.,Various oil company records.,EPSG,1995-06-02 00:00:00,,0
-6255,Herat North,geodetic,,,7022,8901,1024,Topographic mapping.,,,EPSG,1995-06-02 00:00:00,,0
-6256,Mahe 1971,geodetic,Fundamental Point: Mahe,1971,7012,8901,1208,Topographic mapping.,,,EPSG,1995-06-02 00:00:00,,0
-6257,Makassar,geodetic,Fundamental Point: Moncongloe,,7004,8901,1316,Topographic mapping.,,,EPSG,1995-06-02 00:00:00,,0
-6258,European Terrestrial Reference System 1989,geodetic,,1989,7019,8901,1298,Geodesy.,"Coincides with WGS84 at the one metre level.
-The distinction in usage between ETRF89 and ETRS89 is confused: although in principle conceptually different in practice both are used for the realisation.",,EPSG,2000-10-19 00:00:00,97.11  97.55  99.111 2000.72,0
-6259,Malongo 1987,geodetic,Fundamental Point: Station Y at Malongo base camp. Latitude: 5 deg 23 min 34.327 sec S; Longitude: 12 deg 12 min  02.393 sec E (of Greenwich).,1987,7022,8901,1317,Oil industry mapping.,Offshore extension of Mhast datum (6264) using Transit translocation.,Chevron Petroleum Technology.,EPSG,1995-06-02 00:00:00,,0
-6260,Manoca,geodetic,,,7012,8901,1060,Topographic mapping.,,,EPSG,1995-06-02 00:00:00,,1
-6261,Merchich,geodetic,"Fundamental Point: Merchich. Latitude: 33� 26' 59.672"" N; Longitude: 7� 33' 27.295""  W (of Greenwich).",1922,7011,8901,1166,Topographic mapping.,,,EPSG,1995-06-02 00:00:00,,0
-6262,Massawa,geodetic,,,7004,8901,1089,Topographic mapping.,,,EPSG,1995-06-02 00:00:00,,0
-6263,Minna,geodetic,Fundamental Point: Minna base station L40. Latitude: 9 deg 38 min  09.000 sec N; Longitude: 6 deg 30 min 59.000 sec E (of Greenwich).,,7012,8901,1178,Topographic mapping.,,,EPSG,1995-06-02 00:00:00,,0
-6264,Mhast,geodetic,,,7022,8901,1318,Coastal hydrography.,,,EPSG,1995-06-02 00:00:00,,0
-6265,Monte Mario,geodetic,Fundamental Point: Monte Mario. Latitude: 41 deg 55 min 25.510 sec N; Longitude: 0 deg  00 min  00.000 sec E (of Rome).,,7022,8901,1127,Topographic mapping.,,,EPSG,1995-06-02 00:00:00,,0
-6266,M'poraloko,geodetic,,,7011,8901,1100,Topographic mapping.,,,EPSG,1995-06-02 00:00:00,,0
-6267,North American Datum 1927,geodetic,Fundamental Point: Meade's Ranch. Latitude: 39 deg 13 min 26.686 sec N; Longitude: 98 deg 32 min 30.506 sec W (of Greenwich).,1927,7008,8901,1349,Topographic mapping.,Superseded by North American Datum 1983 (NAD83),,EPSG,1995-06-02 00:00:00,,0
-6268,NAD Michigan,geodetic,Fundamental Point: Meade's Ranch. Latitude: 39 deg 13 min 26.686 sec N; Longitude: 98 deg 32 min 30.506 sec W (of Greenwich).,,7009,8901,1391,Topographic mapping.,,,EPSG,1995-06-02 00:00:00,,0
-6269,North American Datum 1983,geodetic,Origin at geocentre.,1986,7019,8901,1350,Topographic mapping.,,,EPSG,1995-06-02 00:00:00,,0
-6270,Nahrwan 1967,geodetic,Fundamental point: Nahrwan south base.  Latitude: 33 deg 19 min 10.87 sec N; Longitude: 44 deg 43 min 25.54 sec E (of Greenwich).,1967,7012,8901,1351,Topographic mapping.,,,EPSG,1995-06-02 00:00:00,,0
-6271,Naparima 1972,geodetic,Fundamental Point: Naparima. Latitude: 10 deg 16 min 44.860 sec N; Longitude: 61 deg 27 min 34.620 sec W (of Greenwich).,1972,7022,8901,1322,Topographic mapping.,Naparima 1972 is an extension of the Naparima 1955 network of Trinidad to include Tobago.,Ordnance Survey International.,EPSG,1995-06-02 00:00:00,,0
-6272,New Zealand Geodetic Datum 1949,geodetic,Fundamental Point: Papatahi. Latitude: 41 deg 19 min  8.900 sec S; Longitude: 175 deg  02 min 51.000 sec E (of Greenwich).,1949,7022,8901,1175,"Geodesy, cadastre, topographic mapping, engineering survey.",,,EPSG,2000-10-19 00:00:00,2000.702,0
-6273,NGO 1948,geodetic,,1948,7005,8901,1352,"Geodesy, cadastre, topographic mapping, engineering survey.",,,EPSG,1995-06-02 00:00:00,,0
-6274,Datum 73,geodetic,"Fundamental Point:  TF4, Melrica. Latitude: 39 deg 41 min 37.30 sec N; Longitude: 8 deg 07 min 53.31 sec W (of Greenwich).",1964,7022,8901,1294,Topographic mapping.,,Instituto Geografico e Cadastral; Lisbon,EPSG,1995-06-02 00:00:00,,0
-6275,Nouvelle Triangulation Francaise,geodetic,Fundamental Point: Pantheon. Latitude: 48 deg 50 min 46.52 sec N; Longitude: 2 deg 20 min 48.67 sec E (of Greenwich).,1898,7011,8901,1353,Topographic mapping.,,,EPSG,1995-06-02 00:00:00,,0
-6276,NSWC 9Z-2,geodetic,,,7025,8901,1262,Satellite navigation.,Transit precise ephemeris before 1991.,,EPSG,1995-06-02 00:00:00,,0
-6277,OSGB 1936,geodetic,Fundamental Point: Herstmonceux. Latitude: 50 deg 51 min 55.271 sec N; Longitude: 0 deg 20 min 45.882 sec E (of Greenwich).,1936,7001,8901,1264,Topographic mapping.Topographic mapping.Topographic mapping.Topographic mapping.,,,EPSG,1995-06-02 00:00:00,,0
-6278,OSGB 1970 (SN),geodetic,Fundamental Point: Herstmonceux. Latitude: 50 deg 51 min 55.271 sec N; Longitude: 0 deg 20 min 45.882 sec E (of Greenwich).,1970,7001,8901,1354,Scientific network.,,,EPSG,1995-06-02 00:00:00,,0
-6279,OS (SN) 1980,geodetic,Fundamental Point: Herstmonceux. Latitude: 50 deg 51 min 55.271 sec N; Longitude: 0 deg 20 min 45.882 sec E (of Greenwich).,1980,7001,8901,1354,Scientific network.,,,EPSG,1995-06-02 00:00:00,,0
-6280,Padang 1884,geodetic,Fundamental Point: Padang,1884,7004,8901,1355,Topographic mapping.,,,EPSG,1995-06-02 00:00:00,,0
-6281,Palestine 1923,geodetic,Fundamental Point: Point 82'M  Jerusalem. Latitude: 31 deg 44 min  2.749 sec N; Longitude: 35 deg 12 min 43.490 sec E (of Greenwich).,1923,7010,8901,1356,Topographic mapping.,,,EPSG,1995-06-02 00:00:00,,0
-6282,Congo 1960 Pointe Noire,geodetic,Fundamental Point: Point Noire Astro. Latitude: 4 deg 47 min  0.100 sec S; Longitude: 11 deg 51 min  1.550 sec E (of Greenwich).,1960,7011,8901,1072,Topographic mapping.,,,EPSG,2002-01-18 00:00:00,2002.05,0
-6283,Geocentric Datum of Australia 1994,geodetic,,1994,7019,8901,1036,"Topographic mapping, geodesy.",Coincident with WGS84 to within 1 metre.,Australian Surveying and Land Information Group Internet WWW page.,EPSG,1995-06-02 00:00:00,,0
-6284,Pulkovo 1942,geodetic,Fundamental Point: Pulkovo observatory. Latitude: 59 deg 46 min 18.550 sec N; Longitude: 30 deg 19 min 42.090 sec E (of Greenwich).,1942,7024,8901,1357,Topographic mapping.,,,EPSG,1995-06-02 00:00:00,,0
-6285,Qatar 1974,geodetic,Fundamental Point: Station G3,1974,7022,8901,1346,Topographic mapping.,,,EPSG,2001-08-28 00:00:00,2001.27,0
-6286,Qatar 1948,geodetic,Fundamental Point: Sokey 0 M. Latitude: 25 deg 22 min 56.500 sec N; Longitude: 50 deg 45 min 41.000 sec E (of Greenwich).,1948,7020,8901,1346,Topographic mapping.,,,EPSG,1995-06-02 00:00:00,,0
-6287,Qornoq,geodetic,,1927,7022,8901,1107,Topographic mapping.,,,EPSG,1995-06-02 00:00:00,,1
-6288,Loma Quintana,geodetic,Fundamental Point: Loma Quintana,,7022,8901,1313,Topographic mapping.,Superseded by La Canoa (code 6247).,,EPSG,1995-06-02 00:00:00,,0
-6289,Amersfoort,geodetic,Fundamental Point: Amersfoort. Latitude: 52 deg  09 min 22.178 sec N; Longitude: 5 deg 23 min 15.478 sec E (of Greenwich).,,7004,8901,1275,"Geodesy, cadastre, topographic mapping, engineering survey.",,,EPSG,2000-10-19 00:00:00,2000.56,0
-6291,South American Datum 1969,geodetic,,1969,7036,8901,1358,Topographic mapping.,SAD69 uses GRS67 ellipsoid with 1/f to exactly 2 decimal places.  Precision of ellipsoid entry increased from 2 to 5 dp with change id 97.252.  Error introduced if not using the truncated precision is 0 to 31mm.,,EPSG,1996-10-18 00:00:00,96.09  97.252,0
-6292,Sapper Hill 1943,geodetic,,1943,7022,8901,1092,Topographic mapping.,,,EPSG,1995-06-02 00:00:00,,0
-6293,Schwarzeck,geodetic,,,7046,8901,1169,Topographic mapping.,,"Private Communication, Directorate of Surveys and Land Information, Cape Town.",EPSG,2001-01-21 00:00:00,2001.15,0
-6294,Segora,geodetic,,,7004,8901,1359,Topographic mapping.,,,EPSG,1995-06-02 00:00:00,,1
-6295,Serindung,geodetic,,,7004,8901,1360,Topographic mapping.,,,EPSG,1995-06-02 00:00:00,,0
-6296,Sudan,geodetic,,,7011,8901,1361,Topographic mapping.,,,EPSG,1995-06-02 00:00:00,,0
-6297,Tananarive 1925,geodetic,Fundamental Point: Tananarive observatory. Latitude: 18 deg 55 min  2.100 sec S; Longitude: 45 deg 12 min 52.800 sec E (of Greenwich).,2025,7022,8901,1149,Topographic mapping.,,,EPSG,1995-06-02 00:00:00,,0
-6298,Timbalai 1948,geodetic,Fundamental Point: Timbalai. Latitude: 5 deg 17 min  3.548 sec N; Longitude: 115 deg 10 min 56.409 sec E (of Greenwich).,1948,7016,8901,1362,Topographic mapping.,,,EPSG,1995-06-02 00:00:00,,0
-6299,TM65,geodetic,Adjusted to best mean fit 12 stations of the OSNI 1952 primary adjustment to within 0.5m.,1965,7002,8901,1305,Topographic mapping.,,,EPSG,1995-06-02 00:00:00,,0
-6300,TM75,geodetic,Adjusted to best mean fit 9 stations of the OSNI 1952 primary adjustment in Northern Ireland plus the 1965 values of 3 stations in the Republic of Ireland.,1975,7002,8901,1305,"Geodesy, topographic mapping and engineering survey.",,,EPSG,1995-06-02 00:00:00,,0
-6301,Tokyo,geodetic,Fundamental Point: Nikon-Keido-Genten. Latitude: 35 deg 39 min 17.5148 sec N; Longitude: 139 deg 44 min 40.5020 sec E (of Greenwich).,,7004,8901,1364,"Geodesy, cadastre, topographic mapping, engineering survey.",Superseded by Japanese Geodetic Datum 2000 (code 6611).,Geographic Survey Institute; Japan; Bulletin 40 (March 1994).  Also http://vldb.gsi.go.jp/sokuchi/datum/tokyodatum.html,EPSG,2002-06-22 00:00:00,98.46  2002.08,0
-6302,Trinidad 1903,geodetic,Harbour Master's Flagstaff; Port of Spain.,1903,7007,8901,1339,Topographic mapping.,,,EPSG,1995-06-02 00:00:00,,0
-6303,Trucial Coast 1948,geodetic,Fundamental Point: TC1. Latitude: 25 deg 23 min 50.190 sec N; Longitude: 55 deg 26 min 43.950 sec E (of Greenwich).,1948,7020,8901,1363,Oil industry mapping.,,,EPSG,1995-06-02 00:00:00,,0
-6304,Voirol 1875,geodetic,Fundamental Point: Voirol. Latitude: 40.835864 grads N; Longitude: 0.788735 grads E of Paris.,1875,7011,8901,1365,Topographic mapping.,,IGN Paris,EPSG,1995-06-02 00:00:00,,0
-6306,Bern 1938,geodetic,Fundamental Point: Old Bern observatory. Latitude: 46 deg 57 min  7.890 sec N; Longitude: 7 deg 26 min 22.335 sec E (of Greenwich).,1938,7004,8901,1286,Topographic mapping.,This redetermination of the coordinates of fundamental point is used for scientific purposes and as the graticule overprinted on topographic maps constructed on the CH1903 / LV03 projected CS (code 21781).,"""Die Projektionen der schweizerischen Plan- und Kartenwerke""; J. Bolliger 1967",EPSG,1 [...]
-6307,Nord Sahara 1959,geodetic,,1959,7012,8901,1366,Topographic mapping.,Sometimes incorrectly referred to as Voirol Unifie 1960. Voirol Unifie 1960 is NOT a datum:  it is two projected coordinate systems based on  Nord Sahara 1959.  See coordinate system codes 30791 and 30792.,"""Le System Geodesique Nord-Sahara""; IGN Paris",EPSG,1999-10-20 00:00:00,99.62,0
-6308,Stockholm 1938,geodetic,Fundamental Point: Stockholm observatory,1938,7004,8901,1225,"Geodesy, cadastre, topographic mapping, engineering survey.",Superseded by RT90 adjustment (datum code 6124),,EPSG,1996-04-12 00:00:00,,0
-6309,Yacare,geodetic,,,7022,8901,1247,Topographic mapping.,,,EPSG,1995-06-02 00:00:00,,0
-6310,Yoff,geodetic,,,7011,8901,1207,Topographic mapping.,,,EPSG,1995-06-02 00:00:00,,0
-6311,Zanderij,geodetic,,,7022,8901,1222,Topographic mapping.,,,EPSG,1995-06-02 00:00:00,,0
-6312,Militar-Geographische Institut,geodetic,Fundamental Point: Hermannskogel. Latitude: 48 deg 16 min 15.29 sec N; Longitude: 16 deg 17 min 41.06 sec E (of Greenwich).,1901,7004,8901,1321,Topographic mapping.,Croatia is planning to define a new modern datum to supersede HR1901 (info from EuroGeographics; http://crs.ifag.de/).,Bundesamt fur Eich- und Vermessungswesen; Wien,EPSG,1995-06-02 00:00:00,,0
-6313,Reseau National Belge 1972,geodetic,Fundamental Point: Uccle observatory. Latitude: 50 deg 47 min 57.704 sec N; Longitude: 4 deg 21 min 24.983 sec E (of Greenwich).,1972,7022,8901,1347,Topographic mapping.,,,EPSG,1995-06-02 00:00:00,,0
-6314,Deutsches Hauptdreiecksnetz,geodetic,Fundamental Point: Rauenberg. Latitude: 52 deg 27 min 12.021 sec N; Longitude: 13 deg 22 min 04.928 sec E (of Greenwich).,,7004,8901,1295,"Geodesy, cadastre, topographic mapping, engineering survey.",Deprecated because name misspelt.,,EPSG,2001-11-06 00:00:00,2001.511,0
-6315,Conakry 1905,geodetic,Fundamental Point: Conakry. Latitude: 10.573766g N; Longitude: 17.833682g W (of Paris).,1905,7011,8901,1112,Topographic mapping.,,,EPSG,1995-06-02 00:00:00,,0
-6316,Dealul Piscului 1933,geodetic,Fundamental point: latitude 44 deg 24 min 33.9606 sec N; longitude 26 deg 06 min 44.8772 sec E (of Greenwich).,1933,7022,8901,1197,Topographic mapping.,Superseded by 1970 adjustment (datum code 6317),Institute for Geodesy Photogrametry and Land Management,EPSG,1996-04-12 00:00:00,,0
-6317,Dealul Piscului 1970,geodetic,Fundamental point: latitude 44 deg 24 min 23.7709 sec N; longitude 26deg 06 min 44.1265 sec E (of Greenwich).,1970,7024,8901,1197,Topographic mapping.,Supersedes 1933 adjustment (datum code 6316),Institute for Geodesy Photogrametry and Land Management,EPSG,1996-04-12 00:00:00,,0
-6318,National Geodetic Network,geodetic,,,7030,8901,1136,Geodesy.,,,EPSG,1996-04-12 00:00:00,,0
-6319,Kuwait Utility,geodetic,,,7019,8901,1310,"Cadastre, engineering survey.",,,EPSG,1996-04-12 00:00:00,,0
-6322,World Geodetic System 1972,geodetic,,1972,7043,8901,1262,Satellite navigation.,Used by GPS before 1987. For Transit satellite positioning see also WGS 72BE. Datum code 6323 reserved for southern hemisphere ProjCS's.,,EPSG,1999-04-22 00:00:00,99.03,0
-6324,WGS 72 Transit Broadcast Ephemeris,geodetic,,1972,7043,8901,1262,Satellite navigation.,Alleged datum for use with Transit broadcast ephemeris prior to 1989. Relationship to WGS 72 has changed over time.  Datum code 6325 reserved for southern hemisphere ProjCS's.,,EPSG,1999-04-22 00:00:00,99.03,0
-6326,World Geodetic System 1984,geodetic,Origin at geocentre.,1984,7030,8901,1262,Satellite navigation.,Datum code 6327 reserved for southern hemisphere ProjCS's,,EPSG,2002-06-22 00:00:00,2002.151,0
-6600,Anguilla 1957,geodetic,Fundamental point: station A4.,1957,7012,8901,1030,Topographic mapping.,,Ordnance Survey of Great Britain.,EPSG,1999-04-22 00:00:00,,0
-6601,Antigua 1943,geodetic,Fundamental point: station A14.,1943,7012,8901,1273,Topographic mapping.,,Ordnance Survey of Great Britain.,EPSG,1999-04-22 00:00:00,,0
-6602,Dominica 1945,geodetic,Fundamental point: station M12.,1945,7012,8901,1082,Topographic mapping.,,Ordnance Survey of Great Britain.,EPSG,1999-04-22 00:00:00,,0
-6603,Grenada 1953,geodetic,Fundamental point: station GS8.,1953,7012,8901,1551,Topographic mapping.,,Ordnance Survey of Great Britain.,EPSG,1999-04-22 00:00:00,,0
-6604,Montserrat 1958,geodetic,Fundamental point: station M36.,1958,7012,8901,1165,Topographic mapping.,,Ordnance Survey of Great Britain.,EPSG,1999-04-22 00:00:00,,0
-6605,St. Kitts 1955,geodetic,Fundamental point: station K12.,1955,7012,8901,1200,Topographic mapping.,,Ordnance Survey of Great Britain.,EPSG,1999-04-22 00:00:00,,0
-6606,St. Lucia 1955,geodetic,Fundamental point: station DCS3.,1955,7012,8901,1201,Topographic mapping.,,Ordnance Survey of Great Britain.,EPSG,1999-04-22 00:00:00,,0
-6607,St. Vincent 1945,geodetic,Fundamental point: station V1.,1945,7012,8901,1202,Topographic mapping.,,Ordnance Survey of Great Britain.,EPSG,1999-04-22 00:00:00,,0
-6608,North American Datum 1927 (1976),geodetic,Fundamental Point: Meade's Ranch. Latitude: 39 deg 13 min 26.686 sec N; Longitude: 98 deg 32 min 30.506 sec W (of Greenwich).,1976,7008,8901,1367,"Geodesy, cadastre, topographic mapping, engineering survey.",NAD27(76) used in Ontario for all maps at scale 1/20 000 and larger; elsewhere in Canada for selected purposes.,Geodetic Survey of Canada.,EPSG,1999-05-12 00:00:00,,0
-6609,North American Datum 1927 (CGQ77),geodetic,Fundamental Point: Meade's Ranch. Latitude: 39 deg 13 min 26.686 sec N; Longitude: 98 deg 32 min 30.506 sec W (of Greenwich).,1977,7008,8901,1368,"Geodesy, cadastre, topographic mapping, engineering survey.",NAD27 (CGQ77) used in Quebec for all maps at scale 1/20 000 and larger; generally for maps issued by the Quebec cartography office whose reference system is CGQ77.,Geodetic Service of Quebec.  Contact alain.bernard at mrn.gouv.qc.ca,EPSG,1 [...]
-6610,Xian 1980,geodetic,,1980,7049,8901,1067,"Geodesy, topographic and engineering survey.",,BP,EPSG,2002-02-12 00:00:00,,0
-6611,Hong Kong 1980,geodetic,"Trig ""Zero"", 38.4 feet south along the transit circle of the Kowloon Observatory. Latitude 22deg 18min 12.82sec North, longitude 114deg 10min 18.75sec East.",1980,7022,8901,1118,"Geodesy, topgraphic and engineering survey, cadastre.",Supersedes Hong Kong 1963 datum and 1973 metric adjustment.,"Survey and Mapping Office, Lands Department. http://www.info.gov.hk/landsd/mapping/tindex.htm",EPSG,2002-06-22 00:00:00,,0
-6612,Japanese Geodetic Datum 2000,geodetic,ITRF94,2000,7019,8901,1129,"Geodesy, topographic and engineering survey.",Instigated under amendment to the Japanese Surveying Law with effect from April 2002. Supersedes Tokyo datum (code 6301).,Japanese Survey Federation.,EPSG,2002-06-22 00:00:00,,0
-6613,Gunung Segara,geodetic,Station P5 (Gunung Segara) 0deg 32min 12.83sec S  117deg 08min 48.47sec E (of Greenwich).,,7004,8901,1360,Topographic mapping.,,TotalFinaElf.,EPSG,2002-06-22 00:00:00,,0
-6614,Qatar National Datum 1995,geodetic,Defined by transformation from WGS 84 - see coordinate operation code 1840.,1995,7022,8901,1346,Topographic mapping.,,Qatar Centre for Geographic Information.,EPSG,2002-06-28 00:00:00,,0
-6615,Porto Santo,geodetic,,1936,7022,8901,1314,Topographic mapping.,For Selvagens island see Selvagem Grande (code 6616).,Instituto Geografico e Cadastral Lisbon http://www.ipcc.pt,EPSG,2002-07-13 00:00:00,,0
-6616,Selvagem Grande,geodetic,,,7022,8901,2779,Topographic mapping.,,Instituto Geografico e Cadastral Lisbon http://www.ipcc.pt,EPSG,2002-07-13 00:00:00,,0
-6801,CH1903 (Bern),geodetic,Fundamental Point: Bern observatory. Latitude: 46 deg 57 min  8.660 sec N; Longitude: 0,1903,7004,8907,1286,Topographic mapping.,,Bundesamt f�r Landestopographie,EPSG,1999-10-20 00:00:00,,0
-6802,Bogota 1975 (Bogota),geodetic,Fundamental Point: Bogota observatory. Latitude: 4 deg 35 min 56.570 sec N; Longitude: 0,1975,7022,8904,1070,Topographic mapping.,,,EPSG,2000-10-19 00:00:00,2000.20,0
-6803,Lisbon 1937 (Lisbon),geodetic,Fundamental Point: Castelo Sao Jorge; Lisbon. Latitude: 38 deg 42 min 43.631 sec N; Longitude: 0,1937,7022,8902,1294,Topographic mapping.,Supersedes Lisbon 1890 adjustment (which used Bessel 1841 ellipsoid).,Instituto Geografico e Cadastral; Lisbon,EPSG,1995-06-02 00:00:00,2001.551,0
-6804,Makassar (Jakarta),geodetic,Fundamental Point: Moncongloe,,7004,8908,1316,Topographic mapping.,,,EPSG,1995-06-02 00:00:00,,0
-6805,Militar-Geographische Institut (Ferro),geodetic,Fundamental Point: Hermannskogel. Latitude: 48 deg 16 min 15.29 sec N; Longitude: 33 deg 57 min 41.06 sec E of Ferro.,1901,7004,8909,1321,Topographic mapping.,,Bundesamt fur Eich- und Vermessungswesen; Wien,EPSG,1995-06-02 00:00:00,,0
-6806,Monte Mario (Rome),geodetic,Fundamental Point: Monte Mario. Latitude: 41 deg 55 min 25.510 sec N; Longitude: 0 deg  00 min  00.000 sec E (of Rome).,,7022,8906,1127,Topographic mapping.,,,EPSG,1995-06-02 00:00:00,,0
-6807,Nouvelle Triangulation Francaise (Paris),geodetic,Fundamental Point: Pantheon,,7011,8903,1353,Topographic mapping.,,,EPSG,1995-06-02 00:00:00,,0
-6808,Padang 1884 (Jakarta),geodetic,Fundamental Point: Padang,1884,7004,8908,1355,Topographic mapping.,,,EPSG,1995-06-02 00:00:00,,0
-6809,Reseau National Belge 1950 (Brussels),geodetic,Fundamental Point: Lommel (tower). Latitude: 51 deg 13 min 47.334 sec N; Longitude: 0 deg 56 min 44.773 sec E (of Brussels).,1950,7022,8910,1347,Topographic mapping.,,,EPSG,1995-06-02 00:00:00,,0
-6810,Tananarive 1925 (Paris),geodetic,Fundamental Point: Tananarive observatory. Latitude: 18 deg 55 min  2.100 sec S; Longitude: 0,1925,7022,8903,1149,Topographic mapping.,,,EPSG,1995-06-02 00:00:00,,0
-6811,Voirol 1875 (Paris),geodetic,Fundamental Point: Voirol. Latitude: 40.835864 grads N; Longitude: 0.788735 grads E of Paris.,1875,7011,8903,1365,Topographic mapping.,,IGN Paris,EPSG,1995-06-02 00:00:00,,0
-6813,Batavia (Jakarta),geodetic,Fundamental Point: Longitude at Batavia Astro. Station. Latitude: 6 deg  7 min 39.520 sec S; Longitude: 106 deg 48 min 27.790 sec E (of Greenwich). Latitude and azimuth at Genuk.,,7004,8908,1285,Topographic mapping.,,,EPSG,1995-06-02 00:00:00,,0
-6814,Stockholm 1938 (Stockholm),geodetic,Fundamental Point: Stockholm observatory,1938,7004,8911,1225,"Geodesy, cadastre, topographic mapping, engineering survey.",Superseded by RT90 adjustment (datum code 6124),,EPSG,1996-04-12 00:00:00,,0
-6815,Greek (Athens),geodetic,Fundamental point: Athens Observatory; latitude 37 deg 58 min 20.132 sec N; longitude 0 deg E of Athens.,,7004,8912,1106,Topographic mapping.,See geodetic datum alias 6404.  Used as basis of topographic mapping based on Hatt projection.,Topography Department; National Technical University of Athens,EPSG,1997-06-16 00:00:00,,0
-6816,Carthage (Paris),geodetic,,,7011,8903,1236,Topographic mapping.,,,EPSG,1995-06-02 00:00:00,,0
-6817,NGO 1948 (Oslo),geodetic,,1948,7005,8913,1352,"Geodesy, cadastre, topographic mapping, engineering survey.",,,EPSG,1995-06-02 00:00:00,,0
-6818,S-JTSK (Ferro),geodetic,Modification of Austrian MGI (Ferro) datum.,1920,7004,8909,1306,"Geodesy, cadastre, topographic mapping, engineering survey.",,Research Institute for Geodesy Topography and Cartography (VUGTK); Prague.,EPSG,2001-08-28 00:00:00,2001.26,0
-6819,Nord Sahara 1959 (Paris),geodetic,,1959,7012,8903,1366,Topographic mapping.,Conformal transformation from adjustment in ED50 terms.,"""Le System Geodesique Nord-Sahara""; IGN Paris",EPSG,2000-06-23 00:00:00,,0
-6820,Gunung Segara (Jakarta),geodetic,Station P5 (Gunung Segara) 0deg 32min 12.83sec S  117deg 08min 48.47sec E of Greenwich (8deg 20min 20.68sec E of Jakarta).,,7004,8908,1360,Topographic mapping.,,,EPSG,2002-06-22 00:00:00,,0
-6901,Ancienne Triangulation Francaise (Paris),geodetic,,,7027,8903,1326,Topographic mapping.,,,EPSG,1995-06-02 00:00:00,,0
-6902,Nord de Guerre (Paris),geodetic,,,7027,8903,1369,Topographic mapping.,,,EPSG,1995-06-02 00:00:00,,0
-6903,Madrid 1870 (Madrid),geodetic,Fundamental point: Madrid observatory.,1870,7028,8905,1217,Topographic mapping.,,Institut de Geomatica; Barcelona,EPSG,1998-11-11 00:00:00,,0
-6904,Lisbon 1890 (Lisbon),geodetic,Fundamental Point: Castelo Sao Jorge; Lisbon. Latitude: 38 deg 42 min 43.631 sec N; Longitude: 0,1937,7004,8902,1294,Topographic mapping.,Superseded by Lisbon 1937 adjustment (which uses International 1924 ellipsoid).,Instituto Geografico e Cadastral; Lisbon. http://www.ipcc.pt,EPSG,2002-07-13 00:00:00,,0
-9300,Astra Minas,engineering,Origin at 45 deg 59 min 54.79 sec S; 67 deg 34 min 38.94 sec W.,,,,1265,Oil industry mapping.,,,EPSG,2000-03-07 00:00:00,,0
-9301,Barcelona,engineering,Centre of the gateway of San Cristobal chuch; Plaza Boyaca; Barcelona.,,,,1266,Oil industry mapping.,Coordinates variously given as 10deg 08min 06sec N  64deg 41min 17sec W and 10deg 08min 06sec N  64deg 41min 07.5sec W.  It is not clear whether there should be two local datums.,"Ministry of Mines standards manual, 1974.",EPSG,2000-03-07 00:00:00,,0
-9302,Maturin,engineering,Concrete post PR-1 in Plaza Bolivar; Maturin.  9deg 44min 55sec N  63deg 10min 40sec W.,,,,1320,Oil industry mapping.,,"Ministry of Mines standards manual, 1974.",EPSG,2000-06-10 00:00:00,,0
-9303,Maracaibo Cross,engineering,Cruz Canada Morillo in Maracaibo; 10deg 38min 32.328sec N  71deg 37min 12.12sec W  Loma Quintana datum.,,,,1319,Oil industry mapping.,,"Ministry of Mines standards manual, 1974.",EPSG,2000-06-10 00:00:00,,0
-9304,La Rosa,engineering,Monument in La Rosa; 10deg 22min 40.417sec N  71deg 26min 59.488sec W  Loma Quintana datum.,,,,1311,Oil industry mapping.,,"Ministry of Mines standards manual, 1974.",EPSG,2000-06-10 00:00:00,,0
-9305,Mene Grande,engineering,Monument in Santa Barbara; Mene Grande.  9deg 52min 25.488sec N  70deg 54min 35.310sec W.,,,,1270,Oil industry mapping.,,"Ministry of Mines standards manual, 1974.",EPSG,2000-06-10 00:00:00,,0
-9306,El Cubo,engineering,8deg 44min 17.258sec N  72deg 30min 09.01sec W.,,,,1269,Oil industry mapping.,,"Ministry of Mines standards manual, 1974.",EPSG,2000-06-10 00:00:00,,0
-9307,Dabajuro,engineering,Church tower at Dabajuro; 11deg 01min 19sec N  70deg 40min 40sec W.,,,,1268,Oil industry mapping.,,"Ministry of Mines standards manual, 1974.",EPSG,2000-06-10 00:00:00,,0
-9308,Tucupita,engineering,Centre of Plaza Bolivar; Tucupita; 9deg 03min 32sec N  62deg 03min 07.6sec W.,,,,1370,Oil industry mapping.,,"Ministry of Mines standards manual, 1974.",EPSG,2000-06-10 00:00:00,,0
-9309,El Mene,engineering,10deg 04min 49.1sec N  71deg 02min 10sec W.,,,,1270,Oil industry mapping.,,"Ministry of Mines standards manual, 1974.",EPSG,2000-06-10 00:00:00,,0
-9310,Santa Maria de Ipire,engineering,Concrete post PR-1 in Plaza Bolivar; Santa Maria de Ipire; 8deg 40min 06sec N  65deg 19min 09sec W.,,,,1371,Oil industry mapping.,,"Ministry of Mines standards manual, 1974.",EPSG,2000-06-10 00:00:00,,0
-9311,Barinas west base,engineering,Concrete pillar,,,,1267,Oil industry mapping.,,"Ministry of Mines standards manual, 1974.",EPSG,2000-06-10 00:00:00,,0
-9312,EPSG example  X,engineering,Bin grid I=J=1 at WGS 84 / UTM zone 31N 456781E 5836723N.,,,,1263,Example only.,"Bin grid orientation = 20 degrees grid.  Bin width I=25m, J=12.5m.  Bin increment I=1, J=1.  Scale factor at origin 0.99984.
-
-Example only!",UKOOA P6/98 documentation,EPSG,2000-06-23 00:00:00,,0
-9313,EPSG example Platform Y,engineering,Conductor slot A1,,,,1263,Example only.,Example only,EPSG,EPSG,2000-06-23 00:00:00,,0
diff --git a/src/tiff/csv/deprecation.csv b/src/tiff/csv/deprecation.csv
deleted file mode 100644
index 6e131ca..0000000
--- a/src/tiff/csv/deprecation.csv
+++ /dev/null
@@ -1,276 +0,0 @@
-"DEPRECATION_ID","DEPRECATION_DATE","CHANGE_ID","OBJECT_TABLE_NAME","OBJECT_CODE","REPLACED_BY","DEPRECATION_REASON"
-2,2001-08-15 00:00:00,2001.223,Coordinate_Operation,8563,1670,Replaced concatenated tfm with zero step by single tfm.
-3,2001-08-15 00:00:00,2001.222,Coordinate_Operation,8457,1676,Replaced concatenated tfm with zero step by single tfm.
-4,2001-08-15 00:00:00,2001.222,Coordinate_Operation,8236,1675,Replaced concatenated tfm with zero step by single tfm.
-5,2001-08-15 00:00:00,2001.222,Coordinate_Operation,8183,1677,Replaced concatenated tfm with zero step by single tfm.
-6,2001-08-15 00:00:00,2001.222,Coordinate_Operation,8195,1680,Replaced concatenated tfm with zero step by single tfm.
-7,2001-08-15 00:00:00,2001.222,Coordinate_Operation,8199,1679,Replaced concatenated tfm with zero step by single tfm.
-8,2001-08-15 00:00:00,2001.222,Coordinate_Operation,8234,1673,Replaced concatenated tfm with zero step by single tfm.
-9,2001-08-15 00:00:00,2001.222,Coordinate_Operation,8567,1681,Replaced concatenated tfm with zero step by single tfm.
-10,2001-08-15 00:00:00,2001.222,Coordinate_Operation,8572,1672,Replaced concatenated tfm with zero step by single tfm.
-11,2001-08-15 00:00:00,2001.222,Coordinate_Operation,8573,1671,Replaced concatenated tfm with zero step by single tfm.
-12,2001-08-15 00:00:00,2001.222,Coordinate_Operation,8580,1678,Replaced concatenated tfm with zero step by single tfm.
-13,2001-08-15 00:00:00,2001.221,Coordinate_Operation,8396,1665,Replaced concatenated tfm with zero step by single tfm.
-14,2001-08-15 00:00:00,2001.221,Coordinate_Operation,8400,1666,Replaced concatenated tfm with zero step by single tfm.
-15,2001-08-15 00:00:00,2001.221,Coordinate_Operation,8576,1667,Replaced concatenated tfm with zero step by single tfm.
-16,2001-08-15 00:00:00,2001.221,Coordinate_Operation,8577,1668,Replaced concatenated tfm with zero step by single tfm.
-17,2001-08-15 00:00:00,2001.221,Coordinate_Operation,8194,1669,Replaced concatenated tfm with zero step by single tfm.
-18,2001-08-15 00:00:00,2001.221,Coordinate_Operation,8190,1665,Replaced concatenated tfms with zero step by single tfm with 1m accuracy.
-19,2001-08-15 00:00:00,2001.221,Coordinate_Operation,8192,1669,Replaced concatenated tfm with zero step by single tfm with 1m accuracy.
-20,2001-08-15 00:00:00,2001.221,Coordinate_Operation,8398,1667,Replaced concatenated tfm with zero step by single tfm with 1m accuracy.
-21,2001-08-15 00:00:00,2001.221,Coordinate_Operation,8408,1666,Replaced concatenated tfm with zero step by single tfm with 1m accuracy.
-22,2001-08-15 00:00:00,2001.221,Coordinate_Operation,8453,1667,Replaced concatenated tfm with zero step by single tfm with 1m accuracy.
-23,2001-08-15 00:00:00,2001.221,Coordinate_Operation,8454,1668,Replaced concatenated tfm with zero step by single tfm with 1m accuracy.
-24,2001-08-15 00:00:00,2001.221,Coordinate_Operation,8560,1669,Replaced concatenated tfm with zero step by single tfm with 1m accuracy.
-25,2001-08-15 00:00:00,2001.221,Coordinate_Operation,8578,1665,Replaced concatenated tfm with zero step by single tfms with 1m accuracy.
-26,2001-08-15 00:00:00,2001.221,Coordinate_Operation,8579,1669,Replaced concatenated tfm with zero step by single tfm with 1m accuracy.
-27,2001-10-04 00:00:00,2001.121,Coordinate_Operation,1510,1766,NMA has reduced precision with which it quotes parameter values for this tfm.
-28,2001-10-04 00:00:00,2001.45,Coordinate_Operation,14100,15302,Error in parameter values for easting and northing at grid origin.
-29,2001-10-04 00:00:00,2001.45,Coordinate_Operation,11631,15303,Error in parameter value for latitude of 2nd standard parallel.
-30,2001-08-28 00:00:00,2001.37,Coordinate_Operation,1508,1753,Incorrect unit assigned to scale difference parameter value.
-32,2001-06-05 00:00:00,2001.07,Ellipsoid,7035,7047,"Changed from general ""Sphere"" to specific ""GRS 1980 Authalic Sphere""."
-33,2001-06-25 00:00:00,2001.19,Ellipsoid,7047,7048,Incorrect radius (semi-major and semi-minor axes).
-34,2001-06-21 00:00:00,2001.07,Datum,6035,6047,"Name changed to reflect use of specific ""GRS 1980 Authalic Sphere"" rather than general ""Sphere""."
-35,1997-11-13 00:00:00,97.372,Datum,5107,5118,Replace this general name to specific.
-38,,2001.181,Datum,6314,6177,Correction to name spelling.
-39,2001-08-28 00:00:00,2001.32,Coordinate Reference System,2156,2195,ProjCRS 2156 invalid as linked to projection in wrong hemisphere and has wrong name.
-40,2001-08-28 00:00:00,2001.32,Coordinate_Operation,15300,15301,Longitude of natural origin has incorrect value (wrong hemisphere).
-41,2001-08-28 00:00:00,2001.3,Coordinate Reference System,2291,2292,Source geogCRS code is in error.
-42,2001-06-05 00:00:00,2001.07,Coordinate Reference System,4035,4047,"Changed from general ""Sphere"" to specific ""GRS 1980 Authalic Sphere""."
-43,2001-08-28 00:00:00,2001.47,Datum,6226,6142,Does not exist except as an alias of 6142 and 6143.
-44,2001-06-05 00:00:00,2001.11,Coordinate Reference System,4226,4142,Does not exist except as an alias of 4142 and 4143.
-45,2001-06-05 00:00:00,2001.181,Coordinate Reference System,31461,,ProjCRS zone not used.
-46,2001-06-05 00:00:00,2001.181,Coordinate Reference System,31462,31466,ProjCRS related to inappropriate coordinate system resulting in incorrect axes and name.
-47,2001-06-05 00:00:00,2001.181,Coordinate Reference System,31463,31467,ProjCRS related to inappropriate coordinate system resulting in incorrect axes and name.
-48,2001-06-05 00:00:00,2001.181,Coordinate Reference System,31464,31468,ProjCRS related to inappropriate coordinate system resulting in incorrect axes and name.
-49,2001-06-05 00:00:00,2001.181,Coordinate Reference System,31465,31469,ProjCRS related to inappropriate coordinate system resulting in incorrect axes and name.
-50,2001-06-05 00:00:00,2001.18,Coordinate Reference System,31265,31275,ProjCRS related to inappropriate projection (coordinate operation) and CS resulting in incorrect scale factor and axes order and abbreviation.
-51,2001-06-05 00:00:00,2001.18,Coordinate Reference System,31266,31276,ProjCRS related to inappropriate projection (coordinate operation) and CS resulting in incorrect scale factor and axes order and abbreviation.
-52,2001-08-15 00:00:00,2001.227,Coordinate_Operation,8564,1691,Replaced concatenated tfm with zero step by single tfm.
-53,2001-08-15 00:00:00,2001.227,Coordinate_Operation,8404,1692,Replaced concatenated tfm with zero step by single tfm.
-54,2001-08-15 00:00:00,2001.227,Coordinate_Operation,8565,1692,Replaced concatenated tfm with zero step by single tfm.
-55,2001-08-15 00:00:00,2001.227,Coordinate_Operation,8243,1693,Replaced concatenated tfm with zero step by single tfm.
-56,2001-08-15 00:00:00,2001.227,Coordinate_Operation,8245,1693,Replaced concatenated tfm with zero step by single tfm.
-57,2001-08-15 00:00:00,2001.227,Coordinate_Operation,8574,1694,Replaced concatenated tfm with zero step by single tfm.
-58,2001-08-15 00:00:00,2001.227,Coordinate_Operation,8575,1695,Replaced concatenated tfm with zero step by single tfm.
-59,2001-08-15 00:00:00,2001.227,Coordinate_Operation,8566,1696,Replaced concatenated tfm with zero step by single tfm.
-60,2001-08-15 00:00:00,2001.227,Coordinate_Operation,8421,1697,Replaced concatenated tfm with zero step by single tfm.
-61,2001-08-15 00:00:00,2001.227,Coordinate_Operation,8388,1698,Replaced concatenated tfm with zero step by single tfm.
-62,2001-08-15 00:00:00,2001.227,Coordinate_Operation,8390,1699,Replaced concatenated tfm with zero step by single tfm.
-63,2001-08-15 00:00:00,2001.227,Coordinate_Operation,8392,1700,Replaced concatenated tfm with zero step by single tfm.
-64,2001-08-15 00:00:00,2001.227,Coordinate_Operation,8422,1702,Replaced concatenated tfm with zero step by single tfm.
-65,2001-08-15 00:00:00,2001.226,Coordinate_Operation,8215,1683,Replaced concatenated tfm with zero step by single tfm.
-66,2001-08-15 00:00:00,2001.226,Coordinate_Operation,8217,1684,Replaced concatenated tfm with zero step by single tfm.
-67,2001-08-15 00:00:00,2001.226,Coordinate_Operation,8219,1685,Replaced concatenated tfm with zero step by single tfm.
-68,2001-08-15 00:00:00,2001.226,Coordinate_Operation,8221,1686,Replaced concatenated tfm with zero step by single tfm.
-69,2001-08-15 00:00:00,2001.226,Coordinate_Operation,8223,1687,Replaced concatenated tfm with zero step by single tfm.
-70,2001-08-15 00:00:00,2001.225,Coordinate_Operation,8530,1682,Replaced concatenated tfm with zero step by single tfm.
-71,2001-06-05 00:00:00,2001.18,Coordinate Reference System,31267,31277,ProjCRS related to inappropriate projection (coordinate operation) and CS resulting in incorrect scale factor and axes order and abbreviation.
-72,2001-06-05 00:00:00,2001.18,Coordinate Reference System,31268,31278,ProjCRS related to inappropriate projection (coordinate operation) and CS resulting in incorrect scale factor and axes order and abbreviation.
-73,2001-08-28 00:00:00,2001.31,Coordinate Reference System,31278,31279,ProjCRS related to incorrect projection.
-74,2001-06-05 00:00:00,2001.182,Coordinate Reference System,31291,31281,ProjCRS related to inappropriate coordinate system resulting in incorrect axes.
-75,2001-06-05 00:00:00,2001.182,Coordinate Reference System,31292,31282,ProjCRS related to inappropriate coordinate system resulting in incorrect axes.
-76,2001-06-05 00:00:00,2001.182,Coordinate Reference System,31293,31283,ProjCRS related to inappropriate coordinate system resulting in incorrect axes.
-77,2001-06-05 00:00:00,2001.182,Coordinate Reference System,31294,31284,ProjCRS related to inappropriate coordinate system resulting in incorrect axes.
-78,2001-06-05 00:00:00,2001.182,Coordinate Reference System,31295,31285,ProjCRS related to inappropriate coordinate system resulting in incorrect axes.
-79,2001-06-05 00:00:00,2001.182,Coordinate Reference System,31296,31286,ProjCRS related to inappropriate coordinate system resulting in incorrect axes.
-80,2001-06-05 00:00:00,2001.182,Coordinate Reference System,31297,31287,ProjCRS related to inappropriate coordinate system resulting in incorrect axes.
-81,2001-06-05 00:00:00,2001.183,Coordinate_Operation,1471,1618,Error in signs of all transformation parameter values and for scale factor also incorrect units.
-82,2001-08-15 00:00:00,2001.122,Coordinate_Operation,1310,1674,Change of source CRS.
-83,2001-08-28 00:00:00,2001.4,Coordinate_Operation,8497,,Invalid concatenation: area of use of steps 1 and 2 do not overlap.
-84,2001-10-04 00:00:00,2001.39,Coordinate_Operation,1258,1755,Correction to name.
-85,2001-10-04 00:00:00,2001.39,Coordinate_Operation,1259,1756,Correction to name.
-86,2001-10-04 00:00:00,2001.39,Coordinate_Operation,1261,1757,Correction to name.
-87,2001-10-04 00:00:00,2001.39,Coordinate_Operation,1263,1758,Correction to name.
-88,2001-10-04 00:00:00,2001.39,Coordinate_Operation,1268,1759,Correction to name.
-89,2001-10-04 00:00:00,2001.39,Coordinate_Operation,1269,1760,Correction to name.
-90,2001-10-04 00:00:00,2001.39,Coordinate_Operation,1270,1761,Correction to name.
-91,2001-10-04 00:00:00,2001.39,Coordinate_Operation,1466,1762,Correction to name.
-92,2001-10-04 00:00:00,2001.39,Coordinate_Operation,1467,1763,Correction to name.
-93,2001-10-04 00:00:00,2001.39,Coordinate_Operation,1468,1764,Correction to name.
-94,2001-10-04 00:00:00,2001.39,Coordinate_Operation,1519,1765,Correction to name.
-95,2001-08-28 00:00:00,2001.38,Coordinate_Operation,1534,1754,Incorrect unit assigned to scale difference parameter value.
-96,2001-08-28 00:00:00,2001.35,Coordinate_Operation,1602,1752,Incorrect source geogCRS code assigned.
-97,2001-08-28 00:00:00,2001.34,Coordinate_Operation,1571,1751,Incorrect source and target geogCRS codes assigned.
-98,2001-08-28 00:00:00,2001.23,Coordinate_Operation,1567,1701,Incorrect parameter value for z-axis rotation.
-99,2001-08-15 00:00:00,2001.228,Coordinate_Operation,8386,8582,Changed second step from zero to HARN.
-100,2001-08-15 00:00:00,2001.228,Coordinate_Operation,8402,8583,Changed second step from zero to HARN.
-101,2001-08-15 00:00:00,2001.227,Coordinate_Operation,8418,1688,Replaced concatenated tfm with zero step by single tfm.
-102,2001-08-15 00:00:00,2001.227,Coordinate_Operation,8419,1689,Replaced concatenated tfm with zero step by single tfm.
-103,2001-08-15 00:00:00,2001.227,Coordinate_Operation,8406,1690,Replaced concatenated tfm with zero step by single tfm.
-104,2001-08-15 00:00:00,2001.227,Coordinate_Operation,8394,1691,Replaced concatenated tfm with zero step by single tfm.
-105,2001-11-06 00:00:00,2001.48,Coordinate_Operation,19908,19972,Change name.
-106,2001-08-28 00:00:00,2001.48,Coordinate Reference System,29900,29902,Change name.
-107,2001-06-05 00:00:00,2001.181,Area,1628,,Invalid area - country does not extend into this longitude range..
-108,2001-08-15 00:00:00,2001.227,Coordinate_Operation,8420,1703,Replaced concatenated tfm with zero step by single tfm.
-109,2001-08-28 00:00:00,2001.32,Coordinate Reference System,2155,2194,Dependent upon deprecated coordinate operation 15300.
-112,2001-08-15 00:00:00,2001.221,Coordinate_Operation,8190,1666,Replaced concatenated tfms with zero step by single tfm with 1m accuracy.
-117,1997-11-13 00:00:00,97.372,Datum,5107,5120,Replace this general name to specific.
-135,2001-08-15 00:00:00,2001.221,Coordinate_Operation,8190,1667,Replaced concatenated tfms with zero step by single tfm with 1m accuracy.
-142,2001-08-15 00:00:00,2001.221,Coordinate_Operation,8578,1666,Replaced concatenated tfm with zero step by single tfms with 1m accuracy.
-160,2001-08-28 00:00:00,2001.47,Datum,6226,6143,Does not exist except as an alias of 6142 and 6143.
-161,2001-06-05 00:00:00,2001.11,Coordinate Reference System,4226,4143,Does not exist except as an alias of 4142 and 4143.
-229,2001-08-15 00:00:00,2001.221,Coordinate_Operation,8190,1668,Replaced concatenated tfms with zero step by single tfm with 1m accuracy.
-233,1997-11-13 00:00:00,97.372,Datum,5107,5119,Replace this general name to specific.
-237,2001-11-06 00:00:00,2001.53,Datum,6172,6190,Original name POSGAR is ambiguous given 1994 and 1998 adjustments.
-240,2001-11-06 00:00:00,2001.53,Coordinate Reference System,4172,4190,Original name POSGAR is ambiguous given 1994 and 1998 adjustments.
-242,2001-11-06 00:00:00,2001.53,Coordinate_Operation,1598,1773,Dependent upon deprecated source CRS 4172.
-244,2001-11-06 00:00:00,2001.54,Coordinate Reference System,27581,27571,Changed projCRS name.
-245,2001-11-06 00:00:00,2001.54,Coordinate Reference System,27582,27572,Changed projCRS name.
-246,2001-11-06 00:00:00,2001.54,Coordinate Reference System,27583,27573,Changed projCRS name.
-247,2001-11-06 00:00:00,2001.54,Coordinate Reference System,27584,27574,Changed projCRS name.
-248,2001-11-06 00:00:00,2001.54,Coordinate Reference System,27591,27561,Changed projCRS name.
-249,2001-11-06 00:00:00,2001.54,Coordinate Reference System,27592,27562,Changed projCRS name.
-250,2001-11-06 00:00:00,2001.54,Coordinate Reference System,27593,27563,Changed projCRS name.
-251,2001-11-06 00:00:00,2001.54,Coordinate Reference System,27594,27564,Changed projCRS name.
-260,2001-11-06 00:00:00,2001.54,Coordinate Reference System,7401,7411,Dependent projCRS name changed.
-261,2001-11-06 00:00:00,2001.54,Coordinate Reference System,7402,7412,Dependent projCRS name changed.
-262,2001-11-06 00:00:00,2001.54,Coordinate Reference System,7403,7413,Dependent projCRS name changed.
-266,2001-01-21 00:00:00,2001.15,Ellipsoid,7006,7046,Change of axis unit from International metre to German Legal Metre to reflect local usage.
-268,2001-11-06 00:00:00,2001.45,Coordinate Reference System,32036,2204,Dependent map projection 11631 in error.
-270,2001-11-06 00:00:00,2001.45,Coordinate Reference System,26979,2205,Dependent map projection 14100 in error.
-272,2002-01-18 00:00:00,2001.03,Coordinate_Operation,1656,,EPSG copy of ITRF transformation superseded by tfm code 1791.
-273,2002-01-18 00:00:00,2001.03,Coordinate_Operation,1658,,EPSG copy of ITRF transformation superseded by tfm code 1793.
-274,2002-01-18 00:00:00,2002.01,Datum,6228,6192,Incorrect ellipsoid attached.
-276,2002-01-18 00:00:00,2002.01,Datum,6260,6193,Incorrect ellipsoid attached.
-278,2002-01-18 00:00:00,2002.01,Coordinate Reference System,4228,4192,Dependent datum 6228 in error.
-280,2002-01-18 00:00:00,2002.01,Coordinate Reference System,4260,4193,Dependent datum 6260 in error.
-282,2002-01-18 00:00:00,2002.01,Coordinate Reference System,22832,2214,Dependent geogCRS 4228 deprecated due to datum error.
-285,2002-01-18 00:00:00,2001.17,Datum,6287,6194,Change of name.
-287,2002-01-18 00:00:00,2001.17,Coordinate Reference System,4287,4194,Change of name (adjustment date added).
-288,2002-01-18 00:00:00,2001.17,Coordinate_Operation,1211,1797,Dependent source CRS name changed.
-289,2002-02-12 00:00:00,2002.06,Coordinate_Operation,1559,1593,8-bit binary grid file format inconsistent with NTv2 16-bit format.
-290,2002-02-12 00:00:00,2002.01,Datum,6234,6197,Incorrect ellipsoid attached.
-291,2002-02-12 00:00:00,2002.21,Coordinate Reference System,32074,32064,Change name to include unit abbreviation per US State Plane CRSs.
-294,2002-02-12 00:00:00,2002.21,Coordinate Reference System,32075,32065,Change name to include unit abbreviation per US State Plane CRSs.
-295,2002-02-12 00:00:00,2002.21,Coordinate Reference System,32076,32066,Change name to include unit abbreviation per US State Plane CRSs.
-296,2002-02-12 00:00:00,2002.21,Coordinate Reference System,32077,32067,Change name to include unit abbreviation per US State Plane CRSs.
-297,2002-03-15 00:00:00,2002.29,Coordinate_Operation,1819,1754,Duplication of data already given in transformation 1754.
-298,2002-06-22 00:00:00,2002.16,Coordinate Reference System,5704,5736,Change of name following readjustment.
-299,2002-06-22 00:00:00,2002.16,Coordinate Reference System,21473,21453,Change of CRS name to indicate longitude of origin.
-300,2002-06-22 00:00:00,2002.16,Coordinate Reference System,21474,21454,Change of CRS name to indicate longitude of origin.
-301,2002-06-22 00:00:00,2002.16,Coordinate Reference System,21475,21455,Change of CRS name to indicate longitude of origin.
-302,2002-06-22 00:00:00,2002.16,Coordinate Reference System,21476,21456,Change of CRS name to indicate longitude of origin.
-303,2002-06-22 00:00:00,2002.16,Coordinate Reference System,21477,21457,Change of CRS name to indicate longitude of origin.
-304,2002-06-22 00:00:00,2002.16,Coordinate Reference System,21478,21458,Change of CRS name to indicate longitude of origin.
-305,2002-06-22 00:00:00,2002.16,Coordinate Reference System,21479,21459,Change of CRS name to indicate longitude of origin.
-306,2002-06-22 00:00:00,2002.16,Coordinate Reference System,21480,21460,Change of CRS name to indicate longitude of origin.
-307,2002-06-22 00:00:00,2002.16,Coordinate Reference System,21481,21461,Change of CRS name to indicate longitude of origin.
-308,2002-06-22 00:00:00,2002.16,Coordinate Reference System,21482,21462,Change of CRS name to indicate longitude of origin.
-309,2002-06-22 00:00:00,2002.16,Coordinate Reference System,21483,21463,Change of CRS name to indicate longitude of origin.
-311,2002-06-22 00:00:00,2002.36,Coordinate Reference System,2199,2462,Added hyphen to Gauss-Kruger in CRS name.
-312,2002-06-22 00:00:00,2002.36,Coordinate Reference System,2166,2397,Added hyphen to Gauss-Kruger in CRS name.
-313,2002-06-22 00:00:00,2002.36,Coordinate Reference System,2167,2398,Added hyphen to Gauss-Kruger in CRS name.
-314,2002-06-22 00:00:00,2002.36,Coordinate Reference System,2168,2399,Added hyphen to Gauss-Kruger in CRS name.
-315,2002-06-22 00:00:00,2002.36,Coordinate Reference System,2091,2395,Added hyphen to Gauss-Kruger in CRS name.
-316,2002-06-22 00:00:00,2002.36,Coordinate Reference System,2092,2396,Added hyphen to Gauss-Kruger in CRS name.
-317,2002-06-22 00:00:00,2002.36,Coordinate Reference System,20092,2491,Change of CRS name to indicate longitude of origin.
-318,2002-06-22 00:00:00,2002.36,Coordinate Reference System,20091,2490,Change of CRS name to indicate longitude of origin.
-319,2002-06-22 00:00:00,2002.36,Coordinate Reference System,20090,2489,Change of CRS name to indicate longitude of origin.
-320,2002-06-22 00:00:00,2002.36,Coordinate Reference System,20089,2488,Change of CRS name to indicate longitude of origin.
-321,2002-06-22 00:00:00,2002.36,Coordinate Reference System,20088,2487,Change of CRS name to indicate longitude of origin.
-322,2002-06-22 00:00:00,2002.36,Coordinate Reference System,20087,2486,Change of CRS name to indicate longitude of origin.
-323,2002-06-22 00:00:00,2002.36,Coordinate Reference System,20086,2485,Change of CRS name to indicate longitude of origin.
-324,2002-06-22 00:00:00,2002.36,Coordinate Reference System,20085,2484,Change of CRS name to indicate longitude of origin.
-325,2002-06-22 00:00:00,2002.36,Coordinate Reference System,20084,2483,Change of CRS name to indicate longitude of origin.
-326,2002-06-22 00:00:00,2002.36,Coordinate Reference System,20083,2482,Change of CRS name to indicate longitude of origin.
-327,2002-06-22 00:00:00,2002.36,Coordinate Reference System,20082,2481,Change of CRS name to indicate longitude of origin.
-328,2002-06-22 00:00:00,2002.36,Coordinate Reference System,20081,2480,Change of CRS name to indicate longitude of origin.
-329,2002-06-22 00:00:00,2002.36,Coordinate Reference System,20080,2479,Change of CRS name to indicate longitude of origin.
-330,2002-06-22 00:00:00,2002.36,Coordinate Reference System,20079,2478,Change of CRS name to indicate longitude of origin.
-331,2002-06-22 00:00:00,2002.36,Coordinate Reference System,20078,2477,Change of CRS name to indicate longitude of origin.
-332,2002-06-22 00:00:00,2002.36,Coordinate Reference System,20077,2476,Change of CRS name to indicate longitude of origin.
-333,2002-06-22 00:00:00,2002.36,Coordinate Reference System,20076,2475,Change of CRS name to indicate longitude of origin.
-334,2002-06-22 00:00:00,2002.36,Coordinate Reference System,20075,2474,Change of CRS name to indicate longitude of origin.
-335,2002-06-22 00:00:00,2002.36,Coordinate Reference System,20074,2473,Change of CRS name to indicate longitude of origin.
-336,2002-06-22 00:00:00,2002.36,Coordinate Reference System,20073,2472,Change of CRS name to indicate longitude of origin.
-337,2002-06-22 00:00:00,2002.36,Coordinate Reference System,20072,2471,Change of CRS name to indicate longitude of origin.
-338,2002-06-22 00:00:00,2002.36,Coordinate Reference System,20071,2470,Change of CRS name to indicate longitude of origin.
-339,2002-06-22 00:00:00,2002.36,Coordinate Reference System,20070,2469,Change of CRS name to indicate longitude of origin.
-340,2002-06-22 00:00:00,2002.36,Coordinate Reference System,20069,2468,Change of CRS name to indicate longitude of origin.
-341,2002-06-22 00:00:00,2002.36,Coordinate Reference System,20068,2467,Change of CRS name to indicate longitude of origin.
-342,2002-06-22 00:00:00,2002.36,Coordinate Reference System,20067,2466,Change of CRS name to indicate longitude of origin.
-343,2002-06-22 00:00:00,2002.36,Coordinate Reference System,20066,2465,Change of CRS name to indicate longitude of origin.
-344,2002-06-22 00:00:00,2002.36,Coordinate Reference System,20065,2464,Change of CRS name to indicate longitude of origin.
-345,2002-06-22 00:00:00,2002.36,Coordinate Reference System,20064,2463,Change of CRS name to indicate longitude of origin.
-346,2002-06-22 00:00:00,2002.36,Coordinate Reference System,28462,2492,Change of CRS name to indicate longitude of origin.
-347,2002-06-22 00:00:00,2002.36,Coordinate Reference System,28463,2493,Change of CRS name to indicate longitude of origin.
-348,2002-06-22 00:00:00,2002.36,Coordinate Reference System,28464,2494,Change of CRS name to indicate longitude of origin.
-349,2002-06-22 00:00:00,2002.36,Coordinate Reference System,28465,2495,Change of CRS name to indicate longitude of origin.
-350,2002-06-22 00:00:00,2002.36,Coordinate Reference System,28466,2496,Change of CRS name to indicate longitude of origin.
-351,2002-06-22 00:00:00,2002.36,Coordinate Reference System,28467,2497,Change of CRS name to indicate longitude of origin.
-352,2002-06-22 00:00:00,2002.36,Coordinate Reference System,28468,2498,Change of CRS name to indicate longitude of origin.
-353,2002-06-22 00:00:00,2002.36,Coordinate Reference System,28469,2499,Change of CRS name to indicate longitude of origin.
-354,2002-06-22 00:00:00,2002.36,Coordinate Reference System,28470,2500,Change of CRS name to indicate longitude of origin.
-355,2002-06-22 00:00:00,2002.36,Coordinate Reference System,28471,2501,Change of CRS name to indicate longitude of origin.
-356,2002-06-22 00:00:00,2002.36,Coordinate Reference System,28472,2502,Change of CRS name to indicate longitude of origin.
-357,2002-06-22 00:00:00,2002.36,Coordinate Reference System,28473,2503,Change of CRS name to indicate longitude of origin.
-358,2002-06-22 00:00:00,2002.36,Coordinate Reference System,28474,2504,Change of CRS name to indicate longitude of origin.
-359,2002-06-22 00:00:00,2002.36,Coordinate Reference System,28475,2505,Change of CRS name to indicate longitude of origin.
-360,2002-06-22 00:00:00,2002.36,Coordinate Reference System,28476,2506,Change of CRS name to indicate longitude of origin.
-361,2002-06-22 00:00:00,2002.36,Coordinate Reference System,28477,2507,Change of CRS name to indicate longitude of origin.
-362,2002-06-22 00:00:00,2002.36,Coordinate Reference System,28478,2508,Change of CRS name to indicate longitude of origin.
-363,2002-06-22 00:00:00,2002.36,Coordinate Reference System,28479,2509,Change of CRS name to indicate longitude of origin.
-364,2002-06-22 00:00:00,2002.36,Coordinate Reference System,28480,2510,Change of CRS name to indicate longitude of origin.
-365,2002-06-22 00:00:00,2002.36,Coordinate Reference System,28481,2511,Change of CRS name to indicate longitude of origin.
-366,2002-06-22 00:00:00,2002.36,Coordinate Reference System,28482,2512,Change of CRS name to indicate longitude of origin.
-367,2002-06-22 00:00:00,2002.36,Coordinate Reference System,28483,2513,Change of CRS name to indicate longitude of origin.
-368,2002-06-22 00:00:00,2002.36,Coordinate Reference System,28484,2514,Change of CRS name to indicate longitude of origin.
-369,2002-06-22 00:00:00,2002.36,Coordinate Reference System,28485,2515,Change of CRS name to indicate longitude of origin.
-370,2002-06-22 00:00:00,2002.36,Coordinate Reference System,28486,2516,Change of CRS name to indicate longitude of origin.
-371,2002-06-22 00:00:00,2002.36,Coordinate Reference System,28487,2517,Change of CRS name to indicate longitude of origin.
-372,2002-06-22 00:00:00,2002.36,Coordinate Reference System,28488,2518,Change of CRS name to indicate longitude of origin.
-373,2002-06-22 00:00:00,2002.36,Coordinate Reference System,28489,2519,Change of CRS name to indicate longitude of origin.
-374,2002-06-22 00:00:00,2002.36,Coordinate Reference System,28490,2520,Change of CRS name to indicate longitude of origin.
-375,2002-06-22 00:00:00,2002.36,Coordinate Reference System,28491,2521,Change of CRS name to indicate longitude of origin.
-376,2002-06-22 00:00:00,2002.36,Coordinate Reference System,28492,2522,Change of CRS name to indicate longitude of origin.
-377,2002-06-22 00:00:00,2002.32,Coordinate_Operation,1316,1796,Change of source CRS name.
-378,2002-06-22 00:00:00,2002.4,Coordinate_Operation,1335,1827,Incorrect unit for latitude offset.
-379,2002-06-22 00:00:00,2002.37,Coordinate_Operation,1273,1829,Incorrect sign of transformation parameter values for direction of transformation.
-380,2002-06-22 00:00:00,2002.37,Coordinate_Operation,1677,1830,Error in in sign of dX relative to source transformation 1273. Incorrect sign of transformation parameter values (other than dX) for direction of transformation.
-381,2002-06-22 00:00:00,2002.151,Datum,6294,6613,Change of spelling of name.
-382,2002-06-22 00:00:00,2002.151,Coordinate Reference System,4294,4613,Change of spelling of name.
-383,2002-06-22 00:00:00,2002.151,Coordinate_Operation,1286,1834,Change of spelling of name of source CRS.
-384,2002-06-22 00:00:00,2002.151,Datum,6125,6613,Not a self-standing datum but an extension of the Segara datum.
-385,2002-06-22 00:00:00,2002.151,Coordinate Reference System,4125,4613,Samboja is not a separate geogCRS but an extension of the Segara CRS.
-386,2002-06-22 00:00:00,2002.151,Coordinate_Operation,1282,1838,Change of name of source CRS
-387,2002-06-22 00:00:00,2002.151,Coordinate Reference System,2550,2933,Change name of source geogCRS.
-388,2002-07-13 00:00:00,2002.25,Datum,6185,6615,Information from Portugal suggests EuroGeographics information is incomplete.
-389,2002-07-13 00:00:00,2002.25,Datum,6185,6616,Information from Portugal suggests EuroGeographics information is incomplete.
-390,2002-07-13 00:00:00,2002.25,Coordinate Reference System,4185,4615,Information from Portugal suggests EuroGeographics information is incomplete.
-391,2002-07-13 00:00:00,2002.25,Coordinate Reference System,4185,4616,Information from Portugal suggests EuroGeographics information is incomplete.
-392,2002-07-13 00:00:00,2002.25,Coordinate Reference System,2191,2942,Information from Portugal suggests EuroGeographics information is incomplete.
-393,2002-07-13 00:00:00,2002.25,Coordinate Reference System,2191,2943,Information from Portugal suggests EuroGeographics information is incomplete.
-394,2002-07-13 00:00:00,2002.41,Coordinate_Operation,1473,1842,Change of Source CRS name
-395,2002-07-13 00:00:00,2002.41,Coordinate_Operation,1472,1841,Change in Target CRS name.
-396,2002-07-13 00:00:00,2002.41,Coordinate_Operation,1599,1846,Change in Target CRS name.
-397,2002-07-13 00:00:00,2002.41,Coordinate_Operation,1574,1844,Change in Target CRS name.
-398,2002-07-13 00:00:00,2002.41,Coordinate_Operation,1600,1847,Change in Target CRS name.
-399,2002-07-13 00:00:00,2002.41,Coordinate_Operation,8584,8635,Change in Target CRS name.
-400,2002-07-13 00:00:00,2002.41,Coordinate_Operation,1576,1845,Change in Target CRS name.
-401,2002-07-13 00:00:00,2002.41,Coordinate_Operation,1572,1843,Change in Target CRS name.
-402,2002-07-13 00:00:00,2002.41,Coordinate_Operation,1601,1848,Change in Target CRS name.
-403,2002-07-13 00:00:00,2002.41,Coordinate_Operation,1752,1849,Change in Target CRS name.
-404,2002-07-13 00:00:00,2002.41,Coordinate Reference System,4140,4617,Change of CRS name to accord with revised Geomatics Canada practice.
-405,2002-07-13 00:00:00,2002.41,Coordinate Reference System,2147,2952,Change of geogCRS name to accord with revised Geomatics Canada practice.
-406,2002-07-13 00:00:00,2002.41,Coordinate Reference System,2140,2945,Change of geogCRS name to accord with revised Geomatics Canada practice.
-407,2002-07-13 00:00:00,2002.41,Coordinate Reference System,2141,2946,Change of geogCRS name to accord with revised Geomatics Canada practice.
-408,2002-07-13 00:00:00,2002.41,Coordinate Reference System,2142,2947,Change of geogCRS name to accord with revised Geomatics Canada practice.
-409,2002-07-13 00:00:00,2002.41,Coordinate Reference System,2143,2948,Change of geogCRS name to accord with revised Geomatics Canada practice.
-410,2002-07-13 00:00:00,2002.41,Coordinate Reference System,2144,2949,Change of geogCRS name to accord with revised Geomatics Canada practice.
-411,2002-07-13 00:00:00,2002.41,Coordinate Reference System,2145,2950,Change of geogCRS name to accord with revised Geomatics Canada practice.
-412,2002-07-13 00:00:00,2002.41,Coordinate Reference System,2146,2951,Change of geogCRS name to accord with revised Geomatics Canada practice.
-413,2002-07-13 00:00:00,2002.41,Coordinate Reference System,2036,2953,Change of geogCRS name to accord with revised Geomatics Canada practice.
-414,2002-07-13 00:00:00,2002.41,Coordinate Reference System,2292,2954,Change of geogCRS name to accord with revised Geomatics Canada practice.
-415,2002-07-13 00:00:00,2002.41,Coordinate Reference System,2139,2944,Change of geogCRS name to accord with revised Geomatics Canada practice.
-416,2002-07-13 00:00:00,2002.41,Coordinate Reference System,2153,2955,Change of geogCRS name to accord with revised Geomatics Canada practice.
-417,2002-07-13 00:00:00,2002.41,Coordinate Reference System,2152,2956,Change of geogCRS name to accord with revised Geomatics Canada practice.
-418,2002-07-13 00:00:00,2002.41,Coordinate Reference System,2151,2957,Change of geogCRS name to accord with revised Geomatics Canada practice.
-419,2002-07-13 00:00:00,2002.41,Coordinate Reference System,2150,2958,Change of geogCRS name to accord with revised Geomatics Canada practice.
-420,2002-07-13 00:00:00,2002.41,Coordinate Reference System,2149,2959,Change of geogCRS name to accord with revised Geomatics Canada practice.
-421,2002-07-13 00:00:00,2002.41,Coordinate Reference System,2037,2960,Change of geogCRS name to accord with revised Geomatics Canada practice.
-422,2002-07-13 00:00:00,2002.41,Coordinate Reference System,2038,2961,Change of geogCRS name to accord with revised Geomatics Canada practice.
-423,2002-07-13 00:00:00,2002.41,Coordinate Reference System,2148,2962,Change of geogCRS name to accord with revised Geomatics Canada practice.
-424,2002-02-12 00:00:00,2002.01,Coordinate Reference System,4234,4197,Dependent datum 6228 deprecated due to ellipsoid error.
-425,2002-02-12 00:00:00,2002.01,Coordinate Reference System,23433,2312,Dependent geogCRS 4234 deprecated due to ellipsoid error.
-426,2002-07-13 00:00:00,2002.41,Area,1336,2784,Expansion of area of use.
diff --git a/src/tiff/csv/ellips_alias.c b/src/tiff/csv/ellips_alias.c
deleted file mode 100644
index 67dca2f..0000000
--- a/src/tiff/csv/ellips_alias.c
+++ /dev/null
@@ -1,10 +0,0 @@
-#include "defs.h"
-datafile_rows_t ellips_alias_row_1[] = {"ELLIPSOID_ALIAS_CODE","ELLIPSOID_ALIAS_NAME","ELLIPSOID_CODE","REVISION_DATE","INFORMATION_SOURCE","DATA_SOURCE","REMARKS","CHANGE_ID",NULL};
-datafile_rows_t ellips_alias_row_2[] = {"7023","International 1967","7036","1996-10-18 00:00:00","","EPSG","Adopted by IUGG 1967 Lucerne. Inverse flattening defined to 2 d.p.  More usually known as GRS 1967 to avoid confusion with the International 1924 figure.","96.09",NULL};
-datafile_rows_t ellips_alias_row_3[] = {"7026","NWL 10D","7043","1999-04-22 00:00:00","","EPSG","Used by Transit Broadcast Ephemeris before 1989. Also referred to as WGS72 spheroid.","99.03",NULL};
-datafile_rows_t ellips_alias_row_4[] = {"7037","Clarke Modified 1880","7012","1996-10-18 00:00:00","","EPSG","The Clarke 1880 (RGS) figure is one of several modifications to the original definition.  The name Clarke Modified is usually taken to be the RGS modification.","",NULL};
-datafile_rows_t ellips_alias_row_5[] = {"7038","International 1979","7019","1996-10-18 00:00:00","","EPSG","Adopted by IUGG 1979 Canberra as the Geodetic Reference Spheroid of 1980 (GRS 1980).","",NULL};
-datafile_rows_t ellips_alias_row_6[] = {"7039","Hayford 1909","7022","1996-10-18 00:00:00","\"Ellipsoidisch Parameter der Erdfigur (1800-1950)\" by Georg Strasser","EPSG","Described as a=6378388 m. and b=6356909 m. from which 1/f derived to be 296.95926...   The figure was adopted as the International ellipsoid in 1924 but with 1/f taken as 297 exactly from which b is derved as 6356911.946 m.","",NULL};
-datafile_rows_t ellips_alias_row_7[] = {"7040","WGS84","7030","1996-10-18 00:00:00","","EPSG","","",NULL};
-
-datafile_rows_t *ellips_alias_rows[] = {ellips_alias_row_1,ellips_alias_row_2,ellips_alias_row_3,ellips_alias_row_4,ellips_alias_row_5,ellips_alias_row_6,ellips_alias_row_7,NULL};
diff --git a/src/tiff/csv/ellips_alias.csv b/src/tiff/csv/ellips_alias.csv
deleted file mode 100644
index 82fab08..0000000
--- a/src/tiff/csv/ellips_alias.csv
+++ /dev/null
@@ -1,7 +0,0 @@
-"ELLIPSOID_ALIAS_CODE","ELLIPSOID_ALIAS_NAME","ELLIPSOID_CODE","REVISION_DATE","INFORMATION_SOURCE","DATA_SOURCE","REMARKS","CHANGE_ID"
-7023,International 1967,7036,1996-10-18 00:00:00,,EPSG,Adopted by IUGG 1967 Lucerne. Inverse flattening defined to 2 d.p.  More usually known as GRS 1967 to avoid confusion with the International 1924 figure.,96.09
-7026,NWL 10D,7043,1999-04-22 00:00:00,,EPSG,Used by Transit Broadcast Ephemeris before 1989. Also referred to as WGS72 spheroid.,99.03
-7037,Clarke Modified 1880,7012,1996-10-18 00:00:00,,EPSG,The Clarke 1880 (RGS) figure is one of several modifications to the original definition.  The name Clarke Modified is usually taken to be the RGS modification.,
-7038,International 1979,7019,1996-10-18 00:00:00,,EPSG,Adopted by IUGG 1979 Canberra as the Geodetic Reference Spheroid of 1980 (GRS 1980).,
-7039,Hayford 1909,7022,1996-10-18 00:00:00,"\"Ellipsoidisch Parameter der Erdfigur (1800-1950)\" by Georg Strasser",EPSG,Described as a=6378388 m. and b=6356909 m. from which 1/f derived to be 296.95926...   The figure was adopted as the International ellipsoid in 1924 but with 1/f taken as 297 exactly from which b is derved as 6356911.946 m.,
-7040,WGS84,7030,1996-10-18 00:00:00,,EPSG,,
diff --git a/src/tiff/csv/ellipsoid.c b/src/tiff/csv/ellipsoid.c
deleted file mode 100644
index 0700f4b..0000000
--- a/src/tiff/csv/ellipsoid.c
+++ /dev/null
@@ -1,42 +0,0 @@
-#include "defs.h"
-datafile_rows_t ellipsoid_row_1[] = {"ELLIPSOID_CODE","ELLIPSOID_EPSG_NAME","ELLIPSOID_USER_NAME","SEMI_MAJOR_AXIS","UOM_LENGTH_CODE","INV_FLATTENING","SEMI_MINOR_AXIS","REVISION_DATE","INFORMATION_SOURCE","DATA_SOURCE","REMARKS","CHANGE_ID",NULL};
-datafile_rows_t ellipsoid_row_2[] = {"7001","Airy 1830","","6377563.396","9001","299.3249646","","1995-06-02 00:00:00","Ordnance Survey of Great Britain.","EPSG","Original definition is a=20923713 and b=20853810 feet of 1796.   For the 1936 retriangulation OSGB defines the relationship of feet of 1796 to the International metre through log(1.48401603) exactly [=0.3048007491...]. 1/f is given to 7 decimal places.","98.321  98.34",NULL};
-datafile_rows_t ellipsoid_row_3[] = {"7002","Airy Modified 1849","","6377340.189","9001","299.3249646","","1995-06-02 00:00:00","","EPSG","OSGB Airy 1830 figure rescaled by 1.000035 to best fit the primary triangulation of Ireland.","98.321",NULL};
-datafile_rows_t ellipsoid_row_4[] = {"7003","Australian National Spheroid","","6378160.0","9001","298.25","","1995-06-02 00:00:00","\"Australian Map Grid Technical Manual\"; National Mapping Council of Australia Special Publication #7; 1972","EPSG","Based on the GRS 1967 figure but with 1/f taken to 2 decimal places exactly.","",NULL};
-datafile_rows_t ellipsoid_row_5[] = {"7004","Bessel 1841","","6377397.155","9001","299.1528128","","1999-04-22 00:00:00","US Army Map Service Technical Manual; 1943.","EPSG","Original Bessel definition is a=3272077.14 and b=3261139.33 toise. This used a weighted mean of values from several authors but did not account for differences in the length of the various toise: the \"Bessel toise\" is therefore of uncertain length.","98.321  98.34",NULL};
-datafile_rows_t ellipsoid_row_6[] = {"7005","Bessel Modified","","6377492.018","9001","299.1528128","","1999-04-22 00:00:00","","EPSG","Used in Norway and also in Sweden with a 1mm increase in semi-major axis.","98.321",NULL};
-datafile_rows_t ellipsoid_row_7[] = {"7006","Bessel Namibia","","6377483.865","9001","299.1528128","","1999-04-22 00:00:00","","EPSG","a = 6377397.155 German legal metres. This is the same value as the Bessel 1841 figure (code 7004) but in different units.  Used in Namibia.","97.16",NULL};
-datafile_rows_t ellipsoid_row_8[] = {"7007","Clarke 1858","","20926348.0","9005","","20855233.0","1995-06-02 00:00:00","\"Ellipsoidisch Parameter der Erdfigur (1800-1950)\" by Georg Strasser.","EPSG","Clarke's 1858/II solution. Derived parameters: a = 6378293.645m using his 1865 ratio of 0.304797265 feet per metre; 1/f = 294.26068�  In historic usage in Australia 1/f taken to two decimal places (294.26 exactly); elsewhere a and b used to derive 1/f.","99.70",NULL};
-datafile_rows_t ellipsoid_row_9[] = {"7008","Clarke 1866","","6378206.4","9001","","6356583.8","1995-06-02 00:00:00","US Army Map Service Technical Manual No. 7; 1943.","EPSG","Original definition a=20926062 and b=20855121 (British) feet. Uses Clarke's 1865 inch-metre ratio of 39.370432 to obtain metres. (Metric value then converted to US survey feet for use in the United States using 39.37 exactly giving a=20925832.16 ft US).","98.34",NULL};
-datafile_rows_t ellipsoid_row_10[] = {"7009","Clarke 1866 Michigan","","20926631.531","9003","","20855688.674","1995-06-02 00:00:00","USGS Professional Paper #1395.","EPSG","Used for Michigan NAD27 State Plane zones.  Radius = ellipsoid radius + 800 feet; this approximates the average elevation of the state.   Derived parameter: 1/f = 294.97870","98.22",NULL};
-datafile_rows_t ellipsoid_row_11[] = {"7010","Clarke 1880 (Benoit)","","6378300.789","9001","","6356566.435","1995-06-02 00:00:00","","EPSG","Adopts Clarke's values for a and b.  Uses Benoit's 1895 ratio of 0.9143992 metres per yard to convert to metres.","",NULL};
-datafile_rows_t ellipsoid_row_12[] = {"7011","Clarke 1880 (IGN)","","6378249.2","9001","","6356515.0","1998-04-16 00:00:00","","EPSG","Adopts Clarke's values for a and b using his 1865 ratio of 39.370432 inches per metre to convert axes to metres.","98.12",NULL};
-datafile_rows_t ellipsoid_row_13[] = {"7012","Clarke 1880 (RGS)","","6378249.145","9001","293.465","","1995-06-02 00:00:00","Empire Survey Review #32; 1939.","EPSG","Adopts Clarke's values for a and 1/f.  Adopts his 1865 ratio of 39.370432 inches per metre to convert semi-major axis to metres. Also known as Clarke Modified 1880.","",NULL};
-datafile_rows_t ellipsoid_row_14[] = {"7013","Clarke 1880 (Arc)","","6378249.145","9001","293.4663077","","1999-04-22 00:00:00","","EPSG","Adopts Clarke's value for a with derived 1/f.  Uses his 1865 ratio of 39.370432 inch per metre to convert semi-major axis to metres.","",NULL};
-datafile_rows_t ellipsoid_row_15[] = {"7014","Clarke 1880 (SGA 1922)","","6378249.2","9001","293.46598","","1995-06-02 00:00:00","","EPSG","Used in Old French Triangulation (ATF).   Uses Clarke's 1865 inch-metre ratio of 39.370432 to convert axes to metres.","",NULL};
-datafile_rows_t ellipsoid_row_16[] = {"7015","Everest 1830 (1937 Adjustment)","","6377276.345","9001","300.8017","","1996-10-18 00:00:00","Survey of India professional paper #28; 1939","EPSG","Used for the 1937 readjustment of Indian triangulation.  Clarke's 1865 Indian-British foot ratio (0.99999566) and Benoit's 1898 British inch-metre ratio (39.370113) rounded as 0.30479841 exactly and applied to Everest's 1830 definition taken as a and 1/f","96.20",NULL};
-datafile_rows_t ellipsoid_row_17[] = {"7016","Everest 1830 (1967 Definition)","","6377298.556","9001","300.8017","","1995-06-02 00:00:00","","EPSG","Adopted 1967 for use in East Malaysia.  Applies Sears 1922 inch-metre ratio of 39.370147 to Everest 1830 original definition of a and 1/f but with a taken to be in British rather than Indian feet.","",NULL};
-datafile_rows_t ellipsoid_row_18[] = {"7018","Everest 1830 Modified","","6377304.063","9001","300.8017","","1995-06-02 00:00:00","","EPSG","Adopted 1967 for use in West Malaysia.  Applies Benoit 1898 inch-metre ratio of 39.370113 to Everest 1830 original definition of a and 1/f but with a taken to be in British rather than Indian feet.","",NULL};
-datafile_rows_t ellipsoid_row_19[] = {"7019","GRS 1980","","6378137.0","9001","298.257222101","","1998-11-11 00:00:00","\"Geodetic Reference System 1980\" by H. Moritz; Bulletin Geodesique","EPSG","Adopted by IUGG 1979 Canberra.  Inverse flattening is derived from geocentric gravitational constant GM = 3986005e8 m*m*m/s/s; dynamic form factor J2 = 108263e8 and Earth's angular velocity = 7292115e-11 rad/s.","98.11  98.32",NULL};
-datafile_rows_t ellipsoid_row_20[] = {"7020","Helmert 1906","","6378200.0","9001","298.3","","1995-06-02 00:00:00","\"Ellipsoidisch Parameter der Erdfigur (1800-1950)\" by Georg Strasser","EPSG","Helmert 1906/III solution.","",NULL};
-datafile_rows_t ellipsoid_row_21[] = {"7021","Indonesian National Spheroid","","6378160.0","9001","298.247","","1995-06-02 00:00:00","Rais paper.","EPSG","Based on the GRS 1967 figure but with 1/f taken to 3 decimal places exactly.","",NULL};
-datafile_rows_t ellipsoid_row_22[] = {"7022","International 1924","","6378388.0","9001","297.0","","1995-06-02 00:00:00","","EPSG","Adopted by IUGG 1924 in Madrid. Based on Hayford 1909/1910 figures.","",NULL};
-datafile_rows_t ellipsoid_row_23[] = {"7024","Krassowsky 1940","","6378245.0","9001","298.3","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t ellipsoid_row_24[] = {"7025","NWL 9D","","6378145.0","9001","298.25","","1995-06-02 00:00:00","","EPSG","Used by Transit Precise Ephemeris between October 1971 and January 1987.","",NULL};
-datafile_rows_t ellipsoid_row_25[] = {"7027","Plessis 1817","","6376523.0","9001","308.64","","1995-06-02 00:00:00","IGN Paris \"Constants d'Ellipsoides\" February 1972.","EPSG","Rescaling of Delambre 1810 figure (a=6376985 m) to make meridional arc from equator to pole equal to 10000000 metres exactly. (Ref: Strasser).","",NULL};
-datafile_rows_t ellipsoid_row_26[] = {"7028","Struve 1860","","6378298.3","9001","294.73","","1998-11-11 00:00:00","\"Geodesia y Cartografia Matematica\" by Fernando Martin Asin; ISBN 84-398-0248-X.","EPSG","Original definition of semi-major axis given as 3272539 toise.  In \"Ellipsoidisch Parameter der Erdfigur (1800-1950)\" , Strasser suggests a conversion factor of 1.94903631 which gives a=6378297.337 metres.","98.07  98.34",NULL};
-datafile_rows_t ellipsoid_row_27[] = {"7029","War Office","","6378300.583","9001","296.0","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t ellipsoid_row_28[] = {"7030","WGS 84","","6378137.0","9001","298.257223563","","1998-11-11 00:00:00","DMA Technical Manual 8350.2-B","EPSG","Inverse flattening derived from four defining parameters (semi-major axis; C20 = -484.16685*10e-6; earth's angular velocity w = 7292115e11 rad/sec; gravitational constant GM = 3986005e8 m*m*m/s/s).","98.32",NULL};
-datafile_rows_t ellipsoid_row_29[] = {"7031","GEM 10C","","6378137.0","9001","298.257223563","","1995-06-02 00:00:00","","EPSG","Used for  GEM 10C Gravity Potential Model.","98.32",NULL};
-datafile_rows_t ellipsoid_row_30[] = {"7032","OSU86F","","6378136.2","9001","298.257223563","","1995-06-02 00:00:00","","EPSG","Used for OSU86 gravity potential (geoidal) model.","98.32",NULL};
-datafile_rows_t ellipsoid_row_31[] = {"7033","OSU91A","","6378136.3","9001","298.257223563","","1995-06-02 00:00:00","","EPSG","Used for OSU91 gravity potential (geoidal) model.","98.32",NULL};
-datafile_rows_t ellipsoid_row_32[] = {"7034","Clarke 1880","","20926202.0","9005","293.465","20854895.0","1995-06-02 00:00:00","\"Ellipsoidisch Parameter der Erdfigur (1800-1950)\" by Georg Strasser.","EPSG","Clarke gave a and b and also 1/f=293.465 (to 3 decimal places).  1/f derived from a and b = 293.4663077�","",NULL};
-datafile_rows_t ellipsoid_row_33[] = {"7035","Sphere","","6371000.0","9001","","6371000.0","1995-06-02 00:00:00","","EPSG","Authalic sphere.  1/f is infinite.","",NULL};
-datafile_rows_t ellipsoid_row_34[] = {"7036","GRS 1967","","6378160.0","9001","298.247167427","","1998-11-11 00:00:00","\"Geodetic Reference System 1967\"; International Association of Geodesy special publication number 3; August 1971.","EPSG","Adopted by IUGG 1967 Lucerne.  Inverse flattening given is derived from geocentric gravitational constant (GM)= 398603e9 m*m*m/s/s; dynamic form factor (J2) = 0.0010827 and Earth's angular velocity w = 7.2921151467e-5 rad/s.","96.09  97.252  98.32 [...]
-datafile_rows_t ellipsoid_row_35[] = {"7041","Average Terrestrial System 1977","","6378135.0","9001","298.257","","1997-07-22 00:00:00","New Brunswick Geographic Information Corporation land and water information standards manual","EPSG","","98.321",NULL};
-datafile_rows_t ellipsoid_row_36[] = {"7042","Everest (1830 Definition)","","20922931.8","9080","300.8017","20853374.58","1999-10-20 00:00:00","\"Ellipsoidisch Parameter der Erdfigur (1800-1950)\" by Georg Strasser","EPSG","Everest gave a and b to 2 decimal places and also 1/f=300.8017 (to 4 decimal places).","97.23",NULL};
-datafile_rows_t ellipsoid_row_37[] = {"7043","WGS 72","","6378135.0","9001","298.26","","1999-04-22 00:00:00","","EPSG","","99.03",NULL};
-datafile_rows_t ellipsoid_row_38[] = {"7044","Everest 1830 (1962 Definition)","","6377301.243","9001","300.8017255","","1999-10-20 00:00:00","","EPSG","Used by Pakistan since metrication.  Clarke's 1865 Indian foot-British foot ratio (0.99999566) and his 1865 British inch-metre ratio (39.369971) rounded with slight error as 1 Ind ft = 0.3047995m exactly and applied to Everest's 1830 definition of a & b.","",NULL};
-datafile_rows_t ellipsoid_row_39[] = {"7045","Everest 1830 (1975 Definition)","","6377299.151","9001","300.8017255","","1999-10-20 00:00:00","","EPSG","Used by India since metrication.  Clarke's 1865 Indian foot-British foot ratio (0.99999566) and his 1865 British inch-metre ratio (39.369971) rounded as 1 Ind ft = 0.3047995m exactly applied to Everest's 1830 original definition taken as a and b.","",NULL};
-
-datafile_rows_t *ellipsoid_rows[] = {ellipsoid_row_1,ellipsoid_row_2,ellipsoid_row_3,ellipsoid_row_4,ellipsoid_row_5,ellipsoid_row_6,ellipsoid_row_7,ellipsoid_row_8,ellipsoid_row_9,ellipsoid_row_10,ellipsoid_row_11,ellipsoid_row_12,ellipsoid_row_13,ellipsoid_row_14,ellipsoid_row_15,ellipsoid_row_16,ellipsoid_row_17,ellipsoid_row_18,ellipsoid_row_19,ellipsoid_row_20,ellipsoid_row_21,ellipsoid_row_22,ellipsoid_row_23,ellipsoid_row_24,ellipsoid_row_25,ellipsoid_row_26,ellipsoid_row_27,ellip [...]
diff --git a/src/tiff/csv/ellipsoid.csv b/src/tiff/csv/ellipsoid.csv
deleted file mode 100644
index ac6477b..0000000
--- a/src/tiff/csv/ellipsoid.csv
+++ /dev/null
@@ -1,39 +0,0 @@
-"ELLIPSOID_CODE","ELLIPSOID_EPSG_NAME","ELLIPSOID_USER_NAME","SEMI_MAJOR_AXIS","UOM_LENGTH_CODE","INV_FLATTENING","SEMI_MINOR_AXIS","REVISION_DATE","INFORMATION_SOURCE","DATA_SOURCE","REMARKS","CHANGE_ID"
-7001,Airy 1830,,6377563.396,9001,299.3249646,,1995-06-02 00:00:00,Ordnance Survey of Great Britain.,EPSG,Original definition is a=20923713 and b=20853810 feet of 1796.   For the 1936 retriangulation OSGB defines the relationship of feet of 1796 to the International metre through log(1.48401603) exactly [=0.3048007491...]. 1/f is given to 7 decimal places.,98.321  98.34
-7002,Airy Modified 1849,,6377340.189,9001,299.3249646,,1995-06-02 00:00:00,,EPSG,OSGB Airy 1830 figure rescaled by 1.000035 to best fit the primary triangulation of Ireland.,98.321
-7003,Australian National Spheroid,,6378160.0,9001,298.25,,1995-06-02 00:00:00,"\"Australian Map Grid Technical Manual\"; National Mapping Council of Australia Special Publication #7; 1972",EPSG,Based on the GRS 1967 figure but with 1/f taken to 2 decimal places exactly.,
-7004,Bessel 1841,,6377397.155,9001,299.1528128,,1999-04-22 00:00:00,US Army Map Service Technical Manual; 1943.,EPSG,"Original Bessel definition is a=3272077.14 and b=3261139.33 toise. This used a weighted mean of values from several authors but did not account for differences in the length of the various toise: the \"Bessel toise\" is therefore of uncertain length.",98.321  98.34
-7005,Bessel Modified,,6377492.018,9001,299.1528128,,1999-04-22 00:00:00,,EPSG,Used in Norway and also in Sweden with a 1mm increase in semi-major axis.,98.321
-7006,Bessel Namibia,,6377483.865,9001,299.1528128,,1999-04-22 00:00:00,,EPSG,a = 6377397.155 German legal metres. This is the same value as the Bessel 1841 figure (code 7004) but in different units.  Used in Namibia.,97.16
-7007,Clarke 1858,,20926348.0,9005,,20855233.0,1995-06-02 00:00:00,"\"Ellipsoidisch Parameter der Erdfigur (1800-1950)\" by Georg Strasser.",EPSG,Clarke's 1858/II solution. Derived parameters: a = 6378293.645m using his 1865 ratio of 0.304797265 feet per metre; 1/f = 294.26068�  In historic usage in Australia 1/f taken to two decimal places (294.26 exactly); elsewhere a and b used to derive 1/f.,99.70
-7008,Clarke 1866,,6378206.4,9001,,6356583.8,1995-06-02 00:00:00,US Army Map Service Technical Manual No. 7; 1943.,EPSG,Original definition a=20926062 and b=20855121 (British) feet. Uses Clarke's 1865 inch-metre ratio of 39.370432 to obtain metres. (Metric value then converted to US survey feet for use in the United States using 39.37 exactly giving a=20925832.16 ft US).,98.34
-7009,Clarke 1866 Michigan,,20926631.531,9003,,20855688.674,1995-06-02 00:00:00,USGS Professional Paper #1395.,EPSG,Used for Michigan NAD27 State Plane zones.  Radius = ellipsoid radius + 800 feet; this approximates the average elevation of the state.   Derived parameter: 1/f = 294.97870,98.22
-7010,Clarke 1880 (Benoit),,6378300.789,9001,,6356566.435,1995-06-02 00:00:00,,EPSG,Adopts Clarke's values for a and b.  Uses Benoit's 1895 ratio of 0.9143992 metres per yard to convert to metres.,
-7011,Clarke 1880 (IGN),,6378249.2,9001,,6356515.0,1998-04-16 00:00:00,,EPSG,Adopts Clarke's values for a and b using his 1865 ratio of 39.370432 inches per metre to convert axes to metres.,98.12
-7012,Clarke 1880 (RGS),,6378249.145,9001,293.465,,1995-06-02 00:00:00,Empire Survey Review #32; 1939.,EPSG,Adopts Clarke's values for a and 1/f.  Adopts his 1865 ratio of 39.370432 inches per metre to convert semi-major axis to metres. Also known as Clarke Modified 1880.,
-7013,Clarke 1880 (Arc),,6378249.145,9001,293.4663077,,1999-04-22 00:00:00,,EPSG,Adopts Clarke's value for a with derived 1/f.  Uses his 1865 ratio of 39.370432 inch per metre to convert semi-major axis to metres.,
-7014,Clarke 1880 (SGA 1922),,6378249.2,9001,293.46598,,1995-06-02 00:00:00,,EPSG,Used in Old French Triangulation (ATF).   Uses Clarke's 1865 inch-metre ratio of 39.370432 to convert axes to metres.,
-7015,Everest 1830 (1937 Adjustment),,6377276.345,9001,300.8017,,1996-10-18 00:00:00,Survey of India professional paper #28; 1939,EPSG,Used for the 1937 readjustment of Indian triangulation.  Clarke's 1865 Indian-British foot ratio (0.99999566) and Benoit's 1898 British inch-metre ratio (39.370113) rounded as 0.30479841 exactly and applied to Everest's 1830 definition taken as a and 1/f,96.20
-7016,Everest 1830 (1967 Definition),,6377298.556,9001,300.8017,,1995-06-02 00:00:00,,EPSG,Adopted 1967 for use in East Malaysia.  Applies Sears 1922 inch-metre ratio of 39.370147 to Everest 1830 original definition of a and 1/f but with a taken to be in British rather than Indian feet.,
-7018,Everest 1830 Modified,,6377304.063,9001,300.8017,,1995-06-02 00:00:00,,EPSG,Adopted 1967 for use in West Malaysia.  Applies Benoit 1898 inch-metre ratio of 39.370113 to Everest 1830 original definition of a and 1/f but with a taken to be in British rather than Indian feet.,
-7019,GRS 1980,,6378137.0,9001,298.257222101,,1998-11-11 00:00:00,"\"Geodetic Reference System 1980\" by H. Moritz; Bulletin Geodesique",EPSG,Adopted by IUGG 1979 Canberra.  Inverse flattening is derived from geocentric gravitational constant GM = 3986005e8 m*m*m/s/s; dynamic form factor J2 = 108263e8 and Earth's angular velocity = 7292115e-11 rad/s.,98.11  98.32
-7020,Helmert 1906,,6378200.0,9001,298.3,,1995-06-02 00:00:00,"\"Ellipsoidisch Parameter der Erdfigur (1800-1950)\" by Georg Strasser",EPSG,Helmert 1906/III solution.,
-7021,Indonesian National Spheroid,,6378160.0,9001,298.247,,1995-06-02 00:00:00,Rais paper.,EPSG,Based on the GRS 1967 figure but with 1/f taken to 3 decimal places exactly.,
-7022,International 1924,,6378388.0,9001,297.0,,1995-06-02 00:00:00,,EPSG,Adopted by IUGG 1924 in Madrid. Based on Hayford 1909/1910 figures.,
-7024,Krassowsky 1940,,6378245.0,9001,298.3,,1995-06-02 00:00:00,,EPSG,,
-7025,NWL 9D,,6378145.0,9001,298.25,,1995-06-02 00:00:00,,EPSG,Used by Transit Precise Ephemeris between October 1971 and January 1987.,
-7027,Plessis 1817,,6376523.0,9001,308.64,,1995-06-02 00:00:00,"IGN Paris \"Constants d'Ellipsoides\" February 1972.",EPSG,Rescaling of Delambre 1810 figure (a=6376985 m) to make meridional arc from equator to pole equal to 10000000 metres exactly. (Ref: Strasser).,
-7028,Struve 1860,,6378298.3,9001,294.73,,1998-11-11 00:00:00,"\"Geodesia y Cartografia Matematica\" by Fernando Martin Asin; ISBN 84-398-0248-X.",EPSG,"Original definition of semi-major axis given as 3272539 toise.  In \"Ellipsoidisch Parameter der Erdfigur (1800-1950)\" , Strasser suggests a conversion factor of 1.94903631 which gives a=6378297.337 metres.",98.07  98.34
-7029,War Office,,6378300.583,9001,296.0,,1995-06-02 00:00:00,,EPSG,,
-7030,WGS 84,,6378137.0,9001,298.257223563,,1998-11-11 00:00:00,DMA Technical Manual 8350.2-B,EPSG,Inverse flattening derived from four defining parameters (semi-major axis; C20 = -484.16685*10e-6; earth's angular velocity w = 7292115e11 rad/sec; gravitational constant GM = 3986005e8 m*m*m/s/s).,98.32
-7031,GEM 10C,,6378137.0,9001,298.257223563,,1995-06-02 00:00:00,,EPSG,Used for  GEM 10C Gravity Potential Model.,98.32
-7032,OSU86F,,6378136.2,9001,298.257223563,,1995-06-02 00:00:00,,EPSG,Used for OSU86 gravity potential (geoidal) model.,98.32
-7033,OSU91A,,6378136.3,9001,298.257223563,,1995-06-02 00:00:00,,EPSG,Used for OSU91 gravity potential (geoidal) model.,98.32
-7034,Clarke 1880,,20926202.0,9005,293.465,20854895.0,1995-06-02 00:00:00,"\"Ellipsoidisch Parameter der Erdfigur (1800-1950)\" by Georg Strasser.",EPSG,Clarke gave a and b and also 1/f=293.465 (to 3 decimal places).  1/f derived from a and b = 293.4663077�,
-7035,Sphere,,6371000.0,9001,,6371000.0,1995-06-02 00:00:00,,EPSG,Authalic sphere.  1/f is infinite.,
-7036,GRS 1967,,6378160.0,9001,298.247167427,,1998-11-11 00:00:00,"\"Geodetic Reference System 1967\"; International Association of Geodesy special publication number 3; August 1971.",EPSG,Adopted by IUGG 1967 Lucerne.  Inverse flattening given is derived from geocentric gravitational constant (GM)= 398603e9 m*m*m/s/s; dynamic form factor (J2) = 0.0010827 and Earth's angular velocity w = 7.2921151467e-5 rad/s.,96.09  97.252  98.32
-7041,Average Terrestrial System 1977,,6378135.0,9001,298.257,,1997-07-22 00:00:00,New Brunswick Geographic Information Corporation land and water information standards manual,EPSG,,98.321
-7042,Everest (1830 Definition),,20922931.8,9080,300.8017,20853374.58,1999-10-20 00:00:00,"\"Ellipsoidisch Parameter der Erdfigur (1800-1950)\" by Georg Strasser",EPSG,Everest gave a and b to 2 decimal places and also 1/f=300.8017 (to 4 decimal places).,97.23
-7043,WGS 72,,6378135.0,9001,298.26,,1999-04-22 00:00:00,,EPSG,,99.03
-7044,Everest 1830 (1962 Definition),,6377301.243,9001,300.8017255,,1999-10-20 00:00:00,,EPSG,Used by Pakistan since metrication.  Clarke's 1865 Indian foot-British foot ratio (0.99999566) and his 1865 British inch-metre ratio (39.369971) rounded with slight error as 1 Ind ft = 0.3047995m exactly and applied to Everest's 1830 definition of a & b.,
-7045,Everest 1830 (1975 Definition),,6377299.151,9001,300.8017255,,1999-10-20 00:00:00,,EPSG,Used by India since metrication.  Clarke's 1865 Indian foot-British foot ratio (0.99999566) and his 1865 British inch-metre ratio (39.369971) rounded as 1 Ind ft = 0.3047995m exactly applied to Everest's 1830 original definition taken as a and b.,
diff --git a/src/tiff/csv/gcs.csv b/src/tiff/csv/gcs.csv
deleted file mode 100644
index 986eedb..0000000
--- a/src/tiff/csv/gcs.csv
+++ /dev/null
@@ -1,278 +0,0 @@
-"COORD_REF_SYS_CODE","COORD_REF_SYS_NAME","DATUM_CODE","DATUM_NAME","GREENWICH_DATUM","UOM_CODE","ELLIPSOID_CODE","PRIME_MERIDIAN_CODE","COORD_OP_METHOD_CODE","DX","DY","DZ","RX","RY","RZ","DS"
-4001,Unknown datum based upon the Airy 1830 ellipsoid,6001,"Not specified (based on Airy 1830 ellipsoid)",6001,9108,7001,8901,,,,,,,,
-4002,Unknown datum based upon the Airy Modified 1849 ellipsoid,6002,"Not specified (based on Airy Modified 1849 ellipsoid)",6002,9108,7002,8901,,,,,,,,
-4003,Unknown datum based upon the Australian National Spheroid,6003,"Not specified (based on Australian National Spheroid)",6003,9108,7003,8901,,,,,,,,
-4004,Unknown datum based upon the Bessel 1841 ellipsoid,6004,"Not specified (based on Bessel 1841 ellipsoid)",6004,9108,7004,8901,,,,,,,,
-4005,Unknown datum based upon the Bessel Modified ellipsoid,6005,"Not specified (based on Bessel Modified ellipsoid)",6005,9108,7005,8901,,,,,,,,
-4006,Unknown datum based upon the Bessel Namibia ellipsoid,6006,"Not specified (based on Bessel Namibia ellipsoid)",6006,9108,7046,8901,,,,,,,,
-4007,Unknown datum based upon the Clarke 1858 ellipsoid,6007,"Not specified (based on Clarke 1858 ellipsoid)",6007,9108,7007,8901,,,,,,,,
-4008,Unknown datum based upon the Clarke 1866 ellipsoid,6008,"Not specified (based on Clarke 1866 ellipsoid)",6008,9108,7008,8901,,,,,,,,
-4009,Unknown datum based upon the Clarke 1866 Michigan ellipsoid,6009,"Not specified (based on Clarke 1866 Michigan ellipsoid)",6009,9108,7009,8901,,,,,,,,
-4010,"Unknown datum based upon the Clarke 1880 (Benoit) ellipsoid",6010,"Not specified (based on Clarke 1880 (Benoit) ellipsoid)",6010,9108,7010,8901,,,,,,,,
-4011,"Unknown datum based upon the Clarke 1880 (IGN) ellipsoid",6011,"Not specified (based on Clarke 1880 (IGN) ellipsoid)",6011,9108,7011,8901,,,,,,,,
-4012,"Unknown datum based upon the Clarke 1880 (RGS) ellipsoid",6012,"Not specified (based on Clarke 1880 (RGS) ellipsoid)",6012,9108,7012,8901,,,,,,,,
-4013,"Unknown datum based upon the Clarke 1880 (Arc) ellipsoid",6013,"Not specified (based on Clarke 1880 (Arc) ellipsoid)",6013,9108,7013,8901,,,,,,,,
-4014,"Unknown datum based upon the Clarke 1880 (SGA 1922) ellipsoid",6014,"Not specified (based on Clarke 1880 (SGA 1922) ellipsoid)",6014,9108,7014,8901,,,,,,,,
-4015,"Unknown datum based upon the Everest 1830 (1937 Adjustment) ellipsoid",6015,"Not specified (based on Everest 1830 (1937 Adjustment) ellipsoid)",6015,9108,7015,8901,,,,,,,,
-4016,"Unknown datum based upon the Everest 1830 (1967 Definition) ellipsoid",6016,"Not specified (based on Everest 1830 (1967 Definition) ellipsoid)",6016,9108,7016,8901,,,,,,,,
-4018,Unknown datum based upon the Everest 1830 Modified ellipsoid,6018,"Not specified (based on Everest 1830 Modified ellipsoid)",6018,9108,7018,8901,,,,,,,,
-4019,Unknown datum based upon the GRS 1980 ellipsoid,6019,"Not specified (based on GRS 1980 ellipsoid)",6019,9108,7019,8901,,,,,,,,
-4020,Unknown datum based upon the Helmert 1906 ellipsoid,6020,"Not specified (based on Helmert 1906 ellipsoid)",6020,9108,7020,8901,,,,,,,,
-4021,Unknown datum based upon the Indonesian National Spheroid,6021,"Not specified (based on Indonesian National Spheroid)",6021,9108,7021,8901,,,,,,,,
-4022,Unknown datum based upon the International 1924 ellipsoid,6022,"Not specified (based on International 1924 ellipsoid)",6022,9108,7022,8901,,,,,,,,
-4024,Unknown datum based upon the Krassowsky 1940 ellipsoid,6024,"Not specified (based on Krassowsky 1940 ellipsoid)",6024,9108,7024,8901,,,,,,,,
-4025,Unknown datum based upon the NWL 9D ellipsoid,6025,"Not specified (based on NWL 9D ellipsoid)",6025,9108,7025,8901,,,,,,,,
-4027,Unknown datum based upon the Plessis 1817 ellipsoid,6027,"Not specified (based on Plessis 1817 ellipsoid)",6027,9108,7027,8901,,,,,,,,
-4028,Unknown datum based upon the Struve 1860 ellipsoid,6028,"Not specified (based on Struve 1860 ellipsoid)",6028,9108,7028,8901,,,,,,,,
-4029,Unknown datum based upon the War Office ellipsoid,6029,"Not specified (based on War Office ellipsoid)",6029,9108,7029,8901,,,,,,,,
-4030,Unknown datum based upon the WGS 84 ellipsoid,6030,"Not specified (based on WGS 84 ellipsoid)",6030,9108,7030,8901,,,,,,,,
-4031,Unknown datum based upon the GEM 10C ellipsoid,6031,"Not specified (based on GEM 10C ellipsoid)",6031,9108,7031,8901,,,,,,,,
-4032,Unknown datum based upon the OSU86F ellipsoid,6032,"Not specified (based on OSU86F ellipsoid)",6032,9108,7032,8901,,,,,,,,
-4033,Unknown datum based upon the OSU91A ellipsoid,6033,"Not specified (based on OSU91A ellipsoid)",6033,9108,7033,8901,,,,,,,,
-4034,Unknown datum based upon the Clarke 1880 ellipsoid,6034,"Not specified (based on Clarke 1880 ellipsoid)",6034,9108,7034,8901,,,,,,,,
-4035,Unknown datum based upon the Authalic Sphere,6035,"Not specified (based on Authalic Sphere)",6035,9108,7035,8901,,,,,,,,
-4036,Unknown datum based upon the GRS 1967 ellipsoid,6036,"Not specified (based on GRS 1967 ellipsoid)",6036,9108,7036,8901,,,,,,,,
-4041,Unknown datum based upon the Average Terrestrial System 1977 ellipsoid,6041,"Not specified (based on Average Terrestrial System 1977 ellipsoid)",6041,9108,7041,8901,,,,,,,,
-4042,"Unknown datum based upon the Everest (1830 Definition) ellipsoid",6042,"Not specified (based on Everest (1830 Definition) ellipsoid)",6042,9108,7042,8901,,,,,,,,
-4043,Unknown datum based upon the WGS 72 ellipsoid,6043,"Not specified (based on WGS 72 ellipsoid)",6043,9108,7043,8901,,,,,,,,
-4044,"Unknown datum based upon the Everest 1830 (1962 Definition) ellipsoid",6044,"Not specified (based on Everest 1830 (1962 Definition) ellipsoid)",6044,9108,7044,8901,,,,,,,,
-4045,"Unknown datum based upon the Everest 1830 (1975 Definition) ellipsoid",6045,"Not specified (based on Everest 1830 (1975 Definition) ellipsoid)",6045,9108,7045,8901,,,,,,,,
-4047,Unspecified based upon the GRS 1980 Authalic Sphere,6047,"Not specified (based on GRS 1980 Authalic Sphere)",6047,9108,7047,8901,,,,,,,,
-4120,Greek,6120,Greek,6120,9108,7004,8901,,,,,,,,
-4121,GGRS87,6121,Greek Geodetic Reference System 1987,6121,9108,7019,8901,9603,-199.87,74.79,246.62,,,,
-4122,ATS77,6122,Average Terrestrial System 1977,6122,9108,7041,8901,,,,,,,,
-4123,KKJ,6123,Kartasto Koordinaati Jarjestelma 1966,6123,9108,7022,8901,9606,-90.7,-106.1,-119.2,4.09,0.218,-1.05,1.37
-4124,RT90,6124,Rikets koordinatsystem 1990,6124,9108,7004,8901,,,,,,,,
-4125,Samboja,6125,Samboja,6125,9108,7004,8901,9603,-404.78,685.68,45.47,,,,
-4126,"LKS94 (ETRS89)",6126,"Lithuania 1994 (ETRS89)",6126,9108,7019,8901,9603,0.0,0.0,0.0,,,,
-4127,Tete,6127,Tete,6127,9108,7008,8901,,,,,,,,
-4128,Madzansua,6128,Madzansua,6128,9108,7008,8901,,,,,,,,
-4129,Observatario,6129,Observatario,6129,9108,7008,8901,,,,,,,,
-4130,Moznet,6130,"Moznet (ITRF94)",6130,9108,7030,8901,9607,0.0,0.0,0.0,0.0,0.0,0.0,0.0
-4131,Indian 1960,6131,Indian 1960,6131,9108,7015,8901,,,,,,,,
-4132,FD58,6132,Final Datum 1958,6132,9108,7012,8901,,,,,,,,
-4133,EST92,6133,Estonia 1992,6133,9108,7019,8901,9607,0.055,-0.541,-0.185,-0.0183,0.0003,0.007,-0.014
-4134,PDO Survey Datum 1993,6134,PDO Survey Datum 1993,6134,9108,7012,8901,,,,,,,,
-4135,Old Hawaiian,6135,Old Hawaiian,6135,9108,7008,8901,,,,,,,,
-4136,St. Lawrence Island,6136,St. Lawrence Island,6136,9108,7008,8901,,,,,,,,
-4137,St. Paul Island,6137,St. Paul Island,6137,9108,7008,8901,,,,,,,,
-4138,St. George Island,6138,St. George Island,6138,9108,7008,8901,,,,,,,,
-4139,Puerto Rico,6139,Puerto Rico,6139,9108,7008,8901,,,,,,,,
-4140,"NAD83(CSRS98)",6140,NAD83 Canadian Spatial Reference System,6140,9108,7019,8901,9603,0.0,0.0,0.0,,,,
-4141,Israel,6141,Israel,6141,9108,7019,8901,,,,,,,,
-4142,Locodjo 1965,6142,Locodjo 1965,6142,9108,7012,8901,9603,-125.0,53.0,467.0,,,,
-4143,Abidjan 1987,6143,Abidjan 1987,6143,9108,7012,8901,9603,-124.76,53.0,466.79,,,,
-4144,Kalianpur 1937,6144,Kalianpur 1937,6144,9108,7015,8901,,,,,,,,
-4145,Kalianpur 1962,6145,Kalianpur 1962,6145,9108,7044,8901,9603,283.0,682.0,231.0,,,,
-4146,Kalianpur 1975,6146,Kalianpur 1975,6146,9108,7045,8901,9603,295.0,736.0,257.0,,,,
-4147,Hanoi 1972,6147,Hanoi 1972,6147,9108,7024,8901,9603,-17.51,-108.32,-62.39,,,,
-4148,Hartebeesthoek94,6148,Hartebeesthoek94,6148,9108,7030,8901,9603,0.0,0.0,0.0,,,,
-4149,CH1903,6149,CH1903,6149,9108,7004,8901,,,,,,,,
-4150,"CH1903+",6150,"CH1903+",6150,9108,7004,8901,9603,674.374,15.056,405.346,,,,
-4151,CHTRF95,6151,Swiss Terrestrial Reference Frame 1995,6151,9108,7019,8901,9603,0.0,0.0,0.0,,,,
-4152,"NAD83(HARN)",6152,"NAD83 (High Accuracy Regional Network)",6152,9108,7019,8901,9603,0.0,0.0,0.0,,,,
-4153,Rassadiran,6153,Rassadiran,6153,9108,7022,8901,9603,-133.63,-157.5,-158.62,,,,
-4154,"ED50(ED77)",6154,"European Datum 1950(1977)",6154,9108,7022,8901,,,,,,,,
-4155,Dabola 1981,6155,Dabola 1981,6155,9108,7011,8901,9603,-83.0,37.0,124.0,,,,
-4156,S-JTSK,6156,Jednotne Trigonometricke Site Katastralni,6156,9108,7004,8901,,,,,,,,
-4157,Mount Dillon,6157,Mount Dillon,6157,9108,7007,8901,,,,,,,,
-4158,Naparima 1955,6158,Naparima 1955,6158,9108,7022,8901,,,,,,,,
-4159,ELD79,6159,European Libyan Datum 1979,6159,9108,7022,8901,,,,,,,,
-4160,Chos Malal 1914,6160,Chos Malal 1914,6160,9108,7022,8901,,,,,,,,
-4161,Pampa del Castillo,6161,Pampa del Castillo,6161,9108,7022,8901,,,,,,,,
-4162,Korean 1985,6162,Korean Datum 1985,6162,9108,7004,8901,,,,,,,,
-4163,Yemen NGN96,6163,Yemen National Geodetic Network 1996,6163,9108,7030,8901,9603,0.0,0.0,0.0,,,,
-4164,South Yemen,6164,South Yemen,6164,9108,7024,8901,9603,-76.0,-138.0,67.0,,,,
-4165,Bissau,6165,Bissau,6165,9108,7022,8901,9603,-173.0,253.0,27.0,,,,
-4166,Korean 1995,6166,Korean Datum 1995,6166,9108,7030,8901,9603,0.0,0.0,0.0,,,,
-4167,NZGD2000,6167,New Zealand Geodetic Datum 2000,6167,9108,7019,8901,9603,0.0,0.0,0.0,,,,
-4168,Accra,6168,Accra,6168,9108,7029,8901,9603,-199.0,32.0,322.0,,,,
-4169,American Samoa 1962,6169,American Samoa 1962,6169,9108,7008,8901,9603,-115.0,118.0,426.0,,,,
-4170,SIRGAS,6170,Sistema de Referencia Geocentrico para America del Sur,6170,9108,7019,8901,9603,0.0,0.0,0.0,,,,
-4171,RGF93,6171,Reseau Geodesique Francais 1993,6171,9108,7019,8901,9603,0.0,0.0,0.0,,,,
-4172,POSGAR,6172,Posiciones Geodesicas Argentinas,6172,9108,7019,8901,9603,0.0,0.0,0.0,,,,
-4173,IRENET95,6173,IRENET95,6173,9108,7019,8901,9603,0.0,0.0,0.0,,,,
-4174,Sierra Leone 1924,6174,Sierra Leone Colony 1924,6174,9108,7029,8901,,,,,,,,
-4175,Sierra Leone 1968,6175,Sierra Leone 1968,6175,9108,7012,8901,9603,-88.0,4.0,101.0,,,,
-4176,Australian Antarctic,6176,Australian Antarctic Datum 1998,6176,9108,7019,8901,,,,,,,,
-4178,"Pulkovo 1942(83)",6178,"Pulkovo 1942/83",6178,9108,7024,8901,9607,24.0,-123.0,-94.0,-0.02,0.25,0.13,1.1
-4179,"Pulkovo 1942(58)",6179,"Pulkovo 1942/58",6179,9108,7024,8901,9606,33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84
-4180,EST97,6180,Estonia 1997,6180,9108,7019,8901,9603,0.0,0.0,0.0,,,,
-4181,Luxembourg 1930,6181,Luxembourg 1930,6181,9108,7022,8901,9606,-193.0,13.7,-39.3,-0.41,-2.933,2.688,0.43
-4182,Azores Occidental 1939,6182,Azores Occidental Islands 1939,6182,9108,7022,8901,,,,,,,,
-4183,Azores Central 1948,6183,Azores Central Islands 1948,6183,9108,7022,8901,,,,,,,,
-4184,Azores Oriental 1940,6184,Azores Oriental Islands 1940,6184,9108,7022,8901,,,,,,,,
-4185,Madeira 1936,6185,Madeira 1936,6185,9108,7022,8901,,,,,,,,
-4188,OSNI 1952,6188,OSNI 1952,6188,9108,7001,8901,,,,,,,,
-4189,REGVEN,6189,Red Geodesica Venezolana,6189,9108,7019,8901,9603,0.0,0.0,0.0,,,,
-4190,POSGAR 98,6190,Posiciones Geodesicas Argentinas 1998,6190,9108,7019,8901,9603,0.0,0.0,0.0,,,,
-4191,Albanian 1987,6191,Albanian 1987,6191,9108,7024,8901,,,,,,,,
-4192,Douala 1948,6192,Douala 1948,6192,9108,7022,8901,,,,,,,,
-4193,Manoca 1962,6193,Manoca 1962,6193,9108,7011,8901,9603,-70.9,-151.8,-41.4,,,,
-4194,Qornoq 1927,6194,Qornoq 1927,6194,9108,7022,8901,,,,,,,,
-4195,Scoresbysund 1952,6195,Scoresbysund 1952,6195,9108,7022,8901,9606,105.0,326.0,-102.5,0.0,0.0,0.814,-0.6
-4196,Ammassalik 1958,6196,Ammassalik 1958,6196,9108,7022,8901,9606,-45.0,417.0,-3.5,0.0,0.0,0.814,-0.6
-4197,Garoua,6197,Garoua,6197,9108,7012,8901,,,,,,,,
-4198,Kousseri,6198,Kousseri,6198,9108,7012,8901,,,,,,,,
-4199,Egypt 1930,6199,Egypt 1930,6199,9108,7022,8901,,,,,,,,
-4200,Pulkovo 1995,6200,Pulkovo 1995,6200,9108,7024,8901,,,,,,,,
-4201,Adindan,6201,Adindan,6201,9108,7012,8901,,,,,,,,
-4202,AGD66,6202,Australian Geodetic Datum 1966,6202,9108,7003,8901,,,,,,,,
-4203,AGD84,6203,Australian Geodetic Datum 1984,6203,9108,7003,8901,,,,,,,,
-4204,Ain el Abd,6204,Ain el Abd 1970,6204,9108,7022,8901,,,,,,,,
-4205,Afgooye,6205,Afgooye,6205,9108,7024,8901,9603,-43.0,-163.0,45.0,,,,
-4206,Agadez,6206,Agadez,6206,9108,7011,8901,,,,,,,,
-4207,Lisbon,6207,Lisbon 1937,6207,9108,7022,8901,,,,,,,,
-4208,Aratu,6208,Aratu,6208,9108,7022,8901,,,,,,,,
-4209,Arc 1950,6209,Arc 1950,6209,9108,7013,8901,,,,,,,,
-4210,Arc 1960,6210,Arc 1960,6210,9108,7012,8901,,,,,,,,
-4211,Batavia,6211,Batavia,6211,9108,7004,8901,,,,,,,,
-4212,Barbados 1938,6212,Barbados 1938,6212,9108,7012,8901,,,,,,,,
-4213,Beduaram,6213,Beduaram,6213,9108,7011,8901,,,,,,,,
-4214,Beijing 1954,6214,Beijing 1954,6214,9108,7024,8901,,,,,,,,
-4215,Belge 1950,6215,Reseau National Belge 1950,6215,9108,7022,8901,,,,,,,,
-4216,Bermuda 1957,6216,Bermuda 1957,6216,9108,7008,8901,9603,-73.0,213.0,296.0,,,,
-4218,Bogota 1975,6218,Bogota 1975,6218,9108,7022,8901,,,,,,,,
-4219,Bukit Rimpah,6219,Bukit Rimpah,6219,9108,7004,8901,9603,-384.0,664.0,-48.0,,,,
-4220,Camacupa,6220,Camacupa,6220,9108,7012,8901,,,,,,,,
-4221,Campo Inchauspe,6221,Campo Inchauspe,6221,9108,7022,8901,,,,,,,,
-4222,Cape,6222,Cape,6222,9108,7013,8901,,,,,,,,
-4223,Carthage,6223,Carthage,6223,9108,7011,8901,,,,,,,,
-4224,Chua,6224,Chua,6224,9108,7022,8901,9603,-134.0,229.0,-29.0,,,,
-4225,Corrego Alegre,6225,Corrego Alegre,6225,9108,7022,8901,9603,-206.0,172.0,-6.0,,,,
-4226,"Cote d'Ivoire",6226,"Cote d'Ivoire",6226,9108,7011,8901,,,,,,,,
-4227,Deir ez Zor,6227,Deir ez Zor,6227,9108,7011,8901,,,,,,,,
-4228,Douala,6228,Douala,6228,9108,7011,8901,,,,,,,,
-4229,Egypt 1907,6229,Egypt 1907,6229,9108,7020,8901,,,,,,,,
-4230,ED50,6230,European Datum 1950,6230,9108,7022,8901,,,,,,,,
-4231,ED87,6231,European Datum 1987,6231,9108,7022,8901,9606,-82.981,-99.719,-110.709,-0.5076,0.1503,0.3898,-0.3143
-4232,Fahud,6232,Fahud,6232,9108,7012,8901,,,,,,,,
-4233,Gandajika 1970,6233,Gandajika 1970,6233,9108,7022,8901,,,,,,,,
-4234,Garoua,6234,Garoua,6234,9108,7011,8901,,,,,,,,
-4235,Guyane Francaise,6235,Guyane Francaise,6235,9108,7022,8901,,,,,,,,
-4236,Hu Tzu Shan,6236,Hu Tzu Shan,6236,9108,7022,8901,9603,-637.0,-549.0,-203.0,,,,
-4237,HD72,6237,Hungarian Datum 1972,6237,9108,7036,8901,,,,,,,,
-4238,ID74,6238,Indonesian Datum 1974,6238,9108,7021,8901,,,,,,,,
-4239,Indian 1954,6239,Indian 1954,6239,9108,7015,8901,9603,217.0,823.0,299.0,,,,
-4240,Indian 1975,6240,Indian 1975,6240,9108,7015,8901,,,,,,,,
-4241,Jamaica 1875,6241,Jamaica 1875,6241,9108,7034,8901,,,,,,,,
-4242,JAD69,6242,Jamaica 1969,6242,9108,7008,8901,,,,,,,,
-4243,Kalianpur 1880,6243,Kalianpur 1880,6243,9108,7042,8901,,,,,,,,
-4244,Kandawala,6244,Kandawala,6244,9108,7015,8901,9603,-97.0,787.0,86.0,,,,
-4245,Kertau,6245,Kertau,6245,9108,7018,8901,9603,-11.0,851.0,5.0,,,,
-4246,KOC,6246,Kuwait Oil Company,6246,9108,7012,8901,,,,,,,,
-4247,La Canoa,6247,La Canoa,6247,9108,7022,8901,9603,-273.5,110.6,-357.9,,,,
-4248,PSAD56,6248,Provisional South American Datum 1956,6248,9108,7022,8901,,,,,,,,
-4249,Lake,6249,Lake,6249,9108,7022,8901,,,,,,,,
-4250,Leigon,6250,Leigon,6250,9108,7012,8901,9603,-130.0,29.0,364.0,,,,
-4251,Liberia 1964,6251,Liberia 1964,6251,9108,7012,8901,9603,-90.0,40.0,88.0,,,,
-4252,Lome,6252,Lome,6252,9108,7011,8901,,,,,,,,
-4253,Luzon 1911,6253,Luzon 1911,6253,9108,7008,8901,,,,,,,,
-4254,Hito XVIII 1963,6254,Hito XVIII 1963,6254,9108,7022,8901,9606,18.38,192.45,96.82,0.056,-0.142,-0.2,-0.0013
-4255,Herat North,6255,Herat North,6255,9108,7022,8901,9603,-333.0,-222.0,114.0,,,,
-4256,Mahe 1971,6256,Mahe 1971,6256,9108,7012,8901,9603,41.0,-220.0,-134.0,,,,
-4257,Makassar,6257,Makassar,6257,9108,7004,8901,9603,-587.8,519.75,145.76,,,,
-4258,ETRS89,6258,European Terrestrial Reference System 1989,6258,9108,7019,8901,,,,,,,,
-4259,Malongo 1987,6259,Malongo 1987,6259,9108,7022,8901,,,,,,,,
-4260,Manoca,6260,Manoca,6260,9108,7012,8901,9603,-70.9,-151.8,-41.4,,,,
-4261,Merchich,6261,Merchich,6261,9108,7011,8901,9603,31.0,146.0,47.0,,,,
-4262,Massawa,6262,Massawa,6262,9108,7004,8901,9603,639.0,405.0,60.0,,,,
-4263,Minna,6263,Minna,6263,9108,7012,8901,,,,,,,,
-4264,Mhast,6264,Mhast,6264,9108,7022,8901,9603,-252.95,-4.11,-96.38,,,,
-4265,Monte Mario,6265,Monte Mario,6265,9108,7022,8901,,,,,,,,
-4266,"M'poraloko",6266,"M'poraloko",6266,9108,7011,8901,,,,,,,,
-4267,NAD27,6267,North American Datum 1927,6267,9108,7008,8901,,,,,,,,
-4268,NAD27 Michigan,6268,NAD Michigan,6268,9108,7009,8901,,,,,,,,
-4269,NAD83,6269,North American Datum 1983,6269,9108,7019,8901,,,,,,,,
-4270,Nahrwan 1967,6270,Nahrwan 1967,6270,9108,7012,8901,,,,,,,,
-4271,Naparima 1972,6271,Naparima 1972,6271,9108,7022,8901,,,,,,,,
-4272,NZGD49,6272,New Zealand Geodetic Datum 1949,6272,9108,7022,8901,,,,,,,,
-4273,NGO 1948,6273,NGO 1948,6273,9108,7005,8901,9606,278.3,93.0,474.5,7.889,0.05,-6.61,6.21
-4274,Datum 73,6274,Datum 73,6274,9108,7022,8901,,,,,,,,
-4275,NTF,6275,Nouvelle Triangulation Francaise,6275,9108,7011,8901,9603,-168.0,-60.0,320.0,,,,
-4276,NSWC 9Z-2,6276,NSWC 9Z-2,6276,9108,7025,8901,,,,,,,,
-4277,OSGB 1936,6277,OSGB 1936,6277,9108,7001,8901,,,,,,,,
-4278,OSGB70,6278,"OSGB 1970 (SN)",6278,9108,7001,8901,,,,,,,,
-4279,"OS(SN)80",6279,"OS (SN) 1980",6279,9108,7001,8901,,,,,,,,
-4280,Padang,6280,Padang 1884,6280,9108,7004,8901,,,,,,,,
-4281,Palestine 1923,6281,Palestine 1923,6281,9108,7010,8901,,,,,,,,
-4282,Pointe Noire,6282,Congo 1960 Pointe Noire,6282,9108,7011,8901,,,,,,,,
-4283,GDA94,6283,Geocentric Datum of Australia 1994,6283,9108,7019,8901,9603,0.0,0.0,0.0,,,,
-4284,Pulkovo 1942,6284,Pulkovo 1942,6284,9108,7024,8901,,,,,,,,
-4285,Qatar 1974,6285,Qatar 1974,6285,9108,7022,8901,,,,,,,,
-4286,Qatar 1948,6286,Qatar 1948,6286,9108,7020,8901,,,,,,,,
-4287,Qornoq,6287,Qornoq,6287,9108,7022,8901,9603,164.0,138.0,-189.0,,,,
-4288,Loma Quintana,6288,Loma Quintana,6288,9108,7022,8901,,,,,,,,
-4289,Amersfoort,6289,Amersfoort,6289,9108,7004,8901,,,,,,,,
-4291,SAD69,6291,South American Datum 1969,6291,9108,7036,8901,,,,,,,,
-4292,Sapper Hill 1943,6292,Sapper Hill 1943,6292,9108,7022,8901,9603,-355.0,21.0,72.0,,,,
-4293,Schwarzeck,6293,Schwarzeck,6293,9108,7046,8901,,,,,,,,
-4294,Segora,6294,Segora,6294,9108,7004,8901,,,,,,,,
-4295,Serindung,6295,Serindung,6295,9108,7004,8901,,,,,,,,
-4296,Sudan,6296,Sudan,6296,9108,7011,8901,,,,,,,,
-4297,Tananarive,6297,Tananarive 1925,6297,9108,7022,8901,9603,-189.0,-242.0,-91.0,,,,
-4298,Timbalai 1948,6298,Timbalai 1948,6298,9108,7016,8901,,,,,,,,
-4299,TM65,6299,TM65,6299,9108,7002,8901,,,,,,,,
-4300,TM75,6300,TM75,6300,9108,7002,8901,,,,,,,,
-4301,Tokyo,6301,Tokyo,6301,9108,7004,8901,,,,,,,,
-4302,Trinidad 1903,6302,Trinidad 1903,6302,9108,7007,8901,9603,-61.702,284.488,472.052,,,,
-4303,"TC(1948)",6303,Trucial Coast 1948,6303,9108,7020,8901,,,,,,,,
-4304,Voirol 1875,6304,Voirol 1875,6304,9108,7011,8901,9603,-73.0,-247.0,227.0,,,,
-4306,Bern 1938,6306,Bern 1938,6306,9108,7004,8901,,,,,,,,
-4307,Nord Sahara 1959,6307,Nord Sahara 1959,6307,9108,7012,8901,,,,,,,,
-4308,RT38,6308,Stockholm 1938,6308,9108,7004,8901,,,,,,,,
-4309,Yacare,6309,Yacare,6309,9108,7022,8901,9603,-155.0,171.0,37.0,,,,
-4310,Yoff,6310,Yoff,6310,9108,7011,8901,,,,,,,,
-4311,Zanderij,6311,Zanderij,6311,9108,7022,8901,9603,-265.0,120.0,-358.0,,,,
-4312,MGI,6312,Militar-Geographische Institut,6312,9108,7004,8901,,,,,,,,
-4313,Belge 1972,6313,Reseau National Belge 1972,6313,9108,7022,8901,,,,,,,,
-4314,DHDN,6314,Deutsches Hauptdreiecksnetz,6314,9108,7004,8901,,,,,,,,
-4315,Conakry 1905,6315,Conakry 1905,6315,9108,7011,8901,9603,-23.0,259.0,-9.0,,,,
-4316,Dealul Piscului 1933,6316,Dealul Piscului 1933,6316,9108,7022,8901,9603,103.25,-100.4,-307.19,,,,
-4317,Dealul Piscului 1970,6317,Dealul Piscului 1970,6317,9108,7024,8901,,,,,,,,
-4318,NGN,6318,National Geodetic Network,6318,9108,7030,8901,,,,,,,,
-4319,KUDAMS,6319,Kuwait Utility,6319,9108,7019,8901,,,,,,,,
-4322,WGS 72,6322,World Geodetic System 1972,6322,9108,7043,8901,,,,,,,,
-4324,WGS 72BE,6324,WGS 72 Transit Broadcast Ephemeris,6324,9108,7043,8901,9606,0.0,0.0,1.9,0.0,0.0,0.814,-0.38
-4326,WGS 84,6326,World Geodetic System 1984,6326,9108,7030,8901,,,,,,,,
-4600,Anguilla 1957,6600,Anguilla 1957,6600,9108,7012,8901,,,,,,,,
-4601,Antigua 1943,6601,Antigua 1943,6601,9108,7012,8901,9603,-255.0,-15.0,71.0,,,,
-4602,Dominica 1945,6602,Dominica 1945,6602,9108,7012,8901,9603,725.0,685.0,536.0,,,,
-4603,Grenada 1953,6603,Grenada 1953,6603,9108,7012,8901,9603,72.0,213.7,93.0,,,,
-4604,Montserrat 1958,6604,Montserrat 1958,6604,9108,7012,8901,9603,174.0,359.0,365.0,,,,
-4605,St. Kitts 1955,6605,St. Kitts 1955,6605,9108,7012,8901,9603,9.0,183.0,236.0,,,,
-4606,St. Lucia 1955,6606,St. Lucia 1955,6606,9108,7012,8901,9603,-149.0,128.0,296.0,,,,
-4607,St. Vincent 1945,6607,St. Vincent 1945,6607,9108,7012,8901,,,,,,,,
-4608,"NAD27(76)",6608,"North American Datum 1927 (1976)",6608,9108,7008,8901,,,,,,,,
-4609,"NAD27(CGQ77)",6609,"North American Datum 1927 (CGQ77)",6609,9108,7008,8901,,,,,,,,
-4610,Xian 1980,6610,Xian 1980,6610,9108,7049,8901,,,,,,,,
-4611,Hong Kong 1980,6611,Hong Kong 1980,6611,9108,7022,8901,9606,-162.619,-276.959,-161.764,0.067753,-2.243649,-1.158827,-1.094246
-4612,JGD2000,6612,Japanese Geodetic Datum 2000,6612,9108,7019,8901,9603,0.0,0.0,0.0,,,,
-4613,Segara,6613,Gunung Segara,6613,9108,7004,8901,9603,-404.78,685.68,45.47,,,,
-4614,QND95,6614,Qatar National Datum 1995,6614,9108,7022,8901,9606,-119.4248,-303.65872,-11.00061,1.164298,0.174458,1.096259,3.657065
-4615,Porto Santo,6615,Porto Santo,6615,9108,7022,8901,,,,,,,,
-4616,Selvagem Grande,6616,Selvagem Grande,6616,9108,7022,8901,,,,,,,,
-4617,"NAD83(CSRS)",6140,NAD83 Canadian Spatial Reference System,6140,9108,7019,8901,9603,0.0,0.0,0.0,,,,
-4801,"Bern 1898 (Bern)",6801,"CH1903 (Bern)",6149,9108,7004,8907,,,,,,,,
-4802,"Bogota 1975 (Bogota)",6802,"Bogota 1975 (Bogota)",6218,9108,7022,8904,,,,,,,,
-4803,"Lisbon (Lisbon)",6803,"Lisbon 1937 (Lisbon)",6207,9108,7022,8902,,,,,,,,
-4804,"Makassar (Jakarta)",6804,"Makassar (Jakarta)",6257,9108,7004,8908,9603,-587.8,519.75,145.76,,,,
-4805,"MGI (Ferro)",6805,"Militar-Geographische Institut (Ferro)",6312,9108,7004,8909,,,,,,,,
-4806,"Monte Mario (Rome)",6806,"Monte Mario (Rome)",6265,9108,7022,8906,,,,,,,,
-4807,"NTF (Paris)",6807,"Nouvelle Triangulation Francaise (Paris)",6275,9105,7011,8903,9603,-168.0,-60.0,320.0,,,,
-4808,"Padang (Jakarta)",6808,"Padang 1884 (Jakarta)",6280,9108,7004,8908,,,,,,,,
-4809,"Belge 1950 (Brussels)",6809,"Reseau National Belge 1950 (Brussels)",6215,9108,7022,8910,,,,,,,,
-4810,"Tananarive (Paris)",6810,"Tananarive 1925 (Paris)",6297,9105,7022,8903,9603,-189.0,-242.0,-91.0,,,,
-4811,"Voirol 1875 (Paris)",6811,"Voirol 1875 (Paris)",6304,9105,7011,8903,9603,-73.0,-247.0,227.0,,,,
-4813,"Batavia (Jakarta)",6813,"Batavia (Jakarta)",6211,9108,7004,8908,,,,,,,,
-4814,"RT38 (Stockholm)",6814,"Stockholm 1938 (Stockholm)",6308,9108,7004,8911,,,,,,,,
-4815,"Greek (Athens)",6815,"Greek (Athens)",6120,9108,7004,8912,,,,,,,,
-4816,"Carthage (Paris)",6816,"Carthage (Paris)",6816,9105,7011,8903,,,,,,,,
-4817,"NGO 1948 (Oslo)",6817,"NGO 1948 (Oslo)",6273,9108,7005,8913,9606,278.3,93.0,474.5,7.889,0.05,-6.61,6.21
-4818,"S-JTSK (Ferro)",6818,"S-JTSK (Ferro)",6818,9108,7004,8909,,,,,,,,
-4819,"Nord Sahara 1959 (Paris)",6819,"Nord Sahara 1959 (Paris)",6819,9105,7012,8903,,,,,,,,
-4820,"Segara (Jakarta)",6820,"Gunung Segara (Jakarta)",6820,9108,7004,8908,,,,,,,,
-4901,"ATF (Paris)",6901,"Ancienne Triangulation Francaise (Paris)",6901,9105,7027,8903,,,,,,,,
-4902,"NDG (Paris)",6902,"Nord de Guerre (Paris)",6902,9105,7027,8903,,,,,,,,
-4903,"Madrid 1870 (Madrid)",6903,"Madrid 1870 (Madrid)",6903,9108,7028,8905,,,,,,,,
-4904,"Lisbon 1890 (Lisbon)",6904,"Lisbon 1890 (Lisbon)",6904,9108,7004,8902,,,,,,,,
diff --git a/src/tiff/csv/gdatum_alias.c b/src/tiff/csv/gdatum_alias.c
deleted file mode 100644
index acfd5d0..0000000
--- a/src/tiff/csv/gdatum_alias.c
+++ /dev/null
@@ -1,11 +0,0 @@
-#include "defs.h"
-datafile_rows_t gdatum_alias_row_1[] = {"GEOD_DATUM_ALIAS_CODE","GEOD_DATUM_ALIAS_NAME","GEOD_DATUM_CODE","REVISION_DATE","INFORMATION_SOURCE","DATA_SOURCE","REMARKS","CHANGE_ID",NULL};
-datafile_rows_t gdatum_alias_row_2[] = {"6400","ETRS89","6258","1999-04-22 00:00:00","","EPSG","Coincides with WGS84 at the one metre level.","99.111",NULL};
-datafile_rows_t gdatum_alias_row_3[] = {"6401","South Africa","6222","1996-10-18 00:00:00","Private Communication, Directorate of Surveys and Land Information, Cape Town.","EPSG","","",NULL};
-datafile_rows_t gdatum_alias_row_4[] = {"6402","Genuk","6211","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t gdatum_alias_row_5[] = {"6403","NAD83 (1986)","6269","1996-12-12 00:00:00","","EPSG","","",NULL};
-datafile_rows_t gdatum_alias_row_6[] = {"6404","Old Greek","6120","1997-06-16 00:00:00","Topographic Department; National Technical University of Greece.","EPSG","Adjective \"Old\" applied since introduction of GGRS87 (code 6121)","",NULL};
-datafile_rows_t gdatum_alias_row_7[] = {"6405","Rikets koordinatsystem 1938","6308","1997-11-13 00:00:00","National Land Survey of Sweden","EPSG","","",NULL};
-datafile_rows_t gdatum_alias_row_8[] = {"6406","Samboja P2 exc T9","6125","1997-11-13 00:00:00","Total Indonesia","EPSG","","",NULL};
-
-datafile_rows_t *gdatum_alias_rows[] = {gdatum_alias_row_1,gdatum_alias_row_2,gdatum_alias_row_3,gdatum_alias_row_4,gdatum_alias_row_5,gdatum_alias_row_6,gdatum_alias_row_7,gdatum_alias_row_8,NULL};
diff --git a/src/tiff/csv/gdatum_alias.csv b/src/tiff/csv/gdatum_alias.csv
deleted file mode 100644
index 894d9f6..0000000
--- a/src/tiff/csv/gdatum_alias.csv
+++ /dev/null
@@ -1,8 +0,0 @@
-"GEOD_DATUM_ALIAS_CODE","GEOD_DATUM_ALIAS_NAME","GEOD_DATUM_CODE","REVISION_DATE","INFORMATION_SOURCE","DATA_SOURCE","REMARKS","CHANGE_ID"
-6400,ETRS89,6258,1999-04-22 00:00:00,,EPSG,Coincides with WGS84 at the one metre level.,99.111
-6401,South Africa,6222,1996-10-18 00:00:00,"Private Communication, Directorate of Surveys and Land Information, Cape Town.",EPSG,,
-6402,Genuk,6211,1996-10-18 00:00:00,,EPSG,,
-6403,NAD83 (1986),6269,1996-12-12 00:00:00,,EPSG,,
-6404,Old Greek,6120,1997-06-16 00:00:00,Topographic Department; National Technical University of Greece.,EPSG,"Adjective \"Old\" applied since introduction of GGRS87 (code 6121)",
-6405,Rikets koordinatsystem 1938,6308,1997-11-13 00:00:00,National Land Survey of Sweden,EPSG,,
-6406,Samboja P2 exc T9,6125,1997-11-13 00:00:00,Total Indonesia,EPSG,,
diff --git a/src/tiff/csv/geod_datum.c b/src/tiff/csv/geod_datum.c
deleted file mode 100644
index 7ed25c5..0000000
--- a/src/tiff/csv/geod_datum.c
+++ /dev/null
@@ -1,213 +0,0 @@
-#include "defs.h"
-datafile_rows_t geod_datum_row_1[] = {"GEOD_DATUM_CODE","GEOD_DAT_EPSG_NAME","GEOD_DAT_EPSG_ABBR","GEOD_DAT_USER_NAME","ORIGIN_DESCRIPTION","ELLIPSOID_CODE","REVISION_DATE","INFORMATION_SOURCE","DATA_SOURCE","REMARKS","CHANGE_ID",NULL};
-datafile_rows_t geod_datum_row_2[] = {"6001","Not specified (based on ellipsoid 7001)","","","","7001","1996-09-12 00:00:00","","EPSG","Not a valid datum.  Included for coordinate systems where datum is unknown.","96.08",NULL};
-datafile_rows_t geod_datum_row_3[] = {"6002","Not specified (based on ellipsoid 7002)","","","","7002","1996-09-12 00:00:00","","EPSG","Not a valid datum.  Included for coordinate systems where datum is unknown.","96.08",NULL};
-datafile_rows_t geod_datum_row_4[] = {"6003","Not specified (based on ellipsoid 7003)","","","","7003","1996-09-12 00:00:00","","EPSG","Not a valid datum.  Included for coordinate systems where datum is unknown.","96.08",NULL};
-datafile_rows_t geod_datum_row_5[] = {"6004","Not specified (based on ellipsoid 7004)","","","","7004","1996-09-12 00:00:00","","EPSG","Not a valid datum.  Included for coordinate systems where datum is unknown.","96.08",NULL};
-datafile_rows_t geod_datum_row_6[] = {"6005","Not specified (based on ellipsoid 7005)","","","","7005","1996-09-12 00:00:00","","EPSG","Not a valid datum.  Included for coordinate systems where datum is unknown.","96.08",NULL};
-datafile_rows_t geod_datum_row_7[] = {"6006","Not specified (based on ellipsoid 7006)","","","","7006","1996-09-12 00:00:00","","EPSG","Not a valid datum.  Included for coordinate systems where datum is unknown.","96.08",NULL};
-datafile_rows_t geod_datum_row_8[] = {"6007","Not specified (based on ellipsoid 7007)","","","","7007","1996-09-12 00:00:00","","EPSG","Not a valid datum.  Included for coordinate systems where datum is unknown.","96.08",NULL};
-datafile_rows_t geod_datum_row_9[] = {"6008","Not specified (based on ellipsoid 7008)","","","","7008","1996-09-12 00:00:00","","EPSG","Not a valid datum.  Included for coordinate systems where datum is unknown.","96.08",NULL};
-datafile_rows_t geod_datum_row_10[] = {"6009","Not specified (based on ellipsoid 7009)","","","","7009","1996-09-12 00:00:00","","EPSG","Not a valid datum.  Included for coordinate systems where datum is unknown.","96.08",NULL};
-datafile_rows_t geod_datum_row_11[] = {"6010","Not specified (based on ellipsoid 7010)","","","","7010","1996-09-12 00:00:00","","EPSG","Not a valid datum.  Included for coordinate systems where datum is unknown.","96.08",NULL};
-datafile_rows_t geod_datum_row_12[] = {"6011","Not specified (based on ellipsoid 7011)","","","","7011","1996-09-12 00:00:00","","EPSG","Not a valid datum.  Included for coordinate systems where datum is unknown.","96.08",NULL};
-datafile_rows_t geod_datum_row_13[] = {"6012","Not specified (based on ellipsoid 7012)","","","","7012","1996-09-12 00:00:00","","EPSG","Not a valid datum.  Included for coordinate systems where datum is unknown.","96.08",NULL};
-datafile_rows_t geod_datum_row_14[] = {"6013","Not specified (based on ellipsoid 7013)","","","","7013","1996-09-12 00:00:00","","EPSG","Not a valid datum.  Included for coordinate systems where datum is unknown.","96.08",NULL};
-datafile_rows_t geod_datum_row_15[] = {"6014","Not specified (based on ellipsoid 7014)","","","","7014","1996-09-12 00:00:00","","EPSG","Not a valid datum.  Included for coordinate systems where datum is unknown.","96.08",NULL};
-datafile_rows_t geod_datum_row_16[] = {"6015","Not specified (based on ellipsoid 7015)","","","","7015","1996-09-12 00:00:00","","EPSG","Not a valid datum.  Included for coordinate systems where datum is unknown.","96.08",NULL};
-datafile_rows_t geod_datum_row_17[] = {"6016","Not specified (based on ellipsoid 7016)","","","","7016","1996-09-12 00:00:00","","EPSG","Not a valid datum.  Included for coordinate systems where datum is unknown.","96.08",NULL};
-datafile_rows_t geod_datum_row_18[] = {"6017","Not specified (based on ellipsoid 7017)","","","","7044","1996-09-12 00:00:00","","EPSG","Not a valid datum.  Included for coordinate systems where datum is unknown.","96.08",NULL};
-datafile_rows_t geod_datum_row_19[] = {"6018","Not specified (based on ellipsoid 7018)","","","","7018","1996-09-12 00:00:00","","EPSG","Not a valid datum.  Included for coordinate systems where datum is unknown.","96.08",NULL};
-datafile_rows_t geod_datum_row_20[] = {"6019","Not specified (based on ellipsoid 7019)","","","","7019","1996-09-12 00:00:00","","EPSG","Not a valid datum.  Included for coordinate systems where datum is unknown.","96.08",NULL};
-datafile_rows_t geod_datum_row_21[] = {"6020","Not specified (based on ellipsoid 7020)","","","","7020","1996-09-12 00:00:00","","EPSG","Not a valid datum.  Included for coordinate systems where datum is unknown.","96.08",NULL};
-datafile_rows_t geod_datum_row_22[] = {"6021","Not specified (based on ellipsoid 7021)","","","","7021","1996-09-12 00:00:00","","EPSG","Not a valid datum.  Included for coordinate systems where datum is unknown.","96.08",NULL};
-datafile_rows_t geod_datum_row_23[] = {"6022","Not specified (based on ellipsoid 7022)","","","","7022","1996-09-12 00:00:00","","EPSG","Not a valid datum.  Included for coordinate systems where datum is unknown.","96.08",NULL};
-datafile_rows_t geod_datum_row_24[] = {"6024","Not specified (based on ellipsoid 7024)","","","","7024","1996-09-12 00:00:00","","EPSG","Not a valid datum.  Included for coordinate systems where datum is unknown.","96.08",NULL};
-datafile_rows_t geod_datum_row_25[] = {"6025","Not specified (based on ellipsoid 7025)","","","","7025","1996-09-12 00:00:00","","EPSG","Not a valid datum.  Included for coordinate systems where datum is unknown.","96.08",NULL};
-datafile_rows_t geod_datum_row_26[] = {"6027","Not specified (based on ellipsoid 7027)","","","","7027","1996-09-12 00:00:00","","EPSG","Not a valid datum.  Included for coordinate systems where datum is unknown.","96.08",NULL};
-datafile_rows_t geod_datum_row_27[] = {"6028","Not specified (based on ellipsoid 7028)","","","","7028","1996-09-12 00:00:00","","EPSG","Not a valid datum.  Included for coordinate systems where datum is unknown.","96.08",NULL};
-datafile_rows_t geod_datum_row_28[] = {"6029","Not specified (based on ellipsoid 7029)","","","","7029","1996-09-12 00:00:00","","EPSG","Not a valid datum.  Included for coordinate systems where datum is unknown.","96.08",NULL};
-datafile_rows_t geod_datum_row_29[] = {"6030","Not specified (based on ellipsoid 7030)","","","","7030","1996-09-12 00:00:00","","EPSG","Not a valid datum.  Included for coordinate systems where datum is unknown.","96.08",NULL};
-datafile_rows_t geod_datum_row_30[] = {"6031","Not specified (based on ellipsoid 7031)","","","","7031","1996-09-12 00:00:00","","EPSG","Not a valid datum.  Included for coordinate systems where datum is unknown.","96.08",NULL};
-datafile_rows_t geod_datum_row_31[] = {"6032","Not specified (based on ellipsoid 7032)","","","","7032","1996-09-12 00:00:00","","EPSG","Not a valid datum.  Included for coordinate systems where datum is unknown.","96.08",NULL};
-datafile_rows_t geod_datum_row_32[] = {"6033","Not specified (based on ellipsoid 7033)","","","","7033","1996-09-12 00:00:00","","EPSG","Not a valid datum.  Included for coordinate systems where datum is unknown.","96.08",NULL};
-datafile_rows_t geod_datum_row_33[] = {"6034","Not specified (based on ellipsoid 7034)","","","","7034","1996-09-12 00:00:00","","EPSG","Not a valid datum.  Included for coordinate systems where datum is unknown.","96.08",NULL};
-datafile_rows_t geod_datum_row_34[] = {"6035","Not specified (based on ellipsoid 7035)","","","","7035","1996-09-12 00:00:00","","EPSG","Not a valid datum.  Included for coordinate systems where datum is unknown.","96.08",NULL};
-datafile_rows_t geod_datum_row_35[] = {"6036","Not specified (based on ellipsoid 7036)","","","","7036","1996-09-12 00:00:00","","EPSG","Not a valid datum.  Included for coordinate systems where datum is unknown.","",NULL};
-datafile_rows_t geod_datum_row_36[] = {"6041","Not specified (based on ellipsoid 7041)","","","","7041","1999-10-20 00:00:00","","EPSG","Not a valid datum.  Included for coordinate systems where datum is unknown.","",NULL};
-datafile_rows_t geod_datum_row_37[] = {"6042","Not specified (based on ellipsoid 7042)","","","","7042","1999-10-20 00:00:00","","EPSG","Not a valid datum.  Included for coordinate systems where datum is unknown.","",NULL};
-datafile_rows_t geod_datum_row_38[] = {"6043","Not specified (based on ellipsoid 7043)","","","","7043","1999-10-20 00:00:00","","EPSG","Not a valid datum.  Included for coordinate systems where datum is unknown.","",NULL};
-datafile_rows_t geod_datum_row_39[] = {"6044","Not specified (based on ellipsoid 7044)","","","","7044","1999-10-20 00:00:00","","EPSG","Not a valid datum.  Included for coordinate systems where datum is unknown.","",NULL};
-datafile_rows_t geod_datum_row_40[] = {"6045","Not specified (based on ellipsoid 7045)","","","","7045","1999-10-20 00:00:00","","EPSG","Not a valid datum.  Included for coordinate systems where datum is unknown.","",NULL};
-datafile_rows_t geod_datum_row_41[] = {"6120","Greek","","","Fundamental point: Athens Observatory; latitude 37 deg 58 min 20.132 sec N; longitude 23 deg 42 min 58.815 sec E of Greenwich","7004","1997-06-16 00:00:00","Topography Department; National Technical University of Athens","EPSG","See geodetic datum alias 6404.  Used as basis of topographic mapping based on Hatt projection.","",NULL};
-datafile_rows_t geod_datum_row_42[] = {"6121","Greek Geodetic Reference System 1987","GGRS87","","Fundamental point: Dionysos; latitude 38 deg 04 min 33.8 sec N; longitude 23 deg 55 min 51.0 sec E of Greenwich; geoid height 7.0 m.","7019","1997-06-16 00:00:00","L. Portokalakis; Public Petroleum Corporation of Greece","EPSG","Superseded (old) Greek datum.  Oil industry work based on ED50.","",NULL};
-datafile_rows_t geod_datum_row_43[] = {"6122","Average Terrestrial System 1977","ATS77","","","7041","1997-07-02 00:00:00","New Brunswick Geographic Information Corporation land and water information standards manual.","EPSG","In use from 1979.  To be phased out in late 1990's.","",NULL};
-datafile_rows_t geod_datum_row_44[] = {"6123","Kartastokoordinaattijarjestelma","KKJ","","Adjustment with fundamental point based on ED50 transformed to best fit the older VVJ adjustment.","7022","1997-07-22 00:00:00","www.nls.fi/maa/papers/kkj.html","EPSG","Adopted in 1970.","",NULL};
-datafile_rows_t geod_datum_row_45[] = {"6124","Rikets koordinatsystem 1990","RT90","","","7004","1997-11-13 00:00:00","National Land Survey of Sweden","EPSG","Supersedes RT38 adjustment (datum code 6308)","",NULL};
-datafile_rows_t geod_datum_row_46[] = {"6125","Samboja","","","Original origin station P2 Exc now destroyed.  Extensions recomputed using Toran station T9 as origin.","7004","1997-11-13 00:00:00","Total Indonesia.","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_47[] = {"6126","Lithuania 1994 (ETRS89)","LKS94 (ETRS89)","","Densification from 4  ETRF89 points.","7019","1998-03-12 00:00:00","HNIT-Baltic GeoInfoServisas","EPSG","Densification of ETRS89 during the 1992 Baltic campaign.","",NULL};
-datafile_rows_t geod_datum_row_48[] = {"6127","Tete","","","Fundamental point: Tete.","7008","1998-04-16 00:00:00","Mozambique Direc��o Nacional de Geografia e Cadastral (DINAGECA).","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_49[] = {"6128","Madzansua","","","Fundamental point: Madzansua.","7008","1998-04-16 00:00:00","Mozambique Direc��o Nacional de Geografia e Cadastral (DINAGECA).","EPSG","Superseded by transformation to Tete datum (datum code 6127).","",NULL};
-datafile_rows_t geod_datum_row_50[] = {"6129","Observatario","","","Fundamental point: Maputo observatory.","7008","1998-04-16 00:00:00","Mozambique Direc��o Nacional de Geografia e Cadastral (DINAGECA).","EPSG","Superseded by transformation to Tete datum (datum code 6127).","",NULL};
-datafile_rows_t geod_datum_row_51[] = {"6130","Moznet (ITRF94)","Moznet","","ITRF 1994 epoch 20","7030","1998-04-16 00:00:00","Mozambique Direc��o Nacional de Geografia e Cadastral (DINAGECA).","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_52[] = {"6131","Indian 1960","","","","7015","1998-11-11 00:00:00","","EPSG","DMA adjustment of IndoChina part of the Indian 1954 network to better fit local geoid.  Also known as Indian (DMA Reduced).","",NULL};
-datafile_rows_t geod_datum_row_53[] = {"6132","Final Datum 1958","FD58","","Fundamental point: Maniyur.  Latitude: 31 deg 23 min 59.19 sec N; Longitude: 48 deg 32 min 31.38 sec E (of Greenwich).","7012","1998-11-11 00:00:00","IOEPC records","EPSG","Network included in Nahrwan 1967 adjustment.","",NULL};
-datafile_rows_t geod_datum_row_54[] = {"6133","Estonia 1992","EST92","","Densification from 4  ETRS89 points.","7019","1998-12-14 00:00:00","http://www.geo.ut.ee/~raivo/estcoord.html","EPSG","Based on ETRS89 as established during the 1992 Baltic campaign.","",NULL};
-datafile_rows_t geod_datum_row_55[] = {"6134","PDO Survey Datum 1993","PSD93","","Adjustment best fitted to Fahud network.","7012","1999-04-22 00:00:00","Petroleum Development Oman","EPSG","Supersedes Fahud datum (code 6232). Maximum differences to Fahud adjustment are 20 metres.","",NULL};
-datafile_rows_t geod_datum_row_56[] = {"6135","Old Hawaiian","","","Fundamental Point: Oahu West Base Astro.  Latitude: 21 deg 18 min 13.89 sec N; longitude 157 deg 50 min 55.79 sec W (of Greenwich)","7008","1999-05-24 00:00:00","http://www.ngs.noaa.gov/ (NADCON readme file) and the NIMA publication http://164.214.2.59/publications/guides/Datum_Pamphlet/datum.html","EPSG","Hawaiian Islands were never on NAD27 but rather on Old Hawaiian Datum.  NADCON conversion program provides transform [...]
-datafile_rows_t geod_datum_row_57[] = {"6136","St. Lawrence Island","","","","7008","1999-05-24 00:00:00","http://www.ngs.noaa.gov/ (NADCON readme file)","EPSG","Many Alaskan islands were never on NAD27 but rather on independent datums.  NADCON conversion program provides transformation from St. Lawrence Island Datum to NAD83 (original 1986 realization) - making the transformation appear to user as if from NAD27.","",NULL};
-datafile_rows_t geod_datum_row_58[] = {"6137","St. Paul Island","","","","7008","1999-05-24 00:00:00","http://www.ngs.noaa.gov/ (NADCON readme file)","EPSG","Many Alaskan islands were never on NAD27 but rather on independent datums.  NADCON conversion program provides transformation from St. Paul Island Datum to NAD83 (original 1986 realization) - making the transformation appear to user as if from NAD27.","",NULL};
-datafile_rows_t geod_datum_row_59[] = {"6138","St. George Island","","","","7008","1999-05-24 00:00:00","http://www.ngs.noaa.gov/ (NADCON readme file)","EPSG","Many Alaskan islands were never on NAD27 but rather on independent datums.  NADCON conversion program provides transformation from St. George Island Datum to NAD83 (original 1986 realization) - making the transformation appear to user as if from NAD27.","",NULL};
-datafile_rows_t geod_datum_row_60[] = {"6139","Puerto Rico","","","","7008","1999-05-24 00:00:00","Ordnance Survey of Great Britain and http://www.ngs.noaa.gov/ (NADCON readme file).","EPSG","NADCON conversion program provides transformation from Puerto Rico Datum to NAD83 (original 1986 realization) but making the transformation appear to user as if from NAD27.","",NULL};
-datafile_rows_t geod_datum_row_61[] = {"6140","NAD83 Canadian Spatial Reference System","NAD83(CSRS98)","","","7019","1999-10-20 00:00:00","Service New Brunswick Land and Information Standards Manual","EPSG","Supersedes ATS77 from 1999 in New Brunswick.","",NULL};
-datafile_rows_t geod_datum_row_62[] = {"6141","Israel","","","Fundamental Point:  Latitude: 31 deg 44 min 03.817 sec N; Longitude: 35 deg 12 min 16.261 sec E (of Greenwich).","7019","1999-10-20 00:00:00","Survey of Israel.","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_63[] = {"6142","Locodjo 1965","","","Fundamental Point: T5 Banco. Latitude: 5 deg 18 min 50.5 sec N; Longitude: 4 deg 02 min 05.1 sec W (of Greenwich).","7012","1999-10-20 00:00:00","IGN Paris.","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_64[] = {"6143","Abidjan 1987","","","Fundamental Point: Abidjan I. Latitude: 5 deg 18 min 51.01 sec N; Longitude: 4 deg 02 min 06.04 sec W (of Greenwich).","7012","1999-10-20 00:00:00","IGN Paris.","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_65[] = {"6144","Kalianpur 1937","","","Fundamental Point: Kalianpur. Latitude: 24 deg  07 min 11.260 sec N; Longitude: 77 deg 39 min 17.570 sec E (of Greenwich).","7015","1999-10-20 00:00:00","G. Bomford; \"The Re-adjustment of the Indian Triangulation\"; Survey of India Professional Paper 28; 1939.","EPSG","Supercedes 1880 adjustment except for topographic mapping.  Superseded in Pakistan by 1962 metrication conversion and in India by 1975 metrication conv [...]
-datafile_rows_t geod_datum_row_66[] = {"6145","Kalianpur 1962","","","Fundamental Point: Kalianpur. Latitude: 24 deg  07 min 11.260 sec N; Longitude: 77 deg 39 min 17.570 sec E (of Greenwich).","7044","1999-10-20 00:00:00","","EPSG","1937 adjustment rescaled by ratio metric conversions of Indian foot (1937) to Indian foot (1962).","",NULL};
-datafile_rows_t geod_datum_row_67[] = {"6146","Kalianpur 1975","","","Fundamental Point: Kalianpur. Latitude: 24 deg  07 min 11.260 sec N; Longitude: 77 deg 39 min 17.570 sec E (of Greenwich).","7045","1999-10-20 00:00:00","","EPSG","1937 adjustment rescaled by ratio metric conversions of Indian foot (1937) to Indian foot (1975).","",NULL};
-datafile_rows_t geod_datum_row_68[] = {"6147","Hanoi 1972","","","","7024","1999-10-20 00:00:00","PetroVietnam","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_69[] = {"6148","Hartbeesthoek94","","","Coincident with ITRF91 (1994.0) at Hartbeesthoek astronomical observatory near Pretoria.","7030","1999-10-22 00:00:00","Directorate of Surveys and Mapping; http://w3sli.wcape.gov.za/surveys/mapping/wgs84.htm","EPSG","Supersedes Cape datum (code 6222).","",NULL};
-datafile_rows_t geod_datum_row_70[] = {"6149","CH1903","","","Fundamental Point: Old Bern observatory. Latitude: 46 deg 57 min  8.660 sec N; Longitude: 7 deg 26 min 22.500 sec E (of Greenwich).","7004","1999-10-20 00:00:00","Bundesamt f�r Landestopographie","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_71[] = {"6150","CH1903+","","","Fundamental Point: Old Bern observatory. Latitude: 46 deg 57 min  8.660 sec N; Longitude: 7 deg 26 min 22.500 sec E (of Greenwich).","7004","1999-10-20 00:00:00","Bundesamt f�r Landestopographie.  Aufbau der Landesvermessung der Schweiz 'LV95' Teil 3: Terrestrische Bezugssysteme und Bezugsrahmen. L+T 1999.","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_72[] = {"6151","Swiss Terrestrial Reference Frame 1995","CHTRF95","","ETRF89 at 1993.0","7019","1999-10-20 00:00:00","Bundesamt f�r Landestopographie.  Aufbau der Landesvermessung der Schweiz 'LV95' Teil 3: Terrestrische Bezugssysteme und Bezugsrahmen. L+T 1999.","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_73[] = {"6152","NAD83 (High Accuracy Regional Network)","NAD83(HARN)","","","7019","1999-10-20 00:00:00","National Geodetic Survey","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_74[] = {"6153","Rassadiran","","","Fundamental point: Total 1","7022","1999-11-20 00:00:00","Total-Fina","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_75[] = {"6154","ED50(ED77)","","","Extension of ED50 over Iran","7022","1999-11-20 00:00:00","National Cartographic Centre of Iran","EPSG","Sometimes referred to as ED50-ED77","",NULL};
-datafile_rows_t geod_datum_row_76[] = {"6200","Pulkovo 1995","","","Fundamental Point: Pulkovo observatory. Latitude: 59 deg 46 min 15.359 sec N; Longitude: 30 deg 19 min 28.318 sec E (of Greenwich).","7024","1996-09-12 00:00:00","\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_77[] = {"6201","Adindan","","","Fundamental Point: Station 15; Adindan. Latitude: 22 deg 10 min  7.110 sec N; Longitude: 31 deg 29 min 21.608 sec E (of Greenwich).","7012","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_78[] = {"6202","Australian Geodetic Datum 1966","AGD66","","Fundamental Point: Johnson Memorial. Latitude: 25 deg 56 min 54.551 sec S; Longitude: 133 deg 12 min 30.077 sec E (of Greenwich).","7003","1995-06-02 00:00:00","Australian Map Grid Technical Manual. National Mapping Council of Australia Technical Publication 7; 1972.","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_79[] = {"6203","Australian Geodetic Datum 1984","AGD84","","","7003","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_80[] = {"6204","Ain el Abd 1970","Ain el Abd","","Fundamental Point: Ain El Abd.  Latitude: 28 deg  14 min 06.171 sec N; Longitude: 48 deg 16 min 20.906 sec E (of Greenwich).","7022","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_81[] = {"6205","Afgooye","","","","7024","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_82[] = {"6206","Agadez","","","","7011","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_83[] = {"6207","Lisbon","","","Fundamental Point: Castelo Sao Jorge; Lisbon. Latitude: 38 deg 42 min 43.631 sec N; Longitude: 9 deg 07 min 54.862 sec W (of Greenwich).","7022","1995-06-02 00:00:00","Instituto Geografico e Cadastral; Lisbon","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_84[] = {"6208","Aratu","","","","7022","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_85[] = {"6209","Arc 1950","","","Fundamental Point: Buffelsfontein. Latitude: 33 deg 59 min 32.000 sec S; Longitude: 25 deg 30 min 44.622 sec E (of Greenwich).","7013","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_86[] = {"6210","Arc 1960","","","Fundamental Point: Buffelsfontein. Latitude: 33 deg 59 min 32.000 sec S; Longitude: 25 deg 30 min 44.622 sec E (of Greenwich).","7012","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_87[] = {"6211","Batavia","","","Fundamental Point: Batavia Astro. Station. Latitude: 6 deg  7 min 39.520 sec S; Longitude: 106 deg 48 min 27.790 sec E (of Greenwich).","7004","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_88[] = {"6212","Barbados 1938","","","Fundamental point: HMS Challenger astro station M1; latitude 13 deg 04 min 32.53 sec N; longitude 59 deg 36 min 29.34 sec W (of Greenwich).","7012","1999-04-22 00:00:00","Ordnance Survey of Great Britain.","EPSG","","99.171",NULL};
-datafile_rows_t geod_datum_row_89[] = {"6213","Beduaram","","","","7011","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_90[] = {"6214","Beijing 1954","","","","7024","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_91[] = {"6215","Reseau National Belge 1950","Belge 1950","","Fundamental Point: Lommel (tower). Latitude: 51 deg 13 min 47.334 sec N; Longitude: 0 deg 56 min 44.773 sec E (of Brussels).","7022","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_92[] = {"6216","Bermuda 1957","","","","7008","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_93[] = {"6218","Bogota","","","Fundamental Point: Bogota observatory. Latitude: 4 deg 35 min 56.570 sec N; Longitude: 74 deg  4 min 51.300 sec W (of Greenwich).","7022","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_94[] = {"6219","Bukit Rimpah","","","","7004","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_95[] = {"6220","Camacupa","","","","7012","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_96[] = {"6221","Campo Inchauspe","","","Fundamental Point: Campo Inchauspe. Latitude: 35 deg 58 min 17.000 sec S; Longitude: 62 deg 10 min 12.000 sec W (of Greenwich).","7022","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_97[] = {"6222","Cape","","","Fundamental Point: Buffelsfontein. Latitude: 33 deg 59 min 32.000 sec S; Longitude: 25 deg 30 min 44.622 sec E (of Greenwich).","7013","1996-10-18 00:00:00","Private Communication, Directorate of Surveys and Land Information, Cape Town.","EPSG","","96.25  99.69",NULL};
-datafile_rows_t geod_datum_row_98[] = {"6223","Carthage","","","","7011","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_99[] = {"6224","Chua","","","Fundamental Point: Chua. Latitude: 19 deg 45 min 41.160 sec S; Longitude: 48 deg  6 min  7.560 sec W (of Greenwich).","7022","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_100[] = {"6225","Corrego Alegre","","","Fundamental Point: Corrego Alegre. Latitude: 19 deg 50 min 15.140 sec S; Longitude: 48 deg 57 min 42.750 sec W (of Greenwich).","7022","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_101[] = {"6226","Cote d'Ivoire","","","","7011","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_102[] = {"6227","Deir ez Zor","","","Fundamental Point: Trig. 254 Deir. Latitude: 35 deg 21 min 49.975 sec N; Longitude: 40 deg  5 min 46.770 sec E (of Greenwich).","7011","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_103[] = {"6228","Douala","","","","7011","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_104[] = {"6229","Egypt 1907","","","Fundamental Point: Station F1. Latitude: 30 deg  1 min 42.860 sec N; Longitude: 31 deg 16 min 33.600 sec E (of Greenwich).","7020","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_105[] = {"6230","European Datum 1950","ED50","","Fundamental Point: Potsdam (Helmert Tower). Latitude: 52 deg 22 min 51.450 sec N; Longitude: 13 deg  3 min 58.740 sec E (of Greenwich).","7022","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_106[] = {"6231","European Datum 1987","ED87","","","7022","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_107[] = {"6232","Fahud","","","Fundamental Point: Station NO68-024 Fahud. Latitude: 22 deg 17 min 31.182 sec N; Longitude: 56 deg 29 min 18.820 sec E (of Greenwich).","7012","1995-06-02 00:00:00","Petroleum Development Oman.","EPSG","Superseded by PSD93 (code 6134).","",NULL};
-datafile_rows_t geod_datum_row_108[] = {"6233","Gandajika 1970","","","","7022","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_109[] = {"6234","Garoua","","","","7011","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_110[] = {"6235","Guyane Francaise","","","","7022","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_111[] = {"6236","Hu Tzu Shan","","","","7022","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_112[] = {"6237","Hungarian Datum 1972","HD72","","Fundamental Point: Szolohegy. Latitude: 47 deg 17 min 32,6156 sec N; Longitude 19 deg 36 min 09.9865 sec E; geoid height 6.56m.","7036","1996-10-18 00:00:00","http://lazarus.elte.hu/gb/geodez/geod3.htm","EPSG","","96.09",NULL};
-datafile_rows_t geod_datum_row_113[] = {"6238","Indonesian Datum 1974","ID74","","Fundamental Point: Padang. Latitude: 0 deg 56 min 38.414 sec S; Longitude: 100 deg 22 min  8.804 sec E (of Greenwich).","7021","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_114[] = {"6239","Indian 1954","","","Fundamental Point: Kalianpur. Latitude: 24 deg  07 min 11.260 sec N; Longitude: 77 deg 39 min 17.570 sec E (of Greenwich).","7015","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_115[] = {"6240","Indian 1975","","","Fundamental Point: Khau Sakaerang","7015","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_116[] = {"6241","Jamaica 1875","","","Fundamental Point: Fort Charles Flagstaff. Latitude: 17 deg 55 min 55.800 sec N; Longitude: 76 deg 56 min 37.260 sec W (of Greenwich).","7034","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_117[] = {"6242","Jamaica 1969","JAD69","","Fundamental Point: Fort Charles Flagstaff. Latitude: 17 deg 55 min 55.800 sec N; Longitude: 76 deg 56 min 37.260 sec W (of Greenwich).","7008","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_118[] = {"6243","Kalianpur 1880","","","Fundamental Point: Kalianpur. Latitude: 24 deg  07 min 11.260 sec N; Longitude: 77 deg 39 min 17.570 sec E (of Greenwich).","7042","1999-10-20 00:00:00","G. Bomford; \"The Re-adjustment of the Indian Triangulation\"; Survey of India Professional Paper 28; 1939.","EPSG","Includes 1916 extrension into Burma (Myanmar).  Superseded by 1937 adjustment.","97.23",NULL};
-datafile_rows_t geod_datum_row_119[] = {"6244","Kandawala","","","","7015","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_120[] = {"6245","Kertau","","","Fundamental Point: Kertau. Latitude: 3 deg 27 min 50.710 sec N; Longitude: 102 deg 37 min 24.550 sec E (of Greenwich).","7018","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_121[] = {"6246","Kuwait Oil Company","KOC","","","7012","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_122[] = {"6247","La Canoa","","","Fundamental Point: La Canoa. Latitude: 8 deg 34 min 17.170 sec N; Longitude: 63 deg 51 min 34.880 sec W (of Greenwich).","7022","1995-06-02 00:00:00","","EPSG","Origin also adopted for PSAD56.","",NULL};
-datafile_rows_t geod_datum_row_123[] = {"6248","Provisional South American Datum 1956","PSAD56","","Fundamental Point: La Canoa. Latitude: 8 deg 34 min 17.170 sec N; Longitude: 63 deg 51 min 34.880 sec W (of Greenwich).","7022","1995-06-02 00:00:00","","EPSG","Same origin as La Canoa datum.","",NULL};
-datafile_rows_t geod_datum_row_124[] = {"6249","Lake","","","Fundamental Point: Maracaibo Cathedral. Latitude: 10 deg 38 min 34.678 sec N; Longitude: 71 deg 36 min 20.224 sec W (of Greenwich).","7022","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_125[] = {"6250","Leigon","","","Fundamental Point: GCS Station 121. Latitude: 5 deg 38 min 52.270 sec N; Longitude: 0 deg 11 min 46.080 sec W (of Greenwich).","7012","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_126[] = {"6251","Liberia 1964","","","","7012","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_127[] = {"6252","Lome","","","","7011","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_128[] = {"6253","Luzon 1911","","","Fundamental Point: Balacan. Latitude: 13 deg 33 min 41.000 sec N; Longitude: 121 deg 52 min  03.000 sec E (of Greenwich).","7008","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_129[] = {"6254","Hito XVIII 1963","","","","7022","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_130[] = {"6255","Herat North","","","","7022","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_131[] = {"6256","Mahe 1971","","","Fundamental Point: Mahe","7012","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_132[] = {"6257","Makassar","","","Fundamental Point: Moncongloe","7004","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_133[] = {"6258","European Terrestrial Reference Frame 89","ETRF89","","","7019","1999-04-22 00:00:00","","EPSG","Coincides with WGS84 at the one metre level.","97.11  97.55  99.111",NULL};
-datafile_rows_t geod_datum_row_134[] = {"6259","Malongo 1987","","","Fundamental Point: Station Y at Malongo base camp. Latitude: 5 deg 23 min 34.327 sec S; Longitude: 12 deg 12 min  02.393 sec E (of Greenwich).","7022","1995-06-02 00:00:00","Chevron Petroleum Technology.","EPSG","Offshore extension of Mhast datum (6264) using Transit translocation.","",NULL};
-datafile_rows_t geod_datum_row_135[] = {"6260","Manoca","","","","7012","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_136[] = {"6261","Merchich","","","","7011","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_137[] = {"6262","Massawa","","","","7004","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_138[] = {"6263","Minna","","","Fundamental Point: Minna base station L40. Latitude: 9 deg 38 min  09.000 sec N; Longitude: 6 deg 30 min 59.000 sec E (of Greenwich).","7012","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_139[] = {"6264","Mhast","","","","7022","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_140[] = {"6265","Monte Mario","","","Fundamental Point: Monte Mario. Latitude: 41 deg 55 min 25.510 sec N; Longitude: 0 deg  00 min  00.000 sec E (of Rome).","7022","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_141[] = {"6266","M'poraloko","","","","7011","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_142[] = {"6267","North American Datum 1927","NAD27","","Fundamental Point: Meade's Ranch. Latitude: 39 deg 13 min 26.686 sec N; Longitude: 98 deg 32 min 30.506 sec W (of Greenwich).","7008","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_143[] = {"6268","NAD Michigan","","","Fundamental Point: Meade's Ranch. Latitude: 39 deg 13 min 26.686 sec N; Longitude: 98 deg 32 min 30.506 sec W (of Greenwich).","7009","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_144[] = {"6269","North American Datum 1983","NAD83","","Origin at geocentre.","7019","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_145[] = {"6270","Nahrwan 1967","","","Fundamental point: Nahrwan south base.  Latitude: 33 deg 19 min 10.87 sec N; Longitude: 44 deg 43 min 25.54 sec E (of Greenwich).","7012","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_146[] = {"6271","Naparima 1972","","","Fundamental Point: Naparima. Latitude: 10 deg 16 min 44.860 sec N; Longitude: 61 deg 27 min 34.620 sec W (of Greenwich).","7022","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_147[] = {"6272","New Zealand Geodetic Datum 1949","GD49","","Fundamental Point: Papatahi. Latitude: 41 deg 19 min  8.900 sec S; Longitude: 175 deg  02 min 51.000 sec E (of Greenwich).","7022","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_148[] = {"6273","NGO 1948","","","","7005","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_149[] = {"6274","Datum 73","","","Fundamental Point:  Latitude: 39 deg 41 min 37.30 sec N; Longitude: 8 deg 07 min 53.31 sec W (of Greenwich).","7022","1995-06-02 00:00:00","Instituto Geografico e Cadastral; Lisbon","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_150[] = {"6275","Nouvelle Triangulation Francaise","NTF","","Fundamental Point: Pantheon","7011","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_151[] = {"6276","NSWC 9Z-2","","","","7025","1995-06-02 00:00:00","","EPSG","Transit precise ephemeris before 1991.","",NULL};
-datafile_rows_t geod_datum_row_152[] = {"6277","OSGB 1936","","","Fundamental Point: Herstmonceux. Latitude: 50 deg 51 min 55.271 sec N; Longitude: 0 deg 20 min 45.882 sec E (of Greenwich).","7001","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_153[] = {"6278","OSGB 1970 (SN)","OSGB70","","Fundamental Point: Herstmonceux. Latitude: 50 deg 51 min 55.271 sec N; Longitude: 0 deg 20 min 45.882 sec E (of Greenwich).","7001","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_154[] = {"6279","OS (SN) 1980","OS(SN)80","","Fundamental Point: Herstmonceux. Latitude: 50 deg 51 min 55.271 sec N; Longitude: 0 deg 20 min 45.882 sec E (of Greenwich).","7001","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_155[] = {"6280","Padang 1884","Padang","","Fundamental Point: Padang","7004","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_156[] = {"6281","Palestine 1923","","","Fundamental Point: Point 82'M  Jerusalem. Latitude: 31 deg 44 min  2.749 sec N; Longitude: 35 deg 12 min 43.490 sec E (of Greenwich).","7010","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_157[] = {"6282","Pointe Noire","","","Fundamental Point: Point Noire Astro. Latitude: 4 deg 47 min  0.100 sec S; Longitude: 11 deg 51 min  1.550 sec E (of Greenwich).","7011","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_158[] = {"6283","Geocentric Datum of Australia 1994","GDA94","","","7019","1995-06-02 00:00:00","Australian Surveying and Land Information Group Internet WWW page.","EPSG","Coincident with WGS84 to within 1 metre.","",NULL};
-datafile_rows_t geod_datum_row_159[] = {"6284","Pulkovo 1942","","","Fundamental Point: Pulkovo observatory. Latitude: 59 deg 46 min 18.550 sec N; Longitude: 30 deg 19 min 42.090 sec E (of Greenwich).","7024","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_160[] = {"6285","Qatar","","","Fundamental Point: Station G3","7022","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_161[] = {"6286","Qatar 1948","","","Fundamental Point: Sokey 0 M. Latitude: 25 deg 22 min 56.500 sec N; Longitude: 50 deg 45 min 41.000 sec E (of Greenwich).","7020","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_162[] = {"6287","Qornoq","","","","7022","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_163[] = {"6288","Loma Quintana","","","Fundamental Point: Loma Quintana","7022","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_164[] = {"6289","Amersfoort","","","Fundamental Point: Amersfoort. Latitude: 52 deg  09 min 22.178 sec N; Longitude: 5 deg 23 min 15.478 sec E (of Greenwich).","7004","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_165[] = {"6291","South American Datum 1969","SAD69","","","7036","1996-10-18 00:00:00","","EPSG","SAD69 uses GRS67 ellipsoid with 1/f to exactly 2 decimal places.  Precision of ellipsoid entry increased from 2 to 5 dp with change id 97.252.  Error introduced if not using the truncated precision is 0 to 31mm.","96.09  97.252",NULL};
-datafile_rows_t geod_datum_row_166[] = {"6292","Sapper Hill 1943","","","","7022","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_167[] = {"6293","Schwarzeck","","","","7006","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_168[] = {"6294","Segora","","","","7004","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_169[] = {"6295","Serindung","","","","7004","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_170[] = {"6296","Sudan","","","","7011","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_171[] = {"6297","Tananarive 1925","Tananarive","","Fundamental Point: Tananarive observatory. Latitude: 18 deg 55 min  2.100 sec S; Longitude: 45 deg 12 min 52.800 sec E (of Greenwich).","7022","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_172[] = {"6298","Timbalai 1948","","","Fundamental Point: Timbalai. Latitude: 5 deg 17 min  3.548 sec N; Longitude: 115 deg 10 min 56.409 sec E (of Greenwich).","7016","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_173[] = {"6299","TM65","","","","7002","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_174[] = {"6300","TM75","","","","7002","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_175[] = {"6301","Tokyo","","","Fundamental Point: Nikon-Keido-Genten. Latitude: 35 deg 39 min 17.5148 sec N; Longitude: 139 deg 44 min 40.5020 sec E (of Greenwich).","7004","1995-06-02 00:00:00","Geographic Survey Institute; Japan; Bulletin 40 (March 1994).  Also http://vldb.gsi-mc.go.jp/sokuchi/datum/tokyodatum.html","EPSG","","98.46",NULL};
-datafile_rows_t geod_datum_row_176[] = {"6302","Trinidad 1903","","","","7007","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_177[] = {"6303","Trucial Coast 1948","TC(1948)","","Fundamental Point: TC1. Latitude: 25 deg 23 min 50.190 sec N; Longitude: 55 deg 26 min 43.950 sec E (of Greenwich).","7020","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_178[] = {"6304","Voirol 1875","","","Fundamental Point: Voirol. Latitude: 40.835864 grads N; Longitude: 0.788735 grads E of Paris.","7011","1995-06-02 00:00:00","IGN Paris","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_179[] = {"6305","Voirol Unifie 1960","Voirol Unifie","","","7012","1999-10-20 00:00:00","\"Le System Geodesique Nord-Sahara\"; IGN Paris","EPSG","Conformal transformation from ED50. Used only with Lambert Algeria zones: in other cases use Nord Sahara 1959 geodetic datum.","99.62",NULL};
-datafile_rows_t geod_datum_row_180[] = {"6306","Bern 1938","","","Fundamental Point: Old Bern observatory. Latitude: 46 deg 57 min  7.890 sec N; Longitude: 7 deg 26 min 22.335 sec E (of Greenwich).","7004","1995-06-02 00:00:00","\"Die Projektionen der schweizerischen Plan- und Kartenwerke\"; J. Bolliger 1967","EPSG","This redetermination of the coordinates of fundamental point is used for scientific purposes and as the graticule overprinted on topographic maps constructed on the CH1903 / [...]
-datafile_rows_t geod_datum_row_181[] = {"6307","Nord Sahara 1959","","","","7012","1999-10-20 00:00:00","\"Le System Geodesique Nord-Sahara\"; IGN Paris","EPSG","Conformal transformation from ED50.","99.62",NULL};
-datafile_rows_t geod_datum_row_182[] = {"6308","Stockholm 1938","RT38","","Fundamental Point: Stockholm observatory","7004","1996-04-12 00:00:00","","EPSG","Superseded by RT90 adjustment (datum code 6124)","",NULL};
-datafile_rows_t geod_datum_row_183[] = {"6309","Yacare","","","","7022","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_184[] = {"6310","Yoff","","","","7011","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_185[] = {"6311","Zanderij","","","","7022","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_186[] = {"6312","Militar-Geographische Institut","MGI","","Fundamental Point: Hermannskogel. Latitude: 48 deg 16 min 15.29 sec N; Longitude: 16 deg 17 min 41.06 sec E (of Greenwich).","7004","1995-06-02 00:00:00","Bundesamt fur Eich- und Vermessungswesen; Wien","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_187[] = {"6313","Reseau National Belge 1972","Belge 1972","","Fundamental Point: Uccle observatory. Latitude: 50 deg 47 min 57.704 sec N; Longitude: 4 deg 21 min 24.983 sec E (of Greenwich).","7022","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_188[] = {"6314","Deutsche Hauptdreiecksnetz","DHDN","","Fundamental Point: Potsdam. Latitude: 52 deg 22 min 53.954 sec N; Longitude: 13 deg 04 min 01.153 sec E (of Greenwich).","7004","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_189[] = {"6315","Conakry 1905","","","Fundamental Point: Conakry. Latitude: 10.573766g N; Longitude: 17.833682g W (of Paris).","7011","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_190[] = {"6316","Dealul Piscului 1933","","","Fundamental point: latitude 44 deg 24 min 33.9606 sec N; longitude 26 deg 06 min 44.8772 sec E (of Greenwich).","7022","1996-04-12 00:00:00","Institute for Geodesy Photogrametry and Land Management","EPSG","Superseded by 1970 adjustment (datum code 6317)","",NULL};
-datafile_rows_t geod_datum_row_191[] = {"6317","Dealul Piscului 1970","","","Fundamental point: latitude 44 deg 24 min 23.7709 sec N; longitude 26deg 06 min 44.1265 sec E (of Greenwich).","7024","1996-04-12 00:00:00","Institute for Geodesy Photogrametry and Land Management","EPSG","Supersedes 1933 adjustment (datum code 6316)","",NULL};
-datafile_rows_t geod_datum_row_192[] = {"6318","National Geodetic Network","NGN","","","7030","1996-04-12 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_193[] = {"6319","Kuwait Utility","KUDAMS","","","7019","1996-04-12 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_194[] = {"6322","World Geodetic System 1972","WGS 72","","","7043","1999-04-22 00:00:00","","EPSG","Used by GPS before 1987. For Transit satellite positioning see also WGS 72BE.                                                                                                                  \
-Datum code 6323 reserved for southern hemisphere ProjCS's.","99.03",NULL};
-datafile_rows_t geod_datum_row_195[] = {"6324","WGS 72 Transit Broadcast Ephemeris","WGS 72BE","","","7043","1999-04-22 00:00:00","","EPSG","Alleged datum for use with Transit broadcast ephemeris prior to 1989. Relationship to WGS 72 has changed over time.  Datum code 6325 reserved for southern hemisphere ProjCS's.","99.03",NULL};
-datafile_rows_t geod_datum_row_196[] = {"6326","World Geodetic System 1984","WGS 84","","Origin at geocentre.","7030","1995-06-02 00:00:00","","EPSG","Datum code 6327 reserved for southern hemisphere ProjCS's","",NULL};
-datafile_rows_t geod_datum_row_197[] = {"6600","Anguilla 1957","","","Fundamental point: station A4.","7012","1999-04-22 00:00:00","Ordnance Survey of Great Britain.","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_198[] = {"6601","Antigua 1943","","","Fundamental point: station A14.","7012","1999-04-22 00:00:00","Ordnance Survey of Great Britain.","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_199[] = {"6602","Dominica 1945","","","Fundamental point: station M12.","7012","1999-04-22 00:00:00","Ordnance Survey of Great Britain.","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_200[] = {"6603","Grenada 1953","","","Fundamental point: station GS8.","7012","1999-04-22 00:00:00","Ordnance Survey of Great Britain.","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_201[] = {"6604","Montserrat 1958","","","Fundamental point: station M36.","7012","1999-04-22 00:00:00","Ordnance Survey of Great Britain.","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_202[] = {"6605","St. Kitts 1955","","","Fundamental point: station K12.","7012","1999-04-22 00:00:00","Ordnance Survey of Great Britain.","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_203[] = {"6606","St. Lucia 1955","","","Fundamental point: station DCS3.","7012","1999-04-22 00:00:00","Ordnance Survey of Great Britain.","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_204[] = {"6607","St. Vincent 1945","","","Fundamental point: station V1.","7012","1999-04-22 00:00:00","Ordnance Survey of Great Britain.","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_205[] = {"6608","North American Datum 1927 (1976)","NAD27(76)","","Fundamental Point: Meade's Ranch. Latitude: 39 deg 13 min 26.686 sec N; Longitude: 98 deg 32 min 30.506 sec W (of Greenwich).","7008","1999-05-12 00:00:00","Geodetic Survey of Canada.","EPSG","NAD27(76) used in Ontario for all maps at scale 1/20 000 and larger; elsewhere in Canada for selected purposes.","",NULL};
-datafile_rows_t geod_datum_row_206[] = {"6609","North American Datum 1927 (CGQ77)","CGQ77","","Fundamental Point: Meade's Ranch. Latitude: 39 deg 13 min 26.686 sec N; Longitude: 98 deg 32 min 30.506 sec W (of Greenwich).","7008","1999-05-12 00:00:00","Geodetic Service of Quebec.  Contact alain.bernard at mrn.gouv.qc.ca","EPSG","NAD27 (CGQ77) used in Quebec for all maps at scale 1/20 000 and larger; generally for maps issued by the Quebec cartography office whose reference system is CGQ77.", [...]
-datafile_rows_t geod_datum_row_207[] = {"6901","Ancienne Triangulation Francaise","ATF","","","7027","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_208[] = {"6902","Nord de Guerre","NDG","","","7027","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_datum_row_209[] = {"6903","Madrid 1870","","","Fundamental point: Madrid observatory.","7028","1998-11-11 00:00:00","Institut de Geomatica; Barcelona","EPSG","","",NULL};
-
-datafile_rows_t *geod_datum_rows[] = {geod_datum_row_1,geod_datum_row_2,geod_datum_row_3,geod_datum_row_4,geod_datum_row_5,geod_datum_row_6,geod_datum_row_7,geod_datum_row_8,geod_datum_row_9,geod_datum_row_10,geod_datum_row_11,geod_datum_row_12,geod_datum_row_13,geod_datum_row_14,geod_datum_row_15,geod_datum_row_16,geod_datum_row_17,geod_datum_row_18,geod_datum_row_19,geod_datum_row_20,geod_datum_row_21,geod_datum_row_22,geod_datum_row_23,geod_datum_row_24,geod_datum_row_25,geod_datum_ro [...]
diff --git a/src/tiff/csv/geod_datum.csv b/src/tiff/csv/geod_datum.csv
deleted file mode 100644
index 7d5ed98..0000000
--- a/src/tiff/csv/geod_datum.csv
+++ /dev/null
@@ -1,210 +0,0 @@
-"GEOD_DATUM_CODE","GEOD_DAT_EPSG_NAME","GEOD_DAT_EPSG_ABBR","GEOD_DAT_USER_NAME","ORIGIN_DESCRIPTION","ELLIPSOID_CODE","REVISION_DATE","INFORMATION_SOURCE","DATA_SOURCE","REMARKS","CHANGE_ID"
-6001,Not specified (based on ellipsoid 7001),,,,7001,1996-09-12 00:00:00,,EPSG,Not a valid datum.  Included for coordinate systems where datum is unknown.,96.08
-6002,Not specified (based on ellipsoid 7002),,,,7002,1996-09-12 00:00:00,,EPSG,Not a valid datum.  Included for coordinate systems where datum is unknown.,96.08
-6003,Not specified (based on ellipsoid 7003),,,,7003,1996-09-12 00:00:00,,EPSG,Not a valid datum.  Included for coordinate systems where datum is unknown.,96.08
-6004,Not specified (based on ellipsoid 7004),,,,7004,1996-09-12 00:00:00,,EPSG,Not a valid datum.  Included for coordinate systems where datum is unknown.,96.08
-6005,Not specified (based on ellipsoid 7005),,,,7005,1996-09-12 00:00:00,,EPSG,Not a valid datum.  Included for coordinate systems where datum is unknown.,96.08
-6006,Not specified (based on ellipsoid 7006),,,,7006,1996-09-12 00:00:00,,EPSG,Not a valid datum.  Included for coordinate systems where datum is unknown.,96.08
-6007,Not specified (based on ellipsoid 7007),,,,7007,1996-09-12 00:00:00,,EPSG,Not a valid datum.  Included for coordinate systems where datum is unknown.,96.08
-6008,Not specified (based on ellipsoid 7008),,,,7008,1996-09-12 00:00:00,,EPSG,Not a valid datum.  Included for coordinate systems where datum is unknown.,96.08
-6009,Not specified (based on ellipsoid 7009),,,,7009,1996-09-12 00:00:00,,EPSG,Not a valid datum.  Included for coordinate systems where datum is unknown.,96.08
-6010,Not specified (based on ellipsoid 7010),,,,7010,1996-09-12 00:00:00,,EPSG,Not a valid datum.  Included for coordinate systems where datum is unknown.,96.08
-6011,Not specified (based on ellipsoid 7011),,,,7011,1996-09-12 00:00:00,,EPSG,Not a valid datum.  Included for coordinate systems where datum is unknown.,96.08
-6012,Not specified (based on ellipsoid 7012),,,,7012,1996-09-12 00:00:00,,EPSG,Not a valid datum.  Included for coordinate systems where datum is unknown.,96.08
-6013,Not specified (based on ellipsoid 7013),,,,7013,1996-09-12 00:00:00,,EPSG,Not a valid datum.  Included for coordinate systems where datum is unknown.,96.08
-6014,Not specified (based on ellipsoid 7014),,,,7014,1996-09-12 00:00:00,,EPSG,Not a valid datum.  Included for coordinate systems where datum is unknown.,96.08
-6015,Not specified (based on ellipsoid 7015),,,,7015,1996-09-12 00:00:00,,EPSG,Not a valid datum.  Included for coordinate systems where datum is unknown.,96.08
-6016,Not specified (based on ellipsoid 7016),,,,7016,1996-09-12 00:00:00,,EPSG,Not a valid datum.  Included for coordinate systems where datum is unknown.,96.08
-6017,Not specified (based on ellipsoid 7017),,,,7044,1996-09-12 00:00:00,,EPSG,Not a valid datum.  Included for coordinate systems where datum is unknown.,96.08
-6018,Not specified (based on ellipsoid 7018),,,,7018,1996-09-12 00:00:00,,EPSG,Not a valid datum.  Included for coordinate systems where datum is unknown.,96.08
-6019,Not specified (based on ellipsoid 7019),,,,7019,1996-09-12 00:00:00,,EPSG,Not a valid datum.  Included for coordinate systems where datum is unknown.,96.08
-6020,Not specified (based on ellipsoid 7020),,,,7020,1996-09-12 00:00:00,,EPSG,Not a valid datum.  Included for coordinate systems where datum is unknown.,96.08
-6021,Not specified (based on ellipsoid 7021),,,,7021,1996-09-12 00:00:00,,EPSG,Not a valid datum.  Included for coordinate systems where datum is unknown.,96.08
-6022,Not specified (based on ellipsoid 7022),,,,7022,1996-09-12 00:00:00,,EPSG,Not a valid datum.  Included for coordinate systems where datum is unknown.,96.08
-6024,Not specified (based on ellipsoid 7024),,,,7024,1996-09-12 00:00:00,,EPSG,Not a valid datum.  Included for coordinate systems where datum is unknown.,96.08
-6025,Not specified (based on ellipsoid 7025),,,,7025,1996-09-12 00:00:00,,EPSG,Not a valid datum.  Included for coordinate systems where datum is unknown.,96.08
-6027,Not specified (based on ellipsoid 7027),,,,7027,1996-09-12 00:00:00,,EPSG,Not a valid datum.  Included for coordinate systems where datum is unknown.,96.08
-6028,Not specified (based on ellipsoid 7028),,,,7028,1996-09-12 00:00:00,,EPSG,Not a valid datum.  Included for coordinate systems where datum is unknown.,96.08
-6029,Not specified (based on ellipsoid 7029),,,,7029,1996-09-12 00:00:00,,EPSG,Not a valid datum.  Included for coordinate systems where datum is unknown.,96.08
-6030,Not specified (based on ellipsoid 7030),,,,7030,1996-09-12 00:00:00,,EPSG,Not a valid datum.  Included for coordinate systems where datum is unknown.,96.08
-6031,Not specified (based on ellipsoid 7031),,,,7031,1996-09-12 00:00:00,,EPSG,Not a valid datum.  Included for coordinate systems where datum is unknown.,96.08
-6032,Not specified (based on ellipsoid 7032),,,,7032,1996-09-12 00:00:00,,EPSG,Not a valid datum.  Included for coordinate systems where datum is unknown.,96.08
-6033,Not specified (based on ellipsoid 7033),,,,7033,1996-09-12 00:00:00,,EPSG,Not a valid datum.  Included for coordinate systems where datum is unknown.,96.08
-6034,Not specified (based on ellipsoid 7034),,,,7034,1996-09-12 00:00:00,,EPSG,Not a valid datum.  Included for coordinate systems where datum is unknown.,96.08
-6035,Not specified (based on ellipsoid 7035),,,,7035,1996-09-12 00:00:00,,EPSG,Not a valid datum.  Included for coordinate systems where datum is unknown.,96.08
-6036,Not specified (based on ellipsoid 7036),,,,7036,1996-09-12 00:00:00,,EPSG,Not a valid datum.  Included for coordinate systems where datum is unknown.,
-6041,Not specified (based on ellipsoid 7041),,,,7041,1999-10-20 00:00:00,,EPSG,Not a valid datum.  Included for coordinate systems where datum is unknown.,
-6042,Not specified (based on ellipsoid 7042),,,,7042,1999-10-20 00:00:00,,EPSG,Not a valid datum.  Included for coordinate systems where datum is unknown.,
-6043,Not specified (based on ellipsoid 7043),,,,7043,1999-10-20 00:00:00,,EPSG,Not a valid datum.  Included for coordinate systems where datum is unknown.,
-6044,Not specified (based on ellipsoid 7044),,,,7044,1999-10-20 00:00:00,,EPSG,Not a valid datum.  Included for coordinate systems where datum is unknown.,
-6045,Not specified (based on ellipsoid 7045),,,,7045,1999-10-20 00:00:00,,EPSG,Not a valid datum.  Included for coordinate systems where datum is unknown.,
-6120,Greek,,,Fundamental point: Athens Observatory; latitude 37 deg 58 min 20.132 sec N; longitude 23 deg 42 min 58.815 sec E of Greenwich,7004,1997-06-16 00:00:00,Topography Department; National Technical University of Athens,EPSG,See geodetic datum alias 6404.  Used as basis of topographic mapping based on Hatt projection.,
-6121,Greek Geodetic Reference System 1987,GGRS87,,Fundamental point: Dionysos; latitude 38 deg 04 min 33.8 sec N; longitude 23 deg 55 min 51.0 sec E of Greenwich; geoid height 7.0 m.,7019,1997-06-16 00:00:00,L. Portokalakis; Public Petroleum Corporation of Greece,EPSG,Superseded (old) Greek datum.  Oil industry work based on ED50.,
-6122,Average Terrestrial System 1977,ATS77,,,7041,1997-07-02 00:00:00,New Brunswick Geographic Information Corporation land and water information standards manual.,EPSG,In use from 1979.  To be phased out in late 1990's.,
-6123,Kartastokoordinaattijarjestelma,KKJ,,Adjustment with fundamental point based on ED50 transformed to best fit the older VVJ adjustment.,7022,1997-07-22 00:00:00,www.nls.fi/maa/papers/kkj.html,EPSG,Adopted in 1970.,
-6124,Rikets koordinatsystem 1990,RT90,,,7004,1997-11-13 00:00:00,National Land Survey of Sweden,EPSG,Supersedes RT38 adjustment (datum code 6308),
-6125,Samboja,,,Original origin station P2 Exc now destroyed.  Extensions recomputed using Toran station T9 as origin.,7004,1997-11-13 00:00:00,Total Indonesia.,EPSG,,
-6126,Lithuania 1994 (ETRS89),LKS94 (ETRS89),,Densification from 4  ETRF89 points.,7019,1998-03-12 00:00:00,HNIT-Baltic GeoInfoServisas,EPSG,Densification of ETRS89 during the 1992 Baltic campaign.,
-6127,Tete,,,Fundamental point: Tete.,7008,1998-04-16 00:00:00,Mozambique Direc��o Nacional de Geografia e Cadastral (DINAGECA).,EPSG,,
-6128,Madzansua,,,Fundamental point: Madzansua.,7008,1998-04-16 00:00:00,Mozambique Direc��o Nacional de Geografia e Cadastral (DINAGECA).,EPSG,Superseded by transformation to Tete datum (datum code 6127).,
-6129,Observatario,,,Fundamental point: Maputo observatory.,7008,1998-04-16 00:00:00,Mozambique Direc��o Nacional de Geografia e Cadastral (DINAGECA).,EPSG,Superseded by transformation to Tete datum (datum code 6127).,
-6130,Moznet (ITRF94),Moznet,,ITRF 1994 epoch 20,7030,1998-04-16 00:00:00,Mozambique Direc��o Nacional de Geografia e Cadastral (DINAGECA).,EPSG,,
-6131,Indian 1960,,,,7015,1998-11-11 00:00:00,,EPSG,DMA adjustment of IndoChina part of the Indian 1954 network to better fit local geoid.  Also known as Indian (DMA Reduced).,
-6132,Final Datum 1958,FD58,,Fundamental point: Maniyur.  Latitude: 31 deg 23 min 59.19 sec N; Longitude: 48 deg 32 min 31.38 sec E (of Greenwich).,7012,1998-11-11 00:00:00,IOEPC records,EPSG,Network included in Nahrwan 1967 adjustment.,
-6133,Estonia 1992,EST92,,Densification from 4  ETRS89 points.,7019,1998-12-14 00:00:00,http://www.geo.ut.ee/~raivo/estcoord.html,EPSG,Based on ETRS89 as established during the 1992 Baltic campaign.,
-6134,PDO Survey Datum 1993,PSD93,,Adjustment best fitted to Fahud network.,7012,1999-04-22 00:00:00,Petroleum Development Oman,EPSG,Supersedes Fahud datum (code 6232). Maximum differences to Fahud adjustment are 20 metres.,
-6135,Old Hawaiian,,,Fundamental Point: Oahu West Base Astro.  Latitude: 21 deg 18 min 13.89 sec N; longitude 157 deg 50 min 55.79 sec W (of Greenwich),7008,1999-05-24 00:00:00,http://www.ngs.noaa.gov/ (NADCON readme file) and the NIMA publication http://164.214.2.59/publications/guides/Datum_Pamphlet/datum.html,EPSG,Hawaiian Islands were never on NAD27 but rather on Old Hawaiian Datum.  NADCON conversion program provides transformation from Old Hawaiian Datum to NAD83 (original 1986 real [...]
-6136,St. Lawrence Island,,,,7008,1999-05-24 00:00:00,http://www.ngs.noaa.gov/ (NADCON readme file),EPSG,Many Alaskan islands were never on NAD27 but rather on independent datums.  NADCON conversion program provides transformation from St. Lawrence Island Datum to NAD83 (original 1986 realization) - making the transformation appear to user as if from NAD27.,
-6137,St. Paul Island,,,,7008,1999-05-24 00:00:00,http://www.ngs.noaa.gov/ (NADCON readme file),EPSG,Many Alaskan islands were never on NAD27 but rather on independent datums.  NADCON conversion program provides transformation from St. Paul Island Datum to NAD83 (original 1986 realization) - making the transformation appear to user as if from NAD27.,
-6138,St. George Island,,,,7008,1999-05-24 00:00:00,http://www.ngs.noaa.gov/ (NADCON readme file),EPSG,Many Alaskan islands were never on NAD27 but rather on independent datums.  NADCON conversion program provides transformation from St. George Island Datum to NAD83 (original 1986 realization) - making the transformation appear to user as if from NAD27.,
-6139,Puerto Rico,,,,7008,1999-05-24 00:00:00,Ordnance Survey of Great Britain and http://www.ngs.noaa.gov/ (NADCON readme file).,EPSG,NADCON conversion program provides transformation from Puerto Rico Datum to NAD83 (original 1986 realization) but making the transformation appear to user as if from NAD27.,
-6140,NAD83 Canadian Spatial Reference System,NAD83(CSRS98),,,7019,1999-10-20 00:00:00,Service New Brunswick Land and Information Standards Manual,EPSG,Supersedes ATS77 from 1999 in New Brunswick.,
-6141,Israel,,,Fundamental Point:  Latitude: 31 deg 44 min 03.817 sec N; Longitude: 35 deg 12 min 16.261 sec E (of Greenwich).,7019,1999-10-20 00:00:00,Survey of Israel.,EPSG,,
-6142,Locodjo 1965,,,Fundamental Point: T5 Banco. Latitude: 5 deg 18 min 50.5 sec N; Longitude: 4 deg 02 min 05.1 sec W (of Greenwich).,7012,1999-10-20 00:00:00,IGN Paris.,EPSG,,
-6143,Abidjan 1987,,,Fundamental Point: Abidjan I. Latitude: 5 deg 18 min 51.01 sec N; Longitude: 4 deg 02 min 06.04 sec W (of Greenwich).,7012,1999-10-20 00:00:00,IGN Paris.,EPSG,,
-6144,Kalianpur 1937,,,Fundamental Point: Kalianpur. Latitude: 24 deg  07 min 11.260 sec N; Longitude: 77 deg 39 min 17.570 sec E (of Greenwich).,7015,1999-10-20 00:00:00,"G. Bomford; \"The Re-adjustment of the Indian Triangulation\"; Survey of India Professional Paper 28; 1939.",EPSG,Supercedes 1880 adjustment except for topographic mapping.  Superseded in Pakistan by 1962 metrication conversion and in India by 1975 metrication conversion.,
-6145,Kalianpur 1962,,,Fundamental Point: Kalianpur. Latitude: 24 deg  07 min 11.260 sec N; Longitude: 77 deg 39 min 17.570 sec E (of Greenwich).,7044,1999-10-20 00:00:00,,EPSG,1937 adjustment rescaled by ratio metric conversions of Indian foot (1937) to Indian foot (1962).,
-6146,Kalianpur 1975,,,Fundamental Point: Kalianpur. Latitude: 24 deg  07 min 11.260 sec N; Longitude: 77 deg 39 min 17.570 sec E (of Greenwich).,7045,1999-10-20 00:00:00,,EPSG,1937 adjustment rescaled by ratio metric conversions of Indian foot (1937) to Indian foot (1975).,
-6147,Hanoi 1972,,,,7024,1999-10-20 00:00:00,PetroVietnam,EPSG,,
-6148,Hartbeesthoek94,,,Coincident with ITRF91 (1994.0) at Hartbeesthoek astronomical observatory near Pretoria.,7030,1999-10-22 00:00:00,Directorate of Surveys and Mapping; http://w3sli.wcape.gov.za/surveys/mapping/wgs84.htm,EPSG,Supersedes Cape datum (code 6222).,
-6149,CH1903,,,Fundamental Point: Old Bern observatory. Latitude: 46 deg 57 min  8.660 sec N; Longitude: 7 deg 26 min 22.500 sec E (of Greenwich).,7004,1999-10-20 00:00:00,Bundesamt f�r Landestopographie,EPSG,,
-6150,CH1903+,,,Fundamental Point: Old Bern observatory. Latitude: 46 deg 57 min  8.660 sec N; Longitude: 7 deg 26 min 22.500 sec E (of Greenwich).,7004,1999-10-20 00:00:00,Bundesamt f�r Landestopographie.  Aufbau der Landesvermessung der Schweiz 'LV95' Teil 3: Terrestrische Bezugssysteme und Bezugsrahmen. L+T 1999.,EPSG,,
-6151,Swiss Terrestrial Reference Frame 1995,CHTRF95,,ETRF89 at 1993.0,7019,1999-10-20 00:00:00,Bundesamt f�r Landestopographie.  Aufbau der Landesvermessung der Schweiz 'LV95' Teil 3: Terrestrische Bezugssysteme und Bezugsrahmen. L+T 1999.,EPSG,,
-6152,NAD83 (High Accuracy Regional Network),NAD83(HARN),,,7019,1999-10-20 00:00:00,National Geodetic Survey,EPSG,,
-6153,Rassadiran,,,Fundamental point: Total 1,7022,1999-11-20 00:00:00,Total-Fina,EPSG,,
-6154,ED50(ED77),,,Extension of ED50 over Iran,7022,1999-11-20 00:00:00,National Cartographic Centre of Iran,EPSG,Sometimes referred to as ED50-ED77,
-6200,Pulkovo 1995,,,Fundamental Point: Pulkovo observatory. Latitude: 59 deg 46 min 15.359 sec N; Longitude: 30 deg 19 min 28.318 sec E (of Greenwich).,7024,1996-09-12 00:00:00,"\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994",EPSG,,
-6201,Adindan,,,Fundamental Point: Station 15; Adindan. Latitude: 22 deg 10 min  7.110 sec N; Longitude: 31 deg 29 min 21.608 sec E (of Greenwich).,7012,1995-06-02 00:00:00,,EPSG,,
-6202,Australian Geodetic Datum 1966,AGD66,,Fundamental Point: Johnson Memorial. Latitude: 25 deg 56 min 54.551 sec S; Longitude: 133 deg 12 min 30.077 sec E (of Greenwich).,7003,1995-06-02 00:00:00,Australian Map Grid Technical Manual. National Mapping Council of Australia Technical Publication 7; 1972.,EPSG,,
-6203,Australian Geodetic Datum 1984,AGD84,,,7003,1995-06-02 00:00:00,,EPSG,,
-6204,Ain el Abd 1970,Ain el Abd,,Fundamental Point: Ain El Abd.  Latitude: 28 deg  14 min 06.171 sec N; Longitude: 48 deg 16 min 20.906 sec E (of Greenwich).,7022,1995-06-02 00:00:00,,EPSG,,
-6205,Afgooye,,,,7024,1995-06-02 00:00:00,,EPSG,,
-6206,Agadez,,,,7011,1995-06-02 00:00:00,,EPSG,,
-6207,Lisbon,,,Fundamental Point: Castelo Sao Jorge; Lisbon. Latitude: 38 deg 42 min 43.631 sec N; Longitude: 9 deg 07 min 54.862 sec W (of Greenwich).,7022,1995-06-02 00:00:00,Instituto Geografico e Cadastral; Lisbon,EPSG,,
-6208,Aratu,,,,7022,1995-06-02 00:00:00,,EPSG,,
-6209,Arc 1950,,,Fundamental Point: Buffelsfontein. Latitude: 33 deg 59 min 32.000 sec S; Longitude: 25 deg 30 min 44.622 sec E (of Greenwich).,7013,1995-06-02 00:00:00,,EPSG,,
-6210,Arc 1960,,,Fundamental Point: Buffelsfontein. Latitude: 33 deg 59 min 32.000 sec S; Longitude: 25 deg 30 min 44.622 sec E (of Greenwich).,7012,1995-06-02 00:00:00,,EPSG,,
-6211,Batavia,,,Fundamental Point: Batavia Astro. Station. Latitude: 6 deg  7 min 39.520 sec S; Longitude: 106 deg 48 min 27.790 sec E (of Greenwich).,7004,1995-06-02 00:00:00,,EPSG,,
-6212,Barbados 1938,,,Fundamental point: HMS Challenger astro station M1; latitude 13 deg 04 min 32.53 sec N; longitude 59 deg 36 min 29.34 sec W (of Greenwich).,7012,1999-04-22 00:00:00,Ordnance Survey of Great Britain.,EPSG,,99.171
-6213,Beduaram,,,,7011,1995-06-02 00:00:00,,EPSG,,
-6214,Beijing 1954,,,,7024,1995-06-02 00:00:00,,EPSG,,
-6215,Reseau National Belge 1950,Belge 1950,,Fundamental Point: Lommel (tower). Latitude: 51 deg 13 min 47.334 sec N; Longitude: 0 deg 56 min 44.773 sec E (of Brussels).,7022,1995-06-02 00:00:00,,EPSG,,
-6216,Bermuda 1957,,,,7008,1995-06-02 00:00:00,,EPSG,,
-6218,Bogota,,,Fundamental Point: Bogota observatory. Latitude: 4 deg 35 min 56.570 sec N; Longitude: 74 deg  4 min 51.300 sec W (of Greenwich).,7022,1995-06-02 00:00:00,,EPSG,,
-6219,Bukit Rimpah,,,,7004,1995-06-02 00:00:00,,EPSG,,
-6220,Camacupa,,,,7012,1995-06-02 00:00:00,,EPSG,,
-6221,Campo Inchauspe,,,Fundamental Point: Campo Inchauspe. Latitude: 35 deg 58 min 17.000 sec S; Longitude: 62 deg 10 min 12.000 sec W (of Greenwich).,7022,1995-06-02 00:00:00,,EPSG,,
-6222,Cape,,,Fundamental Point: Buffelsfontein. Latitude: 33 deg 59 min 32.000 sec S; Longitude: 25 deg 30 min 44.622 sec E (of Greenwich).,7013,1996-10-18 00:00:00,"Private Communication, Directorate of Surveys and Land Information, Cape Town.",EPSG,,96.25  99.69
-6223,Carthage,,,,7011,1995-06-02 00:00:00,,EPSG,,
-6224,Chua,,,Fundamental Point: Chua. Latitude: 19 deg 45 min 41.160 sec S; Longitude: 48 deg  6 min  7.560 sec W (of Greenwich).,7022,1995-06-02 00:00:00,,EPSG,,
-6225,Corrego Alegre,,,Fundamental Point: Corrego Alegre. Latitude: 19 deg 50 min 15.140 sec S; Longitude: 48 deg 57 min 42.750 sec W (of Greenwich).,7022,1995-06-02 00:00:00,,EPSG,,
-6226,Cote d'Ivoire,,,,7011,1995-06-02 00:00:00,,EPSG,,
-6227,Deir ez Zor,,,Fundamental Point: Trig. 254 Deir. Latitude: 35 deg 21 min 49.975 sec N; Longitude: 40 deg  5 min 46.770 sec E (of Greenwich).,7011,1995-06-02 00:00:00,,EPSG,,
-6228,Douala,,,,7011,1995-06-02 00:00:00,,EPSG,,
-6229,Egypt 1907,,,Fundamental Point: Station F1. Latitude: 30 deg  1 min 42.860 sec N; Longitude: 31 deg 16 min 33.600 sec E (of Greenwich).,7020,1995-06-02 00:00:00,,EPSG,,
-6230,European Datum 1950,ED50,,Fundamental Point: Potsdam (Helmert Tower). Latitude: 52 deg 22 min 51.450 sec N; Longitude: 13 deg  3 min 58.740 sec E (of Greenwich).,7022,1995-06-02 00:00:00,,EPSG,,
-6231,European Datum 1987,ED87,,,7022,1995-06-02 00:00:00,,EPSG,,
-6232,Fahud,,,Fundamental Point: Station NO68-024 Fahud. Latitude: 22 deg 17 min 31.182 sec N; Longitude: 56 deg 29 min 18.820 sec E (of Greenwich).,7012,1995-06-02 00:00:00,Petroleum Development Oman.,EPSG,Superseded by PSD93 (code 6134).,
-6233,Gandajika 1970,,,,7022,1995-06-02 00:00:00,,EPSG,,
-6234,Garoua,,,,7011,1995-06-02 00:00:00,,EPSG,,
-6235,Guyane Francaise,,,,7022,1995-06-02 00:00:00,,EPSG,,
-6236,Hu Tzu Shan,,,,7022,1995-06-02 00:00:00,,EPSG,,
-6237,Hungarian Datum 1972,HD72,,"Fundamental Point: Szolohegy. Latitude: 47 deg 17 min 32,6156 sec N; Longitude 19 deg 36 min 09.9865 sec E; geoid height 6.56m.",7036,1996-10-18 00:00:00,http://lazarus.elte.hu/gb/geodez/geod3.htm,EPSG,,96.09
-6238,Indonesian Datum 1974,ID74,,Fundamental Point: Padang. Latitude: 0 deg 56 min 38.414 sec S; Longitude: 100 deg 22 min  8.804 sec E (of Greenwich).,7021,1995-06-02 00:00:00,,EPSG,,
-6239,Indian 1954,,,Fundamental Point: Kalianpur. Latitude: 24 deg  07 min 11.260 sec N; Longitude: 77 deg 39 min 17.570 sec E (of Greenwich).,7015,1995-06-02 00:00:00,,EPSG,,
-6240,Indian 1975,,,Fundamental Point: Khau Sakaerang,7015,1995-06-02 00:00:00,,EPSG,,
-6241,Jamaica 1875,,,Fundamental Point: Fort Charles Flagstaff. Latitude: 17 deg 55 min 55.800 sec N; Longitude: 76 deg 56 min 37.260 sec W (of Greenwich).,7034,1995-06-02 00:00:00,,EPSG,,
-6242,Jamaica 1969,JAD69,,Fundamental Point: Fort Charles Flagstaff. Latitude: 17 deg 55 min 55.800 sec N; Longitude: 76 deg 56 min 37.260 sec W (of Greenwich).,7008,1995-06-02 00:00:00,,EPSG,,
-6243,Kalianpur 1880,,,Fundamental Point: Kalianpur. Latitude: 24 deg  07 min 11.260 sec N; Longitude: 77 deg 39 min 17.570 sec E (of Greenwich).,7042,1999-10-20 00:00:00,"G. Bomford; \"The Re-adjustment of the Indian Triangulation\"; Survey of India Professional Paper 28; 1939.",EPSG,Includes 1916 extrension into Burma (Myanmar).  Superseded by 1937 adjustment.,97.23
-6244,Kandawala,,,,7015,1995-06-02 00:00:00,,EPSG,,
-6245,Kertau,,,Fundamental Point: Kertau. Latitude: 3 deg 27 min 50.710 sec N; Longitude: 102 deg 37 min 24.550 sec E (of Greenwich).,7018,1995-06-02 00:00:00,,EPSG,,
-6246,Kuwait Oil Company,KOC,,,7012,1995-06-02 00:00:00,,EPSG,,
-6247,La Canoa,,,Fundamental Point: La Canoa. Latitude: 8 deg 34 min 17.170 sec N; Longitude: 63 deg 51 min 34.880 sec W (of Greenwich).,7022,1995-06-02 00:00:00,,EPSG,Origin also adopted for PSAD56.,
-6248,Provisional South American Datum 1956,PSAD56,,Fundamental Point: La Canoa. Latitude: 8 deg 34 min 17.170 sec N; Longitude: 63 deg 51 min 34.880 sec W (of Greenwich).,7022,1995-06-02 00:00:00,,EPSG,Same origin as La Canoa datum.,
-6249,Lake,,,Fundamental Point: Maracaibo Cathedral. Latitude: 10 deg 38 min 34.678 sec N; Longitude: 71 deg 36 min 20.224 sec W (of Greenwich).,7022,1995-06-02 00:00:00,,EPSG,,
-6250,Leigon,,,Fundamental Point: GCS Station 121. Latitude: 5 deg 38 min 52.270 sec N; Longitude: 0 deg 11 min 46.080 sec W (of Greenwich).,7012,1995-06-02 00:00:00,,EPSG,,
-6251,Liberia 1964,,,,7012,1995-06-02 00:00:00,,EPSG,,
-6252,Lome,,,,7011,1995-06-02 00:00:00,,EPSG,,
-6253,Luzon 1911,,,Fundamental Point: Balacan. Latitude: 13 deg 33 min 41.000 sec N; Longitude: 121 deg 52 min  03.000 sec E (of Greenwich).,7008,1995-06-02 00:00:00,,EPSG,,
-6254,Hito XVIII 1963,,,,7022,1995-06-02 00:00:00,,EPSG,,
-6255,Herat North,,,,7022,1995-06-02 00:00:00,,EPSG,,
-6256,Mahe 1971,,,Fundamental Point: Mahe,7012,1995-06-02 00:00:00,,EPSG,,
-6257,Makassar,,,Fundamental Point: Moncongloe,7004,1995-06-02 00:00:00,,EPSG,,
-6258,European Terrestrial Reference Frame 89,ETRF89,,,7019,1999-04-22 00:00:00,,EPSG,Coincides with WGS84 at the one metre level.,97.11  97.55  99.111
-6259,Malongo 1987,,,Fundamental Point: Station Y at Malongo base camp. Latitude: 5 deg 23 min 34.327 sec S; Longitude: 12 deg 12 min  02.393 sec E (of Greenwich).,7022,1995-06-02 00:00:00,Chevron Petroleum Technology.,EPSG,Offshore extension of Mhast datum (6264) using Transit translocation.,
-6260,Manoca,,,,7012,1995-06-02 00:00:00,,EPSG,,
-6261,Merchich,,,,7011,1995-06-02 00:00:00,,EPSG,,
-6262,Massawa,,,,7004,1995-06-02 00:00:00,,EPSG,,
-6263,Minna,,,Fundamental Point: Minna base station L40. Latitude: 9 deg 38 min  09.000 sec N; Longitude: 6 deg 30 min 59.000 sec E (of Greenwich).,7012,1995-06-02 00:00:00,,EPSG,,
-6264,Mhast,,,,7022,1995-06-02 00:00:00,,EPSG,,
-6265,Monte Mario,,,Fundamental Point: Monte Mario. Latitude: 41 deg 55 min 25.510 sec N; Longitude: 0 deg  00 min  00.000 sec E (of Rome).,7022,1995-06-02 00:00:00,,EPSG,,
-6266,M'poraloko,,,,7011,1995-06-02 00:00:00,,EPSG,,
-6267,North American Datum 1927,NAD27,,Fundamental Point: Meade's Ranch. Latitude: 39 deg 13 min 26.686 sec N; Longitude: 98 deg 32 min 30.506 sec W (of Greenwich).,7008,1995-06-02 00:00:00,,EPSG,,
-6268,NAD Michigan,,,Fundamental Point: Meade's Ranch. Latitude: 39 deg 13 min 26.686 sec N; Longitude: 98 deg 32 min 30.506 sec W (of Greenwich).,7009,1995-06-02 00:00:00,,EPSG,,
-6269,North American Datum 1983,NAD83,,Origin at geocentre.,7019,1995-06-02 00:00:00,,EPSG,,
-6270,Nahrwan 1967,,,Fundamental point: Nahrwan south base.  Latitude: 33 deg 19 min 10.87 sec N; Longitude: 44 deg 43 min 25.54 sec E (of Greenwich).,7012,1995-06-02 00:00:00,,EPSG,,
-6271,Naparima 1972,,,Fundamental Point: Naparima. Latitude: 10 deg 16 min 44.860 sec N; Longitude: 61 deg 27 min 34.620 sec W (of Greenwich).,7022,1995-06-02 00:00:00,,EPSG,,
-6272,New Zealand Geodetic Datum 1949,GD49,,Fundamental Point: Papatahi. Latitude: 41 deg 19 min  8.900 sec S; Longitude: 175 deg  02 min 51.000 sec E (of Greenwich).,7022,1995-06-02 00:00:00,,EPSG,,
-6273,NGO 1948,,,,7005,1995-06-02 00:00:00,,EPSG,,
-6274,Datum 73,,,Fundamental Point:  Latitude: 39 deg 41 min 37.30 sec N; Longitude: 8 deg 07 min 53.31 sec W (of Greenwich).,7022,1995-06-02 00:00:00,Instituto Geografico e Cadastral; Lisbon,EPSG,,
-6275,Nouvelle Triangulation Francaise,NTF,,Fundamental Point: Pantheon,7011,1995-06-02 00:00:00,,EPSG,,
-6276,NSWC 9Z-2,,,,7025,1995-06-02 00:00:00,,EPSG,Transit precise ephemeris before 1991.,
-6277,OSGB 1936,,,Fundamental Point: Herstmonceux. Latitude: 50 deg 51 min 55.271 sec N; Longitude: 0 deg 20 min 45.882 sec E (of Greenwich).,7001,1995-06-02 00:00:00,,EPSG,,
-6278,OSGB 1970 (SN),OSGB70,,Fundamental Point: Herstmonceux. Latitude: 50 deg 51 min 55.271 sec N; Longitude: 0 deg 20 min 45.882 sec E (of Greenwich).,7001,1995-06-02 00:00:00,,EPSG,,
-6279,OS (SN) 1980,OS(SN)80,,Fundamental Point: Herstmonceux. Latitude: 50 deg 51 min 55.271 sec N; Longitude: 0 deg 20 min 45.882 sec E (of Greenwich).,7001,1995-06-02 00:00:00,,EPSG,,
-6280,Padang 1884,Padang,,Fundamental Point: Padang,7004,1995-06-02 00:00:00,,EPSG,,
-6281,Palestine 1923,,,Fundamental Point: Point 82'M  Jerusalem. Latitude: 31 deg 44 min  2.749 sec N; Longitude: 35 deg 12 min 43.490 sec E (of Greenwich).,7010,1995-06-02 00:00:00,,EPSG,,
-6282,Pointe Noire,,,Fundamental Point: Point Noire Astro. Latitude: 4 deg 47 min  0.100 sec S; Longitude: 11 deg 51 min  1.550 sec E (of Greenwich).,7011,1995-06-02 00:00:00,,EPSG,,
-6283,Geocentric Datum of Australia 1994,GDA94,,,7019,1995-06-02 00:00:00,Australian Surveying and Land Information Group Internet WWW page.,EPSG,Coincident with WGS84 to within 1 metre.,
-6284,Pulkovo 1942,,,Fundamental Point: Pulkovo observatory. Latitude: 59 deg 46 min 18.550 sec N; Longitude: 30 deg 19 min 42.090 sec E (of Greenwich).,7024,1995-06-02 00:00:00,,EPSG,,
-6285,Qatar,,,Fundamental Point: Station G3,7022,1995-06-02 00:00:00,,EPSG,,
-6286,Qatar 1948,,,Fundamental Point: Sokey 0 M. Latitude: 25 deg 22 min 56.500 sec N; Longitude: 50 deg 45 min 41.000 sec E (of Greenwich).,7020,1995-06-02 00:00:00,,EPSG,,
-6287,Qornoq,,,,7022,1995-06-02 00:00:00,,EPSG,,
-6288,Loma Quintana,,,Fundamental Point: Loma Quintana,7022,1995-06-02 00:00:00,,EPSG,,
-6289,Amersfoort,,,Fundamental Point: Amersfoort. Latitude: 52 deg  09 min 22.178 sec N; Longitude: 5 deg 23 min 15.478 sec E (of Greenwich).,7004,1995-06-02 00:00:00,,EPSG,,
-6291,South American Datum 1969,SAD69,,,7036,1996-10-18 00:00:00,,EPSG,SAD69 uses GRS67 ellipsoid with 1/f to exactly 2 decimal places.  Precision of ellipsoid entry increased from 2 to 5 dp with change id 97.252.  Error introduced if not using the truncated precision is 0 to 31mm.,96.09  97.252
-6292,Sapper Hill 1943,,,,7022,1995-06-02 00:00:00,,EPSG,,
-6293,Schwarzeck,,,,7006,1995-06-02 00:00:00,,EPSG,,
-6294,Segora,,,,7004,1995-06-02 00:00:00,,EPSG,,
-6295,Serindung,,,,7004,1995-06-02 00:00:00,,EPSG,,
-6296,Sudan,,,,7011,1995-06-02 00:00:00,,EPSG,,
-6297,Tananarive 1925,Tananarive,,Fundamental Point: Tananarive observatory. Latitude: 18 deg 55 min  2.100 sec S; Longitude: 45 deg 12 min 52.800 sec E (of Greenwich).,7022,1995-06-02 00:00:00,,EPSG,,
-6298,Timbalai 1948,,,Fundamental Point: Timbalai. Latitude: 5 deg 17 min  3.548 sec N; Longitude: 115 deg 10 min 56.409 sec E (of Greenwich).,7016,1995-06-02 00:00:00,,EPSG,,
-6299,TM65,,,,7002,1995-06-02 00:00:00,,EPSG,,
-6300,TM75,,,,7002,1995-06-02 00:00:00,,EPSG,,
-6301,Tokyo,,,Fundamental Point: Nikon-Keido-Genten. Latitude: 35 deg 39 min 17.5148 sec N; Longitude: 139 deg 44 min 40.5020 sec E (of Greenwich).,7004,1995-06-02 00:00:00,Geographic Survey Institute; Japan; Bulletin 40 (March 1994).  Also http://vldb.gsi-mc.go.jp/sokuchi/datum/tokyodatum.html,EPSG,,98.46
-6302,Trinidad 1903,,,,7007,1995-06-02 00:00:00,,EPSG,,
-6303,Trucial Coast 1948,TC(1948),,Fundamental Point: TC1. Latitude: 25 deg 23 min 50.190 sec N; Longitude: 55 deg 26 min 43.950 sec E (of Greenwich).,7020,1995-06-02 00:00:00,,EPSG,,
-6304,Voirol 1875,,,Fundamental Point: Voirol. Latitude: 40.835864 grads N; Longitude: 0.788735 grads E of Paris.,7011,1995-06-02 00:00:00,IGN Paris,EPSG,,
-6305,Voirol Unifie 1960,Voirol Unifie,,,7012,1999-10-20 00:00:00,"\"Le System Geodesique Nord-Sahara\"; IGN Paris",EPSG,Conformal transformation from ED50. Used only with Lambert Algeria zones: in other cases use Nord Sahara 1959 geodetic datum.,99.62
-6306,Bern 1938,,,Fundamental Point: Old Bern observatory. Latitude: 46 deg 57 min  7.890 sec N; Longitude: 7 deg 26 min 22.335 sec E (of Greenwich).,7004,1995-06-02 00:00:00,"\"Die Projektionen der schweizerischen Plan- und Kartenwerke\"; J. Bolliger 1967",EPSG,This redetermination of the coordinates of fundamental point is used for scientific purposes and as the graticule overprinted on topographic maps constructed on the CH1903 / LV03 projected CS (code 21781).,
-6307,Nord Sahara 1959,,,,7012,1999-10-20 00:00:00,"\"Le System Geodesique Nord-Sahara\"; IGN Paris",EPSG,Conformal transformation from ED50.,99.62
-6308,Stockholm 1938,RT38,,Fundamental Point: Stockholm observatory,7004,1996-04-12 00:00:00,,EPSG,Superseded by RT90 adjustment (datum code 6124),
-6309,Yacare,,,,7022,1995-06-02 00:00:00,,EPSG,,
-6310,Yoff,,,,7011,1995-06-02 00:00:00,,EPSG,,
-6311,Zanderij,,,,7022,1995-06-02 00:00:00,,EPSG,,
-6312,Militar-Geographische Institut,MGI,,Fundamental Point: Hermannskogel. Latitude: 48 deg 16 min 15.29 sec N; Longitude: 16 deg 17 min 41.06 sec E (of Greenwich).,7004,1995-06-02 00:00:00,Bundesamt fur Eich- und Vermessungswesen; Wien,EPSG,,
-6313,Reseau National Belge 1972,Belge 1972,,Fundamental Point: Uccle observatory. Latitude: 50 deg 47 min 57.704 sec N; Longitude: 4 deg 21 min 24.983 sec E (of Greenwich).,7022,1995-06-02 00:00:00,,EPSG,,
-6314,Deutsche Hauptdreiecksnetz,DHDN,,Fundamental Point: Potsdam. Latitude: 52 deg 22 min 53.954 sec N; Longitude: 13 deg 04 min 01.153 sec E (of Greenwich).,7004,1995-06-02 00:00:00,,EPSG,,
-6315,Conakry 1905,,,Fundamental Point: Conakry. Latitude: 10.573766g N; Longitude: 17.833682g W (of Paris).,7011,1995-06-02 00:00:00,,EPSG,,
-6316,Dealul Piscului 1933,,,Fundamental point: latitude 44 deg 24 min 33.9606 sec N; longitude 26 deg 06 min 44.8772 sec E (of Greenwich).,7022,1996-04-12 00:00:00,Institute for Geodesy Photogrametry and Land Management,EPSG,Superseded by 1970 adjustment (datum code 6317),
-6317,Dealul Piscului 1970,,,Fundamental point: latitude 44 deg 24 min 23.7709 sec N; longitude 26deg 06 min 44.1265 sec E (of Greenwich).,7024,1996-04-12 00:00:00,Institute for Geodesy Photogrametry and Land Management,EPSG,Supersedes 1933 adjustment (datum code 6316),
-6318,National Geodetic Network,NGN,,,7030,1996-04-12 00:00:00,,EPSG,,
-6319,Kuwait Utility,KUDAMS,,,7019,1996-04-12 00:00:00,,EPSG,,
-6322,World Geodetic System 1972,WGS 72,,,7043,1999-04-22 00:00:00,,EPSG,"Used by GPS before 1987. For Transit satellite positioning see also WGS 72BE.                                                                                                                  \
-Datum code 6323 reserved for southern hemisphere ProjCS's.",99.03
-6324,WGS 72 Transit Broadcast Ephemeris,WGS 72BE,,,7043,1999-04-22 00:00:00,,EPSG,Alleged datum for use with Transit broadcast ephemeris prior to 1989. Relationship to WGS 72 has changed over time.  Datum code 6325 reserved for southern hemisphere ProjCS's.,99.03
-6326,World Geodetic System 1984,WGS 84,,Origin at geocentre.,7030,1995-06-02 00:00:00,,EPSG,Datum code 6327 reserved for southern hemisphere ProjCS's,
-6600,Anguilla 1957,,,Fundamental point: station A4.,7012,1999-04-22 00:00:00,Ordnance Survey of Great Britain.,EPSG,,
-6601,Antigua 1943,,,Fundamental point: station A14.,7012,1999-04-22 00:00:00,Ordnance Survey of Great Britain.,EPSG,,
-6602,Dominica 1945,,,Fundamental point: station M12.,7012,1999-04-22 00:00:00,Ordnance Survey of Great Britain.,EPSG,,
-6603,Grenada 1953,,,Fundamental point: station GS8.,7012,1999-04-22 00:00:00,Ordnance Survey of Great Britain.,EPSG,,
-6604,Montserrat 1958,,,Fundamental point: station M36.,7012,1999-04-22 00:00:00,Ordnance Survey of Great Britain.,EPSG,,
-6605,St. Kitts 1955,,,Fundamental point: station K12.,7012,1999-04-22 00:00:00,Ordnance Survey of Great Britain.,EPSG,,
-6606,St. Lucia 1955,,,Fundamental point: station DCS3.,7012,1999-04-22 00:00:00,Ordnance Survey of Great Britain.,EPSG,,
-6607,St. Vincent 1945,,,Fundamental point: station V1.,7012,1999-04-22 00:00:00,Ordnance Survey of Great Britain.,EPSG,,
-6608,North American Datum 1927 (1976),NAD27(76),,Fundamental Point: Meade's Ranch. Latitude: 39 deg 13 min 26.686 sec N; Longitude: 98 deg 32 min 30.506 sec W (of Greenwich).,7008,1999-05-12 00:00:00,Geodetic Survey of Canada.,EPSG,NAD27(76) used in Ontario for all maps at scale 1/20 000 and larger; elsewhere in Canada for selected purposes.,
-6609,North American Datum 1927 (CGQ77),CGQ77,,Fundamental Point: Meade's Ranch. Latitude: 39 deg 13 min 26.686 sec N; Longitude: 98 deg 32 min 30.506 sec W (of Greenwich).,7008,1999-05-12 00:00:00,Geodetic Service of Quebec.  Contact alain.bernard at mrn.gouv.qc.ca,EPSG,NAD27 (CGQ77) used in Quebec for all maps at scale 1/20 000 and larger; generally for maps issued by the Quebec cartography office whose reference system is CGQ77.,
-6901,Ancienne Triangulation Francaise,ATF,,,7027,1995-06-02 00:00:00,,EPSG,,
-6902,Nord de Guerre,NDG,,,7027,1995-06-02 00:00:00,,EPSG,,
-6903,Madrid 1870,,,Fundamental point: Madrid observatory.,7028,1998-11-11 00:00:00,Institut de Geomatica; Barcelona,EPSG,,
diff --git a/src/tiff/csv/geod_trf.c b/src/tiff/csv/geod_trf.c
deleted file mode 100644
index 1c90d1f..0000000
--- a/src/tiff/csv/geod_trf.c
+++ /dev/null
@@ -1,492 +0,0 @@
-#include "defs.h"
-datafile_rows_t geod_trf_row_1[] = {"GEOD_TRF_CODE","GEOD_TRF_EPSG_NAME","GEOD_TRF_USER_NAME","DESCRIPTION","SOURCE_HORIZCS_CODE","TARGET_HORIZCS_CODE","COORD_TRF_VARIANT","CONCAT_TRF_AREA_OF_USE","COORD_TRF_PATH_CODE","REVISION_DATE","INFORMATION_SOURCE","DATA_SOURCE","CONCAT_TRF_REMARKS","CHANGE_ID",NULL};
-datafile_rows_t geod_trf_row_2[] = {"8000","Adindan to WGS 84 (1)","","DMA-Eth Sud","4201","4326","1","","8400","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_3[] = {"8001","Adindan to WGS 84 (2)","","DMA-Bfa","4201","4326","2","","8401","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_4[] = {"8002","Adindan to WGS 84 (3)","","DMA-Cmr","4201","4326","3","","8402","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_5[] = {"8003","Adindan to WGS 84 (4)","","DMA-Eth","4201","4326","4","","8403","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_6[] = {"8004","Adindan to WGS 84 (5)","","DMA-Mli","4201","4326","5","","8404","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_7[] = {"8005","Adindan to WGS 84 (6)","","DMA-Sen","4201","4326","6","","8405","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_8[] = {"8006","Adindan to WGS 84 (7)","","DMA-Sud","4201","4326","7","","8406","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_9[] = {"8007","Afgooye to WGS 84 (1)","","DMA-Som","4205","4326","1","","8407","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_10[] = {"8008","AGD66 to WGS 84 (1)","","DMA-Aus","4202","4326","1","","8408","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_11[] = {"8009","AGD84 to WGS 84 (1)","","DMA-Aus","4203","4326","1","","8409","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_12[] = {"8010","Ain el Abd to WGS 84 (1)","","DMA-Bhr","4204","4326","1","","8410","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_13[] = {"8011","Ain el Abd to WGS 84 (2)","","DMA-Sau","4204","4326","2","","8411","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_14[] = {"8012","Amersfoort to WGS 84 (1)","","NCG-Nld","4289","4326","1","","8412","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_15[] = {"8013","Arc 1950 to WGS 84 (1)","","DMA-mean","4209","4326","1","","8413","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_16[] = {"8014","Arc 1950 to WGS 84 (2)","","DMA-Bwa","4209","4326","2","","8414","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_17[] = {"8015","Arc 1950 to WGS 84 (3)","","DMA-Bdi","4209","4326","3","","8415","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_18[] = {"8016","Arc 1950 to WGS 84 (4)","","DMA-Lso","4209","4326","4","","8416","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_19[] = {"8017","Arc 1950 to WGS 84 (5)","","DMA-Mwi","4209","4326","5","","8417","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_20[] = {"8018","Arc 1950 to WGS 84 (6)","","DMA-Swz","4209","4326","6","","8418","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_21[] = {"8019","Arc 1950 to WGS 84 (7)","","DMA-Cod","4209","4326","7","","8419","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_22[] = {"8020","Arc 1950 to WGS 84 (8)","","DMA-Zmb","4209","4326","8","","8420","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_23[] = {"8021","Arc 1950 to WGS 84 (9)","","DMA-Zwe","4209","4326","9","","8421","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_24[] = {"8022","Arc 1960 to WGS 84 (1)","","DMA-Ken Tza","4210","4326","1","","8422","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_25[] = {"8023","Batavia to WGS 84 (1)","","DMA-Idn Sumatra","4211","4326","1","","8423","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_26[] = {"8024","Bermuda 1957 to WGS 84 (1)","","DMA-Bmu","4216","4326","1","","8424","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_27[] = {"8025","Bogota to WGS 84 (1)","","DMA-Col","4218","4326","1","","8425","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_28[] = {"8026","Bukit Rimpah to WGS 84 (1)","","DMA-Idn Beli","4219","4326","1","","8426","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_29[] = {"8027","Campo Inchauspe to WGS 84 (1)","","DMA-Arg","4221","4326","1","","8427","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_30[] = {"8028","Cape to WGS 84 (1)","","DMA-Zaf","4222","4326","1","","8428","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_31[] = {"8029","Cape to WGS 84 (2)","","DSLI-Zaf","4222","4326","2","","8429","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_32[] = {"8030","Carthage to WGS 84 (1)","","DMA-Tun","4223","4326","1","","8430","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_33[] = {"8031","Chua to WGS 84 (1)","","DMA-Pry","4224","4326","1","","8431","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_34[] = {"8032","Corrego Alegre to WGS 84 (1)","","DMA-Bra","4225","4326","1","","8432","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_35[] = {"8033","ED50 to WGS 84 (1)","","DMA-mean","4230","4326","1","","8433","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_36[] = {"8034","ED50 to WGS 84 (2)","","DMA-cenEur","4230","4326","2","","8434","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_37[] = {"8035","ED50 to WGS 84 (3)","","DMA-midEast","4230","4326","3","","8435","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_38[] = {"8036","ED50 to WGS 84 (4)","","DMA-Cyp","4230","4326","4","","8436","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_39[] = {"8037","ED50 to WGS 84 (5)","","DMA-Egy","4230","4326","5","","8437","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_40[] = {"8038","ED50 to WGS 84 (6)","","DMA-Irl Gbr","4230","4326","6","","8438","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_41[] = {"8039","ED50 to WGS 84 (7)","","DMA-Fin Nor","4230","4326","7","","8439","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_42[] = {"8040","ED50 to WGS 84 (8)","","DMA-Grc","4230","4326","8","","8440","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_43[] = {"8041","ED50 to WGS 84 (9)","","DMA-Irn","4230","4326","9","","8441","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_44[] = {"8042","ED50 to WGS 84 (10)","","DMA-Ita Sard","4230","4326","10","","8442","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_45[] = {"8043","ED50 to WGS 84 (11)","","DMA-Ita Sic","4230","4326","11","","8443","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_46[] = {"8044","ED50 to WGS 84 (12)","","DMA-Mlt","4230","4326","12","","8444","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_47[] = {"8045","ED50 to WGS 84 (13)","","DMA-Prt Esp","4230","4326","13","","8445","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_48[] = {"8046","ED50 to WGS 84 (14)","","6Nat-NSea","4230","4326","14","Denmark - North Sea;  Germany - North Sea;  Netherlands - offshore;  Norway - North Sea south of 62 deg N; United Kingdom (UKCS) - North Sea south of 62 deg N.","8446","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_49[] = {"8047","ED50 to WGS 84 (15)","","NMA-Nor N65","4230","4326","15","Norway - offshore north of 65 deg N.","8447","1996-10-18 00:00:00","","EPSG","The concatenation of transformations 1147 and 1146 gives the following position vector tfm: dX=-84.491  dY=-100.559  dZ=-114.209 metres rX= -2.4006  rY=-0.5367  rZ=-2.3742 microradians  dS=+0.2947 ppm.","",NULL};
-datafile_rows_t geod_trf_row_50[] = {"8048","Egypt 1907 to WGS 84 (1)","","DMA-Egy","4229","4326","1","","8448","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_51[] = {"8049","ETRF89 to WGS 84 (1)","","EPSG-eur","4258","4326","1","","8449","1997-06-19 00:00:00","","EPSG","","97.24",NULL};
-datafile_rows_t geod_trf_row_52[] = {"8050","GDA94 to WGS 84 (1)","","EPSG-Aus","4283","4326","1","","8450","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_53[] = {"8051","GD49 to WGS 84 (1)","","DMA-Nzl","4272","4326","1","","8451","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_54[] = {"8052","Hu Tzu Shan to WGS 84 (1)","","DMA-Twn","4236","4326","1","","8452","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_55[] = {"8053","Indian 1954 to WGS 84 (1)","","DMA-Tha","4239","4326","1","","8453","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_56[] = {"8054","Indian 1975 to WGS 84 (1)","","DMA-Tha","4240","4326","1","","8454","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_57[] = {"8055","Kalianpur 1937 to WGS 84 (1)","","DMA-Bgd","4144","4326","1","","8455","1999-10-20 00:00:00","","EPSG","","97.235",NULL};
-datafile_rows_t geod_trf_row_58[] = {"8056","Kalianpur 1975 to WGS 84 (1)","","DMA-Ind Npl","4146","4326","1","","8456","1999-10-20 00:00:00","","EPSG","","97.235",NULL};
-datafile_rows_t geod_trf_row_59[] = {"8057","Kandawala to WGS 84 (1)","","DMA-Lka","4244","4326","1","","8457","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_60[] = {"8058","Kertau to WGS 84 (1)","","DMA-Mys Sgp","4245","4326","1","","8458","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_61[] = {"8059","Leigon to WGS 84 (1)","","DMA-Gha","4250","4326","1","","8459","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_62[] = {"8060","Liberia 1964 to WGS 84 (1)","","DMA-Lbr","4251","4326","1","","8460","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_63[] = {"8061","Luzon 1911 to WGS 84 (1)","","DMA-Phl N","4253","4326","1","","8461","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_64[] = {"8062","Luzon 1911 to WGS 84 (2)","","DMA-Phl Min","4253","4326","2","","8462","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_65[] = {"8063","M'poraloko to WGS 84 (1)","","DMA-Gab","4266","4326","1","","8463","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_66[] = {"8064","Mahe 1971 to WGS 84 (1)","","DMA-Syc","4256","4326","1","","8464","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_67[] = {"8065","Massawa to WGS 84 (1)","","DMA-Eth","4262","4326","1","","8465","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_68[] = {"8066","Merchich to WGS 84 (1)","","DMA-Mar","4261","4326","1","","8466","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_69[] = {"8067","Minna to WGS 84 (1)","","DMA-Cmr","4263","4326","1","","8467","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_70[] = {"8068","Minna to WGS 84 (2)","","DMA-Nga","4263","4326","2","","8468","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_71[] = {"8069","Monte Mario to WGS 84 (1)","","DMA-Ita Sar","4265","4326","1","","8469","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_72[] = {"8070","NAD27 to WGS 84 (1)","","DMA-Carib","4267","4326","1","","8470","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_73[] = {"8071","NAD27 to WGS 84 (2)","","DMA-Cen Am","4267","4326","2","","8471","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_74[] = {"8072","NAD27 to WGS 84 (3)","","DMA-Can","4267","4326","3","","8472","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_75[] = {"8073","NAD27 to WGS 84 (4)","","DMA-Conus","4267","4326","4","","8473","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_76[] = {"8074","NAD27 to WGS 84 (5)","","DMA-ConusE","4267","4326","5","","8474","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_77[] = {"8075","NAD27 to WGS 84 (6)","","DMA-ConusW","4267","4326","6","","8475","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_78[] = {"8076","NAD27 to WGS 84 (7)","","DMA-USA AK","4267","4326","7","","8476","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_79[] = {"8077","NAD27 to WGS 84 (8)","","DMA-Bha xSalv","4267","4326","8","","8477","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_80[] = {"8078","NAD27 to WGS 84 (9)","","DMA-Bha Salv","4267","4326","9","","8478","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_81[] = {"8079","NAD27 to WGS 84 (10)","","DMA-Can AB BC","4267","4326","10","","8479","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_82[] = {"8080","NAD27 to WGS 84 (11)","","DMA-Can MN ON","4267","4326","11","","8480","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_83[] = {"8081","NAD27 to WGS 84 (12)","","DMA-Can E","4267","4326","12","","8481","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_84[] = {"8082","NAD27 to WGS 84 (13)","","DMA-Can NWT","4267","4326","13","","8482","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_85[] = {"8083","NAD27 to WGS 84 (14)","","DMA-Can Yuk","4267","4326","14","","8483","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_86[] = {"8084","NAD27 to WGS 84 (15)","","DMA-Pan","4267","4326","15","","8484","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_87[] = {"8085","NAD27 to WGS 84 (16)","","DMA-Cuba","4267","4326","16","","8485","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_88[] = {"8086","NAD27 to WGS 84 (17)","","DMA-Grl","4267","4326","17","","8486","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_89[] = {"8087","NAD27 to WGS 84 (18)","","DMA-Mex","4267","4326","18","","8487","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_90[] = {"8088","NAD83 to WGS 84 (1)","","DMA-N Am","4269","4326","1","","8488","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_91[] = {"8089","Nahrwan 1967 to WGS 84 (1)","","DMA-Omn Mas","4270","4326","1","","8489","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_92[] = {"8090","Nahrwan 1967 to WGS 84 (2)","","DMA-Sau","4270","4326","2","","8490","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_93[] = {"8091","Nahrwan 1967 to WGS 84 (3)","","DMA-UAE","4270","4326","3","","8491","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_94[] = {"8092","Naparima 1972 to WGS 84 (1)","","DMA-Tto","4271","4326","1","","8492","1998-06-30 00:00:00","","EPSG","","98.102",NULL};
-datafile_rows_t geod_trf_row_95[] = {"8093","NTF to WGS 84 (1)","","IGN-Fra","4275","4326","1","","8493","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_96[] = {"8094","NTF (Paris) to WGS 84 (1)","","EPSG-Fra","4807","4326","1","France..","8494","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_97[] = {"8095","OSGB 1936 to WGS 84 (1)","","DMA-Gbr","4277","4326","1","","8495","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_98[] = {"8096","OSGB 1936 to WGS 84 (2)","","DMA-Gbr Eng","4277","4326","2","","8496","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_99[] = {"8097","OSGB 1936 to WGS 84 (3)","","DMA-Gbr E&W","4277","4326","3","","8497","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_100[] = {"8098","OSGB 1936 to WGS 84 (4)","","DMA-Gbr Sco","4277","4326","4","","8498","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_101[] = {"8099","OSGB 1936 to WGS 84 (5)","","DMA-Gbr Wal","4277","4326","5","","8499","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_102[] = {"8100","Pointe Noire to WGS 84 (1)","","DMA-Cog","4282","4326","1","","8500","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_103[] = {"8101","PSAD56 to WGS 84 (1)","","DMA-mean","4248","4326","1","","8501","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_104[] = {"8102","PSAD56 to WGS 84 (2)","","DMA-Bol","4248","4326","2","","8502","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_105[] = {"8103","PSAD56 to WGS 84 (3)","","DMA-Chl N","4248","4326","3","","8503","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_106[] = {"8104","PSAD56 to WGS 84 (4)","","DMA Chl S","4248","4326","4","","8504","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_107[] = {"8105","PSAD56 to WGS 84 (5)","","DMA-Col","4248","4326","5","","8505","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_108[] = {"8106","PSAD56 to WGS 84 (6)","","DMA-Ecu","4248","4326","6","","8506","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_109[] = {"8107","PSAD56 to WGS 84 (7)","","DMA-Guy","4248","4326","7","","8507","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_110[] = {"8108","PSAD56 to WGS 84 (8)","","DMA-Per","4248","4326","8","","8508","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_111[] = {"8109","PSAD56 to WGS 84 (9)","","DMA-Ven","4248","4326","9","","8509","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_112[] = {"8110","Qatar to WGS 84 (1)","","DMA-Qat","4285","4326","1","","8510","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_113[] = {"8111","Qornoq to WGS 84 (1)","","DMA-Grl S","4287","4326","1","","8511","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_114[] = {"8112","SAD69 to WGS 84 (1)","","DMA-mean","4291","4326","1","","8512","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_115[] = {"8113","SAD69 to WGS 84 (2)","","DMA-Arg","4291","4326","2","","8513","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_116[] = {"8114","SAD69 to WGS 84 (3)","","DMA-Bol","4291","4326","3","","8514","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_117[] = {"8115","SAD69 to WGS 84 (4)","","DMA-Bra","4291","4326","4","","8515","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_118[] = {"8116","SAD69 to WGS 84 (5)","","DMA-Chile","4291","4326","5","","8516","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_119[] = {"8117","SAD69 to WGS 84 (6)","","DMA-Col","4291","4326","6","","8517","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_120[] = {"8118","SAD69 to WGS 84 (7)","","DMA-Ecu","4291","4326","7","","8518","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_121[] = {"8119","SAD69 to WGS 84 (8)","","DMA-Ecu Gal","4291","4326","8","","8519","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_122[] = {"8120","SAD69 to WGS 84 (9)","","DMA-Guyana","4291","4326","9","","8520","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_123[] = {"8121","SAD69 to WGS 84 (10)","","DMA-Pgy","4291","4326","10","","8521","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_124[] = {"8122","SAD69 to WGS 84 (11)","","DMA-Peru","4291","4326","11","","8522","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_125[] = {"8123","SAD69 to WGS 84 (12)","","DMA-Tto","4291","4326","12","","8523","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_126[] = {"8124","SAD69 to WGS 84 (13)","","DMA-Ven","4291","4326","13","","8524","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_127[] = {"8125","Sapper Hill 1943 to WGS 84 (1)","","DMA-Flk E","4292","4326","1","","8525","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_128[] = {"8126","Schwarzeck to WGS 84 (1)","","DMA-Nam","4293","4326","1","","8526","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_129[] = {"8127","Tananarive to WGS 84 (1)","","DMA-Mdg","4297","4326","1","","8527","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_130[] = {"8128","Timbalai 1948 to WGS 84 (1)","","DMA-Borneo","4298","4326","1","","8528","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_131[] = {"8129","TM65 to WGS 84 (1)","","DMA-Ire","4299","4326","1","","8529","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_132[] = {"8130","Tokyo to WGS 84 (1)","","DMA-Jpn Kor","4301","4326","1","","8530","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_133[] = {"8131","Tokyo to WGS 84 (2)","","DMA-Jpn","4301","4326","2","","8531","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_134[] = {"8132","Tokyo to WGS 84 (3)","","DMA-Kor","4301","4326","3","","8532","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_135[] = {"8133","Tokyo to WGS 84 (4)","","DMA-Jpn Ok","4301","4326","4","","8533","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_136[] = {"8134","Yacare to WGS 84 (1)","","DMA-Ury","4309","4326","1","","8534","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_137[] = {"8135","Zanderij to WGS 84 (1)","","DMA-Sur","4311","4326","1","","8535","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_138[] = {"8136","ED50 to ED87 (1)","","6Nat-NSea","4230","4231","1","","8536","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_139[] = {"8137","ED87 to WGS 84 (1)","","6Nat-NSea","4231","4326","1","","8537","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_140[] = {"8138","ED50 to ED87 (2)","","NMA-Nor N65","4230","4231","2","","8538","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_141[] = {"8139","AGD84 to WGS 84 (2)","","Auslig-Aus old","4203","4326","2","","8539","1996-12-12 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_142[] = {"8140","WGS 72 to WGS 84 (1)","","DMA","4322","4326","1","","8540","1996-12-12 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_143[] = {"8141","WGS 72 to WGS 84 (2)","","","4322","4326","2","","8541","1996-12-12 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_144[] = {"8142","WGS 72BE to WGS 72 (1)","","","4324","4322","1","","8542","1996-12-12 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_145[] = {"8143","WGS 72BE to WGS 84 (1)","","","4324","4326","1","","8543","1996-12-12 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_146[] = {"8144","NAD27 to NAD83 (1)","","NGS-Conus","4267","4269","1","","8544","1996-12-12 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_147[] = {"8146","NAD27 to NAD83 (2)","","NGS-Usa AK","4267","4269","2","","8546","1996-12-12 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_148[] = {"8148","ED50 to WGS 84 (16)","","DMA-Tun","4230","4326","16","","8548","1997-06-12 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_149[] = {"8149","Herat North to WGS 84 (1)","","DMA-Afg","4255","4326","1","","8549","1997-06-12 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_150[] = {"8150","Kalianpur 1962 to WGS 84 (1)","","DMA-Pak","4145","4326","1","","8550","1999-10-20 00:00:00","","EPSG","","97.235",NULL};
-datafile_rows_t geod_trf_row_151[] = {"8151","ID74 to WGS 84 (1)","","DMA-Idn","4238","4326","1","","8551","1997-06-12 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_152[] = {"8152","NAD27 to WGS 84 (21)","","DMA-AK AluE","4267","4326","21","","8552","1997-04-11 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_153[] = {"8153","NAD27 to WGS 84 (22)","","DMA-AK AluW","4267","4326","22","","8553","1997-04-11 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_154[] = {"8154","NAD83 to WGS 84 (2)","","DMA-AK Alu","4269","4326","2","","8554","1997-04-11 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_155[] = {"8155","NAD83 to WGS 84 (3)","","DMA-USA Hi","4269","4326","3","","8555","1997-04-11 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_156[] = {"8156","Nord Sahara 1959 to WGS 84 (1)","","DMA-Alg","4307","4326","1","","8556","1997-04-11 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_157[] = {"8157","Pulkovo 1942 to WGS 84 (1)","","DMA-Rus","4284","4326","1","","8557","1997-04-11 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_158[] = {"8158","Voirol Unifie to WGS 84 (1)","","DMA-Alg N","4305","4326","1","","8558","1997-04-11 00:00:00","","EPSG","","98.15",NULL};
-datafile_rows_t geod_trf_row_159[] = {"8159","Fahud to WGS 84 (1)","","DMA-Omn","4232","4326","1","","8559","1997-04-11 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_160[] = {"8160","NTF (Paris) to NTF (1)","","IGN-Fra","4807","4275","1","","8560","1997-04-11 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_161[] = {"8161","Bern 1898 (Bern) to Bern 1898 (1)","","BfL-CH","4801","4217","1","","8561","1997-04-11 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_162[] = {"8162","Bogota (Bogota) to Bogota (1)","","IGAC-Col","4802","4218","1","","8562","1997-04-11 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_163[] = {"8163","Lisbon (Lisbon) to Lisbon (1)","","IGC-Prt","4803","4207","1","","8564","1997-04-11 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_164[] = {"8164","Makassar (Jakarta) to Makassar (1)","","EPSG-Idn Sulawesi","4804","4257","1","","8565","1997-04-11 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_165[] = {"8165","MGI (Ferro) to MGI (1)","","BEV-Aut balk","4805","4312","1","","8566","1997-04-11 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_166[] = {"8166","Monte Mario (Rome) to Monte Mario (1)","","EPSG-Ita","4806","4265","1","","8567","1997-04-11 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_167[] = {"8167","Padang (Jakarta) to Padang (1)","","EPSG-Idn Sumatra","4808","4280","1","","8569","1997-04-11 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_168[] = {"8168","Belge 1950 (Brussels) to Belge 1950 (1)","","IGN-Bel","4809","4215","1","","8570","1997-04-11 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_169[] = {"8169","Tananarive (Paris) to Tananarive (1)","","EPSG-Mdg","4810","4297","1","","8571","1997-04-11 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_170[] = {"8170","Voirol 1875 (Paris) to Voirol 1875 (1)","","IGN-Dza","4811","4304","1","","8573","1997-04-11 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_171[] = {"8171","Voirol Unifie (Paris) to Voirol Unifie(1","","IGN-Dza","4812","4305","1","","8574","1997-04-11 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_172[] = {"8172","Batavia (Jakarta) to Batavia (1)","","EPSG-Idn Java","4813","4211","1","","8576","1997-04-11 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_173[] = {"8173","RT38 (Stockholm) to RT38 (1)","","NLS-Swe","4814","4308","1","","8578","1997-04-11 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_174[] = {"8174","Bogota (Bogota) to WGS 84 (1)","","EPSG-Col","4802","4326","1","Colombia.","8563","1997-04-11 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_175[] = {"8175","Monte Mario (Rome) to WGS 84 (1)","","EPSG-Ita","4806","4326","1","Italy (Sardinia).","8568","1997-04-11 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_176[] = {"8176","Tananarive (Paris) to WGS 84 (1)","","EPSG-Mdg","4810","4326","1","Madagascar.","8572","1997-04-11 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_177[] = {"8177","Voirol Unifie (Paris) to WGS 84 (1)","","EPSG-Dza N","4812","4326","1","Algeria - north of 35g (31 deg 30 min) North","8575","1997-04-11 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_178[] = {"8178","Batavia (Jakarta) to WGS 84 (1)","","EPSG-Idn Sumatra","4813","4326","1","Indonesia (Sumatra).","8577","1997-04-11 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_179[] = {"8179","Greek (Athens) to Greek (1)","","NTU-Grc","4815","4120","1","","8579","1998-12-14 00:00:00","","EPSG","","98.52",NULL};
-datafile_rows_t geod_trf_row_180[] = {"8180","Schwarzeck to WGS 84 (2)","","SLI-Nam","4293","4326","2","","8580","1998-11-19 00:00:00","","EPSG","","98.46",NULL};
-datafile_rows_t geod_trf_row_181[] = {"8181","GGRS87 to WGS 84 (1)","","Hel-Grc","4121","4326","1","","8581","1997-06-16 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_182[] = {"8182","HD72 to ETRF89 (1)","","ELTE-Hun","4237","4258","1","","8582","1997-11-13 00:00:00","","EPSG","","97.47",NULL};
-datafile_rows_t geod_trf_row_183[] = {"8183","HD72 to WGS 84 (1)","","EPSG-Hun","4237","4326","1","Hungary.","8583","1997-07-22 00:00:00","","EPSG","For many purposes ETRF89 can be assumed to be coincident with WGS 84.","",NULL};
-datafile_rows_t geod_trf_row_184[] = {"8184","ED50 to WGS 84 (17)","","IGN-Fra","4230","4326","17","","8584","1997-11-13 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_185[] = {"8185","NTF to ED50 (1)","","IGN-Fra","4275","4230","1","","8585","1997-11-13 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_186[] = {"8186","NTF (Paris) to ED50 (1)","","EPSG-Fra","4807","4230","1","France","8586","1997-11-13 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_187[] = {"8187","NTF to WGS 72 (1)","","IGN-Fra","4275","4322","1","","8587","1997-11-13 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_188[] = {"8188","NTF (Paris) to WGS 72 (1)","","EPSG-Fra","4807","4322","1","France.","8588","1997-11-13 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_189[] = {"8189","AGD66 to GDA94 (1)","","Auslig-Aus 5m","4202","4283","1","","8589","1997-11-13 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_190[] = {"8190","AGD66 to WGS 84 (2)","","EPSG-Aus 5m","4202","4326","2","Australia..","8590","1998-12-16 00:00:00","","EPSG","For many purposes GDA94 can be assumed to be coincident with WGS 84.","98.50",NULL};
-datafile_rows_t geod_trf_row_191[] = {"8191","AGD84 to GDA94 (1)","","Auslig-Aus 5m","4203","4283","1","","8591","1997-11-13 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_192[] = {"8192","AGD84 to WGS 84 (3)","","EPSG-Aus 5m","4203","4326","3","Australia","8592","1998-12-16 00:00:00","","EPSG","For many purposes GDA94 can be assumed to be coincident with WGS 84.","98.50",NULL};
-datafile_rows_t geod_trf_row_193[] = {"8193","AGD84 to GDA94 (2)","","Auslig-Aus 1m","4203","4283","2","","8593","1997-11-13 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_194[] = {"8194","AGD84 to WGS 84 (4)","","EPSG-Aus 1m","4203","4326","4","Australia.","8594","1998-12-16 00:00:00","","EPSG","For many purposes GDA94 can be assumed to be coincident with WGS 84.","98.50",NULL};
-datafile_rows_t geod_trf_row_195[] = {"8195","RT90 to WGS 84 (1)","","EPSG-Swe","4124","4326","1","Sweden.","8595","1999-04-22 00:00:00","","EPSG","For many purposes ETRF89 can be assumed to be coincident with WGS 84.","99.11",NULL};
-datafile_rows_t geod_trf_row_196[] = {"8196","Samboja to WGS 84 (1)","","TOT-Idn Mah","4125","4326","1","","8596","1997-11-13 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_197[] = {"8197","Pulkovo 1942 to LKS94 (1)","","HNIT-Ltu","4284","4126","1","","8597","1998-03-12 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_198[] = {"8198","LKS94 to WGS 84 (1)","","HNIT-Ltu","4126","4326","1","","8598","1998-04-16 00:00:00","","EPSG","For many purposes LKS94 can be assumed to be coincident with WGS 84.","98.13",NULL};
-datafile_rows_t geod_trf_row_199[] = {"8199","Pulkovo 1942 to WGS 84 (2)","","EPSG-Ltu","4284","4326","2","Lithuania.","8609","1998-03-12 00:00:00","","EPSG","For many purposes LKS94 can be assumed to be coincident with WGS 84.","",NULL};
-datafile_rows_t geod_trf_row_200[] = {"8200","Pulkovo 1942 to WGS 84 (3)","","NIMA-Hun","4284","4326","3","","8602","1998-03-12 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_201[] = {"8201","Pulkovo 1942 to WGS 84 (4)","","NIMA-Pol","4284","4326","4","","8603","1998-03-12 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_202[] = {"8202","Pulkovo 1942 to WGS 84 (5)","","NIMA-Cze","4284","4326","5","","8604","1998-03-12 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_203[] = {"8203","Pulkovo 1942 to WGS 84 (6)","","NIMA-Lva","4284","4326","6","","8605","1998-03-12 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_204[] = {"8204","Pulkovo 1942 to WGS 84 (7)","","NIMA-Kaz","4284","4326","7","","8606","1998-03-12 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_205[] = {"8205","Pulkovo 1942 to WGS 84 (8)","","NIMA-Alb","4284","4326","8","","8607","1998-03-12 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_206[] = {"8206","Pulkovo 1942 to WGS 84 (9)","","NIMA-Rom","4284","4326","9","","8608","1998-03-12 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_207[] = {"8207","Arc 1960 to WGS 84 (2)","","NIMA-Ken","4210","4326","2","","8599","1998-03-12 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_208[] = {"8208","Arc 1960 to WGS 84 (3)","","NIMA-Tza","4210","4326","3","","8600","1998-03-12 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_209[] = {"8209","Segora to WGS 84 (1)","","NIMA-Idn Kal","4294","4326","1","","8601","1998-03-12 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_210[] = {"8210","Voirol 1875 to WGS 84 (1)","","NIMA-Dza N","4304","4326","1","","8610","1998-03-12 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_211[] = {"8211","Voirol 1875 (Paris) to WGS 84 (1)","","EPSG-Dza N","4811","4326","1","Algeria - north of 35g (31 deg 30 min) North.","8611","1998-03-12 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_212[] = {"8212","Naparima 1972 to WGS 84 (2)","","MEEI-Tto","4271","4326","2","","8612","1998-04-16 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_213[] = {"8213","Trinidad 1903 to WGS 84 (1)","","MEEI-Trin","4302","4326","1","","8613","1998-04-16 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_214[] = {"8214","Tete to Moznet (1)","","DNGC-Moz","4127","4130","1","","8614","1998-04-16 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_215[] = {"8215","Tete to WGS 84 (1)","","EPSG-Moz","4127","4326","1","Mozambique - average for whole country.","8615","1998-04-16 00:00:00","","EPSG","For many purposes Moznet can be assumed to be coincident with WGS 84.","",NULL};
-datafile_rows_t geod_trf_row_216[] = {"8216","Tete to Moznet (2)","","DNGC-Moz A","4127","4130","2","","8616","1998-04-16 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_217[] = {"8217","Tete to WGS 84 (2)","","EPSG-Moz A","4127","4326","2","Mozambique - Maputo province and southern part of Gaza province; i.e. south of approximately 24 deg S.","8617","1998-04-16 00:00:00","","EPSG","For many purposes Moznet can be assumed to be coincident with WGS 84.","",NULL};
-datafile_rows_t geod_trf_row_218[] = {"8218","Tete to Moznet (3)","","DNGC-Moz B","4127","4130","3","","8618","1998-04-16 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_219[] = {"8219","Tete to WGS 84 (3)","","EPSG-Moz B","4127","4326","3","Mozambique - provinces of Gaza; Inhambane and southern parts of Sofala and Manhica; i.e. between approximately 24 and 20 deg South.","8619","1998-04-16 00:00:00","","EPSG","For many purposes Moznet can be assumed to be coincident with WGS 84.","",NULL};
-datafile_rows_t geod_trf_row_220[] = {"8220","Tete to Moznet (4)","","DNGC-Moz C","4127","4130","4","","8620","1998-04-16 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_221[] = {"8221","Tete to WGS 84 (4)","","EPSG-Moz C","4127","4326","4","Mozambique - provinces of Sofala north of Beira corridor; Manhica; Tete and Zambezia; i.e. between approximately 20 and 16 deg South.","8621","1998-04-16 00:00:00","","EPSG","For many purposes Moznet can be assumed to be coincident with WGS 84.","",NULL};
-datafile_rows_t geod_trf_row_222[] = {"8222","Tete to Moznet (5)","","DNGC-Moz D","4127","4130","5","","8622","1998-04-16 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_223[] = {"8223","Tete to WGS 84 (5)","","EPSG-Moz D","4127","4326","5","Mozambique - provinces of Nampula; Niassa; Cabo Delgado; i.e. north of approximately 16 deg S.","8623","1998-04-16 00:00:00","","EPSG","For many purposes Moznet can be assumed to be coincident with WGS 84.","",NULL};
-datafile_rows_t geod_trf_row_224[] = {"8224","Moznet to WGS 84 (1)","","EPSG-Moz","4130","4326","1","","8624","1998-04-16 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_225[] = {"8225","Pulkovo 1942 to WGS 84 (10)","","KCS-Kaz Cas","4284","4326","10","","8625","1998-04-16 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_226[] = {"8226","Indian 1975 to WGS 84 (2)","","NIMA-Tha","4240","4326","2","","8626","1998-04-16 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_227[] = {"8227","Tokyo to WGS 84 (5)","","NIMA-Kor","4301","4326","5","","8627","1998-11-19 00:00:00","","EPSG","","98.46",NULL};
-datafile_rows_t geod_trf_row_228[] = {"8228","MGI to WGS 84 (1)","","NIMA-balk","4312","4326","1","","8628","1998-04-16 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_229[] = {"8229","Naparima 1972 to WGS 84 (3)","","NIMA-Tto","4271","4326","3","","8629","1998-04-16 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_230[] = {"8233","DHDN to ETRF89 (1)","","IfAG-Deu W","4314","4258","1","","8633","1998-06-30 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_231[] = {"8234","DHDN to WGS 84 (1)","","EPSG-Deu W","4314","4326","1","Germany - former west Germany.","8634","1998-06-30 00:00:00","EPSG","EPSG","For many purposes ETRF89 can be assumed to be coincident with WGS 84.","",NULL};
-datafile_rows_t geod_trf_row_232[] = {"8235","Pulkovo 1942 to ETRF89 (1)","","IfAG-Deu E","4284","4258","1","","8635","1998-06-30 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_233[] = {"8236","Pulkovo 1942 to WGS 84 (11)","","EPSG-Deu E","4284","4326","11","Germany - former east Germany - Brandenburg; Mecklenburg-Vorpommern; Sachsen-Anhalt.","8636","1998-06-30 00:00:00","","EPSG","For many purposes ETRF89 can be assumed to be coincident with WGS 84.","",NULL};
-datafile_rows_t geod_trf_row_234[] = {"8237","ED50 to WGS 84 (Common Offshore)","","UKOOA-CO","4230","4326","18","","8637","1998-06-30 00:00:00","","EPSG","","98.27",NULL};
-datafile_rows_t geod_trf_row_235[] = {"8238","Madrid 1870 (Madrid) to ED50 (1)","","IGB-Esp","4903","4230","1","","8638","1998-11-11 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_236[] = {"8239","Madrid 1870 (Madrid) to ED50 (2)","","IGB-Esp N","4903","4230","2","","8639","1998-11-11 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_237[] = {"8240","Madrid 1870 (Madrid) to ED50 (3)","","IGB-Esp S","4903","4230","3","","8640","1998-11-11 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_238[] = {"8241","Madrid 1870 (Madrid) to WGS 84 (1)","","EPSG-Esp","4903","4326","1","Spain.","8641","1998-11-11 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_239[] = {"8242","NAD27 to NAD83 (3)","","GC-Can NT1","4267","4269","3","","8642","1998-11-11 00:00:00","","EPSG","","98.57",NULL};
-datafile_rows_t geod_trf_row_240[] = {"8243","NAD27 to WGS 84 (25)","","EPSG-Can old","4267","4326","25","Canada","8643","1998-11-11 00:00:00","","EPSG","For many purposes NAD83 can be assumed to be coincident with WGS 84.","",NULL};
-datafile_rows_t geod_trf_row_241[] = {"8244","NAD27 to NAD83 (4)","","GC-Can","4267","4269","4","","8644","1998-11-11 00:00:00","","EPSG","","98.57",NULL};
-datafile_rows_t geod_trf_row_242[] = {"8245","NAD27 to WGS 84 (26)","","EPSG-Can","4267","4326","26","Canada.","8645","1998-11-11 00:00:00","","EPSG","For many purposes NAD83 can be assumed to be coincident with WGS 84.","",NULL};
-datafile_rows_t geod_trf_row_243[] = {"8246","OSGB 1936 to WGS 84 (Petroleum)","","UKOOA-Pet","4277","4326","6","","8646","1998-11-11 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_244[] = {"8247","OSGB 1936 to ED50 (UKOOA)","","UKOOA-UKCS","4277","4230","1","","8647","1998-11-11 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_245[] = {"8248","Manoca to WGS 84 (1)","","SCS-Cmr","4260","4326","1","","8648","1998-11-11 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_246[] = {"8249","Camacupa to WGS 72BE (1)","","GSI-Ago","4220","4324","1","","8649","1998-11-11 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_247[] = {"8250","Camacupa to WGS 84 (1)","","CON-Ago B5","4220","4326","1","","8650","1998-11-11 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_248[] = {"8251","Camacupa to WGS 84 (2)","","TEX-Ago B2","4220","4326","2","","8651","1998-11-11 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_249[] = {"8252","Camacupa to WGS 84 (3)","","SHL-Ago old","4220","4326","3","","8652","1998-11-11 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_250[] = {"8253","Camacupa to WGS 84 (4)","","GSI-Ago","4220","4326","4","","8653","1998-11-11 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_251[] = {"8254","Camacupa to WGS 84 (5)","","ELF-Ago B3 old","4220","4326","5","","8654","1998-11-11 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_252[] = {"8255","Camacupa to WGS 84 (6)","","ELF-Ago B7 old","4220","4326","6","","8655","1998-11-11 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_253[] = {"8256","Camacupa to WGS 84 (7)","","ELF-Ago B15","4220","4326","7","","8656","1998-11-11 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_254[] = {"8257","Camacupa to WGS 84 (8)","","ELF-Ago B2 old","4220","4326","8","","8657","1998-11-11 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_255[] = {"8258","Camacupa to WGS 84 (9)","","SHL-Ago B16","4220","4326","9","","8658","1998-11-11 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_256[] = {"8259","Camacupa to WGS 84 (10)","","ELF-Ago N","4220","4326","10","","8659","1998-11-11 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_257[] = {"8260","Malongo 1987 to Mhast (1)","","CHV-Ago Cab","4259","4264","1","","8660","1998-11-11 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_258[] = {"8261","Mhast to WGS 84 (1)","","CHV-Ago Cab","4264","4326","1","","8661","1998-11-11 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_259[] = {"8262","Malongo 1987 to WGS 84 (1)","","CHV-Ago Cab","4259","4326","1","","8662","1998-11-11 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_260[] = {"8263","MGI (Ferro) to WGS 84 (1)","","DMA-balk","4805","4326","1","MEAN FOR Boznia and Herzegovina; Croatia; Serbia; Slovenia.","8663","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_261[] = {"8264","EST92 to ETRF89 (1)","","UT-Est","4133","4258","1","","8664","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_262[] = {"8265","Pulkovo 1942 to EST92 (1)","","UT-Est","4284","4133","1","","8665","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_263[] = {"8266","EST92 to WGS 84 (1)","","UT-Est","4133","4326","1","","8666","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_264[] = {"8267","Pulkovo 1942 to WGS 84 (12)","","UT-Est","4284","4326","12","","8667","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_265[] = {"8268","Tokyo to WGS 84 (6)","","GSI-Jpn 452141","4301","4326","6","","8668","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_266[] = {"8269","Tokyo to WGS 84 (7)","","GSI-Jpn 452142","4301","4326","7","","8669","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_267[] = {"8270","Tokyo to WGS 84 (8)","","GSI-Jpn 444141","4301","4326","8","","8670","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_268[] = {"8271","Tokyo to WGS 84 (9)","","GSI-Jpn 444142","4301","4326","9","","8671","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_269[] = {"8272","Tokyo to WGS 84 (10)","","GSI-Jpn 440141","4301","4326","10","","8672","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_270[] = {"8273","Tokyo to WGS 84 (11)","","GSI-Jpn 440142","4301","4326","11","","8673","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_271[] = {"8274","Tokyo to WGS 84 (12)","","GSI-Jpn 440143","4301","4326","12","","8674","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_272[] = {"8275","Tokyo to WGS 84 (13)","","GSI-Jpn 440144","4301","4326","13","","8675","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_273[] = {"8276","Tokyo to WGS 84 (14)","","GSI-Jpn 432141","4301","4326","14","","8676","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_274[] = {"8277","Tokyo to WGS 84 (15)","","GSI-Jpn 432142","4301","4326","15","","8677","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_275[] = {"8278","Tokyo to WGS 84 (16)","","GSI-Jpn 432143","4301","4326","16","","8678","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_276[] = {"8279","Tokyo to WGS 84 (17)","","GSI-Jpn 432144","4301","4326","17","","8679","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_277[] = {"8280","Tokyo to WGS 84 (18)","","GSI-Jpn 432145","4301","4326","18","","8680","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_278[] = {"8281","Tokyo to WGS 84 (19)","","GSI-Jpn 424140","4301","4326","19","","8681","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_279[] = {"8282","Tokyo to WGS 84 (20)","","GSI-Jpn 424141","4301","4326","20","","8682","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_280[] = {"8283","Tokyo to WGS 84 (21)","","GSI-Jpn 424142","4301","4326","21","","8683","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_281[] = {"8284","Tokyo to WGS 84 (22)","","GSI-Jpn 424143","4301","4326","22","","8684","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_282[] = {"8285","Tokyo to WGS 84 (23)","","GSI-Jpn 424144","4301","4326","23","","8685","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_283[] = {"8286","Tokyo to WGS 84 (24)","","GSI-Jpn 424145","4301","4326","24","","8686","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_284[] = {"8287","Tokyo to WGS 84 (25)","","GSI-Jpn 420139","4301","4326","25","","8687","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_285[] = {"8288","Tokyo to WGS 84 (26)","","GSI-Jpn 420140","4301","4326","26","","8688","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_286[] = {"8289","Tokyo to WGS 84 (27)","","GSI-Jpn","4301","4326","27","","8689","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_287[] = {"8290","Tokyo to WGS 84 (28)","","GSI-Jpn","4301","4326","28","","8690","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_288[] = {"8291","Tokyo to WGS 84 (29)","","GSI-Jpn","4301","4326","29","","8691","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_289[] = {"8292","Tokyo to WGS 84 (30)","","GSI-Jpn","4301","4326","30","","8692","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_290[] = {"8293","Tokyo to WGS 84 (31)","","GSI-Jpn","4301","4326","31","","8693","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_291[] = {"8294","Tokyo to WGS 84 (32)","","GSI-Jpn","4301","4326","32","","8694","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_292[] = {"8295","Tokyo to WGS 84 (33)","","GSI-Jpn","4301","4326","33","","8695","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_293[] = {"8296","Tokyo to WGS 84 (34)","","GSI-Jpn","4301","4326","34","","8696","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_294[] = {"8297","Tokyo to WGS 84 (35)","","GSI-Jpn","4301","4326","35","","8697","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_295[] = {"8298","Tokyo to WGS 84 (36)","","GSI-Jpn","4301","4326","36","","8698","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_296[] = {"8299","Tokyo to WGS 84 (37)","","GSI-Jpn","4301","4326","37","","8699","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_297[] = {"8300","Tokyo to WGS 84 (38)","","GSI-Jpn","4301","4326","38","","8700","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_298[] = {"8301","Tokyo to WGS 84 (39)","","GSI-Jpn","4301","4326","39","","8701","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_299[] = {"8302","Tokyo to WGS 84 (40)","","GSI-Jpn","4301","4326","40","","8702","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_300[] = {"8303","Tokyo to WGS 84 (41)","","GSI-Jpn","4301","4326","41","","8703","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_301[] = {"8304","Tokyo to WGS 84 (42)","","GSI-Jpn","4301","4326","42","","8704","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_302[] = {"8305","Tokyo to WGS 84 (43)","","GSI-Jpn","4301","4326","43","","8705","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_303[] = {"8306","Tokyo to WGS 84 (44)","","GSI-Jpn","4301","4326","44","","8706","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_304[] = {"8307","Tokyo to WGS 84 (45)","","GSI-Jpn","4301","4326","45","","8707","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_305[] = {"8308","Tokyo to WGS 84 (46)","","GSI-Jpn","4301","4326","46","","8708","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_306[] = {"8309","Tokyo to WGS 84 (47)","","GSI-Jpn","4301","4326","47","","8709","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_307[] = {"8310","Tokyo to WGS 84 (48)","","GSI-Jpn","4301","4326","48","","8710","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_308[] = {"8311","Tokyo to WGS 84 (49)","","GSI-Jpn","4301","4326","49","","8711","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_309[] = {"8312","Tokyo to WGS 84 (50)","","GSI-Jpn","4301","4326","50","","8712","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_310[] = {"8313","Tokyo to WGS 84 (51)","","GSI-Jpn","4301","4326","51","","8713","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_311[] = {"8314","Tokyo to WGS 84 (52)","","GSI-Jpn","4301","4326","52","","8714","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_312[] = {"8315","Tokyo to WGS 84 (53)","","GSI-Jpn","4301","4326","53","","8715","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_313[] = {"8316","Tokyo to WGS 84 (54)","","GSI-Jpn","4301","4326","54","","8716","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_314[] = {"8317","Tokyo to WGS 84 (55)","","GSI-Jpn","4301","4326","55","","8717","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_315[] = {"8318","Tokyo to WGS 84 (56)","","GSI-Jpn","4301","4326","56","","8718","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_316[] = {"8319","Tokyo to WGS 84 (57)","","GSI-Jpn","4301","4326","57","","8719","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_317[] = {"8320","Tokyo to WGS 84 (58)","","GSI-Jpn","4301","4326","58","","8720","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_318[] = {"8321","Tokyo to WGS 84 (59)","","GSI-Jpn","4301","4326","59","","8721","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_319[] = {"8322","Tokyo to WGS 84 (60)","","GSI-Jpn","4301","4326","60","","8722","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_320[] = {"8323","Tokyo to WGS 84 (61)","","GSI-Jpn","4301","4326","61","","8723","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_321[] = {"8324","Tokyo to WGS 84 (62)","","GSI-Jpn","4301","4326","62","","8724","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_322[] = {"8325","Tokyo to WGS 84 (63)","","GSI-Jpn","4301","4326","63","","8725","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_323[] = {"8326","Tokyo to WGS 84 (64)","","GSI-Jpn","4301","4326","64","","8726","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_324[] = {"8327","Tokyo to WGS 84 (65)","","GSI-Jpn","4301","4326","65","","8727","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_325[] = {"8328","Tokyo to WGS 84 (66)","","GSI-Jpn","4301","4326","66","","8728","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_326[] = {"8329","Tokyo to WGS 84 (67)","","GSI-Jpn","4301","4326","67","","8729","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_327[] = {"8330","Tokyo to WGS 84 (68)","","GSI-Jpn","4301","4326","68","","8730","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_328[] = {"8331","Tokyo to WGS 84 (69)","","GSI-Jpn","4301","4326","69","","8731","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_329[] = {"8332","Tokyo to WGS 84 (70)","","GSI-Jpn","4301","4326","70","","8732","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_330[] = {"8333","Tokyo to WGS 84 (71)","","GSI-Jpn","4301","4326","71","","8733","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_331[] = {"8334","Tokyo to WGS 84 (72)","","GSI-Jpn","4301","4326","72","","8734","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_332[] = {"8335","Tokyo to WGS 84 (73)","","GSI-Jpn","4301","4326","73","","8735","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_333[] = {"8336","Tokyo to WGS 84 (74)","","GSI-Jpn","4301","4326","74","","8736","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_334[] = {"8337","Tokyo to WGS 84 (75)","","GSI-Jpn","4301","4326","75","","8737","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_335[] = {"8338","Tokyo to WGS 84 (76)","","GSI-Jpn","4301","4326","76","","8738","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_336[] = {"8339","Tokyo to WGS 84 (77)","","GSI-Jpn","4301","4326","77","","8739","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_337[] = {"8340","Tokyo to WGS 84 (78)","","GSI-Jpn","4301","4326","78","","8740","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_338[] = {"8341","Tokyo to WGS 84 (79)","","GSI-Jpn","4301","4326","79","","8741","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_339[] = {"8342","Tokyo to WGS 84 (80)","","GSI-Jpn","4301","4326","80","","8742","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_340[] = {"8343","Tokyo to WGS 84 (81)","","GSI-Jpn","4301","4326","81","","8743","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_341[] = {"8344","Tokyo to WGS 84 (82)","","GSI-Jpn","4301","4326","82","","8744","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_342[] = {"8345","Tokyo to WGS 84 (83)","","GSI-Jpn","4301","4326","83","","8745","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_343[] = {"8346","Tokyo to WGS 84 (84)","","GSI-Jpn","4301","4326","84","","8746","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_344[] = {"8347","Tokyo to WGS 84 (85)","","GSI-Jpn","4301","4326","85","","8747","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_345[] = {"8348","Tokyo to WGS 84 (86)","","GSI-Jpn","4301","4326","86","","8748","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_346[] = {"8349","Tokyo to WGS 84 (87)","","GSI-Jpn","4301","4326","87","","8749","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_347[] = {"8350","Tokyo to WGS 84 (88)","","GSI-Jpn","4301","4326","88","","8750","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_348[] = {"8351","Tokyo to WGS 84 (89)","","GSI-Jpn","4301","4326","89","","8751","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_349[] = {"8352","Tokyo to WGS 84 (90)","","GSI-Jpn","4301","4326","90","","8752","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_350[] = {"8353","Tokyo to WGS 84 (91)","","GSI-Jpn","4301","4326","91","","8753","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_351[] = {"8354","Tokyo to WGS 84 (92)","","GSI-Jpn","4301","4326","92","","8754","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_352[] = {"8355","Tokyo to WGS 84 (93)","","GSI-Jpn","4301","4326","93","","8755","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_353[] = {"8356","Tokyo to WGS 84 (94)","","GSI-Jpn","4301","4326","94","","8756","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_354[] = {"8357","Tokyo to WGS 84 (95)","","GSI-Jpn","4301","4326","95","","8757","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_355[] = {"8358","Tokyo to WGS 84 (96)","","GSI-Jpn","4301","4326","96","","8758","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_356[] = {"8359","Tokyo to WGS 84 (97)","","GSI-Jpn","4301","4326","97","","8759","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_357[] = {"8360","Tokyo to WGS 84 (98)","","GSI-Jpn","4301","4326","98","","8760","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_358[] = {"8361","Tokyo to WGS 84 (99)","","GSI-Jpn","4301","4326","99","","8761","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_359[] = {"8362","Tokyo to WGS 84 (100)","","GSI-Jpn 324132","4301","4326","100","","8762","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_360[] = {"8363","Tokyo to WGS 84 (101)","","GSI-Jpn 324133","4301","4326","101","","8763","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_361[] = {"8364","Tokyo to WGS 84 (102)","","GSI-Jpn 324134","4301","4326","102","","8764","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_362[] = {"8365","Tokyo to WGS 84 (103)","","GSI-Jpn 320130","4301","4326","103","","8765","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_363[] = {"8366","Tokyo to WGS 84 (104)","","GSI-Jpn 320131","4301","4326","104","","8766","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_364[] = {"8367","Tokyo to WGS 84 (105)","","GSI-Jpn 320132","4301","4326","105","","8767","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_365[] = {"8368","Tokyo to WGS 84 (106)","","GSI-Jpn 312130","4301","4326","106","","8768","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_366[] = {"8369","Tokyo to WGS 84 (107)","","GSI-Jpn 312131","4301","4326","107","","8769","1998-12-14 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_367[] = {"8370","Fahud to WGS 84 (2)","","PDO-Omn","4232","4326","2","","8770","1999-04-22 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_368[] = {"8371","PSD93 to WGS 84 (1)","","PDO-Omn","4134","4326","1","","8771","1999-04-22 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_369[] = {"8372","ED50 to WGS 84 (19)","","HEL-Grc","4230","4326","19","","8772","1999-04-22 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_370[] = {"8373","Antigua 1943 to WGS 84 (1)","","DOS-Atg Ant","4601","4326","1","","8773","1999-04-22 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_371[] = {"8374","Dominica 1945 to WGS 84 (1)","","DOS-Dma","4602","4326","1","","8774","1999-04-22 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_372[] = {"8375","Grenada 1953 to WGS 84 (1)","","DOS-Grd","4603","4326","1","","8775","1999-04-22 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_373[] = {"8376","Montserrat 1958 to WGS 84 (1)","","DOS-Msr","4604","4326","1","","8776","1999-04-22 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_374[] = {"8377","St. Kitts 1955 to WGS 84 (1)","","DOS-Kna","4605","4326","1","","8777","1999-04-22 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_375[] = {"8378","St. Lucia 1955 to WGS 84 (1)","","DOS-Lca","4606","4326","1","","8778","1999-04-22 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_376[] = {"8379","Anguilla 1957 to WGS 84 (1)","","DOS-Aia","4600","4326","1","","8779","1999-04-22 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_377[] = {"8380","RT90 to ETRF89 (1)","","NLS-Swe","4124","4258","1","","8780","1999-04-22 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_378[] = {"8384","ED50 to WGS 84 (20)","","NMA-Nor 6265W","4230","4326","20","","8784","1999-04-22 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_379[] = {"8385","Old Hawaiian to NAD83 (1)","","NGS-Usa Hi","4135","4269","1","","8785","1999-05-24 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_380[] = {"8386","Old Hawaiian to WGS 84 (1)","","EPSG-US Hi","4135","4326","1","United States - Hawaii","8786","1999-05-24 00:00:00","","EPSG","For many purposes NAD83 can be assumed to be coincident with WGS 84.","",NULL};
-datafile_rows_t geod_trf_row_381[] = {"8387","St. Lawrence Island to NAD83 (1)","","NGS-Usa AK StL","4136","4269","1","","8787","1999-05-24 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_382[] = {"8388","St. Lawrence Island to WGS 84 (1)","","EPSG-US StL","4136","4326","1","United States - Alaska - St. Lawrence Island.","8788","1999-05-24 00:00:00","","EPSG","For many purposes NAD83 can be assumed to be coincident with WGS 84.","",NULL};
-datafile_rows_t geod_trf_row_383[] = {"8389","St. Paul Island to NAD83 (1)","","NGS-Usa AK StP","4137","4269","1","","8789","1999-05-24 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_384[] = {"8390","St. Paul Island to WGS 84 (1)","","EPSG-US StP","4137","4326","1","United States - Alaska - St. Paul Island.","8790","1999-05-24 00:00:00","","EPSG","For many purposes NAD83 can be assumed to be coincident with WGS 84.","",NULL};
-datafile_rows_t geod_trf_row_385[] = {"8391","St. George Island to NAD83 (1)","","NGS-Usa AK StG","4138","4269","1","","8791","1999-05-24 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_386[] = {"8392","St. George Island to WGS 84 (1)","","EPSG-USA StG","4138","4326","1","United States - Alaska - St. George Island.","8792","1999-05-24 00:00:00","","EPSG","For many purposes NAD83 can be assumed to be coincident with WGS 84.","",NULL};
-datafile_rows_t geod_trf_row_387[] = {"8393","NAD27(CGQ77)  to NAD83 (1)","","SGQ-Can QC","4609","4269","1","","8793","1999-05-24 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_388[] = {"8394","NAD27(CGQ77) to WGS 84 (1)","","EPSG-Can Qc","4609","4326","1","Canada - Quebec","8794","1999-05-24 00:00:00","","EPSG","For many purposes NAD83 can be assumed to be coincident with WGS 84.","",NULL};
-datafile_rows_t geod_trf_row_389[] = {"8395","AGD66 to GDA94 (2)","","Auslig-ACT 1m","4202","4283","2","","8795","1999-05-24 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_390[] = {"8396","AGD66 to WGS 84 (3)","","EPSG-Aus ACT 1m","4202","4326","3","Australia - ACT.","8796","1999-05-24 00:00:00","","EPSG","For many purposes GDA94 can be assumed to be coincident with WGS 84.","",NULL};
-datafile_rows_t geod_trf_row_391[] = {"8397","AGD66 to GDA94 (3)","","Auslig-Tas 1m","4202","4283","3","","8797","1999-05-24 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_392[] = {"8398","AGD66 to WGS 84 (4)","","EPSG-Aus Tas 1m","4202","4326","4","Australia - Tasmania.","8798","1999-05-24 00:00:00","","EPSG","For many purposes GDA94 can be assumed to be coincident with WGS 84.","",NULL};
-datafile_rows_t geod_trf_row_393[] = {"8399","AGD66 to GDA94 (4)","","Auslig-NSW Vic","4202","4283","4","","8799","1999-05-24 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_394[] = {"8400","AGD66 to WGS 84 (5)","","EPSG-Aus NSW Vic 1m","4202","4326","5","Australia - New South Wales (NSW) and Victoria.","8800","1999-05-24 00:00:00","","EPSG","For many purposes GDA94 can be assumed to be coincident with WGS 84.","",NULL};
-datafile_rows_t geod_trf_row_395[] = {"8401","Puerto Rico to NAD83 (1)","","NGS-PRVI","4139","4269","1","","8801","1999-05-24 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_396[] = {"8402","Puerto Rico to WGS 84 (1)","","EPSG-PRVI","4139","4326","1","Puerto Rico; Virgin Islands (U.S.); Virgin Islands (British).","8802","1999-05-24 00:00:00","","EPSG","For many purposes NAD83 can be assumed to be coincident with WGS 84.","",NULL};
-datafile_rows_t geod_trf_row_397[] = {"8403","NAD27 to NAD83 (5)","","SGQ-Can QC","4267","4269","5","","8803","1999-05-24 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_398[] = {"8404","NAD27 to WGS 84 (27)","","EPSG-Can QC","4267","4326","27","Canada - Quebec","8804","1999-05-24 00:00:00","","EPSG","For many purposes NAD83 can be assumed to be coincident with WGS 84.","",NULL};
-datafile_rows_t geod_trf_row_399[] = {"8405","NAD27(76) to NAD83 (1)","","SGQ-Can Ont","4608","4269","1","","8805","1999-05-24 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_400[] = {"8406","NAD27(76) to WGS 84 (1)","","EPSG-Can On","4608","4326","1","Canada - Ontario","8806","1999-05-24 00:00:00","","EPSG","For many purposes NAD83 can be assumed to be coincident with WGS 84.","",NULL};
-datafile_rows_t geod_trf_row_401[] = {"8407","AGD66 to GDA94 (5)","","OSG-Aus Vic","4202","4283","5","","8807","1999-05-24 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_402[] = {"8408","AGD66 to WGS 84 (6)","","EPSG-Aus Vic 0.1m","4202","4326","6","Australia - Victoria","8808","1999-05-24 00:00:00","","EPSG","For many purposes GDA94 can be assumed to be coincident with WGS 84.","",NULL};
-datafile_rows_t geod_trf_row_403[] = {"8411","NGO 1948 (Oslo) to NGO 1948 (1)","","NGO-Nor","4817","4273","1","","8811","1999-10-20 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_404[] = {"8412","NTF (Paris) to NTF (2)","","RGS","4807","4275","2","","8812","1999-10-20 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_405[] = {"8413","Locodjo 1965 to WGS 84 (1)","","IGN-Civ","4142","4326","1","","8813","1999-10-20 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_406[] = {"8414","Abidjan 1987 to WGS 84 (1)","","IGN-Civ","4143","4326","1","","8814","1999-10-20 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_407[] = {"8415","MGI to WGS 84 (2)","","BEV-Aut","4312","4326","1","","8815","1999-10-20 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_408[] = {"8416","ATS 77 to NAD83(CSRS98) (1)","","GIC-Can NB","4122","4140","1","","8816","1999-10-20 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_409[] = {"8417","NAD83(CSRS98) to WGS 84 (1)","","EPSG-Can","4140","4326","1","","8817","1999-10-20 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_410[] = {"8418","ATS 77 to WGS 84 (1)","","EPSG-Can NB","4122","4326","1","Canada - New Brunswick","8818","1999-10-20 00:00:00","EPSG","EPSG","For many purposes NAD83(CSRS) can be assumed to be coincident with WGS 84.","",NULL};
-datafile_rows_t geod_trf_row_411[] = {"8419","NAD83 to NAD83(HARN) (1)","","NGS-Usa AL","4269","4152","1","","8819","1999-10-20 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_412[] = {"8420","NAD83 to NAD83(HARN) (2)","","NGS-Usa AZ","4269","4152","2","","8820","1999-10-20 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_413[] = {"8421","NAD83 to NAD83(HARN) (3)","","NGS-Usa CA n","4269","4152","3","","8821","1999-10-20 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_414[] = {"8422","NAD83 to NAD83(HARN) (4)","","NGS-Usa CA s","4269","4152","4","","8822","1999-10-20 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_415[] = {"8423","NAD83 to NAD83(HARN) (5)","","NGS-Usa CO","4269","4152","5","","8823","1999-10-20 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_416[] = {"8424","NAD83 to NAD83(HARN) (6)","","NGS-Usa GA","4269","4152","6","","8824","1999-10-20 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_417[] = {"8425","NAD83 to NAD83(HARN) (7)","","NGS-Usa FL","4269","4152","7","","8825","1999-10-20 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_418[] = {"8426","NAD83 to NAD83(HARN) (8)","","NGS-Usa ID MT e","4269","4152","8","","8826","1999-10-20 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_419[] = {"8427","NAD83 to NAD83(HARN) (9)","","NGS-Usa ID MT w","4269","4152","9","","8827","1999-10-20 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_420[] = {"8428","NAD83 to NAD83(HARN) (10)","","NGS-Usa KY","4269","4152","10","","8828","1999-10-20 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_421[] = {"8429","NAD83 to NAD83(HARN) (11)","","NGS-Usa LA","4269","4152","11","","8829","1999-10-20 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_422[] = {"8430","NAD83 to NAD83(HARN) (12)","","NGS-Usa DE MD","4269","4152","12","","8830","1999-10-20 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_423[] = {"8431","NAD83 to NAD83(HARN) (13)","","NGS-Usa ME","4269","4152","13","","8831","1999-10-20 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_424[] = {"8432","NAD83 to NAD83(HARN) (14)","","NGS-Usa MI","4269","4152","14","","8832","1999-10-20 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_425[] = {"8433","NAD83 to NAD83(HARN) (15)","","NGS-Usa MS","4269","4152","15","","8833","1999-10-20 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_426[] = {"8434","NAD83 to NAD83(HARN) (16)","","NGS-Usa NE","4269","4152","16","","8834","1999-10-20 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_427[] = {"8435","NAD83 to NAD83(HARN) (17)","","NGS-US NewEng","4269","4152","17","","8835","1999-10-20 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_428[] = {"8436","NAD83 to NAD83(HARN) (18)","","NGS-Usa NM","4269","4152","18","","8836","1999-10-20 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_429[] = {"8437","NAD83 to NAD83(HARN) (19)","","NGS-Usa NY","4269","4152","19","","8837","1999-10-20 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_430[] = {"8438","NAD83 to NAD83(HARN) (20)","","NGS-Usa ND","4269","4152","20","","8838","1999-10-20 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_431[] = {"8439","NAD83 to NAD83(HARN) (21)","","NGS-Usa OK","4269","4152","21","","8839","1999-10-20 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_432[] = {"8440","NAD83 to NAD83(HARN) (22)","","NGS-PRVI","4269","4152","22","","8840","1999-10-20 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_433[] = {"8441","NAD83 to NAD83(HARN) (23)","","NGS-Usa SD","4269","4152","23","","8841","1999-10-20 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_434[] = {"8442","NAD83 to NAD83(HARN) (24)","","NGS-Usa TN","4269","4152","24","","8842","1999-10-20 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_435[] = {"8443","NAD83 to NAD83(HARN) (25)","","NGS-Usa TX e","4269","4152","25","","8843","1999-10-20 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_436[] = {"8444","NAD83 to NAD83(HARN) (26)","","NGS-Usa TX w","4269","4152","26","","8844","1999-10-20 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_437[] = {"8445","NAD83 to NAD83(HARN) (27)","","NGS-Usa VA","4269","4152","27","","8845","1999-10-20 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_438[] = {"8446","NAD83 to NAD83(HARN) (28)","","NGS-Usa OR WA","4269","4152","28","","8846","1999-10-20 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_439[] = {"8447","NAD83 to NAD83(HARN) (29)","","NGS-Usa WI","4269","4152","29","","8847","1999-10-20 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_440[] = {"8448","NAD83 to NAD83(HARN) (30)","","NGS-Usa WY","4269","4152","30","","8848","1999-10-20 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_441[] = {"8449","Cape to Hartbeesthoek94 (1)","","DSM-Zaf","4222","4148","1","","8849","1999-10-20 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_442[] = {"8450","Hartbeesthoek94 to WGS 84 (1)","","EPSG-Zaf","4148","4326","1","","8850","1999-10-20 00:00:00","","EPSG","For many purposes Hartbeesthoek94 can be assumed to be coincident with WGS 84.","",NULL};
-datafile_rows_t geod_trf_row_443[] = {"8451","AGD66 to GDA94 (6)","","Auslig-Tas","4202","4283","6","","8851","1999-10-20 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_444[] = {"8452","AGD66 to GDA94 (7)","","Auslig-NT","4202","4283","7","","8852","1999-10-20 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_445[] = {"8453","AGD66 to WGS 84 (7)","","EPSG-Aus Tas 0.1m","4202","4326","7","Australia - Tasmania.","8853","1999-10-20 00:00:00","","EPSG","For many purposes GDA94 can be assumed to be coincident with WGS 84.","",NULL};
-datafile_rows_t geod_trf_row_446[] = {"8454","AGD66 to WGS 84 (8)","","EPSG-Aus NT 0.1m","4202","4326","8","Australia - Northern Territory.","8854","1999-10-20 00:00:00","","EPSG","For many purposes GDA94 can be assumed to be coincident with WGS 84.","",NULL};
-datafile_rows_t geod_trf_row_447[] = {"8455","CH1903 to WGS 84 (1)","","BfL-CH 1","4149","4326","1","","8855","1999-10-20 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_448[] = {"8456","CH1903+ to CHTRF95 (1)","","BfL-CH","4150","4151","1","","8856","1999-10-20 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_449[] = {"8457","CH1903+ to WGS 84 (1)","","EPSG-CH","4150","4326","1","Liechtenstein;  Switzerland.","8857","1999-10-20 00:00:00","EPSG","EPSG","For many purposes CHTRF95 can be assumed to be coincident with WGS 84.","",NULL};
-datafile_rows_t geod_trf_row_450[] = {"8458","CH1903 to WGS 84 (2)","","BfL-CH 2","4149","4326","2","","8858","1999-10-20 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_451[] = {"8459","CHTRF95 to WGS 84 (1)","","EPSG-CH","4151","4326","1","","8859","1999-10-20 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_452[] = {"8460","NAD27 to NAD83(HARN) (1)","","NGS-Usa AL","4267","4152","1","United States (USA) - Alabama.","8860","1999-10-20 00:00:00","US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_453[] = {"8461","NAD27 to NAD83(HARN) (2)","","NGS-Usa AZ","4267","4152","2","United States (USA) - Arizona.","8861","1999-10-20 00:00:00","US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_454[] = {"8462","NAD27 to NAD83(HARN) (3)","","NGS-Usa CA n","4267","4152","3","United States (USA) - California north of 38 deg N.","8862","1999-10-20 00:00:00","US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_455[] = {"8463","NAD27 to NAD83(HARN) (4)","","NGS-Usa CA s","4267","4152","4","United States (USA) - California south of 38 deg N.","8863","1999-10-20 00:00:00","US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_456[] = {"8464","NAD27 to NAD83(HARN) (5)","","NGS-Usa CO","4267","4152","5","United States (USA) - Colorado.","8864","1999-10-20 00:00:00","US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_457[] = {"8465","NAD27 to NAD83(HARN) (6)","","NGS-Usa GA","4267","4152","6","United States (USA) - Georgia.","8865","1999-10-20 00:00:00","US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_458[] = {"8466","NAD27 to NAD83(HARN) (7)","","NGS-Usa FL","4267","4152","7","United States (USA) - Florida.","8866","1999-10-20 00:00:00","US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_459[] = {"8467","NAD27 to NAD83(HARN) (8)","","NGS-Usa ID MT e","4267","4152","8","United States (USA) - Idaho and Montana - east of 113 deg W.","8867","1999-10-20 00:00:00","US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_460[] = {"8468","NAD27 to NAD83(HARN) (9)","","NGS-Usa ID MT w","4267","4152","9","United States (USA) - Idaho and Montana - west of 113 deg W.","8868","1999-10-20 00:00:00","US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_461[] = {"8469","NAD27 to NAD83(HARN) (10)","","NGS-Usa KY","4267","4152","10","United States (USA) - Kentucky.","8869","1999-10-20 00:00:00","US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_462[] = {"8470","NAD27 to NAD83(HARN) (11)","","NGS-Usa LA","4267","4152","11","United States (USA) - Louisiana.","8870","1999-10-20 00:00:00","US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_463[] = {"8471","NAD27 to NAD83(HARN) (12)","","NGS-Usa DE MD","4267","4152","12","United States (USA) - Delaware and Maryland.","8871","1999-10-20 00:00:00","US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_464[] = {"8472","NAD27 to NAD83(HARN) (13)","","NGS-Usa ME","4267","4152","13","United States (USA) - Maine.","8872","1999-10-20 00:00:00","US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_465[] = {"8473","NAD27 to NAD83(HARN) (14)","","NGS-Usa MI","4267","4152","14","United States (USA) - Michigan.","8873","1999-10-20 00:00:00","US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_466[] = {"8474","NAD27 to NAD83(HARN) (15)","","NGS-Usa MS","4267","4152","15","United States (USA) - Mississippi.","8874","1999-10-20 00:00:00","US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_467[] = {"8475","NAD27 to NAD83(HARN) (16)","","NGS-Usa NE","4267","4152","16","United States (USA) - Nebraska.","8875","1999-10-20 00:00:00","US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_468[] = {"8476","NAD27 to NAD83(HARN) (17)","","NGS-US NewEng","4267","4152","18","United States (USA) - Connecticut; Massachusetts; New Hampshire; Rhode Island; Vermont.","8876","1999-10-20 00:00:00","US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_469[] = {"8477","NAD27 to NAD83(HARN) (18)","","NGS-Usa NM","4267","4152","18","United States (USA) - New Mexico.","8877","1999-10-20 00:00:00","US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_470[] = {"8478","NAD27 to NAD83(HARN) (19)","","NGS-Usa NY","4267","4152","19","United States (USA) - New York.","8878","1999-10-20 00:00:00","US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_471[] = {"8479","NAD27 to NAD83(HARN) (20)","","NGS-Usa ND","4267","4152","20","United States (USA) - North Dakota.","8879","1999-10-20 00:00:00","US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_472[] = {"8480","NAD27 to NAD83(HARN) (21)","","NGS-Usa OK","4267","4152","21","United States (USA) - Oklahoma.","8880","1999-10-20 00:00:00","US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_473[] = {"8481","Puerto Rico to NAD83(HARN) (1)","","NGS-PRVI","4139","4152","1","United States (USA) - Puerto Rico and the Virgin Islands.","8881","1999-10-20 00:00:00","US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_474[] = {"8482","NAD27 to NAD83(HARN) (22)","","NGS-Usa SD","4267","4152","22","United States (USA) - South Dakota.","8882","1999-10-20 00:00:00","US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_475[] = {"8483","NAD27 to NAD83(HARN) (23)","","NGS-Usa TN","4267","4152","23","United States (USA) - Tennessee","8883","1999-10-20 00:00:00","US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_476[] = {"8484","NAD27 to NAD83(HARN) (24)","","NGS-Usa TX e","4267","4152","24","United States (USA) - Texas east of 100deg West.","8884","1999-10-20 00:00:00","US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_477[] = {"8485","NAD27 to NAD83(HARN) (25)","","NGS-Usa TX w","4267","4152","25","United States (USA) - Texas west of 100deg West.","8885","1999-10-20 00:00:00","US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_478[] = {"8486","NAD27 to NAD83(HARN) (26)","","NGS-Usa VA","4267","4152","26","United States (USA) - Virginia.","8886","1999-10-20 00:00:00","US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_479[] = {"8487","NAD27 to NAD83(HARN) (27)","","NGS-Usa OR WA","4267","4152","27","United States (USA) - Oregan; Washington.","8887","1999-10-20 00:00:00","US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_480[] = {"8488","NAD27 to NAD83(HARN) (28)","","NGS-Usa WI","4267","4152","28","United States (USA) - Wisconsin.","8888","1999-10-20 00:00:00","US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_481[] = {"8489","NAD27 to NAD83(HARN) (29)","","NGS-Usa WY","4267","4152","29","United States (USA) - Wyoming.","8889","1999-10-20 00:00:00","US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_482[] = {"8490","Rassadiran to WGS 84 (1)","","TOT-Taheri","4153","4326","1","Iran - Taheri refinery site.","8890","1999-10-20 00:00:00","Total-Fina","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_483[] = {"8491","FD58 to WGS 84 (1)","","TOT-Kangan","4132","4326","1","Iran - Kangan district","8891","1999-10-20 00:00:00","Total-Fina","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_484[] = {"8492","ED50(ED77) to WGS 84 (1)","","NCCI-Irn","4154","4326","1","Iran","8892","1999-10-20 00:00:00","National Cartographic Centre of Iran","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_485[] = {"8493","NAD83 to WGS 84 (4)","","NGS-Usa","4269","4326","4","United States (USA).","8893","1999-11-05 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_486[] = {"8494","NAD83 to WGS 84 (5)","","NGS-Usa","4269","4326","5","United States (USA).","8894","1999-11-05 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_487[] = {"8495","La Canoa to WGS 84 (1)","","LAG-Ven E","4247","4326","1","","8895","1999-11-05 00:00:00","","EPSG","","",NULL};
-datafile_rows_t geod_trf_row_488[] = {"8496","NAD27 to WGS 84 (28)","","NGS-Usa conus","4267","4326","28","United States (USA) - lower 48 states including EEZ.","8896","1999-10-20 00:00:00","","EPSG","For many purposes NAD83 can be assumed to be coincident with WGS 84.","",NULL};
-datafile_rows_t geod_trf_row_489[] = {"8497","NAD27 to WGS 84 (29)","","NGS-Usa AK","4267","4326","29","United States (USA) - Alaska including EEZ.","8897","1999-10-20 00:00:00","","EPSG","For many purposes NAD83 can be assumed to be coincident with WGS 84.","",NULL};
-
-datafile_rows_t *geod_trf_rows[] = {geod_trf_row_1,geod_trf_row_2,geod_trf_row_3,geod_trf_row_4,geod_trf_row_5,geod_trf_row_6,geod_trf_row_7,geod_trf_row_8,geod_trf_row_9,geod_trf_row_10,geod_trf_row_11,geod_trf_row_12,geod_trf_row_13,geod_trf_row_14,geod_trf_row_15,geod_trf_row_16,geod_trf_row_17,geod_trf_row_18,geod_trf_row_19,geod_trf_row_20,geod_trf_row_21,geod_trf_row_22,geod_trf_row_23,geod_trf_row_24,geod_trf_row_25,geod_trf_row_26,geod_trf_row_27,geod_trf_row_28,geod_trf_row_29,g [...]
diff --git a/src/tiff/csv/geod_trf.csv b/src/tiff/csv/geod_trf.csv
deleted file mode 100644
index c54365a..0000000
--- a/src/tiff/csv/geod_trf.csv
+++ /dev/null
@@ -1,489 +0,0 @@
-"GEOD_TRF_CODE","GEOD_TRF_EPSG_NAME","GEOD_TRF_USER_NAME","DESCRIPTION","SOURCE_HORIZCS_CODE","TARGET_HORIZCS_CODE","COORD_TRF_VARIANT","CONCAT_TRF_AREA_OF_USE","COORD_TRF_PATH_CODE","REVISION_DATE","INFORMATION_SOURCE","DATA_SOURCE","CONCAT_TRF_REMARKS","CHANGE_ID"
-8000,Adindan to WGS 84 (1),,DMA-Eth Sud,4201,4326,1,,8400,1996-10-18 00:00:00,,EPSG,,
-8001,Adindan to WGS 84 (2),,DMA-Bfa,4201,4326,2,,8401,1996-10-18 00:00:00,,EPSG,,
-8002,Adindan to WGS 84 (3),,DMA-Cmr,4201,4326,3,,8402,1996-10-18 00:00:00,,EPSG,,
-8003,Adindan to WGS 84 (4),,DMA-Eth,4201,4326,4,,8403,1996-10-18 00:00:00,,EPSG,,
-8004,Adindan to WGS 84 (5),,DMA-Mli,4201,4326,5,,8404,1996-10-18 00:00:00,,EPSG,,
-8005,Adindan to WGS 84 (6),,DMA-Sen,4201,4326,6,,8405,1996-10-18 00:00:00,,EPSG,,
-8006,Adindan to WGS 84 (7),,DMA-Sud,4201,4326,7,,8406,1996-10-18 00:00:00,,EPSG,,
-8007,Afgooye to WGS 84 (1),,DMA-Som,4205,4326,1,,8407,1996-10-18 00:00:00,,EPSG,,
-8008,AGD66 to WGS 84 (1),,DMA-Aus,4202,4326,1,,8408,1996-10-18 00:00:00,,EPSG,,
-8009,AGD84 to WGS 84 (1),,DMA-Aus,4203,4326,1,,8409,1996-10-18 00:00:00,,EPSG,,
-8010,Ain el Abd to WGS 84 (1),,DMA-Bhr,4204,4326,1,,8410,1996-10-18 00:00:00,,EPSG,,
-8011,Ain el Abd to WGS 84 (2),,DMA-Sau,4204,4326,2,,8411,1996-10-18 00:00:00,,EPSG,,
-8012,Amersfoort to WGS 84 (1),,NCG-Nld,4289,4326,1,,8412,1996-10-18 00:00:00,,EPSG,,
-8013,Arc 1950 to WGS 84 (1),,DMA-mean,4209,4326,1,,8413,1996-10-18 00:00:00,,EPSG,,
-8014,Arc 1950 to WGS 84 (2),,DMA-Bwa,4209,4326,2,,8414,1996-10-18 00:00:00,,EPSG,,
-8015,Arc 1950 to WGS 84 (3),,DMA-Bdi,4209,4326,3,,8415,1996-10-18 00:00:00,,EPSG,,
-8016,Arc 1950 to WGS 84 (4),,DMA-Lso,4209,4326,4,,8416,1996-10-18 00:00:00,,EPSG,,
-8017,Arc 1950 to WGS 84 (5),,DMA-Mwi,4209,4326,5,,8417,1996-10-18 00:00:00,,EPSG,,
-8018,Arc 1950 to WGS 84 (6),,DMA-Swz,4209,4326,6,,8418,1996-10-18 00:00:00,,EPSG,,
-8019,Arc 1950 to WGS 84 (7),,DMA-Cod,4209,4326,7,,8419,1996-10-18 00:00:00,,EPSG,,
-8020,Arc 1950 to WGS 84 (8),,DMA-Zmb,4209,4326,8,,8420,1996-10-18 00:00:00,,EPSG,,
-8021,Arc 1950 to WGS 84 (9),,DMA-Zwe,4209,4326,9,,8421,1996-10-18 00:00:00,,EPSG,,
-8022,Arc 1960 to WGS 84 (1),,DMA-Ken Tza,4210,4326,1,,8422,1996-10-18 00:00:00,,EPSG,,
-8023,Batavia to WGS 84 (1),,DMA-Idn Sumatra,4211,4326,1,,8423,1996-10-18 00:00:00,,EPSG,,
-8024,Bermuda 1957 to WGS 84 (1),,DMA-Bmu,4216,4326,1,,8424,1996-10-18 00:00:00,,EPSG,,
-8025,Bogota to WGS 84 (1),,DMA-Col,4218,4326,1,,8425,1996-10-18 00:00:00,,EPSG,,
-8026,Bukit Rimpah to WGS 84 (1),,DMA-Idn Beli,4219,4326,1,,8426,1996-10-18 00:00:00,,EPSG,,
-8027,Campo Inchauspe to WGS 84 (1),,DMA-Arg,4221,4326,1,,8427,1996-10-18 00:00:00,,EPSG,,
-8028,Cape to WGS 84 (1),,DMA-Zaf,4222,4326,1,,8428,1996-10-18 00:00:00,,EPSG,,
-8029,Cape to WGS 84 (2),,DSLI-Zaf,4222,4326,2,,8429,1996-10-18 00:00:00,,EPSG,,
-8030,Carthage to WGS 84 (1),,DMA-Tun,4223,4326,1,,8430,1996-10-18 00:00:00,,EPSG,,
-8031,Chua to WGS 84 (1),,DMA-Pry,4224,4326,1,,8431,1996-10-18 00:00:00,,EPSG,,
-8032,Corrego Alegre to WGS 84 (1),,DMA-Bra,4225,4326,1,,8432,1996-10-18 00:00:00,,EPSG,,
-8033,ED50 to WGS 84 (1),,DMA-mean,4230,4326,1,,8433,1996-10-18 00:00:00,,EPSG,,
-8034,ED50 to WGS 84 (2),,DMA-cenEur,4230,4326,2,,8434,1996-10-18 00:00:00,,EPSG,,
-8035,ED50 to WGS 84 (3),,DMA-midEast,4230,4326,3,,8435,1996-10-18 00:00:00,,EPSG,,
-8036,ED50 to WGS 84 (4),,DMA-Cyp,4230,4326,4,,8436,1996-10-18 00:00:00,,EPSG,,
-8037,ED50 to WGS 84 (5),,DMA-Egy,4230,4326,5,,8437,1996-10-18 00:00:00,,EPSG,,
-8038,ED50 to WGS 84 (6),,DMA-Irl Gbr,4230,4326,6,,8438,1996-10-18 00:00:00,,EPSG,,
-8039,ED50 to WGS 84 (7),,DMA-Fin Nor,4230,4326,7,,8439,1996-10-18 00:00:00,,EPSG,,
-8040,ED50 to WGS 84 (8),,DMA-Grc,4230,4326,8,,8440,1996-10-18 00:00:00,,EPSG,,
-8041,ED50 to WGS 84 (9),,DMA-Irn,4230,4326,9,,8441,1996-10-18 00:00:00,,EPSG,,
-8042,ED50 to WGS 84 (10),,DMA-Ita Sard,4230,4326,10,,8442,1996-10-18 00:00:00,,EPSG,,
-8043,ED50 to WGS 84 (11),,DMA-Ita Sic,4230,4326,11,,8443,1996-10-18 00:00:00,,EPSG,,
-8044,ED50 to WGS 84 (12),,DMA-Mlt,4230,4326,12,,8444,1996-10-18 00:00:00,,EPSG,,
-8045,ED50 to WGS 84 (13),,DMA-Prt Esp,4230,4326,13,,8445,1996-10-18 00:00:00,,EPSG,,
-8046,ED50 to WGS 84 (14),,6Nat-NSea,4230,4326,14,Denmark - North Sea;  Germany - North Sea;  Netherlands - offshore;  Norway - North Sea south of 62 deg N; United Kingdom (UKCS) - North Sea south of 62 deg N.,8446,1996-10-18 00:00:00,,EPSG,,
-8047,ED50 to WGS 84 (15),,NMA-Nor N65,4230,4326,15,Norway - offshore north of 65 deg N.,8447,1996-10-18 00:00:00,,EPSG,The concatenation of transformations 1147 and 1146 gives the following position vector tfm: dX=-84.491  dY=-100.559  dZ=-114.209 metres rX= -2.4006  rY=-0.5367  rZ=-2.3742 microradians  dS=+0.2947 ppm.,
-8048,Egypt 1907 to WGS 84 (1),,DMA-Egy,4229,4326,1,,8448,1996-10-18 00:00:00,,EPSG,,
-8049,ETRF89 to WGS 84 (1),,EPSG-eur,4258,4326,1,,8449,1997-06-19 00:00:00,,EPSG,,97.24
-8050,GDA94 to WGS 84 (1),,EPSG-Aus,4283,4326,1,,8450,1996-10-18 00:00:00,,EPSG,,
-8051,GD49 to WGS 84 (1),,DMA-Nzl,4272,4326,1,,8451,1996-10-18 00:00:00,,EPSG,,
-8052,Hu Tzu Shan to WGS 84 (1),,DMA-Twn,4236,4326,1,,8452,1996-10-18 00:00:00,,EPSG,,
-8053,Indian 1954 to WGS 84 (1),,DMA-Tha,4239,4326,1,,8453,1996-10-18 00:00:00,,EPSG,,
-8054,Indian 1975 to WGS 84 (1),,DMA-Tha,4240,4326,1,,8454,1996-10-18 00:00:00,,EPSG,,
-8055,Kalianpur 1937 to WGS 84 (1),,DMA-Bgd,4144,4326,1,,8455,1999-10-20 00:00:00,,EPSG,,97.235
-8056,Kalianpur 1975 to WGS 84 (1),,DMA-Ind Npl,4146,4326,1,,8456,1999-10-20 00:00:00,,EPSG,,97.235
-8057,Kandawala to WGS 84 (1),,DMA-Lka,4244,4326,1,,8457,1996-10-18 00:00:00,,EPSG,,
-8058,Kertau to WGS 84 (1),,DMA-Mys Sgp,4245,4326,1,,8458,1996-10-18 00:00:00,,EPSG,,
-8059,Leigon to WGS 84 (1),,DMA-Gha,4250,4326,1,,8459,1996-10-18 00:00:00,,EPSG,,
-8060,Liberia 1964 to WGS 84 (1),,DMA-Lbr,4251,4326,1,,8460,1996-10-18 00:00:00,,EPSG,,
-8061,Luzon 1911 to WGS 84 (1),,DMA-Phl N,4253,4326,1,,8461,1996-10-18 00:00:00,,EPSG,,
-8062,Luzon 1911 to WGS 84 (2),,DMA-Phl Min,4253,4326,2,,8462,1996-10-18 00:00:00,,EPSG,,
-8063,M'poraloko to WGS 84 (1),,DMA-Gab,4266,4326,1,,8463,1996-10-18 00:00:00,,EPSG,,
-8064,Mahe 1971 to WGS 84 (1),,DMA-Syc,4256,4326,1,,8464,1996-10-18 00:00:00,,EPSG,,
-8065,Massawa to WGS 84 (1),,DMA-Eth,4262,4326,1,,8465,1996-10-18 00:00:00,,EPSG,,
-8066,Merchich to WGS 84 (1),,DMA-Mar,4261,4326,1,,8466,1996-10-18 00:00:00,,EPSG,,
-8067,Minna to WGS 84 (1),,DMA-Cmr,4263,4326,1,,8467,1996-10-18 00:00:00,,EPSG,,
-8068,Minna to WGS 84 (2),,DMA-Nga,4263,4326,2,,8468,1996-10-18 00:00:00,,EPSG,,
-8069,Monte Mario to WGS 84 (1),,DMA-Ita Sar,4265,4326,1,,8469,1996-10-18 00:00:00,,EPSG,,
-8070,NAD27 to WGS 84 (1),,DMA-Carib,4267,4326,1,,8470,1996-10-18 00:00:00,,EPSG,,
-8071,NAD27 to WGS 84 (2),,DMA-Cen Am,4267,4326,2,,8471,1996-10-18 00:00:00,,EPSG,,
-8072,NAD27 to WGS 84 (3),,DMA-Can,4267,4326,3,,8472,1996-10-18 00:00:00,,EPSG,,
-8073,NAD27 to WGS 84 (4),,DMA-Conus,4267,4326,4,,8473,1996-10-18 00:00:00,,EPSG,,
-8074,NAD27 to WGS 84 (5),,DMA-ConusE,4267,4326,5,,8474,1996-10-18 00:00:00,,EPSG,,
-8075,NAD27 to WGS 84 (6),,DMA-ConusW,4267,4326,6,,8475,1996-10-18 00:00:00,,EPSG,,
-8076,NAD27 to WGS 84 (7),,DMA-USA AK,4267,4326,7,,8476,1996-10-18 00:00:00,,EPSG,,
-8077,NAD27 to WGS 84 (8),,DMA-Bha xSalv,4267,4326,8,,8477,1996-10-18 00:00:00,,EPSG,,
-8078,NAD27 to WGS 84 (9),,DMA-Bha Salv,4267,4326,9,,8478,1996-10-18 00:00:00,,EPSG,,
-8079,NAD27 to WGS 84 (10),,DMA-Can AB BC,4267,4326,10,,8479,1996-10-18 00:00:00,,EPSG,,
-8080,NAD27 to WGS 84 (11),,DMA-Can MN ON,4267,4326,11,,8480,1996-10-18 00:00:00,,EPSG,,
-8081,NAD27 to WGS 84 (12),,DMA-Can E,4267,4326,12,,8481,1996-10-18 00:00:00,,EPSG,,
-8082,NAD27 to WGS 84 (13),,DMA-Can NWT,4267,4326,13,,8482,1996-10-18 00:00:00,,EPSG,,
-8083,NAD27 to WGS 84 (14),,DMA-Can Yuk,4267,4326,14,,8483,1996-10-18 00:00:00,,EPSG,,
-8084,NAD27 to WGS 84 (15),,DMA-Pan,4267,4326,15,,8484,1996-10-18 00:00:00,,EPSG,,
-8085,NAD27 to WGS 84 (16),,DMA-Cuba,4267,4326,16,,8485,1996-10-18 00:00:00,,EPSG,,
-8086,NAD27 to WGS 84 (17),,DMA-Grl,4267,4326,17,,8486,1996-10-18 00:00:00,,EPSG,,
-8087,NAD27 to WGS 84 (18),,DMA-Mex,4267,4326,18,,8487,1996-10-18 00:00:00,,EPSG,,
-8088,NAD83 to WGS 84 (1),,DMA-N Am,4269,4326,1,,8488,1996-10-18 00:00:00,,EPSG,,
-8089,Nahrwan 1967 to WGS 84 (1),,DMA-Omn Mas,4270,4326,1,,8489,1996-10-18 00:00:00,,EPSG,,
-8090,Nahrwan 1967 to WGS 84 (2),,DMA-Sau,4270,4326,2,,8490,1996-10-18 00:00:00,,EPSG,,
-8091,Nahrwan 1967 to WGS 84 (3),,DMA-UAE,4270,4326,3,,8491,1996-10-18 00:00:00,,EPSG,,
-8092,Naparima 1972 to WGS 84 (1),,DMA-Tto,4271,4326,1,,8492,1998-06-30 00:00:00,,EPSG,,98.102
-8093,NTF to WGS 84 (1),,IGN-Fra,4275,4326,1,,8493,1996-10-18 00:00:00,,EPSG,,
-8094,NTF (Paris) to WGS 84 (1),,EPSG-Fra,4807,4326,1,France..,8494,1996-10-18 00:00:00,,EPSG,,
-8095,OSGB 1936 to WGS 84 (1),,DMA-Gbr,4277,4326,1,,8495,1996-10-18 00:00:00,,EPSG,,
-8096,OSGB 1936 to WGS 84 (2),,DMA-Gbr Eng,4277,4326,2,,8496,1996-10-18 00:00:00,,EPSG,,
-8097,OSGB 1936 to WGS 84 (3),,DMA-Gbr E&W,4277,4326,3,,8497,1996-10-18 00:00:00,,EPSG,,
-8098,OSGB 1936 to WGS 84 (4),,DMA-Gbr Sco,4277,4326,4,,8498,1996-10-18 00:00:00,,EPSG,,
-8099,OSGB 1936 to WGS 84 (5),,DMA-Gbr Wal,4277,4326,5,,8499,1996-10-18 00:00:00,,EPSG,,
-8100,Pointe Noire to WGS 84 (1),,DMA-Cog,4282,4326,1,,8500,1996-10-18 00:00:00,,EPSG,,
-8101,PSAD56 to WGS 84 (1),,DMA-mean,4248,4326,1,,8501,1996-10-18 00:00:00,,EPSG,,
-8102,PSAD56 to WGS 84 (2),,DMA-Bol,4248,4326,2,,8502,1996-10-18 00:00:00,,EPSG,,
-8103,PSAD56 to WGS 84 (3),,DMA-Chl N,4248,4326,3,,8503,1996-10-18 00:00:00,,EPSG,,
-8104,PSAD56 to WGS 84 (4),,DMA Chl S,4248,4326,4,,8504,1996-10-18 00:00:00,,EPSG,,
-8105,PSAD56 to WGS 84 (5),,DMA-Col,4248,4326,5,,8505,1996-10-18 00:00:00,,EPSG,,
-8106,PSAD56 to WGS 84 (6),,DMA-Ecu,4248,4326,6,,8506,1996-10-18 00:00:00,,EPSG,,
-8107,PSAD56 to WGS 84 (7),,DMA-Guy,4248,4326,7,,8507,1996-10-18 00:00:00,,EPSG,,
-8108,PSAD56 to WGS 84 (8),,DMA-Per,4248,4326,8,,8508,1996-10-18 00:00:00,,EPSG,,
-8109,PSAD56 to WGS 84 (9),,DMA-Ven,4248,4326,9,,8509,1996-10-18 00:00:00,,EPSG,,
-8110,Qatar to WGS 84 (1),,DMA-Qat,4285,4326,1,,8510,1996-10-18 00:00:00,,EPSG,,
-8111,Qornoq to WGS 84 (1),,DMA-Grl S,4287,4326,1,,8511,1996-10-18 00:00:00,,EPSG,,
-8112,SAD69 to WGS 84 (1),,DMA-mean,4291,4326,1,,8512,1996-10-18 00:00:00,,EPSG,,
-8113,SAD69 to WGS 84 (2),,DMA-Arg,4291,4326,2,,8513,1996-10-18 00:00:00,,EPSG,,
-8114,SAD69 to WGS 84 (3),,DMA-Bol,4291,4326,3,,8514,1996-10-18 00:00:00,,EPSG,,
-8115,SAD69 to WGS 84 (4),,DMA-Bra,4291,4326,4,,8515,1996-10-18 00:00:00,,EPSG,,
-8116,SAD69 to WGS 84 (5),,DMA-Chile,4291,4326,5,,8516,1996-10-18 00:00:00,,EPSG,,
-8117,SAD69 to WGS 84 (6),,DMA-Col,4291,4326,6,,8517,1996-10-18 00:00:00,,EPSG,,
-8118,SAD69 to WGS 84 (7),,DMA-Ecu,4291,4326,7,,8518,1996-10-18 00:00:00,,EPSG,,
-8119,SAD69 to WGS 84 (8),,DMA-Ecu Gal,4291,4326,8,,8519,1996-10-18 00:00:00,,EPSG,,
-8120,SAD69 to WGS 84 (9),,DMA-Guyana,4291,4326,9,,8520,1996-10-18 00:00:00,,EPSG,,
-8121,SAD69 to WGS 84 (10),,DMA-Pgy,4291,4326,10,,8521,1996-10-18 00:00:00,,EPSG,,
-8122,SAD69 to WGS 84 (11),,DMA-Peru,4291,4326,11,,8522,1996-10-18 00:00:00,,EPSG,,
-8123,SAD69 to WGS 84 (12),,DMA-Tto,4291,4326,12,,8523,1996-10-18 00:00:00,,EPSG,,
-8124,SAD69 to WGS 84 (13),,DMA-Ven,4291,4326,13,,8524,1996-10-18 00:00:00,,EPSG,,
-8125,Sapper Hill 1943 to WGS 84 (1),,DMA-Flk E,4292,4326,1,,8525,1996-10-18 00:00:00,,EPSG,,
-8126,Schwarzeck to WGS 84 (1),,DMA-Nam,4293,4326,1,,8526,1996-10-18 00:00:00,,EPSG,,
-8127,Tananarive to WGS 84 (1),,DMA-Mdg,4297,4326,1,,8527,1996-10-18 00:00:00,,EPSG,,
-8128,Timbalai 1948 to WGS 84 (1),,DMA-Borneo,4298,4326,1,,8528,1996-10-18 00:00:00,,EPSG,,
-8129,TM65 to WGS 84 (1),,DMA-Ire,4299,4326,1,,8529,1996-10-18 00:00:00,,EPSG,,
-8130,Tokyo to WGS 84 (1),,DMA-Jpn Kor,4301,4326,1,,8530,1996-10-18 00:00:00,,EPSG,,
-8131,Tokyo to WGS 84 (2),,DMA-Jpn,4301,4326,2,,8531,1996-10-18 00:00:00,,EPSG,,
-8132,Tokyo to WGS 84 (3),,DMA-Kor,4301,4326,3,,8532,1996-10-18 00:00:00,,EPSG,,
-8133,Tokyo to WGS 84 (4),,DMA-Jpn Ok,4301,4326,4,,8533,1996-10-18 00:00:00,,EPSG,,
-8134,Yacare to WGS 84 (1),,DMA-Ury,4309,4326,1,,8534,1996-10-18 00:00:00,,EPSG,,
-8135,Zanderij to WGS 84 (1),,DMA-Sur,4311,4326,1,,8535,1996-10-18 00:00:00,,EPSG,,
-8136,ED50 to ED87 (1),,6Nat-NSea,4230,4231,1,,8536,1996-10-18 00:00:00,,EPSG,,
-8137,ED87 to WGS 84 (1),,6Nat-NSea,4231,4326,1,,8537,1996-10-18 00:00:00,,EPSG,,
-8138,ED50 to ED87 (2),,NMA-Nor N65,4230,4231,2,,8538,1996-10-18 00:00:00,,EPSG,,
-8139,AGD84 to WGS 84 (2),,Auslig-Aus old,4203,4326,2,,8539,1996-12-12 00:00:00,,EPSG,,
-8140,WGS 72 to WGS 84 (1),,DMA,4322,4326,1,,8540,1996-12-12 00:00:00,,EPSG,,
-8141,WGS 72 to WGS 84 (2),,,4322,4326,2,,8541,1996-12-12 00:00:00,,EPSG,,
-8142,WGS 72BE to WGS 72 (1),,,4324,4322,1,,8542,1996-12-12 00:00:00,,EPSG,,
-8143,WGS 72BE to WGS 84 (1),,,4324,4326,1,,8543,1996-12-12 00:00:00,,EPSG,,
-8144,NAD27 to NAD83 (1),,NGS-Conus,4267,4269,1,,8544,1996-12-12 00:00:00,,EPSG,,
-8146,NAD27 to NAD83 (2),,NGS-Usa AK,4267,4269,2,,8546,1996-12-12 00:00:00,,EPSG,,
-8148,ED50 to WGS 84 (16),,DMA-Tun,4230,4326,16,,8548,1997-06-12 00:00:00,,EPSG,,
-8149,Herat North to WGS 84 (1),,DMA-Afg,4255,4326,1,,8549,1997-06-12 00:00:00,,EPSG,,
-8150,Kalianpur 1962 to WGS 84 (1),,DMA-Pak,4145,4326,1,,8550,1999-10-20 00:00:00,,EPSG,,97.235
-8151,ID74 to WGS 84 (1),,DMA-Idn,4238,4326,1,,8551,1997-06-12 00:00:00,,EPSG,,
-8152,NAD27 to WGS 84 (21),,DMA-AK AluE,4267,4326,21,,8552,1997-04-11 00:00:00,,EPSG,,
-8153,NAD27 to WGS 84 (22),,DMA-AK AluW,4267,4326,22,,8553,1997-04-11 00:00:00,,EPSG,,
-8154,NAD83 to WGS 84 (2),,DMA-AK Alu,4269,4326,2,,8554,1997-04-11 00:00:00,,EPSG,,
-8155,NAD83 to WGS 84 (3),,DMA-USA Hi,4269,4326,3,,8555,1997-04-11 00:00:00,,EPSG,,
-8156,Nord Sahara 1959 to WGS 84 (1),,DMA-Alg,4307,4326,1,,8556,1997-04-11 00:00:00,,EPSG,,
-8157,Pulkovo 1942 to WGS 84 (1),,DMA-Rus,4284,4326,1,,8557,1997-04-11 00:00:00,,EPSG,,
-8158,Voirol Unifie to WGS 84 (1),,DMA-Alg N,4305,4326,1,,8558,1997-04-11 00:00:00,,EPSG,,98.15
-8159,Fahud to WGS 84 (1),,DMA-Omn,4232,4326,1,,8559,1997-04-11 00:00:00,,EPSG,,
-8160,NTF (Paris) to NTF (1),,IGN-Fra,4807,4275,1,,8560,1997-04-11 00:00:00,,EPSG,,
-8161,Bern 1898 (Bern) to Bern 1898 (1),,BfL-CH,4801,4217,1,,8561,1997-04-11 00:00:00,,EPSG,,
-8162,Bogota (Bogota) to Bogota (1),,IGAC-Col,4802,4218,1,,8562,1997-04-11 00:00:00,,EPSG,,
-8163,Lisbon (Lisbon) to Lisbon (1),,IGC-Prt,4803,4207,1,,8564,1997-04-11 00:00:00,,EPSG,,
-8164,Makassar (Jakarta) to Makassar (1),,EPSG-Idn Sulawesi,4804,4257,1,,8565,1997-04-11 00:00:00,,EPSG,,
-8165,MGI (Ferro) to MGI (1),,BEV-Aut balk,4805,4312,1,,8566,1997-04-11 00:00:00,,EPSG,,
-8166,Monte Mario (Rome) to Monte Mario (1),,EPSG-Ita,4806,4265,1,,8567,1997-04-11 00:00:00,,EPSG,,
-8167,Padang (Jakarta) to Padang (1),,EPSG-Idn Sumatra,4808,4280,1,,8569,1997-04-11 00:00:00,,EPSG,,
-8168,Belge 1950 (Brussels) to Belge 1950 (1),,IGN-Bel,4809,4215,1,,8570,1997-04-11 00:00:00,,EPSG,,
-8169,Tananarive (Paris) to Tananarive (1),,EPSG-Mdg,4810,4297,1,,8571,1997-04-11 00:00:00,,EPSG,,
-8170,Voirol 1875 (Paris) to Voirol 1875 (1),,IGN-Dza,4811,4304,1,,8573,1997-04-11 00:00:00,,EPSG,,
-8171,Voirol Unifie (Paris) to Voirol Unifie(1,,IGN-Dza,4812,4305,1,,8574,1997-04-11 00:00:00,,EPSG,,
-8172,Batavia (Jakarta) to Batavia (1),,EPSG-Idn Java,4813,4211,1,,8576,1997-04-11 00:00:00,,EPSG,,
-8173,RT38 (Stockholm) to RT38 (1),,NLS-Swe,4814,4308,1,,8578,1997-04-11 00:00:00,,EPSG,,
-8174,Bogota (Bogota) to WGS 84 (1),,EPSG-Col,4802,4326,1,Colombia.,8563,1997-04-11 00:00:00,,EPSG,,
-8175,Monte Mario (Rome) to WGS 84 (1),,EPSG-Ita,4806,4326,1,Italy (Sardinia).,8568,1997-04-11 00:00:00,,EPSG,,
-8176,Tananarive (Paris) to WGS 84 (1),,EPSG-Mdg,4810,4326,1,Madagascar.,8572,1997-04-11 00:00:00,,EPSG,,
-8177,Voirol Unifie (Paris) to WGS 84 (1),,EPSG-Dza N,4812,4326,1,Algeria - north of 35g (31 deg 30 min) North,8575,1997-04-11 00:00:00,,EPSG,,
-8178,Batavia (Jakarta) to WGS 84 (1),,EPSG-Idn Sumatra,4813,4326,1,Indonesia (Sumatra).,8577,1997-04-11 00:00:00,,EPSG,,
-8179,Greek (Athens) to Greek (1),,NTU-Grc,4815,4120,1,,8579,1998-12-14 00:00:00,,EPSG,,98.52
-8180,Schwarzeck to WGS 84 (2),,SLI-Nam,4293,4326,2,,8580,1998-11-19 00:00:00,,EPSG,,98.46
-8181,GGRS87 to WGS 84 (1),,Hel-Grc,4121,4326,1,,8581,1997-06-16 00:00:00,,EPSG,,
-8182,HD72 to ETRF89 (1),,ELTE-Hun,4237,4258,1,,8582,1997-11-13 00:00:00,,EPSG,,97.47
-8183,HD72 to WGS 84 (1),,EPSG-Hun,4237,4326,1,Hungary.,8583,1997-07-22 00:00:00,,EPSG,For many purposes ETRF89 can be assumed to be coincident with WGS 84.,
-8184,ED50 to WGS 84 (17),,IGN-Fra,4230,4326,17,,8584,1997-11-13 00:00:00,,EPSG,,
-8185,NTF to ED50 (1),,IGN-Fra,4275,4230,1,,8585,1997-11-13 00:00:00,,EPSG,,
-8186,NTF (Paris) to ED50 (1),,EPSG-Fra,4807,4230,1,France,8586,1997-11-13 00:00:00,,EPSG,,
-8187,NTF to WGS 72 (1),,IGN-Fra,4275,4322,1,,8587,1997-11-13 00:00:00,,EPSG,,
-8188,NTF (Paris) to WGS 72 (1),,EPSG-Fra,4807,4322,1,France.,8588,1997-11-13 00:00:00,,EPSG,,
-8189,AGD66 to GDA94 (1),,Auslig-Aus 5m,4202,4283,1,,8589,1997-11-13 00:00:00,,EPSG,,
-8190,AGD66 to WGS 84 (2),,EPSG-Aus 5m,4202,4326,2,Australia..,8590,1998-12-16 00:00:00,,EPSG,For many purposes GDA94 can be assumed to be coincident with WGS 84.,98.50
-8191,AGD84 to GDA94 (1),,Auslig-Aus 5m,4203,4283,1,,8591,1997-11-13 00:00:00,,EPSG,,
-8192,AGD84 to WGS 84 (3),,EPSG-Aus 5m,4203,4326,3,Australia,8592,1998-12-16 00:00:00,,EPSG,For many purposes GDA94 can be assumed to be coincident with WGS 84.,98.50
-8193,AGD84 to GDA94 (2),,Auslig-Aus 1m,4203,4283,2,,8593,1997-11-13 00:00:00,,EPSG,,
-8194,AGD84 to WGS 84 (4),,EPSG-Aus 1m,4203,4326,4,Australia.,8594,1998-12-16 00:00:00,,EPSG,For many purposes GDA94 can be assumed to be coincident with WGS 84.,98.50
-8195,RT90 to WGS 84 (1),,EPSG-Swe,4124,4326,1,Sweden.,8595,1999-04-22 00:00:00,,EPSG,For many purposes ETRF89 can be assumed to be coincident with WGS 84.,99.11
-8196,Samboja to WGS 84 (1),,TOT-Idn Mah,4125,4326,1,,8596,1997-11-13 00:00:00,,EPSG,,
-8197,Pulkovo 1942 to LKS94 (1),,HNIT-Ltu,4284,4126,1,,8597,1998-03-12 00:00:00,,EPSG,,
-8198,LKS94 to WGS 84 (1),,HNIT-Ltu,4126,4326,1,,8598,1998-04-16 00:00:00,,EPSG,For many purposes LKS94 can be assumed to be coincident with WGS 84.,98.13
-8199,Pulkovo 1942 to WGS 84 (2),,EPSG-Ltu,4284,4326,2,Lithuania.,8609,1998-03-12 00:00:00,,EPSG,For many purposes LKS94 can be assumed to be coincident with WGS 84.,
-8200,Pulkovo 1942 to WGS 84 (3),,NIMA-Hun,4284,4326,3,,8602,1998-03-12 00:00:00,,EPSG,,
-8201,Pulkovo 1942 to WGS 84 (4),,NIMA-Pol,4284,4326,4,,8603,1998-03-12 00:00:00,,EPSG,,
-8202,Pulkovo 1942 to WGS 84 (5),,NIMA-Cze,4284,4326,5,,8604,1998-03-12 00:00:00,,EPSG,,
-8203,Pulkovo 1942 to WGS 84 (6),,NIMA-Lva,4284,4326,6,,8605,1998-03-12 00:00:00,,EPSG,,
-8204,Pulkovo 1942 to WGS 84 (7),,NIMA-Kaz,4284,4326,7,,8606,1998-03-12 00:00:00,,EPSG,,
-8205,Pulkovo 1942 to WGS 84 (8),,NIMA-Alb,4284,4326,8,,8607,1998-03-12 00:00:00,,EPSG,,
-8206,Pulkovo 1942 to WGS 84 (9),,NIMA-Rom,4284,4326,9,,8608,1998-03-12 00:00:00,,EPSG,,
-8207,Arc 1960 to WGS 84 (2),,NIMA-Ken,4210,4326,2,,8599,1998-03-12 00:00:00,,EPSG,,
-8208,Arc 1960 to WGS 84 (3),,NIMA-Tza,4210,4326,3,,8600,1998-03-12 00:00:00,,EPSG,,
-8209,Segora to WGS 84 (1),,NIMA-Idn Kal,4294,4326,1,,8601,1998-03-12 00:00:00,,EPSG,,
-8210,Voirol 1875 to WGS 84 (1),,NIMA-Dza N,4304,4326,1,,8610,1998-03-12 00:00:00,,EPSG,,
-8211,Voirol 1875 (Paris) to WGS 84 (1),,EPSG-Dza N,4811,4326,1,Algeria - north of 35g (31 deg 30 min) North.,8611,1998-03-12 00:00:00,,EPSG,,
-8212,Naparima 1972 to WGS 84 (2),,MEEI-Tto,4271,4326,2,,8612,1998-04-16 00:00:00,,EPSG,,
-8213,Trinidad 1903 to WGS 84 (1),,MEEI-Trin,4302,4326,1,,8613,1998-04-16 00:00:00,,EPSG,,
-8214,Tete to Moznet (1),,DNGC-Moz,4127,4130,1,,8614,1998-04-16 00:00:00,,EPSG,,
-8215,Tete to WGS 84 (1),,EPSG-Moz,4127,4326,1,Mozambique - average for whole country.,8615,1998-04-16 00:00:00,,EPSG,For many purposes Moznet can be assumed to be coincident with WGS 84.,
-8216,Tete to Moznet (2),,DNGC-Moz A,4127,4130,2,,8616,1998-04-16 00:00:00,,EPSG,,
-8217,Tete to WGS 84 (2),,EPSG-Moz A,4127,4326,2,Mozambique - Maputo province and southern part of Gaza province; i.e. south of approximately 24 deg S.,8617,1998-04-16 00:00:00,,EPSG,For many purposes Moznet can be assumed to be coincident with WGS 84.,
-8218,Tete to Moznet (3),,DNGC-Moz B,4127,4130,3,,8618,1998-04-16 00:00:00,,EPSG,,
-8219,Tete to WGS 84 (3),,EPSG-Moz B,4127,4326,3,Mozambique - provinces of Gaza; Inhambane and southern parts of Sofala and Manhica; i.e. between approximately 24 and 20 deg South.,8619,1998-04-16 00:00:00,,EPSG,For many purposes Moznet can be assumed to be coincident with WGS 84.,
-8220,Tete to Moznet (4),,DNGC-Moz C,4127,4130,4,,8620,1998-04-16 00:00:00,,EPSG,,
-8221,Tete to WGS 84 (4),,EPSG-Moz C,4127,4326,4,Mozambique - provinces of Sofala north of Beira corridor; Manhica; Tete and Zambezia; i.e. between approximately 20 and 16 deg South.,8621,1998-04-16 00:00:00,,EPSG,For many purposes Moznet can be assumed to be coincident with WGS 84.,
-8222,Tete to Moznet (5),,DNGC-Moz D,4127,4130,5,,8622,1998-04-16 00:00:00,,EPSG,,
-8223,Tete to WGS 84 (5),,EPSG-Moz D,4127,4326,5,Mozambique - provinces of Nampula; Niassa; Cabo Delgado; i.e. north of approximately 16 deg S.,8623,1998-04-16 00:00:00,,EPSG,For many purposes Moznet can be assumed to be coincident with WGS 84.,
-8224,Moznet to WGS 84 (1),,EPSG-Moz,4130,4326,1,,8624,1998-04-16 00:00:00,,EPSG,,
-8225,Pulkovo 1942 to WGS 84 (10),,KCS-Kaz Cas,4284,4326,10,,8625,1998-04-16 00:00:00,,EPSG,,
-8226,Indian 1975 to WGS 84 (2),,NIMA-Tha,4240,4326,2,,8626,1998-04-16 00:00:00,,EPSG,,
-8227,Tokyo to WGS 84 (5),,NIMA-Kor,4301,4326,5,,8627,1998-11-19 00:00:00,,EPSG,,98.46
-8228,MGI to WGS 84 (1),,NIMA-balk,4312,4326,1,,8628,1998-04-16 00:00:00,,EPSG,,
-8229,Naparima 1972 to WGS 84 (3),,NIMA-Tto,4271,4326,3,,8629,1998-04-16 00:00:00,,EPSG,,
-8233,DHDN to ETRF89 (1),,IfAG-Deu W,4314,4258,1,,8633,1998-06-30 00:00:00,,EPSG,,
-8234,DHDN to WGS 84 (1),,EPSG-Deu W,4314,4326,1,Germany - former west Germany.,8634,1998-06-30 00:00:00,EPSG,EPSG,For many purposes ETRF89 can be assumed to be coincident with WGS 84.,
-8235,Pulkovo 1942 to ETRF89 (1),,IfAG-Deu E,4284,4258,1,,8635,1998-06-30 00:00:00,,EPSG,,
-8236,Pulkovo 1942 to WGS 84 (11),,EPSG-Deu E,4284,4326,11,Germany - former east Germany - Brandenburg; Mecklenburg-Vorpommern; Sachsen-Anhalt.,8636,1998-06-30 00:00:00,,EPSG,For many purposes ETRF89 can be assumed to be coincident with WGS 84.,
-8237,ED50 to WGS 84 (Common Offshore),,UKOOA-CO,4230,4326,18,,8637,1998-06-30 00:00:00,,EPSG,,98.27
-8238,Madrid 1870 (Madrid) to ED50 (1),,IGB-Esp,4903,4230,1,,8638,1998-11-11 00:00:00,,EPSG,,
-8239,Madrid 1870 (Madrid) to ED50 (2),,IGB-Esp N,4903,4230,2,,8639,1998-11-11 00:00:00,,EPSG,,
-8240,Madrid 1870 (Madrid) to ED50 (3),,IGB-Esp S,4903,4230,3,,8640,1998-11-11 00:00:00,,EPSG,,
-8241,Madrid 1870 (Madrid) to WGS 84 (1),,EPSG-Esp,4903,4326,1,Spain.,8641,1998-11-11 00:00:00,,EPSG,,
-8242,NAD27 to NAD83 (3),,GC-Can NT1,4267,4269,3,,8642,1998-11-11 00:00:00,,EPSG,,98.57
-8243,NAD27 to WGS 84 (25),,EPSG-Can old,4267,4326,25,Canada,8643,1998-11-11 00:00:00,,EPSG,For many purposes NAD83 can be assumed to be coincident with WGS 84.,
-8244,NAD27 to NAD83 (4),,GC-Can,4267,4269,4,,8644,1998-11-11 00:00:00,,EPSG,,98.57
-8245,NAD27 to WGS 84 (26),,EPSG-Can,4267,4326,26,Canada.,8645,1998-11-11 00:00:00,,EPSG,For many purposes NAD83 can be assumed to be coincident with WGS 84.,
-8246,OSGB 1936 to WGS 84 (Petroleum),,UKOOA-Pet,4277,4326,6,,8646,1998-11-11 00:00:00,,EPSG,,
-8247,OSGB 1936 to ED50 (UKOOA),,UKOOA-UKCS,4277,4230,1,,8647,1998-11-11 00:00:00,,EPSG,,
-8248,Manoca to WGS 84 (1),,SCS-Cmr,4260,4326,1,,8648,1998-11-11 00:00:00,,EPSG,,
-8249,Camacupa to WGS 72BE (1),,GSI-Ago,4220,4324,1,,8649,1998-11-11 00:00:00,,EPSG,,
-8250,Camacupa to WGS 84 (1),,CON-Ago B5,4220,4326,1,,8650,1998-11-11 00:00:00,,EPSG,,
-8251,Camacupa to WGS 84 (2),,TEX-Ago B2,4220,4326,2,,8651,1998-11-11 00:00:00,,EPSG,,
-8252,Camacupa to WGS 84 (3),,SHL-Ago old,4220,4326,3,,8652,1998-11-11 00:00:00,,EPSG,,
-8253,Camacupa to WGS 84 (4),,GSI-Ago,4220,4326,4,,8653,1998-11-11 00:00:00,,EPSG,,
-8254,Camacupa to WGS 84 (5),,ELF-Ago B3 old,4220,4326,5,,8654,1998-11-11 00:00:00,,EPSG,,
-8255,Camacupa to WGS 84 (6),,ELF-Ago B7 old,4220,4326,6,,8655,1998-11-11 00:00:00,,EPSG,,
-8256,Camacupa to WGS 84 (7),,ELF-Ago B15,4220,4326,7,,8656,1998-11-11 00:00:00,,EPSG,,
-8257,Camacupa to WGS 84 (8),,ELF-Ago B2 old,4220,4326,8,,8657,1998-11-11 00:00:00,,EPSG,,
-8258,Camacupa to WGS 84 (9),,SHL-Ago B16,4220,4326,9,,8658,1998-11-11 00:00:00,,EPSG,,
-8259,Camacupa to WGS 84 (10),,ELF-Ago N,4220,4326,10,,8659,1998-11-11 00:00:00,,EPSG,,
-8260,Malongo 1987 to Mhast (1),,CHV-Ago Cab,4259,4264,1,,8660,1998-11-11 00:00:00,,EPSG,,
-8261,Mhast to WGS 84 (1),,CHV-Ago Cab,4264,4326,1,,8661,1998-11-11 00:00:00,,EPSG,,
-8262,Malongo 1987 to WGS 84 (1),,CHV-Ago Cab,4259,4326,1,,8662,1998-11-11 00:00:00,,EPSG,,
-8263,MGI (Ferro) to WGS 84 (1),,DMA-balk,4805,4326,1,MEAN FOR Boznia and Herzegovina; Croatia; Serbia; Slovenia.,8663,1998-12-14 00:00:00,,EPSG,,
-8264,EST92 to ETRF89 (1),,UT-Est,4133,4258,1,,8664,1998-12-14 00:00:00,,EPSG,,
-8265,Pulkovo 1942 to EST92 (1),,UT-Est,4284,4133,1,,8665,1998-12-14 00:00:00,,EPSG,,
-8266,EST92 to WGS 84 (1),,UT-Est,4133,4326,1,,8666,1998-12-14 00:00:00,,EPSG,,
-8267,Pulkovo 1942 to WGS 84 (12),,UT-Est,4284,4326,12,,8667,1998-12-14 00:00:00,,EPSG,,
-8268,Tokyo to WGS 84 (6),,GSI-Jpn 452141,4301,4326,6,,8668,1998-12-14 00:00:00,,EPSG,,
-8269,Tokyo to WGS 84 (7),,GSI-Jpn 452142,4301,4326,7,,8669,1998-12-14 00:00:00,,EPSG,,
-8270,Tokyo to WGS 84 (8),,GSI-Jpn 444141,4301,4326,8,,8670,1998-12-14 00:00:00,,EPSG,,
-8271,Tokyo to WGS 84 (9),,GSI-Jpn 444142,4301,4326,9,,8671,1998-12-14 00:00:00,,EPSG,,
-8272,Tokyo to WGS 84 (10),,GSI-Jpn 440141,4301,4326,10,,8672,1998-12-14 00:00:00,,EPSG,,
-8273,Tokyo to WGS 84 (11),,GSI-Jpn 440142,4301,4326,11,,8673,1998-12-14 00:00:00,,EPSG,,
-8274,Tokyo to WGS 84 (12),,GSI-Jpn 440143,4301,4326,12,,8674,1998-12-14 00:00:00,,EPSG,,
-8275,Tokyo to WGS 84 (13),,GSI-Jpn 440144,4301,4326,13,,8675,1998-12-14 00:00:00,,EPSG,,
-8276,Tokyo to WGS 84 (14),,GSI-Jpn 432141,4301,4326,14,,8676,1998-12-14 00:00:00,,EPSG,,
-8277,Tokyo to WGS 84 (15),,GSI-Jpn 432142,4301,4326,15,,8677,1998-12-14 00:00:00,,EPSG,,
-8278,Tokyo to WGS 84 (16),,GSI-Jpn 432143,4301,4326,16,,8678,1998-12-14 00:00:00,,EPSG,,
-8279,Tokyo to WGS 84 (17),,GSI-Jpn 432144,4301,4326,17,,8679,1998-12-14 00:00:00,,EPSG,,
-8280,Tokyo to WGS 84 (18),,GSI-Jpn 432145,4301,4326,18,,8680,1998-12-14 00:00:00,,EPSG,,
-8281,Tokyo to WGS 84 (19),,GSI-Jpn 424140,4301,4326,19,,8681,1998-12-14 00:00:00,,EPSG,,
-8282,Tokyo to WGS 84 (20),,GSI-Jpn 424141,4301,4326,20,,8682,1998-12-14 00:00:00,,EPSG,,
-8283,Tokyo to WGS 84 (21),,GSI-Jpn 424142,4301,4326,21,,8683,1998-12-14 00:00:00,,EPSG,,
-8284,Tokyo to WGS 84 (22),,GSI-Jpn 424143,4301,4326,22,,8684,1998-12-14 00:00:00,,EPSG,,
-8285,Tokyo to WGS 84 (23),,GSI-Jpn 424144,4301,4326,23,,8685,1998-12-14 00:00:00,,EPSG,,
-8286,Tokyo to WGS 84 (24),,GSI-Jpn 424145,4301,4326,24,,8686,1998-12-14 00:00:00,,EPSG,,
-8287,Tokyo to WGS 84 (25),,GSI-Jpn 420139,4301,4326,25,,8687,1998-12-14 00:00:00,,EPSG,,
-8288,Tokyo to WGS 84 (26),,GSI-Jpn 420140,4301,4326,26,,8688,1998-12-14 00:00:00,,EPSG,,
-8289,Tokyo to WGS 84 (27),,GSI-Jpn,4301,4326,27,,8689,1998-12-14 00:00:00,,EPSG,,
-8290,Tokyo to WGS 84 (28),,GSI-Jpn,4301,4326,28,,8690,1998-12-14 00:00:00,,EPSG,,
-8291,Tokyo to WGS 84 (29),,GSI-Jpn,4301,4326,29,,8691,1998-12-14 00:00:00,,EPSG,,
-8292,Tokyo to WGS 84 (30),,GSI-Jpn,4301,4326,30,,8692,1998-12-14 00:00:00,,EPSG,,
-8293,Tokyo to WGS 84 (31),,GSI-Jpn,4301,4326,31,,8693,1998-12-14 00:00:00,,EPSG,,
-8294,Tokyo to WGS 84 (32),,GSI-Jpn,4301,4326,32,,8694,1998-12-14 00:00:00,,EPSG,,
-8295,Tokyo to WGS 84 (33),,GSI-Jpn,4301,4326,33,,8695,1998-12-14 00:00:00,,EPSG,,
-8296,Tokyo to WGS 84 (34),,GSI-Jpn,4301,4326,34,,8696,1998-12-14 00:00:00,,EPSG,,
-8297,Tokyo to WGS 84 (35),,GSI-Jpn,4301,4326,35,,8697,1998-12-14 00:00:00,,EPSG,,
-8298,Tokyo to WGS 84 (36),,GSI-Jpn,4301,4326,36,,8698,1998-12-14 00:00:00,,EPSG,,
-8299,Tokyo to WGS 84 (37),,GSI-Jpn,4301,4326,37,,8699,1998-12-14 00:00:00,,EPSG,,
-8300,Tokyo to WGS 84 (38),,GSI-Jpn,4301,4326,38,,8700,1998-12-14 00:00:00,,EPSG,,
-8301,Tokyo to WGS 84 (39),,GSI-Jpn,4301,4326,39,,8701,1998-12-14 00:00:00,,EPSG,,
-8302,Tokyo to WGS 84 (40),,GSI-Jpn,4301,4326,40,,8702,1998-12-14 00:00:00,,EPSG,,
-8303,Tokyo to WGS 84 (41),,GSI-Jpn,4301,4326,41,,8703,1998-12-14 00:00:00,,EPSG,,
-8304,Tokyo to WGS 84 (42),,GSI-Jpn,4301,4326,42,,8704,1998-12-14 00:00:00,,EPSG,,
-8305,Tokyo to WGS 84 (43),,GSI-Jpn,4301,4326,43,,8705,1998-12-14 00:00:00,,EPSG,,
-8306,Tokyo to WGS 84 (44),,GSI-Jpn,4301,4326,44,,8706,1998-12-14 00:00:00,,EPSG,,
-8307,Tokyo to WGS 84 (45),,GSI-Jpn,4301,4326,45,,8707,1998-12-14 00:00:00,,EPSG,,
-8308,Tokyo to WGS 84 (46),,GSI-Jpn,4301,4326,46,,8708,1998-12-14 00:00:00,,EPSG,,
-8309,Tokyo to WGS 84 (47),,GSI-Jpn,4301,4326,47,,8709,1998-12-14 00:00:00,,EPSG,,
-8310,Tokyo to WGS 84 (48),,GSI-Jpn,4301,4326,48,,8710,1998-12-14 00:00:00,,EPSG,,
-8311,Tokyo to WGS 84 (49),,GSI-Jpn,4301,4326,49,,8711,1998-12-14 00:00:00,,EPSG,,
-8312,Tokyo to WGS 84 (50),,GSI-Jpn,4301,4326,50,,8712,1998-12-14 00:00:00,,EPSG,,
-8313,Tokyo to WGS 84 (51),,GSI-Jpn,4301,4326,51,,8713,1998-12-14 00:00:00,,EPSG,,
-8314,Tokyo to WGS 84 (52),,GSI-Jpn,4301,4326,52,,8714,1998-12-14 00:00:00,,EPSG,,
-8315,Tokyo to WGS 84 (53),,GSI-Jpn,4301,4326,53,,8715,1998-12-14 00:00:00,,EPSG,,
-8316,Tokyo to WGS 84 (54),,GSI-Jpn,4301,4326,54,,8716,1998-12-14 00:00:00,,EPSG,,
-8317,Tokyo to WGS 84 (55),,GSI-Jpn,4301,4326,55,,8717,1998-12-14 00:00:00,,EPSG,,
-8318,Tokyo to WGS 84 (56),,GSI-Jpn,4301,4326,56,,8718,1998-12-14 00:00:00,,EPSG,,
-8319,Tokyo to WGS 84 (57),,GSI-Jpn,4301,4326,57,,8719,1998-12-14 00:00:00,,EPSG,,
-8320,Tokyo to WGS 84 (58),,GSI-Jpn,4301,4326,58,,8720,1998-12-14 00:00:00,,EPSG,,
-8321,Tokyo to WGS 84 (59),,GSI-Jpn,4301,4326,59,,8721,1998-12-14 00:00:00,,EPSG,,
-8322,Tokyo to WGS 84 (60),,GSI-Jpn,4301,4326,60,,8722,1998-12-14 00:00:00,,EPSG,,
-8323,Tokyo to WGS 84 (61),,GSI-Jpn,4301,4326,61,,8723,1998-12-14 00:00:00,,EPSG,,
-8324,Tokyo to WGS 84 (62),,GSI-Jpn,4301,4326,62,,8724,1998-12-14 00:00:00,,EPSG,,
-8325,Tokyo to WGS 84 (63),,GSI-Jpn,4301,4326,63,,8725,1998-12-14 00:00:00,,EPSG,,
-8326,Tokyo to WGS 84 (64),,GSI-Jpn,4301,4326,64,,8726,1998-12-14 00:00:00,,EPSG,,
-8327,Tokyo to WGS 84 (65),,GSI-Jpn,4301,4326,65,,8727,1998-12-14 00:00:00,,EPSG,,
-8328,Tokyo to WGS 84 (66),,GSI-Jpn,4301,4326,66,,8728,1998-12-14 00:00:00,,EPSG,,
-8329,Tokyo to WGS 84 (67),,GSI-Jpn,4301,4326,67,,8729,1998-12-14 00:00:00,,EPSG,,
-8330,Tokyo to WGS 84 (68),,GSI-Jpn,4301,4326,68,,8730,1998-12-14 00:00:00,,EPSG,,
-8331,Tokyo to WGS 84 (69),,GSI-Jpn,4301,4326,69,,8731,1998-12-14 00:00:00,,EPSG,,
-8332,Tokyo to WGS 84 (70),,GSI-Jpn,4301,4326,70,,8732,1998-12-14 00:00:00,,EPSG,,
-8333,Tokyo to WGS 84 (71),,GSI-Jpn,4301,4326,71,,8733,1998-12-14 00:00:00,,EPSG,,
-8334,Tokyo to WGS 84 (72),,GSI-Jpn,4301,4326,72,,8734,1998-12-14 00:00:00,,EPSG,,
-8335,Tokyo to WGS 84 (73),,GSI-Jpn,4301,4326,73,,8735,1998-12-14 00:00:00,,EPSG,,
-8336,Tokyo to WGS 84 (74),,GSI-Jpn,4301,4326,74,,8736,1998-12-14 00:00:00,,EPSG,,
-8337,Tokyo to WGS 84 (75),,GSI-Jpn,4301,4326,75,,8737,1998-12-14 00:00:00,,EPSG,,
-8338,Tokyo to WGS 84 (76),,GSI-Jpn,4301,4326,76,,8738,1998-12-14 00:00:00,,EPSG,,
-8339,Tokyo to WGS 84 (77),,GSI-Jpn,4301,4326,77,,8739,1998-12-14 00:00:00,,EPSG,,
-8340,Tokyo to WGS 84 (78),,GSI-Jpn,4301,4326,78,,8740,1998-12-14 00:00:00,,EPSG,,
-8341,Tokyo to WGS 84 (79),,GSI-Jpn,4301,4326,79,,8741,1998-12-14 00:00:00,,EPSG,,
-8342,Tokyo to WGS 84 (80),,GSI-Jpn,4301,4326,80,,8742,1998-12-14 00:00:00,,EPSG,,
-8343,Tokyo to WGS 84 (81),,GSI-Jpn,4301,4326,81,,8743,1998-12-14 00:00:00,,EPSG,,
-8344,Tokyo to WGS 84 (82),,GSI-Jpn,4301,4326,82,,8744,1998-12-14 00:00:00,,EPSG,,
-8345,Tokyo to WGS 84 (83),,GSI-Jpn,4301,4326,83,,8745,1998-12-14 00:00:00,,EPSG,,
-8346,Tokyo to WGS 84 (84),,GSI-Jpn,4301,4326,84,,8746,1998-12-14 00:00:00,,EPSG,,
-8347,Tokyo to WGS 84 (85),,GSI-Jpn,4301,4326,85,,8747,1998-12-14 00:00:00,,EPSG,,
-8348,Tokyo to WGS 84 (86),,GSI-Jpn,4301,4326,86,,8748,1998-12-14 00:00:00,,EPSG,,
-8349,Tokyo to WGS 84 (87),,GSI-Jpn,4301,4326,87,,8749,1998-12-14 00:00:00,,EPSG,,
-8350,Tokyo to WGS 84 (88),,GSI-Jpn,4301,4326,88,,8750,1998-12-14 00:00:00,,EPSG,,
-8351,Tokyo to WGS 84 (89),,GSI-Jpn,4301,4326,89,,8751,1998-12-14 00:00:00,,EPSG,,
-8352,Tokyo to WGS 84 (90),,GSI-Jpn,4301,4326,90,,8752,1998-12-14 00:00:00,,EPSG,,
-8353,Tokyo to WGS 84 (91),,GSI-Jpn,4301,4326,91,,8753,1998-12-14 00:00:00,,EPSG,,
-8354,Tokyo to WGS 84 (92),,GSI-Jpn,4301,4326,92,,8754,1998-12-14 00:00:00,,EPSG,,
-8355,Tokyo to WGS 84 (93),,GSI-Jpn,4301,4326,93,,8755,1998-12-14 00:00:00,,EPSG,,
-8356,Tokyo to WGS 84 (94),,GSI-Jpn,4301,4326,94,,8756,1998-12-14 00:00:00,,EPSG,,
-8357,Tokyo to WGS 84 (95),,GSI-Jpn,4301,4326,95,,8757,1998-12-14 00:00:00,,EPSG,,
-8358,Tokyo to WGS 84 (96),,GSI-Jpn,4301,4326,96,,8758,1998-12-14 00:00:00,,EPSG,,
-8359,Tokyo to WGS 84 (97),,GSI-Jpn,4301,4326,97,,8759,1998-12-14 00:00:00,,EPSG,,
-8360,Tokyo to WGS 84 (98),,GSI-Jpn,4301,4326,98,,8760,1998-12-14 00:00:00,,EPSG,,
-8361,Tokyo to WGS 84 (99),,GSI-Jpn,4301,4326,99,,8761,1998-12-14 00:00:00,,EPSG,,
-8362,Tokyo to WGS 84 (100),,GSI-Jpn 324132,4301,4326,100,,8762,1998-12-14 00:00:00,,EPSG,,
-8363,Tokyo to WGS 84 (101),,GSI-Jpn 324133,4301,4326,101,,8763,1998-12-14 00:00:00,,EPSG,,
-8364,Tokyo to WGS 84 (102),,GSI-Jpn 324134,4301,4326,102,,8764,1998-12-14 00:00:00,,EPSG,,
-8365,Tokyo to WGS 84 (103),,GSI-Jpn 320130,4301,4326,103,,8765,1998-12-14 00:00:00,,EPSG,,
-8366,Tokyo to WGS 84 (104),,GSI-Jpn 320131,4301,4326,104,,8766,1998-12-14 00:00:00,,EPSG,,
-8367,Tokyo to WGS 84 (105),,GSI-Jpn 320132,4301,4326,105,,8767,1998-12-14 00:00:00,,EPSG,,
-8368,Tokyo to WGS 84 (106),,GSI-Jpn 312130,4301,4326,106,,8768,1998-12-14 00:00:00,,EPSG,,
-8369,Tokyo to WGS 84 (107),,GSI-Jpn 312131,4301,4326,107,,8769,1998-12-14 00:00:00,,EPSG,,
-8370,Fahud to WGS 84 (2),,PDO-Omn,4232,4326,2,,8770,1999-04-22 00:00:00,,EPSG,,
-8371,PSD93 to WGS 84 (1),,PDO-Omn,4134,4326,1,,8771,1999-04-22 00:00:00,,EPSG,,
-8372,ED50 to WGS 84 (19),,HEL-Grc,4230,4326,19,,8772,1999-04-22 00:00:00,,EPSG,,
-8373,Antigua 1943 to WGS 84 (1),,DOS-Atg Ant,4601,4326,1,,8773,1999-04-22 00:00:00,,EPSG,,
-8374,Dominica 1945 to WGS 84 (1),,DOS-Dma,4602,4326,1,,8774,1999-04-22 00:00:00,,EPSG,,
-8375,Grenada 1953 to WGS 84 (1),,DOS-Grd,4603,4326,1,,8775,1999-04-22 00:00:00,,EPSG,,
-8376,Montserrat 1958 to WGS 84 (1),,DOS-Msr,4604,4326,1,,8776,1999-04-22 00:00:00,,EPSG,,
-8377,St. Kitts 1955 to WGS 84 (1),,DOS-Kna,4605,4326,1,,8777,1999-04-22 00:00:00,,EPSG,,
-8378,St. Lucia 1955 to WGS 84 (1),,DOS-Lca,4606,4326,1,,8778,1999-04-22 00:00:00,,EPSG,,
-8379,Anguilla 1957 to WGS 84 (1),,DOS-Aia,4600,4326,1,,8779,1999-04-22 00:00:00,,EPSG,,
-8380,RT90 to ETRF89 (1),,NLS-Swe,4124,4258,1,,8780,1999-04-22 00:00:00,,EPSG,,
-8384,ED50 to WGS 84 (20),,NMA-Nor 6265W,4230,4326,20,,8784,1999-04-22 00:00:00,,EPSG,,
-8385,Old Hawaiian to NAD83 (1),,NGS-Usa Hi,4135,4269,1,,8785,1999-05-24 00:00:00,,EPSG,,
-8386,Old Hawaiian to WGS 84 (1),,EPSG-US Hi,4135,4326,1,United States - Hawaii,8786,1999-05-24 00:00:00,,EPSG,For many purposes NAD83 can be assumed to be coincident with WGS 84.,
-8387,St. Lawrence Island to NAD83 (1),,NGS-Usa AK StL,4136,4269,1,,8787,1999-05-24 00:00:00,,EPSG,,
-8388,St. Lawrence Island to WGS 84 (1),,EPSG-US StL,4136,4326,1,United States - Alaska - St. Lawrence Island.,8788,1999-05-24 00:00:00,,EPSG,For many purposes NAD83 can be assumed to be coincident with WGS 84.,
-8389,St. Paul Island to NAD83 (1),,NGS-Usa AK StP,4137,4269,1,,8789,1999-05-24 00:00:00,,EPSG,,
-8390,St. Paul Island to WGS 84 (1),,EPSG-US StP,4137,4326,1,United States - Alaska - St. Paul Island.,8790,1999-05-24 00:00:00,,EPSG,For many purposes NAD83 can be assumed to be coincident with WGS 84.,
-8391,St. George Island to NAD83 (1),,NGS-Usa AK StG,4138,4269,1,,8791,1999-05-24 00:00:00,,EPSG,,
-8392,St. George Island to WGS 84 (1),,EPSG-USA StG,4138,4326,1,United States - Alaska - St. George Island.,8792,1999-05-24 00:00:00,,EPSG,For many purposes NAD83 can be assumed to be coincident with WGS 84.,
-8393,NAD27(CGQ77)  to NAD83 (1),,SGQ-Can QC,4609,4269,1,,8793,1999-05-24 00:00:00,,EPSG,,
-8394,NAD27(CGQ77) to WGS 84 (1),,EPSG-Can Qc,4609,4326,1,Canada - Quebec,8794,1999-05-24 00:00:00,,EPSG,For many purposes NAD83 can be assumed to be coincident with WGS 84.,
-8395,AGD66 to GDA94 (2),,Auslig-ACT 1m,4202,4283,2,,8795,1999-05-24 00:00:00,,EPSG,,
-8396,AGD66 to WGS 84 (3),,EPSG-Aus ACT 1m,4202,4326,3,Australia - ACT.,8796,1999-05-24 00:00:00,,EPSG,For many purposes GDA94 can be assumed to be coincident with WGS 84.,
-8397,AGD66 to GDA94 (3),,Auslig-Tas 1m,4202,4283,3,,8797,1999-05-24 00:00:00,,EPSG,,
-8398,AGD66 to WGS 84 (4),,EPSG-Aus Tas 1m,4202,4326,4,Australia - Tasmania.,8798,1999-05-24 00:00:00,,EPSG,For many purposes GDA94 can be assumed to be coincident with WGS 84.,
-8399,AGD66 to GDA94 (4),,Auslig-NSW Vic,4202,4283,4,,8799,1999-05-24 00:00:00,,EPSG,,
-8400,AGD66 to WGS 84 (5),,EPSG-Aus NSW Vic 1m,4202,4326,5,Australia - New South Wales (NSW) and Victoria.,8800,1999-05-24 00:00:00,,EPSG,For many purposes GDA94 can be assumed to be coincident with WGS 84.,
-8401,Puerto Rico to NAD83 (1),,NGS-PRVI,4139,4269,1,,8801,1999-05-24 00:00:00,,EPSG,,
-8402,Puerto Rico to WGS 84 (1),,EPSG-PRVI,4139,4326,1,Puerto Rico; Virgin Islands (U.S.); Virgin Islands (British).,8802,1999-05-24 00:00:00,,EPSG,For many purposes NAD83 can be assumed to be coincident with WGS 84.,
-8403,NAD27 to NAD83 (5),,SGQ-Can QC,4267,4269,5,,8803,1999-05-24 00:00:00,,EPSG,,
-8404,NAD27 to WGS 84 (27),,EPSG-Can QC,4267,4326,27,Canada - Quebec,8804,1999-05-24 00:00:00,,EPSG,For many purposes NAD83 can be assumed to be coincident with WGS 84.,
-8405,NAD27(76) to NAD83 (1),,SGQ-Can Ont,4608,4269,1,,8805,1999-05-24 00:00:00,,EPSG,,
-8406,NAD27(76) to WGS 84 (1),,EPSG-Can On,4608,4326,1,Canada - Ontario,8806,1999-05-24 00:00:00,,EPSG,For many purposes NAD83 can be assumed to be coincident with WGS 84.,
-8407,AGD66 to GDA94 (5),,OSG-Aus Vic,4202,4283,5,,8807,1999-05-24 00:00:00,,EPSG,,
-8408,AGD66 to WGS 84 (6),,EPSG-Aus Vic 0.1m,4202,4326,6,Australia - Victoria,8808,1999-05-24 00:00:00,,EPSG,For many purposes GDA94 can be assumed to be coincident with WGS 84.,
-8411,NGO 1948 (Oslo) to NGO 1948 (1),,NGO-Nor,4817,4273,1,,8811,1999-10-20 00:00:00,,EPSG,,
-8412,NTF (Paris) to NTF (2),,RGS,4807,4275,2,,8812,1999-10-20 00:00:00,,EPSG,,
-8413,Locodjo 1965 to WGS 84 (1),,IGN-Civ,4142,4326,1,,8813,1999-10-20 00:00:00,,EPSG,,
-8414,Abidjan 1987 to WGS 84 (1),,IGN-Civ,4143,4326,1,,8814,1999-10-20 00:00:00,,EPSG,,
-8415,MGI to WGS 84 (2),,BEV-Aut,4312,4326,1,,8815,1999-10-20 00:00:00,,EPSG,,
-8416,ATS 77 to NAD83(CSRS98) (1),,GIC-Can NB,4122,4140,1,,8816,1999-10-20 00:00:00,,EPSG,,
-8417,NAD83(CSRS98) to WGS 84 (1),,EPSG-Can,4140,4326,1,,8817,1999-10-20 00:00:00,,EPSG,,
-8418,ATS 77 to WGS 84 (1),,EPSG-Can NB,4122,4326,1,Canada - New Brunswick,8818,1999-10-20 00:00:00,EPSG,EPSG,For many purposes NAD83(CSRS) can be assumed to be coincident with WGS 84.,
-8419,NAD83 to NAD83(HARN) (1),,NGS-Usa AL,4269,4152,1,,8819,1999-10-20 00:00:00,,EPSG,,
-8420,NAD83 to NAD83(HARN) (2),,NGS-Usa AZ,4269,4152,2,,8820,1999-10-20 00:00:00,,EPSG,,
-8421,NAD83 to NAD83(HARN) (3),,NGS-Usa CA n,4269,4152,3,,8821,1999-10-20 00:00:00,,EPSG,,
-8422,NAD83 to NAD83(HARN) (4),,NGS-Usa CA s,4269,4152,4,,8822,1999-10-20 00:00:00,,EPSG,,
-8423,NAD83 to NAD83(HARN) (5),,NGS-Usa CO,4269,4152,5,,8823,1999-10-20 00:00:00,,EPSG,,
-8424,NAD83 to NAD83(HARN) (6),,NGS-Usa GA,4269,4152,6,,8824,1999-10-20 00:00:00,,EPSG,,
-8425,NAD83 to NAD83(HARN) (7),,NGS-Usa FL,4269,4152,7,,8825,1999-10-20 00:00:00,,EPSG,,
-8426,NAD83 to NAD83(HARN) (8),,NGS-Usa ID MT e,4269,4152,8,,8826,1999-10-20 00:00:00,,EPSG,,
-8427,NAD83 to NAD83(HARN) (9),,NGS-Usa ID MT w,4269,4152,9,,8827,1999-10-20 00:00:00,,EPSG,,
-8428,NAD83 to NAD83(HARN) (10),,NGS-Usa KY,4269,4152,10,,8828,1999-10-20 00:00:00,,EPSG,,
-8429,NAD83 to NAD83(HARN) (11),,NGS-Usa LA,4269,4152,11,,8829,1999-10-20 00:00:00,,EPSG,,
-8430,NAD83 to NAD83(HARN) (12),,NGS-Usa DE MD,4269,4152,12,,8830,1999-10-20 00:00:00,,EPSG,,
-8431,NAD83 to NAD83(HARN) (13),,NGS-Usa ME,4269,4152,13,,8831,1999-10-20 00:00:00,,EPSG,,
-8432,NAD83 to NAD83(HARN) (14),,NGS-Usa MI,4269,4152,14,,8832,1999-10-20 00:00:00,,EPSG,,
-8433,NAD83 to NAD83(HARN) (15),,NGS-Usa MS,4269,4152,15,,8833,1999-10-20 00:00:00,,EPSG,,
-8434,NAD83 to NAD83(HARN) (16),,NGS-Usa NE,4269,4152,16,,8834,1999-10-20 00:00:00,,EPSG,,
-8435,NAD83 to NAD83(HARN) (17),,NGS-US NewEng,4269,4152,17,,8835,1999-10-20 00:00:00,,EPSG,,
-8436,NAD83 to NAD83(HARN) (18),,NGS-Usa NM,4269,4152,18,,8836,1999-10-20 00:00:00,,EPSG,,
-8437,NAD83 to NAD83(HARN) (19),,NGS-Usa NY,4269,4152,19,,8837,1999-10-20 00:00:00,,EPSG,,
-8438,NAD83 to NAD83(HARN) (20),,NGS-Usa ND,4269,4152,20,,8838,1999-10-20 00:00:00,,EPSG,,
-8439,NAD83 to NAD83(HARN) (21),,NGS-Usa OK,4269,4152,21,,8839,1999-10-20 00:00:00,,EPSG,,
-8440,NAD83 to NAD83(HARN) (22),,NGS-PRVI,4269,4152,22,,8840,1999-10-20 00:00:00,,EPSG,,
-8441,NAD83 to NAD83(HARN) (23),,NGS-Usa SD,4269,4152,23,,8841,1999-10-20 00:00:00,,EPSG,,
-8442,NAD83 to NAD83(HARN) (24),,NGS-Usa TN,4269,4152,24,,8842,1999-10-20 00:00:00,,EPSG,,
-8443,NAD83 to NAD83(HARN) (25),,NGS-Usa TX e,4269,4152,25,,8843,1999-10-20 00:00:00,,EPSG,,
-8444,NAD83 to NAD83(HARN) (26),,NGS-Usa TX w,4269,4152,26,,8844,1999-10-20 00:00:00,,EPSG,,
-8445,NAD83 to NAD83(HARN) (27),,NGS-Usa VA,4269,4152,27,,8845,1999-10-20 00:00:00,,EPSG,,
-8446,NAD83 to NAD83(HARN) (28),,NGS-Usa OR WA,4269,4152,28,,8846,1999-10-20 00:00:00,,EPSG,,
-8447,NAD83 to NAD83(HARN) (29),,NGS-Usa WI,4269,4152,29,,8847,1999-10-20 00:00:00,,EPSG,,
-8448,NAD83 to NAD83(HARN) (30),,NGS-Usa WY,4269,4152,30,,8848,1999-10-20 00:00:00,,EPSG,,
-8449,Cape to Hartbeesthoek94 (1),,DSM-Zaf,4222,4148,1,,8849,1999-10-20 00:00:00,,EPSG,,
-8450,Hartbeesthoek94 to WGS 84 (1),,EPSG-Zaf,4148,4326,1,,8850,1999-10-20 00:00:00,,EPSG,For many purposes Hartbeesthoek94 can be assumed to be coincident with WGS 84.,
-8451,AGD66 to GDA94 (6),,Auslig-Tas,4202,4283,6,,8851,1999-10-20 00:00:00,,EPSG,,
-8452,AGD66 to GDA94 (7),,Auslig-NT,4202,4283,7,,8852,1999-10-20 00:00:00,,EPSG,,
-8453,AGD66 to WGS 84 (7),,EPSG-Aus Tas 0.1m,4202,4326,7,Australia - Tasmania.,8853,1999-10-20 00:00:00,,EPSG,For many purposes GDA94 can be assumed to be coincident with WGS 84.,
-8454,AGD66 to WGS 84 (8),,EPSG-Aus NT 0.1m,4202,4326,8,Australia - Northern Territory.,8854,1999-10-20 00:00:00,,EPSG,For many purposes GDA94 can be assumed to be coincident with WGS 84.,
-8455,CH1903 to WGS 84 (1),,BfL-CH 1,4149,4326,1,,8855,1999-10-20 00:00:00,,EPSG,,
-8456,CH1903+ to CHTRF95 (1),,BfL-CH,4150,4151,1,,8856,1999-10-20 00:00:00,,EPSG,,
-8457,CH1903+ to WGS 84 (1),,EPSG-CH,4150,4326,1,Liechtenstein;  Switzerland.,8857,1999-10-20 00:00:00,EPSG,EPSG,For many purposes CHTRF95 can be assumed to be coincident with WGS 84.,
-8458,CH1903 to WGS 84 (2),,BfL-CH 2,4149,4326,2,,8858,1999-10-20 00:00:00,,EPSG,,
-8459,CHTRF95 to WGS 84 (1),,EPSG-CH,4151,4326,1,,8859,1999-10-20 00:00:00,,EPSG,,
-8460,NAD27 to NAD83(HARN) (1),,NGS-Usa AL,4267,4152,1,United States (USA) - Alabama.,8860,1999-10-20 00:00:00,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,,
-8461,NAD27 to NAD83(HARN) (2),,NGS-Usa AZ,4267,4152,2,United States (USA) - Arizona.,8861,1999-10-20 00:00:00,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,,
-8462,NAD27 to NAD83(HARN) (3),,NGS-Usa CA n,4267,4152,3,United States (USA) - California north of 38 deg N.,8862,1999-10-20 00:00:00,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,,
-8463,NAD27 to NAD83(HARN) (4),,NGS-Usa CA s,4267,4152,4,United States (USA) - California south of 38 deg N.,8863,1999-10-20 00:00:00,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,,
-8464,NAD27 to NAD83(HARN) (5),,NGS-Usa CO,4267,4152,5,United States (USA) - Colorado.,8864,1999-10-20 00:00:00,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,,
-8465,NAD27 to NAD83(HARN) (6),,NGS-Usa GA,4267,4152,6,United States (USA) - Georgia.,8865,1999-10-20 00:00:00,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,,
-8466,NAD27 to NAD83(HARN) (7),,NGS-Usa FL,4267,4152,7,United States (USA) - Florida.,8866,1999-10-20 00:00:00,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,,
-8467,NAD27 to NAD83(HARN) (8),,NGS-Usa ID MT e,4267,4152,8,United States (USA) - Idaho and Montana - east of 113 deg W.,8867,1999-10-20 00:00:00,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,,
-8468,NAD27 to NAD83(HARN) (9),,NGS-Usa ID MT w,4267,4152,9,United States (USA) - Idaho and Montana - west of 113 deg W.,8868,1999-10-20 00:00:00,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,,
-8469,NAD27 to NAD83(HARN) (10),,NGS-Usa KY,4267,4152,10,United States (USA) - Kentucky.,8869,1999-10-20 00:00:00,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,,
-8470,NAD27 to NAD83(HARN) (11),,NGS-Usa LA,4267,4152,11,United States (USA) - Louisiana.,8870,1999-10-20 00:00:00,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,,
-8471,NAD27 to NAD83(HARN) (12),,NGS-Usa DE MD,4267,4152,12,United States (USA) - Delaware and Maryland.,8871,1999-10-20 00:00:00,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,,
-8472,NAD27 to NAD83(HARN) (13),,NGS-Usa ME,4267,4152,13,United States (USA) - Maine.,8872,1999-10-20 00:00:00,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,,
-8473,NAD27 to NAD83(HARN) (14),,NGS-Usa MI,4267,4152,14,United States (USA) - Michigan.,8873,1999-10-20 00:00:00,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,,
-8474,NAD27 to NAD83(HARN) (15),,NGS-Usa MS,4267,4152,15,United States (USA) - Mississippi.,8874,1999-10-20 00:00:00,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,,
-8475,NAD27 to NAD83(HARN) (16),,NGS-Usa NE,4267,4152,16,United States (USA) - Nebraska.,8875,1999-10-20 00:00:00,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,,
-8476,NAD27 to NAD83(HARN) (17),,NGS-US NewEng,4267,4152,18,United States (USA) - Connecticut; Massachusetts; New Hampshire; Rhode Island; Vermont.,8876,1999-10-20 00:00:00,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,,
-8477,NAD27 to NAD83(HARN) (18),,NGS-Usa NM,4267,4152,18,United States (USA) - New Mexico.,8877,1999-10-20 00:00:00,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,,
-8478,NAD27 to NAD83(HARN) (19),,NGS-Usa NY,4267,4152,19,United States (USA) - New York.,8878,1999-10-20 00:00:00,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,,
-8479,NAD27 to NAD83(HARN) (20),,NGS-Usa ND,4267,4152,20,United States (USA) - North Dakota.,8879,1999-10-20 00:00:00,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,,
-8480,NAD27 to NAD83(HARN) (21),,NGS-Usa OK,4267,4152,21,United States (USA) - Oklahoma.,8880,1999-10-20 00:00:00,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,,
-8481,Puerto Rico to NAD83(HARN) (1),,NGS-PRVI,4139,4152,1,United States (USA) - Puerto Rico and the Virgin Islands.,8881,1999-10-20 00:00:00,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,,
-8482,NAD27 to NAD83(HARN) (22),,NGS-Usa SD,4267,4152,22,United States (USA) - South Dakota.,8882,1999-10-20 00:00:00,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,,
-8483,NAD27 to NAD83(HARN) (23),,NGS-Usa TN,4267,4152,23,United States (USA) - Tennessee,8883,1999-10-20 00:00:00,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,,
-8484,NAD27 to NAD83(HARN) (24),,NGS-Usa TX e,4267,4152,24,United States (USA) - Texas east of 100deg West.,8884,1999-10-20 00:00:00,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,,
-8485,NAD27 to NAD83(HARN) (25),,NGS-Usa TX w,4267,4152,25,United States (USA) - Texas west of 100deg West.,8885,1999-10-20 00:00:00,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,,
-8486,NAD27 to NAD83(HARN) (26),,NGS-Usa VA,4267,4152,26,United States (USA) - Virginia.,8886,1999-10-20 00:00:00,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,,
-8487,NAD27 to NAD83(HARN) (27),,NGS-Usa OR WA,4267,4152,27,United States (USA) - Oregan; Washington.,8887,1999-10-20 00:00:00,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,,
-8488,NAD27 to NAD83(HARN) (28),,NGS-Usa WI,4267,4152,28,United States (USA) - Wisconsin.,8888,1999-10-20 00:00:00,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,,
-8489,NAD27 to NAD83(HARN) (29),,NGS-Usa WY,4267,4152,29,United States (USA) - Wyoming.,8889,1999-10-20 00:00:00,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,,
-8490,Rassadiran to WGS 84 (1),,TOT-Taheri,4153,4326,1,Iran - Taheri refinery site.,8890,1999-10-20 00:00:00,Total-Fina,EPSG,,
-8491,FD58 to WGS 84 (1),,TOT-Kangan,4132,4326,1,Iran - Kangan district,8891,1999-10-20 00:00:00,Total-Fina,EPSG,,
-8492,ED50(ED77) to WGS 84 (1),,NCCI-Irn,4154,4326,1,Iran,8892,1999-10-20 00:00:00,National Cartographic Centre of Iran,EPSG,,
-8493,NAD83 to WGS 84 (4),,NGS-Usa,4269,4326,4,United States (USA).,8893,1999-11-05 00:00:00,,EPSG,,
-8494,NAD83 to WGS 84 (5),,NGS-Usa,4269,4326,5,United States (USA).,8894,1999-11-05 00:00:00,,EPSG,,
-8495,La Canoa to WGS 84 (1),,LAG-Ven E,4247,4326,1,,8895,1999-11-05 00:00:00,,EPSG,,
-8496,NAD27 to WGS 84 (28),,NGS-Usa conus,4267,4326,28,United States (USA) - lower 48 states including EEZ.,8896,1999-10-20 00:00:00,,EPSG,For many purposes NAD83 can be assumed to be coincident with WGS 84.,
-8497,NAD27 to WGS 84 (29),,NGS-Usa AK,4267,4326,29,United States (USA) - Alaska including EEZ.,8897,1999-10-20 00:00:00,,EPSG,For many purposes NAD83 can be assumed to be coincident with WGS 84.,
diff --git a/src/tiff/csv/horiz_cs.c b/src/tiff/csv/horiz_cs.c
deleted file mode 100644
index 4cd5c80..0000000
--- a/src/tiff/csv/horiz_cs.c
+++ /dev/null
@@ -1,1496 +0,0 @@
-#include "defs.h"
-datafile_rows_t horiz_cs_row_1[] = {"HORIZCS_CODE","HORIZCS_EPSG_NAME","HORIZCS_EPSG_ABBR","HORIZCS_USER_NAME","DESCRIPTION","AREA_OF_USE","COORD_SYS_TYPE","GEOD_DATUM_CODE","PRIME_MERIDIAN_CODE","ORIENT_POSITIVE_AXIS_1","ORIENT_POSITIVE_AXIS_2","COORD_SYS_AXIS_1_ABBR","COORD_SYS_AXIS_2_ABBR","UOM_LENGTH_CODE","UOM_ANGLE_CODE","SOURCE_GEOGCS_CODE","PROJECTION_TRF_CODE","REVISION_DATE","INFORMATION_SOURCE","DATA_SOURCE","REMARKS","CHANGE_ID",NULL};
-datafile_rows_t horiz_cs_row_2[] = {"200","Anguilla 1957 / British West Indies Grid","Anguilla 1957 / BWI Grid","","","Anguilla","projected 2D","","","East","North","E","N","9001","","4600","19942","1999-04-22 00:00:00","Ordnance Survey of Great Britain","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_3[] = {"201","Antigua 1943 / British West Indies Grid","Antigua 1943 / BWI Grid","","","Antigua and Barbuda - Antigua","projected 2D","","","East","North","E","N","9001","","4601","19942","1999-04-22 00:00:00","Ordnance Survey of Great Britain","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_4[] = {"202","Dominica 1945 / British West Indies Grid","Dominica 1945 / BWI Grid","","","Dominica","projected 2D","","","East","North","E","N","9001","","4602","19942","1999-04-22 00:00:00","Ordnance Survey of Great Britain","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_5[] = {"203","Grenada 1953 / British West Indies Grid","Grenada 1953 / BWI Grid","","","Grenada (including Grenada Grenadines)","projected 2D","","","East","North","E","N","9001","","4603","19942","1999-04-22 00:00:00","Ordnance Survey of Great Britain","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_6[] = {"204","Montserrat 58 / British West Indies Grid","Montserrat 58 / BWI Grid","","","Montserrat","projected 2D","","","East","North","E","N","9001","","4604","19942","1999-04-22 00:00:00","Ordnance Survey of Great Britain","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_7[] = {"205","St Kitts 1955 / British West Indies Grid","St Kitts 1955 / BWI Grid","","","Saint Kitts and Nevis","projected 2D","","","East","North","E","N","9001","","4605","19942","1999-04-22 00:00:00","Ordnance Survey of Great Britain","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_8[] = {"206","St Lucia 1955 / British West Indies Grid","St Lucia 1955 / BWI Grid","","","Saint Lucia","projected 2D","","","East","North","E","N","9001","","4606","19942","1999-04-22 00:00:00","Ordnance Survey of Great Britain","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_9[] = {"207","St Vincent 45 / British West Indies Grid","St Vincent 45 / BWI Grid","","","Saint Vincent and the Grenadines","projected 2D","","","East","North","E","N","9001","","4607","19942","1999-04-22 00:00:00","Ordnance Survey of Great Britain","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_10[] = {"208","NAD27(CGQ77) / SCoPQ zone 2","CGQ77 / SCoPQ zone 2","","","Canada - Quebec - east of 57 deg East.","projected 2D","","","East","North","X","Y","9001","","4609","17700","1999-07-24 00:00:00","Geodetic Service of Quebec; Quebec Ministry of Natural Resources.","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_11[] = {"209","NAD27(CGQ77) / SCoPQ zone 3","CGQ77 / SCoPQ zone 3","","","Canada - Quebec between 60 deg and 57 deg West.","projected 2D","","","East","North","X","Y","9001","","4609","17703","1999-07-24 00:00:00","Geodetic Service of Quebec; Quebec Ministry of Natural Resources.","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_12[] = {"210","NAD27(CGQ77) / SCoPQ zone 4","CGQ77 / SCoPQ zone 4","","","Canada - Quebec between 63 deg and 60 deg West.","projected 2D","","","East","North","X","Y","9001","","4609","17704","1999-07-24 00:00:00","Geodetic Service of Quebec; Quebec Ministry of Natural Resources.","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_13[] = {"211","NAD27(CGQ77) / SCoPQ zone 5","CGQ77 / SCoPQ zone 5","","","Canada - Quebec between 66 deg and 63 deg West.","projected 2D","","","East","North","X","Y","9001","","4609","17705","1999-07-24 00:00:00","Geodetic Service of Quebec; Quebec Ministry of Natural Resources.","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_14[] = {"212","NAD27(CGQ77) / SCoPQ zone 6","CGQ77 / SCoPQ zone 6","","","Canada - Quebec between 69 deg and  66 deg West.","projected 2D","","","East","North","X","Y","9001","","4609","17706","1999-07-24 00:00:00","Geodetic Service of Quebec; Quebec Ministry of Natural Resources.","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_15[] = {"213","NAD27(CGQ77) / SCoPQ zone 7","CGQ77 / SCoPQ zone 7","","","Canada - Quebec between 72 deg and 69 deg West.","projected 2D","","","East","North","X","Y","9001","","4609","17707","1999-07-24 00:00:00","Geodetic Service of Quebec; Quebec Ministry of Natural Resources.","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_16[] = {"214","NAD27(CGQ77) / SCoPQ zone 8","CGQ77 / SCoPQ zone 8","","","Canada - Quebec between 75 deg and 72 deg West.","projected 2D","","","East","North","X","Y","9001","","4609","17708","1999-07-24 00:00:00","Geodetic Service of Quebec; Quebec Ministry of Natural Resources.","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_17[] = {"215","NAD27(CGQ77) / SCoPQ zone 9","CGQ77 / SCoPQ zone 9","","","Canada - Quebec between 78 deg and 75 deg West.","projected 2D","","","East","North","X","Y","9001","","4609","17709","1999-07-24 00:00:00","Geodetic Service of Quebec; Quebec Ministry of Natural Resources.","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_18[] = {"216","NAD27(CGQ77) / SCoPQ zone 10","CGQ77 / SCoPQ zone 10","","","Canada - Quebec west of 78 deg West.","projected 2D","","","East","North","X","Y","9001","","4609","17710","1999-07-24 00:00:00","Geodetic Service of Quebec; Quebec Ministry of Natural Resources.","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_19[] = {"217","NAD27(76) / MTM zone 8","","","","Canada - Ontario - east of 75 deg West.","projected 2D","","","East","North","X","Y","9001","","4608","17708","1999-07-24 00:00:00","Surveys and Mapping Section; Ontario Ministry of Transportation.","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_20[] = {"218","NAD27(76) / MTM zone 9","","","","Canada - Ontario - between 78 deg and 75 deg West.","projected 2D","","","East","North","X","Y","9001","","4608","17709","1999-07-24 00:00:00","Surveys and Mapping Section; Ontario Ministry of Transportation.","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_21[] = {"219","NAD27(76) / MTM zone 10","","","","Canada - Ontario - between 79 deg 30 min and 78 deg W in area to north of 47 deg N; between 80 deg 15 min and 78 deg W in area between 46 deg and 47 deg N; between 81 deg and 78 deg W in area south of 46 deg N.","projected 2D","","","East","North","X","Y","9001","","4608","17710","1999-07-24 00:00:00","Surveys and Mapping Section; Ontario Ministry of Transportation.","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_22[] = {"220","NAD27(76) / MTM zone 11","","","","Canada - Ontario - south of 46 deg N and west of 81 deg West.","projected 2D","","","East","North","E","N","9001","","4608","17711","1999-07-24 00:00:00","Surveys and Mapping Section; Ontario Ministry of Transportation.","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_23[] = {"221","NAD27(76) / MTM zone 12","","","","Canada - Ontario - between 82 deg 30 min and 79 deg 30 min W in area to north of 47 deg N; between 82 deg 30 min and 80 deg 15 min W in area between 46 deg and 47 deg N; between 82 deg 30 min and 79 deg 30 min W in area north of 47 deg N.","projected 2D","","","East","North","E","N","9001","","4608","17712","1999-07-24 00:00:00","Surveys and Mapping Section; Ontario Ministry of Transportation.","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_24[] = {"222","NAD27(76) / MTM zone 13","","","","Canada - Ontario - between 85 deg 30 min and 82 deg 30 min West and north of 46 deg North.","projected 2D","","","East","North","E","N","9001","","4608","17713","1999-07-24 00:00:00","Surveys and Mapping Section; Ontario Ministry of Transportation.","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_25[] = {"223","NAD27(76) / MTM zone 14","","","","Canada - Ontario - between 88 deg 30 min and 85 deg 30 min West.","projected 2D","","","East","North","E","N","9001","","4608","17714","1999-07-24 00:00:00","Surveys and Mapping Section; Ontario Ministry of Transportation.","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_26[] = {"224","NAD27(76) / MTM zone 15","","","","Canada - Ontario - between 91 deg 30 min and 88 deg 30 min West.","projected 2D","","","East","North","E","N","9001","","4608","17715","1999-07-24 00:00:00","Surveys and Mapping Section; Ontario Ministry of Transportation.","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_27[] = {"225","NAD27(76) / MTM zone 16","","","","Canada - Ontario - between 94 deg 30 min and 91 deg 30 min West.","projected 2D","","","East","North","E","N","9001","","4608","17716","1999-07-24 00:00:00","Surveys and Mapping Section; Ontario Ministry of Transportation.","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_28[] = {"226","NAD27(76) / MTM zone 17","","","","Canada - Ontario - west of 94 deg 30 min West.","projected 2D","","","East","North","E","N","9001","","4608","17717","1999-07-24 00:00:00","Surveys and Mapping Section; Ontario Ministry of Transportation.","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_29[] = {"227","NAD27(76) / UTM zone 15N","","","","Canada - Ontario - 96deg West  to 90deg West.","projected 2D","","","East","North","E","N","9001","","4608","16015","1999-07-24 00:00:00","","EPSG","Supersedes NAD27 / UTM zone 15N (code 26715).","",NULL};
-datafile_rows_t horiz_cs_row_30[] = {"228","NAD27(76) / UTM zone 16N","","","","Canada - Ontario - 90deg West  to 84deg West.","projected 2D","","","East","North","E","N","9001","","4608","16016","1999-07-24 00:00:00","","EPSG","Supersedes NAD27 / UTM zone 16N (code 26716).","",NULL};
-datafile_rows_t horiz_cs_row_31[] = {"229","NAD27(76) / UTM zone 17N","","","","Canada - Ontario - 84deg West  to 78deg West.","projected 2D","","","East","North","E","N","9001","","4608","16017","1999-07-24 00:00:00","","EPSG","Supersedes NAD27 / UTM zone 17N (code 26717).","",NULL};
-datafile_rows_t horiz_cs_row_32[] = {"230","NAD27(76) / UTM zone 18N","","","","Canada - Ontario - east of 78 deg West.","projected 2D","","","East","North","E","N","9001","","4608","16018","1999-07-24 00:00:00","","EPSG","Supersedes NAD27 / UTM zone 18N (code 26718).","",NULL};
-datafile_rows_t horiz_cs_row_33[] = {"231","NAD27(CGQ77) / UTM zone 17N","CGQ77 / UTM zone 17N","","","Canada - Quebec - west of 78 deg West.","projected 2D","","","East","North","E","N","9001","","4609","16017","1999-07-24 00:00:00","","EPSG","Supersedes NAD27 / UTM zone 17N (code 26717).","",NULL};
-datafile_rows_t horiz_cs_row_34[] = {"232","NAD27(CGQ77) / UTM zone 18N","CGQ77 / UTM zone 18N","","","Canada - Quebec -78deg West  to 72deg West.","projected 2D","","","East","North","E","N","9001","","4609","16018","1999-07-24 00:00:00","","EPSG","Supersedes NAD27 / UTM zone 18N (code 26718).","",NULL};
-datafile_rows_t horiz_cs_row_35[] = {"233","NAD27(CGQ77) / UTM zone 19N","CGQ77 / UTM zone 19N","","","Canada - Quebec - 72deg West  to 66deg West.","projected 2D","","","East","North","E","N","9001","","4609","16019","1999-07-24 00:00:00","","EPSG","Supersedes NAD27 / UTM zone 19N (code 26719).","",NULL};
-datafile_rows_t horiz_cs_row_36[] = {"234","NAD27(CGQ77) / UTM zone 20N","CGQ77 / UTM zone 20N","","","Canada - Quebec - 66deg West  to 60deg West.","projected 2D","","","East","North","E","N","9001","","4609","16020","1999-07-24 00:00:00","","EPSG","Supersedes NAD27 / UTM zone 20N (code 26720).","",NULL};
-datafile_rows_t horiz_cs_row_37[] = {"235","NAD27(CGQ77) / UTM zone 21N","CGQ77 / UTM zone 21N","","","Canada - Quebec - east of 60deg West.","projected 2D","","","East","North","E","N","9001","","4609","16021","1999-07-24 00:00:00","","EPSG","Supersedes NAD27 / UTM zone 21N (code 26721).","",NULL};
-datafile_rows_t horiz_cs_row_38[] = {"236","NAD83(CSRS98) / New Brunswick Stereo","NAD83(98) / NB Stereo","","","Canada - New Brunswick","projected 2D","","","North","East","N","E","9001","","4140","19946","1999-10-20 00:00:00","Service New Brunswick Land and Information Standards Manual","EPSG","In use from 1999.","",NULL};
-datafile_rows_t horiz_cs_row_39[] = {"237","NAD83(CSRS98) / UTM zone 19N","NAD83(98) / UTM 19N","","","Canada - New Brunswick west of 66 deg West.","projected 2D","","","East","North","E","N","9001","","4140","16019","1999-10-20 00:00:00","Service New Brunswick Land and Information Standards Manual","EPSG","In use from 1999.","",NULL};
-datafile_rows_t horiz_cs_row_40[] = {"238","NAD83(CSRS98) / UTM zone 20N","NAD83(98) / UTM 20N","","","Canada - New Brunswick east of 66 deg West.","projected 2D","","","East","North","E","N","9001","","4140","16020","1999-10-20 00:00:00","Service New Brunswick Land and Information Standards Manual","EPSG","In use from 1999.","",NULL};
-datafile_rows_t horiz_cs_row_41[] = {"239","Israel / Israeli TM Grid","Israeli TM Grid","","","Israel.","projected 2D","","","East","North","E","N","9001","","4141","18204","1999-10-20 00:00:00","Survey of Israel.","EPSG","Supercedes Israeli CS Grid (EPSG code 28193).","",NULL};
-datafile_rows_t horiz_cs_row_42[] = {"240","Locodjo 1965 / UTM zone 30N","Locodjo 65 / UTM 30N","","","Cote D'Ivoire (Ivory Coast) east of 6 deg West.","projected 2D","","","East","North","E","N","9001","","4142","16030","1999-10-20 00:00:00","IGN Paris","EPSG","Superseded by Abidjan 87 / UTM 30N (EPSG code 241).","",NULL};
-datafile_rows_t horiz_cs_row_43[] = {"241","Abidjan 1987 / UTM zone 30N","Abidjan 87 / UTM 30N","","","Cote D'Ivoire (Ivory Coast) east of 6 deg West.","projected 2D","","","East","North","E","N","9001","","4143","16030","1999-10-20 00:00:00","IGN Paris","EPSG","Supersedes Locodjo 65 / UTM 30N (EPSG code 240).","",NULL};
-datafile_rows_t horiz_cs_row_44[] = {"242","Locodjo 1965 / UTM zone 29N","Locodjo 65 / UTM 29N","","","Cote D'Ivoire (Ivory Coast) west of 6 deg West.","projected 2D","","","East","North","E","N","9001","","4142","16029","1999-10-20 00:00:00","IGN Paris","EPSG","Superseded by Abidjan 87 / UTM 29N (EPSG code 243).","",NULL};
-datafile_rows_t horiz_cs_row_45[] = {"243","Abidjan 1987 / UTM zone 29N","Abidjan 87 / UTM 29N","","","Cote D'Ivoire (Ivory Coast) west of 6 deg West.","projected 2D","","","East","North","E","N","9001","","4143","16029","1999-10-20 00:00:00","IGN Paris","EPSG","Supersedes Locodjo 65 / UTM 29N (EPSG code 242).","",NULL};
-datafile_rows_t horiz_cs_row_46[] = {"244","Hanoi 1972 / Gauss-Kruger zone 18","Hanoi 72 / Gauss zone 18","","","Vietnam - west of 108 deg East.","projected 2D","","","North","East","X","Y","9001","","4147","16218","1999-10-20 00:00:00","","EPSG","Replaces use of Indian 1960 / UTM zone 48 after 1988.","",NULL};
-datafile_rows_t horiz_cs_row_47[] = {"245","Hanoi 1972 / Gauss-Kruger zone 19","Hanoi 72 / Gauss zone 19","","","Vietnam - east of 108 deg East.","projected 2D","","","North","East","X","Y","9001","","4147","16219","1999-10-20 00:00:00","","EPSG","Replaces use of Indian 1960 / UTM zone 48 after 1988.","",NULL};
-datafile_rows_t horiz_cs_row_48[] = {"246","Hartbeesthoek94 / Lo15","New S African CS zone 15","","","South Africa - Walvis Bay.","projected 2D","","","West","South","W","S","9001","","4148","17515","1999-10-20 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_49[] = {"247","Hartbeesthoek94 / Lo17","New S African CS zone 17","","","South Africa - west of 18 deg East.","projected 2D","","","West","South","W","S","9001","","4148","17517","1999-10-20 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_50[] = {"248","Hartbeesthoek94 / Lo19","New S African CS zone 19","","","South Africa - 18 to 20 deg East.","projected 2D","","","West","South","W","S","9001","","4148","17519","1999-10-20 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_51[] = {"249","Hartbeesthoek94 / Lo21","New S African CS zone 21","","","South Africa - 20 to 22 deg East.","projected 2D","","","West","South","W","S","9001","","4148","17521","1999-10-20 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_52[] = {"250","Hartbeesthoek94 / Lo23","New S African CS zone 23","","","South Africa - 22 to 24 deg East.","projected 2D","","","West","South","W","S","9001","","4148","17523","1999-10-20 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_53[] = {"251","Hartbeesthoek94 / Lo25","New S African CS zone 25","","","Lestho  - west of 26 deg East; South Africa - 24 to 26 deg East.","projected 2D","","","West","South","W","S","9001","","4148","17525","1999-10-20 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_54[] = {"252","Hartbeesthoek94 / Lo27","New S African CS zone 27","","","Lestho  - east of 26 deg East;  South Africa - 26 to 28 deg East.","projected 2D","","","West","South","W","S","9001","","4148","17527","1999-10-20 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_55[] = {"253","Hartbeesthoek94 / Lo29","New S African CS zone 29","","","South Africa - 28 to 30 deg East.","projected 2D","","","West","South","W","S","9001","","4148","17529","1999-10-20 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_56[] = {"254","Hartbeesthoek94 / Lo31","New S African CS zone 31","","","South Africa - 30 to 32 deg East;  Swaziland.","projected 2D","","","West","South","W","S","9001","","4148","17533","1999-10-20 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_57[] = {"255","Hartbeesthoek94 / Lo33","New S African CS zone 33","","","South Africa - east of 32 deg East.","projected 2D","","","West","South","W","S","9001","","4148","17533","1999-10-20 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_58[] = {"256","CH1903+ / LV95","LV95","","","Liechtenstein; Switzerland.","projected 2D","","","East","North","Y","X","9001","","4150","19950","1999-10-20 00:00:00","","EPSG","Supersedes CH1903/LV03 (code 21781).","",NULL};
-datafile_rows_t horiz_cs_row_59[] = {"257","Rassadiran / Nakhl e Taqi","","","","Iran - Taheri refinery site only.","projected 2D","","","East","North","E","N","9001","","4153","19951","1999-10-20 00:00:00","Total-Fina","EPSG","Used for terminal site only.","",NULL};
-datafile_rows_t horiz_cs_row_60[] = {"258","ED50(ED77) / UTM zone 38N","","","","Iran - west of 48deg East.","projected 2D","","","East","North","E","N","9001","","4154","16038","1999-10-20 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_61[] = {"259","ED50(ED77) / UTM zone 39N","","","","Iran - 48deg to 54 deg East.","projected 2D","","","East","North","E","N","9001","","4154","16039","1999-10-20 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_62[] = {"260","ED50(ED77) / UTM zone 40N","","","","Iran - 54deg to 60 deg East.","projected 2D","","","East","North","E","N","9001","","4154","16040","1999-10-20 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_63[] = {"261","ED50(ED77) / UTM zone 41N","","","","Iran - east of 60deg East.","projected 2D","","","East","North","E","N","9001","","4154","16041","1999-10-20 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_64[] = {"300","Madrid 1870 (Madrid) / Spain","","","","Spain","projected 2D","","","East","North","X","Y","9001","","4903","19921","1998-11-11 00:00:00","","EPSG","Superseded by ED50 / UTM after 1966.","",NULL};
-datafile_rows_t horiz_cs_row_65[] = {"2100","GGRS87 / Greek Grid","","","","Greece","projected 2D","","","East","North","E","N","9001","","4121","19930","1997-06-16 00:00:00","Geodesy Department; Public Petroleum Corporation of Greece.","EPSG","Oil industry uses ED50 / UTM zone 34N and ED50 / UTM zone 35N.","",NULL};
-datafile_rows_t horiz_cs_row_66[] = {"2200","ATS77 / New Brunswick Stereographic","ATS77 / NB Stereographic","","","Canada - New Brunswick","projected 2D","","","North","East","N","E","9001","","4122","19945","1999-10-20 00:00:00","New Brunswick Geographic Information Corporation land and water information standards manual.","EPSG","In use from 1979.  To be phased out in late 1990's.","99.61",NULL};
-datafile_rows_t horiz_cs_row_67[] = {"2219","ATS77 / UTM zone 19N","","","","Canada - New Brunswick - west of 66 deg W.","projected 2D","","","East","North","E","N","9001","","4122","16019","1997-07-22 00:00:00","New Brunswick Geographic Information Corporation land and water information standards manual.","EPSG","In use from 1979.  To be phased out in late 1990's.","",NULL};
-datafile_rows_t horiz_cs_row_68[] = {"2220","ATS77 / UTM zone 20N","","","","Canada - New Brunswick - east of 66 deg W.; Canada - Nova Scotia; Canada - Prince Edward Island.","projected 2D","","","East","North","E","N","9001","","4122","16020","1997-07-22 00:00:00","New Brunswick Geographic Information Corporation land and water information standards manual.","EPSG","In use from 1979.  To be phased out in late 1990's.","",NULL};
-datafile_rows_t horiz_cs_row_69[] = {"2290","ATS77 / Prince Edward Isl. Stereographic","ATS77 / PEI Stereo","","","Canada - Prince Edward Island","projected 2D","","","East","North","E(X)","N(Y)","9001","","4122","19933","1997-11-13 00:00:00","Geomatics Centre; Nova Scotia Ministry of Housing and Municipal Affairs.","EPSG","In use from 1979.  To be phased out in late 1990's.","",NULL};
-datafile_rows_t horiz_cs_row_70[] = {"2294","ATS77 / MTM Nova Scotia zone 4","ATS77 / MTM NS zone 4","","","Canada - Nova Scotia - east of 63 deg West.","projected 2D","","","East","North","E","N","9001","","4122","17794","1997-11-13 00:00:00","Geomatics Centre; Nova Scotia Ministry of Housing and Municipal Affairs.","EPSG","In use from 1979.  To be phased out in late 1990's.","",NULL};
-datafile_rows_t horiz_cs_row_71[] = {"2295","ATS77 / MTM Nova Scotia zone 5","ATS77 / MTM NS zone 5","","","Canada - Nova Scotia - west of 63 deg West.","projected 2D","","","East","North","E","N","9001","","4122","17795","1997-11-13 00:00:00","Geomatics Centre; Nova Scotia Ministry of Housing and Municipal Affairs.","EPSG","In use from 1979.  To be phased out in late 1990's.","",NULL};
-datafile_rows_t horiz_cs_row_72[] = {"2391","KKJ / Finland zone 1","","","","Finland - west of 22deg 30min E.","projected 2D","","","North","East","X","Y","9001","","4123","18191","1997-07-22 00:00:00","www.nls.fi/maa/papers/kkj.html","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_73[] = {"2392","KKJ / Finland zone 2","","","","Finland - 22deg 30 min to 25deg 30min E.","projected 2D","","","North","East","X","Y","9001","","4123","18192","1997-07-22 00:00:00","www.nls.fi/maa/papers/kkj.html","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_74[] = {"2393","KKJ / Finland Uniform Coordinate System","KKJ / Finland zone 3","","","Finland; Finland - 25 deg 30min E to 28deg 30min E.","projected 2D","","","North","East","X","Y","9001","","4123","18193","1997-07-22 00:00:00","www.nls.fi/maa/papers/kkj.html","EPSG","Known as Uniform Coordinate System when used over all country and also as Basic Coordinate System zone 3 at larger scales.","",NULL};
-datafile_rows_t horiz_cs_row_75[] = {"2394","KKJ / Finland zone 4","","","","Finland - east of 28deg 30 min E.","projected 2D","","","North","East","X","Y","9001","","4123","18194","1997-07-22 00:00:00","www.nls.fi/maa/papers/kkj.html","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_76[] = {"2400","RT90 2.5 gon W","","","","Sweden","projected 2D","","","North","East","X","Y","9001","","4124","19929","1997-11-13 00:00:00","National Land Survey of Sweden","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_77[] = {"2550","Samboja / UTM zone 50S","","","","Indonesia - east Kalimantan - Mahakam delta area.","projected 2D","","","East","North","E","N","9001","","4125","16150","1997-11-13 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_78[] = {"2600","Lietuvos Koordinoei Sistema 1994","LKS94","","","Lithuania","projected 2D","","","North","East","X","Y","9001","","4126","19934","1998-03-12 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_79[] = {"2736","Tete / UTM zone 36S","","","","Mozambique - west of 36 deg E.","projected 2D","","","East","North","E","N","9001","","4127","16136","1998-04-16 00:00:00","Direc��o Nacional de Geografia e Cadastral (DINAGECA).","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_80[] = {"2737","Tete / UTM zone 37S","","","","Mozambique - east of 36 deg E","projected 2D","","","East","North","E","N","9001","","4127","16137","1998-04-16 00:00:00","Direc��o Nacional de Geografia e Cadastral (DINAGECA).","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_81[] = {"3036","Moznet / UTM zone 36S","","","","Mozambique - west of 36 deg E.","projected 2D","","","East","North","E","N","9001","","4130","16136","1998-04-16 00:00:00","Direc��o Nacional de Geografia e Cadastral (DINAGECA).","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_82[] = {"3037","Moznet / UTM zone 37S","","","","Mozambique - east of 36 deg E","projected 2D","","","East","North","E","N","9001","","4130","16137","1998-04-16 00:00:00","Direc��o Nacional de Geografia e Cadastral (DINAGECA).","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_83[] = {"3148","Indian 1960 / UTM zone 48N","","","","Cambodia; Vietnam west of 108deg East.","projected 2D","","","East","North","E","N","9001","","4131","16048","1998-11-11 00:00:00","","EPSG","In Vietnam superseded by Hanoi 72 / Gauss zone 18 from 1988 onwards.","",NULL};
-datafile_rows_t horiz_cs_row_84[] = {"3149","Indian 1960 / UTM zone 49N","","","","Vietnam east of 108deg East.","projected 2D","","","East","North","E","N","9001","","4131","16049","1998-11-11 00:00:00","","EPSG","Superseded by Hanoi 72 / Gauss zone 18 from 1988 onwards.","",NULL};
-datafile_rows_t horiz_cs_row_85[] = {"3176","Indian 1960 / TM 106 NE","","","","Vietnam - offshore.","projected 2D","","","East","North","E","N","9001","","4131","16506","1998-11-11 00:00:00","Petrovietnam","EPSG","Used by Petrovietnam for offshore block 15.","",NULL};
-datafile_rows_t horiz_cs_row_86[] = {"3200","FD58 / Iraq zone","","","","Iran - Gulf coast and Arwaz areas.","projected 2D","","","East","North","E","N","9001","","4132","19906","1998-11-11 00:00:00","IOEPC records.","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_87[] = {"3300","Estonian Coordinate System of 1992","","","","Estonia.","projected 2D","","","North","East","X","Y","9001","","4133","19938","1998-12-14 00:00:00","http://www.geo.ut.ee/~raivo/estcoord.html","EPSG","Used for 1:20000 and larger scale mapping.","",NULL};
-datafile_rows_t horiz_cs_row_88[] = {"3439","PSD93 / UTM zone 39N","","","","Oman - west of 54 deg East.","projected 2D","","","East","North","E","N","9001","","4134","16039","1999-04-22 00:00:00","Petroleum Development Oman","EPSG","Supersedes Fahud / UTM zone 39N projCS (code 23239). Maximum differences to Fahud adjustment are 20 metres.","",NULL};
-datafile_rows_t horiz_cs_row_89[] = {"3440","PSD93 / UTM zone 40N","","","","Oman - east of 54 deg East.","projected 2D","","","East","North","E","N","9001","","4134","16040","1999-04-22 00:00:00","Petroleum Development Oman","EPSG","Supersedes Fahud / UTM zone 40N projCS (code 23240). Maximum differences to Fahud adjustment are 20 metres.","",NULL};
-datafile_rows_t horiz_cs_row_90[] = {"3561","Old Hawaiian / Hawaii zone 1","Old Hawaiian / SP zone 1","","","United States (USA) - Hawaii - island of Hawaii.","projected 2D","","","East","North","X","Y","9003","","4135","15101","1999-05-24 00:00:00","","EPSG","Sometimes erroneously referred to as NAD27 / Hawaii zone 1.","99.322",NULL};
-datafile_rows_t horiz_cs_row_91[] = {"3562","Old Hawaiian / Hawaii zone 2","Old Hawaiian / SP zone 2","","","United States (USA) - Hawaii - Maui; Kahoolawe; Lanai; Molokai.","projected 2D","","","East","North","X","Y","9003","","4135","15102","1999-05-24 00:00:00","","EPSG","Sometimes erroneously referred to as NAD27 / Hawaii zone 2.","99.322",NULL};
-datafile_rows_t horiz_cs_row_92[] = {"3563","Old Hawaiian / Hawaii zone 3","Old Hawaiian / SP zone 3","","","United States (USA) - Hawaii - Oahu.","projected 2D","","","East","North","X","Y","9003","","4135","15103","1999-05-24 00:00:00","","EPSG","Sometimes erroneously referred to as NAD27 / Hawaii zone 3.","99.322",NULL};
-datafile_rows_t horiz_cs_row_93[] = {"3564","Old Hawaiian / Hawaii zone 4","Old Hawaiian / SP zone 4","","","United States (USA) - Hawaii - Kauai.","projected 2D","","","East","North","X","Y","9003","","4135","15104","1999-05-24 00:00:00","","EPSG","Sometimes erroneously referred to as NAD27 / Hawaii zone 4.","99.322",NULL};
-datafile_rows_t horiz_cs_row_94[] = {"3565","Old Hawaiian / Hawaii zone 5","Old Hawaiian / SP zone 5","","","United States (USA) - Hawaii - Niihau.","projected 2D","","","East","North","X","Y","9003","","4135","15105","1999-05-24 00:00:00","","EPSG","Sometimes erroneously referred to as NAD27 / Hawaii zone 5.","99.322",NULL};
-datafile_rows_t horiz_cs_row_95[] = {"3920","Puerto Rico / UTM zone 20N","","","","British Virgin Islands (civilian).","projected 2D","","","East","North","E","N","9001","","4139","16020","1999-04-22 00:00:00","Ordnance Survey of Great Britain","EPSG","NAD27 / UTM zone 20 N (code 26720) used for military purposes.","",NULL};
-datafile_rows_t horiz_cs_row_96[] = {"3991","Puerto Rico State Plane CS of 1927","Puerto Rico SPCS 27","","","Puerto Rico.","projected 2D","","","East","North","X","Y","9003","","4139","15201","1999-05-24 00:00:00","","EPSG","Sometimes erroneously referred to as NAD27 / Puerto Rico State Plane CS.","99.323",NULL};
-datafile_rows_t horiz_cs_row_97[] = {"3992","Puerto Rico / St. Croix","","","","US Virgin Islands (U.S.).","projected 2D","","","East","North","X","Y","9003","","4139","15202","1999-05-24 00:00:00","","EPSG","Sometimes erroneously referred to as NAD27 / St. Croix State Plane CS.","99.323",NULL};
-datafile_rows_t horiz_cs_row_98[] = {"4001","Unknown datum based upon ellipsoid 7001","","","","","geographic 2D","6001","8901","North","East","Lat","Long","","9108","","","1996-09-12 00:00:00","","EPSG","Not recommended.  Use only in cases where geodetic datum unknown.","96.08",NULL};
-datafile_rows_t horiz_cs_row_99[] = {"4002","Unknown datum based upon ellipsoid 7002","","","","","geographic 2D","6002","8901","North","East","Lat","Long","","9108","","","1996-09-12 00:00:00","","EPSG","Not recommended.  Use only in cases where geodetic datum unknown.","96.08",NULL};
-datafile_rows_t horiz_cs_row_100[] = {"4003","Unknown datum based upon ellipsoid 7003","","","","","geographic 2D","6003","8901","North","East","Lat","Long","","9108","","","1996-09-12 00:00:00","","EPSG","Not recommended.  Use only in cases where geodetic datum unknown.","96.08",NULL};
-datafile_rows_t horiz_cs_row_101[] = {"4004","Unknown datum based upon ellipsoid 7004","","","","","geographic 2D","6004","8901","North","East","Lat","Long","","9108","","","1996-09-12 00:00:00","","EPSG","Not recommended.  Use only in cases where geodetic datum unknown.","96.08",NULL};
-datafile_rows_t horiz_cs_row_102[] = {"4005","Unknown datum based upon ellipsoid 7005","","","","","geographic 2D","6005","8901","North","East","Lat","Long","","9108","","","1996-09-12 00:00:00","","EPSG","Not recommended.  Use only in cases where geodetic datum unknown.","96.08",NULL};
-datafile_rows_t horiz_cs_row_103[] = {"4006","Unknown datum based upon ellipsoid 7006","","","","","geographic 2D","6006","8901","North","East","Lat","Long","","9108","","","1996-09-12 00:00:00","","EPSG","Not recommended.  Use only in cases where geodetic datum unknown.","96.08",NULL};
-datafile_rows_t horiz_cs_row_104[] = {"4007","Unknown datum based upon ellipsoid 7007","","","","","geographic 2D","6007","8901","North","East","Lat","Long","","9108","","","1996-09-12 00:00:00","","EPSG","Not recommended.  Use only in cases where geodetic datum unknown.","96.08",NULL};
-datafile_rows_t horiz_cs_row_105[] = {"4008","Unknown datum based upon ellipsoid 7008","","","","","geographic 2D","6008","8901","North","East","Lat","Long","","9108","","","1996-09-12 00:00:00","","EPSG","Not recommended.  Use only in cases where geodetic datum unknown.","96.08",NULL};
-datafile_rows_t horiz_cs_row_106[] = {"4009","Unknown datum based upon ellipsoid 7009","","","","","geographic 2D","6009","8901","North","East","Lat","Long","","9108","","","1996-09-12 00:00:00","","EPSG","Not recommended.  Use only in cases where geodetic datum unknown.","96.08",NULL};
-datafile_rows_t horiz_cs_row_107[] = {"4010","Unknown datum based upon ellipsoid 7010","","","","","geographic 2D","6010","8901","North","East","Lat","Long","","9108","","","1996-09-12 00:00:00","","EPSG","Not recommended.  Use only in cases where geodetic datum unknown.","96.08",NULL};
-datafile_rows_t horiz_cs_row_108[] = {"4011","Unknown datum based upon ellipsoid 7011","","","","","geographic 2D","6011","8901","North","East","Lat","Long","","9108","","","1996-09-12 00:00:00","","EPSG","Not recommended.  Use only in cases where geodetic datum unknown.","96.08",NULL};
-datafile_rows_t horiz_cs_row_109[] = {"4012","Unknown datum based upon ellipsoid 7012","","","","","geographic 2D","6012","8901","North","East","Lat","Long","","9108","","","1996-09-12 00:00:00","","EPSG","Not recommended.  Use only in cases where geodetic datum unknown.","96.08",NULL};
-datafile_rows_t horiz_cs_row_110[] = {"4013","Unknown datum based upon ellipsoid 7013","","","","","geographic 2D","6013","8901","North","East","Lat","Long","","9108","","","1996-09-12 00:00:00","","EPSG","Not recommended.  Use only in cases where geodetic datum unknown.","96.08",NULL};
-datafile_rows_t horiz_cs_row_111[] = {"4014","Unknown datum based upon ellipsoid 7014","","","","","geographic 2D","6014","8901","North","East","Lat","Long","","9108","","","1996-09-12 00:00:00","","EPSG","Not recommended.  Use only in cases where geodetic datum unknown.","96.08",NULL};
-datafile_rows_t horiz_cs_row_112[] = {"4015","Unknown datum based upon ellipsoid 7015","","","","","geographic 2D","6015","8901","North","East","Lat","Long","","9108","","","1996-09-12 00:00:00","","EPSG","Not recommended.  Use only in cases where geodetic datum unknown.","96.08",NULL};
-datafile_rows_t horiz_cs_row_113[] = {"4016","Unknown datum based upon ellipsoid 7016","","","","","geographic 2D","6016","8901","North","East","Lat","Long","","9108","","","1996-09-12 00:00:00","","EPSG","Not recommended.  Use only in cases where geodetic datum unknown.","96.08",NULL};
-datafile_rows_t horiz_cs_row_114[] = {"4017","Unknown datum based upon ellipsoid 7017","","","","","geographic 2D","6017","8901","North","East","Lat","Long","","9108","","","1996-09-12 00:00:00","","EPSG","Not recommended.  Use only in cases where geodetic datum unknown.","96.08",NULL};
-datafile_rows_t horiz_cs_row_115[] = {"4018","Unknown datum based upon ellipsoid 7018","","","","","geographic 2D","6018","8901","North","East","Lat","Long","","9108","","","1996-09-12 00:00:00","","EPSG","Not recommended.  Use only in cases where geodetic datum unknown.","96.08",NULL};
-datafile_rows_t horiz_cs_row_116[] = {"4019","Unknown datum based upon ellipsoid 7019","","","","","geographic 2D","6019","8901","North","East","Lat","Long","","9108","","","1996-09-12 00:00:00","","EPSG","Not recommended.  Use only in cases where geodetic datum unknown.","96.08",NULL};
-datafile_rows_t horiz_cs_row_117[] = {"4020","Unknown datum based upon ellipsoid 7020","","","","","geographic 2D","6020","8901","North","East","Lat","Long","","9108","","","1996-09-12 00:00:00","","EPSG","Not recommended.  Use only in cases where geodetic datum unknown.","96.08",NULL};
-datafile_rows_t horiz_cs_row_118[] = {"4021","Unknown datum based upon ellipsoid 7021","","","","","geographic 2D","6021","8901","North","East","Lat","Long","","9108","","","1996-09-12 00:00:00","","EPSG","Not recommended.  Use only in cases where geodetic datum unknown.","96.08",NULL};
-datafile_rows_t horiz_cs_row_119[] = {"4022","Unknown datum based upon ellipsoid 7022","","","","","geographic 2D","6022","8901","North","East","Lat","Long","","9108","","","1996-09-12 00:00:00","","EPSG","Not recommended.  Use only in cases where geodetic datum unknown.","96.08",NULL};
-datafile_rows_t horiz_cs_row_120[] = {"4024","Unknown datum based upon ellipsoid 7024","","","","","geographic 2D","6024","8901","North","East","Lat","Long","","9108","","","1996-09-12 00:00:00","","EPSG","Not recommended.  Use only in cases where geodetic datum unknown.","96.08",NULL};
-datafile_rows_t horiz_cs_row_121[] = {"4025","Unknown datum based upon ellipsoid 7025","","","","","geographic 2D","6025","8901","North","East","Lat","Long","","9108","","","1996-09-12 00:00:00","","EPSG","Not recommended.  Use only in cases where geodetic datum unknown.","96.08",NULL};
-datafile_rows_t horiz_cs_row_122[] = {"4027","Unknown datum based upon ellipsoid 7027","","","","","geographic 2D","6027","8901","North","East","Lat","Long","","9108","","","1996-09-12 00:00:00","","EPSG","Not recommended.  Use only in cases where geodetic datum unknown.","96.08",NULL};
-datafile_rows_t horiz_cs_row_123[] = {"4028","Unknown datum based upon ellipsoid 7028","","","","","geographic 2D","6028","8901","North","East","Lat","Long","","9108","","","1996-09-12 00:00:00","","EPSG","Not recommended.  Use only in cases where geodetic datum unknown.","96.08",NULL};
-datafile_rows_t horiz_cs_row_124[] = {"4029","Unknown datum based upon ellipsoid 7029","","","","","geographic 2D","6029","8901","North","East","Lat","Long","","9108","","","1996-09-12 00:00:00","","EPSG","Not recommended.  Use only in cases where geodetic datum unknown.","96.08",NULL};
-datafile_rows_t horiz_cs_row_125[] = {"4030","Unknown datum based upon ellipsoid 7030","","","","","geographic 2D","6030","8901","North","East","Lat","Long","","9108","","","1996-09-12 00:00:00","","EPSG","Not recommended.  Use only in cases where geodetic datum unknown.","96.08",NULL};
-datafile_rows_t horiz_cs_row_126[] = {"4031","Unknown datum based upon ellipsoid 7031","","","","","geographic 2D","6031","8901","North","East","Lat","Long","","9108","","","1996-09-12 00:00:00","","EPSG","Not recommended.  Use only in cases where geodetic datum unknown.","96.08",NULL};
-datafile_rows_t horiz_cs_row_127[] = {"4032","Unknown datum based upon ellipsoid 7032","","","","","geographic 2D","6032","8901","North","East","Lat","Long","","9108","","","1996-09-12 00:00:00","","EPSG","Not recommended.  Use only in cases where geodetic datum unknown.","96.08",NULL};
-datafile_rows_t horiz_cs_row_128[] = {"4033","Unknown datum based upon ellipsoid 7033","","","","","geographic 2D","6033","8901","North","East","Lat","Long","","9108","","","1996-09-12 00:00:00","","EPSG","Not recommended.  Use only in cases where geodetic datum unknown.","96.08",NULL};
-datafile_rows_t horiz_cs_row_129[] = {"4034","Unknown datum based upon ellipsoid 7034","","","","","geographic 2D","6034","8901","North","East","Lat","Long","","9108","","","1996-09-12 00:00:00","","EPSG","Not recommended.  Use only in cases where geodetic datum unknown.","96.08",NULL};
-datafile_rows_t horiz_cs_row_130[] = {"4035","Unknown datum based upon ellipsoid 7035","","","","","geographic 2D","6035","8901","North","East","Lat","Long","","9108","","","1996-09-12 00:00:00","","EPSG","Not recommended.  Use only in cases where geodetic datum unknown.","96.08",NULL};
-datafile_rows_t horiz_cs_row_131[] = {"4036","Unknown datum based upon ellipsoid 7036","","","","","geographic 2D","6036","8901","North","East","Lat","Long","","9108","","","1996-09-12 00:00:00","","EPSG","Not recommended.  Use only in cases where geodetic datum unknown.","",NULL};
-datafile_rows_t horiz_cs_row_132[] = {"4041","Unknown datum based upon ellipsoid 7041","","","","","geographic 2D","6041","8901","North","East","Lat","Long","","9108","","","1999-10-20 00:00:00","","EPSG","Not recommended.  Use only in cases where geodetic datum unknown.","",NULL};
-datafile_rows_t horiz_cs_row_133[] = {"4042","Unknown datum based upon ellipsoid 7042","","","","","geographic 2D","6042","8901","North","East","Lat","Long","","9108","","","1999-10-20 00:00:00","","EPSG","Not recommended.  Use only in cases where geodetic datum unknown.","",NULL};
-datafile_rows_t horiz_cs_row_134[] = {"4043","Unknown datum based upon ellipsoid 7043","","","","","geographic 2D","6043","8901","North","East","Lat","Long","","9108","","","1999-10-20 00:00:00","","EPSG","Not recommended.  Use only in cases where geodetic datum unknown.","",NULL};
-datafile_rows_t horiz_cs_row_135[] = {"4044","Unknown datum based upon ellipsoid 7044","","","","","geographic 2D","6044","8901","North","East","Lat","Long","","9108","","","1999-10-20 00:00:00","","EPSG","Not recommended.  Use only in cases where geodetic datum unknown.","",NULL};
-datafile_rows_t horiz_cs_row_136[] = {"4045","Unknown datum based upon ellipsoid 7045","","","","","geographic 2D","6045","8901","North","East","Lat","Long","","9108","","","1999-10-20 00:00:00","","EPSG","Not recommended.  Use only in cases where geodetic datum unknown.","",NULL};
-datafile_rows_t horiz_cs_row_137[] = {"4120","Greek","","","","Greece","geographic 2D","6120","8901","North","East","Lat","Long","","9108","","","1997-06-16 00:00:00","Topography Department; National Technical University of Greece.","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_138[] = {"4121","GGRS87","","","","Greece","geographic 2D","6121","8901","North","East","Lat","Long","","9108","","","1997-06-16 00:00:00","Geodesy Department; Public Petroleum Corporation of Greece.","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_139[] = {"4122","ATS77","","","","Canada - New Brunswick; Canada - Nova Scotia - onshore; Canada - Prince Edward Island.","geographic 2D","6122","8901","North","East","Lat","Long","","9108","","","1997-07-22 00:00:00","New Brunswick Geographic Information Corporation land and water information standards manual.","EPSG","In use from 1979.  To be phased out in late 1990's.","",NULL};
-datafile_rows_t horiz_cs_row_140[] = {"4123","KKJ","","","","Finland","geographic 2D","6123","8901","North","East","Lat","Long","","9108","","","1997-07-22 00:00:00","www.nls.fi/maa/papers/kkj.html","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_141[] = {"4124","RT90","","","","Sweden","geographic 2D","6124","8901","North","East","Lat","Long","","9108","","","1997-11-13 00:00:00","National Land Survey of Sweden","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_142[] = {"4125","Samboja","","","","Indonesia - east Kalimantan - Mahakam delta area.","geographic 2D","6125","8901","North","East","Lat","Long","","9108","","","1997-11-13 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_143[] = {"4126","LKS94 (ETRS89)","","","","Lithuania","geographic 2D","6126","8901","North","East","Lat","Long","","9108","","","1998-03-13 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_144[] = {"4127","Tete","","","","Mozambique","geographic 2D","6127","8901","North","East","Lat","Long","","9108","","","1998-04-16 00:00:00","Direc��o Nacional de Geografia e Cadastral (DINAGECA).","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_145[] = {"4128","Madzansua","","","","Mozambique - west","geographic 2D","6128","8901","North","East","Lat","Long","","9108","","","1998-04-16 00:00:00","Direc��o Nacional de Geografia e Cadastral (DINAGECA).","EPSG","Superseded by values transformed to Tete geogCS (code 4127).","",NULL};
-datafile_rows_t horiz_cs_row_146[] = {"4129","Observatario","","","","Mozambique - south","geographic 2D","6129","8901","North","East","Lat","Long","","9108","","","1998-04-16 00:00:00","Direc��o Nacional de Geografia e Cadastral (DINAGECA).","EPSG","Superseded by values transformed to Tete geogCS (code 4127).","",NULL};
-datafile_rows_t horiz_cs_row_147[] = {"4130","Moznet","","","","Mozambique","geographic 2D","6130","8901","North","East","Lat","Long","","9108","","","1998-04-16 00:00:00","Direc��o Nacional de Geografia e Cadastral (DINAGECA).","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_148[] = {"4131","Indian 1960","","","","Cambodia; Vietnam","geographic 2D","6131","8901","North","East","Lat","Long","","9108","","","1998-11-11 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_149[] = {"4132","FD58","","","","Iran - Gulf coast and Arwaz areas.","geographic 2D","6132","8901","North","East","Lat","Long","","9108","","","1998-11-11 00:00:00","IOEPC records.","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_150[] = {"4133","EST92","","","","Estonia","geographic 2D","6133","8901","North","East","Lat","Long","","9108","","","1998-12-14 00:00:00","http://www.geo.ut.ee/~raivo/estcoord.html","EPSG","Densification of ETRS89 as established during 1992 Baltic campaign.","",NULL};
-datafile_rows_t horiz_cs_row_151[] = {"4134","PDO Survey Datum 1993","PSD93","","","Oman","geographic 2D","6134","8901","North","East","Lat","Long","","9108","","","1999-04-22 00:00:00","Petroleum Development Oman","EPSG","Supersedes Fahud geogCS (code 4232). Maximum differences to Fahud adjustment are 20 metres.","",NULL};
-datafile_rows_t horiz_cs_row_152[] = {"4135","Old Hawaiian","","","","United States (USA) - Hawaii","geographic 2D","6135","8901","North","East","Lat","Long","","9108","","","1999-05-24 00:00:00","","EPSG","Note: this coordinate system includes longitudes which are POSITIVE EAST.","",NULL};
-datafile_rows_t horiz_cs_row_153[] = {"4136","St. Lawrence Island","","","","United States (USA) - Alaska - St. Lawrence Island","geographic 2D","6136","8901","North","East","Lat","Long","","9108","","","1999-05-24 00:00:00","","EPSG","Note: this coordinate system includes longitudes which are POSITIVE EAST.","",NULL};
-datafile_rows_t horiz_cs_row_154[] = {"4137","St. Paul Island","","","","United States (USA) - Alaska - St. Paul Island","geographic 2D","6137","8901","North","East","Lat","Long","","9108","","","1999-05-24 00:00:00","","EPSG","Note: this coordinate system includes longitudes which are POSITIVE EAST.","",NULL};
-datafile_rows_t horiz_cs_row_155[] = {"4138","St. George Island","","","","United States (USA) - Alaska - St. George Island","geographic 2D","6138","8901","North","East","Lat","Long","","9108","","","1999-05-24 00:00:00","","EPSG","Note: this coordinate system includes longitudes which are POSITIVE EAST.","",NULL};
-datafile_rows_t horiz_cs_row_156[] = {"4139","Puerto Rico","","","","Puerto Rico; Virgin Islands (British); Virgin Islands (U.S.).","geographic 2D","6139","8901","North","East","Lat","Long","","9108","","","1999-05-24 00:00:00","","EPSG","Used for civilian purposes.  NAD27 (code 4267) used for military purposes.  Note: this coordinate system includes longitudes which are POSITIVE EAST.","",NULL};
-datafile_rows_t horiz_cs_row_157[] = {"4140","NAD83(CSRS98)","","","","Canada - New Brunswick","geographic 2D","6140","8901","North","East","Lat","Long","","9108","","","1999-10-20 00:00:00","Service New Brunswick Land and Information Standards Manual","EPSG","Supersedes ATS77 from 1999 in New Brunswick.","",NULL};
-datafile_rows_t horiz_cs_row_158[] = {"4141","Israel","","","","Israel.","geographic 2D","6141","8901","North","East","Lat","Long","","9108","","","1999-10-20 00:00:00","Survey of Israel","EPSG","Supersedes Palestine 1923 in Israel.","",NULL};
-datafile_rows_t horiz_cs_row_159[] = {"4142","Locodjo 1965","","","","Cote D'Ivoire (Ivory Coast).","geographic 2D","6142","8901","North","East","Lat","Long","","9108","","","1999-10-20 00:00:00","IGN Paris","EPSG","Superseded by Abidjan 1987 (EPSG code 4143).","",NULL};
-datafile_rows_t horiz_cs_row_160[] = {"4143","Abidjan 1987","","","","Cote D'Ivoire (Ivory Coast).","geographic 2D","6143","8901","North","East","Lat","Long","","9108","","","1999-10-20 00:00:00","IGN Paris","EPSG","Supersedes Locodjo 1967 (EPSG code 4142).","",NULL};
-datafile_rows_t horiz_cs_row_161[] = {"4144","Kalianpur 1937","","","","Bangladesh; India; Pakistan","geographic 2D","6144","8901","North","East","Lat","Long","","9108","","","1999-10-20 00:00:00","G. Bomford; \"The Re-adjustment of the Indian Triangulation\"; Survey of India Professional Paper 28; 1939.","EPSG","Adopts 1937 metric conversion of 0.30479841 metres per Indian foot.","",NULL};
-datafile_rows_t horiz_cs_row_162[] = {"4145","Kalianpur 1962","","","","Pakistan","geographic 2D","6145","8901","North","East","Lat","Long","","9108","","","1999-10-20 00:00:00","","EPSG","Adopts 1962 metric conversion of 0.3047996 metres per Indian foot.","",NULL};
-datafile_rows_t horiz_cs_row_163[] = {"4146","Kalianpur 1975","","","","India","geographic 2D","6146","8901","North","East","Lat","Long","","9108","","","1999-10-20 00:00:00","","EPSG","Adopts 1975 metric conversion of 0.3047995 metres per Indian foot.","",NULL};
-datafile_rows_t horiz_cs_row_164[] = {"4147","Hanoi 1972","","","","Vietnam","geographic 2D","6147","8901","North","East","Lat","Long","","9108","","","1999-10-20 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_165[] = {"4148","Hartbeesthoek94","","","","South Africa.","geographic 2D","6148","8901","North","East","Lat","Long","","9108","","","1999-10-22 00:00:00","","EPSG","Supercedes Cape (code 4222) from 1999.","",NULL};
-datafile_rows_t horiz_cs_row_166[] = {"4149","CH1903","","","","Liechtenstein; Switzerland","geographic 2D","6149","8901","North","East","Lat","Long","","9108","","","1999-10-20 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_167[] = {"4150","CH1903+","","","","Liechtenstein; Switzerland","geographic 2D","6150","8901","North","East","Lat","Long","","9108","","","1999-10-20 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_168[] = {"4151","CHTRF95","","","","Liechtenstein; Switzerland","geographic 2D","6151","8901","North","East","Lat","Long","","9108","","","1999-10-20 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_169[] = {"4152","NAD83(HARN)","","","","United States (US)","geographic 2D","6152","8901","North","East","Lat","Long","","9108","","","1999-10-20 00:00:00","National Geodetic Survey","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_170[] = {"4153","Rassadiran","","","","Iran - Taheri refinery site only.","geographic 2D","6153","8901","North","East","Lat","Long","","9108","","","1999-10-20 00:00:00","","EPSG","Used only for onshore terminal site.","",NULL};
-datafile_rows_t horiz_cs_row_171[] = {"4154","ED50(ED77)","","","","Iran","geographic 2D","6154","8901","North","East","Lat","Long","","9108","","","1999-10-20 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_172[] = {"4200","Pulkovo 1995","","","","Russia","geographic 2D","6200","8901","North","East","Lat","Long","","9108","","","1996-09-12 00:00:00","\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_173[] = {"4201","Adindan","","","","Ethiopia; Sudan","geographic 2D","6201","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_174[] = {"4202","AGD66","","","","Australia; Papua New Guinea","geographic 2D","6202","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_175[] = {"4203","AGD84","","","","Australia","geographic 2D","6203","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_176[] = {"4204","Ain el Abd","","","","Kuwait; Saudi Arabia","geographic 2D","6204","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_177[] = {"4205","Afgooye","","","","Somalia","geographic 2D","6205","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_178[] = {"4206","Agadez","","","","Niger","geographic 2D","6206","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_179[] = {"4207","Lisbon","","","","Portugal - onshore","geographic 2D","6207","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","Instituto Geografico e Cadastral; Lisbon","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_180[] = {"4208","Aratu","","","","Brazil - coastal areas south of 2 deg 55 min S.","geographic 2D","6208","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_181[] = {"4209","Arc 1950","","","","Botswana; Malawi; Zambia; Zimbabwe.","geographic 2D","6209","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_182[] = {"4210","Arc 1960","","","","Kenya; Tanzania; Uganda.","geographic 2D","6210","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_183[] = {"4211","Batavia","","","","Indonesia - Java","geographic 2D","6211","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_184[] = {"4212","Barbados 1938","","","","Barbados","geographic 2D","6212","8901","North","East","Lat","Long","","9108","","","1999-04-22 00:00:00","","EPSG","","99.171",NULL};
-datafile_rows_t horiz_cs_row_185[] = {"4213","Beduaram","","","","Niger","geographic 2D","6213","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_186[] = {"4214","Beijing 1954","","","","China","geographic 2D","6214","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_187[] = {"4215","Belge 1950","","","","Belgium - onshore","geographic 2D","6215","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_188[] = {"4216","Bermuda 1957","","","","Bermuda","geographic 2D","6216","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_189[] = {"4218","Bogota","","","","Colombia","geographic 2D","6218","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_190[] = {"4219","Bukit Rimpah","","","","Indonesia - Banga & Belitung Islands","geographic 2D","6219","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_191[] = {"4220","Camacupa","","","","Angola","geographic 2D","6220","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_192[] = {"4221","Campo Inchauspe","","","","Argentina","geographic 2D","6221","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_193[] = {"4222","Cape","","","","Botswana; South Africa.","geographic 2D","6222","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","Superceded by Hartbeesthoek94 from 1999.","",NULL};
-datafile_rows_t horiz_cs_row_194[] = {"4223","Carthage","","","","Tunisia","geographic 2D","6223","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_195[] = {"4224","Chua","","","","Brazil","geographic 2D","6224","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_196[] = {"4225","Corrego Alegre","","","","Brazil - NE coastal area between 45 deg W and 40 deg W.","geographic 2D","6225","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_197[] = {"4226","Cote d'Ivoire","","","","Cote d'Ivoire","geographic 2D","6226","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_198[] = {"4227","Deir ez Zor","","","","Syrian Arab Republic","geographic 2D","6227","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_199[] = {"4228","Douala","","","","Cameroon","geographic 2D","6228","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_200[] = {"4229","Egypt 1907","","","","Egypt","geographic 2D","6229","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_201[] = {"4230","ED50","","","","Europe - west - Spain; France offshore; United Kingdom UKCS offshore; Netherlands offshore; Germany offshore North Sea; Denmark; Norway; Turkey.","geographic 2D","6230","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_202[] = {"4231","ED87","","","","Europe - west.","geographic 2D","6231","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_203[] = {"4232","Fahud","","","","Oman","geographic 2D","6232","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","Since 1993 superseded by PSD93 geogCS (code 4134). Maximum differences to Fahud adjustment are 20 metres.","",NULL};
-datafile_rows_t horiz_cs_row_204[] = {"4233","Gandajika 1970","","","","Maldives","geographic 2D","6233","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_205[] = {"4234","Garoua","","","","Cameroon","geographic 2D","6234","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_206[] = {"4235","Guyane Francaise","","","","French Guyana","geographic 2D","6235","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_207[] = {"4236","Hu Tzu Shan","","","","Taiwan","geographic 2D","6236","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_208[] = {"4237","HD72","","","","Hungary","geographic 2D","6237","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_209[] = {"4238","ID74","","","","Indonesia","geographic 2D","6238","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_210[] = {"4239","Indian 1954","","","","Myanmar (Burma); Thailand","geographic 2D","6239","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_211[] = {"4240","Indian 1975","","","","Thailand","geographic 2D","6240","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_212[] = {"4241","Jamaica 1875","","","","Jamaica","geographic 2D","6241","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_213[] = {"4242","JAD69","","","","Jamaica","geographic 2D","6242","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_214[] = {"4243","Kalianpur 1880","","","","Bangladesh; India; Myanmar (Burma); Pakistan","geographic 2D","6243","8901","North","East","Lat","Long","","9108","","","1999-10-20 00:00:00","G. Bomford; \"The Re-adjustment of the Indian Triangulation\"; Survey of India Professional Paper 28; 1939.","EPSG","","97.23",NULL};
-datafile_rows_t horiz_cs_row_215[] = {"4244","Kandawala","","","","Sri Lanka","geographic 2D","6244","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_216[] = {"4245","Kertau","","","","Malaysia - West Malaysia; Singapore","geographic 2D","6245","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","Adopts metric conversion of 39.370113 inches per metre.","",NULL};
-datafile_rows_t horiz_cs_row_217[] = {"4246","KOC","","","","Kuwait","geographic 2D","6246","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_218[] = {"4247","La Canoa","","","","Venezuela","geographic 2D","6247","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","PSAD56 uses same origin.","",NULL};
-datafile_rows_t horiz_cs_row_219[] = {"4248","PSAD56","","","","Bolivia; Ecuador; Peru; [Venezuela]","geographic 2D","6248","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","Origin is same as La Canoa.  In Venezuela known as La Canoa.","",NULL};
-datafile_rows_t horiz_cs_row_220[] = {"4249","Lake","","","","Venezuela - Lake Maracaibo area","geographic 2D","6249","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_221[] = {"4250","Leigon","","","","Ghana","geographic 2D","6250","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_222[] = {"4251","Liberia 1964","","","","Liberia","geographic 2D","6251","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_223[] = {"4252","Lome","","","","Togo","geographic 2D","6252","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_224[] = {"4253","Luzon 1911","","","","Philippines","geographic 2D","6253","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_225[] = {"4254","Hito XVIII 1963","","","","Chile - Tierra del Fuego","geographic 2D","6254","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_226[] = {"4255","Herat North","","","","Afghanistan","geographic 2D","6255","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_227[] = {"4256","Mahe 1971","","","","Seychelles","geographic 2D","6256","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_228[] = {"4257","Makassar","","","","Indonesia - south west Sulawesi","geographic 2D","6257","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_229[] = {"4258","ETRF89","","","","Europe - Hungary; Norway; Sweden; United Kingdom (UKCS) offshore.","geographic 2D","6258","8901","North","East","Lat","Long","","9108","","","1999-04-22 00:00:00","Norwegian Geodetic Institute geodetic publication 1990:1","EPSG","","97.11  99.11",NULL};
-datafile_rows_t horiz_cs_row_230[] = {"4259","Malongo 1987","","","","Angola - Cabinda offshore","geographic 2D","6259","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","Chevron Petroleum Technology","EPSG","Offshore extension of Mhast GeogCS (4264) using Transit translocation from Station Y at Malongo base camp.","",NULL};
-datafile_rows_t horiz_cs_row_231[] = {"4260","Manoca","","","","Cameroon","geographic 2D","6260","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_232[] = {"4261","Merchich","","","","Morocco","geographic 2D","6261","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_233[] = {"4262","Massawa","","","","Eritrea","geographic 2D","6262","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_234[] = {"4263","Minna","","","","Nigeria","geographic 2D","6263","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_235[] = {"4264","Mhast","","","","Angola - Cabinda","geographic 2D","6264","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_236[] = {"4265","Monte Mario","","","","Italy","geographic 2D","6265","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_237[] = {"4266","M'poraloko","","","","Gabon","geographic 2D","6266","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_238[] = {"4267","NAD27","","","","North and central America - Canada; Mexico; United States (USA).","geographic 2D","6267","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","Note: this coordinate system includes longitudes which are POSITIVE EAST.  Superseded by NAD27(76) (code 4608) in Ontario and CGQ77 (code 4609) in Quebec.","99.04",NULL};
-datafile_rows_t horiz_cs_row_239[] = {"4268","NAD27 Michigan","NAD Michigan","","","United States (USA) - Michigan","geographic 2D","6268","8901","North","East","Lat","Long","","9108","","","1996-12-12 00:00:00","","EPSG","Ellipsoid taken to be 800ft above geoid. Note: this coordinate system includes longitudes which are POSITIVE EAST.","96.28",NULL};
-datafile_rows_t horiz_cs_row_240[] = {"4269","NAD83","","","","Canada: Greenland; Mexico; United States (USA)","geographic 2D","6269","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","Note: this coordinate system includes longitudes which are POSITIVE EAST.","",NULL};
-datafile_rows_t horiz_cs_row_241[] = {"4270","Nahrwan 1967","","","","Arabian Gulf; Kuwait; United Arab Emirates (UAE) - Abu Dhabi; Dubai; Sharjah; Ajman; Fujairah; Ras Al Kaimah; Umm Al Qaiwain.","geographic 2D","6270","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_242[] = {"4271","Naparima 1972","","","","Trinidad and Tobago","geographic 2D","6271","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_243[] = {"4272","GD49","","","","New Zealand","geographic 2D","6272","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_244[] = {"4273","NGO 1948","","","","Norway - onshore","geographic 2D","6273","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_245[] = {"4274","Datum 73","","","","Portugal - onshore","geographic 2D","6274","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","Instituto Geografico e Cadastral; Lisbon","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_246[] = {"4275","NTF","","","","France - onshore","geographic 2D","6275","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_247[] = {"4276","NSWC 9Z-2","","","","World","geographic 2D","6276","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_248[] = {"4277","OSGB 1936","","","","United Kingdom (UK) - Great Britain - England  Scotland  Wales - onshore; Isle of Man.","geographic 2D","6277","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_249[] = {"4278","OSGB70","","","","United Kingdom (UK) - Great Britain - England  Scotland  wales - onshore","geographic 2D","6278","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_250[] = {"4279","OS(SN)80","","","","Ireland - onshore; United Kingdom (UK) - England  Scotland  Wales  Northern Ireland - onshore E","geographic 2D","6279","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_251[] = {"4280","Padang","","","","Indonesia - Sumatra","geographic 2D","6280","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_252[] = {"4281","Palestine 1923","","","","Israel; Jordan; Lebanon","geographic 2D","6281","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_253[] = {"4282","Pointe Noire","","","","Congo","geographic 2D","6282","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_254[] = {"4283","GDA94","","","","Australia","geographic 2D","6283","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","Australian Surveying and Land Information Group Internet WWW page.","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_255[] = {"4284","Pulkovo 1942","","","","Armenia; Azerbaijan; Belarus; Estonia; Georgia; Kazakstan; Kirgistan; Latvia; Lithuania; Moldova; Russia; Tadzhikstan; Turkmenistan; Ukraine; Uzbekistan; Germany (former DDR); Czech Republic; Hungary; Poland; Romania; Latvia; Lithuania; Estonia; Albania","geographic 2D","6284","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_256[] = {"4285","Qatar","","","","Qatar - onshore","geographic 2D","6285","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_257[] = {"4286","Qatar 1948","","","","Qatar - onshore","geographic 2D","6286","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_258[] = {"4287","Qornoq","","","","Greenland","geographic 2D","6287","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_259[] = {"4288","Loma Quintana","","","","Venezuela - north","geographic 2D","6288","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_260[] = {"4289","Amersfoort","","","","Netherlands - onshore","geographic 2D","6289","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_261[] = {"4291","SAD69","","","","South America - Brazil","geographic 2D","6291","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","Uses GRS67 ellipsoid with 1/f to exactly 2 decimal places.  Precision of ellipsoid entry increased from 2 to 5 dp with change id 97.251.  Error introduced if not using the truncated precision is 0 to 31mm.","97.252",NULL};
-datafile_rows_t horiz_cs_row_262[] = {"4292","Sapper Hill 1943","","","","Falkland Islands","geographic 2D","6292","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_263[] = {"4293","Schwarzeck","","","","Namibia","geographic 2D","6293","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_264[] = {"4294","Segora","","","","Indonesia - southeast Kalimantan","geographic 2D","6294","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_265[] = {"4295","Serindung","","","","Indonesia - east Kalimantan","geographic 2D","6295","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_266[] = {"4296","Sudan","","","","Sudan - south","geographic 2D","6296","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_267[] = {"4297","Tananarive","","","","Madagascar","geographic 2D","6297","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_268[] = {"4298","Timbalai 1948","","","","Brunei; Malaysia - East Malaysia (Sabah; Sarawak).","geographic 2D","6298","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","Adopts metric conversion of 39.370147 inches per metre.","",NULL};
-datafile_rows_t horiz_cs_row_269[] = {"4299","TM65","","","","Ireland - onshore; United Kingdom (UK) - Northern Ireland (Ulster) onshore","geographic 2D","6299","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_270[] = {"4300","TM75","","","","Ireland - onshore; United Kingdom (UK) - Northern Ireland (Ulster) onshore","geographic 2D","6300","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_271[] = {"4301","Tokyo","","","","Japan; North Korea; South Korea","geographic 2D","6301","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_272[] = {"4302","Trinidad 1903","","","","Trinidad and Tobago - Trinidad","geographic 2D","6302","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_273[] = {"4303","TC(1948)","","","","United Arab Emirates (UAE) - Abu Dhabi; Dubai","geographic 2D","6303","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_274[] = {"4304","Voirol 1875","","","","Algeria - north of 32 deg N","geographic 2D","6304","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","IGN Paris","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_275[] = {"4305","Voirol Unifie","","","","Algeria - north of 32 deg N","geographic 2D","6305","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","\"Le System Geodesique Nord-Sahara\"; IGN Paris","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_276[] = {"4306","Bern 1938","","","","Liechtenstein; Switzerland","geographic 2D","6306","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","Used for the geographic coordinates overprinted on topographic maps constructed on the CH1903 / LV03 projected CS (code 21781).","",NULL};
-datafile_rows_t horiz_cs_row_277[] = {"4307","Nord Sahara 1959","","","","Algeria; Morocco; Tunisia","geographic 2D","6307","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","\"Le System Geodesique Nord-Sahara\"; IGN Paris","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_278[] = {"4308","RT38","","","","Sweden","geographic 2D","6308","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","97.09",NULL};
-datafile_rows_t horiz_cs_row_279[] = {"4309","Yacare","","","","Uruguay","geographic 2D","6309","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_280[] = {"4310","Yoff","","","","Senegal","geographic 2D","6310","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_281[] = {"4311","Zanderij","","","","Suriname","geographic 2D","6311","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_282[] = {"4312","MGI","","","","Austria; Yugoslavia","geographic 2D","6312","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","Bundesamt fur Eich- und Vermessungswesen; Wien","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_283[] = {"4313","Belge 1972","","","","Belgium - onshore","geographic 2D","6313","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_284[] = {"4314","DHDN","","","","Germany - onshore","geographic 2D","6314","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_285[] = {"4315","Conakry 1905","","","","Guinea","geographic 2D","6315","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_286[] = {"4316","Dealul Piscului 1933","","","","Romania","geographic 2D","6316","8901","North","East","Lat","Long","","9108","","","1996-04-12 00:00:00","","EPSG","Superseded by 1970 system (geogCS code 4317).","",NULL};
-datafile_rows_t horiz_cs_row_287[] = {"4317","Dealul Piscului 1970","","","","Romania","geographic 2D","6317","8901","North","East","Lat","Long","","9108","","","1996-04-12 00:00:00","","EPSG","Supersedes 1933 system (geogCS code 4316).","",NULL};
-datafile_rows_t horiz_cs_row_288[] = {"4318","NGN","","","","Kuwait","geographic 2D","6318","8901","North","East","Lat","Long","","9108","","","1996-04-12 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_289[] = {"4319","KUDAMS","","","","Kuwait - Kuwait City","geographic 2D","6319","8901","North","East","Lat","Long","","9108","","","1996-04-12 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_290[] = {"4322","WGS 72","","","","World","geographic 2D","6322","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","GeogCS code 4323 reserved for use with  ProjCS's.","",NULL};
-datafile_rows_t horiz_cs_row_291[] = {"4324","WGS 72BE","","","","World","geographic 2D","6324","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","GeogCS code 4325 reserved for use with  ProjCS's.","",NULL};
-datafile_rows_t horiz_cs_row_292[] = {"4326","WGS 84","","","","World","geographic 2D","6326","8901","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","GeogCS code 4327 reserved for use with  ProjCS's.","",NULL};
-datafile_rows_t horiz_cs_row_293[] = {"4600","Anguilla 1957","","","","Anguilla","geographic 2D","6600","8901","North","East","Lat","Long","","9108","","","1999-04-22 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_294[] = {"4601","Antigua 1943","","","","Antigua and Barbuda - Antigua","geographic 2D","6601","8901","North","East","Lat","Long","","9108","","","1999-04-22 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_295[] = {"4602","Dominica 1945","","","","Dominica","geographic 2D","6602","8901","North","East","Lat","Long","","9108","","","1999-04-22 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_296[] = {"4603","Grenada 1953","","","","Grenada (including Grenada Grenadines)","geographic 2D","6603","8901","North","East","Lat","Long","","9108","","","1999-04-22 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_297[] = {"4604","Montserrat 1958","","","","Montserrat","geographic 2D","6604","8901","North","East","Lat","Long","","9108","","","1999-04-22 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_298[] = {"4605","St. Kitts 1955","","","","Saint Kitts and Nevis","geographic 2D","6605","8901","North","East","Lat","Long","","9108","","","1999-04-22 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_299[] = {"4606","St. Lucia 1955","","","","Saint Lucia","geographic 2D","6606","8901","North","East","Lat","Long","","9108","","","1999-04-22 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_300[] = {"4607","St. Vincent 1945","","","","Saint Vincent and the Grenadines","geographic 2D","6607","8901","North","East","Lat","Long","","9108","","","1999-04-22 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_301[] = {"4608","NAD27(76)","","","","Canada - Ontario","geographic 2D","6608","8901","North","East","Lat","Long","","9108","","","1999-05-12 00:00:00","","EPSG","Note: this coordinate system includes longitudes which are POSITIVE EAST.","",NULL};
-datafile_rows_t horiz_cs_row_302[] = {"4609","NAD27(CGQ77)","CGQ77","","","Canada - Quebec","geographic 2D","6609","8901","North","East","Lat","Long","","9108","","","1999-05-12 00:00:00","","EPSG","Note: this coordinate system includes longitudes which are POSITIVE EAST.","",NULL};
-datafile_rows_t horiz_cs_row_303[] = {"4801","Bern 1898 (Bern)","","","","Liechtenstein; Switzerland","geographic 2D","6149","8907","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_304[] = {"4802","Bogota (Bogota)","","","","Colombia","geographic 2D","6218","8904","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_305[] = {"4803","Lisbon (Lisbon)","","","","Portugal - onshore","geographic 2D","6207","8902","North","East","Lat","Long","","9108","","","1997-04-11 00:00:00","Instituto Geografico e Cadastral; Lisbon","EPSG","","97.12",NULL};
-datafile_rows_t horiz_cs_row_306[] = {"4804","Makassar (Jakarta)","","","","Indonesia - south west Sulawesi","geographic 2D","6257","8908","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_307[] = {"4805","MGI (Ferro)","","","","Austria; Yugoslavia","geographic 2D","6312","8909","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","Bundesamt fur Eich- und Vermessungswesen; Wien","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_308[] = {"4806","Monte Mario (Rome)","","","","Italy","geographic 2D","6265","8906","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_309[] = {"4807","NTF (Paris)","","","","France - onshore","geographic 2D","6275","8903","North","East","Lat","Long","","9105","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_310[] = {"4808","Padang (Jakarta)","","","","Indonesia - Sumatra","geographic 2D","6280","8908","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_311[] = {"4809","Belge 1950 (Brussels)","","","","Belgium - onshore","geographic 2D","6215","8910","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_312[] = {"4810","Tananarive (Paris)","","","","Madagascar","geographic 2D","6297","8903","North","East","Lat","Long","","9105","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_313[] = {"4811","Voirol 1875 (Paris)","","","","Algeria - north of 32 deg N","geographic 2D","6304","8903","North","East","Lat","Long","","9105","","","1995-06-02 00:00:00","IGN Paris","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_314[] = {"4812","Voirol Unifie (Paris)","","","","Algeria - north of 32 deg N","geographic 2D","6305","8903","North","East","Lat","Long","","9105","","","1995-06-02 00:00:00","\"Le System Geodesique Nord-Sahara\"; IGN Paris","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_315[] = {"4813","Batavia (Jakarta)","","","","Indonesia - Java","geographic 2D","6211","8908","North","East","Lat","Long","","9108","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_316[] = {"4814","RT38 (Stockholm)","","","","Sweden","geographic 2D","6308","8911","North","East","Lat","Long","","9108","","","1996-04-12 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_317[] = {"4815","Greek (Athens)","","","","Greece","geographic 2D","6120","8912","North","East","Lat","Long","","9108","","","1997-06-16 00:00:00","Topography Department; National Technical University of Greece.","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_318[] = {"4816","Carthage (Paris)","","","","Tunisia","geographic 2D","6223","8903","North","East","Lat","Long","","9105","","","1998-11-11 00:00:00","","EPSG","Superseded by Greenwich-based Carthage geogCS.","",NULL};
-datafile_rows_t horiz_cs_row_319[] = {"4817","NGO 1948 (Oslo)","","","","Norway - onshore","geographic 2D","6273","8913","North","East","Lat","Long","","9108","","","1999-10-20 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_320[] = {"4901","ATF (Paris)","","","","France","geographic 2D","6901","8903","North","East","Lat","Long","","9105","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_321[] = {"4902","NDG (Paris)","","","","France - Alsace","geographic 2D","6902","8903","North","East","Lat","Long","","9105","","","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_322[] = {"4903","Madrid 1870 (Madrid)","","","","Spain","geographic 2D","6903","8905","North","East","Lat","Long","","9108","","","1998-11-11 00:00:00","Institut de Geomatica; Barcelona.","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_323[] = {"20004","Pulkovo 1995 / Gauss-Kruger zone 4","1995 Coord. Sys. zone 4","","","Russia - west of 24 deg East.","projected 2D","","","North","East","X","Y","9001","","4200","16204","1996-09-12 00:00:00","\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_324[] = {"20005","Pulkovo 1995 / Gauss-Kruger zone 5","1995 Coord. Sys. zone 5","","","Russia - 24 deg to 30 deg East.","projected 2D","","","North","East","X","Y","9001","","4200","16205","1996-09-12 00:00:00","\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_325[] = {"20006","Pulkovo 1995 / Gauss-Kruger zone 6","1995 Coord. Sys. zone 6","","","Russia - 30 deg to 36 deg East.","projected 2D","","","North","East","X","Y","9001","","4200","16206","1996-09-12 00:00:00","\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_326[] = {"20007","Pulkovo 1995 / Gauss-Kruger zone 7","1995 Coord. Sys. zone 7","","","Russia - 36 deg to 42 deg East.","projected 2D","","","North","East","X","Y","9001","","4200","16207","1996-09-12 00:00:00","\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_327[] = {"20008","Pulkovo 1995 / Gauss-Kruger zone 8","1995 Coord. Sys. zone 8","","","Russia - 42 deg to 48 deg East.","projected 2D","","","North","East","X","Y","9001","","4200","16208","1996-09-12 00:00:00","\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_328[] = {"20009","Pulkovo 1995 / Gauss-Kruger zone 9","1995 Coord. Sys. zone 9","","","Russia - 48 deg to 54 deg East.","projected 2D","","","North","East","X","Y","9001","","4200","16209","1996-09-12 00:00:00","\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_329[] = {"20010","Pulkovo 1995 / Gauss-Kruger zone 10","1995 Coord. Sys. zone 10","","","Russia - 54 deg  to 60 deg East.","projected 2D","","","North","East","X","Y","9001","","4200","16210","1996-09-12 00:00:00","\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_330[] = {"20011","Pulkovo 1995 / Gauss-Kruger zone 11","1995 Coord. Sys. zone 11","","","Russia - 60 deg to 66 deg East.","projected 2D","","","North","East","X","Y","9001","","4200","16211","1996-09-12 00:00:00","\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_331[] = {"20012","Pulkovo 1995 / Gauss-Kruger zone 12","1995 Coord. Sys. zone 12","","","Russia - 66 deg to 72 deg East .","projected 2D","","","North","East","X","Y","9001","","4200","16212","1996-09-12 00:00:00","\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_332[] = {"20013","Pulkovo 1995 / Gauss-Kruger zone 13","1995 Coord. Sys. zone 13","","","Russia - 72 deg to 78 deg East.","projected 2D","","","North","East","X","Y","9001","","4200","16213","1996-09-12 00:00:00","\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_333[] = {"20014","Pulkovo 1995 / Gauss-Kruger zone 14","1995 Coord. Sys. zone 14","","","Russia - 78 deg to 84 deg East.","projected 2D","","","North","East","X","Y","9001","","4200","16214","1996-09-12 00:00:00","\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_334[] = {"20015","Pulkovo 1995 / Gauss-Kruger zone 15","1995 Coord. Sys. zone 15","","","Russia - 84 deg to 90 deg East.","projected 2D","","","North","East","X","Y","9001","","4200","16215","1996-09-12 00:00:00","\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_335[] = {"20016","Pulkovo 1995 / Gauss-Kruger zone 16","1995 Coord. Sys. zone 16","","","Russia - 90 deg to 96 deg East.","projected 2D","","","North","East","X","Y","9001","","4200","16216","1996-09-12 00:00:00","\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_336[] = {"20017","Pulkovo 1995 / Gauss-Kruger zone 17","1995 Coord. Sys. zone 17","","","Russia - 96 deg to 102deg East.","projected 2D","","","North","East","X","Y","9001","","4200","16217","1996-09-12 00:00:00","\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_337[] = {"20018","Pulkovo 1995 / Gauss-Kruger zone 18","1995 Coord. Sys. zone 18","","","Russia - 102 deg to 108 deg East.","projected 2D","","","North","East","X","Y","9001","","4200","16218","1996-09-12 00:00:00","\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_338[] = {"20019","Pulkovo 1995 / Gauss-Kruger zone 19","1995 Coord. Sys. zone 19","","","Russia - 108 deg to 114 deg East.","projected 2D","","","North","East","X","Y","9001","","4200","16219","1996-09-12 00:00:00","\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_339[] = {"20020","Pulkovo 1995 / Gauss-Kruger zone 20","1995 Coord. Sys. zone 20","","","Russia - 114 deg to 120 deg East.","projected 2D","","","North","East","X","Y","9001","","4200","16220","1996-09-12 00:00:00","\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_340[] = {"20021","Pulkovo 1995 / Gauss-Kruger zone 21","1995 Coord. Sys. zone 21","","","Russia - 120 deg to 126 deg East.","projected 2D","","","North","East","X","Y","9001","","4200","16221","1996-09-12 00:00:00","\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_341[] = {"20022","Pulkovo 1995 / Gauss-Kruger zone 22","1995 Coord. Sys. zone 22","","","Russia - 126 deg to 132 deg East.","projected 2D","","","North","East","X","Y","9001","","4200","16222","1996-09-12 00:00:00","\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_342[] = {"20023","Pulkovo 1995 / Gauss-Kruger zone 23","1995 Coord. Sys. zone 23","","","Russia - 132 deg to 138 deg East.","projected 2D","","","North","East","X","Y","9001","","4200","16223","1996-09-12 00:00:00","\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_343[] = {"20024","Pulkovo 1995 / Gauss-Kruger zone 24","1995 Coord. Sys. zone 24","","","Russia - 138 deg to 144 deg East.","projected 2D","","","North","East","X","Y","9001","","4200","16224","1996-09-12 00:00:00","\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_344[] = {"20025","Pulkovo 1995 / Gauss-Kruger zone 25","1995 Coord. Sys. zone 25","","","Russia - 144 deg to 150 deg East.","projected 2D","","","North","East","X","Y","9001","","4200","16225","1996-09-12 00:00:00","\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_345[] = {"20026","Pulkovo 1995 / Gauss-Kruger zone 26","1995 Coord. Sys. zone 26","","","Russia - 150 deg to 156 deg East.","projected 2D","","","North","East","X","Y","9001","","4200","16226","1996-09-12 00:00:00","\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_346[] = {"20027","Pulkovo 1995 / Gauss-Kruger zone 27","1995 Coord. Sys. zone 27","","","Russia - 156 deg to 162 deg East.","projected 2D","","","North","East","X","Y","9001","","4200","16227","1996-09-12 00:00:00","\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_347[] = {"20028","Pulkovo 1995 / Gauss-Kruger zone 28","1995 Coord. Sys. zone 28","","","Russia - 162 deg to 168 deg East.","projected 2D","","","North","East","X","Y","9001","","4200","16228","1996-09-12 00:00:00","\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_348[] = {"20029","Pulkovo 1995 / Gauss-Kruger zone 29","1995 Coord. Sys. zone 29","","","Russia - 168 deg to 174 deg East.","projected 2D","","","North","East","X","Y","9001","","4200","16229","1996-09-12 00:00:00","\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_349[] = {"20030","Pulkovo 1995 / Gauss-Kruger zone 30","1995 Coord. Sys. zone 30","","","Russia - 174 deg East to 180 deg.","projected 2D","","","North","East","X","Y","9001","","4200","16230","1996-09-12 00:00:00","\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_350[] = {"20031","Pulkovo 1995 / Gauss-Kruger zone 31","1995 Coord. Sys. zone 31","","","Russia - 180 deg to 174 deg West.","projected 2D","","","North","East","X","Y","9001","","4200","16231","1996-09-12 00:00:00","\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_351[] = {"20032","Pulkovo 1995 / Gauss-Kruger zone 32","1995 Coord. Sys. zone 32","","","Russia - east of 174 deg West.","projected 2D","","","North","East","X","Y","9001","","4200","16232","1996-09-12 00:00:00","\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_352[] = {"20064","Pulkovo 1995 / Gauss-Kruger 4N","Pulkovo 1995 / Gauss 4N","","","Russia - west of 24 deg East.","projected 2D","","","North","East","X","Y","9001","","4200","16304","1996-09-12 00:00:00","\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_353[] = {"20065","Pulkovo 1995 / Gauss-Kruger 5N","Pulkovo 1995 / Gauss 5N","","","Russia - 24 deg to 30 deg East.","projected 2D","","","North","East","X","Y","9001","","4200","16305","1996-09-12 00:00:00","\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_354[] = {"20066","Pulkovo 1995 / Gauss-Kruger 6N","Pulkovo 1995 / Gauss 6N","","","Russia - 30 deg to 36 deg East.","projected 2D","","","North","East","X","Y","9001","","4200","16306","1996-09-12 00:00:00","\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_355[] = {"20067","Pulkovo 1995 / Gauss-Kruger 7N","Pulkovo 1995 / Gauss 7N","","","Russia - 36 deg to 42 deg East.","projected 2D","","","North","East","X","Y","9001","","4200","16307","1996-09-12 00:00:00","\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_356[] = {"20068","Pulkovo 1995 / Gauss-Kruger 8N","Pulkovo 1995 / Gauss 8N","","","Russia - 42 deg to 48 deg East.","projected 2D","","","North","East","X","Y","9001","","4200","16308","1996-09-12 00:00:00","\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_357[] = {"20069","Pulkovo 1995 / Gauss-Kruger 9N","Pulkovo 1995 / Gauss 9N","","","Russia - 48 deg to 54 deg East.","projected 2D","","","North","East","X","Y","9001","","4200","16309","1996-09-12 00:00:00","\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_358[] = {"20070","Pulkovo 1995 / Gauss-Kruger 10N","Pulkovo 1995 / Gauss 10N","","","Russia - 54 deg  to 60 deg East.","projected 2D","","","North","East","X","Y","9001","","4200","16310","1996-09-12 00:00:00","\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_359[] = {"20071","Pulkovo 1995 / Gauss-Kruger 11N","Pulkovo 1995 / Gauss 11N","","","Russia - 60 deg to 66 deg East.","projected 2D","","","North","East","X","Y","9001","","4200","16311","1996-09-12 00:00:00","\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_360[] = {"20072","Pulkovo 1995 / Gauss-Kruger 12N","Pulkovo 1995 / Gauss 12N","","","Russia - 66 deg to 72 deg East .","projected 2D","","","North","East","X","Y","9001","","4200","16312","1996-09-12 00:00:00","\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_361[] = {"20073","Pulkovo 1995 / Gauss-Kruger 13N","Pulkovo 1995 / Gauss 13N","","","Russia - 72 deg to 78 deg East.","projected 2D","","","North","East","X","Y","9001","","4200","16313","1996-09-12 00:00:00","\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_362[] = {"20074","Pulkovo 1995 / Gauss-Kruger 14N","Pulkovo 1995 / Gauss 14N","","","Russia - 78 deg to 84 deg East.","projected 2D","","","North","East","X","Y","9001","","4200","16314","1996-09-12 00:00:00","\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_363[] = {"20075","Pulkovo 1995 / Gauss-Kruger 15N","Pulkovo 1995 / Gauss 15N","","","Russia - 84 deg to 90 deg East.","projected 2D","","","North","East","X","Y","9001","","4200","16315","1996-09-12 00:00:00","\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_364[] = {"20076","Pulkovo 1995 / Gauss-Kruger 16N","Pulkovo 1995 / Gauss 16N","","","Russia - 90 deg to 96 deg East.","projected 2D","","","North","East","X","Y","9001","","4200","16316","1996-09-12 00:00:00","\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_365[] = {"20077","Pulkovo 1995 / Gauss-Kruger 17N","Pulkovo 1995 / Gauss 17N","","","Russia - 96 deg to 102deg East.","projected 2D","","","North","East","X","Y","9001","","4200","16317","1996-09-12 00:00:00","\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_366[] = {"20078","Pulkovo 1995 / Gauss-Kruger 18N","Pulkovo 1995 / Gauss 18N","","","Russia - 102 deg to 108 deg East.","projected 2D","","","North","East","X","Y","9001","","4200","16318","1996-09-12 00:00:00","\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_367[] = {"20079","Pulkovo 1995 / Gauss-Kruger 19N","Pulkovo 1995 / Gauss 19N","","","Russia - 108 deg to 114 deg East.","projected 2D","","","North","East","X","Y","9001","","4200","16319","1996-09-12 00:00:00","\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_368[] = {"20080","Pulkovo 1995 / Gauss-Kruger 20N","Pulkovo 1995 / Gauss 20N","","","Russia - 114 deg to 120 deg East.","projected 2D","","","North","East","X","Y","9001","","4200","16320","1996-09-12 00:00:00","\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_369[] = {"20081","Pulkovo 1995 / Gauss-Kruger 21N","Pulkovo 1995 / Gauss 21N","","","Russia - 120 deg to 126 deg East.","projected 2D","","","North","East","X","Y","9001","","4200","16321","1996-09-12 00:00:00","\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_370[] = {"20082","Pulkovo 1995 / Gauss-Kruger 22N","Pulkovo 1995 / Gauss 22N","","","Russia - 126 deg to 132 deg East.","projected 2D","","","North","East","X","Y","9001","","4200","16322","1996-09-12 00:00:00","\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_371[] = {"20083","Pulkovo 1995 / Gauss-Kruger 23N","Pulkovo 1995 / Gauss 23N","","","Russia - 132 deg to 138 deg East.","projected 2D","","","North","East","X","Y","9001","","4200","16323","1996-09-12 00:00:00","\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_372[] = {"20084","Pulkovo 1995 / Gauss-Kruger 24N","Pulkovo 1995 / Gauss 24N","","","Russia - 138 deg to 144 deg East.","projected 2D","","","North","East","X","Y","9001","","4200","16324","1996-09-12 00:00:00","\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_373[] = {"20085","Pulkovo 1995 / Gauss-Kruger 25N","Pulkovo 1995 / Gauss 25N","","","Russia - 144 deg to 150 deg East.","projected 2D","","","North","East","X","Y","9001","","4200","16325","1996-09-12 00:00:00","\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_374[] = {"20086","Pulkovo 1995 / Gauss-Kruger 26N","Pulkovo 1995 / Gauss 26N","","","Russia - 150 deg to 156 deg East.","projected 2D","","","North","East","X","Y","9001","","4200","16326","1996-09-12 00:00:00","\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_375[] = {"20087","Pulkovo 1995 / Gauss-Kruger 27N","Pulkovo 1995 / Gauss 27N","","","Russia - 156 deg to 162 deg East.","projected 2D","","","North","East","X","Y","9001","","4200","16327","1996-09-12 00:00:00","\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_376[] = {"20088","Pulkovo 1995 / Gauss-Kruger 28N","Pulkovo 1995 / Gauss 28N","","","Russia - 162 deg to 168 deg East.","projected 2D","","","North","East","X","Y","9001","","4200","16328","1996-09-12 00:00:00","\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_377[] = {"20089","Pulkovo 1995 / Gauss-Kruger 29N","Pulkovo 1995 / Gauss 29N","","","Russia - 168 deg to 174 deg East.","projected 2D","","","North","East","X","Y","9001","","4200","16329","1996-09-12 00:00:00","\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_378[] = {"20090","Pulkovo 1995 / Gauss-Kruger 30N","Pulkovo 1995 / Gauss 30N","","","Russia - 174 deg East to 180 deg.","projected 2D","","","North","East","X","Y","9001","","4200","16330","1996-09-12 00:00:00","\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_379[] = {"20091","Pulkovo 1995 / Gauss-Kruger 31N","Pulkovo 1995 / Gauss 31N","","","Russia - 180 deg to 174 deg West.","projected 2D","","","North","East","X","Y","9001","","4200","16331","1996-09-12 00:00:00","\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_380[] = {"20092","Pulkovo 1995 / Gauss-Kruger 32N","Pulkovo 1995 / Gauss 32N","","","Russia - east of 174 deg West.","projected 2D","","","North","East","X","Y","9001","","4200","16332","1996-09-12 00:00:00","\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_381[] = {"20137","Adindan / UTM zone 37N","","","","Ethiopia - west of 42 degrees East.  Sudan - west of 42 degrees East.","projected 2D","","","East","North","E","N","9001","","4201","16037","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_382[] = {"20138","Adindan / UTM zone 38N","","","","Ethiopia - east of 42 degrees East.  Sudan - east of 42 degrees East.","projected 2D","","","East","North","E","N","9001","","4201","16038","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_383[] = {"20248","AGD66 / AMG zone 48","","","","Australia - 102deg East to 108deg East.","projected 2D","","","East","North","E","N","9001","","4202","17448","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_384[] = {"20249","AGD66 / AMG zone 49","","","","Australia - 108deg East to 114deg East.","projected 2D","","","East","North","E","N","9001","","4202","17449","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_385[] = {"20250","AGD66 / AMG zone 50","","","","Australia - 114deg East to 120deg East.","projected 2D","","","East","North","E","N","9001","","4202","17450","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_386[] = {"20251","AGD66 / AMG zone 51","","","","Australia - 120deg East to 126deg East.","projected 2D","","","East","North","E","N","9001","","4202","17451","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_387[] = {"20252","AGD66 / AMG zone 52","","","","Australia - 126deg East to 132deg East.","projected 2D","","","East","North","E","N","9001","","4202","17452","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_388[] = {"20253","AGD66 / AMG zone 53","","","","Australia - 132deg East to 138deg East.","projected 2D","","","East","North","E","N","9001","","4202","17453","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_389[] = {"20254","AGD66 / AMG zone 54","","","","Australia - 138deg East to 144deg East.  Papua New Guinea - west of 144deg East.","projected 2D","","","East","North","E","N","9001","","4202","17454","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_390[] = {"20255","AGD66 / AMG zone 55","","","","Australia - 144deg East to 150deg East.  Papua New Guinea - 144deg East to 150deg East.","projected 2D","","","East","North","E","N","9001","","4202","17455","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_391[] = {"20256","AGD66 / AMG zone 56","","","","Australia - 150deg East to 156deg East.","projected 2D","","","East","North","E","N","9001","","4202","17456","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_392[] = {"20257","AGD66 / AMG zone 57","","","","Australia - 156deg East to 162deg East.","projected 2D","","","East","North","E","N","9001","","4202","17457","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_393[] = {"20258","AGD66 / AMG zone 58","","","","Australia - 162deg East to 168deg East.","projected 2D","","","East","North","E","N","9001","","4202","17458","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_394[] = {"20348","AGD84 / AMG zone 48","","","","Australia - 102deg East to 108deg East.","projected 2D","","","East","North","E","N","9001","","4203","17448","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_395[] = {"20349","AGD84 / AMG zone 49","","","","Australia - 108deg East to 114deg East.","projected 2D","","","East","North","E","N","9001","","4203","17449","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_396[] = {"20350","AGD84 / AMG zone 50","","","","Australia - 114deg East to 120deg East.","projected 2D","","","East","North","E","N","9001","","4203","17450","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_397[] = {"20351","AGD84 / AMG zone 51","","","","Australia - 120deg East to 126deg East.","projected 2D","","","East","North","E","N","9001","","4203","17451","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_398[] = {"20352","AGD84 / AMG zone 52","","","","Australia - 126deg East to 132deg East.","projected 2D","","","East","North","E","N","9001","","4203","17452","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_399[] = {"20353","AGD84 / AMG zone 53","","","","Australia - 132deg East to 138deg East.","projected 2D","","","East","North","E","N","9001","","4203","17453","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_400[] = {"20354","AGD84 / AMG zone 54","","","","Australia - 138deg East to 144deg East.  Papua - New Guinea west of 144deg East.","projected 2D","","","East","North","E","N","9001","","4203","17454","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_401[] = {"20355","AGD84 / AMG zone 55","","","","Australia - 144deg East to 150deg East.  Papua New Guinea - 144deg East to 150deg East.","projected 2D","","","East","North","E","N","9001","","4203","17455","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_402[] = {"20356","AGD84 / AMG zone 56","","","","Australia - 150deg East to 156deg East.","projected 2D","","","East","North","E","N","9001","","4203","17456","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_403[] = {"20357","AGD84 / AMG zone 57","","","","Australia - 156deg East to 162deg East.","projected 2D","","","East","North","E","N","9001","","4203","17457","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_404[] = {"20358","AGD84 / AMG zone 58","","","","Australia - 162deg East to 168deg East.","projected 2D","","","East","North","E","N","9001","","4203","17458","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_405[] = {"20437","Ain el Abd / UTM zone 37N","Ain el Abd / UTM 37N","","","Saudi Arabia - west of 42 degrees East.","projected 2D","","","East","North","E","N","9001","","4204","16037","1997-11-13 00:00:00","","EPSG","","97.59",NULL};
-datafile_rows_t horiz_cs_row_406[] = {"20438","Ain el Abd / UTM zone 38N","Ain el Abd / UTM 38N","","","Kuwait.  Saudi Arabia - between 42 degrees and 48 degrees East.","projected 2D","","","East","North","E","N","9001","","4204","16038","1997-11-13 00:00:00","","EPSG","Known in Kuwait as \"KOC UTM\".","97.59",NULL};
-datafile_rows_t horiz_cs_row_407[] = {"20439","Ain el Abd / UTM zone 39N","Ain el Abd / UTM 39N","","","Saudi Arabia - east of 48 degrees East.","projected 2D","","","East","North","E","N","9001","","4204","16039","1997-11-13 00:00:00","","EPSG","","97.59",NULL};
-datafile_rows_t horiz_cs_row_408[] = {"20499","Ain el Abd / Bahrain Grid","","","","Bahrain.","projected 2D","","","East","North","E","N","9001","","4204","19900","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_409[] = {"20538","Afgooye / UTM zone 38N","","","","Somalia - west of 48 degrees East.","projected 2D","","","East","North","E","N","9001","","4205","16038","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_410[] = {"20539","Afgooye / UTM zone 39N","","","","Somalia - east of 48 degrees East.","projected 2D","","","East","North","E","N","9001","","4205","16039","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_411[] = {"20790","Lisbon (Lisbon)/Portuguese National Grid","Lisbon / Portuguese Grid","","","Portugal - onshore.","projected 2D","","","East","North","X","Y","9001","","4803","19936","1998-11-11 00:00:00","","EPSG","","98.42",NULL};
-datafile_rows_t horiz_cs_row_412[] = {"20822","Aratu / UTM zone 22S","","","","Brazil - coastal areas south of 2 deg 55 min South and west of 48 deg West.","projected 2D","","","East","North","E","N","9001","","4208","16122","1995-07-21 00:00:00","","EPSG","","95.191",NULL};
-datafile_rows_t horiz_cs_row_413[] = {"20823","Aratu / UTM zone 23S","","","","Brazil - coastal areas south of 2 deg 55 min South and between 48 and 42 deg West; offshore Santos basin.","projected 2D","","","East","North","E","N","9001","","4208","16123","1995-07-21 00:00:00","","EPSG","","95.191",NULL};
-datafile_rows_t horiz_cs_row_414[] = {"20824","Aratu / UTM zone 24S","","","","Brazil - coastal areas south of 2 deg 55 min South and east of 42 deg West; offshore Campos basin.","projected 2D","","","East","North","E","N","9001","","4208","16124","1995-07-21 00:00:00","","EPSG","","95.191",NULL};
-datafile_rows_t horiz_cs_row_415[] = {"20934","Arc 1950 / UTM zone 34S","","","","Botswana & Zambia - west of 24 deg East.","projected 2D","","","East","North","E","N","9001","","4209","16134","1997-11-13 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_416[] = {"20935","Arc 1950 / UTM zone 35S","","","","Botswana - east of 24 deg East; Zambia - 24 to 30 deg East; Zimbabwe west of 30 deg East .","projected 2D","","","East","North","E","N","9001","","4209","16135","1997-11-13 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_417[] = {"20936","Arc 1950 / UTM zone 36S","","","","Malawi; Zambia & Zimbabwe - east of 30 deg East.","projected 2D","","","East","North","E","N","9001","","4209","16136","1997-11-13 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_418[] = {"21035","Arc 1960 / UTM zone 35S","","","","Tanzania - west of 30 deg East; Uganda south of equator and west of 30 deg East.","projected 2D","","","East","North","E","N","9001","","4210","16135","1997-11-13 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_419[] = {"21036","Arc 1960 / UTM zone 36S","","","","Kenya - south of equator and west of 36 deg East; Tanzania - 30 to 36 deg East; Uganda south of equator and east of 30 deg East.","projected 2D","","","East","North","E","N","9001","","4210","16136","1997-11-13 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_420[] = {"21037","Arc 1960 / UTM zone 37S","","","","Kenya - south of equator and east of 36 deg East; Tanzania - east of 36 deg East.","projected 2D","","","East","North","E","N","9001","","4210","16137","1997-11-13 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_421[] = {"21095","Arc 1960 / UTM zone 35N","","","","Uganda north of equator and west of 30 deg East.","projected 2D","","","East","North","E","N","9001","","4210","16035","1997-11-13 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_422[] = {"21096","Arc 1960 / UTM zone 36N","","","","Kenya - north of equator and west of 36 deg East; Uganda north of equator and east of 30 deg East.","projected 2D","","","East","North","E","N","9001","","4210","16036","1997-11-13 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_423[] = {"21097","Arc 1960 / UTM zone 37N","","","","Kenya - north of equator and east of 36 deg East.","projected 2D","","","East","North","E","N","9001","","4210","16037","1997-11-13 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_424[] = {"21100","Batavia (Jakarta) / NEIEZ","Batavia / NEIEZ","","","Indonesia - Java.","projected 2D","","","East","North","X","Y","9001","","4813","19905","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_425[] = {"21148","Batavia / UTM zone 48S","","","","Indonesia - Java west of 108 deg East.","projected 2D","","","East","North","E","N","9001","","4211","16148","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_426[] = {"21149","Batavia / UTM zone 49S","","","","Indonesia - Java between 108 and 114 deg East.","projected 2D","","","East","North","E","N","9001","","4211","16149","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_427[] = {"21150","Batavia / UTM zone 50S","","","","Indonesia - Java east of 114 deg East.","projected 2D","","","East","North","E","N","9001","","4211","16150","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_428[] = {"21291","Barbados 1938 / British West Indies Grid","Barbados 1938 / BWI Grid","","","Barbados","projected 2D","","","East","North","E","N","9001","","4212","19942","1999-04-22 00:00:00","Ordnance Survey of Great Britain","EPSG","Superseded by Barbados National Grid (code 21292) from 1983.","",NULL};
-datafile_rows_t horiz_cs_row_429[] = {"21292","Barbados 1938 / Barbados National Grid","Barbados NationaI Grid","","","Barbados","projected 2D","","","East","North","E","N","9001","","4212","19943","1999-04-22 00:00:00","Ordnance Survey of Great Britain","EPSG","Supersedes Barbados 1938 / BWI Grid (code 21291) from 1983.","",NULL};
-datafile_rows_t horiz_cs_row_430[] = {"21413","Beijing 1954 / Gauss-Kruger zone 13","Beijing / Gauss zone 13","","","China - west of 78 deg East.","projected 2D","","","North","East","X","Y","9001","","4214","16213","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_431[] = {"21414","Beijing 1954 / Gauss-Kruger zone 14","Beijing / Gauss zone 14","","","China - 78 deg East  to 84 deg East.","projected 2D","","","North","East","X","Y","9001","","4214","16214","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_432[] = {"21415","Beijing 1954 / Gauss-Kruger zone 15","Beijing / Gauss zone 15","","","China - 84 deg East  to 90 deg East.","projected 2D","","","North","East","X","Y","9001","","4214","16215","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_433[] = {"21416","Beijing 1954 / Gauss-Kruger zone 16","Beijing / Gauss zone 16","","","China - 90 deg East  to 96 deg East.","projected 2D","","","North","East","X","Y","9001","","4214","16216","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_434[] = {"21417","Beijing 1954 / Gauss-Kruger zone 17","Beijing / Gauss zone 17","","","China - 96 deg East  to 102eg E","projected 2D","","","North","East","X","Y","9001","","4214","16217","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_435[] = {"21418","Beijing 1954 / Gauss-Kruger zone 18","Beijing / Gauss zone 18","","","China - 102 deg East  to 108 deg East.","projected 2D","","","North","East","X","Y","9001","","4214","16218","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_436[] = {"21419","Beijing 1954 / Gauss-Kruger zone 19","Beijing / Gauss zone 19","","","China - 108 deg East  to 114 deg East.","projected 2D","","","North","East","X","Y","9001","","4214","16219","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_437[] = {"21420","Beijing 1954 / Gauss-Kruger zone 20","Beijing / Gauss zone 20","","","China - 114 deg East  to 120 deg East.","projected 2D","","","North","East","X","Y","9001","","4214","16220","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_438[] = {"21421","Beijing 1954 / Gauss-Kruger zone 21","Beijing / Gauss zone 21","","","China - 120 deg East  to 126 deg East.","projected 2D","","","North","East","X","Y","9001","","4214","16221","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_439[] = {"21422","Beijing 1954 / Gauss-Kruger zone 22","Beijing / Gauss zone 22","","","China - 126 deg East  to 132 deg East.","projected 2D","","","North","East","X","Y","9001","","4214","16222","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_440[] = {"21423","Beijing 1954 / Gauss-Kruger zone 23","Beijing / Gauss zone 23","","","China - east of 132 deg East.","projected 2D","","","North","East","X","Y","9001","","4214","16223","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_441[] = {"21473","Beijing 1954 / Gauss-Kruger 13N","Beijing / Gauss 13N","","","China - west of 78 deg East.","projected 2D","","","North","East","X","Y","9001","","4214","16313","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_442[] = {"21474","Beijing 1954 / Gauss-Kruger 14N","Beijing / Gauss 14N","","","China - 78 deg East  to 84 deg East.","projected 2D","","","North","East","X","Y","9001","","4214","16314","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_443[] = {"21475","Beijing 1954 / Gauss-Kruger 15N","Beijing / Gauss 15N","","","China - 84 deg East  to 90 deg East.","projected 2D","","","North","East","X","Y","9001","","4214","16315","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_444[] = {"21476","Beijing 1954 / Gauss-Kruger 16N","Beijing / Gauss 16N","","","China - 90 deg East  to 96 deg East.","projected 2D","","","North","East","X","Y","9001","","4214","16316","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_445[] = {"21477","Beijing 1954 / Gauss-Kruger 17N","Beijing / Gauss 17N","","","China - 96 deg East  to 102eg E","projected 2D","","","North","East","X","Y","9001","","4214","16317","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_446[] = {"21478","Beijing 1954 / Gauss-Kruger 18N","Beijing / Gauss 18N","","","China - 102 deg East  to 108 deg East.","projected 2D","","","North","East","X","Y","9001","","4214","16318","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_447[] = {"21479","Beijing 1954 / Gauss-Kruger 19N","Beijing / Gauss 19N","","","China - 108 deg East  to 114 deg East.","projected 2D","","","North","East","X","Y","9001","","4214","16319","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_448[] = {"21480","Beijing 1954 / Gauss-Kruger 20N","Beijing / Gauss 20N","","","China - 114 deg East  to 120 deg East.","projected 2D","","","North","East","X","Y","9001","","4214","16320","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_449[] = {"21481","Beijing 1954 / Gauss-Kruger 21N","Beijing / Gauss 21N","","","China - 120 deg East  to 126 deg East.","projected 2D","","","North","East","X","Y","9001","","4214","16321","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_450[] = {"21482","Beijing 1954 / Gauss-Kruger 22N","Beijing / Gauss 22N","","","China - 126 deg East  to 132 deg East.","projected 2D","","","North","East","X","Y","9001","","4214","16322","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_451[] = {"21483","Beijing 1954 / Gauss-Kruger 23N","Beijing / Gauss 23N","","","China - east of 132 deg East.","projected 2D","","","North","East","X","Y","9001","","4214","16323","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_452[] = {"21500","Belge 1950 (Brussels) / Belge Lambert 50","Belge Lambert 50","","","Belgium - onshore.","projected 2D","","","East","North","X","Y","9001","","4809","19901","1997-04-11 00:00:00","","EPSG","Superseded by 31300 (Belge 1972 / Belge Lambert 72).","97.13",NULL};
-datafile_rows_t horiz_cs_row_453[] = {"21780","Bern 1898 (Bern) / LV03C","LV03C","","","Liechtenstein.  Switzerland.","projected 2D","","","East","North","Y","X","9001","","4801","19923","1997-06-30 00:00:00","","EPSG","Superseded by CH1903 / LV03 (code 21781).","97.27  97.62",NULL};
-datafile_rows_t horiz_cs_row_454[] = {"21781","CH1903 / LV03","LV03","","","Liechtenstein; Switzerland.","projected 2D","","","East","North","Y","X","9001","","4149","19922","1999-10-20 00:00:00","","EPSG","Supersedes LV03C (code 21780).  Superseded by CH1903+/LV95 (code 256).","",NULL};
-datafile_rows_t horiz_cs_row_455[] = {"21817","Bogota / UTM zone 17N","","","","Colombia - offshore west of 78 deg W of Greenwich.","projected 2D","","","East","North","E","N","9001","","4218","16017","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_456[] = {"21818","Bogota / UTM zone 18N","","","","Colombia - offshore east of 78 deg W of Greenwich.","projected 2D","","","East","North","E","N","9001","","4218","16018","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_457[] = {"21891","Bogota / Colombia West zone","Bogota / Colombia 3W","","","Colombia - west of 1 deg 30 min W of Bogota (75d 34m 51.30s W of Greenwich).","projected 2D","","","East","North","X","Y","9001","","4218","18051","1997-11-13 00:00:00","","EPSG","","97.11  97.57",NULL};
-datafile_rows_t horiz_cs_row_458[] = {"21892","Bogota / Colombia Bogota zone","Bogota / Colombia Bogota","","","Colombia - 1 deg 30 min W to 1 deg 30 min E of Bogota (75d 35m W to 72d 35m W of Greenwich).","projected 2D","","","East","North","X","Y","9001","","4218","18052","1997-11-13 00:00:00","","EPSG","","97.11  97.57",NULL};
-datafile_rows_t horiz_cs_row_459[] = {"21893","Bogota / Colombia East Central zone","Bogota / Colombia 3E","","","Colombia - 1 deg 30 min to 4 deg 30 min E of Bogota (72d 35m to 69d 34m W of Greenwich).","projected 2D","","","East","North","X","Y","9001","","4218","18053","1997-11-13 00:00:00","","EPSG","","97.11  97.57",NULL};
-datafile_rows_t horiz_cs_row_460[] = {"21894","Bogota / Colombia East","Bogota / Colombia 6E","","","Colombia - east of 4 deg 30 min E of Bogota (69d 34m 51.3s W of Greenwich).","projected 2D","","","East","North","X","Y","9001","","4218","18054","1997-11-13 00:00:00","","EPSG","","97.11  97.57",NULL};
-datafile_rows_t horiz_cs_row_461[] = {"22032","Camacupa / UTM zone 32S","","","","Angola - west of 12 deg East.","projected 2D","","","East","North","E","N","9001","","4220","16132","1997-11-13 00:00:00","","EPSG","","97.58",NULL};
-datafile_rows_t horiz_cs_row_462[] = {"22033","Camacupa / UTM zone 33S","","","","Angola - east of 12 deg East.","projected 2D","","","East","North","E","N","9001","","4220","16133","1997-11-13 00:00:00","","EPSG","","97.58",NULL};
-datafile_rows_t horiz_cs_row_463[] = {"22091","Camacupa / TM 11.30 SE","","","","Angola - offshore.","projected 2D","","","East","North","E","N","9001","","4220","16611","1998-11-11 00:00:00","Esso Angola","EPSG","Used by Esso Angola for offshore blocks 15 and 24.","",NULL};
-datafile_rows_t horiz_cs_row_464[] = {"22092","Camacupa / TM 12 SE","","","","Angola - offshore.","projected 2D","","","East","North","E","N","9001","","4220","16612","1998-11-11 00:00:00","Shell Angola","EPSG","Used by Shell Angola for offshore blocks 1 and 16.  Used by BP Amoco, Elf and Esso for offshore blocks 31-33.","",NULL};
-datafile_rows_t horiz_cs_row_465[] = {"22191","Campo Inchauspe / Argentina 1","C Inchauspe /Argentina 1","","","Argentina - west of 70 deg 30 min West.","projected 2D","","","North","East","X","Y","9001","","4221","18031","1999-11-15 00:00:00","","EPSG","","97.72",NULL};
-datafile_rows_t horiz_cs_row_466[] = {"22192","Campo Inchauspe / Argentina 2","C Inchauspe /Argentina 2","","","Argentina - between 70 deg 30 min and 67 deg 30 min West.","projected 2D","","","North","East","X","Y","9001","","4221","18032","1999-11-15 00:00:00","","EPSG","","97.72",NULL};
-datafile_rows_t horiz_cs_row_467[] = {"22193","Campo Inchauspe / Argentina 3","C Inchauspe /Argentina 3","","","Argentina - between 67 deg 30 min and 64 deg 30 min West.","projected 2D","","","North","East","X","Y","9001","","4221","18033","1999-11-15 00:00:00","","EPSG","","97.72",NULL};
-datafile_rows_t horiz_cs_row_468[] = {"22194","Campo Inchauspe / Argentina 4","C Inchauspe /Argentina 4","","","Argentina - between 64 deg 30 min and 61 deg 30 min West.","projected 2D","","","North","East","X","Y","9001","","4221","18034","1999-11-15 00:00:00","","EPSG","","97.72",NULL};
-datafile_rows_t horiz_cs_row_469[] = {"22195","Campo Inchauspe / Argentina 5","C Inchauspe /Argentina 5","","","Argentina - between 61 deg 30 min and 58 deg 30 min West.","projected 2D","","","North","East","X","Y","9001","","4221","18035","1999-11-15 00:00:00","","EPSG","","97.72",NULL};
-datafile_rows_t horiz_cs_row_470[] = {"22196","Campo Inchauspe / Argentina 6","C Inchauspe /Argentina 6","","","Argentina - between 58 deg 30 min and 55 deg 30 min West.","projected 2D","","","North","East","X","Y","9001","","4221","18036","1999-11-15 00:00:00","","EPSG","","97.72",NULL};
-datafile_rows_t horiz_cs_row_471[] = {"22197","Campo Inchauspe / Argentina 7","C Inchauspe /Argentina 7","","","Argentina - east of 55 deg 30 min West.","projected 2D","","","North","East","X","Y","9001","","4221","18037","1999-11-15 00:00:00","","EPSG","","97.72",NULL};
-datafile_rows_t horiz_cs_row_472[] = {"22234","Cape / UTM zone 34S","","","","Botswana - west of 21deg East.","projected 2D","","","East","North","E","N","9001","","4222","16134","1995-12-08 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_473[] = {"22235","Cape / UTM zone 35S","","","","Botswana - east of 27deg East.","projected 2D","","","East","North","E","N","9001","","4222","16135","1995-12-08 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_474[] = {"22236","Cape / UTM zone 36S","","","","Botswana - between 21 and 27deg East.","projected 2D","","","East","North","E","N","9001","","4222","16136","1995-12-08 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_475[] = {"22275","South African Coordinate System zone 15","South African CS zone 15","","","South Africa - Walvis Bay.","projected 2D","","","West","South","W","S","9001","","4222","17515","1996-04-12 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_476[] = {"22277","South African Coordinate System zone 17","South African CS zone 17","","","South Africa - west of 18 deg East.","projected 2D","","","West","South","W","S","9001","","4222","17517","1996-04-12 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_477[] = {"22279","South African Coordinate System zone 19","South African CS zone 19","","","South Africa - 18 to 20 deg East.","projected 2D","","","West","South","W","S","9001","","4222","17519","1996-04-12 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_478[] = {"22281","South African Coordinate System zone 21","South African CS zone 21","","","South Africa - 20 to 22 deg East.","projected 2D","","","West","South","W","S","9001","","4222","17521","1996-04-12 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_479[] = {"22283","South African Coordinate System zone 23","South African CS zone 23","","","South Africa - 22 to 24 deg East.","projected 2D","","","West","South","W","S","9001","","4222","17523","1996-04-12 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_480[] = {"22285","South African Coordinate System zone 25","South African CS zone 25","","","Lestho  - west of 26 deg East; South Africa - 24 to 26 deg East.","projected 2D","","","West","South","W","S","9001","","4222","17525","1996-04-12 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_481[] = {"22287","South African Coordinate System zone 27","South African CS zone 27","","","Lestho  - east of 26 deg East;  South Africa - 26 to 28 deg East.","projected 2D","","","West","South","W","S","9001","","4222","17527","1996-04-12 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_482[] = {"22289","South African Coordinate System zone 29","South African CS zone 29","","","South Africa - 28 to 30 deg East.","projected 2D","","","West","South","W","S","9001","","4222","17529","1996-04-12 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_483[] = {"22291","South African Coordinate System zone 31","South African CS zone 31","","","South Africa - 30 to 32 deg East;  Swaziland.","projected 2D","","","West","South","W","S","9001","","4222","17531","1996-04-12 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_484[] = {"22293","South African Coordinate System zone 33","South African CS zone 33","","","South Africa - east of 32 deg East.","projected 2D","","","West","South","W","S","9001","","4222","17533","1996-04-12 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_485[] = {"22300","Carthage (Paris) / Tunisia Mining Grid","Tunisia Mining Grid","","","Tunisia - onshore.","projected 2D","","","East","North","X","Y","9036","","4816","19937","1998-11-11 00:00:00","","EPSG","CAUTION: Carthage datum did not exist when the 1953 decree was issued and an inference is that grid should be applied to the Voirol 1875 geogCS.  Common practice assumes that the current Tunisian geodetic datum of Carthage applies.","",NULL};
-datafile_rows_t horiz_cs_row_486[] = {"22332","Carthage / UTM zone 32N","","","","Tunisia - offshore.","projected 2D","","","East","North","X","Y","9001","","4223","16032","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_487[] = {"22391","Carthage / Nord Tunisie","","","","Tunisia - north of 38.5 grads (34 deg 39 min) North.","projected 2D","","","East","North","X","Y","9001","","4223","18181","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_488[] = {"22392","Carthage / Sud Tunisie","","","","Tunisia - south of 38.5 grads (34 deg 39 min) North.","projected 2D","","","East","North","X","Y","9001","","4223","18182","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_489[] = {"22523","Corrego Alegre / UTM zone 23S","Corrego Alegre / UTM 23S","","","Brazil - NE coastal area between 45 deg W and 42 deg W.","projected 2D","","","East","North","E","N","9001","","4225","16123","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_490[] = {"22524","Corrego Alegre / UTM zone 24S","Corrego Alegre / UTM 24S","","","Brazil - NE coastal area between 42 deg W and 40 deg W.","projected 2D","","","East","North","E","N","9001","","4225","16124","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_491[] = {"22700","Deir ez Zor / Levant Zone","","","","Syrian Arab Republic west of 39 deg E.","projected 2D","","","East","North","X","Y","9001","","4227","19940","1999-04-22 00:00:00","","EPSG","Superseded by Deir ez Zor / Syria Lambert (EPSG code 22770) from 1973.","",NULL};
-datafile_rows_t horiz_cs_row_492[] = {"22770","Deir ez Zor / Syria Lambert","","","","Syrian Arab Republic","projected 2D","","","East","North","X","Y","9001","","4227","19948","1999-10-20 00:00:00","","EPSG","Supersedes Deir ez Zor / Levant zone (EPSG code 22700) from 1973.","",NULL};
-datafile_rows_t horiz_cs_row_493[] = {"22832","Douala / UTM zone 32N","","","","Cameroon.","projected 2D","","","East","North","E","N","9001","","4228","16032","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_494[] = {"22991","Egypt 1907 / Blue Belt","","","","Egypt  - Sinai peninsula.","projected 2D","","","East","North","E","N","9001","","4229","18071","1999-04-22 00:00:00","","EPSG","Also known as Egypt 1907 / Green Belt.    Oil industry usually uses Egypt 1907 / Red Belt rather than this projected CS.","",NULL};
-datafile_rows_t horiz_cs_row_495[] = {"22992","Egypt 1907 / Red Belt","","","","Egypt  - east of 29 deg East.","projected 2D","","","East","North","E","N","9001","","4229","18072","1995-06-02 00:00:00","","EPSG","See also Egypt 1907 / Blue Belt for non oil industry usage in Sinai peninsula.","",NULL};
-datafile_rows_t horiz_cs_row_496[] = {"22993","Egypt 1907 / Purple Belt","","","","Egypt -  west of 29 deg E; north of approx 28 deg 11 min North.","projected 2D","","","East","North","E","N","9001","","4229","18073","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_497[] = {"22994","Egypt 1907 / Extended Purple Belt","Egypt 1907 / Ext. Purple","","","Egypt  - west of 29 deg E; south of approx 28 deg 11 min North.","projected 2D","","","East","North","E","N","9001","","4229","18074","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_498[] = {"23028","ED50 / UTM zone 28N","","","","Europe - 18deg West to 12deg West - Ireland offshore; United Kingdom (UKCS) offshore.","projected 2D","","","East","North","E","N","9001","","4230","16028","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_499[] = {"23029","ED50 / UTM zone 29N","","","","Europe - 12deg West to 6deg West - Portugal; Spain; Ireland offshore; United Kingdom (UKCS) offshore.","projected 2D","","","East","North","E","N","9001","","4230","16029","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_500[] = {"23030","ED50 / UTM zone 30N","","","","Europe - 6deg West to 0deg - Spain; France offshore; Ireland offshore; United Kingdom - UKCS offshore - North Sea west of 0 deg East).","projected 2D","","","East","North","E","N","9001","","4230","16030","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_501[] = {"23031","ED50 / UTM zone 31N","","","","Europe - 0deg to 6deg East - Denmark (North Sea); Germany offshore; Netherlands offshore; Norway; United Kingdom (UKCS) offshore.","projected 2D","","","East","North","E","N","9001","","4230","16031","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_502[] = {"23032","ED50 / UTM zone 32N","","","","Europe - 6deg East  to 12deg East - Denmark; Germany offshore; Netherlands offshore; Norway.","projected 2D","","","East","North","E","N","9001","","4230","16032","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_503[] = {"23033","ED50 / UTM zone 33N","","","","Europe - 12deg East  to 18deg East - Denmark including Bornholm; Norway.","projected 2D","","","East","North","E","N","9001","","4230","16033","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_504[] = {"23034","ED50 / UTM zone 34N","","","","Europe - 18deg East  to 24deg East - Greece; Norway.","projected 2D","","","East","North","E","N","9001","","4230","16034","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_505[] = {"23035","ED50 / UTM zone 35N","","","","Europe - 24deg East  to 30deg East - Greece; Norway; Turkey.","projected 2D","","","East","North","E","N","9001","","4230","16035","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_506[] = {"23036","ED50 / UTM zone 36N","","","","Europe - 30deg East  to 36deg East - Turkey.","projected 2D","","","East","North","E","N","9001","","4230","16036","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_507[] = {"23037","ED50 / UTM zone 37N","","","","Europe - 36deg East  to 42deg East - Turkey.","projected 2D","","","East","North","E","N","9001","","4230","16037","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_508[] = {"23038","ED50 / UTM zone 38N","","","","Europe - 42deg East  to 48deg East - Turkey.","projected 2D","","","East","North","E","N","9001","","4230","16038","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_509[] = {"23090","ED50 / TM 0 N","","","","United Kingdom (UKCS) - offshore North Sea.","projected 2D","","","East","North","E","N","9001","","4230","16400","1998-11-11 00:00:00","Shell UK","EPSG","Used by Shell UK for North Sea","",NULL};
-datafile_rows_t horiz_cs_row_510[] = {"23095","ED50 / TM 5 NE","","","","Netherlands - offshore North Sea.","projected 2D","","","East","North","E","N","9001","","4230","16405","1998-11-11 00:00:00","NAM","EPSG","Used by NAM","",NULL};
-datafile_rows_t horiz_cs_row_511[] = {"23239","Fahud / UTM zone 39N","","","","Oman - west of 54 deg East.","projected 2D","","","East","North","E","N","9001","","4232","16039","1995-06-02 00:00:00","","EPSG","Since 1993 superseded by PSD93 / UTM zone 39N projCS (code 3439). Maximum differences to Fahud adjustment are 20 metres.","",NULL};
-datafile_rows_t horiz_cs_row_512[] = {"23240","Fahud / UTM zone 40N","","","","Oman - east of 54 deg East.","projected 2D","","","East","North","E","N","9001","","4232","16040","1995-06-02 00:00:00","","EPSG","Since 1993 superseded by PSD93 / UTM zone 40N projCS (code 3440). Maximum differences to Fahud adjustment are 20 metres.","",NULL};
-datafile_rows_t horiz_cs_row_513[] = {"23433","Garoua / UTM zone 33N","","","","Cameroon.","projected 2D","","","East","North","E","N","9001","","4234","16033","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_514[] = {"23700","HD72 / EOV","","","","Hungary","projected 2D","","","East","North","Y","X","9001","","4237","19931","1997-07-22 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_515[] = {"23846","ID74 / UTM zone 46N","","","","Indonesia - north of equator and west of 96 deg East.","projected 2D","","","East","North","E","N","9001","","4238","16046","1995-08-08 00:00:00","","EPSG","","95.193  95.20",NULL};
-datafile_rows_t horiz_cs_row_516[] = {"23847","ID74 / UTM zone 47N","","","","Indonesia - north of equator and between 96 deg and 102 deg East.","projected 2D","","","East","North","E","N","9001","","4238","16047","1995-07-21 00:00:00","","EPSG","","95.193",NULL};
-datafile_rows_t horiz_cs_row_517[] = {"23848","ID74 / UTM zone 48N","","","","Indonesia - north of equator and between 102 deg and 108 deg East.","projected 2D","","","East","North","E","N","9001","","4238","16048","1995-07-21 00:00:00","","EPSG","","95.193",NULL};
-datafile_rows_t horiz_cs_row_518[] = {"23849","ID74 / UTM zone 49N","","","","Indonesia - north of equator and between 108 deg and 114 deg East.","projected 2D","","","East","North","E","N","9001","","4238","16049","1995-07-21 00:00:00","","EPSG","","95.193",NULL};
-datafile_rows_t horiz_cs_row_519[] = {"23850","ID74 / UTM zone 50N","","","","Indonesia - north of equator and between 114 deg and 120 deg East.","projected 2D","","","East","North","E","N","9001","","4238","16050","1995-07-21 00:00:00","","EPSG","","95.193",NULL};
-datafile_rows_t horiz_cs_row_520[] = {"23851","ID74 / UTM zone 51N","","","","Indonesia - north of equator and between 120 deg and 126 deg East.","projected 2D","","","East","North","E","N","9001","","4238","16051","1995-07-21 00:00:00","","EPSG","","95.193",NULL};
-datafile_rows_t horiz_cs_row_521[] = {"23852","ID74 / UTM zone 52N","","","","Indonesia - north of equator and between 126 deg and 132 deg East.","projected 2D","","","East","North","E","N","9001","","4238","16052","1995-07-21 00:00:00","","EPSG","","95.193",NULL};
-datafile_rows_t horiz_cs_row_522[] = {"23853","ID74 / UTM zone 53N","","","","Indonesia - north of equator and east of 132 deg East.","projected 2D","","","East","North","E","N","9001","","4238","16053","1995-07-21 00:00:00","","EPSG","","95.193",NULL};
-datafile_rows_t horiz_cs_row_523[] = {"23886","ID74 / UTM zone 46S","","","","Indonesia - south of equator and west of 96 deg East.","projected 2D","","","East","North","E","N","9001","","4238","16146","1995-08-08 00:00:00","","EPSG","","95.193  95.20",NULL};
-datafile_rows_t horiz_cs_row_524[] = {"23887","ID74 / UTM zone 47S","","","","Indonesia - south of equator and between 96 deg and 102 deg East.","projected 2D","","","East","North","E","N","9001","","4238","16147","1995-07-21 00:00:00","","EPSG","","95.193",NULL};
-datafile_rows_t horiz_cs_row_525[] = {"23888","ID74 / UTM zone 48S","","","","Indonesia - south of equator and between 102 deg and 108 deg East.","projected 2D","","","East","North","E","N","9001","","4238","16148","1995-07-21 00:00:00","","EPSG","","95.193",NULL};
-datafile_rows_t horiz_cs_row_526[] = {"23889","ID74 / UTM zone 49S","","","","Indonesia - south of equator and between 108 deg and 114 deg East.","projected 2D","","","East","North","E","N","9001","","4238","16149","1995-07-21 00:00:00","","EPSG","","95.193",NULL};
-datafile_rows_t horiz_cs_row_527[] = {"23890","ID74 / UTM zone 50S","","","","Indonesia - south of equator and between 114 deg and 120 deg East.","projected 2D","","","East","North","E","N","9001","","4238","16150","1995-07-21 00:00:00","","EPSG","","95.193",NULL};
-datafile_rows_t horiz_cs_row_528[] = {"23891","ID74 / UTM zone 51S","","","","Indonesia - south of equator and between 120 deg and 126 deg East.","projected 2D","","","East","North","E","N","9001","","4238","16151","1995-07-21 00:00:00","","EPSG","","95.193",NULL};
-datafile_rows_t horiz_cs_row_529[] = {"23892","ID74 / UTM zone 52S","","","","Indonesia - south of equator and between 126 deg and 132 deg East.","projected 2D","","","East","North","E","N","9001","","4238","16152","1995-07-21 00:00:00","","EPSG","","95.193",NULL};
-datafile_rows_t horiz_cs_row_530[] = {"23893","ID74 / UTM zone 53S","","","","Indonesia - south of equator and between 132 deg and 138 deg East.","projected 2D","","","East","North","E","N","9001","","4238","16153","1995-07-21 00:00:00","","EPSG","","95.193",NULL};
-datafile_rows_t horiz_cs_row_531[] = {"23894","ID74 / UTM zone 54S","","","","Indonesia - south of equator and east of 138 deg East.","projected 2D","","","East","North","E","N","9001","","4238","16154","1995-07-21 00:00:00","","EPSG","","95.193",NULL};
-datafile_rows_t horiz_cs_row_532[] = {"23946","Indian 1954 / UTM zone 46N","Indian 1954 / UTM 46N","","","Myanmar (Burma) - west of 96 deg East.","projected 2D","","","East","North","E","N","9001","","4239","16046","1998-06-13 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_533[] = {"23947","Indian 1954 / UTM zone 47N","Indian 1954 / UTM 47N","","","Myanmar (Burma) - east of 96 deg East; Thailand - west of 102 deg East.","projected 2D","","","East","North","E","N","9001","","4239","16047","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_534[] = {"23948","Indian 1954 / UTM zone 48N","Indian 1954 / UTM 48N","","","Thailand - east of 102 deg East.","projected 2D","","","East","North","E","N","9001","","4239","16048","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_535[] = {"24047","Indian 1975 / UTM zone 47N","Indian 1975 / UTM 47N","","","Thailand - west of 102 deg East.","projected 2D","","","East","North","E","N","9001","","4240","16047","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_536[] = {"24048","Indian 1975 / UTM zone 48N","Indian 1975 / UTM 48N","","","Thailand - east of 102 deg East.","projected 2D","","","East","North","E","N","9001","","4240","16048","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_537[] = {"24100","Jamaica 1875 / Jamaica (Old Grid)","Jamaica 1875 / Old Grid","","","Jamaica.","projected 2D","","","East","North","E","N","9005","","4241","19909","1995-06-02 00:00:00","","EPSG","Superseded by 24200 (JAD69 / Jamaica National Grid).","",NULL};
-datafile_rows_t horiz_cs_row_538[] = {"24200","JAD69 / Jamaica National Grid","JAD69 / Jamaica Grid","","","Jamaica.","projected 2D","","","East","North","E","N","9001","","4242","19910","1995-06-02 00:00:00","","EPSG","Supersedes 24100 (JAD69 / Jamaica National Grid).","",NULL};
-datafile_rows_t horiz_cs_row_539[] = {"24305","Kalianpur 1937 / UTM zone 45N","Kalianpur 37 / UTM 45N","","","Bangladesh - west of 90deg East.","projected 2D","","","East","North","E","N","9001","","4144","16045","1999-10-20 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_540[] = {"24306","Kalianpur 1937 / UTM zone 46N","Kalianpur 37 / UTM 46N","","","Bangladesh - east of 90deg East.","projected 2D","","","East","North","E","N","9001","","4144","16046","1999-10-20 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_541[] = {"24311","Kalianpur 1962 / UTM zone 41N","Kalianpur 62 / UTM 41N","","","Pakistan - west of 66deg East.","projected 2D","","","East","North","E","N","9001","","4145","16041","1999-10-20 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_542[] = {"24312","Kalianpur 1962 / UTM zone 42N","Kalianpur 62 / UTM 42N","","","Pakistan - between 66 and 72deg East.","projected 2D","","","East","North","E","N","9001","","4145","16042","1999-10-20 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_543[] = {"24313","Kalianpur 1962 / UTM zone 43N","Kalianpur 62 / UTM 43N","","","Pakistan - east of 72deg East.","projected 2D","","","East","North","E","N","9001","","4145","16043","1999-10-20 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_544[] = {"24342","Kalianpur 1975 / UTM zone 42N","Kalianpur 75 / UTM 42N","","","India - west of 72deg East.","projected 2D","","","East","North","E","N","9001","","4146","16042","1999-10-20 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_545[] = {"24343","Kalianpur 1975 / UTM zone 43N","Kalianpur 75 / UTM 43N","","","India - between 72 and 78deg East.","projected 2D","","","East","North","E","N","9001","","4146","16043","1999-10-20 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_546[] = {"24344","Kalianpur 1975 / UTM zone 44N","Kalianpur 75 / UTM 44N","","","India - between 78 and 84deg East.","projected 2D","","","East","North","E","N","9001","","4146","16044","1999-10-20 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_547[] = {"24345","Kalianpur 1975 / UTM zone 45N","Kalianpur 75 / UTM 45N","","","India - between 84 and 90deg East.","projected 2D","","","East","North","E","N","9001","","4146","16045","1999-10-20 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_548[] = {"24346","Kalianpur 1975 / UTM zone 46N","Kalianpur 75 / UTM 46N","","","India - between 90 and 96deg East.","projected 2D","","","East","North","E","N","9001","","4146","16046","1999-10-20 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_549[] = {"24347","Kalianpur 1975 / UTM zone 47N","Kalianpur 75 / UTM 47N","","","India - east of 96deg East.","projected 2D","","","East","North","E","N","9001","","4146","16047","1999-10-20 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_550[] = {"24370","Kalianpur 1880 / India zone 0","Kalianpur / India 0","","","Pakistan north of 35 deg 35 min North.","projected 2D","","","East","North","E","N","9084","","4243","18110","1999-10-20 00:00:00","","EPSG","","97.23",NULL};
-datafile_rows_t horiz_cs_row_551[] = {"24371","Kalianpur 1880 / India zone I","Kalianpur / India I","","","India north of 28 deg North; Pakistan 28 deg to 35 deg 35 min North.","projected 2D","","","East","North","E","N","9084","","4243","18111","1999-10-20 00:00:00","","EPSG","","97.23",NULL};
-datafile_rows_t horiz_cs_row_552[] = {"24372","Kalianpur 1880 / India zone IIa","Kalianpur / India IIa","","","India - between 21 deg and 28 deg North and  west of 82 deg East; Pakistan - south of 28 deg North.","projected 2D","","","East","North","E","N","9084","","4243","18112","1999-10-20 00:00:00","","EPSG","","97.23",NULL};
-datafile_rows_t horiz_cs_row_553[] = {"24373","Kalianpur 1880 / India zone III","Kalianpur / India III","","","India - between 15 deg and 21 deg North.","projected 2D","","","East","North","E","N","9084","","4243","18114","1999-10-20 00:00:00","","EPSG","","97.23",NULL};
-datafile_rows_t horiz_cs_row_554[] = {"24374","Kalianpur 1880 / India zone IV","Kalianpur / India IV","","","India - south of 15 deg North.","projected 2D","","","East","North","E","N","9084","","4243","18116","1999-10-20 00:00:00","","EPSG","","97.23",NULL};
-datafile_rows_t horiz_cs_row_555[] = {"24375","Kalianpur 1937 / India zone IIb","Kalianpur 37 / India IIb","","","Bangladesh.","projected 2D","","","East","North","E","N","9001","","4144","18238","1999-10-20 00:00:00","","EPSG","Used by Bangladesh since metrication.  Metric conversion applies A.R.Clarke's Indian foot-British foot ratio of 0.99999566 and Benoit's 1895 British inch-metre ratio of 39.370115 rounded as Ind ft = 0.30479841m exactly.","97.23",NULL};
-datafile_rows_t horiz_cs_row_556[] = {"24376","Kalianpur 1962 / India zone I","Kalianpur 62 / India I","","","Pakistan - north of 28deg North.","projected 2D","","","East","North","E","N","9001","","4145","18236","1999-10-20 00:00:00","","EPSG","Used by Pakistan since metrication.  Metric conversion applies A.R.Clarke's Indian foot-British foot ratio of 0.99999566 and J.S.Clark's 1865 British inch-metre ratio of 39.369971 rounded by G.Bomford with slight error as Ind ft = 0.3048996m exac [...]
-datafile_rows_t horiz_cs_row_557[] = {"24377","Kalianpur 1962 / India zone IIa","Kalianpur 62 / India IIa","","","Pakistan - south of 28deg North.","projected 2D","","","East","North","E","N","9001","","4145","18237","1999-10-20 00:00:00","","EPSG","Used by Pakistan since metrication.  Metric conversion applies A.R.Clarke's Indian foot-British foot ratio of 0.99999566 and J.S.Clark's 1865 British inch-metre ratio of 39.369971 rounded by G.Bomford with slight error as Ind ft = 0.3048996m  [...]
-datafile_rows_t horiz_cs_row_558[] = {"24378","Kalianpur 1975 / India zone I","Kalianpur 75 / India I","","","India - north of 28deg North and west of 82deg East.","projected 2D","","","East","North","E","N","9001","","4146","18231","1999-10-20 00:00:00","","EPSG","Used by India since metrication.  Metric conversion applies A.R.Clarke's Indian foot-British foot ratio of 0.99999566 and J.S.Clark's 1865 British inch-metre ratio of 39.369971 rounded as 1 Ind ft = 0.3048995m exactly.","97.23 [...]
-datafile_rows_t horiz_cs_row_559[] = {"24379","Kalianpur 1975 / India zone IIa","Kalianpur 75 / India IIa","","","India - between 28deg and 21deg North and west of 82deg East.","projected 2D","","","East","North","E","N","9001","","4146","18232","1999-10-20 00:00:00","","EPSG","Used by India since metrication.  Metric conversion applies A.R.Clarke's Indian foot-British foot ratio of 0.99999566 and J.S.Clark's 1865 British inch-metre ratio of 39.369971 rounded as 1 Ind ft = 0.3048995m exa [...]
-datafile_rows_t horiz_cs_row_560[] = {"24380","Kalianpur 1975 / India zone IIb","Kalianpur 75 / India IIb","","","India - north of 21deg North and east of 82deg East.","projected 2D","","","East","North","E","N","9001","","4146","18235","1999-10-20 00:00:00","","EPSG","Used by India since metrication.  Metric conversion applies A.R.Clarke's Indian foot-British foot ratio of 0.99999566 and J.S.Clark's 1865 British inch-metre ratio of 39.369971 rounded as 1 Ind ft = 0.3048995m exactly.","9 [...]
-datafile_rows_t horiz_cs_row_561[] = {"24381","Kalianpur 1975 / India zone III","Kalianpur 75 / India III","","","India - between 21deg and 15deg North.","projected 2D","","","East","North","E","N","9001","","4146","18233","1999-10-20 00:00:00","","EPSG","Used by India since metrication.  Metric conversion applies A.R.Clarke's Indian foot-British foot ratio of 0.99999566 and J.S.Clark's 1865 British inch-metre ratio of 39.369971 rounded as 1 Ind ft = 0.3048995m exactly.","97.23",NULL};
-datafile_rows_t horiz_cs_row_562[] = {"24382","Kalianpur 1880 / India zone IIb","Kalianpur / India IIb","","","Bangladesh; India - north of 22 deg North and east of 82 deg East; Myanmar (Burma) - north of 22 deg North.","projected 2D","","","East","North","E","N","9084","","4243","18113","1999-10-20 00:00:00","","EPSG","","97.23",NULL};
-datafile_rows_t horiz_cs_row_563[] = {"24383","Kalianpur 1975 / India zone IV","Kalianpur 75 / India IV","","","India - south of 21deg North.","projected 2D","","","East","North","E","N","9001","","4146","18234","1999-10-20 00:00:00","","EPSG","Used by India since metrication.  Metric conversion applies A.R.Clarke's Indian foot-British foot ratio of 0.99999566 and J.S.Clark's 1865 British inch-metre ratio of 39.369971 rounded as 1 Ind ft = 0.3048995m exactly.","97.23",NULL};
-datafile_rows_t horiz_cs_row_564[] = {"24500","Kertau / Singapore Grid","","","","Singapore.","projected 2D","","","East","North","E","N","9001","","4245","19920","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_565[] = {"24547","Kertau / UTM zone 47N","","","","Malaysia - West Malaysia west of 102 deg East.","projected 2D","","","East","North","E","N","9001","","4245","16047","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_566[] = {"24548","Kertau / UTM zone 48N","","","","Malaysia - West Malaysia east of 102 deg East.","projected 2D","","","East","North","E","N","9001","","4245","16048","1995-07-21 00:00:00","","EPSG","","95.192",NULL};
-datafile_rows_t horiz_cs_row_567[] = {"24571","Kertau / R.S.O. Malaya (ch)","","","","Malaysia - West Malaysia","projected 2D","","","East","North","E","N","9062","","4245","19935","1999-10-20 00:00:00","","EPSG","Adopts metric conversion of 39.370113 inches per metre.","97.231",NULL};
-datafile_rows_t horiz_cs_row_568[] = {"24600","KOC Lambert","","","","Kuwait.","projected 2D","","","East","North","E","N","9001","","4246","19906","1996-04-12 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_569[] = {"24718","La Canoa / UTM zone 18N","","","","Venezuela - west of 72 deg West.","projected 2D","","","East","North","E","N","9001","","4247","16018","1999-10-20 00:00:00","","EPSG","Sometimes referred to as PSAD56 / UTM zone 18N.","",NULL};
-datafile_rows_t horiz_cs_row_570[] = {"24719","La Canoa / UTM zone 19N","","","","Venezuela - between 72 and 66 deg West.","projected 2D","","","East","North","E","N","9001","","4247","16019","1999-10-20 00:00:00","","EPSG","Sometimes referred to as PSAD56 / UTM zone 19N.","",NULL};
-datafile_rows_t horiz_cs_row_571[] = {"24720","La Canoa / UTM zone 20N","","","","Venezuela - east of 66 deg West.","projected 2D","","","East","North","E","N","9001","","4247","16020","1995-06-02 00:00:00","","EPSG","Sometimes referred to as PSAD56 / UTM zone 20N.","",NULL};
-datafile_rows_t horiz_cs_row_572[] = {"24818","PSAD56 / UTM zone 18N","","","","South America (Ecuador;  [Venezuela]) 78deg West to 72deg West.","projected 2D","","","East","North","E","N","9001","","4248","16018","1995-06-02 00:00:00","","EPSG","In Venezuela also known as La Canoa / UTM zone 18N.","",NULL};
-datafile_rows_t horiz_cs_row_573[] = {"24819","PSAD56 / UTM zone 19N","","","","South America (Netherlands Antilles; [Venezuela]) 72deg West  to 66deg West.","projected 2D","","","East","North","E","N","9001","","4248","16019","1995-06-02 00:00:00","","EPSG","In Venezuela also known as La Canoa / UTM zone 19N.","",NULL};
-datafile_rows_t horiz_cs_row_574[] = {"24820","PSAD56 / UTM zone 20N","","","","South America (Guyana; [Venezuela]) 66deg West  to 60deg West.","projected 2D","","","East","North","E","N","9001","","4248","16020","1995-06-02 00:00:00","","EPSG","In Venezuela also known as La Canoa / UTM zone 20N.","",NULL};
-datafile_rows_t horiz_cs_row_575[] = {"24821","PSAD56 / UTM zone 21N","","","","South America (Guyana; Suriname) 60deg West  to 54deg West.","projected 2D","","","East","North","E","N","9001","","4248","16021","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_576[] = {"24877","PSAD56 / UTM zone 17S","","","","South America (Chile; Ecuador; Peru) 84deg West  to 78deg West.","projected 2D","","","East","North","E","N","9001","","4248","16117","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_577[] = {"24878","PSAD56 / UTM zone 18S","","","","South America (Chile; Ecuador; Peru) 78deg West  to 72deg West.","projected 2D","","","East","North","E","N","9001","","4248","16118","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_578[] = {"24879","PSAD56 / UTM zone 19S","","","","South America (Bolivia; Chile; Peru) 72deg West  to 66deg West.","projected 2D","","","East","North","E","N","9001","","4248","16119","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_579[] = {"24880","PSAD56 / UTM zone 20S","","","","South America (Bolivia) 66deg West  to 60deg West.","projected 2D","","","East","North","E","N","9001","","4248","16120","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_580[] = {"24882","PSAD56 / UTM zone 22S","","","","Brazil - offshore Amazon Cone","projected 2D","","","East","North","E","N","9001","","4248","16122","1999-04-22 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_581[] = {"24891","PSAD56 / Peru west zone","","","","Peru west of 79 deg West.","projected 2D","","","East","North","X","Y","9001","","4248","18161","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_582[] = {"24892","PSAD56 / Peru central zone","PSAD56 / Peru central","","","Peru 79 to 73 deg West.","projected 2D","","","East","North","X","Y","9001","","4248","18162","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_583[] = {"24893","PSAD56 / Peru east zone","","","","Peru east of 73 deg West.","projected 2D","","","East","North","X","Y","9001","","4248","18163","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_584[] = {"25000","Leigon / Ghana Metre Grid","Leigon / Ghana Grid","","","Ghana.","projected 2D","","","East","North","E","N","9001","","4250","19904","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_585[] = {"25231","Lome / UTM zone 31N","","","","Togo.","projected 2D","","","East","North","E","N","9001","","4252","16031","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_586[] = {"25391","Luzon 1911 / Philippines zone I","Luzon / Philippines I","","","Philippines - west of 118 deg East.","projected 2D","","","East","North","X","Y","9001","","4253","18171","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_587[] = {"25392","Luzon 1911 / Philippines zone II","Luzon / Philippines II","","","Philippines - Palawan; Calamian Islands.","projected 2D","","","East","North","X","Y","9001","","4253","18172","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_588[] = {"25393","Luzon 1911 / Philippines zone III","Luzon / Philippines III","","","Philippines - Luzon (except SE part;); Mindoro.","projected 2D","","","East","North","X","Y","9001","","4253","18173","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_589[] = {"25394","Luzon 1911 / Philippines zone IV","Luzon / Philippines IV","","","Philippines - SE Luzon; Tablas; Masbate; Panay; Cebu; Negros; west Mindanao.","projected 2D","","","East","North","X","Y","9001","","4253","18174","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_590[] = {"25395","Luzon 1911 / Philippines zone V","Luzon / Philippines V","","","Philippines - east Mindanao; Bohol; Samar.","projected 2D","","","East","North","X","Y","9001","","4253","18175","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_591[] = {"25700","Makassar (Jakarta) / NEIEZ","Makassar / NEIEZ","","","Indonesia - south west Sulawesi.","projected 2D","","","East","North","X","Y","9001","","4804","19905","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_592[] = {"25828","ETRF89 / UTM zone 28N","","","","Europe - 18deg West to 12deg West - United Kingdom (UKCS) offshore.","projected 2D","","","East","North","E","N","9001","","4258","16028","1999-04-22 00:00:00","","EPSG","","99.11",NULL};
-datafile_rows_t horiz_cs_row_593[] = {"25829","ETRF89 / UTM zone 29N","","","","Europe - 12deg West to 6deg West - United Kingdom (UKCS) offshore.","projected 2D","","","East","North","E","N","9001","","4258","16029","1999-04-22 00:00:00","","EPSG","","99.11",NULL};
-datafile_rows_t horiz_cs_row_594[] = {"25830","ETRF89 / UTM zone 30N","","","","Europe - 6deg West to 0deg.","projected 2D","","","East","North","E","N","9001","","4258","16030","1999-04-22 00:00:00","","EPSG","","99.11",NULL};
-datafile_rows_t horiz_cs_row_595[] = {"25831","ETRF89 / UTM zone 31N","","","","Europe - 0deg to 6deg East - Norway.","projected 2D","","","East","North","E","N","9001","","4258","16031","1999-04-22 00:00:00","","EPSG","","99.11",NULL};
-datafile_rows_t horiz_cs_row_596[] = {"25832","ETRF89 / UTM zone 32N","","","","Europe - 6deg East  to 12deg East - Norway.","projected 2D","","","East","North","E","N","9001","","4258","16032","1999-04-22 00:00:00","","EPSG","","99.11",NULL};
-datafile_rows_t horiz_cs_row_597[] = {"25833","ETRF89 / UTM zone 33N","","","","Europe - 12deg East  to 18deg East - Norway.","projected 2D","","","East","North","E","N","9001","","4258","16033","1999-04-22 00:00:00","","EPSG","","99.11",NULL};
-datafile_rows_t horiz_cs_row_598[] = {"25834","ETRF89 / UTM zone 34N","","","","Europe - 18deg East  to 24deg East - Norway.","projected 2D","","","East","North","E","N","9001","","4258","16034","1999-04-22 00:00:00","","EPSG","","99.11",NULL};
-datafile_rows_t horiz_cs_row_599[] = {"25835","ETRF89 / UTM zone 35N","","","","Europe - 24deg East  to 30deg East - Norway.","projected 2D","","","East","North","E","N","9001","","4258","16035","1999-04-22 00:00:00","","EPSG","","99.11",NULL};
-datafile_rows_t horiz_cs_row_600[] = {"25836","ETRF89 / UTM zone 36N","","","","Europe - 30deg East  to 36deg East.","projected 2D","","","East","North","E","N","9001","","4258","16036","1999-04-22 00:00:00","","EPSG","","99.11",NULL};
-datafile_rows_t horiz_cs_row_601[] = {"25837","ETRF89 / UTM zone 37N","","","","Europe - 36deg East  to 42deg East.","projected 2D","","","East","North","E","N","9001","","4258","16037","1999-04-22 00:00:00","","EPSG","","99.11",NULL};
-datafile_rows_t horiz_cs_row_602[] = {"25838","ETRF89 / UTM zone 38N","","","","Europe - 42deg East  to 48deg East.","projected 2D","","","East","North","E","N","9001","","4258","16038","1999-04-22 00:00:00","","EPSG","","99.11",NULL};
-datafile_rows_t horiz_cs_row_603[] = {"25884","ETRF89 / TM Baltic93","","","","Estonia;  Latvia;  Lithuania.","projected 2D","","","North","East","X","Y","9001","","4258","19939","1999-04-22 00:00:00","http://www.geo.ut.ee/~raivo/estcoord.html","EPSG","Used as a common coordinate system for the Baltic states and for medium and small scale mapping in Estonia since 1993.","99.11",NULL};
-datafile_rows_t horiz_cs_row_604[] = {"25932","Malongo 1987 / UTM zone 32S","Malongo 1987 / UTM 32S","","","Angola - Cabinda.","projected 2D","","","East","North","E","N","9001","","4259","16132","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_605[] = {"26191","Merchich / Nord Maroc","","","","Morocco north of 35 grads (31 deg 30 min) North.","projected 2D","","","East","North","X","Y","9001","","4261","18131","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_606[] = {"26192","Merchich / Sud Maroc","","","","Morocco 31grads to 35grads  (27 deg 54 min to 31 deg 30 min) North.","projected 2D","","","East","North","X","Y","9001","","4261","18132","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_607[] = {"26193","Merchich / Sahara","","","","Morocco south of 31grads  (27 deg 54 min) North.","projected 2D","","","East","North","X","Y","9001","","4261","18133","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_608[] = {"26237","Massawa / UTM zone 37N","","","","Eritrea.","projected 2D","","","East","North","E","N","9001","","4262","16037","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_609[] = {"26331","Minna / UTM zone 31N","","","","Nigeria - offshore beyond continental shelf west of 6 deg East.","projected 2D","","","East","North","E","N","9001","","4263","16031","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_610[] = {"26332","Minna / UTM zone 32N","","","","Nigeria - offshore beyond continental shelf.","projected 2D","","","East","North","E","N","9001","","4263","16032","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_611[] = {"26391","Minna / Nigeria West Belt","Minna / Nigeria West","","","Nigeria west of 6 deg 30 min East.","projected 2D","","","East","North","E","N","9001","","4263","18151","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_612[] = {"26392","Minna / Nigeria Mid Belt","","","","Nigeria between 6 deg 30 min and 10 deg 30 min East.","projected 2D","","","East","North","E","N","9001","","4263","18152","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_613[] = {"26393","Minna / Nigeria East Belt","Minna / Nigeria East","","","Nigeria east of 10 deg 30 min East.","projected 2D","","","East","North","E","N","9001","","4263","18153","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_614[] = {"26432","Mhast / UTM zone 32S","","","","Angola - Cabinda.","projected 2D","","","East","North","E","N","9001","","4264","16132","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_615[] = {"26591","Monte Mario (Rome) / Italy zone 1","Monte Mario / Italy 1","","","Italy west of 12 deg East.","projected 2D","","","East","North","X","Y","9001","","4806","18121","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_616[] = {"26592","Monte Mario (Rome) / Italy zone 2","Monte Mario / Italy 2","","","Italy east of 12 deg East.","projected 2D","","","East","North","X","Y","9001","","4806","18122","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_617[] = {"26632","M'poraloko / UTM zone 32N","M'poraloko / UTM 32N","","","Gabon - north of equator.","projected 2D","","","East","North","E","N","9001","","4266","16032","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_618[] = {"26692","M'poraloko / UTM zone 32S","M'poraloko / UTM 32S","","","Gabon - south of equator.","projected 2D","","","East","North","E","N","9001","","4266","16132","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_619[] = {"26703","NAD27 / UTM zone 3N","","","","North America - United States (USA) - Alaska - 168deg West  to 162deg West.","projected 2D","","","East","North","E","N","9001","","4267","16003","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_620[] = {"26704","NAD27 / UTM zone 4N","","","","North America - United States (USA) - Alaska - 162deg West  to 156deg West.","projected 2D","","","East","North","E","N","9001","","4267","16004","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_621[] = {"26705","NAD27 / UTM zone 5N","","","","North America - United States (USA) - Alaska - 156deg West  to 150deg West.","projected 2D","","","East","North","E","N","9001","","4267","16005","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_622[] = {"26706","NAD27 / UTM zone 6N","","","","North America - United States (USA) - Alaska - 150deg West  to 144deg West.","projected 2D","","","East","North","E","N","9001","","4267","16006","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_623[] = {"26707","NAD27 / UTM zone 7N","","","","North America - Canada; United States (USA) - Alaska - 144deg West  to 138deg West.","projected 2D","","","East","North","E","N","9001","","4267","16007","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_624[] = {"26708","NAD27 / UTM zone 8N","","","","North America - Canada; United States (USA) - 138deg West  to 132deg West.","projected 2D","","","East","North","E","N","9001","","4267","16008","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_625[] = {"26709","NAD27 / UTM zone 9N","","","","North America - Canada; United States (USA) - 132deg West  to 126deg West.","projected 2D","","","East","North","E","N","9001","","4267","16009","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_626[] = {"26710","NAD27 / UTM zone 10N","","","","North America - Canada; United States (USA) - 130deg West  to 120deg West.","projected 2D","","","East","North","E","N","9001","","4267","16010","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_627[] = {"26711","NAD27 / UTM zone 11N","","","","North America - Canada; Mexico; United States (USA) - 120deg West  to 114deg West.","projected 2D","","","East","North","E","N","9001","","4267","16011","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_628[] = {"26712","NAD27 / UTM zone 12N","","","","North America - Canada; Mexico; United States (USA) - 114deg West  to 108deg West.","projected 2D","","","East","North","E","N","9001","","4267","16012","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_629[] = {"26713","NAD27 / UTM zone 13N","","","","North America - Canada; Mexico; United States (USA) - 108deg West  to 102deg West.","projected 2D","","","East","North","E","N","9001","","4267","16013","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_630[] = {"26714","NAD27 / UTM zone 14N","","","","North America - Canada; Mexico; United States (USA) - 102deg West  to 96deg West.","projected 2D","","","East","North","E","N","9001","","4267","16014","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_631[] = {"26715","NAD27 / UTM zone 15N","","","","North America - Canada; Mexico; United States (USA) - 96deg West  to 90deg West.","projected 2D","","","East","North","E","N","9001","","4267","16015","1995-06-02 00:00:00","","EPSG","In Ontario superseded by NAD27(76) / UTM zone 15N (code 227).","",NULL};
-datafile_rows_t horiz_cs_row_632[] = {"26716","NAD27 / UTM zone 16N","","","","North America - Canada; Mexico; United States (USA) - 90deg West  to 84deg West.","projected 2D","","","East","North","E","N","9001","","4267","16016","1995-06-02 00:00:00","","EPSG","In Ontario superseded by NAD27(76) / UTM zone 16N (code 228).","",NULL};
-datafile_rows_t horiz_cs_row_633[] = {"26717","NAD27 / UTM zone 17N","","","","North America - Canada; Mexico; United States (USA) - 84deg West  to 78deg West.","projected 2D","","","East","North","E","N","9001","","4267","16017","1995-06-02 00:00:00","","EPSG","In Ontario superseded by NAD27(76) / UTM zone 17N (code 229).  In Quebec superseded by NAD27(CGQ77) / UTM zone 17N (code 231).","",NULL};
-datafile_rows_t horiz_cs_row_634[] = {"26718","NAD27 / UTM zone 18N","","","","North America - Canada; United States (USA) - 78deg West  to 72deg West.","projected 2D","","","East","North","E","N","9001","","4267","16018","1995-06-02 00:00:00","","EPSG","In Ontario superseded by NAD27(76) / UTM zone 18N (code 230).  In Quebec superseded by NAD27(CGQ77) / UTM zone 18N (code 232).","",NULL};
-datafile_rows_t horiz_cs_row_635[] = {"26719","NAD27 / UTM zone 19N","","","","North America - Canada; United States (USA) - 72deg West  to 66deg West.","projected 2D","","","East","North","E","N","9001","","4267","16019","1995-06-02 00:00:00","","EPSG","In Quebec superseded by NAD27(CGQ77) / UTM zone 19N (code 233).","",NULL};
-datafile_rows_t horiz_cs_row_636[] = {"26720","NAD27 / UTM zone 20N","","","","North America - Antigua and Barbuda - Barbuda.  British Virgin Islands (military).  Canada; United States (USA) offshore Atlantic - 66deg West  to 60deg West.","projected 2D","","","East","North","E","N","9001","","4267","16020","1995-06-02 00:00:00","","EPSG","In Quebec superseded by NAD27(CGQ77) / UTM zone 20N (code 234).","",NULL};
-datafile_rows_t horiz_cs_row_637[] = {"26721","NAD27 / UTM zone 21N","","","","North America - Canada - 60deg West  to 54deg West.","projected 2D","","","East","North","E","N","9001","","4267","16021","1995-06-02 00:00:00","","EPSG","In Quebec superseded by NAD27(CGQ77) / UTM zone 21N (code 235).","",NULL};
-datafile_rows_t horiz_cs_row_638[] = {"26722","NAD27 / UTM zone 22N","","","","North America - Canada - 54deg West  to 48deg West.","projected 2D","","","East","North","E","N","9001","","4267","16022","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_639[] = {"26729","NAD27 / Alabama East","","","","United States (USA) - Alabama - AL_E - counties east of approx 86d 37m West - Barbour; Bullock; Calhoun; Chambers; Cherokee; Clay; Cleburne; Coffee; Coosa; Covington; Crenshaw; Dale; De Kalb; Elmore; Etowah; Geneva; Henry; Houston; Jackson; Lee; Macon; Mad","projected 2D","","","East","North","X","Y","9003","","4267","10101","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_640[] = {"26730","NAD27 / Alabama West","","","","United States (USA) - Alabama - AL_W - counties west of approx 86d 37m West - Autauga; Baldwin; Bibb; Blount; Butler; Chilton; Choctaw; Clarke; Colbert; Conecuh; Cullman; Dallas; Escambia; Fayette; Franklin; Greene; Hale; Jefferson; Lamar; Lauderdale; Lawr","projected 2D","","","East","North","X","Y","9003","","4267","10102","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_641[] = {"26731","NAD27 / Alaska zone 1","","","","United States - Alaska - Panhandle.","projected 2D","","","East","North","X","Y","9003","","4267","15001","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_642[] = {"26732","NAD27 / Alaska zone 2","","","","United States - Alaska - 141deg to 144deg West.","projected 2D","","","East","North","X","Y","9003","","4267","15002","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_643[] = {"26733","NAD27 / Alaska zone 3","","","","United States - Alaska - 144deg to 148deg West.","projected 2D","","","East","North","X","Y","9003","","4267","15003","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_644[] = {"26734","NAD27 / Alaska zone 4","","","","United States - Alaska - 148deg to 152deg West.","projected 2D","","","East","North","X","Y","9003","","4267","15004","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_645[] = {"26735","NAD27 / Alaska zone 5","","","","United States - Alaska - 152deg to 156deg West.","projected 2D","","","East","North","X","Y","9003","","4267","15005","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_646[] = {"26736","NAD27 / Alaska zone 6","","","","United States - Alaska - 156deg to 160deg West.","projected 2D","","","East","North","X","Y","9003","","4267","15006","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_647[] = {"26737","NAD27 / Alaska zone 7","","","","United States - Alaska - 160deg to 164deg West.","projected 2D","","","East","North","X","Y","9003","","4267","15007","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_648[] = {"26738","NAD27 / Alaska zone 8","","","","United States - Alaska - 164deg to 168deg West; north of 54d 30m North.","projected 2D","","","East","North","X","Y","9003","","4267","15008","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_649[] = {"26739","NAD27 / Alaska zone 9","","","","United States - Alaska - West of 168deg West and north of 54d 30m North.","projected 2D","","","East","North","X","Y","9003","","4267","15009","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_650[] = {"26740","NAD27 / Alaska zone 10","","","","United States - Alaska - Aleutian Islands.","projected 2D","","","East","North","X","Y","9003","","4267","15010","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_651[] = {"26741","NAD27 / California zone I","NAD27 / California I","","","United States (USA) - California - CA_1 - counties north of approx 40 deg North - Del Norte; Humboldt; Lassen; Modoc; Plumas; Shasta; Siskiyou; Tehama; Trinity","projected 2D","","","East","North","X","Y","9003","","4267","10401","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_652[] = {"26742","NAD27 / California zone II","NAD27 / California II","","","United States (USA) - California - CA_2 - counties between approx 40 deg & 38d 15m North - Alpine; Amador; Butte; Colusa; El Dorado; Glenn; Lake; Mendocino; Napa; Nevada; Placer; Sacramento; Sierra; Solano; Sonoma; Sutter; Yolo; Yuba","projected 2D","","","East","North","X","Y","9003","","4267","10402","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_653[] = {"26743","NAD27 / California zone III","NAD27 / California III","","","United States (USA) - California - CA_3 - counties between approx 38d 15m & 37d North - Alameda; Calaveras; Contra Costa; Madera; Marin; Mariposa; Merced; Mono; San Francisco; San Joaquin; San Mateo; Santa Clara; Santa Cruz; Stanislaus; Tuolumne","projected 2D","","","East","North","X","Y","9003","","4267","10403","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_654[] = {"26744","NAD27 / California zone IV","NAD27 / California IV","","","United States (USA) - California - CA_4 - counties between approx 37d & 35d 30m North - Fresno; Inyo; Kings; Monterey; San Benito; Tulare","projected 2D","","","East","North","X","Y","9003","","4267","10404","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_655[] = {"26745","NAD27 / California zone V","NAD27 / California V","","","United States (USA) - California - CA_5 - counties between approx 35d 50m & 34d North - Kern; San Bernardino; San Luis Obispo; Santa Barbara; Ventura","projected 2D","","","East","North","X","Y","9003","","4267","10405","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_656[] = {"26746","NAD27 / California zone VI","NAD27 / California VI","","","United States (USA) - California - CA_6 - counties south of approx 38d 30m North - Imperial; Orange; Riverside; San Diego","projected 2D","","","East","North","X","Y","9003","","4267","10406","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_657[] = {"26747","NAD27 / California zone VII","NAD27 / California VII","","","United States - California - Los Angeles.","projected 2D","","","East","North","X","Y","9003","","4267","10407","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_658[] = {"26748","NAD27 / Arizona East","","","","United States (USA) - Arizona - AZ_E - counties east of approx 110d 45m West - Apache; Cochise; Gila; Graham; Greenlee; Navajo","projected 2D","","","East","North","X","Y","9003","","4267","10201","1995-08-22 00:00:00","","EPSG","","95.25",NULL};
-datafile_rows_t horiz_cs_row_659[] = {"26749","NAD27 / Arizona Central","","","","United States (USA) - Arizona - AZ_C - counties between approx 110d 45m and 113d 20m West - Coconino; Maricopa; Pima; Pinal; Santa Cruz; Yavapai","projected 2D","","","East","North","X","Y","9003","","4267","10202","1995-08-22 00:00:00","","EPSG","","95.25",NULL};
-datafile_rows_t horiz_cs_row_660[] = {"26750","NAD27 / Arizona West","","","","United States (USA) - Arizona - AZ_W - counties west of approx 113d 20m West - La Paz; Mohave; Yuma","projected 2D","","","East","North","X","Y","9003","","4267","10203","1995-08-22 00:00:00","","EPSG","","95.25",NULL};
-datafile_rows_t horiz_cs_row_661[] = {"26751","NAD27 / Arkansas North","","","","United States (USA) - Arkansas - AR_N - counties north of approx 34d 50m North - Baxter; Benton; Boone; Carroll; Clay; Cleburne; Conway; Craighead; Crawford; Crittenden; Cross; Faulkner; Franklin; Fulton; Greene; Independence; Izard; Jackson; Johnson; Lawr","projected 2D","","","East","North","X","Y","9003","","4267","10301","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_662[] = {"26752","NAD27 / Arkansas South","","","","United States (USA) - Arkansas - AR_S - counties south of approx 34d 50m North - Arkansas; Ashley; Bradley; Calhoun; Chicot; Clark; Cleveland; Columbia; Dallas; Desha; Drew; Garland; Grant; Hempstead; Hot Spring; Howard; Jefferson; Lafayette; Lee; Lincoln;","projected 2D","","","East","North","X","Y","9003","","4267","10302","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_663[] = {"26753","NAD27 / Colorado North","","","","United States (USA) - Colorado - CO_N - counties north of approx 39d 50m North - Adams; Boulder; Gilpin; Grand; Jackson; Larimer; Logan; Moffat; Morgan; Phillips; Rio Blanco; Routt; Sedgwick; Washington; Weld; Yuma","projected 2D","","","East","North","X","Y","9003","","4267","10501","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_664[] = {"26754","NAD27 / Colorado Central","","","","United States (USA) - Colorado - CO_C - counties between approx 39d 50m & 38d 30m North - Arapahoe; Chaffee; Cheyenne; Clear Creek; Delta; Denver; Douglas; Eagle; El Paso; Elbert; Fremont; Garfield; Gunnison; Jefferson; Kit Carson; Lake; Lincoln; Mesa; Par","projected 2D","","","East","North","X","Y","9003","","4267","10502","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_665[] = {"26755","NAD27 / Colorado South","","","","United States (USA) - Colorado - CO_S - counties south of approx 38d 30m North - Alamosa; Archuleta; Baca; Bent; Conejos; Costilla; Crowley; Custer; Dolores; Hinsdale; Huerfano; Kiowa; La Plata; Las Animas; Mineral; Montezuma; Montrose; Otero; Ouray; Prowe","projected 2D","","","East","North","X","Y","9003","","4267","10503","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_666[] = {"26756","NAD27 / Connecticut","","","","United States (USA) - Connecticut - CT - counties of Fairfield; Hartford; Litchfield; Middlesex; New Haven; New London; Tolland; Windham","projected 2D","","","East","North","X","Y","9003","","4267","10600","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_667[] = {"26757","NAD27 / Delaware","","","","United States (USA) - Delaware - DE - counties of Kent; New Castle; Sussex","projected 2D","","","East","North","X","Y","9003","","4267","10700","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_668[] = {"26758","NAD27 / Florida East","","","","United States (USA) - Florida - FL_E - counties of Brevard; Broward; Clay; Collier; Dade; Duval; Flagler; Glades; Hendry; Highlands; Indian River; Lake; Martin; Monroe; Nassau; Okeechobee; Orange; Osceola; Palm Beach; Putnam; Seminole; St. Johns; St. Lucie","projected 2D","","","East","North","X","Y","9003","","4267","10901","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_669[] = {"26759","NAD27 / Florida West","","","","United States (USA) - Florida - FL_W - counties of Charlotte; Citrus; De Soto; Hardee; Hernando; Hillsborough; Lee; Levy; Manatee; Marion; Pasco; Pinellas; Polk; Sarasota; Sumter","projected 2D","","","East","North","X","Y","9003","","4267","10902","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_670[] = {"26760","NAD27 / Florida North","","","","United States (USA) - Florida - FL_N - counties of Alachua; Baker; Bay; Bradford; Calhoun; Columbia; Dixie; Escambia; Escambia; Franklin; Gadsden; Gilchrist; Gulf; Hamilton; Holmes; Jackson; Jefferson; Lafayette; Leon; Liberty; Madison; Okaloosa; Santa Ros","projected 2D","","","East","North","X","Y","9003","","4267","10903","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_671[] = {"26766","NAD27 / Georgia East","","","","United States (USA) - Georgia - GA_E - counties of Appling; Atkinson; Bacon; Baldwin; Brantley; Bryan; Bulloch; Burke; Camden; Candler; Charlton; Chatham; Clinch; Coffee; Columbia; Dodge; Echols; Effingham; Elbert; Emanuel; Evans; Franklin; Glascock; Glynn","projected 2D","","","East","North","X","Y","9003","","4267","11001","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_672[] = {"26767","NAD27 / Georgia West","","","","United States (USA) - Georgia - GA_W - counties of Baker; Banks; Barrow; Bartow; Ben Hill; Berrien; Bibb; Bleckley; Brooks; Butts; Calhoun; Carroll; Catoosa; Chattahoochee; Chattooga; Cherokee; Clarke; Clay; Clayton; Cobb; Colquitt; Cook; Coweta; Crawford;","projected 2D","","","East","North","X","Y","9003","","4267","11002","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_673[] = {"26768","NAD27 / Idaho East","","","","United States (USA) - Idaho - ID_E - counties of Bannock; Bear Lake; Bingham; Bonneville; Caribou; Clark; Franklin; Fremont; Jefferson; Madison; Oneida; Power; Teton","projected 2D","","","East","North","X","Y","9003","","4267","11101","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_674[] = {"26769","NAD27 / Idaho Central","","","","United States (USA) - daho - ID_C - counties of Blaine; Butte; Camas; Cassia; Custer; Gooding; Jerome; Lemhi; Lincoln; Minidoka; Twin Falls","projected 2D","","","East","North","X","Y","9003","","4267","11102","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_675[] = {"26770","NAD27 / Idaho West","","","","United States (USA) - Idaho - ID_W - counties of Ada; Adams; Benewah; Boise; Bonner; Boundary; Canyon; Clearwater; Elmore; Gem; Idaho; Kootenai; Latah; Lewis; Nez Perce; Owyhee; Payette; Shoshone; Valley; Washington","projected 2D","","","East","North","X","Y","9003","","4267","11103","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_676[] = {"26771","NAD27 / Illinois East","","","","United States (USA) - Illinois - IL_E - counties of Boone; Champaign; Clark; Clay; Coles; Cook; Crawford; Cumberland; De Kalb; De Witt; Douglas; Du Page; Edgar; Edwards; Effingham; Fayette; Ford; Franklin; Gallatin; Grundy; Hamilton; Hardin; Iroquois; Jasp","projected 2D","","","East","North","X","Y","9003","","4267","11201","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_677[] = {"26772","NAD27 / Illinois West","","","","United States (USA) - Illinois - IL_W - counties of Adams; Alexander; Bond; Brown; Bureau; Calhoun; Carroll; Cass; Christian; Clinton; Fulton; Greene; Hancock; Henderson; Henry; Jackson; Jersey; Jo Daviess; Knox; Lee; Logan; Macoupin; Madison; Marshall; Ma","projected 2D","","","East","North","X","Y","9003","","4267","11202","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_678[] = {"26773","NAD27 / Indiana East","","","","United States (USA) - Indiana - IN_E - counties of Adams; Allen; Bartholomew; Blackford; Brown; Cass; Clark; De Kalb; Dearborn; Decatur; Delaware; Elkhart; Fayette; Floyd; Franklin; Fulton; Grant; Hamilton; Hancock; Harrison; Henry; Howard; Huntington; Jac","projected 2D","","","East","North","X","Y","9003","","4267","11301","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_679[] = {"26774","NAD27 / Indiana West","","","","United States (USA) - Indiana - IN_W - counties of Benton; Boone; Carroll; Clay; Clinton; Crawford; Daviess; Dubois; Fountain; Gibson; Greene; Hendricks; Jasper; Knox; La Porte; Lake; Lawrence; Martin; Monroe; Montgomery; Morgan; Newton; Orange; Owen; Park","projected 2D","","","East","North","X","Y","9003","","4267","11302","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_680[] = {"26775","NAD27 / Iowa North","","","","United States (USA) - Iowa - IA_N - counties of Allamakee; Benton; Black Hawk; Boone; Bremer; Buchanan; Buena Vista; Butler; Calhoun; Carroll; Cerro Gordo; Cherokee; Chickasaw; Clay; Clayton; Crawford; Delaware; Dickinson; Dubuque; Emmet; Fayette; Floyd; F","projected 2D","","","East","North","X","Y","9003","","4267","11401","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_681[] = {"26776","NAD27 / Iowa South","","","","United States (USA) - Iowa - IA_S - counties of Adair; Adams; Appanoose; Audubon; Cass; Cedar; Clarke; Clinton; Dallas; Davis; Decatur; Des Moines; Fremont; Guthrie; Harrison; Henry; Iowa; Jasper; Jefferson; Johnson; Keokuk; Lee; Louisa; Lucas; Madison; Ma","projected 2D","","","East","North","X","Y","9003","","4267","11402","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_682[] = {"26777","NAD27 / Kansas North","","","","United States (USA) - Kansas - KS_N - counties of Atchison; Brown; Cheyenne; Clay; Cloud; Decatur; Dickinson; Doniphan; Douglas; Ellis; Ellsworth; Geary; Gove; Graham; Jackson; Jefferson; Jewell; Johnson; Leavenworth; Lincoln; Logan; Marshall; Mitchell; Mo","projected 2D","","","East","North","X","Y","9003","","4267","11501","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_683[] = {"26778","NAD27 / Kansas South","","","","United States (USA) - Kansas - KS_S - counties of Allen; Anderson; Barber; Barton; Bourbon; Butler; Chase; Chautauqua; Cherokee; Clark; Coffey; Comanche; Cowley; Crawford; Edwards; Elk; Finney; Ford; Franklin; Grant; Gray; Greeley; Greenwood; Hamilton; Har","projected 2D","","","East","North","X","Y","9003","","4267","11502","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_684[] = {"26779","NAD27 / Kentucky North","","","","United States (USA) - Kentucky - KY_N - counties of Anderson; Bath; Boone; Bourbon; Boyd; Bracken; Bullitt; Campbell; Carroll; Carter; Clark; Elliott; Fayette; Fleming; Franklin; Gallatin; Grant; Greenup; Harrison; Henry; Jefferson; Jessamine; Kenton; Lawr","projected 2D","","","East","North","X","Y","9003","","4267","11601","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_685[] = {"26780","NAD27 / Kentucky South","","","","United States (USA) - Kentucky - KY_S - counties of Adair; Allen; Ballard; Barren; Bell; Boyle; Breathitt; Breckinridge; Butler; Caldwell; Calloway; Carlisle; Casey; Christian; Clay; Clinton; Crittenden; Cumberland; Daviess; Edmonson; Estill; Floyd; Fulton","projected 2D","","","East","North","X","Y","9003","","4267","11602","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_686[] = {"26781","NAD27 / Louisiana North","","","","United States (USA) - Louisiana - LA_N - counties of Avoyelles; Bienville; Bossier; Caddo; Caldwell; Catahoula; Claiborne; Concordia; De Soto; East Carroll; Franklin; Grant; Jackson; La Salle; Lincoln; Madison; Morehouse; Natchitoches; Ouachita; Rapides; R","projected 2D","","","East","North","X","Y","9003","","4267","11701","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_687[] = {"26782","NAD27 / Louisiana South","","","","United States (USA) - Louisiana - LA_S - counties of Acadia; Allen; Ascension; Assumption; Beauregard; Calcasieu; Cameron; East Baton Rouge; East Feliciana; Evangeline; Iberia; Iberville; Jefferson; Jefferson Davis; Lafayette; LaFourche; Livingston; Orlean","projected 2D","","","East","North","X","Y","9003","","4267","11702","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_688[] = {"26783","NAD27 / Maine East","","","","United States (USA) - Maine - ME_E - counties of Aroostook; Hancock; Knox; Penobscot; Piscataquis; Waldo; Washington","projected 2D","","","East","North","X","Y","9003","","4267","11801","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_689[] = {"26784","NAD27 / Maine West","","","","United States (USA) - Maine - ME_W - counties of Androscoggin; Cumberland; Franklin; Kennebec; Lincoln; Oxford; Sagadahoc; Somerset; York","projected 2D","","","East","North","X","Y","9003","","4267","11802","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_690[] = {"26785","NAD27 / Maryland","","","","United States (USA) - Maryland -MD - counties of Allegany; Anne Arundel; Baltimore; Calvert; Caroline; Carroll; Cecil; Charles; Dorchester; Frederick; Garrett; Harford; Howard; Kent; Montgomery; Prince Georges; Queen Annes; Somerset; St. Marys; Talbot; Was","projected 2D","","","East","North","X","Y","9003","","4267","11900","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_691[] = {"26786","NAD27 / Massachusetts Mainland","NAD27 / Massachusetts","","","United States (USA) - Massachusetts - MA_M - counties of Barnstable; Berkshire; Bristol; Essex; Franklin; Hampden; Hampshire; Middlesex; Norfolk; Plymouth; Suffolk; Worcester","projected 2D","","","East","North","X","Y","9003","","4267","12001","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_692[] = {"26787","NAD27 / Massachusetts Island","NAD27 / Massachusetts Is","","","United States (USA) - Massachusetts - MA_I - counties of Dukes; Nantucket","projected 2D","","","East","North","X","Y","9003","","4267","12002","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_693[] = {"26791","NAD27 / Minnesota North","","","","United States (USA) - Minnesota - MN_N - counties of Beltrami; Clearwater; Cook; Itasca; Kittson; Koochiching; Lake; Lake of the Woods; Mahnomen; Marshall; Norman; Pennington; Polk; Red Lake; Roseau; St. Louis","projected 2D","","","East","North","X","Y","9003","","4267","12201","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_694[] = {"26792","NAD27 / Minnesota Central","NAD27 / Minnesota Cent.","","","United States (USA) - Minnesota - MN_C - counties of Aitkin; Becker; Benton; Carlton; Cass; Chisago; Clay; Crow Wing; Douglas; Grant; Hubbard; Isanti; Kanabec; Mille Lacs; Morrison; Otter Tail; Pine; Pope; Stearns; Stevens; Todd; Traverse; Wadena; Wilkin","projected 2D","","","East","North","X","Y","9003","","4267","12202","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_695[] = {"26793","NAD27 / Minnesota South","","","","United States (USA) - Minnesota - MN_S - counties of Anoka; Big Stone; Blue Earth; Brown; Carver; Chippewa; Cottonwood; Dakota; Dodge; Faribault; Fillmore; Freeborn; Goodhue; Hennepin; Houston; Jackson; Kandiyohi; Lac Qui Parle; Le Sueur; Lincoln; Lyon; Ma","projected 2D","","","East","North","X","Y","9003","","4267","12203","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_696[] = {"26794","NAD27 / Mississippi East","","","","United States (USA) - Mississippi - MS_E - counties of Alcorn; Attala; Benton; Calhoun; Chickasaw; Choctaw; Clarke; Clay; Covington; Forrest; George; Greene; Hancock; Harrison; Itawamba; Jackson; Jasper; Jones; Kemper; Lafayette; Lamar; Lauderdale; Leake; ","projected 2D","","","East","North","X","Y","9003","","4267","12301","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_697[] = {"26795","NAD27 / Mississippi West","","","","United States (USA) - Mississippi - MS_W - counties of Adams; Amite; Bolivar; Carroll; Claiborne; Coahoma; Copiah; De Soto; Franklin; Grenada; Hinds; Holmes; Humphreys; Issaquena; Jefferson; Jefferson Davis; Lawrence; Leflore; Lincoln; Madison; Marion; Mon","projected 2D","","","East","North","X","Y","9003","","4267","12302","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_698[] = {"26796","NAD27 / Missouri East","","","","United States (USA) - Missouri - MO_E - counties of Bollinger; Butler; Cape Girardeau; Carter; Clark; Crawford; Dent; Dunklin; Franklin; Gasconade; Iron; Jefferson; Lewis; Lincoln; Madison; Marion; Mississippi; Montgomery; New Madrid; Oregon; Pemiscot; Per","projected 2D","","","East","North","X","Y","9003","","4267","12401","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_699[] = {"26797","NAD27 / Missouri Central","","","","United States (USA) - Missouri - MO_C - counties of Adair; Audrain; Benton; Boone; Callaway; Camden; Carroll; Chariton; Christian; Cole; Cooper; Dallas; Douglas; Greene; Grundy; Hickory; Howard; Howell; Knox; Laclede; Linn; Livingston; Macon; Maries; Merce","projected 2D","","","East","North","X","Y","9003","","4267","12402","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_700[] = {"26798","NAD27 / Missouri West","","","","United States (USA) - Missouri - MO_W - counties of Andrew; Atchison; Barry; Barton; Bates; Buchanan; Caldwell; Cass; Cedar; Clay; Clinton; Dade; Daviess; De Kalb; Gentry; Harrison; Henry; Holt; Jackson; Jasper; Johnson; Lafayette; Lawrence; McDonald; Newt","projected 2D","","","East","North","X","Y","9003","","4267","12403","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_701[] = {"26801","NAD Michigan / Michigan East","NAD27 / Michigan East","","","United States (USA) - Michigan - MI_E - counties of Alcona; Alpena; Arenac; Bay; Cheboygan; Clinton; Crawford; Genesee; Gladwin; Gratiot; Hillsdale; Huron; Ingham; Iosco; Jackson; Lapeer; Lenawee; Livingston; Macomb; Midland; Monroe; Montmorency; Oakland; ","projected 2D","","","East","North","X","Y","9003","","4268","12101","1998-11-11 00:00:00","","EPSG","Superseded by 26811 2681 [...]
-datafile_rows_t horiz_cs_row_702[] = {"26802","NAD Michigan / Michigan Old Central","NAD27 / Michigan Old Cen","","","United States (USA) - Michigan - MI_C - counties of Allegan; Antrim; Barry; Benzie; Berrien; Branch; Calhoun; Cass; Charlevoix; Clare; Eaton; Emmet; Grand Traverse; Ionia; Isabella; Kalamazoo; Kalkaska; Kent; Lake; Leelanau; Manistee; Mason; Mecosta; Missa","projected 2D","","","East","North","X","Y","9003","","4268","12102","1998-11-11 00:00:00","","EPSG","Superseded by  [...]
-datafile_rows_t horiz_cs_row_703[] = {"26803","NAD Michigan / Michigan West","NAD27 / Michigan West","","","United States (USA) - Michigan - MI_W - counties of Alger; Baraga; Chippewa; Delta; Dickinson; Gogebic; Houghton; Iron; Keweenaw; Luce; Mackinac; Marquette; Menominee; Ontonagon; Schoolcraft","projected 2D","","","East","North","X","Y","9003","","4268","12103","1998-11-11 00:00:00","","EPSG","Superseded by 26811 26812 and 26813.","95.25  97.19  98.22",NULL};
-datafile_rows_t horiz_cs_row_704[] = {"26811","NAD Michigan / Michigan North","NAD27 / Michigan North","","","United States (USA) - Michigan - MI_N - counties of Alger; Baraga; Chippewa; Delta; Dickinson; Gogebic; Houghton; Iron; Keweenaw; Luce; Mackinac; Marquette; Menominee; Ontonagon; Schoolcraft","projected 2D","","","East","North","X","Y","9003","","4268","12111","1998-11-11 00:00:00","","EPSG","Supersedes 26801 26802 and 26803.","96.28  98.22",NULL};
-datafile_rows_t horiz_cs_row_705[] = {"26812","NAD Michigan / Michigan Central","NAD27 / Michigan Central","","","United States (USA) - Michigan - MI_C - counties of Alcona; Alpena; Antrim; Arenac; Benzie; Charlevoix; Cheboygan; Clare; Crawford; Emmet; Gladwin; Grand Traverse; Iosco; Kalkaska; Lake; Leelanau; Manistee; Mason; Missaukee; Montmorency; Ogemaw; Osceola; O","projected 2D","","","East","North","X","Y","9003","","4268","12112","1998-11-11 00:00:00","","EPSG","Supersedes 26801 2 [...]
-datafile_rows_t horiz_cs_row_706[] = {"26813","NAD Michigan / Michigan South","NAD27 / Michigan South","","","United States (USA) - Michigan - MI_S - counties of Allegan; Barry; Bay; Berrien; Branch; Calhoun; Cass; Clinton; Eaton; Genesee; Gratiot; Hillsdale; Huron; Ingham; Ionia; Isabella; Jackson; Kalamazoo; Kent; Lapeer; Lenawee; Livingston; Macomb; Mecosta; Mi","projected 2D","","","East","North","X","Y","9003","","4268","12113","1998-11-11 00:00:00","","EPSG","Supersedes 26801 26802 [...]
-datafile_rows_t horiz_cs_row_707[] = {"26903","NAD83 / UTM zone 3N","","","","North America - United States (USA) - Alaska - 168deg West  to 162deg West.","projected 2D","","","East","North","E","N","9001","","4269","16003","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_708[] = {"26904","NAD83 / UTM zone 4N","","","","North America - United States (USA) - Alaska - 162deg West  to 156deg West.","projected 2D","","","East","North","E","N","9001","","4269","16004","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_709[] = {"26905","NAD83 / UTM zone 5N","","","","North America - United States (USA) - Alaska - 156deg West  to 150deg West.","projected 2D","","","East","North","E","N","9001","","4269","16005","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_710[] = {"26906","NAD83 / UTM zone 6N","","","","North America - United States (USA) - Alaska - 150deg West  to 144deg West.","projected 2D","","","East","North","E","N","9001","","4269","16006","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_711[] = {"26907","NAD83 / UTM zone 7N","","","","North America - Canada; United States (USA) - Alaska - 144deg West  to 138deg West.","projected 2D","","","East","North","E","N","9001","","4269","16007","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_712[] = {"26908","NAD83 / UTM zone 8N","","","","North America - Canada; United States (USA) - 138deg West  to 132deg West.","projected 2D","","","East","North","E","N","9001","","4269","16008","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_713[] = {"26909","NAD83 / UTM zone 9N","","","","North America - Canada; United States (USA) - 132deg West  to 126deg West.","projected 2D","","","East","North","E","N","9001","","4269","16009","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_714[] = {"26910","NAD83 / UTM zone 10N","","","","North America - Canada; United States (USA) - 130deg West  to 120deg West.","projected 2D","","","East","North","E","N","9001","","4269","16010","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_715[] = {"26911","NAD83 / UTM zone 11N","","","","North America - Canada; Mexico; United States (USA) - 120deg West  to 114deg West.","projected 2D","","","East","North","E","N","9001","","4269","16011","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_716[] = {"26912","NAD83 / UTM zone 12N","","","","North America - Canada; Mexico; United States (USA) - 114deg West  to 108deg West.","projected 2D","","","East","North","E","N","9001","","4269","16012","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_717[] = {"26913","NAD83 / UTM zone 13N","","","","North America - Canada; Mexico; United States (USA) - 108deg West  to 102deg West.","projected 2D","","","East","North","E","N","9001","","4269","16013","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_718[] = {"26914","NAD83 / UTM zone 14N","","","","North America - Canada; Mexico; United States (USA) - 102deg West  to 96deg West.","projected 2D","","","East","North","E","N","9001","","4269","16014","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_719[] = {"26915","NAD83 / UTM zone 15N","","","","North America - Canada; Mexico; United States (USA) - 96deg West  to 90deg West.","projected 2D","","","East","North","E","N","9001","","4269","16015","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_720[] = {"26916","NAD83 / UTM zone 16N","","","","North America - Canada; Mexico; United States (USA) - 90deg West  to 84deg West.","projected 2D","","","East","North","E","N","9001","","4269","16016","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_721[] = {"26917","NAD83 / UTM zone 17N","","","","North America - Canada; Mexico; United States (USA) - 84deg West  to 78deg West.","projected 2D","","","East","North","E","N","9001","","4269","16017","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_722[] = {"26918","NAD83 / UTM zone 18N","","","","North America - Canada; United States (USA) - 78deg West  to 72deg West.","projected 2D","","","East","North","E","N","9001","","4269","16018","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_723[] = {"26919","NAD83 / UTM zone 19N","","","","North America - Canada; United States (USA) - 72deg West  to 66deg West.","projected 2D","","","East","North","E","N","9001","","4269","16019","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_724[] = {"26920","NAD83 / UTM zone 20N","","","","North America - Canada; United States (USA) offshore Atlantic - 66deg West  to 60deg West.","projected 2D","","","East","North","E","N","9001","","4269","16020","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_725[] = {"26921","NAD83 / UTM zone 21N","","","","North America - Canada - 60deg West  to 54deg West.","projected 2D","","","East","North","E","N","9001","","4269","16021","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_726[] = {"26922","NAD83 / UTM zone 22N","","","","North America - Canada - Newfoundland - 54deg West  to 48deg West.","projected 2D","","","East","North","E","N","9001","","4269","16022","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_727[] = {"26923","NAD83 / UTM zone 23N","","","","North America - Canada offshore Atlantic - 48deg West  to 42deg West.","projected 2D","","","East","North","E","N","9001","","4269","16023","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_728[] = {"26929","NAD83 / Alabama East","","","","United States (USA) - Alabama - AL_E - counties east of approx 86d 37m West - Barbour; Bullock; Calhoun; Chambers; Cherokee; Clay; Cleburne; Coffee; Coosa; Covington; Crenshaw; Dale; De Kalb; Elmore; Etowah; Geneva; Henry; Houston; Jackson; Lee; Macon; Mad","projected 2D","","","East","North","X","Y","9001","","4269","10131","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_729[] = {"26930","NAD83 / Alabama West","","","","United States (USA) - Alabama - AL_W - counties west of approx 86d 37m West - Autauga; Baldwin; Bibb; Blount; Butler; Chilton; Choctaw; Clarke; Colbert; Conecuh; Cullman; Dallas; Escambia; Fayette; Franklin; Greene; Hale; Jefferson; Lamar; Lauderdale; Lawr","projected 2D","","","East","North","X","Y","9001","","4269","10132","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_730[] = {"26931","NAD83 / Alaska zone 1","","","","United States - Alaska - Panhandle.","projected 2D","","","East","North","X","Y","9001","","4269","15031","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_731[] = {"26932","NAD83 / Alaska zone 2","","","","United States - Alaska - 141deg to 144deg West.","projected 2D","","","East","North","X","Y","9001","","4269","15032","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_732[] = {"26933","NAD83 / Alaska zone 3","","","","United States - Alaska - 144deg to 148deg West.","projected 2D","","","East","North","X","Y","9001","","4269","15033","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_733[] = {"26934","NAD83 / Alaska zone 4","","","","United States - Alaska - 148deg to 152deg West.","projected 2D","","","East","North","X","Y","9001","","4269","15034","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_734[] = {"26935","NAD83 / Alaska zone 5","","","","United States - Alaska - 152deg to 156deg West.","projected 2D","","","East","North","X","Y","9001","","4269","15035","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_735[] = {"26936","NAD83 / Alaska zone 6","","","","United States - Alaska - 156deg to 160deg West.","projected 2D","","","East","North","X","Y","9001","","4269","15036","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_736[] = {"26937","NAD83 / Alaska zone 7","","","","United States - Alaska - 160deg to 164deg West.","projected 2D","","","East","North","X","Y","9001","","4269","15037","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_737[] = {"26938","NAD83 / Alaska zone 8","","","","United States - Alaska - 164deg to 168deg West north of 54d 30m North.","projected 2D","","","East","North","X","Y","9001","","4269","15038","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_738[] = {"26939","NAD83 / Alaska zone 9","","","","United States - Alaska - west of 168deg West and north of 54d 30m North.","projected 2D","","","East","North","X","Y","9001","","4269","15039","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_739[] = {"26940","NAD83 / Alaska zone 10","","","","United States - Alaska - Aleutian Islands.","projected 2D","","","East","North","X","Y","9001","","4269","15040","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_740[] = {"26941","NAD83 / California zone 1","NAD83 / California 1","","","United States (USA) - California - CA_1 - counties north of approx 40 deg North - Del Norte; Humboldt; Lassen; Modoc; Plumas; Shasta; Siskiyou; Tehama; Trinity","projected 2D","","","East","North","X","Y","9001","","4269","10431","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_741[] = {"26942","NAD83 / California zone 2","NAD83 / California 2","","","United States (USA) - California - CA_2 - counties between approx 40 deg & 38d 15m North - Alpine; Amador; Butte; Colusa; El Dorado; Glenn; Lake; Mendocino; Napa; Nevada; Placer; Sacramento; Sierra; Solano; Sonoma; Sutter; Yolo; Yuba","projected 2D","","","East","North","X","Y","9001","","4269","10432","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_742[] = {"26943","NAD83 / California zone 3","NAD83 / California 3","","","United States (USA) - California - CA_3 - counties between approx 38d 15m & 37d North - Alameda; Calaveras; Contra Costa; Madera; Marin; Mariposa; Merced; Mono; San Francisco; San Joaquin; San Mateo; Santa Clara; Santa Cruz; Stanislaus; Tuolumne","projected 2D","","","East","North","X","Y","9001","","4269","10433","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_743[] = {"26944","NAD83 / California zone 4","NAD83 / California 4","","","United States (USA) - California - CA_4 - counties between approx 37d & 35d 30m North - Fresno; Inyo; Kings; Monterey; San Benito; Tulare","projected 2D","","","East","North","X","Y","9001","","4269","10434","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_744[] = {"26945","NAD83 / California zone 5","NAD83 / California 5","","","United States (USA) - California - CA_5 - counties between approx 35d 50m & 34d North - Kern; Los Angeles; San Bernardino; San Luis Obispo; Santa Barbara; Ventura","projected 2D","","","East","North","X","Y","9001","","4269","10435","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_745[] = {"26946","NAD83 / California zone 6","NAD83 / California 6","","","United States (USA) - California - CA_6 - counties south of approx 38d 30m North - Imperial; Orange; Riverside; San Diego","projected 2D","","","East","North","X","Y","9001","","4269","10436","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_746[] = {"26948","NAD83 / Arizona  East","","","","United States (USA) - Arizona - AZ_E - counties east of approx 110d 45m West - Apache; Cochise; Gila; Graham; Greenlee; Navajo","projected 2D","","","East","North","X","Y","9001","","4269","10231","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_747[] = {"26949","NAD83 / Arizona Central","","","","United States (USA) - Arizona - AZ_C - counties between approx 110d 45m and 113d 20m West - Coconino; Maricopa; Pima; Pinal; Santa Cruz; Yavapai","projected 2D","","","East","North","X","Y","9001","","4269","10232","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_748[] = {"26950","NAD83 / Arizona West","","","","United States (USA) - Arizona - AZ_W - counties west of approx 113d 20m West - La Paz; Mohave; Yuma","projected 2D","","","East","North","X","Y","9001","","4269","10233","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_749[] = {"26951","NAD83 / Arkansas North","","","","United States (USA) - Arkansas - AR_N - counties north of approx 34d 50m North - Baxter; Benton; Boone; Carroll; Clay; Cleburne; Conway; Craighead; Crawford; Crittenden; Cross; Faulkner; Franklin; Fulton; Greene; Independence; Izard; Jackson; Johnson; Lawr","projected 2D","","","East","North","X","Y","9001","","4269","10331","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_750[] = {"26952","NAD83 / Arkansas South","","","","United States (USA) - Arkansas - AR_S - counties south of approx 34d 50m North - Arkansas; Ashley; Bradley; Calhoun; Chicot; Clark; Cleveland; Columbia; Dallas; Desha; Drew; Garland; Grant; Hempstead; Hot Spring; Howard; Jefferson; Lafayette; Lee; Lincoln;","projected 2D","","","East","North","X","Y","9001","","4269","10332","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_751[] = {"26953","NAD83 / Colorado North","","","","United States (USA) - Colorado - CO_N - counties north of approx 39d 50m North - Adams; Boulder; Gilpin; Grand; Jackson; Larimer; Logan; Moffat; Morgan; Phillips; Rio Blanco; Routt; Sedgwick; Washington; Weld; Yuma","projected 2D","","","East","North","X","Y","9001","","4269","10531","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_752[] = {"26954","NAD83 / Colorado Central","","","","United States (USA) - Colorado - CO_C - counties between approx 39d 50m & 38d 30m North - Arapahoe; Chaffee; Cheyenne; Clear Creek; Delta; Denver; Douglas; Eagle; El Paso; Elbert; Fremont; Garfield; Gunnison; Jefferson; Kit Carson; Lake; Lincoln; Mesa; Par","projected 2D","","","East","North","X","Y","9001","","4269","10532","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_753[] = {"26955","NAD83 / Colorado South","","","","United States (USA) - Colorado - CO_S - counties south of approx 38d 30m North - Alamosa; Archuleta; Baca; Bent; Conejos; Costilla; Crowley; Custer; Dolores; Hinsdale; Huerfano; Kiowa; La Plata; Las Animas; Mineral; Montezuma; Montrose; Otero; Ouray; Prowe","projected 2D","","","East","North","X","Y","9001","","4269","10533","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_754[] = {"26956","NAD83 / Connecticut","","","","United States (USA) - Connecticut - CT - counties of Fairfield; Hartford; Litchfield; Middlesex; New Haven; New London; Tolland; Windham","projected 2D","","","East","North","X","Y","9001","","4269","10630","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_755[] = {"26957","NAD83 / Delaware","","","","United States (USA) - Delaware - DE - counties of Kent; New Castle; Sussex","projected 2D","","","East","North","X","Y","9001","","4269","10730","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_756[] = {"26958","NAD83 / Florida  East","","","","United States (USA) - Florida - FL_E - counties of Brevard; Broward; Clay; Collier; Dade; Duval; Flagler; Glades; Hendry; Highlands; Indian River; Lake; Martin; Monroe; Nassau; Okeechobee; Orange; Osceola; Palm Beach; Putnam; Seminole; St. Johns; St. Lucie","projected 2D","","","East","North","X","Y","9001","","4269","10931","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_757[] = {"26959","NAD83 / Florida  West","","","","United States (USA) - Florida - FL_W - counties of Charlotte; Citrus; De Soto; Hardee; Hernando; Hillsborough; Lee; Levy; Manatee; Marion; Pasco; Pinellas; Polk; Sarasota; Sumter","projected 2D","","","East","North","X","Y","9001","","4269","10932","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_758[] = {"26960","NAD83 / Florida North","","","","United States (USA) - Florida - FL_N - counties of Alachua; Baker; Bay; Bradford; Calhoun; Columbia; Dixie; Escambia; Escambia; Franklin; Gadsden; Gilchrist; Gulf; Hamilton; Holmes; Jackson; Jefferson; Lafayette; Leon; Liberty; Madison; Okaloosa; Santa Ros","projected 2D","","","East","North","X","Y","9001","","4269","10933","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_759[] = {"26961","NAD83 / Hawaii  zone 1","","","","United States - Hawaii - island of Hawaii.","projected 2D","","","East","North","X","Y","9001","","4269","15131","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_760[] = {"26962","NAD83 / Hawaii  zone 2","","","","United States - Hawaii - Maui; Kahoolawe; Lanai; Molokai.","projected 2D","","","East","North","X","Y","9001","","4269","15132","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_761[] = {"26963","NAD83 / Hawaii  zone 3","","","","United States - Hawaii - Oahu.","projected 2D","","","East","North","X","Y","9001","","4269","15133","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_762[] = {"26964","NAD83 / Hawaii  zone 4","","","","United States - Hawaii - Kauai.","projected 2D","","","East","North","X","Y","9001","","4269","15134","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_763[] = {"26965","NAD83 / Hawaii  zone 5","","","","United States - Hawaii - Niihau.","projected 2D","","","East","North","X","Y","9001","","4269","15135","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_764[] = {"26966","NAD83 / Georgia  East","","","","United States (USA) - Georgia - GA_E - counties of Appling; Atkinson; Bacon; Baldwin; Brantley; Bryan; Bulloch; Burke; Camden; Candler; Charlton; Chatham; Clinch; Coffee; Columbia; Dodge; Echols; Effingham; Elbert; Emanuel; Evans; Franklin; Glascock; Glynn","projected 2D","","","East","North","X","Y","9001","","4269","11031","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_765[] = {"26967","NAD83 / Georgia West","","","","United States (USA) - Georgia - GA_W - counties of Baker; Banks; Barrow; Bartow; Ben Hill; Berrien; Bibb; Bleckley; Brooks; Butts; Calhoun; Carroll; Catoosa; Chattahoochee; Chattooga; Cherokee; Clarke; Clay; Clayton; Cobb; Colquitt; Cook; Coweta; Crawford;","projected 2D","","","East","North","X","Y","9001","","4269","11032","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_766[] = {"26968","NAD83 / Idaho  East","","","","United States (USA) - Idaho - ID_E - counties of Bannock; Bear Lake; Bingham; Bonneville; Caribou; Clark; Franklin; Fremont; Jefferson; Madison; Oneida; Power; Teton","projected 2D","","","East","North","X","Y","9001","","4269","11131","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_767[] = {"26969","NAD83 / Idaho  Central","","","","United States (USA) - Idaho - ID_C - counties of Blaine; Butte; Camas; Cassia; Custer; Gooding; Jerome; Lemhi; Lincoln; Minidoka; Twin Falls","projected 2D","","","East","North","X","Y","9001","","4269","11132","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_768[] = {"26970","NAD83 / Idaho  West","","","","United States (USA) - Idaho - ID_W - counties of Ada; Adams; Benewah; Boise; Bonner; Boundary; Canyon; Clearwater; Elmore; Gem; Idaho; Kootenai; Latah; Lewis; Nez Perce; Owyhee; Payette; Shoshone; Valley; Washington","projected 2D","","","East","North","X","Y","9001","","4269","11133","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_769[] = {"26971","NAD83 / Illinois  East","","","","United States (USA) - Illinois - IL_E - counties of Boone; Champaign; Clark; Clay; Coles; Cook; Crawford; Cumberland; De Kalb; De Witt; Douglas; Du Page; Edgar; Edwards; Effingham; Fayette; Ford; Franklin; Gallatin; Grundy; Hamilton; Hardin; Iroquois; Jasp","projected 2D","","","East","North","X","Y","9001","","4269","11231","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_770[] = {"26972","NAD83 / Illinois  West","","","","United States (USA) - Illinois - IL_W - counties of Adams; Alexander; Bond; Brown; Bureau; Calhoun; Carroll; Cass; Christian; Clinton; Fulton; Greene; Hancock; Henderson; Henry; Jackson; Jersey; Jo Daviess; Knox; Lee; Logan; Macoupin; Madison; Marshall; Ma","projected 2D","","","East","North","X","Y","9001","","4269","11232","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_771[] = {"26973","NAD83 / Indiana  East","","","","United States (USA) - Indiana - IN_E - counties of Adams; Allen; Bartholomew; Blackford; Brown; Cass; Clark; De Kalb; Dearborn; Decatur; Delaware; Elkhart; Fayette; Floyd; Franklin; Fulton; Grant; Hamilton; Hancock; Harrison; Henry; Howard; Huntington; Jac","projected 2D","","","East","North","X","Y","9001","","4269","11331","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_772[] = {"26974","NAD83 / Indiana  West","","","","United States (USA) - Indiana - IN_W - counties of Benton; Boone; Carroll; Clay; Clinton; Crawford; Daviess; Dubois; Fountain; Gibson; Greene; Hendricks; Jasper; Knox; La Porte; Lake; Lawrence; Martin; Monroe; Montgomery; Morgan; Newton; Orange; Owen; Park","projected 2D","","","East","North","X","Y","9001","","4269","11332","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_773[] = {"26975","NAD83 / Iowa North","","","","United States (USA) - Iowa - IA_N - counties of Allamakee; Benton; Black Hawk; Boone; Bremer; Buchanan; Buena Vista; Butler; Calhoun; Carroll; Cerro Gordo; Cherokee; Chickasaw; Clay; Clayton; Crawford; Delaware; Dickinson; Dubuque; Emmet; Fayette; Floyd; F","projected 2D","","","East","North","X","Y","9001","","4269","11431","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_774[] = {"26976","NAD83 / Iowa South","","","","United States (USA) - Iowa - IA_S - counties of Adair; Adams; Appanoose; Audubon; Cass; Cedar; Clarke; Clinton; Dallas; Davis; Decatur; Des Moines; Fremont; Guthrie; Harrison; Henry; Iowa; Jasper; Jefferson; Johnson; Keokuk; Lee; Louisa; Lucas; Madison; Ma","projected 2D","","","East","North","X","Y","9001","","4269","11432","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_775[] = {"26977","NAD83 / Kansas North","","","","United States (USA) - Kansas - KS_N - counties of Atchison; Brown; Cheyenne; Clay; Cloud; Decatur; Dickinson; Doniphan; Douglas; Ellis; Ellsworth; Geary; Gove; Graham; Jackson; Jefferson; Jewell; Johnson; Leavenworth; Lincoln; Logan; Marshall; Mitchell; Mo","projected 2D","","","East","North","X","Y","9001","","4269","11531","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_776[] = {"26978","NAD83 / Kansas South","","","","United States (USA) - Kansas - KS_S - counties of Allen; Anderson; Barber; Barton; Bourbon; Butler; Chase; Chautauqua; Cherokee; Clark; Coffey; Comanche; Cowley; Crawford; Edwards; Elk; Finney; Ford; Franklin; Grant; Gray; Greeley; Greenwood; Hamilton; Har","projected 2D","","","East","North","X","Y","9001","","4269","11532","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_777[] = {"26979","NAD83 / Kentucky North","","","","United States (USA) - Kentucky - KY_N - counties of Anderson; Bath; Boone; Bourbon; Boyd; Bracken; Bullitt; Campbell; Carroll; Carter; Clark; Elliott; Fayette; Fleming; Franklin; Gallatin; Grant; Greenup; Harrison; Henry; Jefferson; Jessamine; Kenton; Lawr","projected 2D","","","East","North","X","Y","9001","","4269","11631","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_778[] = {"26980","NAD83 / Kentucky South","","","","United States (USA) - Kentucky - KY_S - counties of Adair; Allen; Ballard; Barren; Bell; Boyle; Breathitt; Breckinridge; Butler; Caldwell; Calloway; Carlisle; Casey; Christian; Clay; Clinton; Crittenden; Cumberland; Daviess; Edmonson; Estill; Floyd; Fulton","projected 2D","","","East","North","X","Y","9001","","4269","11632","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_779[] = {"26981","NAD83 / Louisiana North","","","","United States (USA) - Louisiana - LA_N - counties of Avoyelles; Bienville; Bossier; Caddo; Caldwell; Catahoula; Claiborne; Concordia; De Soto; East Carroll; Franklin; Grant; Jackson; La Salle; Lincoln; Madison; Morehouse; Natchitoches; Ouachita; Rapides; R","projected 2D","","","East","North","X","Y","9001","","4269","11731","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_780[] = {"26982","NAD83 / Louisiana South","","","","United States (USA) - Louisiana - LA_S - counties of Acadia; Allen; Ascension; Assumption; Beauregard; Calcasieu; Cameron; East Baton Rouge; East Feliciana; Evangeline; Iberia; Iberville; Jefferson; Jefferson Davis; Lafayette; LaFourche; Livingston; Orlean","projected 2D","","","East","North","X","Y","9001","","4269","11732","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_781[] = {"26983","NAD83 / Maine  East","","","","United States (USA) - Maine - ME_E - counties of Aroostook; Hancock; Knox; Penobscot; Piscataquis; Waldo; Washington","projected 2D","","","East","North","X","Y","9001","","4269","11831","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_782[] = {"26984","NAD83 / Maine  West","","","","United States (USA) - Maine - ME_W - counties of Androscoggin; Cumberland; Franklin; Kennebec; Lincoln; Oxford; Sagadahoc; Somerset; York","projected 2D","","","East","North","X","Y","9001","","4269","11832","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_783[] = {"26985","NAD83 / Maryland","","","","United States (USA) - Maryland -MD - counties of Allegany; Anne Arundel; Baltimore; Calvert; Caroline; Carroll; Cecil; Charles; Dorchester; Frederick; Garrett; Harford; Howard; Kent; Montgomery; Prince Georges; Queen Annes; Somerset; St. Marys; Talbot; Was","projected 2D","","","East","North","X","Y","9001","","4269","11930","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_784[] = {"26986","NAD83 / Massachusetts Mainland","NAD83 / Massachusetts","","","United States (USA) - Massachusetts - MA_M - counties of Barnstable; Berkshire; Bristol; Essex; Franklin; Hampden; Hampshire; Middlesex; Norfolk; Plymouth; Suffolk; Worcester","projected 2D","","","East","North","X","Y","9001","","4269","12031","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_785[] = {"26987","NAD83 / Massachusetts Island","NAD83 / Massachusetts Is","","","United States (USA) - Massachusetts - MA_I - counties of Dukes; Nantucket","projected 2D","","","East","North","X","Y","9001","","4269","12032","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_786[] = {"26988","NAD83 / Michigan North","","","","United States (USA) - Michigan - MI_N - counties of Alger; Baraga; Chippewa; Delta; Dickinson; Gogebic; Houghton; Iron; Keweenaw; Luce; Mackinac; Marquette; Menominee; Ontonagon; Schoolcraft","projected 2D","","","East","North","X","Y","9001","","4269","12141","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_787[] = {"26989","NAD83 / Michigan Central","","","","United States (USA) - Michigan - MI_C - counties of Alcona; Alpena; Antrim; Arenac; Benzie; Charlevoix; Cheboygan; Clare; Crawford; Emmet; Gladwin; Grand Traverse; Iosco; Kalkaska; Lake; Leelanau; Manistee; Mason; Missaukee; Montmorency; Ogemaw; Osceola; O","projected 2D","","","East","North","X","Y","9001","","4269","12142","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_788[] = {"26990","NAD83 / Michigan South","","","","United States (USA) - Michigan - MI_S - counties of Allegan; Barry; Bay; Berrien; Branch; Calhoun; Cass; Clinton; Eaton; Genesee; Gratiot; Hillsdale; Huron; Ingham; Ionia; Isabella; Jackson; Kalamazoo; Kent; Lapeer; Lenawee; Livingston; Macomb; Mecosta; Mi","projected 2D","","","East","North","X","Y","9001","","4269","12143","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_789[] = {"26991","NAD83 / Minnesota North","","","","United States (USA) - Minnesota - MN_N - counties of Beltrami; Clearwater; Cook; Itasca; Kittson; Koochiching; Lake; Lake of the Woods; Mahnomen; Marshall; Norman; Pennington; Polk; Red Lake; Roseau; St. Louis","projected 2D","","","East","North","X","Y","9001","","4269","12231","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_790[] = {"26992","NAD83 / Minnesota Central","NAD83 / Minnesota Cent.","","","United States (USA) - Minnesota - MN_C - counties of Aitkin; Becker; Benton; Carlton; Cass; Chisago; Clay; Crow Wing; Douglas; Grant; Hubbard; Isanti; Kanabec; Mille Lacs; Morrison; Otter Tail; Pine; Pope; Stearns; Stevens; Todd; Traverse; Wadena; Wilkin","projected 2D","","","East","North","X","Y","9001","","4269","12232","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_791[] = {"26993","NAD83 / Minnesota South","","","","United States (USA) - Minnesota - MN_S - counties of Anoka; Big Stone; Blue Earth; Brown; Carver; Chippewa; Cottonwood; Dakota; Dodge; Faribault; Fillmore; Freeborn; Goodhue; Hennepin; Houston; Jackson; Kandiyohi; Lac Qui Parle; Le Sueur; Lincoln; Lyon; Ma","projected 2D","","","East","North","X","Y","9001","","4269","12233","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_792[] = {"26994","NAD83 / Mississippi East","","","","United States (USA) - Mississippi - MS_E - counties of Alcorn; Attala; Benton; Calhoun; Chickasaw; Choctaw; Clarke; Clay; Covington; Forrest; George; Greene; Hancock; Harrison; Itawamba; Jackson; Jasper; Jones; Kemper; Lafayette; Lamar; Lauderdale; Leake; ","projected 2D","","","East","North","X","Y","9001","","4269","12331","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_793[] = {"26995","NAD83 / Mississippi West","","","","United States (USA) - Mississippi - MS_W - counties of Adams; Amite; Bolivar; Carroll; Claiborne; Coahoma; Copiah; De Soto; Franklin; Grenada; Hinds; Holmes; Humphreys; Issaquena; Jefferson; Jefferson Davis; Lawrence; Leflore; Lincoln; Madison; Marion; Mon","projected 2D","","","East","North","X","Y","9001","","4269","12332","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_794[] = {"26996","NAD83 / Missouri  East","","","","United States (USA) - Missouri - MO_E - counties of Bollinger; Butler; Cape Girardeau; Carter; Clark; Crawford; Dent; Dunklin; Franklin; Gasconade; Iron; Jefferson; Lewis; Lincoln; Madison; Marion; Mississippi; Montgomery; New Madrid; Oregon; Pemiscot; Per","projected 2D","","","East","North","X","Y","9001","","4269","12431","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_795[] = {"26997","NAD83 / Missouri Central","","","","United States (USA) - Missouri - MO_C - counties of Adair; Audrain; Benton; Boone; Callaway; Camden; Carroll; Chariton; Christian; Cole; Cooper; Dallas; Douglas; Greene; Grundy; Hickory; Howard; Howell; Knox; Laclede; Linn; Livingston; Macon; Maries; Merce","projected 2D","","","East","North","X","Y","9001","","4269","12432","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_796[] = {"26998","NAD83 / Missouri  West","","","","United States (USA) - Missouri - MO_W - counties of Andrew; Atchison; Barry; Barton; Bates; Buchanan; Caldwell; Cass; Cedar; Clay; Clinton; Dade; Daviess; De Kalb; Gentry; Harrison; Henry; Holt; Jackson; Jasper; Johnson; Lafayette; Lawrence; McDonald; Newt","projected 2D","","","East","North","X","Y","9001","","4269","12433","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_797[] = {"27038","Nahrwan 1967 / UTM zone 38N","Nahrwan 1967 / UTM 38N","","","Kuwait west of 48 deg East.","projected 2D","","","East","North","E","N","9001","","4270","16038","1996-04-12 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_798[] = {"27039","Nahrwan 1967 / UTM zone 39N","Nahrwan 1967 / UTM 39N","","","Kuwait east of 48 deg East.  United Arab Emirates (UAE) - Abu Dhabi - west of 54 deg East.","projected 2D","","","East","North","E","N","9001","","4270","16039","1996-04-12 00:00:00","","EPSG","","96.12",NULL};
-datafile_rows_t horiz_cs_row_799[] = {"27040","Nahrwan 1967 / UTM zone 40N","Nahrwan 1967 / UTM 40N","","","United Arab Emirates (UAE) - Abu Dhabi east of 54 deg East; Dubai; Sharjah; Ajman; Fujairah; Ras Al Kaimah; Umm Al Qaiwain.","projected 2D","","","East","North","E","N","9001","","4270","16040","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_800[] = {"27120","Naparima 1972 / UTM zone 20N","Naparima / UTM 20N","","","Trinidad and Tobago.","projected 2D","","","East","North","E","N","9001","","4271","16020","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_801[] = {"27200","GD49 / New Zealand Map Grid","GD49 / NZ Map Grid","","","New Zealand.","projected 2D","","","East","North","E","N","9001","","4272","19917","1995-06-02 00:00:00","","EPSG","Supersedes 27291 (GD49 / North Island Grid) and 27292 (GD49 / South Island Grid).","",NULL};
-datafile_rows_t horiz_cs_row_802[] = {"27291","GD49 / North Island Grid","","","","New Zealand - North Island.","projected 2D","","","East","North","E","N","9040","","4272","18141","1999-10-20 00:00:00","","EPSG","Sears 1922 British foot-metre conversion factor applied to ellipsoid.  Superseded by 27200 (GD49 / New Zealand Map Grid).","97.231",NULL};
-datafile_rows_t horiz_cs_row_803[] = {"27292","GD49 / South Island Grid","","","","New Zealand - South Island.","projected 2D","","","East","North","E","N","9040","","4272","18142","1999-10-20 00:00:00","","EPSG","Sears 1922 British foot-metre conversion factor applied to ellipsoid.  Superseded by 27200 (GD49 / New Zealand Map Grid).","97.231",NULL};
-datafile_rows_t horiz_cs_row_804[] = {"27391","NGO 1948 (Oslo) / NGO zone I","NGO 1948 / I","","","Norway - west of 3deg 30min W of Oslo (7deg 13min 20.5sec E of Greenwich).","projected 2D","","","North","East","x","y","9001","","4817","18221","1999-10-20 00:00:00","","EPSG","Used for large (>1:50000) scale mapping and cadastral work.  To be phased out and replaced by ETRF89 / UTM zone 32N.","",NULL};
-datafile_rows_t horiz_cs_row_805[] = {"27392","NGO 1948 (Oslo) / NGO zone II","NGO 1948 / II","","","Norway - between 3deg 30min W and 1deg 10min W of Oslo (7deg 13min 20.5sec E  and 9deg 33min 20.5sec E of Greenwich).","projected 2D","","","North","East","x","y","9001","","4817","18222","1999-10-20 00:00:00","","EPSG","Used for large (>1:50000) scale mapping and cadastral work.  To be phased out and replaced by ETRF89 / UTM zone 32N.","",NULL};
-datafile_rows_t horiz_cs_row_806[] = {"27393","NGO 1948 (Oslo) / NGO zone III","NGO 1948 / III","","","Norway - between 1deg 10min W and 1deg 15min E of Oslo (9deg 33min 20.5sec E and 11deg 58min 20.5sec E of Greenwich).","projected 2D","","","North","East","x","y","9001","","4817","18223","1999-10-20 00:00:00","","EPSG","Used for large (>1:50000) scale mapping and cadastral work.  To be phased out and replaced by ETRF89 / UTM zone 32N.","",NULL};
-datafile_rows_t horiz_cs_row_807[] = {"27394","NGO 1948 (Oslo) / NGO zone IV","NGO 1948 / IV","","","Norway - between 1deg 15min E and 4deg 20min E of Oslo (11deg 58min 20.5sec E and 15deg 03min 20.5sec E of Greenwich).","projected 2D","","","North","East","x","y","9001","","4817","18224","1999-10-20 00:00:00","","EPSG","Used for large (>1:50000) scale mapping and cadastral work.  To be phased out and replaced by ETRF89 / UTM zone 32N and ETRF89 / UTM zone 33N.","",NULL};
-datafile_rows_t horiz_cs_row_808[] = {"27395","NGO 1948 (Oslo) / NGO zone V","NGO 1948 / V","","","Norway - between 4deg 20min E and 8deg 10min E of Oslo (15deg 03min 20.5sec E and 18deg 53min 20.5sec E of Greenwich).","projected 2D","","","North","East","x","y","9001","","4817","18225","1999-10-20 00:00:00","","EPSG","Used for large (>1:50000) scale mapping and cadastral work.  To be phased out and replaced by ETRF89 / UTM zone 33N and ETRF89 / UTM zone 34N.","",NULL};
-datafile_rows_t horiz_cs_row_809[] = {"27396","NGO 1948 (Oslo) / NGO zone VI","NGO 1948 / VI","","","Norway - between 8deg 10min E and 12deg 10min E of Oslo (18deg 53min 20.5sec E and 22deg 53min 20.5sec E of Greenwich).","projected 2D","","","North","East","x","y","9001","","4817","18226","1999-10-20 00:00:00","","EPSG","Used for large (>1:50000) scale mapping and cadastral work.  To be phased out and replaced by ETRF89 / UTM zone 34N.","",NULL};
-datafile_rows_t horiz_cs_row_810[] = {"27397","NGO 1948 (Oslo) / NGO zone VII","NGO 1948 / VII","","","Norway - between 12deg 10min E and 16deg 15min E of Oslo (22deg 53min 20.5sec E and 26deg 58min 20.5sec E of Greenwich).","projected 2D","","","North","East","x","y","9001","","4817","18227","1999-10-20 00:00:00","","EPSG","Used for large (>1:50000) scale mapping and cadastral work.  To be phased out and replaced by ETRF89 / UTM zone 34N and ETRF89 / UTM zone 35N.","",NULL};
-datafile_rows_t horiz_cs_row_811[] = {"27398","NGO 1948 (Oslo) / NGO zone VIII","NGO 1948 / VIII","","","Norway - east of 16deg 15min E of Oslo (26deg 58min 20.5sec E of Greenwich).","projected 2D","","","North","East","x","y","9001","","4817","18228","1999-10-20 00:00:00","","EPSG","Used for large (>1:50000) scale mapping and cadastral work.  To be phased out and replaced by ETRF89 / UTM zone 35N.","",NULL};
-datafile_rows_t horiz_cs_row_812[] = {"27429","Datum 73 / UTM zone 29N","","","","Portugal - onshore.","projected 2D","","","East","North","E","N","9001","","4274","16029","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_813[] = {"27500","ATF (Paris) / Nord de Guerre","ATF / Nord de Guerre","","","France - Alsace.","projected 2D","","","East","North","X","Y","9001","","4901","19903","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_814[] = {"27581","NTF (Paris) / France I","NTF / France I","","","France north of 53.5 grads (48 deg 09 min) North.","projected 2D","","","East","North","X","Y","9001","","4807","18081","1996-04-12 00:00:00","","EPSG","Introduced 1972. Supersedes NTF / Nord France (code 27591).","95.26",NULL};
-datafile_rows_t horiz_cs_row_815[] = {"27582","NTF (Paris) / France II","NTF / France II","","","France 50.5 to 53.5 grads (45 deg 27 min to 48 deg 09 min) North. Also used over all mainlanf France.","projected 2D","","","East","North","X","Y","9001","","4807","18082","1996-04-12 00:00:00","","EPSG","Introduced 1972. Supersedes NTF / Centre France (code 27592).","95.26",NULL};
-datafile_rows_t horiz_cs_row_816[] = {"27583","NTF (Paris) / France III","NTF / France III","","","France south of 50.5 grads (45 deg 27 min) North.","projected 2D","","","East","North","X","Y","9001","","4807","18083","1996-04-12 00:00:00","","EPSG","Introduced 1972. Supersedes NTF / Sud France (code 27593).","95.26",NULL};
-datafile_rows_t horiz_cs_row_817[] = {"27584","NTF (Paris) / France IV","NTF / France IV","","","France - Corsica","projected 2D","","","East","North","X","Y","9001","","4807","18084","1996-04-12 00:00:00","","EPSG","Introduced 1972. Supersedes NTF / Corse (code 27594).","",NULL};
-datafile_rows_t horiz_cs_row_818[] = {"27591","NTF (Paris) / Nord France","NTF / Nord France","","","France north of 53.5 grads (48 deg 09 min) North.","projected 2D","","","East","North","X","Y","9001","","4807","18091","1996-04-12 00:00:00","","EPSG","Superseded by NTF / France I (code 27581) from 1972.","95.26",NULL};
-datafile_rows_t horiz_cs_row_819[] = {"27592","NTF (Paris) / Centre France","NTF / Centre France","","","France 50.5 to 53.5 grads (45 deg 27 min to 48 deg 09 min) North.","projected 2D","","","East","North","X","Y","9001","","4807","18092","1996-04-12 00:00:00","","EPSG","Superseded by NTF / France II (code 27582) from 1972.","95.26",NULL};
-datafile_rows_t horiz_cs_row_820[] = {"27593","NTF (Paris) / Sud France","NTF / Sud France","","","France south of 50.5 grads (45 deg 27 min) North.","projected 2D","","","East","North","X","Y","9001","","4807","18093","1996-04-12 00:00:00","","EPSG","Superseded by NTF / France III (code 27583) from 1972.","95.26",NULL};
-datafile_rows_t horiz_cs_row_821[] = {"27594","NTF (Paris) / Corse","NTF / Corse","","","France - Corsica","projected 2D","","","East","North","X","Y","9001","","4807","18094","1996-04-12 00:00:00","","EPSG","Superseded by NTF / France IV (code 27584) from 1972.","",NULL};
-datafile_rows_t horiz_cs_row_822[] = {"27700","OSGB 1936 / British National Grid","British National Grid","","","United Kingdom (UK) - onshore England; Scotland; Wales; Isle of Man.","projected 2D","","","East","North","E","N","9001","","4277","19916","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_823[] = {"28191","Palestine 1923 / Palestine Grid","Palestine Grid","","","Israel; Jordan","projected 2D","","","East","North","E","N","9001","","4281","18201","1999-04-22 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_824[] = {"28192","Palestine 1923 / Palestine Belt","Palestine Belt","","","Israel; Jordan","projected 2D","","","East","North","E","N","9001","","4281","18202","1999-04-22 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_825[] = {"28193","Palestine 1923 / Israeli CS Grid","Israeli CS Grid","","","Israel.","projected 2D","","","East","North","E","N","9001","","4281","18203","1999-10-20 00:00:00","Survey of Israel.","EPSG","Superceded by Israeli TM Grid (EPSG code 239).","",NULL};
-datafile_rows_t horiz_cs_row_826[] = {"28232","Pointe Noire / UTM zone 32S","Point Noire / UTM 32S","","","Congo.","projected 2D","","","East","North","E","N","9001","","4282","16132","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_827[] = {"28348","GDA94 / MGA zone 48","","","","Australia - 102deg East  to 108deg East.","projected 2D","","","East","North","E","N","9001","","4283","17348","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_828[] = {"28349","GDA94 / MGA zone 49","","","","Australia - 108deg East  to 114deg East.","projected 2D","","","East","North","E","N","9001","","4283","17349","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_829[] = {"28350","GDA94 / MGA zone 50","","","","Australia - 114deg East  to 120deg East.","projected 2D","","","East","North","E","N","9001","","4283","17350","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_830[] = {"28351","GDA94 / MGA zone 51","","","","Australia - 120deg East  to 126deg East.","projected 2D","","","East","North","E","N","9001","","4283","17351","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_831[] = {"28352","GDA94 / MGA zone 52","","","","Australia - 126deg East  to 132deg East.","projected 2D","","","East","North","E","N","9001","","4283","17352","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_832[] = {"28353","GDA94 / MGA zone 53","","","","Australia - 132deg East  to 138deg East.","projected 2D","","","East","North","E","N","9001","","4283","17353","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_833[] = {"28354","GDA94 / MGA zone 54","","","","Australia - 138deg East  to 144deg East.","projected 2D","","","East","North","E","N","9001","","4283","17354","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_834[] = {"28355","GDA94 / MGA zone 55","","","","Australia - 144deg East  to 150deg East.","projected 2D","","","East","North","E","N","9001","","4283","17355","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_835[] = {"28356","GDA94 / MGA zone 56","","","","Australia - 150deg East  to 156deg East.","projected 2D","","","East","North","E","N","9001","","4283","17356","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_836[] = {"28357","GDA94 / MGA zone 57","","","","Australia - 156deg East  to 162deg East.","projected 2D","","","East","North","E","N","9001","","4283","17357","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_837[] = {"28358","GDA94 / MGA zone 58","","","","Australia - 162deg East  to 168deg East.","projected 2D","","","East","North","E","N","9001","","4283","17358","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_838[] = {"28402","Pulkovo 1942 / Gauss-Kruger zone 2","1942 Coord. Sys. zone 2","","","Czech Republic and Germany (former DDR) - west of 12 deg East.","projected 2D","","","North","East","X","Y","9001","","4284","16202","1998-06-30 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_839[] = {"28403","Pulkovo 1942 / Gauss-Kruger zone 3","1942 Coord. Sys. zone 3","","","Czech Republic and Germany ( former DDR) - east of 12 deg East; Poland and Slovakia - west of 18 deg East.","projected 2D","","","North","East","X","Y","9001","","4284","16203","1998-06-30 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_840[] = {"28404","Pulkovo 1942 / Gauss-Kruger zone 4","1942 Coord. Sys. zone 4","","","Estonia; Latvia; Lithuania; Russia; Ukraine; - west of 24 deg East; Poland - east of 24 deg East; Slovakia east of 18 deg East.","projected 2D","","","North","East","X","Y","9001","","4284","16204","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_841[] = {"28405","Pulkovo 1942 / Gauss-Kruger zone 5","1942 Coord. Sys. zone 5","","","Belarus - west of 30 deg East;  Estonia; Latvia & Lithuania - east of 24 deg East;  Moldova;  Russia &  Ukraine - 24 deg to 30 deg East.","projected 2D","","","North","East","X","Y","9001","","4284","16205","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_842[] = {"28406","Pulkovo 1942 / Gauss-Kruger zone 6","1942 Coord. Sys. zone 6","","","Belarus - east of 30 deg East;  Russia  &  Ukraine  - 30 deg to 36 deg East.","projected 2D","","","North","East","X","Y","9001","","4284","16206","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_843[] = {"28407","Pulkovo 1942 / Gauss-Kruger zone 7","1942 Coord. Sys. zone 7","","","Georgia - west of 36 deg East;  Russia  - 36 deg to 42 deg East;  Ukraine - east of 36 deg East.","projected 2D","","","North","East","X","Y","9001","","4284","16207","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_844[] = {"28408","Pulkovo 1942 / Gauss-Kruger zone 8","1942 Coord. Sys. zone 8","","","Armenia  Azerbaijan - west of 48 deg East;  Georgia - east of 42 deg East;  Russia - 42 deg to 48 deg East.","projected 2D","","","North","East","X","Y","9001","","4284","16208","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_845[] = {"28409","Pulkovo 1942 / Gauss-Kruger zone 9","1942 Coord. Sys. zone 9","","","Azerbaijan - east of 48 deg East;  Kazakstan - west of 54 deg East;  Russia - 48 deg to 54 deg East;  Turkmenistan - west of 54 deg East.","projected 2D","","","North","East","X","Y","9001","","4284","16209","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_846[] = {"28410","Pulkovo 1942 / Gauss-Kruger zone 10","1942 Coord. Sys. zone 10","","","Kazakstan;  Russia;  Turkmenistan  - 54 deg  to 60 deg East; Uzbekistan - west of 60 deg East.","projected 2D","","","North","East","X","Y","9001","","4284","16210","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_847[] = {"28411","Pulkovo 1942 / Gauss-Kruger zone 11","1942 Coord. Sys. zone 11","","","Kazakstan;  Russia;  Uzbekistan - 60 deg to 66 deg East;  Turkmenistan - east of 60 deg East.","projected 2D","","","North","East","X","Y","9001","","4284","16211","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_848[] = {"28412","Pulkovo 1942 / Gauss-Kruger zone 12","1942 Coord. Sys. zone 12","","","Kazakstan &  Russia - 66 deg to 72 deg East;  Kirgistan & Tadzhikstan - west of 72 deg East;  Uzbekistan - east of 66 deg East.","projected 2D","","","North","East","X","Y","9001","","4284","16212","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_849[] = {"28413","Pulkovo 1942 / Gauss-Kruger zone 13","1942 Coord. Sys. zone 13","","","Kazakstan;  Kirgizstan;  Russia - 72 deg to 78 deg East;  Tadzhikstan - east of 72 deg East.","projected 2D","","","North","East","X","Y","9001","","4284","16213","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_850[] = {"28414","Pulkovo 1942 / Gauss-Kruger zone 14","1942 Coord. Sys. zone 14","","","Kazakstan &  Russia - 78 deg to 84 deg East; Kirgizstan - east of 78 deg East.","projected 2D","","","North","East","X","Y","9001","","4284","16214","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_851[] = {"28415","Pulkovo 1942 / Gauss-Kruger zone 15","1942 Coord. Sys. zone 15","","","Kazakstan - east of 84 deg East;  Russia - 84 deg to 90 deg East.","projected 2D","","","North","East","X","Y","9001","","4284","16215","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_852[] = {"28416","Pulkovo 1942 / Gauss-Kruger zone 16","1942 Coord. Sys. zone 16","","","Russia - 90 deg to 96 deg East.","projected 2D","","","North","East","X","Y","9001","","4284","16216","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_853[] = {"28417","Pulkovo 1942 / Gauss-Kruger zone 17","1942 Coord. Sys. zone 17","","","Russia - 96 deg to 102deg East.","projected 2D","","","North","East","X","Y","9001","","4284","16217","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_854[] = {"28418","Pulkovo 1942 / Gauss-Kruger zone 18","1942 Coord. Sys. zone 18","","","Russia - 102 deg to 108 deg East.","projected 2D","","","North","East","X","Y","9001","","4284","16218","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_855[] = {"28419","Pulkovo 1942 / Gauss-Kruger zone 19","1942 Coord. Sys. zone 19","","","Russia - 108 deg to 114 deg East.","projected 2D","","","North","East","X","Y","9001","","4284","16219","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_856[] = {"28420","Pulkovo 1942 / Gauss-Kruger zone 20","1942 Coord. Sys. zone 20","","","Russia - 114 deg to 120 deg East.","projected 2D","","","North","East","X","Y","9001","","4284","16220","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_857[] = {"28421","Pulkovo 1942 / Gauss-Kruger zone 21","1942 Coord. Sys. zone 21","","","Russia - 120 deg to 126 deg East.","projected 2D","","","North","East","X","Y","9001","","4284","16221","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_858[] = {"28422","Pulkovo 1942 / Gauss-Kruger zone 22","1942 Coord. Sys. zone 22","","","Russia - 126 deg to 132 deg East.","projected 2D","","","North","East","X","Y","9001","","4284","16222","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_859[] = {"28423","Pulkovo 1942 / Gauss-Kruger zone 23","1942 Coord. Sys. zone 23","","","Russia - 132 deg to 138 deg East.","projected 2D","","","North","East","X","Y","9001","","4284","16223","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_860[] = {"28424","Pulkovo 1942 / Gauss-Kruger zone 24","1942 Coord. Sys. zone 24","","","Russia - 138 deg to 144 deg East.","projected 2D","","","North","East","X","Y","9001","","4284","16224","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_861[] = {"28425","Pulkovo 1942 / Gauss-Kruger zone 25","1942 Coord. Sys. zone 25","","","Russia - 144 deg to 150 deg East.","projected 2D","","","North","East","X","Y","9001","","4284","16225","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_862[] = {"28426","Pulkovo 1942 / Gauss-Kruger zone 26","1942 Coord. Sys. zone 26","","","Russia - 150 deg to 156 deg East.","projected 2D","","","North","East","X","Y","9001","","4284","16226","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_863[] = {"28427","Pulkovo 1942 / Gauss-Kruger zone 27","1942 Coord. Sys. zone 27","","","Russia - 156 deg to 162 deg East.","projected 2D","","","North","East","X","Y","9001","","4284","16227","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_864[] = {"28428","Pulkovo 1942 / Gauss-Kruger zone 28","1942 Coord. Sys. zone 28","","","Russia - 162 deg to 168 deg East.","projected 2D","","","North","East","X","Y","9001","","4284","16228","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_865[] = {"28429","Pulkovo 1942 / Gauss-Kruger zone 29","1942 Coord. Sys. zone 29","","","Russia - 168 deg to 174 deg East.","projected 2D","","","North","East","X","Y","9001","","4284","16229","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_866[] = {"28430","Pulkovo 1942 / Gauss-Kruger zone 30","1942 Coord. Sys. zone 30","","","Russia - 174 deg East to 180 deg.","projected 2D","","","North","East","X","Y","9001","","4284","16230","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_867[] = {"28431","Pulkovo 1942 / Gauss-Kruger zone 31","1942 Coord. Sys. zone 31","","","Russia - 180 deg to 174 deg West.","projected 2D","","","North","East","X","Y","9001","","4284","16231","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_868[] = {"28432","Pulkovo 1942 / Gauss-Kruger zone 32","1942 Coord. Sys. zone 32","","","Russia - east of 174 deg West.","projected 2D","","","North","East","X","Y","9001","","4284","16232","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_869[] = {"28462","Pulkovo 1942 / Gauss-Kruger 2N","Pulkovo / Gauss 2N","","","Czech Republic and Germany (former DDR) - west of 12 deg East.","projected 2D","","","North","East","X","Y","9001","","4284","16302","1998-06-30 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_870[] = {"28463","Pulkovo 1942 / Gauss-Kruger 3N","Pulkovo / Gauss 3N","","","Czech Republic and Germany ( former DDR) - east of 12 deg East; Poland and Slovakia - west of 18 deg East.","projected 2D","","","North","East","X","Y","9001","","4284","16303","1998-06-30 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_871[] = {"28464","Pulkovo 1942 / Gauss-Kruger 4N","Pulkovo / Gauss 4N","","","Estonia; Latvia; Lithuania; Russia; Ukraine; - west of 24 deg East; Poland - east of 24 deg East; Slovakia east of 18 deg East.","projected 2D","","","North","East","X","Y","9001","","4284","16304","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_872[] = {"28465","Pulkovo 1942 / Gauss-Kruger 5N","Pulkovo / Gauss 5N","","","Belarus - west of 30 deg East;  Estonia; Latvia & Lithuania - east of 24 deg East;  Moldova;  Russia &  Ukraine - 24 deg to 30 deg East.","projected 2D","","","North","East","X","Y","9001","","4284","16305","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_873[] = {"28466","Pulkovo 1942 / Gauss-Kruger 6N","Pulkovo / Gauss 6N","","","Belarus - east of 30 deg East;  Russia  &  Ukraine  - 30 deg to 36 deg East.","projected 2D","","","North","East","X","Y","9001","","4284","16306","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_874[] = {"28467","Pulkovo 1942 / Gauss-Kruger 7N","Pulkovo / Gauss 7N","","","Georgia - west of 36 deg East;  Russia  - 36 deg to 42 deg East;  Ukraine - east of 36 deg East.","projected 2D","","","North","East","X","Y","9001","","4284","16307","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_875[] = {"28468","Pulkovo 1942 / Gauss-Kruger 8N","Pulkovo / Gauss 8N","","","Armenia - west of 48 deg East;  Azerbaijan - west of 48 deg East;  Georgia - east of 42 deg East;  Russia - 42 deg to 48 deg East.","projected 2D","","","North","East","X","Y","9001","","4284","16308","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_876[] = {"28469","Pulkovo 1942 / Gauss-Kruger 9N","Pulkovo / Gauss 9N","","","Azerbaijan - east of 48 deg East;  Kazakstan - west of 54 deg East;  Russia - 48 deg to 54 deg East;  Turkmenistan - west of 54 deg East.","projected 2D","","","North","East","X","Y","9001","","4284","16309","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_877[] = {"28470","Pulkovo 1942 / Gauss-Kruger 10N","Pulkovo / Gauss 10N","","","Kazakstan;  Russia;  Turkmenistan  - 54 deg  to 60 deg East;  Uzbekistan - west of 60 deg East.","projected 2D","","","North","East","X","Y","9001","","4284","16310","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_878[] = {"28471","Pulkovo 1942 / Gauss-Kruger 11N","Pulkovo / Gauss 11N","","","Kazakstan;  Russia;  Uzbekistan - 60 deg to 66 deg East;  Turkmenistan - east of 60 deg East.","projected 2D","","","North","East","X","Y","9001","","4284","16311","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_879[] = {"28472","Pulkovo 1942 / Gauss-Kruger 12N","Pulkovo / Gauss 12N","","","Kazakstan &  Russia - 66 deg to 72 deg East;  Kirgistan & Tadzhikstan - west of 72 deg East;  Uzbekistan - east of 66 deg East.","projected 2D","","","North","East","X","Y","9001","","4284","16312","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_880[] = {"28473","Pulkovo 1942 / Gauss-Kruger 13N","Pulkovo / Gauss 13N","","","Kazakstan;  Kirgizstan;  Russia - 72 deg to 78 deg East;  Tadzhikstan - east of 72 deg East.","projected 2D","","","North","East","X","Y","9001","","4284","16313","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_881[] = {"28474","Pulkovo 1942 / Gauss-Kruger 14N","Pulkovo / Gauss 14N","","","Kazakstan &  Russia - 78 deg to 84 deg East;  Kirgizstan - east of 78 deg East.","projected 2D","","","North","East","X","Y","9001","","4284","16314","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_882[] = {"28475","Pulkovo 1942 / Gauss-Kruger 15N","Pulkovo / Gauss 15N","","","Kazakstan - east of 84 deg East;  Russia - 84 deg to 90 deg East.","projected 2D","","","North","East","X","Y","9001","","4284","16315","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_883[] = {"28476","Pulkovo 1942 / Gauss-Kruger 16N","Pulkovo / Gauss 16N","","","Russia - 90 deg to 96 deg East.","projected 2D","","","North","East","X","Y","9001","","4284","16316","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_884[] = {"28477","Pulkovo 1942 / Gauss-Kruger 17N","Pulkovo / Gauss 17N","","","Russia - 96 deg to 102deg East.","projected 2D","","","North","East","X","Y","9001","","4284","16317","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_885[] = {"28478","Pulkovo 1942 / Gauss-Kruger 18N","Pulkovo / Gauss 18N","","","Russia - 102 deg to 108 deg East.","projected 2D","","","North","East","X","Y","9001","","4284","16318","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_886[] = {"28479","Pulkovo 1942 / Gauss-Kruger 19N","Pulkovo / Gauss 19N","","","Russia - 108 deg to 114 deg East.","projected 2D","","","North","East","X","Y","9001","","4284","16319","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_887[] = {"28480","Pulkovo 1942 / Gauss-Kruger 20N","Pulkovo / Gauss 20N","","","Russia - 114 deg to 120 deg East.","projected 2D","","","North","East","X","Y","9001","","4284","16320","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_888[] = {"28481","Pulkovo 1942 / Gauss-Kruger 21N","Pulkovo / Gauss 21N","","","Russia - 120 deg to 126 deg East.","projected 2D","","","North","East","X","Y","9001","","4284","16321","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_889[] = {"28482","Pulkovo 1942 / Gauss-Kruger 22N","Pulkovo / Gauss 22N","","","Russia - 126 deg to 132 deg East.","projected 2D","","","North","East","X","Y","9001","","4284","16322","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_890[] = {"28483","Pulkovo 1942 / Gauss-Kruger 23N","Pulkovo / Gauss 23N","","","Russia - 132 deg to 138 deg East.","projected 2D","","","North","East","X","Y","9001","","4284","16323","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_891[] = {"28484","Pulkovo 1942 / Gauss-Kruger 24N","Pulkovo / Gauss 24N","","","Russia - 138 deg to 144 deg East.","projected 2D","","","North","East","X","Y","9001","","4284","16324","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_892[] = {"28485","Pulkovo 1942 / Gauss-Kruger 25N","Pulkovo / Gauss 25N","","","Russia - 144 deg to 150 deg East.","projected 2D","","","North","East","X","Y","9001","","4284","16325","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_893[] = {"28486","Pulkovo 1942 / Gauss-Kruger 26N","Pulkovo / Gauss 26N","","","Russia - 150 deg to 156 deg East.","projected 2D","","","North","East","X","Y","9001","","4284","16326","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_894[] = {"28487","Pulkovo 1942 / Gauss-Kruger 27N","Pulkovo / Gauss 27N","","","Russia - 156 deg to 162 deg East.","projected 2D","","","North","East","X","Y","9001","","4284","16327","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_895[] = {"28488","Pulkovo 1942 / Gauss-Kruger 28N","Pulkovo / Gauss 28N","","","Russia - 162 deg to 168 deg East.","projected 2D","","","North","East","X","Y","9001","","4284","16328","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_896[] = {"28489","Pulkovo 1942 / Gauss-Kruger 29N","Pulkovo / Gauss 29N","","","Russia - 168 deg to 174 deg East.","projected 2D","","","North","East","X","Y","9001","","4284","16329","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_897[] = {"28490","Pulkovo 1942 / Gauss-Kruger 30N","Pulkovo / Gauss 30N","","","Russia - 174 deg East to 180 deg.","projected 2D","","","North","East","X","Y","9001","","4284","16330","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_898[] = {"28491","Pulkovo 1942 / Gauss-Kruger 31N","Pulkovo / Gauss 31N","","","Russia - 180 deg to 174 deg West.","projected 2D","","","North","East","X","Y","9001","","4284","16331","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_899[] = {"28492","Pulkovo 1942 / Gauss-Kruger 32N","Pulkovo / Gauss 32N","","","Russia - east of 174 deg West.","projected 2D","","","North","East","X","Y","9001","","4284","16332","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_900[] = {"28600","Qatar / Qatar National Grid","Qatar National Grid","","","Qatar - onshore.","projected 2D","","","East","North","E","N","9001","","4286","19919","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_901[] = {"28991","RD / Netherlands Old","","","","Netherlands - onshore.","projected 2D","","","East","North","X","Y","9001","","4289","19913","1995-06-02 00:00:00","","EPSG","Superseded by 28992 (RD / Netherlands New).","",NULL};
-datafile_rows_t horiz_cs_row_902[] = {"28992","RD / Netherlands New","","","","Netherlands - onshore.","projected 2D","","","East","North","X","Y","9001","","4289","19914","1995-06-02 00:00:00","","EPSG","Supersedes 28991 (RD / Netherlands Old).","",NULL};
-datafile_rows_t horiz_cs_row_903[] = {"29100","SAD69 / Brazil Polyconic","","","","Brazil","projected 2D","","","East","North","X","Y","9001","","4291","19941","1999-04-22 00:00:00","PetroBras","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_904[] = {"29118","SAD69 / UTM zone 18N","","","","South America - 78deg West to 72deg West; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4291","16018","1995-06-02 00:00:00","","EPSG","Uses GRS67 ellipsoid with 1/f to exactly 2 decimal places.  Precision of ellipsoid entry increased from 2 to 5 dp with change id 97.251.  Error introduced if not using the truncated precision will not exceed 5 cm.","97.252",NULL};
-datafile_rows_t horiz_cs_row_905[] = {"29119","SAD69 / UTM zone 19N","","","","South America - 72deg West to 66deg West; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4291","16019","1995-06-02 00:00:00","","EPSG","Uses GRS67 ellipsoid with 1/f to exactly 2 decimal places.  Precision of ellipsoid entry increased from 2 to 5 dp with change id 97.252.  Error introduced if not using the truncated precision will not exceed 5 cm.","97.252",NULL};
-datafile_rows_t horiz_cs_row_906[] = {"29120","SAD69 / UTM zone 20N","","","","South America - 66deg West to 60deg West; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4291","16020","1995-06-02 00:00:00","","EPSG","Uses GRS67 ellipsoid with 1/f to exactly 2 decimal places.  Precision of ellipsoid entry increased from 2 to 5 dp with change id 97.252.  Error introduced if not using the truncated precision will not exceed 5 cm.","97.252",NULL};
-datafile_rows_t horiz_cs_row_907[] = {"29121","SAD69 / UTM zone 21N","","","","South America - 60deg West to 54deg West; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4291","16021","1995-06-02 00:00:00","","EPSG","Uses GRS67 ellipsoid with 1/f to exactly 2 decimal places.  Precision of ellipsoid entry increased from 2 to 5 dp with change id 97.252.  Error introduced if not using the truncated precision will not exceed 5 cm.","97.252",NULL};
-datafile_rows_t horiz_cs_row_908[] = {"29122","SAD69 / UTM zone 22N","","","","South America - 54deg West to 48deg West; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4291","16022","1995-06-02 00:00:00","","EPSG","Uses GRS67 ellipsoid with 1/f to exactly 2 decimal places.  Precision of ellipsoid entry increased from 2 to 5 dp with change id 97.252.  Error introduced if not using the truncated precision will not exceed 5 cm.","97.252",NULL};
-datafile_rows_t horiz_cs_row_909[] = {"29177","SAD69 / UTM zone 17S","","","","South America - 84deg West to 78deg West; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4291","16117","1995-06-02 00:00:00","","EPSG","Uses GRS67 ellipsoid with 1/f to exactly 2 decimal places.  Precision of ellipsoid entry increased from 2 to 5 dp with change id 97.252.  Error introduced if not using the truncated precision will not exceed 5 cm.","97.252",NULL};
-datafile_rows_t horiz_cs_row_910[] = {"29178","SAD69 / UTM zone 18S","","","","South America - Brazil - 78deg West to 72deg West; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4291","16118","1995-06-02 00:00:00","","EPSG","Uses GRS67 ellipsoid with 1/f to exactly 2 decimal places.  Precision of ellipsoid entry increased from 2 to 5 dp with change id 97.252.  Error introduced if not using the truncated precision will not exceed 5 cm.","97.252",NULL};
-datafile_rows_t horiz_cs_row_911[] = {"29179","SAD69 / UTM zone 19S","","","","South America - Brazil - 72deg West to 66deg West; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4291","16119","1995-06-02 00:00:00","","EPSG","Uses GRS67 ellipsoid with 1/f to exactly 2 decimal places.  Precision of ellipsoid entry increased from 2 to 5 dp with change id 97.252.  Error introduced if not using the truncated precision will not exceed 5 cm.","97.252",NULL};
-datafile_rows_t horiz_cs_row_912[] = {"29180","SAD69 / UTM zone 20S","","","","South America - Brazil - 66deg West to 60deg West; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4291","16120","1995-06-02 00:00:00","","EPSG","Uses GRS67 ellipsoid with 1/f to exactly 2 decimal places.  Precision of ellipsoid entry increased from 2 to 5 dp with change id 97.252.  Error introduced if not using the truncated precision will not exceed 5 cm.","97.252",NULL};
-datafile_rows_t horiz_cs_row_913[] = {"29181","SAD69 / UTM zone 21S","","","","South America - Brazil - 60deg West to 54deg West; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4291","16121","1995-06-02 00:00:00","","EPSG","Uses GRS67 ellipsoid with 1/f to exactly 2 decimal places.  Precision of ellipsoid entry increased from 2 to 5 dp with change id 97.252.  Error introduced if not using the truncated precision will not exceed 5 cm.","97.252",NULL};
-datafile_rows_t horiz_cs_row_914[] = {"29182","SAD69 / UTM zone 22S","","","","South America - Brazil - 54deg West to 48deg West; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4291","16122","1995-06-02 00:00:00","","EPSG","Uses GRS67 ellipsoid with 1/f to exactly 2 decimal places.  Precision of ellipsoid entry increased from 2 to 5 dp with change id 97.252.  Error introduced if not using the truncated precision will not exceed 5 cm.","97.252",NULL};
-datafile_rows_t horiz_cs_row_915[] = {"29183","SAD69 / UTM zone 23S","","","","South America - 48deg West to 42deg West.","projected 2D","","","East","North","E","N","9001","","4291","16123","1995-06-02 00:00:00","","EPSG","Uses GRS67 ellipsoid with 1/f to exactly 2 decimal places.  Precision of ellipsoid entry increased from 2 to 5 dp with change id 97.252.  Error introduced if not using the truncated precision will not exceed 5 cm.","97.252",NULL};
-datafile_rows_t horiz_cs_row_916[] = {"29184","SAD69 / UTM zone 24S","","","","South America - Brazil - 42deg West to 36deg West.","projected 2D","","","East","North","E","N","9001","","4291","16124","1995-06-02 00:00:00","","EPSG","Uses GRS67 ellipsoid with 1/f to exactly 2 decimal places.  Precision of ellipsoid entry increased from 2 to 5 dp with change id 97.252.  Error introduced if not using the truncated precision will not exceed 5 cm.","97.252",NULL};
-datafile_rows_t horiz_cs_row_917[] = {"29185","SAD69 / UTM zone 25S","","","","South America - 36deg West to 30deg West.","projected 2D","","","East","North","E","N","9001","","4291","16125","1995-06-02 00:00:00","","EPSG","Uses GRS67 ellipsoid with 1/f to exactly 2 decimal places.  Precision of ellipsoid entry increased from 2 to 5 dp with change id 97.252.  Error introduced if not using the truncated precision will not exceed 5 cm.","97.252",NULL};
-datafile_rows_t horiz_cs_row_918[] = {"29220","Sapper Hill 1943 / UTM zone 20S","Sapper Hill / UTM 20S","","","Falkland Islands - west of 60 deg West.","projected 2D","","","East","North","E","N","9001","","4292","16120","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_919[] = {"29221","Sapper Hill 1943 / UTM zone 21S","Sapper Hill / UTM 21S","","","Falkland Islands - east of 60 deg West.","projected 2D","","","East","North","E","N","9001","","4292","16121","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_920[] = {"29333","Schwarzeck / UTM zone 33S","Schwarzeck / UTM 33S","","","Namibia - offshore.","projected 2D","","","East","North","E","N","9001","","4293","16133","1996-04-12 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_921[] = {"29371","South West African Coord. System zone 11","SW African CS zone 11","","","Namibia - west of 12 deg East.","projected 2D","","","West","South","W","S","9031","","4293","17611","1997-06-16 00:00:00","","EPSG","","97.16",NULL};
-datafile_rows_t horiz_cs_row_922[] = {"29373","South West African Coord. System zone 13","SW African CS zone 13","","","Namibia - 12 to 14 deg East.","projected 2D","","","West","South","W","S","9031","","4293","17613","1997-06-16 00:00:00","","EPSG","","97.16",NULL};
-datafile_rows_t horiz_cs_row_923[] = {"29375","South West African Coord. System zone 15","SW African CS zone 15","","","Namibia - 14 to 16 deg East.","projected 2D","","","West","South","W","S","9031","","4293","17615","1997-06-16 00:00:00","","EPSG","","97.16",NULL};
-datafile_rows_t horiz_cs_row_924[] = {"29377","South West African Coord. System zone 17","SW African CS zone 17","","","Namibia - 16 to 18 deg East.","projected 2D","","","West","South","W","S","9031","","4293","17617","1997-06-16 00:00:00","","EPSG","","97.16",NULL};
-datafile_rows_t horiz_cs_row_925[] = {"29379","South West African Coord. System zone 19","SW African CS zone 19","","","Namibia - 18 to 20 deg East.","projected 2D","","","West","South","W","S","9031","","4293","17619","1997-06-16 00:00:00","","EPSG","","97.16",NULL};
-datafile_rows_t horiz_cs_row_926[] = {"29381","South West African Coord. System zone 21","SW African CS zone 21","","","Namibia - 20 to 22 deg East.","projected 2D","","","West","South","W","S","9031","","4293","17621","1997-06-16 00:00:00","","EPSG","","97.16",NULL};
-datafile_rows_t horiz_cs_row_927[] = {"29383","South West African Coord. System zone 23","SW African CS zone 23","","","Namibia - 22 to 24 deg East.","projected 2D","","","West","South","W","S","9031","","4293","17623","1997-06-16 00:00:00","","EPSG","","97.16",NULL};
-datafile_rows_t horiz_cs_row_928[] = {"29385","South West African Coord. System zone 25","SW African CS zone 25","","","Namibia - east of 24 deg East.","projected 2D","","","West","South","W","S","9031","","4293","17625","1997-06-16 00:00:00","","EPSG","","97.16",NULL};
-datafile_rows_t horiz_cs_row_929[] = {"29635","Sudan / UTM zone 35N","","","","Sudan - south - west of 30 deg East.","projected 2D","","","East","North","E","N","9001","","4296","16035","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_930[] = {"29636","Sudan / UTM zone 36N","","","","Sudan - south - east of 30 deg East.","projected 2D","","","East","North","E","N","9001","","4296","16036","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_931[] = {"29700","Tananarive (Paris) / Laborde Grid","Tananarive  / Laborde","","","Madagascar.","projected 2D","","","East","North","X","Y","9001","","4810","19911","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_932[] = {"29738","Tananarive / UTM zone 38S","Tananarive / UTM 38S","","","Madagascar - offshore west of 48 deg East.","projected 2D","","","East","North","E","N","9001","","4297","16138","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_933[] = {"29739","Tananarive / UTM zone 39S","Tananarive / UTM 39S","","","Madagascar - offshore east of 48 deg East.","projected 2D","","","East","North","E","N","9001","","4297","16139","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_934[] = {"29849","Timbalai 1948 / UTM zone 49N","Timbalai 1948 / UTM 49N","","","Brunei - offshore; Malaysia - East Malaysia (Sarawak).","projected 2D","","","East","North","E","N","9001","","4298","16049","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_935[] = {"29850","Timbalai 1948 / UTM zone 50N","Timbalai 1948 / UTM 50N","","","Brunei - offshore; Malaysia - East Malaysia (Sabah).","projected 2D","","","East","North","E","N","9001","","4298","16050","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_936[] = {"29871","Timbalai 1948 / R.S.O. Borneo (ch)","Timbalai  / Borneo (ch)","","","Malaysia - East Malaysia (Sabah; Sarawak).","projected 2D","","","East","North","E","N","9042","","4298","19912","1999-10-20 00:00:00","","EPSG","Adopts metric conversion of 39.370147 inches per metre.","97.231",NULL};
-datafile_rows_t horiz_cs_row_937[] = {"29872","Timbalai 1948 / R.S.O. Borneo (ft)","Timbalai  / Borneo (ft)","","","Brunei; Malaysia - East Malaysia (Sabah; Sarawak).","projected 2D","","","East","North","E","N","9041","","4298","19912","1999-10-20 00:00:00","","EPSG","Original projection definition in chains.  1 chain = 66 feet=792 inches.  Adopts metric conversion of 39.370147 inches per metre.","97.231",NULL};
-datafile_rows_t horiz_cs_row_938[] = {"29873","Timbalai 1948 / R.S.O. Borneo (m)","Timbalai  / Borneo (m)","","","Brunei.","projected 2D","","","East","North","E","N","9001","","4298","19912","1997-07-22 00:00:00","","EPSG","Original projection definition in chains.  1 chain = 66 feet=792 inches.  Adopts metric conversion of 39.370147 inches per metre.","",NULL};
-datafile_rows_t horiz_cs_row_939[] = {"29900","TM65 / Irish National Grid","TM65 / Irish Nat Grid","","","Ireland - onshore; United Kingdom (UK) - Northern Ireland (Ulster) onshore","projected 2D","","","East","North","E","N","9001","","4299","19908","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_940[] = {"30161","Tokyo / Japan Plane Rectangular CS I","Tokyo / Japan zone I","","","Japan - Kyushu - Nagasaki-ken; islands of Kagoshima-ken between 27 and 32 deg N and between 128 deg 18 min and 130 deg E (between 128 deg 18 min and 30 deg 13 min E for Amami islands).","projected 2D","","","North","East","X","Y","9001","","4301","17801","1998-12-12 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_941[] = {"30162","Tokyo / Japan Plane Rectangular CS II","Tokyo / Japan zone II","","","Japan - Kyushu - Fukuoka-ken; Saga-ken; Kumamoto-ken; Oita-ken; Miyazaki-ken; Kagoshima-ken (except for area within Japan Plane Rectangular Coordinates System zone I).","projected 2D","","","North","East","X","Y","9001","","4301","17802","1998-12-12 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_942[] = {"30163","Tokyo / Japan Plane Rectangular CS III","Tokyo / Japan zone III","","","Japan - Kyushu - Fukuoka-ken; Saga-ken; Kumamoto-ken; Oita-ken; Miyazaki-ken; Kagoshima-ken (except for area within Japan Plane Rectangular Coordinates System zone I).","projected 2D","","","North","East","X","Y","9001","","4301","17803","1998-12-12 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_943[] = {"30164","Tokyo / Japan Plane Rectangular CS IV","Tokyo / Japan zone IV","","","Japan - Kyushu - Fukuoka-ken; Saga-ken; Kumamoto-ken; Oita-ken; Miyazaki-ken; Kagoshima-ken (except for area within Japan Plane Rectangular Coordinates System zone I).","projected 2D","","","North","East","X","Y","9001","","4301","17804","1998-12-12 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_944[] = {"30165","Tokyo / Japan Plane Rectangular CS V","Tokyo / Japan zone V","","","Japan - Kyushu - Fukuoka-ken; Saga-ken; Kumamoto-ken; Oita-ken; Miyazaki-ken; Kagoshima-ken (except for area within Japan Plane Rectangular Coordinates System zone I).","projected 2D","","","North","East","X","Y","9001","","4301","17805","1998-12-12 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_945[] = {"30166","Tokyo / Japan Plane Rectangular CS VI","Tokyo / Japan zone VI","","","Japan - Kyushu - Fukuoka-ken; Saga-ken; Kumamoto-ken; Oita-ken; Miyazaki-ken; Kagoshima-ken (except for area within Japan Plane Rectangular Coordinates System zone I).","projected 2D","","","North","East","X","Y","9001","","4301","17806","1998-12-12 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_946[] = {"30167","Tokyo / Japan Plane Rectangular CS VII","Tokyo / Japan zone VII","","","Japan - Kyushu - Fukuoka-ken; Saga-ken; Kumamoto-ken; Oita-ken; Miyazaki-ken; Kagoshima-ken (except for area within Japan Plane Rectangular Coordinates System zone I).","projected 2D","","","North","East","X","Y","9001","","4301","17807","1998-12-12 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_947[] = {"30168","Tokyo / Japan Plane Rectangular CS VIII","Tokyo / Japan zone VIII","","","Japan - Kyushu - Fukuoka-ken; Saga-ken; Kumamoto-ken; Oita-ken; Miyazaki-ken; Kagoshima-ken (except for area within Japan Plane Rectangular Coordinates System zone I).","projected 2D","","","North","East","X","Y","9001","","4301","17808","1998-12-12 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_948[] = {"30169","Tokyo / Japan Plane Rectangular CS IX","Tokyo / Japan zone IX","","","Japan - Kyushu - Fukuoka-ken; Saga-ken; Kumamoto-ken; Oita-ken; Miyazaki-ken; Kagoshima-ken (except for area within Japan Plane Rectangular Coordinates System zone I).","projected 2D","","","North","East","X","Y","9001","","4301","17809","1998-12-12 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_949[] = {"30170","Tokyo / Japan Plane Rectangular CS X","Tokyo / Japan zone X","","","Japan - Kyushu - Fukuoka-ken; Saga-ken; Kumamoto-ken; Oita-ken; Miyazaki-ken; Kagoshima-ken (except for area within Japan Plane Rectangular Coordinates System zone I).","projected 2D","","","North","East","X","Y","9001","","4301","17810","1998-12-12 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_950[] = {"30171","Tokyo / Japan Plane Rectangular CS XI","Tokyo / Japan zone XI","","","Japan - Hokkaido west of 141 deg 15 min E approx. - Otaru city; Hakodate city; Date city; Usu-gun and Abuta-gun of Iburi-shicyo; area of Hiyama-shicyo; area of Shiribeshi-shicyo; Oshima-shicyo.","projected 2D","","","North","East","X","Y","9001","","4301","17811","1998-12-12 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_951[] = {"30172","Tokyo / Japan Plane Rectangular CS XII","Tokyo / Japan zone XII","","","Japan - Hokkaido west of 141 deg 15 min E approx. - Otaru city; Hakodate city; Date city; Usu-gun and Abuta-gun of Iburi-shicyo; area of Hiyama-shicyo; area of Shiribeshi-shicyo; Oshima-shicyo.","projected 2D","","","North","East","X","Y","9001","","4301","17812","1998-12-12 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_952[] = {"30173","Tokyo / Japan Plane Rectangular CS XIII","Tokyo / Japan zone XIII","","","Japan - Hokkaido west of 141 deg 15 min E approx. - Otaru city; Hakodate city; Date city; Usu-gun and Abuta-gun of Iburi-shicyo; area of Hiyama-shicyo; area of Shiribeshi-shicyo; Oshima-shicyo.","projected 2D","","","North","East","X","Y","9001","","4301","17813","1998-12-12 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_953[] = {"30174","Tokyo / Japan Plane Rectangular CS XIV","Tokyo / Japan zone XIV","","","Japan - Tokyo-to south of 28 deg N & between 140 deg 30 min & 143 deg E.","projected 2D","","","North","East","X","Y","9001","","4301","17814","1998-12-12 00:00:00","","EPSG","Although legally defined as Tokyo datum the accuracy of the geodetic connection to mainland Japan is low.","",NULL};
-datafile_rows_t horiz_cs_row_954[] = {"30175","Tokyo / Japan Plane Rectangular CS XV","Tokyo / Japan zone XV","","","Japan - Okinawa-ken between 126 deg &130 deg E.","projected 2D","","","North","East","X","Y","9001","","4301","17815","1998-12-12 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_955[] = {"30176","Tokyo / Japan Plane Rectangular CS XVI","Tokyo / Japan zone XVI","","","Japan - Okinawa-ken west of 126 deg E.","projected 2D","","","North","East","X","Y","9001","","4301","17816","1998-12-12 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_956[] = {"30177","Tokyo / Japan Plane Rectangular CS XVII","Tokyo / Japan zone XVII","","","Japan - Okinawa-ken east of 130 deg E.","projected 2D","","","North","East","X","Y","9001","","4301","17817","1998-12-12 00:00:00","","EPSG","Although legally defined as Tokyo datum the accuracy of the geodetic connection to mainland Japan is low.","",NULL};
-datafile_rows_t horiz_cs_row_957[] = {"30178","Tokyo / Japan Plane Rectangular CS XVIII","Tokyo / Japan zone XVIII","","","Japan - Tokyo-to south of 28 N & west of 140 deg 30 min E.","projected 2D","","","North","East","X","Y","9001","","4301","17818","1998-12-12 00:00:00","","EPSG","Although legally defined as Tokyo datum the accuracy of the geodetic connection to mainland Japan is low.","",NULL};
-datafile_rows_t horiz_cs_row_958[] = {"30179","Tokyo / Japan Plane Rectangular CS XIX","Tokyo / Japan zone XIX","","","Japan - Tokyo-to south of 28 N & east of 143 deg E.","projected 2D","","","North","East","X","Y","9001","","4301","17819","1998-12-12 00:00:00","","EPSG","Although legally defined as Tokyo datum the accuracy of the geodetic connection to mainland Japan is low.","",NULL};
-datafile_rows_t horiz_cs_row_959[] = {"30200","Trinidad 1903 / Trinidad Grid","Trinidad 1903 / Trinidad","","","Trinidad and Tobago - Trinidad","projected 2D","","","East","North","E","N","9039","","4302","19925","1999-10-20 00:00:00","","EPSG","","97.231",NULL};
-datafile_rows_t horiz_cs_row_960[] = {"30339","TC(1948) / UTM zone 39N","","","","United Arab Emirates (UAE) - Abu Dhabi west of 54 deg East.","projected 2D","","","East","North","E","N","9001","","4303","16039","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_961[] = {"30340","TC(1948) / UTM zone 40N","","","","United Arab Emirates (UAE) - Abu Dhabi east of 54 deg East; Dubai.","projected 2D","","","East","North","E","N","9001","","4303","16040","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_962[] = {"30491","Voirol 1875 / Nord Algerie (ancienne)","Voirol /N Algerie ancien","","","Algeria - north of 38.5 grads (34 deg 39 min) North.","projected 2D","","","East","North","X","Y","9001","","4304","18011","1995-06-02 00:00:00","","EPSG","Superseded by 30591 (Voirol Unifie / Algeria Nord).","",NULL};
-datafile_rows_t horiz_cs_row_963[] = {"30492","Voirol 1875 / Sud Algerie (ancienne)","Voirol /S Algerie ancien","","","Algeria - 35 grads to 38.5 grads (31 deg 30 min to 34 deg 39 min) North.","projected 2D","","","East","North","X","Y","9001","","4304","18012","1995-06-02 00:00:00","","EPSG","Superseded by 30592 (Voirol Unifie / Algeria Sud).","",NULL};
-datafile_rows_t horiz_cs_row_964[] = {"30591","Voirol Unifie / Nord Algerie","Voirol Unifie /N Algerie","","","Algeria - north of 38.5 grads (34 deg 39 min) North.","projected 2D","","","East","North","X","Y","9001","","4305","18021","1995-06-02 00:00:00","","EPSG","Supersedes 30491 (Voirol 1875 / Nord Algeria ancienne).","",NULL};
-datafile_rows_t horiz_cs_row_965[] = {"30592","Voirol Unifie / Sud Algerie","Voirol Unifie /S Algerie","","","Algeria - 35 grads to 38.5 grads (31 deg 30 min to 34 deg 39 min) North.","projected 2D","","","East","North","X","Y","9001","","4305","18022","1995-06-02 00:00:00","","EPSG","Supersedes 30492 (Voirol 1875 / Sud Algeria ancienne).","",NULL};
-datafile_rows_t horiz_cs_row_966[] = {"30729","Nord Sahara 1959 / UTM zone 29N","Nord Sahara / UTM 29N","","","Algeria west of 6 deg West (of Greenwich).","projected 2D","","","East","North","E","N","9001","","4307","16029","1996-04-12 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_967[] = {"30730","Nord Sahara 1959 / UTM zone 30N","Nord Sahara / UTM 30N","","","Algeria 6 deg West to 0 deg East (of Greenwich).","projected 2D","","","East","North","E","N","9001","","4307","16030","1996-04-12 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_968[] = {"30731","Nord Sahara 1959 / UTM zone 31N","Nord Sahara / UTM 31N","","","Algeria 0 deg to 6 deg East (of Greenwich).","projected 2D","","","East","North","E","N","9001","","4307","16031","1996-04-12 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_969[] = {"30732","Nord Sahara 1959 / UTM zone 32N","Nord Sahara / UTM 32N","","","Algeria east of 6 deg East (of Greenwich).","projected 2D","","","East","North","E","N","9001","","4307","16032","1996-04-12 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_970[] = {"30800","RT38 2.5 gon W","","","","Sweden","projected 2D","","","North","East","X","Y","9001","","4308","19929","1997-11-13 00:00:00","National Land Survey of Sweden","EPSG","","97.14  97.39",NULL};
-datafile_rows_t horiz_cs_row_971[] = {"31028","Yoff / UTM zone 28N","","","","Senegal.","projected 2D","","","East","North","E","N","9001","","4310","16028","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_972[] = {"31121","Zanderij / UTM zone 21N","","","","Suriname.","projected 2D","","","East","North","E","N","9001","","4311","16021","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_973[] = {"31291","MGI (Ferro) / Austria West Zone","MGI / Austria West","","","Austria west of 11deg 50min East of Greenwich (29 deg 30 min East of Ferro).","projected 2D","","","East","North","X","Y","9001","","4805","18041","1995-06-02 00:00:00","","EPSG","Superceded by MGI / M34 (EPSG code 31296).","97.01",NULL};
-datafile_rows_t horiz_cs_row_974[] = {"31292","MGI (Ferro) / Austria Central Zone","MGI / Austria Central","","","Austria between 11deg 50min and 14deg 50min East of Greenwich (29 deg 30 min and 32 deg 30 min East of Ferro).","projected 2D","","","East","North","X","Y","9001","","4805","18042","1995-06-02 00:00:00","","EPSG","Superceded by MGI / M31 (EPSG code 31295).","97.01",NULL};
-datafile_rows_t horiz_cs_row_975[] = {"31293","MGI (Ferro) / Austria East Zone","MGI / Austria East","","","Austria east of 14deg 50min East of Greenwich (32 deg 30 min East of Ferro).","projected 2D","","","East","North","X","Y","9001","","4805","18043","1995-06-02 00:00:00","","EPSG","Superceded by MGI / M28 (EPSG code 31294).","97.01",NULL};
-datafile_rows_t horiz_cs_row_976[] = {"31294","MGI / M28","","","","Austria west of 11deg 50min East of Greenwich (29 deg 30 min East of Ferro).","projected 2D","","","East","North","X","Y","9001","","4312","18044","1999-10-20 00:00:00","","EPSG","Supercedes MGI (Ferro) / Austria East zone (EPSG code 31293).","",NULL};
-datafile_rows_t horiz_cs_row_977[] = {"31295","MGI / M31","","","","Austria between 11deg 50min and 14deg 50min East of Greenwich (29 deg 30 min and 32 deg 30 min East of Ferro).","projected 2D","","","East","North","X","Y","9001","","4312","18045","1999-10-20 00:00:00","","EPSG","Supercedes MGI (Ferro) / Austria Central zone (EPSG code 31292).","",NULL};
-datafile_rows_t horiz_cs_row_978[] = {"31296","MGI / M34","","","","Austria east of 14deg 50min East of Greenwich (32 deg 30 min East of Ferro).","projected 2D","","","East","North","X","Y","9001","","4312","18046","1999-10-20 00:00:00","","EPSG","Supercedes MGI (Ferro) / Austria West zone (EPSG code 31291).","",NULL};
-datafile_rows_t horiz_cs_row_979[] = {"31297","MGI / Austria Lambert","","","","Austria","projected 2D","","","East","North","X","Y","9001","","4312","19947","1999-10-20 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_980[] = {"31300","Belge 1972 / Belge Lambert 72","Belge Lambert 72","","","Belgium - onshore.","projected 2D","","","East","North","X","Y","9001","","4313","19902","1995-06-02 00:00:00","","EPSG","Supersedes 21500 (Belge 1950 / Belge Lambert 50).","",NULL};
-datafile_rows_t horiz_cs_row_981[] = {"31491","DHDN / Germany zone 1","","","","Germany - onshore west of 4 deg 30 min East.","projected 2D","","","East","North","X","Y","9001","","4314","18101","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_982[] = {"31492","DHDN / Germany zone 2","","","","Germany - onshore between 4 deg 30 min and 7 deg 30 min East.","projected 2D","","","East","North","X","Y","9001","","4314","18102","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_983[] = {"31493","DHDN / Germany zone 3","","","","Germany - onshore between 7 deg 30 min and 10 deg 30 min East.","projected 2D","","","East","North","X","Y","9001","","4314","18103","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_984[] = {"31494","DHDN / Germany zone 4","","","","Germany - onshore between 10 deg 30 min and 13 deg 30 min East.","projected 2D","","","East","North","X","Y","9001","","4314","18104","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_985[] = {"31495","DHDN / Germany zone 5","","","","Germany - onshore between 13 deg 30 min and 16 deg 30 min East.","projected 2D","","","East","North","X","Y","9001","","4314","18105","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_986[] = {"31600","Dealul Piscului 1933/ Stereo 33","Stereo 33","","","Romania.","projected 2D","","","East","North","X","Y","9001","","4316","19927","1996-04-12 00:00:00","","EPSG","Superseded by Stereo 70 system (ProjCS code 31700).","",NULL};
-datafile_rows_t horiz_cs_row_987[] = {"31700","Dealul Piscului 1970/ Stereo 70","Stereo 70","","","Romania.","projected 2D","","","North","East","X","Y","9001","","4317","19926","1996-04-12 00:00:00","","EPSG","Supersedes Stereo 33 system.","",NULL};
-datafile_rows_t horiz_cs_row_988[] = {"31838","NGN / UTM zone 38N","","","","Kuwait west of 48deg East.","projected 2D","","","East","North","E","N","9001","","4318","16038","1996-04-12 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_989[] = {"31839","NGN / UTM zone 39N","","","","Kuwait east of 48deg East.","projected 2D","","","East","North","E","N","9001","","4318","16039","1996-04-12 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_990[] = {"31900","KUDAMS / KTM","","","","Kuwait - Kuwait City.","projected 2D","","","East","North","E","N","9001","","4319","19928","1996-04-12 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_991[] = {"32001","NAD27 / Montana North","","","","United States (USA) - Montana - MT_N - counties of Blaine; Chouteau; Daniels; Flathead; Glacier; Hill; Liberty; Lincoln; Phillips; Pondera; Roosevelt; Sheridan; Teton; Toole; Valley","projected 2D","","","East","North","X","Y","9003","","4267","12501","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_992[] = {"32002","NAD27 / Montana Central","","","","United States (USA) - Montana - MT_C - counties of Cascade; Dawson; Fergus; Garfield; Judith Basin; Lake; Lewis and Clark; McCone; Meagher; Mineral; Missoula; Petroleum; Powell; Prairie; Richland; Sanders; Wibaux","projected 2D","","","East","North","X","Y","9003","","4267","12502","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_993[] = {"32003","NAD27 / Montana South","","","","United States (USA) - Montana - MT_S - counties of Beaverhead; Big Horn; Broadwater; Carbon; Carter; Custer; Deer Lodge; Fallon; Gallatin; Golden Valley; Granite; Jefferson; Madison; Musselshell; Park; Powder River; Ravalli; Rosebud; Silver Bow; Stillwater","projected 2D","","","East","North","X","Y","9003","","4267","12503","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_994[] = {"32005","NAD27 / Nebraska North","","","","United States (USA) - Nebraska - NE_N - counties of Antelope; Blaine; Box Butte; Boyd; Brown; Burt; Cedar; Cherry; Cuming; Dakota; Dawes; Dixon; Garfield; Grant; Holt; Hooker; Keya Paha; Knox; Loup; Madison; Pierce; Rock; Sheridan; Sioux; Stanton; Thomas; ","projected 2D","","","East","North","X","Y","9003","","4267","12601","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_995[] = {"32006","NAD27 / Nebraska South","","","","United States (USA) - Nebraska - NE_S - counties of Adams; Arthur; Banner; Boone; Buffalo; Butler; Cass; Chase; Cheyenne; Clay; Colfax; Custer; Dawson; Deuel; Dodge; Douglas; Dundy; Fillmore; Franklin; Frontier; Furnas; Gage; Garden; Gosper; Greeley; Hall;","projected 2D","","","East","North","X","Y","9003","","4267","12602","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_996[] = {"32007","NAD27 / Nevada East","","","","United States (USA) - Nevada - NV_E - counties of Clark; Elko; Eureka; Lincoln; White Pine","projected 2D","","","East","North","X","Y","9003","","4267","12701","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_997[] = {"32008","NAD27 / Nevada Central","","","","United States (USA) - Nevada - NV_C - counties of Lander; Nye","projected 2D","","","East","North","X","Y","9003","","4267","12702","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_998[] = {"32009","NAD27 / Nevada West","","","","United States (USA) - Nevada - NV_W - counties of Churchill; Douglas; Esmeralda; Humboldt; Lyon; Mineral; Pershing; Storey; Washoe","projected 2D","","","East","North","X","Y","9003","","4267","12703","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_999[] = {"32010","NAD27 / New Hampshire","","","","United States (USA) - New Hampshire - NH - counties of Belknap; Carroll; Cheshire; Coos; Grafton; Hillsborough; Merrimack; Rockingham; Strafford; Sullivan","projected 2D","","","East","North","X","Y","9003","","4267","12800","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1000[] = {"32011","NAD27 / New Jersey","","","","United States (USA) - New Jersey - NJ - counties of Atlantic; Bergen; Burlington; Camden; Cape May; Cumberland; Essex; Gloucester; Hudson; Hunterdon; Mercer; Middlesex; Monmouth; Morris; Ocean; Passaic; Salem; Somerset; Sussex; Union; Warren","projected 2D","","","East","North","X","Y","9003","","4267","12900","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1001[] = {"32012","NAD27 / New Mexico East","","","","United States (USA) - New Mexico - NM_E - counties of Chaves; Colfax; Curry; De Baca; Eddy; Guadalupe; Harding; Lea; Mora; Quay; Roosevelt; San Miguel; Union","projected 2D","","","East","North","X","Y","9003","","4267","13001","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1002[] = {"32013","NAD27 / New Mexico Central","NAD27 / New Mexico Cent.","","","United States (USA) - New Mexico - NM_C - counties of Bernalillo; Dona Ana; Lincoln; Los Alamos; Otero; Rio Arriba; Sandoval; Santa Fe; Socorro; Taos; Torrance","projected 2D","","","East","North","X","Y","9003","","4267","13002","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1003[] = {"32014","NAD27 / New Mexico West","","","","United States (USA) - New Mexico - NM_W - counties of Catron; Cibola; Grant; Hidalgo; Luna; McKinley; San Juan; Sierra; Valencia","projected 2D","","","East","North","X","Y","9003","","4267","13003","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1004[] = {"32015","NAD27 / New York East","","","","United States (USA) - New York - NY_E - counties of Albany; Clinton; Columbia; Delaware; Dutchess; Essex; Franklin; Fulton; Greene; Hamilton; Herkimer; Montgomery; Orange; Otsego; Putnam; Rensselaer; Rockland; Saratoga; Schenectady; Schoharie; St. Lawrence","projected 2D","","","East","North","X","Y","9003","","4267","13101","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1005[] = {"32016","NAD27 / New York Central","","","","United States (USA) - New York - NY_C - counties of Broome; Cayuga; Chemung; Chenango; Cortland; Jefferson; Lewis; Madison; Oneida; Onondaga; Ontario; Oswego; Schuyler; Seneca; Steuben; Tioga; Tompkins; Wayne; Yates","projected 2D","","","East","North","X","Y","9003","","4267","13102","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1006[] = {"32017","NAD27 / New York West","","","","United States (USA) - New York - NY_W - counties of Allegany; Cattaraugus; Chautauqua; Erie; Genesee; Livingston; Monroe; Niagara; Orleans; Wyoming","projected 2D","","","East","North","X","Y","9003","","4267","13103","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1007[] = {"32018","NAD27 / New York Long Island","NAD27 / New York Long Is","","","United States (USA) - New York - NY_LI - counties of Bronx; Kings; Nassau; New York; Queens; Richmond; Suffolk","projected 2D","","","East","North","X","Y","9003","","4267","13104","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1008[] = {"32019","NAD27 / North Carolina","","","","United States (USA) - North Carolina - NC - counties of Alamance; Alexander; Alleghany; Anson; Ashe; Avery; Beaufort; Bertie; Bladen; Brunswick; Buncombe; Burke; Cabarrus; Caldwell; Camden; Carteret; Caswell; Catawba; Chatham; Cherokee; Chowan; Clay; Cleve","projected 2D","","","East","North","X","Y","9003","","4267","13200","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1009[] = {"32020","NAD27 / North Dakota North","NAD27 / North Dakota N","","","United States (USA) - North Dakota - ND_N - counties of Benson; Bottineau; Burke; Cavalier; Divide; Eddy; Foster; Grand Forks; Griggs; McHenry; McKenzie; McLean; Mountrial; Nelson; Pembina; Pierce; Ramsey; Renville; Rolette; Sheridan; Steele; Towner; Trail","projected 2D","","","East","North","X","Y","9003","","4267","13301","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1010[] = {"32021","NAD27 / North Dakota South","NAD27 / North Dakota S","","","United States (USA) - North Dakota - ND_S - counties of Adams; Barnes; Billings; Bowman; Burleigh; Cass; Dickey; Dunn; Emmons; Golden Valley; Grant; Hettinger; Kidder; La Moure; Logan; McIntosh; Mercer; Morton; Oliver; Ransom; Richland; Sargent; Sioux; Slo","projected 2D","","","East","North","X","Y","9003","","4267","13302","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1011[] = {"32022","NAD27 / Ohio North","","","","United States (USA) - Ohio - OH_N - counties of Allen;Ashland; Ashtabula; Auglaize; Carroll; Columbiana; Coshocton; Crawford; Cuyahoga; Defiance; Delaware; Erie; Fulton; Geauga; Hancock; Hardin; Harrison; Henry; Holmes; Huron; Jefferson; Knox; Lake; Logan;","projected 2D","","","East","North","X","Y","9003","","4267","13401","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1012[] = {"32023","NAD27 / Ohio South","","","","United States (USA) - Ohio - OH_S - counties of Adams; Athens; Belmont; Brown; Butler; Champaign; Clark; Clermont; Clinton; Darke; Fairfield; Fayette; Franklin; Gallia; Greene; Guernsey; Hamilton; Highland; Hocking; Jackson; Lawrence; Licking; Madison; Mei","projected 2D","","","East","North","X","Y","9003","","4267","13402","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1013[] = {"32024","NAD27 / Oklahoma North","","","","United States (USA) - Oklahoma - OK_N - counties of Adair; Alfalfa; Beaver; Blaine; Canadian; Cherokee; Cimarron; Craig; Creek; Custer; Delaware; Dewey; Ellis; Garfield; Grant; Harper; Kay; Kingfisher; Lincoln; Logan; Major; Mayes; Muskogee; Noble; Nowata;","projected 2D","","","East","North","X","Y","9003","","4267","13501","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1014[] = {"32025","NAD27 / Oklahoma South","","","","United States (USA) - Oklahoma - OK_S - counties of Atoka; Beckham; Bryan; Caddo; Carter; Choctaw; Cleveland; Coal; Comanche; Cotton; Garvin; Grady; Greer; Harmon; Haskell; Hughes; Jackson; Jefferson; Johnston; Kiowa; Latimer; Le Flore; Love; Marshall; McC","projected 2D","","","East","North","X","Y","9003","","4267","13502","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1015[] = {"32026","NAD27 / Oregon North","","","","United States (USA) - Oregon - OR_N - counties of Baker; Benton; Clackamas; Clatsop; Columbia; Gilliam; Grant; Hood River; Jefferson; Lincoln; Linn; Marion; Morrow; Multnomah; Polk; Sherman; Tillamook; Umatilla; Union; Wallowa; Wasco; Washington; Wheeler; ","projected 2D","","","East","North","X","Y","9003","","4267","13601","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1016[] = {"32027","NAD27 / Oregon South","","","","United States (USA) - Oregon - OR_S - counties of Coos; Crook; Curry; Deschutes; Douglas; Harney; Jackson; Josephine; Klamath; Lake; Lane; Malheur","projected 2D","","","East","North","X","Y","9003","","4267","13602","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1017[] = {"32028","NAD27 / Pennsylvania North","NAD27 / Pennsylvania N","","","United States (USA) - Pennsylvania - PA_N - counties of Bradford; Cameron; Carbon; Centre; Clarion; Clearfield; Clinton; Columbia; Crawford; Elk; Erie; Forest; Jefferson; Lackawanna; Luzerne; Lycoming; McKean; Mercer; Monroe; Montour; Northumberland; Pike;","projected 2D","","","East","North","X","Y","9003","","4267","13701","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1018[] = {"32029","NAD27 / Pennsylvania South","NAD27 / Pennsylvania S","","","United States (USA) - Pennsylvania - PA_S - counties of Adams; Allegheny; Armstrong; Beaver; Bedford; Berks; Blair; Bucks; Butler; Cambria; Chester; Cumberland; Dauphin; Delaware; Fayette; Franklin; Fulton; Greene; Huntingdon; Indiana; Juniata; Lancaster; ","projected 2D","","","East","North","X","Y","9003","","4267","13702","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1019[] = {"32030","NAD27 / Rhode Island","","","","United States (USA) - Rhode Island - RI - counties of Bristol; Kent; Newport; Providence; Washington","projected 2D","","","East","North","X","Y","9003","","4267","13800","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1020[] = {"32031","NAD27 / South Carolina North","NAD27 / South Carolina N","","","United States (USA) - South Carolina - SC_N - counties of Abbeville; Anderson; Calhoun; Cherokee; Chester; Chesterfield; Darlington; Dillon; Edgefield; Fairfield; Florence; Greenville; Greenwood; Horry; Kershaw; Lancaster; Laurens; Lee; Lexington; Marion; ","projected 2D","","","East","North","X","Y","9003","","4267","13901","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1021[] = {"32033","NAD27 / South Carolina South","NAD27 / South Carolina S","","","United States (USA) - South Carolina - SC_S - counties of Aiken; Allendale; Bamberg; Barnwell; Beaufort; Berkeley; Charleston; Clarendon; Colleton; Dorchester; Georgetown; Hampton; Jasper; Orangeburg; Williamsburg","projected 2D","","","East","North","X","Y","9003","","4267","13902","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1022[] = {"32034","NAD27 / South Dakota North","NAD27 / South Dakota N","","","United States (USA) - South Dakota - SD_N - counties of Beadle; Brookings; Brown; Butte; Campbell; Clark; Codington; Corson; Day; Deuel; Dewey; Edmunds; Faulk; Grant; Hamlin; Hand; Harding; Hyde; Kingsbury; Lawrence; Marshall; McPherson; Meade; Perkins; Po","projected 2D","","","East","North","X","Y","9003","","4267","14001","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1023[] = {"32035","NAD27 / South Dakota South","NAD27 / South Dakota S","","","United States (USA) - South Dakota - SD_S - counties of Aurora; Bennett; Bon Homme; Brule; Buffalo; Charles Mix; Clay; Custer; Davison; Douglas; Fall River; Gregory; Haakon; Hanson; Hughes; Hutchinson; Jackson; Jerauld; Jones; Lake; Lincoln; Lyman; McCook;","projected 2D","","","East","North","X","Y","9003","","4267","14002","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1024[] = {"32036","NAD27 / Tennessee","","","","United States (USA) - Tennessee - TN - counties of Anderson; Bedford; Benton; Bledsoe; Blount; Bradley; Campbell; Cannon; Carroll; Carter; Cheatham; Chester; Claiborne; Clay; Cocke; Coffee; Crockett; Cumberland; Davidson; De Kalb; Decatur; Dickson; Dyer; F","projected 2D","","","East","North","X","Y","9003","","4267","14100","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1025[] = {"32037","NAD27 / Texas North","","","","United States (USA) - Texas -TX_N - counties of: Armstrong; Briscoe; Carson; Castro; Childress; Collingsworth; Dallam; Deaf Smith; Donley; Gray; Hall; Hansford; Hartley; Hemphill; Hutchinson; Lipscomb; Moore; Ochiltree; Oldham; Parmer; Potter; Randall; Rob","projected 2D","","","East","North","X","Y","9003","","4267","14201","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1026[] = {"32038","NAD27 / Texas North Central","NAD27 / Texas North Cen.","","","United States (USA) - Texas -TX_NC - counties of: Andrews; Archer; Bailey; Baylor; Borden; Bowie; Callahan; Camp; Cass; Clay; Cochran; Collin; Cooke; Cottle; Crosby; Dallas; Dawson; Delta; Denton; Dickens; Eastland; Ellis; Erath; Fannin; Fisher; Floyd; Foa","projected 2D","","","East","North","X","Y","9003","","4267","14202","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1027[] = {"32039","NAD27 / Texas Central","","","","United States (USA) - Texas -TX_C - counties of Anderson; Angelina; Bastrop; Bell; Blanco; Bosque; Brazos; Brown; Burleson; Burnet; Cherokee; Coke; Coleman; Comanche; Concho; Coryell; Crane; Crockett; Culberson; Ector; El Paso; Falls; Freestone; Gillespie;","projected 2D","","","East","North","X","Y","9003","","4267","14203","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1028[] = {"32040","NAD27 / Texas South Central","NAD27 / Texas South Cen.","","","United States (USA) - Texas -TX_SC - counties of Aransas; Atascosa; Austin; Bandera; Bee; Bexar; Brazoria; Brewster; Caldwell; Calhoun; Chambers; Colorado; Comal; De Witt; Dimmit; Edwards; Fayette; Fort Bend; Frio; Galveston; Goliad; Gonzales; Guadalupe; H","projected 2D","","","East","North","X","Y","9003","","4267","14204","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1029[] = {"32041","NAD27 / Texas South","","","","United States (USA) - Texas -TX_S - counties of Brooks; Cameron; Duval; Hidalgo; Jim Hogg; Jim Wells; Kenedy; Kleberg; Nueces; San Patricio; Starr; Webb; Willacy; Zapata;  - Gulf of Mexico outer continental shelf (OCS) protraction areas: South Padre Island","projected 2D","","","East","North","X","Y","9003","","4267","14205","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1030[] = {"32042","NAD27 / Utah North","","","","United States (USA) - Utah - UT_N - counties of Box Elder; Cache; Daggett; Davis; Morgan; Rich; Summit; Weber","projected 2D","","","East","North","X","Y","9003","","4267","14301","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1031[] = {"32043","NAD27 / Utah Central","","","","United States (USA) - Utah - UT_C - counties of Carbon; Duchesne; Emery; Grand; Juab; Millard; Salt Lake; Sanpete; Sevier; Tooele; Uintah; Utah; Wasatch","projected 2D","","","East","North","X","Y","9003","","4267","14302","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1032[] = {"32044","NAD27 / Utah South","","","","United States (USA) - Utah - UT_S - counties of Beaver; Garfield; Iron; Kane; Piute; San Juan; Washington; Wayne","projected 2D","","","East","North","X","Y","9003","","4267","14303","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1033[] = {"32045","NAD27 / Vermont","","","","United States (USA) - Vermont - VT - counties of Addison; Bennington; Caledonia; Chittenden; Essex; Franklin; Grand Isle; Lamoille; Orange; Orleans; Rutland; Washington; Windham; Windsor","projected 2D","","","East","North","X","Y","9003","","4267","14400","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1034[] = {"32046","NAD27 / Virginia North","","","","United States (USA) - Virginia - VA_N - counties of Arlington; Augusta; Bath; Caroline; Clarke; Culpeper; Fairfax; Fauquier; Frederick; Greene; Highland; King George; Loudoun; Madison; Orange; Page; Prince William; Rappahannock; Rockingham; Shenandoah; Spo","projected 2D","","","East","North","X","Y","9003","","4267","14501","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1035[] = {"32047","NAD27 / Virginia South","","","","United States (USA) - Virginia - VA_S - counties of Accomack; Albemarle; Alleghany; Amelia; Amherst; Appomattox; Bedford; Bland; Botetourt; Bristol; Brunswick; Buchanan; Buckingham; Campbell; Carroll; Charles City; Charlotte; Chesapeake; Chesterfield; Colo","projected 2D","","","East","North","X","Y","9003","","4267","14502","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1036[] = {"32048","NAD27 / Washington North","","","","United States (USA) - Washington - WA_N - counties of Chelan; Clallam; Douglas; Ferry; Island; Jefferson; King; Kitsap; Lincoln; Okanogan; Pend Oreille; San Juan; Skagit; Snohomish; Spokane; Stevens; Whatcom","projected 2D","","","East","North","X","Y","9003","","4267","14601","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1037[] = {"32049","NAD27 / Washington South","","","","United States (USA) - Washington - WA_S - counties of Adams; Asotin; Benton; Clark; Columbia; Cowlitz; Franklin; Garfield; Grant; Grays Harbor; Kittitas; Klickitat; Lewis; Mason; Pacific; Pierce; Skamania; Thurston; Wahkiakum; Walla Walla; Whitman; Yakima","projected 2D","","","East","North","X","Y","9003","","4267","14602","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1038[] = {"32050","NAD27 / West Virginia North","NAD27 / West Virginia N","","","United States (USA) - West Virginia - WV_N - counties of Barbour; Berkeley; Brooke; Doddridge; Grant; Hampshire; Hancock; Hardy; Harrison; Jefferson; Marion; Marshall; Mineral; Monongalia; Morgan; Ohio; Pleasants; Preston; Ritchie; Taylor; Tucker; Tyler; W","projected 2D","","","East","North","X","Y","9003","","4267","14701","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1039[] = {"32051","NAD27 / West Virginia South","NAD27 / West Virginia S","","","United States (USA) - West Virginia - WV_S - counties of Boone; Braxton; Cabell; Calhoun; Clay; Fayette; Gilmer; Greenbrier; Jackson; Kanawha; Lewis; Lincoln; Logan; Mason; McDowell; Mercer; Mingo; Monroe; Nicholas; Pendleton; Pocahontas; Putnam; Raleigh; ","projected 2D","","","East","North","X","Y","9003","","4267","14702","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1040[] = {"32052","NAD27 / Wisconsin North","","","","United States (USA) - Wisconsin - WI_N - counties of Ashland; Bayfield; Burnett; Douglas; Florence; Forest; Iron; Oneida; Price; Sawyer; Vilas; Washburn","projected 2D","","","East","North","X","Y","9003","","4267","14801","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1041[] = {"32053","NAD27 / Wisconsin Central","NAD27 / Wisconsin Cen.","","","United States (USA) - Wisconsin - WI_C - counties of Barron; Brown; Buffalo; Chippewa; Clark; Door; Dunn; Eau Claire; Jackson; Kewaunee; Langlade; Lincoln; Marathon; Marinette; Menominee; Oconto; Outagamie; Pepin; Pierce; Polk; Portage; Rusk; Shawano; St. ","projected 2D","","","East","North","X","Y","9003","","4267","14802","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1042[] = {"32054","NAD27 / Wisconsin South","","","","United States (USA) - Wisconsin - WI_S - counties of Adams; Calumet; Columbia; Crawford; Dane; Dodge; Fond Du Lac; Grant; Green; Green Lake; Iowa; Jefferson; Juneau; Kenosha; La Crosse; Lafayette; Manitowoc; Marquette; Milwaukee; Monroe; Ozaukee; Racine; R","projected 2D","","","East","North","X","Y","9003","","4267","14803","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1043[] = {"32055","NAD27 / Wyoming East","","","","United States (USA) - Wyoming - WY_E - counties of Albany; Campbell; Converse; Crook; Goshen; Laramie; Niobrara; Platte; Weston","projected 2D","","","East","North","X","Y","9003","","4267","14901","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1044[] = {"32056","NAD27 / Wyoming East Central","NAD27 / Wyoming E. Cen.","","","United States (USA) - Wyoming - WY_EC - counties of Big Horn; Carbon; Johnson; Natrona; Sheridan; Washakie","projected 2D","","","East","North","X","Y","9003","","4267","14902","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1045[] = {"32057","NAD27 / Wyoming West Central","NAD27 / Wyoming W. Cen.","","","United States (USA) - Wyoming - WY_WC - counties of Fremont; Hot Springs; Park; Sweetwater","projected 2D","","","East","North","X","Y","9003","","4267","14903","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1046[] = {"32058","NAD27 / Wyoming West","","","","United States (USA) - Wyoming - WY_W - counties of Lincoln; Sublette; Teton; Uinta","projected 2D","","","East","North","X","Y","9003","","4267","14904","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1047[] = {"32061","NAD27 / Guatemala Norte","","","","Guatemala - north of 15 deg 50 min North.","projected 2D","","","East","North","X","Y","9001","","4267","18211","1999-08-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1048[] = {"32062","NAD27 / Guatemala Sud","","","","Guatemala - south of 15 deg 50 min North.","projected 2D","","","East","North","X","Y","9001","","4267","18212","1999-08-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1049[] = {"32074","NAD27 / BLM 14N (feet)","","","","United States - Gulf of Mexico - west of approximately 96 deg West - outer continental shelf (OCS) protraction areas Corpus Christi; Port Isabel.","projected 2D","","","East","North","X","Y","9003","","4267","15914","1996-04-12 00:00:00","","EPSG","","96.03",NULL};
-datafile_rows_t horiz_cs_row_1050[] = {"32075","NAD27 / BLM 15N (feet)","","","","United States - Gulf of Mexico - 96 deg to 90 deg West - outer continental shelf (OCS) protraction areas East Breaks (EB); Alaminos Canyon (AC); Garden Banks (GB); Keathley Canyon (KC); Ewing Bank (EW); Green Canyon (GC); Walker Ridge (WR).","projected 2D","","","East","North","X","Y","9003","","4267","15915","1996-04-12 00:00:00","","EPSG","","96.03",NULL};
-datafile_rows_t horiz_cs_row_1051[] = {"32076","NAD27 / BLM 16N (feet)","","","","United States - Gulf of Mexico - 90 deg to 84 deg West - outer continental shelf (OCS) protraction areas Mobile (MO); Viosca Knoll (VK); Mississippi Canyon (MC); Atwater Valley (AT); Lund; Pensacola; Destin Dome (DD); De Soto Canyon; Lloyd; Henderson; Apal","projected 2D","","","East","North","X","Y","9003","","4267","15916","1996-04-12 00:00:00","","EPSG","","95.27  96.03",NULL};
-datafile_rows_t horiz_cs_row_1052[] = {"32077","NAD27 / BLM 17N (feet)","","","","United States - Gulf of Mexico - east of 84 deg West - outer continental shelf (OCS) protraction areas Gainesville; Tarpon Springs; St. Petersburg; Charlotte Harbor; Pulley Ridge; Dry Tortugas; Miami; Key West.","projected 2D","","","East","North","X","Y","9003","","4267","15917","1996-04-12 00:00:00","","EPSG","","96.03",NULL};
-datafile_rows_t horiz_cs_row_1053[] = {"32081","NAD27 / MTM zone 1","","","","Canada - Newfoundland - east of 54 deg 30 min West.","projected 2D","","","East","North","E","N","9001","","4267","17701","1997-11-13 00:00:00","Geodetic Surveys Section; Newfoundland Department of Government Services and Lands.","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1054[] = {"32082","NAD27 / MTM zone 2","","","","Canada - Newfoundland and Labrador between 57 deg 30 min and 54 de 30 min West.","projected 2D","","","East","North","E","N","9001","","4267","17702","1997-11-13 00:00:00","Geodetic Surveys Section; Newfoundland Department of Government Services and Lands.","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1055[] = {"32083","NAD27 / MTM zone 3","","","","Canada - Newfoundland and Labrador between 60 deg and 57 deg 30 min West.","projected 2D","","","East","North","E","N","9001","","4267","17703","1997-11-13 00:00:00","Geodetic Surveys Section; Newfoundland Department of Government Services and Lands.","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1056[] = {"32084","NAD27 / MTM zone 4","","","","Canada - Newfoundland (Labrador) between 63 deg and 60 deg West.","projected 2D","","","East","North","E","N","9001","","4267","17704","1997-11-13 00:00:00","Geodetic Surveys Section; Newfoundland Department of Government Services and Lands.","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1057[] = {"32085","NAD27 / MTM zone 5","","","","Canada - Newfoundland (Labrador) between 66 deg and 63 deg West.","projected 2D","","","East","North","E","N","9001","","4267","17705","1997-11-13 00:00:00","Geodetic Surveys Section; Newfoundland Department of Government Services and Lands.","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1058[] = {"32086","NAD27 / MTM zone 6","","","","Canada - Newfoundland (Labrador) between 69 deg and  66 deg West.","projected 2D","","","East","North","E","N","9001","","4267","17706","1997-11-13 00:00:00","Geodetic Surveys Section; Newfoundland Department of Government Services and Lands.","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1059[] = {"32100","NAD83 / Montana","","","","United States (USA) - Montana - MT - counties of Beaverhead; Big Horn; Blaine; Broadwater; Carbon; Carter; Cascade; Chouteau; Custer; Daniels; Dawson; Deer Lodge; Fallon; Fergus; Flathead; Gallatin; Garfield; Glacier; Golden Valley; Granite; Hill; Jefferso","projected 2D","","","East","North","X","Y","9001","","4269","12530","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1060[] = {"32104","NAD83 / Nebraska","","","","United States (USA) - Nebraska - NE - counties of Adams; Antelope; Arthur; Banner; Blaine; Boone; Box Butte; Boyd; Brown; Buffalo; Burt; Butler; Cass; Cedar; Chase; Cherry; Cheyenne; Clay; Colfax; Cuming; Custer; Dakota; Dawes; Dawson; Deuel; Dixon; Dodge;","projected 2D","","","East","North","X","Y","9001","","4269","12630","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1061[] = {"32107","NAD83 / Nevada  East","","","","United States (USA) - Nevada - NV_E - counties of Clark; Elko; Eureka; Lincoln; White Pine","projected 2D","","","East","North","X","Y","9001","","4269","12731","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1062[] = {"32108","NAD83 / Nevada Central","","","","United States (USA) - Nevada - NV_C - counties of Lander; Nye","projected 2D","","","East","North","X","Y","9001","","4269","12732","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1063[] = {"32109","NAD83 / Nevada West","","","","United States (USA) - Nevada - NV_W - counties of Churchill; Douglas; Esmeralda; Humboldt; Lyon; Mineral; Pershing; Storey; Washoe","projected 2D","","","East","North","X","Y","9001","","4269","12733","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1064[] = {"32110","NAD83 / New Hampshire","","","","United States (USA) - New Hampshire - NH - counties of Belknap; Carroll; Cheshire; Coos; Grafton; Hillsborough; Merrimack; Rockingham; Strafford; Sullivan","projected 2D","","","East","North","X","Y","9001","","4269","12830","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1065[] = {"32111","NAD83 / New Jersey","","","","United States (USA) - New Jersey - NJ - counties of Atlantic; Bergen; Burlington; Camden; Cape May; Cumberland; Essex; Gloucester; Hudson; Hunterdon; Mercer; Middlesex; Monmouth; Morris; Ocean; Passaic; Salem; Somerset; Sussex; Union; Warren","projected 2D","","","East","North","X","Y","9001","","4269","12930","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1066[] = {"32112","NAD83 / New Mexico East","","","","United States (USA) - New Mexico - NM_E - counties of Chaves; Colfax; Curry; De Baca; Eddy; Guadalupe; Harding; Lea; Mora; Quay; Roosevelt; San Miguel; Union","projected 2D","","","East","North","X","Y","9001","","4269","13031","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1067[] = {"32113","NAD83 / New Mexico Central","NAD83 / New Mexico Cent.","","","United States (USA) - New Mexico - NM_C - counties of Bernalillo; Dona Ana; Lincoln; Los Alamos; Otero; Rio Arriba; Sandoval; Santa Fe; Socorro; Taos; Torrance; Valencia","projected 2D","","","East","North","X","Y","9001","","4269","13032","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1068[] = {"32114","NAD83 / New Mexico West","","","","United States (USA) - New Mexico - NM_W - counties of Catron; Cibola; Grant; Hidalgo; Luna; McKinley; San Juan; Sierra","projected 2D","","","East","North","X","Y","9001","","4269","13033","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1069[] = {"32115","NAD83 / New York  East","","","","United States (USA) - New York - NY_E - counties of Albany; Clinton; Columbia; Delaware; Dutchess; Essex; Franklin; Fulton; Greene; Hamilton; Herkimer; Montgomery; Orange; Otsego; Putnam; Rensselaer; Rockland; Saratoga; Schenectady; Schoharie; St. Lawrence","projected 2D","","","East","North","X","Y","9001","","4269","13131","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1070[] = {"32116","NAD83 / New York Central","","","","United States (USA) - New York - NY_C - counties of Broome; Cayuga; Chemung; Chenango; Cortland; Jefferson; Lewis; Madison; Oneida; Onondaga; Ontario; Oswego; Schuyler; Seneca; Steuben; Tioga; Tompkins; Wayne; Yates","projected 2D","","","East","North","X","Y","9001","","4269","13132","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1071[] = {"32117","NAD83 / New York  West","","","","United States (USA) - New York - NY_W - counties of Allegany; Cattaraugus; Chautauqua; Erie; Genesee; Livingston; Monroe; Niagara; Orleans; Wyoming","projected 2D","","","East","North","X","Y","9001","","4269","13133","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1072[] = {"32118","NAD83 / New York Long Island","NAD83 / New York Long Is","","","United States (USA) - New York - NY_LI - counties of Bronx; Kings; Nassau; New York; Queens; Richmond; Suffolk","projected 2D","","","East","North","X","Y","9001","","4269","13134","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1073[] = {"32119","NAD83 / North Carolina","","","","United States (USA) - North Carolina - NC - counties of Alamance; Alexander; Alleghany; Anson; Ashe; Avery; Beaufort; Bertie; Bladen; Brunswick; Buncombe; Burke; Cabarrus; Caldwell; Camden; Carteret; Caswell; Catawba; Chatham; Cherokee; Chowan; Clay; Cleve","projected 2D","","","East","North","X","Y","9001","","4269","13230","1998-11-11 00:00:00","","EPSG","","98.30",NULL};
-datafile_rows_t horiz_cs_row_1074[] = {"32120","NAD83 / North Dakota North","NAD83 / North Dakota N","","","United States (USA) - North Dakota - ND_N - counties of Benson; Bottineau; Burke; Cavalier; Divide; Eddy; Foster; Grand Forks; Griggs; McHenry; McKenzie; McLean; Mountrial; Nelson; Pembina; Pierce; Ramsey; Renville; Rolette; Sheridan; Steele; Towner; Trail","projected 2D","","","East","North","X","Y","9001","","4269","13331","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1075[] = {"32121","NAD83 / North Dakota South","NAD83 / North Dakota S","","","United States (USA) - North Dakota - ND_S - counties of Adams; Barnes; Billings; Bowman; Burleigh; Cass; Dickey; Dunn; Emmons; Golden Valley; Grant; Hettinger; Kidder; La Moure; Logan; McIntosh; Mercer; Morton; Oliver; Ransom; Richland; Sargent; Sioux; Slo","projected 2D","","","East","North","X","Y","9001","","4269","13332","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1076[] = {"32122","NAD83 / Ohio North","","","","United States (USA) - Ohio - OH_N - counties of Allen;Ashland; Ashtabula; Auglaize; Carroll; Columbiana; Coshocton; Crawford; Cuyahoga; Defiance; Delaware; Erie; Fulton; Geauga; Hancock; Hardin; Harrison; Henry; Holmes; Huron; Jefferson; Knox; Lake; Logan;","projected 2D","","","East","North","X","Y","9001","","4269","13431","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1077[] = {"32123","NAD83 / Ohio South","","","","United States (USA) - Ohio - OH_S - counties of Adams; Athens; Belmont; Brown; Butler; Champaign; Clark; Clermont; Clinton; Darke; Fairfield; Fayette; Franklin; Gallia; Greene; Guernsey; Hamilton; Highland; Hocking; Jackson; Lawrence; Licking; Madison; Mei","projected 2D","","","East","North","X","Y","9001","","4269","13432","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1078[] = {"32124","NAD83 / Oklahoma North","","","","United States (USA) - Oklahoma - OK_N - counties of Adair; Alfalfa; Beaver; Blaine; Canadian; Cherokee; Cimarron; Craig; Creek; Custer; Delaware; Dewey; Ellis; Garfield; Grant; Harper; Kay; Kingfisher; Lincoln; Logan; Major; Mayes; Muskogee; Noble; Nowata;","projected 2D","","","East","North","X","Y","9001","","4269","13531","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1079[] = {"32125","NAD83 / Oklahoma South","","","","United States (USA) - Oklahoma - OK_S - counties of Atoka; Beckham; Bryan; Caddo; Carter; Choctaw; Cleveland; Coal; Comanche; Cotton; Garvin; Grady; Greer; Harmon; Haskell; Hughes; Jackson; Jefferson; Johnston; Kiowa; Latimer; Le Flore; Love; Marshall; McC","projected 2D","","","East","North","X","Y","9001","","4269","13532","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1080[] = {"32126","NAD83 / Oregon North","","","","United States (USA) - Oregon - OR_N - counties of Baker; Benton; Clackamas; Clatsop; Columbia; Gilliam; Grant; Hood River; Jefferson; Lincoln; Linn; Marion; Morrow; Multnomah; Polk; Sherman; Tillamook; Umatilla; Union; Wallowa; Wasco; Washington; Wheeler; ","projected 2D","","","East","North","X","Y","9001","","4269","13631","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1081[] = {"32127","NAD83 / Oregon South","","","","United States (USA) - Oregon - OR_S - counties of Coos; Crook; Curry; Deschutes; Douglas; Harney; Jackson; Josephine; Klamath; Lake; Lane; Malheur","projected 2D","","","East","North","X","Y","9001","","4269","13632","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1082[] = {"32128","NAD83 / Pennsylvania North","NAD83 / Pennsylvania N","","","United States (USA) - Pennsylvania - PA_N - counties of Bradford; Cameron; Carbon; Centre; Clarion; Clearfield; Clinton; Columbia; Crawford; Elk; Erie; Forest; Jefferson; Lackawanna; Luzerne; Lycoming; McKean; Mercer; Monroe; Montour; Northumberland; Pike;","projected 2D","","","East","North","X","Y","9001","","4269","13731","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1083[] = {"32129","NAD83 / Pennsylvania South","NAD83 / Pennsylvania S","","","United States (USA) - Pennsylvania - PA_S - counties of Adams; Allegheny; Armstrong; Beaver; Bedford; Berks; Blair; Bucks; Butler; Cambria; Chester; Cumberland; Dauphin; Delaware; Fayette; Franklin; Fulton; Greene; Huntingdon; Indiana; Juniata; Lancaster; ","projected 2D","","","East","North","X","Y","9001","","4269","13732","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1084[] = {"32130","NAD83 / Rhode Island","","","","United States (USA) - Rhode Island - RI - counties of Bristol; Kent; Newport; Providence; Washington","projected 2D","","","East","North","X","Y","9001","","4269","13830","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1085[] = {"32133","NAD83 / South Carolina","","","","United States (USA) - South Carolina - SC - counties of Abbeville; Aiken; Allendale; Anderson; Bamberg; Barnwell; Beaufort; Berkeley; Calhoun; Charleston; Cherokee; Chester; Chesterfield; Clarendon; Colleton; Darlington; Dillon; Dorchester; Edgefield; Fair","projected 2D","","","East","North","X","Y","9001","","4269","13930","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1086[] = {"32134","NAD83 / South Dakota North","NAD83 / South Dakota N","","","United States (USA) - South Dakota - SD_N - counties of Beadle; Brookings; Brown; Butte; Campbell; Clark; Codington; Corson; Day; Deuel; Dewey; Edmunds; Faulk; Grant; Hamlin; Hand; Harding; Hyde; Kingsbury; Lawrence; Marshall; McPherson; Meade; Perkins; Po","projected 2D","","","East","North","X","Y","9001","","4269","14031","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1087[] = {"32135","NAD83 / South Dakota South","NAD83 / South Dakota S","","","United States (USA) - South Dakota - SD_S - counties of Aurora; Bennett; Bon Homme; Brule; Buffalo; Charles Mix; Clay; Custer; Davison; Douglas; Fall River; Gregory; Haakon; Hanson; Hughes; Hutchinson; Jackson; Jerauld; Jones; Lake; Lincoln; Lyman; McCook;","projected 2D","","","East","North","X","Y","9001","","4269","14032","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1088[] = {"32136","NAD83 / Tennessee","","","","United States (USA) - Tennessee - TN - counties of Anderson; Bedford; Benton; Bledsoe; Blount; Bradley; Campbell; Cannon; Carroll; Carter; Cheatham; Chester; Claiborne; Clay; Cocke; Coffee; Crockett; Cumberland; Davidson; De Kalb; Decatur; Dickson; Dyer; F","projected 2D","","","East","North","X","Y","9001","","4269","14130","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1089[] = {"32137","NAD83 / Texas North","","","","United States (USA) - Texas -TX_N - counties of: Armstrong; Briscoe; Carson; Castro; Childress; Collingsworth; Dallam; Deaf Smith; Donley; Gray; Hall; Hansford; Hartley; Hemphill; Hutchinson; Lipscomb; Moore; Ochiltree; Oldham; Parmer; Potter; Randall; Rob","projected 2D","","","East","North","X","Y","9001","","4269","14231","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1090[] = {"32138","NAD83 / Texas North Central","NAD83 / Texas North Cen.","","","United States (USA) - Texas -TX_NC - counties of: Andrews; Archer; Bailey; Baylor; Borden; Bowie; Callahan; Camp; Cass; Clay; Cochran; Collin; Cooke; Cottle; Crosby; Dallas; Dawson; Delta; Denton; Dickens; Eastland; Ellis; Erath; Fannin; Fisher; Floyd; Foa","projected 2D","","","East","North","X","Y","9001","","4269","14232","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1091[] = {"32139","NAD83 / Texas Central","","","","United States (USA) - Texas -TX_C - counties of Anderson; Angelina; Bastrop; Bell; Blanco; Bosque; Brazos; Brown; Burleson; Burnet; Cherokee; Coke; Coleman; Comanche; Concho; Coryell; Crane; Crockett; Culberson; Ector; El Paso; Falls; Freestone; Gillespie;","projected 2D","","","East","North","X","Y","9001","","4269","14233","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1092[] = {"32140","NAD83 / Texas South Central","NAD83 / Texas South Cen.","","","United States (USA) - Texas -TX_SC - counties of Aransas; Atascosa; Austin; Bandera; Bee; Bexar; Brazoria; Brewster; Caldwell; Calhoun; Chambers; Colorado; Comal; De Witt; Dimmit; Edwards; Fayette; Fort Bend; Frio; Galveston; Goliad; Gonzales; Guadalupe; H","projected 2D","","","East","North","X","Y","9001","","4269","14234","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1093[] = {"32141","NAD83 / Texas South","","","","United States (USA) - Texas -TX_S - counties of Brooks; Cameron; Duval; Hidalgo; Jim Hogg; Jim Wells; Kenedy; Kleberg; Nueces; San Patricio; Starr; Webb; Willacy; Zapata","projected 2D","","","East","North","X","Y","9001","","4269","14235","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1094[] = {"32142","NAD83 / Utah North","","","","United States (USA) - Utah - UT_N - counties of Box Elder; Cache; Daggett; Davis; Morgan; Rich; Summit; Weber","projected 2D","","","East","North","X","Y","9001","","4269","14331","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1095[] = {"32143","NAD83 / Utah Central","","","","United States (USA) - Utah - UT_C - counties of Carbon; Duchesne; Emery; Grand; Juab; Millard; Salt Lake; Sanpete; Sevier; Tooele; Uintah; Utah; Wasatch","projected 2D","","","East","North","X","Y","9001","","4269","14332","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1096[] = {"32144","NAD83 / Utah South","","","","United States (USA) - Utah - UT_S - counties of Beaver; Garfield; Iron; Kane; Piute; San Juan; Washington; Wayne","projected 2D","","","East","North","X","Y","9001","","4269","14333","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1097[] = {"32145","NAD83 / Vermont","","","","United States (USA) - Vermont - VT - counties of Addison; Bennington; Caledonia; Chittenden; Essex; Franklin; Grand Isle; Lamoille; Orange; Orleans; Rutland; Washington; Windham; Windsor","projected 2D","","","East","North","X","Y","9001","","4269","14430","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1098[] = {"32146","NAD83 / Virginia North","","","","United States (USA) - Virginia - VA_N - counties of Arlington; Augusta; Bath; Caroline; Clarke; Culpeper; Fairfax; Fauquier; Frederick; Greene; Highland; King George; Loudoun; Madison; Orange; Page; Prince William; Rappahannock; Rockingham; Shenandoah; Spo","projected 2D","","","East","North","X","Y","9001","","4269","14531","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1099[] = {"32147","NAD83 / Virginia South","","","","United States (USA) - Virginia - VA_S - counties of Accomack; Albemarle; Alleghany; Amelia; Amherst; Appomattox; Bedford; Bland; Botetourt; Bristol; Brunswick; Buchanan; Buckingham; Campbell; Carroll; Charles City; Charlotte; Chesapeake; Chesterfield; Colo","projected 2D","","","East","North","X","Y","9001","","4269","14532","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1100[] = {"32148","NAD83 / Washington North","","","","United States (USA) - Washington - WA_N - counties of Chelan; Clallam; Douglas; Ferry; Grant north of approx. 47d30m; Island; Jefferson; King; Kitsap; Lincoln; Okanogan; Pend Oreille; San Juan; Skagit; Snohomish; Spokane; Stevens; Whatcom","projected 2D","","","East","North","X","Y","9001","","4269","14631","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1101[] = {"32149","NAD83 / Washington South","","","","United States (USA) - Washington - WA_S - counties of Adams; Asotin; Benton; Clark; Columbia; Cowlitz; Franklin; Garfield; Grant south of approx. 47d30m; Grays Harbor; Kittitas; Klickitat; Lewis; Mason; Pacific; Pierce; Skamania; Thurston; Wahkiakum; Walla","projected 2D","","","East","North","X","Y","9001","","4269","14632","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1102[] = {"32150","NAD83 / West Virginia North","NAD83 / West Virginia N","","","United States (USA) - West Virginia - WV_N - counties of Barbour; Berkeley; Brooke; Doddridge; Grant; Hampshire; Hancock; Hardy; Harrison; Jefferson; Marion; Marshall; Mineral; Monongalia; Morgan; Ohio; Pleasants; Preston; Ritchie; Taylor; Tucker; Tyler; W","projected 2D","","","East","North","X","Y","9001","","4269","14731","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1103[] = {"32151","NAD83 / West Virginia South","NAD83 / West Virginia S","","","United States (USA) - West Virginia - WV_S - counties of Boone; Braxton; Cabell; Calhoun; Clay; Fayette; Gilmer; Greenbrier; Jackson; Kanawha; Lewis; Lincoln; Logan; Mason; McDowell; Mercer; Mingo; Monroe; Nicholas; Pendleton; Pocahontas; Putnam; Raleigh; ","projected 2D","","","East","North","X","Y","9001","","4269","14732","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1104[] = {"32152","NAD83 / Wisconsin North","","","","United States (USA) - Wisconsin - WI_N - counties of Ashland; Bayfield; Burnett; Douglas; Florence; Forest; Iron; Oneida; Price; Sawyer; Vilas; Washburn","projected 2D","","","East","North","X","Y","9001","","4269","14831","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1105[] = {"32153","NAD83 / Wisconsin Central","NAD83 / Wisconsin Cen.","","","United States (USA) - Wisconsin - WI_C - counties of Barron; Brown; Buffalo; Chippewa; Clark; Door; Dunn; Eau Claire; Jackson; Kewaunee; Langlade; Lincoln; Marathon; Marinette; Menominee; Oconto; Outagamie; Pepin; Pierce; Polk; Portage; Rusk; Shawano; St. ","projected 2D","","","East","North","X","Y","9001","","4269","14832","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1106[] = {"32154","NAD83 / Wisconsin South","","","","United States (USA) - Wisconsin - WI_S - counties of Adams; Calumet; Columbia; Crawford; Dane; Dodge; Fond Du Lac; Grant; Green; Green Lake; Iowa; Jefferson; Juneau; Kenosha; La Crosse; Lafayette; Manitowoc; Marquette; Milwaukee; Monroe; Ozaukee; Racine; R","projected 2D","","","East","North","X","Y","9001","","4269","14833","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1107[] = {"32155","NAD83 / Wyoming East","","","","United States (USA) - Wyoming - WY_E - counties of Albany; Campbell; Converse; Crook; Goshen; Laramie; Niobrara; Platte; Weston","projected 2D","","","East","North","X","Y","9001","","4269","14931","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1108[] = {"32156","NAD83 / Wyoming East Central","NAD83 / Wyoming E. Cen.","","","United States (USA) - Wyoming - WY_EC - counties of Big Horn; Carbon; Johnson; Natrona; Sheridan; Washakie","projected 2D","","","East","North","X","Y","9001","","4269","14932","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1109[] = {"32157","NAD83 / Wyoming West Central","NAD83 / Wyoming W. Cen.","","","United States (USA) - Wyoming - WY_WC - counties of Fremont; Hot Springs; Park; Sweetwater","projected 2D","","","East","North","X","Y","9001","","4269","14933","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1110[] = {"32158","NAD83 / Wyoming West","","","","United States (USA) - Wyoming - WY_W - counties of Lincoln; Sublette; Teton; Uinta","projected 2D","","","East","North","X","Y","9001","","4269","14934","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1111[] = {"32161","NAD83 / Puerto Rico & Virgin Is.","","","","Puerto Rico and U.S. Virgin Islands.","projected 2D","","","East","North","X","Y","9001","","4269","15230","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1112[] = {"32180","NAD83 / SCoPQ zone 2","","","","Canada - Quebec - east of 57 deg East.","projected 2D","","","East","North","X","Y","9001","","4269","17700","1997-11-13 00:00:00","Topographic Mapping Section; Quebec Ministry of Natural Resources.","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1113[] = {"32181","NAD83 / MTM zone 1","","","","Canada - Newfoundland - east of 54 deg 30 min West.","projected 2D","","","East","North","E(X)","N(Y)","9001","","4269","17701","1997-11-13 00:00:00","Geodetic Surveys Section; Newfoundland Department of Government Services and Lands.","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1114[] = {"32182","NAD83 / MTM zone 2","","","","Canada - Newfoundland and Labrador between 57 deg 30 min and 54 de 30 min West.","projected 2D","","","East","North","E(X)","N(Y)","9001","","4269","17702","1997-11-13 00:00:00","Geodetic Surveys Section; Newfoundland Department of Government Services and Lands.","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1115[] = {"32183","NAD83 / MTM zone 3","","","","Canada - Newfoundland and Labrador between 60 deg and 57 deg 30 min West; Canada - Quebec between 60 deg and 57 deg West.","projected 2D","","","East","North","E(X)","N(Y)","9001","","4269","17703","1997-11-13 00:00:00","Topographic Mapping Section; Quebec Ministry of Natural Resources. Also Geodetic Surveys Section; Newfoundland Department of Government Services and Lands.","EPSG","Known in Quebec as \"NAD83 / [...]
-datafile_rows_t horiz_cs_row_1116[] = {"32184","NAD83 / MTM zone 4","","","","Canada - Quebec and Newfoundland (Labrador) between 63 deg and 60 deg West.","projected 2D","","","East","North","E(X)","N(Y)","9001","","4269","17704","1997-11-13 00:00:00","Topographic Mapping Section; Quebec Ministry of Natural Resources. Also Geodetic Surveys Section; Newfoundland Department of Government Services and Lands.","EPSG","Known in Quebec as \"NAD83 / SCoPQ zone 4\" with axis 1 and 2 abbreviation [...]
-datafile_rows_t horiz_cs_row_1117[] = {"32185","NAD83 / MTM zone 5","","","","Canada - Quebec and Newfoundland (Labrador) between 66 deg and 63 deg West.","projected 2D","","","East","North","E(X)","N(Y)","9001","","4269","17705","1997-11-13 00:00:00","Topographic Mapping Section; Quebec Ministry of Natural Resources. Also Geodetic Surveys Section; Newfoundland Department of Government Services and Lands.","EPSG","Known in Quebec as \"NAD83 / SCoPQ zone 5\" with axis 1 and 2 abbreviation [...]
-datafile_rows_t horiz_cs_row_1118[] = {"32186","NAD83 / MTM zone 6","","","","Canada - Quebec and Newfoundland (Labrador) between 69 deg and  66 deg West.","projected 2D","","","East","North","E(X)","N(Y)","9001","","4269","17706","1997-11-13 00:00:00","Topographic Mapping Section; Quebec Ministry of Natural Resources. Also Geodetic Surveys Section; Newfoundland Department of Government Services and Lands.","EPSG","Known in Quebec as \"NAD83 / SCoPQ zone 6\" with axis 1 and 2 abbreviatio [...]
-datafile_rows_t horiz_cs_row_1119[] = {"32187","NAD83 / MTM zone 7","","","","Canada - Quebec between 72 deg and 69 deg West.","projected 2D","","","East","North","E(X)","N(Y)","9001","","4269","17707","1997-11-13 00:00:00","Topographic Mapping Section; Quebec Ministry of Natural Resources.","EPSG","Known in Quebec as \"NAD83 / SCoPQ zone 7\" with axis 1 and 2 abbreviations of \"X\" and \"Y\" respectively.","",NULL};
-datafile_rows_t horiz_cs_row_1120[] = {"32188","NAD83 / MTM zone 8","","","","Canada - Quebec between 75 deg and 72 deg West.; Canada - Ontario - east of 75 deg West.","projected 2D","","","East","North","E(X)","N(Y)","9001","","4269","17708","1997-11-13 00:00:00","Surveys and Mapping Section; Ontario Ministry of Transportation.","EPSG","Known in Quebec as \"NAD83 / SCoPQ zone 8\" with axis 1 and 2 abbreviations of \"X\" and \"Y\" respectively.","",NULL};
-datafile_rows_t horiz_cs_row_1121[] = {"32189","NAD83 / MTM zone 9","","","","Canada - Quebec and Ontario - between 78 deg and 75 deg West.","projected 2D","","","East","North","E(X)","N(Y)","9001","","4269","17709","1997-11-13 00:00:00","Surveys and Mapping Section; Ontario Ministry of Transportation.","EPSG","Known in Quebec as \"NAD83 / SCoPQ zone 9\" with axis 1 and 2 abbreviations of \"X\" and \"Y\" respectively.","",NULL};
-datafile_rows_t horiz_cs_row_1122[] = {"32190","NAD83 / MTM zone 10","","","","Canada - Quebec west of 78 deg West; Canada - Ontario - between 79 deg 30 min and 78 deg W in area to north of 47 deg N; between 80 deg 15 min and 78 deg W in area between 46 deg and 47 deg N; between 81 deg and 78 deg W in area south of 46 deg N.","projected 2D","","","East","North","E(X)","N(Y)","9001","","4269","17710","1997-11-13 00:00:00","Surveys and Mapping Section; Ontario Ministry of Transportation.", [...]
-datafile_rows_t horiz_cs_row_1123[] = {"32191","NAD83 / MTM zone 11","","","","Canada - Ontario - south of 46 deg N and west of 81 deg West.","projected 2D","","","East","North","E","N","9001","","4269","17711","1997-11-13 00:00:00","Surveys and Mapping Section; Ontario Ministry of Transportation.","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1124[] = {"32192","NAD83 / MTM zone 12","","","","Canada - Ontario - between 82 deg 30 min and 79 deg 30 min W in area to north of 47 deg N; between 82 deg 30 min and 80 deg 15 min W in area between 46 deg and 47 deg N; between 82 deg 30 min and 79 deg 30 min W in area north of 47 deg N.","projected 2D","","","East","North","E","N","9001","","4269","17712","1997-11-13 00:00:00","Surveys and Mapping Section; Ontario Ministry of Transportation.","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1125[] = {"32193","NAD83 / MTM zone 13","","","","Canada - Ontario - between 85 deg 30 min and 82 deg 30 min West and north of 46 deg North.","projected 2D","","","East","North","E","N","9001","","4269","17713","1997-11-13 00:00:00","Surveys and Mapping Section; Ontario Ministry of Transportation.","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1126[] = {"32194","NAD83 / MTM zone 14","","","","Canada - Ontario - between 88 deg 30 min and 85 deg 30 min West.","projected 2D","","","East","North","E","N","9001","","4269","17714","1997-11-13 00:00:00","Surveys and Mapping Section; Ontario Ministry of Transportation.","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1127[] = {"32195","NAD83 / MTM zone 15","","","","Canada - Ontario - between 91 deg 30 min and 88 deg 30 min West.","projected 2D","","","East","North","E","N","9001","","4269","17715","1997-11-13 00:00:00","Surveys and Mapping Section; Ontario Ministry of Transportation.","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1128[] = {"32196","NAD83 / MTM zone 16","","","","Canada - Ontario - between 94 deg 30 min and 91 deg 30 min West.","projected 2D","","","East","North","E","N","9001","","4269","17716","1997-11-13 00:00:00","Surveys and Mapping Section; Ontario Ministry of Transportation.","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1129[] = {"32197","NAD83 / MTM zone 17","","","","Canada - Ontario - west of 94 deg 30 min West.","projected 2D","","","East","North","E","N","9001","","4269","17717","1997-11-13 00:00:00","Surveys and Mapping Section; Ontario Ministry of Transportation.","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1130[] = {"32198","NAD83 / Quebec Lambert","","","","Canada - Quebec","projected 2D","","","East","North","X","Y","9001","","4269","19944","1999-10-20 00:00:00","Service de la Cartographie; Minist�re des Ressources Naturelles; Quebec","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1131[] = {"32201","WGS 72 / UTM zone 1N","","","","180deg to 174deg West; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16001","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1132[] = {"32202","WGS 72 / UTM zone 2N","","","","174deg West to 168deg West; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16002","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1133[] = {"32203","WGS 72 / UTM zone 3N","","","","168deg West to 162deg West; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16003","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1134[] = {"32204","WGS 72 / UTM zone 4N","","","","162deg West to 156deg West; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16004","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1135[] = {"32205","WGS 72 / UTM zone 5N","","","","156deg West to 150deg West; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16005","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1136[] = {"32206","WGS 72 / UTM zone 6N","","","","150deg West to 144deg West; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16006","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1137[] = {"32207","WGS 72 / UTM zone 7N","","","","144deg West to 138deg West; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16007","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1138[] = {"32208","WGS 72 / UTM zone 8N","","","","138deg West to 132deg West; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16008","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1139[] = {"32209","WGS 72 / UTM zone 9N","","","","132deg West to 126deg West; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16009","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1140[] = {"32210","WGS 72 / UTM zone 10N","","","","130deg West to 120deg West; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16010","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1141[] = {"32211","WGS 72 / UTM zone 11N","","","","120deg West to 114deg West; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16011","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1142[] = {"32212","WGS 72 / UTM zone 12N","","","","114deg West to 108deg West; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16012","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1143[] = {"32213","WGS 72 / UTM zone 13N","","","","108deg West to 102deg West; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16013","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1144[] = {"32214","WGS 72 / UTM zone 14N","","","","102deg West to 96deg West; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16014","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1145[] = {"32215","WGS 72 / UTM zone 15N","","","","96deg West to 90deg West; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16015","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1146[] = {"32216","WGS 72 / UTM zone 16N","","","","90deg West to 84deg West; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16016","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1147[] = {"32217","WGS 72 / UTM zone 17N","","","","84deg West to 78deg West; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16017","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1148[] = {"32218","WGS 72 / UTM zone 18N","","","","78deg West to 72deg West; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16018","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1149[] = {"32219","WGS 72 / UTM zone 19N","","","","72deg West to 66deg West; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16019","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1150[] = {"32220","WGS 72 / UTM zone 20N","","","","66deg West to 60deg West; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16020","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1151[] = {"32221","WGS 72 / UTM zone 21N","","","","60deg West to 54deg West; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16021","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1152[] = {"32222","WGS 72 / UTM zone 22N","","","","54deg West to 48deg West; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16022","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1153[] = {"32223","WGS 72 / UTM zone 23N","","","","48deg West to 42deg West; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16023","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1154[] = {"32224","WGS 72 / UTM zone 24N","","","","42deg West to 36deg West; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16024","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1155[] = {"32225","WGS 72 / UTM zone 25N","","","","36deg West to 30deg West; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16025","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1156[] = {"32226","WGS 72 / UTM zone 26N","","","","30deg West to 24deg West; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16026","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1157[] = {"32227","WGS 72 / UTM zone 27N","","","","24deg West to 18deg West; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16027","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1158[] = {"32228","WGS 72 / UTM zone 28N","","","","18deg West to 12deg West; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16028","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1159[] = {"32229","WGS 72 / UTM zone 29N","","","","12deg West to 6deg West; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16029","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1160[] = {"32230","WGS 72 / UTM zone 30N","","","","6deg West to 0deg; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16030","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1161[] = {"32231","WGS 72 / UTM zone 31N","","","","0deg to 6deg East; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16031","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1162[] = {"32232","WGS 72 / UTM zone 32N","","","","6deg East to 12deg East; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16032","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1163[] = {"32233","WGS 72 / UTM zone 33N","","","","12deg East to 18deg East; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16033","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1164[] = {"32234","WGS 72 / UTM zone 34N","","","","18deg East to 24deg East; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16034","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1165[] = {"32235","WGS 72 / UTM zone 35N","","","","24deg East to 30deg East; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16035","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1166[] = {"32236","WGS 72 / UTM zone 36N","","","","30deg East to 36deg East; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16036","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1167[] = {"32237","WGS 72 / UTM zone 37N","","","","36deg East to 42deg East; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16037","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1168[] = {"32238","WGS 72 / UTM zone 38N","","","","42deg East to 48deg East; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16038","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1169[] = {"32239","WGS 72 / UTM zone 39N","","","","48deg East to 54deg East; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16039","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1170[] = {"32240","WGS 72 / UTM zone 40N","","","","54deg East to 60deg East; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16040","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1171[] = {"32241","WGS 72 / UTM zone 41N","","","","60deg East to 66deg East; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16041","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1172[] = {"32242","WGS 72 / UTM zone 42N","","","","66deg East to 72deg East; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16042","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1173[] = {"32243","WGS 72 / UTM zone 43N","","","","72deg East to 78deg East; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16043","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1174[] = {"32244","WGS 72 / UTM zone 44N","","","","78deg East to 84deg East; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16044","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1175[] = {"32245","WGS 72 / UTM zone 45N","","","","84deg East to 90deg East; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16045","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1176[] = {"32246","WGS 72 / UTM zone 46N","","","","90deg East to 96deg East; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16046","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1177[] = {"32247","WGS 72 / UTM zone 47N","","","","96deg East to 102eg East; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16047","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1178[] = {"32248","WGS 72 / UTM zone 48N","","","","102deg East to 108deg East; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16048","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1179[] = {"32249","WGS 72 / UTM zone 49N","","","","108deg East to 114deg East; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16049","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1180[] = {"32250","WGS 72 / UTM zone 50N","","","","114deg East to 120deg East; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16050","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1181[] = {"32251","WGS 72 / UTM zone 51N","","","","120deg East to 126deg East; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16051","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1182[] = {"32252","WGS 72 / UTM zone 52N","","","","126deg East to 132deg East; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16052","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1183[] = {"32253","WGS 72 / UTM zone 53N","","","","132deg East to 138deg East; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16053","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1184[] = {"32254","WGS 72 / UTM zone 54N","","","","138deg East to 144deg East; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16054","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1185[] = {"32255","WGS 72 / UTM zone 55N","","","","144deg East to 150deg East; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16055","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1186[] = {"32256","WGS 72 / UTM zone 56N","","","","150deg East to 156deg East; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16056","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1187[] = {"32257","WGS 72 / UTM zone 57N","","","","156deg East to 162deg East; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16057","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1188[] = {"32258","WGS 72 / UTM zone 58N","","","","162deg East to 168deg East; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16058","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1189[] = {"32259","WGS 72 / UTM zone 59N","","","","168deg East to 174deg East; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16059","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1190[] = {"32260","WGS 72 / UTM zone 60N","","","","174deg East to 180deg; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16060","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1191[] = {"32301","WGS 72 / UTM zone 1S","","","","180deg to 174deg West; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16101","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1192[] = {"32302","WGS 72 / UTM zone 2S","","","","174deg West to 168deg West; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16102","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1193[] = {"32303","WGS 72 / UTM zone 3S","","","","168deg West to 162deg West; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16103","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1194[] = {"32304","WGS 72 / UTM zone 4S","","","","162deg West to 156deg West; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16104","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1195[] = {"32305","WGS 72 / UTM zone 5S","","","","156deg West to 150deg West; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16105","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1196[] = {"32306","WGS 72 / UTM zone 6S","","","","150deg West to 144deg West; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16106","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1197[] = {"32307","WGS 72 / UTM zone 7S","","","","144deg West to 138deg West; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16107","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1198[] = {"32308","WGS 72 / UTM zone 8S","","","","138deg West to 132deg West; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16108","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1199[] = {"32309","WGS 72 / UTM zone 9S","","","","132deg West to 126deg West; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16109","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1200[] = {"32310","WGS 72 / UTM zone 10S","","","","130deg West to 120deg West; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16110","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1201[] = {"32311","WGS 72 / UTM zone 11S","","","","120deg West to 114deg West; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16111","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1202[] = {"32312","WGS 72 / UTM zone 12S","","","","114deg West to 108deg West; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16112","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1203[] = {"32313","WGS 72 / UTM zone 13S","","","","108deg West to 102deg West; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16113","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1204[] = {"32314","WGS 72 / UTM zone 14S","","","","102deg West to 96deg West; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16114","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1205[] = {"32315","WGS 72 / UTM zone 15S","","","","96deg West to 90deg West; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16115","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1206[] = {"32316","WGS 72 / UTM zone 16S","","","","90deg West to 84deg West; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16116","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1207[] = {"32317","WGS 72 / UTM zone 17S","","","","84deg West to 78deg West; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16117","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1208[] = {"32318","WGS 72 / UTM zone 18S","","","","78deg West to 72deg West; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16118","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1209[] = {"32319","WGS 72 / UTM zone 19S","","","","72deg West to 66deg West; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16119","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1210[] = {"32320","WGS 72 / UTM zone 20S","","","","66deg West to 60deg West; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16120","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1211[] = {"32321","WGS 72 / UTM zone 21S","","","","60deg West to 54deg West; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16121","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1212[] = {"32322","WGS 72 / UTM zone 22S","","","","54deg West to 48deg West; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16122","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1213[] = {"32323","WGS 72 / UTM zone 23S","","","","48deg West to 42deg West; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16123","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1214[] = {"32324","WGS 72 / UTM zone 24S","","","","42deg West to 36deg West; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16124","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1215[] = {"32325","WGS 72 / UTM zone 25S","","","","36deg West to 30deg West; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16125","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1216[] = {"32326","WGS 72 / UTM zone 26S","","","","30deg West to 24deg West; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16126","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1217[] = {"32327","WGS 72 / UTM zone 27S","","","","24deg West to 18deg West; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16127","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1218[] = {"32328","WGS 72 / UTM zone 28S","","","","18deg West to 12deg West; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16128","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1219[] = {"32329","WGS 72 / UTM zone 29S","","","","12deg West to 6deg West; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16129","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1220[] = {"32330","WGS 72 / UTM zone 30S","","","","6deg West to 0deg; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16130","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1221[] = {"32331","WGS 72 / UTM zone 31S","","","","0deg to 6deg East; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16131","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1222[] = {"32332","WGS 72 / UTM zone 32S","","","","6deg East to 12deg East; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16132","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1223[] = {"32333","WGS 72 / UTM zone 33S","","","","12deg East to 18deg East; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16133","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1224[] = {"32334","WGS 72 / UTM zone 34S","","","","18deg East to 24deg East; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16134","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1225[] = {"32335","WGS 72 / UTM zone 35S","","","","24deg East to 30deg East; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16135","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1226[] = {"32336","WGS 72 / UTM zone 36S","","","","30deg East to 36deg East; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16136","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1227[] = {"32337","WGS 72 / UTM zone 37S","","","","36deg East to 42deg East; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16137","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1228[] = {"32338","WGS 72 / UTM zone 38S","","","","42deg East to 48deg East; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16138","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1229[] = {"32339","WGS 72 / UTM zone 39S","","","","48deg East to 54deg East; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16139","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1230[] = {"32340","WGS 72 / UTM zone 40S","","","","54deg East to 60deg East; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16140","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1231[] = {"32341","WGS 72 / UTM zone 41S","","","","60deg East to 66deg East; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16141","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1232[] = {"32342","WGS 72 / UTM zone 42S","","","","66deg East to 72deg East; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16142","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1233[] = {"32343","WGS 72 / UTM zone 43S","","","","72deg East to 78deg East; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16143","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1234[] = {"32344","WGS 72 / UTM zone 44S","","","","78deg East to 84deg East; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16144","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1235[] = {"32345","WGS 72 / UTM zone 45S","","","","84deg East to 90deg East; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16145","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1236[] = {"32346","WGS 72 / UTM zone 46S","","","","90deg East to 96deg East; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16146","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1237[] = {"32347","WGS 72 / UTM zone 47S","","","","96deg East to 102eg East; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16147","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1238[] = {"32348","WGS 72 / UTM zone 48S","","","","102deg East to 108deg East; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16148","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1239[] = {"32349","WGS 72 / UTM zone 49S","","","","108deg East to 114deg East; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16149","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1240[] = {"32350","WGS 72 / UTM zone 50S","","","","114deg East to 120deg East; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16150","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1241[] = {"32351","WGS 72 / UTM zone 51S","","","","120deg East to 126deg East; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16151","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1242[] = {"32352","WGS 72 / UTM zone 52S","","","","126deg East to 132deg East; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16152","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1243[] = {"32353","WGS 72 / UTM zone 53S","","","","132deg East to 138deg East; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16153","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1244[] = {"32354","WGS 72 / UTM zone 54S","","","","138deg East to 144deg East; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16154","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1245[] = {"32355","WGS 72 / UTM zone 55S","","","","144deg East to 150deg East; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16155","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1246[] = {"32356","WGS 72 / UTM zone 56S","","","","150deg East to 156deg East; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16156","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1247[] = {"32357","WGS 72 / UTM zone 57S","","","","156deg East to 162deg East; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16157","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1248[] = {"32358","WGS 72 / UTM zone 58S","","","","162deg East to 168deg East; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16158","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1249[] = {"32359","WGS 72 / UTM zone 59S","","","","168deg East to 174deg East; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16159","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1250[] = {"32360","WGS 72 / UTM zone 60S","","","","174deg East to 180deg; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4322","16160","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1251[] = {"32401","WGS 72BE / UTM zone 1N","","","","180deg to 174deg West; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16001","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1252[] = {"32402","WGS 72BE / UTM zone 2N","","","","174deg West to 168deg West; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16002","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1253[] = {"32403","WGS 72BE / UTM zone 3N","","","","168deg West to 162deg West; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16003","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1254[] = {"32404","WGS 72BE / UTM zone 4N","","","","162deg West to 156deg West; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16004","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1255[] = {"32405","WGS 72BE / UTM zone 5N","","","","156deg West to 150deg West; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16005","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1256[] = {"32406","WGS 72BE / UTM zone 6N","","","","150deg West to 144deg West; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16006","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1257[] = {"32407","WGS 72BE / UTM zone 7N","","","","144deg West to 138deg West; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16007","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1258[] = {"32408","WGS 72BE / UTM zone 8N","","","","138deg West to 132deg West; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16008","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1259[] = {"32409","WGS 72BE / UTM zone 9N","","","","132deg West to 126deg West; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16009","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1260[] = {"32410","WGS 72BE / UTM zone 10N","","","","130deg West to 120deg West; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16010","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1261[] = {"32411","WGS 72BE / UTM zone 11N","","","","120deg West to 114deg West; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16011","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1262[] = {"32412","WGS 72BE / UTM zone 12N","","","","114deg West to 108deg West; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16012","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1263[] = {"32413","WGS 72BE / UTM zone 13N","","","","108deg West to 102deg West; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16013","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1264[] = {"32414","WGS 72BE / UTM zone 14N","","","","102deg West to 96deg West; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16014","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1265[] = {"32415","WGS 72BE / UTM zone 15N","","","","96deg West to 90deg West; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16015","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1266[] = {"32416","WGS 72BE / UTM zone 16N","","","","90deg West to 84deg West; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16016","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1267[] = {"32417","WGS 72BE / UTM zone 17N","","","","84deg West to 78deg West; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16017","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1268[] = {"32418","WGS 72BE / UTM zone 18N","","","","78deg West to 72deg West; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16018","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1269[] = {"32419","WGS 72BE / UTM zone 19N","","","","72deg West to 66deg West; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16019","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1270[] = {"32420","WGS 72BE / UTM zone 20N","","","","66deg West to 60deg West; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16020","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1271[] = {"32421","WGS 72BE / UTM zone 21N","","","","60deg West to 54deg West; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16021","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1272[] = {"32422","WGS 72BE / UTM zone 22N","","","","54deg West to 48deg West; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16022","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1273[] = {"32423","WGS 72BE / UTM zone 23N","","","","48deg West to 42deg West; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16023","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1274[] = {"32424","WGS 72BE / UTM zone 24N","","","","42deg West to 36deg West; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16024","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1275[] = {"32425","WGS 72BE / UTM zone 25N","","","","36deg West to 30deg West; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16025","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1276[] = {"32426","WGS 72BE / UTM zone 26N","","","","30deg West to 24deg West; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16026","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1277[] = {"32427","WGS 72BE / UTM zone 27N","","","","24deg West to 18deg West; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16027","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1278[] = {"32428","WGS 72BE / UTM zone 28N","","","","18deg West to 12deg West; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16028","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1279[] = {"32429","WGS 72BE / UTM zone 29N","","","","12deg West to 6deg West; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16029","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1280[] = {"32430","WGS 72BE / UTM zone 30N","","","","6deg West to 0deg; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16030","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1281[] = {"32431","WGS 72BE / UTM zone 31N","","","","0deg to 6deg East; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16031","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1282[] = {"32432","WGS 72BE / UTM zone 32N","","","","6deg East to 12deg East; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16032","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1283[] = {"32433","WGS 72BE / UTM zone 33N","","","","12deg East to 18deg East; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16033","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1284[] = {"32434","WGS 72BE / UTM zone 34N","","","","18deg East to 24deg East; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16034","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1285[] = {"32435","WGS 72BE / UTM zone 35N","","","","24deg East to 30deg East; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16035","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1286[] = {"32436","WGS 72BE / UTM zone 36N","","","","30deg East to 36deg East; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16036","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1287[] = {"32437","WGS 72BE / UTM zone 37N","","","","36deg East to 42deg East; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16037","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1288[] = {"32438","WGS 72BE / UTM zone 38N","","","","42deg East to 48deg East; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16038","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1289[] = {"32439","WGS 72BE / UTM zone 39N","","","","48deg East to 54deg East; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16039","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1290[] = {"32440","WGS 72BE / UTM zone 40N","","","","54deg East to 60deg East; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16040","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1291[] = {"32441","WGS 72BE / UTM zone 41N","","","","60deg East to 66deg East; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16041","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1292[] = {"32442","WGS 72BE / UTM zone 42N","","","","66deg East to 72deg East; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16042","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1293[] = {"32443","WGS 72BE / UTM zone 43N","","","","72deg East to 78deg East; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16043","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1294[] = {"32444","WGS 72BE / UTM zone 44N","","","","78deg East to 84deg East; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16044","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1295[] = {"32445","WGS 72BE / UTM zone 45N","","","","84deg East to 90deg East; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16045","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1296[] = {"32446","WGS 72BE / UTM zone 46N","","","","90deg East to 96deg East; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16046","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1297[] = {"32447","WGS 72BE / UTM zone 47N","","","","96deg East to 102eg East; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16047","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1298[] = {"32448","WGS 72BE / UTM zone 48N","","","","102deg East to 108deg East; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16048","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1299[] = {"32449","WGS 72BE / UTM zone 49N","","","","108deg East to 114deg East; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16049","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1300[] = {"32450","WGS 72BE / UTM zone 50N","","","","114deg East to 120deg East; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16050","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1301[] = {"32451","WGS 72BE / UTM zone 51N","","","","120deg East to 126deg East; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16051","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1302[] = {"32452","WGS 72BE / UTM zone 52N","","","","126deg East to 132deg East; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16052","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1303[] = {"32453","WGS 72BE / UTM zone 53N","","","","132deg East to 138deg East; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16053","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1304[] = {"32454","WGS 72BE / UTM zone 54N","","","","138deg East to 144deg East; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16054","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1305[] = {"32455","WGS 72BE / UTM zone 55N","","","","144deg East to 150deg East; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16055","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1306[] = {"32456","WGS 72BE / UTM zone 56N","","","","150deg East to 156deg East; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16056","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1307[] = {"32457","WGS 72BE / UTM zone 57N","","","","156deg East to 162deg East; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16057","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1308[] = {"32458","WGS 72BE / UTM zone 58N","","","","162deg East to 168deg East; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16058","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1309[] = {"32459","WGS 72BE / UTM zone 59N","","","","168deg East to 174deg East; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16059","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1310[] = {"32460","WGS 72BE / UTM zone 60N","","","","174deg East to 180deg; northern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16060","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1311[] = {"32501","WGS 72BE / UTM zone 1S","","","","180deg to 174deg West; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16101","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1312[] = {"32502","WGS 72BE / UTM zone 2S","","","","174deg West to 168deg West; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16102","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1313[] = {"32503","WGS 72BE / UTM zone 3S","","","","168deg West to 162deg West; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16103","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1314[] = {"32504","WGS 72BE / UTM zone 4S","","","","162deg West to 156deg West; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16104","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1315[] = {"32505","WGS 72BE / UTM zone 5S","","","","156deg West to 150deg West; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16105","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1316[] = {"32506","WGS 72BE / UTM zone 6S","","","","150deg West to 144deg West; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16106","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1317[] = {"32507","WGS 72BE / UTM zone 7S","","","","144deg West to 138deg West; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16107","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1318[] = {"32508","WGS 72BE / UTM zone 8S","","","","138deg West to 132deg West; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16108","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1319[] = {"32509","WGS 72BE / UTM zone 9S","","","","132deg West to 126deg West; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16109","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1320[] = {"32510","WGS 72BE / UTM zone 10S","","","","130deg West to 120deg West; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16110","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1321[] = {"32511","WGS 72BE / UTM zone 11S","","","","120deg West to 114deg West; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16111","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1322[] = {"32512","WGS 72BE / UTM zone 12S","","","","114deg West to 108deg West; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16112","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1323[] = {"32513","WGS 72BE / UTM zone 13S","","","","108deg West to 102deg West; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16113","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1324[] = {"32514","WGS 72BE / UTM zone 14S","","","","102deg West to 96deg West; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16114","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1325[] = {"32515","WGS 72BE / UTM zone 15S","","","","96deg West to 90deg West; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16115","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1326[] = {"32516","WGS 72BE / UTM zone 16S","","","","90deg West to 84deg West; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16116","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1327[] = {"32517","WGS 72BE / UTM zone 17S","","","","84deg West to 78deg West; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16117","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1328[] = {"32518","WGS 72BE / UTM zone 18S","","","","78deg West to 72deg West; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16118","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1329[] = {"32519","WGS 72BE / UTM zone 19S","","","","72deg West to 66deg West; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16119","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1330[] = {"32520","WGS 72BE / UTM zone 20S","","","","66deg West to 60deg West; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16120","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1331[] = {"32521","WGS 72BE / UTM zone 21S","","","","60deg West to 54deg West; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16121","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1332[] = {"32522","WGS 72BE / UTM zone 22S","","","","54deg West to 48deg West; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16122","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1333[] = {"32523","WGS 72BE / UTM zone 23S","","","","48deg West to 42deg West; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16123","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1334[] = {"32524","WGS 72BE / UTM zone 24S","","","","42deg West to 36deg West; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16124","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1335[] = {"32525","WGS 72BE / UTM zone 25S","","","","36deg West to 30deg West; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16125","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1336[] = {"32526","WGS 72BE / UTM zone 26S","","","","30deg West to 24deg West; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16126","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1337[] = {"32527","WGS 72BE / UTM zone 27S","","","","24deg West to 18deg West; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16127","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1338[] = {"32528","WGS 72BE / UTM zone 28S","","","","18deg West to 12deg West; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16128","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1339[] = {"32529","WGS 72BE / UTM zone 29S","","","","12deg West to 6deg West; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16129","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1340[] = {"32530","WGS 72BE / UTM zone 30S","","","","6deg West to 0deg; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16130","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1341[] = {"32531","WGS 72BE / UTM zone 31S","","","","0deg to 6deg East; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16131","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1342[] = {"32532","WGS 72BE / UTM zone 32S","","","","6deg East to 12deg East; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16132","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1343[] = {"32533","WGS 72BE / UTM zone 33S","","","","12deg East to 18deg East; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16133","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1344[] = {"32534","WGS 72BE / UTM zone 34S","","","","18deg East to 24deg East; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16134","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1345[] = {"32535","WGS 72BE / UTM zone 35S","","","","24deg East to 30deg East; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16135","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1346[] = {"32536","WGS 72BE / UTM zone 36S","","","","30deg East to 36deg East; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16136","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1347[] = {"32537","WGS 72BE / UTM zone 37S","","","","36deg East to 42deg East; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16137","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1348[] = {"32538","WGS 72BE / UTM zone 38S","","","","42deg East to 48deg East; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16138","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1349[] = {"32539","WGS 72BE / UTM zone 39S","","","","48deg East to 54deg East; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16139","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1350[] = {"32540","WGS 72BE / UTM zone 40S","","","","54deg East to 60deg East; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16140","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1351[] = {"32541","WGS 72BE / UTM zone 41S","","","","60deg East to 66deg East; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16141","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1352[] = {"32542","WGS 72BE / UTM zone 42S","","","","66deg East to 72deg East; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16142","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1353[] = {"32543","WGS 72BE / UTM zone 43S","","","","72deg East to 78deg East; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16143","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1354[] = {"32544","WGS 72BE / UTM zone 44S","","","","78deg East to 84deg East; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16144","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1355[] = {"32545","WGS 72BE / UTM zone 45S","","","","84deg East to 90deg East; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16145","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1356[] = {"32546","WGS 72BE / UTM zone 46S","","","","90deg East to 96deg East; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16146","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1357[] = {"32547","WGS 72BE / UTM zone 47S","","","","96deg East to 102eg East; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16147","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1358[] = {"32548","WGS 72BE / UTM zone 48S","","","","102deg East to 108deg East; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16148","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1359[] = {"32549","WGS 72BE / UTM zone 49S","","","","108deg East to 114deg East; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16149","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1360[] = {"32550","WGS 72BE / UTM zone 50S","","","","114deg East to 120deg East; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16150","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1361[] = {"32551","WGS 72BE / UTM zone 51S","","","","120deg East to 126deg East; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16151","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1362[] = {"32552","WGS 72BE / UTM zone 52S","","","","126deg East to 132deg East; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16152","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1363[] = {"32553","WGS 72BE / UTM zone 53S","","","","132deg East to 138deg East; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16153","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1364[] = {"32554","WGS 72BE / UTM zone 54S","","","","138deg East to 144deg East; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16154","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1365[] = {"32555","WGS 72BE / UTM zone 55S","","","","144deg East to 150deg East; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16155","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1366[] = {"32556","WGS 72BE / UTM zone 56S","","","","150deg East to 156deg East; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16156","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1367[] = {"32557","WGS 72BE / UTM zone 57S","","","","156deg East to 162deg East; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16157","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1368[] = {"32558","WGS 72BE / UTM zone 58S","","","","162deg East to 168deg East; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16158","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1369[] = {"32559","WGS 72BE / UTM zone 59S","","","","168deg East to 174deg East; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16159","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1370[] = {"32560","WGS 72BE / UTM zone 60S","","","","174deg East to 180deg; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4324","16160","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1371[] = {"32601","WGS 84 / UTM zone 1N","","","","180deg to 174deg West; northern hemisphere; Russia.","projected 2D","","","East","North","E","N","9001","","4326","16001","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1372[] = {"32602","WGS 84 / UTM zone 2N","","","","174deg West to 168deg West; northern hemisphere. Russia; United States (USA) - Alaska (AK).","projected 2D","","","East","North","E","N","9001","","4326","16002","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1373[] = {"32603","WGS 84 / UTM zone 3N","","","","168deg West to 162deg West; northern hemisphere. United States (USA) - Alaska (AK).","projected 2D","","","East","North","E","N","9001","","4326","16003","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1374[] = {"32604","WGS 84 / UTM zone 4N","","","","162deg West to 156deg West; northern hemisphere. United States (USA) - Alaska (AK).","projected 2D","","","East","North","E","N","9001","","4326","16004","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1375[] = {"32605","WGS 84 / UTM zone 5N","","","","156deg West to 150deg West; northern hemisphere. United States (USA) - Alaska (AK).","projected 2D","","","East","North","E","N","9001","","4326","16005","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1376[] = {"32606","WGS 84 / UTM zone 6N","","","","150deg West to 144deg West; northern hemisphere. United States (USA) - Alaska (AK).","projected 2D","","","East","North","E","N","9001","","4326","16006","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1377[] = {"32607","WGS 84 / UTM zone 7N","","","","144deg West to 138deg West; northern hemisphere. Canada - British Columbia (BC); Yukon. United States (USA) - Alaska (AK).","projected 2D","","","East","North","E","N","9001","","4326","16007","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1378[] = {"32608","WGS 84 / UTM zone 8N","","","","138deg West to 132deg West; northern hemisphere. Canada - British Columbia (BC); North West Territiories; Yukon. United States (USA) - Alaska (AK).","projected 2D","","","East","North","E","N","9001","","4326","16008","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1379[] = {"32609","WGS 84 / UTM zone 9N","","","","132deg West to 126deg West; northern hemisphere. Canada - British Columbia (BC); North West Territories; Yukon. United States (USA) - Alaska (AK).","projected 2D","","","East","North","E","N","9001","","4326","16009","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1380[] = {"32610","WGS 84 / UTM zone 10N","","","","130deg West to 120deg West; northern hemisphere. Canada - British Columbia (BC); North West Territories; Nunavut; Yukon. United States (USA) - Alaska (AK).","projected 2D","","","East","North","E","N","9001","","4326","16010","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1381[] = {"32611","WGS 84 / UTM zone 11N","","","","120deg West to 114deg West; northern hemisphere. Canada - Alberta; British Columbia (BC); North West Territories; Nunavut. Mexico. United States (USA).","projected 2D","","","East","North","E","N","9001","","4326","16011","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1382[] = {"32612","WGS 84 / UTM zone 12N","","","","114deg West to 108deg West; northern hemisphere. Canada - Alberta; North West Territories; Nunavut; Saskatchewan.  Mexico.  United States (USA).","projected 2D","","","East","North","E","N","9001","","4326","16012","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1383[] = {"32613","WGS 84 / UTM zone 13N","","","","108deg West to 102deg West; northern hemisphere. Canada - North West Territories; Nunavut; Saskatchewan.  Mexico.  United States (USA).","projected 2D","","","East","North","E","N","9001","","4326","16013","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1384[] = {"32614","WGS 84 / UTM zone 14N","","","","102deg West to 96deg West; northern hemisphere. Canada - Manitoba; Nunavut; Saskatchewan.  Mexico.  United States (USA).","projected 2D","","","East","North","E","N","9001","","4326","16014","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1385[] = {"32615","WGS 84 / UTM zone 15N","","","","96deg West to 90deg West; northern hemisphere. Canada - Manitoba; Nunavut; Ontario.  Guatemala.  Mexico.  United States (USA) - Gulf of Mexico (GoM).","projected 2D","","","East","North","E","N","9001","","4326","16015","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1386[] = {"32616","WGS 84 / UTM zone 16N","","","","90deg West to 84deg West; northern hemisphere. Belize. Canada - Manitoba; Nunavut; Ontario.  Costa Rica. Cuba. El Salvador. Guatemala. Honduras. Mexico. Nicaragua. Puerto Rico. United States (USA).","projected 2D","","","East","North","E","N","9001","","4326","16016","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1387[] = {"32617","WGS 84 / UTM zone 17N","","","","84deg West to 78deg West; northern hemisphere. Bahamas. Ecuador - north of equator. Canada - Nunavut; Ontario; Quebec.  Cayman Islands.  Colombia. Costa Rica. Jamaica. Nicaragua. Panama. Puerto Rico. United States (USA).","projected 2D","","","East","North","E","N","9001","","4326","16017","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1388[] = {"32618","WGS 84 / UTM zone 18N","","","","78deg West to 72deg West; northern hemisphere. Bahamas. Canada - Nunavut; Ontario; Quebec. Colombia. Cuba. Ecuador. Greenland. Haiti. Jamica. Panama. Turks and Caicos Islands. United States (USA). Venezuela.","projected 2D","","","East","North","E","N","9001","","4326","16018","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1389[] = {"32619","WGS 84 / UTM zone 19N","","","","72deg West to 66deg West; northern hemisphere. Aruba. Bahamas. Brazil. Canada - New Brunswick (NB); Newfoundland; Nunavut; Nova Scotia (NS); Quebec. Colombia. Dominican Republic. Greenland. Netherlands Antilles. Puerto Rico. Turks and Caicos Islands. Unite","projected 2D","","","East","North","E","N","9001","","4326","16019","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1390[] = {"32620","WGS 84 / UTM zone 20N","","","","66deg West to 60deg West; northern hemisphere. Anguilla. Antigua & Barbuda. Bermuda. Brazil. Canada - New Brunswick (NB); Newfoundland; North west Territories; Nova Scotia (NS); Prince Edward Island; Quebec. Dominica. Greenland. Grenada. Guadeloupe. Guyana","projected 2D","","","East","North","E","N","9001","","4326","16020","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1391[] = {"32621","WGS 84 / UTM zone 21N","","","","60deg West to 54deg West; northern hemisphere. Barbados. Brazil. Canada - Newfoundland; Quebec. French Guiana. Greenland. Guyana. St. Pierre and Miquelon. Suriname.","projected 2D","","","East","North","E","N","9001","","4326","16021","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1392[] = {"32622","WGS 84 / UTM zone 22N","","","","54deg West to 48deg West; northern hemisphere. Brazil. Canada - Newfoundland. French Guiana. Greenland.","projected 2D","","","East","North","E","N","9001","","4326","16022","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1393[] = {"32623","WGS 84 / UTM zone 23N","","","","48deg West to 42deg West; northern hemisphere. Greenland.","projected 2D","","","East","North","E","N","9001","","4326","16023","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1394[] = {"32624","WGS 84 / UTM zone 24N","","","","42deg West to 36deg West; northern hemisphere. Greenland.","projected 2D","","","East","North","E","N","9001","","4326","16024","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1395[] = {"32625","WGS 84 / UTM zone 25N","","","","36deg West to 30deg West; northern hemisphere. Greenland.","projected 2D","","","East","North","E","N","9001","","4326","16025","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1396[] = {"32626","WGS 84 / UTM zone 26N","","","","30deg West to 24deg West; northern hemisphere. Greenland. Iceland.","projected 2D","","","East","North","E","N","9001","","4326","16026","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1397[] = {"32627","WGS 84 / UTM zone 27N","","","","24deg West to 18deg West; northern hemisphere. Greenland. Iceland.","projected 2D","","","East","North","E","N","9001","","4326","16027","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1398[] = {"32628","WGS 84 / UTM zone 28N","","","","18deg West to 12deg West; northern hemisphere. Gambia. Greenland. Guinea. Guinea-Bissau. Iceland. Ireland - offshore Porcupine Basin. Mauritania. Morocco. Senegal. Sierra Leone. Western Sahara.","projected 2D","","","East","North","E","N","9001","","4326","16028","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1399[] = {"32629","WGS 84 / UTM zone 29N","","","","12deg West to 6deg West; northern hemisphere. Algeria. Cote D'Ivoire (Ivory Coast). Faroe Islands. Guinea. Ireland. Mali. Mauritania. Morocco. Portugal. Sierra Leone. Spain. United Kingdom (UK). Western Sahara.","projected 2D","","","East","North","E","N","9001","","4326","16029","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1400[] = {"32630","WGS 84 / UTM zone 30N","","","","6deg West to 0deg; northern hemisphere. Algeria. Burkino Faso. Cote' Ivoire (Ivory Coast). Faroe Islands - offshore. France. Ghana. Gibraltar. Ireland - offshore Irish Sea. Mali. Mauritania. Morocco. Spain. United Kingdom (UK).","projected 2D","","","East","North","E","N","9001","","4326","16030","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1401[] = {"32631","WGS 84 / UTM zone 31N","","","","0deg to 6deg East; northern hemisphere. Algeria. Andorra. Benin. Bukino Faso. Denmark - North Sea. France. Germany - North Sea. Ghana. Luxembourg. Mali. Netherlands. Niger. Nigeria. Norway. Spain. Togo. United Kingdom (UK) - North Sea.","projected 2D","","","East","North","E","N","9001","","4326","16031","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1402[] = {"32632","WGS 84 / UTM zone 32N","","","","6deg East to 12deg East; northern hemisphere. Algeria. Austria. Cameroon. Denmark. Equatorial Guinea. France. Gabon. Germany. Italy. Libya. Liechtenstein. Monaco. Netherlands. Niger. Nigeria. Norway. Sao Tome and Principe. Svalbard and Jan Mayen Islands. S","projected 2D","","","East","North","E","N","9001","","4326","16032","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1403[] = {"32633","WGS 84 / UTM zone 33N","","","","12deg East to 18deg East; northern hemisphere. Austria. Bosnia and Herzegowina. Cmeroon. Central African Republic. Chad. Congo. Croatia. Czech Republic. Democratic Republic of the Congo (Zaire). Gabon. Germany. Hungary. Italy. Libya. Malta. Niger. Nigeria.","projected 2D","","","East","North","E","N","9001","","4326","16033","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1404[] = {"32634","WGS 84 / UTM zone 34N","","","","18deg East to 24deg East; northern hemisphere. Albania. Belarus. Bosnia and Herzegowina. Bulgaria. Central African Republic. Chad. Croatia. Democratic Republic of the Congo (Zaire). Estonia. Finland. FYR Macedonia. Greece. Hungary. Italy. Latvia. Libya. Li","projected 2D","","","East","North","E","N","9001","","4326","16034","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1405[] = {"32635","WGS 84 / UTM zone 35N","","","","24deg East to 30deg East; northern hemisphere. Belarus. Bulgaria. Central African Republic. Democratic Republic of the Congo (Zaire). Egypt. Estonia. Finland. Greece. Latvia. Lesotho. Libya. Lithuania. Moldova. Norway. Romania. Russia. Sudan. Svalbard. Tur","projected 2D","","","East","North","E","N","9001","","4326","16035","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1406[] = {"32636","WGS 84 / UTM zone 36N","","","","30deg East to 36deg East; northern hemisphere. Belarus. Cyprus. Egypt. Ethiopia. Finland. Israel. Jordan. Kenya. Lebanon. Norway. Russia. Saudi Arabia. Sudan. Syria. Turkey. Uganda. Ukraine.","projected 2D","","","East","North","E","N","9001","","4326","16036","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1407[] = {"32637","WGS 84 / UTM zone 37N","","","","36deg East to 42deg East; northern hemisphere. Djibouti. Egypt. Eritrea. Ethiopia. Georgia. Iraq. Jordan. Kenya. Lebanon. Russia. Saudi Arabia. Somalia. Sudan. Syria. Turkey. Ukraine.","projected 2D","","","East","North","E","N","9001","","4326","16037","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1408[] = {"32638","WGS 84 / UTM zone 38N","","","","42deg East to 48deg East; northern hemisphere. Armenia. Azerbaijan. Djibouti. Eritrea. Ethiopia. Georgia. Iran. Iraq. Kazakhstan. Kuwait. Russia. Saudi Arabia. Somalia. Turkey. Yemen.","projected 2D","","","East","North","E","N","9001","","4326","16038","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1409[] = {"32639","WGS 84 / UTM zone 39N","","","","48deg East to 54deg East; northern hemisphere. Azerbaijan. Bahrain. Iran. Kazakhstan. Kuwait. Oman. Qatar. Russia. Saudi Arabia. Somalia. Turkmenistan. United Arab Emirates. Yemen.","projected 2D","","","East","North","E","N","9001","","4326","16039","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1410[] = {"32640","WGS 84 / UTM zone 40N","","","","54deg East to 60deg East; northern hemisphere. Iran. Kazakhstan. Oman. Russia. Saudi Arabia. Turkmenistan. United Arab Emirates. Uzbekistan.","projected 2D","","","East","North","E","N","9001","","4326","16040","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1411[] = {"32641","WGS 84 / UTM zone 41N","","","","60deg East to 66deg East; northern hemisphere. Afghanistan. Iran. Kazakhstan. Pakistan. Russia. Turkmenistan.  Uzbekistan.","projected 2D","","","East","North","E","N","9001","","4326","16041","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1412[] = {"32642","WGS 84 / UTM zone 42N","","","","66deg East to 72deg East; northern hemisphere. Afghanistan. India. Kazakhstan. Kyrgyzstan. Pakistan. Russia. Tajikistan. Uzbekistan.","projected 2D","","","East","North","E","N","9001","","4326","16042","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1413[] = {"32643","WGS 84 / UTM zone 43N","","","","72deg East to 78deg East; northern hemisphere. China. India. Kazakhstan. Kyrgyzstan. Maldives. Pakistan. Russia. Tajikistan.","projected 2D","","","East","North","E","N","9001","","4326","16043","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1414[] = {"32644","WGS 84 / UTM zone 44N","","","","78deg East to 84deg East; northern hemisphere. China. India. Kazakhstan. Kyrgyzstan. Nepal. Russia. Sri Lanka.","projected 2D","","","East","North","E","N","9001","","4326","16044","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1415[] = {"32645","WGS 84 / UTM zone 45N","","","","84deg East to 90deg East; northern hemisphere. Bangladesh. Bhutan. China. India. Kazakhstan. Mongolia. Nepal. Russia.","projected 2D","","","East","North","E","N","9001","","4326","16045","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1416[] = {"32646","WGS 84 / UTM zone 46N","","","","90deg East to 96deg East; northern hemisphere. Bangladesh. Bhutan. China. Indonesia. Mongolia. Myanmar (Burma). Russia.","projected 2D","","","East","North","E","N","9001","","4326","16046","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1417[] = {"32647","WGS 84 / UTM zone 47N","","","","96deg East to 102eg East; northern hemisphere. China. Indonesia. Laos. Malaysia - West Malaysia. Mongolia. Myanmar (Burma). Russia. Thailand.","projected 2D","","","East","North","E","N","9001","","4326","16047","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1418[] = {"32648","WGS 84 / UTM zone 48N","","","","102deg East to 108deg East; northern hemisphere. Cambodia. China. Indonesia. Laos. Malaysia - West Malaysia. Mongolia. Russia. Singapore. Thailand. Vietnam.","projected 2D","","","East","North","E","N","9001","","4326","16048","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1419[] = {"32649","WGS 84 / UTM zone 49N","","","","108deg East to 114deg East; northern hemisphere. China. Hong Kong. Indonesia. Macau. Malaysia - East Malaysia - Sarawak. Mongolia. Russia. Vietnam.","projected 2D","","","East","North","E","N","9001","","4326","16049","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1420[] = {"32650","WGS 84 / UTM zone 50N","","","","114deg East to 120deg East; northern hemisphere. Brunei. China. Indonesia. Malaysia - East Malaysia - Sarawak. Mongolia. Philippines. Russia. Taiwan.","projected 2D","","","East","North","E","N","9001","","4326","16050","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1421[] = {"32651","WGS 84 / UTM zone 51N","","","","120deg East to 126deg East; northern hemisphere. China. Indonesia. Japan. North Korea. Philippines. Russia.  South Korea. Taiwan.","projected 2D","","","East","North","E","N","9001","","4326","16051","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1422[] = {"32652","WGS 84 / UTM zone 52N","","","","126deg East to 132deg East; northern hemisphere. China. Indonesia. Japan. North Korea. Russia. South Korea.","projected 2D","","","East","North","E","N","9001","","4326","16052","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1423[] = {"32653","WGS 84 / UTM zone 53N","","","","132deg East to 138deg East; northern hemisphere. China. Japan. Russia.","projected 2D","","","East","North","E","N","9001","","4326","16053","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1424[] = {"32654","WGS 84 / UTM zone 54N","","","","138deg East to 144deg East; northern hemisphere. Japan. Russia.","projected 2D","","","East","North","E","N","9001","","4326","16054","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1425[] = {"32655","WGS 84 / UTM zone 55N","","","","144deg East to 150deg East; northern hemisphere. Japan. Russia.","projected 2D","","","East","North","E","N","9001","","4326","16055","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1426[] = {"32656","WGS 84 / UTM zone 56N","","","","150deg East to 156deg East; northern hemisphere. Russia.","projected 2D","","","East","North","E","N","9001","","4326","16056","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1427[] = {"32657","WGS 84 / UTM zone 57N","","","","156deg East to 162deg East; northern hemisphere. Russia.","projected 2D","","","East","North","E","N","9001","","4326","16057","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1428[] = {"32658","WGS 84 / UTM zone 58N","","","","162deg East to 168deg East; northern hemisphere. Russia.","projected 2D","","","East","North","E","N","9001","","4326","16058","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1429[] = {"32659","WGS 84 / UTM zone 59N","","","","168deg East to 174deg East; northern hemisphere. Russia.","projected 2D","","","East","North","E","N","9001","","4326","16059","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1430[] = {"32660","WGS 84 / UTM zone 60N","","","","174deg East to 180deg; northern hemisphere. Russia.","projected 2D","","","East","North","E","N","9001","","4326","16060","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1431[] = {"32661","WGS 84 / UPS North","","","","Polar areas north of 84 deg N.","projected 2D","","","East","North","E","N","9001","","4326","16061","1996-09-12 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1432[] = {"32701","WGS 84 / UTM zone 1S","","","","180deg to 174deg West; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4326","16101","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1433[] = {"32702","WGS 84 / UTM zone 2S","","","","174deg West to 168deg West; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4326","16102","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1434[] = {"32703","WGS 84 / UTM zone 3S","","","","168deg West to 162deg West; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4326","16103","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1435[] = {"32704","WGS 84 / UTM zone 4S","","","","162deg West to 156deg West; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4326","16104","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1436[] = {"32705","WGS 84 / UTM zone 5S","","","","156deg West to 150deg West; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4326","16105","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1437[] = {"32706","WGS 84 / UTM zone 6S","","","","150deg West to 144deg West; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4326","16106","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1438[] = {"32707","WGS 84 / UTM zone 7S","","","","144deg West to 138deg West; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4326","16107","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1439[] = {"32708","WGS 84 / UTM zone 8S","","","","138deg West to 132deg West; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4326","16108","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1440[] = {"32709","WGS 84 / UTM zone 9S","","","","132deg West to 126deg West; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4326","16109","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1441[] = {"32710","WGS 84 / UTM zone 10S","","","","130deg West to 120deg West; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4326","16110","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1442[] = {"32711","WGS 84 / UTM zone 11S","","","","120deg West to 114deg West; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4326","16111","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1443[] = {"32712","WGS 84 / UTM zone 12S","","","","114deg West to 108deg West; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4326","16112","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1444[] = {"32713","WGS 84 / UTM zone 13S","","","","108deg West to 102deg West; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4326","16113","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1445[] = {"32714","WGS 84 / UTM zone 14S","","","","102deg West to 96deg West; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4326","16114","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1446[] = {"32715","WGS 84 / UTM zone 15S","","","","96deg West to 90deg West; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4326","16115","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1447[] = {"32716","WGS 84 / UTM zone 16S","","","","90deg West to 84deg West; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4326","16116","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1448[] = {"32717","WGS 84 / UTM zone 17S","","","","84deg West to 78deg West; southern hemisphere. Ecuador. Peru.","projected 2D","","","East","North","E","N","9001","","4326","16117","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1449[] = {"32718","WGS 84 / UTM zone 18S","","","","78deg West to 72deg West; southern hemisphere. Argentina. Brazil. Chile. Colombia. Ecuador. Peru.","projected 2D","","","East","North","E","N","9001","","4326","16118","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1450[] = {"32719","WGS 84 / UTM zone 19S","","","","72deg West to 66deg West; southern hemisphere. Argentina. Bolivia. Brazil. Chile. Colombia. Peru.","projected 2D","","","East","North","E","N","9001","","4326","16119","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1451[] = {"32720","WGS 84 / UTM zone 20S","","","","66deg West to 60deg West; southern hemisphere. Argentina. Bolivia. Brazil. Falkland Islands (Malvinas). Paraguay.","projected 2D","","","East","North","E","N","9001","","4326","16120","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1452[] = {"32721","WGS 84 / UTM zone 21S","","","","60deg West to 54deg West; southern hemisphere. Argentina. Bolivia. Brazil. Falkland Islands (Malvinas). Paraguay. Uruguay.","projected 2D","","","East","North","E","N","9001","","4326","16121","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1453[] = {"32722","WGS 84 / UTM zone 22S","","","","54deg West to 48deg West; southern hemisphere. Brazil.  Uruguay.","projected 2D","","","East","North","E","N","9001","","4326","16122","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1454[] = {"32723","WGS 84 / UTM zone 23S","","","","48deg West to 42deg West; southern hemisphere. Brazil.","projected 2D","","","East","North","E","N","9001","","4326","16123","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1455[] = {"32724","WGS 84 / UTM zone 24S","","","","42deg West to 36deg West; southern hemisphere. Brazil. South Georgia and the South Sandwich Islands.","projected 2D","","","East","North","E","N","9001","","4326","16124","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1456[] = {"32725","WGS 84 / UTM zone 25S","","","","36deg West to 30deg West; southern hemisphere. Brazil.","projected 2D","","","East","North","E","N","9001","","4326","16125","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1457[] = {"32726","WGS 84 / UTM zone 26S","","","","30deg West to 24deg West; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4326","16126","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1458[] = {"32727","WGS 84 / UTM zone 27S","","","","24deg West to 18deg West; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4326","16127","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1459[] = {"32728","WGS 84 / UTM zone 28S","","","","18deg West to 12deg West; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4326","16128","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1460[] = {"32729","WGS 84 / UTM zone 29S","","","","12deg West to 6deg West; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4326","16129","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1461[] = {"32730","WGS 84 / UTM zone 30S","","","","6deg West to 0deg; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4326","16130","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1462[] = {"32731","WGS 84 / UTM zone 31S","","","","0deg to 6deg East; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4326","16131","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1463[] = {"32732","WGS 84 / UTM zone 32S","","","","6deg East to 12deg East; southern hemisphere. Angola. Congo. Gabon. Namibia.","projected 2D","","","East","North","E","N","9001","","4326","16132","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1464[] = {"32733","WGS 84 / UTM zone 33S","","","","12deg East to 18deg East; southern hemisphere. Angola. Congo. Democratic Republic of the Congo (Zaire). Gabon. Namibia. South Africa.","projected 2D","","","East","North","E","N","9001","","4326","16133","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1465[] = {"32734","WGS 84 / UTM zone 34S","","","","18deg East to 24deg East; southern hemisphere. Angola. Botswana. Democratic Republic of the Congo (Zaire). Namibia. South Africa. Zambia.","projected 2D","","","East","North","E","N","9001","","4326","16134","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1466[] = {"32735","WGS 84 / UTM zone 35S","","","","24deg East to 30deg East; southern hemisphere. Botswana. Burundi. Democratic Republic of the Congo (Zaire). Rwanda. South Africa. Tanzania. Uganda. Zambia. Zimbabwe.","projected 2D","","","East","North","E","N","9001","","4326","16135","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1467[] = {"32736","WGS 84 / UTM zone 36S","","","","30deg East to 36deg East; southern hemisphere. Burundi. Kenya. Malawi. Mozambique. Rwanda. South Africa. Swaziland. Tanzania. Uganda. Zambia. Zimbabwe.","projected 2D","","","East","North","E","N","9001","","4326","16136","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1468[] = {"32737","WGS 84 / UTM zone 37S","","","","36deg East to 42deg East; southern hemisphere. Kenya. Mozambique. Tanzania.","projected 2D","","","East","North","E","N","9001","","4326","16137","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1469[] = {"32738","WGS 84 / UTM zone 38S","","","","42deg East to 48deg East; southern hemisphere. Madagascar.","projected 2D","","","East","North","E","N","9001","","4326","16138","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1470[] = {"32739","WGS 84 / UTM zone 39S","","","","48deg East to 54deg East; southern hemisphere. Madagascar.","projected 2D","","","East","North","E","N","9001","","4326","16139","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1471[] = {"32740","WGS 84 / UTM zone 40S","","","","54deg East to 60deg East; southern hemisphere. Seychelles.","projected 2D","","","East","North","E","N","9001","","4326","16140","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1472[] = {"32741","WGS 84 / UTM zone 41S","","","","60deg East to 66deg East; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4326","16141","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1473[] = {"32742","WGS 84 / UTM zone 42S","","","","66deg East to 72deg East; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4326","16142","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1474[] = {"32743","WGS 84 / UTM zone 43S","","","","72deg East to 78deg East; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4326","16143","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1475[] = {"32744","WGS 84 / UTM zone 44S","","","","78deg East to 84deg East; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4326","16144","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1476[] = {"32745","WGS 84 / UTM zone 45S","","","","84deg East to 90deg East; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4326","16145","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1477[] = {"32746","WGS 84 / UTM zone 46S","","","","90deg East to 96deg East; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4326","16146","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1478[] = {"32747","WGS 84 / UTM zone 47S","","","","96deg East to 102eg East; southern hemisphere. Indonesia.","projected 2D","","","East","North","E","N","9001","","4326","16147","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1479[] = {"32748","WGS 84 / UTM zone 48S","","","","102deg East to 108deg East; southern hemisphere. Indonesia.","projected 2D","","","East","North","E","N","9001","","4326","16148","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1480[] = {"32749","WGS 84 / UTM zone 49S","","","","108deg East to 114deg East; southern hemisphere. Australia. Indonesia.","projected 2D","","","East","North","E","N","9001","","4326","16149","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1481[] = {"32750","WGS 84 / UTM zone 50S","","","","114deg East to 120deg East; southern hemisphere. Australia. Indonesia.","projected 2D","","","East","North","E","N","9001","","4326","16150","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1482[] = {"32751","WGS 84 / UTM zone 51S","","","","120deg East to 126deg East; southern hemisphere. Australia. East Timor. Indonesia.","projected 2D","","","East","North","E","N","9001","","4326","16151","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1483[] = {"32752","WGS 84 / UTM zone 52S","","","","126deg East to 132deg East; southern hemisphere. Australia. East Timor. Indonesia.","projected 2D","","","East","North","E","N","9001","","4326","16152","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1484[] = {"32753","WGS 84 / UTM zone 53S","","","","132deg East to 138deg East; southern hemisphere. Australia.  Indonesia.","projected 2D","","","East","North","E","N","9001","","4326","16153","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1485[] = {"32754","WGS 84 / UTM zone 54S","","","","138deg East to 144deg East; southern hemisphere. Australia. Indonesia. Papua New Guinea.","projected 2D","","","East","North","E","N","9001","","4326","16154","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1486[] = {"32755","WGS 84 / UTM zone 55S","","","","144deg East to 150deg East; southern hemisphere. Australia. Papua New Guinea.","projected 2D","","","East","North","E","N","9001","","4326","16155","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1487[] = {"32756","WGS 84 / UTM zone 56S","","","","150deg East to 156deg East; southern hemisphere. Australia. Papua New Guinea.","projected 2D","","","East","North","E","N","9001","","4326","16156","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1488[] = {"32757","WGS 84 / UTM zone 57S","","","","156deg East to 162deg East; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4326","16157","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1489[] = {"32758","WGS 84 / UTM zone 58S","","","","162deg East to 168deg East; southern hemisphere.","projected 2D","","","East","North","E","N","9001","","4326","16158","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1490[] = {"32759","WGS 84 / UTM zone 59S","","","","168deg East to 174deg East; southern hemisphere. New Zealand.","projected 2D","","","East","North","E","N","9001","","4326","16159","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1491[] = {"32760","WGS 84 / UTM zone 60S","","","","174deg East to 180deg; southern hemisphere. New Zealand.","projected 2D","","","East","North","E","N","9001","","4326","16160","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1492[] = {"32761","WGS 84 / UPS South","","","","Polar areas south of 80 deg S.","projected 2D","","","East","North","E","N","9001","","4326","16161","1996-09-12 00:00:00","","EPSG","","",NULL};
-datafile_rows_t horiz_cs_row_1493[] = {"32766","WGS 84 / TM 36 SE","","","","Mozambique - offshore.","projected 2D","","","East","North","E","N","9001","","4326","16636","1998-11-11 00:00:00","BP Mozambique","EPSG","Used by BP Mozambique for Offshore Zambezi block.","",NULL};
-
-datafile_rows_t *horiz_cs_rows[] = {horiz_cs_row_1,horiz_cs_row_2,horiz_cs_row_3,horiz_cs_row_4,horiz_cs_row_5,horiz_cs_row_6,horiz_cs_row_7,horiz_cs_row_8,horiz_cs_row_9,horiz_cs_row_10,horiz_cs_row_11,horiz_cs_row_12,horiz_cs_row_13,horiz_cs_row_14,horiz_cs_row_15,horiz_cs_row_16,horiz_cs_row_17,horiz_cs_row_18,horiz_cs_row_19,horiz_cs_row_20,horiz_cs_row_21,horiz_cs_row_22,horiz_cs_row_23,horiz_cs_row_24,horiz_cs_row_25,horiz_cs_row_26,horiz_cs_row_27,horiz_cs_row_28,horiz_cs_row_29,h [...]
diff --git a/src/tiff/csv/horiz_cs.csv b/src/tiff/csv/horiz_cs.csv
deleted file mode 100644
index 351d34c..0000000
--- a/src/tiff/csv/horiz_cs.csv
+++ /dev/null
@@ -1,1493 +0,0 @@
-"HORIZCS_CODE","HORIZCS_EPSG_NAME","HORIZCS_EPSG_ABBR","HORIZCS_USER_NAME","DESCRIPTION","AREA_OF_USE","COORD_SYS_TYPE","GEOD_DATUM_CODE","PRIME_MERIDIAN_CODE","ORIENT_POSITIVE_AXIS_1","ORIENT_POSITIVE_AXIS_2","COORD_SYS_AXIS_1_ABBR","COORD_SYS_AXIS_2_ABBR","UOM_LENGTH_CODE","UOM_ANGLE_CODE","SOURCE_GEOGCS_CODE","PROJECTION_TRF_CODE","REVISION_DATE","INFORMATION_SOURCE","DATA_SOURCE","REMARKS","CHANGE_ID"
-200,Anguilla 1957 / British West Indies Grid,Anguilla 1957 / BWI Grid,,,Anguilla,projected 2D,,,East,North,E,N,9001,,4600,19942,1999-04-22 00:00:00,Ordnance Survey of Great Britain,EPSG,,
-201,Antigua 1943 / British West Indies Grid,Antigua 1943 / BWI Grid,,,Antigua and Barbuda - Antigua,projected 2D,,,East,North,E,N,9001,,4601,19942,1999-04-22 00:00:00,Ordnance Survey of Great Britain,EPSG,,
-202,Dominica 1945 / British West Indies Grid,Dominica 1945 / BWI Grid,,,Dominica,projected 2D,,,East,North,E,N,9001,,4602,19942,1999-04-22 00:00:00,Ordnance Survey of Great Britain,EPSG,,
-203,Grenada 1953 / British West Indies Grid,Grenada 1953 / BWI Grid,,,Grenada (including Grenada Grenadines),projected 2D,,,East,North,E,N,9001,,4603,19942,1999-04-22 00:00:00,Ordnance Survey of Great Britain,EPSG,,
-204,Montserrat 58 / British West Indies Grid,Montserrat 58 / BWI Grid,,,Montserrat,projected 2D,,,East,North,E,N,9001,,4604,19942,1999-04-22 00:00:00,Ordnance Survey of Great Britain,EPSG,,
-205,St Kitts 1955 / British West Indies Grid,St Kitts 1955 / BWI Grid,,,Saint Kitts and Nevis,projected 2D,,,East,North,E,N,9001,,4605,19942,1999-04-22 00:00:00,Ordnance Survey of Great Britain,EPSG,,
-206,St Lucia 1955 / British West Indies Grid,St Lucia 1955 / BWI Grid,,,Saint Lucia,projected 2D,,,East,North,E,N,9001,,4606,19942,1999-04-22 00:00:00,Ordnance Survey of Great Britain,EPSG,,
-207,St Vincent 45 / British West Indies Grid,St Vincent 45 / BWI Grid,,,Saint Vincent and the Grenadines,projected 2D,,,East,North,E,N,9001,,4607,19942,1999-04-22 00:00:00,Ordnance Survey of Great Britain,EPSG,,
-208,NAD27(CGQ77) / SCoPQ zone 2,CGQ77 / SCoPQ zone 2,,,Canada - Quebec - east of 57 deg East.,projected 2D,,,East,North,X,Y,9001,,4609,17700,1999-07-24 00:00:00,Geodetic Service of Quebec; Quebec Ministry of Natural Resources.,EPSG,,
-209,NAD27(CGQ77) / SCoPQ zone 3,CGQ77 / SCoPQ zone 3,,,Canada - Quebec between 60 deg and 57 deg West.,projected 2D,,,East,North,X,Y,9001,,4609,17703,1999-07-24 00:00:00,Geodetic Service of Quebec; Quebec Ministry of Natural Resources.,EPSG,,
-210,NAD27(CGQ77) / SCoPQ zone 4,CGQ77 / SCoPQ zone 4,,,Canada - Quebec between 63 deg and 60 deg West.,projected 2D,,,East,North,X,Y,9001,,4609,17704,1999-07-24 00:00:00,Geodetic Service of Quebec; Quebec Ministry of Natural Resources.,EPSG,,
-211,NAD27(CGQ77) / SCoPQ zone 5,CGQ77 / SCoPQ zone 5,,,Canada - Quebec between 66 deg and 63 deg West.,projected 2D,,,East,North,X,Y,9001,,4609,17705,1999-07-24 00:00:00,Geodetic Service of Quebec; Quebec Ministry of Natural Resources.,EPSG,,
-212,NAD27(CGQ77) / SCoPQ zone 6,CGQ77 / SCoPQ zone 6,,,Canada - Quebec between 69 deg and  66 deg West.,projected 2D,,,East,North,X,Y,9001,,4609,17706,1999-07-24 00:00:00,Geodetic Service of Quebec; Quebec Ministry of Natural Resources.,EPSG,,
-213,NAD27(CGQ77) / SCoPQ zone 7,CGQ77 / SCoPQ zone 7,,,Canada - Quebec between 72 deg and 69 deg West.,projected 2D,,,East,North,X,Y,9001,,4609,17707,1999-07-24 00:00:00,Geodetic Service of Quebec; Quebec Ministry of Natural Resources.,EPSG,,
-214,NAD27(CGQ77) / SCoPQ zone 8,CGQ77 / SCoPQ zone 8,,,Canada - Quebec between 75 deg and 72 deg West.,projected 2D,,,East,North,X,Y,9001,,4609,17708,1999-07-24 00:00:00,Geodetic Service of Quebec; Quebec Ministry of Natural Resources.,EPSG,,
-215,NAD27(CGQ77) / SCoPQ zone 9,CGQ77 / SCoPQ zone 9,,,Canada - Quebec between 78 deg and 75 deg West.,projected 2D,,,East,North,X,Y,9001,,4609,17709,1999-07-24 00:00:00,Geodetic Service of Quebec; Quebec Ministry of Natural Resources.,EPSG,,
-216,NAD27(CGQ77) / SCoPQ zone 10,CGQ77 / SCoPQ zone 10,,,Canada - Quebec west of 78 deg West.,projected 2D,,,East,North,X,Y,9001,,4609,17710,1999-07-24 00:00:00,Geodetic Service of Quebec; Quebec Ministry of Natural Resources.,EPSG,,
-217,NAD27(76) / MTM zone 8,,,,Canada - Ontario - east of 75 deg West.,projected 2D,,,East,North,X,Y,9001,,4608,17708,1999-07-24 00:00:00,Surveys and Mapping Section; Ontario Ministry of Transportation.,EPSG,,
-218,NAD27(76) / MTM zone 9,,,,Canada - Ontario - between 78 deg and 75 deg West.,projected 2D,,,East,North,X,Y,9001,,4608,17709,1999-07-24 00:00:00,Surveys and Mapping Section; Ontario Ministry of Transportation.,EPSG,,
-219,NAD27(76) / MTM zone 10,,,,Canada - Ontario - between 79 deg 30 min and 78 deg W in area to north of 47 deg N; between 80 deg 15 min and 78 deg W in area between 46 deg and 47 deg N; between 81 deg and 78 deg W in area south of 46 deg N.,projected 2D,,,East,North,X,Y,9001,,4608,17710,1999-07-24 00:00:00,Surveys and Mapping Section; Ontario Ministry of Transportation.,EPSG,,
-220,NAD27(76) / MTM zone 11,,,,Canada - Ontario - south of 46 deg N and west of 81 deg West.,projected 2D,,,East,North,E,N,9001,,4608,17711,1999-07-24 00:00:00,Surveys and Mapping Section; Ontario Ministry of Transportation.,EPSG,,
-221,NAD27(76) / MTM zone 12,,,,Canada - Ontario - between 82 deg 30 min and 79 deg 30 min W in area to north of 47 deg N; between 82 deg 30 min and 80 deg 15 min W in area between 46 deg and 47 deg N; between 82 deg 30 min and 79 deg 30 min W in area north of 47 deg N.,projected 2D,,,East,North,E,N,9001,,4608,17712,1999-07-24 00:00:00,Surveys and Mapping Section; Ontario Ministry of Transportation.,EPSG,,
-222,NAD27(76) / MTM zone 13,,,,Canada - Ontario - between 85 deg 30 min and 82 deg 30 min West and north of 46 deg North.,projected 2D,,,East,North,E,N,9001,,4608,17713,1999-07-24 00:00:00,Surveys and Mapping Section; Ontario Ministry of Transportation.,EPSG,,
-223,NAD27(76) / MTM zone 14,,,,Canada - Ontario - between 88 deg 30 min and 85 deg 30 min West.,projected 2D,,,East,North,E,N,9001,,4608,17714,1999-07-24 00:00:00,Surveys and Mapping Section; Ontario Ministry of Transportation.,EPSG,,
-224,NAD27(76) / MTM zone 15,,,,Canada - Ontario - between 91 deg 30 min and 88 deg 30 min West.,projected 2D,,,East,North,E,N,9001,,4608,17715,1999-07-24 00:00:00,Surveys and Mapping Section; Ontario Ministry of Transportation.,EPSG,,
-225,NAD27(76) / MTM zone 16,,,,Canada - Ontario - between 94 deg 30 min and 91 deg 30 min West.,projected 2D,,,East,North,E,N,9001,,4608,17716,1999-07-24 00:00:00,Surveys and Mapping Section; Ontario Ministry of Transportation.,EPSG,,
-226,NAD27(76) / MTM zone 17,,,,Canada - Ontario - west of 94 deg 30 min West.,projected 2D,,,East,North,E,N,9001,,4608,17717,1999-07-24 00:00:00,Surveys and Mapping Section; Ontario Ministry of Transportation.,EPSG,,
-227,NAD27(76) / UTM zone 15N,,,,Canada - Ontario - 96deg West  to 90deg West.,projected 2D,,,East,North,E,N,9001,,4608,16015,1999-07-24 00:00:00,,EPSG,Supersedes NAD27 / UTM zone 15N (code 26715).,
-228,NAD27(76) / UTM zone 16N,,,,Canada - Ontario - 90deg West  to 84deg West.,projected 2D,,,East,North,E,N,9001,,4608,16016,1999-07-24 00:00:00,,EPSG,Supersedes NAD27 / UTM zone 16N (code 26716).,
-229,NAD27(76) / UTM zone 17N,,,,Canada - Ontario - 84deg West  to 78deg West.,projected 2D,,,East,North,E,N,9001,,4608,16017,1999-07-24 00:00:00,,EPSG,Supersedes NAD27 / UTM zone 17N (code 26717).,
-230,NAD27(76) / UTM zone 18N,,,,Canada - Ontario - east of 78 deg West.,projected 2D,,,East,North,E,N,9001,,4608,16018,1999-07-24 00:00:00,,EPSG,Supersedes NAD27 / UTM zone 18N (code 26718).,
-231,NAD27(CGQ77) / UTM zone 17N,CGQ77 / UTM zone 17N,,,Canada - Quebec - west of 78 deg West.,projected 2D,,,East,North,E,N,9001,,4609,16017,1999-07-24 00:00:00,,EPSG,Supersedes NAD27 / UTM zone 17N (code 26717).,
-232,NAD27(CGQ77) / UTM zone 18N,CGQ77 / UTM zone 18N,,,Canada - Quebec -78deg West  to 72deg West.,projected 2D,,,East,North,E,N,9001,,4609,16018,1999-07-24 00:00:00,,EPSG,Supersedes NAD27 / UTM zone 18N (code 26718).,
-233,NAD27(CGQ77) / UTM zone 19N,CGQ77 / UTM zone 19N,,,Canada - Quebec - 72deg West  to 66deg West.,projected 2D,,,East,North,E,N,9001,,4609,16019,1999-07-24 00:00:00,,EPSG,Supersedes NAD27 / UTM zone 19N (code 26719).,
-234,NAD27(CGQ77) / UTM zone 20N,CGQ77 / UTM zone 20N,,,Canada - Quebec - 66deg West  to 60deg West.,projected 2D,,,East,North,E,N,9001,,4609,16020,1999-07-24 00:00:00,,EPSG,Supersedes NAD27 / UTM zone 20N (code 26720).,
-235,NAD27(CGQ77) / UTM zone 21N,CGQ77 / UTM zone 21N,,,Canada - Quebec - east of 60deg West.,projected 2D,,,East,North,E,N,9001,,4609,16021,1999-07-24 00:00:00,,EPSG,Supersedes NAD27 / UTM zone 21N (code 26721).,
-236,NAD83(CSRS98) / New Brunswick Stereo,NAD83(98) / NB Stereo,,,Canada - New Brunswick,projected 2D,,,North,East,N,E,9001,,4140,19946,1999-10-20 00:00:00,Service New Brunswick Land and Information Standards Manual,EPSG,In use from 1999.,
-237,NAD83(CSRS98) / UTM zone 19N,NAD83(98) / UTM 19N,,,Canada - New Brunswick west of 66 deg West.,projected 2D,,,East,North,E,N,9001,,4140,16019,1999-10-20 00:00:00,Service New Brunswick Land and Information Standards Manual,EPSG,In use from 1999.,
-238,NAD83(CSRS98) / UTM zone 20N,NAD83(98) / UTM 20N,,,Canada - New Brunswick east of 66 deg West.,projected 2D,,,East,North,E,N,9001,,4140,16020,1999-10-20 00:00:00,Service New Brunswick Land and Information Standards Manual,EPSG,In use from 1999.,
-239,Israel / Israeli TM Grid,Israeli TM Grid,,,Israel.,projected 2D,,,East,North,E,N,9001,,4141,18204,1999-10-20 00:00:00,Survey of Israel.,EPSG,Supercedes Israeli CS Grid (EPSG code 28193).,
-240,Locodjo 1965 / UTM zone 30N,Locodjo 65 / UTM 30N,,,Cote D'Ivoire (Ivory Coast) east of 6 deg West.,projected 2D,,,East,North,E,N,9001,,4142,16030,1999-10-20 00:00:00,IGN Paris,EPSG,Superseded by Abidjan 87 / UTM 30N (EPSG code 241).,
-241,Abidjan 1987 / UTM zone 30N,Abidjan 87 / UTM 30N,,,Cote D'Ivoire (Ivory Coast) east of 6 deg West.,projected 2D,,,East,North,E,N,9001,,4143,16030,1999-10-20 00:00:00,IGN Paris,EPSG,Supersedes Locodjo 65 / UTM 30N (EPSG code 240).,
-242,Locodjo 1965 / UTM zone 29N,Locodjo 65 / UTM 29N,,,Cote D'Ivoire (Ivory Coast) west of 6 deg West.,projected 2D,,,East,North,E,N,9001,,4142,16029,1999-10-20 00:00:00,IGN Paris,EPSG,Superseded by Abidjan 87 / UTM 29N (EPSG code 243).,
-243,Abidjan 1987 / UTM zone 29N,Abidjan 87 / UTM 29N,,,Cote D'Ivoire (Ivory Coast) west of 6 deg West.,projected 2D,,,East,North,E,N,9001,,4143,16029,1999-10-20 00:00:00,IGN Paris,EPSG,Supersedes Locodjo 65 / UTM 29N (EPSG code 242).,
-244,Hanoi 1972 / Gauss-Kruger zone 18,Hanoi 72 / Gauss zone 18,,,Vietnam - west of 108 deg East.,projected 2D,,,North,East,X,Y,9001,,4147,16218,1999-10-20 00:00:00,,EPSG,Replaces use of Indian 1960 / UTM zone 48 after 1988.,
-245,Hanoi 1972 / Gauss-Kruger zone 19,Hanoi 72 / Gauss zone 19,,,Vietnam - east of 108 deg East.,projected 2D,,,North,East,X,Y,9001,,4147,16219,1999-10-20 00:00:00,,EPSG,Replaces use of Indian 1960 / UTM zone 48 after 1988.,
-246,Hartbeesthoek94 / Lo15,New S African CS zone 15,,,South Africa - Walvis Bay.,projected 2D,,,West,South,W,S,9001,,4148,17515,1999-10-20 00:00:00,,EPSG,,
-247,Hartbeesthoek94 / Lo17,New S African CS zone 17,,,South Africa - west of 18 deg East.,projected 2D,,,West,South,W,S,9001,,4148,17517,1999-10-20 00:00:00,,EPSG,,
-248,Hartbeesthoek94 / Lo19,New S African CS zone 19,,,South Africa - 18 to 20 deg East.,projected 2D,,,West,South,W,S,9001,,4148,17519,1999-10-20 00:00:00,,EPSG,,
-249,Hartbeesthoek94 / Lo21,New S African CS zone 21,,,South Africa - 20 to 22 deg East.,projected 2D,,,West,South,W,S,9001,,4148,17521,1999-10-20 00:00:00,,EPSG,,
-250,Hartbeesthoek94 / Lo23,New S African CS zone 23,,,South Africa - 22 to 24 deg East.,projected 2D,,,West,South,W,S,9001,,4148,17523,1999-10-20 00:00:00,,EPSG,,
-251,Hartbeesthoek94 / Lo25,New S African CS zone 25,,,Lestho  - west of 26 deg East; South Africa - 24 to 26 deg East.,projected 2D,,,West,South,W,S,9001,,4148,17525,1999-10-20 00:00:00,,EPSG,,
-252,Hartbeesthoek94 / Lo27,New S African CS zone 27,,,Lestho  - east of 26 deg East;  South Africa - 26 to 28 deg East.,projected 2D,,,West,South,W,S,9001,,4148,17527,1999-10-20 00:00:00,,EPSG,,
-253,Hartbeesthoek94 / Lo29,New S African CS zone 29,,,South Africa - 28 to 30 deg East.,projected 2D,,,West,South,W,S,9001,,4148,17529,1999-10-20 00:00:00,,EPSG,,
-254,Hartbeesthoek94 / Lo31,New S African CS zone 31,,,South Africa - 30 to 32 deg East;  Swaziland.,projected 2D,,,West,South,W,S,9001,,4148,17533,1999-10-20 00:00:00,,EPSG,,
-255,Hartbeesthoek94 / Lo33,New S African CS zone 33,,,South Africa - east of 32 deg East.,projected 2D,,,West,South,W,S,9001,,4148,17533,1999-10-20 00:00:00,,EPSG,,
-256,CH1903+ / LV95,LV95,,,Liechtenstein; Switzerland.,projected 2D,,,East,North,Y,X,9001,,4150,19950,1999-10-20 00:00:00,,EPSG,Supersedes CH1903/LV03 (code 21781).,
-257,Rassadiran / Nakhl e Taqi,,,,Iran - Taheri refinery site only.,projected 2D,,,East,North,E,N,9001,,4153,19951,1999-10-20 00:00:00,Total-Fina,EPSG,Used for terminal site only.,
-258,ED50(ED77) / UTM zone 38N,,,,Iran - west of 48deg East.,projected 2D,,,East,North,E,N,9001,,4154,16038,1999-10-20 00:00:00,,EPSG,,
-259,ED50(ED77) / UTM zone 39N,,,,Iran - 48deg to 54 deg East.,projected 2D,,,East,North,E,N,9001,,4154,16039,1999-10-20 00:00:00,,EPSG,,
-260,ED50(ED77) / UTM zone 40N,,,,Iran - 54deg to 60 deg East.,projected 2D,,,East,North,E,N,9001,,4154,16040,1999-10-20 00:00:00,,EPSG,,
-261,ED50(ED77) / UTM zone 41N,,,,Iran - east of 60deg East.,projected 2D,,,East,North,E,N,9001,,4154,16041,1999-10-20 00:00:00,,EPSG,,
-300,Madrid 1870 (Madrid) / Spain,,,,Spain,projected 2D,,,East,North,X,Y,9001,,4903,19921,1998-11-11 00:00:00,,EPSG,Superseded by ED50 / UTM after 1966.,
-2100,GGRS87 / Greek Grid,,,,Greece,projected 2D,,,East,North,E,N,9001,,4121,19930,1997-06-16 00:00:00,Geodesy Department; Public Petroleum Corporation of Greece.,EPSG,Oil industry uses ED50 / UTM zone 34N and ED50 / UTM zone 35N.,
-2200,ATS77 / New Brunswick Stereographic,ATS77 / NB Stereographic,,,Canada - New Brunswick,projected 2D,,,North,East,N,E,9001,,4122,19945,1999-10-20 00:00:00,New Brunswick Geographic Information Corporation land and water information standards manual.,EPSG,In use from 1979.  To be phased out in late 1990's.,99.61
-2219,ATS77 / UTM zone 19N,,,,Canada - New Brunswick - west of 66 deg W.,projected 2D,,,East,North,E,N,9001,,4122,16019,1997-07-22 00:00:00,New Brunswick Geographic Information Corporation land and water information standards manual.,EPSG,In use from 1979.  To be phased out in late 1990's.,
-2220,ATS77 / UTM zone 20N,,,,Canada - New Brunswick - east of 66 deg W.; Canada - Nova Scotia; Canada - Prince Edward Island.,projected 2D,,,East,North,E,N,9001,,4122,16020,1997-07-22 00:00:00,New Brunswick Geographic Information Corporation land and water information standards manual.,EPSG,In use from 1979.  To be phased out in late 1990's.,
-2290,ATS77 / Prince Edward Isl. Stereographic,ATS77 / PEI Stereo,,,Canada - Prince Edward Island,projected 2D,,,East,North,E(X),N(Y),9001,,4122,19933,1997-11-13 00:00:00,Geomatics Centre; Nova Scotia Ministry of Housing and Municipal Affairs.,EPSG,In use from 1979.  To be phased out in late 1990's.,
-2294,ATS77 / MTM Nova Scotia zone 4,ATS77 / MTM NS zone 4,,,Canada - Nova Scotia - east of 63 deg West.,projected 2D,,,East,North,E,N,9001,,4122,17794,1997-11-13 00:00:00,Geomatics Centre; Nova Scotia Ministry of Housing and Municipal Affairs.,EPSG,In use from 1979.  To be phased out in late 1990's.,
-2295,ATS77 / MTM Nova Scotia zone 5,ATS77 / MTM NS zone 5,,,Canada - Nova Scotia - west of 63 deg West.,projected 2D,,,East,North,E,N,9001,,4122,17795,1997-11-13 00:00:00,Geomatics Centre; Nova Scotia Ministry of Housing and Municipal Affairs.,EPSG,In use from 1979.  To be phased out in late 1990's.,
-2391,KKJ / Finland zone 1,,,,Finland - west of 22deg 30min E.,projected 2D,,,North,East,X,Y,9001,,4123,18191,1997-07-22 00:00:00,www.nls.fi/maa/papers/kkj.html,EPSG,,
-2392,KKJ / Finland zone 2,,,,Finland - 22deg 30 min to 25deg 30min E.,projected 2D,,,North,East,X,Y,9001,,4123,18192,1997-07-22 00:00:00,www.nls.fi/maa/papers/kkj.html,EPSG,,
-2393,KKJ / Finland Uniform Coordinate System,KKJ / Finland zone 3,,,Finland; Finland - 25 deg 30min E to 28deg 30min E.,projected 2D,,,North,East,X,Y,9001,,4123,18193,1997-07-22 00:00:00,www.nls.fi/maa/papers/kkj.html,EPSG,Known as Uniform Coordinate System when used over all country and also as Basic Coordinate System zone 3 at larger scales.,
-2394,KKJ / Finland zone 4,,,,Finland - east of 28deg 30 min E.,projected 2D,,,North,East,X,Y,9001,,4123,18194,1997-07-22 00:00:00,www.nls.fi/maa/papers/kkj.html,EPSG,,
-2400,RT90 2.5 gon W,,,,Sweden,projected 2D,,,North,East,X,Y,9001,,4124,19929,1997-11-13 00:00:00,National Land Survey of Sweden,EPSG,,
-2550,Samboja / UTM zone 50S,,,,Indonesia - east Kalimantan - Mahakam delta area.,projected 2D,,,East,North,E,N,9001,,4125,16150,1997-11-13 00:00:00,,EPSG,,
-2600,Lietuvos Koordinoei Sistema 1994,LKS94,,,Lithuania,projected 2D,,,North,East,X,Y,9001,,4126,19934,1998-03-12 00:00:00,,EPSG,,
-2736,Tete / UTM zone 36S,,,,Mozambique - west of 36 deg E.,projected 2D,,,East,North,E,N,9001,,4127,16136,1998-04-16 00:00:00,Direc��o Nacional de Geografia e Cadastral (DINAGECA).,EPSG,,
-2737,Tete / UTM zone 37S,,,,Mozambique - east of 36 deg E,projected 2D,,,East,North,E,N,9001,,4127,16137,1998-04-16 00:00:00,Direc��o Nacional de Geografia e Cadastral (DINAGECA).,EPSG,,
-3036,Moznet / UTM zone 36S,,,,Mozambique - west of 36 deg E.,projected 2D,,,East,North,E,N,9001,,4130,16136,1998-04-16 00:00:00,Direc��o Nacional de Geografia e Cadastral (DINAGECA).,EPSG,,
-3037,Moznet / UTM zone 37S,,,,Mozambique - east of 36 deg E,projected 2D,,,East,North,E,N,9001,,4130,16137,1998-04-16 00:00:00,Direc��o Nacional de Geografia e Cadastral (DINAGECA).,EPSG,,
-3148,Indian 1960 / UTM zone 48N,,,,Cambodia; Vietnam west of 108deg East.,projected 2D,,,East,North,E,N,9001,,4131,16048,1998-11-11 00:00:00,,EPSG,In Vietnam superseded by Hanoi 72 / Gauss zone 18 from 1988 onwards.,
-3149,Indian 1960 / UTM zone 49N,,,,Vietnam east of 108deg East.,projected 2D,,,East,North,E,N,9001,,4131,16049,1998-11-11 00:00:00,,EPSG,Superseded by Hanoi 72 / Gauss zone 18 from 1988 onwards.,
-3176,Indian 1960 / TM 106 NE,,,,Vietnam - offshore.,projected 2D,,,East,North,E,N,9001,,4131,16506,1998-11-11 00:00:00,Petrovietnam,EPSG,Used by Petrovietnam for offshore block 15.,
-3200,FD58 / Iraq zone,,,,Iran - Gulf coast and Arwaz areas.,projected 2D,,,East,North,E,N,9001,,4132,19906,1998-11-11 00:00:00,IOEPC records.,EPSG,,
-3300,Estonian Coordinate System of 1992,,,,Estonia.,projected 2D,,,North,East,X,Y,9001,,4133,19938,1998-12-14 00:00:00,http://www.geo.ut.ee/~raivo/estcoord.html,EPSG,Used for 1:20000 and larger scale mapping.,
-3439,PSD93 / UTM zone 39N,,,,Oman - west of 54 deg East.,projected 2D,,,East,North,E,N,9001,,4134,16039,1999-04-22 00:00:00,Petroleum Development Oman,EPSG,Supersedes Fahud / UTM zone 39N projCS (code 23239). Maximum differences to Fahud adjustment are 20 metres.,
-3440,PSD93 / UTM zone 40N,,,,Oman - east of 54 deg East.,projected 2D,,,East,North,E,N,9001,,4134,16040,1999-04-22 00:00:00,Petroleum Development Oman,EPSG,Supersedes Fahud / UTM zone 40N projCS (code 23240). Maximum differences to Fahud adjustment are 20 metres.,
-3561,Old Hawaiian / Hawaii zone 1,Old Hawaiian / SP zone 1,,,United States (USA) - Hawaii - island of Hawaii.,projected 2D,,,East,North,X,Y,9003,,4135,15101,1999-05-24 00:00:00,,EPSG,Sometimes erroneously referred to as NAD27 / Hawaii zone 1.,99.322
-3562,Old Hawaiian / Hawaii zone 2,Old Hawaiian / SP zone 2,,,United States (USA) - Hawaii - Maui; Kahoolawe; Lanai; Molokai.,projected 2D,,,East,North,X,Y,9003,,4135,15102,1999-05-24 00:00:00,,EPSG,Sometimes erroneously referred to as NAD27 / Hawaii zone 2.,99.322
-3563,Old Hawaiian / Hawaii zone 3,Old Hawaiian / SP zone 3,,,United States (USA) - Hawaii - Oahu.,projected 2D,,,East,North,X,Y,9003,,4135,15103,1999-05-24 00:00:00,,EPSG,Sometimes erroneously referred to as NAD27 / Hawaii zone 3.,99.322
-3564,Old Hawaiian / Hawaii zone 4,Old Hawaiian / SP zone 4,,,United States (USA) - Hawaii - Kauai.,projected 2D,,,East,North,X,Y,9003,,4135,15104,1999-05-24 00:00:00,,EPSG,Sometimes erroneously referred to as NAD27 / Hawaii zone 4.,99.322
-3565,Old Hawaiian / Hawaii zone 5,Old Hawaiian / SP zone 5,,,United States (USA) - Hawaii - Niihau.,projected 2D,,,East,North,X,Y,9003,,4135,15105,1999-05-24 00:00:00,,EPSG,Sometimes erroneously referred to as NAD27 / Hawaii zone 5.,99.322
-3920,Puerto Rico / UTM zone 20N,,,,British Virgin Islands (civilian).,projected 2D,,,East,North,E,N,9001,,4139,16020,1999-04-22 00:00:00,Ordnance Survey of Great Britain,EPSG,NAD27 / UTM zone 20 N (code 26720) used for military purposes.,
-3991,Puerto Rico State Plane CS of 1927,Puerto Rico SPCS 27,,,Puerto Rico.,projected 2D,,,East,North,X,Y,9003,,4139,15201,1999-05-24 00:00:00,,EPSG,Sometimes erroneously referred to as NAD27 / Puerto Rico State Plane CS.,99.323
-3992,Puerto Rico / St. Croix,,,,US Virgin Islands (U.S.).,projected 2D,,,East,North,X,Y,9003,,4139,15202,1999-05-24 00:00:00,,EPSG,Sometimes erroneously referred to as NAD27 / St. Croix State Plane CS.,99.323
-4001,Unknown datum based upon ellipsoid 7001,,,,,geographic 2D,6001,8901,North,East,Lat,Long,,9108,,,1996-09-12 00:00:00,,EPSG,Not recommended.  Use only in cases where geodetic datum unknown.,96.08
-4002,Unknown datum based upon ellipsoid 7002,,,,,geographic 2D,6002,8901,North,East,Lat,Long,,9108,,,1996-09-12 00:00:00,,EPSG,Not recommended.  Use only in cases where geodetic datum unknown.,96.08
-4003,Unknown datum based upon ellipsoid 7003,,,,,geographic 2D,6003,8901,North,East,Lat,Long,,9108,,,1996-09-12 00:00:00,,EPSG,Not recommended.  Use only in cases where geodetic datum unknown.,96.08
-4004,Unknown datum based upon ellipsoid 7004,,,,,geographic 2D,6004,8901,North,East,Lat,Long,,9108,,,1996-09-12 00:00:00,,EPSG,Not recommended.  Use only in cases where geodetic datum unknown.,96.08
-4005,Unknown datum based upon ellipsoid 7005,,,,,geographic 2D,6005,8901,North,East,Lat,Long,,9108,,,1996-09-12 00:00:00,,EPSG,Not recommended.  Use only in cases where geodetic datum unknown.,96.08
-4006,Unknown datum based upon ellipsoid 7006,,,,,geographic 2D,6006,8901,North,East,Lat,Long,,9108,,,1996-09-12 00:00:00,,EPSG,Not recommended.  Use only in cases where geodetic datum unknown.,96.08
-4007,Unknown datum based upon ellipsoid 7007,,,,,geographic 2D,6007,8901,North,East,Lat,Long,,9108,,,1996-09-12 00:00:00,,EPSG,Not recommended.  Use only in cases where geodetic datum unknown.,96.08
-4008,Unknown datum based upon ellipsoid 7008,,,,,geographic 2D,6008,8901,North,East,Lat,Long,,9108,,,1996-09-12 00:00:00,,EPSG,Not recommended.  Use only in cases where geodetic datum unknown.,96.08
-4009,Unknown datum based upon ellipsoid 7009,,,,,geographic 2D,6009,8901,North,East,Lat,Long,,9108,,,1996-09-12 00:00:00,,EPSG,Not recommended.  Use only in cases where geodetic datum unknown.,96.08
-4010,Unknown datum based upon ellipsoid 7010,,,,,geographic 2D,6010,8901,North,East,Lat,Long,,9108,,,1996-09-12 00:00:00,,EPSG,Not recommended.  Use only in cases where geodetic datum unknown.,96.08
-4011,Unknown datum based upon ellipsoid 7011,,,,,geographic 2D,6011,8901,North,East,Lat,Long,,9108,,,1996-09-12 00:00:00,,EPSG,Not recommended.  Use only in cases where geodetic datum unknown.,96.08
-4012,Unknown datum based upon ellipsoid 7012,,,,,geographic 2D,6012,8901,North,East,Lat,Long,,9108,,,1996-09-12 00:00:00,,EPSG,Not recommended.  Use only in cases where geodetic datum unknown.,96.08
-4013,Unknown datum based upon ellipsoid 7013,,,,,geographic 2D,6013,8901,North,East,Lat,Long,,9108,,,1996-09-12 00:00:00,,EPSG,Not recommended.  Use only in cases where geodetic datum unknown.,96.08
-4014,Unknown datum based upon ellipsoid 7014,,,,,geographic 2D,6014,8901,North,East,Lat,Long,,9108,,,1996-09-12 00:00:00,,EPSG,Not recommended.  Use only in cases where geodetic datum unknown.,96.08
-4015,Unknown datum based upon ellipsoid 7015,,,,,geographic 2D,6015,8901,North,East,Lat,Long,,9108,,,1996-09-12 00:00:00,,EPSG,Not recommended.  Use only in cases where geodetic datum unknown.,96.08
-4016,Unknown datum based upon ellipsoid 7016,,,,,geographic 2D,6016,8901,North,East,Lat,Long,,9108,,,1996-09-12 00:00:00,,EPSG,Not recommended.  Use only in cases where geodetic datum unknown.,96.08
-4017,Unknown datum based upon ellipsoid 7017,,,,,geographic 2D,6017,8901,North,East,Lat,Long,,9108,,,1996-09-12 00:00:00,,EPSG,Not recommended.  Use only in cases where geodetic datum unknown.,96.08
-4018,Unknown datum based upon ellipsoid 7018,,,,,geographic 2D,6018,8901,North,East,Lat,Long,,9108,,,1996-09-12 00:00:00,,EPSG,Not recommended.  Use only in cases where geodetic datum unknown.,96.08
-4019,Unknown datum based upon ellipsoid 7019,,,,,geographic 2D,6019,8901,North,East,Lat,Long,,9108,,,1996-09-12 00:00:00,,EPSG,Not recommended.  Use only in cases where geodetic datum unknown.,96.08
-4020,Unknown datum based upon ellipsoid 7020,,,,,geographic 2D,6020,8901,North,East,Lat,Long,,9108,,,1996-09-12 00:00:00,,EPSG,Not recommended.  Use only in cases where geodetic datum unknown.,96.08
-4021,Unknown datum based upon ellipsoid 7021,,,,,geographic 2D,6021,8901,North,East,Lat,Long,,9108,,,1996-09-12 00:00:00,,EPSG,Not recommended.  Use only in cases where geodetic datum unknown.,96.08
-4022,Unknown datum based upon ellipsoid 7022,,,,,geographic 2D,6022,8901,North,East,Lat,Long,,9108,,,1996-09-12 00:00:00,,EPSG,Not recommended.  Use only in cases where geodetic datum unknown.,96.08
-4024,Unknown datum based upon ellipsoid 7024,,,,,geographic 2D,6024,8901,North,East,Lat,Long,,9108,,,1996-09-12 00:00:00,,EPSG,Not recommended.  Use only in cases where geodetic datum unknown.,96.08
-4025,Unknown datum based upon ellipsoid 7025,,,,,geographic 2D,6025,8901,North,East,Lat,Long,,9108,,,1996-09-12 00:00:00,,EPSG,Not recommended.  Use only in cases where geodetic datum unknown.,96.08
-4027,Unknown datum based upon ellipsoid 7027,,,,,geographic 2D,6027,8901,North,East,Lat,Long,,9108,,,1996-09-12 00:00:00,,EPSG,Not recommended.  Use only in cases where geodetic datum unknown.,96.08
-4028,Unknown datum based upon ellipsoid 7028,,,,,geographic 2D,6028,8901,North,East,Lat,Long,,9108,,,1996-09-12 00:00:00,,EPSG,Not recommended.  Use only in cases where geodetic datum unknown.,96.08
-4029,Unknown datum based upon ellipsoid 7029,,,,,geographic 2D,6029,8901,North,East,Lat,Long,,9108,,,1996-09-12 00:00:00,,EPSG,Not recommended.  Use only in cases where geodetic datum unknown.,96.08
-4030,Unknown datum based upon ellipsoid 7030,,,,,geographic 2D,6030,8901,North,East,Lat,Long,,9108,,,1996-09-12 00:00:00,,EPSG,Not recommended.  Use only in cases where geodetic datum unknown.,96.08
-4031,Unknown datum based upon ellipsoid 7031,,,,,geographic 2D,6031,8901,North,East,Lat,Long,,9108,,,1996-09-12 00:00:00,,EPSG,Not recommended.  Use only in cases where geodetic datum unknown.,96.08
-4032,Unknown datum based upon ellipsoid 7032,,,,,geographic 2D,6032,8901,North,East,Lat,Long,,9108,,,1996-09-12 00:00:00,,EPSG,Not recommended.  Use only in cases where geodetic datum unknown.,96.08
-4033,Unknown datum based upon ellipsoid 7033,,,,,geographic 2D,6033,8901,North,East,Lat,Long,,9108,,,1996-09-12 00:00:00,,EPSG,Not recommended.  Use only in cases where geodetic datum unknown.,96.08
-4034,Unknown datum based upon ellipsoid 7034,,,,,geographic 2D,6034,8901,North,East,Lat,Long,,9108,,,1996-09-12 00:00:00,,EPSG,Not recommended.  Use only in cases where geodetic datum unknown.,96.08
-4035,Unknown datum based upon ellipsoid 7035,,,,,geographic 2D,6035,8901,North,East,Lat,Long,,9108,,,1996-09-12 00:00:00,,EPSG,Not recommended.  Use only in cases where geodetic datum unknown.,96.08
-4036,Unknown datum based upon ellipsoid 7036,,,,,geographic 2D,6036,8901,North,East,Lat,Long,,9108,,,1996-09-12 00:00:00,,EPSG,Not recommended.  Use only in cases where geodetic datum unknown.,
-4041,Unknown datum based upon ellipsoid 7041,,,,,geographic 2D,6041,8901,North,East,Lat,Long,,9108,,,1999-10-20 00:00:00,,EPSG,Not recommended.  Use only in cases where geodetic datum unknown.,
-4042,Unknown datum based upon ellipsoid 7042,,,,,geographic 2D,6042,8901,North,East,Lat,Long,,9108,,,1999-10-20 00:00:00,,EPSG,Not recommended.  Use only in cases where geodetic datum unknown.,
-4043,Unknown datum based upon ellipsoid 7043,,,,,geographic 2D,6043,8901,North,East,Lat,Long,,9108,,,1999-10-20 00:00:00,,EPSG,Not recommended.  Use only in cases where geodetic datum unknown.,
-4044,Unknown datum based upon ellipsoid 7044,,,,,geographic 2D,6044,8901,North,East,Lat,Long,,9108,,,1999-10-20 00:00:00,,EPSG,Not recommended.  Use only in cases where geodetic datum unknown.,
-4045,Unknown datum based upon ellipsoid 7045,,,,,geographic 2D,6045,8901,North,East,Lat,Long,,9108,,,1999-10-20 00:00:00,,EPSG,Not recommended.  Use only in cases where geodetic datum unknown.,
-4120,Greek,,,,Greece,geographic 2D,6120,8901,North,East,Lat,Long,,9108,,,1997-06-16 00:00:00,Topography Department; National Technical University of Greece.,EPSG,,
-4121,GGRS87,,,,Greece,geographic 2D,6121,8901,North,East,Lat,Long,,9108,,,1997-06-16 00:00:00,Geodesy Department; Public Petroleum Corporation of Greece.,EPSG,,
-4122,ATS77,,,,Canada - New Brunswick; Canada - Nova Scotia - onshore; Canada - Prince Edward Island.,geographic 2D,6122,8901,North,East,Lat,Long,,9108,,,1997-07-22 00:00:00,New Brunswick Geographic Information Corporation land and water information standards manual.,EPSG,In use from 1979.  To be phased out in late 1990's.,
-4123,KKJ,,,,Finland,geographic 2D,6123,8901,North,East,Lat,Long,,9108,,,1997-07-22 00:00:00,www.nls.fi/maa/papers/kkj.html,EPSG,,
-4124,RT90,,,,Sweden,geographic 2D,6124,8901,North,East,Lat,Long,,9108,,,1997-11-13 00:00:00,National Land Survey of Sweden,EPSG,,
-4125,Samboja,,,,Indonesia - east Kalimantan - Mahakam delta area.,geographic 2D,6125,8901,North,East,Lat,Long,,9108,,,1997-11-13 00:00:00,,EPSG,,
-4126,LKS94 (ETRS89),,,,Lithuania,geographic 2D,6126,8901,North,East,Lat,Long,,9108,,,1998-03-13 00:00:00,,EPSG,,
-4127,Tete,,,,Mozambique,geographic 2D,6127,8901,North,East,Lat,Long,,9108,,,1998-04-16 00:00:00,Direc��o Nacional de Geografia e Cadastral (DINAGECA).,EPSG,,
-4128,Madzansua,,,,Mozambique - west,geographic 2D,6128,8901,North,East,Lat,Long,,9108,,,1998-04-16 00:00:00,Direc��o Nacional de Geografia e Cadastral (DINAGECA).,EPSG,Superseded by values transformed to Tete geogCS (code 4127).,
-4129,Observatario,,,,Mozambique - south,geographic 2D,6129,8901,North,East,Lat,Long,,9108,,,1998-04-16 00:00:00,Direc��o Nacional de Geografia e Cadastral (DINAGECA).,EPSG,Superseded by values transformed to Tete geogCS (code 4127).,
-4130,Moznet,,,,Mozambique,geographic 2D,6130,8901,North,East,Lat,Long,,9108,,,1998-04-16 00:00:00,Direc��o Nacional de Geografia e Cadastral (DINAGECA).,EPSG,,
-4131,Indian 1960,,,,Cambodia; Vietnam,geographic 2D,6131,8901,North,East,Lat,Long,,9108,,,1998-11-11 00:00:00,,EPSG,,
-4132,FD58,,,,Iran - Gulf coast and Arwaz areas.,geographic 2D,6132,8901,North,East,Lat,Long,,9108,,,1998-11-11 00:00:00,IOEPC records.,EPSG,,
-4133,EST92,,,,Estonia,geographic 2D,6133,8901,North,East,Lat,Long,,9108,,,1998-12-14 00:00:00,http://www.geo.ut.ee/~raivo/estcoord.html,EPSG,Densification of ETRS89 as established during 1992 Baltic campaign.,
-4134,PDO Survey Datum 1993,PSD93,,,Oman,geographic 2D,6134,8901,North,East,Lat,Long,,9108,,,1999-04-22 00:00:00,Petroleum Development Oman,EPSG,Supersedes Fahud geogCS (code 4232). Maximum differences to Fahud adjustment are 20 metres.,
-4135,Old Hawaiian,,,,United States (USA) - Hawaii,geographic 2D,6135,8901,North,East,Lat,Long,,9108,,,1999-05-24 00:00:00,,EPSG,Note: this coordinate system includes longitudes which are POSITIVE EAST.,
-4136,St. Lawrence Island,,,,United States (USA) - Alaska - St. Lawrence Island,geographic 2D,6136,8901,North,East,Lat,Long,,9108,,,1999-05-24 00:00:00,,EPSG,Note: this coordinate system includes longitudes which are POSITIVE EAST.,
-4137,St. Paul Island,,,,United States (USA) - Alaska - St. Paul Island,geographic 2D,6137,8901,North,East,Lat,Long,,9108,,,1999-05-24 00:00:00,,EPSG,Note: this coordinate system includes longitudes which are POSITIVE EAST.,
-4138,St. George Island,,,,United States (USA) - Alaska - St. George Island,geographic 2D,6138,8901,North,East,Lat,Long,,9108,,,1999-05-24 00:00:00,,EPSG,Note: this coordinate system includes longitudes which are POSITIVE EAST.,
-4139,Puerto Rico,,,,Puerto Rico; Virgin Islands (British); Virgin Islands (U.S.).,geographic 2D,6139,8901,North,East,Lat,Long,,9108,,,1999-05-24 00:00:00,,EPSG,Used for civilian purposes.  NAD27 (code 4267) used for military purposes.  Note: this coordinate system includes longitudes which are POSITIVE EAST.,
-4140,NAD83(CSRS98),,,,Canada - New Brunswick,geographic 2D,6140,8901,North,East,Lat,Long,,9108,,,1999-10-20 00:00:00,Service New Brunswick Land and Information Standards Manual,EPSG,Supersedes ATS77 from 1999 in New Brunswick.,
-4141,Israel,,,,Israel.,geographic 2D,6141,8901,North,East,Lat,Long,,9108,,,1999-10-20 00:00:00,Survey of Israel,EPSG,Supersedes Palestine 1923 in Israel.,
-4142,Locodjo 1965,,,,Cote D'Ivoire (Ivory Coast).,geographic 2D,6142,8901,North,East,Lat,Long,,9108,,,1999-10-20 00:00:00,IGN Paris,EPSG,Superseded by Abidjan 1987 (EPSG code 4143).,
-4143,Abidjan 1987,,,,Cote D'Ivoire (Ivory Coast).,geographic 2D,6143,8901,North,East,Lat,Long,,9108,,,1999-10-20 00:00:00,IGN Paris,EPSG,Supersedes Locodjo 1967 (EPSG code 4142).,
-4144,Kalianpur 1937,,,,Bangladesh; India; Pakistan,geographic 2D,6144,8901,North,East,Lat,Long,,9108,,,1999-10-20 00:00:00,"G. Bomford; \"The Re-adjustment of the Indian Triangulation\"; Survey of India Professional Paper 28; 1939.",EPSG,Adopts 1937 metric conversion of 0.30479841 metres per Indian foot.,
-4145,Kalianpur 1962,,,,Pakistan,geographic 2D,6145,8901,North,East,Lat,Long,,9108,,,1999-10-20 00:00:00,,EPSG,Adopts 1962 metric conversion of 0.3047996 metres per Indian foot.,
-4146,Kalianpur 1975,,,,India,geographic 2D,6146,8901,North,East,Lat,Long,,9108,,,1999-10-20 00:00:00,,EPSG,Adopts 1975 metric conversion of 0.3047995 metres per Indian foot.,
-4147,Hanoi 1972,,,,Vietnam,geographic 2D,6147,8901,North,East,Lat,Long,,9108,,,1999-10-20 00:00:00,,EPSG,,
-4148,Hartbeesthoek94,,,,South Africa.,geographic 2D,6148,8901,North,East,Lat,Long,,9108,,,1999-10-22 00:00:00,,EPSG,Supercedes Cape (code 4222) from 1999.,
-4149,CH1903,,,,Liechtenstein; Switzerland,geographic 2D,6149,8901,North,East,Lat,Long,,9108,,,1999-10-20 00:00:00,,EPSG,,
-4150,CH1903+,,,,Liechtenstein; Switzerland,geographic 2D,6150,8901,North,East,Lat,Long,,9108,,,1999-10-20 00:00:00,,EPSG,,
-4151,CHTRF95,,,,Liechtenstein; Switzerland,geographic 2D,6151,8901,North,East,Lat,Long,,9108,,,1999-10-20 00:00:00,,EPSG,,
-4152,NAD83(HARN),,,,United States (US),geographic 2D,6152,8901,North,East,Lat,Long,,9108,,,1999-10-20 00:00:00,National Geodetic Survey,EPSG,,
-4153,Rassadiran,,,,Iran - Taheri refinery site only.,geographic 2D,6153,8901,North,East,Lat,Long,,9108,,,1999-10-20 00:00:00,,EPSG,Used only for onshore terminal site.,
-4154,ED50(ED77),,,,Iran,geographic 2D,6154,8901,North,East,Lat,Long,,9108,,,1999-10-20 00:00:00,,EPSG,,
-4200,Pulkovo 1995,,,,Russia,geographic 2D,6200,8901,North,East,Lat,Long,,9108,,,1996-09-12 00:00:00,"\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994",EPSG,,
-4201,Adindan,,,,Ethiopia; Sudan,geographic 2D,6201,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4202,AGD66,,,,Australia; Papua New Guinea,geographic 2D,6202,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4203,AGD84,,,,Australia,geographic 2D,6203,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4204,Ain el Abd,,,,Kuwait; Saudi Arabia,geographic 2D,6204,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4205,Afgooye,,,,Somalia,geographic 2D,6205,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4206,Agadez,,,,Niger,geographic 2D,6206,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4207,Lisbon,,,,Portugal - onshore,geographic 2D,6207,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,Instituto Geografico e Cadastral; Lisbon,EPSG,,
-4208,Aratu,,,,Brazil - coastal areas south of 2 deg 55 min S.,geographic 2D,6208,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4209,Arc 1950,,,,Botswana; Malawi; Zambia; Zimbabwe.,geographic 2D,6209,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4210,Arc 1960,,,,Kenya; Tanzania; Uganda.,geographic 2D,6210,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4211,Batavia,,,,Indonesia - Java,geographic 2D,6211,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4212,Barbados 1938,,,,Barbados,geographic 2D,6212,8901,North,East,Lat,Long,,9108,,,1999-04-22 00:00:00,,EPSG,,99.171
-4213,Beduaram,,,,Niger,geographic 2D,6213,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4214,Beijing 1954,,,,China,geographic 2D,6214,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4215,Belge 1950,,,,Belgium - onshore,geographic 2D,6215,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4216,Bermuda 1957,,,,Bermuda,geographic 2D,6216,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4218,Bogota,,,,Colombia,geographic 2D,6218,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4219,Bukit Rimpah,,,,Indonesia - Banga & Belitung Islands,geographic 2D,6219,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4220,Camacupa,,,,Angola,geographic 2D,6220,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4221,Campo Inchauspe,,,,Argentina,geographic 2D,6221,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4222,Cape,,,,Botswana; South Africa.,geographic 2D,6222,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,Superceded by Hartbeesthoek94 from 1999.,
-4223,Carthage,,,,Tunisia,geographic 2D,6223,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4224,Chua,,,,Brazil,geographic 2D,6224,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4225,Corrego Alegre,,,,Brazil - NE coastal area between 45 deg W and 40 deg W.,geographic 2D,6225,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4226,Cote d'Ivoire,,,,Cote d'Ivoire,geographic 2D,6226,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4227,Deir ez Zor,,,,Syrian Arab Republic,geographic 2D,6227,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4228,Douala,,,,Cameroon,geographic 2D,6228,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4229,Egypt 1907,,,,Egypt,geographic 2D,6229,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4230,ED50,,,,Europe - west - Spain; France offshore; United Kingdom UKCS offshore; Netherlands offshore; Germany offshore North Sea; Denmark; Norway; Turkey.,geographic 2D,6230,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4231,ED87,,,,Europe - west.,geographic 2D,6231,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4232,Fahud,,,,Oman,geographic 2D,6232,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,Since 1993 superseded by PSD93 geogCS (code 4134). Maximum differences to Fahud adjustment are 20 metres.,
-4233,Gandajika 1970,,,,Maldives,geographic 2D,6233,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4234,Garoua,,,,Cameroon,geographic 2D,6234,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4235,Guyane Francaise,,,,French Guyana,geographic 2D,6235,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4236,Hu Tzu Shan,,,,Taiwan,geographic 2D,6236,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4237,HD72,,,,Hungary,geographic 2D,6237,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4238,ID74,,,,Indonesia,geographic 2D,6238,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4239,Indian 1954,,,,Myanmar (Burma); Thailand,geographic 2D,6239,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4240,Indian 1975,,,,Thailand,geographic 2D,6240,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4241,Jamaica 1875,,,,Jamaica,geographic 2D,6241,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4242,JAD69,,,,Jamaica,geographic 2D,6242,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4243,Kalianpur 1880,,,,Bangladesh; India; Myanmar (Burma); Pakistan,geographic 2D,6243,8901,North,East,Lat,Long,,9108,,,1999-10-20 00:00:00,"G. Bomford; \"The Re-adjustment of the Indian Triangulation\"; Survey of India Professional Paper 28; 1939.",EPSG,,97.23
-4244,Kandawala,,,,Sri Lanka,geographic 2D,6244,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4245,Kertau,,,,Malaysia - West Malaysia; Singapore,geographic 2D,6245,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,Adopts metric conversion of 39.370113 inches per metre.,
-4246,KOC,,,,Kuwait,geographic 2D,6246,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4247,La Canoa,,,,Venezuela,geographic 2D,6247,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,PSAD56 uses same origin.,
-4248,PSAD56,,,,Bolivia; Ecuador; Peru; [Venezuela],geographic 2D,6248,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,Origin is same as La Canoa.  In Venezuela known as La Canoa.,
-4249,Lake,,,,Venezuela - Lake Maracaibo area,geographic 2D,6249,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4250,Leigon,,,,Ghana,geographic 2D,6250,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4251,Liberia 1964,,,,Liberia,geographic 2D,6251,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4252,Lome,,,,Togo,geographic 2D,6252,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4253,Luzon 1911,,,,Philippines,geographic 2D,6253,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4254,Hito XVIII 1963,,,,Chile - Tierra del Fuego,geographic 2D,6254,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4255,Herat North,,,,Afghanistan,geographic 2D,6255,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4256,Mahe 1971,,,,Seychelles,geographic 2D,6256,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4257,Makassar,,,,Indonesia - south west Sulawesi,geographic 2D,6257,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4258,ETRF89,,,,Europe - Hungary; Norway; Sweden; United Kingdom (UKCS) offshore.,geographic 2D,6258,8901,North,East,Lat,Long,,9108,,,1999-04-22 00:00:00,Norwegian Geodetic Institute geodetic publication 1990:1,EPSG,,97.11  99.11
-4259,Malongo 1987,,,,Angola - Cabinda offshore,geographic 2D,6259,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,Chevron Petroleum Technology,EPSG,Offshore extension of Mhast GeogCS (4264) using Transit translocation from Station Y at Malongo base camp.,
-4260,Manoca,,,,Cameroon,geographic 2D,6260,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4261,Merchich,,,,Morocco,geographic 2D,6261,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4262,Massawa,,,,Eritrea,geographic 2D,6262,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4263,Minna,,,,Nigeria,geographic 2D,6263,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4264,Mhast,,,,Angola - Cabinda,geographic 2D,6264,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4265,Monte Mario,,,,Italy,geographic 2D,6265,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4266,M'poraloko,,,,Gabon,geographic 2D,6266,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4267,NAD27,,,,North and central America - Canada; Mexico; United States (USA).,geographic 2D,6267,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,Note: this coordinate system includes longitudes which are POSITIVE EAST.  Superseded by NAD27(76) (code 4608) in Ontario and CGQ77 (code 4609) in Quebec.,99.04
-4268,NAD27 Michigan,NAD Michigan,,,United States (USA) - Michigan,geographic 2D,6268,8901,North,East,Lat,Long,,9108,,,1996-12-12 00:00:00,,EPSG,Ellipsoid taken to be 800ft above geoid. Note: this coordinate system includes longitudes which are POSITIVE EAST.,96.28
-4269,NAD83,,,,Canada: Greenland; Mexico; United States (USA),geographic 2D,6269,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,Note: this coordinate system includes longitudes which are POSITIVE EAST.,
-4270,Nahrwan 1967,,,,Arabian Gulf; Kuwait; United Arab Emirates (UAE) - Abu Dhabi; Dubai; Sharjah; Ajman; Fujairah; Ras Al Kaimah; Umm Al Qaiwain.,geographic 2D,6270,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4271,Naparima 1972,,,,Trinidad and Tobago,geographic 2D,6271,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4272,GD49,,,,New Zealand,geographic 2D,6272,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4273,NGO 1948,,,,Norway - onshore,geographic 2D,6273,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4274,Datum 73,,,,Portugal - onshore,geographic 2D,6274,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,Instituto Geografico e Cadastral; Lisbon,EPSG,,
-4275,NTF,,,,France - onshore,geographic 2D,6275,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4276,NSWC 9Z-2,,,,World,geographic 2D,6276,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4277,OSGB 1936,,,,United Kingdom (UK) - Great Britain - England  Scotland  Wales - onshore; Isle of Man.,geographic 2D,6277,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4278,OSGB70,,,,United Kingdom (UK) - Great Britain - England  Scotland  wales - onshore,geographic 2D,6278,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4279,OS(SN)80,,,,Ireland - onshore; United Kingdom (UK) - England  Scotland  Wales  Northern Ireland - onshore E,geographic 2D,6279,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4280,Padang,,,,Indonesia - Sumatra,geographic 2D,6280,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4281,Palestine 1923,,,,Israel; Jordan; Lebanon,geographic 2D,6281,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4282,Pointe Noire,,,,Congo,geographic 2D,6282,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4283,GDA94,,,,Australia,geographic 2D,6283,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,Australian Surveying and Land Information Group Internet WWW page.,EPSG,,
-4284,Pulkovo 1942,,,,Armenia; Azerbaijan; Belarus; Estonia; Georgia; Kazakstan; Kirgistan; Latvia; Lithuania; Moldova; Russia; Tadzhikstan; Turkmenistan; Ukraine; Uzbekistan; Germany (former DDR); Czech Republic; Hungary; Poland; Romania; Latvia; Lithuania; Estonia; Albania,geographic 2D,6284,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4285,Qatar,,,,Qatar - onshore,geographic 2D,6285,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4286,Qatar 1948,,,,Qatar - onshore,geographic 2D,6286,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4287,Qornoq,,,,Greenland,geographic 2D,6287,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4288,Loma Quintana,,,,Venezuela - north,geographic 2D,6288,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4289,Amersfoort,,,,Netherlands - onshore,geographic 2D,6289,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4291,SAD69,,,,South America - Brazil,geographic 2D,6291,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,Uses GRS67 ellipsoid with 1/f to exactly 2 decimal places.  Precision of ellipsoid entry increased from 2 to 5 dp with change id 97.251.  Error introduced if not using the truncated precision is 0 to 31mm.,97.252
-4292,Sapper Hill 1943,,,,Falkland Islands,geographic 2D,6292,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4293,Schwarzeck,,,,Namibia,geographic 2D,6293,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4294,Segora,,,,Indonesia - southeast Kalimantan,geographic 2D,6294,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4295,Serindung,,,,Indonesia - east Kalimantan,geographic 2D,6295,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4296,Sudan,,,,Sudan - south,geographic 2D,6296,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4297,Tananarive,,,,Madagascar,geographic 2D,6297,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4298,Timbalai 1948,,,,Brunei; Malaysia - East Malaysia (Sabah; Sarawak).,geographic 2D,6298,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,Adopts metric conversion of 39.370147 inches per metre.,
-4299,TM65,,,,Ireland - onshore; United Kingdom (UK) - Northern Ireland (Ulster) onshore,geographic 2D,6299,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4300,TM75,,,,Ireland - onshore; United Kingdom (UK) - Northern Ireland (Ulster) onshore,geographic 2D,6300,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4301,Tokyo,,,,Japan; North Korea; South Korea,geographic 2D,6301,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4302,Trinidad 1903,,,,Trinidad and Tobago - Trinidad,geographic 2D,6302,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4303,TC(1948),,,,United Arab Emirates (UAE) - Abu Dhabi; Dubai,geographic 2D,6303,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4304,Voirol 1875,,,,Algeria - north of 32 deg N,geographic 2D,6304,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,IGN Paris,EPSG,,
-4305,Voirol Unifie,,,,Algeria - north of 32 deg N,geographic 2D,6305,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,"\"Le System Geodesique Nord-Sahara\"; IGN Paris",EPSG,,
-4306,Bern 1938,,,,Liechtenstein; Switzerland,geographic 2D,6306,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,Used for the geographic coordinates overprinted on topographic maps constructed on the CH1903 / LV03 projected CS (code 21781).,
-4307,Nord Sahara 1959,,,,Algeria; Morocco; Tunisia,geographic 2D,6307,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,"\"Le System Geodesique Nord-Sahara\"; IGN Paris",EPSG,,
-4308,RT38,,,,Sweden,geographic 2D,6308,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,97.09
-4309,Yacare,,,,Uruguay,geographic 2D,6309,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4310,Yoff,,,,Senegal,geographic 2D,6310,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4311,Zanderij,,,,Suriname,geographic 2D,6311,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4312,MGI,,,,Austria; Yugoslavia,geographic 2D,6312,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,Bundesamt fur Eich- und Vermessungswesen; Wien,EPSG,,
-4313,Belge 1972,,,,Belgium - onshore,geographic 2D,6313,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4314,DHDN,,,,Germany - onshore,geographic 2D,6314,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4315,Conakry 1905,,,,Guinea,geographic 2D,6315,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4316,Dealul Piscului 1933,,,,Romania,geographic 2D,6316,8901,North,East,Lat,Long,,9108,,,1996-04-12 00:00:00,,EPSG,Superseded by 1970 system (geogCS code 4317).,
-4317,Dealul Piscului 1970,,,,Romania,geographic 2D,6317,8901,North,East,Lat,Long,,9108,,,1996-04-12 00:00:00,,EPSG,Supersedes 1933 system (geogCS code 4316).,
-4318,NGN,,,,Kuwait,geographic 2D,6318,8901,North,East,Lat,Long,,9108,,,1996-04-12 00:00:00,,EPSG,,
-4319,KUDAMS,,,,Kuwait - Kuwait City,geographic 2D,6319,8901,North,East,Lat,Long,,9108,,,1996-04-12 00:00:00,,EPSG,,
-4322,WGS 72,,,,World,geographic 2D,6322,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,GeogCS code 4323 reserved for use with  ProjCS's.,
-4324,WGS 72BE,,,,World,geographic 2D,6324,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,GeogCS code 4325 reserved for use with  ProjCS's.,
-4326,WGS 84,,,,World,geographic 2D,6326,8901,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,GeogCS code 4327 reserved for use with  ProjCS's.,
-4600,Anguilla 1957,,,,Anguilla,geographic 2D,6600,8901,North,East,Lat,Long,,9108,,,1999-04-22 00:00:00,,EPSG,,
-4601,Antigua 1943,,,,Antigua and Barbuda - Antigua,geographic 2D,6601,8901,North,East,Lat,Long,,9108,,,1999-04-22 00:00:00,,EPSG,,
-4602,Dominica 1945,,,,Dominica,geographic 2D,6602,8901,North,East,Lat,Long,,9108,,,1999-04-22 00:00:00,,EPSG,,
-4603,Grenada 1953,,,,Grenada (including Grenada Grenadines),geographic 2D,6603,8901,North,East,Lat,Long,,9108,,,1999-04-22 00:00:00,,EPSG,,
-4604,Montserrat 1958,,,,Montserrat,geographic 2D,6604,8901,North,East,Lat,Long,,9108,,,1999-04-22 00:00:00,,EPSG,,
-4605,St. Kitts 1955,,,,Saint Kitts and Nevis,geographic 2D,6605,8901,North,East,Lat,Long,,9108,,,1999-04-22 00:00:00,,EPSG,,
-4606,St. Lucia 1955,,,,Saint Lucia,geographic 2D,6606,8901,North,East,Lat,Long,,9108,,,1999-04-22 00:00:00,,EPSG,,
-4607,St. Vincent 1945,,,,Saint Vincent and the Grenadines,geographic 2D,6607,8901,North,East,Lat,Long,,9108,,,1999-04-22 00:00:00,,EPSG,,
-4608,NAD27(76),,,,Canada - Ontario,geographic 2D,6608,8901,North,East,Lat,Long,,9108,,,1999-05-12 00:00:00,,EPSG,Note: this coordinate system includes longitudes which are POSITIVE EAST.,
-4609,NAD27(CGQ77),CGQ77,,,Canada - Quebec,geographic 2D,6609,8901,North,East,Lat,Long,,9108,,,1999-05-12 00:00:00,,EPSG,Note: this coordinate system includes longitudes which are POSITIVE EAST.,
-4801,Bern 1898 (Bern),,,,Liechtenstein; Switzerland,geographic 2D,6149,8907,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4802,Bogota (Bogota),,,,Colombia,geographic 2D,6218,8904,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4803,Lisbon (Lisbon),,,,Portugal - onshore,geographic 2D,6207,8902,North,East,Lat,Long,,9108,,,1997-04-11 00:00:00,Instituto Geografico e Cadastral; Lisbon,EPSG,,97.12
-4804,Makassar (Jakarta),,,,Indonesia - south west Sulawesi,geographic 2D,6257,8908,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4805,MGI (Ferro),,,,Austria; Yugoslavia,geographic 2D,6312,8909,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,Bundesamt fur Eich- und Vermessungswesen; Wien,EPSG,,
-4806,Monte Mario (Rome),,,,Italy,geographic 2D,6265,8906,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4807,NTF (Paris),,,,France - onshore,geographic 2D,6275,8903,North,East,Lat,Long,,9105,,,1995-06-02 00:00:00,,EPSG,,
-4808,Padang (Jakarta),,,,Indonesia - Sumatra,geographic 2D,6280,8908,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4809,Belge 1950 (Brussels),,,,Belgium - onshore,geographic 2D,6215,8910,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4810,Tananarive (Paris),,,,Madagascar,geographic 2D,6297,8903,North,East,Lat,Long,,9105,,,1995-06-02 00:00:00,,EPSG,,
-4811,Voirol 1875 (Paris),,,,Algeria - north of 32 deg N,geographic 2D,6304,8903,North,East,Lat,Long,,9105,,,1995-06-02 00:00:00,IGN Paris,EPSG,,
-4812,Voirol Unifie (Paris),,,,Algeria - north of 32 deg N,geographic 2D,6305,8903,North,East,Lat,Long,,9105,,,1995-06-02 00:00:00,"\"Le System Geodesique Nord-Sahara\"; IGN Paris",EPSG,,
-4813,Batavia (Jakarta),,,,Indonesia - Java,geographic 2D,6211,8908,North,East,Lat,Long,,9108,,,1995-06-02 00:00:00,,EPSG,,
-4814,RT38 (Stockholm),,,,Sweden,geographic 2D,6308,8911,North,East,Lat,Long,,9108,,,1996-04-12 00:00:00,,EPSG,,
-4815,Greek (Athens),,,,Greece,geographic 2D,6120,8912,North,East,Lat,Long,,9108,,,1997-06-16 00:00:00,Topography Department; National Technical University of Greece.,EPSG,,
-4816,Carthage (Paris),,,,Tunisia,geographic 2D,6223,8903,North,East,Lat,Long,,9105,,,1998-11-11 00:00:00,,EPSG,Superseded by Greenwich-based Carthage geogCS.,
-4817,NGO 1948 (Oslo),,,,Norway - onshore,geographic 2D,6273,8913,North,East,Lat,Long,,9108,,,1999-10-20 00:00:00,,EPSG,,
-4901,ATF (Paris),,,,France,geographic 2D,6901,8903,North,East,Lat,Long,,9105,,,1995-06-02 00:00:00,,EPSG,,
-4902,NDG (Paris),,,,France - Alsace,geographic 2D,6902,8903,North,East,Lat,Long,,9105,,,1995-06-02 00:00:00,,EPSG,,
-4903,Madrid 1870 (Madrid),,,,Spain,geographic 2D,6903,8905,North,East,Lat,Long,,9108,,,1998-11-11 00:00:00,Institut de Geomatica; Barcelona.,EPSG,,
-20004,Pulkovo 1995 / Gauss-Kruger zone 4,1995 Coord. Sys. zone 4,,,Russia - west of 24 deg East.,projected 2D,,,North,East,X,Y,9001,,4200,16204,1996-09-12 00:00:00,"\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994",EPSG,,
-20005,Pulkovo 1995 / Gauss-Kruger zone 5,1995 Coord. Sys. zone 5,,,Russia - 24 deg to 30 deg East.,projected 2D,,,North,East,X,Y,9001,,4200,16205,1996-09-12 00:00:00,"\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994",EPSG,,
-20006,Pulkovo 1995 / Gauss-Kruger zone 6,1995 Coord. Sys. zone 6,,,Russia - 30 deg to 36 deg East.,projected 2D,,,North,East,X,Y,9001,,4200,16206,1996-09-12 00:00:00,"\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994",EPSG,,
-20007,Pulkovo 1995 / Gauss-Kruger zone 7,1995 Coord. Sys. zone 7,,,Russia - 36 deg to 42 deg East.,projected 2D,,,North,East,X,Y,9001,,4200,16207,1996-09-12 00:00:00,"\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994",EPSG,,
-20008,Pulkovo 1995 / Gauss-Kruger zone 8,1995 Coord. Sys. zone 8,,,Russia - 42 deg to 48 deg East.,projected 2D,,,North,East,X,Y,9001,,4200,16208,1996-09-12 00:00:00,"\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994",EPSG,,
-20009,Pulkovo 1995 / Gauss-Kruger zone 9,1995 Coord. Sys. zone 9,,,Russia - 48 deg to 54 deg East.,projected 2D,,,North,East,X,Y,9001,,4200,16209,1996-09-12 00:00:00,"\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994",EPSG,,
-20010,Pulkovo 1995 / Gauss-Kruger zone 10,1995 Coord. Sys. zone 10,,,Russia - 54 deg  to 60 deg East.,projected 2D,,,North,East,X,Y,9001,,4200,16210,1996-09-12 00:00:00,"\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994",EPSG,,
-20011,Pulkovo 1995 / Gauss-Kruger zone 11,1995 Coord. Sys. zone 11,,,Russia - 60 deg to 66 deg East.,projected 2D,,,North,East,X,Y,9001,,4200,16211,1996-09-12 00:00:00,"\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994",EPSG,,
-20012,Pulkovo 1995 / Gauss-Kruger zone 12,1995 Coord. Sys. zone 12,,,Russia - 66 deg to 72 deg East .,projected 2D,,,North,East,X,Y,9001,,4200,16212,1996-09-12 00:00:00,"\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994",EPSG,,
-20013,Pulkovo 1995 / Gauss-Kruger zone 13,1995 Coord. Sys. zone 13,,,Russia - 72 deg to 78 deg East.,projected 2D,,,North,East,X,Y,9001,,4200,16213,1996-09-12 00:00:00,"\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994",EPSG,,
-20014,Pulkovo 1995 / Gauss-Kruger zone 14,1995 Coord. Sys. zone 14,,,Russia - 78 deg to 84 deg East.,projected 2D,,,North,East,X,Y,9001,,4200,16214,1996-09-12 00:00:00,"\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994",EPSG,,
-20015,Pulkovo 1995 / Gauss-Kruger zone 15,1995 Coord. Sys. zone 15,,,Russia - 84 deg to 90 deg East.,projected 2D,,,North,East,X,Y,9001,,4200,16215,1996-09-12 00:00:00,"\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994",EPSG,,
-20016,Pulkovo 1995 / Gauss-Kruger zone 16,1995 Coord. Sys. zone 16,,,Russia - 90 deg to 96 deg East.,projected 2D,,,North,East,X,Y,9001,,4200,16216,1996-09-12 00:00:00,"\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994",EPSG,,
-20017,Pulkovo 1995 / Gauss-Kruger zone 17,1995 Coord. Sys. zone 17,,,Russia - 96 deg to 102deg East.,projected 2D,,,North,East,X,Y,9001,,4200,16217,1996-09-12 00:00:00,"\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994",EPSG,,
-20018,Pulkovo 1995 / Gauss-Kruger zone 18,1995 Coord. Sys. zone 18,,,Russia - 102 deg to 108 deg East.,projected 2D,,,North,East,X,Y,9001,,4200,16218,1996-09-12 00:00:00,"\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994",EPSG,,
-20019,Pulkovo 1995 / Gauss-Kruger zone 19,1995 Coord. Sys. zone 19,,,Russia - 108 deg to 114 deg East.,projected 2D,,,North,East,X,Y,9001,,4200,16219,1996-09-12 00:00:00,"\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994",EPSG,,
-20020,Pulkovo 1995 / Gauss-Kruger zone 20,1995 Coord. Sys. zone 20,,,Russia - 114 deg to 120 deg East.,projected 2D,,,North,East,X,Y,9001,,4200,16220,1996-09-12 00:00:00,"\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994",EPSG,,
-20021,Pulkovo 1995 / Gauss-Kruger zone 21,1995 Coord. Sys. zone 21,,,Russia - 120 deg to 126 deg East.,projected 2D,,,North,East,X,Y,9001,,4200,16221,1996-09-12 00:00:00,"\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994",EPSG,,
-20022,Pulkovo 1995 / Gauss-Kruger zone 22,1995 Coord. Sys. zone 22,,,Russia - 126 deg to 132 deg East.,projected 2D,,,North,East,X,Y,9001,,4200,16222,1996-09-12 00:00:00,"\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994",EPSG,,
-20023,Pulkovo 1995 / Gauss-Kruger zone 23,1995 Coord. Sys. zone 23,,,Russia - 132 deg to 138 deg East.,projected 2D,,,North,East,X,Y,9001,,4200,16223,1996-09-12 00:00:00,"\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994",EPSG,,
-20024,Pulkovo 1995 / Gauss-Kruger zone 24,1995 Coord. Sys. zone 24,,,Russia - 138 deg to 144 deg East.,projected 2D,,,North,East,X,Y,9001,,4200,16224,1996-09-12 00:00:00,"\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994",EPSG,,
-20025,Pulkovo 1995 / Gauss-Kruger zone 25,1995 Coord. Sys. zone 25,,,Russia - 144 deg to 150 deg East.,projected 2D,,,North,East,X,Y,9001,,4200,16225,1996-09-12 00:00:00,"\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994",EPSG,,
-20026,Pulkovo 1995 / Gauss-Kruger zone 26,1995 Coord. Sys. zone 26,,,Russia - 150 deg to 156 deg East.,projected 2D,,,North,East,X,Y,9001,,4200,16226,1996-09-12 00:00:00,"\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994",EPSG,,
-20027,Pulkovo 1995 / Gauss-Kruger zone 27,1995 Coord. Sys. zone 27,,,Russia - 156 deg to 162 deg East.,projected 2D,,,North,East,X,Y,9001,,4200,16227,1996-09-12 00:00:00,"\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994",EPSG,,
-20028,Pulkovo 1995 / Gauss-Kruger zone 28,1995 Coord. Sys. zone 28,,,Russia - 162 deg to 168 deg East.,projected 2D,,,North,East,X,Y,9001,,4200,16228,1996-09-12 00:00:00,"\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994",EPSG,,
-20029,Pulkovo 1995 / Gauss-Kruger zone 29,1995 Coord. Sys. zone 29,,,Russia - 168 deg to 174 deg East.,projected 2D,,,North,East,X,Y,9001,,4200,16229,1996-09-12 00:00:00,"\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994",EPSG,,
-20030,Pulkovo 1995 / Gauss-Kruger zone 30,1995 Coord. Sys. zone 30,,,Russia - 174 deg East to 180 deg.,projected 2D,,,North,East,X,Y,9001,,4200,16230,1996-09-12 00:00:00,"\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994",EPSG,,
-20031,Pulkovo 1995 / Gauss-Kruger zone 31,1995 Coord. Sys. zone 31,,,Russia - 180 deg to 174 deg West.,projected 2D,,,North,East,X,Y,9001,,4200,16231,1996-09-12 00:00:00,"\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994",EPSG,,
-20032,Pulkovo 1995 / Gauss-Kruger zone 32,1995 Coord. Sys. zone 32,,,Russia - east of 174 deg West.,projected 2D,,,North,East,X,Y,9001,,4200,16232,1996-09-12 00:00:00,"\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994",EPSG,,
-20064,Pulkovo 1995 / Gauss-Kruger 4N,Pulkovo 1995 / Gauss 4N,,,Russia - west of 24 deg East.,projected 2D,,,North,East,X,Y,9001,,4200,16304,1996-09-12 00:00:00,"\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994",EPSG,,
-20065,Pulkovo 1995 / Gauss-Kruger 5N,Pulkovo 1995 / Gauss 5N,,,Russia - 24 deg to 30 deg East.,projected 2D,,,North,East,X,Y,9001,,4200,16305,1996-09-12 00:00:00,"\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994",EPSG,,
-20066,Pulkovo 1995 / Gauss-Kruger 6N,Pulkovo 1995 / Gauss 6N,,,Russia - 30 deg to 36 deg East.,projected 2D,,,North,East,X,Y,9001,,4200,16306,1996-09-12 00:00:00,"\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994",EPSG,,
-20067,Pulkovo 1995 / Gauss-Kruger 7N,Pulkovo 1995 / Gauss 7N,,,Russia - 36 deg to 42 deg East.,projected 2D,,,North,East,X,Y,9001,,4200,16307,1996-09-12 00:00:00,"\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994",EPSG,,
-20068,Pulkovo 1995 / Gauss-Kruger 8N,Pulkovo 1995 / Gauss 8N,,,Russia - 42 deg to 48 deg East.,projected 2D,,,North,East,X,Y,9001,,4200,16308,1996-09-12 00:00:00,"\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994",EPSG,,
-20069,Pulkovo 1995 / Gauss-Kruger 9N,Pulkovo 1995 / Gauss 9N,,,Russia - 48 deg to 54 deg East.,projected 2D,,,North,East,X,Y,9001,,4200,16309,1996-09-12 00:00:00,"\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994",EPSG,,
-20070,Pulkovo 1995 / Gauss-Kruger 10N,Pulkovo 1995 / Gauss 10N,,,Russia - 54 deg  to 60 deg East.,projected 2D,,,North,East,X,Y,9001,,4200,16310,1996-09-12 00:00:00,"\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994",EPSG,,
-20071,Pulkovo 1995 / Gauss-Kruger 11N,Pulkovo 1995 / Gauss 11N,,,Russia - 60 deg to 66 deg East.,projected 2D,,,North,East,X,Y,9001,,4200,16311,1996-09-12 00:00:00,"\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994",EPSG,,
-20072,Pulkovo 1995 / Gauss-Kruger 12N,Pulkovo 1995 / Gauss 12N,,,Russia - 66 deg to 72 deg East .,projected 2D,,,North,East,X,Y,9001,,4200,16312,1996-09-12 00:00:00,"\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994",EPSG,,
-20073,Pulkovo 1995 / Gauss-Kruger 13N,Pulkovo 1995 / Gauss 13N,,,Russia - 72 deg to 78 deg East.,projected 2D,,,North,East,X,Y,9001,,4200,16313,1996-09-12 00:00:00,"\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994",EPSG,,
-20074,Pulkovo 1995 / Gauss-Kruger 14N,Pulkovo 1995 / Gauss 14N,,,Russia - 78 deg to 84 deg East.,projected 2D,,,North,East,X,Y,9001,,4200,16314,1996-09-12 00:00:00,"\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994",EPSG,,
-20075,Pulkovo 1995 / Gauss-Kruger 15N,Pulkovo 1995 / Gauss 15N,,,Russia - 84 deg to 90 deg East.,projected 2D,,,North,East,X,Y,9001,,4200,16315,1996-09-12 00:00:00,"\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994",EPSG,,
-20076,Pulkovo 1995 / Gauss-Kruger 16N,Pulkovo 1995 / Gauss 16N,,,Russia - 90 deg to 96 deg East.,projected 2D,,,North,East,X,Y,9001,,4200,16316,1996-09-12 00:00:00,"\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994",EPSG,,
-20077,Pulkovo 1995 / Gauss-Kruger 17N,Pulkovo 1995 / Gauss 17N,,,Russia - 96 deg to 102deg East.,projected 2D,,,North,East,X,Y,9001,,4200,16317,1996-09-12 00:00:00,"\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994",EPSG,,
-20078,Pulkovo 1995 / Gauss-Kruger 18N,Pulkovo 1995 / Gauss 18N,,,Russia - 102 deg to 108 deg East.,projected 2D,,,North,East,X,Y,9001,,4200,16318,1996-09-12 00:00:00,"\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994",EPSG,,
-20079,Pulkovo 1995 / Gauss-Kruger 19N,Pulkovo 1995 / Gauss 19N,,,Russia - 108 deg to 114 deg East.,projected 2D,,,North,East,X,Y,9001,,4200,16319,1996-09-12 00:00:00,"\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994",EPSG,,
-20080,Pulkovo 1995 / Gauss-Kruger 20N,Pulkovo 1995 / Gauss 20N,,,Russia - 114 deg to 120 deg East.,projected 2D,,,North,East,X,Y,9001,,4200,16320,1996-09-12 00:00:00,"\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994",EPSG,,
-20081,Pulkovo 1995 / Gauss-Kruger 21N,Pulkovo 1995 / Gauss 21N,,,Russia - 120 deg to 126 deg East.,projected 2D,,,North,East,X,Y,9001,,4200,16321,1996-09-12 00:00:00,"\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994",EPSG,,
-20082,Pulkovo 1995 / Gauss-Kruger 22N,Pulkovo 1995 / Gauss 22N,,,Russia - 126 deg to 132 deg East.,projected 2D,,,North,East,X,Y,9001,,4200,16322,1996-09-12 00:00:00,"\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994",EPSG,,
-20083,Pulkovo 1995 / Gauss-Kruger 23N,Pulkovo 1995 / Gauss 23N,,,Russia - 132 deg to 138 deg East.,projected 2D,,,North,East,X,Y,9001,,4200,16323,1996-09-12 00:00:00,"\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994",EPSG,,
-20084,Pulkovo 1995 / Gauss-Kruger 24N,Pulkovo 1995 / Gauss 24N,,,Russia - 138 deg to 144 deg East.,projected 2D,,,North,East,X,Y,9001,,4200,16324,1996-09-12 00:00:00,"\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994",EPSG,,
-20085,Pulkovo 1995 / Gauss-Kruger 25N,Pulkovo 1995 / Gauss 25N,,,Russia - 144 deg to 150 deg East.,projected 2D,,,North,East,X,Y,9001,,4200,16325,1996-09-12 00:00:00,"\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994",EPSG,,
-20086,Pulkovo 1995 / Gauss-Kruger 26N,Pulkovo 1995 / Gauss 26N,,,Russia - 150 deg to 156 deg East.,projected 2D,,,North,East,X,Y,9001,,4200,16326,1996-09-12 00:00:00,"\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994",EPSG,,
-20087,Pulkovo 1995 / Gauss-Kruger 27N,Pulkovo 1995 / Gauss 27N,,,Russia - 156 deg to 162 deg East.,projected 2D,,,North,East,X,Y,9001,,4200,16327,1996-09-12 00:00:00,"\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994",EPSG,,
-20088,Pulkovo 1995 / Gauss-Kruger 28N,Pulkovo 1995 / Gauss 28N,,,Russia - 162 deg to 168 deg East.,projected 2D,,,North,East,X,Y,9001,,4200,16328,1996-09-12 00:00:00,"\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994",EPSG,,
-20089,Pulkovo 1995 / Gauss-Kruger 29N,Pulkovo 1995 / Gauss 29N,,,Russia - 168 deg to 174 deg East.,projected 2D,,,North,East,X,Y,9001,,4200,16329,1996-09-12 00:00:00,"\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994",EPSG,,
-20090,Pulkovo 1995 / Gauss-Kruger 30N,Pulkovo 1995 / Gauss 30N,,,Russia - 174 deg East to 180 deg.,projected 2D,,,North,East,X,Y,9001,,4200,16330,1996-09-12 00:00:00,"\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994",EPSG,,
-20091,Pulkovo 1995 / Gauss-Kruger 31N,Pulkovo 1995 / Gauss 31N,,,Russia - 180 deg to 174 deg West.,projected 2D,,,North,East,X,Y,9001,,4200,16331,1996-09-12 00:00:00,"\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994",EPSG,,
-20092,Pulkovo 1995 / Gauss-Kruger 32N,Pulkovo 1995 / Gauss 32N,,,Russia - east of 174 deg West.,projected 2D,,,North,East,X,Y,9001,,4200,16332,1996-09-12 00:00:00,"\"Main Terms of Reference for the State Geodetic Network\"; Federal Geodetic Service of Russia; 1994",EPSG,,
-20137,Adindan / UTM zone 37N,,,,Ethiopia - west of 42 degrees East.  Sudan - west of 42 degrees East.,projected 2D,,,East,North,E,N,9001,,4201,16037,1995-06-02 00:00:00,,EPSG,,
-20138,Adindan / UTM zone 38N,,,,Ethiopia - east of 42 degrees East.  Sudan - east of 42 degrees East.,projected 2D,,,East,North,E,N,9001,,4201,16038,1995-06-02 00:00:00,,EPSG,,
-20248,AGD66 / AMG zone 48,,,,Australia - 102deg East to 108deg East.,projected 2D,,,East,North,E,N,9001,,4202,17448,1995-06-02 00:00:00,,EPSG,,
-20249,AGD66 / AMG zone 49,,,,Australia - 108deg East to 114deg East.,projected 2D,,,East,North,E,N,9001,,4202,17449,1995-06-02 00:00:00,,EPSG,,
-20250,AGD66 / AMG zone 50,,,,Australia - 114deg East to 120deg East.,projected 2D,,,East,North,E,N,9001,,4202,17450,1995-06-02 00:00:00,,EPSG,,
-20251,AGD66 / AMG zone 51,,,,Australia - 120deg East to 126deg East.,projected 2D,,,East,North,E,N,9001,,4202,17451,1995-06-02 00:00:00,,EPSG,,
-20252,AGD66 / AMG zone 52,,,,Australia - 126deg East to 132deg East.,projected 2D,,,East,North,E,N,9001,,4202,17452,1995-06-02 00:00:00,,EPSG,,
-20253,AGD66 / AMG zone 53,,,,Australia - 132deg East to 138deg East.,projected 2D,,,East,North,E,N,9001,,4202,17453,1995-06-02 00:00:00,,EPSG,,
-20254,AGD66 / AMG zone 54,,,,Australia - 138deg East to 144deg East.  Papua New Guinea - west of 144deg East.,projected 2D,,,East,North,E,N,9001,,4202,17454,1995-06-02 00:00:00,,EPSG,,
-20255,AGD66 / AMG zone 55,,,,Australia - 144deg East to 150deg East.  Papua New Guinea - 144deg East to 150deg East.,projected 2D,,,East,North,E,N,9001,,4202,17455,1995-06-02 00:00:00,,EPSG,,
-20256,AGD66 / AMG zone 56,,,,Australia - 150deg East to 156deg East.,projected 2D,,,East,North,E,N,9001,,4202,17456,1995-06-02 00:00:00,,EPSG,,
-20257,AGD66 / AMG zone 57,,,,Australia - 156deg East to 162deg East.,projected 2D,,,East,North,E,N,9001,,4202,17457,1995-06-02 00:00:00,,EPSG,,
-20258,AGD66 / AMG zone 58,,,,Australia - 162deg East to 168deg East.,projected 2D,,,East,North,E,N,9001,,4202,17458,1995-06-02 00:00:00,,EPSG,,
-20348,AGD84 / AMG zone 48,,,,Australia - 102deg East to 108deg East.,projected 2D,,,East,North,E,N,9001,,4203,17448,1995-06-02 00:00:00,,EPSG,,
-20349,AGD84 / AMG zone 49,,,,Australia - 108deg East to 114deg East.,projected 2D,,,East,North,E,N,9001,,4203,17449,1995-06-02 00:00:00,,EPSG,,
-20350,AGD84 / AMG zone 50,,,,Australia - 114deg East to 120deg East.,projected 2D,,,East,North,E,N,9001,,4203,17450,1995-06-02 00:00:00,,EPSG,,
-20351,AGD84 / AMG zone 51,,,,Australia - 120deg East to 126deg East.,projected 2D,,,East,North,E,N,9001,,4203,17451,1995-06-02 00:00:00,,EPSG,,
-20352,AGD84 / AMG zone 52,,,,Australia - 126deg East to 132deg East.,projected 2D,,,East,North,E,N,9001,,4203,17452,1995-06-02 00:00:00,,EPSG,,
-20353,AGD84 / AMG zone 53,,,,Australia - 132deg East to 138deg East.,projected 2D,,,East,North,E,N,9001,,4203,17453,1995-06-02 00:00:00,,EPSG,,
-20354,AGD84 / AMG zone 54,,,,Australia - 138deg East to 144deg East.  Papua - New Guinea west of 144deg East.,projected 2D,,,East,North,E,N,9001,,4203,17454,1995-06-02 00:00:00,,EPSG,,
-20355,AGD84 / AMG zone 55,,,,Australia - 144deg East to 150deg East.  Papua New Guinea - 144deg East to 150deg East.,projected 2D,,,East,North,E,N,9001,,4203,17455,1995-06-02 00:00:00,,EPSG,,
-20356,AGD84 / AMG zone 56,,,,Australia - 150deg East to 156deg East.,projected 2D,,,East,North,E,N,9001,,4203,17456,1995-06-02 00:00:00,,EPSG,,
-20357,AGD84 / AMG zone 57,,,,Australia - 156deg East to 162deg East.,projected 2D,,,East,North,E,N,9001,,4203,17457,1995-06-02 00:00:00,,EPSG,,
-20358,AGD84 / AMG zone 58,,,,Australia - 162deg East to 168deg East.,projected 2D,,,East,North,E,N,9001,,4203,17458,1995-06-02 00:00:00,,EPSG,,
-20437,Ain el Abd / UTM zone 37N,Ain el Abd / UTM 37N,,,Saudi Arabia - west of 42 degrees East.,projected 2D,,,East,North,E,N,9001,,4204,16037,1997-11-13 00:00:00,,EPSG,,97.59
-20438,Ain el Abd / UTM zone 38N,Ain el Abd / UTM 38N,,,Kuwait.  Saudi Arabia - between 42 degrees and 48 degrees East.,projected 2D,,,East,North,E,N,9001,,4204,16038,1997-11-13 00:00:00,,EPSG,"Known in Kuwait as \"KOC UTM\".",97.59
-20439,Ain el Abd / UTM zone 39N,Ain el Abd / UTM 39N,,,Saudi Arabia - east of 48 degrees East.,projected 2D,,,East,North,E,N,9001,,4204,16039,1997-11-13 00:00:00,,EPSG,,97.59
-20499,Ain el Abd / Bahrain Grid,,,,Bahrain.,projected 2D,,,East,North,E,N,9001,,4204,19900,1995-06-02 00:00:00,,EPSG,,
-20538,Afgooye / UTM zone 38N,,,,Somalia - west of 48 degrees East.,projected 2D,,,East,North,E,N,9001,,4205,16038,1995-06-02 00:00:00,,EPSG,,
-20539,Afgooye / UTM zone 39N,,,,Somalia - east of 48 degrees East.,projected 2D,,,East,North,E,N,9001,,4205,16039,1995-06-02 00:00:00,,EPSG,,
-20790,Lisbon (Lisbon)/Portuguese National Grid,Lisbon / Portuguese Grid,,,Portugal - onshore.,projected 2D,,,East,North,X,Y,9001,,4803,19936,1998-11-11 00:00:00,,EPSG,,98.42
-20822,Aratu / UTM zone 22S,,,,Brazil - coastal areas south of 2 deg 55 min South and west of 48 deg West.,projected 2D,,,East,North,E,N,9001,,4208,16122,1995-07-21 00:00:00,,EPSG,,95.191
-20823,Aratu / UTM zone 23S,,,,Brazil - coastal areas south of 2 deg 55 min South and between 48 and 42 deg West; offshore Santos basin.,projected 2D,,,East,North,E,N,9001,,4208,16123,1995-07-21 00:00:00,,EPSG,,95.191
-20824,Aratu / UTM zone 24S,,,,Brazil - coastal areas south of 2 deg 55 min South and east of 42 deg West; offshore Campos basin.,projected 2D,,,East,North,E,N,9001,,4208,16124,1995-07-21 00:00:00,,EPSG,,95.191
-20934,Arc 1950 / UTM zone 34S,,,,Botswana & Zambia - west of 24 deg East.,projected 2D,,,East,North,E,N,9001,,4209,16134,1997-11-13 00:00:00,,EPSG,,
-20935,Arc 1950 / UTM zone 35S,,,,Botswana - east of 24 deg East; Zambia - 24 to 30 deg East; Zimbabwe west of 30 deg East .,projected 2D,,,East,North,E,N,9001,,4209,16135,1997-11-13 00:00:00,,EPSG,,
-20936,Arc 1950 / UTM zone 36S,,,,Malawi; Zambia & Zimbabwe - east of 30 deg East.,projected 2D,,,East,North,E,N,9001,,4209,16136,1997-11-13 00:00:00,,EPSG,,
-21035,Arc 1960 / UTM zone 35S,,,,Tanzania - west of 30 deg East; Uganda south of equator and west of 30 deg East.,projected 2D,,,East,North,E,N,9001,,4210,16135,1997-11-13 00:00:00,,EPSG,,
-21036,Arc 1960 / UTM zone 36S,,,,Kenya - south of equator and west of 36 deg East; Tanzania - 30 to 36 deg East; Uganda south of equator and east of 30 deg East.,projected 2D,,,East,North,E,N,9001,,4210,16136,1997-11-13 00:00:00,,EPSG,,
-21037,Arc 1960 / UTM zone 37S,,,,Kenya - south of equator and east of 36 deg East; Tanzania - east of 36 deg East.,projected 2D,,,East,North,E,N,9001,,4210,16137,1997-11-13 00:00:00,,EPSG,,
-21095,Arc 1960 / UTM zone 35N,,,,Uganda north of equator and west of 30 deg East.,projected 2D,,,East,North,E,N,9001,,4210,16035,1997-11-13 00:00:00,,EPSG,,
-21096,Arc 1960 / UTM zone 36N,,,,Kenya - north of equator and west of 36 deg East; Uganda north of equator and east of 30 deg East.,projected 2D,,,East,North,E,N,9001,,4210,16036,1997-11-13 00:00:00,,EPSG,,
-21097,Arc 1960 / UTM zone 37N,,,,Kenya - north of equator and east of 36 deg East.,projected 2D,,,East,North,E,N,9001,,4210,16037,1997-11-13 00:00:00,,EPSG,,
-21100,Batavia (Jakarta) / NEIEZ,Batavia / NEIEZ,,,Indonesia - Java.,projected 2D,,,East,North,X,Y,9001,,4813,19905,1995-06-02 00:00:00,,EPSG,,
-21148,Batavia / UTM zone 48S,,,,Indonesia - Java west of 108 deg East.,projected 2D,,,East,North,E,N,9001,,4211,16148,1995-06-02 00:00:00,,EPSG,,
-21149,Batavia / UTM zone 49S,,,,Indonesia - Java between 108 and 114 deg East.,projected 2D,,,East,North,E,N,9001,,4211,16149,1995-06-02 00:00:00,,EPSG,,
-21150,Batavia / UTM zone 50S,,,,Indonesia - Java east of 114 deg East.,projected 2D,,,East,North,E,N,9001,,4211,16150,1995-06-02 00:00:00,,EPSG,,
-21291,Barbados 1938 / British West Indies Grid,Barbados 1938 / BWI Grid,,,Barbados,projected 2D,,,East,North,E,N,9001,,4212,19942,1999-04-22 00:00:00,Ordnance Survey of Great Britain,EPSG,Superseded by Barbados National Grid (code 21292) from 1983.,
-21292,Barbados 1938 / Barbados National Grid,Barbados NationaI Grid,,,Barbados,projected 2D,,,East,North,E,N,9001,,4212,19943,1999-04-22 00:00:00,Ordnance Survey of Great Britain,EPSG,Supersedes Barbados 1938 / BWI Grid (code 21291) from 1983.,
-21413,Beijing 1954 / Gauss-Kruger zone 13,Beijing / Gauss zone 13,,,China - west of 78 deg East.,projected 2D,,,North,East,X,Y,9001,,4214,16213,1995-06-02 00:00:00,,EPSG,,
-21414,Beijing 1954 / Gauss-Kruger zone 14,Beijing / Gauss zone 14,,,China - 78 deg East  to 84 deg East.,projected 2D,,,North,East,X,Y,9001,,4214,16214,1995-06-02 00:00:00,,EPSG,,
-21415,Beijing 1954 / Gauss-Kruger zone 15,Beijing / Gauss zone 15,,,China - 84 deg East  to 90 deg East.,projected 2D,,,North,East,X,Y,9001,,4214,16215,1995-06-02 00:00:00,,EPSG,,
-21416,Beijing 1954 / Gauss-Kruger zone 16,Beijing / Gauss zone 16,,,China - 90 deg East  to 96 deg East.,projected 2D,,,North,East,X,Y,9001,,4214,16216,1995-06-02 00:00:00,,EPSG,,
-21417,Beijing 1954 / Gauss-Kruger zone 17,Beijing / Gauss zone 17,,,China - 96 deg East  to 102eg E,projected 2D,,,North,East,X,Y,9001,,4214,16217,1995-06-02 00:00:00,,EPSG,,
-21418,Beijing 1954 / Gauss-Kruger zone 18,Beijing / Gauss zone 18,,,China - 102 deg East  to 108 deg East.,projected 2D,,,North,East,X,Y,9001,,4214,16218,1995-06-02 00:00:00,,EPSG,,
-21419,Beijing 1954 / Gauss-Kruger zone 19,Beijing / Gauss zone 19,,,China - 108 deg East  to 114 deg East.,projected 2D,,,North,East,X,Y,9001,,4214,16219,1995-06-02 00:00:00,,EPSG,,
-21420,Beijing 1954 / Gauss-Kruger zone 20,Beijing / Gauss zone 20,,,China - 114 deg East  to 120 deg East.,projected 2D,,,North,East,X,Y,9001,,4214,16220,1995-06-02 00:00:00,,EPSG,,
-21421,Beijing 1954 / Gauss-Kruger zone 21,Beijing / Gauss zone 21,,,China - 120 deg East  to 126 deg East.,projected 2D,,,North,East,X,Y,9001,,4214,16221,1995-06-02 00:00:00,,EPSG,,
-21422,Beijing 1954 / Gauss-Kruger zone 22,Beijing / Gauss zone 22,,,China - 126 deg East  to 132 deg East.,projected 2D,,,North,East,X,Y,9001,,4214,16222,1995-06-02 00:00:00,,EPSG,,
-21423,Beijing 1954 / Gauss-Kruger zone 23,Beijing / Gauss zone 23,,,China - east of 132 deg East.,projected 2D,,,North,East,X,Y,9001,,4214,16223,1995-06-02 00:00:00,,EPSG,,
-21473,Beijing 1954 / Gauss-Kruger 13N,Beijing / Gauss 13N,,,China - west of 78 deg East.,projected 2D,,,North,East,X,Y,9001,,4214,16313,1995-06-02 00:00:00,,EPSG,,
-21474,Beijing 1954 / Gauss-Kruger 14N,Beijing / Gauss 14N,,,China - 78 deg East  to 84 deg East.,projected 2D,,,North,East,X,Y,9001,,4214,16314,1995-06-02 00:00:00,,EPSG,,
-21475,Beijing 1954 / Gauss-Kruger 15N,Beijing / Gauss 15N,,,China - 84 deg East  to 90 deg East.,projected 2D,,,North,East,X,Y,9001,,4214,16315,1995-06-02 00:00:00,,EPSG,,
-21476,Beijing 1954 / Gauss-Kruger 16N,Beijing / Gauss 16N,,,China - 90 deg East  to 96 deg East.,projected 2D,,,North,East,X,Y,9001,,4214,16316,1995-06-02 00:00:00,,EPSG,,
-21477,Beijing 1954 / Gauss-Kruger 17N,Beijing / Gauss 17N,,,China - 96 deg East  to 102eg E,projected 2D,,,North,East,X,Y,9001,,4214,16317,1995-06-02 00:00:00,,EPSG,,
-21478,Beijing 1954 / Gauss-Kruger 18N,Beijing / Gauss 18N,,,China - 102 deg East  to 108 deg East.,projected 2D,,,North,East,X,Y,9001,,4214,16318,1995-06-02 00:00:00,,EPSG,,
-21479,Beijing 1954 / Gauss-Kruger 19N,Beijing / Gauss 19N,,,China - 108 deg East  to 114 deg East.,projected 2D,,,North,East,X,Y,9001,,4214,16319,1995-06-02 00:00:00,,EPSG,,
-21480,Beijing 1954 / Gauss-Kruger 20N,Beijing / Gauss 20N,,,China - 114 deg East  to 120 deg East.,projected 2D,,,North,East,X,Y,9001,,4214,16320,1995-06-02 00:00:00,,EPSG,,
-21481,Beijing 1954 / Gauss-Kruger 21N,Beijing / Gauss 21N,,,China - 120 deg East  to 126 deg East.,projected 2D,,,North,East,X,Y,9001,,4214,16321,1995-06-02 00:00:00,,EPSG,,
-21482,Beijing 1954 / Gauss-Kruger 22N,Beijing / Gauss 22N,,,China - 126 deg East  to 132 deg East.,projected 2D,,,North,East,X,Y,9001,,4214,16322,1995-06-02 00:00:00,,EPSG,,
-21483,Beijing 1954 / Gauss-Kruger 23N,Beijing / Gauss 23N,,,China - east of 132 deg East.,projected 2D,,,North,East,X,Y,9001,,4214,16323,1995-06-02 00:00:00,,EPSG,,
-21500,Belge 1950 (Brussels) / Belge Lambert 50,Belge Lambert 50,,,Belgium - onshore.,projected 2D,,,East,North,X,Y,9001,,4809,19901,1997-04-11 00:00:00,,EPSG,Superseded by 31300 (Belge 1972 / Belge Lambert 72).,97.13
-21780,Bern 1898 (Bern) / LV03C,LV03C,,,Liechtenstein.  Switzerland.,projected 2D,,,East,North,Y,X,9001,,4801,19923,1997-06-30 00:00:00,,EPSG,Superseded by CH1903 / LV03 (code 21781).,97.27  97.62
-21781,CH1903 / LV03,LV03,,,Liechtenstein; Switzerland.,projected 2D,,,East,North,Y,X,9001,,4149,19922,1999-10-20 00:00:00,,EPSG,Supersedes LV03C (code 21780).  Superseded by CH1903+/LV95 (code 256).,
-21817,Bogota / UTM zone 17N,,,,Colombia - offshore west of 78 deg W of Greenwich.,projected 2D,,,East,North,E,N,9001,,4218,16017,1995-06-02 00:00:00,,EPSG,,
-21818,Bogota / UTM zone 18N,,,,Colombia - offshore east of 78 deg W of Greenwich.,projected 2D,,,East,North,E,N,9001,,4218,16018,1995-06-02 00:00:00,,EPSG,,
-21891,Bogota / Colombia West zone,Bogota / Colombia 3W,,,Colombia - west of 1 deg 30 min W of Bogota (75d 34m 51.30s W of Greenwich).,projected 2D,,,East,North,X,Y,9001,,4218,18051,1997-11-13 00:00:00,,EPSG,,97.11  97.57
-21892,Bogota / Colombia Bogota zone,Bogota / Colombia Bogota,,,Colombia - 1 deg 30 min W to 1 deg 30 min E of Bogota (75d 35m W to 72d 35m W of Greenwich).,projected 2D,,,East,North,X,Y,9001,,4218,18052,1997-11-13 00:00:00,,EPSG,,97.11  97.57
-21893,Bogota / Colombia East Central zone,Bogota / Colombia 3E,,,Colombia - 1 deg 30 min to 4 deg 30 min E of Bogota (72d 35m to 69d 34m W of Greenwich).,projected 2D,,,East,North,X,Y,9001,,4218,18053,1997-11-13 00:00:00,,EPSG,,97.11  97.57
-21894,Bogota / Colombia East,Bogota / Colombia 6E,,,Colombia - east of 4 deg 30 min E of Bogota (69d 34m 51.3s W of Greenwich).,projected 2D,,,East,North,X,Y,9001,,4218,18054,1997-11-13 00:00:00,,EPSG,,97.11  97.57
-22032,Camacupa / UTM zone 32S,,,,Angola - west of 12 deg East.,projected 2D,,,East,North,E,N,9001,,4220,16132,1997-11-13 00:00:00,,EPSG,,97.58
-22033,Camacupa / UTM zone 33S,,,,Angola - east of 12 deg East.,projected 2D,,,East,North,E,N,9001,,4220,16133,1997-11-13 00:00:00,,EPSG,,97.58
-22091,Camacupa / TM 11.30 SE,,,,Angola - offshore.,projected 2D,,,East,North,E,N,9001,,4220,16611,1998-11-11 00:00:00,Esso Angola,EPSG,Used by Esso Angola for offshore blocks 15 and 24.,
-22092,Camacupa / TM 12 SE,,,,Angola - offshore.,projected 2D,,,East,North,E,N,9001,,4220,16612,1998-11-11 00:00:00,Shell Angola,EPSG,"Used by Shell Angola for offshore blocks 1 and 16.  Used by BP Amoco, Elf and Esso for offshore blocks 31-33.",
-22191,Campo Inchauspe / Argentina 1,C Inchauspe /Argentina 1,,,Argentina - west of 70 deg 30 min West.,projected 2D,,,North,East,X,Y,9001,,4221,18031,1999-11-15 00:00:00,,EPSG,,97.72
-22192,Campo Inchauspe / Argentina 2,C Inchauspe /Argentina 2,,,Argentina - between 70 deg 30 min and 67 deg 30 min West.,projected 2D,,,North,East,X,Y,9001,,4221,18032,1999-11-15 00:00:00,,EPSG,,97.72
-22193,Campo Inchauspe / Argentina 3,C Inchauspe /Argentina 3,,,Argentina - between 67 deg 30 min and 64 deg 30 min West.,projected 2D,,,North,East,X,Y,9001,,4221,18033,1999-11-15 00:00:00,,EPSG,,97.72
-22194,Campo Inchauspe / Argentina 4,C Inchauspe /Argentina 4,,,Argentina - between 64 deg 30 min and 61 deg 30 min West.,projected 2D,,,North,East,X,Y,9001,,4221,18034,1999-11-15 00:00:00,,EPSG,,97.72
-22195,Campo Inchauspe / Argentina 5,C Inchauspe /Argentina 5,,,Argentina - between 61 deg 30 min and 58 deg 30 min West.,projected 2D,,,North,East,X,Y,9001,,4221,18035,1999-11-15 00:00:00,,EPSG,,97.72
-22196,Campo Inchauspe / Argentina 6,C Inchauspe /Argentina 6,,,Argentina - between 58 deg 30 min and 55 deg 30 min West.,projected 2D,,,North,East,X,Y,9001,,4221,18036,1999-11-15 00:00:00,,EPSG,,97.72
-22197,Campo Inchauspe / Argentina 7,C Inchauspe /Argentina 7,,,Argentina - east of 55 deg 30 min West.,projected 2D,,,North,East,X,Y,9001,,4221,18037,1999-11-15 00:00:00,,EPSG,,97.72
-22234,Cape / UTM zone 34S,,,,Botswana - west of 21deg East.,projected 2D,,,East,North,E,N,9001,,4222,16134,1995-12-08 00:00:00,,EPSG,,
-22235,Cape / UTM zone 35S,,,,Botswana - east of 27deg East.,projected 2D,,,East,North,E,N,9001,,4222,16135,1995-12-08 00:00:00,,EPSG,,
-22236,Cape / UTM zone 36S,,,,Botswana - between 21 and 27deg East.,projected 2D,,,East,North,E,N,9001,,4222,16136,1995-12-08 00:00:00,,EPSG,,
-22275,South African Coordinate System zone 15,South African CS zone 15,,,South Africa - Walvis Bay.,projected 2D,,,West,South,W,S,9001,,4222,17515,1996-04-12 00:00:00,,EPSG,,
-22277,South African Coordinate System zone 17,South African CS zone 17,,,South Africa - west of 18 deg East.,projected 2D,,,West,South,W,S,9001,,4222,17517,1996-04-12 00:00:00,,EPSG,,
-22279,South African Coordinate System zone 19,South African CS zone 19,,,South Africa - 18 to 20 deg East.,projected 2D,,,West,South,W,S,9001,,4222,17519,1996-04-12 00:00:00,,EPSG,,
-22281,South African Coordinate System zone 21,South African CS zone 21,,,South Africa - 20 to 22 deg East.,projected 2D,,,West,South,W,S,9001,,4222,17521,1996-04-12 00:00:00,,EPSG,,
-22283,South African Coordinate System zone 23,South African CS zone 23,,,South Africa - 22 to 24 deg East.,projected 2D,,,West,South,W,S,9001,,4222,17523,1996-04-12 00:00:00,,EPSG,,
-22285,South African Coordinate System zone 25,South African CS zone 25,,,Lestho  - west of 26 deg East; South Africa - 24 to 26 deg East.,projected 2D,,,West,South,W,S,9001,,4222,17525,1996-04-12 00:00:00,,EPSG,,
-22287,South African Coordinate System zone 27,South African CS zone 27,,,Lestho  - east of 26 deg East;  South Africa - 26 to 28 deg East.,projected 2D,,,West,South,W,S,9001,,4222,17527,1996-04-12 00:00:00,,EPSG,,
-22289,South African Coordinate System zone 29,South African CS zone 29,,,South Africa - 28 to 30 deg East.,projected 2D,,,West,South,W,S,9001,,4222,17529,1996-04-12 00:00:00,,EPSG,,
-22291,South African Coordinate System zone 31,South African CS zone 31,,,South Africa - 30 to 32 deg East;  Swaziland.,projected 2D,,,West,South,W,S,9001,,4222,17531,1996-04-12 00:00:00,,EPSG,,
-22293,South African Coordinate System zone 33,South African CS zone 33,,,South Africa - east of 32 deg East.,projected 2D,,,West,South,W,S,9001,,4222,17533,1996-04-12 00:00:00,,EPSG,,
-22300,Carthage (Paris) / Tunisia Mining Grid,Tunisia Mining Grid,,,Tunisia - onshore.,projected 2D,,,East,North,X,Y,9036,,4816,19937,1998-11-11 00:00:00,,EPSG,CAUTION: Carthage datum did not exist when the 1953 decree was issued and an inference is that grid should be applied to the Voirol 1875 geogCS.  Common practice assumes that the current Tunisian geodetic datum of Carthage applies.,
-22332,Carthage / UTM zone 32N,,,,Tunisia - offshore.,projected 2D,,,East,North,X,Y,9001,,4223,16032,1995-06-02 00:00:00,,EPSG,,
-22391,Carthage / Nord Tunisie,,,,Tunisia - north of 38.5 grads (34 deg 39 min) North.,projected 2D,,,East,North,X,Y,9001,,4223,18181,1995-06-02 00:00:00,,EPSG,,
-22392,Carthage / Sud Tunisie,,,,Tunisia - south of 38.5 grads (34 deg 39 min) North.,projected 2D,,,East,North,X,Y,9001,,4223,18182,1995-06-02 00:00:00,,EPSG,,
-22523,Corrego Alegre / UTM zone 23S,Corrego Alegre / UTM 23S,,,Brazil - NE coastal area between 45 deg W and 42 deg W.,projected 2D,,,East,North,E,N,9001,,4225,16123,1995-06-02 00:00:00,,EPSG,,
-22524,Corrego Alegre / UTM zone 24S,Corrego Alegre / UTM 24S,,,Brazil - NE coastal area between 42 deg W and 40 deg W.,projected 2D,,,East,North,E,N,9001,,4225,16124,1995-06-02 00:00:00,,EPSG,,
-22700,Deir ez Zor / Levant Zone,,,,Syrian Arab Republic west of 39 deg E.,projected 2D,,,East,North,X,Y,9001,,4227,19940,1999-04-22 00:00:00,,EPSG,Superseded by Deir ez Zor / Syria Lambert (EPSG code 22770) from 1973.,
-22770,Deir ez Zor / Syria Lambert,,,,Syrian Arab Republic,projected 2D,,,East,North,X,Y,9001,,4227,19948,1999-10-20 00:00:00,,EPSG,Supersedes Deir ez Zor / Levant zone (EPSG code 22700) from 1973.,
-22832,Douala / UTM zone 32N,,,,Cameroon.,projected 2D,,,East,North,E,N,9001,,4228,16032,1995-06-02 00:00:00,,EPSG,,
-22991,Egypt 1907 / Blue Belt,,,,Egypt  - Sinai peninsula.,projected 2D,,,East,North,E,N,9001,,4229,18071,1999-04-22 00:00:00,,EPSG,Also known as Egypt 1907 / Green Belt.    Oil industry usually uses Egypt 1907 / Red Belt rather than this projected CS.,
-22992,Egypt 1907 / Red Belt,,,,Egypt  - east of 29 deg East.,projected 2D,,,East,North,E,N,9001,,4229,18072,1995-06-02 00:00:00,,EPSG,See also Egypt 1907 / Blue Belt for non oil industry usage in Sinai peninsula.,
-22993,Egypt 1907 / Purple Belt,,,,Egypt -  west of 29 deg E; north of approx 28 deg 11 min North.,projected 2D,,,East,North,E,N,9001,,4229,18073,1995-06-02 00:00:00,,EPSG,,
-22994,Egypt 1907 / Extended Purple Belt,Egypt 1907 / Ext. Purple,,,Egypt  - west of 29 deg E; south of approx 28 deg 11 min North.,projected 2D,,,East,North,E,N,9001,,4229,18074,1995-06-02 00:00:00,,EPSG,,
-23028,ED50 / UTM zone 28N,,,,Europe - 18deg West to 12deg West - Ireland offshore; United Kingdom (UKCS) offshore.,projected 2D,,,East,North,E,N,9001,,4230,16028,1995-06-02 00:00:00,,EPSG,,
-23029,ED50 / UTM zone 29N,,,,Europe - 12deg West to 6deg West - Portugal; Spain; Ireland offshore; United Kingdom (UKCS) offshore.,projected 2D,,,East,North,E,N,9001,,4230,16029,1995-06-02 00:00:00,,EPSG,,
-23030,ED50 / UTM zone 30N,,,,Europe - 6deg West to 0deg - Spain; France offshore; Ireland offshore; United Kingdom - UKCS offshore - North Sea west of 0 deg East).,projected 2D,,,East,North,E,N,9001,,4230,16030,1995-06-02 00:00:00,,EPSG,,
-23031,ED50 / UTM zone 31N,,,,Europe - 0deg to 6deg East - Denmark (North Sea); Germany offshore; Netherlands offshore; Norway; United Kingdom (UKCS) offshore.,projected 2D,,,East,North,E,N,9001,,4230,16031,1995-06-02 00:00:00,,EPSG,,
-23032,ED50 / UTM zone 32N,,,,Europe - 6deg East  to 12deg East - Denmark; Germany offshore; Netherlands offshore; Norway.,projected 2D,,,East,North,E,N,9001,,4230,16032,1995-06-02 00:00:00,,EPSG,,
-23033,ED50 / UTM zone 33N,,,,Europe - 12deg East  to 18deg East - Denmark including Bornholm; Norway.,projected 2D,,,East,North,E,N,9001,,4230,16033,1995-06-02 00:00:00,,EPSG,,
-23034,ED50 / UTM zone 34N,,,,Europe - 18deg East  to 24deg East - Greece; Norway.,projected 2D,,,East,North,E,N,9001,,4230,16034,1995-06-02 00:00:00,,EPSG,,
-23035,ED50 / UTM zone 35N,,,,Europe - 24deg East  to 30deg East - Greece; Norway; Turkey.,projected 2D,,,East,North,E,N,9001,,4230,16035,1995-06-02 00:00:00,,EPSG,,
-23036,ED50 / UTM zone 36N,,,,Europe - 30deg East  to 36deg East - Turkey.,projected 2D,,,East,North,E,N,9001,,4230,16036,1995-06-02 00:00:00,,EPSG,,
-23037,ED50 / UTM zone 37N,,,,Europe - 36deg East  to 42deg East - Turkey.,projected 2D,,,East,North,E,N,9001,,4230,16037,1995-06-02 00:00:00,,EPSG,,
-23038,ED50 / UTM zone 38N,,,,Europe - 42deg East  to 48deg East - Turkey.,projected 2D,,,East,North,E,N,9001,,4230,16038,1995-06-02 00:00:00,,EPSG,,
-23090,ED50 / TM 0 N,,,,United Kingdom (UKCS) - offshore North Sea.,projected 2D,,,East,North,E,N,9001,,4230,16400,1998-11-11 00:00:00,Shell UK,EPSG,Used by Shell UK for North Sea,
-23095,ED50 / TM 5 NE,,,,Netherlands - offshore North Sea.,projected 2D,,,East,North,E,N,9001,,4230,16405,1998-11-11 00:00:00,NAM,EPSG,Used by NAM,
-23239,Fahud / UTM zone 39N,,,,Oman - west of 54 deg East.,projected 2D,,,East,North,E,N,9001,,4232,16039,1995-06-02 00:00:00,,EPSG,Since 1993 superseded by PSD93 / UTM zone 39N projCS (code 3439). Maximum differences to Fahud adjustment are 20 metres.,
-23240,Fahud / UTM zone 40N,,,,Oman - east of 54 deg East.,projected 2D,,,East,North,E,N,9001,,4232,16040,1995-06-02 00:00:00,,EPSG,Since 1993 superseded by PSD93 / UTM zone 40N projCS (code 3440). Maximum differences to Fahud adjustment are 20 metres.,
-23433,Garoua / UTM zone 33N,,,,Cameroon.,projected 2D,,,East,North,E,N,9001,,4234,16033,1995-06-02 00:00:00,,EPSG,,
-23700,HD72 / EOV,,,,Hungary,projected 2D,,,East,North,Y,X,9001,,4237,19931,1997-07-22 00:00:00,,EPSG,,
-23846,ID74 / UTM zone 46N,,,,Indonesia - north of equator and west of 96 deg East.,projected 2D,,,East,North,E,N,9001,,4238,16046,1995-08-08 00:00:00,,EPSG,,95.193  95.20
-23847,ID74 / UTM zone 47N,,,,Indonesia - north of equator and between 96 deg and 102 deg East.,projected 2D,,,East,North,E,N,9001,,4238,16047,1995-07-21 00:00:00,,EPSG,,95.193
-23848,ID74 / UTM zone 48N,,,,Indonesia - north of equator and between 102 deg and 108 deg East.,projected 2D,,,East,North,E,N,9001,,4238,16048,1995-07-21 00:00:00,,EPSG,,95.193
-23849,ID74 / UTM zone 49N,,,,Indonesia - north of equator and between 108 deg and 114 deg East.,projected 2D,,,East,North,E,N,9001,,4238,16049,1995-07-21 00:00:00,,EPSG,,95.193
-23850,ID74 / UTM zone 50N,,,,Indonesia - north of equator and between 114 deg and 120 deg East.,projected 2D,,,East,North,E,N,9001,,4238,16050,1995-07-21 00:00:00,,EPSG,,95.193
-23851,ID74 / UTM zone 51N,,,,Indonesia - north of equator and between 120 deg and 126 deg East.,projected 2D,,,East,North,E,N,9001,,4238,16051,1995-07-21 00:00:00,,EPSG,,95.193
-23852,ID74 / UTM zone 52N,,,,Indonesia - north of equator and between 126 deg and 132 deg East.,projected 2D,,,East,North,E,N,9001,,4238,16052,1995-07-21 00:00:00,,EPSG,,95.193
-23853,ID74 / UTM zone 53N,,,,Indonesia - north of equator and east of 132 deg East.,projected 2D,,,East,North,E,N,9001,,4238,16053,1995-07-21 00:00:00,,EPSG,,95.193
-23886,ID74 / UTM zone 46S,,,,Indonesia - south of equator and west of 96 deg East.,projected 2D,,,East,North,E,N,9001,,4238,16146,1995-08-08 00:00:00,,EPSG,,95.193  95.20
-23887,ID74 / UTM zone 47S,,,,Indonesia - south of equator and between 96 deg and 102 deg East.,projected 2D,,,East,North,E,N,9001,,4238,16147,1995-07-21 00:00:00,,EPSG,,95.193
-23888,ID74 / UTM zone 48S,,,,Indonesia - south of equator and between 102 deg and 108 deg East.,projected 2D,,,East,North,E,N,9001,,4238,16148,1995-07-21 00:00:00,,EPSG,,95.193
-23889,ID74 / UTM zone 49S,,,,Indonesia - south of equator and between 108 deg and 114 deg East.,projected 2D,,,East,North,E,N,9001,,4238,16149,1995-07-21 00:00:00,,EPSG,,95.193
-23890,ID74 / UTM zone 50S,,,,Indonesia - south of equator and between 114 deg and 120 deg East.,projected 2D,,,East,North,E,N,9001,,4238,16150,1995-07-21 00:00:00,,EPSG,,95.193
-23891,ID74 / UTM zone 51S,,,,Indonesia - south of equator and between 120 deg and 126 deg East.,projected 2D,,,East,North,E,N,9001,,4238,16151,1995-07-21 00:00:00,,EPSG,,95.193
-23892,ID74 / UTM zone 52S,,,,Indonesia - south of equator and between 126 deg and 132 deg East.,projected 2D,,,East,North,E,N,9001,,4238,16152,1995-07-21 00:00:00,,EPSG,,95.193
-23893,ID74 / UTM zone 53S,,,,Indonesia - south of equator and between 132 deg and 138 deg East.,projected 2D,,,East,North,E,N,9001,,4238,16153,1995-07-21 00:00:00,,EPSG,,95.193
-23894,ID74 / UTM zone 54S,,,,Indonesia - south of equator and east of 138 deg East.,projected 2D,,,East,North,E,N,9001,,4238,16154,1995-07-21 00:00:00,,EPSG,,95.193
-23946,Indian 1954 / UTM zone 46N,Indian 1954 / UTM 46N,,,Myanmar (Burma) - west of 96 deg East.,projected 2D,,,East,North,E,N,9001,,4239,16046,1998-06-13 00:00:00,,EPSG,,
-23947,Indian 1954 / UTM zone 47N,Indian 1954 / UTM 47N,,,Myanmar (Burma) - east of 96 deg East; Thailand - west of 102 deg East.,projected 2D,,,East,North,E,N,9001,,4239,16047,1995-06-02 00:00:00,,EPSG,,
-23948,Indian 1954 / UTM zone 48N,Indian 1954 / UTM 48N,,,Thailand - east of 102 deg East.,projected 2D,,,East,North,E,N,9001,,4239,16048,1995-06-02 00:00:00,,EPSG,,
-24047,Indian 1975 / UTM zone 47N,Indian 1975 / UTM 47N,,,Thailand - west of 102 deg East.,projected 2D,,,East,North,E,N,9001,,4240,16047,1995-06-02 00:00:00,,EPSG,,
-24048,Indian 1975 / UTM zone 48N,Indian 1975 / UTM 48N,,,Thailand - east of 102 deg East.,projected 2D,,,East,North,E,N,9001,,4240,16048,1995-06-02 00:00:00,,EPSG,,
-24100,Jamaica 1875 / Jamaica (Old Grid),Jamaica 1875 / Old Grid,,,Jamaica.,projected 2D,,,East,North,E,N,9005,,4241,19909,1995-06-02 00:00:00,,EPSG,Superseded by 24200 (JAD69 / Jamaica National Grid).,
-24200,JAD69 / Jamaica National Grid,JAD69 / Jamaica Grid,,,Jamaica.,projected 2D,,,East,North,E,N,9001,,4242,19910,1995-06-02 00:00:00,,EPSG,Supersedes 24100 (JAD69 / Jamaica National Grid).,
-24305,Kalianpur 1937 / UTM zone 45N,Kalianpur 37 / UTM 45N,,,Bangladesh - west of 90deg East.,projected 2D,,,East,North,E,N,9001,,4144,16045,1999-10-20 00:00:00,,EPSG,,
-24306,Kalianpur 1937 / UTM zone 46N,Kalianpur 37 / UTM 46N,,,Bangladesh - east of 90deg East.,projected 2D,,,East,North,E,N,9001,,4144,16046,1999-10-20 00:00:00,,EPSG,,
-24311,Kalianpur 1962 / UTM zone 41N,Kalianpur 62 / UTM 41N,,,Pakistan - west of 66deg East.,projected 2D,,,East,North,E,N,9001,,4145,16041,1999-10-20 00:00:00,,EPSG,,
-24312,Kalianpur 1962 / UTM zone 42N,Kalianpur 62 / UTM 42N,,,Pakistan - between 66 and 72deg East.,projected 2D,,,East,North,E,N,9001,,4145,16042,1999-10-20 00:00:00,,EPSG,,
-24313,Kalianpur 1962 / UTM zone 43N,Kalianpur 62 / UTM 43N,,,Pakistan - east of 72deg East.,projected 2D,,,East,North,E,N,9001,,4145,16043,1999-10-20 00:00:00,,EPSG,,
-24342,Kalianpur 1975 / UTM zone 42N,Kalianpur 75 / UTM 42N,,,India - west of 72deg East.,projected 2D,,,East,North,E,N,9001,,4146,16042,1999-10-20 00:00:00,,EPSG,,
-24343,Kalianpur 1975 / UTM zone 43N,Kalianpur 75 / UTM 43N,,,India - between 72 and 78deg East.,projected 2D,,,East,North,E,N,9001,,4146,16043,1999-10-20 00:00:00,,EPSG,,
-24344,Kalianpur 1975 / UTM zone 44N,Kalianpur 75 / UTM 44N,,,India - between 78 and 84deg East.,projected 2D,,,East,North,E,N,9001,,4146,16044,1999-10-20 00:00:00,,EPSG,,
-24345,Kalianpur 1975 / UTM zone 45N,Kalianpur 75 / UTM 45N,,,India - between 84 and 90deg East.,projected 2D,,,East,North,E,N,9001,,4146,16045,1999-10-20 00:00:00,,EPSG,,
-24346,Kalianpur 1975 / UTM zone 46N,Kalianpur 75 / UTM 46N,,,India - between 90 and 96deg East.,projected 2D,,,East,North,E,N,9001,,4146,16046,1999-10-20 00:00:00,,EPSG,,
-24347,Kalianpur 1975 / UTM zone 47N,Kalianpur 75 / UTM 47N,,,India - east of 96deg East.,projected 2D,,,East,North,E,N,9001,,4146,16047,1999-10-20 00:00:00,,EPSG,,
-24370,Kalianpur 1880 / India zone 0,Kalianpur / India 0,,,Pakistan north of 35 deg 35 min North.,projected 2D,,,East,North,E,N,9084,,4243,18110,1999-10-20 00:00:00,,EPSG,,97.23
-24371,Kalianpur 1880 / India zone I,Kalianpur / India I,,,India north of 28 deg North; Pakistan 28 deg to 35 deg 35 min North.,projected 2D,,,East,North,E,N,9084,,4243,18111,1999-10-20 00:00:00,,EPSG,,97.23
-24372,Kalianpur 1880 / India zone IIa,Kalianpur / India IIa,,,India - between 21 deg and 28 deg North and  west of 82 deg East; Pakistan - south of 28 deg North.,projected 2D,,,East,North,E,N,9084,,4243,18112,1999-10-20 00:00:00,,EPSG,,97.23
-24373,Kalianpur 1880 / India zone III,Kalianpur / India III,,,India - between 15 deg and 21 deg North.,projected 2D,,,East,North,E,N,9084,,4243,18114,1999-10-20 00:00:00,,EPSG,,97.23
-24374,Kalianpur 1880 / India zone IV,Kalianpur / India IV,,,India - south of 15 deg North.,projected 2D,,,East,North,E,N,9084,,4243,18116,1999-10-20 00:00:00,,EPSG,,97.23
-24375,Kalianpur 1937 / India zone IIb,Kalianpur 37 / India IIb,,,Bangladesh.,projected 2D,,,East,North,E,N,9001,,4144,18238,1999-10-20 00:00:00,,EPSG,Used by Bangladesh since metrication.  Metric conversion applies A.R.Clarke's Indian foot-British foot ratio of 0.99999566 and Benoit's 1895 British inch-metre ratio of 39.370115 rounded as Ind ft = 0.30479841m exactly.,97.23
-24376,Kalianpur 1962 / India zone I,Kalianpur 62 / India I,,,Pakistan - north of 28deg North.,projected 2D,,,East,North,E,N,9001,,4145,18236,1999-10-20 00:00:00,,EPSG,Used by Pakistan since metrication.  Metric conversion applies A.R.Clarke's Indian foot-British foot ratio of 0.99999566 and J.S.Clark's 1865 British inch-metre ratio of 39.369971 rounded by G.Bomford with slight error as Ind ft = 0.3048996m exactly.,97.23
-24377,Kalianpur 1962 / India zone IIa,Kalianpur 62 / India IIa,,,Pakistan - south of 28deg North.,projected 2D,,,East,North,E,N,9001,,4145,18237,1999-10-20 00:00:00,,EPSG,Used by Pakistan since metrication.  Metric conversion applies A.R.Clarke's Indian foot-British foot ratio of 0.99999566 and J.S.Clark's 1865 British inch-metre ratio of 39.369971 rounded by G.Bomford with slight error as Ind ft = 0.3048996m exactly.,97.23
-24378,Kalianpur 1975 / India zone I,Kalianpur 75 / India I,,,India - north of 28deg North and west of 82deg East.,projected 2D,,,East,North,E,N,9001,,4146,18231,1999-10-20 00:00:00,,EPSG,Used by India since metrication.  Metric conversion applies A.R.Clarke's Indian foot-British foot ratio of 0.99999566 and J.S.Clark's 1865 British inch-metre ratio of 39.369971 rounded as 1 Ind ft = 0.3048995m exactly.,97.23
-24379,Kalianpur 1975 / India zone IIa,Kalianpur 75 / India IIa,,,India - between 28deg and 21deg North and west of 82deg East.,projected 2D,,,East,North,E,N,9001,,4146,18232,1999-10-20 00:00:00,,EPSG,Used by India since metrication.  Metric conversion applies A.R.Clarke's Indian foot-British foot ratio of 0.99999566 and J.S.Clark's 1865 British inch-metre ratio of 39.369971 rounded as 1 Ind ft = 0.3048995m exactly.,97.23
-24380,Kalianpur 1975 / India zone IIb,Kalianpur 75 / India IIb,,,India - north of 21deg North and east of 82deg East.,projected 2D,,,East,North,E,N,9001,,4146,18235,1999-10-20 00:00:00,,EPSG,Used by India since metrication.  Metric conversion applies A.R.Clarke's Indian foot-British foot ratio of 0.99999566 and J.S.Clark's 1865 British inch-metre ratio of 39.369971 rounded as 1 Ind ft = 0.3048995m exactly.,97.23
-24381,Kalianpur 1975 / India zone III,Kalianpur 75 / India III,,,India - between 21deg and 15deg North.,projected 2D,,,East,North,E,N,9001,,4146,18233,1999-10-20 00:00:00,,EPSG,Used by India since metrication.  Metric conversion applies A.R.Clarke's Indian foot-British foot ratio of 0.99999566 and J.S.Clark's 1865 British inch-metre ratio of 39.369971 rounded as 1 Ind ft = 0.3048995m exactly.,97.23
-24382,Kalianpur 1880 / India zone IIb,Kalianpur / India IIb,,,Bangladesh; India - north of 22 deg North and east of 82 deg East; Myanmar (Burma) - north of 22 deg North.,projected 2D,,,East,North,E,N,9084,,4243,18113,1999-10-20 00:00:00,,EPSG,,97.23
-24383,Kalianpur 1975 / India zone IV,Kalianpur 75 / India IV,,,India - south of 21deg North.,projected 2D,,,East,North,E,N,9001,,4146,18234,1999-10-20 00:00:00,,EPSG,Used by India since metrication.  Metric conversion applies A.R.Clarke's Indian foot-British foot ratio of 0.99999566 and J.S.Clark's 1865 British inch-metre ratio of 39.369971 rounded as 1 Ind ft = 0.3048995m exactly.,97.23
-24500,Kertau / Singapore Grid,,,,Singapore.,projected 2D,,,East,North,E,N,9001,,4245,19920,1995-06-02 00:00:00,,EPSG,,
-24547,Kertau / UTM zone 47N,,,,Malaysia - West Malaysia west of 102 deg East.,projected 2D,,,East,North,E,N,9001,,4245,16047,1995-06-02 00:00:00,,EPSG,,
-24548,Kertau / UTM zone 48N,,,,Malaysia - West Malaysia east of 102 deg East.,projected 2D,,,East,North,E,N,9001,,4245,16048,1995-07-21 00:00:00,,EPSG,,95.192
-24571,Kertau / R.S.O. Malaya (ch),,,,Malaysia - West Malaysia,projected 2D,,,East,North,E,N,9062,,4245,19935,1999-10-20 00:00:00,,EPSG,Adopts metric conversion of 39.370113 inches per metre.,97.231
-24600,KOC Lambert,,,,Kuwait.,projected 2D,,,East,North,E,N,9001,,4246,19906,1996-04-12 00:00:00,,EPSG,,
-24718,La Canoa / UTM zone 18N,,,,Venezuela - west of 72 deg West.,projected 2D,,,East,North,E,N,9001,,4247,16018,1999-10-20 00:00:00,,EPSG,Sometimes referred to as PSAD56 / UTM zone 18N.,
-24719,La Canoa / UTM zone 19N,,,,Venezuela - between 72 and 66 deg West.,projected 2D,,,East,North,E,N,9001,,4247,16019,1999-10-20 00:00:00,,EPSG,Sometimes referred to as PSAD56 / UTM zone 19N.,
-24720,La Canoa / UTM zone 20N,,,,Venezuela - east of 66 deg West.,projected 2D,,,East,North,E,N,9001,,4247,16020,1995-06-02 00:00:00,,EPSG,Sometimes referred to as PSAD56 / UTM zone 20N.,
-24818,PSAD56 / UTM zone 18N,,,,South America (Ecuador;  [Venezuela]) 78deg West to 72deg West.,projected 2D,,,East,North,E,N,9001,,4248,16018,1995-06-02 00:00:00,,EPSG,In Venezuela also known as La Canoa / UTM zone 18N.,
-24819,PSAD56 / UTM zone 19N,,,,South America (Netherlands Antilles; [Venezuela]) 72deg West  to 66deg West.,projected 2D,,,East,North,E,N,9001,,4248,16019,1995-06-02 00:00:00,,EPSG,In Venezuela also known as La Canoa / UTM zone 19N.,
-24820,PSAD56 / UTM zone 20N,,,,South America (Guyana; [Venezuela]) 66deg West  to 60deg West.,projected 2D,,,East,North,E,N,9001,,4248,16020,1995-06-02 00:00:00,,EPSG,In Venezuela also known as La Canoa / UTM zone 20N.,
-24821,PSAD56 / UTM zone 21N,,,,South America (Guyana; Suriname) 60deg West  to 54deg West.,projected 2D,,,East,North,E,N,9001,,4248,16021,1995-06-02 00:00:00,,EPSG,,
-24877,PSAD56 / UTM zone 17S,,,,South America (Chile; Ecuador; Peru) 84deg West  to 78deg West.,projected 2D,,,East,North,E,N,9001,,4248,16117,1995-06-02 00:00:00,,EPSG,,
-24878,PSAD56 / UTM zone 18S,,,,South America (Chile; Ecuador; Peru) 78deg West  to 72deg West.,projected 2D,,,East,North,E,N,9001,,4248,16118,1995-06-02 00:00:00,,EPSG,,
-24879,PSAD56 / UTM zone 19S,,,,South America (Bolivia; Chile; Peru) 72deg West  to 66deg West.,projected 2D,,,East,North,E,N,9001,,4248,16119,1995-06-02 00:00:00,,EPSG,,
-24880,PSAD56 / UTM zone 20S,,,,South America (Bolivia) 66deg West  to 60deg West.,projected 2D,,,East,North,E,N,9001,,4248,16120,1995-06-02 00:00:00,,EPSG,,
-24882,PSAD56 / UTM zone 22S,,,,Brazil - offshore Amazon Cone,projected 2D,,,East,North,E,N,9001,,4248,16122,1999-04-22 00:00:00,,EPSG,,
-24891,PSAD56 / Peru west zone,,,,Peru west of 79 deg West.,projected 2D,,,East,North,X,Y,9001,,4248,18161,1995-06-02 00:00:00,,EPSG,,
-24892,PSAD56 / Peru central zone,PSAD56 / Peru central,,,Peru 79 to 73 deg West.,projected 2D,,,East,North,X,Y,9001,,4248,18162,1995-06-02 00:00:00,,EPSG,,
-24893,PSAD56 / Peru east zone,,,,Peru east of 73 deg West.,projected 2D,,,East,North,X,Y,9001,,4248,18163,1995-06-02 00:00:00,,EPSG,,
-25000,Leigon / Ghana Metre Grid,Leigon / Ghana Grid,,,Ghana.,projected 2D,,,East,North,E,N,9001,,4250,19904,1995-06-02 00:00:00,,EPSG,,
-25231,Lome / UTM zone 31N,,,,Togo.,projected 2D,,,East,North,E,N,9001,,4252,16031,1995-06-02 00:00:00,,EPSG,,
-25391,Luzon 1911 / Philippines zone I,Luzon / Philippines I,,,Philippines - west of 118 deg East.,projected 2D,,,East,North,X,Y,9001,,4253,18171,1995-06-02 00:00:00,,EPSG,,
-25392,Luzon 1911 / Philippines zone II,Luzon / Philippines II,,,Philippines - Palawan; Calamian Islands.,projected 2D,,,East,North,X,Y,9001,,4253,18172,1995-06-02 00:00:00,,EPSG,,
-25393,Luzon 1911 / Philippines zone III,Luzon / Philippines III,,,Philippines - Luzon (except SE part;); Mindoro.,projected 2D,,,East,North,X,Y,9001,,4253,18173,1995-06-02 00:00:00,,EPSG,,
-25394,Luzon 1911 / Philippines zone IV,Luzon / Philippines IV,,,Philippines - SE Luzon; Tablas; Masbate; Panay; Cebu; Negros; west Mindanao.,projected 2D,,,East,North,X,Y,9001,,4253,18174,1995-06-02 00:00:00,,EPSG,,
-25395,Luzon 1911 / Philippines zone V,Luzon / Philippines V,,,Philippines - east Mindanao; Bohol; Samar.,projected 2D,,,East,North,X,Y,9001,,4253,18175,1995-06-02 00:00:00,,EPSG,,
-25700,Makassar (Jakarta) / NEIEZ,Makassar / NEIEZ,,,Indonesia - south west Sulawesi.,projected 2D,,,East,North,X,Y,9001,,4804,19905,1995-06-02 00:00:00,,EPSG,,
-25828,ETRF89 / UTM zone 28N,,,,Europe - 18deg West to 12deg West - United Kingdom (UKCS) offshore.,projected 2D,,,East,North,E,N,9001,,4258,16028,1999-04-22 00:00:00,,EPSG,,99.11
-25829,ETRF89 / UTM zone 29N,,,,Europe - 12deg West to 6deg West - United Kingdom (UKCS) offshore.,projected 2D,,,East,North,E,N,9001,,4258,16029,1999-04-22 00:00:00,,EPSG,,99.11
-25830,ETRF89 / UTM zone 30N,,,,Europe - 6deg West to 0deg.,projected 2D,,,East,North,E,N,9001,,4258,16030,1999-04-22 00:00:00,,EPSG,,99.11
-25831,ETRF89 / UTM zone 31N,,,,Europe - 0deg to 6deg East - Norway.,projected 2D,,,East,North,E,N,9001,,4258,16031,1999-04-22 00:00:00,,EPSG,,99.11
-25832,ETRF89 / UTM zone 32N,,,,Europe - 6deg East  to 12deg East - Norway.,projected 2D,,,East,North,E,N,9001,,4258,16032,1999-04-22 00:00:00,,EPSG,,99.11
-25833,ETRF89 / UTM zone 33N,,,,Europe - 12deg East  to 18deg East - Norway.,projected 2D,,,East,North,E,N,9001,,4258,16033,1999-04-22 00:00:00,,EPSG,,99.11
-25834,ETRF89 / UTM zone 34N,,,,Europe - 18deg East  to 24deg East - Norway.,projected 2D,,,East,North,E,N,9001,,4258,16034,1999-04-22 00:00:00,,EPSG,,99.11
-25835,ETRF89 / UTM zone 35N,,,,Europe - 24deg East  to 30deg East - Norway.,projected 2D,,,East,North,E,N,9001,,4258,16035,1999-04-22 00:00:00,,EPSG,,99.11
-25836,ETRF89 / UTM zone 36N,,,,Europe - 30deg East  to 36deg East.,projected 2D,,,East,North,E,N,9001,,4258,16036,1999-04-22 00:00:00,,EPSG,,99.11
-25837,ETRF89 / UTM zone 37N,,,,Europe - 36deg East  to 42deg East.,projected 2D,,,East,North,E,N,9001,,4258,16037,1999-04-22 00:00:00,,EPSG,,99.11
-25838,ETRF89 / UTM zone 38N,,,,Europe - 42deg East  to 48deg East.,projected 2D,,,East,North,E,N,9001,,4258,16038,1999-04-22 00:00:00,,EPSG,,99.11
-25884,ETRF89 / TM Baltic93,,,,Estonia;  Latvia;  Lithuania.,projected 2D,,,North,East,X,Y,9001,,4258,19939,1999-04-22 00:00:00,http://www.geo.ut.ee/~raivo/estcoord.html,EPSG,Used as a common coordinate system for the Baltic states and for medium and small scale mapping in Estonia since 1993.,99.11
-25932,Malongo 1987 / UTM zone 32S,Malongo 1987 / UTM 32S,,,Angola - Cabinda.,projected 2D,,,East,North,E,N,9001,,4259,16132,1995-06-02 00:00:00,,EPSG,,
-26191,Merchich / Nord Maroc,,,,Morocco north of 35 grads (31 deg 30 min) North.,projected 2D,,,East,North,X,Y,9001,,4261,18131,1995-06-02 00:00:00,,EPSG,,
-26192,Merchich / Sud Maroc,,,,Morocco 31grads to 35grads  (27 deg 54 min to 31 deg 30 min) North.,projected 2D,,,East,North,X,Y,9001,,4261,18132,1995-06-02 00:00:00,,EPSG,,
-26193,Merchich / Sahara,,,,Morocco south of 31grads  (27 deg 54 min) North.,projected 2D,,,East,North,X,Y,9001,,4261,18133,1995-06-02 00:00:00,,EPSG,,
-26237,Massawa / UTM zone 37N,,,,Eritrea.,projected 2D,,,East,North,E,N,9001,,4262,16037,1995-06-02 00:00:00,,EPSG,,
-26331,Minna / UTM zone 31N,,,,Nigeria - offshore beyond continental shelf west of 6 deg East.,projected 2D,,,East,North,E,N,9001,,4263,16031,1995-06-02 00:00:00,,EPSG,,
-26332,Minna / UTM zone 32N,,,,Nigeria - offshore beyond continental shelf.,projected 2D,,,East,North,E,N,9001,,4263,16032,1995-06-02 00:00:00,,EPSG,,
-26391,Minna / Nigeria West Belt,Minna / Nigeria West,,,Nigeria west of 6 deg 30 min East.,projected 2D,,,East,North,E,N,9001,,4263,18151,1995-06-02 00:00:00,,EPSG,,
-26392,Minna / Nigeria Mid Belt,,,,Nigeria between 6 deg 30 min and 10 deg 30 min East.,projected 2D,,,East,North,E,N,9001,,4263,18152,1995-06-02 00:00:00,,EPSG,,
-26393,Minna / Nigeria East Belt,Minna / Nigeria East,,,Nigeria east of 10 deg 30 min East.,projected 2D,,,East,North,E,N,9001,,4263,18153,1995-06-02 00:00:00,,EPSG,,
-26432,Mhast / UTM zone 32S,,,,Angola - Cabinda.,projected 2D,,,East,North,E,N,9001,,4264,16132,1995-06-02 00:00:00,,EPSG,,
-26591,Monte Mario (Rome) / Italy zone 1,Monte Mario / Italy 1,,,Italy west of 12 deg East.,projected 2D,,,East,North,X,Y,9001,,4806,18121,1995-06-02 00:00:00,,EPSG,,
-26592,Monte Mario (Rome) / Italy zone 2,Monte Mario / Italy 2,,,Italy east of 12 deg East.,projected 2D,,,East,North,X,Y,9001,,4806,18122,1995-06-02 00:00:00,,EPSG,,
-26632,M'poraloko / UTM zone 32N,M'poraloko / UTM 32N,,,Gabon - north of equator.,projected 2D,,,East,North,E,N,9001,,4266,16032,1995-06-02 00:00:00,,EPSG,,
-26692,M'poraloko / UTM zone 32S,M'poraloko / UTM 32S,,,Gabon - south of equator.,projected 2D,,,East,North,E,N,9001,,4266,16132,1995-06-02 00:00:00,,EPSG,,
-26703,NAD27 / UTM zone 3N,,,,North America - United States (USA) - Alaska - 168deg West  to 162deg West.,projected 2D,,,East,North,E,N,9001,,4267,16003,1995-06-02 00:00:00,,EPSG,,
-26704,NAD27 / UTM zone 4N,,,,North America - United States (USA) - Alaska - 162deg West  to 156deg West.,projected 2D,,,East,North,E,N,9001,,4267,16004,1995-06-02 00:00:00,,EPSG,,
-26705,NAD27 / UTM zone 5N,,,,North America - United States (USA) - Alaska - 156deg West  to 150deg West.,projected 2D,,,East,North,E,N,9001,,4267,16005,1995-06-02 00:00:00,,EPSG,,
-26706,NAD27 / UTM zone 6N,,,,North America - United States (USA) - Alaska - 150deg West  to 144deg West.,projected 2D,,,East,North,E,N,9001,,4267,16006,1995-06-02 00:00:00,,EPSG,,
-26707,NAD27 / UTM zone 7N,,,,North America - Canada; United States (USA) - Alaska - 144deg West  to 138deg West.,projected 2D,,,East,North,E,N,9001,,4267,16007,1995-06-02 00:00:00,,EPSG,,
-26708,NAD27 / UTM zone 8N,,,,North America - Canada; United States (USA) - 138deg West  to 132deg West.,projected 2D,,,East,North,E,N,9001,,4267,16008,1995-06-02 00:00:00,,EPSG,,
-26709,NAD27 / UTM zone 9N,,,,North America - Canada; United States (USA) - 132deg West  to 126deg West.,projected 2D,,,East,North,E,N,9001,,4267,16009,1995-06-02 00:00:00,,EPSG,,
-26710,NAD27 / UTM zone 10N,,,,North America - Canada; United States (USA) - 130deg West  to 120deg West.,projected 2D,,,East,North,E,N,9001,,4267,16010,1995-06-02 00:00:00,,EPSG,,
-26711,NAD27 / UTM zone 11N,,,,North America - Canada; Mexico; United States (USA) - 120deg West  to 114deg West.,projected 2D,,,East,North,E,N,9001,,4267,16011,1995-06-02 00:00:00,,EPSG,,
-26712,NAD27 / UTM zone 12N,,,,North America - Canada; Mexico; United States (USA) - 114deg West  to 108deg West.,projected 2D,,,East,North,E,N,9001,,4267,16012,1995-06-02 00:00:00,,EPSG,,
-26713,NAD27 / UTM zone 13N,,,,North America - Canada; Mexico; United States (USA) - 108deg West  to 102deg West.,projected 2D,,,East,North,E,N,9001,,4267,16013,1995-06-02 00:00:00,,EPSG,,
-26714,NAD27 / UTM zone 14N,,,,North America - Canada; Mexico; United States (USA) - 102deg West  to 96deg West.,projected 2D,,,East,North,E,N,9001,,4267,16014,1995-06-02 00:00:00,,EPSG,,
-26715,NAD27 / UTM zone 15N,,,,North America - Canada; Mexico; United States (USA) - 96deg West  to 90deg West.,projected 2D,,,East,North,E,N,9001,,4267,16015,1995-06-02 00:00:00,,EPSG,In Ontario superseded by NAD27(76) / UTM zone 15N (code 227).,
-26716,NAD27 / UTM zone 16N,,,,North America - Canada; Mexico; United States (USA) - 90deg West  to 84deg West.,projected 2D,,,East,North,E,N,9001,,4267,16016,1995-06-02 00:00:00,,EPSG,In Ontario superseded by NAD27(76) / UTM zone 16N (code 228).,
-26717,NAD27 / UTM zone 17N,,,,North America - Canada; Mexico; United States (USA) - 84deg West  to 78deg West.,projected 2D,,,East,North,E,N,9001,,4267,16017,1995-06-02 00:00:00,,EPSG,In Ontario superseded by NAD27(76) / UTM zone 17N (code 229).  In Quebec superseded by NAD27(CGQ77) / UTM zone 17N (code 231).,
-26718,NAD27 / UTM zone 18N,,,,North America - Canada; United States (USA) - 78deg West  to 72deg West.,projected 2D,,,East,North,E,N,9001,,4267,16018,1995-06-02 00:00:00,,EPSG,In Ontario superseded by NAD27(76) / UTM zone 18N (code 230).  In Quebec superseded by NAD27(CGQ77) / UTM zone 18N (code 232).,
-26719,NAD27 / UTM zone 19N,,,,North America - Canada; United States (USA) - 72deg West  to 66deg West.,projected 2D,,,East,North,E,N,9001,,4267,16019,1995-06-02 00:00:00,,EPSG,In Quebec superseded by NAD27(CGQ77) / UTM zone 19N (code 233).,
-26720,NAD27 / UTM zone 20N,,,,North America - Antigua and Barbuda - Barbuda.  British Virgin Islands (military).  Canada; United States (USA) offshore Atlantic - 66deg West  to 60deg West.,projected 2D,,,East,North,E,N,9001,,4267,16020,1995-06-02 00:00:00,,EPSG,In Quebec superseded by NAD27(CGQ77) / UTM zone 20N (code 234).,
-26721,NAD27 / UTM zone 21N,,,,North America - Canada - 60deg West  to 54deg West.,projected 2D,,,East,North,E,N,9001,,4267,16021,1995-06-02 00:00:00,,EPSG,In Quebec superseded by NAD27(CGQ77) / UTM zone 21N (code 235).,
-26722,NAD27 / UTM zone 22N,,,,North America - Canada - 54deg West  to 48deg West.,projected 2D,,,East,North,E,N,9001,,4267,16022,1995-06-02 00:00:00,,EPSG,,
-26729,NAD27 / Alabama East,,,,United States (USA) - Alabama - AL_E - counties east of approx 86d 37m West - Barbour; Bullock; Calhoun; Chambers; Cherokee; Clay; Cleburne; Coffee; Coosa; Covington; Crenshaw; Dale; De Kalb; Elmore; Etowah; Geneva; Henry; Houston; Jackson; Lee; Macon; Madison; Marshall; Montgomery; Pike; Randolph; Russell; St.Clair; Talladega; Tallapoosa,projected 2D,,,East,North,X,Y,9003,,4267,10101,1995-06-02 00:00:00,,EPSG,,
-26730,NAD27 / Alabama West,,,,United States (USA) - Alabama - AL_W - counties west of approx 86d 37m West - Autauga; Baldwin; Bibb; Blount; Butler; Chilton; Choctaw; Clarke; Colbert; Conecuh; Cullman; Dallas; Escambia; Fayette; Franklin; Greene; Hale; Jefferson; Lamar; Lauderdale; Lawrence; Limestone; Lowndes; Marengo; Marion; Mobile; Monroe; Morgan; Perry; Pickens; Shelby; Sumter; Tuscaloosa; Walker; Washington; Wilcox; Winston,projected 2D,,,East,North,X,Y,9003,,4267,10102,1995-06-02 0 [...]
-26731,NAD27 / Alaska zone 1,,,,United States - Alaska - Panhandle.,projected 2D,,,East,North,X,Y,9003,,4267,15001,1995-06-02 00:00:00,,EPSG,,
-26732,NAD27 / Alaska zone 2,,,,United States - Alaska - 141deg to 144deg West.,projected 2D,,,East,North,X,Y,9003,,4267,15002,1995-06-02 00:00:00,,EPSG,,
-26733,NAD27 / Alaska zone 3,,,,United States - Alaska - 144deg to 148deg West.,projected 2D,,,East,North,X,Y,9003,,4267,15003,1995-06-02 00:00:00,,EPSG,,
-26734,NAD27 / Alaska zone 4,,,,United States - Alaska - 148deg to 152deg West.,projected 2D,,,East,North,X,Y,9003,,4267,15004,1995-06-02 00:00:00,,EPSG,,
-26735,NAD27 / Alaska zone 5,,,,United States - Alaska - 152deg to 156deg West.,projected 2D,,,East,North,X,Y,9003,,4267,15005,1995-06-02 00:00:00,,EPSG,,
-26736,NAD27 / Alaska zone 6,,,,United States - Alaska - 156deg to 160deg West.,projected 2D,,,East,North,X,Y,9003,,4267,15006,1995-06-02 00:00:00,,EPSG,,
-26737,NAD27 / Alaska zone 7,,,,United States - Alaska - 160deg to 164deg West.,projected 2D,,,East,North,X,Y,9003,,4267,15007,1995-06-02 00:00:00,,EPSG,,
-26738,NAD27 / Alaska zone 8,,,,United States - Alaska - 164deg to 168deg West; north of 54d 30m North.,projected 2D,,,East,North,X,Y,9003,,4267,15008,1995-06-02 00:00:00,,EPSG,,
-26739,NAD27 / Alaska zone 9,,,,United States - Alaska - West of 168deg West and north of 54d 30m North.,projected 2D,,,East,North,X,Y,9003,,4267,15009,1995-06-02 00:00:00,,EPSG,,
-26740,NAD27 / Alaska zone 10,,,,United States - Alaska - Aleutian Islands.,projected 2D,,,East,North,X,Y,9003,,4267,15010,1995-06-02 00:00:00,,EPSG,,
-26741,NAD27 / California zone I,NAD27 / California I,,,United States (USA) - California - CA_1 - counties north of approx 40 deg North - Del Norte; Humboldt; Lassen; Modoc; Plumas; Shasta; Siskiyou; Tehama; Trinity,projected 2D,,,East,North,X,Y,9003,,4267,10401,1995-06-02 00:00:00,,EPSG,,
-26742,NAD27 / California zone II,NAD27 / California II,,,United States (USA) - California - CA_2 - counties between approx 40 deg & 38d 15m North - Alpine; Amador; Butte; Colusa; El Dorado; Glenn; Lake; Mendocino; Napa; Nevada; Placer; Sacramento; Sierra; Solano; Sonoma; Sutter; Yolo; Yuba,projected 2D,,,East,North,X,Y,9003,,4267,10402,1995-06-02 00:00:00,,EPSG,,
-26743,NAD27 / California zone III,NAD27 / California III,,,United States (USA) - California - CA_3 - counties between approx 38d 15m & 37d North - Alameda; Calaveras; Contra Costa; Madera; Marin; Mariposa; Merced; Mono; San Francisco; San Joaquin; San Mateo; Santa Clara; Santa Cruz; Stanislaus; Tuolumne,projected 2D,,,East,North,X,Y,9003,,4267,10403,1995-06-02 00:00:00,,EPSG,,
-26744,NAD27 / California zone IV,NAD27 / California IV,,,United States (USA) - California - CA_4 - counties between approx 37d & 35d 30m North - Fresno; Inyo; Kings; Monterey; San Benito; Tulare,projected 2D,,,East,North,X,Y,9003,,4267,10404,1995-06-02 00:00:00,,EPSG,,
-26745,NAD27 / California zone V,NAD27 / California V,,,United States (USA) - California - CA_5 - counties between approx 35d 50m & 34d North - Kern; San Bernardino; San Luis Obispo; Santa Barbara; Ventura,projected 2D,,,East,North,X,Y,9003,,4267,10405,1995-06-02 00:00:00,,EPSG,,
-26746,NAD27 / California zone VI,NAD27 / California VI,,,United States (USA) - California - CA_6 - counties south of approx 38d 30m North - Imperial; Orange; Riverside; San Diego,projected 2D,,,East,North,X,Y,9003,,4267,10406,1995-06-02 00:00:00,,EPSG,,
-26747,NAD27 / California zone VII,NAD27 / California VII,,,United States - California - Los Angeles.,projected 2D,,,East,North,X,Y,9003,,4267,10407,1995-06-02 00:00:00,,EPSG,,
-26748,NAD27 / Arizona East,,,,United States (USA) - Arizona - AZ_E - counties east of approx 110d 45m West - Apache; Cochise; Gila; Graham; Greenlee; Navajo,projected 2D,,,East,North,X,Y,9003,,4267,10201,1995-08-22 00:00:00,,EPSG,,95.25
-26749,NAD27 / Arizona Central,,,,United States (USA) - Arizona - AZ_C - counties between approx 110d 45m and 113d 20m West - Coconino; Maricopa; Pima; Pinal; Santa Cruz; Yavapai,projected 2D,,,East,North,X,Y,9003,,4267,10202,1995-08-22 00:00:00,,EPSG,,95.25
-26750,NAD27 / Arizona West,,,,United States (USA) - Arizona - AZ_W - counties west of approx 113d 20m West - La Paz; Mohave; Yuma,projected 2D,,,East,North,X,Y,9003,,4267,10203,1995-08-22 00:00:00,,EPSG,,95.25
-26751,NAD27 / Arkansas North,,,,United States (USA) - Arkansas - AR_N - counties north of approx 34d 50m North - Baxter; Benton; Boone; Carroll; Clay; Cleburne; Conway; Craighead; Crawford; Crittenden; Cross; Faulkner; Franklin; Fulton; Greene; Independence; Izard; Jackson; Johnson; Lawrence; Logan; Madison; Marion; Mississippi; Newton; Perry; Poinsett; Pope; Randolph; Scott; Searcy; Sebastian; Sharp; St. Francis; Stone; Van Buren; Washington; White; Woodruff; Yell,projected 2D,,,East,No [...]
-26752,NAD27 / Arkansas South,,,,United States (USA) - Arkansas - AR_S - counties south of approx 34d 50m North - Arkansas; Ashley; Bradley; Calhoun; Chicot; Clark; Cleveland; Columbia; Dallas; Desha; Drew; Garland; Grant; Hempstead; Hot Spring; Howard; Jefferson; Lafayette; Lee; Lincoln; Little River; Lonoke; Miller; Monroe; Montgomery; Nevada; Ouachita; Phillips; Pike; Polk; Prairie; Pulaski; Saline; Sevier; Union,projected 2D,,,East,North,X,Y,9003,,4267,10302,1995-06-02 00:00:00,,EPSG,,
-26753,NAD27 / Colorado North,,,,United States (USA) - Colorado - CO_N - counties north of approx 39d 50m North - Adams; Boulder; Gilpin; Grand; Jackson; Larimer; Logan; Moffat; Morgan; Phillips; Rio Blanco; Routt; Sedgwick; Washington; Weld; Yuma,projected 2D,,,East,North,X,Y,9003,,4267,10501,1995-06-02 00:00:00,,EPSG,,
-26754,NAD27 / Colorado Central,,,,United States (USA) - Colorado - CO_C - counties between approx 39d 50m & 38d 30m North - Arapahoe; Chaffee; Cheyenne; Clear Creek; Delta; Denver; Douglas; Eagle; El Paso; Elbert; Fremont; Garfield; Gunnison; Jefferson; Kit Carson; Lake; Lincoln; Mesa; Park; Pitkin; Summit; Teller,projected 2D,,,East,North,X,Y,9003,,4267,10502,1995-06-02 00:00:00,,EPSG,,
-26755,NAD27 / Colorado South,,,,United States (USA) - Colorado - CO_S - counties south of approx 38d 30m North - Alamosa; Archuleta; Baca; Bent; Conejos; Costilla; Crowley; Custer; Dolores; Hinsdale; Huerfano; Kiowa; La Plata; Las Animas; Mineral; Montezuma; Montrose; Otero; Ouray; Prowers; Pueblo; Rio Grande; Saguache; San Juan; San Miguel,projected 2D,,,East,North,X,Y,9003,,4267,10503,1995-06-02 00:00:00,,EPSG,,
-26756,NAD27 / Connecticut,,,,United States (USA) - Connecticut - CT - counties of Fairfield; Hartford; Litchfield; Middlesex; New Haven; New London; Tolland; Windham,projected 2D,,,East,North,X,Y,9003,,4267,10600,1995-06-02 00:00:00,,EPSG,,
-26757,NAD27 / Delaware,,,,United States (USA) - Delaware - DE - counties of Kent; New Castle; Sussex,projected 2D,,,East,North,X,Y,9003,,4267,10700,1995-06-02 00:00:00,,EPSG,,
-26758,NAD27 / Florida East,,,,United States (USA) - Florida - FL_E - counties of Brevard; Broward; Clay; Collier; Dade; Duval; Flagler; Glades; Hendry; Highlands; Indian River; Lake; Martin; Monroe; Nassau; Okeechobee; Orange; Osceola; Palm Beach; Putnam; Seminole; St. Johns; St. Lucie; Volusia,projected 2D,,,East,North,X,Y,9003,,4267,10901,1995-06-02 00:00:00,,EPSG,,
-26759,NAD27 / Florida West,,,,United States (USA) - Florida - FL_W - counties of Charlotte; Citrus; De Soto; Hardee; Hernando; Hillsborough; Lee; Levy; Manatee; Marion; Pasco; Pinellas; Polk; Sarasota; Sumter,projected 2D,,,East,North,X,Y,9003,,4267,10902,1995-06-02 00:00:00,,EPSG,,
-26760,NAD27 / Florida North,,,,United States (USA) - Florida - FL_N - counties of Alachua; Baker; Bay; Bradford; Calhoun; Columbia; Dixie; Escambia; Escambia; Franklin; Gadsden; Gilchrist; Gulf; Hamilton; Holmes; Jackson; Jefferson; Lafayette; Leon; Liberty; Madison; Okaloosa; Santa Rosa; Suwannee; Taylor; Union; Wakulla; Walton; Washington,projected 2D,,,East,North,X,Y,9003,,4267,10903,1995-06-02 00:00:00,,EPSG,,
-26766,NAD27 / Georgia East,,,,United States (USA) - Georgia - GA_E - counties of Appling; Atkinson; Bacon; Baldwin; Brantley; Bryan; Bulloch; Burke; Camden; Candler; Charlton; Chatham; Clinch; Coffee; Columbia; Dodge; Echols; Effingham; Elbert; Emanuel; Evans; Franklin; Glascock; Glynn; Greene; Hancock; Hart; Jeff Davis; Jefferson; Jenkins; Johnson; Lanier; Laurens; Liberty; Lincoln; Long; Madison; McDuffie; McIntosh; Montgomery; Oglethorpe; Pierce; Richmond; Screven; Stephens; Taliaferr [...]
-26767,NAD27 / Georgia West,,,,United States (USA) - Georgia - GA_W - counties of Baker; Banks; Barrow; Bartow; Ben Hill; Berrien; Bibb; Bleckley; Brooks; Butts; Calhoun; Carroll; Catoosa; Chattahoochee; Chattooga; Cherokee; Clarke; Clay; Clayton; Cobb; Colquitt; Cook; Coweta; Crawford; Crisp; Dade; Dawson; De Kalb; Decatur; Dooly; Dougherty; Douglas; Early; Fannin; Fayette; Floyd; Forsyth; Fulton; Gilmer; Gordon; Grady; Gwinnett; Habersham; Hall; Haralson; Harris; Heard; Henry; Houston;  [...]
-26768,NAD27 / Idaho East,,,,United States (USA) - Idaho - ID_E - counties of Bannock; Bear Lake; Bingham; Bonneville; Caribou; Clark; Franklin; Fremont; Jefferson; Madison; Oneida; Power; Teton,projected 2D,,,East,North,X,Y,9003,,4267,11101,1995-06-02 00:00:00,,EPSG,,
-26769,NAD27 / Idaho Central,,,,United States (USA) - daho - ID_C - counties of Blaine; Butte; Camas; Cassia; Custer; Gooding; Jerome; Lemhi; Lincoln; Minidoka; Twin Falls,projected 2D,,,East,North,X,Y,9003,,4267,11102,1995-06-02 00:00:00,,EPSG,,
-26770,NAD27 / Idaho West,,,,United States (USA) - Idaho - ID_W - counties of Ada; Adams; Benewah; Boise; Bonner; Boundary; Canyon; Clearwater; Elmore; Gem; Idaho; Kootenai; Latah; Lewis; Nez Perce; Owyhee; Payette; Shoshone; Valley; Washington,projected 2D,,,East,North,X,Y,9003,,4267,11103,1995-06-02 00:00:00,,EPSG,,
-26771,NAD27 / Illinois East,,,,United States (USA) - Illinois - IL_E - counties of Boone; Champaign; Clark; Clay; Coles; Cook; Crawford; Cumberland; De Kalb; De Witt; Douglas; Du Page; Edgar; Edwards; Effingham; Fayette; Ford; Franklin; Gallatin; Grundy; Hamilton; Hardin; Iroquois; Jasper; Jefferson; Johnson; Kane; Kankakee; Kendall; La Salle; Lake; Lawrence; Livingston; Macon; Marion; Massac; McHenry; McLean; Moultrie; Piatt; Pope; Richland; Saline; Shelby; Vermilion; Wabash; Wayne; Whi [...]
-26772,NAD27 / Illinois West,,,,United States (USA) - Illinois - IL_W - counties of Adams; Alexander; Bond; Brown; Bureau; Calhoun; Carroll; Cass; Christian; Clinton; Fulton; Greene; Hancock; Henderson; Henry; Jackson; Jersey; Jo Daviess; Knox; Lee; Logan; Macoupin; Madison; Marshall; Mason; McDonough; Menard; Mercer; Monroe; Montgomery; Morgan; Ogle; Peoria; Perry; Pike; Pulaski; Putnam; Randolph; Rock Island; Sangamon; Schuyler; Scott; St. Clair; Stark; Stephenson; Tazewell; Union; Warr [...]
-26773,NAD27 / Indiana East,,,,United States (USA) - Indiana - IN_E - counties of Adams; Allen; Bartholomew; Blackford; Brown; Cass; Clark; De Kalb; Dearborn; Decatur; Delaware; Elkhart; Fayette; Floyd; Franklin; Fulton; Grant; Hamilton; Hancock; Harrison; Henry; Howard; Huntington; Jackson; Jay; Jefferson; Jennings; Johnson; Kosciusko; Lagrange; Madison; Marion; Marshall; Miami; Noble; Ohio; Randolph; Ripley; Rush; Scott; Shelby; St. Joseph; Steuben; Switzerland; Tipton; Union; Wabash; W [...]
-26774,NAD27 / Indiana West,,,,United States (USA) - Indiana - IN_W - counties of Benton; Boone; Carroll; Clay; Clinton; Crawford; Daviess; Dubois; Fountain; Gibson; Greene; Hendricks; Jasper; Knox; La Porte; Lake; Lawrence; Martin; Monroe; Montgomery; Morgan; Newton; Orange; Owen; Parke; Perry; Pike; Porter; Posey; Pulaski; Putnam; Spencer; Starke; Sullivan; Tippecanoe; Vanderburgh; Vermillion; Vigo; Warren; Warrick; White,projected 2D,,,East,North,X,Y,9003,,4267,11302,1995-06-02 00:00:0 [...]
-26775,NAD27 / Iowa North,,,,United States (USA) - Iowa - IA_N - counties of Allamakee; Benton; Black Hawk; Boone; Bremer; Buchanan; Buena Vista; Butler; Calhoun; Carroll; Cerro Gordo; Cherokee; Chickasaw; Clay; Clayton; Crawford; Delaware; Dickinson; Dubuque; Emmet; Fayette; Floyd; Franklin; Greene; Grundy; Hamilton; Hancock; Hardin; Howard; Humboldt; Ida; Jackson; Jones; Kossuth; Linn; Lyon; Marshall; Mitchell; Monona; O'Brien; Osceola; Palo Alto; Plymouth; Pocahontas; Sac; Sioux; Story [...]
-26776,NAD27 / Iowa South,,,,United States (USA) - Iowa - IA_S - counties of Adair; Adams; Appanoose; Audubon; Cass; Cedar; Clarke; Clinton; Dallas; Davis; Decatur; Des Moines; Fremont; Guthrie; Harrison; Henry; Iowa; Jasper; Jefferson; Johnson; Keokuk; Lee; Louisa; Lucas; Madison; Mahaska; Marion; Mills; Monroe; Montgomery; Muscatine; Page; Polk; Pottawattamie; Poweshiek; Ringgold; Scott; Shelby; Taylor; Union; Van Buren; Wapello; Warren; Washington; Wayne,projected 2D,,,East,North,X,Y,9 [...]
-26777,NAD27 / Kansas North,,,,United States (USA) - Kansas - KS_N - counties of Atchison; Brown; Cheyenne; Clay; Cloud; Decatur; Dickinson; Doniphan; Douglas; Ellis; Ellsworth; Geary; Gove; Graham; Jackson; Jefferson; Jewell; Johnson; Leavenworth; Lincoln; Logan; Marshall; Mitchell; Morris; Nemaha; Norton; Osborne; Ottawa; Phillips; Pottawatomie; Rawlins; Republic; Riley; Rooks; Russell; Saline; Shawnee; Sheridan; Sherman; Smith; Thomas; Trego; Wabaunsee; Wallace; Washington; Wyandotte,p [...]
-26778,NAD27 / Kansas South,,,,United States (USA) - Kansas - KS_S - counties of Allen; Anderson; Barber; Barton; Bourbon; Butler; Chase; Chautauqua; Cherokee; Clark; Coffey; Comanche; Cowley; Crawford; Edwards; Elk; Finney; Ford; Franklin; Grant; Gray; Greeley; Greenwood; Hamilton; Harper; Harvey; Haskell; Hodgeman; Kearny; Kingman; Kiowa; Labette; Lane; Linn; Lyon; Marion; McPherson; Meade; Miami; Montgomery; Morton; Neosho; Ness; Osage; Pawnee; Pratt; Reno; Rice; Rush; Scott; Sedgwick; [...]
-26779,NAD27 / Kentucky North,,,,United States (USA) - Kentucky - KY_N - counties of Anderson; Bath; Boone; Bourbon; Boyd; Bracken; Bullitt; Campbell; Carroll; Carter; Clark; Elliott; Fayette; Fleming; Franklin; Gallatin; Grant; Greenup; Harrison; Henry; Jefferson; Jessamine; Kenton; Lawrence; Lewis; Mason; Menifee; Montgomery; Morgan; Nicholas; Oldham; Owen; Pendleton; Robertson; Rowan; Scott; Shelby; Spencer; Trimble; Woodford,projected 2D,,,East,North,X,Y,9003,,4267,11601,1995-06-02 00 [...]
-26780,NAD27 / Kentucky South,,,,United States (USA) - Kentucky - KY_S - counties of Adair; Allen; Ballard; Barren; Bell; Boyle; Breathitt; Breckinridge; Butler; Caldwell; Calloway; Carlisle; Casey; Christian; Clay; Clinton; Crittenden; Cumberland; Daviess; Edmonson; Estill; Floyd; Fulton; Garrard; Graves; Grayson; Green; Hancock; Hardin; Harlan; Hart; Henderson; Hickman; Hopkins; Jackson; Johnson; Knott; Knox; Larue; Laurel; Lee; Leslie; Letcher; Lincoln; Livingston; Logan; Lyon; Madison [...]
-26781,NAD27 / Louisiana North,,,,United States (USA) - Louisiana - LA_N - counties of Avoyelles; Bienville; Bossier; Caddo; Caldwell; Catahoula; Claiborne; Concordia; De Soto; East Carroll; Franklin; Grant; Jackson; La Salle; Lincoln; Madison; Morehouse; Natchitoches; Ouachita; Rapides; Red River; Richland; Sabine; Tensas; Union; Vernon; Webster; West Carroll; Winn,projected 2D,,,East,North,X,Y,9003,,4267,11701,1995-06-02 00:00:00,,EPSG,,
-26782,NAD27 / Louisiana South,,,,United States (USA) - Louisiana - LA_S - counties of Acadia; Allen; Ascension; Assumption; Beauregard; Calcasieu; Cameron; East Baton Rouge; East Feliciana; Evangeline; Iberia; Iberville; Jefferson; Jefferson Davis; Lafayette; LaFourche; Livingston; Orleans; Plaquemines; Pointe Coupee; St. Bernard; St. Charles; St. Helena; St. James; St. John the Baptist; St. Landry; St. Martin; St. Mary; St. Tammany; Tangipahoa; Terrebonne; Vermilion; Washington; West Ba [...]
-26783,NAD27 / Maine East,,,,United States (USA) - Maine - ME_E - counties of Aroostook; Hancock; Knox; Penobscot; Piscataquis; Waldo; Washington,projected 2D,,,East,North,X,Y,9003,,4267,11801,1995-06-02 00:00:00,,EPSG,,
-26784,NAD27 / Maine West,,,,United States (USA) - Maine - ME_W - counties of Androscoggin; Cumberland; Franklin; Kennebec; Lincoln; Oxford; Sagadahoc; Somerset; York,projected 2D,,,East,North,X,Y,9003,,4267,11802,1995-06-02 00:00:00,,EPSG,,
-26785,NAD27 / Maryland,,,,United States (USA) - Maryland -MD - counties of Allegany; Anne Arundel; Baltimore; Calvert; Caroline; Carroll; Cecil; Charles; Dorchester; Frederick; Garrett; Harford; Howard; Kent; Montgomery; Prince Georges; Queen Annes; Somerset; St. Marys; Talbot; Washington; Wicomico; Worcester,projected 2D,,,East,North,X,Y,9003,,4267,11900,1995-06-02 00:00:00,,EPSG,,
-26786,NAD27 / Massachusetts Mainland,NAD27 / Massachusetts,,,United States (USA) - Massachusetts - MA_M - counties of Barnstable; Berkshire; Bristol; Essex; Franklin; Hampden; Hampshire; Middlesex; Norfolk; Plymouth; Suffolk; Worcester,projected 2D,,,East,North,X,Y,9003,,4267,12001,1995-06-02 00:00:00,,EPSG,,
-26787,NAD27 / Massachusetts Island,NAD27 / Massachusetts Is,,,United States (USA) - Massachusetts - MA_I - counties of Dukes; Nantucket,projected 2D,,,East,North,X,Y,9003,,4267,12002,1995-06-02 00:00:00,,EPSG,,
-26791,NAD27 / Minnesota North,,,,United States (USA) - Minnesota - MN_N - counties of Beltrami; Clearwater; Cook; Itasca; Kittson; Koochiching; Lake; Lake of the Woods; Mahnomen; Marshall; Norman; Pennington; Polk; Red Lake; Roseau; St. Louis,projected 2D,,,East,North,X,Y,9003,,4267,12201,1995-06-02 00:00:00,,EPSG,,
-26792,NAD27 / Minnesota Central,NAD27 / Minnesota Cent.,,,United States (USA) - Minnesota - MN_C - counties of Aitkin; Becker; Benton; Carlton; Cass; Chisago; Clay; Crow Wing; Douglas; Grant; Hubbard; Isanti; Kanabec; Mille Lacs; Morrison; Otter Tail; Pine; Pope; Stearns; Stevens; Todd; Traverse; Wadena; Wilkin,projected 2D,,,East,North,X,Y,9003,,4267,12202,1995-06-02 00:00:00,,EPSG,,
-26793,NAD27 / Minnesota South,,,,United States (USA) - Minnesota - MN_S - counties of Anoka; Big Stone; Blue Earth; Brown; Carver; Chippewa; Cottonwood; Dakota; Dodge; Faribault; Fillmore; Freeborn; Goodhue; Hennepin; Houston; Jackson; Kandiyohi; Lac Qui Parle; Le Sueur; Lincoln; Lyon; Martin; McLeod; Meeker; Mower; Murray; Nicollet; Nobles; Olmsted; Pipestone; Ramsey; Redwood; Renville; Rice; Rock; Scott; Sherburne; Sibley; Steele; Swift; Wabasha; Waseca; Washington; Watonwan; Winona; W [...]
-26794,NAD27 / Mississippi East,,,,United States (USA) - Mississippi - MS_E - counties of Alcorn; Attala; Benton; Calhoun; Chickasaw; Choctaw; Clarke; Clay; Covington; Forrest; George; Greene; Hancock; Harrison; Itawamba; Jackson; Jasper; Jones; Kemper; Lafayette; Lamar; Lauderdale; Leake; Lee; Lowndes; Marshall; Monroe; Neshoba; Newton; Noxubee; Oktibbeha; Pearl River; Perry; Pontotoc; Prentiss; Scott; Smith; Stone; Tippah; Tishomingo; Union; Wayne; Webster; Winston,projected 2D,,,East,N [...]
-26795,NAD27 / Mississippi West,,,,United States (USA) - Mississippi - MS_W - counties of Adams; Amite; Bolivar; Carroll; Claiborne; Coahoma; Copiah; De Soto; Franklin; Grenada; Hinds; Holmes; Humphreys; Issaquena; Jefferson; Jefferson Davis; Lawrence; Leflore; Lincoln; Madison; Marion; Montgomery; Panola; Pike; Quitman; Rankin; Sharkey; Simpson; Sunflower; Tallahatchie; Tate; Tunica; Walthall; Warren; Washington; Wilkinson; Yalobusha; Yazoo,projected 2D,,,East,North,X,Y,9003,,4267,12302, [...]
-26796,NAD27 / Missouri East,,,,United States (USA) - Missouri - MO_E - counties of Bollinger; Butler; Cape Girardeau; Carter; Clark; Crawford; Dent; Dunklin; Franklin; Gasconade; Iron; Jefferson; Lewis; Lincoln; Madison; Marion; Mississippi; Montgomery; New Madrid; Oregon; Pemiscot; Perry; Pike; Ralls; Reynolds; Ripley; Scott; Shannon; St. Charles; St. Francois; St. Louis; Ste. Genevieve; Stoddard; Warren; Washington; Wayne,projected 2D,,,East,North,X,Y,9003,,4267,12401,1995-06-02 00:00: [...]
-26797,NAD27 / Missouri Central,,,,United States (USA) - Missouri - MO_C - counties of Adair; Audrain; Benton; Boone; Callaway; Camden; Carroll; Chariton; Christian; Cole; Cooper; Dallas; Douglas; Greene; Grundy; Hickory; Howard; Howell; Knox; Laclede; Linn; Livingston; Macon; Maries; Mercer; Miller; Moniteau; Monroe; Morgan; Osage; Ozark; Pettis; Phelps; Polk; Pulaski; Putnam; Randolph; Saline; Schuyler; Scotland; Shelby; Stone; Sullivan; Taney; Texas; Webster; Wright,projected 2D,,,East [...]
-26798,NAD27 / Missouri West,,,,United States (USA) - Missouri - MO_W - counties of Andrew; Atchison; Barry; Barton; Bates; Buchanan; Caldwell; Cass; Cedar; Clay; Clinton; Dade; Daviess; De Kalb; Gentry; Harrison; Henry; Holt; Jackson; Jasper; Johnson; Lafayette; Lawrence; McDonald; Newton; Nodaway; Platte; Ray; St. Clair; Vernon; Worth,projected 2D,,,East,North,X,Y,9003,,4267,12403,1995-06-02 00:00:00,,EPSG,,
-26801,NAD Michigan / Michigan East,NAD27 / Michigan East,,,United States (USA) - Michigan - MI_E - counties of Alcona; Alpena; Arenac; Bay; Cheboygan; Clinton; Crawford; Genesee; Gladwin; Gratiot; Hillsdale; Huron; Ingham; Iosco; Jackson; Lapeer; Lenawee; Livingston; Macomb; Midland; Monroe; Montmorency; Oakland; Ogemaw; Oscoda; Otsego; Presque Isle; Roscommon; Saginaw; Sanilac; Shiawassee; St. Clair; Tuscola; Washtenaw; Wayne,projected 2D,,,East,North,X,Y,9003,,4268,12101,1998-11-11 00: [...]
-26802,NAD Michigan / Michigan Old Central,NAD27 / Michigan Old Cen,,,United States (USA) - Michigan - MI_C - counties of Allegan; Antrim; Barry; Benzie; Berrien; Branch; Calhoun; Cass; Charlevoix; Clare; Eaton; Emmet; Grand Traverse; Ionia; Isabella; Kalamazoo; Kalkaska; Kent; Lake; Leelanau; Manistee; Mason; Mecosta; Missaukee; Montcalm; Muskegon; Newaygo; Oceana; Osceola; Ottawa; St. Joseph; Van Buren; Wexford,projected 2D,,,East,North,X,Y,9003,,4268,12102,1998-11-11 00:00:00,,EPSG,Sup [...]
-26803,NAD Michigan / Michigan West,NAD27 / Michigan West,,,United States (USA) - Michigan - MI_W - counties of Alger; Baraga; Chippewa; Delta; Dickinson; Gogebic; Houghton; Iron; Keweenaw; Luce; Mackinac; Marquette; Menominee; Ontonagon; Schoolcraft,projected 2D,,,East,North,X,Y,9003,,4268,12103,1998-11-11 00:00:00,,EPSG,Superseded by 26811 26812 and 26813.,95.25  97.19  98.22
-26811,NAD Michigan / Michigan North,NAD27 / Michigan North,,,United States (USA) - Michigan - MI_N - counties of Alger; Baraga; Chippewa; Delta; Dickinson; Gogebic; Houghton; Iron; Keweenaw; Luce; Mackinac; Marquette; Menominee; Ontonagon; Schoolcraft,projected 2D,,,East,North,X,Y,9003,,4268,12111,1998-11-11 00:00:00,,EPSG,Supersedes 26801 26802 and 26803.,96.28  98.22
-26812,NAD Michigan / Michigan Central,NAD27 / Michigan Central,,,United States (USA) - Michigan - MI_C - counties of Alcona; Alpena; Antrim; Arenac; Benzie; Charlevoix; Cheboygan; Clare; Crawford; Emmet; Gladwin; Grand Traverse; Iosco; Kalkaska; Lake; Leelanau; Manistee; Mason; Missaukee; Montmorency; Ogemaw; Osceola; Oscoda; Otsego; Presque Isle; Roscommon; Wexford,projected 2D,,,East,North,X,Y,9003,,4268,12112,1998-11-11 00:00:00,,EPSG,Supersedes 26801 26802 and 26803.,96.28  97.19  98.22
-26813,NAD Michigan / Michigan South,NAD27 / Michigan South,,,United States (USA) - Michigan - MI_S - counties of Allegan; Barry; Bay; Berrien; Branch; Calhoun; Cass; Clinton; Eaton; Genesee; Gratiot; Hillsdale; Huron; Ingham; Ionia; Isabella; Jackson; Kalamazoo; Kent; Lapeer; Lenawee; Livingston; Macomb; Mecosta; Midland; Monroe; Montcalm; Muskegon; Newaygo; Oakland; Oceana; Ottawa; Saginaw; Sanilac; Shiawassee; St. Clair; St. Joseph; Tuscola; Van Buren; Washtenaw; Wayne,projected 2D,,,E [...]
-26903,NAD83 / UTM zone 3N,,,,North America - United States (USA) - Alaska - 168deg West  to 162deg West.,projected 2D,,,East,North,E,N,9001,,4269,16003,1995-06-02 00:00:00,,EPSG,,
-26904,NAD83 / UTM zone 4N,,,,North America - United States (USA) - Alaska - 162deg West  to 156deg West.,projected 2D,,,East,North,E,N,9001,,4269,16004,1995-06-02 00:00:00,,EPSG,,
-26905,NAD83 / UTM zone 5N,,,,North America - United States (USA) - Alaska - 156deg West  to 150deg West.,projected 2D,,,East,North,E,N,9001,,4269,16005,1995-06-02 00:00:00,,EPSG,,
-26906,NAD83 / UTM zone 6N,,,,North America - United States (USA) - Alaska - 150deg West  to 144deg West.,projected 2D,,,East,North,E,N,9001,,4269,16006,1995-06-02 00:00:00,,EPSG,,
-26907,NAD83 / UTM zone 7N,,,,North America - Canada; United States (USA) - Alaska - 144deg West  to 138deg West.,projected 2D,,,East,North,E,N,9001,,4269,16007,1995-06-02 00:00:00,,EPSG,,
-26908,NAD83 / UTM zone 8N,,,,North America - Canada; United States (USA) - 138deg West  to 132deg West.,projected 2D,,,East,North,E,N,9001,,4269,16008,1995-06-02 00:00:00,,EPSG,,
-26909,NAD83 / UTM zone 9N,,,,North America - Canada; United States (USA) - 132deg West  to 126deg West.,projected 2D,,,East,North,E,N,9001,,4269,16009,1995-06-02 00:00:00,,EPSG,,
-26910,NAD83 / UTM zone 10N,,,,North America - Canada; United States (USA) - 130deg West  to 120deg West.,projected 2D,,,East,North,E,N,9001,,4269,16010,1995-06-02 00:00:00,,EPSG,,
-26911,NAD83 / UTM zone 11N,,,,North America - Canada; Mexico; United States (USA) - 120deg West  to 114deg West.,projected 2D,,,East,North,E,N,9001,,4269,16011,1995-06-02 00:00:00,,EPSG,,
-26912,NAD83 / UTM zone 12N,,,,North America - Canada; Mexico; United States (USA) - 114deg West  to 108deg West.,projected 2D,,,East,North,E,N,9001,,4269,16012,1995-06-02 00:00:00,,EPSG,,
-26913,NAD83 / UTM zone 13N,,,,North America - Canada; Mexico; United States (USA) - 108deg West  to 102deg West.,projected 2D,,,East,North,E,N,9001,,4269,16013,1995-06-02 00:00:00,,EPSG,,
-26914,NAD83 / UTM zone 14N,,,,North America - Canada; Mexico; United States (USA) - 102deg West  to 96deg West.,projected 2D,,,East,North,E,N,9001,,4269,16014,1995-06-02 00:00:00,,EPSG,,
-26915,NAD83 / UTM zone 15N,,,,North America - Canada; Mexico; United States (USA) - 96deg West  to 90deg West.,projected 2D,,,East,North,E,N,9001,,4269,16015,1995-06-02 00:00:00,,EPSG,,
-26916,NAD83 / UTM zone 16N,,,,North America - Canada; Mexico; United States (USA) - 90deg West  to 84deg West.,projected 2D,,,East,North,E,N,9001,,4269,16016,1995-06-02 00:00:00,,EPSG,,
-26917,NAD83 / UTM zone 17N,,,,North America - Canada; Mexico; United States (USA) - 84deg West  to 78deg West.,projected 2D,,,East,North,E,N,9001,,4269,16017,1995-06-02 00:00:00,,EPSG,,
-26918,NAD83 / UTM zone 18N,,,,North America - Canada; United States (USA) - 78deg West  to 72deg West.,projected 2D,,,East,North,E,N,9001,,4269,16018,1995-06-02 00:00:00,,EPSG,,
-26919,NAD83 / UTM zone 19N,,,,North America - Canada; United States (USA) - 72deg West  to 66deg West.,projected 2D,,,East,North,E,N,9001,,4269,16019,1995-06-02 00:00:00,,EPSG,,
-26920,NAD83 / UTM zone 20N,,,,North America - Canada; United States (USA) offshore Atlantic - 66deg West  to 60deg West.,projected 2D,,,East,North,E,N,9001,,4269,16020,1995-06-02 00:00:00,,EPSG,,
-26921,NAD83 / UTM zone 21N,,,,North America - Canada - 60deg West  to 54deg West.,projected 2D,,,East,North,E,N,9001,,4269,16021,1995-06-02 00:00:00,,EPSG,,
-26922,NAD83 / UTM zone 22N,,,,North America - Canada - Newfoundland - 54deg West  to 48deg West.,projected 2D,,,East,North,E,N,9001,,4269,16022,1995-06-02 00:00:00,,EPSG,,
-26923,NAD83 / UTM zone 23N,,,,North America - Canada offshore Atlantic - 48deg West  to 42deg West.,projected 2D,,,East,North,E,N,9001,,4269,16023,1995-06-02 00:00:00,,EPSG,,
-26929,NAD83 / Alabama East,,,,United States (USA) - Alabama - AL_E - counties east of approx 86d 37m West - Barbour; Bullock; Calhoun; Chambers; Cherokee; Clay; Cleburne; Coffee; Coosa; Covington; Crenshaw; Dale; De Kalb; Elmore; Etowah; Geneva; Henry; Houston; Jackson; Lee; Macon; Madison; Marshall; Montgomery; Pike; Randolph; Russell; St.Clair; Talladega; Tallapoosa,projected 2D,,,East,North,X,Y,9001,,4269,10131,1995-06-02 00:00:00,,EPSG,,
-26930,NAD83 / Alabama West,,,,United States (USA) - Alabama - AL_W - counties west of approx 86d 37m West - Autauga; Baldwin; Bibb; Blount; Butler; Chilton; Choctaw; Clarke; Colbert; Conecuh; Cullman; Dallas; Escambia; Fayette; Franklin; Greene; Hale; Jefferson; Lamar; Lauderdale; Lawrence; Limestone; Lowndes; Marengo; Marion; Mobile; Monroe; Morgan; Perry; Pickens; Shelby; Sumter; Tuscaloosa; Walker; Washington; Wilcox; Winston,projected 2D,,,East,North,X,Y,9001,,4269,10132,1995-06-02 0 [...]
-26931,NAD83 / Alaska zone 1,,,,United States - Alaska - Panhandle.,projected 2D,,,East,North,X,Y,9001,,4269,15031,1995-06-02 00:00:00,,EPSG,,
-26932,NAD83 / Alaska zone 2,,,,United States - Alaska - 141deg to 144deg West.,projected 2D,,,East,North,X,Y,9001,,4269,15032,1995-06-02 00:00:00,,EPSG,,
-26933,NAD83 / Alaska zone 3,,,,United States - Alaska - 144deg to 148deg West.,projected 2D,,,East,North,X,Y,9001,,4269,15033,1995-06-02 00:00:00,,EPSG,,
-26934,NAD83 / Alaska zone 4,,,,United States - Alaska - 148deg to 152deg West.,projected 2D,,,East,North,X,Y,9001,,4269,15034,1995-06-02 00:00:00,,EPSG,,
-26935,NAD83 / Alaska zone 5,,,,United States - Alaska - 152deg to 156deg West.,projected 2D,,,East,North,X,Y,9001,,4269,15035,1995-06-02 00:00:00,,EPSG,,
-26936,NAD83 / Alaska zone 6,,,,United States - Alaska - 156deg to 160deg West.,projected 2D,,,East,North,X,Y,9001,,4269,15036,1995-06-02 00:00:00,,EPSG,,
-26937,NAD83 / Alaska zone 7,,,,United States - Alaska - 160deg to 164deg West.,projected 2D,,,East,North,X,Y,9001,,4269,15037,1995-06-02 00:00:00,,EPSG,,
-26938,NAD83 / Alaska zone 8,,,,United States - Alaska - 164deg to 168deg West north of 54d 30m North.,projected 2D,,,East,North,X,Y,9001,,4269,15038,1995-06-02 00:00:00,,EPSG,,
-26939,NAD83 / Alaska zone 9,,,,United States - Alaska - west of 168deg West and north of 54d 30m North.,projected 2D,,,East,North,X,Y,9001,,4269,15039,1995-06-02 00:00:00,,EPSG,,
-26940,NAD83 / Alaska zone 10,,,,United States - Alaska - Aleutian Islands.,projected 2D,,,East,North,X,Y,9001,,4269,15040,1995-06-02 00:00:00,,EPSG,,
-26941,NAD83 / California zone 1,NAD83 / California 1,,,United States (USA) - California - CA_1 - counties north of approx 40 deg North - Del Norte; Humboldt; Lassen; Modoc; Plumas; Shasta; Siskiyou; Tehama; Trinity,projected 2D,,,East,North,X,Y,9001,,4269,10431,1995-06-02 00:00:00,,EPSG,,
-26942,NAD83 / California zone 2,NAD83 / California 2,,,United States (USA) - California - CA_2 - counties between approx 40 deg & 38d 15m North - Alpine; Amador; Butte; Colusa; El Dorado; Glenn; Lake; Mendocino; Napa; Nevada; Placer; Sacramento; Sierra; Solano; Sonoma; Sutter; Yolo; Yuba,projected 2D,,,East,North,X,Y,9001,,4269,10432,1995-06-02 00:00:00,,EPSG,,
-26943,NAD83 / California zone 3,NAD83 / California 3,,,United States (USA) - California - CA_3 - counties between approx 38d 15m & 37d North - Alameda; Calaveras; Contra Costa; Madera; Marin; Mariposa; Merced; Mono; San Francisco; San Joaquin; San Mateo; Santa Clara; Santa Cruz; Stanislaus; Tuolumne,projected 2D,,,East,North,X,Y,9001,,4269,10433,1995-06-02 00:00:00,,EPSG,,
-26944,NAD83 / California zone 4,NAD83 / California 4,,,United States (USA) - California - CA_4 - counties between approx 37d & 35d 30m North - Fresno; Inyo; Kings; Monterey; San Benito; Tulare,projected 2D,,,East,North,X,Y,9001,,4269,10434,1995-06-02 00:00:00,,EPSG,,
-26945,NAD83 / California zone 5,NAD83 / California 5,,,United States (USA) - California - CA_5 - counties between approx 35d 50m & 34d North - Kern; Los Angeles; San Bernardino; San Luis Obispo; Santa Barbara; Ventura,projected 2D,,,East,North,X,Y,9001,,4269,10435,1995-06-02 00:00:00,,EPSG,,
-26946,NAD83 / California zone 6,NAD83 / California 6,,,United States (USA) - California - CA_6 - counties south of approx 38d 30m North - Imperial; Orange; Riverside; San Diego,projected 2D,,,East,North,X,Y,9001,,4269,10436,1995-06-02 00:00:00,,EPSG,,
-26948,NAD83 / Arizona  East,,,,United States (USA) - Arizona - AZ_E - counties east of approx 110d 45m West - Apache; Cochise; Gila; Graham; Greenlee; Navajo,projected 2D,,,East,North,X,Y,9001,,4269,10231,1995-06-02 00:00:00,,EPSG,,
-26949,NAD83 / Arizona Central,,,,United States (USA) - Arizona - AZ_C - counties between approx 110d 45m and 113d 20m West - Coconino; Maricopa; Pima; Pinal; Santa Cruz; Yavapai,projected 2D,,,East,North,X,Y,9001,,4269,10232,1995-06-02 00:00:00,,EPSG,,
-26950,NAD83 / Arizona West,,,,United States (USA) - Arizona - AZ_W - counties west of approx 113d 20m West - La Paz; Mohave; Yuma,projected 2D,,,East,North,X,Y,9001,,4269,10233,1995-06-02 00:00:00,,EPSG,,
-26951,NAD83 / Arkansas North,,,,United States (USA) - Arkansas - AR_N - counties north of approx 34d 50m North - Baxter; Benton; Boone; Carroll; Clay; Cleburne; Conway; Craighead; Crawford; Crittenden; Cross; Faulkner; Franklin; Fulton; Greene; Independence; Izard; Jackson; Johnson; Lawrence; Logan; Madison; Marion; Mississippi; Newton; Perry; Poinsett; Pope; Randolph; Scott; Searcy; Sebastian; Sharp; St. Francis; Stone; Van Buren; Washington; White; Woodruff; Yell,projected 2D,,,East,No [...]
-26952,NAD83 / Arkansas South,,,,United States (USA) - Arkansas - AR_S - counties south of approx 34d 50m North - Arkansas; Ashley; Bradley; Calhoun; Chicot; Clark; Cleveland; Columbia; Dallas; Desha; Drew; Garland; Grant; Hempstead; Hot Spring; Howard; Jefferson; Lafayette; Lee; Lincoln; Little River; Lonoke; Miller; Monroe; Montgomery; Nevada; Ouachita; Phillips; Pike; Polk; Prairie; Pulaski; Saline; Sevier; Union,projected 2D,,,East,North,X,Y,9001,,4269,10332,1995-06-02 00:00:00,,EPSG,,
-26953,NAD83 / Colorado North,,,,United States (USA) - Colorado - CO_N - counties north of approx 39d 50m North - Adams; Boulder; Gilpin; Grand; Jackson; Larimer; Logan; Moffat; Morgan; Phillips; Rio Blanco; Routt; Sedgwick; Washington; Weld; Yuma,projected 2D,,,East,North,X,Y,9001,,4269,10531,1995-06-02 00:00:00,,EPSG,,
-26954,NAD83 / Colorado Central,,,,United States (USA) - Colorado - CO_C - counties between approx 39d 50m & 38d 30m North - Arapahoe; Chaffee; Cheyenne; Clear Creek; Delta; Denver; Douglas; Eagle; El Paso; Elbert; Fremont; Garfield; Gunnison; Jefferson; Kit Carson; Lake; Lincoln; Mesa; Park; Pitkin; Summit; Teller,projected 2D,,,East,North,X,Y,9001,,4269,10532,1995-06-02 00:00:00,,EPSG,,
-26955,NAD83 / Colorado South,,,,United States (USA) - Colorado - CO_S - counties south of approx 38d 30m North - Alamosa; Archuleta; Baca; Bent; Conejos; Costilla; Crowley; Custer; Dolores; Hinsdale; Huerfano; Kiowa; La Plata; Las Animas; Mineral; Montezuma; Montrose; Otero; Ouray; Prowers; Pueblo; Rio Grande; Saguache; San Juan; San Miguel,projected 2D,,,East,North,X,Y,9001,,4269,10533,1995-06-02 00:00:00,,EPSG,,
-26956,NAD83 / Connecticut,,,,United States (USA) - Connecticut - CT - counties of Fairfield; Hartford; Litchfield; Middlesex; New Haven; New London; Tolland; Windham,projected 2D,,,East,North,X,Y,9001,,4269,10630,1995-06-02 00:00:00,,EPSG,,
-26957,NAD83 / Delaware,,,,United States (USA) - Delaware - DE - counties of Kent; New Castle; Sussex,projected 2D,,,East,North,X,Y,9001,,4269,10730,1995-06-02 00:00:00,,EPSG,,
-26958,NAD83 / Florida  East,,,,United States (USA) - Florida - FL_E - counties of Brevard; Broward; Clay; Collier; Dade; Duval; Flagler; Glades; Hendry; Highlands; Indian River; Lake; Martin; Monroe; Nassau; Okeechobee; Orange; Osceola; Palm Beach; Putnam; Seminole; St. Johns; St. Lucie; Volusia,projected 2D,,,East,North,X,Y,9001,,4269,10931,1995-06-02 00:00:00,,EPSG,,
-26959,NAD83 / Florida  West,,,,United States (USA) - Florida - FL_W - counties of Charlotte; Citrus; De Soto; Hardee; Hernando; Hillsborough; Lee; Levy; Manatee; Marion; Pasco; Pinellas; Polk; Sarasota; Sumter,projected 2D,,,East,North,X,Y,9001,,4269,10932,1995-06-02 00:00:00,,EPSG,,
-26960,NAD83 / Florida North,,,,United States (USA) - Florida - FL_N - counties of Alachua; Baker; Bay; Bradford; Calhoun; Columbia; Dixie; Escambia; Escambia; Franklin; Gadsden; Gilchrist; Gulf; Hamilton; Holmes; Jackson; Jefferson; Lafayette; Leon; Liberty; Madison; Okaloosa; Santa Rosa; Suwannee; Taylor; Union; Wakulla; Walton; Washington,projected 2D,,,East,North,X,Y,9001,,4269,10933,1995-06-02 00:00:00,,EPSG,,
-26961,NAD83 / Hawaii  zone 1,,,,United States - Hawaii - island of Hawaii.,projected 2D,,,East,North,X,Y,9001,,4269,15131,1995-06-02 00:00:00,,EPSG,,
-26962,NAD83 / Hawaii  zone 2,,,,United States - Hawaii - Maui; Kahoolawe; Lanai; Molokai.,projected 2D,,,East,North,X,Y,9001,,4269,15132,1995-06-02 00:00:00,,EPSG,,
-26963,NAD83 / Hawaii  zone 3,,,,United States - Hawaii - Oahu.,projected 2D,,,East,North,X,Y,9001,,4269,15133,1995-06-02 00:00:00,,EPSG,,
-26964,NAD83 / Hawaii  zone 4,,,,United States - Hawaii - Kauai.,projected 2D,,,East,North,X,Y,9001,,4269,15134,1995-06-02 00:00:00,,EPSG,,
-26965,NAD83 / Hawaii  zone 5,,,,United States - Hawaii - Niihau.,projected 2D,,,East,North,X,Y,9001,,4269,15135,1995-06-02 00:00:00,,EPSG,,
-26966,NAD83 / Georgia  East,,,,United States (USA) - Georgia - GA_E - counties of Appling; Atkinson; Bacon; Baldwin; Brantley; Bryan; Bulloch; Burke; Camden; Candler; Charlton; Chatham; Clinch; Coffee; Columbia; Dodge; Echols; Effingham; Elbert; Emanuel; Evans; Franklin; Glascock; Glynn; Greene; Hancock; Hart; Jeff Davis; Jefferson; Jenkins; Johnson; Lanier; Laurens; Liberty; Lincoln; Long; Madison; McDuffie; McIntosh; Montgomery; Oglethorpe; Pierce; Richmond; Screven; Stephens; Taliafer [...]
-26967,NAD83 / Georgia West,,,,United States (USA) - Georgia - GA_W - counties of Baker; Banks; Barrow; Bartow; Ben Hill; Berrien; Bibb; Bleckley; Brooks; Butts; Calhoun; Carroll; Catoosa; Chattahoochee; Chattooga; Cherokee; Clarke; Clay; Clayton; Cobb; Colquitt; Cook; Coweta; Crawford; Crisp; Dade; Dawson; De Kalb; Decatur; Dooly; Dougherty; Douglas; Early; Fannin; Fayette; Floyd; Forsyth; Fulton; Gilmer; Gordon; Grady; Gwinnett; Habersham; Hall; Haralson; Harris; Heard; Henry; Houston;  [...]
-26968,NAD83 / Idaho  East,,,,United States (USA) - Idaho - ID_E - counties of Bannock; Bear Lake; Bingham; Bonneville; Caribou; Clark; Franklin; Fremont; Jefferson; Madison; Oneida; Power; Teton,projected 2D,,,East,North,X,Y,9001,,4269,11131,1995-06-02 00:00:00,,EPSG,,
-26969,NAD83 / Idaho  Central,,,,United States (USA) - Idaho - ID_C - counties of Blaine; Butte; Camas; Cassia; Custer; Gooding; Jerome; Lemhi; Lincoln; Minidoka; Twin Falls,projected 2D,,,East,North,X,Y,9001,,4269,11132,1995-06-02 00:00:00,,EPSG,,
-26970,NAD83 / Idaho  West,,,,United States (USA) - Idaho - ID_W - counties of Ada; Adams; Benewah; Boise; Bonner; Boundary; Canyon; Clearwater; Elmore; Gem; Idaho; Kootenai; Latah; Lewis; Nez Perce; Owyhee; Payette; Shoshone; Valley; Washington,projected 2D,,,East,North,X,Y,9001,,4269,11133,1995-06-02 00:00:00,,EPSG,,
-26971,NAD83 / Illinois  East,,,,United States (USA) - Illinois - IL_E - counties of Boone; Champaign; Clark; Clay; Coles; Cook; Crawford; Cumberland; De Kalb; De Witt; Douglas; Du Page; Edgar; Edwards; Effingham; Fayette; Ford; Franklin; Gallatin; Grundy; Hamilton; Hardin; Iroquois; Jasper; Jefferson; Johnson; Kane; Kankakee; Kendall; La Salle; Lake; Lawrence; Livingston; Macon; Marion; Massac; McHenry; McLean; Moultrie; Piatt; Pope; Richland; Saline; Shelby; Vermilion; Wabash; Wayne; Wh [...]
-26972,NAD83 / Illinois  West,,,,United States (USA) - Illinois - IL_W - counties of Adams; Alexander; Bond; Brown; Bureau; Calhoun; Carroll; Cass; Christian; Clinton; Fulton; Greene; Hancock; Henderson; Henry; Jackson; Jersey; Jo Daviess; Knox; Lee; Logan; Macoupin; Madison; Marshall; Mason; McDonough; Menard; Mercer; Monroe; Montgomery; Morgan; Ogle; Peoria; Perry; Pike; Pulaski; Putnam; Randolph; Rock Island; Sangamon; Schuyler; Scott; St. Clair; Stark; Stephenson; Tazewell; Union; War [...]
-26973,NAD83 / Indiana  East,,,,United States (USA) - Indiana - IN_E - counties of Adams; Allen; Bartholomew; Blackford; Brown; Cass; Clark; De Kalb; Dearborn; Decatur; Delaware; Elkhart; Fayette; Floyd; Franklin; Fulton; Grant; Hamilton; Hancock; Harrison; Henry; Howard; Huntington; Jackson; Jay; Jefferson; Jennings; Johnson; Kosciusko; Lagrange; Madison; Marion; Marshall; Miami; Noble; Ohio; Randolph; Ripley; Rush; Scott; Shelby; St. Joseph; Steuben; Switzerland; Tipton; Union; Wabash;  [...]
-26974,NAD83 / Indiana  West,,,,United States (USA) - Indiana - IN_W - counties of Benton; Boone; Carroll; Clay; Clinton; Crawford; Daviess; Dubois; Fountain; Gibson; Greene; Hendricks; Jasper; Knox; La Porte; Lake; Lawrence; Martin; Monroe; Montgomery; Morgan; Newton; Orange; Owen; Parke; Perry; Pike; Porter; Posey; Pulaski; Putnam; Spencer; Starke; Sullivan; Tippecanoe; Vanderburgh; Vermillion; Vigo; Warren; Warrick; White,projected 2D,,,East,North,X,Y,9001,,4269,11332,1995-06-02 00:00: [...]
-26975,NAD83 / Iowa North,,,,United States (USA) - Iowa - IA_N - counties of Allamakee; Benton; Black Hawk; Boone; Bremer; Buchanan; Buena Vista; Butler; Calhoun; Carroll; Cerro Gordo; Cherokee; Chickasaw; Clay; Clayton; Crawford; Delaware; Dickinson; Dubuque; Emmet; Fayette; Floyd; Franklin; Greene; Grundy; Hamilton; Hancock; Hardin; Howard; Humboldt; Ida; Jackson; Jones; Kossuth; Linn; Lyon; Marshall; Mitchell; Monona; O'Brien; Osceola; Palo Alto; Plymouth; Pocahontas; Sac; Sioux; Story [...]
-26976,NAD83 / Iowa South,,,,United States (USA) - Iowa - IA_S - counties of Adair; Adams; Appanoose; Audubon; Cass; Cedar; Clarke; Clinton; Dallas; Davis; Decatur; Des Moines; Fremont; Guthrie; Harrison; Henry; Iowa; Jasper; Jefferson; Johnson; Keokuk; Lee; Louisa; Lucas; Madison; Mahaska; Marion; Mills; Monroe; Montgomery; Muscatine; Page; Polk; Pottawattamie; Poweshiek; Ringgold; Scott; Shelby; Taylor; Union; Van Buren; Wapello; Warren; Washington; Wayne,projected 2D,,,East,North,X,Y,9 [...]
-26977,NAD83 / Kansas North,,,,United States (USA) - Kansas - KS_N - counties of Atchison; Brown; Cheyenne; Clay; Cloud; Decatur; Dickinson; Doniphan; Douglas; Ellis; Ellsworth; Geary; Gove; Graham; Jackson; Jefferson; Jewell; Johnson; Leavenworth; Lincoln; Logan; Marshall; Mitchell; Morris; Nemaha; Norton; Osborne; Ottawa; Phillips; Pottawatomie; Rawlins; Republic; Riley; Rooks; Russell; Saline; Shawnee; Sheridan; Sherman; Smith; Thomas; Trego; Wabaunsee; Wallace; Washington; Wyandotte,p [...]
-26978,NAD83 / Kansas South,,,,United States (USA) - Kansas - KS_S - counties of Allen; Anderson; Barber; Barton; Bourbon; Butler; Chase; Chautauqua; Cherokee; Clark; Coffey; Comanche; Cowley; Crawford; Edwards; Elk; Finney; Ford; Franklin; Grant; Gray; Greeley; Greenwood; Hamilton; Harper; Harvey; Haskell; Hodgeman; Kearny; Kingman; Kiowa; Labette; Lane; Linn; Lyon; Marion; McPherson; Meade; Miami; Montgomery; Morton; Neosho; Ness; Osage; Pawnee; Pratt; Reno; Rice; Rush; Scott; Sedgwick; [...]
-26979,NAD83 / Kentucky North,,,,United States (USA) - Kentucky - KY_N - counties of Anderson; Bath; Boone; Bourbon; Boyd; Bracken; Bullitt; Campbell; Carroll; Carter; Clark; Elliott; Fayette; Fleming; Franklin; Gallatin; Grant; Greenup; Harrison; Henry; Jefferson; Jessamine; Kenton; Lawrence; Lewis; Mason; Menifee; Montgomery; Morgan; Nicholas; Oldham; Owen; Pendleton; Robertson; Rowan; Scott; Shelby; Spencer; Trimble; Woodford,projected 2D,,,East,North,X,Y,9001,,4269,11631,1995-06-02 00 [...]
-26980,NAD83 / Kentucky South,,,,United States (USA) - Kentucky - KY_S - counties of Adair; Allen; Ballard; Barren; Bell; Boyle; Breathitt; Breckinridge; Butler; Caldwell; Calloway; Carlisle; Casey; Christian; Clay; Clinton; Crittenden; Cumberland; Daviess; Edmonson; Estill; Floyd; Fulton; Garrard; Graves; Grayson; Green; Hancock; Hardin; Harlan; Hart; Henderson; Hickman; Hopkins; Jackson; Johnson; Knott; Knox; Larue; Laurel; Lee; Leslie; Letcher; Lincoln; Livingston; Logan; Lyon; Madison [...]
-26981,NAD83 / Louisiana North,,,,United States (USA) - Louisiana - LA_N - counties of Avoyelles; Bienville; Bossier; Caddo; Caldwell; Catahoula; Claiborne; Concordia; De Soto; East Carroll; Franklin; Grant; Jackson; La Salle; Lincoln; Madison; Morehouse; Natchitoches; Ouachita; Rapides; Red River; Richland; Sabine; Tensas; Union; Vernon; Webster; West Carroll; Winn,projected 2D,,,East,North,X,Y,9001,,4269,11731,1995-06-02 00:00:00,,EPSG,,
-26982,NAD83 / Louisiana South,,,,United States (USA) - Louisiana - LA_S - counties of Acadia; Allen; Ascension; Assumption; Beauregard; Calcasieu; Cameron; East Baton Rouge; East Feliciana; Evangeline; Iberia; Iberville; Jefferson; Jefferson Davis; Lafayette; LaFourche; Livingston; Orleans; Plaquemines; Pointe Coupee; St. Bernard; St. Charles; St. Helena; St. James; St. John the Baptist; St. Landry; St. Martin; St. Mary; St. Tammany; Tangipahoa; Terrebonne; Vermilion; Washington; West Ba [...]
-26983,NAD83 / Maine  East,,,,United States (USA) - Maine - ME_E - counties of Aroostook; Hancock; Knox; Penobscot; Piscataquis; Waldo; Washington,projected 2D,,,East,North,X,Y,9001,,4269,11831,1995-06-02 00:00:00,,EPSG,,
-26984,NAD83 / Maine  West,,,,United States (USA) - Maine - ME_W - counties of Androscoggin; Cumberland; Franklin; Kennebec; Lincoln; Oxford; Sagadahoc; Somerset; York,projected 2D,,,East,North,X,Y,9001,,4269,11832,1995-06-02 00:00:00,,EPSG,,
-26985,NAD83 / Maryland,,,,United States (USA) - Maryland -MD - counties of Allegany; Anne Arundel; Baltimore; Calvert; Caroline; Carroll; Cecil; Charles; Dorchester; Frederick; Garrett; Harford; Howard; Kent; Montgomery; Prince Georges; Queen Annes; Somerset; St. Marys; Talbot; Washington; Wicomico; Worcester,projected 2D,,,East,North,X,Y,9001,,4269,11930,1995-06-02 00:00:00,,EPSG,,
-26986,NAD83 / Massachusetts Mainland,NAD83 / Massachusetts,,,United States (USA) - Massachusetts - MA_M - counties of Barnstable; Berkshire; Bristol; Essex; Franklin; Hampden; Hampshire; Middlesex; Norfolk; Plymouth; Suffolk; Worcester,projected 2D,,,East,North,X,Y,9001,,4269,12031,1995-06-02 00:00:00,,EPSG,,
-26987,NAD83 / Massachusetts Island,NAD83 / Massachusetts Is,,,United States (USA) - Massachusetts - MA_I - counties of Dukes; Nantucket,projected 2D,,,East,North,X,Y,9001,,4269,12032,1995-06-02 00:00:00,,EPSG,,
-26988,NAD83 / Michigan North,,,,United States (USA) - Michigan - MI_N - counties of Alger; Baraga; Chippewa; Delta; Dickinson; Gogebic; Houghton; Iron; Keweenaw; Luce; Mackinac; Marquette; Menominee; Ontonagon; Schoolcraft,projected 2D,,,East,North,X,Y,9001,,4269,12141,1995-06-02 00:00:00,,EPSG,,
-26989,NAD83 / Michigan Central,,,,United States (USA) - Michigan - MI_C - counties of Alcona; Alpena; Antrim; Arenac; Benzie; Charlevoix; Cheboygan; Clare; Crawford; Emmet; Gladwin; Grand Traverse; Iosco; Kalkaska; Lake; Leelanau; Manistee; Mason; Missaukee; Montmorency; Ogemaw; Osceola; Oscoda; Otsego; Presque Isle; Roscommon; Wexford,projected 2D,,,East,North,X,Y,9001,,4269,12142,1995-06-02 00:00:00,,EPSG,,
-26990,NAD83 / Michigan South,,,,United States (USA) - Michigan - MI_S - counties of Allegan; Barry; Bay; Berrien; Branch; Calhoun; Cass; Clinton; Eaton; Genesee; Gratiot; Hillsdale; Huron; Ingham; Ionia; Isabella; Jackson; Kalamazoo; Kent; Lapeer; Lenawee; Livingston; Macomb; Mecosta; Midland; Monroe; Montcalm; Muskegon; Newaygo; Oakland; Oceana; Ottawa; Saginaw; Sanilac; Shiawassee; St. Clair; St. Joseph; Tuscola; Van Buren; Washtenaw; Wayne,projected 2D,,,East,North,X,Y,9001,,4269,1214 [...]
-26991,NAD83 / Minnesota North,,,,United States (USA) - Minnesota - MN_N - counties of Beltrami; Clearwater; Cook; Itasca; Kittson; Koochiching; Lake; Lake of the Woods; Mahnomen; Marshall; Norman; Pennington; Polk; Red Lake; Roseau; St. Louis,projected 2D,,,East,North,X,Y,9001,,4269,12231,1995-06-02 00:00:00,,EPSG,,
-26992,NAD83 / Minnesota Central,NAD83 / Minnesota Cent.,,,United States (USA) - Minnesota - MN_C - counties of Aitkin; Becker; Benton; Carlton; Cass; Chisago; Clay; Crow Wing; Douglas; Grant; Hubbard; Isanti; Kanabec; Mille Lacs; Morrison; Otter Tail; Pine; Pope; Stearns; Stevens; Todd; Traverse; Wadena; Wilkin,projected 2D,,,East,North,X,Y,9001,,4269,12232,1995-06-02 00:00:00,,EPSG,,
-26993,NAD83 / Minnesota South,,,,United States (USA) - Minnesota - MN_S - counties of Anoka; Big Stone; Blue Earth; Brown; Carver; Chippewa; Cottonwood; Dakota; Dodge; Faribault; Fillmore; Freeborn; Goodhue; Hennepin; Houston; Jackson; Kandiyohi; Lac Qui Parle; Le Sueur; Lincoln; Lyon; Martin; McLeod; Meeker; Mower; Murray; Nicollet; Nobles; Olmsted; Pipestone; Ramsey; Redwood; Renville; Rice; Rock; Scott; Sherburne; Sibley; Steele; Swift; Wabasha; Waseca; Washington; Watonwan; Winona; W [...]
-26994,NAD83 / Mississippi East,,,,United States (USA) - Mississippi - MS_E - counties of Alcorn; Attala; Benton; Calhoun; Chickasaw; Choctaw; Clarke; Clay; Covington; Forrest; George; Greene; Hancock; Harrison; Itawamba; Jackson; Jasper; Jones; Kemper; Lafayette; Lamar; Lauderdale; Leake; Lee; Lowndes; Marshall; Monroe; Neshoba; Newton; Noxubee; Oktibbeha; Pearl River; Perry; Pontotoc; Prentiss; Scott; Smith; Stone; Tippah; Tishomingo; Union; Wayne; Webster; Winston,projected 2D,,,East,N [...]
-26995,NAD83 / Mississippi West,,,,United States (USA) - Mississippi - MS_W - counties of Adams; Amite; Bolivar; Carroll; Claiborne; Coahoma; Copiah; De Soto; Franklin; Grenada; Hinds; Holmes; Humphreys; Issaquena; Jefferson; Jefferson Davis; Lawrence; Leflore; Lincoln; Madison; Marion; Montgomery; Panola; Pike; Quitman; Rankin; Sharkey; Simpson; Sunflower; Tallahatchie; Tate; Tunica; Walthall; Warren; Washington; Wilkinson; Yalobusha; Yazoo,projected 2D,,,East,North,X,Y,9001,,4269,12332, [...]
-26996,NAD83 / Missouri  East,,,,United States (USA) - Missouri - MO_E - counties of Bollinger; Butler; Cape Girardeau; Carter; Clark; Crawford; Dent; Dunklin; Franklin; Gasconade; Iron; Jefferson; Lewis; Lincoln; Madison; Marion; Mississippi; Montgomery; New Madrid; Oregon; Pemiscot; Perry; Pike; Ralls; Reynolds; Ripley; Scott; Shannon; St. Charles; St. Francois; St. Louis; Ste. Genevieve; Stoddard; Warren; Washington; Wayne,projected 2D,,,East,North,X,Y,9001,,4269,12431,1995-06-02 00:00 [...]
-26997,NAD83 / Missouri Central,,,,United States (USA) - Missouri - MO_C - counties of Adair; Audrain; Benton; Boone; Callaway; Camden; Carroll; Chariton; Christian; Cole; Cooper; Dallas; Douglas; Greene; Grundy; Hickory; Howard; Howell; Knox; Laclede; Linn; Livingston; Macon; Maries; Mercer; Miller; Moniteau; Monroe; Morgan; Osage; Ozark; Pettis; Phelps; Polk; Pulaski; Putnam; Randolph; Saline; Schuyler; Scotland; Shelby; Stone; Sullivan; Taney; Texas; Webster; Wright,projected 2D,,,East [...]
-26998,NAD83 / Missouri  West,,,,United States (USA) - Missouri - MO_W - counties of Andrew; Atchison; Barry; Barton; Bates; Buchanan; Caldwell; Cass; Cedar; Clay; Clinton; Dade; Daviess; De Kalb; Gentry; Harrison; Henry; Holt; Jackson; Jasper; Johnson; Lafayette; Lawrence; McDonald; Newton; Nodaway; Platte; Ray; St. Clair; Vernon; Worth,projected 2D,,,East,North,X,Y,9001,,4269,12433,1995-06-02 00:00:00,,EPSG,,
-27038,Nahrwan 1967 / UTM zone 38N,Nahrwan 1967 / UTM 38N,,,Kuwait west of 48 deg East.,projected 2D,,,East,North,E,N,9001,,4270,16038,1996-04-12 00:00:00,,EPSG,,
-27039,Nahrwan 1967 / UTM zone 39N,Nahrwan 1967 / UTM 39N,,,Kuwait east of 48 deg East.  United Arab Emirates (UAE) - Abu Dhabi - west of 54 deg East.,projected 2D,,,East,North,E,N,9001,,4270,16039,1996-04-12 00:00:00,,EPSG,,96.12
-27040,Nahrwan 1967 / UTM zone 40N,Nahrwan 1967 / UTM 40N,,,United Arab Emirates (UAE) - Abu Dhabi east of 54 deg East; Dubai; Sharjah; Ajman; Fujairah; Ras Al Kaimah; Umm Al Qaiwain.,projected 2D,,,East,North,E,N,9001,,4270,16040,1995-06-02 00:00:00,,EPSG,,
-27120,Naparima 1972 / UTM zone 20N,Naparima / UTM 20N,,,Trinidad and Tobago.,projected 2D,,,East,North,E,N,9001,,4271,16020,1995-06-02 00:00:00,,EPSG,,
-27200,GD49 / New Zealand Map Grid,GD49 / NZ Map Grid,,,New Zealand.,projected 2D,,,East,North,E,N,9001,,4272,19917,1995-06-02 00:00:00,,EPSG,Supersedes 27291 (GD49 / North Island Grid) and 27292 (GD49 / South Island Grid).,
-27291,GD49 / North Island Grid,,,,New Zealand - North Island.,projected 2D,,,East,North,E,N,9040,,4272,18141,1999-10-20 00:00:00,,EPSG,Sears 1922 British foot-metre conversion factor applied to ellipsoid.  Superseded by 27200 (GD49 / New Zealand Map Grid).,97.231
-27292,GD49 / South Island Grid,,,,New Zealand - South Island.,projected 2D,,,East,North,E,N,9040,,4272,18142,1999-10-20 00:00:00,,EPSG,Sears 1922 British foot-metre conversion factor applied to ellipsoid.  Superseded by 27200 (GD49 / New Zealand Map Grid).,97.231
-27391,NGO 1948 (Oslo) / NGO zone I,NGO 1948 / I,,,Norway - west of 3deg 30min W of Oslo (7deg 13min 20.5sec E of Greenwich).,projected 2D,,,North,East,x,y,9001,,4817,18221,1999-10-20 00:00:00,,EPSG,Used for large (>1:50000) scale mapping and cadastral work.  To be phased out and replaced by ETRF89 / UTM zone 32N.,
-27392,NGO 1948 (Oslo) / NGO zone II,NGO 1948 / II,,,Norway - between 3deg 30min W and 1deg 10min W of Oslo (7deg 13min 20.5sec E  and 9deg 33min 20.5sec E of Greenwich).,projected 2D,,,North,East,x,y,9001,,4817,18222,1999-10-20 00:00:00,,EPSG,Used for large (>1:50000) scale mapping and cadastral work.  To be phased out and replaced by ETRF89 / UTM zone 32N.,
-27393,NGO 1948 (Oslo) / NGO zone III,NGO 1948 / III,,,Norway - between 1deg 10min W and 1deg 15min E of Oslo (9deg 33min 20.5sec E and 11deg 58min 20.5sec E of Greenwich).,projected 2D,,,North,East,x,y,9001,,4817,18223,1999-10-20 00:00:00,,EPSG,Used for large (>1:50000) scale mapping and cadastral work.  To be phased out and replaced by ETRF89 / UTM zone 32N.,
-27394,NGO 1948 (Oslo) / NGO zone IV,NGO 1948 / IV,,,Norway - between 1deg 15min E and 4deg 20min E of Oslo (11deg 58min 20.5sec E and 15deg 03min 20.5sec E of Greenwich).,projected 2D,,,North,East,x,y,9001,,4817,18224,1999-10-20 00:00:00,,EPSG,Used for large (>1:50000) scale mapping and cadastral work.  To be phased out and replaced by ETRF89 / UTM zone 32N and ETRF89 / UTM zone 33N.,
-27395,NGO 1948 (Oslo) / NGO zone V,NGO 1948 / V,,,Norway - between 4deg 20min E and 8deg 10min E of Oslo (15deg 03min 20.5sec E and 18deg 53min 20.5sec E of Greenwich).,projected 2D,,,North,East,x,y,9001,,4817,18225,1999-10-20 00:00:00,,EPSG,Used for large (>1:50000) scale mapping and cadastral work.  To be phased out and replaced by ETRF89 / UTM zone 33N and ETRF89 / UTM zone 34N.,
-27396,NGO 1948 (Oslo) / NGO zone VI,NGO 1948 / VI,,,Norway - between 8deg 10min E and 12deg 10min E of Oslo (18deg 53min 20.5sec E and 22deg 53min 20.5sec E of Greenwich).,projected 2D,,,North,East,x,y,9001,,4817,18226,1999-10-20 00:00:00,,EPSG,Used for large (>1:50000) scale mapping and cadastral work.  To be phased out and replaced by ETRF89 / UTM zone 34N.,
-27397,NGO 1948 (Oslo) / NGO zone VII,NGO 1948 / VII,,,Norway - between 12deg 10min E and 16deg 15min E of Oslo (22deg 53min 20.5sec E and 26deg 58min 20.5sec E of Greenwich).,projected 2D,,,North,East,x,y,9001,,4817,18227,1999-10-20 00:00:00,,EPSG,Used for large (>1:50000) scale mapping and cadastral work.  To be phased out and replaced by ETRF89 / UTM zone 34N and ETRF89 / UTM zone 35N.,
-27398,NGO 1948 (Oslo) / NGO zone VIII,NGO 1948 / VIII,,,Norway - east of 16deg 15min E of Oslo (26deg 58min 20.5sec E of Greenwich).,projected 2D,,,North,East,x,y,9001,,4817,18228,1999-10-20 00:00:00,,EPSG,Used for large (>1:50000) scale mapping and cadastral work.  To be phased out and replaced by ETRF89 / UTM zone 35N.,
-27429,Datum 73 / UTM zone 29N,,,,Portugal - onshore.,projected 2D,,,East,North,E,N,9001,,4274,16029,1995-06-02 00:00:00,,EPSG,,
-27500,ATF (Paris) / Nord de Guerre,ATF / Nord de Guerre,,,France - Alsace.,projected 2D,,,East,North,X,Y,9001,,4901,19903,1995-06-02 00:00:00,,EPSG,,
-27581,NTF (Paris) / France I,NTF / France I,,,France north of 53.5 grads (48 deg 09 min) North.,projected 2D,,,East,North,X,Y,9001,,4807,18081,1996-04-12 00:00:00,,EPSG,Introduced 1972. Supersedes NTF / Nord France (code 27591).,95.26
-27582,NTF (Paris) / France II,NTF / France II,,,France 50.5 to 53.5 grads (45 deg 27 min to 48 deg 09 min) North. Also used over all mainlanf France.,projected 2D,,,East,North,X,Y,9001,,4807,18082,1996-04-12 00:00:00,,EPSG,Introduced 1972. Supersedes NTF / Centre France (code 27592).,95.26
-27583,NTF (Paris) / France III,NTF / France III,,,France south of 50.5 grads (45 deg 27 min) North.,projected 2D,,,East,North,X,Y,9001,,4807,18083,1996-04-12 00:00:00,,EPSG,Introduced 1972. Supersedes NTF / Sud France (code 27593).,95.26
-27584,NTF (Paris) / France IV,NTF / France IV,,,France - Corsica,projected 2D,,,East,North,X,Y,9001,,4807,18084,1996-04-12 00:00:00,,EPSG,Introduced 1972. Supersedes NTF / Corse (code 27594).,
-27591,NTF (Paris) / Nord France,NTF / Nord France,,,France north of 53.5 grads (48 deg 09 min) North.,projected 2D,,,East,North,X,Y,9001,,4807,18091,1996-04-12 00:00:00,,EPSG,Superseded by NTF / France I (code 27581) from 1972.,95.26
-27592,NTF (Paris) / Centre France,NTF / Centre France,,,France 50.5 to 53.5 grads (45 deg 27 min to 48 deg 09 min) North.,projected 2D,,,East,North,X,Y,9001,,4807,18092,1996-04-12 00:00:00,,EPSG,Superseded by NTF / France II (code 27582) from 1972.,95.26
-27593,NTF (Paris) / Sud France,NTF / Sud France,,,France south of 50.5 grads (45 deg 27 min) North.,projected 2D,,,East,North,X,Y,9001,,4807,18093,1996-04-12 00:00:00,,EPSG,Superseded by NTF / France III (code 27583) from 1972.,95.26
-27594,NTF (Paris) / Corse,NTF / Corse,,,France - Corsica,projected 2D,,,East,North,X,Y,9001,,4807,18094,1996-04-12 00:00:00,,EPSG,Superseded by NTF / France IV (code 27584) from 1972.,
-27700,OSGB 1936 / British National Grid,British National Grid,,,United Kingdom (UK) - onshore England; Scotland; Wales; Isle of Man.,projected 2D,,,East,North,E,N,9001,,4277,19916,1995-06-02 00:00:00,,EPSG,,
-28191,Palestine 1923 / Palestine Grid,Palestine Grid,,,Israel; Jordan,projected 2D,,,East,North,E,N,9001,,4281,18201,1999-04-22 00:00:00,,EPSG,,
-28192,Palestine 1923 / Palestine Belt,Palestine Belt,,,Israel; Jordan,projected 2D,,,East,North,E,N,9001,,4281,18202,1999-04-22 00:00:00,,EPSG,,
-28193,Palestine 1923 / Israeli CS Grid,Israeli CS Grid,,,Israel.,projected 2D,,,East,North,E,N,9001,,4281,18203,1999-10-20 00:00:00,Survey of Israel.,EPSG,Superceded by Israeli TM Grid (EPSG code 239).,
-28232,Pointe Noire / UTM zone 32S,Point Noire / UTM 32S,,,Congo.,projected 2D,,,East,North,E,N,9001,,4282,16132,1995-06-02 00:00:00,,EPSG,,
-28348,GDA94 / MGA zone 48,,,,Australia - 102deg East  to 108deg East.,projected 2D,,,East,North,E,N,9001,,4283,17348,1995-06-02 00:00:00,,EPSG,,
-28349,GDA94 / MGA zone 49,,,,Australia - 108deg East  to 114deg East.,projected 2D,,,East,North,E,N,9001,,4283,17349,1995-06-02 00:00:00,,EPSG,,
-28350,GDA94 / MGA zone 50,,,,Australia - 114deg East  to 120deg East.,projected 2D,,,East,North,E,N,9001,,4283,17350,1995-06-02 00:00:00,,EPSG,,
-28351,GDA94 / MGA zone 51,,,,Australia - 120deg East  to 126deg East.,projected 2D,,,East,North,E,N,9001,,4283,17351,1995-06-02 00:00:00,,EPSG,,
-28352,GDA94 / MGA zone 52,,,,Australia - 126deg East  to 132deg East.,projected 2D,,,East,North,E,N,9001,,4283,17352,1995-06-02 00:00:00,,EPSG,,
-28353,GDA94 / MGA zone 53,,,,Australia - 132deg East  to 138deg East.,projected 2D,,,East,North,E,N,9001,,4283,17353,1995-06-02 00:00:00,,EPSG,,
-28354,GDA94 / MGA zone 54,,,,Australia - 138deg East  to 144deg East.,projected 2D,,,East,North,E,N,9001,,4283,17354,1995-06-02 00:00:00,,EPSG,,
-28355,GDA94 / MGA zone 55,,,,Australia - 144deg East  to 150deg East.,projected 2D,,,East,North,E,N,9001,,4283,17355,1995-06-02 00:00:00,,EPSG,,
-28356,GDA94 / MGA zone 56,,,,Australia - 150deg East  to 156deg East.,projected 2D,,,East,North,E,N,9001,,4283,17356,1995-06-02 00:00:00,,EPSG,,
-28357,GDA94 / MGA zone 57,,,,Australia - 156deg East  to 162deg East.,projected 2D,,,East,North,E,N,9001,,4283,17357,1995-06-02 00:00:00,,EPSG,,
-28358,GDA94 / MGA zone 58,,,,Australia - 162deg East  to 168deg East.,projected 2D,,,East,North,E,N,9001,,4283,17358,1995-06-02 00:00:00,,EPSG,,
-28402,Pulkovo 1942 / Gauss-Kruger zone 2,1942 Coord. Sys. zone 2,,,Czech Republic and Germany (former DDR) - west of 12 deg East.,projected 2D,,,North,East,X,Y,9001,,4284,16202,1998-06-30 00:00:00,,EPSG,,
-28403,Pulkovo 1942 / Gauss-Kruger zone 3,1942 Coord. Sys. zone 3,,,Czech Republic and Germany ( former DDR) - east of 12 deg East; Poland and Slovakia - west of 18 deg East.,projected 2D,,,North,East,X,Y,9001,,4284,16203,1998-06-30 00:00:00,,EPSG,,
-28404,Pulkovo 1942 / Gauss-Kruger zone 4,1942 Coord. Sys. zone 4,,,Estonia; Latvia; Lithuania; Russia; Ukraine; - west of 24 deg East; Poland - east of 24 deg East; Slovakia east of 18 deg East.,projected 2D,,,North,East,X,Y,9001,,4284,16204,1995-06-02 00:00:00,,EPSG,,
-28405,Pulkovo 1942 / Gauss-Kruger zone 5,1942 Coord. Sys. zone 5,,,Belarus - west of 30 deg East;  Estonia; Latvia & Lithuania - east of 24 deg East;  Moldova;  Russia &  Ukraine - 24 deg to 30 deg East.,projected 2D,,,North,East,X,Y,9001,,4284,16205,1995-06-02 00:00:00,,EPSG,,
-28406,Pulkovo 1942 / Gauss-Kruger zone 6,1942 Coord. Sys. zone 6,,,Belarus - east of 30 deg East;  Russia  &  Ukraine  - 30 deg to 36 deg East.,projected 2D,,,North,East,X,Y,9001,,4284,16206,1995-06-02 00:00:00,,EPSG,,
-28407,Pulkovo 1942 / Gauss-Kruger zone 7,1942 Coord. Sys. zone 7,,,Georgia - west of 36 deg East;  Russia  - 36 deg to 42 deg East;  Ukraine - east of 36 deg East.,projected 2D,,,North,East,X,Y,9001,,4284,16207,1995-06-02 00:00:00,,EPSG,,
-28408,Pulkovo 1942 / Gauss-Kruger zone 8,1942 Coord. Sys. zone 8,,,Armenia  Azerbaijan - west of 48 deg East;  Georgia - east of 42 deg East;  Russia - 42 deg to 48 deg East.,projected 2D,,,North,East,X,Y,9001,,4284,16208,1995-06-02 00:00:00,,EPSG,,
-28409,Pulkovo 1942 / Gauss-Kruger zone 9,1942 Coord. Sys. zone 9,,,Azerbaijan - east of 48 deg East;  Kazakstan - west of 54 deg East;  Russia - 48 deg to 54 deg East;  Turkmenistan - west of 54 deg East.,projected 2D,,,North,East,X,Y,9001,,4284,16209,1995-06-02 00:00:00,,EPSG,,
-28410,Pulkovo 1942 / Gauss-Kruger zone 10,1942 Coord. Sys. zone 10,,,Kazakstan;  Russia;  Turkmenistan  - 54 deg  to 60 deg East; Uzbekistan - west of 60 deg East.,projected 2D,,,North,East,X,Y,9001,,4284,16210,1995-06-02 00:00:00,,EPSG,,
-28411,Pulkovo 1942 / Gauss-Kruger zone 11,1942 Coord. Sys. zone 11,,,Kazakstan;  Russia;  Uzbekistan - 60 deg to 66 deg East;  Turkmenistan - east of 60 deg East.,projected 2D,,,North,East,X,Y,9001,,4284,16211,1995-06-02 00:00:00,,EPSG,,
-28412,Pulkovo 1942 / Gauss-Kruger zone 12,1942 Coord. Sys. zone 12,,,Kazakstan &  Russia - 66 deg to 72 deg East;  Kirgistan & Tadzhikstan - west of 72 deg East;  Uzbekistan - east of 66 deg East.,projected 2D,,,North,East,X,Y,9001,,4284,16212,1995-06-02 00:00:00,,EPSG,,
-28413,Pulkovo 1942 / Gauss-Kruger zone 13,1942 Coord. Sys. zone 13,,,Kazakstan;  Kirgizstan;  Russia - 72 deg to 78 deg East;  Tadzhikstan - east of 72 deg East.,projected 2D,,,North,East,X,Y,9001,,4284,16213,1995-06-02 00:00:00,,EPSG,,
-28414,Pulkovo 1942 / Gauss-Kruger zone 14,1942 Coord. Sys. zone 14,,,Kazakstan &  Russia - 78 deg to 84 deg East; Kirgizstan - east of 78 deg East.,projected 2D,,,North,East,X,Y,9001,,4284,16214,1995-06-02 00:00:00,,EPSG,,
-28415,Pulkovo 1942 / Gauss-Kruger zone 15,1942 Coord. Sys. zone 15,,,Kazakstan - east of 84 deg East;  Russia - 84 deg to 90 deg East.,projected 2D,,,North,East,X,Y,9001,,4284,16215,1995-06-02 00:00:00,,EPSG,,
-28416,Pulkovo 1942 / Gauss-Kruger zone 16,1942 Coord. Sys. zone 16,,,Russia - 90 deg to 96 deg East.,projected 2D,,,North,East,X,Y,9001,,4284,16216,1995-06-02 00:00:00,,EPSG,,
-28417,Pulkovo 1942 / Gauss-Kruger zone 17,1942 Coord. Sys. zone 17,,,Russia - 96 deg to 102deg East.,projected 2D,,,North,East,X,Y,9001,,4284,16217,1995-06-02 00:00:00,,EPSG,,
-28418,Pulkovo 1942 / Gauss-Kruger zone 18,1942 Coord. Sys. zone 18,,,Russia - 102 deg to 108 deg East.,projected 2D,,,North,East,X,Y,9001,,4284,16218,1995-06-02 00:00:00,,EPSG,,
-28419,Pulkovo 1942 / Gauss-Kruger zone 19,1942 Coord. Sys. zone 19,,,Russia - 108 deg to 114 deg East.,projected 2D,,,North,East,X,Y,9001,,4284,16219,1995-06-02 00:00:00,,EPSG,,
-28420,Pulkovo 1942 / Gauss-Kruger zone 20,1942 Coord. Sys. zone 20,,,Russia - 114 deg to 120 deg East.,projected 2D,,,North,East,X,Y,9001,,4284,16220,1995-06-02 00:00:00,,EPSG,,
-28421,Pulkovo 1942 / Gauss-Kruger zone 21,1942 Coord. Sys. zone 21,,,Russia - 120 deg to 126 deg East.,projected 2D,,,North,East,X,Y,9001,,4284,16221,1995-06-02 00:00:00,,EPSG,,
-28422,Pulkovo 1942 / Gauss-Kruger zone 22,1942 Coord. Sys. zone 22,,,Russia - 126 deg to 132 deg East.,projected 2D,,,North,East,X,Y,9001,,4284,16222,1995-06-02 00:00:00,,EPSG,,
-28423,Pulkovo 1942 / Gauss-Kruger zone 23,1942 Coord. Sys. zone 23,,,Russia - 132 deg to 138 deg East.,projected 2D,,,North,East,X,Y,9001,,4284,16223,1995-06-02 00:00:00,,EPSG,,
-28424,Pulkovo 1942 / Gauss-Kruger zone 24,1942 Coord. Sys. zone 24,,,Russia - 138 deg to 144 deg East.,projected 2D,,,North,East,X,Y,9001,,4284,16224,1995-06-02 00:00:00,,EPSG,,
-28425,Pulkovo 1942 / Gauss-Kruger zone 25,1942 Coord. Sys. zone 25,,,Russia - 144 deg to 150 deg East.,projected 2D,,,North,East,X,Y,9001,,4284,16225,1995-06-02 00:00:00,,EPSG,,
-28426,Pulkovo 1942 / Gauss-Kruger zone 26,1942 Coord. Sys. zone 26,,,Russia - 150 deg to 156 deg East.,projected 2D,,,North,East,X,Y,9001,,4284,16226,1995-06-02 00:00:00,,EPSG,,
-28427,Pulkovo 1942 / Gauss-Kruger zone 27,1942 Coord. Sys. zone 27,,,Russia - 156 deg to 162 deg East.,projected 2D,,,North,East,X,Y,9001,,4284,16227,1995-06-02 00:00:00,,EPSG,,
-28428,Pulkovo 1942 / Gauss-Kruger zone 28,1942 Coord. Sys. zone 28,,,Russia - 162 deg to 168 deg East.,projected 2D,,,North,East,X,Y,9001,,4284,16228,1995-06-02 00:00:00,,EPSG,,
-28429,Pulkovo 1942 / Gauss-Kruger zone 29,1942 Coord. Sys. zone 29,,,Russia - 168 deg to 174 deg East.,projected 2D,,,North,East,X,Y,9001,,4284,16229,1995-06-02 00:00:00,,EPSG,,
-28430,Pulkovo 1942 / Gauss-Kruger zone 30,1942 Coord. Sys. zone 30,,,Russia - 174 deg East to 180 deg.,projected 2D,,,North,East,X,Y,9001,,4284,16230,1995-06-02 00:00:00,,EPSG,,
-28431,Pulkovo 1942 / Gauss-Kruger zone 31,1942 Coord. Sys. zone 31,,,Russia - 180 deg to 174 deg West.,projected 2D,,,North,East,X,Y,9001,,4284,16231,1995-06-02 00:00:00,,EPSG,,
-28432,Pulkovo 1942 / Gauss-Kruger zone 32,1942 Coord. Sys. zone 32,,,Russia - east of 174 deg West.,projected 2D,,,North,East,X,Y,9001,,4284,16232,1995-06-02 00:00:00,,EPSG,,
-28462,Pulkovo 1942 / Gauss-Kruger 2N,Pulkovo / Gauss 2N,,,Czech Republic and Germany (former DDR) - west of 12 deg East.,projected 2D,,,North,East,X,Y,9001,,4284,16302,1998-06-30 00:00:00,,EPSG,,
-28463,Pulkovo 1942 / Gauss-Kruger 3N,Pulkovo / Gauss 3N,,,Czech Republic and Germany ( former DDR) - east of 12 deg East; Poland and Slovakia - west of 18 deg East.,projected 2D,,,North,East,X,Y,9001,,4284,16303,1998-06-30 00:00:00,,EPSG,,
-28464,Pulkovo 1942 / Gauss-Kruger 4N,Pulkovo / Gauss 4N,,,Estonia; Latvia; Lithuania; Russia; Ukraine; - west of 24 deg East; Poland - east of 24 deg East; Slovakia east of 18 deg East.,projected 2D,,,North,East,X,Y,9001,,4284,16304,1995-06-02 00:00:00,,EPSG,,
-28465,Pulkovo 1942 / Gauss-Kruger 5N,Pulkovo / Gauss 5N,,,Belarus - west of 30 deg East;  Estonia; Latvia & Lithuania - east of 24 deg East;  Moldova;  Russia &  Ukraine - 24 deg to 30 deg East.,projected 2D,,,North,East,X,Y,9001,,4284,16305,1995-06-02 00:00:00,,EPSG,,
-28466,Pulkovo 1942 / Gauss-Kruger 6N,Pulkovo / Gauss 6N,,,Belarus - east of 30 deg East;  Russia  &  Ukraine  - 30 deg to 36 deg East.,projected 2D,,,North,East,X,Y,9001,,4284,16306,1995-06-02 00:00:00,,EPSG,,
-28467,Pulkovo 1942 / Gauss-Kruger 7N,Pulkovo / Gauss 7N,,,Georgia - west of 36 deg East;  Russia  - 36 deg to 42 deg East;  Ukraine - east of 36 deg East.,projected 2D,,,North,East,X,Y,9001,,4284,16307,1995-06-02 00:00:00,,EPSG,,
-28468,Pulkovo 1942 / Gauss-Kruger 8N,Pulkovo / Gauss 8N,,,Armenia - west of 48 deg East;  Azerbaijan - west of 48 deg East;  Georgia - east of 42 deg East;  Russia - 42 deg to 48 deg East.,projected 2D,,,North,East,X,Y,9001,,4284,16308,1995-06-02 00:00:00,,EPSG,,
-28469,Pulkovo 1942 / Gauss-Kruger 9N,Pulkovo / Gauss 9N,,,Azerbaijan - east of 48 deg East;  Kazakstan - west of 54 deg East;  Russia - 48 deg to 54 deg East;  Turkmenistan - west of 54 deg East.,projected 2D,,,North,East,X,Y,9001,,4284,16309,1995-06-02 00:00:00,,EPSG,,
-28470,Pulkovo 1942 / Gauss-Kruger 10N,Pulkovo / Gauss 10N,,,Kazakstan;  Russia;  Turkmenistan  - 54 deg  to 60 deg East;  Uzbekistan - west of 60 deg East.,projected 2D,,,North,East,X,Y,9001,,4284,16310,1995-06-02 00:00:00,,EPSG,,
-28471,Pulkovo 1942 / Gauss-Kruger 11N,Pulkovo / Gauss 11N,,,Kazakstan;  Russia;  Uzbekistan - 60 deg to 66 deg East;  Turkmenistan - east of 60 deg East.,projected 2D,,,North,East,X,Y,9001,,4284,16311,1995-06-02 00:00:00,,EPSG,,
-28472,Pulkovo 1942 / Gauss-Kruger 12N,Pulkovo / Gauss 12N,,,Kazakstan &  Russia - 66 deg to 72 deg East;  Kirgistan & Tadzhikstan - west of 72 deg East;  Uzbekistan - east of 66 deg East.,projected 2D,,,North,East,X,Y,9001,,4284,16312,1995-06-02 00:00:00,,EPSG,,
-28473,Pulkovo 1942 / Gauss-Kruger 13N,Pulkovo / Gauss 13N,,,Kazakstan;  Kirgizstan;  Russia - 72 deg to 78 deg East;  Tadzhikstan - east of 72 deg East.,projected 2D,,,North,East,X,Y,9001,,4284,16313,1995-06-02 00:00:00,,EPSG,,
-28474,Pulkovo 1942 / Gauss-Kruger 14N,Pulkovo / Gauss 14N,,,Kazakstan &  Russia - 78 deg to 84 deg East;  Kirgizstan - east of 78 deg East.,projected 2D,,,North,East,X,Y,9001,,4284,16314,1995-06-02 00:00:00,,EPSG,,
-28475,Pulkovo 1942 / Gauss-Kruger 15N,Pulkovo / Gauss 15N,,,Kazakstan - east of 84 deg East;  Russia - 84 deg to 90 deg East.,projected 2D,,,North,East,X,Y,9001,,4284,16315,1995-06-02 00:00:00,,EPSG,,
-28476,Pulkovo 1942 / Gauss-Kruger 16N,Pulkovo / Gauss 16N,,,Russia - 90 deg to 96 deg East.,projected 2D,,,North,East,X,Y,9001,,4284,16316,1995-06-02 00:00:00,,EPSG,,
-28477,Pulkovo 1942 / Gauss-Kruger 17N,Pulkovo / Gauss 17N,,,Russia - 96 deg to 102deg East.,projected 2D,,,North,East,X,Y,9001,,4284,16317,1995-06-02 00:00:00,,EPSG,,
-28478,Pulkovo 1942 / Gauss-Kruger 18N,Pulkovo / Gauss 18N,,,Russia - 102 deg to 108 deg East.,projected 2D,,,North,East,X,Y,9001,,4284,16318,1995-06-02 00:00:00,,EPSG,,
-28479,Pulkovo 1942 / Gauss-Kruger 19N,Pulkovo / Gauss 19N,,,Russia - 108 deg to 114 deg East.,projected 2D,,,North,East,X,Y,9001,,4284,16319,1995-06-02 00:00:00,,EPSG,,
-28480,Pulkovo 1942 / Gauss-Kruger 20N,Pulkovo / Gauss 20N,,,Russia - 114 deg to 120 deg East.,projected 2D,,,North,East,X,Y,9001,,4284,16320,1995-06-02 00:00:00,,EPSG,,
-28481,Pulkovo 1942 / Gauss-Kruger 21N,Pulkovo / Gauss 21N,,,Russia - 120 deg to 126 deg East.,projected 2D,,,North,East,X,Y,9001,,4284,16321,1995-06-02 00:00:00,,EPSG,,
-28482,Pulkovo 1942 / Gauss-Kruger 22N,Pulkovo / Gauss 22N,,,Russia - 126 deg to 132 deg East.,projected 2D,,,North,East,X,Y,9001,,4284,16322,1995-06-02 00:00:00,,EPSG,,
-28483,Pulkovo 1942 / Gauss-Kruger 23N,Pulkovo / Gauss 23N,,,Russia - 132 deg to 138 deg East.,projected 2D,,,North,East,X,Y,9001,,4284,16323,1995-06-02 00:00:00,,EPSG,,
-28484,Pulkovo 1942 / Gauss-Kruger 24N,Pulkovo / Gauss 24N,,,Russia - 138 deg to 144 deg East.,projected 2D,,,North,East,X,Y,9001,,4284,16324,1995-06-02 00:00:00,,EPSG,,
-28485,Pulkovo 1942 / Gauss-Kruger 25N,Pulkovo / Gauss 25N,,,Russia - 144 deg to 150 deg East.,projected 2D,,,North,East,X,Y,9001,,4284,16325,1995-06-02 00:00:00,,EPSG,,
-28486,Pulkovo 1942 / Gauss-Kruger 26N,Pulkovo / Gauss 26N,,,Russia - 150 deg to 156 deg East.,projected 2D,,,North,East,X,Y,9001,,4284,16326,1995-06-02 00:00:00,,EPSG,,
-28487,Pulkovo 1942 / Gauss-Kruger 27N,Pulkovo / Gauss 27N,,,Russia - 156 deg to 162 deg East.,projected 2D,,,North,East,X,Y,9001,,4284,16327,1995-06-02 00:00:00,,EPSG,,
-28488,Pulkovo 1942 / Gauss-Kruger 28N,Pulkovo / Gauss 28N,,,Russia - 162 deg to 168 deg East.,projected 2D,,,North,East,X,Y,9001,,4284,16328,1995-06-02 00:00:00,,EPSG,,
-28489,Pulkovo 1942 / Gauss-Kruger 29N,Pulkovo / Gauss 29N,,,Russia - 168 deg to 174 deg East.,projected 2D,,,North,East,X,Y,9001,,4284,16329,1995-06-02 00:00:00,,EPSG,,
-28490,Pulkovo 1942 / Gauss-Kruger 30N,Pulkovo / Gauss 30N,,,Russia - 174 deg East to 180 deg.,projected 2D,,,North,East,X,Y,9001,,4284,16330,1995-06-02 00:00:00,,EPSG,,
-28491,Pulkovo 1942 / Gauss-Kruger 31N,Pulkovo / Gauss 31N,,,Russia - 180 deg to 174 deg West.,projected 2D,,,North,East,X,Y,9001,,4284,16331,1995-06-02 00:00:00,,EPSG,,
-28492,Pulkovo 1942 / Gauss-Kruger 32N,Pulkovo / Gauss 32N,,,Russia - east of 174 deg West.,projected 2D,,,North,East,X,Y,9001,,4284,16332,1995-06-02 00:00:00,,EPSG,,
-28600,Qatar / Qatar National Grid,Qatar National Grid,,,Qatar - onshore.,projected 2D,,,East,North,E,N,9001,,4286,19919,1995-06-02 00:00:00,,EPSG,,
-28991,RD / Netherlands Old,,,,Netherlands - onshore.,projected 2D,,,East,North,X,Y,9001,,4289,19913,1995-06-02 00:00:00,,EPSG,Superseded by 28992 (RD / Netherlands New).,
-28992,RD / Netherlands New,,,,Netherlands - onshore.,projected 2D,,,East,North,X,Y,9001,,4289,19914,1995-06-02 00:00:00,,EPSG,Supersedes 28991 (RD / Netherlands Old).,
-29100,SAD69 / Brazil Polyconic,,,,Brazil,projected 2D,,,East,North,X,Y,9001,,4291,19941,1999-04-22 00:00:00,PetroBras,EPSG,,
-29118,SAD69 / UTM zone 18N,,,,South America - 78deg West to 72deg West; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4291,16018,1995-06-02 00:00:00,,EPSG,Uses GRS67 ellipsoid with 1/f to exactly 2 decimal places.  Precision of ellipsoid entry increased from 2 to 5 dp with change id 97.251.  Error introduced if not using the truncated precision will not exceed 5 cm.,97.252
-29119,SAD69 / UTM zone 19N,,,,South America - 72deg West to 66deg West; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4291,16019,1995-06-02 00:00:00,,EPSG,Uses GRS67 ellipsoid with 1/f to exactly 2 decimal places.  Precision of ellipsoid entry increased from 2 to 5 dp with change id 97.252.  Error introduced if not using the truncated precision will not exceed 5 cm.,97.252
-29120,SAD69 / UTM zone 20N,,,,South America - 66deg West to 60deg West; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4291,16020,1995-06-02 00:00:00,,EPSG,Uses GRS67 ellipsoid with 1/f to exactly 2 decimal places.  Precision of ellipsoid entry increased from 2 to 5 dp with change id 97.252.  Error introduced if not using the truncated precision will not exceed 5 cm.,97.252
-29121,SAD69 / UTM zone 21N,,,,South America - 60deg West to 54deg West; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4291,16021,1995-06-02 00:00:00,,EPSG,Uses GRS67 ellipsoid with 1/f to exactly 2 decimal places.  Precision of ellipsoid entry increased from 2 to 5 dp with change id 97.252.  Error introduced if not using the truncated precision will not exceed 5 cm.,97.252
-29122,SAD69 / UTM zone 22N,,,,South America - 54deg West to 48deg West; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4291,16022,1995-06-02 00:00:00,,EPSG,Uses GRS67 ellipsoid with 1/f to exactly 2 decimal places.  Precision of ellipsoid entry increased from 2 to 5 dp with change id 97.252.  Error introduced if not using the truncated precision will not exceed 5 cm.,97.252
-29177,SAD69 / UTM zone 17S,,,,South America - 84deg West to 78deg West; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4291,16117,1995-06-02 00:00:00,,EPSG,Uses GRS67 ellipsoid with 1/f to exactly 2 decimal places.  Precision of ellipsoid entry increased from 2 to 5 dp with change id 97.252.  Error introduced if not using the truncated precision will not exceed 5 cm.,97.252
-29178,SAD69 / UTM zone 18S,,,,South America - Brazil - 78deg West to 72deg West; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4291,16118,1995-06-02 00:00:00,,EPSG,Uses GRS67 ellipsoid with 1/f to exactly 2 decimal places.  Precision of ellipsoid entry increased from 2 to 5 dp with change id 97.252.  Error introduced if not using the truncated precision will not exceed 5 cm.,97.252
-29179,SAD69 / UTM zone 19S,,,,South America - Brazil - 72deg West to 66deg West; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4291,16119,1995-06-02 00:00:00,,EPSG,Uses GRS67 ellipsoid with 1/f to exactly 2 decimal places.  Precision of ellipsoid entry increased from 2 to 5 dp with change id 97.252.  Error introduced if not using the truncated precision will not exceed 5 cm.,97.252
-29180,SAD69 / UTM zone 20S,,,,South America - Brazil - 66deg West to 60deg West; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4291,16120,1995-06-02 00:00:00,,EPSG,Uses GRS67 ellipsoid with 1/f to exactly 2 decimal places.  Precision of ellipsoid entry increased from 2 to 5 dp with change id 97.252.  Error introduced if not using the truncated precision will not exceed 5 cm.,97.252
-29181,SAD69 / UTM zone 21S,,,,South America - Brazil - 60deg West to 54deg West; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4291,16121,1995-06-02 00:00:00,,EPSG,Uses GRS67 ellipsoid with 1/f to exactly 2 decimal places.  Precision of ellipsoid entry increased from 2 to 5 dp with change id 97.252.  Error introduced if not using the truncated precision will not exceed 5 cm.,97.252
-29182,SAD69 / UTM zone 22S,,,,South America - Brazil - 54deg West to 48deg West; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4291,16122,1995-06-02 00:00:00,,EPSG,Uses GRS67 ellipsoid with 1/f to exactly 2 decimal places.  Precision of ellipsoid entry increased from 2 to 5 dp with change id 97.252.  Error introduced if not using the truncated precision will not exceed 5 cm.,97.252
-29183,SAD69 / UTM zone 23S,,,,South America - 48deg West to 42deg West.,projected 2D,,,East,North,E,N,9001,,4291,16123,1995-06-02 00:00:00,,EPSG,Uses GRS67 ellipsoid with 1/f to exactly 2 decimal places.  Precision of ellipsoid entry increased from 2 to 5 dp with change id 97.252.  Error introduced if not using the truncated precision will not exceed 5 cm.,97.252
-29184,SAD69 / UTM zone 24S,,,,South America - Brazil - 42deg West to 36deg West.,projected 2D,,,East,North,E,N,9001,,4291,16124,1995-06-02 00:00:00,,EPSG,Uses GRS67 ellipsoid with 1/f to exactly 2 decimal places.  Precision of ellipsoid entry increased from 2 to 5 dp with change id 97.252.  Error introduced if not using the truncated precision will not exceed 5 cm.,97.252
-29185,SAD69 / UTM zone 25S,,,,South America - 36deg West to 30deg West.,projected 2D,,,East,North,E,N,9001,,4291,16125,1995-06-02 00:00:00,,EPSG,Uses GRS67 ellipsoid with 1/f to exactly 2 decimal places.  Precision of ellipsoid entry increased from 2 to 5 dp with change id 97.252.  Error introduced if not using the truncated precision will not exceed 5 cm.,97.252
-29220,Sapper Hill 1943 / UTM zone 20S,Sapper Hill / UTM 20S,,,Falkland Islands - west of 60 deg West.,projected 2D,,,East,North,E,N,9001,,4292,16120,1995-06-02 00:00:00,,EPSG,,
-29221,Sapper Hill 1943 / UTM zone 21S,Sapper Hill / UTM 21S,,,Falkland Islands - east of 60 deg West.,projected 2D,,,East,North,E,N,9001,,4292,16121,1995-06-02 00:00:00,,EPSG,,
-29333,Schwarzeck / UTM zone 33S,Schwarzeck / UTM 33S,,,Namibia - offshore.,projected 2D,,,East,North,E,N,9001,,4293,16133,1996-04-12 00:00:00,,EPSG,,
-29371,South West African Coord. System zone 11,SW African CS zone 11,,,Namibia - west of 12 deg East.,projected 2D,,,West,South,W,S,9031,,4293,17611,1997-06-16 00:00:00,,EPSG,,97.16
-29373,South West African Coord. System zone 13,SW African CS zone 13,,,Namibia - 12 to 14 deg East.,projected 2D,,,West,South,W,S,9031,,4293,17613,1997-06-16 00:00:00,,EPSG,,97.16
-29375,South West African Coord. System zone 15,SW African CS zone 15,,,Namibia - 14 to 16 deg East.,projected 2D,,,West,South,W,S,9031,,4293,17615,1997-06-16 00:00:00,,EPSG,,97.16
-29377,South West African Coord. System zone 17,SW African CS zone 17,,,Namibia - 16 to 18 deg East.,projected 2D,,,West,South,W,S,9031,,4293,17617,1997-06-16 00:00:00,,EPSG,,97.16
-29379,South West African Coord. System zone 19,SW African CS zone 19,,,Namibia - 18 to 20 deg East.,projected 2D,,,West,South,W,S,9031,,4293,17619,1997-06-16 00:00:00,,EPSG,,97.16
-29381,South West African Coord. System zone 21,SW African CS zone 21,,,Namibia - 20 to 22 deg East.,projected 2D,,,West,South,W,S,9031,,4293,17621,1997-06-16 00:00:00,,EPSG,,97.16
-29383,South West African Coord. System zone 23,SW African CS zone 23,,,Namibia - 22 to 24 deg East.,projected 2D,,,West,South,W,S,9031,,4293,17623,1997-06-16 00:00:00,,EPSG,,97.16
-29385,South West African Coord. System zone 25,SW African CS zone 25,,,Namibia - east of 24 deg East.,projected 2D,,,West,South,W,S,9031,,4293,17625,1997-06-16 00:00:00,,EPSG,,97.16
-29635,Sudan / UTM zone 35N,,,,Sudan - south - west of 30 deg East.,projected 2D,,,East,North,E,N,9001,,4296,16035,1995-06-02 00:00:00,,EPSG,,
-29636,Sudan / UTM zone 36N,,,,Sudan - south - east of 30 deg East.,projected 2D,,,East,North,E,N,9001,,4296,16036,1995-06-02 00:00:00,,EPSG,,
-29700,Tananarive (Paris) / Laborde Grid,Tananarive  / Laborde,,,Madagascar.,projected 2D,,,East,North,X,Y,9001,,4810,19911,1995-06-02 00:00:00,,EPSG,,
-29738,Tananarive / UTM zone 38S,Tananarive / UTM 38S,,,Madagascar - offshore west of 48 deg East.,projected 2D,,,East,North,E,N,9001,,4297,16138,1995-06-02 00:00:00,,EPSG,,
-29739,Tananarive / UTM zone 39S,Tananarive / UTM 39S,,,Madagascar - offshore east of 48 deg East.,projected 2D,,,East,North,E,N,9001,,4297,16139,1995-06-02 00:00:00,,EPSG,,
-29849,Timbalai 1948 / UTM zone 49N,Timbalai 1948 / UTM 49N,,,Brunei - offshore; Malaysia - East Malaysia (Sarawak).,projected 2D,,,East,North,E,N,9001,,4298,16049,1995-06-02 00:00:00,,EPSG,,
-29850,Timbalai 1948 / UTM zone 50N,Timbalai 1948 / UTM 50N,,,Brunei - offshore; Malaysia - East Malaysia (Sabah).,projected 2D,,,East,North,E,N,9001,,4298,16050,1995-06-02 00:00:00,,EPSG,,
-29871,Timbalai 1948 / R.S.O. Borneo (ch),Timbalai  / Borneo (ch),,,Malaysia - East Malaysia (Sabah; Sarawak).,projected 2D,,,East,North,E,N,9042,,4298,19912,1999-10-20 00:00:00,,EPSG,Adopts metric conversion of 39.370147 inches per metre.,97.231
-29872,Timbalai 1948 / R.S.O. Borneo (ft),Timbalai  / Borneo (ft),,,Brunei; Malaysia - East Malaysia (Sabah; Sarawak).,projected 2D,,,East,North,E,N,9041,,4298,19912,1999-10-20 00:00:00,,EPSG,Original projection definition in chains.  1 chain = 66 feet=792 inches.  Adopts metric conversion of 39.370147 inches per metre.,97.231
-29873,Timbalai 1948 / R.S.O. Borneo (m),Timbalai  / Borneo (m),,,Brunei.,projected 2D,,,East,North,E,N,9001,,4298,19912,1997-07-22 00:00:00,,EPSG,Original projection definition in chains.  1 chain = 66 feet=792 inches.  Adopts metric conversion of 39.370147 inches per metre.,
-29900,TM65 / Irish National Grid,TM65 / Irish Nat Grid,,,Ireland - onshore; United Kingdom (UK) - Northern Ireland (Ulster) onshore,projected 2D,,,East,North,E,N,9001,,4299,19908,1995-06-02 00:00:00,,EPSG,,
-30161,Tokyo / Japan Plane Rectangular CS I,Tokyo / Japan zone I,,,Japan - Kyushu - Nagasaki-ken; islands of Kagoshima-ken between 27 and 32 deg N and between 128 deg 18 min and 130 deg E (between 128 deg 18 min and 30 deg 13 min E for Amami islands).,projected 2D,,,North,East,X,Y,9001,,4301,17801,1998-12-12 00:00:00,,EPSG,,
-30162,Tokyo / Japan Plane Rectangular CS II,Tokyo / Japan zone II,,,Japan - Kyushu - Fukuoka-ken; Saga-ken; Kumamoto-ken; Oita-ken; Miyazaki-ken; Kagoshima-ken (except for area within Japan Plane Rectangular Coordinates System zone I).,projected 2D,,,North,East,X,Y,9001,,4301,17802,1998-12-12 00:00:00,,EPSG,,
-30163,Tokyo / Japan Plane Rectangular CS III,Tokyo / Japan zone III,,,Japan - Kyushu - Fukuoka-ken; Saga-ken; Kumamoto-ken; Oita-ken; Miyazaki-ken; Kagoshima-ken (except for area within Japan Plane Rectangular Coordinates System zone I).,projected 2D,,,North,East,X,Y,9001,,4301,17803,1998-12-12 00:00:00,,EPSG,,
-30164,Tokyo / Japan Plane Rectangular CS IV,Tokyo / Japan zone IV,,,Japan - Kyushu - Fukuoka-ken; Saga-ken; Kumamoto-ken; Oita-ken; Miyazaki-ken; Kagoshima-ken (except for area within Japan Plane Rectangular Coordinates System zone I).,projected 2D,,,North,East,X,Y,9001,,4301,17804,1998-12-12 00:00:00,,EPSG,,
-30165,Tokyo / Japan Plane Rectangular CS V,Tokyo / Japan zone V,,,Japan - Kyushu - Fukuoka-ken; Saga-ken; Kumamoto-ken; Oita-ken; Miyazaki-ken; Kagoshima-ken (except for area within Japan Plane Rectangular Coordinates System zone I).,projected 2D,,,North,East,X,Y,9001,,4301,17805,1998-12-12 00:00:00,,EPSG,,
-30166,Tokyo / Japan Plane Rectangular CS VI,Tokyo / Japan zone VI,,,Japan - Kyushu - Fukuoka-ken; Saga-ken; Kumamoto-ken; Oita-ken; Miyazaki-ken; Kagoshima-ken (except for area within Japan Plane Rectangular Coordinates System zone I).,projected 2D,,,North,East,X,Y,9001,,4301,17806,1998-12-12 00:00:00,,EPSG,,
-30167,Tokyo / Japan Plane Rectangular CS VII,Tokyo / Japan zone VII,,,Japan - Kyushu - Fukuoka-ken; Saga-ken; Kumamoto-ken; Oita-ken; Miyazaki-ken; Kagoshima-ken (except for area within Japan Plane Rectangular Coordinates System zone I).,projected 2D,,,North,East,X,Y,9001,,4301,17807,1998-12-12 00:00:00,,EPSG,,
-30168,Tokyo / Japan Plane Rectangular CS VIII,Tokyo / Japan zone VIII,,,Japan - Kyushu - Fukuoka-ken; Saga-ken; Kumamoto-ken; Oita-ken; Miyazaki-ken; Kagoshima-ken (except for area within Japan Plane Rectangular Coordinates System zone I).,projected 2D,,,North,East,X,Y,9001,,4301,17808,1998-12-12 00:00:00,,EPSG,,
-30169,Tokyo / Japan Plane Rectangular CS IX,Tokyo / Japan zone IX,,,Japan - Kyushu - Fukuoka-ken; Saga-ken; Kumamoto-ken; Oita-ken; Miyazaki-ken; Kagoshima-ken (except for area within Japan Plane Rectangular Coordinates System zone I).,projected 2D,,,North,East,X,Y,9001,,4301,17809,1998-12-12 00:00:00,,EPSG,,
-30170,Tokyo / Japan Plane Rectangular CS X,Tokyo / Japan zone X,,,Japan - Kyushu - Fukuoka-ken; Saga-ken; Kumamoto-ken; Oita-ken; Miyazaki-ken; Kagoshima-ken (except for area within Japan Plane Rectangular Coordinates System zone I).,projected 2D,,,North,East,X,Y,9001,,4301,17810,1998-12-12 00:00:00,,EPSG,,
-30171,Tokyo / Japan Plane Rectangular CS XI,Tokyo / Japan zone XI,,,Japan - Hokkaido west of 141 deg 15 min E approx. - Otaru city; Hakodate city; Date city; Usu-gun and Abuta-gun of Iburi-shicyo; area of Hiyama-shicyo; area of Shiribeshi-shicyo; Oshima-shicyo.,projected 2D,,,North,East,X,Y,9001,,4301,17811,1998-12-12 00:00:00,,EPSG,,
-30172,Tokyo / Japan Plane Rectangular CS XII,Tokyo / Japan zone XII,,,Japan - Hokkaido west of 141 deg 15 min E approx. - Otaru city; Hakodate city; Date city; Usu-gun and Abuta-gun of Iburi-shicyo; area of Hiyama-shicyo; area of Shiribeshi-shicyo; Oshima-shicyo.,projected 2D,,,North,East,X,Y,9001,,4301,17812,1998-12-12 00:00:00,,EPSG,,
-30173,Tokyo / Japan Plane Rectangular CS XIII,Tokyo / Japan zone XIII,,,Japan - Hokkaido west of 141 deg 15 min E approx. - Otaru city; Hakodate city; Date city; Usu-gun and Abuta-gun of Iburi-shicyo; area of Hiyama-shicyo; area of Shiribeshi-shicyo; Oshima-shicyo.,projected 2D,,,North,East,X,Y,9001,,4301,17813,1998-12-12 00:00:00,,EPSG,,
-30174,Tokyo / Japan Plane Rectangular CS XIV,Tokyo / Japan zone XIV,,,Japan - Tokyo-to south of 28 deg N & between 140 deg 30 min & 143 deg E.,projected 2D,,,North,East,X,Y,9001,,4301,17814,1998-12-12 00:00:00,,EPSG,Although legally defined as Tokyo datum the accuracy of the geodetic connection to mainland Japan is low.,
-30175,Tokyo / Japan Plane Rectangular CS XV,Tokyo / Japan zone XV,,,Japan - Okinawa-ken between 126 deg &130 deg E.,projected 2D,,,North,East,X,Y,9001,,4301,17815,1998-12-12 00:00:00,,EPSG,,
-30176,Tokyo / Japan Plane Rectangular CS XVI,Tokyo / Japan zone XVI,,,Japan - Okinawa-ken west of 126 deg E.,projected 2D,,,North,East,X,Y,9001,,4301,17816,1998-12-12 00:00:00,,EPSG,,
-30177,Tokyo / Japan Plane Rectangular CS XVII,Tokyo / Japan zone XVII,,,Japan - Okinawa-ken east of 130 deg E.,projected 2D,,,North,East,X,Y,9001,,4301,17817,1998-12-12 00:00:00,,EPSG,Although legally defined as Tokyo datum the accuracy of the geodetic connection to mainland Japan is low.,
-30178,Tokyo / Japan Plane Rectangular CS XVIII,Tokyo / Japan zone XVIII,,,Japan - Tokyo-to south of 28 N & west of 140 deg 30 min E.,projected 2D,,,North,East,X,Y,9001,,4301,17818,1998-12-12 00:00:00,,EPSG,Although legally defined as Tokyo datum the accuracy of the geodetic connection to mainland Japan is low.,
-30179,Tokyo / Japan Plane Rectangular CS XIX,Tokyo / Japan zone XIX,,,Japan - Tokyo-to south of 28 N & east of 143 deg E.,projected 2D,,,North,East,X,Y,9001,,4301,17819,1998-12-12 00:00:00,,EPSG,Although legally defined as Tokyo datum the accuracy of the geodetic connection to mainland Japan is low.,
-30200,Trinidad 1903 / Trinidad Grid,Trinidad 1903 / Trinidad,,,Trinidad and Tobago - Trinidad,projected 2D,,,East,North,E,N,9039,,4302,19925,1999-10-20 00:00:00,,EPSG,,97.231
-30339,TC(1948) / UTM zone 39N,,,,United Arab Emirates (UAE) - Abu Dhabi west of 54 deg East.,projected 2D,,,East,North,E,N,9001,,4303,16039,1995-06-02 00:00:00,,EPSG,,
-30340,TC(1948) / UTM zone 40N,,,,United Arab Emirates (UAE) - Abu Dhabi east of 54 deg East; Dubai.,projected 2D,,,East,North,E,N,9001,,4303,16040,1995-06-02 00:00:00,,EPSG,,
-30491,Voirol 1875 / Nord Algerie (ancienne),Voirol /N Algerie ancien,,,Algeria - north of 38.5 grads (34 deg 39 min) North.,projected 2D,,,East,North,X,Y,9001,,4304,18011,1995-06-02 00:00:00,,EPSG,Superseded by 30591 (Voirol Unifie / Algeria Nord).,
-30492,Voirol 1875 / Sud Algerie (ancienne),Voirol /S Algerie ancien,,,Algeria - 35 grads to 38.5 grads (31 deg 30 min to 34 deg 39 min) North.,projected 2D,,,East,North,X,Y,9001,,4304,18012,1995-06-02 00:00:00,,EPSG,Superseded by 30592 (Voirol Unifie / Algeria Sud).,
-30591,Voirol Unifie / Nord Algerie,Voirol Unifie /N Algerie,,,Algeria - north of 38.5 grads (34 deg 39 min) North.,projected 2D,,,East,North,X,Y,9001,,4305,18021,1995-06-02 00:00:00,,EPSG,Supersedes 30491 (Voirol 1875 / Nord Algeria ancienne).,
-30592,Voirol Unifie / Sud Algerie,Voirol Unifie /S Algerie,,,Algeria - 35 grads to 38.5 grads (31 deg 30 min to 34 deg 39 min) North.,projected 2D,,,East,North,X,Y,9001,,4305,18022,1995-06-02 00:00:00,,EPSG,Supersedes 30492 (Voirol 1875 / Sud Algeria ancienne).,
-30729,Nord Sahara 1959 / UTM zone 29N,Nord Sahara / UTM 29N,,,Algeria west of 6 deg West (of Greenwich).,projected 2D,,,East,North,E,N,9001,,4307,16029,1996-04-12 00:00:00,,EPSG,,
-30730,Nord Sahara 1959 / UTM zone 30N,Nord Sahara / UTM 30N,,,Algeria 6 deg West to 0 deg East (of Greenwich).,projected 2D,,,East,North,E,N,9001,,4307,16030,1996-04-12 00:00:00,,EPSG,,
-30731,Nord Sahara 1959 / UTM zone 31N,Nord Sahara / UTM 31N,,,Algeria 0 deg to 6 deg East (of Greenwich).,projected 2D,,,East,North,E,N,9001,,4307,16031,1996-04-12 00:00:00,,EPSG,,
-30732,Nord Sahara 1959 / UTM zone 32N,Nord Sahara / UTM 32N,,,Algeria east of 6 deg East (of Greenwich).,projected 2D,,,East,North,E,N,9001,,4307,16032,1996-04-12 00:00:00,,EPSG,,
-30800,RT38 2.5 gon W,,,,Sweden,projected 2D,,,North,East,X,Y,9001,,4308,19929,1997-11-13 00:00:00,National Land Survey of Sweden,EPSG,,97.14  97.39
-31028,Yoff / UTM zone 28N,,,,Senegal.,projected 2D,,,East,North,E,N,9001,,4310,16028,1995-06-02 00:00:00,,EPSG,,
-31121,Zanderij / UTM zone 21N,,,,Suriname.,projected 2D,,,East,North,E,N,9001,,4311,16021,1995-06-02 00:00:00,,EPSG,,
-31291,MGI (Ferro) / Austria West Zone,MGI / Austria West,,,Austria west of 11deg 50min East of Greenwich (29 deg 30 min East of Ferro).,projected 2D,,,East,North,X,Y,9001,,4805,18041,1995-06-02 00:00:00,,EPSG,Superceded by MGI / M34 (EPSG code 31296).,97.01
-31292,MGI (Ferro) / Austria Central Zone,MGI / Austria Central,,,Austria between 11deg 50min and 14deg 50min East of Greenwich (29 deg 30 min and 32 deg 30 min East of Ferro).,projected 2D,,,East,North,X,Y,9001,,4805,18042,1995-06-02 00:00:00,,EPSG,Superceded by MGI / M31 (EPSG code 31295).,97.01
-31293,MGI (Ferro) / Austria East Zone,MGI / Austria East,,,Austria east of 14deg 50min East of Greenwich (32 deg 30 min East of Ferro).,projected 2D,,,East,North,X,Y,9001,,4805,18043,1995-06-02 00:00:00,,EPSG,Superceded by MGI / M28 (EPSG code 31294).,97.01
-31294,MGI / M28,,,,Austria west of 11deg 50min East of Greenwich (29 deg 30 min East of Ferro).,projected 2D,,,East,North,X,Y,9001,,4312,18044,1999-10-20 00:00:00,,EPSG,Supercedes MGI (Ferro) / Austria East zone (EPSG code 31293).,
-31295,MGI / M31,,,,Austria between 11deg 50min and 14deg 50min East of Greenwich (29 deg 30 min and 32 deg 30 min East of Ferro).,projected 2D,,,East,North,X,Y,9001,,4312,18045,1999-10-20 00:00:00,,EPSG,Supercedes MGI (Ferro) / Austria Central zone (EPSG code 31292).,
-31296,MGI / M34,,,,Austria east of 14deg 50min East of Greenwich (32 deg 30 min East of Ferro).,projected 2D,,,East,North,X,Y,9001,,4312,18046,1999-10-20 00:00:00,,EPSG,Supercedes MGI (Ferro) / Austria West zone (EPSG code 31291).,
-31297,MGI / Austria Lambert,,,,Austria,projected 2D,,,East,North,X,Y,9001,,4312,19947,1999-10-20 00:00:00,,EPSG,,
-31300,Belge 1972 / Belge Lambert 72,Belge Lambert 72,,,Belgium - onshore.,projected 2D,,,East,North,X,Y,9001,,4313,19902,1995-06-02 00:00:00,,EPSG,Supersedes 21500 (Belge 1950 / Belge Lambert 50).,
-31491,DHDN / Germany zone 1,,,,Germany - onshore west of 4 deg 30 min East.,projected 2D,,,East,North,X,Y,9001,,4314,18101,1995-06-02 00:00:00,,EPSG,,
-31492,DHDN / Germany zone 2,,,,Germany - onshore between 4 deg 30 min and 7 deg 30 min East.,projected 2D,,,East,North,X,Y,9001,,4314,18102,1995-06-02 00:00:00,,EPSG,,
-31493,DHDN / Germany zone 3,,,,Germany - onshore between 7 deg 30 min and 10 deg 30 min East.,projected 2D,,,East,North,X,Y,9001,,4314,18103,1995-06-02 00:00:00,,EPSG,,
-31494,DHDN / Germany zone 4,,,,Germany - onshore between 10 deg 30 min and 13 deg 30 min East.,projected 2D,,,East,North,X,Y,9001,,4314,18104,1995-06-02 00:00:00,,EPSG,,
-31495,DHDN / Germany zone 5,,,,Germany - onshore between 13 deg 30 min and 16 deg 30 min East.,projected 2D,,,East,North,X,Y,9001,,4314,18105,1995-06-02 00:00:00,,EPSG,,
-31600,Dealul Piscului 1933/ Stereo 33,Stereo 33,,,Romania.,projected 2D,,,East,North,X,Y,9001,,4316,19927,1996-04-12 00:00:00,,EPSG,Superseded by Stereo 70 system (ProjCS code 31700).,
-31700,Dealul Piscului 1970/ Stereo 70,Stereo 70,,,Romania.,projected 2D,,,North,East,X,Y,9001,,4317,19926,1996-04-12 00:00:00,,EPSG,Supersedes Stereo 33 system.,
-31838,NGN / UTM zone 38N,,,,Kuwait west of 48deg East.,projected 2D,,,East,North,E,N,9001,,4318,16038,1996-04-12 00:00:00,,EPSG,,
-31839,NGN / UTM zone 39N,,,,Kuwait east of 48deg East.,projected 2D,,,East,North,E,N,9001,,4318,16039,1996-04-12 00:00:00,,EPSG,,
-31900,KUDAMS / KTM,,,,Kuwait - Kuwait City.,projected 2D,,,East,North,E,N,9001,,4319,19928,1996-04-12 00:00:00,,EPSG,,
-32001,NAD27 / Montana North,,,,United States (USA) - Montana - MT_N - counties of Blaine; Chouteau; Daniels; Flathead; Glacier; Hill; Liberty; Lincoln; Phillips; Pondera; Roosevelt; Sheridan; Teton; Toole; Valley,projected 2D,,,East,North,X,Y,9003,,4267,12501,1995-06-02 00:00:00,,EPSG,,
-32002,NAD27 / Montana Central,,,,United States (USA) - Montana - MT_C - counties of Cascade; Dawson; Fergus; Garfield; Judith Basin; Lake; Lewis and Clark; McCone; Meagher; Mineral; Missoula; Petroleum; Powell; Prairie; Richland; Sanders; Wibaux,projected 2D,,,East,North,X,Y,9003,,4267,12502,1995-06-02 00:00:00,,EPSG,,
-32003,NAD27 / Montana South,,,,United States (USA) - Montana - MT_S - counties of Beaverhead; Big Horn; Broadwater; Carbon; Carter; Custer; Deer Lodge; Fallon; Gallatin; Golden Valley; Granite; Jefferson; Madison; Musselshell; Park; Powder River; Ravalli; Rosebud; Silver Bow; Stillwater; Sweet Grass; Treasure; Wheatland; Yellowstone,projected 2D,,,East,North,X,Y,9003,,4267,12503,1995-06-02 00:00:00,,EPSG,,
-32005,NAD27 / Nebraska North,,,,United States (USA) - Nebraska - NE_N - counties of Antelope; Blaine; Box Butte; Boyd; Brown; Burt; Cedar; Cherry; Cuming; Dakota; Dawes; Dixon; Garfield; Grant; Holt; Hooker; Keya Paha; Knox; Loup; Madison; Pierce; Rock; Sheridan; Sioux; Stanton; Thomas; Thurston; Wayne; Wheeler,projected 2D,,,East,North,X,Y,9003,,4267,12601,1995-06-02 00:00:00,,EPSG,,
-32006,NAD27 / Nebraska South,,,,United States (USA) - Nebraska - NE_S - counties of Adams; Arthur; Banner; Boone; Buffalo; Butler; Cass; Chase; Cheyenne; Clay; Colfax; Custer; Dawson; Deuel; Dodge; Douglas; Dundy; Fillmore; Franklin; Frontier; Furnas; Gage; Garden; Gosper; Greeley; Hall; Hamilton; Harlan; Hayes; Hitchcock; Howard; Jefferson; Johnson; Kearney; Keith; Kimball; Lancaster; Lincoln; Logan; McPherson; Merrick; Morrill; Nance; Nemaha; Nuckolls; Otoe; Pawnee; Perkins; Phelps; Pl [...]
-32007,NAD27 / Nevada East,,,,United States (USA) - Nevada - NV_E - counties of Clark; Elko; Eureka; Lincoln; White Pine,projected 2D,,,East,North,X,Y,9003,,4267,12701,1995-06-02 00:00:00,,EPSG,,
-32008,NAD27 / Nevada Central,,,,United States (USA) - Nevada - NV_C - counties of Lander; Nye,projected 2D,,,East,North,X,Y,9003,,4267,12702,1995-06-02 00:00:00,,EPSG,,
-32009,NAD27 / Nevada West,,,,United States (USA) - Nevada - NV_W - counties of Churchill; Douglas; Esmeralda; Humboldt; Lyon; Mineral; Pershing; Storey; Washoe,projected 2D,,,East,North,X,Y,9003,,4267,12703,1995-06-02 00:00:00,,EPSG,,
-32010,NAD27 / New Hampshire,,,,United States (USA) - New Hampshire - NH - counties of Belknap; Carroll; Cheshire; Coos; Grafton; Hillsborough; Merrimack; Rockingham; Strafford; Sullivan,projected 2D,,,East,North,X,Y,9003,,4267,12800,1995-06-02 00:00:00,,EPSG,,
-32011,NAD27 / New Jersey,,,,United States (USA) - New Jersey - NJ - counties of Atlantic; Bergen; Burlington; Camden; Cape May; Cumberland; Essex; Gloucester; Hudson; Hunterdon; Mercer; Middlesex; Monmouth; Morris; Ocean; Passaic; Salem; Somerset; Sussex; Union; Warren,projected 2D,,,East,North,X,Y,9003,,4267,12900,1995-06-02 00:00:00,,EPSG,,
-32012,NAD27 / New Mexico East,,,,United States (USA) - New Mexico - NM_E - counties of Chaves; Colfax; Curry; De Baca; Eddy; Guadalupe; Harding; Lea; Mora; Quay; Roosevelt; San Miguel; Union,projected 2D,,,East,North,X,Y,9003,,4267,13001,1995-06-02 00:00:00,,EPSG,,
-32013,NAD27 / New Mexico Central,NAD27 / New Mexico Cent.,,,United States (USA) - New Mexico - NM_C - counties of Bernalillo; Dona Ana; Lincoln; Los Alamos; Otero; Rio Arriba; Sandoval; Santa Fe; Socorro; Taos; Torrance,projected 2D,,,East,North,X,Y,9003,,4267,13002,1995-06-02 00:00:00,,EPSG,,
-32014,NAD27 / New Mexico West,,,,United States (USA) - New Mexico - NM_W - counties of Catron; Cibola; Grant; Hidalgo; Luna; McKinley; San Juan; Sierra; Valencia,projected 2D,,,East,North,X,Y,9003,,4267,13003,1995-06-02 00:00:00,,EPSG,,
-32015,NAD27 / New York East,,,,United States (USA) - New York - NY_E - counties of Albany; Clinton; Columbia; Delaware; Dutchess; Essex; Franklin; Fulton; Greene; Hamilton; Herkimer; Montgomery; Orange; Otsego; Putnam; Rensselaer; Rockland; Saratoga; Schenectady; Schoharie; St. Lawrence; Sullivan; Ulster; Warren; Washington; Westchester,projected 2D,,,East,North,X,Y,9003,,4267,13101,1995-06-02 00:00:00,,EPSG,,
-32016,NAD27 / New York Central,,,,United States (USA) - New York - NY_C - counties of Broome; Cayuga; Chemung; Chenango; Cortland; Jefferson; Lewis; Madison; Oneida; Onondaga; Ontario; Oswego; Schuyler; Seneca; Steuben; Tioga; Tompkins; Wayne; Yates,projected 2D,,,East,North,X,Y,9003,,4267,13102,1995-06-02 00:00:00,,EPSG,,
-32017,NAD27 / New York West,,,,United States (USA) - New York - NY_W - counties of Allegany; Cattaraugus; Chautauqua; Erie; Genesee; Livingston; Monroe; Niagara; Orleans; Wyoming,projected 2D,,,East,North,X,Y,9003,,4267,13103,1995-06-02 00:00:00,,EPSG,,
-32018,NAD27 / New York Long Island,NAD27 / New York Long Is,,,United States (USA) - New York - NY_LI - counties of Bronx; Kings; Nassau; New York; Queens; Richmond; Suffolk,projected 2D,,,East,North,X,Y,9003,,4267,13104,1995-06-02 00:00:00,,EPSG,,
-32019,NAD27 / North Carolina,,,,United States (USA) - North Carolina - NC - counties of Alamance; Alexander; Alleghany; Anson; Ashe; Avery; Beaufort; Bertie; Bladen; Brunswick; Buncombe; Burke; Cabarrus; Caldwell; Camden; Carteret; Caswell; Catawba; Chatham; Cherokee; Chowan; Clay; Cleveland; Columbus; Craven; Cumberland; Currituck; Dare; Davidson; Davie; Duplin; Durham; Edgecombe; Forsyth; Franklin; Gaston; Gates; Graham; Granville; Greene; Guilford; Halifax; Harnett; Haywood; Henderson [...]
-32020,NAD27 / North Dakota North,NAD27 / North Dakota N,,,United States (USA) - North Dakota - ND_N - counties of Benson; Bottineau; Burke; Cavalier; Divide; Eddy; Foster; Grand Forks; Griggs; McHenry; McKenzie; McLean; Mountrial; Nelson; Pembina; Pierce; Ramsey; Renville; Rolette; Sheridan; Steele; Towner; Traill; Walsh; Ward; Wells; Williams,projected 2D,,,East,North,X,Y,9003,,4267,13301,1995-06-02 00:00:00,,EPSG,,
-32021,NAD27 / North Dakota South,NAD27 / North Dakota S,,,United States (USA) - North Dakota - ND_S - counties of Adams; Barnes; Billings; Bowman; Burleigh; Cass; Dickey; Dunn; Emmons; Golden Valley; Grant; Hettinger; Kidder; La Moure; Logan; McIntosh; Mercer; Morton; Oliver; Ransom; Richland; Sargent; Sioux; Slope; Stark; Stutsman,projected 2D,,,East,North,X,Y,9003,,4267,13302,1995-06-02 00:00:00,,EPSG,,
-32022,NAD27 / Ohio North,,,,United States (USA) - Ohio - OH_N - counties of Allen;Ashland; Ashtabula; Auglaize; Carroll; Columbiana; Coshocton; Crawford; Cuyahoga; Defiance; Delaware; Erie; Fulton; Geauga; Hancock; Hardin; Harrison; Henry; Holmes; Huron; Jefferson; Knox; Lake; Logan; Lorain; Lucas; Mahoning; Marion; Medina; Mercer; Morrow; Ottawa; Paulding; Portage; Putnam; Richland; Sandusky; Seneca; Shelby; Stark; Summit; Trumbull; Tuscarawas; Union; Van Wert; Wayne; Williams; Wood; Wy [...]
-32023,NAD27 / Ohio South,,,,United States (USA) - Ohio - OH_S - counties of Adams; Athens; Belmont; Brown; Butler; Champaign; Clark; Clermont; Clinton; Darke; Fairfield; Fayette; Franklin; Gallia; Greene; Guernsey; Hamilton; Highland; Hocking; Jackson; Lawrence; Licking; Madison; Meigs; Miami; Monroe; Montgomery; Morgan; Muskingum; Noble; Perry; Pickaway; Pike; Preble; Ross; Scioto; Vinton; Warren; Washington,projected 2D,,,East,North,X,Y,9003,,4267,13402,1995-06-02 00:00:00,,EPSG,,
-32024,NAD27 / Oklahoma North,,,,United States (USA) - Oklahoma - OK_N - counties of Adair; Alfalfa; Beaver; Blaine; Canadian; Cherokee; Cimarron; Craig; Creek; Custer; Delaware; Dewey; Ellis; Garfield; Grant; Harper; Kay; Kingfisher; Lincoln; Logan; Major; Mayes; Muskogee; Noble; Nowata; Okfuskee; Oklahoma; Okmulgee; Osage; Ottawa; Pawnee; Payne; Roger Mills; Rogers; Sequoyah; Texas; Tulsa; Wagoner; Washington; Woods; Woodward,projected 2D,,,East,North,X,Y,9003,,4267,13501,1995-06-02 00: [...]
-32025,NAD27 / Oklahoma South,,,,United States (USA) - Oklahoma - OK_S - counties of Atoka; Beckham; Bryan; Caddo; Carter; Choctaw; Cleveland; Coal; Comanche; Cotton; Garvin; Grady; Greer; Harmon; Haskell; Hughes; Jackson; Jefferson; Johnston; Kiowa; Latimer; Le Flore; Love; Marshall; McClain; McCurtain; McIntosh; Murray; Pittsburg; Pontotoc; Pottawatomie; Pushmataha; Seminole; Stephens; Tillman; Washita,projected 2D,,,East,North,X,Y,9003,,4267,13502,1995-06-02 00:00:00,,EPSG,,
-32026,NAD27 / Oregon North,,,,United States (USA) - Oregon - OR_N - counties of Baker; Benton; Clackamas; Clatsop; Columbia; Gilliam; Grant; Hood River; Jefferson; Lincoln; Linn; Marion; Morrow; Multnomah; Polk; Sherman; Tillamook; Umatilla; Union; Wallowa; Wasco; Washington; Wheeler; Yamhill,projected 2D,,,East,North,X,Y,9003,,4267,13601,1995-06-02 00:00:00,,EPSG,,
-32027,NAD27 / Oregon South,,,,United States (USA) - Oregon - OR_S - counties of Coos; Crook; Curry; Deschutes; Douglas; Harney; Jackson; Josephine; Klamath; Lake; Lane; Malheur,projected 2D,,,East,North,X,Y,9003,,4267,13602,1995-06-02 00:00:00,,EPSG,,
-32028,NAD27 / Pennsylvania North,NAD27 / Pennsylvania N,,,United States (USA) - Pennsylvania - PA_N - counties of Bradford; Cameron; Carbon; Centre; Clarion; Clearfield; Clinton; Columbia; Crawford; Elk; Erie; Forest; Jefferson; Lackawanna; Luzerne; Lycoming; McKean; Mercer; Monroe; Montour; Northumberland; Pike; Potter; Sullivan; Susquehanna; Tioga; Union; Venango; Warren; Wayne; Wyoming,projected 2D,,,East,North,X,Y,9003,,4267,13701,1995-06-02 00:00:00,,EPSG,,
-32029,NAD27 / Pennsylvania South,NAD27 / Pennsylvania S,,,United States (USA) - Pennsylvania - PA_S - counties of Adams; Allegheny; Armstrong; Beaver; Bedford; Berks; Blair; Bucks; Butler; Cambria; Chester; Cumberland; Dauphin; Delaware; Fayette; Franklin; Fulton; Greene; Huntingdon; Indiana; Juniata; Lancaster; Lawrence; Lebanon; Lehigh; Mifflin; Montgomery; Northampton; Perry; Philadelphia; Schuylkill; Snyder; Somerset; Washington; Westmoreland; York,projected 2D,,,East,North,X,Y,9003, [...]
-32030,NAD27 / Rhode Island,,,,United States (USA) - Rhode Island - RI - counties of Bristol; Kent; Newport; Providence; Washington,projected 2D,,,East,North,X,Y,9003,,4267,13800,1995-06-02 00:00:00,,EPSG,,
-32031,NAD27 / South Carolina North,NAD27 / South Carolina N,,,United States (USA) - South Carolina - SC_N - counties of Abbeville; Anderson; Calhoun; Cherokee; Chester; Chesterfield; Darlington; Dillon; Edgefield; Fairfield; Florence; Greenville; Greenwood; Horry; Kershaw; Lancaster; Laurens; Lee; Lexington; Marion; Marlboro; McCormick; Newberry; Oconee; Pickens; Richland; Saluda; Spartanburg; Sumter; Union; York,projected 2D,,,East,North,X,Y,9003,,4267,13901,1995-06-02 00:00:00,,EPSG,,
-32033,NAD27 / South Carolina South,NAD27 / South Carolina S,,,United States (USA) - South Carolina - SC_S - counties of Aiken; Allendale; Bamberg; Barnwell; Beaufort; Berkeley; Charleston; Clarendon; Colleton; Dorchester; Georgetown; Hampton; Jasper; Orangeburg; Williamsburg,projected 2D,,,East,North,X,Y,9003,,4267,13902,1995-06-02 00:00:00,,EPSG,,
-32034,NAD27 / South Dakota North,NAD27 / South Dakota N,,,United States (USA) - South Dakota - SD_N - counties of Beadle; Brookings; Brown; Butte; Campbell; Clark; Codington; Corson; Day; Deuel; Dewey; Edmunds; Faulk; Grant; Hamlin; Hand; Harding; Hyde; Kingsbury; Lawrence; Marshall; McPherson; Meade; Perkins; Potter; Roberts; Spink; Sully; Walworth; Ziebach,projected 2D,,,East,North,X,Y,9003,,4267,14001,1995-06-02 00:00:00,,EPSG,,
-32035,NAD27 / South Dakota South,NAD27 / South Dakota S,,,United States (USA) - South Dakota - SD_S - counties of Aurora; Bennett; Bon Homme; Brule; Buffalo; Charles Mix; Clay; Custer; Davison; Douglas; Fall River; Gregory; Haakon; Hanson; Hughes; Hutchinson; Jackson; Jerauld; Jones; Lake; Lincoln; Lyman; McCook; Mellette; Miner; Minnehaha; Moody; Pennington; Sanborn; Shannon; Stanley; Todd; Tripp; Turner; Union; Yankton,projected 2D,,,East,North,X,Y,9003,,4267,14002,1995-06-02 00:00:00, [...]
-32036,NAD27 / Tennessee,,,,United States (USA) - Tennessee - TN - counties of Anderson; Bedford; Benton; Bledsoe; Blount; Bradley; Campbell; Cannon; Carroll; Carter; Cheatham; Chester; Claiborne; Clay; Cocke; Coffee; Crockett; Cumberland; Davidson; De Kalb; Decatur; Dickson; Dyer; Fayette; Fentress; Franklin; Gibson; Giles; Grainger; Greene; Grundy; Hamblen; Hamilton; Hancock; Hardeman; Hardin; Hawkins; Haywood; Henderson; Henry; Hickman; Houston; Humphreys; Jackson; Jefferson; Johnson;  [...]
-32037,NAD27 / Texas North,,,,United States (USA) - Texas -TX_N - counties of: Armstrong; Briscoe; Carson; Castro; Childress; Collingsworth; Dallam; Deaf Smith; Donley; Gray; Hall; Hansford; Hartley; Hemphill; Hutchinson; Lipscomb; Moore; Ochiltree; Oldham; Parmer; Potter; Randall; Roberts; Sherman; Swisher; Wheeler,projected 2D,,,East,North,X,Y,9003,,4267,14201,1995-06-02 00:00:00,,EPSG,,
-32038,NAD27 / Texas North Central,NAD27 / Texas North Cen.,,,United States (USA) - Texas -TX_NC - counties of: Andrews; Archer; Bailey; Baylor; Borden; Bowie; Callahan; Camp; Cass; Clay; Cochran; Collin; Cooke; Cottle; Crosby; Dallas; Dawson; Delta; Denton; Dickens; Eastland; Ellis; Erath; Fannin; Fisher; Floyd; Foard; Franklin; Gaines; Garza; Grayson,projected 2D,,,East,North,X,Y,9003,,4267,14202,1995-06-02 00:00:00,,EPSG,,
-32039,NAD27 / Texas Central,,,,United States (USA) - Texas -TX_C - counties of Anderson; Angelina; Bastrop; Bell; Blanco; Bosque; Brazos; Brown; Burleson; Burnet; Cherokee; Coke; Coleman; Comanche; Concho; Coryell; Crane; Crockett; Culberson; Ector; El Paso; Falls; Freestone; Gillespie; Glasscock; Grimes; Hamilton; Hardin; Houston; Hudspeth; Irion; Jasper; Jeff Davis; Kimble; Lampasas; Lee; Leon; Liberty; Limestone; Llano; Loving; Madison; Mason; McCulloch; McLennan; Menard; Midland; Mil [...]
-32040,NAD27 / Texas South Central,NAD27 / Texas South Cen.,,,United States (USA) - Texas -TX_SC - counties of Aransas; Atascosa; Austin; Bandera; Bee; Bexar; Brazoria; Brewster; Caldwell; Calhoun; Chambers; Colorado; Comal; De Witt; Dimmit; Edwards; Fayette; Fort Bend; Frio; Galveston; Goliad; Gonzales; Guadalupe; Harris; Hays; Jackson; Jefferson; Karnes; Kendall; Kerr; Kinney; La Salle; Lavaca; Live Oak; Matagorda; Maverick; McMullen; Medina; Presidio; Real; Refugio; Terrell; Uvalde; Va [...]
-32041,NAD27 / Texas South,,,,United States (USA) - Texas -TX_S - counties of Brooks; Cameron; Duval; Hidalgo; Jim Hogg; Jim Wells; Kenedy; Kleberg; Nueces; San Patricio; Starr; Webb; Willacy; Zapata;  - Gulf of Mexico outer continental shelf (OCS) protraction areas: South Padre Island; North Padre Island; Mustang Island.,projected 2D,,,East,North,X,Y,9003,,4267,14205,1995-06-02 00:00:00,,EPSG,,
-32042,NAD27 / Utah North,,,,United States (USA) - Utah - UT_N - counties of Box Elder; Cache; Daggett; Davis; Morgan; Rich; Summit; Weber,projected 2D,,,East,North,X,Y,9003,,4267,14301,1995-06-02 00:00:00,,EPSG,,
-32043,NAD27 / Utah Central,,,,United States (USA) - Utah - UT_C - counties of Carbon; Duchesne; Emery; Grand; Juab; Millard; Salt Lake; Sanpete; Sevier; Tooele; Uintah; Utah; Wasatch,projected 2D,,,East,North,X,Y,9003,,4267,14302,1995-06-02 00:00:00,,EPSG,,
-32044,NAD27 / Utah South,,,,United States (USA) - Utah - UT_S - counties of Beaver; Garfield; Iron; Kane; Piute; San Juan; Washington; Wayne,projected 2D,,,East,North,X,Y,9003,,4267,14303,1995-06-02 00:00:00,,EPSG,,
-32045,NAD27 / Vermont,,,,United States (USA) - Vermont - VT - counties of Addison; Bennington; Caledonia; Chittenden; Essex; Franklin; Grand Isle; Lamoille; Orange; Orleans; Rutland; Washington; Windham; Windsor,projected 2D,,,East,North,X,Y,9003,,4267,14400,1995-06-02 00:00:00,,EPSG,,
-32046,NAD27 / Virginia North,,,,United States (USA) - Virginia - VA_N - counties of Arlington; Augusta; Bath; Caroline; Clarke; Culpeper; Fairfax; Fauquier; Frederick; Greene; Highland; King George; Loudoun; Madison; Orange; Page; Prince William; Rappahannock; Rockingham; Shenandoah; Spotsylvania; Stafford; Warren; Westmoreland,projected 2D,,,East,North,X,Y,9003,,4267,14501,1995-06-02 00:00:00,,EPSG,,
-32047,NAD27 / Virginia South,,,,United States (USA) - Virginia - VA_S - counties of Accomack; Albemarle; Alleghany; Amelia; Amherst; Appomattox; Bedford; Bland; Botetourt; Bristol; Brunswick; Buchanan; Buckingham; Campbell; Carroll; Charles City; Charlotte; Chesapeake; Chesterfield; Colonial Heights; Craig; Cumberland; Dickenson; Dinwiddie; Essex; Floyd; Fluvanna; Franklin; Giles; Gloucester; Goochland; Grayson; Greensville; Halifax; Hampton; Hanover; Henrico; Henry; Isle of Wight; James [...]
-32048,NAD27 / Washington North,,,,United States (USA) - Washington - WA_N - counties of Chelan; Clallam; Douglas; Ferry; Island; Jefferson; King; Kitsap; Lincoln; Okanogan; Pend Oreille; San Juan; Skagit; Snohomish; Spokane; Stevens; Whatcom,projected 2D,,,East,North,X,Y,9003,,4267,14601,1995-06-02 00:00:00,,EPSG,,
-32049,NAD27 / Washington South,,,,United States (USA) - Washington - WA_S - counties of Adams; Asotin; Benton; Clark; Columbia; Cowlitz; Franklin; Garfield; Grant; Grays Harbor; Kittitas; Klickitat; Lewis; Mason; Pacific; Pierce; Skamania; Thurston; Wahkiakum; Walla Walla; Whitman; Yakima,projected 2D,,,East,North,X,Y,9003,,4267,14602,1995-06-02 00:00:00,,EPSG,,
-32050,NAD27 / West Virginia North,NAD27 / West Virginia N,,,United States (USA) - West Virginia - WV_N - counties of Barbour; Berkeley; Brooke; Doddridge; Grant; Hampshire; Hancock; Hardy; Harrison; Jefferson; Marion; Marshall; Mineral; Monongalia; Morgan; Ohio; Pleasants; Preston; Ritchie; Taylor; Tucker; Tyler; Wetzel; Wirt; Wood,projected 2D,,,East,North,X,Y,9003,,4267,14701,1995-06-02 00:00:00,,EPSG,,
-32051,NAD27 / West Virginia South,NAD27 / West Virginia S,,,United States (USA) - West Virginia - WV_S - counties of Boone; Braxton; Cabell; Calhoun; Clay; Fayette; Gilmer; Greenbrier; Jackson; Kanawha; Lewis; Lincoln; Logan; Mason; McDowell; Mercer; Mingo; Monroe; Nicholas; Pendleton; Pocahontas; Putnam; Raleigh; Randolph; Roane; Summers; Upshur; Wayne; Webster; Wyoming,projected 2D,,,East,North,X,Y,9003,,4267,14702,1995-06-02 00:00:00,,EPSG,,
-32052,NAD27 / Wisconsin North,,,,United States (USA) - Wisconsin - WI_N - counties of Ashland; Bayfield; Burnett; Douglas; Florence; Forest; Iron; Oneida; Price; Sawyer; Vilas; Washburn,projected 2D,,,East,North,X,Y,9003,,4267,14801,1995-06-02 00:00:00,,EPSG,,
-32053,NAD27 / Wisconsin Central,NAD27 / Wisconsin Cen.,,,United States (USA) - Wisconsin - WI_C - counties of Barron; Brown; Buffalo; Chippewa; Clark; Door; Dunn; Eau Claire; Jackson; Kewaunee; Langlade; Lincoln; Marathon; Marinette; Menominee; Oconto; Outagamie; Pepin; Pierce; Polk; Portage; Rusk; Shawano; St. Croix; Taylor; Trempealeau; Waupaca; Wood,projected 2D,,,East,North,X,Y,9003,,4267,14802,1995-06-02 00:00:00,,EPSG,,
-32054,NAD27 / Wisconsin South,,,,United States (USA) - Wisconsin - WI_S - counties of Adams; Calumet; Columbia; Crawford; Dane; Dodge; Fond Du Lac; Grant; Green; Green Lake; Iowa; Jefferson; Juneau; Kenosha; La Crosse; Lafayette; Manitowoc; Marquette; Milwaukee; Monroe; Ozaukee; Racine; Richland; Rock; Sauk; Sheboygan; Vernon; Walworth; Washington; Waukesha; Waushara; Winnebago,projected 2D,,,East,North,X,Y,9003,,4267,14803,1995-06-02 00:00:00,,EPSG,,
-32055,NAD27 / Wyoming East,,,,United States (USA) - Wyoming - WY_E - counties of Albany; Campbell; Converse; Crook; Goshen; Laramie; Niobrara; Platte; Weston,projected 2D,,,East,North,X,Y,9003,,4267,14901,1995-06-02 00:00:00,,EPSG,,
-32056,NAD27 / Wyoming East Central,NAD27 / Wyoming E. Cen.,,,United States (USA) - Wyoming - WY_EC - counties of Big Horn; Carbon; Johnson; Natrona; Sheridan; Washakie,projected 2D,,,East,North,X,Y,9003,,4267,14902,1995-06-02 00:00:00,,EPSG,,
-32057,NAD27 / Wyoming West Central,NAD27 / Wyoming W. Cen.,,,United States (USA) - Wyoming - WY_WC - counties of Fremont; Hot Springs; Park; Sweetwater,projected 2D,,,East,North,X,Y,9003,,4267,14903,1995-06-02 00:00:00,,EPSG,,
-32058,NAD27 / Wyoming West,,,,United States (USA) - Wyoming - WY_W - counties of Lincoln; Sublette; Teton; Uinta,projected 2D,,,East,North,X,Y,9003,,4267,14904,1995-06-02 00:00:00,,EPSG,,
-32061,NAD27 / Guatemala Norte,,,,Guatemala - north of 15 deg 50 min North.,projected 2D,,,East,North,X,Y,9001,,4267,18211,1999-08-18 00:00:00,,EPSG,,
-32062,NAD27 / Guatemala Sud,,,,Guatemala - south of 15 deg 50 min North.,projected 2D,,,East,North,X,Y,9001,,4267,18212,1999-08-18 00:00:00,,EPSG,,
-32074,NAD27 / BLM 14N (feet),,,,United States - Gulf of Mexico - west of approximately 96 deg West - outer continental shelf (OCS) protraction areas Corpus Christi; Port Isabel.,projected 2D,,,East,North,X,Y,9003,,4267,15914,1996-04-12 00:00:00,,EPSG,,96.03
-32075,NAD27 / BLM 15N (feet),,,,United States - Gulf of Mexico - 96 deg to 90 deg West - outer continental shelf (OCS) protraction areas East Breaks (EB); Alaminos Canyon (AC); Garden Banks (GB); Keathley Canyon (KC); Ewing Bank (EW); Green Canyon (GC); Walker Ridge (WR).,projected 2D,,,East,North,X,Y,9003,,4267,15915,1996-04-12 00:00:00,,EPSG,,96.03
-32076,NAD27 / BLM 16N (feet),,,,United States - Gulf of Mexico - 90 deg to 84 deg West - outer continental shelf (OCS) protraction areas Mobile (MO); Viosca Knoll (VK); Mississippi Canyon (MC); Atwater Valley (AT); Lund; Pensacola; Destin Dome (DD); De Soto Canyon; Lloyd; Henderson; Apalachicola; Florida Middle Ground; The Elbow; Vernon Basin; Howell Hook.,projected 2D,,,East,North,X,Y,9003,,4267,15916,1996-04-12 00:00:00,,EPSG,,95.27  96.03
-32077,NAD27 / BLM 17N (feet),,,,United States - Gulf of Mexico - east of 84 deg West - outer continental shelf (OCS) protraction areas Gainesville; Tarpon Springs; St. Petersburg; Charlotte Harbor; Pulley Ridge; Dry Tortugas; Miami; Key West.,projected 2D,,,East,North,X,Y,9003,,4267,15917,1996-04-12 00:00:00,,EPSG,,96.03
-32081,NAD27 / MTM zone 1,,,,Canada - Newfoundland - east of 54 deg 30 min West.,projected 2D,,,East,North,E,N,9001,,4267,17701,1997-11-13 00:00:00,Geodetic Surveys Section; Newfoundland Department of Government Services and Lands.,EPSG,,
-32082,NAD27 / MTM zone 2,,,,Canada - Newfoundland and Labrador between 57 deg 30 min and 54 de 30 min West.,projected 2D,,,East,North,E,N,9001,,4267,17702,1997-11-13 00:00:00,Geodetic Surveys Section; Newfoundland Department of Government Services and Lands.,EPSG,,
-32083,NAD27 / MTM zone 3,,,,Canada - Newfoundland and Labrador between 60 deg and 57 deg 30 min West.,projected 2D,,,East,North,E,N,9001,,4267,17703,1997-11-13 00:00:00,Geodetic Surveys Section; Newfoundland Department of Government Services and Lands.,EPSG,,
-32084,NAD27 / MTM zone 4,,,,Canada - Newfoundland (Labrador) between 63 deg and 60 deg West.,projected 2D,,,East,North,E,N,9001,,4267,17704,1997-11-13 00:00:00,Geodetic Surveys Section; Newfoundland Department of Government Services and Lands.,EPSG,,
-32085,NAD27 / MTM zone 5,,,,Canada - Newfoundland (Labrador) between 66 deg and 63 deg West.,projected 2D,,,East,North,E,N,9001,,4267,17705,1997-11-13 00:00:00,Geodetic Surveys Section; Newfoundland Department of Government Services and Lands.,EPSG,,
-32086,NAD27 / MTM zone 6,,,,Canada - Newfoundland (Labrador) between 69 deg and  66 deg West.,projected 2D,,,East,North,E,N,9001,,4267,17706,1997-11-13 00:00:00,Geodetic Surveys Section; Newfoundland Department of Government Services and Lands.,EPSG,,
-32100,NAD83 / Montana,,,,United States (USA) - Montana - MT - counties of Beaverhead; Big Horn; Blaine; Broadwater; Carbon; Carter; Cascade; Chouteau; Custer; Daniels; Dawson; Deer Lodge; Fallon; Fergus; Flathead; Gallatin; Garfield; Glacier; Golden Valley; Granite; Hill; Jefferson; Judith Basin; Lake; Lewis and Clark; Liberty; Lincoln; Madison; McCone; Meagher; Mineral; Missoula; Musselshell; Park; Petroleum; Phillips; Pondera; Powder River; Powell; Prairie; Ravalli; Richland; Roosevelt [...]
-32104,NAD83 / Nebraska,,,,United States (USA) - Nebraska - NE - counties of Adams; Antelope; Arthur; Banner; Blaine; Boone; Box Butte; Boyd; Brown; Buffalo; Burt; Butler; Cass; Cedar; Chase; Cherry; Cheyenne; Clay; Colfax; Cuming; Custer; Dakota; Dawes; Dawson; Deuel; Dixon; Dodge; Douglas; Dundy; Fillmore; Franklin; Frontier; Furnas; Gage; Garden; Garfield; Gosper; Grant; Greeley; Hall; Hamilton; Harlan; Hayes; Hitchcock; Holt; Hooker; Howard; Jefferson; Johnson; Kearney; Keith; Keya Pa [...]
-32107,NAD83 / Nevada  East,,,,United States (USA) - Nevada - NV_E - counties of Clark; Elko; Eureka; Lincoln; White Pine,projected 2D,,,East,North,X,Y,9001,,4269,12731,1995-06-02 00:00:00,,EPSG,,
-32108,NAD83 / Nevada Central,,,,United States (USA) - Nevada - NV_C - counties of Lander; Nye,projected 2D,,,East,North,X,Y,9001,,4269,12732,1995-06-02 00:00:00,,EPSG,,
-32109,NAD83 / Nevada West,,,,United States (USA) - Nevada - NV_W - counties of Churchill; Douglas; Esmeralda; Humboldt; Lyon; Mineral; Pershing; Storey; Washoe,projected 2D,,,East,North,X,Y,9001,,4269,12733,1995-06-02 00:00:00,,EPSG,,
-32110,NAD83 / New Hampshire,,,,United States (USA) - New Hampshire - NH - counties of Belknap; Carroll; Cheshire; Coos; Grafton; Hillsborough; Merrimack; Rockingham; Strafford; Sullivan,projected 2D,,,East,North,X,Y,9001,,4269,12830,1995-06-02 00:00:00,,EPSG,,
-32111,NAD83 / New Jersey,,,,United States (USA) - New Jersey - NJ - counties of Atlantic; Bergen; Burlington; Camden; Cape May; Cumberland; Essex; Gloucester; Hudson; Hunterdon; Mercer; Middlesex; Monmouth; Morris; Ocean; Passaic; Salem; Somerset; Sussex; Union; Warren,projected 2D,,,East,North,X,Y,9001,,4269,12930,1995-06-02 00:00:00,,EPSG,,
-32112,NAD83 / New Mexico East,,,,United States (USA) - New Mexico - NM_E - counties of Chaves; Colfax; Curry; De Baca; Eddy; Guadalupe; Harding; Lea; Mora; Quay; Roosevelt; San Miguel; Union,projected 2D,,,East,North,X,Y,9001,,4269,13031,1995-06-02 00:00:00,,EPSG,,
-32113,NAD83 / New Mexico Central,NAD83 / New Mexico Cent.,,,United States (USA) - New Mexico - NM_C - counties of Bernalillo; Dona Ana; Lincoln; Los Alamos; Otero; Rio Arriba; Sandoval; Santa Fe; Socorro; Taos; Torrance; Valencia,projected 2D,,,East,North,X,Y,9001,,4269,13032,1995-06-02 00:00:00,,EPSG,,
-32114,NAD83 / New Mexico West,,,,United States (USA) - New Mexico - NM_W - counties of Catron; Cibola; Grant; Hidalgo; Luna; McKinley; San Juan; Sierra,projected 2D,,,East,North,X,Y,9001,,4269,13033,1995-06-02 00:00:00,,EPSG,,
-32115,NAD83 / New York  East,,,,United States (USA) - New York - NY_E - counties of Albany; Clinton; Columbia; Delaware; Dutchess; Essex; Franklin; Fulton; Greene; Hamilton; Herkimer; Montgomery; Orange; Otsego; Putnam; Rensselaer; Rockland; Saratoga; Schenectady; Schoharie; St. Lawrence; Sullivan; Ulster; Warren; Washington; Westchester,projected 2D,,,East,North,X,Y,9001,,4269,13131,1995-06-02 00:00:00,,EPSG,,
-32116,NAD83 / New York Central,,,,United States (USA) - New York - NY_C - counties of Broome; Cayuga; Chemung; Chenango; Cortland; Jefferson; Lewis; Madison; Oneida; Onondaga; Ontario; Oswego; Schuyler; Seneca; Steuben; Tioga; Tompkins; Wayne; Yates,projected 2D,,,East,North,X,Y,9001,,4269,13132,1995-06-02 00:00:00,,EPSG,,
-32117,NAD83 / New York  West,,,,United States (USA) - New York - NY_W - counties of Allegany; Cattaraugus; Chautauqua; Erie; Genesee; Livingston; Monroe; Niagara; Orleans; Wyoming,projected 2D,,,East,North,X,Y,9001,,4269,13133,1995-06-02 00:00:00,,EPSG,,
-32118,NAD83 / New York Long Island,NAD83 / New York Long Is,,,United States (USA) - New York - NY_LI - counties of Bronx; Kings; Nassau; New York; Queens; Richmond; Suffolk,projected 2D,,,East,North,X,Y,9001,,4269,13134,1995-06-02 00:00:00,,EPSG,,
-32119,NAD83 / North Carolina,,,,United States (USA) - North Carolina - NC - counties of Alamance; Alexander; Alleghany; Anson; Ashe; Avery; Beaufort; Bertie; Bladen; Brunswick; Buncombe; Burke; Cabarrus; Caldwell; Camden; Carteret; Caswell; Catawba; Chatham; Cherokee; Chowan; Clay; Cleveland; Columbus; Craven; Cumberland; Currituck; Dare; Davidson; Davie; Duplin; Durham; Edgecombe; Forsyth; Franklin; Gaston; Gates; Graham; Granville; Greene; Guilford; Halifax; Harnett; Haywood; Henderson [...]
-32120,NAD83 / North Dakota North,NAD83 / North Dakota N,,,United States (USA) - North Dakota - ND_N - counties of Benson; Bottineau; Burke; Cavalier; Divide; Eddy; Foster; Grand Forks; Griggs; McHenry; McKenzie; McLean; Mountrial; Nelson; Pembina; Pierce; Ramsey; Renville; Rolette; Sheridan; Steele; Towner; Traill; Walsh; Ward; Wells; Williams,projected 2D,,,East,North,X,Y,9001,,4269,13331,1995-06-02 00:00:00,,EPSG,,
-32121,NAD83 / North Dakota South,NAD83 / North Dakota S,,,United States (USA) - North Dakota - ND_S - counties of Adams; Barnes; Billings; Bowman; Burleigh; Cass; Dickey; Dunn; Emmons; Golden Valley; Grant; Hettinger; Kidder; La Moure; Logan; McIntosh; Mercer; Morton; Oliver; Ransom; Richland; Sargent; Sioux; Slope; Stark; Stutsman,projected 2D,,,East,North,X,Y,9001,,4269,13332,1995-06-02 00:00:00,,EPSG,,
-32122,NAD83 / Ohio North,,,,United States (USA) - Ohio - OH_N - counties of Allen;Ashland; Ashtabula; Auglaize; Carroll; Columbiana; Coshocton; Crawford; Cuyahoga; Defiance; Delaware; Erie; Fulton; Geauga; Hancock; Hardin; Harrison; Henry; Holmes; Huron; Jefferson; Knox; Lake; Logan; Lorain; Lucas; Mahoning; Marion; Medina; Mercer; Morrow; Ottawa; Paulding; Portage; Putnam; Richland; Sandusky; Seneca; Shelby; Stark; Summit; Trumbull; Tuscarawas; Union; Van Wert; Wayne; Williams; Wood; Wy [...]
-32123,NAD83 / Ohio South,,,,United States (USA) - Ohio - OH_S - counties of Adams; Athens; Belmont; Brown; Butler; Champaign; Clark; Clermont; Clinton; Darke; Fairfield; Fayette; Franklin; Gallia; Greene; Guernsey; Hamilton; Highland; Hocking; Jackson; Lawrence; Licking; Madison; Meigs; Miami; Monroe; Montgomery; Morgan; Muskingum; Noble; Perry; Pickaway; Pike; Preble; Ross; Scioto; Vinton; Warren; Washington,projected 2D,,,East,North,X,Y,9001,,4269,13432,1995-06-02 00:00:00,,EPSG,,
-32124,NAD83 / Oklahoma North,,,,United States (USA) - Oklahoma - OK_N - counties of Adair; Alfalfa; Beaver; Blaine; Canadian; Cherokee; Cimarron; Craig; Creek; Custer; Delaware; Dewey; Ellis; Garfield; Grant; Harper; Kay; Kingfisher; Lincoln; Logan; Major; Mayes; Muskogee; Noble; Nowata; Okfuskee; Oklahoma; Okmulgee; Osage; Ottawa; Pawnee; Payne; Roger Mills; Rogers; Sequoyah; Texas; Tulsa; Wagoner; Washington; Woods; Woodward,projected 2D,,,East,North,X,Y,9001,,4269,13531,1995-06-02 00: [...]
-32125,NAD83 / Oklahoma South,,,,United States (USA) - Oklahoma - OK_S - counties of Atoka; Beckham; Bryan; Caddo; Carter; Choctaw; Cleveland; Coal; Comanche; Cotton; Garvin; Grady; Greer; Harmon; Haskell; Hughes; Jackson; Jefferson; Johnston; Kiowa; Latimer; Le Flore; Love; Marshall; McClain; McCurtain; McIntosh; Murray; Pittsburg; Pontotoc; Pottawatomie; Pushmataha; Seminole; Stephens; Tillman; Washita,projected 2D,,,East,North,X,Y,9001,,4269,13532,1995-06-02 00:00:00,,EPSG,,
-32126,NAD83 / Oregon North,,,,United States (USA) - Oregon - OR_N - counties of Baker; Benton; Clackamas; Clatsop; Columbia; Gilliam; Grant; Hood River; Jefferson; Lincoln; Linn; Marion; Morrow; Multnomah; Polk; Sherman; Tillamook; Umatilla; Union; Wallowa; Wasco; Washington; Wheeler; Yamhill,projected 2D,,,East,North,X,Y,9001,,4269,13631,1995-06-02 00:00:00,,EPSG,,
-32127,NAD83 / Oregon South,,,,United States (USA) - Oregon - OR_S - counties of Coos; Crook; Curry; Deschutes; Douglas; Harney; Jackson; Josephine; Klamath; Lake; Lane; Malheur,projected 2D,,,East,North,X,Y,9001,,4269,13632,1995-06-02 00:00:00,,EPSG,,
-32128,NAD83 / Pennsylvania North,NAD83 / Pennsylvania N,,,United States (USA) - Pennsylvania - PA_N - counties of Bradford; Cameron; Carbon; Centre; Clarion; Clearfield; Clinton; Columbia; Crawford; Elk; Erie; Forest; Jefferson; Lackawanna; Luzerne; Lycoming; McKean; Mercer; Monroe; Montour; Northumberland; Pike; Potter; Sullivan; Susquehanna; Tioga; Union; Venango; Warren; Wayne; Wyoming,projected 2D,,,East,North,X,Y,9001,,4269,13731,1995-06-02 00:00:00,,EPSG,,
-32129,NAD83 / Pennsylvania South,NAD83 / Pennsylvania S,,,United States (USA) - Pennsylvania - PA_S - counties of Adams; Allegheny; Armstrong; Beaver; Bedford; Berks; Blair; Bucks; Butler; Cambria; Chester; Cumberland; Dauphin; Delaware; Fayette; Franklin; Fulton; Greene; Huntingdon; Indiana; Juniata; Lancaster; Lawrence; Lebanon; Lehigh; Mifflin; Montgomery; Northampton; Perry; Philadelphia; Schuylkill; Snyder; Somerset; Washington; Westmoreland; York,projected 2D,,,East,North,X,Y,9001, [...]
-32130,NAD83 / Rhode Island,,,,United States (USA) - Rhode Island - RI - counties of Bristol; Kent; Newport; Providence; Washington,projected 2D,,,East,North,X,Y,9001,,4269,13830,1995-06-02 00:00:00,,EPSG,,
-32133,NAD83 / South Carolina,,,,United States (USA) - South Carolina - SC - counties of Abbeville; Aiken; Allendale; Anderson; Bamberg; Barnwell; Beaufort; Berkeley; Calhoun; Charleston; Cherokee; Chester; Chesterfield; Clarendon; Colleton; Darlington; Dillon; Dorchester; Edgefield; Fairfield; Florence; Georgetown; Greenville; Greenwood; Hampton; Horry; Jasper; Kershaw; Lancaster; Laurens; Lee; Lexington; Marion; Marlboro; McCormick; Newberry; Oconee; Orangeburg; Pickens; Richland; Salud [...]
-32134,NAD83 / South Dakota North,NAD83 / South Dakota N,,,United States (USA) - South Dakota - SD_N - counties of Beadle; Brookings; Brown; Butte; Campbell; Clark; Codington; Corson; Day; Deuel; Dewey; Edmunds; Faulk; Grant; Hamlin; Hand; Harding; Hyde; Kingsbury; Lawrence; Marshall; McPherson; Meade; Perkins; Potter; Roberts; Spink; Sully; Walworth; Ziebach,projected 2D,,,East,North,X,Y,9001,,4269,14031,1995-06-02 00:00:00,,EPSG,,
-32135,NAD83 / South Dakota South,NAD83 / South Dakota S,,,United States (USA) - South Dakota - SD_S - counties of Aurora; Bennett; Bon Homme; Brule; Buffalo; Charles Mix; Clay; Custer; Davison; Douglas; Fall River; Gregory; Haakon; Hanson; Hughes; Hutchinson; Jackson; Jerauld; Jones; Lake; Lincoln; Lyman; McCook; Mellette; Miner; Minnehaha; Moody; Pennington; Sanborn; Shannon; Stanley; Todd; Tripp; Turner; Union; Yankton,projected 2D,,,East,North,X,Y,9001,,4269,14032,1995-06-02 00:00:00, [...]
-32136,NAD83 / Tennessee,,,,United States (USA) - Tennessee - TN - counties of Anderson; Bedford; Benton; Bledsoe; Blount; Bradley; Campbell; Cannon; Carroll; Carter; Cheatham; Chester; Claiborne; Clay; Cocke; Coffee; Crockett; Cumberland; Davidson; De Kalb; Decatur; Dickson; Dyer; Fayette; Fentress; Franklin; Gibson; Giles; Grainger; Greene; Grundy; Hamblen; Hamilton; Hancock; Hardeman; Hardin; Hawkins; Haywood; Henderson; Henry; Hickman; Houston; Humphreys; Jackson; Jefferson; Johnson;  [...]
-32137,NAD83 / Texas North,,,,United States (USA) - Texas -TX_N - counties of: Armstrong; Briscoe; Carson; Castro; Childress; Collingsworth; Dallam; Deaf Smith; Donley; Gray; Hall; Hansford; Hartley; Hemphill; Hutchinson; Lipscomb; Moore; Ochiltree; Oldham; Parmer; Potter; Randall; Roberts; Sherman; Swisher; Wheeler,projected 2D,,,East,North,X,Y,9001,,4269,14231,1995-06-02 00:00:00,,EPSG,,
-32138,NAD83 / Texas North Central,NAD83 / Texas North Cen.,,,United States (USA) - Texas -TX_NC - counties of: Andrews; Archer; Bailey; Baylor; Borden; Bowie; Callahan; Camp; Cass; Clay; Cochran; Collin; Cooke; Cottle; Crosby; Dallas; Dawson; Delta; Denton; Dickens; Eastland; Ellis; Erath; Fannin; Fisher; Floyd; Foard; Franklin; Gaines; Garza; Grayson,projected 2D,,,East,North,X,Y,9001,,4269,14232,1995-06-02 00:00:00,,EPSG,,
-32139,NAD83 / Texas Central,,,,United States (USA) - Texas -TX_C - counties of Anderson; Angelina; Bastrop; Bell; Blanco; Bosque; Brazos; Brown; Burleson; Burnet; Cherokee; Coke; Coleman; Comanche; Concho; Coryell; Crane; Crockett; Culberson; Ector; El Paso; Falls; Freestone; Gillespie; Glasscock; Grimes; Hamilton; Hardin; Houston; Hudspeth; Irion; Jasper; Jeff Davis; Kimble; Lampasas; Lee; Leon; Liberty; Limestone; Llano; Loving; Madison; Mason; McCulloch; McLennan; Menard; Midland; Mil [...]
-32140,NAD83 / Texas South Central,NAD83 / Texas South Cen.,,,United States (USA) - Texas -TX_SC - counties of Aransas; Atascosa; Austin; Bandera; Bee; Bexar; Brazoria; Brewster; Caldwell; Calhoun; Chambers; Colorado; Comal; De Witt; Dimmit; Edwards; Fayette; Fort Bend; Frio; Galveston; Goliad; Gonzales; Guadalupe; Harris; Hays; Jackson; Jefferson; Karnes; Kendall; Kerr; Kinney; La Salle; Lavaca; Live Oak; Matagorda; Maverick; McMullen; Medina; Presidio; Real; Refugio; Terrell; Uvalde; Va [...]
-32141,NAD83 / Texas South,,,,United States (USA) - Texas -TX_S - counties of Brooks; Cameron; Duval; Hidalgo; Jim Hogg; Jim Wells; Kenedy; Kleberg; Nueces; San Patricio; Starr; Webb; Willacy; Zapata,projected 2D,,,East,North,X,Y,9001,,4269,14235,1995-06-02 00:00:00,,EPSG,,
-32142,NAD83 / Utah North,,,,United States (USA) - Utah - UT_N - counties of Box Elder; Cache; Daggett; Davis; Morgan; Rich; Summit; Weber,projected 2D,,,East,North,X,Y,9001,,4269,14331,1995-06-02 00:00:00,,EPSG,,
-32143,NAD83 / Utah Central,,,,United States (USA) - Utah - UT_C - counties of Carbon; Duchesne; Emery; Grand; Juab; Millard; Salt Lake; Sanpete; Sevier; Tooele; Uintah; Utah; Wasatch,projected 2D,,,East,North,X,Y,9001,,4269,14332,1995-06-02 00:00:00,,EPSG,,
-32144,NAD83 / Utah South,,,,United States (USA) - Utah - UT_S - counties of Beaver; Garfield; Iron; Kane; Piute; San Juan; Washington; Wayne,projected 2D,,,East,North,X,Y,9001,,4269,14333,1995-06-02 00:00:00,,EPSG,,
-32145,NAD83 / Vermont,,,,United States (USA) - Vermont - VT - counties of Addison; Bennington; Caledonia; Chittenden; Essex; Franklin; Grand Isle; Lamoille; Orange; Orleans; Rutland; Washington; Windham; Windsor,projected 2D,,,East,North,X,Y,9001,,4269,14430,1995-06-02 00:00:00,,EPSG,,
-32146,NAD83 / Virginia North,,,,United States (USA) - Virginia - VA_N - counties of Arlington; Augusta; Bath; Caroline; Clarke; Culpeper; Fairfax; Fauquier; Frederick; Greene; Highland; King George; Loudoun; Madison; Orange; Page; Prince William; Rappahannock; Rockingham; Shenandoah; Spotsylvania; Stafford; Warren; Westmoreland,projected 2D,,,East,North,X,Y,9001,,4269,14531,1995-06-02 00:00:00,,EPSG,,
-32147,NAD83 / Virginia South,,,,United States (USA) - Virginia - VA_S - counties of Accomack; Albemarle; Alleghany; Amelia; Amherst; Appomattox; Bedford; Bland; Botetourt; Bristol; Brunswick; Buchanan; Buckingham; Campbell; Carroll; Charles City; Charlotte; Chesapeake; Chesterfield; Colonial Heights; Craig; Cumberland; Dickenson; Dinwiddie; Essex; Floyd; Fluvanna; Franklin; Giles; Gloucester; Goochland; Grayson; Greensville; Halifax; Hampton; Hanover; Henrico; Henry; Isle of Wight; James [...]
-32148,NAD83 / Washington North,,,,United States (USA) - Washington - WA_N - counties of Chelan; Clallam; Douglas; Ferry; Grant north of approx. 47d30m; Island; Jefferson; King; Kitsap; Lincoln; Okanogan; Pend Oreille; San Juan; Skagit; Snohomish; Spokane; Stevens; Whatcom,projected 2D,,,East,North,X,Y,9001,,4269,14631,1995-06-02 00:00:00,,EPSG,,
-32149,NAD83 / Washington South,,,,United States (USA) - Washington - WA_S - counties of Adams; Asotin; Benton; Clark; Columbia; Cowlitz; Franklin; Garfield; Grant south of approx. 47d30m; Grays Harbor; Kittitas; Klickitat; Lewis; Mason; Pacific; Pierce; Skamania; Thurston; Wahkiakum; Walla Walla; Whitman; Yakima,projected 2D,,,East,North,X,Y,9001,,4269,14632,1995-06-02 00:00:00,,EPSG,,
-32150,NAD83 / West Virginia North,NAD83 / West Virginia N,,,United States (USA) - West Virginia - WV_N - counties of Barbour; Berkeley; Brooke; Doddridge; Grant; Hampshire; Hancock; Hardy; Harrison; Jefferson; Marion; Marshall; Mineral; Monongalia; Morgan; Ohio; Pleasants; Preston; Ritchie; Taylor; Tucker; Tyler; Wetzel; Wirt; Wood,projected 2D,,,East,North,X,Y,9001,,4269,14731,1995-06-02 00:00:00,,EPSG,,
-32151,NAD83 / West Virginia South,NAD83 / West Virginia S,,,United States (USA) - West Virginia - WV_S - counties of Boone; Braxton; Cabell; Calhoun; Clay; Fayette; Gilmer; Greenbrier; Jackson; Kanawha; Lewis; Lincoln; Logan; Mason; McDowell; Mercer; Mingo; Monroe; Nicholas; Pendleton; Pocahontas; Putnam; Raleigh; Randolph; Roane; Summers; Upshur; Wayne; Webster; Wyoming,projected 2D,,,East,North,X,Y,9001,,4269,14732,1995-06-02 00:00:00,,EPSG,,
-32152,NAD83 / Wisconsin North,,,,United States (USA) - Wisconsin - WI_N - counties of Ashland; Bayfield; Burnett; Douglas; Florence; Forest; Iron; Oneida; Price; Sawyer; Vilas; Washburn,projected 2D,,,East,North,X,Y,9001,,4269,14831,1995-06-02 00:00:00,,EPSG,,
-32153,NAD83 / Wisconsin Central,NAD83 / Wisconsin Cen.,,,United States (USA) - Wisconsin - WI_C - counties of Barron; Brown; Buffalo; Chippewa; Clark; Door; Dunn; Eau Claire; Jackson; Kewaunee; Langlade; Lincoln; Marathon; Marinette; Menominee; Oconto; Outagamie; Pepin; Pierce; Polk; Portage; Rusk; Shawano; St. Croix; Taylor; Trempealeau; Waupaca; Wood,projected 2D,,,East,North,X,Y,9001,,4269,14832,1995-06-02 00:00:00,,EPSG,,
-32154,NAD83 / Wisconsin South,,,,United States (USA) - Wisconsin - WI_S - counties of Adams; Calumet; Columbia; Crawford; Dane; Dodge; Fond Du Lac; Grant; Green; Green Lake; Iowa; Jefferson; Juneau; Kenosha; La Crosse; Lafayette; Manitowoc; Marquette; Milwaukee; Monroe; Ozaukee; Racine; Richland; Rock; Sauk; Sheboygan; Vernon; Walworth; Washington; Waukesha; Waushara; Winnebago,projected 2D,,,East,North,X,Y,9001,,4269,14833,1995-06-02 00:00:00,,EPSG,,
-32155,NAD83 / Wyoming East,,,,United States (USA) - Wyoming - WY_E - counties of Albany; Campbell; Converse; Crook; Goshen; Laramie; Niobrara; Platte; Weston,projected 2D,,,East,North,X,Y,9001,,4269,14931,1995-06-02 00:00:00,,EPSG,,
-32156,NAD83 / Wyoming East Central,NAD83 / Wyoming E. Cen.,,,United States (USA) - Wyoming - WY_EC - counties of Big Horn; Carbon; Johnson; Natrona; Sheridan; Washakie,projected 2D,,,East,North,X,Y,9001,,4269,14932,1995-06-02 00:00:00,,EPSG,,
-32157,NAD83 / Wyoming West Central,NAD83 / Wyoming W. Cen.,,,United States (USA) - Wyoming - WY_WC - counties of Fremont; Hot Springs; Park; Sweetwater,projected 2D,,,East,North,X,Y,9001,,4269,14933,1995-06-02 00:00:00,,EPSG,,
-32158,NAD83 / Wyoming West,,,,United States (USA) - Wyoming - WY_W - counties of Lincoln; Sublette; Teton; Uinta,projected 2D,,,East,North,X,Y,9001,,4269,14934,1995-06-02 00:00:00,,EPSG,,
-32161,NAD83 / Puerto Rico & Virgin Is.,,,,Puerto Rico and U.S. Virgin Islands.,projected 2D,,,East,North,X,Y,9001,,4269,15230,1995-06-02 00:00:00,,EPSG,,
-32180,NAD83 / SCoPQ zone 2,,,,Canada - Quebec - east of 57 deg East.,projected 2D,,,East,North,X,Y,9001,,4269,17700,1997-11-13 00:00:00,Topographic Mapping Section; Quebec Ministry of Natural Resources.,EPSG,,
-32181,NAD83 / MTM zone 1,,,,Canada - Newfoundland - east of 54 deg 30 min West.,projected 2D,,,East,North,E(X),N(Y),9001,,4269,17701,1997-11-13 00:00:00,Geodetic Surveys Section; Newfoundland Department of Government Services and Lands.,EPSG,,
-32182,NAD83 / MTM zone 2,,,,Canada - Newfoundland and Labrador between 57 deg 30 min and 54 de 30 min West.,projected 2D,,,East,North,E(X),N(Y),9001,,4269,17702,1997-11-13 00:00:00,Geodetic Surveys Section; Newfoundland Department of Government Services and Lands.,EPSG,,
-32183,NAD83 / MTM zone 3,,,,Canada - Newfoundland and Labrador between 60 deg and 57 deg 30 min West; Canada - Quebec between 60 deg and 57 deg West.,projected 2D,,,East,North,E(X),N(Y),9001,,4269,17703,1997-11-13 00:00:00,Topographic Mapping Section; Quebec Ministry of Natural Resources. Also Geodetic Surveys Section; Newfoundland Department of Government Services and Lands.,EPSG,"Known in Quebec as \"NAD83 / SCoPQ zone 3\" with axis 1 and 2 abbreviations of \"X\" and \"Y\" respectively.",
-32184,NAD83 / MTM zone 4,,,,Canada - Quebec and Newfoundland (Labrador) between 63 deg and 60 deg West.,projected 2D,,,East,North,E(X),N(Y),9001,,4269,17704,1997-11-13 00:00:00,Topographic Mapping Section; Quebec Ministry of Natural Resources. Also Geodetic Surveys Section; Newfoundland Department of Government Services and Lands.,EPSG,"Known in Quebec as \"NAD83 / SCoPQ zone 4\" with axis 1 and 2 abbreviations of \"X\" and \"Y\" respectively.",
-32185,NAD83 / MTM zone 5,,,,Canada - Quebec and Newfoundland (Labrador) between 66 deg and 63 deg West.,projected 2D,,,East,North,E(X),N(Y),9001,,4269,17705,1997-11-13 00:00:00,Topographic Mapping Section; Quebec Ministry of Natural Resources. Also Geodetic Surveys Section; Newfoundland Department of Government Services and Lands.,EPSG,"Known in Quebec as \"NAD83 / SCoPQ zone 5\" with axis 1 and 2 abbreviations of \"X\" and \"Y\" respectively.",
-32186,NAD83 / MTM zone 6,,,,Canada - Quebec and Newfoundland (Labrador) between 69 deg and  66 deg West.,projected 2D,,,East,North,E(X),N(Y),9001,,4269,17706,1997-11-13 00:00:00,Topographic Mapping Section; Quebec Ministry of Natural Resources. Also Geodetic Surveys Section; Newfoundland Department of Government Services and Lands.,EPSG,"Known in Quebec as \"NAD83 / SCoPQ zone 6\" with axis 1 and 2 abbreviations of \"X\" and \"Y\" respectively.",
-32187,NAD83 / MTM zone 7,,,,Canada - Quebec between 72 deg and 69 deg West.,projected 2D,,,East,North,E(X),N(Y),9001,,4269,17707,1997-11-13 00:00:00,Topographic Mapping Section; Quebec Ministry of Natural Resources.,EPSG,"Known in Quebec as \"NAD83 / SCoPQ zone 7\" with axis 1 and 2 abbreviations of \"X\" and \"Y\" respectively.",
-32188,NAD83 / MTM zone 8,,,,Canada - Quebec between 75 deg and 72 deg West.; Canada - Ontario - east of 75 deg West.,projected 2D,,,East,North,E(X),N(Y),9001,,4269,17708,1997-11-13 00:00:00,Surveys and Mapping Section; Ontario Ministry of Transportation.,EPSG,"Known in Quebec as \"NAD83 / SCoPQ zone 8\" with axis 1 and 2 abbreviations of \"X\" and \"Y\" respectively.",
-32189,NAD83 / MTM zone 9,,,,Canada - Quebec and Ontario - between 78 deg and 75 deg West.,projected 2D,,,East,North,E(X),N(Y),9001,,4269,17709,1997-11-13 00:00:00,Surveys and Mapping Section; Ontario Ministry of Transportation.,EPSG,"Known in Quebec as \"NAD83 / SCoPQ zone 9\" with axis 1 and 2 abbreviations of \"X\" and \"Y\" respectively.",
-32190,NAD83 / MTM zone 10,,,,Canada - Quebec west of 78 deg West; Canada - Ontario - between 79 deg 30 min and 78 deg W in area to north of 47 deg N; between 80 deg 15 min and 78 deg W in area between 46 deg and 47 deg N; between 81 deg and 78 deg W in area south of 46 deg N.,projected 2D,,,East,North,E(X),N(Y),9001,,4269,17710,1997-11-13 00:00:00,Surveys and Mapping Section; Ontario Ministry of Transportation.,EPSG,"Known in Quebec as \"NAD83 / SCoPQ zone 10\" with axis 1 and 2 abbrevia [...]
-32191,NAD83 / MTM zone 11,,,,Canada - Ontario - south of 46 deg N and west of 81 deg West.,projected 2D,,,East,North,E,N,9001,,4269,17711,1997-11-13 00:00:00,Surveys and Mapping Section; Ontario Ministry of Transportation.,EPSG,,
-32192,NAD83 / MTM zone 12,,,,Canada - Ontario - between 82 deg 30 min and 79 deg 30 min W in area to north of 47 deg N; between 82 deg 30 min and 80 deg 15 min W in area between 46 deg and 47 deg N; between 82 deg 30 min and 79 deg 30 min W in area north of 47 deg N.,projected 2D,,,East,North,E,N,9001,,4269,17712,1997-11-13 00:00:00,Surveys and Mapping Section; Ontario Ministry of Transportation.,EPSG,,
-32193,NAD83 / MTM zone 13,,,,Canada - Ontario - between 85 deg 30 min and 82 deg 30 min West and north of 46 deg North.,projected 2D,,,East,North,E,N,9001,,4269,17713,1997-11-13 00:00:00,Surveys and Mapping Section; Ontario Ministry of Transportation.,EPSG,,
-32194,NAD83 / MTM zone 14,,,,Canada - Ontario - between 88 deg 30 min and 85 deg 30 min West.,projected 2D,,,East,North,E,N,9001,,4269,17714,1997-11-13 00:00:00,Surveys and Mapping Section; Ontario Ministry of Transportation.,EPSG,,
-32195,NAD83 / MTM zone 15,,,,Canada - Ontario - between 91 deg 30 min and 88 deg 30 min West.,projected 2D,,,East,North,E,N,9001,,4269,17715,1997-11-13 00:00:00,Surveys and Mapping Section; Ontario Ministry of Transportation.,EPSG,,
-32196,NAD83 / MTM zone 16,,,,Canada - Ontario - between 94 deg 30 min and 91 deg 30 min West.,projected 2D,,,East,North,E,N,9001,,4269,17716,1997-11-13 00:00:00,Surveys and Mapping Section; Ontario Ministry of Transportation.,EPSG,,
-32197,NAD83 / MTM zone 17,,,,Canada - Ontario - west of 94 deg 30 min West.,projected 2D,,,East,North,E,N,9001,,4269,17717,1997-11-13 00:00:00,Surveys and Mapping Section; Ontario Ministry of Transportation.,EPSG,,
-32198,NAD83 / Quebec Lambert,,,,Canada - Quebec,projected 2D,,,East,North,X,Y,9001,,4269,19944,1999-10-20 00:00:00,Service de la Cartographie; Minist�re des Ressources Naturelles; Quebec,EPSG,,
-32201,WGS 72 / UTM zone 1N,,,,180deg to 174deg West; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16001,1995-06-02 00:00:00,,EPSG,,
-32202,WGS 72 / UTM zone 2N,,,,174deg West to 168deg West; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16002,1995-06-02 00:00:00,,EPSG,,
-32203,WGS 72 / UTM zone 3N,,,,168deg West to 162deg West; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16003,1995-06-02 00:00:00,,EPSG,,
-32204,WGS 72 / UTM zone 4N,,,,162deg West to 156deg West; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16004,1995-06-02 00:00:00,,EPSG,,
-32205,WGS 72 / UTM zone 5N,,,,156deg West to 150deg West; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16005,1995-06-02 00:00:00,,EPSG,,
-32206,WGS 72 / UTM zone 6N,,,,150deg West to 144deg West; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16006,1995-06-02 00:00:00,,EPSG,,
-32207,WGS 72 / UTM zone 7N,,,,144deg West to 138deg West; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16007,1995-06-02 00:00:00,,EPSG,,
-32208,WGS 72 / UTM zone 8N,,,,138deg West to 132deg West; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16008,1995-06-02 00:00:00,,EPSG,,
-32209,WGS 72 / UTM zone 9N,,,,132deg West to 126deg West; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16009,1995-06-02 00:00:00,,EPSG,,
-32210,WGS 72 / UTM zone 10N,,,,130deg West to 120deg West; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16010,1995-06-02 00:00:00,,EPSG,,
-32211,WGS 72 / UTM zone 11N,,,,120deg West to 114deg West; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16011,1995-06-02 00:00:00,,EPSG,,
-32212,WGS 72 / UTM zone 12N,,,,114deg West to 108deg West; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16012,1995-06-02 00:00:00,,EPSG,,
-32213,WGS 72 / UTM zone 13N,,,,108deg West to 102deg West; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16013,1995-06-02 00:00:00,,EPSG,,
-32214,WGS 72 / UTM zone 14N,,,,102deg West to 96deg West; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16014,1995-06-02 00:00:00,,EPSG,,
-32215,WGS 72 / UTM zone 15N,,,,96deg West to 90deg West; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16015,1995-06-02 00:00:00,,EPSG,,
-32216,WGS 72 / UTM zone 16N,,,,90deg West to 84deg West; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16016,1995-06-02 00:00:00,,EPSG,,
-32217,WGS 72 / UTM zone 17N,,,,84deg West to 78deg West; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16017,1995-06-02 00:00:00,,EPSG,,
-32218,WGS 72 / UTM zone 18N,,,,78deg West to 72deg West; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16018,1995-06-02 00:00:00,,EPSG,,
-32219,WGS 72 / UTM zone 19N,,,,72deg West to 66deg West; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16019,1995-06-02 00:00:00,,EPSG,,
-32220,WGS 72 / UTM zone 20N,,,,66deg West to 60deg West; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16020,1995-06-02 00:00:00,,EPSG,,
-32221,WGS 72 / UTM zone 21N,,,,60deg West to 54deg West; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16021,1995-06-02 00:00:00,,EPSG,,
-32222,WGS 72 / UTM zone 22N,,,,54deg West to 48deg West; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16022,1995-06-02 00:00:00,,EPSG,,
-32223,WGS 72 / UTM zone 23N,,,,48deg West to 42deg West; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16023,1995-06-02 00:00:00,,EPSG,,
-32224,WGS 72 / UTM zone 24N,,,,42deg West to 36deg West; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16024,1995-06-02 00:00:00,,EPSG,,
-32225,WGS 72 / UTM zone 25N,,,,36deg West to 30deg West; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16025,1995-06-02 00:00:00,,EPSG,,
-32226,WGS 72 / UTM zone 26N,,,,30deg West to 24deg West; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16026,1995-06-02 00:00:00,,EPSG,,
-32227,WGS 72 / UTM zone 27N,,,,24deg West to 18deg West; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16027,1995-06-02 00:00:00,,EPSG,,
-32228,WGS 72 / UTM zone 28N,,,,18deg West to 12deg West; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16028,1995-06-02 00:00:00,,EPSG,,
-32229,WGS 72 / UTM zone 29N,,,,12deg West to 6deg West; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16029,1995-06-02 00:00:00,,EPSG,,
-32230,WGS 72 / UTM zone 30N,,,,6deg West to 0deg; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16030,1995-06-02 00:00:00,,EPSG,,
-32231,WGS 72 / UTM zone 31N,,,,0deg to 6deg East; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16031,1995-06-02 00:00:00,,EPSG,,
-32232,WGS 72 / UTM zone 32N,,,,6deg East to 12deg East; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16032,1995-06-02 00:00:00,,EPSG,,
-32233,WGS 72 / UTM zone 33N,,,,12deg East to 18deg East; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16033,1995-06-02 00:00:00,,EPSG,,
-32234,WGS 72 / UTM zone 34N,,,,18deg East to 24deg East; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16034,1995-06-02 00:00:00,,EPSG,,
-32235,WGS 72 / UTM zone 35N,,,,24deg East to 30deg East; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16035,1995-06-02 00:00:00,,EPSG,,
-32236,WGS 72 / UTM zone 36N,,,,30deg East to 36deg East; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16036,1995-06-02 00:00:00,,EPSG,,
-32237,WGS 72 / UTM zone 37N,,,,36deg East to 42deg East; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16037,1995-06-02 00:00:00,,EPSG,,
-32238,WGS 72 / UTM zone 38N,,,,42deg East to 48deg East; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16038,1995-06-02 00:00:00,,EPSG,,
-32239,WGS 72 / UTM zone 39N,,,,48deg East to 54deg East; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16039,1995-06-02 00:00:00,,EPSG,,
-32240,WGS 72 / UTM zone 40N,,,,54deg East to 60deg East; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16040,1995-06-02 00:00:00,,EPSG,,
-32241,WGS 72 / UTM zone 41N,,,,60deg East to 66deg East; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16041,1995-06-02 00:00:00,,EPSG,,
-32242,WGS 72 / UTM zone 42N,,,,66deg East to 72deg East; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16042,1995-06-02 00:00:00,,EPSG,,
-32243,WGS 72 / UTM zone 43N,,,,72deg East to 78deg East; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16043,1995-06-02 00:00:00,,EPSG,,
-32244,WGS 72 / UTM zone 44N,,,,78deg East to 84deg East; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16044,1995-06-02 00:00:00,,EPSG,,
-32245,WGS 72 / UTM zone 45N,,,,84deg East to 90deg East; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16045,1995-06-02 00:00:00,,EPSG,,
-32246,WGS 72 / UTM zone 46N,,,,90deg East to 96deg East; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16046,1995-06-02 00:00:00,,EPSG,,
-32247,WGS 72 / UTM zone 47N,,,,96deg East to 102eg East; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16047,1995-06-02 00:00:00,,EPSG,,
-32248,WGS 72 / UTM zone 48N,,,,102deg East to 108deg East; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16048,1995-06-02 00:00:00,,EPSG,,
-32249,WGS 72 / UTM zone 49N,,,,108deg East to 114deg East; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16049,1995-06-02 00:00:00,,EPSG,,
-32250,WGS 72 / UTM zone 50N,,,,114deg East to 120deg East; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16050,1995-06-02 00:00:00,,EPSG,,
-32251,WGS 72 / UTM zone 51N,,,,120deg East to 126deg East; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16051,1995-06-02 00:00:00,,EPSG,,
-32252,WGS 72 / UTM zone 52N,,,,126deg East to 132deg East; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16052,1995-06-02 00:00:00,,EPSG,,
-32253,WGS 72 / UTM zone 53N,,,,132deg East to 138deg East; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16053,1995-06-02 00:00:00,,EPSG,,
-32254,WGS 72 / UTM zone 54N,,,,138deg East to 144deg East; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16054,1995-06-02 00:00:00,,EPSG,,
-32255,WGS 72 / UTM zone 55N,,,,144deg East to 150deg East; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16055,1995-06-02 00:00:00,,EPSG,,
-32256,WGS 72 / UTM zone 56N,,,,150deg East to 156deg East; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16056,1995-06-02 00:00:00,,EPSG,,
-32257,WGS 72 / UTM zone 57N,,,,156deg East to 162deg East; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16057,1995-06-02 00:00:00,,EPSG,,
-32258,WGS 72 / UTM zone 58N,,,,162deg East to 168deg East; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16058,1995-06-02 00:00:00,,EPSG,,
-32259,WGS 72 / UTM zone 59N,,,,168deg East to 174deg East; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16059,1995-06-02 00:00:00,,EPSG,,
-32260,WGS 72 / UTM zone 60N,,,,174deg East to 180deg; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16060,1995-06-02 00:00:00,,EPSG,,
-32301,WGS 72 / UTM zone 1S,,,,180deg to 174deg West; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16101,1995-06-02 00:00:00,,EPSG,,
-32302,WGS 72 / UTM zone 2S,,,,174deg West to 168deg West; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16102,1995-06-02 00:00:00,,EPSG,,
-32303,WGS 72 / UTM zone 3S,,,,168deg West to 162deg West; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16103,1995-06-02 00:00:00,,EPSG,,
-32304,WGS 72 / UTM zone 4S,,,,162deg West to 156deg West; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16104,1995-06-02 00:00:00,,EPSG,,
-32305,WGS 72 / UTM zone 5S,,,,156deg West to 150deg West; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16105,1995-06-02 00:00:00,,EPSG,,
-32306,WGS 72 / UTM zone 6S,,,,150deg West to 144deg West; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16106,1995-06-02 00:00:00,,EPSG,,
-32307,WGS 72 / UTM zone 7S,,,,144deg West to 138deg West; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16107,1995-06-02 00:00:00,,EPSG,,
-32308,WGS 72 / UTM zone 8S,,,,138deg West to 132deg West; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16108,1995-06-02 00:00:00,,EPSG,,
-32309,WGS 72 / UTM zone 9S,,,,132deg West to 126deg West; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16109,1995-06-02 00:00:00,,EPSG,,
-32310,WGS 72 / UTM zone 10S,,,,130deg West to 120deg West; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16110,1995-06-02 00:00:00,,EPSG,,
-32311,WGS 72 / UTM zone 11S,,,,120deg West to 114deg West; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16111,1995-06-02 00:00:00,,EPSG,,
-32312,WGS 72 / UTM zone 12S,,,,114deg West to 108deg West; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16112,1995-06-02 00:00:00,,EPSG,,
-32313,WGS 72 / UTM zone 13S,,,,108deg West to 102deg West; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16113,1995-06-02 00:00:00,,EPSG,,
-32314,WGS 72 / UTM zone 14S,,,,102deg West to 96deg West; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16114,1995-06-02 00:00:00,,EPSG,,
-32315,WGS 72 / UTM zone 15S,,,,96deg West to 90deg West; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16115,1995-06-02 00:00:00,,EPSG,,
-32316,WGS 72 / UTM zone 16S,,,,90deg West to 84deg West; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16116,1995-06-02 00:00:00,,EPSG,,
-32317,WGS 72 / UTM zone 17S,,,,84deg West to 78deg West; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16117,1995-06-02 00:00:00,,EPSG,,
-32318,WGS 72 / UTM zone 18S,,,,78deg West to 72deg West; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16118,1995-06-02 00:00:00,,EPSG,,
-32319,WGS 72 / UTM zone 19S,,,,72deg West to 66deg West; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16119,1995-06-02 00:00:00,,EPSG,,
-32320,WGS 72 / UTM zone 20S,,,,66deg West to 60deg West; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16120,1995-06-02 00:00:00,,EPSG,,
-32321,WGS 72 / UTM zone 21S,,,,60deg West to 54deg West; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16121,1995-06-02 00:00:00,,EPSG,,
-32322,WGS 72 / UTM zone 22S,,,,54deg West to 48deg West; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16122,1995-06-02 00:00:00,,EPSG,,
-32323,WGS 72 / UTM zone 23S,,,,48deg West to 42deg West; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16123,1995-06-02 00:00:00,,EPSG,,
-32324,WGS 72 / UTM zone 24S,,,,42deg West to 36deg West; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16124,1995-06-02 00:00:00,,EPSG,,
-32325,WGS 72 / UTM zone 25S,,,,36deg West to 30deg West; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16125,1995-06-02 00:00:00,,EPSG,,
-32326,WGS 72 / UTM zone 26S,,,,30deg West to 24deg West; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16126,1995-06-02 00:00:00,,EPSG,,
-32327,WGS 72 / UTM zone 27S,,,,24deg West to 18deg West; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16127,1995-06-02 00:00:00,,EPSG,,
-32328,WGS 72 / UTM zone 28S,,,,18deg West to 12deg West; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16128,1995-06-02 00:00:00,,EPSG,,
-32329,WGS 72 / UTM zone 29S,,,,12deg West to 6deg West; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16129,1995-06-02 00:00:00,,EPSG,,
-32330,WGS 72 / UTM zone 30S,,,,6deg West to 0deg; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16130,1995-06-02 00:00:00,,EPSG,,
-32331,WGS 72 / UTM zone 31S,,,,0deg to 6deg East; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16131,1995-06-02 00:00:00,,EPSG,,
-32332,WGS 72 / UTM zone 32S,,,,6deg East to 12deg East; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16132,1995-06-02 00:00:00,,EPSG,,
-32333,WGS 72 / UTM zone 33S,,,,12deg East to 18deg East; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16133,1995-06-02 00:00:00,,EPSG,,
-32334,WGS 72 / UTM zone 34S,,,,18deg East to 24deg East; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16134,1995-06-02 00:00:00,,EPSG,,
-32335,WGS 72 / UTM zone 35S,,,,24deg East to 30deg East; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16135,1995-06-02 00:00:00,,EPSG,,
-32336,WGS 72 / UTM zone 36S,,,,30deg East to 36deg East; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16136,1995-06-02 00:00:00,,EPSG,,
-32337,WGS 72 / UTM zone 37S,,,,36deg East to 42deg East; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16137,1995-06-02 00:00:00,,EPSG,,
-32338,WGS 72 / UTM zone 38S,,,,42deg East to 48deg East; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16138,1995-06-02 00:00:00,,EPSG,,
-32339,WGS 72 / UTM zone 39S,,,,48deg East to 54deg East; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16139,1995-06-02 00:00:00,,EPSG,,
-32340,WGS 72 / UTM zone 40S,,,,54deg East to 60deg East; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16140,1995-06-02 00:00:00,,EPSG,,
-32341,WGS 72 / UTM zone 41S,,,,60deg East to 66deg East; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16141,1995-06-02 00:00:00,,EPSG,,
-32342,WGS 72 / UTM zone 42S,,,,66deg East to 72deg East; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16142,1995-06-02 00:00:00,,EPSG,,
-32343,WGS 72 / UTM zone 43S,,,,72deg East to 78deg East; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16143,1995-06-02 00:00:00,,EPSG,,
-32344,WGS 72 / UTM zone 44S,,,,78deg East to 84deg East; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16144,1995-06-02 00:00:00,,EPSG,,
-32345,WGS 72 / UTM zone 45S,,,,84deg East to 90deg East; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16145,1995-06-02 00:00:00,,EPSG,,
-32346,WGS 72 / UTM zone 46S,,,,90deg East to 96deg East; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16146,1995-06-02 00:00:00,,EPSG,,
-32347,WGS 72 / UTM zone 47S,,,,96deg East to 102eg East; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16147,1995-06-02 00:00:00,,EPSG,,
-32348,WGS 72 / UTM zone 48S,,,,102deg East to 108deg East; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16148,1995-06-02 00:00:00,,EPSG,,
-32349,WGS 72 / UTM zone 49S,,,,108deg East to 114deg East; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16149,1995-06-02 00:00:00,,EPSG,,
-32350,WGS 72 / UTM zone 50S,,,,114deg East to 120deg East; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16150,1995-06-02 00:00:00,,EPSG,,
-32351,WGS 72 / UTM zone 51S,,,,120deg East to 126deg East; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16151,1995-06-02 00:00:00,,EPSG,,
-32352,WGS 72 / UTM zone 52S,,,,126deg East to 132deg East; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16152,1995-06-02 00:00:00,,EPSG,,
-32353,WGS 72 / UTM zone 53S,,,,132deg East to 138deg East; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16153,1995-06-02 00:00:00,,EPSG,,
-32354,WGS 72 / UTM zone 54S,,,,138deg East to 144deg East; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16154,1995-06-02 00:00:00,,EPSG,,
-32355,WGS 72 / UTM zone 55S,,,,144deg East to 150deg East; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16155,1995-06-02 00:00:00,,EPSG,,
-32356,WGS 72 / UTM zone 56S,,,,150deg East to 156deg East; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16156,1995-06-02 00:00:00,,EPSG,,
-32357,WGS 72 / UTM zone 57S,,,,156deg East to 162deg East; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16157,1995-06-02 00:00:00,,EPSG,,
-32358,WGS 72 / UTM zone 58S,,,,162deg East to 168deg East; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16158,1995-06-02 00:00:00,,EPSG,,
-32359,WGS 72 / UTM zone 59S,,,,168deg East to 174deg East; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16159,1995-06-02 00:00:00,,EPSG,,
-32360,WGS 72 / UTM zone 60S,,,,174deg East to 180deg; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4322,16160,1995-06-02 00:00:00,,EPSG,,
-32401,WGS 72BE / UTM zone 1N,,,,180deg to 174deg West; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16001,1995-06-02 00:00:00,,EPSG,,
-32402,WGS 72BE / UTM zone 2N,,,,174deg West to 168deg West; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16002,1995-06-02 00:00:00,,EPSG,,
-32403,WGS 72BE / UTM zone 3N,,,,168deg West to 162deg West; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16003,1995-06-02 00:00:00,,EPSG,,
-32404,WGS 72BE / UTM zone 4N,,,,162deg West to 156deg West; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16004,1995-06-02 00:00:00,,EPSG,,
-32405,WGS 72BE / UTM zone 5N,,,,156deg West to 150deg West; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16005,1995-06-02 00:00:00,,EPSG,,
-32406,WGS 72BE / UTM zone 6N,,,,150deg West to 144deg West; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16006,1995-06-02 00:00:00,,EPSG,,
-32407,WGS 72BE / UTM zone 7N,,,,144deg West to 138deg West; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16007,1995-06-02 00:00:00,,EPSG,,
-32408,WGS 72BE / UTM zone 8N,,,,138deg West to 132deg West; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16008,1995-06-02 00:00:00,,EPSG,,
-32409,WGS 72BE / UTM zone 9N,,,,132deg West to 126deg West; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16009,1995-06-02 00:00:00,,EPSG,,
-32410,WGS 72BE / UTM zone 10N,,,,130deg West to 120deg West; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16010,1995-06-02 00:00:00,,EPSG,,
-32411,WGS 72BE / UTM zone 11N,,,,120deg West to 114deg West; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16011,1995-06-02 00:00:00,,EPSG,,
-32412,WGS 72BE / UTM zone 12N,,,,114deg West to 108deg West; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16012,1995-06-02 00:00:00,,EPSG,,
-32413,WGS 72BE / UTM zone 13N,,,,108deg West to 102deg West; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16013,1995-06-02 00:00:00,,EPSG,,
-32414,WGS 72BE / UTM zone 14N,,,,102deg West to 96deg West; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16014,1995-06-02 00:00:00,,EPSG,,
-32415,WGS 72BE / UTM zone 15N,,,,96deg West to 90deg West; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16015,1995-06-02 00:00:00,,EPSG,,
-32416,WGS 72BE / UTM zone 16N,,,,90deg West to 84deg West; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16016,1995-06-02 00:00:00,,EPSG,,
-32417,WGS 72BE / UTM zone 17N,,,,84deg West to 78deg West; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16017,1995-06-02 00:00:00,,EPSG,,
-32418,WGS 72BE / UTM zone 18N,,,,78deg West to 72deg West; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16018,1995-06-02 00:00:00,,EPSG,,
-32419,WGS 72BE / UTM zone 19N,,,,72deg West to 66deg West; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16019,1995-06-02 00:00:00,,EPSG,,
-32420,WGS 72BE / UTM zone 20N,,,,66deg West to 60deg West; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16020,1995-06-02 00:00:00,,EPSG,,
-32421,WGS 72BE / UTM zone 21N,,,,60deg West to 54deg West; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16021,1995-06-02 00:00:00,,EPSG,,
-32422,WGS 72BE / UTM zone 22N,,,,54deg West to 48deg West; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16022,1995-06-02 00:00:00,,EPSG,,
-32423,WGS 72BE / UTM zone 23N,,,,48deg West to 42deg West; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16023,1995-06-02 00:00:00,,EPSG,,
-32424,WGS 72BE / UTM zone 24N,,,,42deg West to 36deg West; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16024,1995-06-02 00:00:00,,EPSG,,
-32425,WGS 72BE / UTM zone 25N,,,,36deg West to 30deg West; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16025,1995-06-02 00:00:00,,EPSG,,
-32426,WGS 72BE / UTM zone 26N,,,,30deg West to 24deg West; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16026,1995-06-02 00:00:00,,EPSG,,
-32427,WGS 72BE / UTM zone 27N,,,,24deg West to 18deg West; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16027,1995-06-02 00:00:00,,EPSG,,
-32428,WGS 72BE / UTM zone 28N,,,,18deg West to 12deg West; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16028,1995-06-02 00:00:00,,EPSG,,
-32429,WGS 72BE / UTM zone 29N,,,,12deg West to 6deg West; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16029,1995-06-02 00:00:00,,EPSG,,
-32430,WGS 72BE / UTM zone 30N,,,,6deg West to 0deg; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16030,1995-06-02 00:00:00,,EPSG,,
-32431,WGS 72BE / UTM zone 31N,,,,0deg to 6deg East; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16031,1995-06-02 00:00:00,,EPSG,,
-32432,WGS 72BE / UTM zone 32N,,,,6deg East to 12deg East; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16032,1995-06-02 00:00:00,,EPSG,,
-32433,WGS 72BE / UTM zone 33N,,,,12deg East to 18deg East; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16033,1995-06-02 00:00:00,,EPSG,,
-32434,WGS 72BE / UTM zone 34N,,,,18deg East to 24deg East; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16034,1995-06-02 00:00:00,,EPSG,,
-32435,WGS 72BE / UTM zone 35N,,,,24deg East to 30deg East; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16035,1995-06-02 00:00:00,,EPSG,,
-32436,WGS 72BE / UTM zone 36N,,,,30deg East to 36deg East; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16036,1995-06-02 00:00:00,,EPSG,,
-32437,WGS 72BE / UTM zone 37N,,,,36deg East to 42deg East; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16037,1995-06-02 00:00:00,,EPSG,,
-32438,WGS 72BE / UTM zone 38N,,,,42deg East to 48deg East; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16038,1995-06-02 00:00:00,,EPSG,,
-32439,WGS 72BE / UTM zone 39N,,,,48deg East to 54deg East; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16039,1995-06-02 00:00:00,,EPSG,,
-32440,WGS 72BE / UTM zone 40N,,,,54deg East to 60deg East; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16040,1995-06-02 00:00:00,,EPSG,,
-32441,WGS 72BE / UTM zone 41N,,,,60deg East to 66deg East; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16041,1995-06-02 00:00:00,,EPSG,,
-32442,WGS 72BE / UTM zone 42N,,,,66deg East to 72deg East; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16042,1995-06-02 00:00:00,,EPSG,,
-32443,WGS 72BE / UTM zone 43N,,,,72deg East to 78deg East; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16043,1995-06-02 00:00:00,,EPSG,,
-32444,WGS 72BE / UTM zone 44N,,,,78deg East to 84deg East; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16044,1995-06-02 00:00:00,,EPSG,,
-32445,WGS 72BE / UTM zone 45N,,,,84deg East to 90deg East; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16045,1995-06-02 00:00:00,,EPSG,,
-32446,WGS 72BE / UTM zone 46N,,,,90deg East to 96deg East; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16046,1995-06-02 00:00:00,,EPSG,,
-32447,WGS 72BE / UTM zone 47N,,,,96deg East to 102eg East; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16047,1995-06-02 00:00:00,,EPSG,,
-32448,WGS 72BE / UTM zone 48N,,,,102deg East to 108deg East; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16048,1995-06-02 00:00:00,,EPSG,,
-32449,WGS 72BE / UTM zone 49N,,,,108deg East to 114deg East; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16049,1995-06-02 00:00:00,,EPSG,,
-32450,WGS 72BE / UTM zone 50N,,,,114deg East to 120deg East; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16050,1995-06-02 00:00:00,,EPSG,,
-32451,WGS 72BE / UTM zone 51N,,,,120deg East to 126deg East; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16051,1995-06-02 00:00:00,,EPSG,,
-32452,WGS 72BE / UTM zone 52N,,,,126deg East to 132deg East; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16052,1995-06-02 00:00:00,,EPSG,,
-32453,WGS 72BE / UTM zone 53N,,,,132deg East to 138deg East; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16053,1995-06-02 00:00:00,,EPSG,,
-32454,WGS 72BE / UTM zone 54N,,,,138deg East to 144deg East; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16054,1995-06-02 00:00:00,,EPSG,,
-32455,WGS 72BE / UTM zone 55N,,,,144deg East to 150deg East; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16055,1995-06-02 00:00:00,,EPSG,,
-32456,WGS 72BE / UTM zone 56N,,,,150deg East to 156deg East; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16056,1995-06-02 00:00:00,,EPSG,,
-32457,WGS 72BE / UTM zone 57N,,,,156deg East to 162deg East; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16057,1995-06-02 00:00:00,,EPSG,,
-32458,WGS 72BE / UTM zone 58N,,,,162deg East to 168deg East; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16058,1995-06-02 00:00:00,,EPSG,,
-32459,WGS 72BE / UTM zone 59N,,,,168deg East to 174deg East; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16059,1995-06-02 00:00:00,,EPSG,,
-32460,WGS 72BE / UTM zone 60N,,,,174deg East to 180deg; northern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16060,1995-06-02 00:00:00,,EPSG,,
-32501,WGS 72BE / UTM zone 1S,,,,180deg to 174deg West; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16101,1995-06-02 00:00:00,,EPSG,,
-32502,WGS 72BE / UTM zone 2S,,,,174deg West to 168deg West; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16102,1995-06-02 00:00:00,,EPSG,,
-32503,WGS 72BE / UTM zone 3S,,,,168deg West to 162deg West; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16103,1995-06-02 00:00:00,,EPSG,,
-32504,WGS 72BE / UTM zone 4S,,,,162deg West to 156deg West; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16104,1995-06-02 00:00:00,,EPSG,,
-32505,WGS 72BE / UTM zone 5S,,,,156deg West to 150deg West; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16105,1995-06-02 00:00:00,,EPSG,,
-32506,WGS 72BE / UTM zone 6S,,,,150deg West to 144deg West; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16106,1995-06-02 00:00:00,,EPSG,,
-32507,WGS 72BE / UTM zone 7S,,,,144deg West to 138deg West; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16107,1995-06-02 00:00:00,,EPSG,,
-32508,WGS 72BE / UTM zone 8S,,,,138deg West to 132deg West; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16108,1995-06-02 00:00:00,,EPSG,,
-32509,WGS 72BE / UTM zone 9S,,,,132deg West to 126deg West; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16109,1995-06-02 00:00:00,,EPSG,,
-32510,WGS 72BE / UTM zone 10S,,,,130deg West to 120deg West; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16110,1995-06-02 00:00:00,,EPSG,,
-32511,WGS 72BE / UTM zone 11S,,,,120deg West to 114deg West; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16111,1995-06-02 00:00:00,,EPSG,,
-32512,WGS 72BE / UTM zone 12S,,,,114deg West to 108deg West; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16112,1995-06-02 00:00:00,,EPSG,,
-32513,WGS 72BE / UTM zone 13S,,,,108deg West to 102deg West; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16113,1995-06-02 00:00:00,,EPSG,,
-32514,WGS 72BE / UTM zone 14S,,,,102deg West to 96deg West; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16114,1995-06-02 00:00:00,,EPSG,,
-32515,WGS 72BE / UTM zone 15S,,,,96deg West to 90deg West; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16115,1995-06-02 00:00:00,,EPSG,,
-32516,WGS 72BE / UTM zone 16S,,,,90deg West to 84deg West; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16116,1995-06-02 00:00:00,,EPSG,,
-32517,WGS 72BE / UTM zone 17S,,,,84deg West to 78deg West; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16117,1995-06-02 00:00:00,,EPSG,,
-32518,WGS 72BE / UTM zone 18S,,,,78deg West to 72deg West; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16118,1995-06-02 00:00:00,,EPSG,,
-32519,WGS 72BE / UTM zone 19S,,,,72deg West to 66deg West; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16119,1995-06-02 00:00:00,,EPSG,,
-32520,WGS 72BE / UTM zone 20S,,,,66deg West to 60deg West; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16120,1995-06-02 00:00:00,,EPSG,,
-32521,WGS 72BE / UTM zone 21S,,,,60deg West to 54deg West; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16121,1995-06-02 00:00:00,,EPSG,,
-32522,WGS 72BE / UTM zone 22S,,,,54deg West to 48deg West; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16122,1995-06-02 00:00:00,,EPSG,,
-32523,WGS 72BE / UTM zone 23S,,,,48deg West to 42deg West; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16123,1995-06-02 00:00:00,,EPSG,,
-32524,WGS 72BE / UTM zone 24S,,,,42deg West to 36deg West; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16124,1995-06-02 00:00:00,,EPSG,,
-32525,WGS 72BE / UTM zone 25S,,,,36deg West to 30deg West; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16125,1995-06-02 00:00:00,,EPSG,,
-32526,WGS 72BE / UTM zone 26S,,,,30deg West to 24deg West; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16126,1995-06-02 00:00:00,,EPSG,,
-32527,WGS 72BE / UTM zone 27S,,,,24deg West to 18deg West; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16127,1995-06-02 00:00:00,,EPSG,,
-32528,WGS 72BE / UTM zone 28S,,,,18deg West to 12deg West; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16128,1995-06-02 00:00:00,,EPSG,,
-32529,WGS 72BE / UTM zone 29S,,,,12deg West to 6deg West; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16129,1995-06-02 00:00:00,,EPSG,,
-32530,WGS 72BE / UTM zone 30S,,,,6deg West to 0deg; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16130,1995-06-02 00:00:00,,EPSG,,
-32531,WGS 72BE / UTM zone 31S,,,,0deg to 6deg East; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16131,1995-06-02 00:00:00,,EPSG,,
-32532,WGS 72BE / UTM zone 32S,,,,6deg East to 12deg East; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16132,1995-06-02 00:00:00,,EPSG,,
-32533,WGS 72BE / UTM zone 33S,,,,12deg East to 18deg East; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16133,1995-06-02 00:00:00,,EPSG,,
-32534,WGS 72BE / UTM zone 34S,,,,18deg East to 24deg East; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16134,1995-06-02 00:00:00,,EPSG,,
-32535,WGS 72BE / UTM zone 35S,,,,24deg East to 30deg East; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16135,1995-06-02 00:00:00,,EPSG,,
-32536,WGS 72BE / UTM zone 36S,,,,30deg East to 36deg East; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16136,1995-06-02 00:00:00,,EPSG,,
-32537,WGS 72BE / UTM zone 37S,,,,36deg East to 42deg East; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16137,1995-06-02 00:00:00,,EPSG,,
-32538,WGS 72BE / UTM zone 38S,,,,42deg East to 48deg East; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16138,1995-06-02 00:00:00,,EPSG,,
-32539,WGS 72BE / UTM zone 39S,,,,48deg East to 54deg East; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16139,1995-06-02 00:00:00,,EPSG,,
-32540,WGS 72BE / UTM zone 40S,,,,54deg East to 60deg East; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16140,1995-06-02 00:00:00,,EPSG,,
-32541,WGS 72BE / UTM zone 41S,,,,60deg East to 66deg East; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16141,1995-06-02 00:00:00,,EPSG,,
-32542,WGS 72BE / UTM zone 42S,,,,66deg East to 72deg East; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16142,1995-06-02 00:00:00,,EPSG,,
-32543,WGS 72BE / UTM zone 43S,,,,72deg East to 78deg East; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16143,1995-06-02 00:00:00,,EPSG,,
-32544,WGS 72BE / UTM zone 44S,,,,78deg East to 84deg East; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16144,1995-06-02 00:00:00,,EPSG,,
-32545,WGS 72BE / UTM zone 45S,,,,84deg East to 90deg East; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16145,1995-06-02 00:00:00,,EPSG,,
-32546,WGS 72BE / UTM zone 46S,,,,90deg East to 96deg East; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16146,1995-06-02 00:00:00,,EPSG,,
-32547,WGS 72BE / UTM zone 47S,,,,96deg East to 102eg East; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16147,1995-06-02 00:00:00,,EPSG,,
-32548,WGS 72BE / UTM zone 48S,,,,102deg East to 108deg East; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16148,1995-06-02 00:00:00,,EPSG,,
-32549,WGS 72BE / UTM zone 49S,,,,108deg East to 114deg East; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16149,1995-06-02 00:00:00,,EPSG,,
-32550,WGS 72BE / UTM zone 50S,,,,114deg East to 120deg East; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16150,1995-06-02 00:00:00,,EPSG,,
-32551,WGS 72BE / UTM zone 51S,,,,120deg East to 126deg East; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16151,1995-06-02 00:00:00,,EPSG,,
-32552,WGS 72BE / UTM zone 52S,,,,126deg East to 132deg East; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16152,1995-06-02 00:00:00,,EPSG,,
-32553,WGS 72BE / UTM zone 53S,,,,132deg East to 138deg East; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16153,1995-06-02 00:00:00,,EPSG,,
-32554,WGS 72BE / UTM zone 54S,,,,138deg East to 144deg East; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16154,1995-06-02 00:00:00,,EPSG,,
-32555,WGS 72BE / UTM zone 55S,,,,144deg East to 150deg East; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16155,1995-06-02 00:00:00,,EPSG,,
-32556,WGS 72BE / UTM zone 56S,,,,150deg East to 156deg East; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16156,1995-06-02 00:00:00,,EPSG,,
-32557,WGS 72BE / UTM zone 57S,,,,156deg East to 162deg East; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16157,1995-06-02 00:00:00,,EPSG,,
-32558,WGS 72BE / UTM zone 58S,,,,162deg East to 168deg East; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16158,1995-06-02 00:00:00,,EPSG,,
-32559,WGS 72BE / UTM zone 59S,,,,168deg East to 174deg East; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16159,1995-06-02 00:00:00,,EPSG,,
-32560,WGS 72BE / UTM zone 60S,,,,174deg East to 180deg; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4324,16160,1995-06-02 00:00:00,,EPSG,,
-32601,WGS 84 / UTM zone 1N,,,,180deg to 174deg West; northern hemisphere; Russia.,projected 2D,,,East,North,E,N,9001,,4326,16001,1995-06-02 00:00:00,,EPSG,,
-32602,WGS 84 / UTM zone 2N,,,,174deg West to 168deg West; northern hemisphere. Russia; United States (USA) - Alaska (AK).,projected 2D,,,East,North,E,N,9001,,4326,16002,1995-06-02 00:00:00,,EPSG,,
-32603,WGS 84 / UTM zone 3N,,,,168deg West to 162deg West; northern hemisphere. United States (USA) - Alaska (AK).,projected 2D,,,East,North,E,N,9001,,4326,16003,1995-06-02 00:00:00,,EPSG,,
-32604,WGS 84 / UTM zone 4N,,,,162deg West to 156deg West; northern hemisphere. United States (USA) - Alaska (AK).,projected 2D,,,East,North,E,N,9001,,4326,16004,1995-06-02 00:00:00,,EPSG,,
-32605,WGS 84 / UTM zone 5N,,,,156deg West to 150deg West; northern hemisphere. United States (USA) - Alaska (AK).,projected 2D,,,East,North,E,N,9001,,4326,16005,1995-06-02 00:00:00,,EPSG,,
-32606,WGS 84 / UTM zone 6N,,,,150deg West to 144deg West; northern hemisphere. United States (USA) - Alaska (AK).,projected 2D,,,East,North,E,N,9001,,4326,16006,1995-06-02 00:00:00,,EPSG,,
-32607,WGS 84 / UTM zone 7N,,,,144deg West to 138deg West; northern hemisphere. Canada - British Columbia (BC); Yukon. United States (USA) - Alaska (AK).,projected 2D,,,East,North,E,N,9001,,4326,16007,1995-06-02 00:00:00,,EPSG,,
-32608,WGS 84 / UTM zone 8N,,,,138deg West to 132deg West; northern hemisphere. Canada - British Columbia (BC); North West Territiories; Yukon. United States (USA) - Alaska (AK).,projected 2D,,,East,North,E,N,9001,,4326,16008,1995-06-02 00:00:00,,EPSG,,
-32609,WGS 84 / UTM zone 9N,,,,132deg West to 126deg West; northern hemisphere. Canada - British Columbia (BC); North West Territories; Yukon. United States (USA) - Alaska (AK).,projected 2D,,,East,North,E,N,9001,,4326,16009,1995-06-02 00:00:00,,EPSG,,
-32610,WGS 84 / UTM zone 10N,,,,130deg West to 120deg West; northern hemisphere. Canada - British Columbia (BC); North West Territories; Nunavut; Yukon. United States (USA) - Alaska (AK).,projected 2D,,,East,North,E,N,9001,,4326,16010,1995-06-02 00:00:00,,EPSG,,
-32611,WGS 84 / UTM zone 11N,,,,120deg West to 114deg West; northern hemisphere. Canada - Alberta; British Columbia (BC); North West Territories; Nunavut. Mexico. United States (USA).,projected 2D,,,East,North,E,N,9001,,4326,16011,1995-06-02 00:00:00,,EPSG,,
-32612,WGS 84 / UTM zone 12N,,,,114deg West to 108deg West; northern hemisphere. Canada - Alberta; North West Territories; Nunavut; Saskatchewan.  Mexico.  United States (USA).,projected 2D,,,East,North,E,N,9001,,4326,16012,1995-06-02 00:00:00,,EPSG,,
-32613,WGS 84 / UTM zone 13N,,,,108deg West to 102deg West; northern hemisphere. Canada - North West Territories; Nunavut; Saskatchewan.  Mexico.  United States (USA).,projected 2D,,,East,North,E,N,9001,,4326,16013,1995-06-02 00:00:00,,EPSG,,
-32614,WGS 84 / UTM zone 14N,,,,102deg West to 96deg West; northern hemisphere. Canada - Manitoba; Nunavut; Saskatchewan.  Mexico.  United States (USA).,projected 2D,,,East,North,E,N,9001,,4326,16014,1995-06-02 00:00:00,,EPSG,,
-32615,WGS 84 / UTM zone 15N,,,,96deg West to 90deg West; northern hemisphere. Canada - Manitoba; Nunavut; Ontario.  Guatemala.  Mexico.  United States (USA) - Gulf of Mexico (GoM).,projected 2D,,,East,North,E,N,9001,,4326,16015,1995-06-02 00:00:00,,EPSG,,
-32616,WGS 84 / UTM zone 16N,,,,90deg West to 84deg West; northern hemisphere. Belize. Canada - Manitoba; Nunavut; Ontario.  Costa Rica. Cuba. El Salvador. Guatemala. Honduras. Mexico. Nicaragua. Puerto Rico. United States (USA).,projected 2D,,,East,North,E,N,9001,,4326,16016,1995-06-02 00:00:00,,EPSG,,
-32617,WGS 84 / UTM zone 17N,,,,84deg West to 78deg West; northern hemisphere. Bahamas. Ecuador - north of equator. Canada - Nunavut; Ontario; Quebec.  Cayman Islands.  Colombia. Costa Rica. Jamaica. Nicaragua. Panama. Puerto Rico. United States (USA).,projected 2D,,,East,North,E,N,9001,,4326,16017,1995-06-02 00:00:00,,EPSG,,
-32618,WGS 84 / UTM zone 18N,,,,78deg West to 72deg West; northern hemisphere. Bahamas. Canada - Nunavut; Ontario; Quebec. Colombia. Cuba. Ecuador. Greenland. Haiti. Jamica. Panama. Turks and Caicos Islands. United States (USA). Venezuela.,projected 2D,,,East,North,E,N,9001,,4326,16018,1995-06-02 00:00:00,,EPSG,,
-32619,WGS 84 / UTM zone 19N,,,,72deg West to 66deg West; northern hemisphere. Aruba. Bahamas. Brazil. Canada - New Brunswick (NB); Newfoundland; Nunavut; Nova Scotia (NS); Quebec. Colombia. Dominican Republic. Greenland. Netherlands Antilles. Puerto Rico. Turks and Caicos Islands. United States. Venezuela.,projected 2D,,,East,North,E,N,9001,,4326,16019,1995-06-02 00:00:00,,EPSG,,
-32620,WGS 84 / UTM zone 20N,,,,66deg West to 60deg West; northern hemisphere. Anguilla. Antigua & Barbuda. Bermuda. Brazil. Canada - New Brunswick (NB); Newfoundland; North west Territories; Nova Scotia (NS); Prince Edward Island; Quebec. Dominica. Greenland. Grenada. Guadeloupe. Guyana. Martinique. Montserrat. Saint Kitts and Nevis. Saint Lucia. Saint Vncent and the Grenadines. Trinidad and Tobago. Venezuela. Virgin islands.,projected 2D,,,East,North,E,N,9001,,4326,16020,1995-06-02 00:0 [...]
-32621,WGS 84 / UTM zone 21N,,,,60deg West to 54deg West; northern hemisphere. Barbados. Brazil. Canada - Newfoundland; Quebec. French Guiana. Greenland. Guyana. St. Pierre and Miquelon. Suriname.,projected 2D,,,East,North,E,N,9001,,4326,16021,1995-06-02 00:00:00,,EPSG,,
-32622,WGS 84 / UTM zone 22N,,,,54deg West to 48deg West; northern hemisphere. Brazil. Canada - Newfoundland. French Guiana. Greenland.,projected 2D,,,East,North,E,N,9001,,4326,16022,1995-06-02 00:00:00,,EPSG,,
-32623,WGS 84 / UTM zone 23N,,,,48deg West to 42deg West; northern hemisphere. Greenland.,projected 2D,,,East,North,E,N,9001,,4326,16023,1995-06-02 00:00:00,,EPSG,,
-32624,WGS 84 / UTM zone 24N,,,,42deg West to 36deg West; northern hemisphere. Greenland.,projected 2D,,,East,North,E,N,9001,,4326,16024,1995-06-02 00:00:00,,EPSG,,
-32625,WGS 84 / UTM zone 25N,,,,36deg West to 30deg West; northern hemisphere. Greenland.,projected 2D,,,East,North,E,N,9001,,4326,16025,1995-06-02 00:00:00,,EPSG,,
-32626,WGS 84 / UTM zone 26N,,,,30deg West to 24deg West; northern hemisphere. Greenland. Iceland.,projected 2D,,,East,North,E,N,9001,,4326,16026,1995-06-02 00:00:00,,EPSG,,
-32627,WGS 84 / UTM zone 27N,,,,24deg West to 18deg West; northern hemisphere. Greenland. Iceland.,projected 2D,,,East,North,E,N,9001,,4326,16027,1995-06-02 00:00:00,,EPSG,,
-32628,WGS 84 / UTM zone 28N,,,,18deg West to 12deg West; northern hemisphere. Gambia. Greenland. Guinea. Guinea-Bissau. Iceland. Ireland - offshore Porcupine Basin. Mauritania. Morocco. Senegal. Sierra Leone. Western Sahara.,projected 2D,,,East,North,E,N,9001,,4326,16028,1995-06-02 00:00:00,,EPSG,,
-32629,WGS 84 / UTM zone 29N,,,,12deg West to 6deg West; northern hemisphere. Algeria. Cote D'Ivoire (Ivory Coast). Faroe Islands. Guinea. Ireland. Mali. Mauritania. Morocco. Portugal. Sierra Leone. Spain. United Kingdom (UK). Western Sahara.,projected 2D,,,East,North,E,N,9001,,4326,16029,1995-06-02 00:00:00,,EPSG,,
-32630,WGS 84 / UTM zone 30N,,,,6deg West to 0deg; northern hemisphere. Algeria. Burkino Faso. Cote' Ivoire (Ivory Coast). Faroe Islands - offshore. France. Ghana. Gibraltar. Ireland - offshore Irish Sea. Mali. Mauritania. Morocco. Spain. United Kingdom (UK).,projected 2D,,,East,North,E,N,9001,,4326,16030,1995-06-02 00:00:00,,EPSG,,
-32631,WGS 84 / UTM zone 31N,,,,0deg to 6deg East; northern hemisphere. Algeria. Andorra. Benin. Bukino Faso. Denmark - North Sea. France. Germany - North Sea. Ghana. Luxembourg. Mali. Netherlands. Niger. Nigeria. Norway. Spain. Togo. United Kingdom (UK) - North Sea.,projected 2D,,,East,North,E,N,9001,,4326,16031,1995-06-02 00:00:00,,EPSG,,
-32632,WGS 84 / UTM zone 32N,,,,6deg East to 12deg East; northern hemisphere. Algeria. Austria. Cameroon. Denmark. Equatorial Guinea. France. Gabon. Germany. Italy. Libya. Liechtenstein. Monaco. Netherlands. Niger. Nigeria. Norway. Sao Tome and Principe. Svalbard and Jan Mayen Islands. Sweden. Switzerland. Tunisia. Vatican City State.,projected 2D,,,East,North,E,N,9001,,4326,16032,1995-06-02 00:00:00,,EPSG,,
-32633,WGS 84 / UTM zone 33N,,,,12deg East to 18deg East; northern hemisphere. Austria. Bosnia and Herzegowina. Cmeroon. Central African Republic. Chad. Congo. Croatia. Czech Republic. Democratic Republic of the Congo (Zaire). Gabon. Germany. Hungary. Italy. Libya. Malta. Niger. Nigeria. Norway. Poland. San Marino. Slovakia. Slovenia. Svalbard and Jan Mayen Islands. Sweden.,projected 2D,,,East,North,E,N,9001,,4326,16033,1995-06-02 00:00:00,,EPSG,,
-32634,WGS 84 / UTM zone 34N,,,,18deg East to 24deg East; northern hemisphere. Albania. Belarus. Bosnia and Herzegowina. Bulgaria. Central African Republic. Chad. Croatia. Democratic Republic of the Congo (Zaire). Estonia. Finland. FYR Macedonia. Greece. Hungary. Italy. Latvia. Libya. Lithuania. Norway. Poland. Romania. Russia. Slovakia. Sudan. Svalbard. Sweden. Ukraine. Yugoslavia.,projected 2D,,,East,North,E,N,9001,,4326,16034,1995-06-02 00:00:00,,EPSG,,
-32635,WGS 84 / UTM zone 35N,,,,24deg East to 30deg East; northern hemisphere. Belarus. Bulgaria. Central African Republic. Democratic Republic of the Congo (Zaire). Egypt. Estonia. Finland. Greece. Latvia. Lesotho. Libya. Lithuania. Moldova. Norway. Romania. Russia. Sudan. Svalbard. Turkey. Uganda. Ukraine.,projected 2D,,,East,North,E,N,9001,,4326,16035,1995-06-02 00:00:00,,EPSG,,
-32636,WGS 84 / UTM zone 36N,,,,30deg East to 36deg East; northern hemisphere. Belarus. Cyprus. Egypt. Ethiopia. Finland. Israel. Jordan. Kenya. Lebanon. Norway. Russia. Saudi Arabia. Sudan. Syria. Turkey. Uganda. Ukraine.,projected 2D,,,East,North,E,N,9001,,4326,16036,1995-06-02 00:00:00,,EPSG,,
-32637,WGS 84 / UTM zone 37N,,,,36deg East to 42deg East; northern hemisphere. Djibouti. Egypt. Eritrea. Ethiopia. Georgia. Iraq. Jordan. Kenya. Lebanon. Russia. Saudi Arabia. Somalia. Sudan. Syria. Turkey. Ukraine.,projected 2D,,,East,North,E,N,9001,,4326,16037,1995-06-02 00:00:00,,EPSG,,
-32638,WGS 84 / UTM zone 38N,,,,42deg East to 48deg East; northern hemisphere. Armenia. Azerbaijan. Djibouti. Eritrea. Ethiopia. Georgia. Iran. Iraq. Kazakhstan. Kuwait. Russia. Saudi Arabia. Somalia. Turkey. Yemen.,projected 2D,,,East,North,E,N,9001,,4326,16038,1995-06-02 00:00:00,,EPSG,,
-32639,WGS 84 / UTM zone 39N,,,,48deg East to 54deg East; northern hemisphere. Azerbaijan. Bahrain. Iran. Kazakhstan. Kuwait. Oman. Qatar. Russia. Saudi Arabia. Somalia. Turkmenistan. United Arab Emirates. Yemen.,projected 2D,,,East,North,E,N,9001,,4326,16039,1995-06-02 00:00:00,,EPSG,,
-32640,WGS 84 / UTM zone 40N,,,,54deg East to 60deg East; northern hemisphere. Iran. Kazakhstan. Oman. Russia. Saudi Arabia. Turkmenistan. United Arab Emirates. Uzbekistan.,projected 2D,,,East,North,E,N,9001,,4326,16040,1995-06-02 00:00:00,,EPSG,,
-32641,WGS 84 / UTM zone 41N,,,,60deg East to 66deg East; northern hemisphere. Afghanistan. Iran. Kazakhstan. Pakistan. Russia. Turkmenistan.  Uzbekistan.,projected 2D,,,East,North,E,N,9001,,4326,16041,1995-06-02 00:00:00,,EPSG,,
-32642,WGS 84 / UTM zone 42N,,,,66deg East to 72deg East; northern hemisphere. Afghanistan. India. Kazakhstan. Kyrgyzstan. Pakistan. Russia. Tajikistan. Uzbekistan.,projected 2D,,,East,North,E,N,9001,,4326,16042,1995-06-02 00:00:00,,EPSG,,
-32643,WGS 84 / UTM zone 43N,,,,72deg East to 78deg East; northern hemisphere. China. India. Kazakhstan. Kyrgyzstan. Maldives. Pakistan. Russia. Tajikistan.,projected 2D,,,East,North,E,N,9001,,4326,16043,1995-06-02 00:00:00,,EPSG,,
-32644,WGS 84 / UTM zone 44N,,,,78deg East to 84deg East; northern hemisphere. China. India. Kazakhstan. Kyrgyzstan. Nepal. Russia. Sri Lanka.,projected 2D,,,East,North,E,N,9001,,4326,16044,1995-06-02 00:00:00,,EPSG,,
-32645,WGS 84 / UTM zone 45N,,,,84deg East to 90deg East; northern hemisphere. Bangladesh. Bhutan. China. India. Kazakhstan. Mongolia. Nepal. Russia.,projected 2D,,,East,North,E,N,9001,,4326,16045,1995-06-02 00:00:00,,EPSG,,
-32646,WGS 84 / UTM zone 46N,,,,90deg East to 96deg East; northern hemisphere. Bangladesh. Bhutan. China. Indonesia. Mongolia. Myanmar (Burma). Russia.,projected 2D,,,East,North,E,N,9001,,4326,16046,1995-06-02 00:00:00,,EPSG,,
-32647,WGS 84 / UTM zone 47N,,,,96deg East to 102eg East; northern hemisphere. China. Indonesia. Laos. Malaysia - West Malaysia. Mongolia. Myanmar (Burma). Russia. Thailand.,projected 2D,,,East,North,E,N,9001,,4326,16047,1995-06-02 00:00:00,,EPSG,,
-32648,WGS 84 / UTM zone 48N,,,,102deg East to 108deg East; northern hemisphere. Cambodia. China. Indonesia. Laos. Malaysia - West Malaysia. Mongolia. Russia. Singapore. Thailand. Vietnam.,projected 2D,,,East,North,E,N,9001,,4326,16048,1995-06-02 00:00:00,,EPSG,,
-32649,WGS 84 / UTM zone 49N,,,,108deg East to 114deg East; northern hemisphere. China. Hong Kong. Indonesia. Macau. Malaysia - East Malaysia - Sarawak. Mongolia. Russia. Vietnam.,projected 2D,,,East,North,E,N,9001,,4326,16049,1995-06-02 00:00:00,,EPSG,,
-32650,WGS 84 / UTM zone 50N,,,,114deg East to 120deg East; northern hemisphere. Brunei. China. Indonesia. Malaysia - East Malaysia - Sarawak. Mongolia. Philippines. Russia. Taiwan.,projected 2D,,,East,North,E,N,9001,,4326,16050,1995-06-02 00:00:00,,EPSG,,
-32651,WGS 84 / UTM zone 51N,,,,120deg East to 126deg East; northern hemisphere. China. Indonesia. Japan. North Korea. Philippines. Russia.  South Korea. Taiwan.,projected 2D,,,East,North,E,N,9001,,4326,16051,1995-06-02 00:00:00,,EPSG,,
-32652,WGS 84 / UTM zone 52N,,,,126deg East to 132deg East; northern hemisphere. China. Indonesia. Japan. North Korea. Russia. South Korea.,projected 2D,,,East,North,E,N,9001,,4326,16052,1995-06-02 00:00:00,,EPSG,,
-32653,WGS 84 / UTM zone 53N,,,,132deg East to 138deg East; northern hemisphere. China. Japan. Russia.,projected 2D,,,East,North,E,N,9001,,4326,16053,1995-06-02 00:00:00,,EPSG,,
-32654,WGS 84 / UTM zone 54N,,,,138deg East to 144deg East; northern hemisphere. Japan. Russia.,projected 2D,,,East,North,E,N,9001,,4326,16054,1995-06-02 00:00:00,,EPSG,,
-32655,WGS 84 / UTM zone 55N,,,,144deg East to 150deg East; northern hemisphere. Japan. Russia.,projected 2D,,,East,North,E,N,9001,,4326,16055,1995-06-02 00:00:00,,EPSG,,
-32656,WGS 84 / UTM zone 56N,,,,150deg East to 156deg East; northern hemisphere. Russia.,projected 2D,,,East,North,E,N,9001,,4326,16056,1995-06-02 00:00:00,,EPSG,,
-32657,WGS 84 / UTM zone 57N,,,,156deg East to 162deg East; northern hemisphere. Russia.,projected 2D,,,East,North,E,N,9001,,4326,16057,1995-06-02 00:00:00,,EPSG,,
-32658,WGS 84 / UTM zone 58N,,,,162deg East to 168deg East; northern hemisphere. Russia.,projected 2D,,,East,North,E,N,9001,,4326,16058,1995-06-02 00:00:00,,EPSG,,
-32659,WGS 84 / UTM zone 59N,,,,168deg East to 174deg East; northern hemisphere. Russia.,projected 2D,,,East,North,E,N,9001,,4326,16059,1995-06-02 00:00:00,,EPSG,,
-32660,WGS 84 / UTM zone 60N,,,,174deg East to 180deg; northern hemisphere. Russia.,projected 2D,,,East,North,E,N,9001,,4326,16060,1995-06-02 00:00:00,,EPSG,,
-32661,WGS 84 / UPS North,,,,Polar areas north of 84 deg N.,projected 2D,,,East,North,E,N,9001,,4326,16061,1996-09-12 00:00:00,,EPSG,,
-32701,WGS 84 / UTM zone 1S,,,,180deg to 174deg West; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4326,16101,1995-06-02 00:00:00,,EPSG,,
-32702,WGS 84 / UTM zone 2S,,,,174deg West to 168deg West; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4326,16102,1995-06-02 00:00:00,,EPSG,,
-32703,WGS 84 / UTM zone 3S,,,,168deg West to 162deg West; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4326,16103,1995-06-02 00:00:00,,EPSG,,
-32704,WGS 84 / UTM zone 4S,,,,162deg West to 156deg West; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4326,16104,1995-06-02 00:00:00,,EPSG,,
-32705,WGS 84 / UTM zone 5S,,,,156deg West to 150deg West; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4326,16105,1995-06-02 00:00:00,,EPSG,,
-32706,WGS 84 / UTM zone 6S,,,,150deg West to 144deg West; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4326,16106,1995-06-02 00:00:00,,EPSG,,
-32707,WGS 84 / UTM zone 7S,,,,144deg West to 138deg West; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4326,16107,1995-06-02 00:00:00,,EPSG,,
-32708,WGS 84 / UTM zone 8S,,,,138deg West to 132deg West; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4326,16108,1995-06-02 00:00:00,,EPSG,,
-32709,WGS 84 / UTM zone 9S,,,,132deg West to 126deg West; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4326,16109,1995-06-02 00:00:00,,EPSG,,
-32710,WGS 84 / UTM zone 10S,,,,130deg West to 120deg West; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4326,16110,1995-06-02 00:00:00,,EPSG,,
-32711,WGS 84 / UTM zone 11S,,,,120deg West to 114deg West; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4326,16111,1995-06-02 00:00:00,,EPSG,,
-32712,WGS 84 / UTM zone 12S,,,,114deg West to 108deg West; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4326,16112,1995-06-02 00:00:00,,EPSG,,
-32713,WGS 84 / UTM zone 13S,,,,108deg West to 102deg West; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4326,16113,1995-06-02 00:00:00,,EPSG,,
-32714,WGS 84 / UTM zone 14S,,,,102deg West to 96deg West; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4326,16114,1995-06-02 00:00:00,,EPSG,,
-32715,WGS 84 / UTM zone 15S,,,,96deg West to 90deg West; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4326,16115,1995-06-02 00:00:00,,EPSG,,
-32716,WGS 84 / UTM zone 16S,,,,90deg West to 84deg West; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4326,16116,1995-06-02 00:00:00,,EPSG,,
-32717,WGS 84 / UTM zone 17S,,,,84deg West to 78deg West; southern hemisphere. Ecuador. Peru.,projected 2D,,,East,North,E,N,9001,,4326,16117,1995-06-02 00:00:00,,EPSG,,
-32718,WGS 84 / UTM zone 18S,,,,78deg West to 72deg West; southern hemisphere. Argentina. Brazil. Chile. Colombia. Ecuador. Peru.,projected 2D,,,East,North,E,N,9001,,4326,16118,1995-06-02 00:00:00,,EPSG,,
-32719,WGS 84 / UTM zone 19S,,,,72deg West to 66deg West; southern hemisphere. Argentina. Bolivia. Brazil. Chile. Colombia. Peru.,projected 2D,,,East,North,E,N,9001,,4326,16119,1995-06-02 00:00:00,,EPSG,,
-32720,WGS 84 / UTM zone 20S,,,,66deg West to 60deg West; southern hemisphere. Argentina. Bolivia. Brazil. Falkland Islands (Malvinas). Paraguay.,projected 2D,,,East,North,E,N,9001,,4326,16120,1995-06-02 00:00:00,,EPSG,,
-32721,WGS 84 / UTM zone 21S,,,,60deg West to 54deg West; southern hemisphere. Argentina. Bolivia. Brazil. Falkland Islands (Malvinas). Paraguay. Uruguay.,projected 2D,,,East,North,E,N,9001,,4326,16121,1995-06-02 00:00:00,,EPSG,,
-32722,WGS 84 / UTM zone 22S,,,,54deg West to 48deg West; southern hemisphere. Brazil.  Uruguay.,projected 2D,,,East,North,E,N,9001,,4326,16122,1995-06-02 00:00:00,,EPSG,,
-32723,WGS 84 / UTM zone 23S,,,,48deg West to 42deg West; southern hemisphere. Brazil.,projected 2D,,,East,North,E,N,9001,,4326,16123,1995-06-02 00:00:00,,EPSG,,
-32724,WGS 84 / UTM zone 24S,,,,42deg West to 36deg West; southern hemisphere. Brazil. South Georgia and the South Sandwich Islands.,projected 2D,,,East,North,E,N,9001,,4326,16124,1995-06-02 00:00:00,,EPSG,,
-32725,WGS 84 / UTM zone 25S,,,,36deg West to 30deg West; southern hemisphere. Brazil.,projected 2D,,,East,North,E,N,9001,,4326,16125,1995-06-02 00:00:00,,EPSG,,
-32726,WGS 84 / UTM zone 26S,,,,30deg West to 24deg West; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4326,16126,1995-06-02 00:00:00,,EPSG,,
-32727,WGS 84 / UTM zone 27S,,,,24deg West to 18deg West; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4326,16127,1995-06-02 00:00:00,,EPSG,,
-32728,WGS 84 / UTM zone 28S,,,,18deg West to 12deg West; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4326,16128,1995-06-02 00:00:00,,EPSG,,
-32729,WGS 84 / UTM zone 29S,,,,12deg West to 6deg West; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4326,16129,1995-06-02 00:00:00,,EPSG,,
-32730,WGS 84 / UTM zone 30S,,,,6deg West to 0deg; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4326,16130,1995-06-02 00:00:00,,EPSG,,
-32731,WGS 84 / UTM zone 31S,,,,0deg to 6deg East; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4326,16131,1995-06-02 00:00:00,,EPSG,,
-32732,WGS 84 / UTM zone 32S,,,,6deg East to 12deg East; southern hemisphere. Angola. Congo. Gabon. Namibia.,projected 2D,,,East,North,E,N,9001,,4326,16132,1995-06-02 00:00:00,,EPSG,,
-32733,WGS 84 / UTM zone 33S,,,,12deg East to 18deg East; southern hemisphere. Angola. Congo. Democratic Republic of the Congo (Zaire). Gabon. Namibia. South Africa.,projected 2D,,,East,North,E,N,9001,,4326,16133,1995-06-02 00:00:00,,EPSG,,
-32734,WGS 84 / UTM zone 34S,,,,18deg East to 24deg East; southern hemisphere. Angola. Botswana. Democratic Republic of the Congo (Zaire). Namibia. South Africa. Zambia.,projected 2D,,,East,North,E,N,9001,,4326,16134,1995-06-02 00:00:00,,EPSG,,
-32735,WGS 84 / UTM zone 35S,,,,24deg East to 30deg East; southern hemisphere. Botswana. Burundi. Democratic Republic of the Congo (Zaire). Rwanda. South Africa. Tanzania. Uganda. Zambia. Zimbabwe.,projected 2D,,,East,North,E,N,9001,,4326,16135,1995-06-02 00:00:00,,EPSG,,
-32736,WGS 84 / UTM zone 36S,,,,30deg East to 36deg East; southern hemisphere. Burundi. Kenya. Malawi. Mozambique. Rwanda. South Africa. Swaziland. Tanzania. Uganda. Zambia. Zimbabwe.,projected 2D,,,East,North,E,N,9001,,4326,16136,1995-06-02 00:00:00,,EPSG,,
-32737,WGS 84 / UTM zone 37S,,,,36deg East to 42deg East; southern hemisphere. Kenya. Mozambique. Tanzania.,projected 2D,,,East,North,E,N,9001,,4326,16137,1995-06-02 00:00:00,,EPSG,,
-32738,WGS 84 / UTM zone 38S,,,,42deg East to 48deg East; southern hemisphere. Madagascar.,projected 2D,,,East,North,E,N,9001,,4326,16138,1995-06-02 00:00:00,,EPSG,,
-32739,WGS 84 / UTM zone 39S,,,,48deg East to 54deg East; southern hemisphere. Madagascar.,projected 2D,,,East,North,E,N,9001,,4326,16139,1995-06-02 00:00:00,,EPSG,,
-32740,WGS 84 / UTM zone 40S,,,,54deg East to 60deg East; southern hemisphere. Seychelles.,projected 2D,,,East,North,E,N,9001,,4326,16140,1995-06-02 00:00:00,,EPSG,,
-32741,WGS 84 / UTM zone 41S,,,,60deg East to 66deg East; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4326,16141,1995-06-02 00:00:00,,EPSG,,
-32742,WGS 84 / UTM zone 42S,,,,66deg East to 72deg East; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4326,16142,1995-06-02 00:00:00,,EPSG,,
-32743,WGS 84 / UTM zone 43S,,,,72deg East to 78deg East; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4326,16143,1995-06-02 00:00:00,,EPSG,,
-32744,WGS 84 / UTM zone 44S,,,,78deg East to 84deg East; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4326,16144,1995-06-02 00:00:00,,EPSG,,
-32745,WGS 84 / UTM zone 45S,,,,84deg East to 90deg East; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4326,16145,1995-06-02 00:00:00,,EPSG,,
-32746,WGS 84 / UTM zone 46S,,,,90deg East to 96deg East; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4326,16146,1995-06-02 00:00:00,,EPSG,,
-32747,WGS 84 / UTM zone 47S,,,,96deg East to 102eg East; southern hemisphere. Indonesia.,projected 2D,,,East,North,E,N,9001,,4326,16147,1995-06-02 00:00:00,,EPSG,,
-32748,WGS 84 / UTM zone 48S,,,,102deg East to 108deg East; southern hemisphere. Indonesia.,projected 2D,,,East,North,E,N,9001,,4326,16148,1995-06-02 00:00:00,,EPSG,,
-32749,WGS 84 / UTM zone 49S,,,,108deg East to 114deg East; southern hemisphere. Australia. Indonesia.,projected 2D,,,East,North,E,N,9001,,4326,16149,1995-06-02 00:00:00,,EPSG,,
-32750,WGS 84 / UTM zone 50S,,,,114deg East to 120deg East; southern hemisphere. Australia. Indonesia.,projected 2D,,,East,North,E,N,9001,,4326,16150,1995-06-02 00:00:00,,EPSG,,
-32751,WGS 84 / UTM zone 51S,,,,120deg East to 126deg East; southern hemisphere. Australia. East Timor. Indonesia.,projected 2D,,,East,North,E,N,9001,,4326,16151,1995-06-02 00:00:00,,EPSG,,
-32752,WGS 84 / UTM zone 52S,,,,126deg East to 132deg East; southern hemisphere. Australia. East Timor. Indonesia.,projected 2D,,,East,North,E,N,9001,,4326,16152,1995-06-02 00:00:00,,EPSG,,
-32753,WGS 84 / UTM zone 53S,,,,132deg East to 138deg East; southern hemisphere. Australia.  Indonesia.,projected 2D,,,East,North,E,N,9001,,4326,16153,1995-06-02 00:00:00,,EPSG,,
-32754,WGS 84 / UTM zone 54S,,,,138deg East to 144deg East; southern hemisphere. Australia. Indonesia. Papua New Guinea.,projected 2D,,,East,North,E,N,9001,,4326,16154,1995-06-02 00:00:00,,EPSG,,
-32755,WGS 84 / UTM zone 55S,,,,144deg East to 150deg East; southern hemisphere. Australia. Papua New Guinea.,projected 2D,,,East,North,E,N,9001,,4326,16155,1995-06-02 00:00:00,,EPSG,,
-32756,WGS 84 / UTM zone 56S,,,,150deg East to 156deg East; southern hemisphere. Australia. Papua New Guinea.,projected 2D,,,East,North,E,N,9001,,4326,16156,1995-06-02 00:00:00,,EPSG,,
-32757,WGS 84 / UTM zone 57S,,,,156deg East to 162deg East; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4326,16157,1995-06-02 00:00:00,,EPSG,,
-32758,WGS 84 / UTM zone 58S,,,,162deg East to 168deg East; southern hemisphere.,projected 2D,,,East,North,E,N,9001,,4326,16158,1995-06-02 00:00:00,,EPSG,,
-32759,WGS 84 / UTM zone 59S,,,,168deg East to 174deg East; southern hemisphere. New Zealand.,projected 2D,,,East,North,E,N,9001,,4326,16159,1995-06-02 00:00:00,,EPSG,,
-32760,WGS 84 / UTM zone 60S,,,,174deg East to 180deg; southern hemisphere. New Zealand.,projected 2D,,,East,North,E,N,9001,,4326,16160,1995-06-02 00:00:00,,EPSG,,
-32761,WGS 84 / UPS South,,,,Polar areas south of 80 deg S.,projected 2D,,,East,North,E,N,9001,,4326,16161,1996-09-12 00:00:00,,EPSG,,
-32766,WGS 84 / TM 36 SE,,,,Mozambique - offshore.,projected 2D,,,East,North,E,N,9001,,4326,16636,1998-11-11 00:00:00,BP Mozambique,EPSG,Used by BP Mozambique for Offshore Zambezi block.,
diff --git a/src/tiff/csv/naming_system.csv b/src/tiff/csv/naming_system.csv
deleted file mode 100644
index 6210a16..0000000
--- a/src/tiff/csv/naming_system.csv
+++ /dev/null
@@ -1,13 +0,0 @@
-"NAMING_SYSTEM_CODE","NAMING_SYSTEM_NAME","REMARKS","INFORMATION_SOURCE","DATA_SOURCE","REVISION_DATE","CHANGE_ID","DEPRECATED"
-7300,EPSG alternative spelling,An alternative spelling of the EPSG name; assigned by EPSG.,EPSG,EPSG,2000-05-07 00:00:00,,0
-7301,EPSG alias,An alternative name assigned by EPSG.,EPSG,EPSG,2000-05-07 00:00:00,,0
-7302,EPSG abbreviation,An abbreviation assigned by EPSG.,EPSG,EPSG,2000-05-07 00:00:00,,0
-7303,User name,An alternative name assigned by user; not populated by EPSG.,(User to insert),EPSG,2000-05-07 00:00:00,,0
-7304,User alias,A secondary alternative name assigned by user; not populated by EPSG.,(User to insert),EPSG,2000-05-07 00:00:00,,0
-7305,User abbreviation,An abbreviation assigned by user; not populated by EPSG.,(User to insert),EPSG,2000-05-07 00:00:00,,0
-7306,POSC acronym,An abbreviation assigned by the Petrotechnical Open Software Corporation (POSC).,POSC,EPSG,2000-05-07 00:00:00,,0
-7307,EuroGeographics Identifier,A unique identifier used in the compilation of European national mapping agency data by EuroGeographics.,EuroGeographics; http://crs.ifag.de/,EPSG,2001-06-05 00:00:00,,0
-7308,Croatia alternative identifier,,EPSG,EPSG,2001-06-05 00:00:00,,0
-7309,Slovenia alternative identifier,,EPSG,EPSG,2001-06-05 00:00:00,,0
-7310,Germany alternative identifier,An alternative name used by the BfK.,EPSG,EPSG,2001-06-05 00:00:00,,0
-7311,Indonesian alternative identifier,An alternative name used by Bakosurtanal.,EPSG,EPSG,2002-06-22 00:00:00,,0
diff --git a/src/tiff/csv/p_meridian.c b/src/tiff/csv/p_meridian.c
deleted file mode 100644
index b6100fe..0000000
--- a/src/tiff/csv/p_meridian.c
+++ /dev/null
@@ -1,17 +0,0 @@
-#include "defs.h"
-datafile_rows_t p_meridian_row_1[] = {"PRIME_MERIDIAN_CODE","PRIME_MERID_EPSG_NAME","PRIME_MERID_USER_NAME","GREENWICH_LONGITUDE","UOM_ANGLE_CODE","REVISION_DATE","INFORMATION_SOURCE","DATA_SOURCE","REMARKS","CHANGE_ID",NULL};
-datafile_rows_t p_meridian_row_2[] = {"8901","Greenwich","","0.0","9110","1995-06-02 00:00:00","","EPSG","","96.29",NULL};
-datafile_rows_t p_meridian_row_3[] = {"8902","Lisbon","","-9.0754862","9110","1995-06-02 00:00:00","Instituto Geografico e Cadastral; Lisbon","EPSG","","96.29",NULL};
-datafile_rows_t p_meridian_row_4[] = {"8903","Paris","","2.5969213","9105","1995-06-02 00:00:00","Institut Geographique National (IGN); Paris","EPSG","Value adopted by IGN (Paris) in 1936. Equivalent to 2 deg 20min 14.025sec. Preferred by EPSG to earlier value of 2deg 20min 13.95sec (2.596898 grads) used by RGS London.","",NULL};
-datafile_rows_t p_meridian_row_5[] = {"8904","Bogota","","-74.04513","9110","1995-06-02 00:00:00","Instituto Geografico \"Augustin Cadazzi\" (IGAC); Bogota","EPSG","","96.29",NULL};
-datafile_rows_t p_meridian_row_6[] = {"8905","Madrid","","-3.411658","9110","1995-06-02 00:00:00","","EPSG","","96.29",NULL};
-datafile_rows_t p_meridian_row_7[] = {"8906","Rome","","12.27084","9110","1995-06-02 00:00:00","","EPSG","","96.29",NULL};
-datafile_rows_t p_meridian_row_8[] = {"8907","Bern","","7.26225","9110","1995-06-02 00:00:00","Bundesamt f�r Landestopographie","EPSG","1895 value.  Newer value of 7 deg 26 min 22.335 sec E determined in 1938.","96.29",NULL};
-datafile_rows_t p_meridian_row_9[] = {"8908","Jakarta","","106.482779","9110","1995-06-02 00:00:00","","EPSG","","96.29",NULL};
-datafile_rows_t p_meridian_row_10[] = {"8909","Ferro","","-17.4","9110","1995-06-02 00:00:00","","EPSG","Used in Austria and former Czechoslovakia.","96.29",NULL};
-datafile_rows_t p_meridian_row_11[] = {"8910","Brussels","","4.220471","9110","1995-06-02 00:00:00","","EPSG","","96.29",NULL};
-datafile_rows_t p_meridian_row_12[] = {"8911","Stockholm","","18.03298","9110","1995-06-02 00:00:00","","EPSG","","96.29",NULL};
-datafile_rows_t p_meridian_row_13[] = {"8912","Athens","","23.4258815","9110","1997-06-16 00:00:00","Topography Department; National Technical University of Athens.","EPSG","Used in Greece for older mapping based on Hatt projection.","",NULL};
-datafile_rows_t p_meridian_row_14[] = {"8913","Oslo","","10.43225","9110","1999-10-20 00:00:00","Statens kartverk - Geodesi dividsion","EPSG","Formerly known as Kristiana and Christiana.","",NULL};
-
-datafile_rows_t *p_meridian_rows[] = {p_meridian_row_1,p_meridian_row_2,p_meridian_row_3,p_meridian_row_4,p_meridian_row_5,p_meridian_row_6,p_meridian_row_7,p_meridian_row_8,p_meridian_row_9,p_meridian_row_10,p_meridian_row_11,p_meridian_row_12,p_meridian_row_13,p_meridian_row_14,NULL};
diff --git a/src/tiff/csv/p_meridian.csv b/src/tiff/csv/p_meridian.csv
deleted file mode 100644
index bb33ab5..0000000
--- a/src/tiff/csv/p_meridian.csv
+++ /dev/null
@@ -1,14 +0,0 @@
-"PRIME_MERIDIAN_CODE","PRIME_MERID_EPSG_NAME","PRIME_MERID_USER_NAME","GREENWICH_LONGITUDE","UOM_ANGLE_CODE","REVISION_DATE","INFORMATION_SOURCE","DATA_SOURCE","REMARKS","CHANGE_ID"
-8901,Greenwich,,0.0,9110,1995-06-02 00:00:00,,EPSG,,96.29
-8902,Lisbon,,-9.0754862,9110,1995-06-02 00:00:00,Instituto Geografico e Cadastral; Lisbon,EPSG,,96.29
-8903,Paris,,2.5969213,9105,1995-06-02 00:00:00,Institut Geographique National (IGN); Paris,EPSG,Value adopted by IGN (Paris) in 1936. Equivalent to 2 deg 20min 14.025sec. Preferred by EPSG to earlier value of 2deg 20min 13.95sec (2.596898 grads) used by RGS London.,
-8904,Bogota,,-74.04513,9110,1995-06-02 00:00:00,"Instituto Geografico \"Augustin Cadazzi\" (IGAC); Bogota",EPSG,,96.29
-8905,Madrid,,-3.411658,9110,1995-06-02 00:00:00,,EPSG,,96.29
-8906,Rome,,12.27084,9110,1995-06-02 00:00:00,,EPSG,,96.29
-8907,Bern,,7.26225,9110,1995-06-02 00:00:00,Bundesamt f�r Landestopographie,EPSG,1895 value.  Newer value of 7 deg 26 min 22.335 sec E determined in 1938.,96.29
-8908,Jakarta,,106.482779,9110,1995-06-02 00:00:00,,EPSG,,96.29
-8909,Ferro,,-17.4,9110,1995-06-02 00:00:00,,EPSG,Used in Austria and former Czechoslovakia.,96.29
-8910,Brussels,,4.220471,9110,1995-06-02 00:00:00,,EPSG,,96.29
-8911,Stockholm,,18.03298,9110,1995-06-02 00:00:00,,EPSG,,96.29
-8912,Athens,,23.4258815,9110,1997-06-16 00:00:00,Topography Department; National Technical University of Athens.,EPSG,Used in Greece for older mapping based on Hatt projection.,
-8913,Oslo,,10.43225,9110,1999-10-20 00:00:00,Statens kartverk - Geodesi dividsion,EPSG,Formerly known as Kristiana and Christiana.,
diff --git a/src/tiff/csv/pcs.csv b/src/tiff/csv/pcs.csv
deleted file mode 100644
index eb34563..0000000
--- a/src/tiff/csv/pcs.csv
+++ /dev/null
@@ -1,2251 +0,0 @@
-"COORD_REF_SYS_CODE","COORD_REF_SYS_NAME","UOM_CODE","SOURCE_GEOGCRS_CODE","COORD_OP_CODE","COORD_OP_METHOD_CODE","PARAMETER_CODE_1","PARAMETER_VALUE_1","PARAMETER_UOM_1","PARAMETER_CODE_2","PARAMETER_VALUE_2","PARAMETER_UOM_2","PARAMETER_CODE_3","PARAMETER_VALUE_3","PARAMETER_UOM_3","PARAMETER_CODE_4","PARAMETER_VALUE_4","PARAMETER_UOM_4","PARAMETER_CODE_5","PARAMETER_VALUE_5","PARAMETER_UOM_5","PARAMETER_CODE_6","PARAMETER_VALUE_6","PARAMETER_UOM_6","PARAMETER_CODE_7","PARAMETER_VALUE_ [...]
-2000,"Anguilla 1957 / British West Indies Grid",9001,4600,19942,9807,8801,0.0,9102,8802,-62.0,9102,8805,0.9995,9201,8806,400000.0,9001,8807,0.0,9001,,,,,,
-2001,"Antigua 1943 / British West Indies Grid",9001,4601,19942,9807,8801,0.0,9102,8802,-62.0,9102,8805,0.9995,9201,8806,400000.0,9001,8807,0.0,9001,,,,,,
-2002,"Dominica 1945 / British West Indies Grid",9001,4602,19942,9807,8801,0.0,9102,8802,-62.0,9102,8805,0.9995,9201,8806,400000.0,9001,8807,0.0,9001,,,,,,
-2003,"Grenada 1953 / British West Indies Grid",9001,4603,19942,9807,8801,0.0,9102,8802,-62.0,9102,8805,0.9995,9201,8806,400000.0,9001,8807,0.0,9001,,,,,,
-2004,"Montserrat 58 / British West Indies Grid",9001,4604,19942,9807,8801,0.0,9102,8802,-62.0,9102,8805,0.9995,9201,8806,400000.0,9001,8807,0.0,9001,,,,,,
-2005,"St Kitts 1955 / British West Indies Grid",9001,4605,19942,9807,8801,0.0,9102,8802,-62.0,9102,8805,0.9995,9201,8806,400000.0,9001,8807,0.0,9001,,,,,,
-2006,"St Lucia 1955 / British West Indies Grid",9001,4606,19942,9807,8801,0.0,9102,8802,-62.0,9102,8805,0.9995,9201,8806,400000.0,9001,8807,0.0,9001,,,,,,
-2007,"St Vincent 45 / British West Indies Grid",9001,4607,19942,9807,8801,0.0,9102,8802,-62.0,9102,8805,0.9995,9201,8806,400000.0,9001,8807,0.0,9001,,,,,,
-2008,"NAD27(CGQ77) / SCoPQ zone 2",9001,4609,17700,9807,8801,0.0,9110,8802,-55.3,9110,8805,0.9999,9201,8806,304800.0,9001,8807,0.0,9001,,,,,,
-2009,"NAD27(CGQ77) / SCoPQ zone 3",9001,4609,17703,9807,8801,0.0,9110,8802,-58.3,9110,8805,0.9999,9201,8806,304800.0,9001,8807,0.0,9001,,,,,,
-2010,"NAD27(CGQ77) / SCoPQ zone 4",9001,4609,17704,9807,8801,0.0,9110,8802,-61.3,9110,8805,0.9999,9201,8806,304800.0,9001,8807,0.0,9001,,,,,,
-2011,"NAD27(CGQ77) / SCoPQ zone 5",9001,4609,17705,9807,8801,0.0,9110,8802,-64.3,9110,8805,0.9999,9201,8806,304800.0,9001,8807,0.0,9001,,,,,,
-2012,"NAD27(CGQ77) / SCoPQ zone 6",9001,4609,17706,9807,8801,0.0,9110,8802,-67.3,9110,8805,0.9999,9201,8806,304800.0,9001,8807,0.0,9001,,,,,,
-2013,"NAD27(CGQ77) / SCoPQ zone 7",9001,4609,17707,9807,8801,0.0,9110,8802,-70.3,9110,8805,0.9999,9201,8806,304800.0,9001,8807,0.0,9001,,,,,,
-2014,"NAD27(CGQ77) / SCoPQ zone 8",9001,4609,17708,9807,8801,0.0,9110,8802,-73.3,9110,8805,0.9999,9201,8806,304800.0,9001,8807,0.0,9001,,,,,,
-2015,"NAD27(CGQ77) / SCoPQ zone 9",9001,4609,17709,9807,8801,0.0,9110,8802,-76.3,9110,8805,0.9999,9201,8806,304800.0,9001,8807,0.0,9001,,,,,,
-2016,"NAD27(CGQ77) / SCoPQ zone 10",9001,4609,17710,9807,8801,0.0,9110,8802,-79.3,9110,8805,0.9999,9201,8806,304800.0,9001,8807,0.0,9001,,,,,,
-2017,"NAD27(76) / MTM zone 8",9001,4608,17708,9807,8801,0.0,9110,8802,-73.3,9110,8805,0.9999,9201,8806,304800.0,9001,8807,0.0,9001,,,,,,
-2018,"NAD27(76) / MTM zone 9",9001,4608,17709,9807,8801,0.0,9110,8802,-76.3,9110,8805,0.9999,9201,8806,304800.0,9001,8807,0.0,9001,,,,,,
-2019,"NAD27(76) / MTM zone 10",9001,4608,17710,9807,8801,0.0,9110,8802,-79.3,9110,8805,0.9999,9201,8806,304800.0,9001,8807,0.0,9001,,,,,,
-2020,"NAD27(76) / MTM zone 11",9001,4608,17711,9807,8801,0.0,9110,8802,-82.3,9110,8805,0.9999,9201,8806,304800.0,9001,8807,0.0,9001,,,,,,
-2021,"NAD27(76) / MTM zone 12",9001,4608,17712,9807,8801,0.0,9102,8802,-81.0,9102,8805,0.9999,9201,8806,304800.0,9001,8807,0.0,9001,,,,,,
-2022,"NAD27(76) / MTM zone 13",9001,4608,17713,9807,8801,0.0,9102,8802,-84.0,9102,8805,0.9999,9201,8806,304800.0,9001,8807,0.0,9001,,,,,,
-2023,"NAD27(76) / MTM zone 14",9001,4608,17714,9807,8801,0.0,9102,8802,-87.0,9102,8805,0.9999,9201,8806,304800.0,9001,8807,0.0,9001,,,,,,
-2024,"NAD27(76) / MTM zone 15",9001,4608,17715,9807,8801,0.0,9102,8802,-90.0,9102,8805,0.9999,9201,8806,304800.0,9001,8807,0.0,9001,,,,,,
-2025,"NAD27(76) / MTM zone 16",9001,4608,17716,9807,8801,0.0,9102,8802,-93.0,9102,8805,0.9999,9201,8806,304800.0,9001,8807,0.0,9001,,,,,,
-2026,"NAD27(76) / MTM zone 17",9001,4608,17717,9807,8801,0.0,9102,8802,-96.0,9102,8805,0.9999,9201,8806,304800.0,9001,8807,0.0,9001,,,,,,
-2027,"NAD27(76) / UTM zone 15N",9001,4608,16015,9807,8801,0.0,9102,8802,-93.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2028,"NAD27(76) / UTM zone 16N",9001,4608,16016,9807,8801,0.0,9102,8802,-87.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2029,"NAD27(76) / UTM zone 17N",9001,4608,16017,9807,8801,0.0,9102,8802,-81.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2030,"NAD27(76) / UTM zone 18N",9001,4608,16018,9807,8801,0.0,9102,8802,-75.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2031,"NAD27(CGQ77) / UTM zone 17N",9001,4609,16017,9807,8801,0.0,9102,8802,-81.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2032,"NAD27(CGQ77) / UTM zone 18N",9001,4609,16018,9807,8801,0.0,9102,8802,-75.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2033,"NAD27(CGQ77) / UTM zone 19N",9001,4609,16019,9807,8801,0.0,9102,8802,-69.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2034,"NAD27(CGQ77) / UTM zone 20N",9001,4609,16020,9807,8801,0.0,9102,8802,-63.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2035,"NAD27(CGQ77) / UTM zone 21N",9001,4609,16021,9807,8801,0.0,9102,8802,-57.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2036,"NAD83(CSRS98) / New Brunswick Stereo",9001,4140,19946,9809,8801,46.3,9110,8802,-66.3,9110,8805,0.999912,9201,8806,2500000.0,9001,8807,7500000.0,9001,,,,,,
-2037,"NAD83(CSRS98) / UTM zone 19N",9001,4140,16019,9807,8801,0.0,9102,8802,-69.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2038,"NAD83(CSRS98) / UTM zone 20N",9001,4140,16020,9807,8801,0.0,9102,8802,-63.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2039,"Israel / Israeli TM Grid",9001,4141,18204,9807,8801,31.4403817,9110,8802,35.1216261,9110,8805,1.0000067,9201,8806,219529.584,9001,8807,626907.39,9001,,,,,,
-2040,"Locodjo 1965 / UTM zone 30N",9001,4142,16030,9807,8801,0.0,9102,8802,-3.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2041,"Abidjan 1987 / UTM zone 30N",9001,4143,16030,9807,8801,0.0,9102,8802,-3.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2042,"Locodjo 1965 / UTM zone 29N",9001,4142,16029,9807,8801,0.0,9102,8802,-9.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2043,"Abidjan 1987 / UTM zone 29N",9001,4143,16029,9807,8801,0.0,9102,8802,-9.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2044,"Hanoi 1972 / Gauss-Kruger zone 18",9001,4147,16218,9807,8801,0.0,9102,8802,105.0,9102,8805,1.0,9201,8806,18500000.0,9001,8807,0.0,9001,,,,,,
-2045,"Hanoi 1972 / Gauss-Kruger zone 19",9001,4147,16219,9807,8801,0.0,9102,8802,111.0,9102,8805,1.0,9201,8806,19500000.0,9001,8807,0.0,9001,,,,,,
-2046,"Hartebeesthoek94 / Lo15",9001,4148,17515,9808,8801,0.0,9102,8802,15.0,9102,8805,1.0,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-2047,"Hartebeesthoek94 / Lo17",9001,4148,17517,9808,8801,0.0,9102,8802,17.0,9102,8805,1.0,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-2048,"Hartebeesthoek94 / Lo19",9001,4148,17519,9808,8801,0.0,9102,8802,19.0,9102,8805,1.0,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-2049,"Hartebeesthoek94 / Lo21",9001,4148,17521,9808,8801,0.0,9102,8802,21.0,9102,8805,1.0,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-2050,"Hartebeesthoek94 / Lo23",9001,4148,17523,9808,8801,0.0,9102,8802,23.0,9102,8805,1.0,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-2051,"Hartebeesthoek94 / Lo25",9001,4148,17525,9808,8801,0.0,9102,8802,25.0,9102,8805,1.0,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-2052,"Hartebeesthoek94 / Lo27",9001,4148,17527,9808,8801,0.0,9102,8802,27.0,9102,8805,1.0,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-2053,"Hartebeesthoek94 / Lo29",9001,4148,17529,9808,8801,0.0,9102,8802,29.0,9102,8805,1.0,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-2054,"Hartebeesthoek94 / Lo31",9001,4148,17531,9808,8801,0.0,9102,8802,31.0,9102,8805,1.0,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-2055,"Hartebeesthoek94 / Lo33",9001,4148,17533,9808,8801,0.0,9102,8802,33.0,9102,8805,1.0,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-2056,"CH1903+ / LV95",9001,4150,19950,9815,8811,46.570866,9110,8812,7.26225,9110,8813,90.0,9110,8814,90.0,9110,8815,1.0,9201,8816,2600000.0,9001,8817,1200000.0,9001
-2057,"Rassadiran / Nakhl e Taqi",9001,4153,19951,9815,8811,27.31077837,9110,8812,52.3612741,9110,8813,0.34179803,9110,8814,0.34179803,9110,8815,0.999895934,9201,8816,658377.437,9001,8817,3044969.194,9001
-2058,"ED50(ED77) / UTM zone 38N",9001,4154,16038,9807,8801,0.0,9102,8802,45.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2059,"ED50(ED77) / UTM zone 39N",9001,4154,16039,9807,8801,0.0,9102,8802,51.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2060,"ED50(ED77) / UTM zone 40N",9001,4154,16040,9807,8801,0.0,9102,8802,57.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2061,"ED50(ED77) / UTM zone 41N",9001,4154,16041,9807,8801,0.0,9102,8802,63.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2062,"Madrid 1870 (Madrid) / Spain",9001,4903,19921,9801,8801,40.0,9102,8802,0.0,9102,8805,0.9988085293,9201,8806,600000.0,9001,8807,600000.0,9001,,,,,,
-2063,"Dabola 1981 / UTM zone 28N",9001,4315,16028,9807,8801,0.0,9102,8802,-15.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2064,"Dabola 1981 / UTM zone 29N",9001,4315,16029,9807,8801,0.0,9102,8802,-9.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2065,"S-JTSK (Ferro) / Krovak",9001,4818,19952,9819,8811,49.3,9110,8812,42.3,9110,8813,30.1717303,9110,8816,0.0,9001,8817,0.0,9001,8818,78.3,9110,8819,0.9999,9201
-2066,"Mount Dillon / Tobago Grid",9039,4157,19924,9806,8801,11.1507843,9110,8802,-60.4109632,9110,8806,187500.0,9039,8807,180000.0,9039,,,,,,,,,
-2067,"Naparima 1955 / UTM zone 20N",9001,4158,16020,9807,8801,0.0,9102,8802,-63.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2068,"ELD79 / Libya zone 5",9001,4159,18240,9807,8801,0.0,9102,8802,9.0,9102,8805,0.9999,9201,8806,200000.0,9001,8807,0.0,9001,,,,,,
-2069,"ELD79 / Libya zone 6",9001,4159,18241,9807,8801,0.0,9102,8802,11.0,9102,8805,0.9999,9201,8806,200000.0,9001,8807,0.0,9001,,,,,,
-2070,"ELD79 / Libya zone 7",9001,4159,18242,9807,8801,0.0,9102,8802,13.0,9102,8805,0.9999,9201,8806,200000.0,9001,8807,0.0,9001,,,,,,
-2071,"ELD79 / Libya zone 8",9001,4159,18243,9807,8801,0.0,9102,8802,15.0,9102,8805,0.9999,9201,8806,200000.0,9001,8807,0.0,9001,,,,,,
-2072,"ELD79 / Libya zone 9",9001,4159,18244,9807,8801,0.0,9102,8802,17.0,9102,8805,0.9999,9201,8806,200000.0,9001,8807,0.0,9001,,,,,,
-2073,"ELD79 / Libya zone 10",9001,4159,18245,9807,8801,0.0,9102,8802,19.0,9102,8805,0.9999,9201,8806,200000.0,9001,8807,0.0,9001,,,,,,
-2074,"ELD79 / Libya zone 11",9001,4159,18246,9807,8801,0.0,9102,8802,21.0,9102,8805,0.9999,9201,8806,200000.0,9001,8807,0.0,9001,,,,,,
-2075,"ELD79 / Libya zone 12",9001,4159,18247,9807,8801,0.0,9102,8802,23.0,9102,8805,0.9999,9201,8806,200000.0,9001,8807,0.0,9001,,,,,,
-2076,"ELD79 / Libya zone 13",9001,4159,18248,9807,8801,0.0,9102,8802,25.0,9102,8805,0.9999,9201,8806,200000.0,9001,8807,0.0,9001,,,,,,
-2077,"ELD79 / UTM zone 32N",9001,4159,16032,9807,8801,0.0,9102,8802,9.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2078,"ELD79 / UTM zone 33N",9001,4159,16033,9807,8801,0.0,9102,8802,15.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2079,"ELD79 / UTM zone 34N",9001,4159,16034,9807,8801,0.0,9102,8802,21.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2080,"ELD79 / UTM zone 35N",9001,4159,16035,9807,8801,0.0,9102,8802,27.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2081,"Chos Malal 1914 / Argentina zone 2",9001,4160,18032,9807,8801,-90.0,9102,8802,-69.0,9102,8805,1.0,9201,8806,2500000.0,9001,8807,0.0,9001,,,,,,
-2082,"Pampa del Castillo / Argentina zone 2",9001,4161,18032,9807,8801,-90.0,9102,8802,-69.0,9102,8805,1.0,9201,8806,2500000.0,9001,8807,0.0,9001,,,,,,
-2083,"Hito XVIII 1963 / Argentina zone 2",9001,4254,18032,9807,8801,-90.0,9102,8802,-69.0,9102,8805,1.0,9201,8806,2500000.0,9001,8807,0.0,9001,,,,,,
-2084,"Hito XVIII 1963 / UTM zone 19S",9001,4254,16119,9807,8801,0.0,9102,8802,-69.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-2085,"NAD27 / Cuba Norte",9001,4267,18061,9801,8801,22.21,9110,8802,-81.0,9110,8805,0.99993602,9201,8806,500000.0,9001,8807,280296.016,9001,,,,,,
-2086,"NAD27 / Cuba Sur",9001,4267,18062,9801,8801,20.43,9110,8802,-76.5,9110,8805,0.99994848,9201,8806,500000.0,9001,8807,229126.939,9001,,,,,,
-2087,"ELD79 / TM 12 NE",9001,4159,16412,9807,8801,0.0,9102,8802,12.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2088,"Carthage / TM 11 NE",9001,4223,16411,9807,8801,0.0,9102,8802,11.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2089,"Yemen NGN96 / UTM zone 38N",9001,4163,16038,9807,8801,0.0,9102,8802,45.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2090,"Yemen NGN96 / UTM zone 39N",9001,4163,16039,9807,8801,0.0,9102,8802,51.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2091,"South Yemen / Gauss Kruger zone 8",9001,4164,16208,9807,8801,0.0,9102,8802,45.0,9102,8805,1.0,9201,8806,8500000.0,9001,8807,0.0,9001,,,,,,
-2092,"South Yemen / Gauss Kruger zone 9",9001,4164,16209,9807,8801,0.0,9102,8802,51.0,9102,8805,1.0,9201,8806,9500000.0,9001,8807,0.0,9001,,,,,,
-2093,"Hanoi 1972 / GK 106 NE",9001,4147,16586,9807,8801,0.0,9102,8802,106.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2094,"WGS 72BE / TM 106 NE",9001,4324,16506,9807,8801,0.0,9102,8802,106.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2095,"Bissau / UTM zone 28N",9001,4165,16028,9807,8801,0.0,9102,8802,-15.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2096,"Korean 1985 / Korea East Belt",9001,4162,18251,9807,8801,38.0,9102,8802,129.0,9102,8805,1.0,9201,8806,200000.0,9001,8807,500000.0,9001,,,,,,
-2097,"Korean 1985 / Korea Central Belt",9001,4162,18252,9807,8801,38.0,9102,8802,127.0,9102,8805,1.0,9201,8806,200000.0,9001,8807,500000.0,9001,,,,,,
-2098,"Korean 1985 / Korea West Belt",9001,4162,18253,9807,8801,38.0,9102,8802,125.0,9102,8805,1.0,9201,8806,200000.0,9001,8807,500000.0,9001,,,,,,
-2099,"Qatar 1948 / Qatar Grid",9001,4286,19953,9806,8801,25.22565,9110,8802,50.4541,9110,8806,100000.0,9001,8807,100000.0,9001,,,,,,,,,
-2100,"GGRS87 / Greek Grid",9001,4121,19930,9807,8801,0.0,9102,8802,24.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2101,"Lake / Maracaibo Grid M1",9001,4249,18260,9801,8801,10.1,9110,8802,-71.3620224,9110,8805,1.0,9201,8806,0.0,9001,8807,-52684.972,9001,,,,,,
-2102,"Lake / Maracaibo Grid",9001,4249,18261,9801,8801,10.1,9110,8802,-71.3620224,9110,8805,1.0,9201,8806,200000.0,9001,8807,147315.028,9001,,,,,,
-2103,"Lake / Maracaibo Grid M3",9001,4249,18262,9801,8801,10.1,9110,8802,-71.3620224,9110,8805,1.0,9201,8806,500000.0,9001,8807,447315.028,9001,,,,,,
-2104,"Lake / Maracaibo La Rosa Grid",9001,4249,18263,9801,8801,10.1,9110,8802,-71.3620224,9110,8805,1.0,9201,8806,-17044.0,9001,8807,-23139.97,9001,,,,,,
-2105,"NZGD2000 / Mount Eden Circuit 2000",9001,4167,17931,9807,8801,-36.5247,9110,8802,174.4551,9110,8805,0.9999,9201,8806,400000.0,9001,8807,800000.0,9001,,,,,,
-2106,"NZGD2000 / Bay of Plenty Circuit 2000",9001,4167,17932,9807,8801,-37.454,9110,8802,176.2758,9110,8805,1.0,9201,8806,400000.0,9001,8807,800000.0,9001,,,,,,
-2107,"NZGD2000 / Poverty Bay Circuit 2000",9001,4167,17933,9807,8801,-38.3728,9110,8802,177.5308,9110,8805,1.0,9201,8806,400000.0,9001,8807,800000.0,9001,,,,,,
-2108,"NZGD2000 / Hawkes Bay Circuit 2000",9001,4167,17934,9807,8801,-39.3903,9110,8802,176.4025,9110,8805,1.0,9201,8806,400000.0,9001,8807,800000.0,9001,,,,,,
-2109,"NZGD2000 / Taranaki Circuit 2000",9001,4167,17935,9807,8801,-39.0808,9110,8802,174.134,9110,8805,1.0,9201,8806,400000.0,9001,8807,800000.0,9001,,,,,,
-2110,"NZGD2000 / Tuhirangi Circuit 2000",9001,4167,17936,9807,8801,-39.3044,9110,8802,175.3824,9110,8805,1.0,9201,8806,400000.0,9001,8807,800000.0,9001,,,,,,
-2111,"NZGD2000 / Wanganui Circuit 2000",9001,4167,17937,9807,8801,-40.1431,9110,8802,175.2917,9110,8805,1.0,9201,8806,400000.0,9001,8807,800000.0,9001,,,,,,
-2112,"NZGD2000 / Wairarapa Circuit 2000",9001,4167,17938,9807,8801,-40.5531,9110,8802,175.385,9110,8805,1.0,9201,8806,400000.0,9001,8807,800000.0,9001,,,,,,
-2113,"NZGD2000 / Wellington Circuit 2000",9001,4167,17939,9807,8801,-41.1804,9110,8802,174.4635,9110,8805,1.0,9201,8806,400000.0,9001,8807,800000.0,9001,,,,,,
-2114,"NZGD2000 / Collingwood Circuit 2000",9001,4167,17940,9807,8801,-40.4253,9110,8802,172.4019,9110,8805,1.0,9201,8806,400000.0,9001,8807,800000.0,9001,,,,,,
-2115,"NZGD2000 / Nelson Circuit 2000",9001,4167,17941,9807,8801,-41.1628,9110,8802,173.1757,9110,8805,1.0,9201,8806,400000.0,9001,8807,800000.0,9001,,,,,,
-2116,"NZGD2000 / Karamea Circuit 2000",9001,4167,17942,9807,8801,-41.1723,9110,8802,172.0632,9110,8805,1.0,9201,8806,400000.0,9001,8807,800000.0,9001,,,,,,
-2117,"NZGD2000 / Buller Circuit 2000",9001,4167,17943,9807,8801,-41.4838,9110,8802,171.3452,9110,8805,1.0,9201,8806,400000.0,9001,8807,800000.0,9001,,,,,,
-2118,"NZGD2000 / Grey Circuit 2000",9001,4167,17944,9807,8801,-42.2001,9110,8802,171.3259,9110,8805,1.0,9201,8806,400000.0,9001,8807,800000.0,9001,,,,,,
-2119,"NZGD2000 / Amuri Circuit 2000",9001,4167,17945,9807,8801,-42.412,9110,8802,173.0036,9110,8805,1.0,9201,8806,400000.0,9001,8807,800000.0,9001,,,,,,
-2120,"NZGD2000 / Marlborough Circuit 2000",9001,4167,17946,9807,8801,-41.324,9110,8802,173.4807,9110,8805,1.0,9201,8806,400000.0,9001,8807,800000.0,9001,,,,,,
-2121,"NZGD2000 / Hokitika Circuit 2000",9001,4167,17947,9807,8801,-42.531,9110,8802,170.5847,9110,8805,1.0,9201,8806,400000.0,9001,8807,800000.0,9001,,,,,,
-2122,"NZGD2000 / Okarito Circuit 2000",9001,4167,17948,9807,8801,-43.0636,9110,8802,170.1539,9110,8805,1.0,9201,8806,400000.0,9001,8807,800000.0,9001,,,,,,
-2123,"NZGD2000 / Jacksons Bay Circuit 2000",9001,4167,17949,9807,8801,-43.584,9110,8802,168.3622,9110,8805,1.0,9201,8806,400000.0,9001,8807,800000.0,9001,,,,,,
-2124,"NZGD2000 / Mount Pleasant Circuit 2000",9001,4167,17950,9807,8801,-43.3526,9110,8802,172.4337,9110,8805,1.0,9201,8806,400000.0,9001,8807,800000.0,9001,,,,,,
-2125,"NZGD2000 / Gawler Circuit 2000",9001,4167,17951,9807,8801,-43.4455,9110,8802,171.2138,9110,8805,1.0,9201,8806,400000.0,9001,8807,800000.0,9001,,,,,,
-2126,"NZGD2000 / Timaru Circuit 2000",9001,4167,17952,9807,8801,-44.2407,9110,8802,171.0326,9110,8805,1.0,9201,8806,400000.0,9001,8807,800000.0,9001,,,,,,
-2127,"NZGD2000 / Lindis Peak Circuit 2000",9001,4167,17953,9807,8801,-44.4406,9110,8802,169.2803,9110,8805,1.0,9201,8806,400000.0,9001,8807,800000.0,9001,,,,,,
-2128,"NZGD2000 / Mount Nicholas Circuit 2000",9001,4167,17954,9807,8801,-45.0758,9110,8802,168.2355,9110,8805,1.0,9201,8806,400000.0,9001,8807,800000.0,9001,,,,,,
-2129,"NZGD2000 / Mount York Circuit 2000",9001,4167,17955,9807,8801,-45.3349,9110,8802,167.4419,9110,8805,1.0,9201,8806,400000.0,9001,8807,800000.0,9001,,,,,,
-2130,"NZGD2000 / Observation Point Circuit 2000",9001,4167,17956,9807,8801,-45.4858,9110,8802,170.3742,9110,8805,1.0,9201,8806,400000.0,9001,8807,800000.0,9001,,,,,,
-2131,"NZGD2000 / North Taieri Circuit 2000",9001,4167,17957,9807,8801,-45.5141,9110,8802,170.1657,9110,8805,0.99996,9201,8806,400000.0,9001,8807,800000.0,9001,,,,,,
-2132,"NZGD2000 / Bluff Circuit 2000",9001,4167,17958,9807,8801,-46.36,9110,8802,168.2034,9110,8805,1.0,9201,8806,400000.0,9001,8807,800000.0,9001,,,,,,
-2133,"NZGD2000 / UTM zone 58S",9001,4167,16158,9807,8801,0.0,9102,8802,165.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-2134,"NZGD2000 / UTM zone 59S",9001,4167,16159,9807,8801,0.0,9102,8802,171.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-2135,"NZGD2000 / UTM zone 60S",9001,4167,16160,9807,8801,0.0,9102,8802,177.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-2136,"Accra / Ghana National Grid",9094,4168,19959,9807,8801,4.4,9110,8802,-1.0,9110,8805,0.99975,9201,8806,900000.0,9094,8807,0.0,9094,,,,,,
-2137,"Accra / TM 1 NW",9001,4168,17001,9807,8801,0.0,9102,8802,-1.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2138,"NAD27(CGQ77) / Quebec Lambert",9001,4609,19944,9802,8821,44.0,9110,8822,-68.3,9110,8823,60.0,9110,8824,46.0,9110,8826,0.0,9001,8827,0.0,9001,,,
-2139,"NAD83(CSRS98) / SCoPQ zone 2",9001,4140,17700,9807,8801,0.0,9110,8802,-55.3,9110,8805,0.9999,9201,8806,304800.0,9001,8807,0.0,9001,,,,,,
-2140,"NAD83(CSRS98) / MTM zone 3",9001,4140,17703,9807,8801,0.0,9110,8802,-58.3,9110,8805,0.9999,9201,8806,304800.0,9001,8807,0.0,9001,,,,,,
-2141,"NAD83(CSRS98) / MTM zone 4",9001,4140,17704,9807,8801,0.0,9110,8802,-61.3,9110,8805,0.9999,9201,8806,304800.0,9001,8807,0.0,9001,,,,,,
-2142,"NAD83(CSRS98) / MTM zone 5",9001,4140,17705,9807,8801,0.0,9110,8802,-64.3,9110,8805,0.9999,9201,8806,304800.0,9001,8807,0.0,9001,,,,,,
-2143,"NAD83(CSRS98) / MTM zone 6",9001,4140,17706,9807,8801,0.0,9110,8802,-67.3,9110,8805,0.9999,9201,8806,304800.0,9001,8807,0.0,9001,,,,,,
-2144,"NAD83(CSRS98) / MTM zone 7",9001,4140,17707,9807,8801,0.0,9110,8802,-70.3,9110,8805,0.9999,9201,8806,304800.0,9001,8807,0.0,9001,,,,,,
-2145,"NAD83(CSRS98) / MTM zone 8",9001,4140,17708,9807,8801,0.0,9110,8802,-73.3,9110,8805,0.9999,9201,8806,304800.0,9001,8807,0.0,9001,,,,,,
-2146,"NAD83(CSRS98) / MTM zone 9",9001,4140,17709,9807,8801,0.0,9110,8802,-76.3,9110,8805,0.9999,9201,8806,304800.0,9001,8807,0.0,9001,,,,,,
-2147,"NAD83(CSRS98) / MTM zone 10",9001,4140,17710,9807,8801,0.0,9110,8802,-79.3,9110,8805,0.9999,9201,8806,304800.0,9001,8807,0.0,9001,,,,,,
-2148,"NAD83(CSRS98) / UTM zone 21N",9001,4140,16021,9807,8801,0.0,9102,8802,-57.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2149,"NAD83(CSRS98) / UTM zone 18N",9001,4140,16018,9807,8801,0.0,9102,8802,-75.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2150,"NAD83(CSRS98) / UTM zone 17N",9001,4140,16017,9807,8801,0.0,9102,8802,-81.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2151,"NAD83(CSRS98) / UTM zone 13N",9001,4140,16013,9807,8801,0.0,9102,8802,-105.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2152,"NAD83(CSRS98) / UTM zone 12N",9001,4140,16012,9807,8801,0.0,9102,8802,-111.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2153,"NAD83(CSRS98) / UTM zone 11N",9001,4140,16011,9807,8801,0.0,9102,8802,-117.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2154,"RGF93 / Lambert-93",9001,4171,18085,9802,8821,46.3,9110,8822,3.0,9110,8823,49.0,9110,8824,44.0,9110,8826,700000.0,9001,8827,6600000.0,9001,,,
-2155,"American Samoa 1962 / American Samoa Lambert",9003,4169,15300,9801,8801,-14.16,9110,8802,170.0,9110,8805,1.0,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-2156,"NAD83(HARN) / UTM zone 59S",9001,4152,16159,9807,8801,0.0,9102,8802,171.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-2157,"IRENET95 / Irish Transverse Mercator",9001,4173,19962,9807,8801,53.3,9110,8802,-8.0,9110,8805,0.99982,9201,8806,600000.0,9001,8807,750000.0,9001,,,,,,
-2158,"IRENET95 / UTM zone 29N",9001,4173,16029,9807,8801,0.0,9102,8802,-9.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2159,"Sierra Leone 1924 / New Colony Grid",9094,4174,19963,9807,8801,6.4,9110,8802,-12.0,9110,8805,1.0,9201,8806,500000.0,9094,8807,0.0,9094,,,,,,
-2160,"Sierra Leone 1924 / New War Office Grid",9094,4174,19964,9807,8801,6.4,9110,8802,-12.0,9110,8805,1.0,9201,8806,800000.0,9094,8807,600000.0,9094,,,,,,
-2161,"Sierra Leone 1968 / UTM zone 28N",9001,4175,16028,9807,8801,0.0,9102,8802,-15.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2162,"Sierra Leone 1968 / UTM zone 29N",9001,4175,16029,9807,8801,0.0,9102,8802,-9.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2163,US National Atlas Equal Area,9001,4047,19965,9821,8806,0.0,9001,8807,0.0,9001,8828,45.0,9102,8829,-100.0,9102,,,,,,,,,
-2164,"Locodjo 1965 / TM 5 NW",9001,4142,17005,9807,8801,0.0,9102,8802,-5.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2165,"Abidjan 1987 / TM 5 NW",9001,4143,17005,9807,8801,0.0,9102,8802,-5.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2166,"Pulkovo 1942(83) / Gauss Kruger zone 3",9001,4178,16263,9807,8801,0.0,9102,8802,9.0,9102,8805,1.0,9201,8806,3500000.0,9001,8807,0.0,9001,,,,,,
-2167,"Pulkovo 1942(83) / Gauss Kruger zone 4",9001,4178,16264,9807,8801,0.0,9102,8802,12.0,9102,8805,1.0,9201,8806,4500000.0,9001,8807,0.0,9001,,,,,,
-2168,"Pulkovo 1942(83) / Gauss Kruger zone 5",9001,4178,16265,9807,8801,0.0,9102,8802,15.0,9102,8805,1.0,9201,8806,5500000.0,9001,8807,0.0,9001,,,,,,
-2169,"Luxembourg 1930 / Gauss",9001,4181,19966,9807,8801,49.5,9110,8802,6.1,9110,8805,1.0,9201,8806,80000.0,9001,8807,100000.0,9001,,,,,,
-2170,"MGI / Slovenia Grid",9001,4312,19967,9807,8801,0.0,9110,8802,15.0,9110,8805,0.9999,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2171,"Pulkovo 1942(58) / Poland zone I",9001,4179,18281,9809,8801,50.373,9110,8802,21.05,9110,8805,0.9998,9201,8806,4637000.0,9001,8807,5647000.0,9001,,,,,,
-2172,"Pulkovo 1942(58) / Poland zone II",9001,4179,18282,9809,8801,53.0007,9110,8802,21.301,9110,8805,0.9998,9201,8806,4603000.0,9001,8807,5806000.0,9001,,,,,,
-2173,"Pulkovo 1942(58) / Poland zone III",9001,4179,18283,9809,8801,53.35,9110,8802,17.003,9110,8805,0.9998,9201,8806,3501000.0,9001,8807,5999000.0,9001,,,,,,
-2174,"Pulkovo 1942(58) / Poland zone IV",9001,4179,18284,9809,8801,51.4015,9110,8802,16.402,9110,8805,0.9998,9201,8806,3703000.0,9001,8807,5627000.0,9001,,,,,,
-2175,"Pulkovo 1942(58) / Poland zone V",9001,4179,18285,9807,8801,0.0,9110,8802,18.573,9110,8805,0.999983,9201,8806,237000.0,9001,8807,-4700000.0,9001,,,,,,
-2176,"ETRS89 / Poland CS2000 zone 5",9001,4258,18305,9807,8801,0.0,9102,8802,15.0,9102,8805,0.999923,9201,8806,5500000.0,9001,8807,0.0,9001,,,,,,
-2177,"ETRS89 / Poland CS2000 zone 6",9001,4258,18306,9807,8801,0.0,9102,8802,18.0,9102,8805,0.999923,9201,8806,6500000.0,9001,8807,0.0,9001,,,,,,
-2178,"ETRS89 / Poland CS2000 zone 7",9001,4258,18307,9807,8801,0.0,9102,8802,21.0,9102,8805,0.999923,9201,8806,7500000.0,9001,8807,0.0,9001,,,,,,
-2179,"ETRS89 / Poland CS2000 zone 8",9001,4258,18308,9807,8801,0.0,9102,8802,24.0,9102,8805,0.999923,9201,8806,8500000.0,9001,8807,0.0,9001,,,,,,
-2180,"ETRS89 / Poland CS92",9001,4258,18300,9807,8801,0.0,9102,8802,19.0,9102,8805,0.9993,9201,8806,500000.0,9001,8807,-5300000.0,9001,,,,,,
-2188,"Azores Occidental 1939 / UTM zone 25N",9001,4182,16025,9807,8801,0.0,9102,8802,-33.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2189,"Azores Central 1948 / UTM zone 26N",9001,4183,16026,9807,8801,0.0,9102,8802,-27.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2190,"Azores Oriental 1940 / UTM zone 26N",9001,4184,16026,9807,8801,0.0,9102,8802,-27.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2191,"Madeira 1936 / UTM zone 28N",9001,4185,16028,9807,8801,0.0,9102,8802,-15.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2192,"ED50 / France EuroLambert",9001,4230,18086,9801,8801,46.48,9110,8802,2.2014025,9110,8805,0.99987742,9201,8806,600000.0,9001,8807,2200000.0,9001,,,,,,
-2193,"NZGD2000 / New Zealand Transverse Mercator",9001,4167,19971,9807,8801,0.0,9102,8802,173.0,9102,8805,0.9996,9201,8806,1600000.0,9001,8807,10000000.0,9001,,,,,,
-2194,"American Samoa 1962 / American Samoa Lambert",9003,4169,15301,9801,8801,-14.16,9110,8802,-170.0,9110,8805,1.0,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-2195,"NAD83(HARN) / UTM zone 2S",9001,4152,16102,9807,8801,0.0,9102,8802,-171.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-2196,"ETRS89 / Kp2000 Jutland",9001,4258,18401,9807,8801,0.0,9110,8802,9.3,9110,8805,0.99995,9201,8806,200000.0,9001,8807,0.0,9001,,,,,,
-2197,"ETRS89 / Kp2000 Zealand",9001,4258,18402,9807,8801,0.0,9102,8802,12.0,9102,8805,0.99995,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2198,"ETRS89 / Kp2000 Bornholm",9001,4258,18403,9807,8801,0.0,9102,8802,15.0,9102,8805,1.0,9201,8806,900000.0,9001,8807,0.0,9001,,,,,,
-2199,"Albanian 1987 / Gauss Kruger zone 4",9001,4191,16204,9807,8801,0.0,9102,8802,21.0,9102,8805,1.0,9201,8806,4500000.0,9001,8807,0.0,9001,,,,,,
-2200,"ATS77 / New Brunswick Stereographic (ATS77)",9001,4122,19945,9809,8801,46.3,9110,8802,-66.3,9110,8805,0.999912,9201,8806,300000.0,9001,8807,800000.0,9001,,,,,,
-2201,"REGVEN / UTM zone 18N",9001,4189,16018,9807,8801,0.0,9102,8802,-75.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2202,"REGVEN / UTM zone 19N",9001,4189,16019,9807,8801,0.0,9102,8802,-69.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2203,"REGVEN / UTM zone 20N",9001,4189,16020,9807,8801,0.0,9102,8802,-63.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2204,"NAD27 / Tennessee",9003,4267,15302,9802,8821,34.4,9110,8822,-86.0,9110,8823,35.15,9110,8824,36.25,9110,8826,2000000.0,9003,8827,100000.0,9003,,,
-2205,"NAD83 / Kentucky North",9001,4269,15303,9802,8821,37.3,9110,8822,-84.15,9110,8823,37.58,9110,8824,38.58,9110,8826,500000.0,9001,8827,0.0,9001,,,
-2206,"ED50 / 3-degree Gauss-Kruger zone 9",9001,4230,16269,9807,8801,0.0,9102,8802,27.0,9102,8805,1.0,9201,8806,9500000.0,9001,8807,0.0,9001,,,,,,
-2207,"ED50 / 3-degree Gauss-Kruger zone 10",9001,4230,16270,9807,8801,0.0,9102,8802,30.0,9102,8805,1.0,9201,8806,10500000.0,9001,8807,0.0,9001,,,,,,
-2208,"ED50 / 3-degree Gauss-Kruger zone 11",9001,4230,16271,9807,8801,0.0,9102,8802,33.0,9102,8805,1.0,9201,8806,11500000.0,9001,8807,0.0,9001,,,,,,
-2209,"ED50 / 3-degree Gauss-Kruger zone 12",9001,4230,16272,9807,8801,0.0,9102,8802,36.0,9102,8805,1.0,9201,8806,12500000.0,9001,8807,0.0,9001,,,,,,
-2210,"ED50 / 3-degree Gauss-Kruger zone 13",9001,4230,16273,9807,8801,0.0,9102,8802,39.0,9102,8805,1.0,9201,8806,13500000.0,9001,8807,0.0,9001,,,,,,
-2211,"ED50 / 3-degree Gauss-Kruger zone 14",9001,4230,16274,9807,8801,0.0,9102,8802,42.0,9102,8805,1.0,9201,8806,14500000.0,9001,8807,0.0,9001,,,,,,
-2212,"ED50 / 3-degree Gauss-Kruger zone 15",9001,4230,16275,9807,8801,0.0,9102,8802,45.0,9102,8805,1.0,9201,8806,15500000.0,9001,8807,0.0,9001,,,,,,
-2213,"ETRS89 / TM 30 NE",9001,4258,16430,9807,8801,0.0,9102,8802,30.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2214,"Douala 1948 / AOF west",9001,4192,18415,9807,8801,0.0,9110,8802,10.3,9110,8805,0.999,9201,8806,1000000.0,9001,8807,1000000.0,9001,,,,,,
-2215,"Manoca 1962 / UTM zone 32N",9001,4193,16032,9807,8801,0.0,9102,8802,9.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2216,"Qornoq 1927 / UTM zone 22N",9001,4194,16022,9807,8801,0.0,9102,8802,-51.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2217,"Qornoq 1927 / UTM zone 23N",9001,4194,16023,9807,8801,0.0,9102,8802,-45.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2218,"Scoresbysund 1952 / Greenland zone 5 east",9001,4195,18425,9826,8801,70.3,9110,8802,-24.0,9110,8805,1.0,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-2219,"ATS77 / UTM zone 19N",9001,4122,16019,9807,8801,0.0,9102,8802,-69.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2220,"ATS77 / UTM zone 20N",9001,4122,16020,9807,8801,0.0,9102,8802,-63.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2221,"Scoresbysund 1952 / Greenland zone 6 east",9001,4195,18426,9826,8801,67.3,9110,8802,-32.0,9110,8805,1.0,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-2222,"NAD83 / Arizona East (ft)",9002,4269,15304,9807,8801,31.0,9110,8802,-110.1,9110,8805,0.9999,9201,8806,700000.0,9002,8807,0.0,9002,,,,,,
-2223,"NAD83 / Arizona Central (ft)",9002,4269,15305,9807,8801,31.0,9110,8802,-111.55,9110,8805,0.9999,9201,8806,700000.0,9002,8807,0.0,9002,,,,,,
-2224,"NAD83 / Arizona West (ft)",9002,4269,15306,9807,8801,31.0,9110,8802,-113.45,9110,8805,0.999933333,9201,8806,700000.0,9002,8807,0.0,9002,,,,,,
-2225,"NAD83 / California zone 1 (ftUS)",9003,4269,15307,9802,8821,39.2,9110,8822,-122.0,9110,8823,41.4,9110,8824,40.0,9110,8826,6561666.667,9003,8827,1640416.667,9003,,,
-2226,"NAD83 / California zone 2 (ftUS)",9003,4269,15308,9802,8821,37.4,9110,8822,-122.0,9110,8823,39.5,9110,8824,38.2,9110,8826,6561666.667,9003,8827,1640416.667,9003,,,
-2227,"NAD83 / California zone 3 (ftUS)",9003,4269,15309,9802,8821,36.3,9110,8822,-120.3,9110,8823,38.26,9110,8824,37.04,9110,8826,6561666.667,9003,8827,1640416.667,9003,,,
-2228,"NAD83 / California zone 4 (ftUS)",9003,4269,15310,9802,8821,35.2,9110,8822,-119.0,9110,8823,37.15,9110,8824,36.0,9110,8826,6561666.667,9003,8827,1640416.667,9003,,,
-2229,"NAD83 / California zone 5 (ftUS)",9003,4269,15311,9802,8821,33.3,9110,8822,-118.0,9110,8823,35.28,9110,8824,34.02,9110,8826,6561666.667,9003,8827,1640416.667,9003,,,
-2230,"NAD83 / California zone 6 (ftUS)",9003,4269,15312,9802,8821,32.1,9110,8822,-116.15,9110,8823,33.53,9110,8824,32.47,9110,8826,6561666.667,9003,8827,1640416.667,9003,,,
-2231,"NAD83 / Colorado North (ftUS)",9003,4269,15313,9802,8821,39.2,9110,8822,-105.3,9110,8823,40.47,9110,8824,39.43,9110,8826,3000000.0,9003,8827,1000000.0,9003,,,
-2232,"NAD83 / Colorado Central (ftUS)",9003,4269,15314,9802,8821,37.5,9110,8822,-105.3,9110,8823,39.45,9110,8824,38.27,9110,8826,3000000.0,9003,8827,1000000.0,9003,,,
-2233,"NAD83 / Colorado South (ftUS)",9003,4269,15315,9802,8821,36.4,9110,8822,-105.3,9110,8823,38.26,9110,8824,37.14,9110,8826,3000000.0,9003,8827,1000000.0,9003,,,
-2234,"NAD83 / Connecticut (ftUS)",9003,4269,15316,9802,8821,40.5,9110,8822,-72.45,9110,8823,41.52,9110,8824,41.12,9110,8826,1000000.0,9003,8827,500000.0,9003,,,
-2235,"NAD83 / Delaware (ftUS)",9003,4269,15317,9807,8801,38.0,9110,8802,-75.25,9110,8805,0.999995,9201,8806,656166.667,9003,8807,0.0,9003,,,,,,
-2236,"NAD83 / Florida East (ftUS)",9003,4269,15318,9807,8801,24.2,9110,8802,-81.0,9110,8805,0.999941177,9201,8806,656166.667,9003,8807,0.0,9003,,,,,,
-2237,"NAD83 / Florida West (ftUS)",9003,4269,15319,9807,8801,24.2,9110,8802,-82.0,9110,8805,0.999941177,9201,8806,656166.667,9003,8807,0.0,9003,,,,,,
-2238,"NAD83 / Florida North (ftUS)",9003,4269,15320,9802,8821,29.0,9110,8822,-84.3,9110,8823,30.45,9110,8824,29.35,9110,8826,1968500.0,9003,8827,0.0,9003,,,
-2239,"NAD83 / Georgia East (ftUS)",9003,4269,15321,9807,8801,30.0,9110,8802,-82.1,9110,8805,0.9999,9201,8806,656166.667,9003,8807,0.0,9003,,,,,,
-2240,"NAD83 / Georgia West (ftUS)",9003,4269,15322,9807,8801,30.0,9110,8802,-84.1,9110,8805,0.9999,9201,8806,2296583.333,9003,8807,0.0,9003,,,,,,
-2241,"NAD83 / Idaho East (ftUS)",9003,4269,15323,9807,8801,41.4,9110,8802,-112.1,9110,8805,0.999947368,9201,8806,656166.667,9003,8807,0.0,9003,,,,,,
-2242,"NAD83 / Idaho Central (ftUS)",9003,4269,15324,9807,8801,41.4,9110,8802,-114.0,9110,8805,0.999947368,9201,8806,1640416.667,9003,8807,0.0,9003,,,,,,
-2243,"NAD83 / Idaho West (ftUS)",9003,4269,15325,9807,8801,41.4,9110,8802,-115.45,9110,8805,0.999933333,9201,8806,2624666.667,9003,8807,0.0,9003,,,,,,
-2244,"NAD83 / Indiana East (ftUS)",9003,4269,15326,9807,8801,37.3,9110,8802,-85.4,9110,8805,0.999966667,9201,8806,328083.333,9003,8807,818125.0,9003,,,,,,
-2245,"NAD83 / Indiana West (ftUS)",9003,4269,15327,9807,8801,37.3,9110,8802,-87.05,9110,8805,0.999966667,9201,8806,2952750.0,9003,8807,818125.0,9003,,,,,,
-2246,"NAD83 / Kentucky North (ftUS)",9003,4269,15328,9802,8821,37.3,9110,8822,-84.15,9110,8823,37.58,9110,8824,38.58,9110,8826,1640416.667,9003,8827,0.0,9003,,,
-2247,"NAD83 / Kentucky South (ftUS)",9003,4269,15329,9802,8821,36.2,9110,8822,-85.45,9110,8823,37.56,9110,8824,36.44,9110,8826,1640416.667,9003,8827,1640416.667,9003,,,
-2248,"NAD83 / Maryland (ftUS)",9003,4269,15330,9802,8821,37.4,9110,8822,-77.0,9110,8823,39.27,9110,8824,38.18,9110,8826,1312333.333,9003,8827,0.0,9003,,,
-2249,"NAD83 / Massachusetts Mainland (ftUS)",9003,4269,15331,9802,8821,41.0,9110,8822,-71.3,9110,8823,42.41,9110,8824,41.43,9110,8826,656166.667,9003,8827,2460625.0,9003,,,
-2250,"NAD83 / Massachusetts Island (ftUS)",9003,4269,15332,9802,8821,41.0,9110,8822,-70.3,9110,8823,41.29,9110,8824,41.17,9110,8826,1640416.667,9003,8827,0.0,9003,,,
-2251,"NAD83 / Michigan North (ft)",9002,4269,15333,9802,8821,44.47,9110,8822,-87.0,9110,8823,47.05,9110,8824,45.29,9110,8826,26246719.16,9002,8827,0.0,9002,,,
-2252,"NAD83 / Michigan Central (ft)",9002,4269,15334,9802,8821,43.19,9110,8822,-84.22,9110,8823,45.42,9110,8824,44.11,9110,8826,19685039.37,9002,8827,0.0,9002,,,
-2253,"NAD83 / Michigan South (ft)",9002,4269,15335,9802,8821,41.3,9110,8822,-84.22,9110,8823,43.4,9110,8824,42.06,9110,8826,13123359.58,9002,8827,0.0,9002,,,
-2254,"NAD83 / Mississippi East (ftUS)",9003,4269,15336,9807,8801,29.3,9110,8802,-88.5,9110,8805,0.99995,9201,8806,984250.0,9003,8807,0.0,9003,,,,,,
-2255,"NAD83 / Mississippi West (ftUS)",9003,4269,15337,9807,8801,29.3,9110,8802,-90.2,9110,8805,0.99995,9201,8806,2296583.333,9003,8807,0.0,9003,,,,,,
-2256,"NAD83 / Montana (ft)",9002,4269,15338,9802,8821,44.15,9110,8822,-109.3,9110,8823,49.0,9110,8824,45.0,9110,8826,1968503.937,9002,8827,0.0,9002,,,
-2257,"NAD83 / New Mexico East (ftUS)",9003,4269,15339,9807,8801,31.0,9110,8802,-104.2,9110,8805,0.999909091,9201,8806,541337.5,9003,8807,0.0,9003,,,,,,
-2258,"NAD83 / New Mexico Central (ftUS)",9003,4269,15340,9807,8801,31.0,9110,8802,-106.15,9110,8805,0.9999,9201,8806,1640416.667,9003,8807,0.0,9003,,,,,,
-2259,"NAD83 / New Mexico West (ftUS)",9003,4269,15341,9807,8801,31.0,9110,8802,-107.5,9110,8805,0.999916667,9201,8806,2723091.667,9003,8807,0.0,9003,,,,,,
-2260,"NAD83 / New York East (ftUS)",9003,4269,15342,9807,8801,38.5,9110,8802,-74.3,9110,8805,0.9999,9201,8806,492125.0,9003,8807,0.0,9003,,,,,,
-2261,"NAD83 / New York Central (ftUS)",9003,4269,15343,9807,8801,40.0,9110,8802,-76.35,9110,8805,0.9999375,9201,8806,820208.333,9003,8807,0.0,9003,,,,,,
-2262,"NAD83 / New York West (ftUS)",9003,4269,15344,9807,8801,40.0,9110,8802,-78.35,9110,8805,0.9999375,9201,8806,1148291.667,9003,8807,0.0,9003,,,,,,
-2263,"NAD83 / New York Long Island (ftUS)",9003,4269,15345,9802,8821,40.1,9110,8822,-74.0,9110,8823,41.02,9110,8824,40.4,9110,8826,984250.0,9003,8827,0.0,9003,,,
-2264,"NAD83 / North Carolina (ftUS)",9003,4269,15346,9802,8821,33.45,9110,8822,-79.0,9110,8823,36.1,9110,8824,34.2,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-2265,"NAD83 / North Dakota North (ft)",9002,4269,15347,9802,8821,47.0,9110,8822,-100.3,9110,8823,48.44,9110,8824,47.26,9110,8826,1968503.937,9002,8827,0.0,9002,,,
-2266,"NAD83 / North Dakota South (ft)",9002,4269,15348,9802,8821,45.4,9110,8822,-100.3,9110,8823,47.29,9110,8824,46.11,9110,8826,1968503.937,9002,8827,0.0,9002,,,
-2267,"NAD83 / Oklahoma North (ftUS)",9003,4269,15349,9802,8821,35.0,9110,8822,-98.0,9110,8823,36.46,9110,8824,35.34,9110,8826,1968500.0,9003,8827,0.0,9003,,,
-2268,"NAD83 / Oklahoma South (ftUS)",9003,4269,15350,9802,8821,33.2,9110,8822,-98.0,9110,8823,35.14,9110,8824,33.56,9110,8826,1968500.0,9003,8827,0.0,9003,,,
-2269,"NAD83 / Oregon North (ft)",9002,4269,15351,9802,8821,43.4,9110,8822,-120.3,9110,8823,46.0,9110,8824,44.2,9110,8826,8202099.738,9002,8827,0.0,9002,,,
-2270,"NAD83 / Oregon South (ft)",9002,4269,15352,9802,8821,41.4,9110,8822,-120.3,9110,8823,44.0,9110,8824,42.2,9110,8826,4921259.843,9002,8827,0.0,9002,,,
-2271,"NAD83 / Pennsylvania North (ftUS)",9003,4269,15353,9802,8821,40.1,9110,8822,-77.45,9110,8823,41.57,9110,8824,40.53,9110,8826,1968500.0,9003,8827,0.0,9003,,,
-2272,"NAD83 / Pennsylvania South (ftUS)",9003,4269,15354,9802,8821,39.2,9110,8822,-77.45,9110,8823,40.58,9110,8824,39.56,9110,8826,1968500.0,9003,8827,0.0,9003,,,
-2273,"NAD83 / South Carolina (ft)",9002,4269,15355,9802,8821,31.5,9110,8822,-81.0,9110,8823,34.5,9110,8824,32.3,9110,8826,2000000.0,9002,8827,0.0,9002,,,
-2274,"NAD83 / Tennessee (ftUS)",9003,4269,15356,9802,8821,34.2,9110,8822,-86.0,9110,8823,36.25,9110,8824,35.15,9110,8826,1968500.0,9003,8827,0.0,9003,,,
-2275,"NAD83 / Texas North (ftUS)",9003,4269,15357,9802,8821,34.0,9110,8822,-101.3,9110,8823,36.11,9110,8824,34.39,9110,8826,656166.667,9003,8827,3280833.333,9003,,,
-2276,"NAD83 / Texas North Central (ftUS)",9003,4269,15358,9802,8821,31.4,9110,8822,-98.3,9110,8823,33.58,9110,8824,32.08,9110,8826,1968500.0,9003,8827,6561666.667,9003,,,
-2277,"NAD83 / Texas Central (ftUS)",9003,4269,15359,9802,8821,29.4,9110,8822,-100.2,9110,8823,31.53,9110,8824,30.07,9110,8826,2296583.333,9003,8827,9842500.0,9003,,,
-2278,"NAD83 / Texas South Central (ftUS)",9003,4269,15360,9802,8821,27.5,9110,8822,-99.0,9110,8823,30.17,9110,8824,28.23,9110,8826,1968500.0,9003,8827,13123333.333,9003,,,
-2279,"NAD83 / Texas South (ftUS)",9003,4269,15361,9802,8821,25.4,9110,8822,-98.3,9110,8823,27.5,9110,8824,26.1,9110,8826,984250.0,9003,8827,16404166.667,9003,,,
-2280,"NAD83 / Utah North (ft)",9002,4269,15362,9802,8821,40.2,9110,8822,-111.3,9110,8823,41.47,9110,8824,40.43,9110,8826,1640419.948,9002,8827,3280839.895,9002,,,
-2281,"NAD83 / Utah Central (ft)",9002,4269,15363,9802,8821,38.2,9110,8822,-111.3,9110,8823,40.39,9110,8824,39.01,9110,8826,1640419.948,9002,8827,6561679.79,9002,,,
-2282,"NAD83 / Utah South (ft)",9002,4269,15364,9802,8821,36.4,9110,8822,-111.3,9110,8823,38.21,9110,8824,37.13,9110,8826,1640419.948,9002,8827,9842519.685,9002,,,
-2283,"NAD83 / Virginia North (ftUS)",9003,4269,15365,9802,8821,37.4,9110,8822,-78.3,9110,8823,39.12,9110,8824,38.02,9110,8826,11482916.667,9003,8827,6561666.667,9003,,,
-2284,"NAD83 / Virginia South (ftUS)",9003,4269,15366,9802,8821,36.2,9110,8822,-78.3,9110,8823,37.58,9110,8824,36.46,9110,8826,11482916.667,9003,8827,3280833.333,9003,,,
-2285,"NAD83 / Washington North (ftUS)",9003,4269,15367,9802,8821,47.0,9110,8822,-120.5,9110,8823,48.44,9110,8824,47.3,9110,8826,1640416.667,9003,8827,0.0,9003,,,
-2286,"NAD83 / Washington South (ftUS)",9003,4269,15368,9802,8821,45.2,9110,8822,-120.3,9110,8823,47.2,9110,8824,45.5,9110,8826,1640416.667,9003,8827,0.0,9003,,,
-2287,"NAD83 / Wisconsin North (ftUS)",9003,4269,15369,9802,8821,45.1,9110,8822,-90.0,9110,8823,46.46,9110,8824,45.34,9110,8826,1968500.0,9003,8827,0.0,9003,,,
-2288,"NAD83 / Wisconsin Central (ftUS)",9003,4269,15370,9802,8821,43.5,9110,8822,-90.0,9110,8823,45.3,9110,8824,44.15,9110,8826,1968500.0,9003,8827,0.0,9003,,,
-2289,"NAD83 / Wisconsin South (ftUS)",9003,4269,15371,9802,8821,42.0,9110,8822,-90.0,9110,8823,44.04,9110,8824,42.44,9110,8826,1968500.0,9003,8827,0.0,9003,,,
-2290,"ATS77 / Prince Edward Isl. Stereographic (ATS77)",9001,4122,19933,9809,8801,47.15,9110,8802,-63.0,9110,8805,0.999912,9201,8806,700000.0,9001,8807,400000.0,9001,,,,,,
-2291,"NAD83(CSRS98) / Prince Edward Isl. Stereographic (NAD83)",9001,4122,19960,9809,8801,47.15,9110,8802,-63.0,9110,8805,0.999912,9201,8806,400000.0,9001,8807,800000.0,9001,,,,,,
-2292,"NAD83(CSRS98) / Prince Edward Isl. Stereographic (NAD83)",9001,4140,19960,9809,8801,47.15,9110,8802,-63.0,9110,8805,0.999912,9201,8806,400000.0,9001,8807,800000.0,9001,,,,,,
-2294,"ATS77 / MTM Nova Scotia zone 4",9001,4122,17794,9807,8801,0.0,9110,8802,-61.3,9110,8805,0.9999,9201,8806,4500000.0,9001,8807,0.0,9001,,,,,,
-2295,"ATS77 / MTM Nova Scotia zone 5",9001,4122,17795,9807,8801,0.0,9110,8802,-64.3,9110,8805,0.9999,9201,8806,5500000.0,9001,8807,0.0,9001,,,,,,
-2296,"Ammassalik 1958 / Greenland zone 7 east",9001,4196,18427,9826,8801,64.3,9110,8802,-40.0,9110,8805,1.0,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-2297,"Qornoq 1927 / Greenland zone 1 east",9001,4194,18421,9826,8801,82.3,9110,8802,-40.0,9110,8805,1.0,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-2298,"Qornoq 1927 / Greenland zone 2 east",9001,4194,18422,9826,8801,79.3,9110,8802,-24.0,9110,8805,1.0,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-2299,"Qornoq 1927 / Greenland zone 2 west",9001,4194,18432,9826,8801,79.3,9110,8802,-64.0,9110,8805,1.0,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-2300,"Qornoq 1927 / Greenland zone 3 east",9001,4194,18423,9826,8801,76.3,9110,8802,-20.0,9110,8805,1.0,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-2301,"Qornoq 1927 / Greenland zone 3 west",9001,4194,18433,9826,8801,76.3,9110,8802,-64.0,9110,8805,1.0,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-2302,"Qornoq 1927 / Greenland zone 4 east",9001,4194,18424,9826,8801,73.3,9110,8802,-24.0,9110,8805,1.0,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-2303,"Qornoq 1927 / Greenland zone 4 west",9001,4194,18434,9826,8801,73.3,9110,8802,-52.0,9110,8805,1.0,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-2304,"Qornoq 1927 / Greenland zone 5 west",9001,4194,18435,9826,8801,70.3,9110,8802,-52.0,9110,8805,1.0,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-2305,"Qornoq 1927 / Greenland zone 6 west",9001,4194,18436,9826,8801,67.3,9110,8802,-52.0,9110,8805,1.0,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-2306,"Qornoq 1927 / Greenland zone 7 west",9001,4194,18437,9826,8801,64.3,9110,8802,-52.0,9110,8805,1.0,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-2307,"Qornoq 1927 / Greenland zone 8 east",9001,4194,18428,9826,8801,61.3,9110,8802,-48.0,9110,8805,1.0,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-2308,"Batavia / TM 109 SE",9001,4211,16709,9807,8801,0.0,9102,8802,109.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-2309,"WGS 84 / TM 116 SE",9001,4326,16716,9807,8801,0.0,9102,8802,116.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-2310,"WGS 84 / TM 132 SE",9001,4326,16732,9807,8801,0.0,9102,8802,132.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-2311,"WGS 84 / TM 6 NE",9001,4326,16406,9807,8801,0.0,9102,8802,6.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2312,"Garoua / UTM zone 33N",9001,4197,16033,9807,8801,0.0,9102,8802,15.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2313,"Kousseri / UTM zone 33N",9001,4198,16033,9807,8801,0.0,9102,8802,15.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2314,"Trinidad 1903 / Trinidad Grid (ftCla)",9005,4302,19975,9806,8801,10.263,9110,8802,-61.2,9110,8806,283800.0,9005,8807,214500.0,9005,,,,,,,,,
-2315,"Campo Inchauspe / UTM zone 19S",9001,4221,16119,9807,8801,0.0,9102,8802,-69.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-2316,"Campo Inchauspe / UTM zone 20S",9001,4221,16120,9807,8801,0.0,9102,8802,-63.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-2317,"PSAD56 / ICN Regional",9001,4248,19976,9802,8821,6.0,9102,8822,-66.0,9102,8823,9.0,9102,8824,3.0,9102,8826,1000000.0,9001,8827,1000000.0,9001,,,
-2318,"Ain el Abd / Aramco Lambert",9001,4204,19977,9802,8821,25.0522236,9110,8822,48.0,9102,8823,17.0,9102,8824,33.0,9102,8826,0.0,9001,8827,0.0,9001,,,
-2319,"ED50 / TM27",9001,4230,16369,9807,8801,0.0,9102,8802,27.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2320,"ED50 / TM30",9001,4230,16370,9807,8801,0.0,9102,8802,30.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2321,"ED50 / TM33",9001,4230,16371,9807,8801,0.0,9102,8802,33.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2322,"ED50 / TM36",9001,4230,16372,9807,8801,0.0,9102,8802,36.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2323,"ED50 / TM39",9001,4230,16373,9807,8801,0.0,9102,8802,39.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2324,"ED50 / TM42",9001,4230,16374,9807,8801,0.0,9102,8802,42.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2325,"ED50 / TM45",9001,4230,16375,9807,8801,0.0,9102,8802,45.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2326,Hong Kong 1980 Grid System,9001,4611,19978,9807,8801,22.184368,9110,8802,114.10428,9110,8805,1.0,9201,8806,836694.05,9001,8807,819069.8,9001,,,,,,
-2327,"Xian 1980 / Gauss-Kruger zone 13",9001,4610,16213,9807,8801,0.0,9102,8802,75.0,9102,8805,1.0,9201,8806,13500000.0,9001,8807,0.0,9001,,,,,,
-2328,"Xian 1980 / Gauss-Kruger zone 14",9001,4610,16214,9807,8801,0.0,9102,8802,81.0,9102,8805,1.0,9201,8806,14500000.0,9001,8807,0.0,9001,,,,,,
-2329,"Xian 1980 / Gauss-Kruger zone 15",9001,4610,16215,9807,8801,0.0,9102,8802,87.0,9102,8805,1.0,9201,8806,15500000.0,9001,8807,0.0,9001,,,,,,
-2330,"Xian 1980 / Gauss-Kruger zone 16",9001,4610,16216,9807,8801,0.0,9102,8802,93.0,9102,8805,1.0,9201,8806,16500000.0,9001,8807,0.0,9001,,,,,,
-2331,"Xian 1980 / Gauss-Kruger zone 17",9001,4610,16217,9807,8801,0.0,9102,8802,99.0,9102,8805,1.0,9201,8806,17500000.0,9001,8807,0.0,9001,,,,,,
-2332,"Xian 1980 / Gauss-Kruger zone 18",9001,4610,16218,9807,8801,0.0,9102,8802,105.0,9102,8805,1.0,9201,8806,18500000.0,9001,8807,0.0,9001,,,,,,
-2333,"Xian 1980 / Gauss-Kruger zone 19",9001,4610,16219,9807,8801,0.0,9102,8802,111.0,9102,8805,1.0,9201,8806,19500000.0,9001,8807,0.0,9001,,,,,,
-2334,"Xian 1980 / Gauss-Kruger zone 20",9001,4610,16220,9807,8801,0.0,9102,8802,117.0,9102,8805,1.0,9201,8806,20500000.0,9001,8807,0.0,9001,,,,,,
-2335,"Xian 1980 / Gauss-Kruger zone 21",9001,4610,16221,9807,8801,0.0,9102,8802,123.0,9102,8805,1.0,9201,8806,21500000.0,9001,8807,0.0,9001,,,,,,
-2336,"Xian 1980 / Gauss-Kruger zone 22",9001,4610,16222,9807,8801,0.0,9102,8802,129.0,9102,8805,1.0,9201,8806,22500000.0,9001,8807,0.0,9001,,,,,,
-2337,"Xian 1980 / Gauss-Kruger zone 23",9001,4610,16223,9807,8801,0.0,9102,8802,135.0,9102,8805,1.0,9201,8806,23500000.0,9001,8807,0.0,9001,,,,,,
-2338,"Xian 1980 / Gauss-Kruger CM 75E",9001,4610,16313,9807,8801,0.0,9102,8802,75.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2339,"Xian 1980 / Gauss-Kruger CM 81E",9001,4610,16314,9807,8801,0.0,9102,8802,81.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2340,"Xian 1980 / Gauss-Kruger CM 87E",9001,4610,16315,9807,8801,0.0,9102,8802,87.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2341,"Xian 1980 / Gauss-Kruger CM 93E",9001,4610,16316,9807,8801,0.0,9102,8802,93.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2342,"Xian 1980 / Gauss-Kruger CM 99E",9001,4610,16317,9807,8801,0.0,9102,8802,99.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2343,"Xian 1980 / Gauss-Kruger CM 105E",9001,4610,16318,9807,8801,0.0,9102,8802,105.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2344,"Xian 1980 / Gauss-Kruger CM 111E",9001,4610,16319,9807,8801,0.0,9102,8802,111.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2345,"Xian 1980 / Gauss-Kruger CM 117E",9001,4610,16320,9807,8801,0.0,9102,8802,117.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2346,"Xian 1980 / Gauss-Kruger CM 123E",9001,4610,16321,9807,8801,0.0,9102,8802,123.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2347,"Xian 1980 / Gauss-Kruger CM 129E",9001,4610,16322,9807,8801,0.0,9102,8802,129.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2348,"Xian 1980 / Gauss-Kruger CM 135E",9001,4610,16323,9807,8801,0.0,9102,8802,135.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2349,"Xian 1980 / 3-degree Gauss-Kruger zone 25",9001,4610,16285,9807,8801,0.0,9102,8802,75.0,9102,8805,1.0,9201,8806,25500000.0,9001,8807,0.0,9001,,,,,,
-2350,"Xian 1980 / 3-degree Gauss-Kruger zone 26",9001,4610,16286,9807,8801,0.0,9102,8802,78.0,9102,8805,1.0,9201,8806,26500000.0,9001,8807,0.0,9001,,,,,,
-2351,"Xian 1980 / 3-degree Gauss-Kruger zone 27",9001,4610,16287,9807,8801,0.0,9102,8802,81.0,9102,8805,1.0,9201,8806,27500000.0,9001,8807,0.0,9001,,,,,,
-2352,"Xian 1980 / 3-degree Gauss-Kruger zone 28",9001,4610,16288,9807,8801,0.0,9102,8802,84.0,9102,8805,1.0,9201,8806,28500000.0,9001,8807,0.0,9001,,,,,,
-2353,"Xian 1980 / 3-degree Gauss-Kruger zone 29",9001,4610,16289,9807,8801,0.0,9102,8802,87.0,9102,8805,1.0,9201,8806,29500000.0,9001,8807,0.0,9001,,,,,,
-2354,"Xian 1980 / 3-degree Gauss-Kruger zone 30",9001,4610,16290,9807,8801,0.0,9102,8802,90.0,9102,8805,1.0,9201,8806,30500000.0,9001,8807,0.0,9001,,,,,,
-2355,"Xian 1980 / 3-degree Gauss-Kruger zone 31",9001,4610,16291,9807,8801,0.0,9102,8802,93.0,9102,8805,1.0,9201,8806,31500000.0,9001,8807,0.0,9001,,,,,,
-2356,"Xian 1980 / 3-degree Gauss-Kruger zone 32",9001,4610,16292,9807,8801,0.0,9102,8802,96.0,9102,8805,1.0,9201,8806,32500000.0,9001,8807,0.0,9001,,,,,,
-2357,"Xian 1980 / 3-degree Gauss-Kruger zone 33",9001,4610,16293,9807,8801,0.0,9102,8802,99.0,9102,8805,1.0,9201,8806,33500000.0,9001,8807,0.0,9001,,,,,,
-2358,"Xian 1980 / 3-degree Gauss-Kruger zone 34",9001,4610,16294,9807,8801,0.0,9102,8802,102.0,9102,8805,1.0,9201,8806,34500000.0,9001,8807,0.0,9001,,,,,,
-2359,"Xian 1980 / 3-degree Gauss-Kruger zone 35",9001,4610,16295,9807,8801,0.0,9102,8802,105.0,9102,8805,1.0,9201,8806,35500000.0,9001,8807,0.0,9001,,,,,,
-2360,"Xian 1980 / 3-degree Gauss-Kruger zone 36",9001,4610,16296,9807,8801,0.0,9102,8802,108.0,9102,8805,1.0,9201,8806,36500000.0,9001,8807,0.0,9001,,,,,,
-2361,"Xian 1980 / 3-degree Gauss-Kruger zone 37",9001,4610,16297,9807,8801,0.0,9102,8802,111.0,9102,8805,1.0,9201,8806,37500000.0,9001,8807,0.0,9001,,,,,,
-2362,"Xian 1980 / 3-degree Gauss-Kruger zone 38",9001,4610,16298,9807,8801,0.0,9102,8802,114.0,9102,8805,1.0,9201,8806,38500000.0,9001,8807,0.0,9001,,,,,,
-2363,"Xian 1980 / 3-degree Gauss-Kruger zone 39",9001,4610,16299,9807,8801,0.0,9102,8802,117.0,9102,8805,1.0,9201,8806,39500000.0,9001,8807,0.0,9001,,,,,,
-2364,"Xian 1980 / 3-degree Gauss-Kruger zone 40",9001,4610,16070,9807,8801,0.0,9102,8802,120.0,9102,8805,1.0,9201,8806,40500000.0,9001,8807,0.0,9001,,,,,,
-2365,"Xian 1980 / 3-degree Gauss-Kruger zone 41",9001,4610,16071,9807,8801,0.0,9102,8802,123.0,9102,8805,1.0,9201,8806,41500000.0,9001,8807,0.0,9001,,,,,,
-2366,"Xian 1980 / 3-degree Gauss-Kruger zone 42",9001,4610,16072,9807,8801,0.0,9102,8802,126.0,9102,8805,1.0,9201,8806,42500000.0,9001,8807,0.0,9001,,,,,,
-2367,"Xian 1980 / 3-degree Gauss-Kruger zone 43",9001,4610,16073,9807,8801,0.0,9102,8802,129.0,9102,8805,1.0,9201,8806,43500000.0,9001,8807,0.0,9001,,,,,,
-2368,"Xian 1980 / 3-degree Gauss-Kruger zone 44",9001,4610,16074,9807,8801,0.0,9102,8802,132.0,9102,8805,1.0,9201,8806,44500000.0,9001,8807,0.0,9001,,,,,,
-2369,"Xian 1980 / 3-degree Gauss-Kruger zone 45",9001,4610,16075,9807,8801,0.0,9102,8802,135.0,9102,8805,1.0,9201,8806,45500000.0,9001,8807,0.0,9001,,,,,,
-2370,"Xian 1980 / 3-degree Gauss-Kruger CM 75E",9001,4610,16385,9807,8801,0.0,9102,8802,75.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2371,"Xian 1980 / 3-degree Gauss-Kruger CM 78E",9001,4610,16386,9807,8801,0.0,9102,8802,78.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2372,"Xian 1980 / 3-degree Gauss-Kruger CM 81E",9001,4610,16387,9807,8801,0.0,9102,8802,81.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2373,"Xian 1980 / 3-degree Gauss-Kruger CM 84E",9001,4610,16388,9807,8801,0.0,9102,8802,84.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2374,"Xian 1980 / 3-degree Gauss-Kruger CM 87E",9001,4610,16389,9807,8801,0.0,9102,8802,87.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2375,"Xian 1980 / 3-degree Gauss-Kruger CM 90E",9001,4610,16390,9807,8801,0.0,9102,8802,90.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2376,"Xian 1980 / 3-degree Gauss-Kruger CM 93E",9001,4610,16391,9807,8801,0.0,9102,8802,93.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2377,"Xian 1980 / 3-degree Gauss-Kruger CM 96E",9001,4610,16392,9807,8801,0.0,9102,8802,96.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2378,"Xian 1980 / 3-degree Gauss-Kruger CM 99E",9001,4610,16393,9807,8801,0.0,9102,8802,99.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2379,"Xian 1980 / 3-degree Gauss-Kruger CM 102E",9001,4610,16394,9807,8801,0.0,9102,8802,102.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2380,"Xian 1980 / 3-degree Gauss-Kruger CM 105E",9001,4610,16395,9807,8801,0.0,9102,8802,105.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2381,"Xian 1980 / 3-degree Gauss-Kruger CM 108E",9001,4610,16396,9807,8801,0.0,9102,8802,108.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2382,"Xian 1980 / 3-degree Gauss-Kruger CM 111E",9001,4610,16397,9807,8801,0.0,9102,8802,111.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2383,"Xian 1980 / 3-degree Gauss-Kruger CM 114E",9001,4610,16398,9807,8801,0.0,9102,8802,114.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2384,"Xian 1980 / 3-degree Gauss-Kruger CM 117E",9001,4610,16399,9807,8801,0.0,9102,8802,117.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2385,"Xian 1980 / 3-degree Gauss-Kruger CM 120E",9001,4610,16170,9807,8801,0.0,9102,8802,120.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2386,"Xian 1980 / 3-degree Gauss-Kruger CM 123E",9001,4610,16171,9807,8801,0.0,9102,8802,123.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2387,"Xian 1980 / 3-degree Gauss-Kruger CM 126E",9001,4610,16172,9807,8801,0.0,9102,8802,126.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2388,"Xian 1980 / 3-degree Gauss-Kruger CM 129E",9001,4610,16173,9807,8801,0.0,9102,8802,129.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2389,"Xian 1980 / 3-degree Gauss-Kruger CM 132E",9001,4610,16174,9807,8801,0.0,9102,8802,132.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2390,"Xian 1980 / 3-degree Gauss-Kruger CM 135E",9001,4610,16175,9807,8801,0.0,9102,8802,135.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2391,"KKJ / Finland zone 1",9001,4123,18191,9807,8801,0.0,9102,8802,21.0,9102,8805,1.0,9201,8806,1500000.0,9001,8807,0.0,9001,,,,,,
-2392,"KKJ / Finland zone 2",9001,4123,18192,9807,8801,0.0,9102,8802,24.0,9102,8805,1.0,9201,8806,2500000.0,9001,8807,0.0,9001,,,,,,
-2393,"KKJ / Finland Uniform Coordinate System",9001,4123,18193,9807,8801,0.0,9102,8802,27.0,9102,8805,1.0,9201,8806,3500000.0,9001,8807,0.0,9001,,,,,,
-2394,"KKJ / Finland zone 4",9001,4123,18194,9807,8801,0.0,9102,8802,30.0,9102,8805,1.0,9201,8806,4500000.0,9001,8807,0.0,9001,,,,,,
-2395,"South Yemen / Gauss-Kruger zone 8",9001,4164,16208,9807,8801,0.0,9102,8802,45.0,9102,8805,1.0,9201,8806,8500000.0,9001,8807,0.0,9001,,,,,,
-2396,"South Yemen / Gauss-Kruger zone 9",9001,4164,16209,9807,8801,0.0,9102,8802,51.0,9102,8805,1.0,9201,8806,9500000.0,9001,8807,0.0,9001,,,,,,
-2397,"Pulkovo 1942(83) / Gauss-Kruger zone 3",9001,4178,16263,9807,8801,0.0,9102,8802,9.0,9102,8805,1.0,9201,8806,3500000.0,9001,8807,0.0,9001,,,,,,
-2398,"Pulkovo 1942(83) / Gauss-Kruger zone 4",9001,4178,16264,9807,8801,0.0,9102,8802,12.0,9102,8805,1.0,9201,8806,4500000.0,9001,8807,0.0,9001,,,,,,
-2399,"Pulkovo 1942(83) / Gauss-Kruger zone 5",9001,4178,16265,9807,8801,0.0,9102,8802,15.0,9102,8805,1.0,9201,8806,5500000.0,9001,8807,0.0,9001,,,,,,
-2400,RT90 2.5 gon W,9001,4124,19929,9807,8801,0.0,9110,8802,15.48298,9110,8805,1.0,9201,8806,1500000.0,9001,8807,0.0,9001,,,,,,
-2401,"Beijing 1954 / 3-degree Gauss-Kruger zone 25",9001,4214,16285,9807,8801,0.0,9102,8802,75.0,9102,8805,1.0,9201,8806,25500000.0,9001,8807,0.0,9001,,,,,,
-2402,"Beijing 1954 / 3-degree Gauss-Kruger zone 26",9001,4214,16286,9807,8801,0.0,9102,8802,78.0,9102,8805,1.0,9201,8806,26500000.0,9001,8807,0.0,9001,,,,,,
-2403,"Beijing 1954 / 3-degree Gauss-Kruger zone 27",9001,4214,16287,9807,8801,0.0,9102,8802,81.0,9102,8805,1.0,9201,8806,27500000.0,9001,8807,0.0,9001,,,,,,
-2404,"Beijing 1954 / 3-degree Gauss-Kruger zone 28",9001,4214,16288,9807,8801,0.0,9102,8802,84.0,9102,8805,1.0,9201,8806,28500000.0,9001,8807,0.0,9001,,,,,,
-2405,"Beijing 1954 / 3-degree Gauss-Kruger zone 29",9001,4214,16289,9807,8801,0.0,9102,8802,87.0,9102,8805,1.0,9201,8806,29500000.0,9001,8807,0.0,9001,,,,,,
-2406,"Beijing 1954 / 3-degree Gauss-Kruger zone 30",9001,4214,16290,9807,8801,0.0,9102,8802,90.0,9102,8805,1.0,9201,8806,30500000.0,9001,8807,0.0,9001,,,,,,
-2407,"Beijing 1954 / 3-degree Gauss-Kruger zone 31",9001,4214,16291,9807,8801,0.0,9102,8802,93.0,9102,8805,1.0,9201,8806,31500000.0,9001,8807,0.0,9001,,,,,,
-2408,"Beijing 1954 / 3-degree Gauss-Kruger zone 32",9001,4214,16292,9807,8801,0.0,9102,8802,96.0,9102,8805,1.0,9201,8806,32500000.0,9001,8807,0.0,9001,,,,,,
-2409,"Beijing 1954 / 3-degree Gauss-Kruger zone 33",9001,4214,16293,9807,8801,0.0,9102,8802,99.0,9102,8805,1.0,9201,8806,33500000.0,9001,8807,0.0,9001,,,,,,
-2410,"Beijing 1954 / 3-degree Gauss-Kruger zone 34",9001,4214,16294,9807,8801,0.0,9102,8802,102.0,9102,8805,1.0,9201,8806,34500000.0,9001,8807,0.0,9001,,,,,,
-2411,"Beijing 1954 / 3-degree Gauss-Kruger zone 35",9001,4214,16295,9807,8801,0.0,9102,8802,105.0,9102,8805,1.0,9201,8806,35500000.0,9001,8807,0.0,9001,,,,,,
-2412,"Beijing 1954 / 3-degree Gauss-Kruger zone 36",9001,4214,16296,9807,8801,0.0,9102,8802,108.0,9102,8805,1.0,9201,8806,36500000.0,9001,8807,0.0,9001,,,,,,
-2413,"Beijing 1954 / 3-degree Gauss-Kruger zone 37",9001,4214,16297,9807,8801,0.0,9102,8802,111.0,9102,8805,1.0,9201,8806,37500000.0,9001,8807,0.0,9001,,,,,,
-2414,"Beijing 1954 / 3-degree Gauss-Kruger zone 38",9001,4214,16298,9807,8801,0.0,9102,8802,114.0,9102,8805,1.0,9201,8806,38500000.0,9001,8807,0.0,9001,,,,,,
-2415,"Beijing 1954 / 3-degree Gauss-Kruger zone 39",9001,4214,16299,9807,8801,0.0,9102,8802,117.0,9102,8805,1.0,9201,8806,39500000.0,9001,8807,0.0,9001,,,,,,
-2416,"Beijing 1954 / 3-degree Gauss-Kruger zone 40",9001,4214,16070,9807,8801,0.0,9102,8802,120.0,9102,8805,1.0,9201,8806,40500000.0,9001,8807,0.0,9001,,,,,,
-2417,"Beijing 1954 / 3-degree Gauss-Kruger zone 41",9001,4214,16071,9807,8801,0.0,9102,8802,123.0,9102,8805,1.0,9201,8806,41500000.0,9001,8807,0.0,9001,,,,,,
-2418,"Beijing 1954 / 3-degree Gauss-Kruger zone 42",9001,4214,16072,9807,8801,0.0,9102,8802,126.0,9102,8805,1.0,9201,8806,42500000.0,9001,8807,0.0,9001,,,,,,
-2419,"Beijing 1954 / 3-degree Gauss-Kruger zone 43",9001,4214,16073,9807,8801,0.0,9102,8802,129.0,9102,8805,1.0,9201,8806,43500000.0,9001,8807,0.0,9001,,,,,,
-2420,"Beijing 1954 / 3-degree Gauss-Kruger zone 44",9001,4214,16074,9807,8801,0.0,9102,8802,132.0,9102,8805,1.0,9201,8806,44500000.0,9001,8807,0.0,9001,,,,,,
-2421,"Beijing 1954 / 3-degree Gauss-Kruger zone 45",9001,4214,16075,9807,8801,0.0,9102,8802,135.0,9102,8805,1.0,9201,8806,45500000.0,9001,8807,0.0,9001,,,,,,
-2422,"Beijing 1954 / 3-degree Gauss-Kruger CM 75E",9001,4214,16385,9807,8801,0.0,9102,8802,75.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2423,"Beijing 1954 / 3-degree Gauss-Kruger CM 78E",9001,4214,16386,9807,8801,0.0,9102,8802,78.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2424,"Beijing 1954 / 3-degree Gauss-Kruger CM 81E",9001,4214,16387,9807,8801,0.0,9102,8802,81.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2425,"Beijing 1954 / 3-degree Gauss-Kruger CM 84E",9001,4214,16388,9807,8801,0.0,9102,8802,84.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2426,"Beijing 1954 / 3-degree Gauss-Kruger CM 87E",9001,4214,16389,9807,8801,0.0,9102,8802,87.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2427,"Beijing 1954 / 3-degree Gauss-Kruger CM 90E",9001,4214,16390,9807,8801,0.0,9102,8802,90.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2428,"Beijing 1954 / 3-degree Gauss-Kruger CM 93E",9001,4214,16391,9807,8801,0.0,9102,8802,93.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2429,"Beijing 1954 / 3-degree Gauss-Kruger CM 96E",9001,4214,16392,9807,8801,0.0,9102,8802,96.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2430,"Beijing 1954 / 3-degree Gauss-Kruger CM 99E",9001,4214,16393,9807,8801,0.0,9102,8802,99.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2431,"Beijing 1954 / 3-degree Gauss-Kruger CM 102E",9001,4214,16394,9807,8801,0.0,9102,8802,102.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2432,"Beijing 1954 / 3-degree Gauss-Kruger CM 105E",9001,4214,16395,9807,8801,0.0,9102,8802,105.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2433,"Beijing 1954 / 3-degree Gauss-Kruger CM 108E",9001,4214,16396,9807,8801,0.0,9102,8802,108.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2434,"Beijing 1954 / 3-degree Gauss-Kruger CM 111E",9001,4214,16397,9807,8801,0.0,9102,8802,111.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2435,"Beijing 1954 / 3-degree Gauss-Kruger CM 114E",9001,4214,16398,9807,8801,0.0,9102,8802,114.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2436,"Beijing 1954 / 3-degree Gauss-Kruger CM 117E",9001,4214,16399,9807,8801,0.0,9102,8802,117.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2437,"Beijing 1954 / 3-degree Gauss-Kruger CM 120E",9001,4214,16170,9807,8801,0.0,9102,8802,120.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2438,"Beijing 1954 / 3-degree Gauss-Kruger CM 123E",9001,4214,16171,9807,8801,0.0,9102,8802,123.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2439,"Beijing 1954 / 3-degree Gauss-Kruger CM 126E",9001,4214,16172,9807,8801,0.0,9102,8802,126.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2440,"Beijing 1954 / 3-degree Gauss-Kruger CM 129E",9001,4214,16173,9807,8801,0.0,9102,8802,129.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2441,"Beijing 1954 / 3-degree Gauss-Kruger CM 132E",9001,4214,16174,9807,8801,0.0,9102,8802,132.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2442,"Beijing 1954 / 3-degree Gauss-Kruger CM 135E",9001,4214,16175,9807,8801,0.0,9102,8802,135.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2443,"JGD2000 / Japan Plane Rectangular CS I",9001,4612,17801,9807,8801,33.0,9110,8802,129.3,9110,8805,0.9999,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-2444,"JGD2000 / Japan Plane Rectangular CS II",9001,4612,17802,9807,8801,33.0,9110,8802,131.0,9110,8805,0.9999,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-2445,"JGD2000 / Japan Plane Rectangular CS III",9001,4612,17803,9807,8801,36.0,9110,8802,132.1,9110,8805,0.9999,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-2446,"JGD2000 / Japan Plane Rectangular CS IV",9001,4612,17804,9807,8801,33.0,9110,8802,133.3,9110,8805,0.9999,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-2447,"JGD2000 / Japan Plane Rectangular CS V",9001,4612,17805,9807,8801,36.0,9110,8802,134.2,9110,8805,0.9999,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-2448,"JGD2000 / Japan Plane Rectangular CS VI",9001,4612,17806,9807,8801,36.0,9110,8802,136.0,9110,8805,0.9999,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-2449,"JGD2000 / Japan Plane Rectangular CS VII",9001,4612,17807,9807,8801,36.0,9110,8802,137.1,9110,8805,0.9999,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-2450,"JGD2000 / Japan Plane Rectangular CS VIII",9001,4612,17808,9807,8801,36.0,9110,8802,138.3,9110,8805,0.9999,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-2451,"JGD2000 / Japan Plane Rectangular CS IX",9001,4612,17809,9807,8801,36.0,9110,8802,139.5,9110,8805,0.9999,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-2452,"JGD2000 / Japan Plane Rectangular CS X",9001,4612,17810,9807,8801,40.0,9110,8802,140.5,9110,8805,0.9999,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-2453,"JGD2000 / Japan Plane Rectangular CS XI",9001,4612,17811,9807,8801,44.0,9110,8802,140.15,9110,8805,0.9999,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-2454,"JGD2000 / Japan Plane Rectangular CS XII",9001,4612,17812,9807,8801,44.0,9110,8802,142.15,9110,8805,0.9999,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-2455,"JGD2000 / Japan Plane Rectangular CS XIII",9001,4612,17813,9807,8801,44.0,9110,8802,144.15,9110,8805,0.9999,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-2456,"JGD2000 / Japan Plane Rectangular CS XIV",9001,4612,17814,9807,8801,26.0,9110,8802,142.0,9110,8805,0.9999,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-2457,"JGD2000 / Japan Plane Rectangular CS XV",9001,4612,17815,9807,8801,26.0,9110,8802,127.3,9110,8805,0.9999,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-2458,"JGD2000 / Japan Plane Rectangular CS XVI",9001,4612,17816,9807,8801,26.0,9110,8802,124.0,9110,8805,0.9999,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-2459,"JGD2000 / Japan Plane Rectangular CS XVII",9001,4612,17817,9807,8801,26.0,9110,8802,131.0,9110,8805,0.9999,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-2460,"JGD2000 / Japan Plane Rectangular CS XVIII",9001,4612,17818,9807,8801,20.0,9110,8802,136.0,9110,8805,0.9999,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-2461,"JGD2000 / Japan Plane Rectangular CS XIX",9001,4612,17819,9807,8801,26.0,9110,8802,154.0,9110,8805,0.9999,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-2462,"Albanian 1987 / Gauss-Kruger zone 4",9001,4191,16204,9807,8801,0.0,9102,8802,21.0,9102,8805,1.0,9201,8806,4500000.0,9001,8807,0.0,9001,,,,,,
-2463,"Pulkovo 1995 / Gauss-Kruger CM 21E",9001,4200,16304,9807,8801,0.0,9102,8802,21.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2464,"Pulkovo 1995 / Gauss-Kruger CM 27E",9001,4200,16305,9807,8801,0.0,9102,8802,27.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2465,"Pulkovo 1995 / Gauss-Kruger CM 33E",9001,4200,16306,9807,8801,0.0,9102,8802,33.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2466,"Pulkovo 1995 / Gauss-Kruger CM 39E",9001,4200,16307,9807,8801,0.0,9102,8802,39.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2467,"Pulkovo 1995 / Gauss-Kruger CM 45E",9001,4200,16308,9807,8801,0.0,9102,8802,45.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2468,"Pulkovo 1995 / Gauss-Kruger CM 51E",9001,4200,16309,9807,8801,0.0,9102,8802,51.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2469,"Pulkovo 1995 / Gauss-Kruger CM 57E",9001,4200,16310,9807,8801,0.0,9102,8802,57.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2470,"Pulkovo 1995 / Gauss-Kruger CM 63E",9001,4200,16311,9807,8801,0.0,9102,8802,63.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2471,"Pulkovo 1995 / Gauss-Kruger CM 69E",9001,4200,16312,9807,8801,0.0,9102,8802,69.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2472,"Pulkovo 1995 / Gauss-Kruger CM 75E",9001,4200,16313,9807,8801,0.0,9102,8802,75.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2473,"Pulkovo 1995 / Gauss-Kruger CM 81E",9001,4200,16314,9807,8801,0.0,9102,8802,81.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2474,"Pulkovo 1995 / Gauss-Kruger CM 87E",9001,4200,16315,9807,8801,0.0,9102,8802,87.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2475,"Pulkovo 1995 / Gauss-Kruger CM 93E",9001,4200,16316,9807,8801,0.0,9102,8802,93.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2476,"Pulkovo 1995 / Gauss-Kruger CM 99E",9001,4200,16317,9807,8801,0.0,9102,8802,99.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2477,"Pulkovo 1995 / Gauss-Kruger CM 105E",9001,4200,16318,9807,8801,0.0,9102,8802,105.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2478,"Pulkovo 1995 / Gauss-Kruger CM 111E",9001,4200,16319,9807,8801,0.0,9102,8802,111.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2479,"Pulkovo 1995 / Gauss-Kruger CM 117E",9001,4200,16320,9807,8801,0.0,9102,8802,117.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2480,"Pulkovo 1995 / Gauss-Kruger CM 123E",9001,4200,16321,9807,8801,0.0,9102,8802,123.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2481,"Pulkovo 1995 / Gauss-Kruger CM 129E",9001,4200,16322,9807,8801,0.0,9102,8802,129.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2482,"Pulkovo 1995 / Gauss-Kruger CM 135E",9001,4200,16323,9807,8801,0.0,9102,8802,135.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2483,"Pulkovo 1995 / Gauss-Kruger CM 141E",9001,4200,16324,9807,8801,0.0,9102,8802,141.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2484,"Pulkovo 1995 / Gauss-Kruger CM 147E",9001,4200,16325,9807,8801,0.0,9102,8802,147.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2485,"Pulkovo 1995 / Gauss-Kruger CM 153E",9001,4200,16326,9807,8801,0.0,9102,8802,153.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2486,"Pulkovo 1995 / Gauss-Kruger CM 159E",9001,4200,16327,9807,8801,0.0,9102,8802,159.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2487,"Pulkovo 1995 / Gauss-Kruger CM 165E",9001,4200,16328,9807,8801,0.0,9102,8802,165.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2488,"Pulkovo 1995 / Gauss-Kruger CM 171E",9001,4200,16329,9807,8801,0.0,9102,8802,171.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2489,"Pulkovo 1995 / Gauss-Kruger CM 177E",9001,4200,16330,9807,8801,0.0,9102,8802,177.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2490,"Pulkovo 1995 / Gauss-Kruger CM 177W",9001,4200,16331,9807,8801,0.0,9102,8802,-177.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2491,"Pulkovo 1995 / Gauss-Kruger CM 171W",9001,4200,16332,9807,8801,0.0,9102,8802,-171.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2492,"Pulkovo 1942 / Gauss-Kruger CM 9E",9001,4284,16302,9807,8801,0.0,9102,8802,9.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2493,"Pulkovo 1942 / Gauss-Kruger CM 15E",9001,4284,16303,9807,8801,0.0,9102,8802,15.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2494,"Pulkovo 1942 / Gauss-Kruger CM 21E",9001,4284,16304,9807,8801,0.0,9102,8802,21.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2495,"Pulkovo 1942 / Gauss-Kruger CM 27E",9001,4284,16305,9807,8801,0.0,9102,8802,27.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2496,"Pulkovo 1942 / Gauss-Kruger CM 33E",9001,4284,16306,9807,8801,0.0,9102,8802,33.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2497,"Pulkovo 1942 / Gauss-Kruger CM 39E",9001,4284,16307,9807,8801,0.0,9102,8802,39.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2498,"Pulkovo 1942 / Gauss-Kruger CM 45E",9001,4284,16308,9807,8801,0.0,9102,8802,45.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2499,"Pulkovo 1942 / Gauss-Kruger CM 51E",9001,4284,16309,9807,8801,0.0,9102,8802,51.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2500,"Pulkovo 1942 / Gauss-Kruger CM 57E",9001,4284,16310,9807,8801,0.0,9102,8802,57.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2501,"Pulkovo 1942 / Gauss-Kruger CM 63E",9001,4284,16311,9807,8801,0.0,9102,8802,63.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2502,"Pulkovo 1942 / Gauss-Kruger CM 69E",9001,4284,16312,9807,8801,0.0,9102,8802,69.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2503,"Pulkovo 1942 / Gauss-Kruger CM 75E",9001,4284,16313,9807,8801,0.0,9102,8802,75.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2504,"Pulkovo 1942 / Gauss-Kruger CM 81E",9001,4284,16314,9807,8801,0.0,9102,8802,81.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2505,"Pulkovo 1942 / Gauss-Kruger CM 87E",9001,4284,16315,9807,8801,0.0,9102,8802,87.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2506,"Pulkovo 1942 / Gauss-Kruger CM 93E",9001,4284,16316,9807,8801,0.0,9102,8802,93.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2507,"Pulkovo 1942 / Gauss-Kruger CM 99E",9001,4284,16317,9807,8801,0.0,9102,8802,99.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2508,"Pulkovo 1942 / Gauss-Kruger CM 105E",9001,4284,16318,9807,8801,0.0,9102,8802,105.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2509,"Pulkovo 1942 / Gauss-Kruger CM 111E",9001,4284,16319,9807,8801,0.0,9102,8802,111.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2510,"Pulkovo 1942 / Gauss-Kruger CM 117E",9001,4284,16320,9807,8801,0.0,9102,8802,117.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2511,"Pulkovo 1942 / Gauss-Kruger CM 123E",9001,4284,16321,9807,8801,0.0,9102,8802,123.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2512,"Pulkovo 1942 / Gauss-Kruger CM 129E",9001,4284,16322,9807,8801,0.0,9102,8802,129.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2513,"Pulkovo 1942 / Gauss-Kruger CM 135E",9001,4284,16323,9807,8801,0.0,9102,8802,135.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2514,"Pulkovo 1942 / Gauss-Kruger CM 141E",9001,4284,16324,9807,8801,0.0,9102,8802,141.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2515,"Pulkovo 1942 / Gauss-Kruger CM 147E",9001,4284,16325,9807,8801,0.0,9102,8802,147.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2516,"Pulkovo 1942 / Gauss-Kruger CM 153E",9001,4284,16326,9807,8801,0.0,9102,8802,153.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2517,"Pulkovo 1942 / Gauss-Kruger CM 159E",9001,4284,16327,9807,8801,0.0,9102,8802,159.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2518,"Pulkovo 1942 / Gauss-Kruger CM 165E",9001,4284,16328,9807,8801,0.0,9102,8802,165.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2519,"Pulkovo 1942 / Gauss-Kruger CM 171E",9001,4284,16329,9807,8801,0.0,9102,8802,171.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2520,"Pulkovo 1942 / Gauss-Kruger CM 177E",9001,4284,16330,9807,8801,0.0,9102,8802,177.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2521,"Pulkovo 1942 / Gauss-Kruger CM 177W",9001,4284,16331,9807,8801,0.0,9102,8802,-177.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2522,"Pulkovo 1942 / Gauss-Kruger CM 171W",9001,4284,16332,9807,8801,0.0,9102,8802,-171.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2523,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 7",9001,4284,16267,9807,8801,0.0,9102,8802,21.0,9102,8805,1.0,9201,8806,7500000.0,9001,8807,0.0,9001,,,,,,
-2524,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 8",9001,4284,16268,9807,8801,0.0,9102,8802,24.0,9102,8805,1.0,9201,8806,8500000.0,9001,8807,0.0,9001,,,,,,
-2525,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 9",9001,4284,16269,9807,8801,0.0,9102,8802,27.0,9102,8805,1.0,9201,8806,9500000.0,9001,8807,0.0,9001,,,,,,
-2526,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 10",9001,4284,16270,9807,8801,0.0,9102,8802,30.0,9102,8805,1.0,9201,8806,10500000.0,9001,8807,0.0,9001,,,,,,
-2527,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 11",9001,4284,16271,9807,8801,0.0,9102,8802,33.0,9102,8805,1.0,9201,8806,11500000.0,9001,8807,0.0,9001,,,,,,
-2528,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 12",9001,4284,16272,9807,8801,0.0,9102,8802,36.0,9102,8805,1.0,9201,8806,12500000.0,9001,8807,0.0,9001,,,,,,
-2529,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 13",9001,4284,16273,9807,8801,0.0,9102,8802,39.0,9102,8805,1.0,9201,8806,13500000.0,9001,8807,0.0,9001,,,,,,
-2530,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 14",9001,4284,16274,9807,8801,0.0,9102,8802,42.0,9102,8805,1.0,9201,8806,14500000.0,9001,8807,0.0,9001,,,,,,
-2531,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 15",9001,4284,16275,9807,8801,0.0,9102,8802,45.0,9102,8805,1.0,9201,8806,15500000.0,9001,8807,0.0,9001,,,,,,
-2532,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 16",9001,4284,16276,9807,8801,0.0,9102,8802,48.0,9102,8805,1.0,9201,8806,16500000.0,9001,8807,0.0,9001,,,,,,
-2533,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 17",9001,4284,16277,9807,8801,0.0,9102,8802,51.0,9102,8805,1.0,9201,8806,17500000.0,9001,8807,0.0,9001,,,,,,
-2534,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 18",9001,4284,16278,9807,8801,0.0,9102,8802,54.0,9102,8805,1.0,9201,8806,18500000.0,9001,8807,0.0,9001,,,,,,
-2535,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 19",9001,4284,16279,9807,8801,0.0,9102,8802,57.0,9102,8805,1.0,9201,8806,19500000.0,9001,8807,0.0,9001,,,,,,
-2536,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 20",9001,4284,16280,9807,8801,0.0,9102,8802,60.0,9102,8805,1.0,9201,8806,20500000.0,9001,8807,0.0,9001,,,,,,
-2537,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 21",9001,4284,16281,9807,8801,0.0,9102,8802,63.0,9102,8805,1.0,9201,8806,21500000.0,9001,8807,0.0,9001,,,,,,
-2538,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 22",9001,4284,16282,9807,8801,0.0,9102,8802,66.0,9102,8805,1.0,9201,8806,22500000.0,9001,8807,0.0,9001,,,,,,
-2539,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 23",9001,4284,16283,9807,8801,0.0,9102,8802,69.0,9102,8805,1.0,9201,8806,23500000.0,9001,8807,0.0,9001,,,,,,
-2540,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 24",9001,4284,16284,9807,8801,0.0,9102,8802,72.0,9102,8805,1.0,9201,8806,24500000.0,9001,8807,0.0,9001,,,,,,
-2541,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 25",9001,4284,16285,9807,8801,0.0,9102,8802,75.0,9102,8805,1.0,9201,8806,25500000.0,9001,8807,0.0,9001,,,,,,
-2542,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 26",9001,4284,16286,9807,8801,0.0,9102,8802,78.0,9102,8805,1.0,9201,8806,26500000.0,9001,8807,0.0,9001,,,,,,
-2543,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 27",9001,4284,16287,9807,8801,0.0,9102,8802,81.0,9102,8805,1.0,9201,8806,27500000.0,9001,8807,0.0,9001,,,,,,
-2544,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 28",9001,4284,16288,9807,8801,0.0,9102,8802,84.0,9102,8805,1.0,9201,8806,28500000.0,9001,8807,0.0,9001,,,,,,
-2545,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 29",9001,4284,16289,9807,8801,0.0,9102,8802,87.0,9102,8805,1.0,9201,8806,29500000.0,9001,8807,0.0,9001,,,,,,
-2546,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 30",9001,4284,16290,9807,8801,0.0,9102,8802,90.0,9102,8805,1.0,9201,8806,30500000.0,9001,8807,0.0,9001,,,,,,
-2547,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 31",9001,4284,16291,9807,8801,0.0,9102,8802,93.0,9102,8805,1.0,9201,8806,31500000.0,9001,8807,0.0,9001,,,,,,
-2548,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 32",9001,4284,16292,9807,8801,0.0,9102,8802,96.0,9102,8805,1.0,9201,8806,32500000.0,9001,8807,0.0,9001,,,,,,
-2549,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 33",9001,4284,16293,9807,8801,0.0,9102,8802,99.0,9102,8805,1.0,9201,8806,33500000.0,9001,8807,0.0,9001,,,,,,
-2550,"Samboja / UTM zone 50S",9001,4125,16150,9807,8801,0.0,9102,8802,117.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-2551,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 34",9001,4284,16294,9807,8801,0.0,9102,8802,102.0,9102,8805,1.0,9201,8806,34500000.0,9001,8807,0.0,9001,,,,,,
-2552,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 35",9001,4284,16295,9807,8801,0.0,9102,8802,105.0,9102,8805,1.0,9201,8806,35500000.0,9001,8807,0.0,9001,,,,,,
-2553,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 36",9001,4284,16296,9807,8801,0.0,9102,8802,108.0,9102,8805,1.0,9201,8806,36500000.0,9001,8807,0.0,9001,,,,,,
-2554,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 37",9001,4284,16297,9807,8801,0.0,9102,8802,111.0,9102,8805,1.0,9201,8806,37500000.0,9001,8807,0.0,9001,,,,,,
-2555,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 38",9001,4284,16298,9807,8801,0.0,9102,8802,114.0,9102,8805,1.0,9201,8806,38500000.0,9001,8807,0.0,9001,,,,,,
-2556,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 39",9001,4284,16299,9807,8801,0.0,9102,8802,117.0,9102,8805,1.0,9201,8806,39500000.0,9001,8807,0.0,9001,,,,,,
-2557,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 40",9001,4284,16070,9807,8801,0.0,9102,8802,120.0,9102,8805,1.0,9201,8806,40500000.0,9001,8807,0.0,9001,,,,,,
-2558,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 41",9001,4284,16071,9807,8801,0.0,9102,8802,123.0,9102,8805,1.0,9201,8806,41500000.0,9001,8807,0.0,9001,,,,,,
-2559,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 42",9001,4284,16072,9807,8801,0.0,9102,8802,126.0,9102,8805,1.0,9201,8806,42500000.0,9001,8807,0.0,9001,,,,,,
-2560,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 43",9001,4284,16073,9807,8801,0.0,9102,8802,129.0,9102,8805,1.0,9201,8806,43500000.0,9001,8807,0.0,9001,,,,,,
-2561,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 44",9001,4284,16074,9807,8801,0.0,9102,8802,132.0,9102,8805,1.0,9201,8806,44500000.0,9001,8807,0.0,9001,,,,,,
-2562,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 45",9001,4284,16075,9807,8801,0.0,9102,8802,135.0,9102,8805,1.0,9201,8806,45500000.0,9001,8807,0.0,9001,,,,,,
-2563,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 46",9001,4284,16076,9807,8801,0.0,9102,8802,138.0,9102,8805,1.0,9201,8806,46500000.0,9001,8807,0.0,9001,,,,,,
-2564,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 47",9001,4284,16077,9807,8801,0.0,9102,8802,141.0,9102,8805,1.0,9201,8806,47500000.0,9001,8807,0.0,9001,,,,,,
-2565,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 48",9001,4284,16078,9807,8801,0.0,9102,8802,144.0,9102,8805,1.0,9201,8806,48500000.0,9001,8807,0.0,9001,,,,,,
-2566,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 49",9001,4284,16079,9807,8801,0.0,9102,8802,147.0,9102,8805,1.0,9201,8806,49500000.0,9001,8807,0.0,9001,,,,,,
-2567,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 50",9001,4284,16080,9807,8801,0.0,9102,8802,150.0,9102,8805,1.0,9201,8806,50500000.0,9001,8807,0.0,9001,,,,,,
-2568,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 51",9001,4284,16081,9807,8801,0.0,9102,8802,153.0,9102,8805,1.0,9201,8806,51500000.0,9001,8807,0.0,9001,,,,,,
-2569,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 52",9001,4284,16082,9807,8801,0.0,9102,8802,156.0,9102,8805,1.0,9201,8806,52500000.0,9001,8807,0.0,9001,,,,,,
-2570,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 53",9001,4284,16083,9807,8801,0.0,9102,8802,159.0,9102,8805,1.0,9201,8806,53500000.0,9001,8807,0.0,9001,,,,,,
-2571,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 54",9001,4284,16084,9807,8801,0.0,9102,8802,162.0,9102,8805,1.0,9201,8806,54500000.0,9001,8807,0.0,9001,,,,,,
-2572,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 55",9001,4284,16085,9807,8801,0.0,9102,8802,165.0,9102,8805,1.0,9201,8806,55500000.0,9001,8807,0.0,9001,,,,,,
-2573,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 56",9001,4284,16086,9807,8801,0.0,9102,8802,168.0,9102,8805,1.0,9201,8806,56500000.0,9001,8807,0.0,9001,,,,,,
-2574,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 57",9001,4284,16087,9807,8801,0.0,9102,8802,171.0,9102,8805,1.0,9201,8806,57500000.0,9001,8807,0.0,9001,,,,,,
-2575,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 58",9001,4284,16088,9807,8801,0.0,9102,8802,174.0,9102,8805,1.0,9201,8806,58500000.0,9001,8807,0.0,9001,,,,,,
-2576,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 59",9001,4284,16089,9807,8801,0.0,9102,8802,177.0,9102,8805,1.0,9201,8806,59500000.0,9001,8807,0.0,9001,,,,,,
-2577,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 60",9001,4284,16090,9807,8801,0.0,9102,8802,180.0,9102,8805,1.0,9201,8806,60000000.0,9001,8807,0.0,9001,,,,,,
-2578,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 61",9001,4284,16091,9807,8801,0.0,9102,8802,-177.0,9102,8805,1.0,9201,8806,61500000.0,9001,8807,0.0,9001,,,,,,
-2579,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 62",9001,4284,16092,9807,8801,0.0,9102,8802,-174.0,9102,8805,1.0,9201,8806,62500000.0,9001,8807,0.0,9001,,,,,,
-2580,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 63",9001,4284,16093,9807,8801,0.0,9102,8802,-171.0,9102,8805,1.0,9201,8806,63500000.0,9001,8807,0.0,9001,,,,,,
-2581,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 64",9001,4284,16094,9807,8801,0.0,9102,8802,-168.0,9102,8805,1.0,9201,8806,64500000.0,9001,8807,0.0,9001,,,,,,
-2582,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 21E",9001,4284,16367,9807,8801,0.0,9102,8802,21.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2583,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 24E",9001,4284,16368,9807,8801,0.0,9102,8802,24.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2584,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 27E",9001,4284,16369,9807,8801,0.0,9102,8802,27.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2585,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 30E",9001,4284,16370,9807,8801,0.0,9102,8802,30.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2586,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 33E",9001,4284,16371,9807,8801,0.0,9102,8802,33.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2587,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 36E",9001,4284,16372,9807,8801,0.0,9102,8802,36.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2588,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 39E",9001,4284,16373,9807,8801,0.0,9102,8802,39.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2589,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 42E",9001,4284,16374,9807,8801,0.0,9102,8802,42.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2590,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 45E",9001,4284,16375,9807,8801,0.0,9102,8802,45.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2591,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 48E",9001,4284,16376,9807,8801,0.0,9102,8802,48.0,9102,8805,1.0,9001,8806,500000.0,9001,8807,0.0,9201,,,,,,
-2592,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 51E",9001,4284,16377,9807,8801,0.0,9102,8802,51.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2593,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 54E",9001,4284,16378,9807,8801,0.0,9102,8802,54.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2594,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 57E",9001,4284,16379,9807,8801,0.0,9102,8802,57.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2595,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 60E",9001,4284,16380,9807,8801,0.0,9102,8802,60.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2596,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 63E",9001,4284,16381,9807,8801,0.0,9102,8802,63.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2597,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 66E",9001,4284,16382,9807,8801,0.0,9102,8802,66.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2598,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 69E",9001,4284,16383,9807,8801,0.0,9102,8802,69.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2599,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 72E",9001,4284,16384,9807,8801,0.0,9102,8802,72.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2600,Lietuvos Koordinoei Sistema 1994,9001,4126,19934,9807,8801,0.0,9102,8802,24.0,9102,8805,0.9998,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2601,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 75E",9001,4284,16385,9807,8801,0.0,9102,8802,75.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2602,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 78E",9001,4284,16386,9807,8801,0.0,9102,8802,78.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2603,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 81E",9001,4284,16387,9807,8801,0.0,9102,8802,81.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2604,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 84E",9001,4284,16388,9807,8801,0.0,9102,8802,84.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2605,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 87E",9001,4284,16389,9807,8801,0.0,9102,8802,87.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2606,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 90E",9001,4284,16390,9807,8801,0.0,9102,8802,90.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2607,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 93E",9001,4284,16391,9807,8801,0.0,9102,8802,93.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2608,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 96E",9001,4284,16392,9807,8801,0.0,9102,8802,96.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2609,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 99E",9001,4284,16393,9807,8801,0.0,9102,8802,99.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2610,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 102E",9001,4284,16394,9807,8801,0.0,9102,8802,102.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2611,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 105E",9001,4284,16395,9807,8801,0.0,9102,8802,105.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2612,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 108E",9001,4284,16396,9807,8801,0.0,9102,8802,108.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2613,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 111E",9001,4284,16397,9807,8801,0.0,9102,8802,111.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2614,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 114E",9001,4284,16398,9807,8801,0.0,9102,8802,114.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2615,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 117E",9001,4284,16399,9807,8801,0.0,9102,8802,117.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2616,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 120E",9001,4284,16170,9807,8801,0.0,9102,8802,120.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2617,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 123E",9001,4284,16171,9807,8801,0.0,9102,8802,123.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2618,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 126E",9001,4284,16172,9807,8801,0.0,9102,8802,126.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2619,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 129E",9001,4284,16173,9807,8801,0.0,9102,8802,129.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2620,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 132E",9001,4284,16174,9807,8801,0.0,9102,8802,132.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2621,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 135E",9001,4284,16175,9807,8801,0.0,9102,8802,135.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2622,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 138E",9001,4284,16176,9807,8801,0.0,9102,8802,138.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2623,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 141E",9001,4284,16177,9807,8801,0.0,9102,8802,141.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2624,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 144E",9001,4284,16178,9807,8801,0.0,9102,8802,144.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2625,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 147E",9001,4284,16179,9807,8801,0.0,9102,8802,147.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2626,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 150E",9001,4284,16180,9807,8801,0.0,9102,8802,150.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2627,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 153E",9001,4284,16181,9807,8801,0.0,9102,8802,153.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2628,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 156E",9001,4284,16182,9807,8801,0.0,9102,8802,156.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2629,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 159E",9001,4284,16183,9807,8801,0.0,9102,8802,159.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2630,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 162E",9001,4284,16184,9807,8801,0.0,9102,8802,162.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2631,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 165E",9001,4284,16185,9807,8801,0.0,9102,8802,165.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2632,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 168E",9001,4284,16186,9807,8801,0.0,9102,8802,168.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2633,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 171E",9001,4284,16187,9807,8801,0.0,9102,8802,171.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2634,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 174E",9001,4284,16188,9807,8801,0.0,9102,8802,174.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2635,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 177E",9001,4284,16189,9807,8801,0.0,9102,8802,177.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2636,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 180E",9001,4284,16190,9807,8801,0.0,9102,8802,180.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2637,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 177W",9001,4284,16191,9807,8801,0.0,9102,8802,-177.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2638,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 174W",9001,4284,16192,9807,8801,0.0,9102,8802,-174.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2639,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 171W",9001,4284,16193,9807,8801,0.0,9102,8802,-171.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2640,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 168W",9001,4284,16194,9807,8801,0.0,9102,8802,-168.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2641,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 7",9001,4284,16267,9807,8801,0.0,9102,8802,21.0,9102,8805,1.0,9201,8806,7500000.0,9001,8807,0.0,9001,,,,,,
-2642,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 8",9001,4284,16268,9807,8801,0.0,9102,8802,24.0,9102,8805,1.0,9201,8806,8500000.0,9001,8807,0.0,9001,,,,,,
-2643,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 9",9001,4284,16269,9807,8801,0.0,9102,8802,27.0,9102,8805,1.0,9201,8806,9500000.0,9001,8807,0.0,9001,,,,,,
-2644,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 10",9001,4284,16270,9807,8801,0.0,9102,8802,30.0,9102,8805,1.0,9201,8806,10500000.0,9001,8807,0.0,9001,,,,,,
-2645,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 11",9001,4284,16271,9807,8801,0.0,9102,8802,33.0,9102,8805,1.0,9201,8806,11500000.0,9001,8807,0.0,9001,,,,,,
-2646,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 12",9001,4284,16272,9807,8801,0.0,9102,8802,36.0,9102,8805,1.0,9201,8806,12500000.0,9001,8807,0.0,9001,,,,,,
-2647,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 13",9001,4284,16273,9807,8801,0.0,9102,8802,39.0,9102,8805,1.0,9201,8806,13500000.0,9001,8807,0.0,9001,,,,,,
-2648,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 14",9001,4284,16274,9807,8801,0.0,9102,8802,42.0,9102,8805,1.0,9201,8806,14500000.0,9001,8807,0.0,9001,,,,,,
-2649,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 15",9001,4284,16275,9807,8801,0.0,9102,8802,45.0,9102,8805,1.0,9201,8806,15500000.0,9001,8807,0.0,9001,,,,,,
-2650,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 16",9001,4284,16276,9807,8801,0.0,9102,8802,48.0,9102,8805,1.0,9201,8806,16500000.0,9001,8807,0.0,9001,,,,,,
-2651,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 17",9001,4284,16277,9807,8801,0.0,9102,8802,51.0,9102,8805,1.0,9201,8806,17500000.0,9001,8807,0.0,9001,,,,,,
-2652,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 18",9001,4284,16278,9807,8801,0.0,9102,8802,54.0,9102,8805,1.0,9201,8806,18500000.0,9001,8807,0.0,9001,,,,,,
-2653,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 19",9001,4284,16279,9807,8801,0.0,9102,8802,57.0,9102,8805,1.0,9201,8806,19500000.0,9001,8807,0.0,9001,,,,,,
-2654,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 20",9001,4284,16280,9807,8801,0.0,9102,8802,60.0,9102,8805,1.0,9201,8806,20500000.0,9001,8807,0.0,9001,,,,,,
-2655,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 21",9001,4284,16281,9807,8801,0.0,9102,8802,63.0,9102,8805,1.0,9201,8806,21500000.0,9001,8807,0.0,9001,,,,,,
-2656,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 22",9001,4284,16282,9807,8801,0.0,9102,8802,66.0,9102,8805,1.0,9201,8806,22500000.0,9001,8807,0.0,9001,,,,,,
-2657,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 23",9001,4284,16283,9807,8801,0.0,9102,8802,69.0,9102,8805,1.0,9201,8806,23500000.0,9001,8807,0.0,9001,,,,,,
-2658,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 24",9001,4284,16284,9807,8801,0.0,9102,8802,72.0,9102,8805,1.0,9201,8806,24500000.0,9001,8807,0.0,9001,,,,,,
-2659,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 25",9001,4284,16285,9807,8801,0.0,9102,8802,75.0,9102,8805,1.0,9201,8806,25500000.0,9001,8807,0.0,9001,,,,,,
-2660,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 26",9001,4284,16286,9807,8801,0.0,9102,8802,78.0,9102,8805,1.0,9201,8806,26500000.0,9001,8807,0.0,9001,,,,,,
-2661,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 27",9001,4284,16287,9807,8801,0.0,9102,8802,81.0,9102,8805,1.0,9201,8806,27500000.0,9001,8807,0.0,9001,,,,,,
-2662,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 28",9001,4284,16288,9807,8801,0.0,9102,8802,84.0,9102,8805,1.0,9201,8806,28500000.0,9001,8807,0.0,9001,,,,,,
-2663,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 29",9001,4284,16289,9807,8801,0.0,9102,8802,87.0,9102,8805,1.0,9201,8806,29500000.0,9001,8807,0.0,9001,,,,,,
-2664,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 30",9001,4284,16290,9807,8801,0.0,9102,8802,90.0,9102,8805,1.0,9201,8806,30500000.0,9001,8807,0.0,9001,,,,,,
-2665,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 31",9001,4284,16291,9807,8801,0.0,9102,8802,93.0,9102,8805,1.0,9201,8806,31500000.0,9001,8807,0.0,9001,,,,,,
-2666,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 32",9001,4284,16292,9807,8801,0.0,9102,8802,96.0,9102,8805,1.0,9201,8806,32500000.0,9001,8807,0.0,9001,,,,,,
-2667,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 33",9001,4284,16293,9807,8801,0.0,9102,8802,99.0,9102,8805,1.0,9201,8806,33500000.0,9001,8807,0.0,9001,,,,,,
-2668,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 34",9001,4284,16294,9807,8801,0.0,9102,8802,102.0,9102,8805,1.0,9201,8806,34500000.0,9001,8807,0.0,9001,,,,,,
-2669,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 35",9001,4284,16295,9807,8801,0.0,9102,8802,105.0,9102,8805,1.0,9201,8806,35500000.0,9001,8807,0.0,9001,,,,,,
-2670,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 36",9001,4284,16296,9807,8801,0.0,9102,8802,108.0,9102,8805,1.0,9201,8806,36500000.0,9001,8807,0.0,9001,,,,,,
-2671,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 37",9001,4284,16297,9807,8801,0.0,9102,8802,111.0,9102,8805,1.0,9201,8806,37500000.0,9001,8807,0.0,9001,,,,,,
-2672,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 38",9001,4284,16298,9807,8801,0.0,9102,8802,114.0,9102,8805,1.0,9201,8806,38500000.0,9001,8807,0.0,9001,,,,,,
-2673,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 39",9001,4284,16299,9807,8801,0.0,9102,8802,117.0,9102,8805,1.0,9201,8806,39500000.0,9001,8807,0.0,9001,,,,,,
-2674,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 40",9001,4284,16070,9807,8801,0.0,9102,8802,120.0,9102,8805,1.0,9201,8806,40500000.0,9001,8807,0.0,9001,,,,,,
-2675,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 41",9001,4284,16071,9807,8801,0.0,9102,8802,123.0,9102,8805,1.0,9201,8806,41500000.0,9001,8807,0.0,9001,,,,,,
-2676,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 42",9001,4284,16072,9807,8801,0.0,9102,8802,126.0,9102,8805,1.0,9201,8806,42500000.0,9001,8807,0.0,9001,,,,,,
-2677,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 43",9001,4284,16073,9807,8801,0.0,9102,8802,129.0,9102,8805,1.0,9201,8806,43500000.0,9001,8807,0.0,9001,,,,,,
-2678,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 44",9001,4284,16074,9807,8801,0.0,9102,8802,132.0,9102,8805,1.0,9201,8806,44500000.0,9001,8807,0.0,9001,,,,,,
-2679,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 45",9001,4284,16075,9807,8801,0.0,9102,8802,135.0,9102,8805,1.0,9201,8806,45500000.0,9001,8807,0.0,9001,,,,,,
-2680,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 46",9001,4284,16076,9807,8801,0.0,9102,8802,138.0,9102,8805,1.0,9201,8806,46500000.0,9001,8807,0.0,9001,,,,,,
-2681,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 47",9001,4284,16077,9807,8801,0.0,9102,8802,141.0,9102,8805,1.0,9201,8806,47500000.0,9001,8807,0.0,9001,,,,,,
-2682,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 48",9001,4284,16078,9807,8801,0.0,9102,8802,144.0,9102,8805,1.0,9201,8806,48500000.0,9001,8807,0.0,9001,,,,,,
-2683,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 49",9001,4284,16079,9807,8801,0.0,9102,8802,147.0,9102,8805,1.0,9201,8806,49500000.0,9001,8807,0.0,9001,,,,,,
-2684,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 50",9001,4284,16080,9807,8801,0.0,9102,8802,150.0,9102,8805,1.0,9201,8806,50500000.0,9001,8807,0.0,9001,,,,,,
-2685,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 51",9001,4284,16081,9807,8801,0.0,9102,8802,153.0,9102,8805,1.0,9201,8806,51500000.0,9001,8807,0.0,9001,,,,,,
-2686,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 52",9001,4284,16082,9807,8801,0.0,9102,8802,156.0,9102,8805,1.0,9201,8806,52500000.0,9001,8807,0.0,9001,,,,,,
-2687,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 53",9001,4284,16083,9807,8801,0.0,9102,8802,159.0,9102,8805,1.0,9201,8806,53500000.0,9001,8807,0.0,9001,,,,,,
-2688,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 54",9001,4284,16084,9807,8801,0.0,9102,8802,162.0,9102,8805,1.0,9201,8806,54500000.0,9001,8807,0.0,9001,,,,,,
-2689,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 55",9001,4284,16085,9807,8801,0.0,9102,8802,165.0,9102,8805,1.0,9201,8806,55500000.0,9001,8807,0.0,9001,,,,,,
-2690,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 56",9001,4284,16086,9807,8801,0.0,9102,8802,168.0,9102,8805,1.0,9201,8806,56500000.0,9001,8807,0.0,9001,,,,,,
-2691,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 57",9001,4284,16087,9807,8801,0.0,9102,8802,171.0,9102,8805,1.0,9201,8806,57500000.0,9001,8807,0.0,9001,,,,,,
-2692,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 58",9001,4284,16088,9807,8801,0.0,9102,8802,174.0,9102,8805,1.0,9201,8806,58500000.0,9001,8807,0.0,9001,,,,,,
-2693,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 59",9001,4284,16089,9807,8801,0.0,9102,8802,177.0,9102,8805,1.0,9201,8806,59500000.0,9001,8807,0.0,9001,,,,,,
-2694,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 60",9001,4284,16090,9807,8801,0.0,9102,8802,180.0,9102,8805,1.0,9201,8806,60000000.0,9001,8807,0.0,9001,,,,,,
-2695,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 61",9001,4284,16091,9807,8801,0.0,9102,8802,-177.0,9102,8805,1.0,9201,8806,61500000.0,9001,8807,0.0,9001,,,,,,
-2696,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 62",9001,4284,16092,9807,8801,0.0,9102,8802,-174.0,9102,8805,1.0,9201,8806,62500000.0,9001,8807,0.0,9001,,,,,,
-2697,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 63",9001,4284,16093,9807,8801,0.0,9102,8802,-171.0,9102,8805,1.0,9201,8806,63500000.0,9001,8807,0.0,9001,,,,,,
-2698,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 64",9001,4284,16094,9807,8801,0.0,9102,8802,-168.0,9102,8805,1.0,9201,8806,64500000.0,9001,8807,0.0,9001,,,,,,
-2699,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 21E",9001,4284,16367,9807,8801,0.0,9102,8802,21.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2700,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 24E",9001,4284,16368,9807,8801,0.0,9102,8802,24.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2701,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 27E",9001,4284,16369,9807,8801,0.0,9102,8802,27.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2702,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 30E",9001,4284,16370,9807,8801,0.0,9102,8802,30.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2703,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 33E",9001,4284,16371,9807,8801,0.0,9102,8802,33.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2704,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 36E",9001,4284,16372,9807,8801,0.0,9102,8802,36.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2705,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 39E",9001,4284,16373,9807,8801,0.0,9102,8802,39.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2706,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 42E",9001,4284,16374,9807,8801,0.0,9102,8802,42.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2707,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 45E",9001,4284,16375,9807,8801,0.0,9102,8802,45.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2708,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 48E",9001,4284,16376,9807,8801,0.0,9102,8802,48.0,9102,8805,1.0,9001,8806,500000.0,9001,8807,0.0,9201,,,,,,
-2709,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 51E",9001,4284,16377,9807,8801,0.0,9102,8802,51.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2710,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 54E",9001,4284,16378,9807,8801,0.0,9102,8802,54.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2711,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 57E",9001,4284,16379,9807,8801,0.0,9102,8802,57.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2712,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 60E",9001,4284,16380,9807,8801,0.0,9102,8802,60.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2713,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 63E",9001,4284,16381,9807,8801,0.0,9102,8802,63.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2714,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 66E",9001,4284,16382,9807,8801,0.0,9102,8802,66.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2715,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 69E",9001,4284,16383,9807,8801,0.0,9102,8802,69.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2716,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 72E",9001,4284,16384,9807,8801,0.0,9102,8802,72.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2717,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 75E",9001,4284,16385,9807,8801,0.0,9102,8802,75.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2718,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 78E",9001,4284,16386,9807,8801,0.0,9102,8802,78.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2719,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 81E",9001,4284,16387,9807,8801,0.0,9102,8802,81.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2720,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 84E",9001,4284,16388,9807,8801,0.0,9102,8802,84.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2721,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 87E",9001,4284,16389,9807,8801,0.0,9102,8802,87.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2722,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 90E",9001,4284,16390,9807,8801,0.0,9102,8802,90.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2723,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 93E",9001,4284,16391,9807,8801,0.0,9102,8802,93.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2724,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 96E",9001,4284,16392,9807,8801,0.0,9102,8802,96.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2725,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 99E",9001,4284,16393,9807,8801,0.0,9102,8802,99.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2726,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 102E",9001,4284,16394,9807,8801,0.0,9102,8802,102.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2727,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 105E",9001,4284,16395,9807,8801,0.0,9102,8802,105.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2728,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 108E",9001,4284,16396,9807,8801,0.0,9102,8802,108.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2729,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 111E",9001,4284,16397,9807,8801,0.0,9102,8802,111.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2730,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 114E",9001,4284,16398,9807,8801,0.0,9102,8802,114.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2731,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 117E",9001,4284,16399,9807,8801,0.0,9102,8802,117.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2732,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 120E",9001,4284,16170,9807,8801,0.0,9102,8802,120.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2733,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 123E",9001,4284,16171,9807,8801,0.0,9102,8802,123.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2734,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 126E",9001,4284,16172,9807,8801,0.0,9102,8802,126.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2735,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 129E",9001,4284,16173,9807,8801,0.0,9102,8802,129.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2736,"Tete / UTM zone 36S",9001,4127,16136,9807,8801,0.0,9102,8802,33.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-2737,"Tete / UTM zone 37S",9001,4127,16137,9807,8801,0.0,9102,8802,39.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-2738,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 132E",9001,4284,16174,9807,8801,0.0,9102,8802,132.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2739,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 135E",9001,4284,16175,9807,8801,0.0,9102,8802,135.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2740,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 138E",9001,4284,16176,9807,8801,0.0,9102,8802,138.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2741,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 141E",9001,4284,16177,9807,8801,0.0,9102,8802,141.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2742,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 144E",9001,4284,16178,9807,8801,0.0,9102,8802,144.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2743,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 147E",9001,4284,16179,9807,8801,0.0,9102,8802,147.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2744,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 150E",9001,4284,16180,9807,8801,0.0,9102,8802,150.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2745,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 153E",9001,4284,16181,9807,8801,0.0,9102,8802,153.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2746,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 156E",9001,4284,16182,9807,8801,0.0,9102,8802,156.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2747,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 159E",9001,4284,16183,9807,8801,0.0,9102,8802,159.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2748,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 162E",9001,4284,16184,9807,8801,0.0,9102,8802,162.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2749,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 165E",9001,4284,16185,9807,8801,0.0,9102,8802,165.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2750,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 168E",9001,4284,16186,9807,8801,0.0,9102,8802,168.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2751,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 171E",9001,4284,16187,9807,8801,0.0,9102,8802,171.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2752,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 174E",9001,4284,16188,9807,8801,0.0,9102,8802,174.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2753,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 177E",9001,4284,16189,9807,8801,0.0,9102,8802,177.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2754,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 180E",9001,4284,16190,9807,8801,0.0,9102,8802,180.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2755,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 177W",9001,4284,16191,9807,8801,0.0,9102,8802,-177.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2756,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 174W",9001,4284,16192,9807,8801,0.0,9102,8802,-174.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2757,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 171W",9001,4284,16193,9807,8801,0.0,9102,8802,-171.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2758,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 168W",9001,4284,16194,9807,8801,0.0,9102,8802,-168.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2759,"NAD83(HARN) / Alabama East",9001,4152,10131,9807,8801,30.3,9110,8802,-85.5,9110,8805,0.99996,9201,8806,200000.0,9001,8807,0.0,9001,,,,,,
-2760,"NAD83(HARN) / Alabama West",9001,4152,10132,9807,8801,30.0,9110,8802,-87.3,9110,8805,0.999933333,9201,8806,600000.0,9001,8807,0.0,9001,,,,,,
-2761,"NAD83(HARN) / Arizona East",9001,4152,10231,9807,8801,31.0,9110,8802,-110.1,9110,8805,0.9999,9201,8806,213360.0,9001,8807,0.0,9001,,,,,,
-2762,"NAD83(HARN) / Arizona Central",9001,4152,10232,9807,8801,31.0,9110,8802,-111.55,9110,8805,0.9999,9201,8806,213360.0,9001,8807,0.0,9001,,,,,,
-2763,"NAD83(HARN) / Arizona West",9001,4152,10233,9807,8801,31.0,9110,8802,-113.45,9110,8805,0.999933333,9201,8806,213360.0,9001,8807,0.0,9001,,,,,,
-2764,"NAD83(HARN) / Arkansas North",9001,4152,10331,9802,8821,34.2,9110,8822,-92.0,9110,8823,36.14,9110,8824,34.56,9110,8826,400000.0,9001,8827,0.0,9001,,,
-2765,"NAD83(HARN) / Arkansas South",9001,4152,10332,9802,8821,32.4,9110,8822,-92.0,9110,8823,34.46,9110,8824,33.18,9110,8826,400000.0,9001,8827,400000.0,9001,,,
-2766,"NAD83(HARN) / California zone 1",9001,4152,10431,9802,8821,39.2,9110,8822,-122.0,9110,8823,41.4,9110,8824,40.0,9110,8826,2000000.0,9001,8827,500000.0,9001,,,
-2767,"NAD83(HARN) / California zone 2",9001,4152,10432,9802,8821,37.4,9110,8822,-122.0,9110,8823,39.5,9110,8824,38.2,9110,8826,2000000.0,9001,8827,500000.0,9001,,,
-2768,"NAD83(HARN) / California zone 3",9001,4152,10433,9802,8821,36.3,9110,8822,-120.3,9110,8823,38.26,9110,8824,37.04,9110,8826,2000000.0,9001,8827,500000.0,9001,,,
-2769,"NAD83(HARN) / California zone 4",9001,4152,10434,9802,8821,35.2,9110,8822,-119.0,9110,8823,37.15,9110,8824,36.0,9110,8826,2000000.0,9001,8827,500000.0,9001,,,
-2770,"NAD83(HARN) / California zone 5",9001,4152,10435,9802,8821,33.3,9110,8822,-118.0,9110,8823,35.28,9110,8824,34.02,9110,8826,2000000.0,9001,8827,500000.0,9001,,,
-2771,"NAD83(HARN) / California zone 6",9001,4152,10436,9802,8821,32.1,9110,8822,-116.15,9110,8823,33.53,9110,8824,32.47,9110,8826,2000000.0,9001,8827,500000.0,9001,,,
-2772,"NAD83(HARN) / Colorado North",9001,4152,10531,9802,8821,39.2,9110,8822,-105.3,9110,8823,40.47,9110,8824,39.43,9110,8826,914401.8289,9001,8827,304800.6096,9001,,,
-2773,"NAD83(HARN) / Colorado Central",9001,4152,10532,9802,8821,37.5,9110,8822,-105.3,9110,8823,39.45,9110,8824,38.27,9110,8826,914401.8289,9001,8827,304800.6096,9001,,,
-2774,"NAD83(HARN) / Colorado South",9001,4152,10533,9802,8821,36.4,9110,8822,-105.3,9110,8823,38.26,9110,8824,37.14,9110,8826,914401.8289,9001,8827,304800.6096,9001,,,
-2775,"NAD83(HARN) / Connecticut",9001,4152,10630,9802,8821,40.5,9110,8822,-72.45,9110,8823,41.52,9110,8824,41.12,9110,8826,304800.6096,9001,8827,152400.3048,9001,,,
-2776,"NAD83(HARN) / Delaware",9001,4152,10730,9807,8801,38.0,9110,8802,-75.25,9110,8805,0.999995,9201,8806,200000.0,9001,8807,0.0,9001,,,,,,
-2777,"NAD83(HARN) / Florida East",9001,4152,10931,9807,8801,24.2,9110,8802,-81.0,9110,8805,0.999941177,9201,8806,200000.0,9001,8807,0.0,9001,,,,,,
-2778,"NAD83(HARN) / Florida West",9001,4152,10932,9807,8801,24.2,9110,8802,-82.0,9110,8805,0.999941177,9201,8806,200000.0,9001,8807,0.0,9001,,,,,,
-2779,"NAD83(HARN) / Florida North",9001,4152,10933,9802,8821,29.0,9110,8822,-84.3,9110,8823,30.45,9110,8824,29.35,9110,8826,600000.0,9001,8827,0.0,9001,,,
-2780,"NAD83(HARN) / Georgia East",9001,4152,11031,9807,8801,30.0,9110,8802,-82.1,9110,8805,0.9999,9201,8806,200000.0,9001,8807,0.0,9001,,,,,,
-2781,"NAD83(HARN) / Georgia West",9001,4152,11032,9807,8801,30.0,9110,8802,-84.1,9110,8805,0.9999,9201,8806,700000.0,9001,8807,0.0,9001,,,,,,
-2782,"NAD83(HARN) / Hawaii zone 1",9001,4152,15131,9807,8801,18.5,9110,8802,-155.3,9110,8805,0.999966667,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2783,"NAD83(HARN) / Hawaii zone 2",9001,4152,15132,9807,8801,20.2,9110,8802,-156.4,9110,8805,0.999966667,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2784,"NAD83(HARN) / Hawaii zone 3",9001,4152,15133,9807,8801,21.1,9110,8802,-158.0,9110,8805,0.99999,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2785,"NAD83(HARN) / Hawaii zone 4",9001,4152,15134,9807,8801,21.5,9110,8802,-159.3,9110,8805,0.99999,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2786,"NAD83(HARN) / Hawaii zone 5",9001,4152,15135,9807,8801,21.4,9110,8802,-160.1,9110,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2787,"NAD83(HARN) / Idaho East",9001,4152,11131,9807,8801,41.4,9110,8802,-112.1,9110,8805,0.999947368,9201,8806,200000.0,9001,8807,0.0,9001,,,,,,
-2788,"NAD83(HARN) / Idaho Central",9001,4152,11132,9807,8801,41.4,9110,8802,-114.0,9110,8805,0.999947368,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2789,"NAD83(HARN) / Idaho West",9001,4152,11133,9807,8801,41.4,9110,8802,-115.45,9110,8805,0.999933333,9201,8806,800000.0,9001,8807,0.0,9001,,,,,,
-2790,"NAD83(HARN) / Illinois East",9001,4152,11231,9807,8801,36.4,9110,8802,-88.2,9110,8805,0.999975,9201,8806,300000.0,9001,8807,0.0,9001,,,,,,
-2791,"NAD83(HARN) / Illinois West",9001,4152,11232,9807,8801,36.4,9110,8802,-90.1,9110,8805,0.999941177,9201,8806,700000.0,9001,8807,0.0,9001,,,,,,
-2792,"NAD83(HARN) / Indiana East",9001,4152,11331,9807,8801,37.3,9110,8802,-85.4,9110,8805,0.999966667,9201,8806,100000.0,9001,8807,250000.0,9001,,,,,,
-2793,"NAD83(HARN) / Indiana West",9001,4152,11332,9807,8801,37.3,9110,8802,-87.05,9110,8805,0.999966667,9201,8806,900000.0,9001,8807,250000.0,9001,,,,,,
-2794,"NAD83(HARN) / Iowa North",9001,4152,11431,9802,8821,41.3,9110,8822,-93.3,9110,8823,43.16,9110,8824,42.04,9110,8826,1500000.0,9001,8827,1000000.0,9001,,,
-2795,"NAD83(HARN) / Iowa South",9001,4152,11432,9802,8821,40.0,9110,8822,-93.3,9110,8823,41.47,9110,8824,40.37,9110,8826,500000.0,9001,8827,0.0,9001,,,
-2796,"NAD83(HARN) / Kansas North",9001,4152,11531,9802,8821,38.2,9110,8822,-98.0,9110,8823,39.47,9110,8824,38.43,9110,8826,400000.0,9001,8827,0.0,9001,,,
-2797,"NAD83(HARN) / Kansas South",9001,4152,11532,9802,8821,36.4,9110,8822,-98.3,9110,8823,38.34,9110,8824,37.16,9110,8826,400000.0,9001,8827,400000.0,9001,,,
-2798,"NAD83(HARN) / Kentucky North",9001,4152,15303,9802,8821,37.3,9110,8822,-84.15,9110,8823,37.58,9110,8824,38.58,9110,8826,500000.0,9001,8827,0.0,9001,,,
-2799,"NAD83(HARN) / Kentucky South",9001,4152,11632,9802,8821,36.2,9110,8822,-85.45,9110,8823,37.56,9110,8824,36.44,9110,8826,500000.0,9001,8827,500000.0,9001,,,
-2800,"NAD83(HARN) / Louisiana North",9001,4152,11731,9802,8821,30.3,9110,8822,-92.3,9110,8823,32.4,9110,8824,31.1,9110,8826,1000000.0,9001,8827,0.0,9001,,,
-2801,"NAD83(HARN) / Louisiana South",9001,4152,11732,9802,8821,28.3,9110,8822,-91.2,9110,8823,30.42,9110,8824,29.18,9110,8826,1000000.0,9001,8827,0.0,9001,,,
-2802,"NAD83(HARN) / Maine East",9001,4152,11831,9807,8801,43.4,9110,8802,-68.3,9110,8805,0.9999,9201,8806,300000.0,9001,8807,0.0,9001,,,,,,
-2803,"NAD83(HARN) / Maine West",9001,4152,11832,9807,8801,42.5,9110,8802,-70.1,9110,8805,0.999966667,9201,8806,900000.0,9001,8807,0.0,9001,,,,,,
-2804,"NAD83(HARN) / Maryland",9001,4152,11930,9802,8821,37.4,9110,8822,-77.0,9110,8823,39.27,9110,8824,38.18,9110,8826,400000.0,9001,8827,0.0,9001,,,
-2805,"NAD83(HARN) / Massachusetts Mainland",9001,4152,12031,9802,8821,41.0,9110,8822,-71.3,9110,8823,42.41,9110,8824,41.43,9110,8826,200000.0,9001,8827,750000.0,9001,,,
-2806,"NAD83(HARN) / Massachusetts Island",9001,4152,12032,9802,8821,41.0,9110,8822,-70.3,9110,8823,41.29,9110,8824,41.17,9110,8826,500000.0,9001,8827,0.0,9001,,,
-2807,"NAD83(HARN) / Michigan North",9001,4152,12141,9802,8821,44.47,9110,8822,-87.0,9110,8823,47.05,9110,8824,45.29,9110,8826,8000000.0,9001,8827,0.0,9001,,,
-2808,"NAD83(HARN) / Michigan Central",9001,4152,12142,9802,8821,43.19,9110,8822,-84.22,9110,8823,45.42,9110,8824,44.11,9110,8826,6000000.0,9001,8827,0.0,9001,,,
-2809,"NAD83(HARN) / Michigan South",9001,4152,12143,9802,8821,41.3,9110,8822,-84.22,9110,8823,43.4,9110,8824,42.06,9110,8826,4000000.0,9001,8827,0.0,9001,,,
-2810,"NAD83(HARN) / Minnesota North",9001,4152,12231,9802,8821,46.3,9110,8822,-93.06,9110,8823,48.38,9110,8824,47.02,9110,8826,800000.0,9001,8827,100000.0,9001,,,
-2811,"NAD83(HARN) / Minnesota Central",9001,4152,12232,9802,8821,45.0,9110,8822,-94.15,9110,8823,47.03,9110,8824,45.37,9110,8826,800000.0,9001,8827,100000.0,9001,,,
-2812,"NAD83(HARN) / Minnesota South",9001,4152,12233,9802,8821,43.0,9110,8822,-94.0,9110,8823,45.13,9110,8824,43.47,9110,8826,800000.0,9001,8827,100000.0,9001,,,
-2813,"NAD83(HARN) / Mississippi East",9001,4152,12331,9807,8801,29.3,9110,8802,-88.5,9110,8805,0.99995,9201,8806,300000.0,9001,8807,0.0,9001,,,,,,
-2814,"NAD83(HARN) / Mississippi West",9001,4152,12332,9807,8801,29.3,9110,8802,-90.2,9110,8805,0.99995,9201,8806,700000.0,9001,8807,0.0,9001,,,,,,
-2815,"NAD83(HARN) / Missouri East",9001,4152,12431,9807,8801,35.5,9110,8802,-90.3,9110,8805,0.999933333,9201,8806,250000.0,9001,8807,0.0,9001,,,,,,
-2816,"NAD83(HARN) / Missouri Central",9001,4152,12432,9807,8801,35.5,9110,8802,-92.3,9110,8805,0.999933333,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2817,"NAD83(HARN) / Missouri West",9001,4152,12433,9807,8801,36.1,9110,8802,-94.3,9110,8805,0.999941177,9201,8806,850000.0,9001,8807,0.0,9001,,,,,,
-2818,"NAD83(HARN) / Montana",9001,4152,12530,9802,8821,44.15,9110,8822,-109.3,9110,8823,49.0,9110,8824,45.0,9110,8826,600000.0,9001,8827,0.0,9001,,,
-2819,"NAD83(HARN) / Nebraska",9001,4152,12630,9802,8821,39.5,9110,8822,-100.0,9110,8823,43.0,9110,8824,40.0,9110,8826,500000.0,9001,8827,0.0,9001,,,
-2820,"NAD83(HARN) / Nevada East",9001,4152,12731,9807,8801,34.45,9110,8802,-115.35,9110,8805,0.9999,9201,8806,200000.0,9001,8807,8000000.0,9001,,,,,,
-2821,"NAD83(HARN) / Nevada Central",9001,4152,12732,9807,8801,34.45,9110,8802,-116.4,9110,8805,0.9999,9201,8806,500000.0,9001,8807,6000000.0,9001,,,,,,
-2822,"NAD83(HARN) / Nevada West",9001,4152,12733,9807,8801,34.45,9110,8802,-118.35,9110,8805,0.9999,9201,8806,800000.0,9001,8807,4000000.0,9001,,,,,,
-2823,"NAD83(HARN) / New Hampshire",9001,4152,12830,9807,8801,42.3,9110,8802,-71.4,9110,8805,0.999966667,9201,8806,300000.0,9001,8807,0.0,9001,,,,,,
-2824,"NAD83(HARN) / New Jersey",9001,4152,12930,9807,8801,38.5,9110,8802,-74.3,9110,8805,0.9999,9201,8806,150000.0,9001,8807,0.0,9001,,,,,,
-2825,"NAD83(HARN) / New Mexico East",9001,4152,13031,9807,8801,31.0,9110,8802,-104.2,9110,8805,0.999909091,9201,8806,165000.0,9001,8807,0.0,9001,,,,,,
-2826,"NAD83(HARN) / New Mexico Central",9001,4152,13032,9807,8801,31.0,9110,8802,-106.15,9110,8805,0.9999,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2827,"NAD83(HARN) / New Mexico West",9001,4152,13033,9807,8801,31.0,9110,8802,-107.5,9110,8805,0.999916667,9201,8806,830000.0,9001,8807,0.0,9001,,,,,,
-2828,"NAD83(HARN) / New York East",9001,4152,13131,9807,8801,38.5,9110,8802,-74.3,9110,8805,0.9999,9201,8806,150000.0,9001,8807,0.0,9001,,,,,,
-2829,"NAD83(HARN) / New York Central",9001,4152,13132,9807,8801,40.0,9110,8802,-76.35,9110,8805,0.9999375,9201,8806,250000.0,9001,8807,0.0,9001,,,,,,
-2830,"NAD83(HARN) / New York West",9001,4152,13133,9807,8801,40.0,9110,8802,-78.35,9110,8805,0.9999375,9201,8806,350000.0,9001,8807,0.0,9001,,,,,,
-2831,"NAD83(HARN) / New York Long Island",9001,4152,13134,9802,8821,40.1,9110,8822,-74.0,9110,8823,41.02,9110,8824,40.4,9110,8826,300000.0,9001,8827,0.0,9001,,,
-2832,"NAD83(HARN) / North Dakota North",9001,4152,13331,9802,8821,47.0,9110,8822,-100.3,9110,8823,48.44,9110,8824,47.26,9110,8826,600000.0,9001,8827,0.0,9001,,,
-2833,"NAD83(HARN) / North Dakota South",9001,4152,13332,9802,8821,45.4,9110,8822,-100.3,9110,8823,47.29,9110,8824,46.11,9110,8826,600000.0,9001,8827,0.0,9001,,,
-2834,"NAD83(HARN) / Ohio North",9001,4152,13431,9802,8821,39.4,9110,8822,-82.3,9110,8823,41.42,9110,8824,40.26,9110,8826,600000.0,9001,8827,0.0,9001,,,
-2835,"NAD83(HARN) / Ohio South",9001,4152,13432,9802,8821,38.0,9110,8822,-82.3,9110,8823,40.02,9110,8824,38.44,9110,8826,600000.0,9001,8827,0.0,9001,,,
-2836,"NAD83(HARN) / Oklahoma North",9001,4152,13531,9802,8821,35.0,9110,8822,-98.0,9110,8823,36.46,9110,8824,35.34,9110,8826,600000.0,9001,8827,0.0,9001,,,
-2837,"NAD83(HARN) / Oklahoma South",9001,4152,13532,9802,8821,33.2,9110,8822,-98.0,9110,8823,35.14,9110,8824,33.56,9110,8826,600000.0,9001,8827,0.0,9001,,,
-2838,"NAD83(HARN) / Oregon North",9001,4152,13631,9802,8821,43.4,9110,8822,-120.3,9110,8823,46.0,9110,8824,44.2,9110,8826,2500000.0,9001,8827,0.0,9001,,,
-2839,"NAD83(HARN) / Oregon South",9001,4152,13632,9802,8821,41.4,9110,8822,-120.3,9110,8823,44.0,9110,8824,42.2,9110,8826,1500000.0,9001,8827,0.0,9001,,,
-2840,"NAD83(HARN) / Rhode Island",9001,4152,13830,9807,8801,41.05,9110,8802,-71.3,9110,8805,0.99999375,9201,8806,100000.0,9001,8807,0.0,9001,,,,,,
-2841,"NAD83(HARN) / South Dakota North",9001,4152,14031,9802,8821,43.5,9110,8822,-100.0,9110,8823,45.41,9110,8824,44.25,9110,8826,600000.0,9001,8827,0.0,9001,,,
-2842,"NAD83(HARN) / South Dakota South",9001,4152,14032,9802,8821,42.2,9110,8822,-100.2,9110,8823,44.24,9110,8824,42.5,9110,8826,600000.0,9001,8827,0.0,9001,,,
-2843,"NAD83(HARN) / Tennessee",9001,4152,14130,9802,8821,34.2,9110,8822,-86.0,9110,8823,36.25,9110,8824,35.15,9110,8826,600000.0,9001,8827,0.0,9001,,,
-2844,"NAD83(HARN) / Texas North",9001,4152,14231,9802,8821,34.0,9110,8822,-101.3,9110,8823,36.11,9110,8824,34.39,9110,8826,200000.0,9001,8827,1000000.0,9001,,,
-2845,"NAD83(HARN) / Texas North Central",9001,4152,14232,9802,8821,31.4,9110,8822,-98.3,9110,8823,33.58,9110,8824,32.08,9110,8826,600000.0,9001,8827,2000000.0,9001,,,
-2846,"NAD83(HARN) / Texas Central",9001,4152,14233,9802,8821,29.4,9110,8822,-100.2,9110,8823,31.53,9110,8824,30.07,9110,8826,700000.0,9001,8827,3000000.0,9001,,,
-2847,"NAD83(HARN) / Texas South Central",9001,4152,14234,9802,8821,27.5,9110,8822,-99.0,9110,8823,30.17,9110,8824,28.23,9110,8826,600000.0,9001,8827,4000000.0,9001,,,
-2848,"NAD83(HARN) / Texas South",9001,4152,14235,9802,8821,25.4,9110,8822,-98.3,9110,8823,27.5,9110,8824,26.1,9110,8826,300000.0,9001,8827,5000000.0,9001,,,
-2849,"NAD83(HARN) / Utah North",9001,4152,14331,9802,8821,40.2,9110,8822,-111.3,9110,8823,41.47,9110,8824,40.43,9110,8826,500000.0,9001,8827,1000000.0,9001,,,
-2850,"NAD83(HARN) / Utah Central",9001,4152,14332,9802,8821,38.2,9110,8822,-111.3,9110,8823,40.39,9110,8824,39.01,9110,8826,500000.0,9001,8827,2000000.0,9001,,,
-2851,"NAD83(HARN) / Utah South",9001,4152,14333,9802,8821,36.4,9110,8822,-111.3,9110,8823,38.21,9110,8824,37.13,9110,8826,500000.0,9001,8827,3000000.0,9001,,,
-2852,"NAD83(HARN) / Vermont",9001,4152,14430,9807,8801,42.3,9110,8802,-72.3,9110,8805,0.999964286,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2853,"NAD83(HARN) / Virginia North",9001,4152,14531,9802,8821,37.4,9110,8822,-78.3,9110,8823,39.12,9110,8824,38.02,9110,8826,3500000.0,9001,8827,2000000.0,9001,,,
-2854,"NAD83(HARN) / Virginia South",9001,4152,14532,9802,8821,36.2,9110,8822,-78.3,9110,8823,37.58,9110,8824,36.46,9110,8826,3500000.0,9001,8827,1000000.0,9001,,,
-2855,"NAD83(HARN) / Washington North",9001,4152,14631,9802,8821,47.0,9110,8822,-120.5,9110,8823,48.44,9110,8824,47.3,9110,8826,500000.0,9001,8827,0.0,9001,,,
-2856,"NAD83(HARN) / Washington South",9001,4152,14632,9802,8821,45.2,9110,8822,-120.3,9110,8823,47.2,9110,8824,45.5,9110,8826,500000.0,9001,8827,0.0,9001,,,
-2857,"NAD83(HARN) / West Virginia North",9001,4152,14731,9802,8821,38.3,9110,8822,-79.3,9110,8823,40.15,9110,8824,39.0,9110,8826,600000.0,9001,8827,0.0,9001,,,
-2858,"NAD83(HARN) / West Virginia South",9001,4152,14732,9802,8821,37.0,9110,8822,-81.0,9110,8823,38.53,9110,8824,37.29,9110,8826,600000.0,9001,8827,0.0,9001,,,
-2859,"NAD83(HARN) / Wisconsin North",9001,4152,14831,9802,8821,45.1,9110,8822,-90.0,9110,8823,46.46,9110,8824,45.34,9110,8826,600000.0,9001,8827,0.0,9001,,,
-2860,"NAD83(HARN) / Wisconsin Central",9001,4152,14832,9802,8821,43.5,9110,8822,-90.0,9110,8823,45.3,9110,8824,44.15,9110,8826,600000.0,9001,8827,0.0,9001,,,
-2861,"NAD83(HARN) / Wisconsin South",9001,4152,14833,9802,8821,42.0,9110,8822,-90.0,9110,8823,44.04,9110,8824,42.44,9110,8826,600000.0,9001,8827,0.0,9001,,,
-2862,"NAD83(HARN) / Wyoming East",9001,4152,14931,9807,8801,40.3,9110,8802,-105.1,9110,8805,0.9999375,9201,8806,200000.0,9001,8807,0.0,9001,,,,,,
-2863,"NAD83(HARN) / Wyoming East Central",9001,4152,14932,9807,8801,40.3,9110,8802,-107.2,9110,8805,0.9999375,9201,8806,400000.0,9001,8807,100000.0,9001,,,,,,
-2864,"NAD83(HARN) / Wyoming West Central",9001,4152,14933,9807,8801,40.3,9110,8802,-108.45,9110,8805,0.9999375,9201,8806,600000.0,9001,8807,0.0,9001,,,,,,
-2865,"NAD83(HARN) / Wyoming West",9001,4152,14934,9807,8801,40.3,9110,8802,-110.05,9110,8805,0.9999375,9201,8806,800000.0,9001,8807,100000.0,9001,,,,,,
-2866,"NAD83(HARN) / Puerto Rico & Virgin Is.",9001,4152,15230,9802,8821,17.5,9110,8822,-66.26,9110,8823,18.26,9110,8824,18.02,9110,8826,200000.0,9001,8827,200000.0,9001,,,
-2867,"NAD83(HARN) / Arizona East (ft)",9002,4152,15304,9807,8801,31.0,9110,8802,-110.1,9110,8805,0.9999,9201,8806,700000.0,9002,8807,0.0,9002,,,,,,
-2868,"NAD83(HARN) / Arizona Central (ft)",9002,4152,15305,9807,8801,31.0,9110,8802,-111.55,9110,8805,0.9999,9201,8806,700000.0,9002,8807,0.0,9002,,,,,,
-2869,"NAD83(HARN) / Arizona West (ft)",9002,4152,15306,9807,8801,31.0,9110,8802,-113.45,9110,8805,0.999933333,9201,8806,700000.0,9002,8807,0.0,9002,,,,,,
-2870,"NAD83(HARN) / California zone 1 (ftUS)",9003,4152,15307,9802,8821,39.2,9110,8822,-122.0,9110,8823,41.4,9110,8824,40.0,9110,8826,6561666.667,9003,8827,1640416.667,9003,,,
-2871,"NAD83(HARN) / California zone 2 (ftUS)",9003,4152,15308,9802,8821,37.4,9110,8822,-122.0,9110,8823,39.5,9110,8824,38.2,9110,8826,6561666.667,9003,8827,1640416.667,9003,,,
-2872,"NAD83(HARN) / California zone 3 (ftUS)",9003,4152,15309,9802,8821,36.3,9110,8822,-120.3,9110,8823,38.26,9110,8824,37.04,9110,8826,6561666.667,9003,8827,1640416.667,9003,,,
-2873,"NAD83(HARN) / California zone 4 (ftUS)",9003,4152,15310,9802,8821,35.2,9110,8822,-119.0,9110,8823,37.15,9110,8824,36.0,9110,8826,6561666.667,9003,8827,1640416.667,9003,,,
-2874,"NAD83(HARN) / California zone 5 (ftUS)",9003,4152,15311,9802,8821,33.3,9110,8822,-118.0,9110,8823,35.28,9110,8824,34.02,9110,8826,6561666.667,9003,8827,1640416.667,9003,,,
-2875,"NAD83(HARN) / California zone 6 (ftUS)",9003,4152,15312,9802,8821,32.1,9110,8822,-116.15,9110,8823,33.53,9110,8824,32.47,9110,8826,6561666.667,9003,8827,1640416.667,9003,,,
-2876,"NAD83(HARN) / Colorado North (ftUS)",9003,4152,15313,9802,8821,39.2,9110,8822,-105.3,9110,8823,40.47,9110,8824,39.43,9110,8826,3000000.0,9003,8827,1000000.0,9003,,,
-2877,"NAD83(HARN) / Colorado Central (ftUS)",9003,4152,15314,9802,8821,37.5,9110,8822,-105.3,9110,8823,39.45,9110,8824,38.27,9110,8826,3000000.0,9003,8827,1000000.0,9003,,,
-2878,"NAD83(HARN) / Colorado South (ftUS)",9003,4152,15315,9802,8821,36.4,9110,8822,-105.3,9110,8823,38.26,9110,8824,37.14,9110,8826,3000000.0,9003,8827,1000000.0,9003,,,
-2879,"NAD83(HARN) / Connecticut (ftUS)",9003,4152,15316,9802,8821,40.5,9110,8822,-72.45,9110,8823,41.52,9110,8824,41.12,9110,8826,1000000.0,9003,8827,500000.0,9003,,,
-2880,"NAD83(HARN) / Delaware (ftUS)",9003,4152,15317,9807,8801,38.0,9110,8802,-75.25,9110,8805,0.999995,9201,8806,656166.667,9003,8807,0.0,9003,,,,,,
-2881,"NAD83(HARN) / Florida East (ftUS)",9003,4152,15318,9807,8801,24.2,9110,8802,-81.0,9110,8805,0.999941177,9201,8806,656166.667,9003,8807,0.0,9003,,,,,,
-2882,"NAD83(HARN) / Florida West (ftUS)",9003,4152,15319,9807,8801,24.2,9110,8802,-82.0,9110,8805,0.999941177,9201,8806,656166.667,9003,8807,0.0,9003,,,,,,
-2883,"NAD83(HARN) / Florida North (ftUS)",9003,4152,15320,9802,8821,29.0,9110,8822,-84.3,9110,8823,30.45,9110,8824,29.35,9110,8826,1968500.0,9003,8827,0.0,9003,,,
-2884,"NAD83(HARN) / Georgia East (ftUS)",9003,4152,15321,9807,8801,30.0,9110,8802,-82.1,9110,8805,0.9999,9201,8806,656166.667,9003,8807,0.0,9003,,,,,,
-2885,"NAD83(HARN) / Georgia West (ftUS)",9003,4152,15322,9807,8801,30.0,9110,8802,-84.1,9110,8805,0.9999,9201,8806,2296583.333,9003,8807,0.0,9003,,,,,,
-2886,"NAD83(HARN) / Idaho East (ftUS)",9003,4152,15323,9807,8801,41.4,9110,8802,-112.1,9110,8805,0.999947368,9201,8806,656166.667,9003,8807,0.0,9003,,,,,,
-2887,"NAD83(HARN) / Idaho Central (ftUS)",9003,4152,15324,9807,8801,41.4,9110,8802,-114.0,9110,8805,0.999947368,9201,8806,1640416.667,9003,8807,0.0,9003,,,,,,
-2888,"NAD83(HARN) / Idaho West (ftUS)",9003,4152,15325,9807,8801,41.4,9110,8802,-115.45,9110,8805,0.999933333,9201,8806,2624666.667,9003,8807,0.0,9003,,,,,,
-2889,"NAD83(HARN) / Indiana East (ftUS)",9003,4152,15326,9807,8801,37.3,9110,8802,-85.4,9110,8805,0.999966667,9201,8806,328083.333,9003,8807,818125.0,9003,,,,,,
-2890,"NAD83(HARN) / Indiana West (ftUS)",9003,4152,15327,9807,8801,37.3,9110,8802,-87.05,9110,8805,0.999966667,9201,8806,2952750.0,9003,8807,818125.0,9003,,,,,,
-2891,"NAD83(HARN) / Kentucky North (ftUS)",9003,4152,15328,9802,8821,37.3,9110,8822,-84.15,9110,8823,37.58,9110,8824,38.58,9110,8826,1640416.667,9003,8827,0.0,9003,,,
-2892,"NAD83(HARN) / Kentucky South (ftUS)",9003,4152,15329,9802,8821,36.2,9110,8822,-85.45,9110,8823,37.56,9110,8824,36.44,9110,8826,1640416.667,9003,8827,1640416.667,9003,,,
-2893,"NAD83(HARN) / Maryland (ftUS)",9003,4152,15330,9802,8821,37.4,9110,8822,-77.0,9110,8823,39.27,9110,8824,38.18,9110,8826,1312333.333,9003,8827,0.0,9003,,,
-2894,"NAD83(HARN) / Massachusetts Mainland (ftUS)",9003,4152,15331,9802,8821,41.0,9110,8822,-71.3,9110,8823,42.41,9110,8824,41.43,9110,8826,656166.667,9003,8827,2460625.0,9003,,,
-2895,"NAD83(HARN) / Massachusetts Island (ftUS)",9003,4152,15332,9802,8821,41.0,9110,8822,-70.3,9110,8823,41.29,9110,8824,41.17,9110,8826,1640416.667,9003,8827,0.0,9003,,,
-2896,"NAD83(HARN) / Michigan North (ft)",9002,4152,15333,9802,8821,44.47,9110,8822,-87.0,9110,8823,47.05,9110,8824,45.29,9110,8826,26246719.16,9002,8827,0.0,9002,,,
-2897,"NAD83(HARN) / Michigan Central (ft)",9002,4152,15334,9802,8821,43.19,9110,8822,-84.22,9110,8823,45.42,9110,8824,44.11,9110,8826,19685039.37,9002,8827,0.0,9002,,,
-2898,"NAD83(HARN) / Michigan South (ft)",9002,4152,15335,9802,8821,41.3,9110,8822,-84.22,9110,8823,43.4,9110,8824,42.06,9110,8826,13123359.58,9002,8827,0.0,9002,,,
-2899,"NAD83(HARN) / Mississippi East (ftUS)",9003,4152,15336,9807,8801,29.3,9110,8802,-88.5,9110,8805,0.99995,9201,8806,984250.0,9003,8807,0.0,9003,,,,,,
-2900,"NAD83(HARN) / Mississippi West (ftUS)",9003,4152,15337,9807,8801,29.3,9110,8802,-90.2,9110,8805,0.99995,9201,8806,2296583.333,9003,8807,0.0,9003,,,,,,
-2901,"NAD83(HARN) / Montana (ft)",9002,4152,15338,9802,8821,44.15,9110,8822,-109.3,9110,8823,49.0,9110,8824,45.0,9110,8826,1968503.937,9002,8827,0.0,9002,,,
-2902,"NAD83(HARN) / New Mexico East (ftUS)",9003,4152,15339,9807,8801,31.0,9110,8802,-104.2,9110,8805,0.999909091,9201,8806,541337.5,9003,8807,0.0,9003,,,,,,
-2903,"NAD83(HARN) / New Mexico Central (ftUS)",9003,4152,15340,9807,8801,31.0,9110,8802,-106.15,9110,8805,0.9999,9201,8806,1640416.667,9003,8807,0.0,9003,,,,,,
-2904,"NAD83(HARN) / New Mexico West (ftUS)",9003,4152,15341,9807,8801,31.0,9110,8802,-107.5,9110,8805,0.999916667,9201,8806,2723091.667,9003,8807,0.0,9003,,,,,,
-2905,"NAD83(HARN) / New York East (ftUS)",9003,4152,15342,9807,8801,38.5,9110,8802,-74.3,9110,8805,0.9999,9201,8806,492125.0,9003,8807,0.0,9003,,,,,,
-2906,"NAD83(HARN) / New York Central (ftUS)",9003,4152,15343,9807,8801,40.0,9110,8802,-76.35,9110,8805,0.9999375,9201,8806,820208.333,9003,8807,0.0,9003,,,,,,
-2907,"NAD83(HARN) / New York West (ftUS)",9003,4152,15344,9807,8801,40.0,9110,8802,-78.35,9110,8805,0.9999375,9201,8806,1148291.667,9003,8807,0.0,9003,,,,,,
-2908,"NAD83(HARN) / New York Long Island (ftUS)",9003,4152,15345,9802,8821,40.1,9110,8822,-74.0,9110,8823,41.02,9110,8824,40.4,9110,8826,984250.0,9003,8827,0.0,9003,,,
-2909,"NAD83(HARN) / North Dakota North (ft)",9002,4152,15347,9802,8821,47.0,9110,8822,-100.3,9110,8823,48.44,9110,8824,47.26,9110,8826,1968503.937,9002,8827,0.0,9002,,,
-2910,"NAD83(HARN) / North Dakota South (ft)",9002,4152,15348,9802,8821,45.4,9110,8822,-100.3,9110,8823,47.29,9110,8824,46.11,9110,8826,1968503.937,9002,8827,0.0,9002,,,
-2911,"NAD83(HARN) / Oklahoma North (ftUS)",9003,4152,15349,9802,8821,35.0,9110,8822,-98.0,9110,8823,36.46,9110,8824,35.34,9110,8826,1968500.0,9003,8827,0.0,9003,,,
-2912,"NAD83(HARN) / Oklahoma South (ftUS)",9003,4152,15350,9802,8821,33.2,9110,8822,-98.0,9110,8823,35.14,9110,8824,33.56,9110,8826,1968500.0,9003,8827,0.0,9003,,,
-2913,"NAD83(HARN) / Oregon North (ft)",9002,4152,15351,9802,8821,43.4,9110,8822,-120.3,9110,8823,46.0,9110,8824,44.2,9110,8826,8202099.738,9002,8827,0.0,9002,,,
-2914,"NAD83(HARN) / Oregon South (ft)",9002,4152,15352,9802,8821,41.4,9110,8822,-120.3,9110,8823,44.0,9110,8824,42.2,9110,8826,4921259.843,9002,8827,0.0,9002,,,
-2915,"NAD83(HARN) / Tennessee (ftUS)",9003,4152,15356,9802,8821,34.2,9110,8822,-86.0,9110,8823,36.25,9110,8824,35.15,9110,8826,1968500.0,9003,8827,0.0,9003,,,
-2916,"NAD83(HARN) / Texas North (ftUS)",9003,4152,15357,9802,8821,34.0,9110,8822,-101.3,9110,8823,36.11,9110,8824,34.39,9110,8826,656166.667,9003,8827,3280833.333,9003,,,
-2917,"NAD83(HARN) / Texas North Central (ftUS)",9003,4152,15358,9802,8821,31.4,9110,8822,-98.3,9110,8823,33.58,9110,8824,32.08,9110,8826,1968500.0,9003,8827,6561666.667,9003,,,
-2918,"NAD83(HARN) / Texas Central (ftUS)",9003,4152,15359,9802,8821,29.4,9110,8822,-100.2,9110,8823,31.53,9110,8824,30.07,9110,8826,2296583.333,9003,8827,9842500.0,9003,,,
-2919,"NAD83(HARN) / Texas South Central (ftUS)",9003,4152,15360,9802,8821,27.5,9110,8822,-99.0,9110,8823,30.17,9110,8824,28.23,9110,8826,1968500.0,9003,8827,13123333.333,9003,,,
-2920,"NAD83(HARN) / Texas South (ftUS)",9003,4152,15361,9802,8821,25.4,9110,8822,-98.3,9110,8823,27.5,9110,8824,26.1,9110,8826,984250.0,9003,8827,16404166.667,9003,,,
-2921,"NAD83(HARN) / Utah North (ft)",9002,4152,15362,9802,8821,40.2,9110,8822,-111.3,9110,8823,41.47,9110,8824,40.43,9110,8826,1640419.948,9002,8827,3280839.895,9002,,,
-2922,"NAD83(HARN) / Utah Central (ft)",9002,4152,15363,9802,8821,38.2,9110,8822,-111.3,9110,8823,40.39,9110,8824,39.01,9110,8826,1640419.948,9002,8827,6561679.79,9002,,,
-2923,"NAD83(HARN) / Utah South (ft)",9002,4152,15364,9802,8821,36.4,9110,8822,-111.3,9110,8823,38.21,9110,8824,37.13,9110,8826,1640419.948,9002,8827,9842519.685,9002,,,
-2924,"NAD83(HARN) / Virginia North (ftUS)",9003,4152,15365,9802,8821,37.4,9110,8822,-78.3,9110,8823,39.12,9110,8824,38.02,9110,8826,11482916.667,9003,8827,6561666.667,9003,,,
-2925,"NAD83(HARN) / Virginia South (ftUS)",9003,4152,15366,9802,8821,36.2,9110,8822,-78.3,9110,8823,37.58,9110,8824,36.46,9110,8826,11482916.667,9003,8827,3280833.333,9003,,,
-2926,"NAD83(HARN) / Washington North (ftUS)",9003,4152,15367,9802,8821,47.0,9110,8822,-120.5,9110,8823,48.44,9110,8824,47.3,9110,8826,1640416.667,9003,8827,0.0,9003,,,
-2927,"NAD83(HARN) / Washington South (ftUS)",9003,4152,15368,9802,8821,45.2,9110,8822,-120.3,9110,8823,47.2,9110,8824,45.5,9110,8826,1640416.667,9003,8827,0.0,9003,,,
-2928,"NAD83(HARN) / Wisconsin North (ftUS)",9003,4152,15369,9802,8821,45.1,9110,8822,-90.0,9110,8823,46.46,9110,8824,45.34,9110,8826,1968500.0,9003,8827,0.0,9003,,,
-2929,"NAD83(HARN) / Wisconsin Central (ftUS)",9003,4152,15370,9802,8821,43.5,9110,8822,-90.0,9110,8823,45.3,9110,8824,44.15,9110,8826,1968500.0,9003,8827,0.0,9003,,,
-2930,"NAD83(HARN) / Wisconsin South (ftUS)",9003,4152,15371,9802,8821,42.0,9110,8822,-90.0,9110,8823,44.04,9110,8824,42.44,9110,8826,1968500.0,9003,8827,0.0,9003,,,
-2931,"Beduaram / TM 13 NE",9003,4213,16413,9807,8801,0.0,9102,8802,13.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2932,"QND95 / Qatar National Grid",9001,4614,19919,9807,8801,24.27,9110,8802,51.13,9110,8805,0.99999,9201,8806,200000.0,9001,8807,300000.0,9001,,,,,,
-2933,"Segara / UTM zone 50S",9001,4613,16150,9807,8801,0.0,9102,8802,117.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-2934,"Segara (Jakarta) / NEIEZ",9001,4820,19905,9804,8801,0.0,9102,8802,110.0,9102,8805,0.997,9201,8806,3900000.0,9001,8807,900000.0,9001,,,,,,
-2935,"Pulkovo 1942 / CS63 zone A1",9001,4284,18441,9807,8801,0.07,9110,8802,41.32,9110,8805,1.0,9003,8806,1300000.0,9001,8807,0.0,9001,,,,,,
-2936,"Pulkovo 1942 / CS63 zone A2",9001,4284,18442,9807,8801,0.07,9110,8802,44.32,9110,8805,1.0,9003,8806,2300000.0,9001,8807,0.0,9001,,,,,,
-2937,"Pulkovo 1942 / CS63 zone A3",9001,4284,18443,9807,8801,0.07,9110,8802,47.32,9110,8805,1.0,9201,8806,3300000.0,9001,8807,0.0,9001,,,,,,
-2938,"Pulkovo 1942 / CS63 zone A4",9001,4284,18444,9807,8801,0.07,9110,8802,50.32,9110,8805,1.0,9201,8806,4300000.0,9001,8807,0.0,9001,,,,,,
-2939,"Pulkovo 1942 / CS63 zone K2",9001,4284,18446,9807,8801,0.08,9110,8802,50.46,9110,8805,1.0,9201,8806,2300000.0,9001,8807,0.0,9001,,,,,,
-2940,"Pulkovo 1942 / CS63 zone K3",9001,4284,18447,9807,8801,0.08,9110,8802,53.46,9110,8805,1.0,9201,8806,3300000.0,9001,8807,0.0,9001,,,,,,
-2941,"Pulkovo 1942 / CS63 zone K4",9001,4284,18448,9807,8801,0.08,9110,8802,56.46,9110,8805,1.0,9201,8806,4300000.0,9001,8807,0.0,9001,,,,,,
-2942,"Porto Santo / UTM zone 28N",9001,4615,16028,9807,8801,0.0,9102,8802,-15.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2943,"Selvagem Grande / UTM zone 28N",9001,4616,16028,9807,8801,0.0,9102,8802,-15.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2944,"NAD83(CSRS) / SCoPQ zone 2",9001,4617,17700,9807,8801,0.0,9110,8802,-55.3,9110,8805,0.9999,9201,8806,304800.0,9001,8807,0.0,9001,,,,,,
-2945,"NAD83(CSRS) / MTM zone 3",9001,4617,17703,9807,8801,0.0,9110,8802,-58.3,9110,8805,0.9999,9201,8806,304800.0,9001,8807,0.0,9001,,,,,,
-2946,"NAD83(CSRS) / MTM zone 4",9001,4617,17704,9807,8801,0.0,9110,8802,-61.3,9110,8805,0.9999,9201,8806,304800.0,9001,8807,0.0,9001,,,,,,
-2947,"NAD83(CSRS) / MTM zone 5",9001,4617,17705,9807,8801,0.0,9110,8802,-64.3,9110,8805,0.9999,9201,8806,304800.0,9001,8807,0.0,9001,,,,,,
-2948,"NAD83(CSRS) / MTM zone 6",9001,4617,17706,9807,8801,0.0,9110,8802,-67.3,9110,8805,0.9999,9201,8806,304800.0,9001,8807,0.0,9001,,,,,,
-2949,"NAD83(CSRS) / MTM zone 7",9001,4617,17707,9807,8801,0.0,9110,8802,-70.3,9110,8805,0.9999,9201,8806,304800.0,9001,8807,0.0,9001,,,,,,
-2950,"NAD83(CSRS) / MTM zone 8",9001,4617,17708,9807,8801,0.0,9110,8802,-73.3,9110,8805,0.9999,9201,8806,304800.0,9001,8807,0.0,9001,,,,,,
-2951,"NAD83(CSRS) / MTM zone 9",9001,4617,17709,9807,8801,0.0,9110,8802,-76.3,9110,8805,0.9999,9201,8806,304800.0,9001,8807,0.0,9001,,,,,,
-2952,"NAD83(CSRS) / MTM zone 10",9001,4617,17710,9807,8801,0.0,9110,8802,-79.3,9110,8805,0.9999,9201,8806,304800.0,9001,8807,0.0,9001,,,,,,
-2953,"NAD83(CSRS) / New Brunswick Stereo",9001,4617,19946,9809,8801,46.3,9110,8802,-66.3,9110,8805,0.999912,9201,8806,2500000.0,9001,8807,7500000.0,9001,,,,,,
-2954,"NAD83(CSRS) / Prince Edward Isl. Stereographic (NAD83)",9001,4617,19960,9809,8801,47.15,9110,8802,-63.0,9110,8805,0.999912,9201,8806,400000.0,9001,8807,800000.0,9001,,,,,,
-2955,"NAD83(CSRS) / UTM zone 11N",9001,4617,16011,9807,8801,0.0,9102,8802,-117.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2956,"NAD83(CSRS) / UTM zone 12N",9001,4617,16012,9807,8801,0.0,9102,8802,-111.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2957,"NAD83(CSRS) / UTM zone 13N",9001,4617,16013,9807,8801,0.0,9102,8802,-105.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2958,"NAD83(CSRS) / UTM zone 17N",9001,4617,16017,9807,8801,0.0,9102,8802,-81.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2959,"NAD83(CSRS) / UTM zone 18N",9001,4617,16018,9807,8801,0.0,9102,8802,-75.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2960,"NAD83(CSRS) / UTM zone 19N",9001,4617,16019,9807,8801,0.0,9102,8802,-69.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2961,"NAD83(CSRS) / UTM zone 20N",9001,4617,16020,9807,8801,0.0,9102,8802,-63.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2962,"NAD83(CSRS) / UTM zone 21N",9001,4617,16021,9807,8801,0.0,9102,8802,-57.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-2963,"Lisbon 1890 (Lisbon) / Portugal Bonne",9001,4904,19979,9828,8801,39.4,9110,8802,1.0,9110,8806,0.0,9001,8807,0.0,9001,,,,,,,,,
-3036,"Moznet / UTM zone 36S",9001,4130,16136,9807,8801,0.0,9102,8802,33.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-3037,"Moznet / UTM zone 37S",9001,4130,16137,9807,8801,0.0,9102,8802,39.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-3148,"Indian 1960 / UTM zone 48N",9001,4131,16048,9807,8801,0.0,9102,8802,105.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-3149,"Indian 1960 / UTM zone 49N",9001,4131,16049,9807,8801,0.0,9102,8802,111.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-3176,"Indian 1960 / TM 106 NE",9001,4131,16506,9807,8801,0.0,9102,8802,106.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-3200,"FD58 / Iraq zone",9001,4132,19906,9801,8801,32.3,9110,8802,45.0,9110,8805,0.9987864078,9201,8806,1500000.0,9001,8807,1166200.0,9001,,,,,,
-3300,Estonian Coordinate System of 1992,9001,4133,19938,9802,8821,57.310319415,9110,8822,24.0,9110,8823,59.2,9110,8824,58.0,9110,8826,500000.0,9001,8827,6375000.0,9001,,,
-3301,Estonian Coordinate System of 1997,9001,4180,19938,9802,8821,57.310319415,9110,8822,24.0,9110,8823,59.2,9110,8824,58.0,9110,8826,500000.0,9001,8827,6375000.0,9001,,,
-3439,"PSD93 / UTM zone 39N",9001,4134,16039,9807,8801,0.0,9102,8802,51.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-3440,"PSD93 / UTM zone 40N",9001,4134,16040,9807,8801,0.0,9102,8802,57.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-3561,"Old Hawaiian / Hawaii zone 1",9003,4135,15101,9807,8801,18.5,9110,8802,-155.3,9110,8805,0.999966667,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-3562,"Old Hawaiian / Hawaii zone 2",9003,4135,15102,9807,8801,20.2,9110,8802,-156.4,9110,8805,0.999966667,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-3563,"Old Hawaiian / Hawaii zone 3",9003,4135,15103,9807,8801,21.1,9110,8802,-158.0,9110,8805,0.99999,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-3564,"Old Hawaiian / Hawaii zone 4",9003,4135,15104,9807,8801,21.5,9110,8802,-159.3,9110,8805,0.99999,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-3565,"Old Hawaiian / Hawaii zone 5",9003,4135,15105,9807,8801,21.4,9110,8802,-160.1,9110,8805,1.0,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-3920,"Puerto Rico / UTM zone 20N",9001,4139,16020,9807,8801,0.0,9102,8802,-63.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-3991,Puerto Rico State Plane CS of 1927,9003,4139,15201,9802,8821,17.5,9110,8822,-66.26,9110,8823,18.26,9110,8824,18.02,9110,8826,500000.0,9003,8827,0.0,9003,,,
-3992,"Puerto Rico / St. Croix",9003,4139,15202,9802,8821,17.5,9110,8822,-66.26,9110,8823,18.26,9110,8824,18.02,9110,8826,500000.0,9003,8827,100000.0,9003,,,
-20004,"Pulkovo 1995 / Gauss-Kruger zone 4",9001,4200,16204,9807,8801,0.0,9102,8802,21.0,9102,8805,1.0,9201,8806,4500000.0,9001,8807,0.0,9001,,,,,,
-20005,"Pulkovo 1995 / Gauss-Kruger zone 5",9001,4200,16205,9807,8801,0.0,9102,8802,27.0,9102,8805,1.0,9201,8806,5500000.0,9001,8807,0.0,9001,,,,,,
-20006,"Pulkovo 1995 / Gauss-Kruger zone 6",9001,4200,16206,9807,8801,0.0,9102,8802,33.0,9102,8805,1.0,9201,8806,6500000.0,9001,8807,0.0,9001,,,,,,
-20007,"Pulkovo 1995 / Gauss-Kruger zone 7",9001,4200,16207,9807,8801,0.0,9102,8802,39.0,9102,8805,1.0,9201,8806,7500000.0,9001,8807,0.0,9001,,,,,,
-20008,"Pulkovo 1995 / Gauss-Kruger zone 8",9001,4200,16208,9807,8801,0.0,9102,8802,45.0,9102,8805,1.0,9201,8806,8500000.0,9001,8807,0.0,9001,,,,,,
-20009,"Pulkovo 1995 / Gauss-Kruger zone 9",9001,4200,16209,9807,8801,0.0,9102,8802,51.0,9102,8805,1.0,9201,8806,9500000.0,9001,8807,0.0,9001,,,,,,
-20010,"Pulkovo 1995 / Gauss-Kruger zone 10",9001,4200,16210,9807,8801,0.0,9102,8802,57.0,9102,8805,1.0,9201,8806,10500000.0,9001,8807,0.0,9001,,,,,,
-20011,"Pulkovo 1995 / Gauss-Kruger zone 11",9001,4200,16211,9807,8801,0.0,9102,8802,63.0,9102,8805,1.0,9201,8806,11500000.0,9001,8807,0.0,9001,,,,,,
-20012,"Pulkovo 1995 / Gauss-Kruger zone 12",9001,4200,16212,9807,8801,0.0,9102,8802,69.0,9102,8805,1.0,9201,8806,12500000.0,9001,8807,0.0,9001,,,,,,
-20013,"Pulkovo 1995 / Gauss-Kruger zone 13",9001,4200,16213,9807,8801,0.0,9102,8802,75.0,9102,8805,1.0,9201,8806,13500000.0,9001,8807,0.0,9001,,,,,,
-20014,"Pulkovo 1995 / Gauss-Kruger zone 14",9001,4200,16214,9807,8801,0.0,9102,8802,81.0,9102,8805,1.0,9201,8806,14500000.0,9001,8807,0.0,9001,,,,,,
-20015,"Pulkovo 1995 / Gauss-Kruger zone 15",9001,4200,16215,9807,8801,0.0,9102,8802,87.0,9102,8805,1.0,9201,8806,15500000.0,9001,8807,0.0,9001,,,,,,
-20016,"Pulkovo 1995 / Gauss-Kruger zone 16",9001,4200,16216,9807,8801,0.0,9102,8802,93.0,9102,8805,1.0,9201,8806,16500000.0,9001,8807,0.0,9001,,,,,,
-20017,"Pulkovo 1995 / Gauss-Kruger zone 17",9001,4200,16217,9807,8801,0.0,9102,8802,99.0,9102,8805,1.0,9201,8806,17500000.0,9001,8807,0.0,9001,,,,,,
-20018,"Pulkovo 1995 / Gauss-Kruger zone 18",9001,4200,16218,9807,8801,0.0,9102,8802,105.0,9102,8805,1.0,9201,8806,18500000.0,9001,8807,0.0,9001,,,,,,
-20019,"Pulkovo 1995 / Gauss-Kruger zone 19",9001,4200,16219,9807,8801,0.0,9102,8802,111.0,9102,8805,1.0,9201,8806,19500000.0,9001,8807,0.0,9001,,,,,,
-20020,"Pulkovo 1995 / Gauss-Kruger zone 20",9001,4200,16220,9807,8801,0.0,9102,8802,117.0,9102,8805,1.0,9201,8806,20500000.0,9001,8807,0.0,9001,,,,,,
-20021,"Pulkovo 1995 / Gauss-Kruger zone 21",9001,4200,16221,9807,8801,0.0,9102,8802,123.0,9102,8805,1.0,9201,8806,21500000.0,9001,8807,0.0,9001,,,,,,
-20022,"Pulkovo 1995 / Gauss-Kruger zone 22",9001,4200,16222,9807,8801,0.0,9102,8802,129.0,9102,8805,1.0,9201,8806,22500000.0,9001,8807,0.0,9001,,,,,,
-20023,"Pulkovo 1995 / Gauss-Kruger zone 23",9001,4200,16223,9807,8801,0.0,9102,8802,135.0,9102,8805,1.0,9201,8806,23500000.0,9001,8807,0.0,9001,,,,,,
-20024,"Pulkovo 1995 / Gauss-Kruger zone 24",9001,4200,16224,9807,8801,0.0,9102,8802,141.0,9102,8805,1.0,9201,8806,24500000.0,9001,8807,0.0,9001,,,,,,
-20025,"Pulkovo 1995 / Gauss-Kruger zone 25",9001,4200,16225,9807,8801,0.0,9102,8802,147.0,9102,8805,1.0,9201,8806,25500000.0,9001,8807,0.0,9001,,,,,,
-20026,"Pulkovo 1995 / Gauss-Kruger zone 26",9001,4200,16226,9807,8801,0.0,9102,8802,153.0,9102,8805,1.0,9201,8806,26500000.0,9001,8807,0.0,9001,,,,,,
-20027,"Pulkovo 1995 / Gauss-Kruger zone 27",9001,4200,16227,9807,8801,0.0,9102,8802,159.0,9102,8805,1.0,9201,8806,27500000.0,9001,8807,0.0,9001,,,,,,
-20028,"Pulkovo 1995 / Gauss-Kruger zone 28",9001,4200,16228,9807,8801,0.0,9102,8802,165.0,9102,8805,1.0,9201,8806,28500000.0,9001,8807,0.0,9001,,,,,,
-20029,"Pulkovo 1995 / Gauss-Kruger zone 29",9001,4200,16229,9807,8801,0.0,9102,8802,171.0,9102,8805,1.0,9201,8806,29500000.0,9001,8807,0.0,9001,,,,,,
-20030,"Pulkovo 1995 / Gauss-Kruger zone 30",9001,4200,16230,9807,8801,0.0,9102,8802,177.0,9102,8805,1.0,9201,8806,30500000.0,9001,8807,0.0,9001,,,,,,
-20031,"Pulkovo 1995 / Gauss-Kruger zone 31",9001,4200,16231,9807,8801,0.0,9102,8802,-177.0,9102,8805,1.0,9201,8806,31500000.0,9001,8807,0.0,9001,,,,,,
-20032,"Pulkovo 1995 / Gauss-Kruger zone 32",9001,4200,16232,9807,8801,0.0,9102,8802,-171.0,9102,8805,1.0,9201,8806,32500000.0,9001,8807,0.0,9001,,,,,,
-20064,"Pulkovo 1995 / Gauss-Kruger 4N",9001,4200,16304,9807,8801,0.0,9102,8802,21.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-20065,"Pulkovo 1995 / Gauss-Kruger 5N",9001,4200,16305,9807,8801,0.0,9102,8802,27.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-20066,"Pulkovo 1995 / Gauss-Kruger 6N",9001,4200,16306,9807,8801,0.0,9102,8802,33.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-20067,"Pulkovo 1995 / Gauss-Kruger 7N",9001,4200,16307,9807,8801,0.0,9102,8802,39.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-20068,"Pulkovo 1995 / Gauss-Kruger 8N",9001,4200,16308,9807,8801,0.0,9102,8802,45.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-20069,"Pulkovo 1995 / Gauss-Kruger 9N",9001,4200,16309,9807,8801,0.0,9102,8802,51.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-20070,"Pulkovo 1995 / Gauss-Kruger 10N",9001,4200,16310,9807,8801,0.0,9102,8802,57.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-20071,"Pulkovo 1995 / Gauss-Kruger 11N",9001,4200,16311,9807,8801,0.0,9102,8802,63.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-20072,"Pulkovo 1995 / Gauss-Kruger 12N",9001,4200,16312,9807,8801,0.0,9102,8802,69.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-20073,"Pulkovo 1995 / Gauss-Kruger 13N",9001,4200,16313,9807,8801,0.0,9102,8802,75.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-20074,"Pulkovo 1995 / Gauss-Kruger 14N",9001,4200,16314,9807,8801,0.0,9102,8802,81.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-20075,"Pulkovo 1995 / Gauss-Kruger 15N",9001,4200,16315,9807,8801,0.0,9102,8802,87.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-20076,"Pulkovo 1995 / Gauss-Kruger 16N",9001,4200,16316,9807,8801,0.0,9102,8802,93.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-20077,"Pulkovo 1995 / Gauss-Kruger 17N",9001,4200,16317,9807,8801,0.0,9102,8802,99.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-20078,"Pulkovo 1995 / Gauss-Kruger 18N",9001,4200,16318,9807,8801,0.0,9102,8802,105.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-20079,"Pulkovo 1995 / Gauss-Kruger 19N",9001,4200,16319,9807,8801,0.0,9102,8802,111.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-20080,"Pulkovo 1995 / Gauss-Kruger 20N",9001,4200,16320,9807,8801,0.0,9102,8802,117.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-20081,"Pulkovo 1995 / Gauss-Kruger 21N",9001,4200,16321,9807,8801,0.0,9102,8802,123.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-20082,"Pulkovo 1995 / Gauss-Kruger 22N",9001,4200,16322,9807,8801,0.0,9102,8802,129.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-20083,"Pulkovo 1995 / Gauss-Kruger 23N",9001,4200,16323,9807,8801,0.0,9102,8802,135.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-20084,"Pulkovo 1995 / Gauss-Kruger 24N",9001,4200,16324,9807,8801,0.0,9102,8802,141.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-20085,"Pulkovo 1995 / Gauss-Kruger 25N",9001,4200,16325,9807,8801,0.0,9102,8802,147.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-20086,"Pulkovo 1995 / Gauss-Kruger 26N",9001,4200,16326,9807,8801,0.0,9102,8802,153.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-20087,"Pulkovo 1995 / Gauss-Kruger 27N",9001,4200,16327,9807,8801,0.0,9102,8802,159.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-20088,"Pulkovo 1995 / Gauss-Kruger 28N",9001,4200,16328,9807,8801,0.0,9102,8802,165.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-20089,"Pulkovo 1995 / Gauss-Kruger 29N",9001,4200,16329,9807,8801,0.0,9102,8802,171.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-20090,"Pulkovo 1995 / Gauss-Kruger 30N",9001,4200,16330,9807,8801,0.0,9102,8802,177.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-20091,"Pulkovo 1995 / Gauss-Kruger 31N",9001,4200,16331,9807,8801,0.0,9102,8802,-177.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-20092,"Pulkovo 1995 / Gauss-Kruger 32N",9001,4200,16332,9807,8801,0.0,9102,8802,-171.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-20137,"Adindan / UTM zone 37N",9001,4201,16037,9807,8801,0.0,9102,8802,39.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-20138,"Adindan / UTM zone 38N",9001,4201,16038,9807,8801,0.0,9102,8802,45.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-20248,"AGD66 / AMG zone 48",9001,4202,17448,9807,8801,0.0,9102,8802,105.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-20249,"AGD66 / AMG zone 49",9001,4202,17449,9807,8801,0.0,9102,8802,111.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-20250,"AGD66 / AMG zone 50",9001,4202,17450,9807,8801,0.0,9102,8802,117.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-20251,"AGD66 / AMG zone 51",9001,4202,17451,9807,8801,0.0,9102,8802,123.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-20252,"AGD66 / AMG zone 52",9001,4202,17452,9807,8801,0.0,9102,8802,129.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-20253,"AGD66 / AMG zone 53",9001,4202,17453,9807,8801,0.0,9102,8802,135.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-20254,"AGD66 / AMG zone 54",9001,4202,17454,9807,8801,0.0,9102,8802,141.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-20255,"AGD66 / AMG zone 55",9001,4202,17455,9807,8801,0.0,9102,8802,147.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-20256,"AGD66 / AMG zone 56",9001,4202,17456,9807,8801,0.0,9102,8802,153.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-20257,"AGD66 / AMG zone 57",9001,4202,17457,9807,8801,0.0,9102,8802,159.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-20258,"AGD66 / AMG zone 58",9001,4202,17458,9807,8801,0.0,9102,8802,165.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-20348,"AGD84 / AMG zone 48",9001,4203,17448,9807,8801,0.0,9102,8802,105.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-20349,"AGD84 / AMG zone 49",9001,4203,17449,9807,8801,0.0,9102,8802,111.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-20350,"AGD84 / AMG zone 50",9001,4203,17450,9807,8801,0.0,9102,8802,117.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-20351,"AGD84 / AMG zone 51",9001,4203,17451,9807,8801,0.0,9102,8802,123.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-20352,"AGD84 / AMG zone 52",9001,4203,17452,9807,8801,0.0,9102,8802,129.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-20353,"AGD84 / AMG zone 53",9001,4203,17453,9807,8801,0.0,9102,8802,135.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-20354,"AGD84 / AMG zone 54",9001,4203,17454,9807,8801,0.0,9102,8802,141.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-20355,"AGD84 / AMG zone 55",9001,4203,17455,9807,8801,0.0,9102,8802,147.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-20356,"AGD84 / AMG zone 56",9001,4203,17456,9807,8801,0.0,9102,8802,153.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-20357,"AGD84 / AMG zone 57",9001,4203,17457,9807,8801,0.0,9102,8802,159.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-20358,"AGD84 / AMG zone 58",9001,4203,17458,9807,8801,0.0,9102,8802,165.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-20437,"Ain el Abd / UTM zone 37N",9001,4204,16037,9807,8801,0.0,9102,8802,39.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-20438,"Ain el Abd / UTM zone 38N",9001,4204,16038,9807,8801,0.0,9102,8802,45.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-20439,"Ain el Abd / UTM zone 39N",9001,4204,16039,9807,8801,0.0,9102,8802,51.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-20499,"Ain el Abd / Bahrain Grid",9001,4204,19900,9807,8801,0.0,9102,8802,51.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-20538,"Afgooye / UTM zone 38N",9001,4205,16038,9807,8801,0.0,9102,8802,45.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-20539,"Afgooye / UTM zone 39N",9001,4205,16039,9807,8801,0.0,9102,8802,51.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-20790,"Lisbon (Lisbon)/Portuguese National Grid",9001,4803,19936,9807,8801,39.4,9110,8802,1.0,9110,8805,1.0,9201,8806,200000.0,9001,8807,300000.0,9001,,,,,,
-20791,"Lisbon (Lisbon)/Portuguese Grid",9001,4803,19969,9807,8801,39.4,9110,8802,1.0,9110,8805,1.0,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-20822,"Aratu / UTM zone 22S",9001,4208,16122,9807,8801,0.0,9102,8802,-51.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-20823,"Aratu / UTM zone 23S",9001,4208,16123,9807,8801,0.0,9102,8802,-45.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-20824,"Aratu / UTM zone 24S",9001,4208,16124,9807,8801,0.0,9102,8802,-39.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-20934,"Arc 1950 / UTM zone 34S",9001,4209,16134,9807,8801,0.0,9102,8802,21.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-20935,"Arc 1950 / UTM zone 35S",9001,4209,16135,9807,8801,0.0,9102,8802,27.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-20936,"Arc 1950 / UTM zone 36S",9001,4209,16136,9807,8801,0.0,9102,8802,33.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-21035,"Arc 1960 / UTM zone 35S",9001,4210,16135,9807,8801,0.0,9102,8802,27.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-21036,"Arc 1960 / UTM zone 36S",9001,4210,16136,9807,8801,0.0,9102,8802,33.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-21037,"Arc 1960 / UTM zone 37S",9001,4210,16137,9807,8801,0.0,9102,8802,39.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-21095,"Arc 1960 / UTM zone 35N",9001,4210,16035,9807,8801,0.0,9102,8802,27.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-21096,"Arc 1960 / UTM zone 36N",9001,4210,16036,9807,8801,0.0,9102,8802,33.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-21097,"Arc 1960 / UTM zone 37N",9001,4210,16037,9807,8801,0.0,9102,8802,39.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-21100,"Batavia (Jakarta) / NEIEZ",9001,4813,19905,9804,8801,0.0,9102,8802,110.0,9102,8805,0.997,9201,8806,3900000.0,9001,8807,900000.0,9001,,,,,,
-21148,"Batavia / UTM zone 48S",9001,4211,16148,9807,8801,0.0,9102,8802,105.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-21149,"Batavia / UTM zone 49S",9001,4211,16149,9807,8801,0.0,9102,8802,111.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-21150,"Batavia / UTM zone 50S",9001,4211,16150,9807,8801,0.0,9102,8802,117.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-21291,"Barbados 1938 / British West Indies Grid",9001,4212,19942,9807,8801,0.0,9102,8802,-62.0,9102,8805,0.9995,9201,8806,400000.0,9001,8807,0.0,9001,,,,,,
-21292,"Barbados 1938 / Barbados National Grid",9001,4212,19943,9807,8801,13.1035,9110,8802,-59.3335,9110,8805,0.9999986,9201,8806,30000.0,9001,8807,75000.0,9001,,,,,,
-21413,"Beijing 1954 / Gauss-Kruger zone 13",9001,4214,16213,9807,8801,0.0,9102,8802,75.0,9102,8805,1.0,9201,8806,13500000.0,9001,8807,0.0,9001,,,,,,
-21414,"Beijing 1954 / Gauss-Kruger zone 14",9001,4214,16214,9807,8801,0.0,9102,8802,81.0,9102,8805,1.0,9201,8806,14500000.0,9001,8807,0.0,9001,,,,,,
-21415,"Beijing 1954 / Gauss-Kruger zone 15",9001,4214,16215,9807,8801,0.0,9102,8802,87.0,9102,8805,1.0,9201,8806,15500000.0,9001,8807,0.0,9001,,,,,,
-21416,"Beijing 1954 / Gauss-Kruger zone 16",9001,4214,16216,9807,8801,0.0,9102,8802,93.0,9102,8805,1.0,9201,8806,16500000.0,9001,8807,0.0,9001,,,,,,
-21417,"Beijing 1954 / Gauss-Kruger zone 17",9001,4214,16217,9807,8801,0.0,9102,8802,99.0,9102,8805,1.0,9201,8806,17500000.0,9001,8807,0.0,9001,,,,,,
-21418,"Beijing 1954 / Gauss-Kruger zone 18",9001,4214,16218,9807,8801,0.0,9102,8802,105.0,9102,8805,1.0,9201,8806,18500000.0,9001,8807,0.0,9001,,,,,,
-21419,"Beijing 1954 / Gauss-Kruger zone 19",9001,4214,16219,9807,8801,0.0,9102,8802,111.0,9102,8805,1.0,9201,8806,19500000.0,9001,8807,0.0,9001,,,,,,
-21420,"Beijing 1954 / Gauss-Kruger zone 20",9001,4214,16220,9807,8801,0.0,9102,8802,117.0,9102,8805,1.0,9201,8806,20500000.0,9001,8807,0.0,9001,,,,,,
-21421,"Beijing 1954 / Gauss-Kruger zone 21",9001,4214,16221,9807,8801,0.0,9102,8802,123.0,9102,8805,1.0,9201,8806,21500000.0,9001,8807,0.0,9001,,,,,,
-21422,"Beijing 1954 / Gauss-Kruger zone 22",9001,4214,16222,9807,8801,0.0,9102,8802,129.0,9102,8805,1.0,9201,8806,22500000.0,9001,8807,0.0,9001,,,,,,
-21423,"Beijing 1954 / Gauss-Kruger zone 23",9001,4214,16223,9807,8801,0.0,9102,8802,135.0,9102,8805,1.0,9201,8806,23500000.0,9001,8807,0.0,9001,,,,,,
-21453,"Beijing 1954 / Gauss-Kruger CM 75E",9001,4214,16313,9807,8801,0.0,9102,8802,75.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-21454,"Beijing 1954 / Gauss-Kruger CM 81E",9001,4214,16314,9807,8801,0.0,9102,8802,81.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-21455,"Beijing 1954 / Gauss-Kruger CM 87E",9001,4214,16315,9807,8801,0.0,9102,8802,87.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-21456,"Beijing 1954 / Gauss-Kruger CM 93E",9001,4214,16316,9807,8801,0.0,9102,8802,93.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-21457,"Beijing 1954 / Gauss-Kruger CM 99E",9001,4214,16317,9807,8801,0.0,9102,8802,99.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-21458,"Beijing 1954 / Gauss-Kruger CM 105E",9001,4214,16318,9807,8801,0.0,9102,8802,105.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-21459,"Beijing 1954 / Gauss-Kruger CM 111E",9001,4214,16319,9807,8801,0.0,9102,8802,111.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-21460,"Beijing 1954 / Gauss-Kruger CM 117E",9001,4214,16320,9807,8801,0.0,9102,8802,117.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-21461,"Beijing 1954 / Gauss-Kruger CM 123E",9001,4214,16321,9807,8801,0.0,9102,8802,123.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-21462,"Beijing 1954 / Gauss-Kruger CM 129E",9001,4214,16322,9807,8801,0.0,9102,8802,129.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-21463,"Beijing 1954 / Gauss-Kruger CM 135E",9001,4214,16323,9807,8801,0.0,9102,8802,135.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-21473,"Beijing 1954 / Gauss-Kruger 13N",9001,4214,16313,9807,8801,0.0,9102,8802,75.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-21474,"Beijing 1954 / Gauss-Kruger 14N",9001,4214,16314,9807,8801,0.0,9102,8802,81.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-21475,"Beijing 1954 / Gauss-Kruger 15N",9001,4214,16315,9807,8801,0.0,9102,8802,87.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-21476,"Beijing 1954 / Gauss-Kruger 16N",9001,4214,16316,9807,8801,0.0,9102,8802,93.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-21477,"Beijing 1954 / Gauss-Kruger 17N",9001,4214,16317,9807,8801,0.0,9102,8802,99.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-21478,"Beijing 1954 / Gauss-Kruger 18N",9001,4214,16318,9807,8801,0.0,9102,8802,105.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-21479,"Beijing 1954 / Gauss-Kruger 19N",9001,4214,16319,9807,8801,0.0,9102,8802,111.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-21480,"Beijing 1954 / Gauss-Kruger 20N",9001,4214,16320,9807,8801,0.0,9102,8802,117.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-21481,"Beijing 1954 / Gauss-Kruger 21N",9001,4214,16321,9807,8801,0.0,9102,8802,123.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-21482,"Beijing 1954 / Gauss-Kruger 22N",9001,4214,16322,9807,8801,0.0,9102,8802,129.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-21483,"Beijing 1954 / Gauss-Kruger 23N",9001,4214,16323,9807,8801,0.0,9102,8802,135.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-21500,"Belge 1950 (Brussels) / Belge Lambert 50",9001,4809,19901,9802,8821,90.0,9110,8822,0.0,9110,8823,49.5,9110,8824,51.1,9110,8826,150000.0,9001,8827,5400000.0,9001,,,
-21780,"Bern 1898 (Bern) / LV03C",9001,4801,19923,9815,8811,46.570866,9110,8812,0.0,9110,8813,90.0,9110,8814,90.0,9110,8815,1.0,9201,8816,0.0,9001,8817,0.0,9001
-21781,"CH1903 / LV03",9001,4149,19922,9815,8811,46.570866,9110,8812,7.26225,9110,8813,90.0,9110,8814,90.0,9110,8815,1.0,9201,8816,600000.0,9001,8817,200000.0,9001
-21817,"Bogota 1975 / UTM zone 17N",9001,4218,16017,9807,8801,0.0,9102,8802,-81.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-21818,"Bogota 1975 / UTM zone 18N",9001,4218,16018,9807,8801,0.0,9102,8802,-75.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-21891,"Bogota 1975 / Colombia West zone",9001,4218,18051,9807,8801,4.355657,9110,8802,-77.04513,9110,8805,1.0,9201,8806,1000000.0,9001,8807,1000000.0,9001,,,,,,
-21892,"Bogota 1975 / Colombia Bogota zone",9001,4218,18052,9807,8801,4.355657,9110,8802,-74.04513,9110,8805,1.0,9201,8806,1000000.0,9001,8807,1000000.0,9001,,,,,,
-21893,"Bogota 1975 / Colombia East Central zone",9001,4218,18053,9807,8801,4.355657,9110,8802,-71.04513,9110,8805,1.0,9201,8806,1000000.0,9001,8807,1000000.0,9001,,,,,,
-21894,"Bogota 1975 / Colombia East",9001,4218,18054,9807,8801,4.355657,9110,8802,-68.04513,9110,8805,1.0,9201,8806,1000000.0,9001,8807,1000000.0,9001,,,,,,
-22032,"Camacupa / UTM zone 32S",9001,4220,16132,9807,8801,0.0,9102,8802,9.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-22033,"Camacupa / UTM zone 33S",9001,4220,16133,9807,8801,0.0,9102,8802,15.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-22091,"Camacupa / TM 11.30 SE",9001,4220,16611,9807,8801,0.0,9110,8802,11.3,9110,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-22092,"Camacupa / TM 12 SE",9001,4220,16612,9807,8801,0.0,9102,8802,12.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-22191,"Campo Inchauspe / Argentina 1",9001,4221,18031,9807,8801,-90.0,9102,8802,-72.0,9102,8805,1.0,9201,8806,1500000.0,9001,8807,0.0,9001,,,,,,
-22192,"Campo Inchauspe / Argentina 2",9001,4221,18032,9807,8801,-90.0,9102,8802,-69.0,9102,8805,1.0,9201,8806,2500000.0,9001,8807,0.0,9001,,,,,,
-22193,"Campo Inchauspe / Argentina 3",9001,4221,18033,9807,8801,-90.0,9102,8802,-66.0,9102,8805,1.0,9201,8806,3500000.0,9001,8807,0.0,9001,,,,,,
-22194,"Campo Inchauspe / Argentina 4",9001,4221,18034,9807,8801,-90.0,9102,8802,-63.0,9102,8805,1.0,9201,8806,4500000.0,9001,8807,0.0,9001,,,,,,
-22195,"Campo Inchauspe / Argentina 5",9001,4221,18035,9807,8801,-90.0,9102,8802,-60.0,9102,8805,1.0,9201,8806,5500000.0,9001,8807,0.0,9001,,,,,,
-22196,"Campo Inchauspe / Argentina 6",9001,4221,18036,9807,8801,-90.0,9102,8802,-57.0,9102,8805,1.0,9201,8806,6500000.0,9001,8807,0.0,9001,,,,,,
-22197,"Campo Inchauspe / Argentina 7",9001,4221,18037,9807,8801,-90.0,9102,8802,-54.0,9102,8805,1.0,9201,8806,7500000.0,9001,8807,0.0,9001,,,,,,
-22234,"Cape / UTM zone 34S",9001,4222,16134,9807,8801,0.0,9102,8802,21.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-22235,"Cape / UTM zone 35S",9001,4222,16135,9807,8801,0.0,9102,8802,27.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-22236,"Cape / UTM zone 36S",9001,4222,16136,9807,8801,0.0,9102,8802,33.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-22275,South African Coordinate System zone 15,9001,4222,17515,9808,8801,0.0,9102,8802,15.0,9102,8805,1.0,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-22277,South African Coordinate System zone 17,9001,4222,17517,9808,8801,0.0,9102,8802,17.0,9102,8805,1.0,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-22279,South African Coordinate System zone 19,9001,4222,17519,9808,8801,0.0,9102,8802,19.0,9102,8805,1.0,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-22281,South African Coordinate System zone 21,9001,4222,17521,9808,8801,0.0,9102,8802,21.0,9102,8805,1.0,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-22283,South African Coordinate System zone 23,9001,4222,17523,9808,8801,0.0,9102,8802,23.0,9102,8805,1.0,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-22285,South African Coordinate System zone 25,9001,4222,17525,9808,8801,0.0,9102,8802,25.0,9102,8805,1.0,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-22287,South African Coordinate System zone 27,9001,4222,17527,9808,8801,0.0,9102,8802,27.0,9102,8805,1.0,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-22289,South African Coordinate System zone 29,9001,4222,17529,9808,8801,0.0,9102,8802,29.0,9102,8805,1.0,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-22291,South African Coordinate System zone 31,9001,4222,17531,9808,8801,0.0,9102,8802,31.0,9102,8805,1.0,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-22293,South African Coordinate System zone 33,9001,4222,17533,9808,8801,0.0,9102,8802,33.0,9102,8805,1.0,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-22300,"Carthage (Paris) / Tunisia Mining Grid",9036,4816,19937,9816,8821,38.81973,9105,8822,7.83445,9105,8826,270.0,9036,8827,582.0,9036,,,,,,,,,
-22332,"Carthage / UTM zone 32N",9001,4223,16032,9807,8801,0.0,9102,8802,9.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-22391,"Carthage / Nord Tunisie",9001,4223,18181,9801,8801,40.0,9105,8802,11.0,9105,8805,0.999625544,9201,8806,500000.0,9001,8807,300000.0,9001,,,,,,
-22392,"Carthage / Sud Tunisie",9001,4223,18182,9801,8801,37.0,9105,8802,11.0,9105,8805,0.999625769,9201,8806,500000.0,9001,8807,300000.0,9001,,,,,,
-22523,"Corrego Alegre / UTM zone 23S",9001,4225,16123,9807,8801,0.0,9102,8802,-45.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-22524,"Corrego Alegre / UTM zone 24S",9001,4225,16124,9807,8801,0.0,9102,8802,-39.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-22700,"Deir ez Zor / Levant Zone",9001,4227,19940,9817,8801,34.39,9110,8802,37.21,9110,8805,0.9996256,9201,8806,300000.0,9001,8807,300000.0,9001,,,,,,
-22770,"Deir ez Zor / Syria Lambert",9001,4227,19948,9801,8801,34.39,9110,8802,37.21,9110,8805,0.9996256,9201,8806,300000.0,9001,8807,300000.0,9001,,,,,,
-22780,"Deir ez Zor / Levant Stereographic",9001,4227,19949,9809,8801,38.0,9105,8802,43.5,9105,8805,0.9995341,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-22832,"Douala / UTM zone 32N",9001,4228,16032,9807,8801,0.0,9102,8802,9.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-22991,"Egypt 1907 / Blue Belt",9001,4229,18071,9807,8801,30.0,9102,8802,35.0,9102,8805,1.0,9201,8806,300000.0,9001,8807,1100000.0,9001,,,,,,
-22992,"Egypt 1907 / Red Belt",9001,4229,18072,9807,8801,30.0,9102,8802,31.0,9102,8805,1.0,9201,8806,615000.0,9001,8807,810000.0,9001,,,,,,
-22993,"Egypt 1907 / Purple Belt",9001,4229,18073,9807,8801,30.0,9102,8802,27.0,9102,8805,1.0,9201,8806,700000.0,9001,8807,200000.0,9001,,,,,,
-22994,"Egypt 1907 / Extended Purple Belt",9001,4229,18074,9807,8801,30.0,9102,8802,27.0,9102,8805,1.0,9201,8806,700000.0,9001,8807,1200000.0,9001,,,,,,
-23028,"ED50 / UTM zone 28N",9001,4230,16028,9807,8801,0.0,9102,8802,-15.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-23029,"ED50 / UTM zone 29N",9001,4230,16029,9807,8801,0.0,9102,8802,-9.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-23030,"ED50 / UTM zone 30N",9001,4230,16030,9807,8801,0.0,9102,8802,-3.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-23031,"ED50 / UTM zone 31N",9001,4230,16031,9807,8801,0.0,9102,8802,3.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-23032,"ED50 / UTM zone 32N",9001,4230,16032,9807,8801,0.0,9102,8802,9.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-23033,"ED50 / UTM zone 33N",9001,4230,16033,9807,8801,0.0,9102,8802,15.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-23034,"ED50 / UTM zone 34N",9001,4230,16034,9807,8801,0.0,9102,8802,21.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-23035,"ED50 / UTM zone 35N",9001,4230,16035,9807,8801,0.0,9102,8802,27.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-23036,"ED50 / UTM zone 36N",9001,4230,16036,9807,8801,0.0,9102,8802,33.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-23037,"ED50 / UTM zone 37N",9001,4230,16037,9807,8801,0.0,9102,8802,39.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-23038,"ED50 / UTM zone 38N",9001,4230,16038,9807,8801,0.0,9102,8802,45.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-23090,"ED50 / TM 0 N",9001,4230,16400,9807,8801,0.0,9102,8802,0.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-23095,"ED50 / TM 5 NE",9001,4230,16405,9807,8801,0.0,9102,8802,5.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-23239,"Fahud / UTM zone 39N",9001,4232,16039,9807,8801,0.0,9102,8802,51.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-23240,"Fahud / UTM zone 40N",9001,4232,16040,9807,8801,0.0,9102,8802,57.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-23433,"Garoua / UTM zone 33N",9001,4234,16033,9807,8801,0.0,9102,8802,15.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-23700,"HD72 / EOV",9001,4237,19931,9815,8811,47.08398174,9110,8812,19.02548584,9110,8813,90.0,9110,8814,90.0,9110,8815,0.99993,9201,8816,650000.0,9001,8817,200000.0,9001
-23846,"ID74 / UTM zone 46N",9001,4238,16046,9807,8801,0.0,9102,8802,93.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-23847,"ID74 / UTM zone 47N",9001,4238,16047,9807,8801,0.0,9102,8802,99.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-23848,"ID74 / UTM zone 48N",9001,4238,16048,9807,8801,0.0,9102,8802,105.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-23849,"ID74 / UTM zone 49N",9001,4238,16049,9807,8801,0.0,9102,8802,111.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-23850,"ID74 / UTM zone 50N",9001,4238,16050,9807,8801,0.0,9102,8802,117.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-23851,"ID74 / UTM zone 51N",9001,4238,16051,9807,8801,0.0,9102,8802,123.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-23852,"ID74 / UTM zone 52N",9001,4238,16052,9807,8801,0.0,9102,8802,129.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-23853,"ID74 / UTM zone 53N",9001,4238,16053,9807,8801,0.0,9102,8802,135.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-23886,"ID74 / UTM zone 46S",9001,4238,16146,9807,8801,0.0,9102,8802,93.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-23887,"ID74 / UTM zone 47S",9001,4238,16147,9807,8801,0.0,9102,8802,99.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-23888,"ID74 / UTM zone 48S",9001,4238,16148,9807,8801,0.0,9102,8802,105.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-23889,"ID74 / UTM zone 49S",9001,4238,16149,9807,8801,0.0,9102,8802,111.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-23890,"ID74 / UTM zone 50S",9001,4238,16150,9807,8801,0.0,9102,8802,117.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-23891,"ID74 / UTM zone 51S",9001,4238,16151,9807,8801,0.0,9102,8802,123.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-23892,"ID74 / UTM zone 52S",9001,4238,16152,9807,8801,0.0,9102,8802,129.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-23893,"ID74 / UTM zone 53S",9001,4238,16153,9807,8801,0.0,9102,8802,135.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-23894,"ID74 / UTM zone 54S",9001,4238,16154,9807,8801,0.0,9102,8802,141.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-23946,"Indian 1954 / UTM zone 46N",9001,4239,16046,9807,8801,0.0,9102,8802,93.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-23947,"Indian 1954 / UTM zone 47N",9001,4239,16047,9807,8801,0.0,9102,8802,99.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-23948,"Indian 1954 / UTM zone 48N",9001,4239,16048,9807,8801,0.0,9102,8802,105.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-24047,"Indian 1975 / UTM zone 47N",9001,4240,16047,9807,8801,0.0,9102,8802,99.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-24048,"Indian 1975 / UTM zone 48N",9001,4240,16048,9807,8801,0.0,9102,8802,105.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-24100,"Jamaica 1875 / Jamaica (Old Grid)",9005,4241,19909,9801,8801,18.0,9102,8802,-77.0,9102,8805,1.0,9201,8806,550000.0,9005,8807,400000.0,9005,,,,,,
-24200,"JAD69 / Jamaica National Grid",9001,4242,19910,9801,8801,18.0,9102,8802,-77.0,9102,8805,1.0,9201,8806,250000.0,9001,8807,150000.0,9001,,,,,,
-24305,"Kalianpur 1937 / UTM zone 45N",9001,4144,16045,9807,8801,0.0,9102,8802,87.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-24306,"Kalianpur 1937 / UTM zone 46N",9001,4144,16046,9807,8801,0.0,9102,8802,93.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-24311,"Kalianpur 1962 / UTM zone 41N",9001,4145,16041,9807,8801,0.0,9102,8802,63.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-24312,"Kalianpur 1962 / UTM zone 42N",9001,4145,16042,9807,8801,0.0,9102,8802,69.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-24313,"Kalianpur 1962 / UTM zone 43N",9001,4145,16043,9807,8801,0.0,9102,8802,75.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-24342,"Kalianpur 1975 / UTM zone 42N",9001,4146,16042,9807,8801,0.0,9102,8802,69.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-24343,"Kalianpur 1975 / UTM zone 43N",9001,4146,16043,9807,8801,0.0,9102,8802,75.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-24344,"Kalianpur 1975 / UTM zone 44N",9001,4146,16044,9807,8801,0.0,9102,8802,81.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-24345,"Kalianpur 1975 / UTM zone 45N",9001,4146,16045,9807,8801,0.0,9102,8802,87.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-24346,"Kalianpur 1975 / UTM zone 46N",9001,4146,16046,9807,8801,0.0,9102,8802,93.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-24347,"Kalianpur 1975 / UTM zone 47N",9001,4146,16047,9807,8801,0.0,9102,8802,99.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-24370,"Kalianpur 1880 / India zone 0",9084,4243,18110,9801,8801,39.3,9110,8802,68.0,9110,8805,0.99846154,9201,8806,2355500.0,9084,8807,2590000.0,9084,,,,,,
-24371,"Kalianpur 1880 / India zone I",9084,4243,18111,9801,8801,32.3,9110,8802,68.0,9110,8805,0.99878641,9201,8806,3000000.0,9084,8807,1000000.0,9084,,,,,,
-24372,"Kalianpur 1880 / India zone IIa",9084,4243,18112,9801,8801,26.0,9102,8802,74.0,9102,8805,0.99878641,9201,8806,3000000.0,9084,8807,1000000.0,9084,,,,,,
-24373,"Kalianpur 1880 / India zone III",9084,4243,18114,9801,8801,19.0,9102,8802,80.0,9102,8805,0.99878641,9201,8806,3000000.0,9084,8807,1000000.0,9084,,,,,,
-24374,"Kalianpur 1880 / India zone IV",9084,4243,18116,9801,8801,12.0,9102,8802,80.0,9102,8805,0.99878641,9201,8806,3000000.0,9084,8807,1000000.0,9084,,,,,,
-24375,"Kalianpur 1937 / India zone IIb",9001,4144,18238,9801,8801,26.0,9102,8802,90.0,9102,8805,0.99878641,9201,8806,2743185.69,9001,8807,914395.23,9001,,,,,,
-24376,"Kalianpur 1962 / India zone I",9001,4145,18236,9801,8801,32.3,9110,8802,68.0,9110,8805,0.99878641,9201,8806,2743196.4,9001,8807,914398.8,9001,,,,,,
-24377,"Kalianpur 1962 / India zone IIa",9001,4145,18237,9801,8801,26.0,9102,8802,74.0,9102,8805,0.99878641,9201,8806,2743196.4,9001,8807,914398.8,9001,,,,,,
-24378,"Kalianpur 1975 / India zone I",9001,4146,18231,9801,8801,32.3,9110,8802,68.0,9110,8805,0.99878641,9201,8806,2743195.5,9001,8807,914398.5,9001,,,,,,
-24379,"Kalianpur 1975 / India zone IIa",9001,4146,18232,9801,8801,26.0,9102,8802,74.0,9102,8805,0.99878641,9201,8806,2743195.5,9001,8807,914398.5,9001,,,,,,
-24380,"Kalianpur 1975 / India zone IIb",9001,4146,18235,9801,8801,26.0,9102,8802,90.0,9102,8805,0.99878641,9201,8806,2743195.5,9001,8807,914398.5,9001,,,,,,
-24381,"Kalianpur 1975 / India zone III",9001,4146,18233,9801,8801,19.0,9102,8802,80.0,9102,8805,0.99878641,9201,8806,2743195.5,9001,8807,914398.5,9001,,,,,,
-24382,"Kalianpur 1880 / India zone IIb",9084,4243,18113,9801,8801,26.0,9102,8802,90.0,9102,8805,0.99878641,9201,8806,3000000.0,9084,8807,1000000.0,9084,,,,,,
-24383,"Kalianpur 1975 / India zone IV",9001,4146,18234,9801,8801,12.0,9102,8802,80.0,9102,8805,0.99878641,9201,8806,2743195.5,9001,8807,914398.5,9001,,,,,,
-24500,"Kertau / Singapore Grid",9001,4245,19920,9806,8801,1.1715528,9110,8802,103.5110808,9110,8806,30000.0,9001,8807,30000.0,9001,,,,,,,,,
-24547,"Kertau / UTM zone 47N",9001,4245,16047,9807,8801,0.0,9102,8802,99.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-24548,"Kertau / UTM zone 48N",9001,4245,16048,9807,8801,0.0,9102,8802,105.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-24571,"Kertau / R.S.O. Malaya (ch)",9062,4245,19935,9812,8806,40000.0,9062,8807,0.0,9062,8811,4.0,9110,8812,102.15,9110,8813,323.01328458,9110,8814,323.07483685,9110,8815,0.99984,9201
-24600,KOC Lambert,9001,4246,19906,9801,8801,32.3,9110,8802,45.0,9110,8805,0.9987864078,9201,8806,1500000.0,9001,8807,1166200.0,9001,,,,,,
-24718,"La Canoa / UTM zone 18N",9001,4247,16018,9807,8801,0.0,9102,8802,-75.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-24719,"La Canoa / UTM zone 19N",9001,4247,16019,9807,8801,0.0,9102,8802,-69.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-24720,"La Canoa / UTM zone 20N",9001,4247,16020,9807,8801,0.0,9102,8802,-63.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-24818,"PSAD56 / UTM zone 18N",9001,4248,16018,9807,8801,0.0,9102,8802,-75.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-24819,"PSAD56 / UTM zone 19N",9001,4248,16019,9807,8801,0.0,9102,8802,-69.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-24820,"PSAD56 / UTM zone 20N",9001,4248,16020,9807,8801,0.0,9102,8802,-63.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-24821,"PSAD56 / UTM zone 21N",9001,4248,16021,9807,8801,0.0,9102,8802,-57.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-24877,"PSAD56 / UTM zone 17S",9001,4248,16117,9807,8801,0.0,9102,8802,-81.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-24878,"PSAD56 / UTM zone 18S",9001,4248,16118,9807,8801,0.0,9102,8802,-75.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-24879,"PSAD56 / UTM zone 19S",9001,4248,16119,9807,8801,0.0,9102,8802,-69.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-24880,"PSAD56 / UTM zone 20S",9001,4248,16120,9807,8801,0.0,9102,8802,-63.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-24882,"PSAD56 / UTM zone 22S",9001,4248,16122,9807,8801,0.0,9102,8802,-51.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-24891,"PSAD56 / Peru west zone",9001,4248,18161,9807,8801,-6.0,9110,8802,-80.3,9110,8805,0.99983008,9201,8806,222000.0,9001,8807,1426834.743,9001,,,,,,
-24892,"PSAD56 / Peru central zone",9001,4248,18162,9807,8801,-9.3,9110,8802,-76.0,9110,8805,0.99932994,9201,8806,720000.0,9001,8807,1039979.159,9001,,,,,,
-24893,"PSAD56 / Peru east zone",9001,4248,18163,9807,8801,-9.3,9110,8802,-70.3,9110,8805,0.99952992,9201,8806,1324000.0,9001,8807,1040084.558,9001,,,,,,
-25000,"Leigon / Ghana Metre Grid",9001,4250,19904,9807,8801,4.4,9110,8802,-1.0,9110,8805,0.99975,9201,8806,274319.51,9001,8807,0.0,9001,,,,,,
-25231,"Lome / UTM zone 31N",9001,4252,16031,9807,8801,0.0,9102,8802,3.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-25391,"Luzon 1911 / Philippines zone I",9001,4253,18171,9807,8801,0.0,9102,8802,117.0,9102,8805,0.99995,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-25392,"Luzon 1911 / Philippines zone II",9001,4253,18172,9807,8801,0.0,9102,8802,119.0,9102,8805,0.99995,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-25393,"Luzon 1911 / Philippines zone III",9001,4253,18173,9807,8801,0.0,9102,8802,121.0,9102,8805,0.99995,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-25394,"Luzon 1911 / Philippines zone IV",9001,4253,18174,9807,8801,0.0,9102,8802,123.0,9102,8805,0.99995,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-25395,"Luzon 1911 / Philippines zone V",9001,4253,18175,9807,8801,0.0,9102,8802,125.0,9102,8805,0.99995,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-25700,"Makassar (Jakarta) / NEIEZ",9001,4804,19905,9804,8801,0.0,9102,8802,110.0,9102,8805,0.997,9201,8806,3900000.0,9001,8807,900000.0,9001,,,,,,
-25828,"ETRS89 / UTM zone 28N",9001,4258,16028,9807,8801,0.0,9102,8802,-15.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-25829,"ETRS89 / UTM zone 29N",9001,4258,16029,9807,8801,0.0,9102,8802,-9.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-25830,"ETRS89 / UTM zone 30N",9001,4258,16030,9807,8801,0.0,9102,8802,-3.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-25831,"ETRS89 / UTM zone 31N",9001,4258,16031,9807,8801,0.0,9102,8802,3.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-25832,"ETRS89 / UTM zone 32N",9001,4258,16032,9807,8801,0.0,9102,8802,9.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-25833,"ETRS89 / UTM zone 33N",9001,4258,16033,9807,8801,0.0,9102,8802,15.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-25834,"ETRS89 / UTM zone 34N",9001,4258,16034,9807,8801,0.0,9102,8802,21.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-25835,"ETRS89 / UTM zone 35N",9001,4258,16035,9807,8801,0.0,9102,8802,27.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-25836,"ETRS89 / UTM zone 36N",9001,4258,16036,9807,8801,0.0,9102,8802,33.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-25837,"ETRS89 / UTM zone 37N",9001,4258,16037,9807,8801,0.0,9102,8802,39.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-25838,"ETRS89 / UTM zone 38N",9001,4258,16038,9807,8801,0.0,9102,8802,45.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-25884,"ETRS89 / TM Baltic93",9001,4258,19939,9807,8801,0.0,9102,8802,24.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-25932,"Malongo 1987 / UTM zone 32S",9001,4259,16132,9807,8801,0.0,9102,8802,9.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-26191,"Merchich / Nord Maroc",9001,4261,18131,9801,8801,37.0,9105,8802,-6.0,9105,8805,0.999625769,9201,8806,500000.0,9001,8807,300000.0,9001,,,,,,
-26192,"Merchich / Sud Maroc",9001,4261,18132,9801,8801,33.0,9105,8802,-6.0,9105,8805,0.999615596,9201,8806,500000.0,9001,8807,300000.0,9001,,,,,,
-26193,"Merchich / Sahara",9001,4261,18133,9801,8801,29.0,9105,8802,-6.0,9105,8805,0.9996,9201,8806,1200000.0,9001,8807,400000.0,9001,,,,,,
-26237,"Massawa / UTM zone 37N",9001,4262,16037,9807,8801,0.0,9102,8802,39.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-26331,"Minna / UTM zone 31N",9001,4263,16031,9807,8801,0.0,9102,8802,3.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-26332,"Minna / UTM zone 32N",9001,4263,16032,9807,8801,0.0,9102,8802,9.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-26391,"Minna / Nigeria West Belt",9001,4263,18151,9807,8801,4.0,9110,8802,4.3,9110,8805,0.99975,9201,8806,230738.26,9001,8807,0.0,9001,,,,,,
-26392,"Minna / Nigeria Mid Belt",9001,4263,18152,9807,8801,4.0,9110,8802,8.3,9110,8805,0.99975,9201,8806,670553.98,9001,8807,0.0,9001,,,,,,
-26393,"Minna / Nigeria East Belt",9001,4263,18153,9807,8801,4.0,9110,8802,12.3,9110,8805,0.99975,9201,8806,1110369.7,9001,8807,0.0,9001,,,,,,
-26432,"Mhast / UTM zone 32S",9001,4264,16132,9807,8801,0.0,9102,8802,9.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-26591,"Monte Mario (Rome) / Italy zone 1",9001,4806,18121,9807,8801,0.0,9102,8802,9.0,9102,8805,0.9996,9201,8806,1500000.0,9001,8807,0.0,9001,,,,,,
-26592,"Monte Mario (Rome) / Italy zone 2",9001,4806,18122,9807,8801,0.0,9102,8802,15.0,9102,8805,0.9996,9201,8806,2520000.0,9001,8807,0.0,9001,,,,,,
-26632,"M'poraloko / UTM zone 32N",9001,4266,16032,9807,8801,0.0,9102,8802,9.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-26692,"M'poraloko / UTM zone 32S",9001,4266,16132,9807,8801,0.0,9102,8802,9.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-26703,"NAD27 / UTM zone 3N",9001,4267,16003,9807,8801,0.0,9102,8802,-165.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-26704,"NAD27 / UTM zone 4N",9001,4267,16004,9807,8801,0.0,9102,8802,-159.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-26705,"NAD27 / UTM zone 5N",9001,4267,16005,9807,8801,0.0,9102,8802,-153.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-26706,"NAD27 / UTM zone 6N",9001,4267,16006,9807,8801,0.0,9102,8802,-147.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-26707,"NAD27 / UTM zone 7N",9001,4267,16007,9807,8801,0.0,9102,8802,-141.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-26708,"NAD27 / UTM zone 8N",9001,4267,16008,9807,8801,0.0,9102,8802,-135.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-26709,"NAD27 / UTM zone 9N",9001,4267,16009,9807,8801,0.0,9102,8802,-129.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-26710,"NAD27 / UTM zone 10N",9001,4267,16010,9807,8801,0.0,9102,8802,-123.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-26711,"NAD27 / UTM zone 11N",9001,4267,16011,9807,8801,0.0,9102,8802,-117.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-26712,"NAD27 / UTM zone 12N",9001,4267,16012,9807,8801,0.0,9102,8802,-111.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-26713,"NAD27 / UTM zone 13N",9001,4267,16013,9807,8801,0.0,9102,8802,-105.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-26714,"NAD27 / UTM zone 14N",9001,4267,16014,9807,8801,0.0,9102,8802,-99.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-26715,"NAD27 / UTM zone 15N",9001,4267,16015,9807,8801,0.0,9102,8802,-93.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-26716,"NAD27 / UTM zone 16N",9001,4267,16016,9807,8801,0.0,9102,8802,-87.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-26717,"NAD27 / UTM zone 17N",9001,4267,16017,9807,8801,0.0,9102,8802,-81.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-26718,"NAD27 / UTM zone 18N",9001,4267,16018,9807,8801,0.0,9102,8802,-75.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-26719,"NAD27 / UTM zone 19N",9001,4267,16019,9807,8801,0.0,9102,8802,-69.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-26720,"NAD27 / UTM zone 20N",9001,4267,16020,9807,8801,0.0,9102,8802,-63.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-26721,"NAD27 / UTM zone 21N",9001,4267,16021,9807,8801,0.0,9102,8802,-57.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-26722,"NAD27 / UTM zone 22N",9001,4267,16022,9807,8801,0.0,9102,8802,-51.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-26729,"NAD27 / Alabama East",9003,4267,10101,9807,8801,30.3,9110,8802,-85.5,9110,8805,0.99996,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-26730,"NAD27 / Alabama West",9003,4267,10102,9807,8801,30.0,9110,8802,-87.3,9110,8805,0.999933333,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-26731,"NAD27 / Alaska zone 1",9003,4267,15001,9812,8806,16404166.67,9003,8807,-16404166.67,9003,8811,57.0,9110,8812,-133.4,9110,8813,323.07483685,9110,8814,323.07483685,9110,8815,0.9999,9201
-26732,"NAD27 / Alaska zone 2",9003,4267,15002,9807,8801,54.0,9102,8802,-142.0,9102,8805,0.9999,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-26733,"NAD27 / Alaska zone 3",9003,4267,15003,9807,8801,54.0,9102,8802,-146.0,9102,8805,0.9999,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-26734,"NAD27 / Alaska zone 4",9003,4267,15004,9807,8801,54.0,9102,8802,-150.0,9102,8805,0.9999,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-26735,"NAD27 / Alaska zone 5",9003,4267,15005,9807,8801,54.0,9102,8802,-154.0,9102,8805,0.9999,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-26736,"NAD27 / Alaska zone 6",9003,4267,15006,9807,8801,54.0,9102,8802,-158.0,9102,8805,0.9999,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-26737,"NAD27 / Alaska zone 7",9003,4267,15007,9807,8801,54.0,9102,8802,-162.0,9102,8805,0.9999,9201,8806,700000.0,9003,8807,0.0,9003,,,,,,
-26738,"NAD27 / Alaska zone 8",9003,4267,15008,9807,8801,54.0,9102,8802,-166.0,9102,8805,0.9999,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-26739,"NAD27 / Alaska zone 9",9003,4267,15009,9807,8801,54.0,9102,8802,-170.0,9102,8805,0.9999,9201,8806,600000.0,9003,8807,0.0,9003,,,,,,
-26740,"NAD27 / Alaska zone 10",9003,4267,15010,9802,8821,51.0,9110,8822,-176.0,9110,8823,53.5,9110,8824,51.5,9110,8826,3000000.0,9003,8827,0.0,9003,,,
-26741,"NAD27 / California zone I",9003,4267,10401,9802,8821,39.2,9110,8822,-122.0,9110,8823,41.4,9110,8824,40.0,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-26742,"NAD27 / California zone II",9003,4267,10402,9802,8821,37.4,9110,8822,-122.0,9110,8823,39.5,9110,8824,38.2,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-26743,"NAD27 / California zone III",9003,4267,10403,9802,8821,36.3,9110,8822,-120.3,9110,8823,38.26,9110,8824,37.04,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-26744,"NAD27 / California zone IV",9003,4267,10404,9802,8821,35.2,9110,8822,-119.0,9110,8823,37.15,9110,8824,36.0,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-26745,"NAD27 / California zone V",9003,4267,10405,9802,8821,33.3,9110,8822,-118.0,9110,8823,35.28,9110,8824,34.02,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-26746,"NAD27 / California zone VI",9003,4267,10406,9802,8821,32.1,9110,8822,-116.15,9110,8823,33.53,9110,8824,32.47,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-26747,"NAD27 / California zone VII",9003,4267,10407,9802,8821,34.08,9110,8822,-118.2,9110,8823,34.25,9110,8824,33.52,9110,8826,4186692.58,9003,8827,416926.74,9003,,,
-26748,"NAD27 / Arizona East",9003,4267,10201,9807,8801,31.0,9110,8802,-110.1,9110,8805,0.9999,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-26749,"NAD27 / Arizona Central",9003,4267,10202,9807,8801,31.0,9110,8802,-111.55,9110,8805,0.9999,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-26750,"NAD27 / Arizona West",9003,4267,10203,9807,8801,31.0,9110,8802,-113.45,9110,8805,0.999933333,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-26751,"NAD27 / Arkansas North",9003,4267,10301,9802,8821,34.2,9110,8822,-92.0,9110,8823,36.14,9110,8824,34.56,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-26752,"NAD27 / Arkansas South",9003,4267,10302,9802,8821,32.4,9110,8822,-92.0,9110,8823,34.46,9110,8824,33.18,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-26753,"NAD27 / Colorado North",9003,4267,10501,9802,8821,39.2,9110,8822,-105.3,9110,8823,39.43,9110,8824,40.47,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-26754,"NAD27 / Colorado Central",9003,4267,10502,9802,8821,37.5,9110,8822,-105.3,9110,8823,39.45,9110,8824,38.27,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-26755,"NAD27 / Colorado South",9003,4267,10503,9802,8821,36.4,9110,8822,-105.3,9110,8823,38.26,9110,8824,37.14,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-26756,"NAD27 / Connecticut",9003,4267,10600,9802,8821,40.5,9110,8822,-72.45,9110,8823,41.52,9110,8824,41.12,9110,8826,600000.0,9003,8827,0.0,9003,,,
-26757,"NAD27 / Delaware",9003,4267,10700,9807,8801,38.0,9110,8802,-75.25,9110,8805,0.999995,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-26758,"NAD27 / Florida East",9003,4267,10901,9807,8801,24.2,9110,8802,-81.0,9110,8805,0.999941177,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-26759,"NAD27 / Florida West",9003,4267,10902,9807,8801,24.2,9110,8802,-82.0,9110,8805,0.999941177,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-26760,"NAD27 / Florida North",9003,4267,10903,9802,8821,29.0,9110,8822,-84.3,9110,8823,30.45,9110,8824,29.35,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-26766,"NAD27 / Georgia East",9003,4267,11001,9807,8801,30.0,9110,8802,-82.1,9110,8805,0.9999,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-26767,"NAD27 / Georgia West",9003,4267,11002,9807,8801,30.0,9110,8802,-84.1,9110,8805,0.9999,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-26768,"NAD27 / Idaho East",9003,4267,11101,9807,8801,41.4,9110,8802,-112.1,9110,8805,0.999947368,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-26769,"NAD27 / Idaho Central",9003,4267,11102,9807,8801,41.4,9110,8802,-114.0,9110,8805,0.999947368,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-26770,"NAD27 / Idaho West",9003,4267,11103,9807,8801,41.4,9110,8802,-115.45,9110,8805,0.999933333,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-26771,"NAD27 / Illinois East",9003,4267,11201,9807,8801,36.4,9110,8802,-88.2,9110,8805,0.999975,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-26772,"NAD27 / Illinois West",9003,4267,11202,9807,8801,36.4,9110,8802,-90.1,9110,8805,0.999941177,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-26773,"NAD27 / Indiana East",9003,4267,11301,9807,8801,37.3,9110,8802,-85.4,9110,8805,0.999966667,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-26774,"NAD27 / Indiana West",9003,4267,11302,9807,8801,37.3,9110,8802,-87.05,9110,8805,0.999966667,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-26775,"NAD27 / Iowa North",9003,4267,11401,9802,8821,41.3,9110,8822,-93.3,9110,8823,43.16,9110,8824,42.04,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-26776,"NAD27 / Iowa South",9003,4267,11402,9802,8821,40.0,9110,8822,-93.3,9110,8823,41.47,9110,8824,40.37,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-26777,"NAD27 / Kansas North",9003,4267,11501,9802,8821,38.2,9110,8822,-98.0,9110,8823,39.47,9110,8824,38.43,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-26778,"NAD27 / Kansas South",9003,4267,11502,9802,8821,36.4,9110,8822,-98.3,9110,8823,38.34,9110,8824,37.16,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-26779,"NAD27 / Kentucky North",9003,4267,11601,9802,8821,37.3,9110,8822,-84.15,9110,8823,37.58,9110,8824,38.58,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-26780,"NAD27 / Kentucky South",9003,4267,11602,9802,8821,36.2,9110,8822,-85.45,9110,8823,36.44,9110,8824,37.56,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-26781,"NAD27 / Louisiana North",9003,4267,11701,9802,8821,30.4,9110,8822,-92.3,9110,8823,31.1,9110,8824,32.4,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-26782,"NAD27 / Louisiana South",9003,4267,11702,9802,8821,28.4,9110,8822,-91.2,9110,8823,29.18,9110,8824,30.42,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-26783,"NAD27 / Maine East",9003,4267,11801,9807,8801,43.5,9110,8802,-68.3,9110,8805,0.9999,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-26784,"NAD27 / Maine West",9003,4267,11802,9807,8801,42.5,9110,8802,-70.1,9110,8805,0.999966667,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-26785,"NAD27 / Maryland",9003,4267,11900,9802,8821,37.5,9110,8822,-77.0,9110,8823,38.18,9110,8824,39.27,9110,8826,800000.0,9003,8827,0.0,9003,,,
-26786,"NAD27 / Massachusetts Mainland",9003,4267,12001,9802,8821,41.0,9110,8822,-71.3,9110,8823,41.43,9110,8824,42.41,9110,8826,600000.0,9003,8827,0.0,9003,,,
-26787,"NAD27 / Massachusetts Island",9003,4267,12002,9802,8821,41.0,9110,8822,-70.3,9110,8823,41.17,9110,8824,41.29,9110,8826,200000.0,9003,8827,0.0,9003,,,
-26791,"NAD27 / Minnesota North",9003,4267,12201,9802,8821,46.3,9110,8822,-93.06,9110,8823,47.02,9110,8824,48.38,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-26792,"NAD27 / Minnesota Central",9003,4267,12202,9802,8821,45.0,9110,8822,-94.15,9110,8823,45.37,9110,8824,47.03,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-26793,"NAD27 / Minnesota South",9003,4267,12203,9802,8821,43.0,9110,8822,-94.0,9110,8823,43.47,9110,8824,45.13,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-26794,"NAD27 / Mississippi East",9003,4267,12301,9807,8801,29.4,9110,8802,-88.5,9110,8805,0.99996,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-26795,"NAD27 / Mississippi West",9003,4267,12302,9807,8801,30.3,9110,8802,-90.2,9110,8805,0.999941177,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-26796,"NAD27 / Missouri East",9003,4267,12401,9807,8801,35.5,9110,8802,-90.3,9110,8805,0.999933333,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-26797,"NAD27 / Missouri Central",9003,4267,12402,9807,8801,35.5,9110,8802,-92.3,9110,8805,0.999933333,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-26798,"NAD27 / Missouri West",9003,4267,12403,9807,8801,36.1,9110,8802,-94.3,9110,8805,0.999941177,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-26801,"NAD Michigan / Michigan East",9003,4268,12101,9807,8801,41.3,9110,8802,-83.4,9110,8805,0.999942857,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-26802,"NAD Michigan / Michigan Old Central",9003,4268,12102,9807,8801,41.3,9110,8802,-85.45,9110,8805,0.999909091,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-26803,"NAD Michigan / Michigan West",9003,4268,12103,9807,8801,41.3,9110,8802,-88.45,9110,8805,0.999909091,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-26811,"NAD Michigan / Michigan North",9003,4268,12111,9802,8821,44.47,9110,8822,-87.0,9110,8823,45.29,9110,8824,47.05,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-26812,"NAD Michigan / Michigan Central",9003,4268,12112,9802,8821,43.19,9110,8822,-84.2,9110,8823,44.11,9110,8824,45.42,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-26813,"NAD Michigan / Michigan South",9003,4268,12113,9802,8821,41.3,9110,8822,-84.2,9110,8823,42.06,9110,8824,43.4,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-26903,"NAD83 / UTM zone 3N",9001,4269,16003,9807,8801,0.0,9102,8802,-165.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-26904,"NAD83 / UTM zone 4N",9001,4269,16004,9807,8801,0.0,9102,8802,-159.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-26905,"NAD83 / UTM zone 5N",9001,4269,16005,9807,8801,0.0,9102,8802,-153.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-26906,"NAD83 / UTM zone 6N",9001,4269,16006,9807,8801,0.0,9102,8802,-147.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-26907,"NAD83 / UTM zone 7N",9001,4269,16007,9807,8801,0.0,9102,8802,-141.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-26908,"NAD83 / UTM zone 8N",9001,4269,16008,9807,8801,0.0,9102,8802,-135.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-26909,"NAD83 / UTM zone 9N",9001,4269,16009,9807,8801,0.0,9102,8802,-129.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-26910,"NAD83 / UTM zone 10N",9001,4269,16010,9807,8801,0.0,9102,8802,-123.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-26911,"NAD83 / UTM zone 11N",9001,4269,16011,9807,8801,0.0,9102,8802,-117.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-26912,"NAD83 / UTM zone 12N",9001,4269,16012,9807,8801,0.0,9102,8802,-111.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-26913,"NAD83 / UTM zone 13N",9001,4269,16013,9807,8801,0.0,9102,8802,-105.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-26914,"NAD83 / UTM zone 14N",9001,4269,16014,9807,8801,0.0,9102,8802,-99.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-26915,"NAD83 / UTM zone 15N",9001,4269,16015,9807,8801,0.0,9102,8802,-93.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-26916,"NAD83 / UTM zone 16N",9001,4269,16016,9807,8801,0.0,9102,8802,-87.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-26917,"NAD83 / UTM zone 17N",9001,4269,16017,9807,8801,0.0,9102,8802,-81.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-26918,"NAD83 / UTM zone 18N",9001,4269,16018,9807,8801,0.0,9102,8802,-75.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-26919,"NAD83 / UTM zone 19N",9001,4269,16019,9807,8801,0.0,9102,8802,-69.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-26920,"NAD83 / UTM zone 20N",9001,4269,16020,9807,8801,0.0,9102,8802,-63.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-26921,"NAD83 / UTM zone 21N",9001,4269,16021,9807,8801,0.0,9102,8802,-57.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-26922,"NAD83 / UTM zone 22N",9001,4269,16022,9807,8801,0.0,9102,8802,-51.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-26923,"NAD83 / UTM zone 23N",9001,4269,16023,9807,8801,0.0,9102,8802,-45.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-26929,"NAD83 / Alabama East",9001,4269,10131,9807,8801,30.3,9110,8802,-85.5,9110,8805,0.99996,9201,8806,200000.0,9001,8807,0.0,9001,,,,,,
-26930,"NAD83 / Alabama West",9001,4269,10132,9807,8801,30.0,9110,8802,-87.3,9110,8805,0.999933333,9201,8806,600000.0,9001,8807,0.0,9001,,,,,,
-26931,"NAD83 / Alaska zone 1",9001,4269,15031,9812,8806,5000000.0,9001,8807,-5000000.0,9001,8811,57.0,9110,8812,-133.4,9110,8813,323.07483685,9110,8814,323.07483685,9110,8815,0.9999,9201
-26932,"NAD83 / Alaska zone 2",9001,4269,15032,9807,8801,54.0,9102,8802,-142.0,9102,8805,0.9999,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-26933,"NAD83 / Alaska zone 3",9001,4269,15033,9807,8801,54.0,9102,8802,-146.0,9102,8805,0.9999,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-26934,"NAD83 / Alaska zone 4",9001,4269,15034,9807,8801,54.0,9102,8802,-150.0,9102,8805,0.9999,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-26935,"NAD83 / Alaska zone 5",9001,4269,15035,9807,8801,54.0,9102,8802,-154.0,9102,8805,0.9999,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-26936,"NAD83 / Alaska zone 6",9001,4269,15036,9807,8801,54.0,9102,8802,-158.0,9102,8805,0.9999,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-26937,"NAD83 / Alaska zone 7",9001,4269,15037,9807,8801,54.0,9102,8802,-162.0,9102,8805,0.9999,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-26938,"NAD83 / Alaska zone 8",9001,4269,15038,9807,8801,54.0,9102,8802,-166.0,9102,8805,0.9999,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-26939,"NAD83 / Alaska zone 9",9001,4269,15039,9807,8801,54.0,9102,8802,-170.0,9102,8805,0.9999,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-26940,"NAD83 / Alaska zone 10",9001,4269,15040,9802,8821,51.0,9110,8822,-176.0,9110,8823,53.5,9110,8824,51.5,9110,8826,1000000.0,9001,8827,0.0,9001,,,
-26941,"NAD83 / California zone 1",9001,4269,10431,9802,8821,39.2,9110,8822,-122.0,9110,8823,41.4,9110,8824,40.0,9110,8826,2000000.0,9001,8827,500000.0,9001,,,
-26942,"NAD83 / California zone 2",9001,4269,10432,9802,8821,37.4,9110,8822,-122.0,9110,8823,39.5,9110,8824,38.2,9110,8826,2000000.0,9001,8827,500000.0,9001,,,
-26943,"NAD83 / California zone 3",9001,4269,10433,9802,8821,36.3,9110,8822,-120.3,9110,8823,38.26,9110,8824,37.04,9110,8826,2000000.0,9001,8827,500000.0,9001,,,
-26944,"NAD83 / California zone 4",9001,4269,10434,9802,8821,35.2,9110,8822,-119.0,9110,8823,37.15,9110,8824,36.0,9110,8826,2000000.0,9001,8827,500000.0,9001,,,
-26945,"NAD83 / California zone 5",9001,4269,10435,9802,8821,33.3,9110,8822,-118.0,9110,8823,35.28,9110,8824,34.02,9110,8826,2000000.0,9001,8827,500000.0,9001,,,
-26946,"NAD83 / California zone 6",9001,4269,10436,9802,8821,32.1,9110,8822,-116.15,9110,8823,33.53,9110,8824,32.47,9110,8826,2000000.0,9001,8827,500000.0,9001,,,
-26948,"NAD83 / Arizona East",9001,4269,10231,9807,8801,31.0,9110,8802,-110.1,9110,8805,0.9999,9201,8806,213360.0,9001,8807,0.0,9001,,,,,,
-26949,"NAD83 / Arizona Central",9001,4269,10232,9807,8801,31.0,9110,8802,-111.55,9110,8805,0.9999,9201,8806,213360.0,9001,8807,0.0,9001,,,,,,
-26950,"NAD83 / Arizona West",9001,4269,10233,9807,8801,31.0,9110,8802,-113.45,9110,8805,0.999933333,9201,8806,213360.0,9001,8807,0.0,9001,,,,,,
-26951,"NAD83 / Arkansas North",9001,4269,10331,9802,8821,34.2,9110,8822,-92.0,9110,8823,36.14,9110,8824,34.56,9110,8826,400000.0,9001,8827,0.0,9001,,,
-26952,"NAD83 / Arkansas South",9001,4269,10332,9802,8821,32.4,9110,8822,-92.0,9110,8823,34.46,9110,8824,33.18,9110,8826,400000.0,9001,8827,400000.0,9001,,,
-26953,"NAD83 / Colorado North",9001,4269,10531,9802,8821,39.2,9110,8822,-105.3,9110,8823,40.47,9110,8824,39.43,9110,8826,914401.8289,9001,8827,304800.6096,9001,,,
-26954,"NAD83 / Colorado Central",9001,4269,10532,9802,8821,37.5,9110,8822,-105.3,9110,8823,39.45,9110,8824,38.27,9110,8826,914401.8289,9001,8827,304800.6096,9001,,,
-26955,"NAD83 / Colorado South",9001,4269,10533,9802,8821,36.4,9110,8822,-105.3,9110,8823,38.26,9110,8824,37.14,9110,8826,914401.8289,9001,8827,304800.6096,9001,,,
-26956,"NAD83 / Connecticut",9001,4269,10630,9802,8821,40.5,9110,8822,-72.45,9110,8823,41.52,9110,8824,41.12,9110,8826,304800.6096,9001,8827,152400.3048,9001,,,
-26957,"NAD83 / Delaware",9001,4269,10730,9807,8801,38.0,9110,8802,-75.25,9110,8805,0.999995,9201,8806,200000.0,9001,8807,0.0,9001,,,,,,
-26958,"NAD83 / Florida East",9001,4269,10931,9807,8801,24.2,9110,8802,-81.0,9110,8805,0.999941177,9201,8806,200000.0,9001,8807,0.0,9001,,,,,,
-26959,"NAD83 / Florida West",9001,4269,10932,9807,8801,24.2,9110,8802,-82.0,9110,8805,0.999941177,9201,8806,200000.0,9001,8807,0.0,9001,,,,,,
-26960,"NAD83 / Florida North",9001,4269,10933,9802,8821,29.0,9110,8822,-84.3,9110,8823,30.45,9110,8824,29.35,9110,8826,600000.0,9001,8827,0.0,9001,,,
-26961,"NAD83 / Hawaii zone 1",9001,4269,15131,9807,8801,18.5,9110,8802,-155.3,9110,8805,0.999966667,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-26962,"NAD83 / Hawaii zone 2",9001,4269,15132,9807,8801,20.2,9110,8802,-156.4,9110,8805,0.999966667,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-26963,"NAD83 / Hawaii zone 3",9001,4269,15133,9807,8801,21.1,9110,8802,-158.0,9110,8805,0.99999,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-26964,"NAD83 / Hawaii zone 4",9001,4269,15134,9807,8801,21.5,9110,8802,-159.3,9110,8805,0.99999,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-26965,"NAD83 / Hawaii zone 5",9001,4269,15135,9807,8801,21.4,9110,8802,-160.1,9110,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-26966,"NAD83 / Georgia East",9001,4269,11031,9807,8801,30.0,9110,8802,-82.1,9110,8805,0.9999,9201,8806,200000.0,9001,8807,0.0,9001,,,,,,
-26967,"NAD83 / Georgia West",9001,4269,11032,9807,8801,30.0,9110,8802,-84.1,9110,8805,0.9999,9201,8806,700000.0,9001,8807,0.0,9001,,,,,,
-26968,"NAD83 / Idaho East",9001,4269,11131,9807,8801,41.4,9110,8802,-112.1,9110,8805,0.999947368,9201,8806,200000.0,9001,8807,0.0,9001,,,,,,
-26969,"NAD83 / Idaho Central",9001,4269,11132,9807,8801,41.4,9110,8802,-114.0,9110,8805,0.999947368,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-26970,"NAD83 / Idaho West",9001,4269,11133,9807,8801,41.4,9110,8802,-115.45,9110,8805,0.999933333,9201,8806,800000.0,9001,8807,0.0,9001,,,,,,
-26971,"NAD83 / Illinois East",9001,4269,11231,9807,8801,36.4,9110,8802,-88.2,9110,8805,0.999975,9201,8806,300000.0,9001,8807,0.0,9001,,,,,,
-26972,"NAD83 / Illinois West",9001,4269,11232,9807,8801,36.4,9110,8802,-90.1,9110,8805,0.999941177,9201,8806,700000.0,9001,8807,0.0,9001,,,,,,
-26973,"NAD83 / Indiana East",9001,4269,11331,9807,8801,37.3,9110,8802,-85.4,9110,8805,0.999966667,9201,8806,100000.0,9001,8807,250000.0,9001,,,,,,
-26974,"NAD83 / Indiana West",9001,4269,11332,9807,8801,37.3,9110,8802,-87.05,9110,8805,0.999966667,9201,8806,900000.0,9001,8807,250000.0,9001,,,,,,
-26975,"NAD83 / Iowa North",9001,4269,11431,9802,8821,41.3,9110,8822,-93.3,9110,8823,43.16,9110,8824,42.04,9110,8826,1500000.0,9001,8827,1000000.0,9001,,,
-26976,"NAD83 / Iowa South",9001,4269,11432,9802,8821,40.0,9110,8822,-93.3,9110,8823,41.47,9110,8824,40.37,9110,8826,500000.0,9001,8827,0.0,9001,,,
-26977,"NAD83 / Kansas North",9001,4269,11531,9802,8821,38.2,9110,8822,-98.0,9110,8823,39.47,9110,8824,38.43,9110,8826,400000.0,9001,8827,0.0,9001,,,
-26978,"NAD83 / Kansas South",9001,4269,11532,9802,8821,36.4,9110,8822,-98.3,9110,8823,38.34,9110,8824,37.16,9110,8826,400000.0,9001,8827,400000.0,9001,,,
-26979,"NAD83 / Kentucky North",9001,4269,11631,9802,8821,37.3,9110,8822,-84.15,9110,8823,37.58,9110,8824,37.58,9110,8826,500000.0,9001,8827,0.0,9001,,,
-26980,"NAD83 / Kentucky South",9001,4269,11632,9802,8821,36.2,9110,8822,-85.45,9110,8823,37.56,9110,8824,36.44,9110,8826,500000.0,9001,8827,500000.0,9001,,,
-26981,"NAD83 / Louisiana North",9001,4269,11731,9802,8821,30.3,9110,8822,-92.3,9110,8823,32.4,9110,8824,31.1,9110,8826,1000000.0,9001,8827,0.0,9001,,,
-26982,"NAD83 / Louisiana South",9001,4269,11732,9802,8821,28.3,9110,8822,-91.2,9110,8823,30.42,9110,8824,29.18,9110,8826,1000000.0,9001,8827,0.0,9001,,,
-26983,"NAD83 / Maine East",9001,4269,11831,9807,8801,43.4,9110,8802,-68.3,9110,8805,0.9999,9201,8806,300000.0,9001,8807,0.0,9001,,,,,,
-26984,"NAD83 / Maine West",9001,4269,11832,9807,8801,42.5,9110,8802,-70.1,9110,8805,0.999966667,9201,8806,900000.0,9001,8807,0.0,9001,,,,,,
-26985,"NAD83 / Maryland",9001,4269,11930,9802,8821,37.4,9110,8822,-77.0,9110,8823,39.27,9110,8824,38.18,9110,8826,400000.0,9001,8827,0.0,9001,,,
-26986,"NAD83 / Massachusetts Mainland",9001,4269,12031,9802,8821,41.0,9110,8822,-71.3,9110,8823,42.41,9110,8824,41.43,9110,8826,200000.0,9001,8827,750000.0,9001,,,
-26987,"NAD83 / Massachusetts Island",9001,4269,12032,9802,8821,41.0,9110,8822,-70.3,9110,8823,41.29,9110,8824,41.17,9110,8826,500000.0,9001,8827,0.0,9001,,,
-26988,"NAD83 / Michigan North",9001,4269,12141,9802,8821,44.47,9110,8822,-87.0,9110,8823,47.05,9110,8824,45.29,9110,8826,8000000.0,9001,8827,0.0,9001,,,
-26989,"NAD83 / Michigan Central",9001,4269,12142,9802,8821,43.19,9110,8822,-84.22,9110,8823,45.42,9110,8824,44.11,9110,8826,6000000.0,9001,8827,0.0,9001,,,
-26990,"NAD83 / Michigan South",9001,4269,12143,9802,8821,41.3,9110,8822,-84.22,9110,8823,43.4,9110,8824,42.06,9110,8826,4000000.0,9001,8827,0.0,9001,,,
-26991,"NAD83 / Minnesota North",9001,4269,12231,9802,8821,46.3,9110,8822,-93.06,9110,8823,48.38,9110,8824,47.02,9110,8826,800000.0,9001,8827,100000.0,9001,,,
-26992,"NAD83 / Minnesota Central",9001,4269,12232,9802,8821,45.0,9110,8822,-94.15,9110,8823,47.03,9110,8824,45.37,9110,8826,800000.0,9001,8827,100000.0,9001,,,
-26993,"NAD83 / Minnesota South",9001,4269,12233,9802,8821,43.0,9110,8822,-94.0,9110,8823,45.13,9110,8824,43.47,9110,8826,800000.0,9001,8827,100000.0,9001,,,
-26994,"NAD83 / Mississippi East",9001,4269,12331,9807,8801,29.3,9110,8802,-88.5,9110,8805,0.99995,9201,8806,300000.0,9001,8807,0.0,9001,,,,,,
-26995,"NAD83 / Mississippi West",9001,4269,12332,9807,8801,29.3,9110,8802,-90.2,9110,8805,0.99995,9201,8806,700000.0,9001,8807,0.0,9001,,,,,,
-26996,"NAD83 / Missouri East",9001,4269,12431,9807,8801,35.5,9110,8802,-90.3,9110,8805,0.999933333,9201,8806,250000.0,9001,8807,0.0,9001,,,,,,
-26997,"NAD83 / Missouri Central",9001,4269,12432,9807,8801,35.5,9110,8802,-92.3,9110,8805,0.999933333,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-26998,"NAD83 / Missouri West",9001,4269,12433,9807,8801,36.1,9110,8802,-94.3,9110,8805,0.999941177,9201,8806,850000.0,9001,8807,0.0,9001,,,,,,
-27038,"Nahrwan 1967 / UTM zone 38N",9001,4270,16038,9807,8801,0.0,9102,8802,45.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-27039,"Nahrwan 1967 / UTM zone 39N",9001,4270,16039,9807,8801,0.0,9102,8802,51.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-27040,"Nahrwan 1967 / UTM zone 40N",9001,4270,16040,9807,8801,0.0,9102,8802,57.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-27120,"Naparima 1972 / UTM zone 20N",9001,4271,16020,9807,8801,0.0,9102,8802,-63.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-27200,"NZGD49 / New Zealand Map Grid",9001,4272,19917,9811,8801,-41.0,9102,8802,173.0,9102,8806,2510000.0,9001,8807,6023150.0,9001,,,,,,,,,
-27205,"NZGD49 / Mount Eden Circuit",9001,4272,17901,9807,8801,-36.5247515,9110,8802,174.45516217,9110,8805,0.9999,9201,8806,300000.0,9001,8807,700000.0,9001,,,,,,
-27206,"NZGD49 / Bay of Plenty Circuit",9001,4272,17902,9807,8801,-37.45404993,9110,8802,176.27583101,9110,8805,1.0,9201,8806,300000.0,9001,8807,700000.0,9001,,,,,,
-27207,"NZGD49 / Poverty Bay Circuit",9001,4272,17903,9807,8801,-38.372893,9110,8802,177.53082906,9110,8805,1.0,9201,8806,300000.0,9001,8807,700000.0,9001,,,,,,
-27208,"NZGD49 / Hawkes Bay Circuit",9001,4272,17904,9807,8801,-39.39033455,9110,8802,176.40252499,9110,8805,1.0,9201,8806,300000.0,9001,8807,700000.0,9001,,,,,,
-27209,"NZGD49 / Taranaki Circuit",9001,4272,17905,9807,8801,-39.08087299,9110,8802,174.13408423,9110,8805,1.0,9201,8806,300000.0,9001,8807,700000.0,9001,,,,,,
-27210,"NZGD49 / Tuhirangi Circuit",9001,4272,17906,9807,8801,-39.30448934,9110,8802,175.38241325,9110,8805,1.0,9201,8806,300000.0,9001,8807,700000.0,9001,,,,,,
-27211,"NZGD49 / Wanganui Circuit",9001,4272,17907,9807,8801,-40.14310097,9110,8802,175.29171586,9110,8805,1.0,9201,8806,300000.0,9001,8807,700000.0,9001,,,,,,
-27212,"NZGD49 / Wairarapa Circuit",9001,4272,17908,9807,8801,-40.55319175,9110,8802,175.38504588,9110,8805,1.0,9201,8806,300000.0,9001,8807,700000.0,9001,,,,,,
-27213,"NZGD49 / Wellington Circuit",9001,4272,17909,9807,8801,-41.18047507,9110,8802,174.46358432,9110,8805,1.0,9201,8806,300000.0,9001,8807,700000.0,9001,,,,,,
-27214,"NZGD49 / Collingwood Circuit",9001,4272,17910,9807,8801,-40.42531326,9110,8802,172.40193674,9110,8805,1.0,9201,8806,300000.0,9001,8807,700000.0,9001,,,,,,
-27215,"NZGD49 / Nelson Circuit",9001,4272,17911,9807,8801,-41.1628361,9110,8802,173.17575405,9110,8805,1.0,9201,8806,300000.0,9001,8807,700000.0,9001,,,,,,
-27216,"NZGD49 / Karamea Circuit",9001,4272,17912,9807,8801,-41.17236815,9110,8802,172.06325015,9110,8805,1.0,9201,8806,300000.0,9001,8807,700000.0,9001,,,,,,
-27217,"NZGD49 / Buller Circuit",9001,4272,17913,9807,8801,-41.48388903,9110,8802,171.34525362,9110,8805,1.0,9201,8806,300000.0,9001,8807,700000.0,9001,,,,,,
-27218,"NZGD49 / Grey Circuit",9001,4272,17914,9807,8801,-42.20012994,9110,8802,171.32591767,9110,8805,1.0,9201,8806,300000.0,9001,8807,700000.0,9001,,,,,,
-27219,"NZGD49 / Amuri Circuit",9001,4272,17915,9807,8801,-42.41208197,9110,8802,173.00364802,9110,8805,1.0,9201,8806,300000.0,9001,8807,700000.0,9001,,,,,,
-27220,"NZGD49 / Marlborough Circuit",9001,4272,17916,9807,8801,-41.3240152,9110,8802,173.48074668,9110,8805,1.0,9201,8806,300000.0,9001,8807,700000.0,9001,,,,,,
-27221,"NZGD49 / Hokitika Circuit",9001,4272,17917,9807,8801,-42.53107605,9110,8802,170.58479766,9110,8805,1.0,9201,8806,300000.0,9001,8807,700000.0,9001,,,,,,
-27222,"NZGD49 / Okarito Circuit",9001,4272,17918,9807,8801,-43.06364613,9110,8802,170.1539333,9110,8805,1.0,9201,8806,300000.0,9001,8807,700000.0,9001,,,,,,
-27223,"NZGD49 / Jacksons Bay Circuit",9001,4272,17919,9807,8801,-43.58400904,9110,8802,168.36225612,9110,8805,1.0,9201,8806,300000.0,9001,8807,700000.0,9001,,,,,,
-27224,"NZGD49 / Mount Pleasant Circuit",9001,4272,17920,9807,8801,-43.35262953,9110,8802,172.43378969,9110,8805,1.0,9201,8806,300000.0,9001,8807,700000.0,9001,,,,,,
-27225,"NZGD49 / Gawler Circuit",9001,4272,17921,9807,8801,-43.44553616,9110,8802,171.21386945,9110,8805,1.0,9201,8806,300000.0,9001,8807,700000.0,9001,,,,,,
-27226,"NZGD49 / Timaru Circuit",9001,4272,17922,9807,8801,-44.24079933,9110,8802,171.0326103,9110,8805,1.0,9201,8806,300000.0,9001,8807,700000.0,9001,,,,,,
-27227,"NZGD49 / Lindis Peak Circuit",9001,4272,17923,9807,8801,-44.44069647,9110,8802,169.28039183,9110,8805,1.0,9201,8806,300000.0,9001,8807,700000.0,9001,,,,,,
-27228,"NZGD49 / Mount Nicholas Circuit",9001,4272,17924,9807,8801,-45.07584493,9110,8802,168.23551083,9110,8805,1.0,9201,8806,300000.0,9001,8807,700000.0,9001,,,,,,
-27229,"NZGD49 / Mount York Circuit",9001,4272,17925,9807,8801,-45.33494142,9110,8802,167.44199024,9110,8805,1.0,9201,8806,300000.0,9001,8807,700000.0,9001,,,,,,
-27230,"NZGD49 / Observation Point Circuit",9001,4272,17926,9807,8801,-45.48583078,9110,8802,170.37429426,9110,8805,1.0,9201,8806,300000.0,9001,8807,700000.0,9001,,,,,,
-27231,"NZGD49 / North Taieri Circuit",9001,4272,17927,9807,8801,-45.51414481,9110,8802,170.16573208,9110,8805,0.99996,9201,8806,300000.0,9001,8807,700000.0,9001,,,,,,
-27232,"NZGD49 / Bluff Circuit",9001,4272,17928,9807,8801,-46.36000346,9110,8802,168.20343392,9110,8805,1.0,9201,8806,300002.66,9001,8807,699999.58,9001,,,,,,
-27258,"NZGD49 / UTM zone 58S",9001,4272,16158,9807,8801,0.0,9102,8802,165.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-27259,"NZGD49 / UTM zone 59S",9001,4272,16159,9807,8801,0.0,9102,8802,171.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-27260,"NZGD49 / UTM zone 60S",9001,4272,16160,9807,8801,0.0,9102,8802,177.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-27291,"NZGD49 / North Island Grid",9040,4272,18141,9807,8801,-39.0,9110,8802,175.3,9110,8805,1.0,9201,8806,300000.0,9040,8807,400000.0,9040,,,,,,
-27292,"NZGD49 / South Island Grid",9040,4272,18142,9807,8801,-44.0,9110,8802,171.3,9110,8805,1.0,9201,8806,500000.0,9040,8807,500000.0,9040,,,,,,
-27391,"NGO 1948 (Oslo) / NGO zone I",9001,4817,18221,9807,8801,58.0,9110,8802,-4.4,9110,8805,1.0,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-27392,"NGO 1948 (Oslo) / NGO zone II",9001,4817,18222,9807,8801,58.0,9110,8802,-2.2,9110,8805,1.0,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-27393,"NGO 1948 (Oslo) / NGO zone III",9001,4817,18223,9807,8801,58.0,9110,8802,0.0,9110,8805,1.0,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-27394,"NGO 1948 (Oslo) / NGO zone IV",9001,4817,18224,9807,8801,58.0,9110,8802,2.3,9110,8805,1.0,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-27395,"NGO 1948 (Oslo) / NGO zone V",9001,4817,18225,9807,8801,58.0,9110,8802,6.1,9110,8805,1.0,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-27396,"NGO 1948 (Oslo) / NGO zone VI",9001,4817,18226,9807,8801,58.0,9110,8802,10.1,9110,8805,1.0,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-27397,"NGO 1948 (Oslo) / NGO zone VII",9001,4817,18227,9807,8801,58.0,9110,8802,14.1,9110,8805,1.0,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-27398,"NGO 1948 (Oslo) / NGO zone VIII",9001,4817,18228,9807,8801,58.0,9110,8802,18.2,9110,8805,1.0,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-27429,"Datum 73 / UTM zone 29N",9001,4274,16029,9807,8801,0.0,9102,8802,-9.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-27492,"Datum 73 / Modified Portuguese Grid",9001,4274,19974,9807,8801,39.4,9110,8802,-8.0754862,9110,8805,1.0,9201,8806,180.598,9001,8807,-86.99,9001,,,,,,
-27500,"ATF (Paris) / Nord de Guerre",9001,4901,19903,9801,8801,55.0,9105,8802,6.0,9105,8805,0.99950908,9201,8806,500000.0,9001,8807,300000.0,9001,,,,,,
-27561,"NTF (Paris) / Lambert Nord France",9001,4807,18091,9801,8801,55.0,9105,8802,0.0,9105,8805,0.999877341,9201,8806,600000.0,9001,8807,200000.0,9001,,,,,,
-27562,"NTF (Paris) / Lambert Centre France",9001,4807,18092,9801,8801,52.0,9105,8802,0.0,9105,8805,0.99987742,9201,8806,600000.0,9001,8807,200000.0,9001,,,,,,
-27563,"NTF (Paris) / Lambert Sud France",9001,4807,18093,9801,8801,49.0,9105,8802,0.0,9105,8805,0.999877499,9201,8806,600000.0,9001,8807,200000.0,9001,,,,,,
-27564,"NTF (Paris) / Lambert Corse",9001,4807,18094,9801,8801,46.85,9105,8802,0.0,9105,8805,0.99994471,9201,8806,234.358,9001,8807,185861.369,9001,,,,,,
-27571,"NTF (Paris) / Lambert zone I",9001,4807,18081,9801,8801,55.0,9105,8802,0.0,9105,8805,0.999877341,9201,8806,600000.0,9001,8807,1200000.0,9001,,,,,,
-27572,"NTF (Paris) / Lambert zone II",9001,4807,18082,9801,8801,52.0,9105,8802,0.0,9105,8805,0.99987742,9201,8806,600000.0,9001,8807,2200000.0,9001,,,,,,
-27573,"NTF (Paris) / Lambert zone III",9001,4807,18083,9801,8801,49.0,9105,8802,0.0,9105,8805,0.999877499,9201,8806,600000.0,9001,8807,3200000.0,9001,,,,,,
-27574,"NTF (Paris) / Lambert zone IV",9001,4807,18084,9801,8801,46.85,9105,8802,0.0,9105,8805,0.99994471,9201,8806,234.358,9001,8807,4185861.369,9001,,,,,,
-27581,"NTF (Paris) / France I",9001,4807,18081,9801,8801,55.0,9105,8802,0.0,9105,8805,0.999877341,9201,8806,600000.0,9001,8807,1200000.0,9001,,,,,,
-27582,"NTF (Paris) / France II",9001,4807,18082,9801,8801,52.0,9105,8802,0.0,9105,8805,0.99987742,9201,8806,600000.0,9001,8807,2200000.0,9001,,,,,,
-27583,"NTF (Paris) / France III",9001,4807,18083,9801,8801,49.0,9105,8802,0.0,9105,8805,0.999877499,9201,8806,600000.0,9001,8807,3200000.0,9001,,,,,,
-27584,"NTF (Paris) / France IV",9001,4807,18084,9801,8801,46.85,9105,8802,0.0,9105,8805,0.99994471,9201,8806,234.358,9001,8807,4185861.369,9001,,,,,,
-27591,"NTF (Paris) / Nord France",9001,4807,18091,9801,8801,55.0,9105,8802,0.0,9105,8805,0.999877341,9201,8806,600000.0,9001,8807,200000.0,9001,,,,,,
-27592,"NTF (Paris) / Centre France",9001,4807,18092,9801,8801,52.0,9105,8802,0.0,9105,8805,0.99987742,9201,8806,600000.0,9001,8807,200000.0,9001,,,,,,
-27593,"NTF (Paris) / Sud France",9001,4807,18093,9801,8801,49.0,9105,8802,0.0,9105,8805,0.999877499,9201,8806,600000.0,9001,8807,200000.0,9001,,,,,,
-27594,"NTF (Paris) / Corse",9001,4807,18094,9801,8801,46.85,9105,8802,0.0,9105,8805,0.99994471,9201,8806,234.358,9001,8807,185861.369,9001,,,,,,
-27700,"OSGB 1936 / British National Grid",9001,4277,19916,9807,8801,49.0,9102,8802,-2.0,9102,8805,0.999601272,9201,8806,400000.0,9001,8807,-100000.0,9001,,,,,,
-28191,"Palestine 1923 / Palestine Grid",9001,4281,18201,9806,8801,31.4402749,9110,8802,35.124349,9110,8806,170251.555,9001,8807,126867.909,9001,,,,,,,,,
-28192,"Palestine 1923 / Palestine Belt",9001,4281,18202,9807,8801,31.4402749,9110,8802,35.124349,9110,8805,1.0,9201,8806,170251.555,9001,8807,1126867.909,9001,,,,,,
-28193,"Palestine 1923 / Israeli CS Grid",9001,4281,18203,9806,8801,31.4402749,9110,8802,35.124349,9110,8806,170251.555,9001,8807,1126867.909,9001,,,,,,,,,
-28232,"Pointe Noire / UTM zone 32S",9001,4282,16132,9807,8801,0.0,9102,8802,9.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-28348,"GDA94 / MGA zone 48",9001,4283,17348,9807,8801,0.0,9102,8802,105.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-28349,"GDA94 / MGA zone 49",9001,4283,17349,9807,8801,0.0,9102,8802,111.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-28350,"GDA94 / MGA zone 50",9001,4283,17350,9807,8801,0.0,9102,8802,117.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-28351,"GDA94 / MGA zone 51",9001,4283,17351,9807,8801,0.0,9102,8802,123.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-28352,"GDA94 / MGA zone 52",9001,4283,17352,9807,8801,0.0,9102,8802,129.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-28353,"GDA94 / MGA zone 53",9001,4283,17353,9807,8801,0.0,9102,8802,135.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-28354,"GDA94 / MGA zone 54",9001,4283,17354,9807,8801,0.0,9102,8802,141.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-28355,"GDA94 / MGA zone 55",9001,4283,17355,9807,8801,0.0,9102,8802,147.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-28356,"GDA94 / MGA zone 56",9001,4283,17356,9807,8801,0.0,9102,8802,153.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-28357,"GDA94 / MGA zone 57",9001,4283,17357,9807,8801,0.0,9102,8802,159.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-28358,"GDA94 / MGA zone 58",9001,4283,17358,9807,8801,0.0,9102,8802,165.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-28402,"Pulkovo 1942 / Gauss-Kruger zone 2",9001,4284,16202,9807,8801,0.0,9102,8802,9.0,9102,8805,1.0,9201,8806,2500000.0,9001,8807,0.0,9001,,,,,,
-28403,"Pulkovo 1942 / Gauss-Kruger zone 3",9001,4284,16203,9807,8801,0.0,9102,8802,15.0,9102,8805,1.0,9201,8806,3500000.0,9001,8807,0.0,9001,,,,,,
-28404,"Pulkovo 1942 / Gauss-Kruger zone 4",9001,4284,16204,9807,8801,0.0,9102,8802,21.0,9102,8805,1.0,9201,8806,4500000.0,9001,8807,0.0,9001,,,,,,
-28405,"Pulkovo 1942 / Gauss-Kruger zone 5",9001,4284,16205,9807,8801,0.0,9102,8802,27.0,9102,8805,1.0,9201,8806,5500000.0,9001,8807,0.0,9001,,,,,,
-28406,"Pulkovo 1942 / Gauss-Kruger zone 6",9001,4284,16206,9807,8801,0.0,9102,8802,33.0,9102,8805,1.0,9201,8806,6500000.0,9001,8807,0.0,9001,,,,,,
-28407,"Pulkovo 1942 / Gauss-Kruger zone 7",9001,4284,16207,9807,8801,0.0,9102,8802,39.0,9102,8805,1.0,9201,8806,7500000.0,9001,8807,0.0,9001,,,,,,
-28408,"Pulkovo 1942 / Gauss-Kruger zone 8",9001,4284,16208,9807,8801,0.0,9102,8802,45.0,9102,8805,1.0,9201,8806,8500000.0,9001,8807,0.0,9001,,,,,,
-28409,"Pulkovo 1942 / Gauss-Kruger zone 9",9001,4284,16209,9807,8801,0.0,9102,8802,51.0,9102,8805,1.0,9201,8806,9500000.0,9001,8807,0.0,9001,,,,,,
-28410,"Pulkovo 1942 / Gauss-Kruger zone 10",9001,4284,16210,9807,8801,0.0,9102,8802,57.0,9102,8805,1.0,9201,8806,10500000.0,9001,8807,0.0,9001,,,,,,
-28411,"Pulkovo 1942 / Gauss-Kruger zone 11",9001,4284,16211,9807,8801,0.0,9102,8802,63.0,9102,8805,1.0,9201,8806,11500000.0,9001,8807,0.0,9001,,,,,,
-28412,"Pulkovo 1942 / Gauss-Kruger zone 12",9001,4284,16212,9807,8801,0.0,9102,8802,69.0,9102,8805,1.0,9201,8806,12500000.0,9001,8807,0.0,9001,,,,,,
-28413,"Pulkovo 1942 / Gauss-Kruger zone 13",9001,4284,16213,9807,8801,0.0,9102,8802,75.0,9102,8805,1.0,9201,8806,13500000.0,9001,8807,0.0,9001,,,,,,
-28414,"Pulkovo 1942 / Gauss-Kruger zone 14",9001,4284,16214,9807,8801,0.0,9102,8802,81.0,9102,8805,1.0,9201,8806,14500000.0,9001,8807,0.0,9001,,,,,,
-28415,"Pulkovo 1942 / Gauss-Kruger zone 15",9001,4284,16215,9807,8801,0.0,9102,8802,87.0,9102,8805,1.0,9201,8806,15500000.0,9001,8807,0.0,9001,,,,,,
-28416,"Pulkovo 1942 / Gauss-Kruger zone 16",9001,4284,16216,9807,8801,0.0,9102,8802,93.0,9102,8805,1.0,9201,8806,16500000.0,9001,8807,0.0,9001,,,,,,
-28417,"Pulkovo 1942 / Gauss-Kruger zone 17",9001,4284,16217,9807,8801,0.0,9102,8802,99.0,9102,8805,1.0,9201,8806,17500000.0,9001,8807,0.0,9001,,,,,,
-28418,"Pulkovo 1942 / Gauss-Kruger zone 18",9001,4284,16218,9807,8801,0.0,9102,8802,105.0,9102,8805,1.0,9201,8806,18500000.0,9001,8807,0.0,9001,,,,,,
-28419,"Pulkovo 1942 / Gauss-Kruger zone 19",9001,4284,16219,9807,8801,0.0,9102,8802,111.0,9102,8805,1.0,9201,8806,19500000.0,9001,8807,0.0,9001,,,,,,
-28420,"Pulkovo 1942 / Gauss-Kruger zone 20",9001,4284,16220,9807,8801,0.0,9102,8802,117.0,9102,8805,1.0,9201,8806,20500000.0,9001,8807,0.0,9001,,,,,,
-28421,"Pulkovo 1942 / Gauss-Kruger zone 21",9001,4284,16221,9807,8801,0.0,9102,8802,123.0,9102,8805,1.0,9201,8806,21500000.0,9001,8807,0.0,9001,,,,,,
-28422,"Pulkovo 1942 / Gauss-Kruger zone 22",9001,4284,16222,9807,8801,0.0,9102,8802,129.0,9102,8805,1.0,9201,8806,22500000.0,9001,8807,0.0,9001,,,,,,
-28423,"Pulkovo 1942 / Gauss-Kruger zone 23",9001,4284,16223,9807,8801,0.0,9102,8802,135.0,9102,8805,1.0,9201,8806,23500000.0,9001,8807,0.0,9001,,,,,,
-28424,"Pulkovo 1942 / Gauss-Kruger zone 24",9001,4284,16224,9807,8801,0.0,9102,8802,141.0,9102,8805,1.0,9201,8806,24500000.0,9001,8807,0.0,9001,,,,,,
-28425,"Pulkovo 1942 / Gauss-Kruger zone 25",9001,4284,16225,9807,8801,0.0,9102,8802,147.0,9102,8805,1.0,9201,8806,25500000.0,9001,8807,0.0,9001,,,,,,
-28426,"Pulkovo 1942 / Gauss-Kruger zone 26",9001,4284,16226,9807,8801,0.0,9102,8802,153.0,9102,8805,1.0,9201,8806,26500000.0,9001,8807,0.0,9001,,,,,,
-28427,"Pulkovo 1942 / Gauss-Kruger zone 27",9001,4284,16227,9807,8801,0.0,9102,8802,159.0,9102,8805,1.0,9201,8806,27500000.0,9001,8807,0.0,9001,,,,,,
-28428,"Pulkovo 1942 / Gauss-Kruger zone 28",9001,4284,16228,9807,8801,0.0,9102,8802,165.0,9102,8805,1.0,9201,8806,28500000.0,9001,8807,0.0,9001,,,,,,
-28429,"Pulkovo 1942 / Gauss-Kruger zone 29",9001,4284,16229,9807,8801,0.0,9102,8802,171.0,9102,8805,1.0,9201,8806,29500000.0,9001,8807,0.0,9001,,,,,,
-28430,"Pulkovo 1942 / Gauss-Kruger zone 30",9001,4284,16230,9807,8801,0.0,9102,8802,177.0,9102,8805,1.0,9201,8806,30500000.0,9001,8807,0.0,9001,,,,,,
-28431,"Pulkovo 1942 / Gauss-Kruger zone 31",9001,4284,16231,9807,8801,0.0,9102,8802,-177.0,9102,8805,1.0,9201,8806,31500000.0,9001,8807,0.0,9001,,,,,,
-28432,"Pulkovo 1942 / Gauss-Kruger zone 32",9001,4284,16232,9807,8801,0.0,9102,8802,-171.0,9102,8805,1.0,9201,8806,32500000.0,9001,8807,0.0,9001,,,,,,
-28462,"Pulkovo 1942 / Gauss-Kruger 2N",9001,4284,16302,9807,8801,0.0,9102,8802,9.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-28463,"Pulkovo 1942 / Gauss-Kruger 3N",9001,4284,16303,9807,8801,0.0,9102,8802,15.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-28464,"Pulkovo 1942 / Gauss-Kruger 4N",9001,4284,16304,9807,8801,0.0,9102,8802,21.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-28465,"Pulkovo 1942 / Gauss-Kruger 5N",9001,4284,16305,9807,8801,0.0,9102,8802,27.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-28466,"Pulkovo 1942 / Gauss-Kruger 6N",9001,4284,16306,9807,8801,0.0,9102,8802,33.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-28467,"Pulkovo 1942 / Gauss-Kruger 7N",9001,4284,16307,9807,8801,0.0,9102,8802,39.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-28468,"Pulkovo 1942 / Gauss-Kruger 8N",9001,4284,16308,9807,8801,0.0,9102,8802,45.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-28469,"Pulkovo 1942 / Gauss-Kruger 9N",9001,4284,16309,9807,8801,0.0,9102,8802,51.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-28470,"Pulkovo 1942 / Gauss-Kruger 10N",9001,4284,16310,9807,8801,0.0,9102,8802,57.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-28471,"Pulkovo 1942 / Gauss-Kruger 11N",9001,4284,16311,9807,8801,0.0,9102,8802,63.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-28472,"Pulkovo 1942 / Gauss-Kruger 12N",9001,4284,16312,9807,8801,0.0,9102,8802,69.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-28473,"Pulkovo 1942 / Gauss-Kruger 13N",9001,4284,16313,9807,8801,0.0,9102,8802,75.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-28474,"Pulkovo 1942 / Gauss-Kruger 14N",9001,4284,16314,9807,8801,0.0,9102,8802,81.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-28475,"Pulkovo 1942 / Gauss-Kruger 15N",9001,4284,16315,9807,8801,0.0,9102,8802,87.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-28476,"Pulkovo 1942 / Gauss-Kruger 16N",9001,4284,16316,9807,8801,0.0,9102,8802,93.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-28477,"Pulkovo 1942 / Gauss-Kruger 17N",9001,4284,16317,9807,8801,0.0,9102,8802,99.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-28478,"Pulkovo 1942 / Gauss-Kruger 18N",9001,4284,16318,9807,8801,0.0,9102,8802,105.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-28479,"Pulkovo 1942 / Gauss-Kruger 19N",9001,4284,16319,9807,8801,0.0,9102,8802,111.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-28480,"Pulkovo 1942 / Gauss-Kruger 20N",9001,4284,16320,9807,8801,0.0,9102,8802,117.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-28481,"Pulkovo 1942 / Gauss-Kruger 21N",9001,4284,16321,9807,8801,0.0,9102,8802,123.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-28482,"Pulkovo 1942 / Gauss-Kruger 22N",9001,4284,16322,9807,8801,0.0,9102,8802,129.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-28483,"Pulkovo 1942 / Gauss-Kruger 23N",9001,4284,16323,9807,8801,0.0,9102,8802,135.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-28484,"Pulkovo 1942 / Gauss-Kruger 24N",9001,4284,16324,9807,8801,0.0,9102,8802,141.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-28485,"Pulkovo 1942 / Gauss-Kruger 25N",9001,4284,16325,9807,8801,0.0,9102,8802,147.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-28486,"Pulkovo 1942 / Gauss-Kruger 26N",9001,4284,16326,9807,8801,0.0,9102,8802,153.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-28487,"Pulkovo 1942 / Gauss-Kruger 27N",9001,4284,16327,9807,8801,0.0,9102,8802,159.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-28488,"Pulkovo 1942 / Gauss-Kruger 28N",9001,4284,16328,9807,8801,0.0,9102,8802,165.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-28489,"Pulkovo 1942 / Gauss-Kruger 29N",9001,4284,16329,9807,8801,0.0,9102,8802,171.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-28490,"Pulkovo 1942 / Gauss-Kruger 30N",9001,4284,16330,9807,8801,0.0,9102,8802,177.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-28491,"Pulkovo 1942 / Gauss-Kruger 31N",9001,4284,16331,9807,8801,0.0,9102,8802,-177.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-28492,"Pulkovo 1942 / Gauss-Kruger 32N",9001,4284,16332,9807,8801,0.0,9102,8802,-171.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-28600,"Qatar 1974 / Qatar National Grid",9001,4285,19919,9807,8801,24.27,9110,8802,51.13,9110,8805,0.99999,9201,8806,200000.0,9001,8807,300000.0,9001,,,,,,
-28991,"Amersfoort / RD Old",9001,4289,19913,9809,8801,52.0922178,9110,8802,5.23155,9110,8805,0.9999079,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-28992,"Amersfoort / RD New",9001,4289,19914,9809,8801,52.0922178,9110,8802,5.23155,9110,8805,0.9999079,9201,8806,155000.0,9001,8807,463000.0,9001,,,,,,
-29100,"SAD69 / Brazil Polyconic",9001,4291,19941,9818,8801,0.0,9102,8802,-54.0,9102,8806,5000000.0,9001,8807,10000000.0,9001,,,,,,,,,
-29118,"SAD69 / UTM zone 18N",9001,4291,16018,9807,8801,0.0,9102,8802,-75.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-29119,"SAD69 / UTM zone 19N",9001,4291,16019,9807,8801,0.0,9102,8802,-69.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-29120,"SAD69 / UTM zone 20N",9001,4291,16020,9807,8801,0.0,9102,8802,-63.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-29121,"SAD69 / UTM zone 21N",9001,4291,16021,9807,8801,0.0,9102,8802,-57.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-29122,"SAD69 / UTM zone 22N",9001,4291,16022,9807,8801,0.0,9102,8802,-51.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-29177,"SAD69 / UTM zone 17S",9001,4291,16117,9807,8801,0.0,9102,8802,-81.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-29178,"SAD69 / UTM zone 18S",9001,4291,16118,9807,8801,0.0,9102,8802,-75.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-29179,"SAD69 / UTM zone 19S",9001,4291,16119,9807,8801,0.0,9102,8802,-69.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-29180,"SAD69 / UTM zone 20S",9001,4291,16120,9807,8801,0.0,9102,8802,-63.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-29181,"SAD69 / UTM zone 21S",9001,4291,16121,9807,8801,0.0,9102,8802,-57.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-29182,"SAD69 / UTM zone 22S",9001,4291,16122,9807,8801,0.0,9102,8802,-51.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-29183,"SAD69 / UTM zone 23S",9001,4291,16123,9807,8801,0.0,9102,8802,-45.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-29184,"SAD69 / UTM zone 24S",9001,4291,16124,9807,8801,0.0,9102,8802,-39.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-29185,"SAD69 / UTM zone 25S",9001,4291,16125,9807,8801,0.0,9102,8802,-33.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-29220,"Sapper Hill 1943 / UTM zone 20S",9001,4292,16120,9807,8801,0.0,9102,8802,-63.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-29221,"Sapper Hill 1943 / UTM zone 21S",9001,4292,16121,9807,8801,0.0,9102,8802,-57.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-29333,"Schwarzeck / UTM zone 33S",9001,4293,16133,9807,8801,0.0,9102,8802,15.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-29371,South West African Coord. System zone 11,9031,4293,17611,9808,8801,-22.0,9102,8802,11.0,9102,8805,1.0,9201,8806,0.0,9031,8807,0.0,9031,,,,,,
-29373,South West African Coord. System zone 13,9031,4293,17613,9808,8801,-22.0,9102,8802,13.0,9102,8805,1.0,9201,8806,0.0,9031,8807,0.0,9031,,,,,,
-29375,South West African Coord. System zone 15,9031,4293,17615,9808,8801,-22.0,9102,8802,15.0,9102,8805,1.0,9201,8806,0.0,9031,8807,0.0,9031,,,,,,
-29377,South West African Coord. System zone 17,9031,4293,17617,9808,8801,-22.0,9102,8802,17.0,9102,8805,1.0,9201,8806,0.0,9031,8807,0.0,9031,,,,,,
-29379,South West African Coord. System zone 19,9031,4293,17619,9808,8801,-22.0,9102,8802,19.0,9102,8805,1.0,9201,8806,0.0,9031,8807,0.0,9031,,,,,,
-29381,South West African Coord. System zone 21,9031,4293,17621,9808,8801,-22.0,9102,8802,21.0,9102,8805,1.0,9201,8806,0.0,9031,8807,0.0,9031,,,,,,
-29383,South West African Coord. System zone 23,9031,4293,17623,9808,8801,-22.0,9102,8802,23.0,9102,8805,1.0,9201,8806,0.0,9031,8807,0.0,9031,,,,,,
-29385,South West African Coord. System zone 25,9031,4293,17625,9808,8801,-22.0,9102,8802,25.0,9102,8805,1.0,9201,8806,0.0,9031,8807,0.0,9031,,,,,,
-29635,"Sudan / UTM zone 35N",9001,4296,16035,9807,8801,0.0,9102,8802,27.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-29636,"Sudan / UTM zone 36N",9001,4296,16036,9807,8801,0.0,9102,8802,33.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-29700,"Tananarive (Paris) / Laborde Grid",9001,4810,19911,9815,8811,-21.0,9105,8812,49.0,9105,8813,21.0,9105,8814,21.0,9105,8815,0.9995,9201,8816,400000.0,9001,8817,800000.0,9001
-29738,"Tananarive / UTM zone 38S",9001,4297,16138,9807,8801,0.0,9102,8802,45.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-29739,"Tananarive / UTM zone 39S",9001,4297,16139,9807,8801,0.0,9102,8802,51.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-29849,"Timbalai 1948 / UTM zone 49N",9001,4298,16049,9807,8801,0.0,9102,8802,111.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-29850,"Timbalai 1948 / UTM zone 50N",9001,4298,16050,9807,8801,0.0,9102,8802,117.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-29871,"Timbalai 1948 / R.S.O. Borneo (ch)",9042,4298,19956,9815,8811,4.0,9110,8812,115.0,9110,8813,53.18569537,9110,8814,53.07483685,9110,8815,0.99984,9201,8816,29352.4763,9042,8817,22014.3572,9042
-29872,"Timbalai 1948 / R.S.O. Borneo (ft)",9041,4298,19957,9815,8811,4.0,9110,8812,115.0,9110,8813,53.18569537,9110,8814,53.07483685,9110,8815,0.99984,9201,8816,1937263.44,9041,8817,1452947.58,9041
-29873,"Timbalai 1948 / R.S.O. Borneo (m)",9001,4298,19958,9815,8811,4.0,9110,8812,115.0,9110,8813,53.18569537,9110,8814,53.07483685,9110,8815,0.99984,9201,8816,590476.87,9001,8817,442857.65,9001
-29900,"TM65 / Irish National Grid",9001,4299,19908,9807,8801,53.3,9110,8802,-8.0,9110,8805,1.000035,9201,8806,200000.0,9001,8807,250000.0,9001,,,,,,
-29901,"OSNI 1952 / Irish National Grid",9001,4188,19973,9807,8801,53.3,9110,8802,-8.0,9110,8805,1.0,9201,8806,200000.0,9001,8807,250000.0,9001,,,,,,
-29902,"TM65 / Irish Grid",9001,4299,19972,9807,8801,53.3,9110,8802,-8.0,9110,8805,1.000035,9201,8806,200000.0,9001,8807,250000.0,9001,,,,,,
-29903,"TM75 / Irish Grid",9001,4300,19972,9807,8801,53.3,9110,8802,-8.0,9110,8805,1.000035,9201,8806,200000.0,9001,8807,250000.0,9001,,,,,,
-30161,"Tokyo / Japan Plane Rectangular CS I",9001,4301,17801,9807,8801,33.0,9110,8802,129.3,9110,8805,0.9999,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-30162,"Tokyo / Japan Plane Rectangular CS II",9001,4301,17802,9807,8801,33.0,9110,8802,131.0,9110,8805,0.9999,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-30163,"Tokyo / Japan Plane Rectangular CS III",9001,4301,17803,9807,8801,36.0,9110,8802,132.1,9110,8805,0.9999,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-30164,"Tokyo / Japan Plane Rectangular CS IV",9001,4301,17804,9807,8801,33.0,9110,8802,133.3,9110,8805,0.9999,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-30165,"Tokyo / Japan Plane Rectangular CS V",9001,4301,17805,9807,8801,36.0,9110,8802,134.2,9110,8805,0.9999,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-30166,"Tokyo / Japan Plane Rectangular CS VI",9001,4301,17806,9807,8801,36.0,9110,8802,136.0,9110,8805,0.9999,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-30167,"Tokyo / Japan Plane Rectangular CS VII",9001,4301,17807,9807,8801,36.0,9110,8802,137.1,9110,8805,0.9999,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-30168,"Tokyo / Japan Plane Rectangular CS VIII",9001,4301,17808,9807,8801,36.0,9110,8802,138.3,9110,8805,0.9999,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-30169,"Tokyo / Japan Plane Rectangular CS IX",9001,4301,17809,9807,8801,36.0,9110,8802,139.5,9110,8805,0.9999,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-30170,"Tokyo / Japan Plane Rectangular CS X",9001,4301,17810,9807,8801,40.0,9110,8802,140.5,9110,8805,0.9999,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-30171,"Tokyo / Japan Plane Rectangular CS XI",9001,4301,17811,9807,8801,44.0,9110,8802,140.15,9110,8805,0.9999,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-30172,"Tokyo / Japan Plane Rectangular CS XII",9001,4301,17812,9807,8801,44.0,9110,8802,142.15,9110,8805,0.9999,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-30173,"Tokyo / Japan Plane Rectangular CS XIII",9001,4301,17813,9807,8801,44.0,9110,8802,144.15,9110,8805,0.9999,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-30174,"Tokyo / Japan Plane Rectangular CS XIV",9001,4301,17814,9807,8801,26.0,9110,8802,142.0,9110,8805,0.9999,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-30175,"Tokyo / Japan Plane Rectangular CS XV",9001,4301,17815,9807,8801,26.0,9110,8802,127.3,9110,8805,0.9999,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-30176,"Tokyo / Japan Plane Rectangular CS XVI",9001,4301,17816,9807,8801,26.0,9110,8802,124.0,9110,8805,0.9999,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-30177,"Tokyo / Japan Plane Rectangular CS XVII",9001,4301,17817,9807,8801,26.0,9110,8802,131.0,9110,8805,0.9999,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-30178,"Tokyo / Japan Plane Rectangular CS XVIII",9001,4301,17818,9807,8801,20.0,9110,8802,136.0,9110,8805,0.9999,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-30179,"Tokyo / Japan Plane Rectangular CS XIX",9001,4301,17819,9807,8801,26.0,9110,8802,154.0,9110,8805,0.9999,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-30200,"Trinidad 1903 / Trinidad Grid",9039,4302,19925,9806,8801,10.263,9110,8802,-61.2,9110,8806,430000.0,9039,8807,325000.0,9039,,,,,,,,,
-30339,"TC(1948) / UTM zone 39N",9001,4303,16039,9807,8801,0.0,9102,8802,51.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-30340,"TC(1948) / UTM zone 40N",9001,4303,16040,9807,8801,0.0,9102,8802,57.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-30491,"Voirol 1875 / Nord Algerie (ancienne)",9001,4304,18011,9801,8801,40.0,9105,8802,3.0,9105,8805,0.999625544,9201,8806,500000.0,9001,8807,300000.0,9001,,,,,,
-30492,"Voirol 1875 / Sud Algerie (ancienne)",9001,4304,18012,9801,8801,37.0,9105,8802,3.0,9105,8805,0.999625769,9201,8806,500000.0,9001,8807,300000.0,9001,,,,,,
-30729,"Nord Sahara 1959 / UTM zone 29N",9001,4307,16029,9807,8801,0.0,9102,8802,-9.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-30730,"Nord Sahara 1959 / UTM zone 30N",9001,4307,16030,9807,8801,0.0,9102,8802,-3.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-30731,"Nord Sahara 1959 / UTM zone 31N",9001,4307,16031,9807,8801,0.0,9102,8802,3.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-30732,"Nord Sahara 1959 / UTM zone 32N",9001,4307,16032,9807,8801,0.0,9102,8802,9.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-30791,"Nord Sahara 1959 / Voirol Unifie Nord",9001,4307,18021,9801,8801,40.0,9105,8802,3.0,9105,8805,0.999625544,9201,8806,500135.0,9001,8807,300090.0,9001,,,,,,
-30792,"Nord Sahara 1959 / Voirol Unifie Sud",9001,4307,18022,9801,8801,37.0,9105,8802,3.0,9105,8805,0.999625769,9201,8806,500135.0,9001,8807,300090.0,9001,,,,,,
-30800,RT38 2.5 gon W,9001,4308,19929,9807,8801,0.0,9110,8802,15.48298,9110,8805,1.0,9201,8806,1500000.0,9001,8807,0.0,9001,,,,,,
-31028,"Yoff / UTM zone 28N",9001,4310,16028,9807,8801,0.0,9102,8802,-15.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-31121,"Zanderij / UTM zone 21N",9001,4311,16021,9807,8801,0.0,9102,8802,-57.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-31154,"Zanderij / TM 54 NW",9001,4311,17054,9807,8801,0.0,9102,8802,-54.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-31170,"Zanderij / Suriname Old TM",9001,4311,19954,9807,8801,0.0,9110,8802,-55.41,9110,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-31171,"Zanderij / Suriname TM",9001,4311,19955,9807,8801,0.0,9110,8802,-55.41,9110,8805,0.9999,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-31265,"MGI / 3-degree Gauss zone 5",9001,4312,16265,9807,8801,0.0,9102,8802,15.0,9102,8805,1.0,9201,8806,5500000.0,9001,8807,0.0,9001,,,,,,
-31266,"MGI / 3-degree Gauss zone 6",9001,4312,16266,9807,8801,0.0,9102,8802,18.0,9102,8805,1.0,9201,8806,6500000.0,9001,8807,0.0,9001,,,,,,
-31267,"MGI / 3-degree Gauss zone 7",9001,4312,16267,9807,8801,0.0,9102,8802,21.0,9102,8805,1.0,9201,8806,7500000.0,9001,8807,0.0,9001,,,,,,
-31268,"MGI / 3-degree Gauss zone 8",9001,4312,16268,9807,8801,0.0,9102,8802,24.0,9102,8805,1.0,9201,8806,8500000.0,9001,8807,0.0,9001,,,,,,
-31275,"MGI / Balkans zone 5",9001,4312,18275,9807,8801,0.0,9102,8802,15.0,9102,8805,0.9999,9201,8806,5500000.0,9001,8807,0.0,9001,,,,,,
-31276,"MGI / Balkans zone 6",9001,4312,18276,9807,8801,0.0,9102,8802,18.0,9102,8805,0.9999,9201,8806,6500000.0,9001,8807,0.0,9001,,,,,,
-31277,"MGI / Balkans zone 7",9001,4312,18277,9807,8801,0.0,9102,8802,21.0,9102,8805,0.9999,9201,8806,7500000.0,9001,8807,0.0,9001,,,,,,
-31278,"MGI / Balkans zone 8",9001,4312,18277,9807,8801,0.0,9102,8802,21.0,9102,8805,0.9999,9201,8806,7500000.0,9001,8807,0.0,9001,,,,,,
-31279,"MGI / Balkans zone 8",9001,4312,18278,9807,8801,0.0,9102,8802,24.0,9102,8805,0.9999,9201,8806,8500000.0,9001,8807,0.0,9001,,,,,,
-31281,"MGI (Ferro) / Austria West Zone",9001,4805,18041,9807,8801,0.0,9102,8802,28.0,9102,8805,1.0,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-31282,"MGI (Ferro) / Austria Central Zone",9001,4805,18042,9807,8801,0.0,9102,8802,31.0,9102,8805,1.0,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-31283,"MGI (Ferro) / Austria East Zone",9001,4805,18043,9807,8801,0.0,9102,8802,34.0,9102,8805,1.0,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-31284,"MGI / M28",9001,4312,18044,9807,8801,0.0,9110,8802,10.2,9110,8805,1.0,9201,8806,150000.0,9001,8807,0.0,9001,,,,,,
-31285,"MGI / M31",9001,4312,18045,9807,8801,0.0,9110,8802,13.2,9110,8805,1.0,9201,8806,450000.0,9001,8807,0.0,9001,,,,,,
-31286,"MGI / M34",9001,4312,18046,9807,8801,0.0,9110,8802,16.2,9110,8805,1.0,9201,8806,750000.0,9001,8807,0.0,9001,,,,,,
-31287,"MGI / Austria Lambert",9001,4312,19947,9802,8821,47.3,9110,8822,13.2,9110,8823,49.0,9110,8824,46.0,9110,8826,400000.0,9001,8827,400000.0,9001,,,
-31291,"MGI (Ferro) / Austria West Zone",9001,4805,18041,9807,8801,0.0,9102,8802,28.0,9102,8805,1.0,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-31292,"MGI (Ferro) / Austria Central Zone",9001,4805,18042,9807,8801,0.0,9102,8802,31.0,9102,8805,1.0,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-31293,"MGI (Ferro) / Austria East Zone",9001,4805,18043,9807,8801,0.0,9102,8802,34.0,9102,8805,1.0,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-31294,"MGI / M28",9001,4312,18044,9807,8801,0.0,9110,8802,10.2,9110,8805,1.0,9201,8806,150000.0,9001,8807,0.0,9001,,,,,,
-31295,"MGI / M31",9001,4312,18045,9807,8801,0.0,9110,8802,13.2,9110,8805,1.0,9201,8806,450000.0,9001,8807,0.0,9001,,,,,,
-31296,"MGI / M34",9001,4312,18046,9807,8801,0.0,9110,8802,16.2,9110,8805,1.0,9201,8806,750000.0,9001,8807,0.0,9001,,,,,,
-31297,"MGI / Austria Lambert",9001,4312,19947,9802,8821,47.3,9110,8822,13.2,9110,8823,49.0,9110,8824,46.0,9110,8826,400000.0,9001,8827,400000.0,9001,,,
-31300,"Belge 1972 / Belge Lambert 72",9001,4313,19902,9803,8821,90.0,9110,8822,4.2124983,9110,8823,49.5,9110,8824,51.1,9110,8826,150000.01256,9001,8827,5400088.4378,9001,,,
-31370,"Belge 1972 / Belgian Lambert 72",9001,4313,19961,9802,8821,90.0,9110,8822,4.2202952,9110,8823,51.100000204,9110,8824,49.500000204,9110,8826,150000.013,9001,8827,5400088.438,9001,,,
-31461,"DHDN / 3-degree Gauss zone 1",9001,4314,16261,9807,8801,0.0,9102,8802,3.0,9102,8805,1.0,9201,8806,1500000.0,9001,8807,0.0,9001,,,,,,
-31462,"DHDN / 3-degree Gauss zone 2",9001,4314,16262,9807,8801,0.0,9102,8802,6.0,9102,8805,1.0,9201,8806,2500000.0,9001,8807,0.0,9001,,,,,,
-31463,"DHDN / 3-degree Gauss zone 3",9001,4314,16263,9807,8801,0.0,9102,8802,9.0,9102,8805,1.0,9201,8806,3500000.0,9001,8807,0.0,9001,,,,,,
-31464,"DHDN / 3-degree Gauss zone 4",9001,4314,16264,9807,8801,0.0,9102,8802,12.0,9102,8805,1.0,9201,8806,4500000.0,9001,8807,0.0,9001,,,,,,
-31465,"DHDN / 3-degree Gauss zone 5",9001,4314,16265,9807,8801,0.0,9102,8802,15.0,9102,8805,1.0,9201,8806,5500000.0,9001,8807,0.0,9001,,,,,,
-31466,"DHDN / Gauss-Kruger zone 2",9001,4314,16262,9807,8801,0.0,9102,8802,6.0,9102,8805,1.0,9201,8806,2500000.0,9001,8807,0.0,9001,,,,,,
-31467,"DHDN / Gauss-Kruger zone 3",9001,4314,16263,9807,8801,0.0,9102,8802,9.0,9102,8805,1.0,9201,8806,3500000.0,9001,8807,0.0,9001,,,,,,
-31468,"DHDN / Gauss-Kruger zone 4",9001,4314,16264,9807,8801,0.0,9102,8802,12.0,9102,8805,1.0,9201,8806,4500000.0,9001,8807,0.0,9001,,,,,,
-31469,"DHDN / Gauss-Kruger zone 5",9001,4314,16265,9807,8801,0.0,9102,8802,15.0,9102,8805,1.0,9201,8806,5500000.0,9001,8807,0.0,9001,,,,,,
-31528,"Conakry 1905 / UTM zone 28N",9001,4315,16028,9807,8801,0.0,9102,8802,-15.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-31529,"Conakry 1905 / UTM zone 29N",9001,4315,16029,9807,8801,0.0,9102,8802,-9.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-31600,"Dealul Piscului 1933/ Stereo 33",9001,4316,19927,9809,8801,45.54,9110,8802,25.23328772,9110,8805,0.9996667,9201,8806,500000.0,9001,8807,500000.0,9001,,,,,,
-31700,"Dealul Piscului 1970/ Stereo 70",9001,4317,19926,9809,8801,46.0,9102,8802,25.0,9102,8805,0.99975,9201,8806,500000.0,9001,8807,500000.0,9001,,,,,,
-31838,"NGN / UTM zone 38N",9001,4318,16038,9807,8801,0.0,9102,8802,45.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-31839,"NGN / UTM zone 39N",9001,4318,16039,9807,8801,0.0,9102,8802,51.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-31900,"KUDAMS / KTM",9001,4319,19928,9807,8801,0.0,9102,8802,48.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-31986,"SIRGAS / UTM zone 17N",9001,4170,16017,9807,8801,0.0,9102,8802,-81.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-31987,"SIRGAS / UTM zone 18N",9001,4170,16018,9807,8801,0.0,9102,8802,-75.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-31988,"SIRGAS / UTM zone 19N",9001,4170,16019,9807,8801,0.0,9102,8802,-69.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-31989,"SIRGAS / UTM zone 20N",9001,4170,16020,9807,8801,0.0,9102,8802,-63.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-31990,"SIRGAS / UTM zone 21N",9001,4170,16021,9807,8801,0.0,9102,8802,-57.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-31991,"SIRGAS / UTM zone 22N",9001,4170,16022,9807,8801,0.0,9102,8802,-51.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-31992,"SIRGAS / UTM zone 17S",9001,4170,16117,9807,8801,0.0,9102,8802,-81.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-31993,"SIRGAS / UTM zone 18S",9001,4170,16118,9807,8801,0.0,9102,8802,-75.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-31994,"SIRGAS / UTM zone 19S",9001,4170,16119,9807,8801,0.0,9102,8802,-69.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-31995,"SIRGAS / UTM zone 20S",9001,4170,16120,9807,8801,0.0,9102,8802,-63.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-31996,"SIRGAS / UTM zone 21S",9001,4170,16121,9807,8801,0.0,9102,8802,-57.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-31997,"SIRGAS / UTM zone 22S",9001,4170,16122,9807,8801,0.0,9102,8802,-51.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-31998,"SIRGAS / UTM zone 23S",9001,4170,16123,9807,8801,0.0,9102,8802,-45.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-31999,"SIRGAS / UTM zone 24S",9001,4170,16124,9807,8801,0.0,9102,8802,-39.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32000,"SIRGAS / UTM zone 25S",9001,4170,16125,9807,8801,0.0,9102,8802,-33.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32001,"NAD27 / Montana North",9003,4267,12501,9802,8821,47.0,9110,8822,-109.3,9110,8823,48.43,9110,8824,47.51,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-32002,"NAD27 / Montana Central",9003,4267,12502,9802,8821,45.5,9110,8822,-109.3,9110,8823,47.53,9110,8824,46.27,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-32003,"NAD27 / Montana South",9003,4267,12503,9802,8821,44.0,9110,8822,-109.3,9110,8823,46.24,9110,8824,44.52,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-32005,"NAD27 / Nebraska North",9003,4267,12601,9802,8821,41.2,9110,8822,-100.0,9110,8823,41.51,9110,8824,42.49,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-32006,"NAD27 / Nebraska South",9003,4267,12602,9802,8821,39.4,9110,8822,-99.3,9110,8823,40.17,9110,8824,41.43,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-32007,"NAD27 / Nevada East",9003,4267,12701,9807,8801,34.45,9110,8802,-115.35,9110,8805,0.9999,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-32008,"NAD27 / Nevada Central",9003,4267,12702,9807,8801,34.45,9110,8802,-116.4,9110,8805,0.9999,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-32009,"NAD27 / Nevada West",9003,4267,12703,9807,8801,34.45,9110,8802,-118.35,9110,8805,0.9999,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-32010,"NAD27 / New Hampshire",9003,4267,12800,9807,8801,42.3,9110,8802,-71.4,9110,8805,0.999966667,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-32011,"NAD27 / New Jersey",9003,4267,12900,9807,8801,38.5,9110,8802,-74.4,9110,8805,0.999975,9201,8806,2000000.0,9003,8807,0.0,9003,,,,,,
-32012,"NAD27 / New Mexico East",9003,4267,13001,9807,8801,31.0,9110,8802,-104.2,9110,8805,0.999909091,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-32013,"NAD27 / New Mexico Central",9003,4267,13002,9807,8801,31.0,9110,8802,-106.15,9110,8805,0.9999,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-32014,"NAD27 / New Mexico West",9003,4267,13003,9807,8801,31.0,9110,8802,-107.5,9110,8805,0.999916667,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-32015,"NAD27 / New York East",9003,4267,13101,9807,8801,40.0,9110,8802,-74.2,9110,8805,0.999966667,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-32016,"NAD27 / New York Central",9003,4267,13102,9807,8801,40.0,9110,8802,-76.35,9110,8805,0.9999375,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-32017,"NAD27 / New York West",9003,4267,13103,9807,8801,40.0,9110,8802,-78.35,9110,8805,0.9999375,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-32018,"NAD27 / New York Long Island",9003,4267,13104,9802,8821,40.3,9110,8822,-74.0,9110,8823,41.02,9110,8824,40.4,9110,8826,1000000.0,9003,8827,0.0,9003,,,
-32019,"NAD27 / North Carolina",9003,4267,13200,9802,8821,33.45,9110,8822,-79.0,9110,8823,34.2,9110,8824,36.1,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-32020,"NAD27 / North Dakota North",9003,4267,13301,9802,8821,47.0,9110,8822,-100.3,9110,8823,47.26,9110,8824,48.44,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-32021,"NAD27 / North Dakota South",9003,4267,13302,9802,8821,45.4,9110,8822,-100.3,9110,8823,46.11,9110,8824,47.29,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-32022,"NAD27 / Ohio North",9003,4267,13401,9802,8821,39.4,9110,8822,-82.3,9110,8823,40.26,9110,8824,41.42,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-32023,"NAD27 / Ohio South",9003,4267,13402,9802,8821,38.0,9110,8822,-82.3,9110,8823,38.44,9110,8824,40.02,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-32024,"NAD27 / Oklahoma North",9003,4267,13501,9802,8821,35.0,9110,8822,-98.0,9110,8823,35.34,9110,8824,36.46,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-32025,"NAD27 / Oklahoma South",9003,4267,13502,9802,8821,33.2,9110,8822,-98.0,9110,8823,33.56,9110,8824,35.14,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-32026,"NAD27 / Oregon North",9003,4267,13601,9802,8821,43.4,9110,8822,-120.3,9110,8823,44.2,9110,8824,46.0,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-32027,"NAD27 / Oregon South",9003,4267,13602,9802,8821,41.4,9110,8822,-120.3,9110,8823,42.2,9110,8824,44.0,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-32028,"NAD27 / Pennsylvania North",9003,4267,13701,9802,8821,40.1,9110,8822,-77.45,9110,8823,40.53,9110,8824,41.57,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-32029,"NAD27 / Pennsylvania South",9003,4267,13702,9802,8821,39.2,9110,8822,-77.45,9110,8823,39.56,9110,8824,40.48,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-32030,"NAD27 / Rhode Island",9003,4267,13800,9807,8801,41.05,9110,8802,-71.3,9110,8805,0.9999938,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-32031,"NAD27 / South Carolina North",9003,4267,13901,9802,8821,33.0,9110,8822,-81.0,9110,8823,33.46,9110,8824,34.58,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-32033,"NAD27 / South Carolina South",9003,4267,13902,9802,8821,31.5,9110,8822,-81.0,9110,8823,32.2,9110,8824,33.4,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-32034,"NAD27 / South Dakota North",9003,4267,14001,9802,8821,43.5,9110,8822,-100.0,9110,8823,44.25,9110,8824,45.41,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-32035,"NAD27 / South Dakota South",9003,4267,14002,9802,8821,42.2,9110,8822,-100.2,9110,8823,42.5,9110,8824,44.24,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-32036,"NAD27 / Tennessee",9003,4267,14100,9802,8821,34.4,9110,8822,-86.0,9110,8823,35.15,9110,8824,36.25,9110,8826,100000.0,9003,8827,0.0,9003,,,
-32037,"NAD27 / Texas North",9003,4267,14201,9802,8821,34.0,9110,8822,-101.3,9110,8823,34.39,9110,8824,36.11,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-32038,"NAD27 / Texas North Central",9003,4267,14202,9802,8821,31.4,9110,8822,-97.3,9110,8823,32.08,9110,8824,33.58,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-32039,"NAD27 / Texas Central",9003,4267,14203,9802,8821,29.4,9110,8822,-100.2,9110,8823,30.07,9110,8824,31.53,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-32040,"NAD27 / Texas South Central",9003,4267,14204,9802,8821,27.5,9110,8822,-99.0,9110,8823,28.23,9110,8824,30.17,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-32041,"NAD27 / Texas South",9003,4267,14205,9802,8821,25.4,9110,8822,-98.3,9110,8823,26.1,9110,8824,27.5,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-32042,"NAD27 / Utah North",9003,4267,14301,9802,8821,40.2,9110,8822,-111.3,9110,8823,40.43,9110,8824,41.47,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-32043,"NAD27 / Utah Central",9003,4267,14302,9802,8821,38.2,9110,8822,-111.3,9110,8823,39.01,9110,8824,40.39,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-32044,"NAD27 / Utah South",9003,4267,14303,9802,8821,36.4,9110,8822,-111.3,9110,8823,37.13,9110,8824,38.21,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-32045,"NAD27 / Vermont",9003,4267,14400,9807,8801,42.3,9110,8802,-72.3,9110,8805,0.999964286,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-32046,"NAD27 / Virginia North",9003,4267,14501,9802,8821,37.4,9110,8822,-78.3,9110,8823,38.02,9110,8824,39.12,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-32047,"NAD27 / Virginia South",9003,4267,14502,9802,8821,36.2,9110,8822,-78.3,9110,8823,36.46,9110,8824,37.58,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-32048,"NAD27 / Washington North",9003,4267,14601,9802,8821,47.0,9110,8822,-120.5,9110,8823,47.3,9110,8824,48.44,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-32049,"NAD27 / Washington South",9003,4267,14602,9802,8821,45.2,9110,8822,-120.3,9110,8823,45.5,9110,8824,47.2,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-32050,"NAD27 / West Virginia North",9003,4267,14701,9802,8821,38.3,9110,8822,-79.3,9110,8823,39.0,9110,8824,40.15,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-32051,"NAD27 / West Virginia South",9003,4267,14702,9802,8821,37.0,9110,8822,-81.0,9110,8823,37.29,9110,8824,38.53,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-32052,"NAD27 / Wisconsin North",9003,4267,14801,9802,8821,45.1,9110,8822,-90.0,9110,8823,45.34,9110,8824,46.46,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-32053,"NAD27 / Wisconsin Central",9003,4267,14802,9802,8821,43.5,9110,8822,-90.0,9110,8823,44.15,9110,8824,45.3,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-32054,"NAD27 / Wisconsin South",9003,4267,14803,9802,8821,42.0,9110,8822,-90.0,9110,8823,42.44,9110,8824,44.04,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-32055,"NAD27 / Wyoming East",9003,4267,14901,9807,8801,40.4,9110,8802,-105.1,9110,8805,0.999941177,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-32056,"NAD27 / Wyoming East Central",9003,4267,14902,9807,8801,40.4,9110,8802,-107.2,9110,8805,0.999941177,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-32057,"NAD27 / Wyoming West Central",9003,4267,14903,9807,8801,40.4,9110,8802,-108.45,9110,8805,0.999941177,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-32058,"NAD27 / Wyoming West",9003,4267,14904,9807,8801,40.4,9110,8802,-110.05,9110,8805,0.999941177,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-32061,"NAD27 / Guatemala Norte",9001,4267,18211,9801,8801,16.49,9110,8802,-90.2,9110,8805,0.99992226,9201,8806,500000.0,9001,8807,292209.579,9001,,,,,,
-32062,"NAD27 / Guatemala Sur",9001,4267,18212,9801,8801,14.54,9110,8802,-90.2,9110,8805,0.99989906,9201,8806,500000.0,9001,8807,325992.681,9001,,,,,,
-32064,"NAD27 / BLM 14N (ftUS)",9003,4267,15914,9807,8801,0.0,9102,8802,-99.0,9102,8805,0.9996,9201,8806,1640416.67,9003,8807,0.0,9003,,,,,,
-32065,"NAD27 / BLM 15N (ftUS)",9003,4267,15915,9807,8801,0.0,9102,8802,-93.0,9102,8805,0.9996,9201,8806,1640416.67,9003,8807,0.0,9003,,,,,,
-32066,"NAD27 / BLM 16N (ftUS)",9003,4267,15916,9807,8801,0.0,9102,8802,-87.0,9102,8805,0.9996,9201,8806,1640416.67,9003,8807,0.0,9003,,,,,,
-32067,"NAD27 / BLM 17N (ftUS)",9003,4267,15917,9807,8801,0.0,9102,8802,-81.0,9102,8805,0.9996,9201,8806,1640416.67,9003,8807,0.0,9003,,,,,,
-32074,"NAD27 / BLM 14N (feet)",9003,4267,15914,9807,8801,0.0,9102,8802,-99.0,9102,8805,0.9996,9201,8806,1640416.67,9003,8807,0.0,9003,,,,,,
-32075,"NAD27 / BLM 15N (feet)",9003,4267,15915,9807,8801,0.0,9102,8802,-93.0,9102,8805,0.9996,9201,8806,1640416.67,9003,8807,0.0,9003,,,,,,
-32076,"NAD27 / BLM 16N (feet)",9003,4267,15916,9807,8801,0.0,9102,8802,-87.0,9102,8805,0.9996,9201,8806,1640416.67,9003,8807,0.0,9003,,,,,,
-32077,"NAD27 / BLM 17N (feet)",9003,4267,15917,9807,8801,0.0,9102,8802,-81.0,9102,8805,0.9996,9201,8806,1640416.67,9003,8807,0.0,9003,,,,,,
-32081,"NAD27 / MTM zone 1",9001,4267,17701,9807,8801,0.0,9102,8802,-53.0,9102,8805,0.9999,9201,8806,304800.0,9001,8807,0.0,9001,,,,,,
-32082,"NAD27 / MTM zone 2",9001,4267,17702,9807,8801,0.0,9102,8802,-56.0,9102,8805,0.9999,9201,8806,304800.0,9001,8807,0.0,9001,,,,,,
-32083,"NAD27 / MTM zone 3",9001,4267,17703,9807,8801,0.0,9110,8802,-58.3,9110,8805,0.9999,9201,8806,304800.0,9001,8807,0.0,9001,,,,,,
-32084,"NAD27 / MTM zone 4",9001,4267,17704,9807,8801,0.0,9110,8802,-61.3,9110,8805,0.9999,9201,8806,304800.0,9001,8807,0.0,9001,,,,,,
-32085,"NAD27 / MTM zone 5",9001,4267,17705,9807,8801,0.0,9110,8802,-64.3,9110,8805,0.9999,9201,8806,304800.0,9001,8807,0.0,9001,,,,,,
-32086,"NAD27 / MTM zone 6",9001,4267,17706,9807,8801,0.0,9110,8802,-67.3,9110,8805,0.9999,9201,8806,304800.0,9001,8807,0.0,9001,,,,,,
-32098,"NAD27 / Quebec Lambert",9001,4267,19944,9802,8821,44.0,9110,8822,-68.3,9110,8823,60.0,9110,8824,46.0,9110,8826,0.0,9001,8827,0.0,9001,,,
-32100,"NAD83 / Montana",9001,4269,12530,9802,8821,44.15,9110,8822,-109.3,9110,8823,49.0,9110,8824,45.0,9110,8826,600000.0,9001,8827,0.0,9001,,,
-32104,"NAD83 / Nebraska",9001,4269,12630,9802,8821,39.5,9110,8822,-100.0,9110,8823,43.0,9110,8824,40.0,9110,8826,500000.0,9001,8827,0.0,9001,,,
-32107,"NAD83 / Nevada East",9001,4269,12731,9807,8801,34.45,9110,8802,-115.35,9110,8805,0.9999,9201,8806,200000.0,9001,8807,8000000.0,9001,,,,,,
-32108,"NAD83 / Nevada Central",9001,4269,12732,9807,8801,34.45,9110,8802,-116.4,9110,8805,0.9999,9201,8806,500000.0,9001,8807,6000000.0,9001,,,,,,
-32109,"NAD83 / Nevada West",9001,4269,12733,9807,8801,34.45,9110,8802,-118.35,9110,8805,0.9999,9201,8806,800000.0,9001,8807,4000000.0,9001,,,,,,
-32110,"NAD83 / New Hampshire",9001,4269,12830,9807,8801,42.3,9110,8802,-71.4,9110,8805,0.999966667,9201,8806,300000.0,9001,8807,0.0,9001,,,,,,
-32111,"NAD83 / New Jersey",9001,4269,12930,9807,8801,38.5,9110,8802,-74.3,9110,8805,0.9999,9201,8806,150000.0,9001,8807,0.0,9001,,,,,,
-32112,"NAD83 / New Mexico East",9001,4269,13031,9807,8801,31.0,9110,8802,-104.2,9110,8805,0.999909091,9201,8806,165000.0,9001,8807,0.0,9001,,,,,,
-32113,"NAD83 / New Mexico Central",9001,4269,13032,9807,8801,31.0,9110,8802,-106.15,9110,8805,0.9999,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32114,"NAD83 / New Mexico West",9001,4269,13033,9807,8801,31.0,9110,8802,-107.5,9110,8805,0.999916667,9201,8806,830000.0,9001,8807,0.0,9001,,,,,,
-32115,"NAD83 / New York East",9001,4269,13131,9807,8801,38.5,9110,8802,-74.3,9110,8805,0.9999,9201,8806,150000.0,9001,8807,0.0,9001,,,,,,
-32116,"NAD83 / New York Central",9001,4269,13132,9807,8801,40.0,9110,8802,-76.35,9110,8805,0.9999375,9201,8806,250000.0,9001,8807,0.0,9001,,,,,,
-32117,"NAD83 / New York West",9001,4269,13133,9807,8801,40.0,9110,8802,-78.35,9110,8805,0.9999375,9201,8806,350000.0,9001,8807,0.0,9001,,,,,,
-32118,"NAD83 / New York Long Island",9001,4269,13134,9802,8821,40.1,9110,8822,-74.0,9110,8823,41.02,9110,8824,40.4,9110,8826,300000.0,9001,8827,0.0,9001,,,
-32119,"NAD83 / North Carolina",9001,4269,13230,9802,8821,33.45,9110,8822,-79.0,9110,8823,36.1,9110,8824,34.2,9110,8826,609601.22,9001,8827,0.0,9001,,,
-32120,"NAD83 / North Dakota North",9001,4269,13331,9802,8821,47.0,9110,8822,-100.3,9110,8823,48.44,9110,8824,47.26,9110,8826,600000.0,9001,8827,0.0,9001,,,
-32121,"NAD83 / North Dakota South",9001,4269,13332,9802,8821,45.4,9110,8822,-100.3,9110,8823,47.29,9110,8824,46.11,9110,8826,600000.0,9001,8827,0.0,9001,,,
-32122,"NAD83 / Ohio North",9001,4269,13431,9802,8821,39.4,9110,8822,-82.3,9110,8823,41.42,9110,8824,40.26,9110,8826,600000.0,9001,8827,0.0,9001,,,
-32123,"NAD83 / Ohio South",9001,4269,13432,9802,8821,38.0,9110,8822,-82.3,9110,8823,40.02,9110,8824,38.44,9110,8826,600000.0,9001,8827,0.0,9001,,,
-32124,"NAD83 / Oklahoma North",9001,4269,13531,9802,8821,35.0,9110,8822,-98.0,9110,8823,36.46,9110,8824,35.34,9110,8826,600000.0,9001,8827,0.0,9001,,,
-32125,"NAD83 / Oklahoma South",9001,4269,13532,9802,8821,33.2,9110,8822,-98.0,9110,8823,35.14,9110,8824,33.56,9110,8826,600000.0,9001,8827,0.0,9001,,,
-32126,"NAD83 / Oregon North",9001,4269,13631,9802,8821,43.4,9110,8822,-120.3,9110,8823,46.0,9110,8824,44.2,9110,8826,2500000.0,9001,8827,0.0,9001,,,
-32127,"NAD83 / Oregon South",9001,4269,13632,9802,8821,41.4,9110,8822,-120.3,9110,8823,44.0,9110,8824,42.2,9110,8826,1500000.0,9001,8827,0.0,9001,,,
-32128,"NAD83 / Pennsylvania North",9001,4269,13731,9802,8821,40.1,9110,8822,-77.45,9110,8823,41.57,9110,8824,40.53,9110,8826,600000.0,9001,8827,0.0,9001,,,
-32129,"NAD83 / Pennsylvania South",9001,4269,13732,9802,8821,39.2,9110,8822,-77.45,9110,8823,40.58,9110,8824,39.56,9110,8826,600000.0,9001,8827,0.0,9001,,,
-32130,"NAD83 / Rhode Island",9001,4269,13830,9807,8801,41.05,9110,8802,-71.3,9110,8805,0.99999375,9201,8806,100000.0,9001,8807,0.0,9001,,,,,,
-32133,"NAD83 / South Carolina",9001,4269,13930,9802,8821,31.5,9110,8822,-81.0,9110,8823,34.5,9110,8824,32.3,9110,8826,609600.0,9001,8827,0.0,9001,,,
-32134,"NAD83 / South Dakota North",9001,4269,14031,9802,8821,43.5,9110,8822,-100.0,9110,8823,45.41,9110,8824,44.25,9110,8826,600000.0,9001,8827,0.0,9001,,,
-32135,"NAD83 / South Dakota South",9001,4269,14032,9802,8821,42.2,9110,8822,-100.2,9110,8823,44.24,9110,8824,42.5,9110,8826,600000.0,9001,8827,0.0,9001,,,
-32136,"NAD83 / Tennessee",9001,4269,14130,9802,8821,34.2,9110,8822,-86.0,9110,8823,36.25,9110,8824,35.15,9110,8826,600000.0,9001,8827,0.0,9001,,,
-32137,"NAD83 / Texas North",9001,4269,14231,9802,8821,34.0,9110,8822,-101.3,9110,8823,36.11,9110,8824,34.39,9110,8826,200000.0,9001,8827,1000000.0,9001,,,
-32138,"NAD83 / Texas North Central",9001,4269,14232,9802,8821,31.4,9110,8822,-98.3,9110,8823,33.58,9110,8824,32.08,9110,8826,600000.0,9001,8827,2000000.0,9001,,,
-32139,"NAD83 / Texas Central",9001,4269,14233,9802,8821,29.4,9110,8822,-100.2,9110,8823,31.53,9110,8824,30.07,9110,8826,700000.0,9001,8827,3000000.0,9001,,,
-32140,"NAD83 / Texas South Central",9001,4269,14234,9802,8821,27.5,9110,8822,-99.0,9110,8823,30.17,9110,8824,28.23,9110,8826,600000.0,9001,8827,4000000.0,9001,,,
-32141,"NAD83 / Texas South",9001,4269,14235,9802,8821,25.4,9110,8822,-98.3,9110,8823,27.5,9110,8824,26.1,9110,8826,300000.0,9001,8827,5000000.0,9001,,,
-32142,"NAD83 / Utah North",9001,4269,14331,9802,8821,40.2,9110,8822,-111.3,9110,8823,41.47,9110,8824,40.43,9110,8826,500000.0,9001,8827,1000000.0,9001,,,
-32143,"NAD83 / Utah Central",9001,4269,14332,9802,8821,38.2,9110,8822,-111.3,9110,8823,40.39,9110,8824,39.01,9110,8826,500000.0,9001,8827,2000000.0,9001,,,
-32144,"NAD83 / Utah South",9001,4269,14333,9802,8821,36.4,9110,8822,-111.3,9110,8823,38.21,9110,8824,37.13,9110,8826,500000.0,9001,8827,3000000.0,9001,,,
-32145,"NAD83 / Vermont",9001,4269,14430,9807,8801,42.3,9110,8802,-72.3,9110,8805,0.999964286,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32146,"NAD83 / Virginia North",9001,4269,14531,9802,8821,37.4,9110,8822,-78.3,9110,8823,39.12,9110,8824,38.02,9110,8826,3500000.0,9001,8827,2000000.0,9001,,,
-32147,"NAD83 / Virginia South",9001,4269,14532,9802,8821,36.2,9110,8822,-78.3,9110,8823,37.58,9110,8824,36.46,9110,8826,3500000.0,9001,8827,1000000.0,9001,,,
-32148,"NAD83 / Washington North",9001,4269,14631,9802,8821,47.0,9110,8822,-120.5,9110,8823,48.44,9110,8824,47.3,9110,8826,500000.0,9001,8827,0.0,9001,,,
-32149,"NAD83 / Washington South",9001,4269,14632,9802,8821,45.2,9110,8822,-120.3,9110,8823,47.2,9110,8824,45.5,9110,8826,500000.0,9001,8827,0.0,9001,,,
-32150,"NAD83 / West Virginia North",9001,4269,14731,9802,8821,38.3,9110,8822,-79.3,9110,8823,40.15,9110,8824,39.0,9110,8826,600000.0,9001,8827,0.0,9001,,,
-32151,"NAD83 / West Virginia South",9001,4269,14732,9802,8821,37.0,9110,8822,-81.0,9110,8823,38.53,9110,8824,37.29,9110,8826,600000.0,9001,8827,0.0,9001,,,
-32152,"NAD83 / Wisconsin North",9001,4269,14831,9802,8821,45.1,9110,8822,-90.0,9110,8823,46.46,9110,8824,45.34,9110,8826,600000.0,9001,8827,0.0,9001,,,
-32153,"NAD83 / Wisconsin Central",9001,4269,14832,9802,8821,43.5,9110,8822,-90.0,9110,8823,45.3,9110,8824,44.15,9110,8826,600000.0,9001,8827,0.0,9001,,,
-32154,"NAD83 / Wisconsin South",9001,4269,14833,9802,8821,42.0,9110,8822,-90.0,9110,8823,44.04,9110,8824,42.44,9110,8826,600000.0,9001,8827,0.0,9001,,,
-32155,"NAD83 / Wyoming East",9001,4269,14931,9807,8801,40.3,9110,8802,-105.1,9110,8805,0.9999375,9201,8806,200000.0,9001,8807,0.0,9001,,,,,,
-32156,"NAD83 / Wyoming East Central",9001,4269,14932,9807,8801,40.3,9110,8802,-107.2,9110,8805,0.9999375,9201,8806,400000.0,9001,8807,100000.0,9001,,,,,,
-32157,"NAD83 / Wyoming West Central",9001,4269,14933,9807,8801,40.3,9110,8802,-108.45,9110,8805,0.9999375,9201,8806,600000.0,9001,8807,0.0,9001,,,,,,
-32158,"NAD83 / Wyoming West",9001,4269,14934,9807,8801,40.3,9110,8802,-110.05,9110,8805,0.9999375,9201,8806,800000.0,9001,8807,100000.0,9001,,,,,,
-32161,"NAD83 / Puerto Rico & Virgin Is.",9001,4269,15230,9802,8821,17.5,9110,8822,-66.26,9110,8823,18.26,9110,8824,18.02,9110,8826,200000.0,9001,8827,200000.0,9001,,,
-32180,"NAD83 / SCoPQ zone 2",9001,4269,17700,9807,8801,0.0,9110,8802,-55.3,9110,8805,0.9999,9201,8806,304800.0,9001,8807,0.0,9001,,,,,,
-32181,"NAD83 / MTM zone 1",9001,4269,17701,9807,8801,0.0,9102,8802,-53.0,9102,8805,0.9999,9201,8806,304800.0,9001,8807,0.0,9001,,,,,,
-32182,"NAD83 / MTM zone 2",9001,4269,17702,9807,8801,0.0,9102,8802,-56.0,9102,8805,0.9999,9201,8806,304800.0,9001,8807,0.0,9001,,,,,,
-32183,"NAD83 / MTM zone 3",9001,4269,17703,9807,8801,0.0,9110,8802,-58.3,9110,8805,0.9999,9201,8806,304800.0,9001,8807,0.0,9001,,,,,,
-32184,"NAD83 / MTM zone 4",9001,4269,17704,9807,8801,0.0,9110,8802,-61.3,9110,8805,0.9999,9201,8806,304800.0,9001,8807,0.0,9001,,,,,,
-32185,"NAD83 / MTM zone 5",9001,4269,17705,9807,8801,0.0,9110,8802,-64.3,9110,8805,0.9999,9201,8806,304800.0,9001,8807,0.0,9001,,,,,,
-32186,"NAD83 / MTM zone 6",9001,4269,17706,9807,8801,0.0,9110,8802,-67.3,9110,8805,0.9999,9201,8806,304800.0,9001,8807,0.0,9001,,,,,,
-32187,"NAD83 / MTM zone 7",9001,4269,17707,9807,8801,0.0,9110,8802,-70.3,9110,8805,0.9999,9201,8806,304800.0,9001,8807,0.0,9001,,,,,,
-32188,"NAD83 / MTM zone 8",9001,4269,17708,9807,8801,0.0,9110,8802,-73.3,9110,8805,0.9999,9201,8806,304800.0,9001,8807,0.0,9001,,,,,,
-32189,"NAD83 / MTM zone 9",9001,4269,17709,9807,8801,0.0,9110,8802,-76.3,9110,8805,0.9999,9201,8806,304800.0,9001,8807,0.0,9001,,,,,,
-32190,"NAD83 / MTM zone 10",9001,4269,17710,9807,8801,0.0,9110,8802,-79.3,9110,8805,0.9999,9201,8806,304800.0,9001,8807,0.0,9001,,,,,,
-32191,"NAD83 / MTM zone 11",9001,4269,17711,9807,8801,0.0,9110,8802,-82.3,9110,8805,0.9999,9201,8806,304800.0,9001,8807,0.0,9001,,,,,,
-32192,"NAD83 / MTM zone 12",9001,4269,17712,9807,8801,0.0,9102,8802,-81.0,9102,8805,0.9999,9201,8806,304800.0,9001,8807,0.0,9001,,,,,,
-32193,"NAD83 / MTM zone 13",9001,4269,17713,9807,8801,0.0,9102,8802,-84.0,9102,8805,0.9999,9201,8806,304800.0,9001,8807,0.0,9001,,,,,,
-32194,"NAD83 / MTM zone 14",9001,4269,17714,9807,8801,0.0,9102,8802,-87.0,9102,8805,0.9999,9201,8806,304800.0,9001,8807,0.0,9001,,,,,,
-32195,"NAD83 / MTM zone 15",9001,4269,17715,9807,8801,0.0,9102,8802,-90.0,9102,8805,0.9999,9201,8806,304800.0,9001,8807,0.0,9001,,,,,,
-32196,"NAD83 / MTM zone 16",9001,4269,17716,9807,8801,0.0,9102,8802,-93.0,9102,8805,0.9999,9201,8806,304800.0,9001,8807,0.0,9001,,,,,,
-32197,"NAD83 / MTM zone 17",9001,4269,17717,9807,8801,0.0,9102,8802,-96.0,9102,8805,0.9999,9201,8806,304800.0,9001,8807,0.0,9001,,,,,,
-32198,"NAD83 / Quebec Lambert",9001,4269,19944,9802,8821,44.0,9110,8822,-68.3,9110,8823,60.0,9110,8824,46.0,9110,8826,0.0,9001,8827,0.0,9001,,,
-32201,"WGS 72 / UTM zone 1N",9001,4322,16001,9807,8801,0.0,9102,8802,-177.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32202,"WGS 72 / UTM zone 2N",9001,4322,16002,9807,8801,0.0,9102,8802,-171.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32203,"WGS 72 / UTM zone 3N",9001,4322,16003,9807,8801,0.0,9102,8802,-165.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32204,"WGS 72 / UTM zone 4N",9001,4322,16004,9807,8801,0.0,9102,8802,-159.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32205,"WGS 72 / UTM zone 5N",9001,4322,16005,9807,8801,0.0,9102,8802,-153.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32206,"WGS 72 / UTM zone 6N",9001,4322,16006,9807,8801,0.0,9102,8802,-147.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32207,"WGS 72 / UTM zone 7N",9001,4322,16007,9807,8801,0.0,9102,8802,-141.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32208,"WGS 72 / UTM zone 8N",9001,4322,16008,9807,8801,0.0,9102,8802,-135.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32209,"WGS 72 / UTM zone 9N",9001,4322,16009,9807,8801,0.0,9102,8802,-129.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32210,"WGS 72 / UTM zone 10N",9001,4322,16010,9807,8801,0.0,9102,8802,-123.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32211,"WGS 72 / UTM zone 11N",9001,4322,16011,9807,8801,0.0,9102,8802,-117.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32212,"WGS 72 / UTM zone 12N",9001,4322,16012,9807,8801,0.0,9102,8802,-111.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32213,"WGS 72 / UTM zone 13N",9001,4322,16013,9807,8801,0.0,9102,8802,-105.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32214,"WGS 72 / UTM zone 14N",9001,4322,16014,9807,8801,0.0,9102,8802,-99.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32215,"WGS 72 / UTM zone 15N",9001,4322,16015,9807,8801,0.0,9102,8802,-93.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32216,"WGS 72 / UTM zone 16N",9001,4322,16016,9807,8801,0.0,9102,8802,-87.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32217,"WGS 72 / UTM zone 17N",9001,4322,16017,9807,8801,0.0,9102,8802,-81.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32218,"WGS 72 / UTM zone 18N",9001,4322,16018,9807,8801,0.0,9102,8802,-75.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32219,"WGS 72 / UTM zone 19N",9001,4322,16019,9807,8801,0.0,9102,8802,-69.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32220,"WGS 72 / UTM zone 20N",9001,4322,16020,9807,8801,0.0,9102,8802,-63.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32221,"WGS 72 / UTM zone 21N",9001,4322,16021,9807,8801,0.0,9102,8802,-57.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32222,"WGS 72 / UTM zone 22N",9001,4322,16022,9807,8801,0.0,9102,8802,-51.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32223,"WGS 72 / UTM zone 23N",9001,4322,16023,9807,8801,0.0,9102,8802,-45.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32224,"WGS 72 / UTM zone 24N",9001,4322,16024,9807,8801,0.0,9102,8802,-39.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32225,"WGS 72 / UTM zone 25N",9001,4322,16025,9807,8801,0.0,9102,8802,-33.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32226,"WGS 72 / UTM zone 26N",9001,4322,16026,9807,8801,0.0,9102,8802,-27.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32227,"WGS 72 / UTM zone 27N",9001,4322,16027,9807,8801,0.0,9102,8802,-21.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32228,"WGS 72 / UTM zone 28N",9001,4322,16028,9807,8801,0.0,9102,8802,-15.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32229,"WGS 72 / UTM zone 29N",9001,4322,16029,9807,8801,0.0,9102,8802,-9.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32230,"WGS 72 / UTM zone 30N",9001,4322,16030,9807,8801,0.0,9102,8802,-3.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32231,"WGS 72 / UTM zone 31N",9001,4322,16031,9807,8801,0.0,9102,8802,3.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32232,"WGS 72 / UTM zone 32N",9001,4322,16032,9807,8801,0.0,9102,8802,9.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32233,"WGS 72 / UTM zone 33N",9001,4322,16033,9807,8801,0.0,9102,8802,15.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32234,"WGS 72 / UTM zone 34N",9001,4322,16034,9807,8801,0.0,9102,8802,21.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32235,"WGS 72 / UTM zone 35N",9001,4322,16035,9807,8801,0.0,9102,8802,27.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32236,"WGS 72 / UTM zone 36N",9001,4322,16036,9807,8801,0.0,9102,8802,33.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32237,"WGS 72 / UTM zone 37N",9001,4322,16037,9807,8801,0.0,9102,8802,39.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32238,"WGS 72 / UTM zone 38N",9001,4322,16038,9807,8801,0.0,9102,8802,45.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32239,"WGS 72 / UTM zone 39N",9001,4322,16039,9807,8801,0.0,9102,8802,51.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32240,"WGS 72 / UTM zone 40N",9001,4322,16040,9807,8801,0.0,9102,8802,57.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32241,"WGS 72 / UTM zone 41N",9001,4322,16041,9807,8801,0.0,9102,8802,63.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32242,"WGS 72 / UTM zone 42N",9001,4322,16042,9807,8801,0.0,9102,8802,69.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32243,"WGS 72 / UTM zone 43N",9001,4322,16043,9807,8801,0.0,9102,8802,75.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32244,"WGS 72 / UTM zone 44N",9001,4322,16044,9807,8801,0.0,9102,8802,81.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32245,"WGS 72 / UTM zone 45N",9001,4322,16045,9807,8801,0.0,9102,8802,87.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32246,"WGS 72 / UTM zone 46N",9001,4322,16046,9807,8801,0.0,9102,8802,93.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32247,"WGS 72 / UTM zone 47N",9001,4322,16047,9807,8801,0.0,9102,8802,99.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32248,"WGS 72 / UTM zone 48N",9001,4322,16048,9807,8801,0.0,9102,8802,105.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32249,"WGS 72 / UTM zone 49N",9001,4322,16049,9807,8801,0.0,9102,8802,111.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32250,"WGS 72 / UTM zone 50N",9001,4322,16050,9807,8801,0.0,9102,8802,117.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32251,"WGS 72 / UTM zone 51N",9001,4322,16051,9807,8801,0.0,9102,8802,123.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32252,"WGS 72 / UTM zone 52N",9001,4322,16052,9807,8801,0.0,9102,8802,129.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32253,"WGS 72 / UTM zone 53N",9001,4322,16053,9807,8801,0.0,9102,8802,135.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32254,"WGS 72 / UTM zone 54N",9001,4322,16054,9807,8801,0.0,9102,8802,141.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32255,"WGS 72 / UTM zone 55N",9001,4322,16055,9807,8801,0.0,9102,8802,147.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32256,"WGS 72 / UTM zone 56N",9001,4322,16056,9807,8801,0.0,9102,8802,153.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32257,"WGS 72 / UTM zone 57N",9001,4322,16057,9807,8801,0.0,9102,8802,159.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32258,"WGS 72 / UTM zone 58N",9001,4322,16058,9807,8801,0.0,9102,8802,165.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32259,"WGS 72 / UTM zone 59N",9001,4322,16059,9807,8801,0.0,9102,8802,171.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32260,"WGS 72 / UTM zone 60N",9001,4322,16060,9807,8801,0.0,9102,8802,177.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32301,"WGS 72 / UTM zone 1S",9001,4322,16101,9807,8801,0.0,9102,8802,-177.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32302,"WGS 72 / UTM zone 2S",9001,4322,16102,9807,8801,0.0,9102,8802,-171.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32303,"WGS 72 / UTM zone 3S",9001,4322,16103,9807,8801,0.0,9102,8802,-165.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32304,"WGS 72 / UTM zone 4S",9001,4322,16104,9807,8801,0.0,9102,8802,-159.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32305,"WGS 72 / UTM zone 5S",9001,4322,16105,9807,8801,0.0,9102,8802,-153.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32306,"WGS 72 / UTM zone 6S",9001,4322,16106,9807,8801,0.0,9102,8802,-147.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32307,"WGS 72 / UTM zone 7S",9001,4322,16107,9807,8801,0.0,9102,8802,-141.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32308,"WGS 72 / UTM zone 8S",9001,4322,16108,9807,8801,0.0,9102,8802,-135.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32309,"WGS 72 / UTM zone 9S",9001,4322,16109,9807,8801,0.0,9102,8802,-129.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32310,"WGS 72 / UTM zone 10S",9001,4322,16110,9807,8801,0.0,9102,8802,-123.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32311,"WGS 72 / UTM zone 11S",9001,4322,16111,9807,8801,0.0,9102,8802,-117.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32312,"WGS 72 / UTM zone 12S",9001,4322,16112,9807,8801,0.0,9102,8802,-111.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32313,"WGS 72 / UTM zone 13S",9001,4322,16113,9807,8801,0.0,9102,8802,-105.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32314,"WGS 72 / UTM zone 14S",9001,4322,16114,9807,8801,0.0,9102,8802,-99.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32315,"WGS 72 / UTM zone 15S",9001,4322,16115,9807,8801,0.0,9102,8802,-93.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32316,"WGS 72 / UTM zone 16S",9001,4322,16116,9807,8801,0.0,9102,8802,-87.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32317,"WGS 72 / UTM zone 17S",9001,4322,16117,9807,8801,0.0,9102,8802,-81.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32318,"WGS 72 / UTM zone 18S",9001,4322,16118,9807,8801,0.0,9102,8802,-75.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32319,"WGS 72 / UTM zone 19S",9001,4322,16119,9807,8801,0.0,9102,8802,-69.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32320,"WGS 72 / UTM zone 20S",9001,4322,16120,9807,8801,0.0,9102,8802,-63.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32321,"WGS 72 / UTM zone 21S",9001,4322,16121,9807,8801,0.0,9102,8802,-57.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32322,"WGS 72 / UTM zone 22S",9001,4322,16122,9807,8801,0.0,9102,8802,-51.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32323,"WGS 72 / UTM zone 23S",9001,4322,16123,9807,8801,0.0,9102,8802,-45.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32324,"WGS 72 / UTM zone 24S",9001,4322,16124,9807,8801,0.0,9102,8802,-39.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32325,"WGS 72 / UTM zone 25S",9001,4322,16125,9807,8801,0.0,9102,8802,-33.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32326,"WGS 72 / UTM zone 26S",9001,4322,16126,9807,8801,0.0,9102,8802,-27.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32327,"WGS 72 / UTM zone 27S",9001,4322,16127,9807,8801,0.0,9102,8802,-21.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32328,"WGS 72 / UTM zone 28S",9001,4322,16128,9807,8801,0.0,9102,8802,-15.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32329,"WGS 72 / UTM zone 29S",9001,4322,16129,9807,8801,0.0,9102,8802,-9.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32330,"WGS 72 / UTM zone 30S",9001,4322,16130,9807,8801,0.0,9102,8802,-3.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32331,"WGS 72 / UTM zone 31S",9001,4322,16131,9807,8801,0.0,9102,8802,3.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32332,"WGS 72 / UTM zone 32S",9001,4322,16132,9807,8801,0.0,9102,8802,9.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32333,"WGS 72 / UTM zone 33S",9001,4322,16133,9807,8801,0.0,9102,8802,15.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32334,"WGS 72 / UTM zone 34S",9001,4322,16134,9807,8801,0.0,9102,8802,21.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32335,"WGS 72 / UTM zone 35S",9001,4322,16135,9807,8801,0.0,9102,8802,27.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32336,"WGS 72 / UTM zone 36S",9001,4322,16136,9807,8801,0.0,9102,8802,33.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32337,"WGS 72 / UTM zone 37S",9001,4322,16137,9807,8801,0.0,9102,8802,39.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32338,"WGS 72 / UTM zone 38S",9001,4322,16138,9807,8801,0.0,9102,8802,45.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32339,"WGS 72 / UTM zone 39S",9001,4322,16139,9807,8801,0.0,9102,8802,51.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32340,"WGS 72 / UTM zone 40S",9001,4322,16140,9807,8801,0.0,9102,8802,57.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32341,"WGS 72 / UTM zone 41S",9001,4322,16141,9807,8801,0.0,9102,8802,63.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32342,"WGS 72 / UTM zone 42S",9001,4322,16142,9807,8801,0.0,9102,8802,69.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32343,"WGS 72 / UTM zone 43S",9001,4322,16143,9807,8801,0.0,9102,8802,75.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32344,"WGS 72 / UTM zone 44S",9001,4322,16144,9807,8801,0.0,9102,8802,81.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32345,"WGS 72 / UTM zone 45S",9001,4322,16145,9807,8801,0.0,9102,8802,87.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32346,"WGS 72 / UTM zone 46S",9001,4322,16146,9807,8801,0.0,9102,8802,93.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32347,"WGS 72 / UTM zone 47S",9001,4322,16147,9807,8801,0.0,9102,8802,99.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32348,"WGS 72 / UTM zone 48S",9001,4322,16148,9807,8801,0.0,9102,8802,105.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32349,"WGS 72 / UTM zone 49S",9001,4322,16149,9807,8801,0.0,9102,8802,111.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32350,"WGS 72 / UTM zone 50S",9001,4322,16150,9807,8801,0.0,9102,8802,117.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32351,"WGS 72 / UTM zone 51S",9001,4322,16151,9807,8801,0.0,9102,8802,123.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32352,"WGS 72 / UTM zone 52S",9001,4322,16152,9807,8801,0.0,9102,8802,129.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32353,"WGS 72 / UTM zone 53S",9001,4322,16153,9807,8801,0.0,9102,8802,135.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32354,"WGS 72 / UTM zone 54S",9001,4322,16154,9807,8801,0.0,9102,8802,141.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32355,"WGS 72 / UTM zone 55S",9001,4322,16155,9807,8801,0.0,9102,8802,147.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32356,"WGS 72 / UTM zone 56S",9001,4322,16156,9807,8801,0.0,9102,8802,153.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32357,"WGS 72 / UTM zone 57S",9001,4322,16157,9807,8801,0.0,9102,8802,159.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32358,"WGS 72 / UTM zone 58S",9001,4322,16158,9807,8801,0.0,9102,8802,165.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32359,"WGS 72 / UTM zone 59S",9001,4322,16159,9807,8801,0.0,9102,8802,171.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32360,"WGS 72 / UTM zone 60S",9001,4322,16160,9807,8801,0.0,9102,8802,177.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32401,"WGS 72BE / UTM zone 1N",9001,4324,16001,9807,8801,0.0,9102,8802,-177.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32402,"WGS 72BE / UTM zone 2N",9001,4324,16002,9807,8801,0.0,9102,8802,-171.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32403,"WGS 72BE / UTM zone 3N",9001,4324,16003,9807,8801,0.0,9102,8802,-165.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32404,"WGS 72BE / UTM zone 4N",9001,4324,16004,9807,8801,0.0,9102,8802,-159.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32405,"WGS 72BE / UTM zone 5N",9001,4324,16005,9807,8801,0.0,9102,8802,-153.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32406,"WGS 72BE / UTM zone 6N",9001,4324,16006,9807,8801,0.0,9102,8802,-147.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32407,"WGS 72BE / UTM zone 7N",9001,4324,16007,9807,8801,0.0,9102,8802,-141.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32408,"WGS 72BE / UTM zone 8N",9001,4324,16008,9807,8801,0.0,9102,8802,-135.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32409,"WGS 72BE / UTM zone 9N",9001,4324,16009,9807,8801,0.0,9102,8802,-129.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32410,"WGS 72BE / UTM zone 10N",9001,4324,16010,9807,8801,0.0,9102,8802,-123.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32411,"WGS 72BE / UTM zone 11N",9001,4324,16011,9807,8801,0.0,9102,8802,-117.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32412,"WGS 72BE / UTM zone 12N",9001,4324,16012,9807,8801,0.0,9102,8802,-111.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32413,"WGS 72BE / UTM zone 13N",9001,4324,16013,9807,8801,0.0,9102,8802,-105.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32414,"WGS 72BE / UTM zone 14N",9001,4324,16014,9807,8801,0.0,9102,8802,-99.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32415,"WGS 72BE / UTM zone 15N",9001,4324,16015,9807,8801,0.0,9102,8802,-93.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32416,"WGS 72BE / UTM zone 16N",9001,4324,16016,9807,8801,0.0,9102,8802,-87.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32417,"WGS 72BE / UTM zone 17N",9001,4324,16017,9807,8801,0.0,9102,8802,-81.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32418,"WGS 72BE / UTM zone 18N",9001,4324,16018,9807,8801,0.0,9102,8802,-75.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32419,"WGS 72BE / UTM zone 19N",9001,4324,16019,9807,8801,0.0,9102,8802,-69.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32420,"WGS 72BE / UTM zone 20N",9001,4324,16020,9807,8801,0.0,9102,8802,-63.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32421,"WGS 72BE / UTM zone 21N",9001,4324,16021,9807,8801,0.0,9102,8802,-57.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32422,"WGS 72BE / UTM zone 22N",9001,4324,16022,9807,8801,0.0,9102,8802,-51.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32423,"WGS 72BE / UTM zone 23N",9001,4324,16023,9807,8801,0.0,9102,8802,-45.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32424,"WGS 72BE / UTM zone 24N",9001,4324,16024,9807,8801,0.0,9102,8802,-39.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32425,"WGS 72BE / UTM zone 25N",9001,4324,16025,9807,8801,0.0,9102,8802,-33.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32426,"WGS 72BE / UTM zone 26N",9001,4324,16026,9807,8801,0.0,9102,8802,-27.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32427,"WGS 72BE / UTM zone 27N",9001,4324,16027,9807,8801,0.0,9102,8802,-21.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32428,"WGS 72BE / UTM zone 28N",9001,4324,16028,9807,8801,0.0,9102,8802,-15.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32429,"WGS 72BE / UTM zone 29N",9001,4324,16029,9807,8801,0.0,9102,8802,-9.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32430,"WGS 72BE / UTM zone 30N",9001,4324,16030,9807,8801,0.0,9102,8802,-3.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32431,"WGS 72BE / UTM zone 31N",9001,4324,16031,9807,8801,0.0,9102,8802,3.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32432,"WGS 72BE / UTM zone 32N",9001,4324,16032,9807,8801,0.0,9102,8802,9.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32433,"WGS 72BE / UTM zone 33N",9001,4324,16033,9807,8801,0.0,9102,8802,15.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32434,"WGS 72BE / UTM zone 34N",9001,4324,16034,9807,8801,0.0,9102,8802,21.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32435,"WGS 72BE / UTM zone 35N",9001,4324,16035,9807,8801,0.0,9102,8802,27.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32436,"WGS 72BE / UTM zone 36N",9001,4324,16036,9807,8801,0.0,9102,8802,33.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32437,"WGS 72BE / UTM zone 37N",9001,4324,16037,9807,8801,0.0,9102,8802,39.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32438,"WGS 72BE / UTM zone 38N",9001,4324,16038,9807,8801,0.0,9102,8802,45.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32439,"WGS 72BE / UTM zone 39N",9001,4324,16039,9807,8801,0.0,9102,8802,51.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32440,"WGS 72BE / UTM zone 40N",9001,4324,16040,9807,8801,0.0,9102,8802,57.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32441,"WGS 72BE / UTM zone 41N",9001,4324,16041,9807,8801,0.0,9102,8802,63.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32442,"WGS 72BE / UTM zone 42N",9001,4324,16042,9807,8801,0.0,9102,8802,69.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32443,"WGS 72BE / UTM zone 43N",9001,4324,16043,9807,8801,0.0,9102,8802,75.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32444,"WGS 72BE / UTM zone 44N",9001,4324,16044,9807,8801,0.0,9102,8802,81.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32445,"WGS 72BE / UTM zone 45N",9001,4324,16045,9807,8801,0.0,9102,8802,87.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32446,"WGS 72BE / UTM zone 46N",9001,4324,16046,9807,8801,0.0,9102,8802,93.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32447,"WGS 72BE / UTM zone 47N",9001,4324,16047,9807,8801,0.0,9102,8802,99.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32448,"WGS 72BE / UTM zone 48N",9001,4324,16048,9807,8801,0.0,9102,8802,105.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32449,"WGS 72BE / UTM zone 49N",9001,4324,16049,9807,8801,0.0,9102,8802,111.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32450,"WGS 72BE / UTM zone 50N",9001,4324,16050,9807,8801,0.0,9102,8802,117.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32451,"WGS 72BE / UTM zone 51N",9001,4324,16051,9807,8801,0.0,9102,8802,123.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32452,"WGS 72BE / UTM zone 52N",9001,4324,16052,9807,8801,0.0,9102,8802,129.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32453,"WGS 72BE / UTM zone 53N",9001,4324,16053,9807,8801,0.0,9102,8802,135.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32454,"WGS 72BE / UTM zone 54N",9001,4324,16054,9807,8801,0.0,9102,8802,141.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32455,"WGS 72BE / UTM zone 55N",9001,4324,16055,9807,8801,0.0,9102,8802,147.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32456,"WGS 72BE / UTM zone 56N",9001,4324,16056,9807,8801,0.0,9102,8802,153.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32457,"WGS 72BE / UTM zone 57N",9001,4324,16057,9807,8801,0.0,9102,8802,159.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32458,"WGS 72BE / UTM zone 58N",9001,4324,16058,9807,8801,0.0,9102,8802,165.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32459,"WGS 72BE / UTM zone 59N",9001,4324,16059,9807,8801,0.0,9102,8802,171.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32460,"WGS 72BE / UTM zone 60N",9001,4324,16060,9807,8801,0.0,9102,8802,177.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32501,"WGS 72BE / UTM zone 1S",9001,4324,16101,9807,8801,0.0,9102,8802,-177.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32502,"WGS 72BE / UTM zone 2S",9001,4324,16102,9807,8801,0.0,9102,8802,-171.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32503,"WGS 72BE / UTM zone 3S",9001,4324,16103,9807,8801,0.0,9102,8802,-165.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32504,"WGS 72BE / UTM zone 4S",9001,4324,16104,9807,8801,0.0,9102,8802,-159.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32505,"WGS 72BE / UTM zone 5S",9001,4324,16105,9807,8801,0.0,9102,8802,-153.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32506,"WGS 72BE / UTM zone 6S",9001,4324,16106,9807,8801,0.0,9102,8802,-147.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32507,"WGS 72BE / UTM zone 7S",9001,4324,16107,9807,8801,0.0,9102,8802,-141.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32508,"WGS 72BE / UTM zone 8S",9001,4324,16108,9807,8801,0.0,9102,8802,-135.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32509,"WGS 72BE / UTM zone 9S",9001,4324,16109,9807,8801,0.0,9102,8802,-129.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32510,"WGS 72BE / UTM zone 10S",9001,4324,16110,9807,8801,0.0,9102,8802,-123.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32511,"WGS 72BE / UTM zone 11S",9001,4324,16111,9807,8801,0.0,9102,8802,-117.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32512,"WGS 72BE / UTM zone 12S",9001,4324,16112,9807,8801,0.0,9102,8802,-111.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32513,"WGS 72BE / UTM zone 13S",9001,4324,16113,9807,8801,0.0,9102,8802,-105.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32514,"WGS 72BE / UTM zone 14S",9001,4324,16114,9807,8801,0.0,9102,8802,-99.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32515,"WGS 72BE / UTM zone 15S",9001,4324,16115,9807,8801,0.0,9102,8802,-93.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32516,"WGS 72BE / UTM zone 16S",9001,4324,16116,9807,8801,0.0,9102,8802,-87.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32517,"WGS 72BE / UTM zone 17S",9001,4324,16117,9807,8801,0.0,9102,8802,-81.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32518,"WGS 72BE / UTM zone 18S",9001,4324,16118,9807,8801,0.0,9102,8802,-75.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32519,"WGS 72BE / UTM zone 19S",9001,4324,16119,9807,8801,0.0,9102,8802,-69.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32520,"WGS 72BE / UTM zone 20S",9001,4324,16120,9807,8801,0.0,9102,8802,-63.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32521,"WGS 72BE / UTM zone 21S",9001,4324,16121,9807,8801,0.0,9102,8802,-57.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32522,"WGS 72BE / UTM zone 22S",9001,4324,16122,9807,8801,0.0,9102,8802,-51.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32523,"WGS 72BE / UTM zone 23S",9001,4324,16123,9807,8801,0.0,9102,8802,-45.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32524,"WGS 72BE / UTM zone 24S",9001,4324,16124,9807,8801,0.0,9102,8802,-39.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32525,"WGS 72BE / UTM zone 25S",9001,4324,16125,9807,8801,0.0,9102,8802,-33.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32526,"WGS 72BE / UTM zone 26S",9001,4324,16126,9807,8801,0.0,9102,8802,-27.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32527,"WGS 72BE / UTM zone 27S",9001,4324,16127,9807,8801,0.0,9102,8802,-21.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32528,"WGS 72BE / UTM zone 28S",9001,4324,16128,9807,8801,0.0,9102,8802,-15.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32529,"WGS 72BE / UTM zone 29S",9001,4324,16129,9807,8801,0.0,9102,8802,-9.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32530,"WGS 72BE / UTM zone 30S",9001,4324,16130,9807,8801,0.0,9102,8802,-3.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32531,"WGS 72BE / UTM zone 31S",9001,4324,16131,9807,8801,0.0,9102,8802,3.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32532,"WGS 72BE / UTM zone 32S",9001,4324,16132,9807,8801,0.0,9102,8802,9.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32533,"WGS 72BE / UTM zone 33S",9001,4324,16133,9807,8801,0.0,9102,8802,15.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32534,"WGS 72BE / UTM zone 34S",9001,4324,16134,9807,8801,0.0,9102,8802,21.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32535,"WGS 72BE / UTM zone 35S",9001,4324,16135,9807,8801,0.0,9102,8802,27.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32536,"WGS 72BE / UTM zone 36S",9001,4324,16136,9807,8801,0.0,9102,8802,33.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32537,"WGS 72BE / UTM zone 37S",9001,4324,16137,9807,8801,0.0,9102,8802,39.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32538,"WGS 72BE / UTM zone 38S",9001,4324,16138,9807,8801,0.0,9102,8802,45.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32539,"WGS 72BE / UTM zone 39S",9001,4324,16139,9807,8801,0.0,9102,8802,51.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32540,"WGS 72BE / UTM zone 40S",9001,4324,16140,9807,8801,0.0,9102,8802,57.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32541,"WGS 72BE / UTM zone 41S",9001,4324,16141,9807,8801,0.0,9102,8802,63.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32542,"WGS 72BE / UTM zone 42S",9001,4324,16142,9807,8801,0.0,9102,8802,69.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32543,"WGS 72BE / UTM zone 43S",9001,4324,16143,9807,8801,0.0,9102,8802,75.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32544,"WGS 72BE / UTM zone 44S",9001,4324,16144,9807,8801,0.0,9102,8802,81.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32545,"WGS 72BE / UTM zone 45S",9001,4324,16145,9807,8801,0.0,9102,8802,87.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32546,"WGS 72BE / UTM zone 46S",9001,4324,16146,9807,8801,0.0,9102,8802,93.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32547,"WGS 72BE / UTM zone 47S",9001,4324,16147,9807,8801,0.0,9102,8802,99.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32548,"WGS 72BE / UTM zone 48S",9001,4324,16148,9807,8801,0.0,9102,8802,105.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32549,"WGS 72BE / UTM zone 49S",9001,4324,16149,9807,8801,0.0,9102,8802,111.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32550,"WGS 72BE / UTM zone 50S",9001,4324,16150,9807,8801,0.0,9102,8802,117.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32551,"WGS 72BE / UTM zone 51S",9001,4324,16151,9807,8801,0.0,9102,8802,123.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32552,"WGS 72BE / UTM zone 52S",9001,4324,16152,9807,8801,0.0,9102,8802,129.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32553,"WGS 72BE / UTM zone 53S",9001,4324,16153,9807,8801,0.0,9102,8802,135.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32554,"WGS 72BE / UTM zone 54S",9001,4324,16154,9807,8801,0.0,9102,8802,141.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32555,"WGS 72BE / UTM zone 55S",9001,4324,16155,9807,8801,0.0,9102,8802,147.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32556,"WGS 72BE / UTM zone 56S",9001,4324,16156,9807,8801,0.0,9102,8802,153.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32557,"WGS 72BE / UTM zone 57S",9001,4324,16157,9807,8801,0.0,9102,8802,159.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32558,"WGS 72BE / UTM zone 58S",9001,4324,16158,9807,8801,0.0,9102,8802,165.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32559,"WGS 72BE / UTM zone 59S",9001,4324,16159,9807,8801,0.0,9102,8802,171.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32560,"WGS 72BE / UTM zone 60S",9001,4324,16160,9807,8801,0.0,9102,8802,177.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32600,"WGS 84 / UTM grid system (northern hemisphere)",9001,4326,16000,9824,8801,0.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,8830,-180.0,9102,8831,6.0,9102,,,
-32601,"WGS 84 / UTM zone 1N",9001,4326,16001,9807,8801,0.0,9102,8802,-177.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32602,"WGS 84 / UTM zone 2N",9001,4326,16002,9807,8801,0.0,9102,8802,-171.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32603,"WGS 84 / UTM zone 3N",9001,4326,16003,9807,8801,0.0,9102,8802,-165.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32604,"WGS 84 / UTM zone 4N",9001,4326,16004,9807,8801,0.0,9102,8802,-159.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32605,"WGS 84 / UTM zone 5N",9001,4326,16005,9807,8801,0.0,9102,8802,-153.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32606,"WGS 84 / UTM zone 6N",9001,4326,16006,9807,8801,0.0,9102,8802,-147.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32607,"WGS 84 / UTM zone 7N",9001,4326,16007,9807,8801,0.0,9102,8802,-141.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32608,"WGS 84 / UTM zone 8N",9001,4326,16008,9807,8801,0.0,9102,8802,-135.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32609,"WGS 84 / UTM zone 9N",9001,4326,16009,9807,8801,0.0,9102,8802,-129.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32610,"WGS 84 / UTM zone 10N",9001,4326,16010,9807,8801,0.0,9102,8802,-123.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32611,"WGS 84 / UTM zone 11N",9001,4326,16011,9807,8801,0.0,9102,8802,-117.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32612,"WGS 84 / UTM zone 12N",9001,4326,16012,9807,8801,0.0,9102,8802,-111.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32613,"WGS 84 / UTM zone 13N",9001,4326,16013,9807,8801,0.0,9102,8802,-105.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32614,"WGS 84 / UTM zone 14N",9001,4326,16014,9807,8801,0.0,9102,8802,-99.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32615,"WGS 84 / UTM zone 15N",9001,4326,16015,9807,8801,0.0,9102,8802,-93.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32616,"WGS 84 / UTM zone 16N",9001,4326,16016,9807,8801,0.0,9102,8802,-87.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32617,"WGS 84 / UTM zone 17N",9001,4326,16017,9807,8801,0.0,9102,8802,-81.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32618,"WGS 84 / UTM zone 18N",9001,4326,16018,9807,8801,0.0,9102,8802,-75.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32619,"WGS 84 / UTM zone 19N",9001,4326,16019,9807,8801,0.0,9102,8802,-69.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32620,"WGS 84 / UTM zone 20N",9001,4326,16020,9807,8801,0.0,9102,8802,-63.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32621,"WGS 84 / UTM zone 21N",9001,4326,16021,9807,8801,0.0,9102,8802,-57.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32622,"WGS 84 / UTM zone 22N",9001,4326,16022,9807,8801,0.0,9102,8802,-51.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32623,"WGS 84 / UTM zone 23N",9001,4326,16023,9807,8801,0.0,9102,8802,-45.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32624,"WGS 84 / UTM zone 24N",9001,4326,16024,9807,8801,0.0,9102,8802,-39.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32625,"WGS 84 / UTM zone 25N",9001,4326,16025,9807,8801,0.0,9102,8802,-33.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32626,"WGS 84 / UTM zone 26N",9001,4326,16026,9807,8801,0.0,9102,8802,-27.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32627,"WGS 84 / UTM zone 27N",9001,4326,16027,9807,8801,0.0,9102,8802,-21.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32628,"WGS 84 / UTM zone 28N",9001,4326,16028,9807,8801,0.0,9102,8802,-15.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32629,"WGS 84 / UTM zone 29N",9001,4326,16029,9807,8801,0.0,9102,8802,-9.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32630,"WGS 84 / UTM zone 30N",9001,4326,16030,9807,8801,0.0,9102,8802,-3.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32631,"WGS 84 / UTM zone 31N",9001,4326,16031,9807,8801,0.0,9102,8802,3.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32632,"WGS 84 / UTM zone 32N",9001,4326,16032,9807,8801,0.0,9102,8802,9.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32633,"WGS 84 / UTM zone 33N",9001,4326,16033,9807,8801,0.0,9102,8802,15.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32634,"WGS 84 / UTM zone 34N",9001,4326,16034,9807,8801,0.0,9102,8802,21.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32635,"WGS 84 / UTM zone 35N",9001,4326,16035,9807,8801,0.0,9102,8802,27.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32636,"WGS 84 / UTM zone 36N",9001,4326,16036,9807,8801,0.0,9102,8802,33.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32637,"WGS 84 / UTM zone 37N",9001,4326,16037,9807,8801,0.0,9102,8802,39.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32638,"WGS 84 / UTM zone 38N",9001,4326,16038,9807,8801,0.0,9102,8802,45.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32639,"WGS 84 / UTM zone 39N",9001,4326,16039,9807,8801,0.0,9102,8802,51.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32640,"WGS 84 / UTM zone 40N",9001,4326,16040,9807,8801,0.0,9102,8802,57.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32641,"WGS 84 / UTM zone 41N",9001,4326,16041,9807,8801,0.0,9102,8802,63.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32642,"WGS 84 / UTM zone 42N",9001,4326,16042,9807,8801,0.0,9102,8802,69.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32643,"WGS 84 / UTM zone 43N",9001,4326,16043,9807,8801,0.0,9102,8802,75.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32644,"WGS 84 / UTM zone 44N",9001,4326,16044,9807,8801,0.0,9102,8802,81.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32645,"WGS 84 / UTM zone 45N",9001,4326,16045,9807,8801,0.0,9102,8802,87.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32646,"WGS 84 / UTM zone 46N",9001,4326,16046,9807,8801,0.0,9102,8802,93.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32647,"WGS 84 / UTM zone 47N",9001,4326,16047,9807,8801,0.0,9102,8802,99.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32648,"WGS 84 / UTM zone 48N",9001,4326,16048,9807,8801,0.0,9102,8802,105.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32649,"WGS 84 / UTM zone 49N",9001,4326,16049,9807,8801,0.0,9102,8802,111.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32650,"WGS 84 / UTM zone 50N",9001,4326,16050,9807,8801,0.0,9102,8802,117.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32651,"WGS 84 / UTM zone 51N",9001,4326,16051,9807,8801,0.0,9102,8802,123.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32652,"WGS 84 / UTM zone 52N",9001,4326,16052,9807,8801,0.0,9102,8802,129.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32653,"WGS 84 / UTM zone 53N",9001,4326,16053,9807,8801,0.0,9102,8802,135.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32654,"WGS 84 / UTM zone 54N",9001,4326,16054,9807,8801,0.0,9102,8802,141.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32655,"WGS 84 / UTM zone 55N",9001,4326,16055,9807,8801,0.0,9102,8802,147.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32656,"WGS 84 / UTM zone 56N",9001,4326,16056,9807,8801,0.0,9102,8802,153.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32657,"WGS 84 / UTM zone 57N",9001,4326,16057,9807,8801,0.0,9102,8802,159.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32658,"WGS 84 / UTM zone 58N",9001,4326,16058,9807,8801,0.0,9102,8802,165.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32659,"WGS 84 / UTM zone 59N",9001,4326,16059,9807,8801,0.0,9102,8802,171.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32660,"WGS 84 / UTM zone 60N",9001,4326,16060,9807,8801,0.0,9102,8802,177.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-32661,"WGS 84 / UPS North",9001,4326,16061,9810,8801,90.0,9102,8802,0.0,9102,8805,0.994,9201,8806,2000000.0,9001,8807,2000000.0,9001,,,,,,
-32662,"WGS 84 / Plate Carree",9001,4326,19968,9823,8801,0.0,9102,8802,0.0,9102,,,,,,,,,,,,,,,
-32700,"WGS 84 / UTM grid system (southern hemisphere)",9001,4326,16100,9824,8801,0.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,8830,-180.0,9102,8831,6.0,9102,,,
-32701,"WGS 84 / UTM zone 1S",9001,4326,16101,9807,8801,0.0,9102,8802,-177.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32702,"WGS 84 / UTM zone 2S",9001,4326,16102,9807,8801,0.0,9102,8802,-171.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32703,"WGS 84 / UTM zone 3S",9001,4326,16103,9807,8801,0.0,9102,8802,-165.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32704,"WGS 84 / UTM zone 4S",9001,4326,16104,9807,8801,0.0,9102,8802,-159.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32705,"WGS 84 / UTM zone 5S",9001,4326,16105,9807,8801,0.0,9102,8802,-153.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32706,"WGS 84 / UTM zone 6S",9001,4326,16106,9807,8801,0.0,9102,8802,-147.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32707,"WGS 84 / UTM zone 7S",9001,4326,16107,9807,8801,0.0,9102,8802,-141.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32708,"WGS 84 / UTM zone 8S",9001,4326,16108,9807,8801,0.0,9102,8802,-135.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32709,"WGS 84 / UTM zone 9S",9001,4326,16109,9807,8801,0.0,9102,8802,-129.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32710,"WGS 84 / UTM zone 10S",9001,4326,16110,9807,8801,0.0,9102,8802,-123.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32711,"WGS 84 / UTM zone 11S",9001,4326,16111,9807,8801,0.0,9102,8802,-117.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32712,"WGS 84 / UTM zone 12S",9001,4326,16112,9807,8801,0.0,9102,8802,-111.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32713,"WGS 84 / UTM zone 13S",9001,4326,16113,9807,8801,0.0,9102,8802,-105.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32714,"WGS 84 / UTM zone 14S",9001,4326,16114,9807,8801,0.0,9102,8802,-99.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32715,"WGS 84 / UTM zone 15S",9001,4326,16115,9807,8801,0.0,9102,8802,-93.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32716,"WGS 84 / UTM zone 16S",9001,4326,16116,9807,8801,0.0,9102,8802,-87.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32717,"WGS 84 / UTM zone 17S",9001,4326,16117,9807,8801,0.0,9102,8802,-81.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32718,"WGS 84 / UTM zone 18S",9001,4326,16118,9807,8801,0.0,9102,8802,-75.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32719,"WGS 84 / UTM zone 19S",9001,4326,16119,9807,8801,0.0,9102,8802,-69.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32720,"WGS 84 / UTM zone 20S",9001,4326,16120,9807,8801,0.0,9102,8802,-63.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32721,"WGS 84 / UTM zone 21S",9001,4326,16121,9807,8801,0.0,9102,8802,-57.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32722,"WGS 84 / UTM zone 22S",9001,4326,16122,9807,8801,0.0,9102,8802,-51.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32723,"WGS 84 / UTM zone 23S",9001,4326,16123,9807,8801,0.0,9102,8802,-45.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32724,"WGS 84 / UTM zone 24S",9001,4326,16124,9807,8801,0.0,9102,8802,-39.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32725,"WGS 84 / UTM zone 25S",9001,4326,16125,9807,8801,0.0,9102,8802,-33.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32726,"WGS 84 / UTM zone 26S",9001,4326,16126,9807,8801,0.0,9102,8802,-27.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32727,"WGS 84 / UTM zone 27S",9001,4326,16127,9807,8801,0.0,9102,8802,-21.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32728,"WGS 84 / UTM zone 28S",9001,4326,16128,9807,8801,0.0,9102,8802,-15.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32729,"WGS 84 / UTM zone 29S",9001,4326,16129,9807,8801,0.0,9102,8802,-9.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32730,"WGS 84 / UTM zone 30S",9001,4326,16130,9807,8801,0.0,9102,8802,-3.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32731,"WGS 84 / UTM zone 31S",9001,4326,16131,9807,8801,0.0,9102,8802,3.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32732,"WGS 84 / UTM zone 32S",9001,4326,16132,9807,8801,0.0,9102,8802,9.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32733,"WGS 84 / UTM zone 33S",9001,4326,16133,9807,8801,0.0,9102,8802,15.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32734,"WGS 84 / UTM zone 34S",9001,4326,16134,9807,8801,0.0,9102,8802,21.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32735,"WGS 84 / UTM zone 35S",9001,4326,16135,9807,8801,0.0,9102,8802,27.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32736,"WGS 84 / UTM zone 36S",9001,4326,16136,9807,8801,0.0,9102,8802,33.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32737,"WGS 84 / UTM zone 37S",9001,4326,16137,9807,8801,0.0,9102,8802,39.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32738,"WGS 84 / UTM zone 38S",9001,4326,16138,9807,8801,0.0,9102,8802,45.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32739,"WGS 84 / UTM zone 39S",9001,4326,16139,9807,8801,0.0,9102,8802,51.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32740,"WGS 84 / UTM zone 40S",9001,4326,16140,9807,8801,0.0,9102,8802,57.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32741,"WGS 84 / UTM zone 41S",9001,4326,16141,9807,8801,0.0,9102,8802,63.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32742,"WGS 84 / UTM zone 42S",9001,4326,16142,9807,8801,0.0,9102,8802,69.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32743,"WGS 84 / UTM zone 43S",9001,4326,16143,9807,8801,0.0,9102,8802,75.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32744,"WGS 84 / UTM zone 44S",9001,4326,16144,9807,8801,0.0,9102,8802,81.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32745,"WGS 84 / UTM zone 45S",9001,4326,16145,9807,8801,0.0,9102,8802,87.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32746,"WGS 84 / UTM zone 46S",9001,4326,16146,9807,8801,0.0,9102,8802,93.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32747,"WGS 84 / UTM zone 47S",9001,4326,16147,9807,8801,0.0,9102,8802,99.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32748,"WGS 84 / UTM zone 48S",9001,4326,16148,9807,8801,0.0,9102,8802,105.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32749,"WGS 84 / UTM zone 49S",9001,4326,16149,9807,8801,0.0,9102,8802,111.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32750,"WGS 84 / UTM zone 50S",9001,4326,16150,9807,8801,0.0,9102,8802,117.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32751,"WGS 84 / UTM zone 51S",9001,4326,16151,9807,8801,0.0,9102,8802,123.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32752,"WGS 84 / UTM zone 52S",9001,4326,16152,9807,8801,0.0,9102,8802,129.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32753,"WGS 84 / UTM zone 53S",9001,4326,16153,9807,8801,0.0,9102,8802,135.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32754,"WGS 84 / UTM zone 54S",9001,4326,16154,9807,8801,0.0,9102,8802,141.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32755,"WGS 84 / UTM zone 55S",9001,4326,16155,9807,8801,0.0,9102,8802,147.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32756,"WGS 84 / UTM zone 56S",9001,4326,16156,9807,8801,0.0,9102,8802,153.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32757,"WGS 84 / UTM zone 57S",9001,4326,16157,9807,8801,0.0,9102,8802,159.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32758,"WGS 84 / UTM zone 58S",9001,4326,16158,9807,8801,0.0,9102,8802,165.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32759,"WGS 84 / UTM zone 59S",9001,4326,16159,9807,8801,0.0,9102,8802,171.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32760,"WGS 84 / UTM zone 60S",9001,4326,16160,9807,8801,0.0,9102,8802,177.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-32761,"WGS 84 / UPS South",9001,4326,16161,9810,8801,-90.0,9102,8802,0.0,9102,8805,0.994,9201,8806,2000000.0,9001,8807,2000000.0,9001,,,,,,
-32766,"WGS 84 / TM 36 SE",9001,4326,16636,9807,8801,0.0,9102,8802,36.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
diff --git a/src/tiff/csv/prime_meridian.csv b/src/tiff/csv/prime_meridian.csv
deleted file mode 100644
index bde10d2..0000000
--- a/src/tiff/csv/prime_meridian.csv
+++ /dev/null
@@ -1,14 +0,0 @@
-"PRIME_MERIDIAN_CODE","PRIME_MERIDIAN_NAME","GREENWICH_LONGITUDE","UOM_CODE","REMARKS","INFORMATION_SOURCE","DATA_SOURCE","REVISION_DATE","CHANGE_ID","DEPRECATED"
-8901,Greenwich,0.0,9110,,,EPSG,1995-06-02 00:00:00,96.29,0
-8902,Lisbon,-9.0754862,9110,,Instituto Geografico e Cadastral; Lisbon,EPSG,1995-06-02 00:00:00,96.29,0
-8903,Paris,2.5969213,9105,Value adopted by IGN (Paris) in 1936. Equivalent to 2 deg 20min 14.025sec. Preferred by EPSG to earlier value of 2deg 20min 13.95sec (2.596898 grads) used by RGS London.,Institut Geographique National (IGN); Paris,EPSG,1995-06-02 00:00:00,,0
-8904,Bogota,-74.04513,9110,,"Instituto Geografico ""Augustin Cadazzi"" (IGAC); Bogota",EPSG,1995-06-02 00:00:00,96.29,0
-8905,Madrid,-3.411658,9110,,,EPSG,1995-06-02 00:00:00,96.29,0
-8906,Rome,12.27084,9110,,,EPSG,1995-06-02 00:00:00,96.29,0
-8907,Bern,7.26225,9110,1895 value.  Newer value of 7 deg 26 min 22.335 sec E determined in 1938.,Bundesamt f�r Landestopographie,EPSG,1995-06-02 00:00:00,96.29,0
-8908,Jakarta,106.482779,9110,,,EPSG,1995-06-02 00:00:00,96.29,0
-8909,Ferro,-17.4,9110,Used in Austria and former Czechoslovakia.,,EPSG,1995-06-02 00:00:00,96.29,0
-8910,Brussels,4.220471,9110,,,EPSG,1995-06-02 00:00:00,96.29,0
-8911,Stockholm,18.03298,9110,,,EPSG,1995-06-02 00:00:00,96.29,0
-8912,Athens,23.4258815,9110,Used in Greece for older mapping based on Hatt projection.,Topography Department; National Technical University of Athens.,EPSG,1997-06-16 00:00:00,,0
-8913,Oslo,10.43225,9110,Formerly known as Kristiania or Christiania.,Statens Kartverk - Geodesidivisjonen,EPSG,1999-10-20 00:00:00,,0
diff --git a/src/tiff/csv/projop_wparm.csv b/src/tiff/csv/projop_wparm.csv
deleted file mode 100644
index 9cc3e0c..0000000
--- a/src/tiff/csv/projop_wparm.csv
+++ /dev/null
@@ -1,1083 +0,0 @@
-"COORD_OP_CODE","COORD_OP_NAME","COORD_OP_METHOD_CODE","PARAMETER_CODE_1","PARAMETER_VALUE_1","PARAMETER_UOM_1","PARAMETER_CODE_2","PARAMETER_VALUE_2","PARAMETER_UOM_2","PARAMETER_CODE_3","PARAMETER_VALUE_3","PARAMETER_UOM_3","PARAMETER_CODE_4","PARAMETER_VALUE_4","PARAMETER_UOM_4","PARAMETER_CODE_5","PARAMETER_VALUE_5","PARAMETER_UOM_5","PARAMETER_CODE_6","PARAMETER_VALUE_6","PARAMETER_UOM_6","PARAMETER_CODE_7","PARAMETER_VALUE_7","PARAMETER_UOM_7"
-10101,Alabama CS27 East zone,9807,8801,30.3,9110,8802,-85.5,9110,8805,0.99996,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-10102,Alabama CS27 West zone,9807,8801,30.0,9110,8802,-87.3,9110,8805,0.999933333,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-10131,"SPCS83 Alabama East zone (meters)",9807,8801,30.3,9110,8802,-85.5,9110,8805,0.99996,9201,8806,200000.0,9001,8807,0.0,9001,,,,,,
-10132,"SPCS83 Alabama West zone (meters)",9807,8801,30.0,9110,8802,-87.3,9110,8805,0.999933333,9201,8806,600000.0,9001,8807,0.0,9001,,,,,,
-10201,Arizona Coordinate System East zone,9807,8801,31.0,9110,8802,-110.1,9110,8805,0.9999,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-10202,Arizona Coordinate System Central zone,9807,8801,31.0,9110,8802,-111.55,9110,8805,0.9999,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-10203,Arizona Coordinate System West zone,9807,8801,31.0,9110,8802,-113.45,9110,8805,0.999933333,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-10231,"SPCS83 Arizona East zone (meters)",9807,8801,31.0,9110,8802,-110.1,9110,8805,0.9999,9201,8806,213360.0,9001,8807,0.0,9001,,,,,,
-10232,"SPCS83 Arizona Central zone (meters)",9807,8801,31.0,9110,8802,-111.55,9110,8805,0.9999,9201,8806,213360.0,9001,8807,0.0,9001,,,,,,
-10233,"SPCS83 Arizona West zone (meters)",9807,8801,31.0,9110,8802,-113.45,9110,8805,0.999933333,9201,8806,213360.0,9001,8807,0.0,9001,,,,,,
-10301,Arkansas CS27 North,9802,8821,34.2,9110,8822,-92.0,9110,8823,36.14,9110,8824,34.56,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-10302,Arkansas CS27 South,9802,8821,32.4,9110,8822,-92.0,9110,8823,34.46,9110,8824,33.18,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-10331,"SPCS83 Arkansas North zone (meters)",9802,8821,34.2,9110,8822,-92.0,9110,8823,36.14,9110,8824,34.56,9110,8826,400000.0,9001,8827,0.0,9001,,,
-10332,"SPCS83 Arkansas South zone (meters)",9802,8821,32.4,9110,8822,-92.0,9110,8823,34.46,9110,8824,33.18,9110,8826,400000.0,9001,8827,400000.0,9001,,,
-10401,California CS27 zone I,9802,8821,39.2,9110,8822,-122.0,9110,8823,41.4,9110,8824,40.0,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-10402,California CS27 zone II,9802,8821,37.4,9110,8822,-122.0,9110,8823,39.5,9110,8824,38.2,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-10403,California CS27 zone III,9802,8821,36.3,9110,8822,-120.3,9110,8823,38.26,9110,8824,37.04,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-10404,California CS27 zone IV,9802,8821,35.2,9110,8822,-119.0,9110,8823,37.15,9110,8824,36.0,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-10405,California CS27 zone V,9802,8821,33.3,9110,8822,-118.0,9110,8823,35.28,9110,8824,34.02,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-10406,California CS27 zone VI,9802,8821,32.1,9110,8822,-116.15,9110,8823,33.53,9110,8824,32.47,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-10407,California CS27 zone VII,9802,8821,34.08,9110,8822,-118.2,9110,8823,34.25,9110,8824,33.52,9110,8826,4186692.58,9003,8827,416926.74,9003,,,
-10431,"SPCS83 California zone 1 (meters)",9802,8821,39.2,9110,8822,-122.0,9110,8823,41.4,9110,8824,40.0,9110,8826,2000000.0,9001,8827,500000.0,9001,,,
-10432,"SPCS83 California zone 2 (meters)",9802,8821,37.4,9110,8822,-122.0,9110,8823,39.5,9110,8824,38.2,9110,8826,2000000.0,9001,8827,500000.0,9001,,,
-10433,"SPCS83 California zone 3 (meters)",9802,8821,36.3,9110,8822,-120.3,9110,8823,38.26,9110,8824,37.04,9110,8826,2000000.0,9001,8827,500000.0,9001,,,
-10434,"SPCS83 California zone 4 (meters)",9802,8821,35.2,9110,8822,-119.0,9110,8823,37.15,9110,8824,36.0,9110,8826,2000000.0,9001,8827,500000.0,9001,,,
-10435,"SPCS83 California zone 5 (meters)",9802,8821,33.3,9110,8822,-118.0,9110,8823,35.28,9110,8824,34.02,9110,8826,2000000.0,9001,8827,500000.0,9001,,,
-10436,"SPCS83 California zone 6 (meters)",9802,8821,32.1,9110,8822,-116.15,9110,8823,33.53,9110,8824,32.47,9110,8826,2000000.0,9001,8827,500000.0,9001,,,
-10501,Colorado CS27 North zone,9802,8821,39.2,9110,8822,-105.3,9110,8823,39.43,9110,8824,40.47,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-10502,Colorado CS27 Central zone,9802,8821,37.5,9110,8822,-105.3,9110,8823,39.45,9110,8824,38.27,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-10503,Colorado CS27 South zone,9802,8821,36.4,9110,8822,-105.3,9110,8823,38.26,9110,8824,37.14,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-10531,"SPCS83 Colorado North zone (meters)",9802,8821,39.2,9110,8822,-105.3,9110,8823,40.47,9110,8824,39.43,9110,8826,914401.8289,9001,8827,304800.6096,9001,,,
-10532,"SPCS83 Colorado Central zone (meters)",9802,8821,37.5,9110,8822,-105.3,9110,8823,39.45,9110,8824,38.27,9110,8826,914401.8289,9001,8827,304800.6096,9001,,,
-10533,"SPCS83 Colorado South zone (meters)",9802,8821,36.4,9110,8822,-105.3,9110,8823,38.26,9110,8824,37.14,9110,8826,914401.8289,9001,8827,304800.6096,9001,,,
-10600,Connecticut CS27,9802,8821,40.5,9110,8822,-72.45,9110,8823,41.52,9110,8824,41.12,9110,8826,600000.0,9003,8827,0.0,9003,,,
-10630,"SPCS83 Connecticut zone (meters)",9802,8821,40.5,9110,8822,-72.45,9110,8823,41.52,9110,8824,41.12,9110,8826,304800.6096,9001,8827,152400.3048,9001,,,
-10700,Delaware CS27,9807,8801,38.0,9110,8802,-75.25,9110,8805,0.999995,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-10730,"SPCS83 Delaware zone (meters)",9807,8801,38.0,9110,8802,-75.25,9110,8805,0.999995,9201,8806,200000.0,9001,8807,0.0,9001,,,,,,
-10901,Florida CS27 East zone,9807,8801,24.2,9110,8802,-81.0,9110,8805,0.999941177,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-10902,Florida CS27 West zone,9807,8801,24.2,9110,8802,-82.0,9110,8805,0.999941177,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-10903,Florida CS27 North zone,9802,8821,29.0,9110,8822,-84.3,9110,8823,30.45,9110,8824,29.35,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-10931,"SPCS83 Florida East zone (meters)",9807,8801,24.2,9110,8802,-81.0,9110,8805,0.999941177,9201,8806,200000.0,9001,8807,0.0,9001,,,,,,
-10932,"SPCS83 Florida West zone (meters)",9807,8801,24.2,9110,8802,-82.0,9110,8805,0.999941177,9201,8806,200000.0,9001,8807,0.0,9001,,,,,,
-10933,"SPCS83 Florida North zone (meters)",9802,8821,29.0,9110,8822,-84.3,9110,8823,30.45,9110,8824,29.35,9110,8826,600000.0,9001,8827,0.0,9001,,,
-11001,Georgia CS27 East zone,9807,8801,30.0,9110,8802,-82.1,9110,8805,0.9999,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-11002,Georgia CS27 West zone,9807,8801,30.0,9110,8802,-84.1,9110,8805,0.9999,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-11031,"SPCS83 Georgia East zone (meters)",9807,8801,30.0,9110,8802,-82.1,9110,8805,0.9999,9201,8806,200000.0,9001,8807,0.0,9001,,,,,,
-11032,"SPCS83 Georgia West zone (meters)",9807,8801,30.0,9110,8802,-84.1,9110,8805,0.9999,9201,8806,700000.0,9001,8807,0.0,9001,,,,,,
-11101,Idaho CS27 East zone,9807,8801,41.4,9110,8802,-112.1,9110,8805,0.999947368,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-11102,Idaho CS27 Central zone,9807,8801,41.4,9110,8802,-114.0,9110,8805,0.999947368,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-11103,Idaho CS27 West zone,9807,8801,41.4,9110,8802,-115.45,9110,8805,0.999933333,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-11131,"SPCS83 Idaho East zone (meters)",9807,8801,41.4,9110,8802,-112.1,9110,8805,0.999947368,9201,8806,200000.0,9001,8807,0.0,9001,,,,,,
-11132,"SPCS83 Idaho Central zone (meters)",9807,8801,41.4,9110,8802,-114.0,9110,8805,0.999947368,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-11133,"SPCS83 Idaho West zone (meters)",9807,8801,41.4,9110,8802,-115.45,9110,8805,0.999933333,9201,8806,800000.0,9001,8807,0.0,9001,,,,,,
-11201,Illinois CS27 East zone,9807,8801,36.4,9110,8802,-88.2,9110,8805,0.999975,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-11202,Illinois CS27 West zone,9807,8801,36.4,9110,8802,-90.1,9110,8805,0.999941177,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-11231,"SPCS83 Illinois East zone (meters)",9807,8801,36.4,9110,8802,-88.2,9110,8805,0.999975,9201,8806,300000.0,9001,8807,0.0,9001,,,,,,
-11232,"SPCS83 Illinois West zone (meters)",9807,8801,36.4,9110,8802,-90.1,9110,8805,0.999941177,9201,8806,700000.0,9001,8807,0.0,9001,,,,,,
-11301,Indiana CS27 East zone,9807,8801,37.3,9110,8802,-85.4,9110,8805,0.999966667,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-11302,Indiana CS27 West zone,9807,8801,37.3,9110,8802,-87.05,9110,8805,0.999966667,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-11331,"SPCS83 Indiana East zone (meters)",9807,8801,37.3,9110,8802,-85.4,9110,8805,0.999966667,9201,8806,100000.0,9001,8807,250000.0,9001,,,,,,
-11332,"SPCS83 Indiana West zone (meters)",9807,8801,37.3,9110,8802,-87.05,9110,8805,0.999966667,9201,8806,900000.0,9001,8807,250000.0,9001,,,,,,
-11401,Iowa CS27 North zone,9802,8821,41.3,9110,8822,-93.3,9110,8823,43.16,9110,8824,42.04,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-11402,Iowa CS27 South zone,9802,8821,40.0,9110,8822,-93.3,9110,8823,41.47,9110,8824,40.37,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-11431,"SPCS83 Iowa North zone (meters)",9802,8821,41.3,9110,8822,-93.3,9110,8823,43.16,9110,8824,42.04,9110,8826,1500000.0,9001,8827,1000000.0,9001,,,
-11432,"SPCS83 Iowa South zone (meters)",9802,8821,40.0,9110,8822,-93.3,9110,8823,41.47,9110,8824,40.37,9110,8826,500000.0,9001,8827,0.0,9001,,,
-11501,Kansas CS27 North zone,9802,8821,38.2,9110,8822,-98.0,9110,8823,39.47,9110,8824,38.43,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-11502,Kansas CS27 South zone,9802,8821,36.4,9110,8822,-98.3,9110,8823,38.34,9110,8824,37.16,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-11531,"SPCS83 Kansas North zone (meters)",9802,8821,38.2,9110,8822,-98.0,9110,8823,39.47,9110,8824,38.43,9110,8826,400000.0,9001,8827,0.0,9001,,,
-11532,"SPCS83 Kansas South zone (meters)",9802,8821,36.4,9110,8822,-98.3,9110,8823,38.34,9110,8824,37.16,9110,8826,400000.0,9001,8827,400000.0,9001,,,
-11601,Kentucky CS27 North zone,9802,8821,37.3,9110,8822,-84.15,9110,8823,37.58,9110,8824,38.58,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-11602,Kentucky CS27 South zone,9802,8821,36.2,9110,8822,-85.45,9110,8823,36.44,9110,8824,37.56,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-11631,Kentucky CS83 North zone,9802,8821,37.3,9110,8822,-84.15,9110,8823,37.58,9110,8824,37.58,9110,8826,500000.0,9001,8827,0.0,9001,,,
-11632,"SPCS83 Kentucky South zone (meters)",9802,8821,36.2,9110,8822,-85.45,9110,8823,37.56,9110,8824,36.44,9110,8826,500000.0,9001,8827,500000.0,9001,,,
-11701,Louisiana CS27 North zone,9802,8821,30.4,9110,8822,-92.3,9110,8823,31.1,9110,8824,32.4,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-11702,Louisiana CS27 South zone,9802,8821,28.4,9110,8822,-91.2,9110,8823,29.18,9110,8824,30.42,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-11731,"SPCS83 Louisiana North zone (meters)",9802,8821,30.3,9110,8822,-92.3,9110,8823,32.4,9110,8824,31.1,9110,8826,1000000.0,9001,8827,0.0,9001,,,
-11732,"SPCS83 Louisiana South zone (meters)",9802,8821,28.3,9110,8822,-91.2,9110,8823,30.42,9110,8824,29.18,9110,8826,1000000.0,9001,8827,0.0,9001,,,
-11801,Maine CS27 East zone,9807,8801,43.5,9110,8802,-68.3,9110,8805,0.9999,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-11802,Maine CS27 West zone,9807,8801,42.5,9110,8802,-70.1,9110,8805,0.999966667,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-11831,"SPCS83 Maine East zone (meters)",9807,8801,43.4,9110,8802,-68.3,9110,8805,0.9999,9201,8806,300000.0,9001,8807,0.0,9001,,,,,,
-11832,"SPCS83 Maine West zone (meters)",9807,8801,42.5,9110,8802,-70.1,9110,8805,0.999966667,9201,8806,900000.0,9001,8807,0.0,9001,,,,,,
-11900,Maryland CS27,9802,8821,37.5,9110,8822,-77.0,9110,8823,38.18,9110,8824,39.27,9110,8826,800000.0,9003,8827,0.0,9003,,,
-11930,"SPCS83 Maryland zone (meters)",9802,8821,37.4,9110,8822,-77.0,9110,8823,39.27,9110,8824,38.18,9110,8826,400000.0,9001,8827,0.0,9001,,,
-12001,Massachusetts CS27 Mainland zone,9802,8821,41.0,9110,8822,-71.3,9110,8823,41.43,9110,8824,42.41,9110,8826,600000.0,9003,8827,0.0,9003,,,
-12002,Massachusetts CS27 Island zone,9802,8821,41.0,9110,8822,-70.3,9110,8823,41.17,9110,8824,41.29,9110,8826,200000.0,9003,8827,0.0,9003,,,
-12031,"SPCS83 Massachusetts Mainland zone (meters)",9802,8821,41.0,9110,8822,-71.3,9110,8823,42.41,9110,8824,41.43,9110,8826,200000.0,9001,8827,750000.0,9001,,,
-12032,"SPCS83 Massachusetts Island zone (meters)",9802,8821,41.0,9110,8822,-70.3,9110,8823,41.29,9110,8824,41.17,9110,8826,500000.0,9001,8827,0.0,9001,,,
-12101,Michigan State Plane East zone,9807,8801,41.3,9110,8802,-83.4,9110,8805,0.999942857,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-12102,Michigan State Plane Old Central zone,9807,8801,41.3,9110,8802,-85.45,9110,8805,0.999909091,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-12103,Michigan State Plane West zone,9807,8801,41.3,9110,8802,-88.45,9110,8805,0.999909091,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-12111,Michigan CS27 North zone,9802,8821,44.47,9110,8822,-87.0,9110,8823,45.29,9110,8824,47.05,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-12112,Michigan CS27 Central zone,9802,8821,43.19,9110,8822,-84.2,9110,8823,44.11,9110,8824,45.42,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-12113,Michigan CS27 South zone,9802,8821,41.3,9110,8822,-84.2,9110,8823,42.06,9110,8824,43.4,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-12141,"SPCS83 Michigan North zone (meters)",9802,8821,44.47,9110,8822,-87.0,9110,8823,47.05,9110,8824,45.29,9110,8826,8000000.0,9001,8827,0.0,9001,,,
-12142,"SPCS83 Michigan Central zone (meters)",9802,8821,43.19,9110,8822,-84.22,9110,8823,45.42,9110,8824,44.11,9110,8826,6000000.0,9001,8827,0.0,9001,,,
-12143,"SPCS83 Michigan South zone (meters)",9802,8821,41.3,9110,8822,-84.22,9110,8823,43.4,9110,8824,42.06,9110,8826,4000000.0,9001,8827,0.0,9001,,,
-12201,Minnesota CS27 North zone,9802,8821,46.3,9110,8822,-93.06,9110,8823,47.02,9110,8824,48.38,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-12202,Minnesota CS27 Central zone,9802,8821,45.0,9110,8822,-94.15,9110,8823,45.37,9110,8824,47.03,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-12203,Minnesota CS27 South zone,9802,8821,43.0,9110,8822,-94.0,9110,8823,43.47,9110,8824,45.13,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-12231,"SPCS83 Minnesota North zone (meters)",9802,8821,46.3,9110,8822,-93.06,9110,8823,48.38,9110,8824,47.02,9110,8826,800000.0,9001,8827,100000.0,9001,,,
-12232,"SPCS83 Minnesota Central zone (meters)",9802,8821,45.0,9110,8822,-94.15,9110,8823,47.03,9110,8824,45.37,9110,8826,800000.0,9001,8827,100000.0,9001,,,
-12233,"SPCS83 Minnesota South zone (meters)",9802,8821,43.0,9110,8822,-94.0,9110,8823,45.13,9110,8824,43.47,9110,8826,800000.0,9001,8827,100000.0,9001,,,
-12301,Mississippi CS27 East zone,9807,8801,29.4,9110,8802,-88.5,9110,8805,0.99996,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-12302,Mississippi CS27 West zone,9807,8801,30.3,9110,8802,-90.2,9110,8805,0.999941177,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-12331,"SPCS83 Mississippi East zone (meters)",9807,8801,29.3,9110,8802,-88.5,9110,8805,0.99995,9201,8806,300000.0,9001,8807,0.0,9001,,,,,,
-12332,"SPCS83 Mississippi West zone (meters)",9807,8801,29.3,9110,8802,-90.2,9110,8805,0.99995,9201,8806,700000.0,9001,8807,0.0,9001,,,,,,
-12401,Missouri CS27 East zone,9807,8801,35.5,9110,8802,-90.3,9110,8805,0.999933333,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-12402,Missouri CS27 Central zone,9807,8801,35.5,9110,8802,-92.3,9110,8805,0.999933333,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-12403,Missouri CS27 West zone,9807,8801,36.1,9110,8802,-94.3,9110,8805,0.999941177,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-12431,"SPCS83 Missouri East zone (meters)",9807,8801,35.5,9110,8802,-90.3,9110,8805,0.999933333,9201,8806,250000.0,9001,8807,0.0,9001,,,,,,
-12432,"SPCS83 Missouri Central zone (meters)",9807,8801,35.5,9110,8802,-92.3,9110,8805,0.999933333,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-12433,"SPCS83 Missouri West zone (meters)",9807,8801,36.1,9110,8802,-94.3,9110,8805,0.999941177,9201,8806,850000.0,9001,8807,0.0,9001,,,,,,
-12501,Montana CS27 North zone,9802,8821,47.0,9110,8822,-109.3,9110,8823,48.43,9110,8824,47.51,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-12502,Montana CS27 Central zone,9802,8821,45.5,9110,8822,-109.3,9110,8823,47.53,9110,8824,46.27,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-12503,Montana CS27 South zone,9802,8821,44.0,9110,8822,-109.3,9110,8823,46.24,9110,8824,44.52,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-12530,"SPCS83 Montana zone (meters)",9802,8821,44.15,9110,8822,-109.3,9110,8823,49.0,9110,8824,45.0,9110,8826,600000.0,9001,8827,0.0,9001,,,
-12601,Nebraska CS27 North zone,9802,8821,41.2,9110,8822,-100.0,9110,8823,41.51,9110,8824,42.49,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-12602,Nebraska CS27 South zone,9802,8821,39.4,9110,8822,-99.3,9110,8823,40.17,9110,8824,41.43,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-12630,"SPCS83 Nebraska zone (meters)",9802,8821,39.5,9110,8822,-100.0,9110,8823,43.0,9110,8824,40.0,9110,8826,500000.0,9001,8827,0.0,9001,,,
-12701,Nevada CS27 East zone,9807,8801,34.45,9110,8802,-115.35,9110,8805,0.9999,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-12702,Nevada CS27 Central zone,9807,8801,34.45,9110,8802,-116.4,9110,8805,0.9999,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-12703,Nevada CS27 West zone,9807,8801,34.45,9110,8802,-118.35,9110,8805,0.9999,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-12731,"SPCS83 Nevada East zone (meters)",9807,8801,34.45,9110,8802,-115.35,9110,8805,0.9999,9201,8806,200000.0,9001,8807,8000000.0,9001,,,,,,
-12732,"SPCS83 Nevada Central zone (meters)",9807,8801,34.45,9110,8802,-116.4,9110,8805,0.9999,9201,8806,500000.0,9001,8807,6000000.0,9001,,,,,,
-12733,"SPCS83 Nevada West zone (meters)",9807,8801,34.45,9110,8802,-118.35,9110,8805,0.9999,9201,8806,800000.0,9001,8807,4000000.0,9001,,,,,,
-12800,New Hampshire CS27,9807,8801,42.3,9110,8802,-71.4,9110,8805,0.999966667,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-12830,"SPCS83 New Hampshire zone (meters)",9807,8801,42.3,9110,8802,-71.4,9110,8805,0.999966667,9201,8806,300000.0,9001,8807,0.0,9001,,,,,,
-12900,New Jersey CS27,9807,8801,38.5,9110,8802,-74.4,9110,8805,0.999975,9201,8806,2000000.0,9003,8807,0.0,9003,,,,,,
-12930,"SPCS83 New Jersey zone (meters)",9807,8801,38.5,9110,8802,-74.3,9110,8805,0.9999,9201,8806,150000.0,9001,8807,0.0,9001,,,,,,
-13001,New Mexico CS27 East zone,9807,8801,31.0,9110,8802,-104.2,9110,8805,0.999909091,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-13002,New Mexico CS27 Central zone,9807,8801,31.0,9110,8802,-106.15,9110,8805,0.9999,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-13003,New Mexico CS27 West zone,9807,8801,31.0,9110,8802,-107.5,9110,8805,0.999916667,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-13031,"SPCS83 New Mexico East zone (meters)",9807,8801,31.0,9110,8802,-104.2,9110,8805,0.999909091,9201,8806,165000.0,9001,8807,0.0,9001,,,,,,
-13032,"SPCS83 New Mexico Central zone (meters)",9807,8801,31.0,9110,8802,-106.15,9110,8805,0.9999,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-13033,"SPCS83 New Mexico West zone (meters)",9807,8801,31.0,9110,8802,-107.5,9110,8805,0.999916667,9201,8806,830000.0,9001,8807,0.0,9001,,,,,,
-13101,New York CS27 East zone,9807,8801,40.0,9110,8802,-74.2,9110,8805,0.999966667,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-13102,New York CS27 Central zone,9807,8801,40.0,9110,8802,-76.35,9110,8805,0.9999375,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-13103,New York CS27 West zone,9807,8801,40.0,9110,8802,-78.35,9110,8805,0.9999375,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-13104,New York CS27 Long Island zone,9802,8821,40.3,9110,8822,-74.0,9110,8823,41.02,9110,8824,40.4,9110,8826,1000000.0,9003,8827,0.0,9003,,,
-13131,"SPCS83 New York East zone (meters)",9807,8801,38.5,9110,8802,-74.3,9110,8805,0.9999,9201,8806,150000.0,9001,8807,0.0,9001,,,,,,
-13132,"SPCS83 New York Central zone (meters)",9807,8801,40.0,9110,8802,-76.35,9110,8805,0.9999375,9201,8806,250000.0,9001,8807,0.0,9001,,,,,,
-13133,"SPCS83 New York West zone (meters)",9807,8801,40.0,9110,8802,-78.35,9110,8805,0.9999375,9201,8806,350000.0,9001,8807,0.0,9001,,,,,,
-13134,"SPCS83 New York Long Island zone (meters)",9802,8821,40.1,9110,8822,-74.0,9110,8823,41.02,9110,8824,40.4,9110,8826,300000.0,9001,8827,0.0,9001,,,
-13200,North Carolina CS27,9802,8821,33.45,9110,8822,-79.0,9110,8823,34.2,9110,8824,36.1,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-13230,"SPCS83 North Carolina zone (meters)",9802,8821,33.45,9110,8822,-79.0,9110,8823,36.1,9110,8824,34.2,9110,8826,609601.22,9001,8827,0.0,9001,,,
-13301,North Dakota CS27 North zone,9802,8821,47.0,9110,8822,-100.3,9110,8823,47.26,9110,8824,48.44,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-13302,North Dakota CS27 South zone,9802,8821,45.4,9110,8822,-100.3,9110,8823,46.11,9110,8824,47.29,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-13331,"SPCS83 North Dakota North zone (meters)",9802,8821,47.0,9110,8822,-100.3,9110,8823,48.44,9110,8824,47.26,9110,8826,600000.0,9001,8827,0.0,9001,,,
-13332,"SPCS83 North Dakota South zone (meters)",9802,8821,45.4,9110,8822,-100.3,9110,8823,47.29,9110,8824,46.11,9110,8826,600000.0,9001,8827,0.0,9001,,,
-13401,Ohio CS27 North zone,9802,8821,39.4,9110,8822,-82.3,9110,8823,40.26,9110,8824,41.42,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-13402,Ohio CS27 South zone,9802,8821,38.0,9110,8822,-82.3,9110,8823,38.44,9110,8824,40.02,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-13431,"SPCS83 Ohio North zone (meters)",9802,8821,39.4,9110,8822,-82.3,9110,8823,41.42,9110,8824,40.26,9110,8826,600000.0,9001,8827,0.0,9001,,,
-13432,"SPCS83 Ohio South zone (meters)",9802,8821,38.0,9110,8822,-82.3,9110,8823,40.02,9110,8824,38.44,9110,8826,600000.0,9001,8827,0.0,9001,,,
-13501,Oklahoma CS27 North zone,9802,8821,35.0,9110,8822,-98.0,9110,8823,35.34,9110,8824,36.46,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-13502,Oklahoma CS27 South zone,9802,8821,33.2,9110,8822,-98.0,9110,8823,33.56,9110,8824,35.14,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-13531,"SPCS83 Oklahoma North zone (meters)",9802,8821,35.0,9110,8822,-98.0,9110,8823,36.46,9110,8824,35.34,9110,8826,600000.0,9001,8827,0.0,9001,,,
-13532,"SPCS83 Oklahoma South zone (meters)",9802,8821,33.2,9110,8822,-98.0,9110,8823,35.14,9110,8824,33.56,9110,8826,600000.0,9001,8827,0.0,9001,,,
-13601,Oregon CS27 North zone,9802,8821,43.4,9110,8822,-120.3,9110,8823,44.2,9110,8824,46.0,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-13602,Oregon CS27 South zone,9802,8821,41.4,9110,8822,-120.3,9110,8823,42.2,9110,8824,44.0,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-13631,"SPCS83 Oregon North zone (meters)",9802,8821,43.4,9110,8822,-120.3,9110,8823,46.0,9110,8824,44.2,9110,8826,2500000.0,9001,8827,0.0,9001,,,
-13632,"SPCS83 Oregon South zone (meters)",9802,8821,41.4,9110,8822,-120.3,9110,8823,44.0,9110,8824,42.2,9110,8826,1500000.0,9001,8827,0.0,9001,,,
-13701,Pennsylvania CS27 North zone,9802,8821,40.1,9110,8822,-77.45,9110,8823,40.53,9110,8824,41.57,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-13702,Pennsylvania CS27 South zone,9802,8821,39.2,9110,8822,-77.45,9110,8823,39.56,9110,8824,40.48,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-13731,"SPCS83 Pennsylvania North zone (meters)",9802,8821,40.1,9110,8822,-77.45,9110,8823,41.57,9110,8824,40.53,9110,8826,600000.0,9001,8827,0.0,9001,,,
-13732,"SPCS83 Pennsylvania South zone (meters)",9802,8821,39.2,9110,8822,-77.45,9110,8823,40.58,9110,8824,39.56,9110,8826,600000.0,9001,8827,0.0,9001,,,
-13800,Rhode Island CS27,9807,8801,41.05,9110,8802,-71.3,9110,8805,0.9999938,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-13830,"SPCS83 Rhode Island zone (meters)",9807,8801,41.05,9110,8802,-71.3,9110,8805,0.99999375,9201,8806,100000.0,9001,8807,0.0,9001,,,,,,
-13901,South Carolina CS27 North zone,9802,8821,33.0,9110,8822,-81.0,9110,8823,33.46,9110,8824,34.58,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-13902,South Carolina CS27 South zone,9802,8821,31.5,9110,8822,-81.0,9110,8823,32.2,9110,8824,33.4,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-13930,"SPCS83 South Carolina zone (meters)",9802,8821,31.5,9110,8822,-81.0,9110,8823,34.5,9110,8824,32.3,9110,8826,609600.0,9001,8827,0.0,9001,,,
-14001,South Dakota CS27 North zone,9802,8821,43.5,9110,8822,-100.0,9110,8823,44.25,9110,8824,45.41,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-14002,South Dakota CS27 South zone,9802,8821,42.2,9110,8822,-100.2,9110,8823,42.5,9110,8824,44.24,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-14031,"SPCS83 South Dakota North zone (meters)",9802,8821,43.5,9110,8822,-100.0,9110,8823,45.41,9110,8824,44.25,9110,8826,600000.0,9001,8827,0.0,9001,,,
-14032,"SPCS83 South Dakota South zone (meters)",9802,8821,42.2,9110,8822,-100.2,9110,8823,44.24,9110,8824,42.5,9110,8826,600000.0,9001,8827,0.0,9001,,,
-14100,Tennessee CS27,9802,8821,34.4,9110,8822,-86.0,9110,8823,35.15,9110,8824,36.25,9110,8826,100000.0,9003,8827,0.0,9003,,,
-14130,"SPCS83 Tennessee zone (meters)",9802,8821,34.2,9110,8822,-86.0,9110,8823,36.25,9110,8824,35.15,9110,8826,600000.0,9001,8827,0.0,9001,,,
-14201,Texas CS27 North zone,9802,8821,34.0,9110,8822,-101.3,9110,8823,34.39,9110,8824,36.11,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-14202,Texas CS27 North Central zone,9802,8821,31.4,9110,8822,-97.3,9110,8823,32.08,9110,8824,33.58,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-14203,Texas CS27 Central zone,9802,8821,29.4,9110,8822,-100.2,9110,8823,30.07,9110,8824,31.53,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-14204,Texas CS27 South Central zone,9802,8821,27.5,9110,8822,-99.0,9110,8823,28.23,9110,8824,30.17,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-14205,Texas CS27 South zone,9802,8821,25.4,9110,8822,-98.3,9110,8823,26.1,9110,8824,27.5,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-14231,"SPCS83 Texas North zone (meters)",9802,8821,34.0,9110,8822,-101.3,9110,8823,36.11,9110,8824,34.39,9110,8826,200000.0,9001,8827,1000000.0,9001,,,
-14232,"SPCS83 Texas North Central zone (meters)",9802,8821,31.4,9110,8822,-98.3,9110,8823,33.58,9110,8824,32.08,9110,8826,600000.0,9001,8827,2000000.0,9001,,,
-14233,"SPCS83 Texas Central zone (meters)",9802,8821,29.4,9110,8822,-100.2,9110,8823,31.53,9110,8824,30.07,9110,8826,700000.0,9001,8827,3000000.0,9001,,,
-14234,"SPCS83 Texas South Central zone (meters)",9802,8821,27.5,9110,8822,-99.0,9110,8823,30.17,9110,8824,28.23,9110,8826,600000.0,9001,8827,4000000.0,9001,,,
-14235,"SPCS83 Texas South zone (meters)",9802,8821,25.4,9110,8822,-98.3,9110,8823,27.5,9110,8824,26.1,9110,8826,300000.0,9001,8827,5000000.0,9001,,,
-14301,Utah CS27 North zone,9802,8821,40.2,9110,8822,-111.3,9110,8823,40.43,9110,8824,41.47,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-14302,Utah CS27 Central zone,9802,8821,38.2,9110,8822,-111.3,9110,8823,39.01,9110,8824,40.39,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-14303,Utah CS27 South zone,9802,8821,36.4,9110,8822,-111.3,9110,8823,37.13,9110,8824,38.21,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-14331,"SPCS83 Utah North zone (meters)",9802,8821,40.2,9110,8822,-111.3,9110,8823,41.47,9110,8824,40.43,9110,8826,500000.0,9001,8827,1000000.0,9001,,,
-14332,"SPCS83 Utah Central zone (meters)",9802,8821,38.2,9110,8822,-111.3,9110,8823,40.39,9110,8824,39.01,9110,8826,500000.0,9001,8827,2000000.0,9001,,,
-14333,"SPCS83 Utah South zone (meters)",9802,8821,36.4,9110,8822,-111.3,9110,8823,38.21,9110,8824,37.13,9110,8826,500000.0,9001,8827,3000000.0,9001,,,
-14400,Vermont CS27,9807,8801,42.3,9110,8802,-72.3,9110,8805,0.999964286,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-14430,"SPCS83 Vermont zone (meters)",9807,8801,42.3,9110,8802,-72.3,9110,8805,0.999964286,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-14501,Virginia CS27 North zone,9802,8821,37.4,9110,8822,-78.3,9110,8823,38.02,9110,8824,39.12,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-14502,Virginia CS27 South zone,9802,8821,36.2,9110,8822,-78.3,9110,8823,36.46,9110,8824,37.58,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-14531,"SPCS83 Virginia North zone (meters)",9802,8821,37.4,9110,8822,-78.3,9110,8823,39.12,9110,8824,38.02,9110,8826,3500000.0,9001,8827,2000000.0,9001,,,
-14532,"SPCS83 Virginia South zone (meters)",9802,8821,36.2,9110,8822,-78.3,9110,8823,37.58,9110,8824,36.46,9110,8826,3500000.0,9001,8827,1000000.0,9001,,,
-14601,Washington CS27 North zone,9802,8821,47.0,9110,8822,-120.5,9110,8823,47.3,9110,8824,48.44,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-14602,Washington CS27 South zone,9802,8821,45.2,9110,8822,-120.3,9110,8823,45.5,9110,8824,47.2,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-14631,"SPCS83 Washington North zone (meters)",9802,8821,47.0,9110,8822,-120.5,9110,8823,48.44,9110,8824,47.3,9110,8826,500000.0,9001,8827,0.0,9001,,,
-14632,"SPCS83 Washington South zone (meters)",9802,8821,45.2,9110,8822,-120.3,9110,8823,47.2,9110,8824,45.5,9110,8826,500000.0,9001,8827,0.0,9001,,,
-14701,West Virginia CS27 North zone,9802,8821,38.3,9110,8822,-79.3,9110,8823,39.0,9110,8824,40.15,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-14702,West Virginia CS27 South zone,9802,8821,37.0,9110,8822,-81.0,9110,8823,37.29,9110,8824,38.53,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-14731,"SPCS83 West Virginia North zone (meters)",9802,8821,38.3,9110,8822,-79.3,9110,8823,40.15,9110,8824,39.0,9110,8826,600000.0,9001,8827,0.0,9001,,,
-14732,"SPCS83 West Virginia South zone (meters)",9802,8821,37.0,9110,8822,-81.0,9110,8823,38.53,9110,8824,37.29,9110,8826,600000.0,9001,8827,0.0,9001,,,
-14801,Wisconsin CS27 North zone,9802,8821,45.1,9110,8822,-90.0,9110,8823,45.34,9110,8824,46.46,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-14802,Wisconsin CS27 Central zone,9802,8821,43.5,9110,8822,-90.0,9110,8823,44.15,9110,8824,45.3,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-14803,Wisconsin CS27 South zone,9802,8821,42.0,9110,8822,-90.0,9110,8823,42.44,9110,8824,44.04,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-14831,"SPCS83 Wisconsin North zone (meters)",9802,8821,45.1,9110,8822,-90.0,9110,8823,46.46,9110,8824,45.34,9110,8826,600000.0,9001,8827,0.0,9001,,,
-14832,"SPCS83 Wisconsin Central zone (meters)",9802,8821,43.5,9110,8822,-90.0,9110,8823,45.3,9110,8824,44.15,9110,8826,600000.0,9001,8827,0.0,9001,,,
-14833,"SPCS83 Wisconsin South zone (meters)",9802,8821,42.0,9110,8822,-90.0,9110,8823,44.04,9110,8824,42.44,9110,8826,600000.0,9001,8827,0.0,9001,,,
-14901,Wyoming CS27 East zone,9807,8801,40.4,9110,8802,-105.1,9110,8805,0.999941177,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-14902,Wyoming CS27 East Central zone,9807,8801,40.4,9110,8802,-107.2,9110,8805,0.999941177,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-14903,Wyoming CS27 West Central zone,9807,8801,40.4,9110,8802,-108.45,9110,8805,0.999941177,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-14904,Wyoming CS27 West zone,9807,8801,40.4,9110,8802,-110.05,9110,8805,0.999941177,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-14931,"SPCS83 Wyoming East zone (meters)",9807,8801,40.3,9110,8802,-105.1,9110,8805,0.9999375,9201,8806,200000.0,9001,8807,0.0,9001,,,,,,
-14932,"SPCS83 Wyoming East Central zone (meters)",9807,8801,40.3,9110,8802,-107.2,9110,8805,0.9999375,9201,8806,400000.0,9001,8807,100000.0,9001,,,,,,
-14933,"SPCS83 Wyoming West Central zone (meters)",9807,8801,40.3,9110,8802,-108.45,9110,8805,0.9999375,9201,8806,600000.0,9001,8807,0.0,9001,,,,,,
-14934,"SPCS83 Wyoming West zone (meters)",9807,8801,40.3,9110,8802,-110.05,9110,8805,0.9999375,9201,8806,800000.0,9001,8807,100000.0,9001,,,,,,
-15001,Alaska CS27 zone 1,9812,8806,16404166.67,9003,8807,-16404166.67,9003,8811,57.0,9110,8812,-133.4,9110,8813,323.07483685,9110,8814,323.07483685,9110,8815,0.9999,9201
-15002,Alaska CS27 zone 2,9807,8801,54.0,9102,8802,-142.0,9102,8805,0.9999,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-15003,Alaska CS27 zone 3,9807,8801,54.0,9102,8802,-146.0,9102,8805,0.9999,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-15004,Alaska CS27 zone 4,9807,8801,54.0,9102,8802,-150.0,9102,8805,0.9999,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-15005,Alaska CS27 zone 5,9807,8801,54.0,9102,8802,-154.0,9102,8805,0.9999,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-15006,Alaska CS27 zone 6,9807,8801,54.0,9102,8802,-158.0,9102,8805,0.9999,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-15007,Alaska CS27 zone 7,9807,8801,54.0,9102,8802,-162.0,9102,8805,0.9999,9201,8806,700000.0,9003,8807,0.0,9003,,,,,,
-15008,Alaska CS27 zone 8,9807,8801,54.0,9102,8802,-166.0,9102,8805,0.9999,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-15009,Alaska CS27 zone 9,9807,8801,54.0,9102,8802,-170.0,9102,8805,0.9999,9201,8806,600000.0,9003,8807,0.0,9003,,,,,,
-15010,Alaska CS27 zone 10,9802,8821,51.0,9110,8822,-176.0,9110,8823,53.5,9110,8824,51.5,9110,8826,3000000.0,9003,8827,0.0,9003,,,
-15031,"SPCS83 Alaska zone 1 (meters)",9812,8806,5000000.0,9001,8807,-5000000.0,9001,8811,57.0,9110,8812,-133.4,9110,8813,323.07483685,9110,8814,323.07483685,9110,8815,0.9999,9201
-15032,"SPCS83 Alaska zone 2 (meters)",9807,8801,54.0,9102,8802,-142.0,9102,8805,0.9999,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-15033,"SPCS83 Alaska zone 3 (meters)",9807,8801,54.0,9102,8802,-146.0,9102,8805,0.9999,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-15034,"SPCS83 Alaska zone 4 (meters)",9807,8801,54.0,9102,8802,-150.0,9102,8805,0.9999,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-15035,"SPCS83 Alaska zone 5 (meters)",9807,8801,54.0,9102,8802,-154.0,9102,8805,0.9999,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-15036,"SPCS83 Alaska zone 6 (meters)",9807,8801,54.0,9102,8802,-158.0,9102,8805,0.9999,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-15037,"SPCS83 Alaska zone 7 (meters)",9807,8801,54.0,9102,8802,-162.0,9102,8805,0.9999,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-15038,"SPCS83 Alaska zone 8 (meters)",9807,8801,54.0,9102,8802,-166.0,9102,8805,0.9999,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-15039,"SPCS83 Alaska zone 9 (meters)",9807,8801,54.0,9102,8802,-170.0,9102,8805,0.9999,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-15040,"SPCS83 Alaska zone 10 (meters)",9802,8821,51.0,9110,8822,-176.0,9110,8823,53.5,9110,8824,51.5,9110,8826,1000000.0,9001,8827,0.0,9001,,,
-15101,Hawaii CS27 zone 1,9807,8801,18.5,9110,8802,-155.3,9110,8805,0.999966667,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-15102,Hawaii CS27 zone 2,9807,8801,20.2,9110,8802,-156.4,9110,8805,0.999966667,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-15103,Hawaii CS27 zone 3,9807,8801,21.1,9110,8802,-158.0,9110,8805,0.99999,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-15104,Hawaii CS27 zone 4,9807,8801,21.5,9110,8802,-159.3,9110,8805,0.99999,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-15105,Hawaii CS27 zone 5,9807,8801,21.4,9110,8802,-160.1,9110,8805,1.0,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-15131,"SPCS83 Hawaii zone 1 (meters)",9807,8801,18.5,9110,8802,-155.3,9110,8805,0.999966667,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-15132,"SPCS83 Hawaii zone 2 (meters)",9807,8801,20.2,9110,8802,-156.4,9110,8805,0.999966667,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-15133,"SPCS83 Hawaii zone 3 (meters)",9807,8801,21.1,9110,8802,-158.0,9110,8805,0.99999,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-15134,"SPCS83 Hawaii zone 4 (meters)",9807,8801,21.5,9110,8802,-159.3,9110,8805,0.99999,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-15135,"SPCS83 Hawaii zone 5 (meters)",9807,8801,21.4,9110,8802,-160.1,9110,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-15201,Puerto Rico CS27,9802,8821,17.5,9110,8822,-66.26,9110,8823,18.26,9110,8824,18.02,9110,8826,500000.0,9003,8827,0.0,9003,,,
-15202,St. Croix CS27,9802,8821,17.5,9110,8822,-66.26,9110,8823,18.26,9110,8824,18.02,9110,8826,500000.0,9003,8827,100000.0,9003,,,
-15230,"SPCS83 Puerto Rico & Virgin Islands zone (meters)",9802,8821,17.5,9110,8822,-66.26,9110,8823,18.26,9110,8824,18.02,9110,8826,200000.0,9001,8827,200000.0,9001,,,
-15300,American Samoa Lambert,9801,8801,-14.16,9110,8802,170.0,9110,8805,1.0,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-15301,American Samoa Lambert,9801,8801,-14.16,9110,8802,-170.0,9110,8805,1.0,9201,8806,500000.0,9003,8807,0.0,9003,,,,,,
-15302,Tennessee CS27,9802,8821,34.4,9110,8822,-86.0,9110,8823,35.15,9110,8824,36.25,9110,8826,2000000.0,9003,8827,100000.0,9003,,,
-15303,"SPCS83 Kentucky North zone (meters)",9802,8821,37.3,9110,8822,-84.15,9110,8823,37.58,9110,8824,38.58,9110,8826,500000.0,9001,8827,0.0,9001,,,
-15304,"SPCS83 Arizona East zone (International feet)",9807,8801,31.0,9110,8802,-110.1,9110,8805,0.9999,9201,8806,700000.0,9002,8807,0.0,9002,,,,,,
-15305,"SPCS83 Arizona Central zone (International feet)",9807,8801,31.0,9110,8802,-111.55,9110,8805,0.9999,9201,8806,700000.0,9002,8807,0.0,9002,,,,,,
-15306,"SPCS83 Arizona West zone (International feet)",9807,8801,31.0,9110,8802,-113.45,9110,8805,0.999933333,9201,8806,700000.0,9002,8807,0.0,9002,,,,,,
-15307,"SPCS83 California zone 1 (US Survey feet)",9802,8821,39.2,9110,8822,-122.0,9110,8823,41.4,9110,8824,40.0,9110,8826,6561666.667,9003,8827,1640416.667,9003,,,
-15308,"SPCS83 California zone 2 (US Survey feet)",9802,8821,37.4,9110,8822,-122.0,9110,8823,39.5,9110,8824,38.2,9110,8826,6561666.667,9003,8827,1640416.667,9003,,,
-15309,"SPCS83 California zone 3 (US Survey feet)",9802,8821,36.3,9110,8822,-120.3,9110,8823,38.26,9110,8824,37.04,9110,8826,6561666.667,9003,8827,1640416.667,9003,,,
-15310,"SPCS83 California zone 4 (US Survey feet)",9802,8821,35.2,9110,8822,-119.0,9110,8823,37.15,9110,8824,36.0,9110,8826,6561666.667,9003,8827,1640416.667,9003,,,
-15311,"SPCS83 California zone 5 (US Survey feet)",9802,8821,33.3,9110,8822,-118.0,9110,8823,35.28,9110,8824,34.02,9110,8826,6561666.667,9003,8827,1640416.667,9003,,,
-15312,"SPCS83 California zone 6 (US Survey feet)",9802,8821,32.1,9110,8822,-116.15,9110,8823,33.53,9110,8824,32.47,9110,8826,6561666.667,9003,8827,1640416.667,9003,,,
-15313,"SPCS83 Colorado North zone (US Survey feet)",9802,8821,39.2,9110,8822,-105.3,9110,8823,40.47,9110,8824,39.43,9110,8826,3000000.0,9003,8827,1000000.0,9003,,,
-15314,"SPCS83 Colorado Central zone (US Survey feet)",9802,8821,37.5,9110,8822,-105.3,9110,8823,39.45,9110,8824,38.27,9110,8826,3000000.0,9003,8827,1000000.0,9003,,,
-15315,"SPCS83 Colorado South zone (US Survey feet)",9802,8821,36.4,9110,8822,-105.3,9110,8823,38.26,9110,8824,37.14,9110,8826,3000000.0,9003,8827,1000000.0,9003,,,
-15316,"SPCS83 Connecticut zone (US Survey feet)",9802,8821,40.5,9110,8822,-72.45,9110,8823,41.52,9110,8824,41.12,9110,8826,1000000.0,9003,8827,500000.0,9003,,,
-15317,"SPCS83 Delaware zone (US Survey feet)",9807,8801,38.0,9110,8802,-75.25,9110,8805,0.999995,9201,8806,656166.667,9003,8807,0.0,9003,,,,,,
-15318,"SPCS83 Florida East zone (US Survey feet)",9807,8801,24.2,9110,8802,-81.0,9110,8805,0.999941177,9201,8806,656166.667,9003,8807,0.0,9003,,,,,,
-15319,"SPCS83 Florida West zone (US Survey feet)",9807,8801,24.2,9110,8802,-82.0,9110,8805,0.999941177,9201,8806,656166.667,9003,8807,0.0,9003,,,,,,
-15320,"SPCS83 Florida North zone (US Survey feet)",9802,8821,29.0,9110,8822,-84.3,9110,8823,30.45,9110,8824,29.35,9110,8826,1968500.0,9003,8827,0.0,9003,,,
-15321,"SPCS83 Georgia East zone (US Survey feet)",9807,8801,30.0,9110,8802,-82.1,9110,8805,0.9999,9201,8806,656166.667,9003,8807,0.0,9003,,,,,,
-15322,"SPCS83 Georgia West zone (US Survey feet)",9807,8801,30.0,9110,8802,-84.1,9110,8805,0.9999,9201,8806,2296583.333,9003,8807,0.0,9003,,,,,,
-15323,"SPCS83 Idaho East zone (US Survey feet)",9807,8801,41.4,9110,8802,-112.1,9110,8805,0.999947368,9201,8806,656166.667,9003,8807,0.0,9003,,,,,,
-15324,"SPCS83 Idaho Central zone (US Survey feet)",9807,8801,41.4,9110,8802,-114.0,9110,8805,0.999947368,9201,8806,1640416.667,9003,8807,0.0,9003,,,,,,
-15325,"SPCS83 Idaho West zone (US Survey feet)",9807,8801,41.4,9110,8802,-115.45,9110,8805,0.999933333,9201,8806,2624666.667,9003,8807,0.0,9003,,,,,,
-15326,"SPCS83 Indiana East zone (US Survey feet)",9807,8801,37.3,9110,8802,-85.4,9110,8805,0.999966667,9201,8806,328083.333,9003,8807,818125.0,9003,,,,,,
-15327,"SPCS83 Indiana West zone (US Survey feet)",9807,8801,37.3,9110,8802,-87.05,9110,8805,0.999966667,9201,8806,2952750.0,9003,8807,818125.0,9003,,,,,,
-15328,"SPCS83 Kentucky North zone (US Survey feet)",9802,8821,37.3,9110,8822,-84.15,9110,8823,37.58,9110,8824,38.58,9110,8826,1640416.667,9003,8827,0.0,9003,,,
-15329,"SPCS83 Kentucky South zone (US Survey feet)",9802,8821,36.2,9110,8822,-85.45,9110,8823,37.56,9110,8824,36.44,9110,8826,1640416.667,9003,8827,1640416.667,9003,,,
-15330,"SPCS83 Maryland zone (US Survey feet)",9802,8821,37.4,9110,8822,-77.0,9110,8823,39.27,9110,8824,38.18,9110,8826,1312333.333,9003,8827,0.0,9003,,,
-15331,"SPCS83 Massachusetts Mainland zone (US Survey feet)",9802,8821,41.0,9110,8822,-71.3,9110,8823,42.41,9110,8824,41.43,9110,8826,656166.667,9003,8827,2460625.0,9003,,,
-15332,"SPCS83 Massachusetts Island zone (US Survey feet)",9802,8821,41.0,9110,8822,-70.3,9110,8823,41.29,9110,8824,41.17,9110,8826,1640416.667,9003,8827,0.0,9003,,,
-15333,"SPCS83 Michigan North zone (International feet)",9802,8821,44.47,9110,8822,-87.0,9110,8823,47.05,9110,8824,45.29,9110,8826,26246719.16,9002,8827,0.0,9002,,,
-15334,"SPCS83 Michigan Central zone (International feet)",9802,8821,43.19,9110,8822,-84.22,9110,8823,45.42,9110,8824,44.11,9110,8826,19685039.37,9002,8827,0.0,9002,,,
-15335,"SPCS83 Michigan South zone (International feet)",9802,8821,41.3,9110,8822,-84.22,9110,8823,43.4,9110,8824,42.06,9110,8826,13123359.58,9002,8827,0.0,9002,,,
-15336,"SPCS83 Mississippi East zone (US Survey feet)",9807,8801,29.3,9110,8802,-88.5,9110,8805,0.99995,9201,8806,984250.0,9003,8807,0.0,9003,,,,,,
-15337,"SPCS83 Mississippi West zone (US Survey feet)",9807,8801,29.3,9110,8802,-90.2,9110,8805,0.99995,9201,8806,2296583.333,9003,8807,0.0,9003,,,,,,
-15338,"SPCS83 Montana zone (International feet)",9802,8821,44.15,9110,8822,-109.3,9110,8823,49.0,9110,8824,45.0,9110,8826,1968503.937,9002,8827,0.0,9002,,,
-15339,"SPCS83 New Mexico East zone (US Survey feet)",9807,8801,31.0,9110,8802,-104.2,9110,8805,0.999909091,9201,8806,541337.5,9003,8807,0.0,9003,,,,,,
-15340,"SPCS83 New Mexico Central zone (US Survey feet)",9807,8801,31.0,9110,8802,-106.15,9110,8805,0.9999,9201,8806,1640416.667,9003,8807,0.0,9003,,,,,,
-15341,"SPCS83 New Mexico West zone (US Survey feet)",9807,8801,31.0,9110,8802,-107.5,9110,8805,0.999916667,9201,8806,2723091.667,9003,8807,0.0,9003,,,,,,
-15342,"SPCS83 New York East zone (US Survey feet)",9807,8801,38.5,9110,8802,-74.3,9110,8805,0.9999,9201,8806,492125.0,9003,8807,0.0,9003,,,,,,
-15343,"SPCS83 New York Central zone (US Survey feet)",9807,8801,40.0,9110,8802,-76.35,9110,8805,0.9999375,9201,8806,820208.333,9003,8807,0.0,9003,,,,,,
-15344,"SPCS83 New York West zone (US Survey feet)",9807,8801,40.0,9110,8802,-78.35,9110,8805,0.9999375,9201,8806,1148291.667,9003,8807,0.0,9003,,,,,,
-15345,"SPCS83 New York Long Island zone (US Survey feet)",9802,8821,40.1,9110,8822,-74.0,9110,8823,41.02,9110,8824,40.4,9110,8826,984250.0,9003,8827,0.0,9003,,,
-15346,"SPCS83 North Carolina zone (US Survey feet)",9802,8821,33.45,9110,8822,-79.0,9110,8823,36.1,9110,8824,34.2,9110,8826,2000000.0,9003,8827,0.0,9003,,,
-15347,"SPCS83 North Dakota North zone (International feet)",9802,8821,47.0,9110,8822,-100.3,9110,8823,48.44,9110,8824,47.26,9110,8826,1968503.937,9002,8827,0.0,9002,,,
-15348,"SPCS83 North Dakota South zone (International feet)",9802,8821,45.4,9110,8822,-100.3,9110,8823,47.29,9110,8824,46.11,9110,8826,1968503.937,9002,8827,0.0,9002,,,
-15349,"SPCS83 Oklahoma North zone (US Survey feet)",9802,8821,35.0,9110,8822,-98.0,9110,8823,36.46,9110,8824,35.34,9110,8826,1968500.0,9003,8827,0.0,9003,,,
-15350,"SPCS83 Oklahoma South zone (US Survey feet)",9802,8821,33.2,9110,8822,-98.0,9110,8823,35.14,9110,8824,33.56,9110,8826,1968500.0,9003,8827,0.0,9003,,,
-15351,"SPCS83 Oregon North zone (International feet)",9802,8821,43.4,9110,8822,-120.3,9110,8823,46.0,9110,8824,44.2,9110,8826,8202099.738,9002,8827,0.0,9002,,,
-15352,"SPCS83 Oregon South zone (International feet)",9802,8821,41.4,9110,8822,-120.3,9110,8823,44.0,9110,8824,42.2,9110,8826,4921259.843,9002,8827,0.0,9002,,,
-15353,"SPCS83 Pennsylvania North zone (US Survey feet)",9802,8821,40.1,9110,8822,-77.45,9110,8823,41.57,9110,8824,40.53,9110,8826,1968500.0,9003,8827,0.0,9003,,,
-15354,"SPCS83 Pennsylvania South zone (US Survey feet)",9802,8821,39.2,9110,8822,-77.45,9110,8823,40.58,9110,8824,39.56,9110,8826,1968500.0,9003,8827,0.0,9003,,,
-15355,"SPCS83 South Carolina zone (International feet)",9802,8821,31.5,9110,8822,-81.0,9110,8823,34.5,9110,8824,32.3,9110,8826,2000000.0,9002,8827,0.0,9002,,,
-15356,"SPCS83 Tennessee zone (US Survey feet)",9802,8821,34.2,9110,8822,-86.0,9110,8823,36.25,9110,8824,35.15,9110,8826,1968500.0,9003,8827,0.0,9003,,,
-15357,"SPCS83 Texas North zone (US Survey feet)",9802,8821,34.0,9110,8822,-101.3,9110,8823,36.11,9110,8824,34.39,9110,8826,656166.667,9003,8827,3280833.333,9003,,,
-15358,"SPCS83 Texas North Central zone (US Survey feet)",9802,8821,31.4,9110,8822,-98.3,9110,8823,33.58,9110,8824,32.08,9110,8826,1968500.0,9003,8827,6561666.667,9003,,,
-15359,"SPCS83 Texas Central zone (US Survey feet)",9802,8821,29.4,9110,8822,-100.2,9110,8823,31.53,9110,8824,30.07,9110,8826,2296583.333,9003,8827,9842500.0,9003,,,
-15360,"SPCS83 Texas South Central zone (US Survey feet)",9802,8821,27.5,9110,8822,-99.0,9110,8823,30.17,9110,8824,28.23,9110,8826,1968500.0,9003,8827,13123333.333,9003,,,
-15361,"SPCS83 Texas South zone (US Survey feet)",9802,8821,25.4,9110,8822,-98.3,9110,8823,27.5,9110,8824,26.1,9110,8826,984250.0,9003,8827,16404166.667,9003,,,
-15362,"SPCS83 Utah North zone (International feet)",9802,8821,40.2,9110,8822,-111.3,9110,8823,41.47,9110,8824,40.43,9110,8826,1640419.948,9002,8827,3280839.895,9002,,,
-15363,"SPCS83 Utah Central zone (International feet)",9802,8821,38.2,9110,8822,-111.3,9110,8823,40.39,9110,8824,39.01,9110,8826,1640419.948,9002,8827,6561679.79,9002,,,
-15364,"SPCS83 Utah South zone (International feet)",9802,8821,36.4,9110,8822,-111.3,9110,8823,38.21,9110,8824,37.13,9110,8826,1640419.948,9002,8827,9842519.685,9002,,,
-15365,"SPCS83 Virginia North zone (US Survey feet)",9802,8821,37.4,9110,8822,-78.3,9110,8823,39.12,9110,8824,38.02,9110,8826,11482916.667,9003,8827,6561666.667,9003,,,
-15366,"SPCS83 Virginia South zone (US Survey feet)",9802,8821,36.2,9110,8822,-78.3,9110,8823,37.58,9110,8824,36.46,9110,8826,11482916.667,9003,8827,3280833.333,9003,,,
-15367,"SPCS83 Washington North zone (US Survey feet)",9802,8821,47.0,9110,8822,-120.5,9110,8823,48.44,9110,8824,47.3,9110,8826,1640416.667,9003,8827,0.0,9003,,,
-15368,"SPCS83 Washington South zone (US Survey feet)",9802,8821,45.2,9110,8822,-120.3,9110,8823,47.2,9110,8824,45.5,9110,8826,1640416.667,9003,8827,0.0,9003,,,
-15369,"SPCS83 Wisconsin North zone (US Survey feet)",9802,8821,45.1,9110,8822,-90.0,9110,8823,46.46,9110,8824,45.34,9110,8826,1968500.0,9003,8827,0.0,9003,,,
-15370,"SPCS83 Wisconsin Central zone (US Survey feet)",9802,8821,43.5,9110,8822,-90.0,9110,8823,45.3,9110,8824,44.15,9110,8826,1968500.0,9003,8827,0.0,9003,,,
-15371,"SPCS83 Wisconsin South zone (US Survey feet)",9802,8821,42.0,9110,8822,-90.0,9110,8823,44.04,9110,8824,42.44,9110,8826,1968500.0,9003,8827,0.0,9003,,,
-15914,"BLM zone 14N (US survey feet)",9807,8801,0.0,9102,8802,-99.0,9102,8805,0.9996,9201,8806,1640416.67,9003,8807,0.0,9003,,,,,,
-15915,"BLM zone 15N (US survey feet)",9807,8801,0.0,9102,8802,-93.0,9102,8805,0.9996,9201,8806,1640416.67,9003,8807,0.0,9003,,,,,,
-15916,"BLM zone 16N (US survey feet)",9807,8801,0.0,9102,8802,-87.0,9102,8805,0.9996,9201,8806,1640416.67,9003,8807,0.0,9003,,,,,,
-15917,"BLM zone 17N (US survey feet)",9807,8801,0.0,9102,8802,-81.0,9102,8805,0.9996,9201,8806,1640416.67,9003,8807,0.0,9003,,,,,,
-16000,"UTM grid system (northern hemisphere)",9824,8801,0.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,8830,-180.0,9102,8831,6.0,9102,,,
-16001,UTM zone 1N,9807,8801,0.0,9102,8802,-177.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16002,UTM zone 2N,9807,8801,0.0,9102,8802,-171.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16003,UTM zone 3N,9807,8801,0.0,9102,8802,-165.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16004,UTM zone 4N,9807,8801,0.0,9102,8802,-159.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16005,UTM zone 5N,9807,8801,0.0,9102,8802,-153.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16006,UTM zone 6N,9807,8801,0.0,9102,8802,-147.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16007,UTM zone 7N,9807,8801,0.0,9102,8802,-141.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16008,UTM zone 8N,9807,8801,0.0,9102,8802,-135.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16009,UTM zone 9N,9807,8801,0.0,9102,8802,-129.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16010,UTM zone 10N,9807,8801,0.0,9102,8802,-123.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16011,UTM zone 11N,9807,8801,0.0,9102,8802,-117.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16012,UTM zone 12N,9807,8801,0.0,9102,8802,-111.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16013,UTM zone 13N,9807,8801,0.0,9102,8802,-105.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16014,UTM zone 14N,9807,8801,0.0,9102,8802,-99.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16015,UTM zone 15N,9807,8801,0.0,9102,8802,-93.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16016,UTM zone 16N,9807,8801,0.0,9102,8802,-87.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16017,UTM zone 17N,9807,8801,0.0,9102,8802,-81.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16018,UTM zone 18N,9807,8801,0.0,9102,8802,-75.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16019,UTM zone 19N,9807,8801,0.0,9102,8802,-69.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16020,UTM zone 20N,9807,8801,0.0,9102,8802,-63.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16021,UTM zone 21N,9807,8801,0.0,9102,8802,-57.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16022,UTM zone 22N,9807,8801,0.0,9102,8802,-51.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16023,UTM zone 23N,9807,8801,0.0,9102,8802,-45.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16024,UTM zone 24N,9807,8801,0.0,9102,8802,-39.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16025,UTM zone 25N,9807,8801,0.0,9102,8802,-33.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16026,UTM zone 26N,9807,8801,0.0,9102,8802,-27.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16027,UTM zone 27N,9807,8801,0.0,9102,8802,-21.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16028,UTM zone 28N,9807,8801,0.0,9102,8802,-15.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16029,UTM zone 29N,9807,8801,0.0,9102,8802,-9.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16030,UTM zone 30N,9807,8801,0.0,9102,8802,-3.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16031,UTM zone 31N,9807,8801,0.0,9102,8802,3.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16032,UTM zone 32N,9807,8801,0.0,9102,8802,9.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16033,UTM zone 33N,9807,8801,0.0,9102,8802,15.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16034,UTM zone 34N,9807,8801,0.0,9102,8802,21.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16035,UTM zone 35N,9807,8801,0.0,9102,8802,27.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16036,UTM zone 36N,9807,8801,0.0,9102,8802,33.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16037,UTM zone 37N,9807,8801,0.0,9102,8802,39.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16038,UTM zone 38N,9807,8801,0.0,9102,8802,45.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16039,UTM zone 39N,9807,8801,0.0,9102,8802,51.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16040,UTM zone 40N,9807,8801,0.0,9102,8802,57.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16041,UTM zone 41N,9807,8801,0.0,9102,8802,63.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16042,UTM zone 42N,9807,8801,0.0,9102,8802,69.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16043,UTM zone 43N,9807,8801,0.0,9102,8802,75.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16044,UTM zone 44N,9807,8801,0.0,9102,8802,81.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16045,UTM zone 45N,9807,8801,0.0,9102,8802,87.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16046,UTM zone 46N,9807,8801,0.0,9102,8802,93.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16047,UTM zone 47N,9807,8801,0.0,9102,8802,99.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16048,UTM zone 48N,9807,8801,0.0,9102,8802,105.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16049,UTM zone 49N,9807,8801,0.0,9102,8802,111.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16050,UTM zone 50N,9807,8801,0.0,9102,8802,117.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16051,UTM zone 51N,9807,8801,0.0,9102,8802,123.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16052,UTM zone 52N,9807,8801,0.0,9102,8802,129.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16053,UTM zone 53N,9807,8801,0.0,9102,8802,135.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16054,UTM zone 54N,9807,8801,0.0,9102,8802,141.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16055,UTM zone 55N,9807,8801,0.0,9102,8802,147.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16056,UTM zone 56N,9807,8801,0.0,9102,8802,153.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16057,UTM zone 57N,9807,8801,0.0,9102,8802,159.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16058,UTM zone 58N,9807,8801,0.0,9102,8802,165.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16059,UTM zone 59N,9807,8801,0.0,9102,8802,171.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16060,UTM zone 60N,9807,8801,0.0,9102,8802,177.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16061,Universal Polar Stereographic North,9810,8801,90.0,9102,8802,0.0,9102,8805,0.994,9201,8806,2000000.0,9001,8807,2000000.0,9001,,,,,,
-16070,3-degree Gauss-Kruger zone 40,9807,8801,0.0,9102,8802,120.0,9102,8805,1.0,9201,8806,40500000.0,9001,8807,0.0,9001,,,,,,
-16071,3-degree Gauss-Kruger zone 41,9807,8801,0.0,9102,8802,123.0,9102,8805,1.0,9201,8806,41500000.0,9001,8807,0.0,9001,,,,,,
-16072,3-degree Gauss-Kruger zone 42,9807,8801,0.0,9102,8802,126.0,9102,8805,1.0,9201,8806,42500000.0,9001,8807,0.0,9001,,,,,,
-16073,3-degree Gauss-Kruger zone 43,9807,8801,0.0,9102,8802,129.0,9102,8805,1.0,9201,8806,43500000.0,9001,8807,0.0,9001,,,,,,
-16074,3-degree Gauss-Kruger zone 44,9807,8801,0.0,9102,8802,132.0,9102,8805,1.0,9201,8806,44500000.0,9001,8807,0.0,9001,,,,,,
-16075,3-degree Gauss-Kruger zone 45,9807,8801,0.0,9102,8802,135.0,9102,8805,1.0,9201,8806,45500000.0,9001,8807,0.0,9001,,,,,,
-16076,3-degree Gauss-Kruger zone 46,9807,8801,0.0,9102,8802,138.0,9102,8805,1.0,9201,8806,46500000.0,9001,8807,0.0,9001,,,,,,
-16077,3-degree Gauss-Kruger zone 47,9807,8801,0.0,9102,8802,141.0,9102,8805,1.0,9201,8806,47500000.0,9001,8807,0.0,9001,,,,,,
-16078,3-degree Gauss-Kruger zone 48,9807,8801,0.0,9102,8802,144.0,9102,8805,1.0,9201,8806,48500000.0,9001,8807,0.0,9001,,,,,,
-16079,3-degree Gauss-Kruger zone 49,9807,8801,0.0,9102,8802,147.0,9102,8805,1.0,9201,8806,49500000.0,9001,8807,0.0,9001,,,,,,
-16080,3-degree Gauss-Kruger zone 50,9807,8801,0.0,9102,8802,150.0,9102,8805,1.0,9201,8806,50500000.0,9001,8807,0.0,9001,,,,,,
-16081,3-degree Gauss-Kruger zone 51,9807,8801,0.0,9102,8802,153.0,9102,8805,1.0,9201,8806,51500000.0,9001,8807,0.0,9001,,,,,,
-16082,3-degree Gauss-Kruger zone 52,9807,8801,0.0,9102,8802,156.0,9102,8805,1.0,9201,8806,52500000.0,9001,8807,0.0,9001,,,,,,
-16083,3-degree Gauss-Kruger zone 53,9807,8801,0.0,9102,8802,159.0,9102,8805,1.0,9201,8806,53500000.0,9001,8807,0.0,9001,,,,,,
-16084,3-degree Gauss-Kruger zone 54,9807,8801,0.0,9102,8802,162.0,9102,8805,1.0,9201,8806,54500000.0,9001,8807,0.0,9001,,,,,,
-16085,3-degree Gauss-Kruger zone 55,9807,8801,0.0,9102,8802,165.0,9102,8805,1.0,9201,8806,55500000.0,9001,8807,0.0,9001,,,,,,
-16086,3-degree Gauss-Kruger zone 56,9807,8801,0.0,9102,8802,168.0,9102,8805,1.0,9201,8806,56500000.0,9001,8807,0.0,9001,,,,,,
-16087,3-degree Gauss-Kruger zone 57,9807,8801,0.0,9102,8802,171.0,9102,8805,1.0,9201,8806,57500000.0,9001,8807,0.0,9001,,,,,,
-16088,3-degree Gauss-Kruger zone 58,9807,8801,0.0,9102,8802,174.0,9102,8805,1.0,9201,8806,58500000.0,9001,8807,0.0,9001,,,,,,
-16089,3-degree Gauss-Kruger zone 59,9807,8801,0.0,9102,8802,177.0,9102,8805,1.0,9201,8806,59500000.0,9001,8807,0.0,9001,,,,,,
-16090,3-degree Gauss-Kruger zone 60,9807,8801,0.0,9102,8802,180.0,9102,8805,1.0,9201,8806,60000000.0,9001,8807,0.0,9001,,,,,,
-16091,3-degree Gauss-Kruger zone 61,9807,8801,0.0,9102,8802,-177.0,9102,8805,1.0,9201,8806,61500000.0,9001,8807,0.0,9001,,,,,,
-16092,3-degree Gauss-Kruger zone 62,9807,8801,0.0,9102,8802,-174.0,9102,8805,1.0,9201,8806,62500000.0,9001,8807,0.0,9001,,,,,,
-16093,3-degree Gauss-Kruger zone 63,9807,8801,0.0,9102,8802,-171.0,9102,8805,1.0,9201,8806,63500000.0,9001,8807,0.0,9001,,,,,,
-16094,3-degree Gauss-Kruger zone 64,9807,8801,0.0,9102,8802,-168.0,9102,8805,1.0,9201,8806,64500000.0,9001,8807,0.0,9001,,,,,,
-16100,"UTM grid system (southern hemisphere)",9824,8801,0.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,8830,-180.0,9102,8831,6.0,9102,,,
-16101,UTM zone 1S,9807,8801,0.0,9102,8802,-177.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-16102,UTM zone 2S,9807,8801,0.0,9102,8802,-171.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-16103,UTM zone 3S,9807,8801,0.0,9102,8802,-165.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-16104,UTM zone 4S,9807,8801,0.0,9102,8802,-159.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-16105,UTM zone 5S,9807,8801,0.0,9102,8802,-153.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-16106,UTM zone 6S,9807,8801,0.0,9102,8802,-147.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-16107,UTM zone 7S,9807,8801,0.0,9102,8802,-141.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-16108,UTM zone 8S,9807,8801,0.0,9102,8802,-135.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-16109,UTM zone 9S,9807,8801,0.0,9102,8802,-129.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-16110,UTM zone 10S,9807,8801,0.0,9102,8802,-123.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-16111,UTM zone 11S,9807,8801,0.0,9102,8802,-117.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-16112,UTM zone 12S,9807,8801,0.0,9102,8802,-111.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-16113,UTM zone 13S,9807,8801,0.0,9102,8802,-105.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-16114,UTM zone 14S,9807,8801,0.0,9102,8802,-99.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-16115,UTM zone 15S,9807,8801,0.0,9102,8802,-93.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-16116,UTM zone 16S,9807,8801,0.0,9102,8802,-87.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-16117,UTM zone 17S,9807,8801,0.0,9102,8802,-81.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-16118,UTM zone 18S,9807,8801,0.0,9102,8802,-75.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-16119,UTM zone 19S,9807,8801,0.0,9102,8802,-69.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-16120,UTM zone 20S,9807,8801,0.0,9102,8802,-63.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-16121,UTM zone 21S,9807,8801,0.0,9102,8802,-57.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-16122,UTM zone 22S,9807,8801,0.0,9102,8802,-51.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-16123,UTM zone 23S,9807,8801,0.0,9102,8802,-45.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-16124,UTM zone 24S,9807,8801,0.0,9102,8802,-39.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-16125,UTM zone 25S,9807,8801,0.0,9102,8802,-33.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-16126,UTM zone 26S,9807,8801,0.0,9102,8802,-27.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-16127,UTM zone 27S,9807,8801,0.0,9102,8802,-21.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-16128,UTM zone 28S,9807,8801,0.0,9102,8802,-15.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-16129,UTM zone 29S,9807,8801,0.0,9102,8802,-9.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-16130,UTM zone 30S,9807,8801,0.0,9102,8802,-3.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-16131,UTM zone 31S,9807,8801,0.0,9102,8802,3.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-16132,UTM zone 32S,9807,8801,0.0,9102,8802,9.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-16133,UTM zone 33S,9807,8801,0.0,9102,8802,15.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-16134,UTM zone 34S,9807,8801,0.0,9102,8802,21.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-16135,UTM zone 35S,9807,8801,0.0,9102,8802,27.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-16136,UTM zone 36S,9807,8801,0.0,9102,8802,33.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-16137,UTM zone 37S,9807,8801,0.0,9102,8802,39.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-16138,UTM zone 38S,9807,8801,0.0,9102,8802,45.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-16139,UTM zone 39S,9807,8801,0.0,9102,8802,51.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-16140,UTM zone 40S,9807,8801,0.0,9102,8802,57.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-16141,UTM zone 41S,9807,8801,0.0,9102,8802,63.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-16142,UTM zone 42S,9807,8801,0.0,9102,8802,69.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-16143,UTM zone 43S,9807,8801,0.0,9102,8802,75.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-16144,UTM zone 44S,9807,8801,0.0,9102,8802,81.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-16145,UTM zone 45S,9807,8801,0.0,9102,8802,87.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-16146,UTM zone 46S,9807,8801,0.0,9102,8802,93.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-16147,UTM zone 47S,9807,8801,0.0,9102,8802,99.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-16148,UTM zone 48S,9807,8801,0.0,9102,8802,105.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-16149,UTM zone 49S,9807,8801,0.0,9102,8802,111.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-16150,UTM zone 50S,9807,8801,0.0,9102,8802,117.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-16151,UTM zone 51S,9807,8801,0.0,9102,8802,123.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-16152,UTM zone 52S,9807,8801,0.0,9102,8802,129.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-16153,UTM zone 53S,9807,8801,0.0,9102,8802,135.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-16154,UTM zone 54S,9807,8801,0.0,9102,8802,141.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-16155,UTM zone 55S,9807,8801,0.0,9102,8802,147.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-16156,UTM zone 56S,9807,8801,0.0,9102,8802,153.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-16157,UTM zone 57S,9807,8801,0.0,9102,8802,159.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-16158,UTM zone 58S,9807,8801,0.0,9102,8802,165.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-16159,UTM zone 59S,9807,8801,0.0,9102,8802,171.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-16160,UTM zone 60S,9807,8801,0.0,9102,8802,177.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-16161,Universal Polar Stereographic South,9810,8801,-90.0,9102,8802,0.0,9102,8805,0.994,9201,8806,2000000.0,9001,8807,2000000.0,9001,,,,,,
-16170,3-degree Gauss-Kruger CM 120E,9807,8801,0.0,9102,8802,120.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16171,3-degree Gauss-Kruger CM 123E,9807,8801,0.0,9102,8802,123.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16172,3-degree Gauss-Kruger CM 126E,9807,8801,0.0,9102,8802,126.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16173,3-degree Gauss-Kruger CM 129E,9807,8801,0.0,9102,8802,129.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16174,3-degree Gauss-Kruger CM 132E,9807,8801,0.0,9102,8802,132.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16175,3-degree Gauss-Kruger CM 135E,9807,8801,0.0,9102,8802,135.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16176,3-degree Gauss-Kruger CM 138E,9807,8801,0.0,9102,8802,138.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16177,3-degree Gauss-Kruger CM 141E,9807,8801,0.0,9102,8802,141.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16178,3-degree Gauss-Kruger CM 144E,9807,8801,0.0,9102,8802,144.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16179,3-degree Gauss-Kruger CM 147E,9807,8801,0.0,9102,8802,147.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16180,3-degree Gauss-Kruger CM 150E,9807,8801,0.0,9102,8802,150.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16181,3-degree Gauss-Kruger CM 153E,9807,8801,0.0,9102,8802,153.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16182,3-degree Gauss-Kruger CM 156E,9807,8801,0.0,9102,8802,156.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16183,3-degree Gauss-Kruger CM 159E,9807,8801,0.0,9102,8802,159.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16184,3-degree Gauss-Kruger CM 162E,9807,8801,0.0,9102,8802,162.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16185,3-degree Gauss-Kruger CM 165E,9807,8801,0.0,9102,8802,165.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16186,3-degree Gauss-Kruger CM 168E,9807,8801,0.0,9102,8802,168.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16187,3-degree Gauss-Kruger CM 171E,9807,8801,0.0,9102,8802,171.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16188,3-degree Gauss-Kruger CM 174E,9807,8801,0.0,9102,8802,174.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16189,3-degree Gauss-Kruger CM 177E,9807,8801,0.0,9102,8802,177.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16190,3-degree Gauss-Kruger CM 180,9807,8801,0.0,9102,8802,180.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16191,3-degree Gauss-Kruger CM 177W,9807,8801,0.0,9102,8802,-177.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16192,3-degree Gauss-Kruger CM 174W,9807,8801,0.0,9102,8802,-174.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16193,3-degree Gauss-Kruger CM 171W,9807,8801,0.0,9102,8802,-171.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16194,3-degree Gauss-Kruger CM 168W,9807,8801,0.0,9102,8802,-168.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16201,6-degree Gauss-Kruger zone 1,9807,8801,0.0,9102,8802,3.0,9102,8805,1.0,9201,8806,1500000.0,9001,8807,0.0,9001,,,,,,
-16202,6-degree Gauss-Kruger zone 2,9807,8801,0.0,9102,8802,9.0,9102,8805,1.0,9201,8806,2500000.0,9001,8807,0.0,9001,,,,,,
-16203,6-degree Gauss-Kruger zone 3,9807,8801,0.0,9102,8802,15.0,9102,8805,1.0,9201,8806,3500000.0,9001,8807,0.0,9001,,,,,,
-16204,6-degree Gauss-Kruger zone 4,9807,8801,0.0,9102,8802,21.0,9102,8805,1.0,9201,8806,4500000.0,9001,8807,0.0,9001,,,,,,
-16205,6-degree Gauss-Kruger zone 5,9807,8801,0.0,9102,8802,27.0,9102,8805,1.0,9201,8806,5500000.0,9001,8807,0.0,9001,,,,,,
-16206,6-degree Gauss-Kruger zone 6,9807,8801,0.0,9102,8802,33.0,9102,8805,1.0,9201,8806,6500000.0,9001,8807,0.0,9001,,,,,,
-16207,6-degree Gauss-Kruger zone 7,9807,8801,0.0,9102,8802,39.0,9102,8805,1.0,9201,8806,7500000.0,9001,8807,0.0,9001,,,,,,
-16208,6-degree Gauss-Kruger zone 8,9807,8801,0.0,9102,8802,45.0,9102,8805,1.0,9201,8806,8500000.0,9001,8807,0.0,9001,,,,,,
-16209,6-degree Gauss-Kruger zone 9,9807,8801,0.0,9102,8802,51.0,9102,8805,1.0,9201,8806,9500000.0,9001,8807,0.0,9001,,,,,,
-16210,6-degree Gauss-Kruger zone 10,9807,8801,0.0,9102,8802,57.0,9102,8805,1.0,9201,8806,10500000.0,9001,8807,0.0,9001,,,,,,
-16211,6-degree Gauss-Kruger zone 11,9807,8801,0.0,9102,8802,63.0,9102,8805,1.0,9201,8806,11500000.0,9001,8807,0.0,9001,,,,,,
-16212,6-degree Gauss-Kruger zone 12,9807,8801,0.0,9102,8802,69.0,9102,8805,1.0,9201,8806,12500000.0,9001,8807,0.0,9001,,,,,,
-16213,6-degree Gauss-Kruger zone 13,9807,8801,0.0,9102,8802,75.0,9102,8805,1.0,9201,8806,13500000.0,9001,8807,0.0,9001,,,,,,
-16214,6-degree Gauss-Kruger zone 14,9807,8801,0.0,9102,8802,81.0,9102,8805,1.0,9201,8806,14500000.0,9001,8807,0.0,9001,,,,,,
-16215,6-degree Gauss-Kruger zone 15,9807,8801,0.0,9102,8802,87.0,9102,8805,1.0,9201,8806,15500000.0,9001,8807,0.0,9001,,,,,,
-16216,6-degree Gauss-Kruger zone 16,9807,8801,0.0,9102,8802,93.0,9102,8805,1.0,9201,8806,16500000.0,9001,8807,0.0,9001,,,,,,
-16217,6-degree Gauss-Kruger zone 17,9807,8801,0.0,9102,8802,99.0,9102,8805,1.0,9201,8806,17500000.0,9001,8807,0.0,9001,,,,,,
-16218,6-degree Gauss-Kruger zone 18,9807,8801,0.0,9102,8802,105.0,9102,8805,1.0,9201,8806,18500000.0,9001,8807,0.0,9001,,,,,,
-16219,6-degree Gauss-Kruger zone 19,9807,8801,0.0,9102,8802,111.0,9102,8805,1.0,9201,8806,19500000.0,9001,8807,0.0,9001,,,,,,
-16220,6-degree Gauss-Kruger zone 20,9807,8801,0.0,9102,8802,117.0,9102,8805,1.0,9201,8806,20500000.0,9001,8807,0.0,9001,,,,,,
-16221,6-degree Gauss-Kruger zone 21,9807,8801,0.0,9102,8802,123.0,9102,8805,1.0,9201,8806,21500000.0,9001,8807,0.0,9001,,,,,,
-16222,6-degree Gauss-Kruger zone 22,9807,8801,0.0,9102,8802,129.0,9102,8805,1.0,9201,8806,22500000.0,9001,8807,0.0,9001,,,,,,
-16223,6-degree Gauss-Kruger zone 23,9807,8801,0.0,9102,8802,135.0,9102,8805,1.0,9201,8806,23500000.0,9001,8807,0.0,9001,,,,,,
-16224,6-degree Gauss-Kruger zone 24,9807,8801,0.0,9102,8802,141.0,9102,8805,1.0,9201,8806,24500000.0,9001,8807,0.0,9001,,,,,,
-16225,6-degree Gauss-Kruger zone 25,9807,8801,0.0,9102,8802,147.0,9102,8805,1.0,9201,8806,25500000.0,9001,8807,0.0,9001,,,,,,
-16226,6-degree Gauss-Kruger zone 26,9807,8801,0.0,9102,8802,153.0,9102,8805,1.0,9201,8806,26500000.0,9001,8807,0.0,9001,,,,,,
-16227,6-degree Gauss-Kruger zone 27,9807,8801,0.0,9102,8802,159.0,9102,8805,1.0,9201,8806,27500000.0,9001,8807,0.0,9001,,,,,,
-16228,6-degree Gauss-Kruger zone 28,9807,8801,0.0,9102,8802,165.0,9102,8805,1.0,9201,8806,28500000.0,9001,8807,0.0,9001,,,,,,
-16229,6-degree Gauss-Kruger zone 29,9807,8801,0.0,9102,8802,171.0,9102,8805,1.0,9201,8806,29500000.0,9001,8807,0.0,9001,,,,,,
-16230,6-degree Gauss-Kruger zone 30,9807,8801,0.0,9102,8802,177.0,9102,8805,1.0,9201,8806,30500000.0,9001,8807,0.0,9001,,,,,,
-16231,6-degree Gauss-Kruger zone 31,9807,8801,0.0,9102,8802,-177.0,9102,8805,1.0,9201,8806,31500000.0,9001,8807,0.0,9001,,,,,,
-16232,6-degree Gauss-Kruger zone 32,9807,8801,0.0,9102,8802,-171.0,9102,8805,1.0,9201,8806,32500000.0,9001,8807,0.0,9001,,,,,,
-16233,6-degree Gauss-Kruger zone 33,9807,8801,0.0,9102,8802,-165.0,9102,8805,1.0,9201,8806,33500000.0,9001,8807,0.0,9001,,,,,,
-16234,6-degree Gauss-Kruger zone 34,9807,8801,0.0,9102,8802,-159.0,9102,8805,1.0,9201,8806,34500000.0,9001,8807,0.0,9001,,,,,,
-16235,6-degree Gauss-Kruger zone 35,9807,8801,0.0,9102,8802,-153.0,9102,8805,1.0,9201,8806,35500000.0,9001,8807,0.0,9001,,,,,,
-16236,6-degree Gauss-Kruger zone 36,9807,8801,0.0,9102,8802,-147.0,9102,8805,1.0,9201,8806,36500000.0,9001,8807,0.0,9001,,,,,,
-16237,6-degree Gauss-Kruger zone 37,9807,8801,0.0,9102,8802,-141.0,9102,8805,1.0,9201,8806,37500000.0,9001,8807,0.0,9001,,,,,,
-16238,6-degree Gauss-Kruger zone 38,9807,8801,0.0,9102,8802,-135.0,9102,8805,1.0,9201,8806,38500000.0,9001,8807,0.0,9001,,,,,,
-16239,6-degree Gauss-Kruger zone 39,9807,8801,0.0,9102,8802,-129.0,9102,8805,1.0,9201,8806,39500000.0,9001,8807,0.0,9001,,,,,,
-16240,6-degree Gauss-Kruger zone 40,9807,8801,0.0,9102,8802,-123.0,9102,8805,1.0,9201,8806,40500000.0,9001,8807,0.0,9001,,,,,,
-16241,6-degree Gauss-Kruger zone 41,9807,8801,0.0,9102,8802,-117.0,9102,8805,1.0,9201,8806,41500000.0,9001,8807,0.0,9001,,,,,,
-16242,6-degree Gauss-Kruger zone 42,9807,8801,0.0,9102,8802,-111.0,9102,8805,1.0,9201,8806,42500000.0,9001,8807,0.0,9001,,,,,,
-16243,6-degree Gauss-Kruger zone 43,9807,8801,0.0,9102,8802,-105.0,9102,8805,1.0,9201,8806,43500000.0,9001,8807,0.0,9001,,,,,,
-16244,6-degree Gauss-Kruger zone 44,9807,8801,0.0,9102,8802,-99.0,9102,8805,1.0,9201,8806,44500000.0,9001,8807,0.0,9001,,,,,,
-16245,6-degree Gauss-Kruger zone 45,9807,8801,0.0,9102,8802,-93.0,9102,8805,1.0,9201,8806,45500000.0,9001,8807,0.0,9001,,,,,,
-16246,6-degree Gauss-Kruger zone 46,9807,8801,0.0,9102,8802,-87.0,9102,8805,1.0,9201,8806,46500000.0,9001,8807,0.0,9001,,,,,,
-16247,6-degree Gauss-Kruger zone 47,9807,8801,0.0,9102,8802,-81.0,9102,8805,1.0,9201,8806,47500000.0,9001,8807,0.0,9001,,,,,,
-16248,6-degree Gauss-Kruger zone 48,9807,8801,0.0,9102,8802,-75.0,9102,8805,1.0,9201,8806,48500000.0,9001,8807,0.0,9001,,,,,,
-16249,6-degree Gauss-Kruger zone 49,9807,8801,0.0,9102,8802,-69.0,9102,8805,1.0,9201,8806,49500000.0,9001,8807,0.0,9001,,,,,,
-16250,6-degree Gauss-Kruger zone 50,9807,8801,0.0,9102,8802,-63.0,9102,8805,1.0,9201,8806,50500000.0,9001,8807,0.0,9001,,,,,,
-16251,6-degree Gauss-Kruger zone 51,9807,8801,0.0,9102,8802,-57.0,9102,8805,1.0,9201,8806,51500000.0,9001,8807,0.0,9001,,,,,,
-16252,6-degree Gauss-Kruger zone 52,9807,8801,0.0,9102,8802,-51.0,9102,8805,1.0,9201,8806,52500000.0,9001,8807,0.0,9001,,,,,,
-16253,6-degree Gauss-Kruger zone 53,9807,8801,0.0,9102,8802,-45.0,9102,8805,1.0,9201,8806,53500000.0,9001,8807,0.0,9001,,,,,,
-16254,6-degree Gauss-Kruger zone 54,9807,8801,0.0,9102,8802,-39.0,9102,8805,1.0,9201,8806,54500000.0,9001,8807,0.0,9001,,,,,,
-16255,6-degree Gauss-Kruger zone 55,9807,8801,0.0,9102,8802,-33.0,9102,8805,1.0,9201,8806,55500000.0,9001,8807,0.0,9001,,,,,,
-16256,6-degree Gauss-Kruger zone 56,9807,8801,0.0,9102,8802,-27.0,9102,8805,1.0,9201,8806,56500000.0,9001,8807,0.0,9001,,,,,,
-16257,6-degree Gauss-Kruger zone 57,9807,8801,0.0,9102,8802,-21.0,9102,8805,1.0,9201,8806,57500000.0,9001,8807,0.0,9001,,,,,,
-16258,6-degree Gauss-Kruger zone 58,9807,8801,0.0,9102,8802,-15.0,9102,8805,1.0,9201,8806,58500000.0,9001,8807,0.0,9001,,,,,,
-16259,6-degree Gauss-Kruger zone 59,9807,8801,0.0,9102,8802,-9.0,9102,8805,1.0,9201,8806,59500000.0,9001,8807,0.0,9001,,,,,,
-16260,6-degree Gauss-Kruger zone 60,9807,8801,0.0,9102,8802,-3.0,9102,8805,1.0,9201,8806,60500000.0,9001,8807,0.0,9001,,,,,,
-16261,3-degree Gauss-Kruger zone 1,9807,8801,0.0,9102,8802,3.0,9102,8805,1.0,9201,8806,1500000.0,9001,8807,0.0,9001,,,,,,
-16262,3-degree Gauss-Kruger zone 2,9807,8801,0.0,9102,8802,6.0,9102,8805,1.0,9201,8806,2500000.0,9001,8807,0.0,9001,,,,,,
-16263,3-degree Gauss-Kruger zone 3,9807,8801,0.0,9102,8802,9.0,9102,8805,1.0,9201,8806,3500000.0,9001,8807,0.0,9001,,,,,,
-16264,3-degree Gauss-Kruger zone 4,9807,8801,0.0,9102,8802,12.0,9102,8805,1.0,9201,8806,4500000.0,9001,8807,0.0,9001,,,,,,
-16265,3-degree Gauss-Kruger zone 5,9807,8801,0.0,9102,8802,15.0,9102,8805,1.0,9201,8806,5500000.0,9001,8807,0.0,9001,,,,,,
-16266,3-degree Gauss-Kruger zone 6,9807,8801,0.0,9102,8802,18.0,9102,8805,1.0,9201,8806,6500000.0,9001,8807,0.0,9001,,,,,,
-16267,3-degree Gauss-Kruger zone 7,9807,8801,0.0,9102,8802,21.0,9102,8805,1.0,9201,8806,7500000.0,9001,8807,0.0,9001,,,,,,
-16268,3-degree Gauss-Kruger zone 8,9807,8801,0.0,9102,8802,24.0,9102,8805,1.0,9201,8806,8500000.0,9001,8807,0.0,9001,,,,,,
-16269,3-degree Gauss-Kruger zone 9,9807,8801,0.0,9102,8802,27.0,9102,8805,1.0,9201,8806,9500000.0,9001,8807,0.0,9001,,,,,,
-16270,3-degree Gauss-Kruger zone 10,9807,8801,0.0,9102,8802,30.0,9102,8805,1.0,9201,8806,10500000.0,9001,8807,0.0,9001,,,,,,
-16271,3-degree Gauss-Kruger zone 11,9807,8801,0.0,9102,8802,33.0,9102,8805,1.0,9201,8806,11500000.0,9001,8807,0.0,9001,,,,,,
-16272,3-degree Gauss-Kruger zone 12,9807,8801,0.0,9102,8802,36.0,9102,8805,1.0,9201,8806,12500000.0,9001,8807,0.0,9001,,,,,,
-16273,3-degree Gauss-Kruger zone 13,9807,8801,0.0,9102,8802,39.0,9102,8805,1.0,9201,8806,13500000.0,9001,8807,0.0,9001,,,,,,
-16274,3-degree Gauss-Kruger zone 14,9807,8801,0.0,9102,8802,42.0,9102,8805,1.0,9201,8806,14500000.0,9001,8807,0.0,9001,,,,,,
-16275,3-degree Gauss-Kruger zone 15,9807,8801,0.0,9102,8802,45.0,9102,8805,1.0,9201,8806,15500000.0,9001,8807,0.0,9001,,,,,,
-16276,3-degree Gauss-Kruger zone 16,9807,8801,0.0,9102,8802,48.0,9102,8805,1.0,9201,8806,16500000.0,9001,8807,0.0,9001,,,,,,
-16277,3-degree Gauss-Kruger zone 17,9807,8801,0.0,9102,8802,51.0,9102,8805,1.0,9201,8806,17500000.0,9001,8807,0.0,9001,,,,,,
-16278,3-degree Gauss-Kruger zone 18,9807,8801,0.0,9102,8802,54.0,9102,8805,1.0,9201,8806,18500000.0,9001,8807,0.0,9001,,,,,,
-16279,3-degree Gauss-Kruger zone 19,9807,8801,0.0,9102,8802,57.0,9102,8805,1.0,9201,8806,19500000.0,9001,8807,0.0,9001,,,,,,
-16280,3-degree Gauss-Kruger zone 20,9807,8801,0.0,9102,8802,60.0,9102,8805,1.0,9201,8806,20500000.0,9001,8807,0.0,9001,,,,,,
-16281,3-degree Gauss-Kruger zone 21,9807,8801,0.0,9102,8802,63.0,9102,8805,1.0,9201,8806,21500000.0,9001,8807,0.0,9001,,,,,,
-16282,3-degree Gauss-Kruger zone 22,9807,8801,0.0,9102,8802,66.0,9102,8805,1.0,9201,8806,22500000.0,9001,8807,0.0,9001,,,,,,
-16283,3-degree Gauss-Kruger zone 23,9807,8801,0.0,9102,8802,69.0,9102,8805,1.0,9201,8806,23500000.0,9001,8807,0.0,9001,,,,,,
-16284,3-degree Gauss-Kruger zone 24,9807,8801,0.0,9102,8802,72.0,9102,8805,1.0,9201,8806,24500000.0,9001,8807,0.0,9001,,,,,,
-16285,3-degree Gauss-Kruger zone 25,9807,8801,0.0,9102,8802,75.0,9102,8805,1.0,9201,8806,25500000.0,9001,8807,0.0,9001,,,,,,
-16286,3-degree Gauss-Kruger zone 26,9807,8801,0.0,9102,8802,78.0,9102,8805,1.0,9201,8806,26500000.0,9001,8807,0.0,9001,,,,,,
-16287,3-degree Gauss-Kruger zone 27,9807,8801,0.0,9102,8802,81.0,9102,8805,1.0,9201,8806,27500000.0,9001,8807,0.0,9001,,,,,,
-16288,3-degree Gauss-Kruger zone 28,9807,8801,0.0,9102,8802,84.0,9102,8805,1.0,9201,8806,28500000.0,9001,8807,0.0,9001,,,,,,
-16289,3-degree Gauss-Kruger zone 29,9807,8801,0.0,9102,8802,87.0,9102,8805,1.0,9201,8806,29500000.0,9001,8807,0.0,9001,,,,,,
-16290,3-degree Gauss-Kruger zone 30,9807,8801,0.0,9102,8802,90.0,9102,8805,1.0,9201,8806,30500000.0,9001,8807,0.0,9001,,,,,,
-16291,3-degree Gauss-Kruger zone 31,9807,8801,0.0,9102,8802,93.0,9102,8805,1.0,9201,8806,31500000.0,9001,8807,0.0,9001,,,,,,
-16292,3-degree Gauss-Kruger zone 32,9807,8801,0.0,9102,8802,96.0,9102,8805,1.0,9201,8806,32500000.0,9001,8807,0.0,9001,,,,,,
-16293,3-degree Gauss-Kruger zone 33,9807,8801,0.0,9102,8802,99.0,9102,8805,1.0,9201,8806,33500000.0,9001,8807,0.0,9001,,,,,,
-16294,3-degree Gauss-Kruger zone 34,9807,8801,0.0,9102,8802,102.0,9102,8805,1.0,9201,8806,34500000.0,9001,8807,0.0,9001,,,,,,
-16295,3-degree Gauss-Kruger zone 35,9807,8801,0.0,9102,8802,105.0,9102,8805,1.0,9201,8806,35500000.0,9001,8807,0.0,9001,,,,,,
-16296,3-degree Gauss-Kruger zone 36,9807,8801,0.0,9102,8802,108.0,9102,8805,1.0,9201,8806,36500000.0,9001,8807,0.0,9001,,,,,,
-16297,3-degree Gauss-Kruger zone 37,9807,8801,0.0,9102,8802,111.0,9102,8805,1.0,9201,8806,37500000.0,9001,8807,0.0,9001,,,,,,
-16298,3-degree Gauss-Kruger zone 38,9807,8801,0.0,9102,8802,114.0,9102,8805,1.0,9201,8806,38500000.0,9001,8807,0.0,9001,,,,,,
-16299,3-degree Gauss-Kruger zone 39,9807,8801,0.0,9102,8802,117.0,9102,8805,1.0,9201,8806,39500000.0,9001,8807,0.0,9001,,,,,,
-16301,6-degree Gauss-Kruger CM 3E,9807,8801,0.0,9102,8802,3.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16302,6-degree Gauss-Kruger CM 9E,9807,8801,0.0,9102,8802,9.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16303,6-degree Gauss-Kruger CM 15E,9807,8801,0.0,9102,8802,15.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16304,6-degree Gauss-Kruger CM 21E,9807,8801,0.0,9102,8802,21.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16305,6-degree Gauss-Kruger CM 27E,9807,8801,0.0,9102,8802,27.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16306,6-degree Gauss-Kruger CM 33E,9807,8801,0.0,9102,8802,33.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16307,6-degree Gauss-Kruger CM 39E,9807,8801,0.0,9102,8802,39.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16308,6-degree Gauss-Kruger CM 45E,9807,8801,0.0,9102,8802,45.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16309,6-degree Gauss-Kruger CM 51E,9807,8801,0.0,9102,8802,51.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16310,6-degree Gauss-Kruger CM 57E,9807,8801,0.0,9102,8802,57.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16311,6-degree Gauss-Kruger CM 63E,9807,8801,0.0,9102,8802,63.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16312,6-degree Gauss-Kruger CM 69E,9807,8801,0.0,9102,8802,69.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16313,6-degree Gauss-Kruger CM 75E,9807,8801,0.0,9102,8802,75.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16314,6-degree Gauss-Kruger CM 81E,9807,8801,0.0,9102,8802,81.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16315,6-degree Gauss-Kruger CM 87E,9807,8801,0.0,9102,8802,87.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16316,6-degree Gauss-Kruger CM 93E,9807,8801,0.0,9102,8802,93.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16317,6-degree Gauss-Kruger CM 99E,9807,8801,0.0,9102,8802,99.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16318,6-degree Gauss-Kruger CM 105E,9807,8801,0.0,9102,8802,105.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16319,6-degree Gauss-Kruger CM 111E,9807,8801,0.0,9102,8802,111.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16320,6-degree Gauss-Kruger CM 117E,9807,8801,0.0,9102,8802,117.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16321,6-degree Gauss-Kruger CM 123E,9807,8801,0.0,9102,8802,123.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16322,6-degree Gauss-Kruger CM 129E,9807,8801,0.0,9102,8802,129.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16323,6-degree Gauss-Kruger CM 135E,9807,8801,0.0,9102,8802,135.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16324,6-degree Gauss-Kruger CM 141E,9807,8801,0.0,9102,8802,141.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16325,6-degree Gauss-Kruger CM 147E,9807,8801,0.0,9102,8802,147.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16326,6-degree Gauss-Kruger CM 153E,9807,8801,0.0,9102,8802,153.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16327,6-degree Gauss-Kruger CM 159E,9807,8801,0.0,9102,8802,159.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16328,6-degree Gauss-Kruger CM 165E,9807,8801,0.0,9102,8802,165.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16329,6-degree Gauss-Kruger CM 171E,9807,8801,0.0,9102,8802,171.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16330,6-degree Gauss-Kruger CM 177E,9807,8801,0.0,9102,8802,177.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16331,6-degree Gauss-Kruger CM 177W,9807,8801,0.0,9102,8802,-177.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16332,6-degree Gauss-Kruger CM 171W,9807,8801,0.0,9102,8802,-171.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16333,6-degree Gauss-Kruger CM 165W,9807,8801,0.0,9102,8802,-165.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16334,6-degree Gauss-Kruger CM 159W,9807,8801,0.0,9102,8802,-159.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16335,6-degree Gauss-Kruger CM 153W,9807,8801,0.0,9102,8802,-153.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16336,6-degree Gauss-Kruger CM 147W,9807,8801,0.0,9102,8802,-147.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16337,6-degree Gauss-Kruger CM 141W,9807,8801,0.0,9102,8802,-141.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16338,6-degree Gauss-Kruger CM 135W,9807,8801,0.0,9102,8802,-135.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16339,6-degree Gauss-Kruger CM 129W,9807,8801,0.0,9102,8802,-129.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16340,6-degree Gauss-Kruger CM 123W,9807,8801,0.0,9102,8802,-123.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16341,6-degree Gauss-Kruger CM 117W,9807,8801,0.0,9102,8802,-117.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16342,6-degree Gauss-Kruger CM 111W,9807,8801,0.0,9102,8802,-111.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16343,6-degree Gauss-Kruger CM 105W,9807,8801,0.0,9102,8802,-105.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16344,6-degree Gauss-Kruger CM 99W,9807,8801,0.0,9102,8802,-99.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16345,6-degree Gauss-Kruger CM 93W,9807,8801,0.0,9102,8802,-93.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16346,6-degree Gauss-Kruger CM 87W,9807,8801,0.0,9102,8802,-87.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16347,6-degree Gauss-Kruger CM 81W,9807,8801,0.0,9102,8802,-81.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16348,6-degree Gauss-Kruger CM 75W,9807,8801,0.0,9102,8802,-75.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16349,6-degree Gauss-Kruger CM 69W,9807,8801,0.0,9102,8802,-69.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16350,6-degree Gauss-Kruger CM 63W,9807,8801,0.0,9102,8802,-63.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16351,6-degree Gauss-Kruger CM 57W,9807,8801,0.0,9102,8802,-57.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16352,6-degree Gauss-Kruger CM 51W,9807,8801,0.0,9102,8802,-51.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16353,6-degree Gauss-Kruger CM 45W,9807,8801,0.0,9102,8802,-45.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16354,6-degree Gauss-Kruger CM 39W,9807,8801,0.0,9102,8802,-39.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16355,6-degree Gauss-Kruger CM 33W,9807,8801,0.0,9102,8802,-33.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16356,6-degree Gauss-Kruger CM 27W,9807,8801,0.0,9102,8802,-27.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16357,6-degree Gauss-Kruger CM 21W,9807,8801,0.0,9102,8802,-21.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16358,6-degree Gauss-Kruger CM 15W,9807,8801,0.0,9102,8802,-15.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16359,6-degree Gauss-Kruger CM 9W,9807,8801,0.0,9102,8802,-9.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16360,6-degree Gauss-Kruger CM 3W,9807,8801,0.0,9102,8802,-3.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16361,3-degree Gauss-Kruger CM 3E,9807,8801,0.0,9102,8802,3.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16362,3-degree Gauss-Kruger CM 6E,9807,8801,0.0,9102,8802,6.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16363,3-degree Gauss-Kruger CM 9E,9807,8801,0.0,9102,8802,9.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16364,3-degree Gauss-Kruger CM 12E,9807,8801,0.0,9102,8802,12.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16365,3-degree Gauss-Kruger CM 15E,9807,8801,0.0,9102,8802,15.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16366,3-degree Gauss-Kruger CM 18E,9807,8801,0.0,9102,8802,18.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16367,3-degree Gauss-Kruger CM 21E,9807,8801,0.0,9102,8802,21.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16368,3-degree Gauss-Kruger CM 24E,9807,8801,0.0,9102,8802,24.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16369,3-degree Gauss-Kruger CM 27E,9807,8801,0.0,9102,8802,27.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16370,3-degree Gauss-Kruger CM 30E,9807,8801,0.0,9102,8802,30.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16371,3-degree Gauss-Kruger CM 33E,9807,8801,0.0,9102,8802,33.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16372,3-degree Gauss-Kruger CM 36E,9807,8801,0.0,9102,8802,36.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16373,3-degree Gauss-Kruger CM 39E,9807,8801,0.0,9102,8802,39.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16374,3-degree Gauss-Kruger CM 42E,9807,8801,0.0,9102,8802,42.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16375,3-degree Gauss-Kruger CM 45E,9807,8801,0.0,9102,8802,45.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16376,3-degree Gauss-Kruger CM 48E,9807,8801,0.0,9102,8802,48.0,9102,8805,1.0,9001,8806,500000.0,9001,8807,0.0,9201,,,,,,
-16377,3-degree Gauss-Kruger CM 51E,9807,8801,0.0,9102,8802,51.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16378,3-degree Gauss-Kruger CM 54E,9807,8801,0.0,9102,8802,54.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16379,3-degree Gauss-Kruger CM 57E,9807,8801,0.0,9102,8802,57.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16380,3-degree Gauss-Kruger CM 60E,9807,8801,0.0,9102,8802,60.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16381,3-degree Gauss-Kruger CM 63E,9807,8801,0.0,9102,8802,63.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16382,3-degree Gauss-Kruger CM 66E,9807,8801,0.0,9102,8802,66.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16383,3-degree Gauss-Kruger CM 69E,9807,8801,0.0,9102,8802,69.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16384,3-degree Gauss-Kruger CM 72E,9807,8801,0.0,9102,8802,72.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16385,3-degree Gauss-Kruger CM 75E,9807,8801,0.0,9102,8802,75.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16386,3-degree Gauss-Kruger CM 78E,9807,8801,0.0,9102,8802,78.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16387,3-degree Gauss-Kruger CM 81E,9807,8801,0.0,9102,8802,81.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16388,3-degree Gauss-Kruger CM 84E,9807,8801,0.0,9102,8802,84.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16389,3-degree Gauss-Kruger CM 87E,9807,8801,0.0,9102,8802,87.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16390,3-degree Gauss-Kruger CM 90E,9807,8801,0.0,9102,8802,90.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16391,3-degree Gauss-Kruger CM 93E,9807,8801,0.0,9102,8802,93.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16392,3-degree Gauss-Kruger CM 96E,9807,8801,0.0,9102,8802,96.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16393,3-degree Gauss-Kruger CM 99E,9807,8801,0.0,9102,8802,99.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16394,3-degree Gauss-Kruger CM 102E,9807,8801,0.0,9102,8802,102.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16395,3-degree Gauss-Kruger CM 105E,9807,8801,0.0,9102,8802,105.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16396,3-degree Gauss-Kruger CM 108E,9807,8801,0.0,9102,8802,108.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16397,3-degree Gauss-Kruger CM 111E,9807,8801,0.0,9102,8802,111.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16398,3-degree Gauss-Kruger CM 114E,9807,8801,0.0,9102,8802,114.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16399,3-degree Gauss-Kruger CM 117E,9807,8801,0.0,9102,8802,117.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16400,TM 0 N,9807,8801,0.0,9102,8802,0.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16405,TM 5 NE,9807,8801,0.0,9102,8802,5.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16406,TM 6 NE,9807,8801,0.0,9102,8802,6.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16411,TM 11 NE,9807,8801,0.0,9102,8802,11.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16412,TM 12 NE,9807,8801,0.0,9102,8802,12.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16413,TM 13 NE,9807,8801,0.0,9102,8802,13.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16430,TM 30 NE,9807,8801,0.0,9102,8802,30.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16506,TM 106 NE,9807,8801,0.0,9102,8802,106.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16586,GK 106 NE,9807,8801,0.0,9102,8802,106.0,9102,8805,1.0,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-16611,TM 11.30 SE,9807,8801,0.0,9110,8802,11.3,9110,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-16612,TM 12 SE,9807,8801,0.0,9102,8802,12.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-16636,TM 36 SE,9807,8801,0.0,9102,8802,36.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-16709,TM 109 SE,9807,8801,0.0,9102,8802,109.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-16716,TM 116 SE,9807,8801,0.0,9102,8802,116.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-16732,TM 132 SE,9807,8801,0.0,9102,8802,132.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-17001,TM 1 NW,9807,8801,0.0,9102,8802,-1.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-17005,TM 5 NW,9807,8801,0.0,9102,8802,-5.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-17054,TM 54 NW,9807,8801,0.0,9102,8802,-54.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-17348,Map Grid of Australia zone 48,9807,8801,0.0,9102,8802,105.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-17349,Map Grid of Australia zone 49,9807,8801,0.0,9102,8802,111.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-17350,Map Grid of Australia zone 50,9807,8801,0.0,9102,8802,117.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-17351,Map Grid of Australia zone 51,9807,8801,0.0,9102,8802,123.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-17352,Map Grid of Australia zone 52,9807,8801,0.0,9102,8802,129.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-17353,Map Grid of Australia zone 53,9807,8801,0.0,9102,8802,135.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-17354,Map Grid of Australia zone 54,9807,8801,0.0,9102,8802,141.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-17355,Map Grid of Australia zone 55,9807,8801,0.0,9102,8802,147.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-17356,Map Grid of Australia zone 56,9807,8801,0.0,9102,8802,153.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-17357,Map Grid of Australia zone 57,9807,8801,0.0,9102,8802,159.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-17358,Map Grid of Australia zone 58,9807,8801,0.0,9102,8802,165.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-17448,Australian Map Grid zone 48,9807,8801,0.0,9102,8802,105.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-17449,Australian Map Grid zone 49,9807,8801,0.0,9102,8802,111.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-17450,Australian Map Grid zone 50,9807,8801,0.0,9102,8802,117.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-17451,Australian Map Grid zone 51,9807,8801,0.0,9102,8802,123.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-17452,Australian Map Grid zone 52,9807,8801,0.0,9102,8802,129.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-17453,Australian Map Grid zone 53,9807,8801,0.0,9102,8802,135.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-17454,Australian Map Grid zone 54,9807,8801,0.0,9102,8802,141.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-17455,Australian Map Grid zone 55,9807,8801,0.0,9102,8802,147.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-17456,Australian Map Grid zone 56,9807,8801,0.0,9102,8802,153.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-17457,Australian Map Grid zone 57,9807,8801,0.0,9102,8802,159.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-17458,Australian Map Grid zone 58,9807,8801,0.0,9102,8802,165.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,10000000.0,9001,,,,,,
-17515,South African Survey Grid zone 15,9808,8801,0.0,9102,8802,15.0,9102,8805,1.0,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-17517,South African Survey Grid zone 17,9808,8801,0.0,9102,8802,17.0,9102,8805,1.0,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-17519,South African Survey Grid zone 19,9808,8801,0.0,9102,8802,19.0,9102,8805,1.0,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-17521,South African Survey Grid zone 21,9808,8801,0.0,9102,8802,21.0,9102,8805,1.0,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-17523,South African Survey Grid zone 23,9808,8801,0.0,9102,8802,23.0,9102,8805,1.0,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-17525,South African Survey Grid zone 25,9808,8801,0.0,9102,8802,25.0,9102,8805,1.0,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-17527,South African Survey Grid zone 27,9808,8801,0.0,9102,8802,27.0,9102,8805,1.0,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-17529,South African Survey Grid zone 29,9808,8801,0.0,9102,8802,29.0,9102,8805,1.0,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-17531,South African Survey Grid zone 31,9808,8801,0.0,9102,8802,31.0,9102,8805,1.0,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-17533,South African Survey Grid zone 33,9808,8801,0.0,9102,8802,33.0,9102,8805,1.0,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-17611,South West African Survey Grid zone 11,9808,8801,-22.0,9102,8802,11.0,9102,8805,1.0,9201,8806,0.0,9031,8807,0.0,9031,,,,,,
-17613,South West African Survey Grid zone 13,9808,8801,-22.0,9102,8802,13.0,9102,8805,1.0,9201,8806,0.0,9031,8807,0.0,9031,,,,,,
-17615,South West African Survey Grid zone 15,9808,8801,-22.0,9102,8802,15.0,9102,8805,1.0,9201,8806,0.0,9031,8807,0.0,9031,,,,,,
-17617,South West African Survey Grid zone 17,9808,8801,-22.0,9102,8802,17.0,9102,8805,1.0,9201,8806,0.0,9031,8807,0.0,9031,,,,,,
-17619,South West African Survey Grid zone 19,9808,8801,-22.0,9102,8802,19.0,9102,8805,1.0,9201,8806,0.0,9031,8807,0.0,9031,,,,,,
-17621,South West African Survey Grid zone 21,9808,8801,-22.0,9102,8802,21.0,9102,8805,1.0,9201,8806,0.0,9031,8807,0.0,9031,,,,,,
-17623,South West African Survey Grid zone 23,9808,8801,-22.0,9102,8802,23.0,9102,8805,1.0,9201,8806,0.0,9031,8807,0.0,9031,,,,,,
-17625,South West African Survey Grid zone 25,9808,8801,-22.0,9102,8802,25.0,9102,8805,1.0,9201,8806,0.0,9031,8807,0.0,9031,,,,,,
-17700,MTM Quebec zone 2,9807,8801,0.0,9110,8802,-55.3,9110,8805,0.9999,9201,8806,304800.0,9001,8807,0.0,9001,,,,,,
-17701,MTM zone 1,9807,8801,0.0,9102,8802,-53.0,9102,8805,0.9999,9201,8806,304800.0,9001,8807,0.0,9001,,,,,,
-17702,MTM Newfoundland zone 2,9807,8801,0.0,9102,8802,-56.0,9102,8805,0.9999,9201,8806,304800.0,9001,8807,0.0,9001,,,,,,
-17703,MTM zone 3,9807,8801,0.0,9110,8802,-58.3,9110,8805,0.9999,9201,8806,304800.0,9001,8807,0.0,9001,,,,,,
-17704,MTM zone 4,9807,8801,0.0,9110,8802,-61.3,9110,8805,0.9999,9201,8806,304800.0,9001,8807,0.0,9001,,,,,,
-17705,MTM zone 5,9807,8801,0.0,9110,8802,-64.3,9110,8805,0.9999,9201,8806,304800.0,9001,8807,0.0,9001,,,,,,
-17706,MTM zone 6,9807,8801,0.0,9110,8802,-67.3,9110,8805,0.9999,9201,8806,304800.0,9001,8807,0.0,9001,,,,,,
-17707,MTM zone 7,9807,8801,0.0,9110,8802,-70.3,9110,8805,0.9999,9201,8806,304800.0,9001,8807,0.0,9001,,,,,,
-17708,MTM zone 8,9807,8801,0.0,9110,8802,-73.3,9110,8805,0.9999,9201,8806,304800.0,9001,8807,0.0,9001,,,,,,
-17709,MTM zone 9,9807,8801,0.0,9110,8802,-76.3,9110,8805,0.9999,9201,8806,304800.0,9001,8807,0.0,9001,,,,,,
-17710,MTM zone 10,9807,8801,0.0,9110,8802,-79.3,9110,8805,0.9999,9201,8806,304800.0,9001,8807,0.0,9001,,,,,,
-17711,MTM zone 11,9807,8801,0.0,9110,8802,-82.3,9110,8805,0.9999,9201,8806,304800.0,9001,8807,0.0,9001,,,,,,
-17712,MTM zone 12,9807,8801,0.0,9102,8802,-81.0,9102,8805,0.9999,9201,8806,304800.0,9001,8807,0.0,9001,,,,,,
-17713,MTM zone 13,9807,8801,0.0,9102,8802,-84.0,9102,8805,0.9999,9201,8806,304800.0,9001,8807,0.0,9001,,,,,,
-17714,MTM zone 14,9807,8801,0.0,9102,8802,-87.0,9102,8805,0.9999,9201,8806,304800.0,9001,8807,0.0,9001,,,,,,
-17715,MTM zone 15,9807,8801,0.0,9102,8802,-90.0,9102,8805,0.9999,9201,8806,304800.0,9001,8807,0.0,9001,,,,,,
-17716,MTM zone 16,9807,8801,0.0,9102,8802,-93.0,9102,8805,0.9999,9201,8806,304800.0,9001,8807,0.0,9001,,,,,,
-17717,MTM zone 17,9807,8801,0.0,9102,8802,-96.0,9102,8805,0.9999,9201,8806,304800.0,9001,8807,0.0,9001,,,,,,
-17794,MTM Nova Scotia zone 4,9807,8801,0.0,9110,8802,-61.3,9110,8805,0.9999,9201,8806,4500000.0,9001,8807,0.0,9001,,,,,,
-17795,MTM Nova Scotia zone 5,9807,8801,0.0,9110,8802,-64.3,9110,8805,0.9999,9201,8806,5500000.0,9001,8807,0.0,9001,,,,,,
-17801,Japan Plane Rectangular CS zone I,9807,8801,33.0,9110,8802,129.3,9110,8805,0.9999,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-17802,Japan Plane Rectangular CS zone II,9807,8801,33.0,9110,8802,131.0,9110,8805,0.9999,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-17803,Japan Plane Rectangular CS zone III,9807,8801,36.0,9110,8802,132.1,9110,8805,0.9999,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-17804,Japan Plane Rectangular CS zone IV,9807,8801,33.0,9110,8802,133.3,9110,8805,0.9999,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-17805,Japan Plane Rectangular CS zone V,9807,8801,36.0,9110,8802,134.2,9110,8805,0.9999,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-17806,Japan Plane Rectangular CS zone VI,9807,8801,36.0,9110,8802,136.0,9110,8805,0.9999,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-17807,Japan Plane Rectangular CS zone VII,9807,8801,36.0,9110,8802,137.1,9110,8805,0.9999,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-17808,Japan Plane Rectangular CS zone VIII,9807,8801,36.0,9110,8802,138.3,9110,8805,0.9999,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-17809,Japan Plane Rectangular CS zone IX,9807,8801,36.0,9110,8802,139.5,9110,8805,0.9999,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-17810,Japan Plane Rectangular CS zone X,9807,8801,40.0,9110,8802,140.5,9110,8805,0.9999,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-17811,Japan Plane Rectangular CS zone XI,9807,8801,44.0,9110,8802,140.15,9110,8805,0.9999,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-17812,Japan Plane Rectangular CS zone XII,9807,8801,44.0,9110,8802,142.15,9110,8805,0.9999,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-17813,Japan Plane Rectangular CS zone XIII,9807,8801,44.0,9110,8802,144.15,9110,8805,0.9999,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-17814,Japan Plane Rectangular CS zone XIV,9807,8801,26.0,9110,8802,142.0,9110,8805,0.9999,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-17815,Japan Plane Rectangular CS zone XV,9807,8801,26.0,9110,8802,127.3,9110,8805,0.9999,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-17816,Japan Plane Rectangular CS zone XVI,9807,8801,26.0,9110,8802,124.0,9110,8805,0.9999,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-17817,Japan Plane Rectangular CS zone XVII,9807,8801,26.0,9110,8802,131.0,9110,8805,0.9999,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-17818,Japan Plane Rectangular CS zone XVIII,9807,8801,20.0,9110,8802,136.0,9110,8805,0.9999,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-17819,Japan Plane Rectangular CS zone XIX,9807,8801,26.0,9110,8802,154.0,9110,8805,0.9999,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-17901,Mount Eden Circuit,9807,8801,-36.5247515,9110,8802,174.45516217,9110,8805,0.9999,9201,8806,300000.0,9001,8807,700000.0,9001,,,,,,
-17902,Bay of Plenty Circuit,9807,8801,-37.45404993,9110,8802,176.27583101,9110,8805,1.0,9201,8806,300000.0,9001,8807,700000.0,9001,,,,,,
-17903,Poverty Bay Circuit,9807,8801,-38.372893,9110,8802,177.53082906,9110,8805,1.0,9201,8806,300000.0,9001,8807,700000.0,9001,,,,,,
-17904,Hawkes Bay Circuit,9807,8801,-39.39033455,9110,8802,176.40252499,9110,8805,1.0,9201,8806,300000.0,9001,8807,700000.0,9001,,,,,,
-17905,Taranaki Circuit,9807,8801,-39.08087299,9110,8802,174.13408423,9110,8805,1.0,9201,8806,300000.0,9001,8807,700000.0,9001,,,,,,
-17906,Tuhirangi Circuit,9807,8801,-39.30448934,9110,8802,175.38241325,9110,8805,1.0,9201,8806,300000.0,9001,8807,700000.0,9001,,,,,,
-17907,Wanganui Circuit,9807,8801,-40.14310097,9110,8802,175.29171586,9110,8805,1.0,9201,8806,300000.0,9001,8807,700000.0,9001,,,,,,
-17908,Wairarapa Circuit,9807,8801,-40.55319175,9110,8802,175.38504588,9110,8805,1.0,9201,8806,300000.0,9001,8807,700000.0,9001,,,,,,
-17909,Wellington Circuit,9807,8801,-41.18047507,9110,8802,174.46358432,9110,8805,1.0,9201,8806,300000.0,9001,8807,700000.0,9001,,,,,,
-17910,Collingwood Circuit,9807,8801,-40.42531326,9110,8802,172.40193674,9110,8805,1.0,9201,8806,300000.0,9001,8807,700000.0,9001,,,,,,
-17911,Nelson Circuit,9807,8801,-41.1628361,9110,8802,173.17575405,9110,8805,1.0,9201,8806,300000.0,9001,8807,700000.0,9001,,,,,,
-17912,Karamea Circuit,9807,8801,-41.17236815,9110,8802,172.06325015,9110,8805,1.0,9201,8806,300000.0,9001,8807,700000.0,9001,,,,,,
-17913,Buller Circuit,9807,8801,-41.48388903,9110,8802,171.34525362,9110,8805,1.0,9201,8806,300000.0,9001,8807,700000.0,9001,,,,,,
-17914,Grey Circuit,9807,8801,-42.20012994,9110,8802,171.32591767,9110,8805,1.0,9201,8806,300000.0,9001,8807,700000.0,9001,,,,,,
-17915,Amuri Circuit,9807,8801,-42.41208197,9110,8802,173.00364802,9110,8805,1.0,9201,8806,300000.0,9001,8807,700000.0,9001,,,,,,
-17916,Marlborough Circuit,9807,8801,-41.3240152,9110,8802,173.48074668,9110,8805,1.0,9201,8806,300000.0,9001,8807,700000.0,9001,,,,,,
-17917,Hokitika Circuit,9807,8801,-42.53107605,9110,8802,170.58479766,9110,8805,1.0,9201,8806,300000.0,9001,8807,700000.0,9001,,,,,,
-17918,Okarito Circuit,9807,8801,-43.06364613,9110,8802,170.1539333,9110,8805,1.0,9201,8806,300000.0,9001,8807,700000.0,9001,,,,,,
-17919,Jacksons Bay Circuit,9807,8801,-43.58400904,9110,8802,168.36225612,9110,8805,1.0,9201,8806,300000.0,9001,8807,700000.0,9001,,,,,,
-17920,Mount Pleasant Circuit,9807,8801,-43.35262953,9110,8802,172.43378969,9110,8805,1.0,9201,8806,300000.0,9001,8807,700000.0,9001,,,,,,
-17921,Gawler Circuit,9807,8801,-43.44553616,9110,8802,171.21386945,9110,8805,1.0,9201,8806,300000.0,9001,8807,700000.0,9001,,,,,,
-17922,Timaru Circuit,9807,8801,-44.24079933,9110,8802,171.0326103,9110,8805,1.0,9201,8806,300000.0,9001,8807,700000.0,9001,,,,,,
-17923,Lindis Peak Circuit,9807,8801,-44.44069647,9110,8802,169.28039183,9110,8805,1.0,9201,8806,300000.0,9001,8807,700000.0,9001,,,,,,
-17924,Mount Nicholas Circuit,9807,8801,-45.07584493,9110,8802,168.23551083,9110,8805,1.0,9201,8806,300000.0,9001,8807,700000.0,9001,,,,,,
-17925,Mount York Circuit,9807,8801,-45.33494142,9110,8802,167.44199024,9110,8805,1.0,9201,8806,300000.0,9001,8807,700000.0,9001,,,,,,
-17926,Observation Point Circuit,9807,8801,-45.48583078,9110,8802,170.37429426,9110,8805,1.0,9201,8806,300000.0,9001,8807,700000.0,9001,,,,,,
-17927,North Taieri Circuit,9807,8801,-45.51414481,9110,8802,170.16573208,9110,8805,0.99996,9201,8806,300000.0,9001,8807,700000.0,9001,,,,,,
-17928,Bluff Circuit,9807,8801,-46.36000346,9110,8802,168.20343392,9110,8805,1.0,9201,8806,300002.66,9001,8807,699999.58,9001,,,,,,
-17931,Mount Eden Circuit 2000,9807,8801,-36.5247,9110,8802,174.4551,9110,8805,0.9999,9201,8806,400000.0,9001,8807,800000.0,9001,,,,,,
-17932,Bay of Plenty Circuit 2000,9807,8801,-37.454,9110,8802,176.2758,9110,8805,1.0,9201,8806,400000.0,9001,8807,800000.0,9001,,,,,,
-17933,Poverty Bay Circuit 2000,9807,8801,-38.3728,9110,8802,177.5308,9110,8805,1.0,9201,8806,400000.0,9001,8807,800000.0,9001,,,,,,
-17934,Hawkes Bay Circuit 2000,9807,8801,-39.3903,9110,8802,176.4025,9110,8805,1.0,9201,8806,400000.0,9001,8807,800000.0,9001,,,,,,
-17935,Taranaki Circuit 2000,9807,8801,-39.0808,9110,8802,174.134,9110,8805,1.0,9201,8806,400000.0,9001,8807,800000.0,9001,,,,,,
-17936,Tuhirangi Circuit 2000,9807,8801,-39.3044,9110,8802,175.3824,9110,8805,1.0,9201,8806,400000.0,9001,8807,800000.0,9001,,,,,,
-17937,Wanganui Circuit 2000,9807,8801,-40.1431,9110,8802,175.2917,9110,8805,1.0,9201,8806,400000.0,9001,8807,800000.0,9001,,,,,,
-17938,Wairarapa Circuit 2000,9807,8801,-40.5531,9110,8802,175.385,9110,8805,1.0,9201,8806,400000.0,9001,8807,800000.0,9001,,,,,,
-17939,Wellington Circuit 2000,9807,8801,-41.1804,9110,8802,174.4635,9110,8805,1.0,9201,8806,400000.0,9001,8807,800000.0,9001,,,,,,
-17940,Collingwood Circuit 2000,9807,8801,-40.4253,9110,8802,172.4019,9110,8805,1.0,9201,8806,400000.0,9001,8807,800000.0,9001,,,,,,
-17941,Nelson Circuit 2000,9807,8801,-41.1628,9110,8802,173.1757,9110,8805,1.0,9201,8806,400000.0,9001,8807,800000.0,9001,,,,,,
-17942,Karamea Circuit 2000,9807,8801,-41.1723,9110,8802,172.0632,9110,8805,1.0,9201,8806,400000.0,9001,8807,800000.0,9001,,,,,,
-17943,Buller Circuit 2000,9807,8801,-41.4838,9110,8802,171.3452,9110,8805,1.0,9201,8806,400000.0,9001,8807,800000.0,9001,,,,,,
-17944,Grey Circuit 2000,9807,8801,-42.2001,9110,8802,171.3259,9110,8805,1.0,9201,8806,400000.0,9001,8807,800000.0,9001,,,,,,
-17945,Amuri Circuit 2000,9807,8801,-42.412,9110,8802,173.0036,9110,8805,1.0,9201,8806,400000.0,9001,8807,800000.0,9001,,,,,,
-17946,Marlborough Circuit 2000,9807,8801,-41.324,9110,8802,173.4807,9110,8805,1.0,9201,8806,400000.0,9001,8807,800000.0,9001,,,,,,
-17947,Hokitika Circuit 2000,9807,8801,-42.531,9110,8802,170.5847,9110,8805,1.0,9201,8806,400000.0,9001,8807,800000.0,9001,,,,,,
-17948,Okarito Circuit 2000,9807,8801,-43.0636,9110,8802,170.1539,9110,8805,1.0,9201,8806,400000.0,9001,8807,800000.0,9001,,,,,,
-17949,Jacksons Bay Circuit 2000,9807,8801,-43.584,9110,8802,168.3622,9110,8805,1.0,9201,8806,400000.0,9001,8807,800000.0,9001,,,,,,
-17950,Mount Pleasant Circuit 2000,9807,8801,-43.3526,9110,8802,172.4337,9110,8805,1.0,9201,8806,400000.0,9001,8807,800000.0,9001,,,,,,
-17951,Gawler Circuit 2000,9807,8801,-43.4455,9110,8802,171.2138,9110,8805,1.0,9201,8806,400000.0,9001,8807,800000.0,9001,,,,,,
-17952,Timaru Circuit 2000,9807,8801,-44.2407,9110,8802,171.0326,9110,8805,1.0,9201,8806,400000.0,9001,8807,800000.0,9001,,,,,,
-17953,Lindis Peak Circuit 2000,9807,8801,-44.4406,9110,8802,169.2803,9110,8805,1.0,9201,8806,400000.0,9001,8807,800000.0,9001,,,,,,
-17954,Mount Nicholas Circuit 2000,9807,8801,-45.0758,9110,8802,168.2355,9110,8805,1.0,9201,8806,400000.0,9001,8807,800000.0,9001,,,,,,
-17955,Mount York Circuit 2000,9807,8801,-45.3349,9110,8802,167.4419,9110,8805,1.0,9201,8806,400000.0,9001,8807,800000.0,9001,,,,,,
-17956,Observation Point Circuit 2000,9807,8801,-45.4858,9110,8802,170.3742,9110,8805,1.0,9201,8806,400000.0,9001,8807,800000.0,9001,,,,,,
-17957,North Taieri Circuit 2000,9807,8801,-45.5141,9110,8802,170.1657,9110,8805,0.99996,9201,8806,400000.0,9001,8807,800000.0,9001,,,,,,
-17958,Bluff Circuit 2000,9807,8801,-46.36,9110,8802,168.2034,9110,8805,1.0,9201,8806,400000.0,9001,8807,800000.0,9001,,,,,,
-18011,"Nord Algerie (ancienne)",9801,8801,40.0,9105,8802,3.0,9105,8805,0.999625544,9201,8806,500000.0,9001,8807,300000.0,9001,,,,,,
-18012,"Sud Algerie (ancienne)",9801,8801,37.0,9105,8802,3.0,9105,8805,0.999625769,9201,8806,500000.0,9001,8807,300000.0,9001,,,,,,
-18021,Nord Algerie,9801,8801,40.0,9105,8802,3.0,9105,8805,0.999625544,9201,8806,500135.0,9001,8807,300090.0,9001,,,,,,
-18022,Sud Algerie,9801,8801,37.0,9105,8802,3.0,9105,8805,0.999625769,9201,8806,500135.0,9001,8807,300090.0,9001,,,,,,
-18031,Argentina zone 1,9807,8801,-90.0,9102,8802,-72.0,9102,8805,1.0,9201,8806,1500000.0,9001,8807,0.0,9001,,,,,,
-18032,Argentina zone 2,9807,8801,-90.0,9102,8802,-69.0,9102,8805,1.0,9201,8806,2500000.0,9001,8807,0.0,9001,,,,,,
-18033,Argentina zone 3,9807,8801,-90.0,9102,8802,-66.0,9102,8805,1.0,9201,8806,3500000.0,9001,8807,0.0,9001,,,,,,
-18034,Argentina zone 4,9807,8801,-90.0,9102,8802,-63.0,9102,8805,1.0,9201,8806,4500000.0,9001,8807,0.0,9001,,,,,,
-18035,Argentina zone 5,9807,8801,-90.0,9102,8802,-60.0,9102,8805,1.0,9201,8806,5500000.0,9001,8807,0.0,9001,,,,,,
-18036,Argentina zone 6,9807,8801,-90.0,9102,8802,-57.0,9102,8805,1.0,9201,8806,6500000.0,9001,8807,0.0,9001,,,,,,
-18037,Argentina zone 7,9807,8801,-90.0,9102,8802,-54.0,9102,8805,1.0,9201,8806,7500000.0,9001,8807,0.0,9001,,,,,,
-18041,Austria West Zone,9807,8801,0.0,9102,8802,28.0,9102,8805,1.0,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-18042,Austria Central Zone,9807,8801,0.0,9102,8802,31.0,9102,8805,1.0,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-18043,Austria East Zone,9807,8801,0.0,9102,8802,34.0,9102,8805,1.0,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-18044,Austria M28,9807,8801,0.0,9110,8802,10.2,9110,8805,1.0,9201,8806,150000.0,9001,8807,0.0,9001,,,,,,
-18045,Austria M31,9807,8801,0.0,9110,8802,13.2,9110,8805,1.0,9201,8806,450000.0,9001,8807,0.0,9001,,,,,,
-18046,Austria M34,9807,8801,0.0,9110,8802,16.2,9110,8805,1.0,9201,8806,750000.0,9001,8807,0.0,9001,,,,,,
-18051,Colombia West zone,9807,8801,4.355657,9110,8802,-77.04513,9110,8805,1.0,9201,8806,1000000.0,9001,8807,1000000.0,9001,,,,,,
-18052,Colombia Bogota zone,9807,8801,4.355657,9110,8802,-74.04513,9110,8805,1.0,9201,8806,1000000.0,9001,8807,1000000.0,9001,,,,,,
-18053,Colombia East Central zone,9807,8801,4.355657,9110,8802,-71.04513,9110,8805,1.0,9201,8806,1000000.0,9001,8807,1000000.0,9001,,,,,,
-18054,Colombia East zone,9807,8801,4.355657,9110,8802,-68.04513,9110,8805,1.0,9201,8806,1000000.0,9001,8807,1000000.0,9001,,,,,,
-18061,Cuba Norte,9801,8801,22.21,9110,8802,-81.0,9110,8805,0.99993602,9201,8806,500000.0,9001,8807,280296.016,9001,,,,,,
-18062,Cuba Sur,9801,8801,20.43,9110,8802,-76.5,9110,8805,0.99994848,9201,8806,500000.0,9001,8807,229126.939,9001,,,,,,
-18071,Egypt Blue Belt,9807,8801,30.0,9102,8802,35.0,9102,8805,1.0,9201,8806,300000.0,9001,8807,1100000.0,9001,,,,,,
-18072,Egypt Red Belt,9807,8801,30.0,9102,8802,31.0,9102,8805,1.0,9201,8806,615000.0,9001,8807,810000.0,9001,,,,,,
-18073,Egypt Purple Belt,9807,8801,30.0,9102,8802,27.0,9102,8805,1.0,9201,8806,700000.0,9001,8807,200000.0,9001,,,,,,
-18074,Egypt Extended Purple Belt,9807,8801,30.0,9102,8802,27.0,9102,8805,1.0,9201,8806,700000.0,9001,8807,1200000.0,9001,,,,,,
-18081,Lambert zone I,9801,8801,55.0,9105,8802,0.0,9105,8805,0.999877341,9201,8806,600000.0,9001,8807,1200000.0,9001,,,,,,
-18082,Lambert zone II,9801,8801,52.0,9105,8802,0.0,9105,8805,0.99987742,9201,8806,600000.0,9001,8807,2200000.0,9001,,,,,,
-18083,Lambert zone III,9801,8801,49.0,9105,8802,0.0,9105,8805,0.999877499,9201,8806,600000.0,9001,8807,3200000.0,9001,,,,,,
-18084,Lambert zone IV,9801,8801,46.85,9105,8802,0.0,9105,8805,0.99994471,9201,8806,234.358,9001,8807,4185861.369,9001,,,,,,
-18085,Lambert-93,9802,8821,46.3,9110,8822,3.0,9110,8823,49.0,9110,8824,44.0,9110,8826,700000.0,9001,8827,6600000.0,9001,,,
-18086,France EuroLambert,9801,8801,46.48,9110,8802,2.2014025,9110,8805,0.99987742,9201,8806,600000.0,9001,8807,2200000.0,9001,,,,,,
-18091,Lambert Nord France,9801,8801,55.0,9105,8802,0.0,9105,8805,0.999877341,9201,8806,600000.0,9001,8807,200000.0,9001,,,,,,
-18092,Lambert Centre France,9801,8801,52.0,9105,8802,0.0,9105,8805,0.99987742,9201,8806,600000.0,9001,8807,200000.0,9001,,,,,,
-18093,Lambert Sud France,9801,8801,49.0,9105,8802,0.0,9105,8805,0.999877499,9201,8806,600000.0,9001,8807,200000.0,9001,,,,,,
-18094,Lambert Corse,9801,8801,46.85,9105,8802,0.0,9105,8805,0.99994471,9201,8806,234.358,9001,8807,185861.369,9001,,,,,,
-18110,India zone 0,9801,8801,39.3,9110,8802,68.0,9110,8805,0.99846154,9201,8806,2355500.0,9084,8807,2590000.0,9084,,,,,,
-18111,India zone I,9801,8801,32.3,9110,8802,68.0,9110,8805,0.99878641,9201,8806,3000000.0,9084,8807,1000000.0,9084,,,,,,
-18112,India zone IIa,9801,8801,26.0,9102,8802,74.0,9102,8805,0.99878641,9201,8806,3000000.0,9084,8807,1000000.0,9084,,,,,,
-18113,India zone IIb,9801,8801,26.0,9102,8802,90.0,9102,8805,0.99878641,9201,8806,3000000.0,9084,8807,1000000.0,9084,,,,,,
-18114,India zone IIIa,9801,8801,19.0,9102,8802,80.0,9102,8805,0.99878641,9201,8806,3000000.0,9084,8807,1000000.0,9084,,,,,,
-18115,India zone IIIb,9801,8801,19.0,9102,8802,100.0,9102,8805,0.99878641,9201,8806,3000000.0,9084,8807,1000000.0,9084,,,,,,
-18116,India zone IVa,9801,8801,12.0,9102,8802,80.0,9102,8805,0.99878641,9201,8806,3000000.0,9084,8807,1000000.0,9084,,,,,,
-18117,India zone IVb,9801,8801,12.0,9102,8802,100.0,9102,8805,0.99878641,9201,8806,3000000.0,9084,8807,1000000.0,9084,,,,,,
-18121,Italy zone 1,9807,8801,0.0,9102,8802,9.0,9102,8805,0.9996,9201,8806,1500000.0,9001,8807,0.0,9001,,,,,,
-18122,Italy zone 2,9807,8801,0.0,9102,8802,15.0,9102,8805,0.9996,9201,8806,2520000.0,9001,8807,0.0,9001,,,,,,
-18131,Nord Maroc,9801,8801,37.0,9105,8802,-6.0,9105,8805,0.999625769,9201,8806,500000.0,9001,8807,300000.0,9001,,,,,,
-18132,Sud Maroc,9801,8801,33.0,9105,8802,-6.0,9105,8805,0.999615596,9201,8806,500000.0,9001,8807,300000.0,9001,,,,,,
-18133,Sahara,9801,8801,29.0,9105,8802,-6.0,9105,8805,0.9996,9201,8806,1200000.0,9001,8807,400000.0,9001,,,,,,
-18141,New Zealand North Island National Grid,9807,8801,-39.0,9110,8802,175.3,9110,8805,1.0,9201,8806,300000.0,9040,8807,400000.0,9040,,,,,,
-18142,New Zealand South Island National Grid,9807,8801,-44.0,9110,8802,171.3,9110,8805,1.0,9201,8806,500000.0,9040,8807,500000.0,9040,,,,,,
-18151,Nigeria West Belt,9807,8801,4.0,9110,8802,4.3,9110,8805,0.99975,9201,8806,230738.26,9001,8807,0.0,9001,,,,,,
-18152,Nigeria Mid Belt,9807,8801,4.0,9110,8802,8.3,9110,8805,0.99975,9201,8806,670553.98,9001,8807,0.0,9001,,,,,,
-18153,Nigeria East Belt,9807,8801,4.0,9110,8802,12.3,9110,8805,0.99975,9201,8806,1110369.7,9001,8807,0.0,9001,,,,,,
-18161,Peru west zone,9807,8801,-6.0,9110,8802,-80.3,9110,8805,0.99983008,9201,8806,222000.0,9001,8807,1426834.743,9001,,,,,,
-18162,Peru central zone,9807,8801,-9.3,9110,8802,-76.0,9110,8805,0.99932994,9201,8806,720000.0,9001,8807,1039979.159,9001,,,,,,
-18163,Peru east zone,9807,8801,-9.3,9110,8802,-70.3,9110,8805,0.99952992,9201,8806,1324000.0,9001,8807,1040084.558,9001,,,,,,
-18171,Philippines zone I,9807,8801,0.0,9102,8802,117.0,9102,8805,0.99995,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-18172,Philippines zone II,9807,8801,0.0,9102,8802,119.0,9102,8805,0.99995,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-18173,Philippines zone III,9807,8801,0.0,9102,8802,121.0,9102,8805,0.99995,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-18174,Philippines zone IV,9807,8801,0.0,9102,8802,123.0,9102,8805,0.99995,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-18175,Philippines zone V,9807,8801,0.0,9102,8802,125.0,9102,8805,0.99995,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-18181,Nord Tunisie,9801,8801,40.0,9105,8802,11.0,9105,8805,0.999625544,9201,8806,500000.0,9001,8807,300000.0,9001,,,,,,
-18182,Sud Tunisie,9801,8801,37.0,9105,8802,11.0,9105,8805,0.999625769,9201,8806,500000.0,9001,8807,300000.0,9001,,,,,,
-18191,Finland zone 1,9807,8801,0.0,9102,8802,21.0,9102,8805,1.0,9201,8806,1500000.0,9001,8807,0.0,9001,,,,,,
-18192,Finland zone 2,9807,8801,0.0,9102,8802,24.0,9102,8805,1.0,9201,8806,2500000.0,9001,8807,0.0,9001,,,,,,
-18193,Finland Uniform Coordinate System,9807,8801,0.0,9102,8802,27.0,9102,8805,1.0,9201,8806,3500000.0,9001,8807,0.0,9001,,,,,,
-18194,Finland zone 4,9807,8801,0.0,9102,8802,30.0,9102,8805,1.0,9201,8806,4500000.0,9001,8807,0.0,9001,,,,,,
-18201,Palestine Grid,9806,8801,31.4402749,9110,8802,35.124349,9110,8806,170251.555,9001,8807,126867.909,9001,,,,,,,,,
-18202,Palestine Belt,9807,8801,31.4402749,9110,8802,35.124349,9110,8805,1.0,9201,8806,170251.555,9001,8807,1126867.909,9001,,,,,,
-18203,Israeli CS,9806,8801,31.4402749,9110,8802,35.124349,9110,8806,170251.555,9001,8807,1126867.909,9001,,,,,,,,,
-18204,Israeli TM,9807,8801,31.4403817,9110,8802,35.1216261,9110,8805,1.0000067,9201,8806,219529.584,9001,8807,626907.39,9001,,,,,,
-18211,Guatemala Norte,9801,8801,16.49,9110,8802,-90.2,9110,8805,0.99992226,9201,8806,500000.0,9001,8807,292209.579,9001,,,,,,
-18212,Guatemala Sur,9801,8801,14.54,9110,8802,-90.2,9110,8805,0.99989906,9201,8806,500000.0,9001,8807,325992.681,9001,,,,,,
-18221,NGO zone I,9807,8801,58.0,9110,8802,-4.4,9110,8805,1.0,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-18222,NGO zone II,9807,8801,58.0,9110,8802,-2.2,9110,8805,1.0,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-18223,NGO zone III,9807,8801,58.0,9110,8802,0.0,9110,8805,1.0,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-18224,NGO zone IV,9807,8801,58.0,9110,8802,2.3,9110,8805,1.0,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-18225,NGO zone V,9807,8801,58.0,9110,8802,6.1,9110,8805,1.0,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-18226,NGO zone VI,9807,8801,58.0,9110,8802,10.1,9110,8805,1.0,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-18227,NGO zone VII,9807,8801,58.0,9110,8802,14.1,9110,8805,1.0,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-18228,NGO zone VIII,9807,8801,58.0,9110,8802,18.2,9110,8805,1.0,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-18231,"India zone I (1975 metres)",9801,8801,32.3,9110,8802,68.0,9110,8805,0.99878641,9201,8806,2743195.5,9001,8807,914398.5,9001,,,,,,
-18232,"India zone IIa (1975 metres)",9801,8801,26.0,9102,8802,74.0,9102,8805,0.99878641,9201,8806,2743195.5,9001,8807,914398.5,9001,,,,,,
-18233,"India zone IIIa (1975 metres)",9801,8801,19.0,9102,8802,80.0,9102,8805,0.99878641,9201,8806,2743195.5,9001,8807,914398.5,9001,,,,,,
-18234,"India zone IVa (1975 metres)",9801,8801,12.0,9102,8802,80.0,9102,8805,0.99878641,9201,8806,2743195.5,9001,8807,914398.5,9001,,,,,,
-18235,"India zone IIb (1975 metres)",9801,8801,26.0,9102,8802,90.0,9102,8805,0.99878641,9201,8806,2743195.5,9001,8807,914398.5,9001,,,,,,
-18236,"India zone I (1962 metres)",9801,8801,32.3,9110,8802,68.0,9110,8805,0.99878641,9201,8806,2743196.4,9001,8807,914398.8,9001,,,,,,
-18237,"India zone IIa (1962 metres)",9801,8801,26.0,9102,8802,74.0,9102,8805,0.99878641,9201,8806,2743196.4,9001,8807,914398.8,9001,,,,,,
-18238,"India zone IIb (1937 metres)",9801,8801,26.0,9102,8802,90.0,9102,8805,0.99878641,9201,8806,2743185.69,9001,8807,914395.23,9001,,,,,,
-18240,Libya zone 5,9807,8801,0.0,9102,8802,9.0,9102,8805,0.9999,9201,8806,200000.0,9001,8807,0.0,9001,,,,,,
-18241,Libya zone 6,9807,8801,0.0,9102,8802,11.0,9102,8805,0.9999,9201,8806,200000.0,9001,8807,0.0,9001,,,,,,
-18242,Libya zone 7,9807,8801,0.0,9102,8802,13.0,9102,8805,0.9999,9201,8806,200000.0,9001,8807,0.0,9001,,,,,,
-18243,Libya zone 8,9807,8801,0.0,9102,8802,15.0,9102,8805,0.9999,9201,8806,200000.0,9001,8807,0.0,9001,,,,,,
-18244,Libya zone 9,9807,8801,0.0,9102,8802,17.0,9102,8805,0.9999,9201,8806,200000.0,9001,8807,0.0,9001,,,,,,
-18245,Libya zone 10,9807,8801,0.0,9102,8802,19.0,9102,8805,0.9999,9201,8806,200000.0,9001,8807,0.0,9001,,,,,,
-18246,Libya zone 11,9807,8801,0.0,9102,8802,21.0,9102,8805,0.9999,9201,8806,200000.0,9001,8807,0.0,9001,,,,,,
-18247,Libya zone 12,9807,8801,0.0,9102,8802,23.0,9102,8805,0.9999,9201,8806,200000.0,9001,8807,0.0,9001,,,,,,
-18248,Libya zone 13,9807,8801,0.0,9102,8802,25.0,9102,8805,0.9999,9201,8806,200000.0,9001,8807,0.0,9001,,,,,,
-18251,Korea East Belt,9807,8801,38.0,9102,8802,129.0,9102,8805,1.0,9201,8806,200000.0,9001,8807,500000.0,9001,,,,,,
-18252,Korea Central Belt,9807,8801,38.0,9102,8802,127.0,9102,8805,1.0,9201,8806,200000.0,9001,8807,500000.0,9001,,,,,,
-18253,Korea West Belt,9807,8801,38.0,9102,8802,125.0,9102,8805,1.0,9201,8806,200000.0,9001,8807,500000.0,9001,,,,,,
-18260,"Maracaibo Grid (M1)",9801,8801,10.1,9110,8802,-71.3620224,9110,8805,1.0,9201,8806,0.0,9001,8807,-52684.972,9001,,,,,,
-18261,Maracaibo Grid,9801,8801,10.1,9110,8802,-71.3620224,9110,8805,1.0,9201,8806,200000.0,9001,8807,147315.028,9001,,,,,,
-18262,"Maracaibo Grid (M3)",9801,8801,10.1,9110,8802,-71.3620224,9110,8805,1.0,9201,8806,500000.0,9001,8807,447315.028,9001,,,,,,
-18263,Maracaibo La Rosa Grid,9801,8801,10.1,9110,8802,-71.3620224,9110,8805,1.0,9201,8806,-17044.0,9001,8807,-23139.97,9001,,,,,,
-18275,Balkans zone 5,9807,8801,0.0,9102,8802,15.0,9102,8805,0.9999,9201,8806,5500000.0,9001,8807,0.0,9001,,,,,,
-18276,Balkans zone 6,9807,8801,0.0,9102,8802,18.0,9102,8805,0.9999,9201,8806,6500000.0,9001,8807,0.0,9001,,,,,,
-18277,Balkans zone 7,9807,8801,0.0,9102,8802,21.0,9102,8805,0.9999,9201,8806,7500000.0,9001,8807,0.0,9001,,,,,,
-18278,Balkans zone 8,9807,8801,0.0,9102,8802,24.0,9102,8805,0.9999,9201,8806,8500000.0,9001,8807,0.0,9001,,,,,,
-18281,Poland zone I,9809,8801,50.373,9110,8802,21.05,9110,8805,0.9998,9201,8806,4637000.0,9001,8807,5647000.0,9001,,,,,,
-18282,Poland zone II,9809,8801,53.0007,9110,8802,21.301,9110,8805,0.9998,9201,8806,4603000.0,9001,8807,5806000.0,9001,,,,,,
-18283,Poland zone III,9809,8801,53.35,9110,8802,17.003,9110,8805,0.9998,9201,8806,3501000.0,9001,8807,5999000.0,9001,,,,,,
-18284,Poland zone IV,9809,8801,51.4015,9110,8802,16.402,9110,8805,0.9998,9201,8806,3703000.0,9001,8807,5627000.0,9001,,,,,,
-18285,Poland zone V,9807,8801,0.0,9110,8802,18.573,9110,8805,0.999983,9201,8806,237000.0,9001,8807,-4700000.0,9001,,,,,,
-18300,Poland CS92,9807,8801,0.0,9102,8802,19.0,9102,8805,0.9993,9201,8806,500000.0,9001,8807,-5300000.0,9001,,,,,,
-18305,Poland CS2000 zone 5,9807,8801,0.0,9102,8802,15.0,9102,8805,0.999923,9201,8806,5500000.0,9001,8807,0.0,9001,,,,,,
-18306,Poland CS2000 zone 6,9807,8801,0.0,9102,8802,18.0,9102,8805,0.999923,9201,8806,6500000.0,9001,8807,0.0,9001,,,,,,
-18307,Poland CS2000 zone 7,9807,8801,0.0,9102,8802,21.0,9102,8805,0.999923,9201,8806,7500000.0,9001,8807,0.0,9001,,,,,,
-18308,Poland CS2000 zone 8,9807,8801,0.0,9102,8802,24.0,9102,8805,0.999923,9201,8806,8500000.0,9001,8807,0.0,9001,,,,,,
-18401,Kp2000 Jylland og Fyn,9807,8801,0.0,9110,8802,9.3,9110,8805,0.99995,9201,8806,200000.0,9001,8807,0.0,9001,,,,,,
-18402,Kp2000 Sjaelland,9807,8801,0.0,9102,8802,12.0,9102,8805,0.99995,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-18403,Kp2000 Bornholm,9807,8801,0.0,9102,8802,15.0,9102,8805,1.0,9201,8806,900000.0,9001,8807,0.0,9001,,,,,,
-18411,French West Africa Senegal zone,9807,8801,0.0,9110,8802,-13.3,9110,8805,0.999,9201,8806,1000000.0,9001,8807,1000000.0,9001,,,,,,
-18412,French West Africa Ivory Coast zone,9807,8801,0.0,9110,8802,-6.3,9110,8805,0.999,9201,8806,1000000.0,9001,8807,1000000.0,9001,,,,,,
-18413,French West Africa Dahomey zone,9807,8801,0.0,9110,8802,0.3,9110,8805,0.999,9201,8806,1000000.0,9001,8807,1000000.0,9001,,,,,,
-18414,French West Africa Niger zone,9807,8801,0.0,9110,8802,7.3,9110,8805,0.999,9201,8806,1000000.0,9001,8807,1000000.0,9001,,,,,,
-18415,French Equatorial Africa west zone,9807,8801,0.0,9110,8802,10.3,9110,8805,0.999,9201,8806,1000000.0,9001,8807,1000000.0,9001,,,,,,
-18416,French Equatorial Africa central zone,9807,8801,0.0,9110,8802,17.4,9110,8805,0.999,9201,8806,1000000.0,9001,8807,1000000.0,9001,,,,,,
-18417,French Equatorial Africa east zone,9807,8801,0.0,9110,8802,24.3,9110,8805,0.999,9201,8806,1000000.0,9001,8807,1000000.0,9001,,,,,,
-18421,Greenland zone 1 east,9826,8801,82.3,9110,8802,-40.0,9110,8805,1.0,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-18422,Greenland zone 2 east,9826,8801,79.3,9110,8802,-24.0,9110,8805,1.0,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-18423,Greenland zone 3 east,9826,8801,76.3,9110,8802,-20.0,9110,8805,1.0,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-18424,Greenland zone 4 east,9826,8801,73.3,9110,8802,-24.0,9110,8805,1.0,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-18425,Greenland zone 5 east,9826,8801,70.3,9110,8802,-24.0,9110,8805,1.0,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-18426,Greenland zone 6 east,9826,8801,67.3,9110,8802,-32.0,9110,8805,1.0,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-18427,Greenland zone 7 east,9826,8801,64.3,9110,8802,-40.0,9110,8805,1.0,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-18428,Greenland zone 8 east,9826,8801,61.3,9110,8802,-48.0,9110,8805,1.0,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-18432,Greenland zone 2 west,9826,8801,79.3,9110,8802,-64.0,9110,8805,1.0,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-18433,Greenland zone 3 west,9826,8801,76.3,9110,8802,-64.0,9110,8805,1.0,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-18434,Greenland zone 4 west,9826,8801,73.3,9110,8802,-52.0,9110,8805,1.0,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-18435,Greenland zone 5 west,9826,8801,70.3,9110,8802,-52.0,9110,8805,1.0,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-18436,Greenland zone 6 west,9826,8801,67.3,9110,8802,-52.0,9110,8805,1.0,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-18437,Greenland zone 7 west,9826,8801,64.3,9110,8802,-52.0,9110,8805,1.0,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-18441,CS63 zone A1,9807,8801,0.07,9110,8802,41.32,9110,8805,1.0,9003,8806,1300000.0,9001,8807,0.0,9001,,,,,,
-18442,CS63 zone A2,9807,8801,0.07,9110,8802,44.32,9110,8805,1.0,9003,8806,2300000.0,9001,8807,0.0,9001,,,,,,
-18443,CS63 zone A3,9807,8801,0.07,9110,8802,47.32,9110,8805,1.0,9201,8806,3300000.0,9001,8807,0.0,9001,,,,,,
-18444,CS63 zone A4,9807,8801,0.07,9110,8802,50.32,9110,8805,1.0,9201,8806,4300000.0,9001,8807,0.0,9001,,,,,,
-18446,CS63 zone K2,9807,8801,0.08,9110,8802,50.46,9110,8805,1.0,9201,8806,2300000.0,9001,8807,0.0,9001,,,,,,
-18447,CS63 zone K3,9807,8801,0.08,9110,8802,53.46,9110,8805,1.0,9201,8806,3300000.0,9001,8807,0.0,9001,,,,,,
-18448,CS63 zone K4,9807,8801,0.08,9110,8802,56.46,9110,8805,1.0,9201,8806,4300000.0,9001,8807,0.0,9001,,,,,,
-19900,Bahrain State Grid,9807,8801,0.0,9102,8802,51.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-19901,Belge Lambert 50,9802,8821,90.0,9110,8822,0.0,9110,8823,49.5,9110,8824,51.1,9110,8826,150000.0,9001,8827,5400000.0,9001,,,
-19902,Belge Lambert 72,9803,8821,90.0,9110,8822,4.2124983,9110,8823,49.5,9110,8824,51.1,9110,8826,150000.01256,9001,8827,5400088.4378,9001,,,
-19903,Nord de Guerre,9801,8801,55.0,9105,8802,6.0,9105,8805,0.99950908,9201,8806,500000.0,9001,8807,300000.0,9001,,,,,,
-19904,Ghana Metre Grid,9807,8801,4.4,9110,8802,-1.0,9110,8805,0.99975,9201,8806,274319.51,9001,8807,0.0,9001,,,,,,
-19905,Netherlands East Indies Equatorial Zone,9804,8801,0.0,9102,8802,110.0,9102,8805,0.997,9201,8806,3900000.0,9001,8807,900000.0,9001,,,,,,
-19906,Iraq zone,9801,8801,32.3,9110,8802,45.0,9110,8805,0.9987864078,9201,8806,1500000.0,9001,8807,1166200.0,9001,,,,,,
-19907,Iraq National Grid,9807,8801,29.0134566,9110,8802,46.3,9110,8805,0.9994,9201,8806,800000.0,9001,8807,0.0,9001,,,,,,
-19908,Irish National Grid,9807,8801,53.3,9110,8802,-8.0,9110,8805,1.000035,9201,8806,200000.0,9001,8807,250000.0,9001,,,,,,
-19909,"Jamaica (Old Grid)",9801,8801,18.0,9102,8802,-77.0,9102,8805,1.0,9201,8806,550000.0,9005,8807,400000.0,9005,,,,,,
-19910,Jamaica National Grid,9801,8801,18.0,9102,8802,-77.0,9102,8805,1.0,9201,8806,250000.0,9001,8807,150000.0,9001,,,,,,
-19911,Laborde Grid,9815,8811,-21.0,9105,8812,49.0,9105,8813,21.0,9105,8814,21.0,9105,8815,0.9995,9201,8816,400000.0,9001,8817,800000.0,9001
-19913,RD Old,9809,8801,52.0922178,9110,8802,5.23155,9110,8805,0.9999079,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-19914,RD New,9809,8801,52.0922178,9110,8802,5.23155,9110,8805,0.9999079,9201,8806,155000.0,9001,8807,463000.0,9001,,,,,,
-19915,Aden Zone,9801,8801,15.0,9102,8802,45.0,9102,8805,0.999365678,9201,8806,1500000.0,9001,8807,1000000.0,9001,,,,,,
-19916,British National Grid,9807,8801,49.0,9102,8802,-2.0,9102,8805,0.999601272,9201,8806,400000.0,9001,8807,-100000.0,9001,,,,,,
-19917,New Zealand Map Grid,9811,8801,-41.0,9102,8802,173.0,9102,8806,2510000.0,9001,8807,6023150.0,9001,,,,,,,,,
-19919,Qatar National Grid,9807,8801,24.27,9110,8802,51.13,9110,8805,0.99999,9201,8806,200000.0,9001,8807,300000.0,9001,,,,,,
-19920,Singapore Grid,9806,8801,1.1715528,9110,8802,103.5110808,9110,8806,30000.0,9001,8807,30000.0,9001,,,,,,,,,
-19921,Spain,9801,8801,40.0,9102,8802,0.0,9102,8805,0.9988085293,9201,8806,600000.0,9001,8807,600000.0,9001,,,,,,
-19922,Swiss New Grid,9815,8811,46.570866,9110,8812,7.26225,9110,8813,90.0,9110,8814,90.0,9110,8815,1.0,9201,8816,600000.0,9001,8817,200000.0,9001
-19923,Swiss Old Grid,9815,8811,46.570866,9110,8812,0.0,9110,8813,90.0,9110,8814,90.0,9110,8815,1.0,9201,8816,0.0,9001,8817,0.0,9001
-19924,Tobago Grid,9806,8801,11.1507843,9110,8802,-60.4109632,9110,8806,187500.0,9039,8807,180000.0,9039,,,,,,,,,
-19925,Trinidad Grid,9806,8801,10.263,9110,8802,-61.2,9110,8806,430000.0,9039,8807,325000.0,9039,,,,,,,,,
-19926,Stereo 70,9809,8801,46.0,9102,8802,25.0,9102,8805,0.99975,9201,8806,500000.0,9001,8807,500000.0,9001,,,,,,
-19927,Stereo 33,9809,8801,45.54,9110,8802,25.23328772,9110,8805,0.9996667,9201,8806,500000.0,9001,8807,500000.0,9001,,,,,,
-19928,Kuwait TM,9807,8801,0.0,9102,8802,48.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-19929,Swedish National Projection,9807,8801,0.0,9110,8802,15.48298,9110,8805,1.0,9201,8806,1500000.0,9001,8807,0.0,9001,,,,,,
-19930,Greek Grid,9807,8801,0.0,9102,8802,24.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-19931,Egyseges Orszagos Vetuleti,9815,8811,47.08398174,9110,8812,19.02548584,9110,8813,90.0,9110,8814,90.0,9110,8815,0.99993,9201,8816,650000.0,9001,8817,200000.0,9001
-19933,"Prince Edward Island Stereographic (ATS77)",9809,8801,47.15,9110,8802,-63.0,9110,8805,0.999912,9201,8806,700000.0,9001,8807,400000.0,9001,,,,,,
-19934,Lithuania 1994,9807,8801,0.0,9102,8802,24.0,9102,8805,0.9998,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-19935,Rectified Skew Orthomorphic Malaya Grid,9812,8806,40000.0,9062,8807,0.0,9062,8811,4.0,9110,8812,102.15,9110,8813,323.01328458,9110,8814,323.07483685,9110,8815,0.99984,9201
-19936,Portuguese National Grid,9807,8801,39.4,9110,8802,1.0,9110,8805,1.0,9201,8806,200000.0,9001,8807,300000.0,9001,,,,,,
-19937,Tunisia Mining Grid,9816,8821,38.81973,9105,8822,7.83445,9105,8826,270.0,9036,8827,582.0,9036,,,,,,,,,
-19938,Estonian National Grid,9802,8821,57.310319415,9110,8822,24.0,9110,8823,59.2,9110,8824,58.0,9110,8826,500000.0,9001,8827,6375000.0,9001,,,
-19939,TM Baltic 93,9807,8801,0.0,9102,8802,24.0,9102,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-19940,Levant Zone,9817,8801,34.39,9110,8802,37.21,9110,8805,0.9996256,9201,8806,300000.0,9001,8807,300000.0,9001,,,,,,
-19941,Brazil Polyconic,9818,8801,0.0,9102,8802,-54.0,9102,8806,5000000.0,9001,8807,10000000.0,9001,,,,,,,,,
-19942,British West Indies Grid,9807,8801,0.0,9102,8802,-62.0,9102,8805,0.9995,9201,8806,400000.0,9001,8807,0.0,9001,,,,,,
-19943,Barbados National Grid,9807,8801,13.1035,9110,8802,-59.3335,9110,8805,0.9999986,9201,8806,30000.0,9001,8807,75000.0,9001,,,,,,
-19944,Quebec Lambert Projection,9802,8821,44.0,9110,8822,-68.3,9110,8823,60.0,9110,8824,46.0,9110,8826,0.0,9001,8827,0.0,9001,,,
-19945,"New Brunswick Stereographic (ATS77)",9809,8801,46.3,9110,8802,-66.3,9110,8805,0.999912,9201,8806,300000.0,9001,8807,800000.0,9001,,,,,,
-19946,"New Brunswick Stereographic (NAD83)",9809,8801,46.3,9110,8802,-66.3,9110,8805,0.999912,9201,8806,2500000.0,9001,8807,7500000.0,9001,,,,,,
-19947,Austria Lambert,9802,8821,47.3,9110,8822,13.2,9110,8823,49.0,9110,8824,46.0,9110,8826,400000.0,9001,8827,400000.0,9001,,,
-19948,Syria Lambert,9801,8801,34.39,9110,8802,37.21,9110,8805,0.9996256,9201,8806,300000.0,9001,8807,300000.0,9001,,,,,,
-19949,Levant Stereographic,9809,8801,38.0,9105,8802,43.5,9105,8805,0.9995341,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-19950,Landesvermessung 1995,9815,8811,46.570866,9110,8812,7.26225,9110,8813,90.0,9110,8814,90.0,9110,8815,1.0,9201,8816,2600000.0,9001,8817,1200000.0,9001
-19951,Nakhl e Taqi Oblique Mercator,9815,8811,27.31077837,9110,8812,52.3612741,9110,8813,0.34179803,9110,8814,0.34179803,9110,8815,0.999895934,9201,8816,658377.437,9001,8817,3044969.194,9001
-19952,Krovak,9819,8811,49.3,9110,8812,42.3,9110,8813,30.1717303,9110,8816,0.0,9001,8817,0.0,9001,8818,78.3,9110,8819,0.9999,9201
-19953,Qatar Grid,9806,8801,25.22565,9110,8802,50.4541,9110,8806,100000.0,9001,8807,100000.0,9001,,,,,,,,,
-19954,Suriname Old TM,9807,8801,0.0,9110,8802,-55.41,9110,8805,0.9996,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-19955,Suriname TM,9807,8801,0.0,9110,8802,-55.41,9110,8805,0.9999,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-19956,"Rectified Skew Orthomorphic Borneo Grid (chains)",9815,8811,4.0,9110,8812,115.0,9110,8813,53.18569537,9110,8814,53.07483685,9110,8815,0.99984,9201,8816,29352.4763,9042,8817,22014.3572,9042
-19957,"Rectified Skew Orthomorphic Borneo Grid (feet)",9815,8811,4.0,9110,8812,115.0,9110,8813,53.18569537,9110,8814,53.07483685,9110,8815,0.99984,9201,8816,1937263.44,9041,8817,1452947.58,9041
-19958,"Rectified Skew Orthomorphic Borneo Grid (metres)",9815,8811,4.0,9110,8812,115.0,9110,8813,53.18569537,9110,8814,53.07483685,9110,8815,0.99984,9201,8816,590476.87,9001,8817,442857.65,9001
-19959,Ghana National Grid,9807,8801,4.4,9110,8802,-1.0,9110,8805,0.99975,9201,8806,900000.0,9094,8807,0.0,9094,,,,,,
-19960,"Prince Edward Isl. Stereographic (NAD83)",9809,8801,47.15,9110,8802,-63.0,9110,8805,0.999912,9201,8806,400000.0,9001,8807,800000.0,9001,,,,,,
-19961,Belgian Lambert 72,9802,8821,90.0,9110,8822,4.2202952,9110,8823,51.100000204,9110,8824,49.500000204,9110,8826,150000.013,9001,8827,5400088.438,9001,,,
-19962,Irish Transverse Mercator,9807,8801,53.3,9110,8802,-8.0,9110,8805,0.99982,9201,8806,600000.0,9001,8807,750000.0,9001,,,,,,
-19963,Sierra Leone New Colony Grid,9807,8801,6.4,9110,8802,-12.0,9110,8805,1.0,9201,8806,500000.0,9094,8807,0.0,9094,,,,,,
-19964,New War Office Sierra Leone Grid,9807,8801,6.4,9110,8802,-12.0,9110,8805,1.0,9201,8806,800000.0,9094,8807,600000.0,9094,,,,,,
-19965,US National Atlas Equal Area,9821,8806,0.0,9001,8807,0.0,9001,8828,45.0,9102,8829,-100.0,9102,,,,,,,,,
-19966,Luxembourg Gauss,9807,8801,49.5,9110,8802,6.1,9110,8805,1.0,9201,8806,80000.0,9001,8807,100000.0,9001,,,,,,
-19967,Slovenia Grid,9807,8801,0.0,9110,8802,15.0,9110,8805,0.9999,9201,8806,500000.0,9001,8807,0.0,9001,,,,,,
-19968,Plate Carree,9823,8801,0.0,9102,8802,0.0,9102,,,,,,,,,,,,,,,
-19969,Portuguese Grid,9807,8801,39.4,9110,8802,1.0,9110,8805,1.0,9201,8806,0.0,9001,8807,0.0,9001,,,,,,
-19971,New Zealand Transverse Mercator,9807,8801,0.0,9102,8802,173.0,9102,8805,0.9996,9201,8806,1600000.0,9001,8807,10000000.0,9001,,,,,,
-19972,Irish Grid,9807,8801,53.3,9110,8802,-8.0,9110,8805,1.000035,9201,8806,200000.0,9001,8807,250000.0,9001,,,,,,
-19973,Irish National Grid,9807,8801,53.3,9110,8802,-8.0,9110,8805,1.0,9201,8806,200000.0,9001,8807,250000.0,9001,,,,,,
-19974,Modified Portuguese Grid,9807,8801,39.4,9110,8802,-8.0754862,9110,8805,1.0,9201,8806,180.598,9001,8807,-86.99,9001,,,,,,
-19975,"Trinidad Grid (Clarke's feet)",9806,8801,10.263,9110,8802,-61.2,9110,8806,283800.0,9005,8807,214500.0,9005,,,,,,,,,
-19976,ICN Regional,9802,8821,6.0,9102,8822,-66.0,9102,8823,9.0,9102,8824,3.0,9102,8826,1000000.0,9001,8827,1000000.0,9001,,,
-19977,Aramco Lambert,9802,8821,25.0522236,9110,8822,48.0,9102,8823,17.0,9102,8824,33.0,9102,8826,0.0,9001,8827,0.0,9001,,,
-19978,Hong Kong 1980 Grid,9807,8801,22.184368,9110,8802,114.10428,9110,8805,1.0,9201,8806,836694.05,9001,8807,819069.8,9001,,,,,,
-19979,Portugal Bonne,9828,8801,39.4,9110,8802,1.0,9110,8806,0.0,9001,8807,0.0,9001,,,,,,,,,
diff --git a/src/tiff/csv/stateplane.csv b/src/tiff/csv/stateplane.csv
deleted file mode 100644
index 020f150..0000000
--- a/src/tiff/csv/stateplane.csv
+++ /dev/null
@@ -1,258 +0,0 @@
-"ID","STATE","ZONE","PROJ_METHOD","DATUM","USGS_CODE","EPSG_PCS_CODE"
-101,ALABAMA,EAST,1,NAD83,101,26929
-102,ALABAMA,WEST,1,NAD83,102,26930
-201,ARIZONA,EAST,1,NAD83,201,26948
-202,ARIZONA,CENTRAL,1,NAD83,202,26949
-203,ARIZONA,WEST,1,NAD83,203,26950
-301,ARKANSAS,NORTH,2,NAD83,301,26951
-302,ARKANSAS,SOUTH,2,NAD83,302,26952
-401,CALIFORNIA,I,2,NAD83,401,26941
-402,CALIFORNIA,II,2,NAD83,402,26942
-403,CALIFORNIA,III,2,NAD83,403,26943
-404,CALIFORNIA,IV,2,NAD83,404,26944
-405,CALIFORNIA,V,2,NAD83,405,26945
-406,CALIFORNIA,VI,2,NAD83,406,26946
-501,COLORADO,NORTH,2,NAD83,501,26953
-502,COLORADO,CENTRAL,2,NAD83,502,26954
-503,COLORADO,SOUTH,2,NAD83,503,26955
-600,CONNECTICUT,,2,NAD83,600,26956
-700,DELAWARE,,1,NAD83,700,26957
-901,FLORIDA,EAST,1,NAD83,901,26958
-902,FLORIDA,WEST,1,NAD83,902,26959
-903,FLORIDA,NORTH,2,NAD83,903,26960
-1001,GEORGIA,EAST,1,NAD83,1001,26966
-1002,GEORGIA,WEST,1,NAD83,1002,26967
-1101,IDAHO,EAST,1,NAD83,1101,26968
-1102,IDAHO,CENTRAL,1,NAD83,1102,26969
-1103,IDAHO,WEST,1,NAD83,1103,26970
-1201,ILLINOIS,EAST,1,NAD83,1201,26971
-1202,ILLINOIS,WEST,1,NAD83,1202,26972
-1301,INDIANA,EAST,1,NAD83,1301,26973
-1302,INDIANA,WEST,1,NAD83,1302,26974
-1401,IOWA,NORTH,2,NAD83,1401,26975
-1402,IOWA,SOUTH,2,NAD83,1402,26976
-1501,KANSAS,NORTH,2,NAD83,1501,26977
-1502,KANSAS,SOUTH,2,NAD83,1502,26978
-1601,KENTUCKY,NORTH,2,NAD83,1601,2205
-1602,KENTUCKY,SOUTH,2,NAD83,1602,26980
-1701,LOUISIANA,NORTH,2,NAD83,1701,26981
-1702,LOUISIANA,SOUTH,2,NAD83,1702,26982
-1703,LOUISIANA,OFFSHORE,2,NAD83,1703,
-1801,MAINE,EAST,1,NAD83,1801,26983
-1802,MAINE,WEST,1,NAD83,1802,26984
-1900,MARYLAND,,2,NAD83,1900,26985
-2001,MASSACHUSETTS,MAINLAND,2,NAD83,2001,26986
-2002,MASSACHUSETTS,ISLAND,2,NAD83,2002,26987
-2111,MICHIGAN,NORTH,2,NAD83,2111,26988
-2112,MICHIGAN,CENTRAL,2,NAD83,2112,26989
-2113,MICHIGAN,SOUTH,2,NAD83,2113,26990
-2201,MINNESOTA,NORTH,2,NAD83,2201,26991
-2202,MINNESOTA,CENTRAL,2,NAD83,2202,26992
-2203,MINNESOTA,SOUTH,2,NAD83,2203,26993
-2301,MISSISSIPPI,EAST,1,NAD83,2301,26994
-2302,MISSISSIPPI,WEST,1,NAD83,2302,26995
-2401,MISSOURI,EAST,1,NAD83,2401,26996
-2402,MISSOURI,CENTRAL,1,NAD83,2402,26997
-2403,MISSOURI,WEST,1,NAD83,2403,26998
-2500,MONTANA,,2,NAD83,2500,32100
-2600,NEBRASKA,,2,NAD83,2600,32104
-2701,NEVADA,EAST,1,NAD83,2701,32107
-2702,NEVADA,CENTRAL,1,NAD83,2702,32108
-2703,NEVADA,WEST,1,NAD83,2703,32109
-2800,"NEW HAMPSHIRE",,1,NAD83,2800,32110
-2900,"NEW JERSEY",,1,NAD83,2900,32111
-3001,"NEW MEXICO",EAST,1,NAD83,3001,32112
-3002,"NEW MEXICO",CENTRAL,1,NAD83,3002,32113
-3003,"NEW MEXICO",WEST,1,NAD83,3003,32114
-3101,"NEW YORK",EAST,1,NAD83,3101,32115
-3102,"NEW YORK",CENTRAL,1,NAD83,3102,32116
-3103,"NEW YORK",WEST,1,NAD83,3103,32117
-3104,"NEW YORK","LONG ISLAND",2,NAD83,3104,32118
-3200,"NORTH CAROLINA",,2,NAD83,3200,32119
-3301,"NORTH DAKOTA",NORTH,2,NAD83,3301,32120
-3302,"NORTH DAKOTA",SOUTH,2,NAD83,3302,32121
-3401,OHIO,NORTH,2,NAD83,3401,32122
-3402,OHIO,SOUTH,2,NAD83,3402,32123
-3501,OKLAHOMA,NORTH,2,NAD83,3501,32124
-3502,OKLAHOMA,SOUTH,2,NAD83,3502,32125
-3601,OREGON,NORTH,2,NAD83,3601,32126
-3602,OREGON,SOUTH,2,NAD83,3602,32127
-3701,PENNSYLVANIA,NORTH,2,NAD83,3701,32128
-3702,PENNSYLVANIA,SOUTH,2,NAD83,3702,32129
-3800,"RHODE ISLAND",,1,NAD83,3800,32130
-3900,"SOUTH CAROLINA",,2,NAD83,3900,32133
-4001,"SOUTH DAKOTA",NORTH,2,NAD83,4001,32134
-4002,"SOUTH DAKOTA",SOUTH,2,NAD83,4002,32135
-4100,TENNESSEE,,2,NAD83,4100,32136
-4201,TEXAS,NORTH,2,NAD83,4201,32137
-4202,TEXAS,"NORTH CENTRAL",2,NAD83,4202,32138
-4203,TEXAS,CENTRAL,2,NAD83,4203,32139
-4204,TEXAS,"SOUTH CENTRAL",2,NAD83,4204,32140
-4205,TEXAS,SOUTH,2,NAD83,4205,32141
-4301,UTAH,NORTH,2,NAD83,4301,32142
-4302,UTAH,CENTRAL,2,NAD83,4302,32143
-4303,UTAH,SOUTH,2,NAD83,4303,32144
-4400,VERMONT,,1,NAD83,4400,32145
-4501,VIRGINIA,NORTH,2,NAD83,4501,32146
-4502,VIRGINIA,SOUTH,2,NAD83,4502,32147
-4601,WASHINGTON,NORTH,2,NAD83,4601,32148
-4602,WASHINGTON,SOUTH,2,NAD83,4602,32149
-4701,"WEST VIRGINIA",NORTH,2,NAD83,4701,32150
-4702,"WEST VIRGINIA",SOUTH,2,NAD83,4702,32151
-4801,WISCONSIN,NORTH,2,NAD83,4801,32152
-4802,WISCONSIN,CENTRAL,2,NAD83,4802,32153
-4803,WISCONSIN,SOUTH,2,NAD83,4803,32154
-4901,WYOMING,EAST,1,NAD83,4901,32155
-4902,WYOMING,"EAST CENTRAL",1,NAD83,4902,32156
-4903,WYOMING,"WEST CENTRAL",1,NAD83,4903,32157
-4904,WYOMING,WEST,1,NAD83,4904,32158
-5001,ALASKA,"ZONE NO. 1",4,NAD83,5001,26931
-5002,ALASKA,"ZONE NO. 2",1,NAD83,5002,26932
-5003,ALASKA,"ZONE NO. 3",1,NAD83,5003,26933
-5004,ALASKA,"ZONE NO. 4",1,NAD83,5004,26934
-5005,ALASKA,"ZONE NO. 5",1,NAD83,5005,26935
-5006,ALASKA,"ZONE NO. 6",1,NAD83,5006,26936
-5007,ALASKA,"ZONE NO. 7",1,NAD83,5007,26937
-5008,ALASKA,"ZONE NO. 8",1,NAD83,5008,26938
-5009,ALASKA,"ZONE NO. 9",1,NAD83,5009,26939
-5010,ALASKA,"ZONE NO. 10",2,NAD83,5010,26940
-5101,HAWAII,1,1,NAD83,5101,26961
-5102,HAWAII,2,1,NAD83,5102,26962
-5103,HAWAII,3,1,NAD83,5103,26963
-5104,HAWAII,4,1,NAD83,5104,26964
-5105,HAWAII,5,1,NAD83,5105,26965
-5200,"PUERTO RICO AND","VIRGIN ISLANDS",2,NAD83,5200,32161
-10101,ALABAMA,EAST,1,NAD27,101,26729
-10102,ALABAMA,WEST,1,NAD27,102,26730
-10201,ARIZONA,EAST,1,NAD27,201,26748
-10202,ARIZONA,CENTRAL,1,NAD27,202,26749
-10203,ARIZONA,WEST,1,NAD27,203,26750
-10301,ARKANSAS,NORTH,2,NAD27,301,26751
-10302,ARKANSAS,SOUTH,2,NAD27,302,26752
-10401,CALIFORNIA,I,2,NAD27,401,26741
-10402,CALIFORNIA,II,2,NAD27,402,26742
-10403,CALIFORNIA,III,2,NAD27,403,26743
-10404,CALIFORNIA,IV,2,NAD27,404,26744
-10405,CALIFORNIA,V,2,NAD27,405,26745
-10406,CALIFORNIA,VI,2,NAD27,406,26746
-10407,CALIFORNIA,VII,2,NAD27,407,26747
-10501,COLORADO,NORTH,2,NAD27,501,26753
-10502,COLORADO,CENTRAL,2,NAD27,502,26754
-10503,COLORADO,SOUTH,2,NAD27,503,26755
-10600,CONNECTICUT,,2,NAD27,600,26756
-10700,DELAWARE,,1,NAD27,700,26757
-10901,FLORIDA,EAST,1,NAD27,901,26758
-10902,FLORIDA,WEST,1,NAD27,902,26759
-10903,FLORIDA,NORTH,2,NAD27,903,26760
-11001,GEORGIA,EAST,1,NAD27,1001,26766
-11002,GEORGIA,WEST,1,NAD27,1002,26767
-11101,IDAHO,EAST,1,NAD27,1101,26768
-11102,IDAHO,CENTRAL,1,NAD27,1102,26769
-11103,IDAHO,WEST,1,NAD27,1103,26770
-11201,ILLINOIS,EAST,1,NAD27,1201,26771
-11202,ILLINOIS,WEST,1,NAD27,1202,26772
-11301,INDIANA,EAST,1,NAD27,1301,26773
-11302,INDIANA,WEST,1,NAD27,1302,26774
-11401,IOWA,NORTH,2,NAD27,1401,26775
-11402,IOWA,SOUTH,2,NAD27,1402,26776
-11501,KANSAS,NORTH,2,NAD27,1501,26777
-11502,KANSAS,SOUTH,2,NAD27,1502,26778
-11601,KENTUCKY,NORTH,2,NAD27,1601,26779
-11602,KENTUCKY,SOUTH,2,NAD27,1602,26780
-11701,LOUISIANA,NORTH,2,NAD27,1701,26781
-11702,LOUISIANA,SOUTH,2,NAD27,1702,26782
-11703,LOUISIANA,OFFSHORE,2,NAD27,1703,
-11801,MAINE,EAST,1,NAD27,1801,26783
-11802,MAINE,WEST,1,NAD27,1802,26784
-11900,MARYLAND,,2,NAD27,1900,26785
-12001,MASSACHUSETTS,MAINLAND,2,NAD27,2001,26786
-12002,MASSACHUSETTS,ISLAND,2,NAD27,2002,26787
-12101,MICHIGAN,EAST,1,NAD27,2101,26801
-12102,MICHIGAN,"CENTRAL/M",1,NAD27,2102,26802
-12103,MICHIGAN,WEST,1,NAD27,2103,26803
-12111,MICHIGAN,NORTH,2,NAD27,2111,26811
-12112,MICHIGAN,"CENTRAL/L",2,NAD27,2112,26812
-12113,MICHIGAN,SOUTH,2,NAD27,2113,26813
-12201,MINNESOTA,NORTH,2,NAD27,2201,26791
-12202,MINNESOTA,CENTRAL,2,NAD27,2202,26792
-12203,MINNESOTA,SOUTH,2,NAD27,2203,26793
-12301,MISSISSIPPI,EAST,1,NAD27,2301,26794
-12302,MISSISSIPPI,WEST,1,NAD27,2302,26795
-12401,MISSOURI,EAST,1,NAD27,2401,26796
-12402,MISSOURI,CENTRAL,1,NAD27,2402,26797
-12403,MISSOURI,WEST,1,NAD27,2403,26798
-12501,MONTANA,NORTH,2,NAD27,2501,32001
-12502,MONTANA,CENTRAL,2,NAD27,2502,32002
-12503,MONTANA,SOUTH,2,NAD27,2503,32003
-12601,NEBRASKA,NORTH,2,NAD27,2601,32005
-12602,NEBRASKA,SOUTH,2,NAD27,2602,32006
-12701,NEVADA,EAST,1,NAD27,2701,32007
-12702,NEVADA,CENTRAL,1,NAD27,2702,32008
-12703,NEVADA,WEST,1,NAD27,2703,32009
-12800,"NEW HAMPSHIRE",,1,NAD27,2800,32010
-12900,"NEW JERSEY",,1,NAD27,2900,32011
-13001,"NEW MEXICO",EAST,1,NAD27,3001,32012
-13002,"NEW MEXICO",CENTRAL,1,NAD27,3002,32013
-13003,"NEW MEXICO",WEST,1,NAD27,3003,32014
-13101,"NEW YORK",EAST,1,NAD27,3101,32015
-13102,"NEW YORK",CENTRAL,1,NAD27,3102,32016
-13103,"NEW YORK",WEST,1,NAD27,3103,32017
-13104,"NEW YORK","LONG ISLAND",2,NAD27,3104,32018
-13200,"NORTH CAROLINA",,2,NAD27,3200,32019
-13301,"NORTH DAKOTA",NORTH,2,NAD27,3301,32020
-13302,"NORTH DAKOTA",SOUTH,2,NAD27,3302,32021
-13401,OHIO,NORTH,2,NAD27,3401,32022
-13402,OHIO,SOUTH,2,NAD27,3402,32023
-13501,OKLAHOMA,NORTH,2,NAD27,3501,32024
-13502,OKLAHOMA,SOUTH,2,NAD27,3502,32025
-13601,OREGON,NORTH,2,NAD27,3601,32026
-13602,OREGON,SOUTH,2,NAD27,3602,32027
-13701,PENNSYLVANIA,NORTH,2,NAD27,3701,32028
-13702,PENNSYLVANIA,SOUTH,2,NAD27,3702,32029
-13800,"RHODE ISLAND",,1,NAD27,3800,32030
-13901,"SOUTH CAROLINA",NORTH,2,NAD27,3901,32031
-13902,"SOUTH CAROLINA",SOUTH,2,NAD27,3902,32033
-14001,"SOUTH DAKOTA",NORTH,2,NAD27,4001,32034
-14002,"SOUTH DAKOTA",SOUTH,2,NAD27,4002,32035
-14100,TENNESSEE,,2,NAD27,4100,2204
-14201,TEXAS,NORTH,2,NAD27,4201,32037
-14202,TEXAS,"NORTH CENTRAL",2,NAD27,4202,32038
-14203,TEXAS,CENTRAL,2,NAD27,4203,32039
-14204,TEXAS,"SOUTH CENTRAL",2,NAD27,4204,32040
-14205,TEXAS,SOUTH,2,NAD27,4205,32041
-14301,UTAH,NORTH,2,NAD27,4301,32042
-14302,UTAH,CENTRAL,2,NAD27,4302,32043
-14303,UTAH,SOUTH,2,NAD27,4303,32044
-14400,VERMONT,,1,NAD27,4400,32045
-14501,VIRGINIA,NORTH,2,NAD27,4501,32046
-14502,VIRGINIA,SOUTH,2,NAD27,4502,32047
-14601,WASHINGTON,NORTH,2,NAD27,4601,32048
-14602,WASHINGTON,SOUTH,2,NAD27,4602,32049
-14701,"WEST VIRGINIA",NORTH,2,NAD27,4701,32050
-14702,"WEST VIRGINIA",SOUTH,2,NAD27,4702,32051
-14801,WISCONSIN,NORTH,2,NAD27,4801,32052
-14802,WISCONSIN,CENTRAL,2,NAD27,4802,32053
-14803,WISCONSIN,SOUTH,2,NAD27,4803,32054
-14901,WYOMING,EAST,1,NAD27,4901,32055
-14902,WYOMING,"EAST CENTRAL",1,NAD27,4902,32056
-14903,WYOMING,"WEST CENTRAL",1,NAD27,4903,32057
-14904,WYOMING,WEST,1,NAD27,4904,32058
-15001,ALASKA,"ZONE NO. 1",4,NAD27,5001,26731
-15002,ALASKA,"ZONE NO. 2",1,NAD27,5002,26732
-15003,ALASKA,"ZONE NO. 3",1,NAD27,5003,26733
-15004,ALASKA,"ZONE NO. 4",1,NAD27,5004,26734
-15005,ALASKA,"ZONE NO. 5",1,NAD27,5005,26735
-15006,ALASKA,"ZONE NO. 6",1,NAD27,5006,26736
-15007,ALASKA,"ZONE NO. 7",1,NAD27,5007,26737
-15008,ALASKA,"ZONE NO. 8",1,NAD27,5008,26738
-15009,ALASKA,"ZONE NO. 9",1,NAD27,5009,26739
-15010,ALASKA,"ZONE NO. 10",2,NAD27,5010,26740
-15101,HAWAII,1,1,NAD27,5101,3561
-15102,HAWAII,2,1,NAD27,5102,3562
-15103,HAWAII,3,1,NAD27,5103,3563
-15104,HAWAII,4,1,NAD27,5104,3564
-15105,HAWAII,5,1,NAD27,5105,3565
-15201,"PUERTO RICO AND VIRGIN ISLANDS",,2,NAD27,5201,3991
-15202,"VIRGIN ISLANDS","ST. CROIX",2,NAD27,5202,3992
-15300,"AMERICAN SAMOA",,2,NAD27,5300,2155
-15400,"GUAM ISLAND",,3,NAD27,5400,
diff --git a/src/tiff/csv/trf_method.c b/src/tiff/csv/trf_method.c
deleted file mode 100644
index 7331e1d..0000000
--- a/src/tiff/csv/trf_method.c
+++ /dev/null
@@ -1,205 +0,0 @@
-#include "defs.h"
-datafile_rows_t trf_method_row_1[] = {"COORD_TRF_METHOD_CODE","CTRF_METHOD_EPSG_NAME","CTRF_METHOD_USER_NAME","DESCRIPTION","PARAM_1_NAME","PARAM_2_NAME","PARAM_3_NAME","PARAM_4_NAME","PARAM_5_NAME","PARAM_6_NAME","PARAM_7_NAME","PARAM_8_NAME","PARAM_9_NAME","PARAM_10_NAME","PARAM_11_NAME","PARAM_12_NAME","PARAM_13_NAME","PARAM_14_NAME","PARAM_15_NAME","PARAM_16_NAME","PARAM_17_NAME","PARAM_18_NAME","PARAM_19_NAME","PARAM_20_NAME","PARAM_21_NAME","PARAM_22_NAME","PARAM_23_NAME","PARAM_24 [...]
-datafile_rows_t trf_method_row_2[] = {"9601","Longitude rotation","","This transformation allows calculation of coordinates in the target system by adding the parameter value to the coordinate values of the point in the source system.","Longitude rotation","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Lon2 = Lon1 + longitude_rotation.","","1999-11-12 00:00:00","","EPSG","","99.79",NULL};
-datafile_rows_t trf_method_row_3[] = {"9602","Geodetic/geocentric conversions","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Latitude, P, and Longitude, L, in terms of Geographic Coordinate System (GCS) A may \
-be expressed in terms of a geocentric (earth centred) cartesian coordinate system X, Y, Z \
-with the Z axis corresponding with the Polar axis positive northwards, the X a","Consider a North Sea point with coordinates derived by GPS satellite in the WGS84 geographical coordinate system with coordinates of:\
-\
-           latitude    53 deg 48 min 33.82 sec N, \
-           longitude 02 deg 07 min 46.38 sec E, \
-    and ellipsoid","1996-09-18 00:00:00","\"Transformation from spatial to geographical coordinates\"; B. R. Bowring; Survey Review number 181; July 1976.","EPSG","","97.29",NULL};
-datafile_rows_t trf_method_row_4[] = {"9603","Geocentric translations","","","X-axis translation","Y-axis translation","Z-axis translation","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","If  we may assume that the minor axes of the ellipsoids are parallel, then shifts dX, dY, dZ \
-in the sense from datum A to datum B may then be applied as\
-\
-   XB = XA + dX \
-   YB = YA + dY\
-   ZB = ZA + dZ","Given a three parameter datum shift from WGS84 to ED50 for this North Sea area is given as \
-dX = +84.87m, dY = +96.49m, dZ = +116.95m. \
-\
-The WGS84 geographical coordinates convert to the following GS84 geocentric values using \
-the above formulas for X,","1996-09-18 00:00:00","POSC Epicentre 2.2.1","EPSG","","",NULL};
-datafile_rows_t trf_method_row_5[] = {"9604","Molodenski","","","X-axis translation","Y-axis translation","Z-axis translation","Semi-major axis length difference","Flattening difference","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1996-09-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t trf_method_row_6[] = {"9605","Abridged Molodenski","","","X-axis translation","Y-axis translation","Z-axis translation","Semi-major axis length difference","Flattening difference","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","As an alternative to the computation of the new latitude, longitude and height above ellipsoid in discrete steps through geocentric coordinates, the changes in these coordinates may be derived direct [...]
-datafile_rows_t trf_method_row_7[] = {"9606","Position Vector 7-param. transformation","","","X-axis translation","Y-axis translation","Z-axis translation","X-axis rotation","Y-axis rotation","Z-axis rotation","Scale difference","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Transformation of coordinates from one geographic coordinate system into another (also known as a \"datum transformation\") is usually carried out as an implicit concatenat [...]
-[geographical to geocentric >> geocentric to geocentric","Input point: \
-Coordinate system: WGS72 (geographic 3D)\
-  Latitude =   55 deg 00 min 00 sec \
-  Longitude =  4 deg 00 min 00 sec \
-  Ellipsoidal height =  0 m\
-This transforms to cartesian geocentric coords:\
-    X = 3 657 660.66 (m)  \
-    Y =    255 768","1996-09-18 00:00:00","","EPSG","","98.16",NULL};
-datafile_rows_t trf_method_row_8[] = {"9607","Coordinate Frame rotation","","","X-axis translation","Y-axis translation","Z-axis translation","X-axis rotation","Y-axis rotation","Z-axis rotation","Scale difference","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","<<<<<This text is continued from the description of the Position Vector Transformation formula>>>>>\
-\
-Although being common practice in particularly the European E&P industry Position Vector Transformation sign convention is not universally accepted.  A v","The same example as for the Position Vector Transformation can be calculated, however the following transformation parameters have to be applied to achieve the same input and output in terms of coordinate values:\
-\
-Transformation parameters Coordinate Fra","1996-09-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t trf_method_row_9[] = {"9608","Similarity transform","","","A1","A2 * m","A3 * n","B1","B2 * m","B3 * n","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1996-09-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t trf_method_row_10[] = {"9609","2-dimensional Affine transformation","","","A1","A2 * m","A3 * n","B1","B2 * m","B3 * n","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1996-09-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t trf_method_row_11[] = {"9610","2nd-order Polynomial function","","","Ordinate 1 of source evaluation point","Ordinate 2 of source evaluation point","Ordinate 1 of target evaluation point","Ordinate 2 of target evaluation point","A1","A2 * m","A3 * n","A4 * mm","A5 * mn","A6 * nn","B1","B2 * m","B3 * n","B4 * mm","B5 * mn","B6 * nn","","","","","","","","","","","","","","","","","","","","","","","","1996-09-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t trf_method_row_12[] = {"9611","3rd-order Polynomial function","","","Ordinate 1 of source evaluation point","Ordinate 2 of source evaluation point","Ordinate 1 of target evaluation point","Ordinate 2 of target evaluation point","A1","A2 * m","A3 * n","A4 * mm","A5 * mn","A6 * nn","A7 * mmm","A8 * mmn","A9 * mnn","A10 * nnn","B1","B2 * m","B3 * n","B4 * mm","B5 * mn","B6 * nn","B7 * mmm","B8 * mmn","B9 * mnn","B10 * nnn","","","","","","","","","","","","","","","","1996-0 [...]
-datafile_rows_t trf_method_row_13[] = {"9612","4th-order Polynomial function","","","Ordinate 1 of source evaluation point","Ordinate 2 of source evaluation point","Ordinate 1 of target evaluation point","Ordinate 2 of target evaluation point","A1","A2 * m","A3 * n","A4 * mm","A5 * mn","A6 * nn","A7 * mmm","A8 * mmn","A9 * mnn","A10 * nnn","A11 * mmmm","A12 * mmmn","A13 * mmnn","A14 * mnnn","A15 * nnnn","B1","B2 * m","B3 * n","B4 * mm","B5 * mn","B6 * nn","B7 * mmm","B8 * mmn","B9 * mnn" [...]
-datafile_rows_t trf_method_row_14[] = {"9613","NADCON","","Geodetic transformation operating on geographic coordinate differences by bi-linear interpolation.  Used specifically for some NAD27<->NAD83 transformations in USA.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Latitude difference gridded binary file","Longitude difference gridded binary file","","","","1996-09-18 00:00:00","US Coast and geodetic Survey - http://www.ngs.no [...]
-datafile_rows_t trf_method_row_15[] = {"9614","NTv1","","Geodetic transformation operating on geographic coordinate differences by bi-linear interpolation.  Used specifically for some NAD27<->NAD83 transformations in Canada.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Latitude and longitude difference file","","","","","1997-11-13 00:00:00","Geomatics Canada - Geodetic Survey Division.","EPSG","Superceded in 1997 by NTv2 (transf [...]
-datafile_rows_t trf_method_row_16[] = {"9615","NTv2","","Geodetic transformation operating on geographic coordinate differences by bi-linear interpolation.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Latitude and longitude difference file","","","","","1997-11-13 00:00:00","http://www.geod.nrcan.gc.ca/products/html-public/GSDapps/English/NTv2_Fact_Sheet.html","EPSG","Supercedes  NTv1 (transformation method code 9614).  Input exp [...]
-datafile_rows_t trf_method_row_17[] = {"9616","Vertical Offset","","This transformation allows calculation of ordinate in the target system by adding the parameter value to the ordinate value of the point in the source system.","Vertical offset","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","V2 = [(V1 * U1) + (O12 * Uoff)] * (m / U2) where V2 = value in second vertical coordinate system; V1 = value in first system; O12 is the  [...]
-datafile_rows_t trf_method_row_18[] = {"9617","Madrid to ED50","","","","","","","A","B","C","D","E","F","G","H","J","","","","","","","","","","","","","","","","","","","","","","","","","The original geographic coordinate system for the Spanish mainland was based on Madrid 1870 datum, Struve 1860 ellipsoid, with longitudes related to the Madrid meridian.  Three polynomial expressions have been empirically derived by El Servicio Geogr�fico ","Input point coordinate system: Madrid 1870  [...]
-   Latitude    =  42 deg 38 min 52.77 sec N = 42.647992 degrees\
-   Longitude  =    3 deg 39 min 34.57 sec E of Madrid	\
-                         = +3.659603 degrees from the Madrid merid","1999-11-15 00:00:00","Institut de Geomatica; Barcelona","EPSG","","99.284  99.82",NULL};
-datafile_rows_t trf_method_row_19[] = {"9618","Geographical and Height Offsets","","This transformation allows calculation of coordinates in the target system by adding the parameter value to the coordinate values of the point in the source system.","Latitude offset","Longitude offset","Gravity-related to ellipsoid height","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Lat2 = Lat1 + latitude_offset;  Lon2 = Lon1 + longitude_offset;  [...]
-datafile_rows_t trf_method_row_20[] = {"9619","Geographical Offsets","","This transformation allows calculation of coordinates in the target system by adding the parameter value to the coordinate values of the point in the source system.","Latitude offset","Longitude offset","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Lat2 = Lat1 + latitude_offset;  Lon2 = Lon1 + longitude_offset.","","1999-11-12 00:00:00","","EPSG","","99.79" [...]
-datafile_rows_t trf_method_row_21[] = {"9620","Norway Offshore Interpolation","","","","","","","","Geod. tfm. code for northern boundary","Geod. tfm. code for southern boundary","","","","","","","","","","","","","","","","","","","","","","","","","","","","Geod. tfm. name for northern boundary","Geod. tfm. name for southern boundary","","","","1999-04-22 00:00:00","Norwegian Mapping Authority note of 13-Feb-1991 \"Om Transformasjon mellom Geodetiske Datum i Norge\".","EPSG","","",NULL};
-datafile_rows_t trf_method_row_22[] = {"9801","Lambert Conic Conformal (1SP)","","","Latitude of natural origin","Longitude of natural origin","","","Scale factor at natural origin","False easting","False northing","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","To derive the projected Easting and Northing coordinates of a point with geographical coordinates (lat,lon) the formulas for the one standard parallel case are:\
-\
-E = FE + r sin(theta)\
-N = FN + r0 - r cos(theta)\
-where\
-n = sin lat0\
-r = a F t^n k0     f","For Projected Coordinate System JAD69 / Jamaica National Grid\
-\
-Parameters:\
-Ellipsoid:  Clarke 1866, a = 6378206.400 m., 1/f = 294.97870\
-                                   then  e = 0.08227185 and e^2 = 0.00676866\
-\
-Latitude Natural Origin         18 d","1996-09-18 00:00:00","EPSG Guidance note #7; \"Geographic and Projected Coordinate System Transformations\"; section 1.4.1","EPSG","","",NULL};
-datafile_rows_t trf_method_row_23[] = {"9802","Lambert Conic Conformal (2SP)","","","Latitude of false origin","Longitude of false origin","Latitude of 1st standard parallel","Latitude of 2nd standard parallel","","Easting at false origin","Northing at false origin","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","To derive the projected Easting and Northing coordinates of a point with geographical coordinates (lat,lon) the formulas for the one s [...]
-\
-E = EF + r sin(theta)\
-N = NF + rF - r cos(theta)\
-where\
-m = cos(lat)/(1 - e^2 sin^2(lat))^","For Projected Coordinate System NAD27 / Texas South Central\
-\
-Parameters:\
-Ellipsoid  Clarke 1866, a = 6378206.400 metres = 20925832.16 US survey feet\
-                                   1/f = 294.97870\
-then e = 0.08227185 and e^2 = 0.00676866\
-\
-First S","1999-04-22 00:00:00","EPSG Guidance note #7; \"Geographic and Projected Coordinate System Transformations\"; section 1.4.1","EPSG","","99.281",NULL};
-datafile_rows_t trf_method_row_24[] = {"9803","Lambert Conic Conformal (2SP Belgium)","","","Latitude of false origin","Longitude of false origin","Latitude of 1st standard parallel","Latitude of 2nd standard parallel","","Easting at false origin","Northing at false origin","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Since 1972 a modified form of the two standard parallel case has been used in Belgium.  For the Lambert Conic Conformal (2 SP  [...]
-Easting, E = EF + r sin (theta - alpha)","For Projected Coordinate System Belge l972 / Belge Lambert 72\
-\
-Parameters:\
-Ellipsoid  International 1924,  a = 6378388 metres\
-                                              1/f = 297\
-then e = 0.08199189 and e^2 = 0.006722670\
-\
-First Standard Parallel ","1999-04-22 00:00:00","EPSG Guidance note #7; \"Geographic and Projected Coordinate System Transformations\"; section 1.4.1","EPSG","","99.281",NULL};
-datafile_rows_t trf_method_row_25[] = {"9804","Mercator (1SP)","","","Latitude of natural origin","Longitude of natural origin","","","Scale factor at natural origin","False easting","False northing","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","The formulas to derive projected Easting and Northing coordinates are:\
-\
-E = FE + a*k0(lon - lon0)              \
-N = FN + a*k0* ln{tan(pi/4 + lat/2)[(1 - esin(lat))(1 + esin(lat))]^e/2} where symbols are as listed above and logarithms are natural.\
-\
-The","For Projected Coordinate System Makassar / NEIEZ\
-\
-Parameters:\
-Ellipsoid   Bessel 1841  a = 6377397.155 m   1/f = 299.15281\
-then e = 0.08169683\
-\
-Latitude Natural Origin         00o00'00\"N  = 0.0000000 rad\
-Longitude Natural Origin    110o00'00\"E  = 1.","1996-09-18 00:00:00","EPSG Guidance note #7; \"Geographic and Projected Coordinate System Transformations\"; section 1.4.2","EPSG","","",NULL};
-datafile_rows_t trf_method_row_26[] = {"9805","Mercator (2SP)","","","Latitude of 1st standard parallel","Longitude of natural origin","","","","False easting","False northing","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","The formulas to derive projected Easting and Northing coordinates are:\
-\
-For the two standard parallel case, k0 is first calculated from\
-\
-k0 = cos(latSP1)/(1 - e^2*sin^2(latSP1))^0.5 \
- \
-where latSP1 is the absolute value of the first standard parallel","For Projected Coordinate System Pulkovo 1942 / Mercator Caspian Sea\
-\
-Parameters:\
-Ellipsoid  Krassowski 1940   a = 6378245.00m   1/f = 298.300\
-then e = 0.08181333 and e^2 = 0.00669342\
-\
-Latitude first SP                             42o00'00\"N = 0.73303","1996-09-18 00:00:00","EPSG Guidance note #7; \"Geographic and Projected Coordinate System Transformations\"; section 1.4.2","EPSG","","",NULL};
-datafile_rows_t trf_method_row_27[] = {"9806","Cassini-Soldner","","","Latitude of natural origin","Longitude of natural origin","","","","False easting","False northing","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","The formulas to derive projected Easting and Northing coordinates are:\
-\
-Easting E = FE + nu[A - TA^3/6 -(8 - T + 8C)TA^5/120]\
-\
-Northing N = FN + M - M0 + nu*tan(lat)*[A^2/2 + (5 - T + 6C)A^4/24]\
-\
-where A = (lon - lon0)cos(lat)\
-T = tan^2(lat)\
-C = e2","For Projected Coordinate System Trinidad 1903 / Trinidad Grid \
-Parameters:\
-Ellipsoid   Clarke 1858     a = 20926348 ft    = 31706587.88 links\
-                                        b = 20855233 ft\
-\
-then 1/f = 294.97870 and e^2 = 0.00676866\
-\
-Latitud","1996-09-18 00:00:00","EPSG Guidance note #7; \"Geographic and Projected Coordinate System Transformations\"; section 1.4.3","EPSG","","",NULL};
-datafile_rows_t trf_method_row_28[] = {"9807","Transverse Mercator","","","Latitude of natural origin","Longitude of natural origin","","","Scale factor at natural origin","False easting","False northing","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","The formulas to derive the projected Easting and Northing coordinates are in the form of a series as follows:\
-\
-Easting, E =  FE + k0*nu[A + (1 - T + C)A^3/6 + (5 - 18T + T^2 + 72C - 58e'sq)A^5/120]	\
-\
-Northing, N =  FN + k0{M - M0 + nu*tan(lat)[A^2/2 + ","For Projected Coordinate System OSGB 1936 / British National Grid\
-\
-Parameters:\
-Ellipsoid  Airy 1830  a = 6377563.396 m  1/f = 299.32496\
-then e'^2 = 0.00671534 and e^2 = 0.00667054\
-\
-Latitude Natural Origin         49o00'00\"N   = 0.85521133 rad\
-Longit","1996-09-18 00:00:00","EPSG Guidance note #7; \"Geographic and Projected Coordinate System Transformations\"; section 1.4.4","EPSG","","",NULL};
-datafile_rows_t trf_method_row_29[] = {"9808","Transverse Mercator (South Orientated)","","","Latitude of natural origin","Longitude of natural origin","","","Scale factor at natural origin","False easting","False northing","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","For the mapping of southern Africa a south oriented Transverse Mercator projection is used. Here the coordinate axes are called Westings and Southings and increment to the West  [...]
-datafile_rows_t trf_method_row_30[] = {"9809","Oblique Stereographic","","","Latitude of natural origin","Longitude of natural origin","","","Scale factor at natural origin","False easting","False northing","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","The coordinate transformation from geographical to projected coordinates is executed via the distance and azimuth of the point from the centre point or origin. For a sphere the formulas are rela [...]
-\
-Parameters:\
-Ellipsoid   Bessel 1841    a = 6377397.155 m    1/f = 299.15281\
-then e = 0.08169683\
-\
-Latitude Natural Origin      52o09'22.178\"N  = 0.910296727 rad\
-Longitude Natural Origin     5o23'1","1999-11-15 00:00:00","EPSG Guidance note #7; \"Geographic and Projected Coordinate System Transformations\"; section 1.4.6","EPSG","","99.811",NULL};
-datafile_rows_t trf_method_row_31[] = {"9810","Polar Stereographic","","","Latitude of natural origin","Longitude of natural origin","","","Scale factor at natural origin","False easting","False northing","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","For the forward transformation from latitude and longitude,\
-\
-E = FE + rho sin(lon - lon0)\
-N = FN - rho cos(lon - lon0)\
-where\
-rho = 2 a ko t /{[((1+e)^(1+e)) ((1-e)^(1-e))]^0.5}\
-t = tan (pi/4 - lat/2) / [(1-esin(lat) ) / (1 + e sin(lat))]^(e/2)\
-\
-For","","1996-09-18 00:00:00","US Geological Survey Professional Paper 1395; \"Map Projections - A Working Manual\";  J. Snyder","EPSG","","",NULL};
-datafile_rows_t trf_method_row_32[] = {"9811","New Zealand Map Grid","","","Latitude of natural origin","Longitude of natural origin","","","","False easting","False northing","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1996-09-18 00:00:00","New Zealand Department of Lands technical circular 1973/32","EPSG","","",NULL};
-datafile_rows_t trf_method_row_33[] = {"9812","Hotine Oblique Mercator","","","Latitude of projection centre","Longitude of projection centre","Azimuth of initial line","Angle from Rectified to Skew Grid","Scale factor on initial line","False easting","False northing","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","The following constants for the projection may be calculated :\
-\
-B = (1 + esq * cos^4(latc) / (1 - esq ))^0.5\
-A = a * B * kc *(1 - esq )^0.5 / ( 1 - esq * sin^2(latc))\
-t0 = tan(pi/4 - latc/2) / ((1 - e*sin(latc)) / (1 + e*sin(latc)))^(e/2)\
-D = B (1 - e","For Projected Coordinate System  Timbalai 1948 / R.S.O. Borneo (m)\
-\
-Parameters:\
-	Ellipsoid:  Everest 1830 (1967 Definition)\
-				a = 6377298.556 metres 	1/f = 300.8017\
-				then	e = 0.081472981	e2 = 0.006637847\
-					\
-	Latitude Projection Centre	fc  	4","1999-11-15 00:00:00","EPSG Guidance note #7; \"Geographic and Projected Coordinate System Transformations\"; section 1.4.5","EPSG","","97.62  99.811",NULL};
-datafile_rows_t trf_method_row_34[] = {"9813","Laborde Oblique Mercator","","","Latitude of projection centre","Longitude of projection centre","Azimuth of initial line","","Scale factor on initial line","False easting","False northing","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1996-09-18 00:00:00","\"La nouvelle projection du Service Geographique de Madagascar\"; J. Laborde; 1928","EPSG","Can be accomodated by Oblique Mercator metho [...]
-datafile_rows_t trf_method_row_35[] = {"9814","Swiss Oblique Cylindrical","","","Latitude of projection centre","Longitude of projection centre","","","","Easting at projection centre","Northing at projection centre","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1996-09-18 00:00:00","\"Die projecktionen der Schweizerischen Plan und Kartenwerke\"; J Bollinger; 1967","EPSG","Can be accomodated by Oblique Mercator method (code 9815).","97.6 [...]
-datafile_rows_t trf_method_row_36[] = {"9815","Oblique Mercator","","","Latitude of projection centre","Longitude of projection centre","Azimuth of initial line","Angle from Rectified to Skew Grid","Scale factor on initial line","Easting at projection centre","Northing at projection centre","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","The following constants for the projection may be calculated :\
-\
-B = (1 + esq * cos^4(latc) / (1 - esq ))^0.5\
-A = a * B * kc *(1 - esq )^0.5 / ( 1 - esq * sin^2(latc))\
-t0 = tan(pi/4 - latc/2) / ((1 - e*sin(latc)) / (1 + e*sin(latc)))^(e/2)\
-D = B (1 - e","","1999-11-15 00:00:00","EPSG Guidance note #7; \"Geographic and Projected Coordinate System Transformations\"; section 1.4.5","EPSG","","99.811",NULL};
-datafile_rows_t trf_method_row_37[] = {"9816","Tunisia Mining Grid","","","Latitude of origin","Longitude of origin","","","","False easting","False northing","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","This grid is used as the basis for mineral leasing in Tunsia.  Lease areas are approximately 2 x 2 km or 400 hectares.  The corners of these blocks are defined through a six figure grid reference where the first three digits are an easting in [...]
-Latitude = 36.5964 + [(598 - 360) * A].  As N > 360, A = 0.010015.\
-Latitude = 38.97997 grads = 35.08197 degrees.\
-\
-Longitude  = 7.83445 + [(E - 270) * 0.012185, where E = 302.\
-Longitude  = 8.22437 grads east of Paris = 9.73916","1999-11-15 00:00:00","EPSG Guidance note #7; \"Geographic and Projected Coordinate System Transformations\"; section 1.4.8","EPSG","","99.811",NULL};
-datafile_rows_t trf_method_row_38[] = {"9817","Lambert Conic Near-Conformal","","","Latitude of natural origin","Longitude of natural origin","","","Scale factor at natural origin","False easting","False northing","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","To compute the Lambert Conic Near-Conformal the following formulae are used;\
-\
-E = FE + r sin(theta)\
-N = FN + M + r sin(theta) tan(theta/2) using the natural origin rather than the false origin.\
-\
-Compute constants for the ellipse:\
-\
-n = (a-b)/(a+b)  ","For Projected Coordinate System: Deir ez Zor / Levant Zone\
-\
-Parameters:\
-Ellipsoid  Clarke 1880 (IGN)  a = 6378249.2 m  1/f = 293.46602\
-then b = 6356515.000    n = 0.001706682563\
-\
-Latitude Natural Origin  = 34o 39'00\" N = 0.604756586 rad\
-Longitude Na","1999-11-15 00:00:00","EPSG Guidance note #7; \"Geographic and Projected Coordinate System Transformations\"; section 1.4.1.1","EPSG","","99.811",NULL};
-datafile_rows_t trf_method_row_39[] = {"9818","American Polyconic","","","Latitude of natural origin","Longitude of natural origin","","","","False easting","False northing","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1999-10-20 00:00:00","US Geological Survey Professional Paper 1395; \"Map Projections - A Working Manual\";  J. Snyder","EPSG","","99.55",NULL};
-
-datafile_rows_t *trf_method_rows[] = {trf_method_row_1,trf_method_row_2,trf_method_row_3,trf_method_row_4,trf_method_row_5,trf_method_row_6,trf_method_row_7,trf_method_row_8,trf_method_row_9,trf_method_row_10,trf_method_row_11,trf_method_row_12,trf_method_row_13,trf_method_row_14,trf_method_row_15,trf_method_row_16,trf_method_row_17,trf_method_row_18,trf_method_row_19,trf_method_row_20,trf_method_row_21,trf_method_row_22,trf_method_row_23,trf_method_row_24,trf_method_row_25,trf_method_ro [...]
diff --git a/src/tiff/csv/trf_method.csv b/src/tiff/csv/trf_method.csv
deleted file mode 100644
index 62ef996..0000000
--- a/src/tiff/csv/trf_method.csv
+++ /dev/null
@@ -1,984 +0,0 @@
-"COORD_TRF_METHOD_CODE","CTRF_METHOD_EPSG_NAME","CTRF_METHOD_USER_NAME","DESCRIPTION","PARAM_1_NAME","PARAM_2_NAME","PARAM_3_NAME","PARAM_4_NAME","PARAM_5_NAME","PARAM_6_NAME","PARAM_7_NAME","PARAM_8_NAME","PARAM_9_NAME","PARAM_10_NAME","PARAM_11_NAME","PARAM_12_NAME","PARAM_13_NAME","PARAM_14_NAME","PARAM_15_NAME","PARAM_16_NAME","PARAM_17_NAME","PARAM_18_NAME","PARAM_19_NAME","PARAM_20_NAME","PARAM_21_NAME","PARAM_22_NAME","PARAM_23_NAME","PARAM_24_NAME","PARAM_25_NAME","PARAM_26_NAME" [...]
-9601,Longitude rotation,,This transformation allows calculation of coordinates in the target system by adding the parameter value to the coordinate values of the point in the source system.,Longitude rotation,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,Lon2 = Lon1 + longitude_rotation.,,1999-11-12 00:00:00,,EPSG,,99.79
-9602,Geodetic/geocentric conversions,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Latitude, P, and Longitude, L, in terms of Geographic Coordinate System (GCS) A may \
-be expressed in terms of a geocentric (earth centred) cartesian coordinate system X, Y, Z \
-with the Z axis corresponding with the Polar axis positive northwards, the X axis through \
-the intersection of the Greenwich meridian and equator, and the Y axis through the \
-intersection of the equator with longitude 90 degrees E. If the GCS's prime meridian is not \
-Greewich, longitudes must first be converted to their Greenwich equivalent. If the earth's \
-spheroidal semi major axis is a, semi minor axis  b, and inverse flattening 1/f,  then\
-\
-   XA=   (nu + hA) cos P cos L\
-   YA=   (nu + hA) cos P sin L\
-   ZA=  ((1 - e^2) nu + hA) sin P\
-\
-where nu is the prime vertical radius of curvature at latitude P and is equal to \
-   nu = a /(1 - e^2*sin^2(P))^0.5,\
-   P and L are respectively the latitude and longitude (related to Greenwich) of the \
-point \
-   h is height above the ellipsoid, (topographic height plus geoidal height), and\
-   e is the eccentricity of the ellipsoid where e^2 = (a^2 -b^2)/a^2 = 2f -f^2\
-                                                                                                                                                   Cartesian coordinates in geocentric coordinate system  B may be used \
-to derive geographical coordinates in terms of geographic coordinate system B by:\
-   P   =  arctan (ZB + e^2* nu*sin P) / (XB^2 + YB^2)^0.5 by iteration\
-   L   = arctan YB/XB\
-   hB  =  XB sec L sec P  - nu\
-\
-where LB is relative to Greenwich. If the geographic system has a non Greenwich prime \
-meridian, the Greenwich value of the local prime meridian should be applied to longitude.\
-\
-(Note that h is the height above the ellipsoid. This is the height value which is \
-delivered by Transit and GPS satellite observations but is not the topographic \
-height value which is normally used for national mapping and levelling operations. \
-The topographic height is usually the height above mean sea level or an alternative \
-level reference for the country. If one starts with a topographic height,  it will be \
-necessary to convert it to an ellipsoid height before using the above transformation \
-formulas. h = N + H, where N is the geoid height above the ellipsoid at the point \
-and is sometimes negative, and H is the height of the point above the geoid. The \
-height above the geoid is often taken to be that above mean sea level, perhaps with \
-a constant correction applied. Geoid heights of points above the nationally used \
-ellipsoid may not be readily available. For the WGS84 ellipsoid the value of N, \
-representing the height of the geoid relative to the ellipsoid, can vary between \
-values of -100m in the Sri Lanka area to +60m in the North Atlantic.)","Consider a North Sea point with coordinates derived by GPS satellite in the WGS84 geographical coordinate system with coordinates of:\
-\
-           latitude    53 deg 48 min 33.82 sec N, \
-           longitude 02 deg 07 min 46.38 sec E, \
-    and ellipsoidal height 73.0m, \
-\
-whose coordinates are required in terms of the ED50 geographical coordinate system which takes the International 1924 ellipsoid. The three parameter datum shift from WGS84 to ED50 for this North Sea area is given as dX = +84.87m, dY = +96.49m, dZ = +116.95m. \
-\
-The WGS84 geographical coordinates convert to the following geocentric values using the above formulas for X, Y, Z:\
-\
-   XA = 3771 793.97m\
-   YA =   140 253.34m\
-   ZA = 5124 304.35m\
-\
-Applying the quoted datum shifts to these, we obtain new geocentric values now related to ED50:\
-\
-   XB = 3771 878.84m\
-   YB =   140 349.83m\
-   ZB = 5124 421.30m\
-\
-These convert to ED50 values on the International 1924 ellipsoid as:\
-           latitude    53 deg 48 min 36.565 sec N, \
-           longitude 02 deg 07 min 51.477 sec E, \
-    and ellipsoidal height 28.02 m, \
-\
-Note that the derived height is referred to the International 1924 ellipsoidal surface and will need a further correction for the height of the geoid at this point in order to relate it to Mean Sea Level.",1996-09-18 00:00:00,"\"Transformation from spatial to geographical coordinates\"; B. R. Bowring; Survey Review number 181; July 1976.",EPSG,,97.29
-9603,Geocentric translations,,,X-axis translation,Y-axis translation,Z-axis translation,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"If  we may assume that the minor axes of the ellipsoids are parallel, then shifts dX, dY, dZ \
-in the sense from datum A to datum B may then be applied as\
-\
-   XB = XA + dX \
-   YB = YA + dY\
-   ZB = ZA + dZ","Given a three parameter datum shift from WGS84 to ED50 for this North Sea area is given as \
-dX = +84.87m, dY = +96.49m, dZ = +116.95m. \
-\
-The WGS84 geographical coordinates convert to the following GS84 geocentric values using \
-the above formulas for X, Y, Z:\
-\
-   XA = 3771 793.97m\
-   YA =   140 253.34m\
-   ZA = 5124 304.35m\
-\
-Applying the given datum shifts to these, we obtain new geocentric values now related \
-to ED50:\
-\
-   XB = 3771 878.84m\
-   YB =   140 349.83m\
-   ZB = 5124 421.30m",1996-09-18 00:00:00,POSC Epicentre 2.2.1,EPSG,,
-9604,Molodenski,,,X-axis translation,Y-axis translation,Z-axis translation,Semi-major axis length difference,Flattening difference,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1996-09-18 00:00:00,,EPSG,,
-9605,Abridged Molodenski,,,X-axis translation,Y-axis translation,Z-axis translation,Semi-major axis length difference,Flattening difference,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"As an alternative to the computation of the new latitude, longitude and height above ellipsoid in discrete steps through geocentric coordinates, the changes in these coordinates may be derived directly by formulas derived by Molodenski. Abridged versions of these formulas, which are quite satisfactory for three parame [...]
-\
-Dlat \" = [(-dX*sin(lat)*cos(lon)) - (dY*sin(lat)*sin(lon)) + (dZ*cos(lat)) + (((a*Df) + (f*Da))*sin(2*lat))] / (rho * sin(1\"))\
-\
-Dlon \" = (-dX*sin(lon) + dY*cos(lon)) / ((nu*cos(lat)) * sin(1\"))\
-\
-Dh = (dX*cos(lat)*cos(lon)) + (dY*cos(lat)*sin(lon)) + (dZ*sin(lat)) + ((a*Df + f*Da)*(sin(lat)^2)) - Da\
-\
-where the dX, dY and dZ terms are as before, and rho and nu are the meridian and prime vertical radii of curvature at the given latitude (lat) on the first ellipsoid (see section 1.4), Da is the difference in the semi-major axes (a1 - a2) of the first and second ellipsoids and Df  is the difference in the flattening of the two ellipsoids.\
-\
-The formulas for Dlat and Dlon indicate changes in latitude and longitude in arc-seconds.",,1999-04-22 00:00:00,,EPSG,,99.01
-9606,Position Vector 7-param. transformation,,,X-axis translation,Y-axis translation,Z-axis translation,X-axis rotation,Y-axis rotation,Z-axis rotation,Scale difference,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Transformation of coordinates from one geographic coordinate system into another (also known as a \"datum transformation\") is usually carried out as an implicit concatenation of three transformations:\
-[geographical to geocentric >> geocentric to geocentric >> geocentric to geographic]\
-\
-The middle part of the concatenated transformation, from geocentric to geocentric, is usually described as a simplified 7-parameter Helmert transformation, expressed in matrix form with 7 parameters, in what is known as the \"Bursa-Wolf\" formula:\
-\
-   (X�)             (  1       -Rz    +Ry)      (X)     (dX)\
-   (Y�)  =  M * ( +Rz     1      -Rx)  *  (Y)  + (dY)\
-   (Z�)              ( -Ry   +Rx       1 )      (Z)      (dZ)\
-\
-The parameters are commonly referred to defining the datum transformation \"from Datum 'A' to Datum 'B'\", whereby (X, Y, Z) are the geocentric coordinates of the point on Datum �A� and (X�, Y�, Z�) are the geocentric coordinates of the point on Datum �B�.  However, that does not define the parameters uniquely; neither is the definition of the parameters implied in the formula, as is often believed.  However, the following definition, which is consistent witth the \"Position Vector Trans [...]
-\
-(dX, dY, dZ)   :Translation vector, to be added to the point's position vector in coordinate system 'A' in order to transform from system 'A' to system 'B'; also: the coordinates of the origin of system 'A' in the 'B' frame.\
-\
-(Rx, Ry, Rz)   :Rotations to be applied to the point's vector.  The sign convention is such that a positive rotation about an axis is defined as a clockwise rotation of the position vector when viewed from the origin of the Cartesian coordinate system in the positive direction of that axis. E.g. a positive rotation about the Z-axis only from system 'A' to system 'B' will result in a larger longitude value for the point in system 'B'.\
-\
-M                  :	The scale correction to be made to the position vector in coordinate system 'A' in order to obtain the correct scale of coordinate system 'B'. M = (1+S*10 6), whereby S is the scale correction expressed in parts per million.  \
-\
-<<<<<This text continues in the description of the Coordinate Frame Rotation formula>>>>>","Input point: \
-Coordinate system: WGS72 (geographic 3D)\
-  Latitude =   55 deg 00 min 00 sec \
-  Longitude =  4 deg 00 min 00 sec \
-  Ellipsoidal height =  0 m\
-This transforms to cartesian geocentric coords:\
-    X = 3 657 660.66 (m)  \
-    Y =    255 768.55 (m)\
-    Z = 5 201 382.11 (m)\
-\
-Transformation parameters WGS72 to WGS84:\
-   dX (m) = 0.000 \
-   dY (m) = 0.000 \
-   dZ (m) = +4.5\
-   RX (\") = 0.000 \
-   RY (\") = 0.000\
-   RZ (\") = +0.554\
-   Scale (ppm) = +0.219\
-\
-Application of the 7 parameter Position Vector Transformation results in WGS 84 coordinates of:\
-   X = 3 657 660.78 (m)\
-   Y =    255 778.43 (m)\
-   Z = 5 201 387.75 (m)\
-This converts into:\
-   Latitude =   55 deg 00 min 00.090 sec\
-   Longitude =  4 deg 00 min 00.554 sec\
-   Ellipsoidal height =  +3.22 m",1996-09-18 00:00:00,,EPSG,,98.16
-9607,Coordinate Frame rotation,,,X-axis translation,Y-axis translation,Z-axis translation,X-axis rotation,Y-axis rotation,Z-axis rotation,Scale difference,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"<<<<<This text is continued from the description of the Position Vector Transformation formula>>>>>\
-\
-Although being common practice in particularly the European E&P industry Position Vector Transformation sign convention is not universally accepted.  A variation on this formula is also used, particularly in the USA E&P industry.  That formula is based on the same definition of translation and scale parameters, but a different definition of the rotation parameters.  The associated convention is known as the \"Coordinate Frame Rotation\" convention. \
-The formula is:\
-\
-   (X�)             (  1      +Rz      -Ry)    (X)      (dX)\
-   (Y�)  =  M * ( -Rz      1      +Rx) * (Y)  +  (dY)\
-   (Z�)              ( +Ry   -Rx        1 )    (Z)       (dZ)\
-\
-and the parameters are defined as:\
-\
-(dX, dY, dZ)   : Translation vector, to be added to the point's position vector in coordinate system 'A' in order to transform from system 'A' to system 'B'; also: the coordinates of the origin of system 'A' in the 'B' frame.\
-\
-(Rx, Ry, Rz)   : Rotations to be applied to the coordinate frame.  The sign convention is such that a positive rotation of the frame about an axis is defined as a clockwise rotation of the coordinate frame when viewed from the origin of the Cartesian coordinate system in the positive direction of that axis, that is a positive rotation about the Z-axis only from system 'A' to system 'B' will result in a smaller longitude value for the point in system 'B'.\
-\
-M                  : The scale factor to be applied to the position vector in coordinate system 'A' in order to obtain the correct scale of coordinate system 'B'. M = (1+S*10 6), whereby S is the scale correction expressed in parts per million.\
-\
-In the absence of rotations the two formulas are identical; the difference is solely in the rotations. The name of the second method reflects this.\
-\
-Note that the same rotation that is defined as positive in the first method is consequently negative in the second and vice versa.  It is therefore crucial that the convention underlying the definition of the rotation parameters is clearly understood and is communicated when exchanging datum transformation parameters, so that the parameters may be associated with the correct coordinate transformation method (algorithm).","The same example as for the Position Vector Transformation can be  [...]
-\
-Transformation parameters Coordinate Frame Rotation convention:\
-dX (m) = 0.000 \
-dY (m) = 0.000 \
-dZ (m) = +4.5 \
-RX (\") = 0.000\
-RY (\") = 0.000\
-RZ (\") = -0.554\
-Scale (ppm) = +0.219\
-\
-Please note that only the rotation has changed sign as compared to the Position Vector Transformation.",1996-09-18 00:00:00,,EPSG,,
-9608,Similarity transform,,,A1,A2 * m,A3 * n,B1,B2 * m,B3 * n,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1996-09-18 00:00:00,,EPSG,,
-9609,2-dimensional Affine transformation,,,A1,A2 * m,A3 * n,B1,B2 * m,B3 * n,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1996-09-18 00:00:00,,EPSG,,
-9610,2nd-order Polynomial function,,,Ordinate 1 of source evaluation point,Ordinate 2 of source evaluation point,Ordinate 1 of target evaluation point,Ordinate 2 of target evaluation point,A1,A2 * m,A3 * n,A4 * mm,A5 * mn,A6 * nn,B1,B2 * m,B3 * n,B4 * mm,B5 * mn,B6 * nn,,,,,,,,,,,,,,,,,,,,,,,,1996-09-18 00:00:00,,EPSG,,
-9611,3rd-order Polynomial function,,,Ordinate 1 of source evaluation point,Ordinate 2 of source evaluation point,Ordinate 1 of target evaluation point,Ordinate 2 of target evaluation point,A1,A2 * m,A3 * n,A4 * mm,A5 * mn,A6 * nn,A7 * mmm,A8 * mmn,A9 * mnn,A10 * nnn,B1,B2 * m,B3 * n,B4 * mm,B5 * mn,B6 * nn,B7 * mmm,B8 * mmn,B9 * mnn,B10 * nnn,,,,,,,,,,,,,,,,1996-09-18 00:00:00,,EPSG,,
-9612,4th-order Polynomial function,,,Ordinate 1 of source evaluation point,Ordinate 2 of source evaluation point,Ordinate 1 of target evaluation point,Ordinate 2 of target evaluation point,A1,A2 * m,A3 * n,A4 * mm,A5 * mn,A6 * nn,A7 * mmm,A8 * mmn,A9 * mnn,A10 * nnn,A11 * mmmm,A12 * mmmn,A13 * mmnn,A14 * mnnn,A15 * nnnn,B1,B2 * m,B3 * n,B4 * mm,B5 * mn,B6 * nn,B7 * mmm,B8 * mmn,B9 * mnn,B10 * nnn,B11 * mmmm,B12 * mmmn,B13 * mmnn,B14 * mnnn,B15 * nnnn,,,,"For TRF_POLYNOMIAL 1000, m=Latitu [...]
-9613,NADCON,,Geodetic transformation operating on geographic coordinate differences by bi-linear interpolation.  Used specifically for some NAD27<->NAD83 transformations in USA.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,Latitude difference gridded binary file,Longitude difference gridded binary file,,,,1996-09-18 00:00:00,US Coast and geodetic Survey - http://www.ngs.noaa.gov,EPSG,Input expects longitudes to be positive west.,
-9614,NTv1,,Geodetic transformation operating on geographic coordinate differences by bi-linear interpolation.  Used specifically for some NAD27<->NAD83 transformations in Canada.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,Latitude and longitude difference file,,,,,1997-11-13 00:00:00,Geomatics Canada - Geodetic Survey Division.,EPSG,Superceded in 1997 by NTv2 (transformation method code 9615).   Input expects longitudes to be positive west.,
-9615,NTv2,,Geodetic transformation operating on geographic coordinate differences by bi-linear interpolation.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,Latitude and longitude difference file,,,,,1997-11-13 00:00:00,http://www.geod.nrcan.gc.ca/products/html-public/GSDapps/English/NTv2_Fact_Sheet.html,EPSG,Supercedes  NTv1 (transformation method code 9614).  Input expects longitudes to be positive west.,
-9616,Vertical Offset,,This transformation allows calculation of ordinate in the target system by adding the parameter value to the ordinate value of the point in the source system.,Vertical offset,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,V2 = [(V1 * U1) + (O12 * Uoff)] * (m / U2) where V2 = value in second vertical coordinate system; V1 = value in first system; O12 is the value of the the origin of system 2 in system 1; m is unit direction multiplier (m=1 if both systems are height or both ar [...]
-9617,Madrid to ED50,,,,,,,A,B,C,D,E,F,G,H,J,,,,,,,,,,,,,,,,,,,,,,,,,"The original geographic coordinate system for the Spanish mainland was based on Madrid 1870 datum, Struve 1860 ellipsoid, with longitudes related to the Madrid meridian.  Three polynomial expressions have been empirically derived by El Servicio Geogr�fico del Ej�rcito to convert geographical coordinates based on this system to equivalent values based on the European Datum of 1950 (ED50).  The polynomial coefficients der [...]
-\
-The polynomial expressions transformations are:\
-\
-      dLat seconds = A + (B*lon) + (C*lat) + (D*h)\
-      dLon seconds =  (E+F) + (G*lon) + (H*lat) + (J*h)\
-\
-where latitude lat and longitude lon are in decimal degrees referred to the Madrid 1870 (Madrid) geographic coordinate system and h in metres.  E is the longitude (in seconds) of the Madrid meridian measured from the Greenwich meridian; it is the value to be applied to a longitude relative to the Madrid meridian to transform it to a longitude relative to the Greenwich meridan.\
-\
-The results of these expressions are applied through the formulae:\
-Lat(ED50) = Lat(M1870(M))  + dLat\
-and Lon(ED50) = Lon(M1870(M))  + dLon.","Input point coordinate system: Madrid 1870 (Madrid) (geographic 3D)\
-   Latitude    =  42 deg 38 min 52.77 sec N = 42.647992 degrees\
-   Longitude  =    3 deg 39 min 34.57 sec E of Madrid	\
-                         = +3.659603 degrees from the Madrid meridian.\
-   Height =  0 m\
-\
-For the north zone transformation:\
-A = 11.3287790\
-B = -0.0385200\
-C = -0.1674000\
-D = 0.0000379\
-E = -13276.58\
-F = 2.5079425\
-G = -0.0086400\
-H = 0.835200\
-J = -0.0000038\
-\
-dLat = +4.05 seconds\
-\
-Then ED50 latitude = 42 deg 38 min 52.77 sec N + 4.05sec\
-= 42 deg 38 min 56.82 sec N\
-\
-\
-dLon = -13270.54 seconds  = -3 deg 41 min 10.54 sec\
-\
-Then ED50 longitude = 3 deg 39 min 34.57 sec E - 3 deg 41 min 10.54 sec\
-= 0 deg 01 min 35.97 sec W of Greenwich.",1999-11-15 00:00:00,Institut de Geomatica; Barcelona,EPSG,,99.284  99.82
-9618,Geographical and Height Offsets,,This transformation allows calculation of coordinates in the target system by adding the parameter value to the coordinate values of the point in the source system.,Latitude offset,Longitude offset,Gravity-related to ellipsoid height,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,Lat2 = Lat1 + latitude_offset;  Lon2 = Lon1 + longitude_offset; EllipsoidHeight2 = GravityHeight1 + gravity-related_to_ellipsoid_height.,,1999-11-12 00:00:00,,EPSG,,99.79
-9619,Geographical Offsets,,This transformation allows calculation of coordinates in the target system by adding the parameter value to the coordinate values of the point in the source system.,Latitude offset,Longitude offset,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,Lat2 = Lat1 + latitude_offset;  Lon2 = Lon1 + longitude_offset.,,1999-11-12 00:00:00,,EPSG,,99.79
-9620,Norway Offshore Interpolation,,,,,,,,Geod. tfm. code for northern boundary,Geod. tfm. code for southern boundary,,,,,,,,,,,,,,,,,,,,,,,,,,,,Geod. tfm. name for northern boundary,Geod. tfm. name for southern boundary,,,,1999-04-22 00:00:00,"Norwegian Mapping Authority note of 13-Feb-1991 \"Om Transformasjon mellom Geodetiske Datum i Norge\".",EPSG,,
-9801,Lambert Conic Conformal (1SP),,,Latitude of natural origin,Longitude of natural origin,,,Scale factor at natural origin,False easting,False northing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"To derive the projected Easting and Northing coordinates of a point with geographical coordinates (lat,lon) the formulas for the one standard parallel case are:\
-\
-E = FE + r sin(theta)\
-N = FN + r0 - r cos(theta)\
-where\
-n = sin lat0\
-r = a F t^n k0     for r0, and r\
-m = cos(lat)/(1 - e^2 sin^2(lat))^0.5     for m0, lat0, and m2, lat2 where lat1 and lat2 are the latitudes of the standard parallels.\
-t  = tan(pi/4 - lat/2)/[(1 - e sin(lat))/(1 + e sin(lat))]^(e/2)   for t0 and t using lat0 and lat respectively.\
-F = m0/(n  t1^n)\
-theta = n(lon - lon0)\
-\
-The reverse formulas to derive the latitude and longitude of a point from its Easting and Northing values are:\
-\
-lat = pi/2 - 2arctan{t'[(1 - esin(lat))/(1 + esin(lat))]^(e/2)}\
-lon = theta'/n +lon0\
-where\
-theta' = arctan[(E - FE)/{r0 -(N - FN)}]\
-r' = +/-[(E - FE)^2 + {r0 - (N - FN)}^2]^0.5\
-t' = (r'/a k0 F)^(1/n)\
-and n, F, and rF are derived as for the forward calculation.","For Projected Coordinate System JAD69 / Jamaica National Grid\
-\
-Parameters:\
-Ellipsoid:  Clarke 1866, a = 6378206.400 m., 1/f = 294.97870\
-                                   then  e = 0.08227185 and e^2 = 0.00676866\
-\
-Latitude Natural Origin         18 deg 00 min 00 sec N  =  0.31415927 rad\
-Longitude Natural Origin     77 deg 00 min 00 sec W = -1.34390352 rad\
-Scale factor at origin            1.000000\
-False Eastings  FE               250000.00 m\
-False Northings FN              150000.00 m\
-\
-Forward calculation for: \
-Latitude:     17 deg 55 min 55.80 sec N  =  0.31297535 rad\
-Longitude:  76 deg 56 min 37.26 sec W = -1.34292061 rad\
-first gives\
-m0    =  0.95136402        t0 =  0.72806411\
-F       =  3.39591092        n  =  0.30901699\
-r        =  19643955.26     r0  =  19636447.86\
-theta =  0.00030374        t   =  0.728965259\
-\
-Then Easting E   =     255966.58 m\
-         Northing N =      142493.51 m\
-\
-Reverse calculation for the same easting and northing first gives\
-\
-theta' =  0.000303736\
-t'        =  0.728965259\
-m0     =  0.95136402\
-r'        =  19643955.26\
-\
-Then Latitude     = 17 deg 55 min 55.800 sec N\
-         Longitude  = 76 deg 56 min 37.260 sec W",1996-09-18 00:00:00,"EPSG Guidance note #7; \"Geographic and Projected Coordinate System Transformations\"; section 1.4.1",EPSG,,
-9802,Lambert Conic Conformal (2SP),,,Latitude of false origin,Longitude of false origin,Latitude of 1st standard parallel,Latitude of 2nd standard parallel,,Easting at false origin,Northing at false origin,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"To derive the projected Easting and Northing coordinates of a point with geographical coordinates (lat,lon) the formulas for the one standard parallel case are:\
-\
-E = EF + r sin(theta)\
-N = NF + rF - r cos(theta)\
-where\
-m = cos(lat)/(1 - e^2 sin^2(lat))^0.5     for m1, lat1, and m2, lat2 where lat1 and lat2 are the latitudes of the standard parallels.\
-t  = tan(pi/4 - lat/2)/[(1 - e sin(lat))/(1 + e sin(lat))]^(e/2)   for t1, t2, tF and t using lat1, lat2, latF and lat respectively.\
-n = (loge(m1) - loge(m2))/(loge(t1) - loge(t2))\
-F = m1/(n  t1^n)\
-r =  a F t^n         for rF and r, where rF is the radius of the parallel of latitude of the false origin.\
-theta = n(lon - lon0)\
-\
-The reverse formulas to derive the latitude and longitude of a point from its Easting and Northing values are:\
-\
-lat = pi/2 - 2arctan{t'[(1 - esin(lat))/(1 + esin(lat))]^(e/2)}\
-lon = theta'/n +lon0\
-where\
-r' = +/-[(E - EF)^2 + {rF - (N - NF)}^2]^0.5 , taking the sign of n\
-t' = (r'/aF)^(1/n)\
-theta' = arctan [(E- EF)/(rF - (N- NF))]\
-and n, F, and rF are derived as for the forward calculation.","For Projected Coordinate System NAD27 / Texas South Central\
-\
-Parameters:\
-Ellipsoid  Clarke 1866, a = 6378206.400 metres = 20925832.16 US survey feet\
-                                   1/f = 294.97870\
-then e = 0.08227185 and e^2 = 0.00676866\
-\
-First Standard Parallel          28o23'00\"N  =   0.49538262 rad\
-Second Standard Parallel    30o17'00\"N  =   0.52854388 rad\
-Latitude False Origin            27o50'00\"N  =   0.48578331 rad\
-Longitude False Origin         99o00'00\"W = -1.72787596 rad\
-Easting at false origin           2000000.00  US survey feet\
-Northing at false origin          0.00  US survey feet\
-\
-Forward calculation for: \
-Latitude       28o30'00.00\"N  =  0.49741884 rad\
-Longitude    96o00'00.00\"W = -1.67551608 rad\
-\
-first gives :\
-m1    = 0.88046050      m2 = 0.86428642\
-t        = 0.59686306      tF  = 0.60475101\
-t1      = 0.59823957      t2 = 0.57602212\
-n       = 0.48991263       F = 2.31154807\
-r        = 37565039.86    rF = 37807441.20\
-theta = 0.02565177\
-\
-Then Easting E =      2963503.91 US survey feet\
-         Northing N =      254759.80 US survey feet\
-\
-Reverse calculation for same easting and northing first gives:\
-theta' = 0.025651765     r' = 37565039.86\
-t'        = 0.59686306\
-\
-Then Latitude     	= 28o30'00.000\"N\
-         Longitude   = 96o00'00.000\"W",1999-04-22 00:00:00,"EPSG Guidance note #7; \"Geographic and Projected Coordinate System Transformations\"; section 1.4.1",EPSG,,99.281
-9803,Lambert Conic Conformal (2SP Belgium),,,Latitude of false origin,Longitude of false origin,Latitude of 1st standard parallel,Latitude of 2nd standard parallel,,Easting at false origin,Northing at false origin,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Since 1972 a modified form of the two standard parallel case has been used in Belgium.  For the Lambert Conic Conformal (2 SP Belgium), the formulas for the standard two standard parallel case are used except for: \
-Easting, E = EF + r sin (theta - alpha)\
-Northing, N = NF + rF - r cos (theta - alpha)\
-and for the reverse formulas\
-lon = ((theta' + alpha)/n) +lon0\
-where alpha = 29.2985 seconds.","For Projected Coordinate System Belge l972 / Belge Lambert 72\
-\
-Parameters:\
-Ellipsoid  International 1924,  a = 6378388 metres\
-                                              1/f = 297\
-then e = 0.08199189 and e^2 = 0.006722670\
-\
-First Standard Parallel        49o50'00\"N       =   0.86975574 rad\
-Second Standard Parallel  51o10'00\"N       =   0.89302680 rad\
-Latitude False Origin          90o00'00\"N       =   1.57079633 rad\
-Longitude False Origin         4o21'24.983\"E = 0.07604294 rad\
-Easting at false origin EF        150000.01  metres\
-Northing at false origin NF    5400088.44  metres\
-\
-Forward calculation for: \
-Latitude        50o40'46.461\"N  =  0.88452540 rad\
-Longitude       5o48'26.533\"E   = 0.10135773 rad\
-\
-first gives :\
-m1     = 0.64628304         m2 = 0.62834001\
-t        = 0.59686306          tF  = 0.00000000\
-t1      = 0.36750382           t2 = 0.35433583\
-n       = 0.77164219            F = 1.81329763\
-r        = 37565039.86         rF = 0.00\
-alpha =	0.00014204     theta = 0.01953396\
-\
-Then Easting E  =      251763.20 metres\
-         Northing N =      153034.13 metres\
-\
-Reverse calculation for same easting and northing first gives:\
-theta' = 0.01939192      r' = 548041.03\
-t' = 0.35913403\
-Then Latitude   =    50o40'46.461\"N\
-         Longitude =     5o48'26.533\"E",1999-04-22 00:00:00,"EPSG Guidance note #7; \"Geographic and Projected Coordinate System Transformations\"; section 1.4.1",EPSG,,99.281
-9804,Mercator (1SP),,,Latitude of natural origin,Longitude of natural origin,,,Scale factor at natural origin,False easting,False northing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"The formulas to derive projected Easting and Northing coordinates are:\
-\
-E = FE + a*k0(lon - lon0)              \
-N = FN + a*k0* ln{tan(pi/4 + lat/2)[(1 - esin(lat))(1 + esin(lat))]^e/2} where symbols are as listed above and logarithms are natural.\
-\
-The reverse formulas to derive latitude and longitude from E and N values are:\
-\
-lat = chi + (esq/2 + 5e^4/24 + e^6/12 + 13e^8/360) sin(2chi) \
-+ (7e^4/48 + 29e^6/240 + 811e^8/11520) sin(4chi)\
-+ (7e^6/120 +  81e^8/1120) sin(6chi)  + (4279e^8/161280) sin(8chi)\
-\
-where chi = pi/2 - 2 arctan t\
-t = B^((FN-N)/a*k0) \
-B = base of the natural logarithm, 2.7182818...\
-and  for the 2 SP Case, k0 is calculated as for the forward transformation above.\
-lon  =  ((E - FE)/a*k0)  + lon0","For Projected Coordinate System Makassar / NEIEZ\
-\
-Parameters:\
-Ellipsoid   Bessel 1841  a = 6377397.155 m   1/f = 299.15281\
-then e = 0.08169683\
-\
-Latitude Natural Origin         00o00'00\"N  = 0.0000000 rad\
-Longitude Natural Origin    110o00'00\"E  = 1.91986218 rad\
-Scale factor ko                  0.997\
-False Eastings FE              3900000.00 m\
-False Northings FN              900000.00 m\
-\
-Forward calculation for: \
-Latitude            3o00'00.00\"S   = -0.05235988 rad\
-Longitude     120o00'00.00\"E   =  2.09439510 rad\
-gives\
-Easting  E   =      5009726.58 m\
-Northing N  =        569150.82 m\
-\
-Reverse calculation for same easting and northing first gives :\
-t    = 1.0534121\
-chi = -0.0520110\
-\
-Then Latitude     =   3o00'00.000\"S\
-         Longitude  = 120o00'00.000\"E",1996-09-18 00:00:00,"EPSG Guidance note #7; \"Geographic and Projected Coordinate System Transformations\"; section 1.4.2",EPSG,,
-9805,Mercator (2SP),,,Latitude of 1st standard parallel,Longitude of natural origin,,,,False easting,False northing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"The formulas to derive projected Easting and Northing coordinates are:\
-\
-For the two standard parallel case, k0 is first calculated from\
-\
-k0 = cos(latSP1)/(1 - e^2*sin^2(latSP1))^0.5 \
- \
-where latSP1 is the absolute value of the first standard parallel (i.e. positive).  \
-\
-Then, for both one and two standard parallel cases, \
-\
-E = FE + a*k0(lon - lon0)              \
-N = FN + a*k0* ln{tan(pi/4 + lat/2)[(1 - esin(lat))(1 + esin(lat))]^e/2} where symbols are as listed above and logarithms are natural.\
-\
-The reverse formulas to derive latitude and longitude from E and N values are:\
-\
-lat = chi + (esq/2 + 5e^4/24 + e^6/12 + 13e^8/360) sin(2chi) \
-+ (7e^4/48 + 29e^6/240 + 811e^8/11520) sin(4chi)\
-+ (7e^6/120 +  81e^8/1120) sin(6chi)  + (4279e^8/161280) sin(8chi)\
-\
-where chi = pi/2 - 2 arctan t\
-t = B^((FN-N)/a*k0) \
-B = base of the natural logarithm, 2.7182818...\
-and  for the 2 SP Case, k0 is calculated as for the forward transformation above.\
-lon  =  ((E - FE)/a*k0)  + lon0","For Projected Coordinate System Pulkovo 1942 / Mercator Caspian Sea\
-\
-Parameters:\
-Ellipsoid  Krassowski 1940   a = 6378245.00m   1/f = 298.300\
-then e = 0.08181333 and e^2 = 0.00669342\
-\
-Latitude first SP                             42o00'00\"N = 0.73303829 rad\
-Longitude Natural Origin                51o00'00\"E = 0.89011792 rad\
-False Eastings FE                          0.00 m\
-False Northings (at equator) FN     0.00 m\
-  \
-then natural origin at latitude of 0oN has scale factor k0=  0.74426089\
-\
-Forward calculation for: \
-Latitude        53o00'00.00\"N = 0.9250245 rad\
-Longitude     53o00'00.00\"E  = 0.9250245 rad\
-\
-gives Easting E   =     165704.29 m \
-          Northing N =   5171848.07 m\
-\
-Reverse calculation for same easting and northing first gives :\
-t = 0.33639129    chi = 0.92179596\
-\
-Then Latitude     =  53o00'00.000\"N\
-          Longitude  =  53o00'00.000\"E",1996-09-18 00:00:00,"EPSG Guidance note #7; \"Geographic and Projected Coordinate System Transformations\"; section 1.4.2",EPSG,,
-9806,Cassini-Soldner,,,Latitude of natural origin,Longitude of natural origin,,,,False easting,False northing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"The formulas to derive projected Easting and Northing coordinates are:\
-\
-Easting E = FE + nu[A - TA^3/6 -(8 - T + 8C)TA^5/120]\
-\
-Northing N = FN + M - M0 + nu*tan(lat)*[A^2/2 + (5 - T + 6C)A^4/24]\
-\
-where A = (lon - lon0)cos(lat)\
-T = tan^2(lat)\
-C = e2 cos2*/(1 - e2)        nu = a /(1 - esq*sin^2(lat))^0.5 \
-and M, the distance along the meridian from equator to latitude lat, is given by\
-M = a[1 - e^2/4 - 3e^4/64 - 5e^6/256 -....)*lat - (3e^2/8 + 3e^4/32 + 45e^6/1024 +....)sin(2*lat) + (15e^4/256 + 45e^6/1024 +.....)sin(4*lat) - (35e^6/3072 + ....)sin(6*lat) + .....]\
-with lat in radians.\
-\
-M0 is the value of M calculated for the latitude of the chosen origin. This may not necessarily be chosen as the equator.\
-\
-To compute latitude and longitude from Easting and Northing the reverse formulas are:\
-lat = lat1 - (nu1tan(lat1)/rho1)[D2/2 - (1 + 3*T1)D^4/24]\
-lon =  lon0 + [D - T1*D^3/3 + (1 + 3*T1)T1*D^5/15]/cos(lat1)\
-\
-where lat1 is the latitude of the point on the central meridian which has the same Northing as the point whose coordinates are sought, and is found from:\
-lat1 = mu1 + (3*e1/2 - 27*e1^3/32 +.....)sin(2*mu1) + (21*e1^2/16 - 55*e1^4/32 + ....)sin(4*mu1)+ (151*e1^3/96 +.....)sin(6*mu1) + (1097*e1^4/512 - ....)sin(8*mu1) + ......\
-where\
-e1 = [1- (1 - esq)^0.5]/[1 + (1 - esq)^0.5]\
-mu1 = M1/[a(1 - esq/4 - 3e^4/64 - 5e^6/256 - ....)]\
-M1 = M0 + (N - FN)\
-T1 = tan^2(lat1)\
-D = (E - FE)/nu1","For Projected Coordinate System Trinidad 1903 / Trinidad Grid \
-Parameters:\
-Ellipsoid   Clarke 1858     a = 20926348 ft    = 31706587.88 links\
-                                        b = 20855233 ft\
-\
-then 1/f = 294.97870 and e^2 = 0.00676866\
-\
-Latitude Natural Origin       10o26'30\"N  =  0.182241463 rad\
-Longitude Natural Origin    61o20'00\"W = -1.07046861 rad\
-False Eastings FE              430000.00 links\
-False Northings FN            325000.00 links\
-\
-Forward calculation for: \
-Latitude       10o00'00.00\" N = 0.17453293 rad\
-Longitude    62o00'00.00\"W = -1.08210414 rad\
-\
-A = -0.01145876      C = 0.00662550\
-T = 0.03109120      M = 5496860.24    nu = 31709831.92     M0 = 5739691.12\
-\
-Then Easting E    =  66644.94 links\
-          Northing N =  82536.22 links\
-\
-Reverse calculation for same easting and northing first gives :\
-e1    =   0.00170207       D  =     -0.01145875\
-T1   = 0.03109544         M1 =      5497227.34\
-nu1  = 31709832.34       mu1 =    0.17367306\
-phi1 = 0.17454458         rho1 =    31501122.40\
-\
-\
-Then Latitude     = 10o00'00.000\"N\
-         Longitude  =  62o00'00.000\"W",1996-09-18 00:00:00,"EPSG Guidance note #7; \"Geographic and Projected Coordinate System Transformations\"; section 1.4.3",EPSG,,
-9807,Transverse Mercator,,,Latitude of natural origin,Longitude of natural origin,,,Scale factor at natural origin,False easting,False northing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"The formulas to derive the projected Easting and Northing coordinates are in the form of a series as follows:\
-\
-Easting, E =  FE + k0*nu[A + (1 - T + C)A^3/6 + (5 - 18T + T^2 + 72C - 58e'sq)A^5/120]	\
-\
-Northing, N =  FN + k0{M - M0 + nu*tan(lat)[A^2/2 + (5 - T + 9C + 4C^2)A^4/24 + (61 - 58T + T^2 + 600C - 330e'sq)A^6/720]} \
-where T = tan^2(lat)                nu = a /(1 - esq*sin^2(lat))^0.5\
-C = esq*cos^2(lat)/(1 - esq)\
-A = (lon - lon0)cos(lat), with lon and lon0 in radians.\
-M = a[(1 - esq/4 - 3e^4/64 - 5e^6/256 -....)lat - (3esq/8 + 3e^4/32 + 45e^6/1024+....)sin(2*lat) + (15e^4/256 + 45e^6/1024 +.....)sin(4*lat) - (35e^6/3072 + ....)sin(6*lat) + .....]\
-with lat in radians and M0 for lat0, the latitude of the origin, derived in the same way.\
-\
-The reverse formulas to convert Easting and Northing projected coordinates to latitude and longitude are:\
-\
-lat = lat1 - (nu1*tan(lat1)/rho1)[D^2/2 - (5 + 3*T1 + 10*C1 - 4*C1^2 - 9*e'^2)D^4/24 + (61 + 90*T1 + 298*C1 + 45*T1^2 - 252*e'^2 - 3*C1^2)D^6/720]\
-lon = lon0 + [D - (1 + 2*T1 + C1)D^3/6 + (5 - 2*C1 + 28*T1 - 3*C1^2 + 8*e'^2 + 24*T1^2)D^5/120] / cos(lat1)\
-where lat1 may be found as for the Cassini projection from:\
-\
-lat1 = mu1 + ((3*e1)/2 - 27*e1^3/32 +.....)sin(2*lat1) + (21*e1^2/16 -55*e1^4/32 + ....)sin(4*lat1)+ (151*e1^3/96 +.....)sin(6*lat1) + (1097*e1^4/512 - ....)sin(8*lat1) + ......\
-and where  nu1 = a /(1 - esq*sin^2(lat1))^0.5                                     rho1 = a(1 - esq)/(1 - esq*sin^2(lat1))^1.5\
-e1 = [1- (1 - esq)^0.5]/[1 + (1 - esq)^0.5]\
-mu1 = M1/[a(1 - esq/4 - 3e^4/64 - 5e^6/256 - ....)]\
-M1 = M0 + (N - FN)/k0\
-T1 = tan^2(lat1)\
-C1 = e'^2*cos^2(lat1)\
-D = (E - FE)/(nu1*k0), with nu1 = nu for lat1\
-\
-For areas south of the equator the value of latitude lat will be negative and the formulas above, to compute the E and N,  will automatically result in the correct values. Note that the false northings of the origin, if the equator, will need to be large to avoid negative northings and for the UTM projection is in fact 10,000,000m. Alternatively, as in the case of Argentina's Transverse Mercator (Gauss-Kruger) zones, the origin is at the south pole with a northings of zero. However each  [...]
-different zones having the same eastings, every point in the country, irrespective of its projection zone, will have a unique set of projected system coordinates. Strict application of the above formulas, with south latitudes negative, will result in the derivation of the correct Eastings and Northings. \
-\
-Similarly, in applying the reverse formulas to determine a latitude south of the equator, a negative sign for lat results from a negative lat1 which in turn results from a negative M1.","For Projected Coordinate System OSGB 1936 / British National Grid\
-\
-Parameters:\
-Ellipsoid  Airy 1830  a = 6377563.396 m  1/f = 299.32496\
-then e'^2 = 0.00671534 and e^2 = 0.00667054\
-\
-Latitude Natural Origin         49o00'00\"N   = 0.85521133 rad\
-Longitude Natural Origin        2o00'00\"W  = -0.03490659 rad\
-Scale factor ko                     0.9996013                                                                                              False Eastings FE                 400000.00 m\
-False Northings FN              -100000.00 m\
-\
-Forward calculation for: \
-Latitude       50o30'00.00\"N  = 0.88139127 rad\
-Longitude    00o30'00.00\"E  = 0.00872665 rad\
-A  = 0.02775415       C = 0.00271699\
-T =  1.47160434       M = 5596050.46\
-M0 = 5429228.60     nu  = 6390266.03\
-\
-Then Easting E =        577274.99 m\
-          Northing N =       69740.50 m\
-\
-Reverse calculations for same easting and northing first gives :\
-e1 =    0.00167322      mu1 = 0.87939562\
-M1 = 5599036.80        nu1 = 6390275.88\
-phi1  = 0.88185987      D = 0.02775243\
-rho1 =6372980.21       C1 =  0.00271391\
-T1 = 1.47441726\
-\
-Then Latitude       = 50o30'00.000\"N\
-         Longitude    = 00o30'00.000\"E",1996-09-18 00:00:00,"EPSG Guidance note #7; \"Geographic and Projected Coordinate System Transformations\"; section 1.4.4",EPSG,,
-9808,Transverse Mercator (South Orientated),,,Latitude of natural origin,Longitude of natural origin,,,Scale factor at natural origin,False easting,False northing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"For the mapping of southern Africa a south oriented Transverse Mercator projection is used. Here the coordinate axes are called Westings and Southings and increment to the West and South from the origin respectively.  The Transverse Mercator formulas need to \
-be modified to cope with this arrangement with\
-\
-Westing, W = k0 nu[A + (1 - T + C)A^3/6 + (5 - 18*T + T^2 + 72*C - 58*e'^2)A^5/120] - FE\
-\
-Southing, S = k0{M - M0 + nu*tan(lat)*[A^2/2 + (5 - T + 9*C + 4*C^2)A^4/24 + (61 - 58*T + T^2 + 600*C - 330*e'^2)A^6/720]}- FN\
-\
-In these formulas the terms FE and FN have been retained for consistency of the terminology.  For the reverse formulas, those for the standard Transverse Mercator above apply, with the exception that:\
-\
-M1 = M0 + (S + FN)/k0\
-and D = (W + FE)/(nu1*k0), with nu1 = nu for lat1",,1996-09-18 00:00:00,"EPSG Guidance note #7; \"Geographic and Projected Coordinate System Transformations\"; section 1.4.4",EPSG,,
-9809,Oblique Stereographic,,,Latitude of natural origin,Longitude of natural origin,,,Scale factor at natural origin,False easting,False northing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"The coordinate transformation from geographical to projected coordinates is executed via the distance and azimuth of the point from the centre point or origin. For a sphere the formulas are relatively simple. For the ellipsoid the parameters defining the conformal sphere at the tangent point as origin are first de [...]
-\
-Oblique and Equatorial Stereographic Formula\
-\
-Given the geodetic origin of the projection at the tangent point (lat0, lon0), the parameters defining the conformal sphere are:\
-\
-R= sqrt( rho0 * nu0)\
-n=  sqrt{1+[(e2*cos^4(lat0))/(1-e2)}\
-c=  [(n+sin(lat0)) (1-sin(chi0))]/[(n-sin(lat0)) (1+sin(chi0))]\
-\
-where:	sin(chi0) = (w1-1)/(w1+1)\
-w1 = (S1.(S2)^e)^n\
-S1 = (1+sin(lat0))/(1-sin(lat0))\
-S2 = (1-e sin(lat0))/(1+e sin(lat0))\
-\
-The conformal latitude and longitude (chi0,lambda0) of the origin are then computed from :\
-\
-chi0 = asin[(w2-1)/(w2+1)]\
-\
-where S1 and S2 are as above and  w2 = c (S1(S2)^e)^n\
- \
-lambda0  = lon0\
-\
-For any point with geodetic coordinates (lat, lon) the equivalent conformal latitude and longitude (chi, lambda) are computed from \
-lambda = n(lon-lambda0) + lambda0\
-chi = asin[(w-1)/(w+1)]\
-\
-where w = c (Ss (Sb)^e)^n\
-Sa = (1+sin(lat))/(1-sin(lat))\
-Sb = (1-e.sin(lat))/(1+e.sin(lat))\
- \
-Then B = [1+sin(chi) sin(chi0) + cos(chi) cos(chi0) cos(lambda-lambda0)]\
-\
-N = FN + 2 R k0 [sin(chi) cos(chi0) - cos(chi) sin(chi0) cos(lambda-lambda0)] / B\
-\
-E = FE + 2 R k0 cos(chi) sin(lambda-lambda0) / B\
-\
-\
-The reverse formulae to compute the geodetic coordinates from the grid coordinates involves computing the conformal values, then the isometric latitude and finally the geodetic values.\
-\
-The parameters of the conformal sphere and conformal latitude and longitude at the origin are computed as above. Then for any point with Stereographic grid coordinates (E,N) :\
-\
-chi = chi0 + 2 atan[{(N-FN)-(E-FE) tan (j/2)} / (2 R k0)]\
-\
-lambda = j + 2 i + lambda0\
-\
-where g = 2 R k0 tan(pi/4 - chi0/2)\
-h = 4 R k0 tan(chi0) + g\
-i = atan[(E-FE) / {h+(N-FN)}]\
-j = atan[(E-FE) / (g-(N-FN)] - i\
-\
-Geodetic longitude lon = (lambda-lambda0 ) / n +  lambda0\
-\
-Isometric latitude psi = 0.5 ln [(1+ sin(chi)) / { c (1-  sin(chi))}] / n\
-\
-First approximation lat1 = 2 atan(e^psi)  - pi/2  where e=base of natural logarithms.\
-\
-psii = isometric latitude at lati\
-\
-where psii= ln[{tan(lati/2 + pi/4}  {(1-e sin(lati))/(1+e sin(lati))}^(e/2)]\
- \
-Then iterate lat(i+1) = lati - ( psii - psi ) cos(lati) (1 -e^2 sin^2(lati)) / (1 - e^2)\
-\
-until the change in lat is sufficiently small.\
-\
-\
-For Oblique Stereographic projections centred on points in the southern hemisphere,  the signs of E, N, lon0, lon,  must be reversed to be used in the equations and lat will be negative anyway as a southerly latitude.\
-\
-An alternative approach is given by Snyder, where, instead of defining a single conformal sphere at the origin point, the conformal latitude at each point on the ellipsoid is computed. The conformal longitude is then always equivalent to the geodetic longitude. This approach is a valid alternative to the above, but gives slightly different results away from the origin point.  It is therefore considered to be a different projection method.","For Projected Coordinate System RD / Netherlands New\
-\
-Parameters:\
-Ellipsoid   Bessel 1841    a = 6377397.155 m    1/f = 299.15281\
-then e = 0.08169683\
-\
-Latitude Natural Origin      52o09'22.178\"N  = 0.910296727 rad\
-Longitude Natural Origin     5o23'15.500\"E  =  0.094032038 rad\
-Scale factor k0                 0.9999079\
-False Eastings FE             155000.00 m\
-False Northings FN           463000.00 m\
-\
-Forward calculation for: \
-\
-Latitude    53oN = 0.925024504 rad\
-Longitude   6oE = 0.104719755 rad\
-\
-first gives the conformal sphere constants:\
-\
-rho0 = 6374588.71    nu0 = 6390710.613\
-R = 6382644.571    n = 1.000475857    c  = 1.007576465\
-\
-where S1 = 8.509582274  S2 = 0.878790173  w1 = 8.428769183\
-sin chi0 = 0.787883237\
-\
-w   = 8.492629457   chi0 = 0.909684757      D0 = d0 \
-\
-for the point  chi  = 0.924394997    D = 0.104724841\
-\
-hence B = 1.999870665    N = 557057.739    E = 196105.283\
-\
-reverse calculation for the same Easting and Northing first gives:\
-\
-g = 4379954.188    h = 37197327.96   i = 0.001102255   j = 0.008488122\
-\
-then  D = 0.10472467  Longitude = 0.104719584 rad =  6 deg E\
-\
-chi  = 0.924394767    psi = 1.089495123\
-phi1 = 0.921804948       psi1 = 1.084170164\
-phi2 = 0.925031162       psi2 = 1.089506925\
-phi3 = 0.925024504       psi3 = 1.089495505\
-phi4 = 0.925024504\
-\
-Then Latitude      = 53o00'00.000\"N\
-          Longitude   =   6o00'00.000\"E",1999-11-15 00:00:00,"EPSG Guidance note #7; \"Geographic and Projected Coordinate System Transformations\"; section 1.4.6",EPSG,,99.811
-9810,Polar Stereographic,,,Latitude of natural origin,Longitude of natural origin,,,Scale factor at natural origin,False easting,False northing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"For the forward transformation from latitude and longitude,\
-\
-E = FE + rho sin(lon - lon0)\
-N = FN - rho cos(lon - lon0)\
-where\
-rho = 2 a ko t /{[((1+e)^(1+e)) ((1-e)^(1-e))]^0.5}\
-t = tan (pi/4 - lat/2) / [(1-esin(lat) ) / (1 + e sin(lat))]^(e/2)\
-\
-For the reverse transformation,\
-\
-lat = chi+ (e^2/2 + 5e^4/24 + e^6/12 + 13e^8/360) sin(2 chi) \
-+ (7e^4/48 + 29e^6/240 + 811e^8/11520) sin(4 chi)\
-+ (7e^6/120 +  81e^8/1120) sin(6 chi)  + (4279e^8/161280) sin(8 chi)\
-\
-lon = lon0+ arctan [(E-FE) / (FN-N)]\
-\
-where chi  = pi/2 - 2 arctan t\
-t   =  rho [((1+e)^(1+e)) ((1-e)^(1-e))]^0.5} / 2 a ko\
-rho = [(E-FE)^2  + (N - FN)^2]^0.5",,1996-09-18 00:00:00,"US Geological Survey Professional Paper 1395; \"Map Projections - A Working Manual\";  J. Snyder",EPSG,,
-9811,New Zealand Map Grid,,,Latitude of natural origin,Longitude of natural origin,,,,False easting,False northing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1996-09-18 00:00:00,New Zealand Department of Lands technical circular 1973/32,EPSG,,
-9812,Hotine Oblique Mercator,,,Latitude of projection centre,Longitude of projection centre,Azimuth of initial line,Angle from Rectified to Skew Grid,Scale factor on initial line,False easting,False northing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"The following constants for the projection may be calculated :\
-\
-B = (1 + esq * cos^4(latc) / (1 - esq ))^0.5\
-A = a * B * kc *(1 - esq )^0.5 / ( 1 - esq * sin^2(latc))\
-t0 = tan(pi/4 - latc/2) / ((1 - e*sin(latc)) / (1 + e*sin(latc)))^(e/2)\
-D = B (1 - esq)^0.5  / (cos(latc) * ( 1 - esq*sin^2(latc))^0.5)\
-if D < 1 to avoid problems with computation of F make D^2  = 1 \
-F = D + (D^2 - 1)^0.5  * SIGN(latc)\
-H = F* t0*B\
-G = (F - 1/F) / 2\
-gamma0 = asin(sin(alphac) / D)\
-lon0 = lonc - (asin(G*tan(gamma0))) / B\
-\
-Then compute the (uc , vc) co-ordinates for the centre point (fc , lc).\
-vc =0\
-In general: uc = (A / B) atan((Dsq - 1)^0.5 / cos (alphac) ) * SIGN(latc)\
-\
-but for the special cases where alphac = 90 degrees (e.g. Hungary, Switzerland) then \
-uc = A*(lonc - lon0)  \
-\
- \
-Forward case: To compute (E,N) from a given (lat,lon) :\
-\
-t = tan(pi/4 - lat/2) / ((1 - e sin (lat)) / (1 + e sin (lat)))^(e/2)\
-Q = H / t^B\
-S = (Q - 1 / Q) / 2\
-T = (Q + 1 / Q) / 2\
-V = sin(B (lon - lon0))\
-U = (- V cos(gamma0) + S sin(gamma0)) / T\
-v = A ln((1 - U) / (1 + U)) / 2 B\
-u = A atan((S cos(gamma0) + V sin(gamma0)) / cos(B (lon - lon0 ))) / B\
-\
-\
-The rectified skew co-ordinates are then derived from:\
-\
-E = v cos(gammac) + u sin(gammac) + FE\
-N = u cos(gammac) - v sin(gammac) + FN\
-\
-Reverse case: Compute (lat,lon)  from a given (E,N)  :\
-\
-v� = (E - FE) cos(gammac) - (N - FN) sin(gammac)\
-u� = (N - FN) cos(gammac) + (E - FE) sin(gammac)\
-\
-Q� = e- (B v �/ A)  where e is the base of natural logarithms.\
-S' = (Q� - 1 / Q�) / 2\
-T� = (Q� + 1 / Q�) / 2\
-V� = sin (B u� / A)\
-U� = (V� cos(gammac) + S� sin(gammac)) / T�\
-t� = (H / ((1 + U�) / (1 - U�))^0.5)^(1 / B)\
-\
-chi = pi / 2 - 2 atan(t�)\
-\
-lat = chi + sin(2chi).( e^2 / 2 + 5*e^4 / 24 + e^6 / 12 + 13*e^8 / 360) +  sin(4*chi).( 7*e^4 /48 + 29*e^6 / 240 + 811*e8 / 11520) +  sin(6chi).( 7*e^6 / 120 + 81*e8 / 1120) +  sin(8chi).(4279 e^8 / 161280)\
-\
-lon=  lon0  - atan ((S� cos(gammac) - V� sin(gammac)) / cos(B*u� / A)) / B","For Projected Coordinate System  Timbalai 1948 / R.S.O. Borneo (m)\
-\
-Parameters:\
-	Ellipsoid:  Everest 1830 (1967 Definition)\
-				a = 6377298.556 metres 	1/f = 300.8017\
-				then	e = 0.081472981	e2 = 0.006637847\
-					\
-	Latitude Projection Centre	fc  	4o00'00\"N		=	0.069813170 rad\
-	Longitude Projection Centre	lc  	115o00'00\"E	=	2.007128640 rad\
-	Azimuth of central line	ac	53o18'56.9537\"	=	0.930536611 rad\
-	Rectified to skew	gc	53o07'48.3685\"	=	0.927295218 rad\
-	Scale factor	ko	 0.99984\
-	False Eastings	FE	 0.00 m\
-	False Northings	FN	 0.00 m\
-\
-Forward calculation for: \
-	Latitude		f	4o39'20.783\"N		=	0.081258569 rad\
-	Longitude		l	114o28'10.539\"E	=	1.997871312 rad\
-		\
-B = 	1.003303209		F =	1.07212156\
-A =	6376278.686		H = 	1.00000299\
-		to = 	0.932946976		g0 = 	0.92729522\
-		D = 	1.002425787		l0 = 	1.91437347\
-		D2 =	1.004857458\
-	\
-		uc =	738096.09		vc =	0.00\
-		t =	0.922369529		Q =	1.084456854\
-		S =	0.081168129		T = 	1.003288725\
-		V =	0.83675700		U =	0.014680803\
-		v =	-93307.40		u =	734236.558\
-						u-uc =	-3859.536\
-\
-	Then	Easting		E =  	531404.81 m\
-		Northing	N =      515187.85 m\
-\
-Reverse calculations for same easting and northing first gives :\
-		v� =   	-93307.40		u� =	734236.558\
-		u�+uc = 1472332.652		Q� =	1.014790165\
-		S�  =	0.014682385		T� =	1.000107780	\
-		V� =	0.115274794		U� = 	0.080902065\
-		t� = 	0.922369529		c =	0.080721539		\
-				\
-Then	Latitude    	 f  =	4o39'20.783\"N		\
-	Longitude	l   =	114o28'10.539\"E",1999-11-15 00:00:00,"EPSG Guidance note #7; \"Geographic and Projected Coordinate System Transformations\"; section 1.4.5",EPSG,,97.62  99.811
-9813,Laborde Oblique Mercator,,,Latitude of projection centre,Longitude of projection centre,Azimuth of initial line,,Scale factor on initial line,False easting,False northing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1996-09-18 00:00:00,"\"La nouvelle projection du Service Geographique de Madagascar\"; J. Laborde; 1928",EPSG,Can be accomodated by Oblique Mercator method (code 9815).,97.613
-9814,Swiss Oblique Cylindrical,,,Latitude of projection centre,Longitude of projection centre,,,,Easting at projection centre,Northing at projection centre,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1996-09-18 00:00:00,"\"Die projecktionen der Schweizerischen Plan und Kartenwerke\"; J Bollinger; 1967",EPSG,Can be accomodated by Oblique Mercator method (code 9815).,97.612
-9815,Oblique Mercator,,,Latitude of projection centre,Longitude of projection centre,Azimuth of initial line,Angle from Rectified to Skew Grid,Scale factor on initial line,Easting at projection centre,Northing at projection centre,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"The following constants for the projection may be calculated :\
-\
-B = (1 + esq * cos^4(latc) / (1 - esq ))^0.5\
-A = a * B * kc *(1 - esq )^0.5 / ( 1 - esq * sin^2(latc))\
-t0 = tan(pi/4 - latc/2) / ((1 - e*sin(latc)) / (1 + e*sin(latc)))^(e/2)\
-D = B (1 - esq)^0.5  / (cos(latc) * ( 1 - esq*sin^2(latc))^0.5)\
-if D < 1 to avoid problems with computation of F make D^2  = 1 \
-F = D + (D^2 - 1)^0.5  * SIGN(latc)\
-H = F* t0*B\
-G = (F - 1/F) / 2\
-gamma0 = asin(sin(alphac) / D)\
-lon0 = lonc - (asin(G*tan(gamma0))) / B\
-\
-Then compute the (uc , vc) co-ordinates for the centre point (fc , lc).\
-vc =0\
-In general: uc = (A / B) atan((Dsq - 1)^0.5 / cos (alphac) ) * SIGN(latc)\
-\
-but for the special cases where alphac = 90 degrees (e.g. Hungary, Switzerland) then \
-uc = A*(lonc - lon0)  \
-\
- \
-Forward case: To compute (E,N) from a given (lat,lon) :\
-\
-t = tan(pi/4 - lat/2) / ((1 - e sin (lat)) / (1 + e sin (lat)))^(e/2)\
-Q = H / t^B\
-S = (Q - 1 / Q) / 2\
-T = (Q + 1 / Q) / 2\
-V = sin(B (lon - lon0))\
-U = (- V cos(gamma0) + S sin(gamma0)) / T\
-v = A ln((1 - U) / (1 + U)) / 2 B\
-u = (A atan((S cos(gamma0) + V sin(gamma0)) / cos(B (lon - lon0 ))) / B) + (uc . SIGN (lon - lonC))\
-\
-\
-The rectified skew co-ordinates are then derived from:\
-\
-E = v cos(gammac) + u sin(gammac) + Ec\
-N = u cos(gammac) - v sin(gammac) + Nc\
-\
-Reverse case: Compute (lat,lon)  from a given (E,N)  :\
-\
-v� = (E - Ec) cos(gammac) - (N - Nc) sin(gammac)\
-u� = (N - Nc) cos(gammac) + (E - Ec) sin(gammac) + uc\
-\
-Q� = e- (B v �/ A)  where e is the base of natural logarithms.\
-S' = (Q� - 1 / Q�) / 2\
-T� = (Q� + 1 / Q�) / 2\
-V� = sin (B u� / A)\
-U� = (V� cos(gammac) + S� sin(gammac)) / T�\
-t� = (H / ((1 + U�) / (1 - U�))^0.5)^(1 / B)\
-\
-chi = pi / 2 - 2 atan(t�)\
-\
-lat = chi + sin(2chi).( e^2 / 2 + 5*e^4 / 24 + e^6 / 12 + 13*e^8 / 360) +  sin(4*chi).( 7*e^4 /48 + 29*e^6 / 240 + 811*e8 / 11520) +  sin(6chi).( 7*e^6 / 120 + 81*e8 / 1120) +  sin(8chi).(4279 e^8 / 161280)\
-\
-lon=  lon0  - atan ((S� cos(gammac) - V� sin(gammac)) / cos(B*u� / A)) / B",,1999-11-15 00:00:00,"EPSG Guidance note #7; \"Geographic and Projected Coordinate System Transformations\"; section 1.4.5",EPSG,,99.811
-9816,Tunisia Mining Grid,,,Latitude of origin,Longitude of origin,,,,False easting,False northing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"This grid is used as the basis for mineral leasing in Tunsia.  Lease areas are approximately 2 x 2 km or 400 hectares.  The corners of these blocks are defined through a six figure grid reference where the first three digits are an easting in kilometres and the last three digits are a northing.  The latitudes and longitudes for block corners at 2 km intervals a [...]
-a)  the minimum easting is 94 km, on which the longitude is 5.68989 grads east of Paris.\
-b)  the maximum easting is 490 km, on which the longitude is 10.51515 grads east of Paris.\
-c)  each 2 km grid easting interval equals 0.02437 grads.\
-d)  the minimum northing is 40 km, on which the latitude is 33.39 grads.\
-e)  the maximum northing is 860 km, on which the latitude is 41.6039 grads.\
-f)  between 40 km N and 360 km N, each 2 km grid northing interval equals 0.02004 grads.\
-g)  between 360 km N and 860 km N, each 2 km grid northing interval equals 0.02003 grads.\
-\
-Formulae are:\
-\
-Grads from Paris\
-\
-Lat (grads) = 36.5964 + [(N - 360) * A] \
-where N is in kilometres and A = 0.010015 if N > 360, else A = 0.01002.\
-\
-LonParis (grads) = 7.83445 + [(E - 270) * 0.012185], where E is in kilometres.\
-\
-The reverse formulae are:\
-\
-E (km) = 270 + [(LonParis - 7.83445) / 0.012185] where LonParis is in grads.\
-\
-N (km) = 360 + [(Lat - 36.5964) / B] \
-where Lat is in grads and B = 0.010015  if  lat>36.5964, else B = 0.01002.\
-\
-Degrees from Greenwich.\
-\
-Modern practice in Tunisia is to quote latitude and longitude in degrees with longitudes referenced to the Greenwich meridian.  The formulae required in addition to the above are:\
-\
-Lat (degrees) =  (Latg * 0.9) where Latg is in grads.\
-LonGreenwich (degrees) = [(LonParis + 2.5969213) * 0.9] where LonParis is in grads.\
-\
-\
-Lat (grads) =  (Latd / 0.9) where Latd is in decimal degrees.\
-LonParis (grads) = [(LonGreenwich / 0.9) - 2.5969213)] where LonGreenwich is in decimal degrees.","For grid location 302598,\
-Latitude = 36.5964 + [(598 - 360) * A].  As N > 360, A = 0.010015.\
-Latitude = 38.97997 grads = 35.08197 degrees.\
-\
-Longitude  = 7.83445 + [(E - 270) * 0.012185, where E = 302.\
-Longitude  = 8.22437 grads east of Paris = 9.73916 degrees east of Greenwich.",1999-11-15 00:00:00,"EPSG Guidance note #7; \"Geographic and Projected Coordinate System Transformations\"; section 1.4.8",EPSG,,99.811
-9817,Lambert Conic Near-Conformal,,,Latitude of natural origin,Longitude of natural origin,,,Scale factor at natural origin,False easting,False northing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"To compute the Lambert Conic Near-Conformal the following formulae are used;\
-\
-E = FE + r sin(theta)\
-N = FN + M + r sin(theta) tan(theta/2) using the natural origin rather than the false origin.\
-\
-Compute constants for the ellipse:\
-\
-n = (a-b)/(a+b)  \
-A� = a [ 1- n + 5 (n^2 - n^3 ) / 4 + 81 ( n^4 - n^5 ) / 64]*pi /180 \
-B� = 3 a [ n - n^2 + 7 ( n^3 - n^4 ) / 8 + 55 n^5 / 64] / 2\
-C� = 15 a [ n^2 -n^3 + 3 ( n^4 - n^5 ) / 4 ] / 16\
-D� = 35 a [ n^3 - n^4 + 11 n^5 / 16 ] / 48\
-E� = 315 a [ n^4 - n^5 ] / 512\
-\
-Then compute the meridional arc from the equator to the parallel.\
-s0 = A� lat0 - B� sin(2 lat0) + C� sin(4 lat0) - D� sin(6 lat0) + E� sin(8 lat0) where lat0 in the first term is in degrees\
-s0 = A� lat - B� sin(2 lat) + C� sin(4 lat) - D� sin(6 lat) + E� sin(8 lat) where lat0 in the first term is in degrees\
-m = s - s0\
-A = 1 / (6 rho0 nu0) \
-M = ko ( m + A m^3.  This is the term that is truncated to the third order.\
-Ms = M per second of arc = M / ((lat - lat0) * 3600)\
-\
-theta = (lon - lon0) sin(lat0)\
-ro = ko nu0 / tan(lat0)\
-r = ro - M\
-\
-The reverse formulas for lat and lon  from E and N with r0 and Ms as above:\
-\
-lat  = M�/ (Ms * 3600) + lat0   where lat0 and lat are in degrees\
-lon  =  lon0 + theta� / sin(lat0)  where lont0 and lon are in radians\
-\
-where\
-E� = E - FE              N� = N - FN\
-theta� = arctan [E� / (r0 - N�)]\
-r� = E� / sin(theta�) \
-M� = r0 - r'","For Projected Coordinate System: Deir ez Zor / Levant Zone\
-\
-Parameters:\
-Ellipsoid  Clarke 1880 (IGN)  a = 6378249.2 m  1/f = 293.46602\
-then b = 6356515.000    n = 0.001706682563\
-\
-Latitude Natural Origin  = 34o 39'00\" N = 0.604756586 rad\
-Longitude Natural Origin = 37o 21'00\" E=  0.651880476 rad\
-Scale factor at origin ko = 0.99962560\
-False Eastings FE  = 300000.00 m\
-False Northings FN  = 300000.00 m\
-\
-Forward calculation for: \
-Latitude of 37d 31' 17.625\" N = 0.654874806 rad\
-Longitude of 34d 08' 11.291\" E = 0.595793792 rad\
-first gives\
-A = 4.1067494 * 10e-15      A�=111131.8633\
-B�= 16300.64407     C�= 17.38751     D�= 0.02308      E�= 0.000033\
-so = 3835482.233    s  = 4154101.458     m = 318619.225\
-M = 318632.72         Ms = 30.82262319\
-q = -0.03188875       ro = 9235264.405     r = 8916631.685\
-\
-Then Easting E =   15707.96 m (c.f. E =   15708.00 using full formulae)\
-         Northing N =      623165.96 m (c.f. N = 623167.20 using full formulae)\
-\
-Reverse calculation for the same easting and northing first gives\
-\
-q' = -0.03188875\
-r�  =  8916631.685\
-M�= 318632.72 \
-\
-Latitude =      0.654874806 rad = 37d 31' 17.625\" N\
-Longitude = 0.595793792 rad =  34d 08' 11.291\" E",1999-11-15 00:00:00,"EPSG Guidance note #7; \"Geographic and Projected Coordinate System Transformations\"; section 1.4.1.1",EPSG,,99.811
-9818,American Polyconic,,,Latitude of natural origin,Longitude of natural origin,,,,False easting,False northing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1999-10-20 00:00:00,"US Geological Survey Professional Paper 1395; \"Map Projections - A Working Manual\";  J. Snyder",EPSG,,99.55
diff --git a/src/tiff/csv/trf_nonpolynomial.c b/src/tiff/csv/trf_nonpolynomial.c
deleted file mode 100644
index 7418100..0000000
--- a/src/tiff/csv/trf_nonpolynomial.c
+++ /dev/null
@@ -1,1082 +0,0 @@
-#include "defs.h"
-datafile_rows_t trf_nonpolynomial_row_1[] = {"COORD_TRF_CODE","COORD_TRF_EPSG_NAME","COORD_TRF_EPSG_ABBR","COORD_TRF_USER_NAME","DESCRIPTION","AREA_OF_USE","COORD_TRF_METHOD_CODE","PARAMETER_1","PARAMETER_2","PARAMETER_3","PARAMETER_4","PARAMETER_5","PARAMETER_6","PARAMETER_7","UOM_LENGTH_CODE","UOM_ANGLE_CODE","PRIME_MERIDIAN_CODE","UOM_SCALE_CODE","PARAMETER_35","PARAMETER_36","PARAMETER_37","REVISION_DATE","INFORMATION_SOURCE","DATA_SOURCE","REMARKS","CHANGE_ID",NULL};
-datafile_rows_t trf_nonpolynomial_row_2[] = {"1100","Adindan to WGS 84 (1)","","","","MEAN FOR Ethiopia; Sudan.","9603","-166.0","-15.0","204.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_3[] = {"1101","Adindan to WGS 84 (2)","","","","Burkina Faso.","9603","-118.0","-14.0","218.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_4[] = {"1102","Adindan to WGS 84 (3)","","","","Cameroon.","9603","-134.0","-2.0","210.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_5[] = {"1103","Adindan to WGS 84 (4)","","","","Ethiopia.","9603","-165.0","-11.0","206.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_6[] = {"1104","Adindan to WGS 84 (5)","","","","Mali.","9603","-123.0","-20.0","220.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_7[] = {"1105","Adindan to WGS 84 (6)","","","","Senegal.","9603","-128.0","-18.0","224.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_8[] = {"1106","Adindan to WGS 84 (7)","","","","Sudan.","9603","-161.0","-14.0","205.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_9[] = {"1107","Afgooye to WGS 84 (1)","","","","Somalia.","9603","-43.0","-163.0","45.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_10[] = {"1108","AGD66 to WGS 84 (1)","","","","Australia.","9603","-133.0","-48.0","148.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_11[] = {"1109","AGD84 to WGS 84 (1)","","","","Australia.","9603","-134.0","-48.0","149.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_12[] = {"1110","Ain el Abd to WGS 84 (1)","","","","Bahrain.","9603","-150.0","-250.0","-1.0","","","","","9001","","","","","","","1997-04-11 00:00:00","U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.","EPSG","","97.06",NULL};
-datafile_rows_t trf_nonpolynomial_row_13[] = {"1111","Ain el Abd to WGS 84 (2)","","","","Saudi Arabia.","9603","-143.0","-236.0","7.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_14[] = {"1112","Amersfoort to WGS 84 (1)","","","","Netherlands.","9606","593.16","26.15","478.54","-6.3239","-0.5008","-5.5487","4.0775","9001","9109","","9202","","","","1997-04-11 00:00:00","Nederlandse Commissie voor Geodesie publication 30; 1993.","EPSG","","97.07",NULL};
-datafile_rows_t trf_nonpolynomial_row_15[] = {"1113","Arc 1950 to WGS 84 (1)","","","","MEAN FOR Botswana; Lesotho; Malawi; Swaziland; Zaire; Zambia; Zimbabwe.","9603","-143.0","-90.0","-294.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_16[] = {"1114","Arc 1950 to WGS 84 (2)","","","","Botswana.","9603","-138.0","-105.0","-289.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_17[] = {"1115","Arc 1950 to WGS 84 (3)","","","","Burundi.","9603","-153.0","-5.0","-292.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_18[] = {"1116","Arc 1950 to WGS 84 (4)","","","","Lesotho.","9603","-125.0","-108.0","-295.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_19[] = {"1117","Arc 1950 to WGS 84 (5)","","","","Malawi.","9603","-161.0","-73.0","-317.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_20[] = {"1118","Arc 1950 to WGS 84 (6)","","","","Swaziland.","9603","-134.0","-105.0","-295.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_21[] = {"1119","Arc 1950 to WGS 84 (7)","","","","Zaire.","9603","-169.0","-19.0","-278.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_22[] = {"1120","Arc 1950 to WGS 84 (8)","","","","Zambia.","9603","-147.0","-74.0","-283.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_23[] = {"1121","Arc 1950 to WGS 84 (9)","","","","Zimbabwe.","9603","-142.0","-96.0","-293.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_24[] = {"1122","Arc 1960 to WGS 84 (1)","","","","MEAN FOR Kenya; Tanzania.","9603","-160.0","-6.0","-302.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_25[] = {"1123","Batavia to WGS 84 (1)","","","","Indonesia (Sumatra).","9603","-377.0","681.0","-50.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_26[] = {"1124","Bermuda 1957 to WGS 84 (1)","","","","Bermuda.","9603","-73.0","213.0","296.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_27[] = {"1125","Bogota to WGS 84 (1)","","","","Colombia.","9603","307.0","304.0","-318.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_28[] = {"1126","Bukit Rimpah to WGS 84 (1)","","","","Indonesia (Bangka & Belitung Islands).","9603","-384.0","664.0","-48.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_29[] = {"1127","Campo Inchauspe to WGS 84 (1)","","","","Argentina.","9603","-148.0","136.0","90.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_30[] = {"1128","Cape to WGS 84 (1)","","","","South Africa.","9603","-136.0","-108.0","-292.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_31[] = {"1129","Cape to WGS 84 (2)","","","","South Africa.","9603","-134.73","-110.92","-292.66","","","","","9001","","","","","","","1996-10-18 00:00:00","Private Communication, Directorate of Surveys and Land Information, Cape Town.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_32[] = {"1130","Carthage to WGS 84 (1)","","","","Tunisia.","9603","-263.0","6.0","431.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_33[] = {"1131","Chua to WGS 84 (1)","","","","Paraguay.","9603","-134.0","229.0","-29.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_34[] = {"1132","Corrego Alegre to WGS 84 (1)","","","","Brazil.","9603","-206.0","172.0","-6.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_35[] = {"1133","ED50 to WGS 84 (1)","","","","MEAN FOR Austria; Belgium; Denmark; Finland;  France; Germany (west); Gibraltar; Greece;  Italy; Luxembourg; Netherlands; Norway;  Portugal; Spain; Sweden; Switzerland.","9603","-87.0","-98.0","-121.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","97.02",NULL};
-datafile_rows_t trf_nonpolynomial_row_36[] = {"1134","ED50 to WGS 84 (2)","","","","MEAN FOR Austria; Denmark; France; Germany (west); Netherlands; Switzerland.","9603","-87.0","-96.0","-120.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_37[] = {"1135","ED50 to WGS 84 (3)","","","","MEAN FOR Iraq; Israel; Jordan; Lebanon;  Kuwait; Saudi Arabia; Syria.","9603","-103.0","-106.0","-141.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_38[] = {"1136","ED50 to WGS 84 (4)","","","","Cyprus.","9603","-104.0","-101.0","-140.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_39[] = {"1137","ED50 to WGS 84 (5)","","","","Egypt.","9603","-130.0","-117.0","-151.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_40[] = {"1138","ED50 to WGS 84 (6)","","","","Ireland; United Kingdom (UK).","9603","-86.0","-96.0","-120.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_41[] = {"1139","ED50 to WGS 84 (7)","","","","Finland; Norway.","9603","-87.0","-95.0","-120.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_42[] = {"1140","ED50 to WGS 84 (8)","","","","Greece.","9603","-84.0","-95.0","-130.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_43[] = {"1141","ED50 to WGS 84 (9)","","","","Iran.","9603","-117.0","-132.0","-164.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_44[] = {"1142","ED50 to WGS 84 (10)","","","","Italy (Sardinia).","9603","-97.0","-103.0","-120.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_45[] = {"1143","ED50 to WGS 84 (11)","","","","Italy (Sicily).","9603","-97.0","-88.0","-135.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_46[] = {"1144","ED50 to WGS 84 (12)","","","","Malta.","9603","-107.0","-88.0","-149.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_47[] = {"1145","ED50 to WGS 84 (13)","","","","Portugal; Spain.","9603","-84.0","-107.0","-120.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_48[] = {"1146","ED87 to WGS 84 (1)","","","","Denmark - North Sea;  Germany - North Sea;  Netherlands - offshore;  Norway; United Kingdom (UKCS) - North Sea south of 62 deg N.","9606","-82.981","-99.719","-110.709","-0.5076","0.1503","0.3898","-0.3143","9001","9109","","9202","","","","1997-04-11 00:00:00","Norwegian Mapping Authority publication 1990:1 and note of 13-Feb-1991 \"Om Transformasjon mellom Geodetiske Datum i Norge\"","EPSG","","97.03  9 [...]
-datafile_rows_t trf_nonpolynomial_row_49[] = {"1147","ED50 to ED87 (2)","","","","Norway - offshore north of 65 deg N.","9606","-1.51","-0.84","-3.5","-1.893","-0.687","-2.764","0.609","9001","9109","","9202","","","","1997-04-11 00:00:00","Norwegian Mapping Authority note of 13-Feb-1991 \"Om Transformasjon mellom Geodetiske Datum i Norge\"","EPSG","","97.04",NULL};
-datafile_rows_t trf_nonpolynomial_row_50[] = {"1148","Egypt 1907 to WGS 84 (1)","","","","Egypt.","9603","-130.0","110.0","-13.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_51[] = {"1149","ETRF89 to WGS 84 (1)","","","","Europe.","9603","0.0","0.0","0.0","","","","","9001","","","","","","","1997-06-16 00:00:00","EPSG","EPSG","ETRF89 is a realisation of WGS84 coincident to within 1.5 metres.  This transformation has an accuracy equal to the coincidence figure.","97.24",NULL};
-datafile_rows_t trf_nonpolynomial_row_52[] = {"1150","GDA94 to WGS 84 (1)","","","","Australia.","9603","0.0","0.0","0.0","","","","","9001","","","","","","","1996-10-18 00:00:00","EPSG","EPSG","GDA94 is a realisation of WGS84 coincident to within 1.5 metres.  This transformation has an accuracy equal to the coincidence figure.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_53[] = {"1151","GD49 to WGS 84 (1)","","","","New Zealand.","9603","84.0","-22.0","209.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_54[] = {"1152","Hu Tzu Shan to WGS 84 (1)","","","","Taiwan.","9603","-637.0","-549.0","-203.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_55[] = {"1153","Indian 1954 to WGS 84 (1)","","","","Thailand.","9603","217.0","823.0","299.0","","","","","9001","","","","","","","1997-04-11 00:00:00","U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.","EPSG","","97.06",NULL};
-datafile_rows_t trf_nonpolynomial_row_56[] = {"1154","Indian 1975 to WGS 84 (1)","","","","Thailand.","9603","209.0","818.0","290.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 second edition September 1991","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_57[] = {"1155","Kalianpur 1937 to WGS 84 (1)","","","","Bangladesh.","9603","282.0","726.0","254.0","","","","","9001","","","","","","","1999-10-20 00:00:00","U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.","EPSG","","97.235",NULL};
-datafile_rows_t trf_nonpolynomial_row_58[] = {"1156","Kalianpur 1975 to WGS 84 (1)","","","","India; Nepal.","9603","295.0","736.0","257.0","","","","","9001","","","","","","","1999-10-20 00:00:00","U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.","EPSG","Care!  DMA ellipsoid is inconsistent with EPSG ellipsoid - transformation parameter values may not be appropriate.","97.235",NULL};
-datafile_rows_t trf_nonpolynomial_row_59[] = {"1157","Kandawala to WGS 84 (1)","","","","Sri Lanka.","9603","-97.0","787.0","86.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_60[] = {"1158","Kertau to WGS 84 (1)","","","","Malaysia - West Malaysia; Singapore.","9603","-11.0","851.0","5.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_61[] = {"1159","Leigon to WGS 84 (1)","","","","Ghana.","9603","-130.0","29.0","364.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_62[] = {"1160","Liberia 1964 to WGS 84 (1)","","","","Liberia.","9603","-90.0","40.0","88.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_63[] = {"1161","Luzon 1911 to WGS 84 (1)","","","","Philippines (excluding Mindanao).","9603","-133.0","-77.0","-51.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_64[] = {"1162","Luzon 1911 to WGS 84 (2)","","","","Philippines (Mindanao).","9603","-133.0","-79.0","-72.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_65[] = {"1163","M'poraloko to WGS 84 (1)","","","","Gabon.","9603","-74.0","-130.0","42.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_66[] = {"1164","Mahe 1971 to WGS 84 (1)","","","","Seychelles - Mahe Island.","9603","41.0","-220.0","-134.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_67[] = {"1165","Massawa to WGS 84 (1)","","","","Ethiopia (Eritrea).","9603","639.0","405.0","60.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_68[] = {"1166","Merchich to WGS 84 (1)","","","","Morocco.","9603","31.0","146.0","47.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_69[] = {"1167","Minna to WGS 84 (1)","","","","Cameroon.","9603","-81.0","-84.0","115.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_70[] = {"1168","Minna to WGS 84 (2)","","","","Nigeria.","9603","-92.0","-93.0","122.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_71[] = {"1169","Monte Mario to WGS 84 (1)","","","","Italy (Sardinia).","9603","-225.0","-65.0","9.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_72[] = {"1170","NAD27 to WGS 84 (1)","","","","MEAN FOR Antigua; Barbados; Barbuda;  Caicos Islands; Cuba; Dominican Republic;  Grand Cayman; Jamaica; Turks Islands.","9603","-3.0","142.0","183.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_73[] = {"1171","NAD27 to WGS 84 (2)","","","","MEAN FOR Belize; Costa Rica; El Salvador;  Guatemala; Honduras; Nicaragua.","9603","0.0","125.0","194.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_74[] = {"1172","NAD27 to WGS 84 (3)","","","","MEAN FOR Canada.","9603","-10.0","158.0","187.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_75[] = {"1173","NAD27 to WGS 84 (4)","","","","MEAN FOR United States (USA) (CONUS).","9603","-8.0","160.0","176.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_76[] = {"1174","NAD27 to WGS 84 (5)","","","","MEAN FOR United States (USA) (CONUS East of Mississippi River  including Louisiana; Missouri; Minnesota).","9603","-9.0","161.0","179.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_77[] = {"1175","NAD27 to WGS 84 (6)","","","","MEAN FOR United States (USA) (CONUS West of Mississippi River).","9603","-8.0","159.0","175.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_78[] = {"1176","NAD27 to WGS 84 (7)","","","","United States (USA) - Alaska (Excluding Aleutian Islands).","9603","-5.0","135.0","172.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_79[] = {"1177","NAD27 to WGS 84 (8)","","","","Bahamas (Except San Salvador Island).","9603","-4.0","154.0","178.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_80[] = {"1178","NAD27 to WGS 84 (9)","","","","Bahamas (San Salvador Island).","9603","1.0","140.0","165.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_81[] = {"1179","NAD27 to WGS 84 (10)","","","","Canada (Alberta; British Columbia).","9603","-7.0","162.0","188.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_82[] = {"1180","NAD27 to WGS 84 (11)","","","","Canada (Manitoba; Ontario).","9603","-9.0","157.0","184.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_83[] = {"1181","NAD27 to WGS 84 (12)","","","","Canada (New Brunswick; Newfoundland; Nova Scotia; Quebec).","9603","-22.0","160.0","190.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_84[] = {"1182","NAD27 to WGS 84 (13)","","","","Canada (Northwest Territories; Nunavut; Saskatchewan).","9603","4.0","159.0","188.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_85[] = {"1183","NAD27 to WGS 84 (14)","","","","Canada (Yukon).","9603","-7.0","139.0","181.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_86[] = {"1184","NAD27 to WGS 84 (15)","","","","Panama - Canal Zone.","9603","0.0","125.0","201.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_87[] = {"1185","NAD27 to WGS 84 (16)","","","","Cuba.","9603","-9.0","152.0","178.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_88[] = {"1186","NAD27 to WGS 84 (17)","","","","Greenland (Hayes Peninsula).","9603","11.0","114.0","195.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_89[] = {"1187","NAD27 to WGS 84 (18)","","","","Mexico.","9603","-12.0","130.0","190.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_90[] = {"1188","NAD83 to WGS 84 (1)","","","","Canada; Central America; Mexico; United States (USA) (Alaska (excluding Aleutian Islands); CONUS).","9603","0.0","0.0","0.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.","EPSG","NAD83 is a realisation of WGS84 coincident to within 1.5 metres.  This transformation has an accuracy equal to the coincidence figure.","97.06",NULL};
-datafile_rows_t trf_nonpolynomial_row_91[] = {"1189","Nahrwan 1967 to WGS 84 (1)","","","","Oman (Masirah Island).","9603","-247.0","-148.0","369.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_92[] = {"1190","Nahrwan 1967 to WGS 84 (2)","","","","Saudi Arabia.","9603","-243.0","-192.0","477.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_93[] = {"1191","Nahrwan 1967 to WGS 84 (3)","","","","United Arab Emirates (UAE).","9603","-249.0","-156.0","381.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_94[] = {"1192","Naparima 1972 to WGS 84 (1)","","","","Trinidad and Tobago.","9603","-10.0","375.0","165.0","","","","","9001","","","","","","","1998-06-30 00:00:00","U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.","EPSG","CAUTION: EPSG believes that these parameter values include a blunder and that if NIMA transformation parameters are to be used the 1987 version (EPSG code 1307) be used.","98.102",NULL};
-datafile_rows_t trf_nonpolynomial_row_95[] = {"1193","NTF to WGS 84 (1)","","","","France.","9603","-168.0","-60.0","320.0","","","","","9001","","","","","","","1996-10-18 00:00:00","IGN technical report RT/G 14; January 1988.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_96[] = {"1195","OSGB 1936 to WGS 84 (1)","","","","MEAN FOR United Kingdom (UK) - Great Britain (England; Scotland; Wales); Isle of Man.","9603","375.0","-111.0","431.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_97[] = {"1196","OSGB 1936 to WGS 84 (2)","","","","United Kingdom (UK) - England.","9603","371.0","-112.0","434.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_98[] = {"1197","OSGB 1936 to WGS 84 (3)","","","","United Kingdom (UK) - England; Wales; Isle of Man.","9603","371.0","-111.0","434.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_99[] = {"1198","OSGB 1936 to WGS 84 (4)","","","","United Kingdom (UK) - Scotland (including Shetland Islands).","9603","384.0","-111.0","425.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_100[] = {"1199","OSGB 1936 to WGS 84 (5)","","","","United Kingdom (UK) - Wales.","9603","370.0","-108.0","434.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_101[] = {"1200","Pointe Noire to WGS 84 (1)","","","","Congo.","9603","-148.0","51.0","-291.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_102[] = {"1201","PSAD56 to WGS 84 (1)","","","","MEAN FOR Bolivia; Chile; Colombia;  Ecuador; Guyana; Peru; Venezuela.","9603","-288.0","175.0","-376.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_103[] = {"1202","PSAD56 to WGS 84 (2)","","","","Bolivia.","9603","-270.0","188.0","-388.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_104[] = {"1203","PSAD56 to WGS 84 (3)","","","","Chile (Northern; near 19 deg S).","9603","-270.0","183.0","-390.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_105[] = {"1204","PSAD56 to WGS 84 (4)","","","","Chile (Southern; near 43 deg S).","9603","-305.0","243.0","-442.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_106[] = {"1205","PSAD56 to WGS 84 (5)","","","","Colombia.","9603","-282.0","169.0","-371.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_107[] = {"1206","PSAD56 to WGS 84 (6)","","","","Ecuador.","9603","-278.0","171.0","-367.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_108[] = {"1207","PSAD56 to WGS 84 (7)","","","","Guyana.","9603","-298.0","159.0","-369.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_109[] = {"1208","PSAD56 to WGS 84 (8)","","","","Peru.","9603","-279.0","175.0","-379.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_110[] = {"1209","PSAD56 to WGS 84 (9)","","","","Venezuela.","9603","-295.0","173.0","-371.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_111[] = {"1210","Qatar to WGS 84 (1)","","","","Qatar.","9603","-128.0","-283.0","22.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_112[] = {"1211","Qornoq to WGS 84 (1)","","","","Greenland (South).","9603","164.0","138.0","-189.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_113[] = {"1212","SAD69 to WGS 84 (1)","","","","MEAN FOR Argentina; Bolivia; Brazil; Chile;  Colombia; Ecuador; Guyana; Paraguay;  Peru; Trinidad & Tobago; Venezuela.","9603","-57.0","1.0","-41.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_114[] = {"1213","SAD69 to WGS 84 (2)","","","","Argentina.","9603","-62.0","-1.0","-37.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_115[] = {"1214","SAD69 to WGS 84 (3)","","","","Bolivia.","9603","-61.0","2.0","-48.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_116[] = {"1215","SAD69 to WGS 84 (4)","","","","Brazil.","9603","-60.0","-2.0","-41.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_117[] = {"1216","SAD69 to WGS 84 (5)","","","","Chile.","9603","-75.0","-1.0","-44.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_118[] = {"1217","SAD69 to WGS 84 (6)","","","","Colombia.","9603","-44.0","6.0","-36.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_119[] = {"1218","SAD69 to WGS 84 (7)","","","","Ecuador.","9603","-48.0","3.0","-44.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_120[] = {"1219","SAD69 to WGS 84 (8)","","","","Ecuador (Baltra; Galapagos).","9603","-47.0","26.0","-42.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_121[] = {"1220","SAD69 to WGS 84 (9)","","","","Guyana.","9603","-53.0","3.0","-47.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_122[] = {"1221","SAD69 to WGS 84 (10)","","","","Paraguay.","9603","-61.0","2.0","-33.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_123[] = {"1222","SAD69 to WGS 84 (11)","","","","Peru.","9603","-58.0","0.0","-44.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_124[] = {"1223","SAD69 to WGS 84 (12)","","","","Trinidad and Tobago.","9603","-45.0","12.0","-33.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_125[] = {"1224","SAD69 to WGS 84 (13)","","","","Venezuela.","9603","-45.0","8.0","-33.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_126[] = {"1225","Sapper Hill 1943 to WGS 84 (1)","","","","Falkland Islands - East Falkland Island.","9603","-355.0","21.0","72.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_127[] = {"1226","Schwarzeck to WGS 84 (1)","","","","Namibia.","9603","616.0","97.0","-251.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_128[] = {"1227","Tananarive to WGS 84 (1)","","","","Madagascar.","9603","-189.0","-242.0","-91.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_129[] = {"1228","Timbalai 1948 to WGS 84 (1)","","","","Brunei; Malaysia (Sabah; Sarawak).","9603","-679.0","669.0","-48.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_130[] = {"1229","TM65 to WGS 84 (1)","","","","Ireland.","9603","506.0","-122.0","611.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_131[] = {"1230","Tokyo to WGS 84 (1)","","","","MEAN FOR Japan; South Korea; Okinawa.","9603","-148.0","507.0","685.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.","EPSG","","97.06",NULL};
-datafile_rows_t trf_nonpolynomial_row_132[] = {"1231","Tokyo to WGS 84 (2)","","","","Japan.","9603","-148.0","507.0","685.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_133[] = {"1232","Tokyo to WGS 84 (3)","","","","South Korea.","9603","-146.0","507.0","687.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.","EPSG","","97.06",NULL};
-datafile_rows_t trf_nonpolynomial_row_134[] = {"1233","Tokyo to WGS 84 (4)","","","","Japan (Okinawa).","9603","-158.0","507.0","676.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_135[] = {"1234","Yacare to WGS 84 (1)","","","","Uruguay.","9603","-155.0","171.0","37.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_136[] = {"1235","Zanderij to WGS 84 (1)","","","","Suriname.","9603","-265.0","120.0","-358.0","","","","","9001","","","","","","","1996-10-18 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_137[] = {"1236","AGD84 to WGS 84 (2)","","","","Australia.","9607","-116.0","-50.47","141.69","-0.23","-0.39","-0.344","0.0983","9001","9104","","9202","","","","1997-11-13 00:00:00","Australian Surveying and Land Information Group - www.auslig.gov.au/geodesy","EPSG","Superseded by AGD84 to GDA94 (2) (code 1280).","",NULL};
-datafile_rows_t trf_nonpolynomial_row_138[] = {"1237","WGS 72 to WGS 84 (1)","","","","World.","9606","0.0","0.0","4.5","0.0","0.0","0.554","0.2263","9001","9104","","9202","","","","1996-12-12 00:00:00","","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_139[] = {"1238","WGS 72 to WGS 84 (2)","","","","World.","9606","0.0","0.0","4.5","0.0","0.0","0.554","0.219","9001","9104","","9202","","","","1996-12-12 00:00:00","","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_140[] = {"1239","WGS 72BE to WGS 72 (1)","","","","World.","9606","0.0","0.0","-2.6","0.0","0.0","0.26","-0.6063","9001","9104","","9202","","","","1996-12-12 00:00:00","","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_141[] = {"1240","WGS 72BE to WGS 84 (1)","","","","World.","9606","0.0","0.0","1.9","0.0","0.0","0.814","-0.38","9001","9104","","9202","","","","1996-12-12 00:00:00","","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_142[] = {"1241","NAD27 to NAD83 (1)","","","","United States (USA) - lower 48 states including EEZ.","9613","","","","","","","","","9104","","","conus.las","conus.los","","1999-04-22 00:00:00","US Coast & Geodetic Survey  www.ngs.noaa.gov","EPSG","Uses NADCON method which expects longitudes positive west; EPSG GeogCS NAD27 (code 4267) and NAD83 (code 4269) have longitudes positive east.","98.201  98.53",NULL};
-datafile_rows_t trf_nonpolynomial_row_143[] = {"1243","NAD27 to NAD83 (2)","","","","United States (USA) - Alaska including EEZ.","9613","","","","","","","","","9104","","","alaska.las","alaska.los","","1999-04-22 00:00:00","US Coast & Geodetic Survey  www.ngs.noaa.gov","EPSG","Uses NADCON method which expects longitudes positive west; EPSG GeogCS NAD27 (code 4267) and NAD83 (code 4269) have longitudes positive east.","98.201  98.53",NULL};
-datafile_rows_t trf_nonpolynomial_row_144[] = {"1245","ED50 to WGS 84 (16)","","","","Tunisia.","9603","-112.0","-77.0","-145.0","","","","","9001","","","","","","","1998-04-16 00:00:00","U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.","EPSG","","98.11",NULL};
-datafile_rows_t trf_nonpolynomial_row_145[] = {"1246","Herat North to WGS 84 (1)","","","","Afghanistan.","9603","-333.0","-222.0","114.0","","","","","9001","","","","","","","1997-04-11 00:00:00","U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_146[] = {"1247","Kalianpur 1962 to WGS 84 (1)","","","","Pakistan.","9603","283.0","682.0","231.0","","","","","9001","","","","","","","1999-10-20 00:00:00","U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.","EPSG","Care!  DMA ellipsoid is inconsistent with EPSG ellipsoid - transformation parameter values may not be appropriate.","97.235",NULL};
-datafile_rows_t trf_nonpolynomial_row_147[] = {"1248","ID74 to WGS 84 (1)","","","","Indonesia.","9603","-24.0","-15.0","5.0","","","","","9001","","","","","","","1997-04-11 00:00:00","U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_148[] = {"1249","NAD27 to WGS 84 (21)","","","","United States (USA) - Alaska - Aleutian Islands east of 180 deg.","9603","-2.0","152.0","149.0","","","","","9001","","","","","","","1997-04-11 00:00:00","U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_149[] = {"1250","NAD27 to WGS 84 (22)","","","","United States (USA) - Alaska - Aleutian Islands west of 180 deg.","9603","2.0","204.0","105.0","","","","","9001","","","","","","","1997-04-11 00:00:00","U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_150[] = {"1251","NAD83 to WGS 84 (2)","","","","United States (USA) - Alaska - Aleutian Islands.","9603","-2.0","0.0","4.0","","","","","9001","","","","","","","1997-04-11 00:00:00","U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_151[] = {"1252","NAD83 to WGS 84 (3)","","","","United States (USA) - Hawaii.","9603","1.0","1.0","-1.0","","","","","9001","","","","","","","1997-04-11 00:00:00","U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_152[] = {"1253","Nord Sahara 1959 to WGS 84 (1)","","","","Algeria.","9603","-186.0","-93.0","310.0","","","","","9001","","","","","","","1997-04-11 00:00:00","U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_153[] = {"1254","Pulkovo 1942 to WGS 84 (1)","","","","Russia.","9603","28.0","-130.0","-95.0","","","","","9001","","","","","","","1997-04-11 00:00:00","U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_154[] = {"1255","Voirol Unifie to WGS 84 (1)","","","","Algeria - north of 35g (31 deg 30 min) North.","9603","-123.0","-206.0","219.0","","","","","9001","","","","","","","1998-06-30 00:00:00","U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.","EPSG","CAUTION:   EPSG believes that the data used in the derivation of these parameters contains a blunder.  We recommend using transformation 1253 [North Sahara 1959 to WGS84 (1)] as Voirol 1 [...]
-datafile_rows_t trf_nonpolynomial_row_155[] = {"1256","Fahud to WGS 84 (1)","","","","Oman.","9603","-346.0","-1.0","224.0","","","","","9001","","","","","","","1997-04-11 00:00:00","U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_156[] = {"1257","Bern 1898 (Bern) to Bern 1898","","","","Liechtenstein;  Switzerland.","9601","7.26225","","","","","","","","9110","","","","","","1999-11-12 00:00:00","EPSG","EPSG","Change of prime meridian.","99.79",NULL};
-datafile_rows_t trf_nonpolynomial_row_157[] = {"1258","Bogota (Bogota) to Bogota","","","","Colombia.","9601","-74.04513","","","","","","","","9110","","","","","","1999-11-12 00:00:00","EPSG","EPSG","Change of prime meridian.","99.79",NULL};
-datafile_rows_t trf_nonpolynomial_row_158[] = {"1259","Lisbon (Lisbon) to Lisbon","","","","Portugal - onshore.","9601","-9.0754862","","","","","","","","9110","","","","","","1999-11-12 00:00:00","EPSG","EPSG","Change of prime meridian.","99.79",NULL};
-datafile_rows_t trf_nonpolynomial_row_159[] = {"1260","Makassar (Jakarta) to Makassar","","","","Indonesia - south west Sulawesi.","9601","106.482779","","","","","","","","9110","","","","","","1999-11-12 00:00:00","EPSG","EPSG","Change of prime meridian.","99.79",NULL};
-datafile_rows_t trf_nonpolynomial_row_160[] = {"1261","MGI (Ferro) to MGI","","","","Austria.","9601","-17.4","","","","","","","","9110","","","","","","1999-11-12 00:00:00","EPSG","EPSG","Change of prime meridian.","99.79",NULL};
-datafile_rows_t trf_nonpolynomial_row_161[] = {"1262","Monte Mario (Rome) to Monte Mario","","","","Italy.","9601","12.27084","","","","","","","","9110","","","","","","1999-11-12 00:00:00","EPSG","EPSG","Change of prime meridian.","98.37  99.79",NULL};
-datafile_rows_t trf_nonpolynomial_row_162[] = {"1263","Padang (Jakarta) to Padang","","","","Indonesia - Sumatra.","9601","106.482779","","","","","","","","9110","","","","","","1999-11-12 00:00:00","EPSG","EPSG","Change of prime meridian.","99.79",NULL};
-datafile_rows_t trf_nonpolynomial_row_163[] = {"1264","Belge 1950 (Brussels) to Belge 1950","","","","Belgium - onshore.","9601","4.220471","","","","","","","","9110","","","","","","1999-11-12 00:00:00","EPSG","EPSG","Change of prime meridian.","99.79",NULL};
-datafile_rows_t trf_nonpolynomial_row_164[] = {"1265","Tananarive (Paris) to Tananarive","","","","Madagascar.","9601","2.5969213","","","","","","","","9105","","","","","","1999-11-12 00:00:00","EPSG","EPSG","Change of prime meridian.","99.79",NULL};
-datafile_rows_t trf_nonpolynomial_row_165[] = {"1266","Voirol 1875 (Paris) to Voirol 1875","","","","Algeria - north of 32 deg N.","9601","2.5969213","","","","","","","","9105","","","","","","1999-11-12 00:00:00","EPSG","EPSG","Change of prime meridian.","99.79",NULL};
-datafile_rows_t trf_nonpolynomial_row_166[] = {"1267","Voirol Unifie (Paris) to Voirol Unifie","","","","Algeria - north of 32 deg N.","9601","2.5969213","","","","","","","","9105","","","","","","1999-11-12 00:00:00","EPSG","EPSG","Change of prime meridian.","99.79",NULL};
-datafile_rows_t trf_nonpolynomial_row_167[] = {"1268","Batavia (Jakarta) to Batavia","","","","Indonesia - Java.","9601","106.482779","","","","","","","","9110","","","","","","1999-11-12 00:00:00","EPSG","EPSG","Change of prime meridian.","99.79",NULL};
-datafile_rows_t trf_nonpolynomial_row_168[] = {"1269","RT38 (Stockholm) to RT38","","","","Sweden.","9601","18.03298","","","","","","","","9110","","","","","","1999-11-12 00:00:00","EPSG","EPSG","Change of prime meridian.","99.79",NULL};
-datafile_rows_t trf_nonpolynomial_row_169[] = {"1270","Greek (Athens) to Greek","","","","Greece - onshore.","9601","23.4258815","","","","","","","","9110","","","","","","1999-11-12 00:00:00","Topography Department; National Technical University of Athens.","EPSG","Change of prime meridian.","99.79",NULL};
-datafile_rows_t trf_nonpolynomial_row_170[] = {"1271","Schwarzeck to WGS 84 (2)","","","","Namibia.","9603","615.64","102.08","-255.81","","","","","9001","","","","","","","1997-11-13 00:00:00","Chief Directorate Surveys and Land Information; Mowbray; South Africa.","EPSG","Beware !   Schwarzeck CS uses German legal metres.  Example:  Schwarzeck Lat 19d 35m 46.952s S Long 20d 41m 50.649s E; X=5623409.40 Y=2124618.00 Z=-2125847.62 GLM; X=5623485.86 Y=2124646.89 Z=-2125876.53 m; WGS84 X=5 [...]
-datafile_rows_t trf_nonpolynomial_row_171[] = {"1272","GGRS87 to WGS 84 (1)","","","","Greece.","9603","-199.87","74.79","246.62","","","","","9001","","","","","","","1997-06-16 00:00:00","Geodesy Department; Public Petroleum Corporation of Greece.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_172[] = {"1273","HD72 to ETRF89 (1)","","","","Hungary.","9607","-56.0","75.77","15.31","-0.37","-0.2","-0.21","-1.01","9001","9104","","9202","","","","1997-11-13 00:00:00","http://lazarus.elte.hu/gb/geodez/geod5.htm","EPSG","","97.47",NULL};
-datafile_rows_t trf_nonpolynomial_row_173[] = {"1274","Pulkovo 1942 to LKS94(ETRS89) (1)","CS42 to LKS94 (1)","","","Lithuania.","9607","-40.595","-18.55","-69.339","-2.508","-1.832","2.611","-4.299","9001","9104","","9202","","","","1998-03-12 00:00:00","HNIT-BALTIC GeoInfoServisas.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_174[] = {"1275","ED50 to WGS 84 (17)","","","","France.","9603","-84.0","-97.0","-117.0","","","","","9001","","","","","","","1998-04-16 00:00:00","IGN technical report 14 (January 1988).","EPSG","","98.11",NULL};
-datafile_rows_t trf_nonpolynomial_row_175[] = {"1276","NTF to ED50 (1)","","","","France.","9603","-84.0","37.0","437.0","","","","","9001","","","","","","","1997-11-13 00:00:00","IGN technical report 7 (October 1981).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_176[] = {"1277","NTF to WGS 72 (1)","","","","France.","9603","-168.0","-72.0","314.0","","","","","9001","","","","","","","1997-11-13 00:00:00","IGN technical report 7 (October 1981).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_177[] = {"1278","AGD66 to GDA94 (1)","","","","Australia.","9603","-127.8","-52.3","152.9","","","","","9001","","","","","","","1997-11-13 00:00:00","http://www.anzlic.org.au/icsm/gdatm/molodens.htm","EPSG","5m accuracy.  Parameter values are given to greater precision but no better accuracy at http://www.dehaa.sa.gov.au/res_inform/sicom/where/geobas14.html","",NULL};
-datafile_rows_t trf_nonpolynomial_row_178[] = {"1279","AGD84 to GDA94 (1)","","","","Australia.","9603","-128.5","-53.0","153.4","","","","","9001","","","","","","","1997-11-13 00:00:00","http://www.anzlic.org.au/icsm/gdatm/molodens.htm","EPSG","5m accuracy.  Parameter values are given to greater precision but no better accuracy at http://www.dehaa.sa.gov.au/res_inform/sicom/where/geobas14.html","",NULL};
-datafile_rows_t trf_nonpolynomial_row_179[] = {"1280","AGD84 to GDA94 (2)","","","","Australia.","9607","-117.763","-51.51","139.061","-0.292","-0.443","-0.277","-0.191","9001","9104","","9202","","","","1997-11-13 00:00:00","http://www.anzlic.org.au/icsm/gdatm/simil.htm","EPSG","1m accuracy.  Supersedes AGD84 to WGS 84 (2) (code 1236).","",NULL};
-datafile_rows_t trf_nonpolynomial_row_180[] = {"1282","Samboja to WGS 84 (1)","","","","Indonesia - east Kalimantan - Mahakam delta area.","9603","-404.78","-685.68","-45.47","","","","","9001","","","","","","","1997-11-13 00:00:00","Total Indonesia.","EPSG","Datum shift derived through ITRF93.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_181[] = {"1283","LKS94(ETRS89) to WGS 84 (1)","LKS94 to WGS 84 (1)","","","Lithuania.","9603","0.0","0.0","0.0","","","","","9001","","","","","","","1998-03-12 00:00:00","HNIT-BALTIC GeoInfoServisas.","EPSG","LKS94 is a realisation of WGS84 coincident to within 1.5 metres.  This transformation has an accuracy equal to the coincidence figure.","98.13",NULL};
-datafile_rows_t trf_nonpolynomial_row_182[] = {"1284","Arc 1960 to WGS 84 (2)","","","","Kenya.","9603","-157.0","-2.0","-299.0","","","","","9001","","","","","","","1998-03-12 00:00:00","U.S. National Imagery and Mapping Agency  TR8350.2 revision of October 1997; http://164.214.2.59/geospatial/products/GandG/tr83502b/toc.html","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_183[] = {"1285","Arc 1960 to WGS 84 (3)","","","","Tanzania.","9603","-175.0","-23.0","-303.0","","","","","9001","","","","","","","1998-03-12 00:00:00","U.S. National Imagery and Mapping Agency  TR8350.2 revision of October 1997; http://164.214.2.59/geospatial/products/GandG/tr83502b/toc.html","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_184[] = {"1286","Segora to WGS 84 (1)","","","","Indonesia - Kalimantan.","9603","-403.0","684.0","41.0","","","","","9001","","","","","","","1998-03-12 00:00:00","U.S. National Imagery and Mapping Agency  TR8350.2 revision of October 1997; http://164.214.2.59/geospatial/products/GandG/tr83502b/toc.html","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_185[] = {"1287","Pulkovo 1942 to WGS 84 (3)","","","","Hungary.","9603","28.0","-121.0","-77.0","","","","","9001","","","","","","","1998-04-16 00:00:00","U.S. National Imagery and Mapping Agency  TR8350.2 revision of October 1997; http://164.214.2.59/geospatial/products/GandG/tr83502b/toc.html","EPSG","","98.11",NULL};
-datafile_rows_t trf_nonpolynomial_row_186[] = {"1288","Pulkovo 1942 to WGS 84 (4)","","","","Poland.","9603","23.0","-124.0","-82.0","","","","","9001","","","","","","","1998-04-16 00:00:00","U.S. National Imagery and Mapping Agency  TR8350.2 revision of October 1997; http://164.214.2.59/geospatial/products/GandG/tr83502b/toc.html","EPSG","","98.11",NULL};
-datafile_rows_t trf_nonpolynomial_row_187[] = {"1289","Pulkovo 1942 to WGS 84 (5)","","","","Czech Republic.","9603","26.0","-121.0","-78.0","","","","","9001","","","","","","","1998-04-16 00:00:00","U.S. National Imagery and Mapping Agency  TR8350.2 revision of October 1997; http://164.214.2.59/geospatial/products/GandG/tr83502b/toc.html","EPSG","","98.11",NULL};
-datafile_rows_t trf_nonpolynomial_row_188[] = {"1290","Pulkovo 1942 to WGS 84 (6)","","","","Latvia.","9603","24.0","-124.0","-82.0","","","","","9001","","","","","","","1998-04-16 00:00:00","U.S. National Imagery and Mapping Agency  TR8350.2 revision of October 1997; http://164.214.2.59/geospatial/products/GandG/tr83502b/toc.html","EPSG","","98.11",NULL};
-datafile_rows_t trf_nonpolynomial_row_189[] = {"1291","Pulkovo 1942 to WGS 84 (7)","","","","Kazakstan.","9603","15.0","-130.0","-84.0","","","","","9001","","","","","","","1998-04-16 00:00:00","U.S. National Imagery and Mapping Agency  TR8350.2 revision of October 1997; http://164.214.2.59/geospatial/products/GandG/tr83502b/toc.html","EPSG","","98.11",NULL};
-datafile_rows_t trf_nonpolynomial_row_190[] = {"1292","Pulkovo 1942 to WGS 84 (8)","","","","Albania.","9603","24.0","-130.0","-92.0","","","","","9001","","","","","","","1998-04-16 00:00:00","U.S. National Imagery and Mapping Agency  TR8350.2 revision of October 1997; http://164.214.2.59/geospatial/products/GandG/tr83502b/toc.html","EPSG","","98.11",NULL};
-datafile_rows_t trf_nonpolynomial_row_191[] = {"1293","Pulkovo 1942 to WGS 84 (9)","","","","Romania.","9603","28.0","-121.0","-77.0","","","","","9001","","","","","","","1998-04-16 00:00:00","U.S. National Imagery and Mapping Agency  TR8350.2 revision of October 1997; http://164.214.2.59/geospatial/products/GandG/tr83502b/toc.html","EPSG","","98.11",NULL};
-datafile_rows_t trf_nonpolynomial_row_192[] = {"1294","Voirol 1875 to WGS 84 (1)","","","","Algeria - north of 35g (31 deg 30 min) North.","9603","-73.0","-247.0","227.0","","","","","9001","","","","","","","1998-03-12 00:00:00","U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_193[] = {"1295","Naparima 1972 to WGS 84 (2)","","","","Trinidad and Tobago.","9603","-0.465","372.095","171.736","","","","","9001","","","","","","","1998-11-11 00:00:00","Trinidad Ministry of Energy and Energy Industries.","EPSG","","98/38",NULL};
-datafile_rows_t trf_nonpolynomial_row_194[] = {"1296","Trinidad 1903 to WGS 84 (1)","","","","Trinidad.","9603","-61.702","284.488","472.052","","","","","9001","","","","","","","1998-11-11 00:00:00","Trinidad Ministry of Energy and Energy Industries.","EPSG","","98/38",NULL};
-datafile_rows_t trf_nonpolynomial_row_195[] = {"1297","Tete to Moznet (1)","","","","Mozambique.","9607","-115.064","-87.39","-101.716","0.058","-4.001","2.062","9.366","9001","9104","","9202","","","","1998-04-16 00:00:00","Direc��o Nacional de Geografia e Cadastral (DINAGECA).","EPSG","Mean of 32 stations. Residuals as high as 30 metres. To reduce the size of the residuals; four regional parameter sets (codes 1298-1301) were developed.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_196[] = {"1298","Tete to Moznet (2)","","","","Mozambique - Maputo province and southern part of Gaza province; i.e. south of approximately 24 deg S.","9607","-82.875","-57.097","-156.768","2.158","-1.524","0.982","-0.359","9001","9104","","9202","","","","1998-04-16 00:00:00","Direc��o Nacional de Geografia e Cadastral (DINAGECA).","EPSG","Mean of 9 stations; residuals are generally under 1 metre.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_197[] = {"1299","Tete to Moznet (3)","","","","Mozambique - provinces of Gaza; Inhambane and southern parts of Sofala and Manhica; i.e. between approximately 24 and 20 deg South.","9607","-138.527","-91.999","-114.591","0.14","-3.363","2.217","11.748","9001","9104","","9202","","","","1998-04-16 00:00:00","Direc��o Nacional de Geografia e Cadastral (DINAGECA).","EPSG","Mean of 6 stations; residuals are generally under 4 metres.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_198[] = {"1300","Tete to Moznet (4)","","","","Mozambique - provinces of Sofala north of Beira corridor; Manhica; Tete and Zambezia; i.e. between approximately 20 and 16 deg South.","9607","-73.472","-51.66","-112.482","-0.953","-4.6","2.368","0.586","9001","9104","","9202","","","","1998-04-16 00:00:00","Direc��o Nacional de Geografia e Cadastral (DINAGECA).","EPSG","Mean of 11 stations; residuals are generally under 3 metres.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_199[] = {"1301","Tete to Moznet (5)","","","","Mozambique - provinces of Nampula; Niassa; Cabo Delgado; i.e. north of approximately 16 deg S.","9607","219.315","168.975","-166.145","-0.198","-5.926","2.356","-57.104","9001","9104","","9202","","","","1998-04-16 00:00:00","Direc��o Nacional de Geografia e Cadastral (DINAGECA).","EPSG","Mean of 7 stations; residuals are 5-10 metres.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_200[] = {"1302","Moznet to WGS 84 (1)","","","","Mozambique.","9607","0.0","0.0","0.0","0.0","0.0","0.0","0.0","9001","9104","","9202","","","","1998-04-16 00:00:00","EPSG","EPSG","For many purposes Moznet can be considered to be coincident with WGS 84. Accuracy better than 1 metre.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_201[] = {"1303","Pulkovo 1942 to WGS 84 (10)","","","","Kazakstan - Caspian.","9606","43.661","-103.342","-124.117","1.659","-0.824","0.653","0.59","9001","9104","","9202","","","","1998-04-16 00:00:00","KazakCaspiShelf consortium.","EPSG","Mean of 13 stations along entire Kazak coastline; residuals under 2 m.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_202[] = {"1304","Indian 1975 to WGS 84 (2)","","","","Thailand.","9603","210.0","814.0","289.0","","","","","9001","","","","","","","1998-04-16 00:00:00","U.S. National Imagery and Mapping Agency  TR8350.2 revision of October 1997; http://164.214.2.59/geospatial/products/GandG/tr83502b/toc.html","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_203[] = {"1305","Tokyo to WGS 84 (5)","","","","South Korea.","9603","-147.0","506.0","687.0","","","","","9001","","","","","","","1998-04-16 00:00:00","U.S. National Imagery and Mapping Agency  TR8350.2 revision of October 1997; http://164.214.2.59/geospatial/products/GandG/tr83502b/toc.html","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_204[] = {"1306","MGI to WGS 84 (1)","","","","MEAN FOR Boznia and Herzegovina; Croatia; Serbia; Slovenia.","9603","682.0","-203.0","480.0","","","","","9001","","","","","","","1998-04-16 00:00:00","U.S. National Imagery and Mapping Agency  TR8350.2 revision of October 1997; http://164.214.2.59/geospatial/products/GandG/tr83502b/toc.html","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_205[] = {"1307","Naparima 1972 to WGS 84 (3)","","","","Trinidad & Tobago.","9603","-2.0","374.0","172.0","","","","","9001","","","","","","","1998-04-16 00:00:00","U.S. Defense Mapping Agency  TR8350.2 December 1987.","EPSG","See remarks for code 1192.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_206[] = {"1308","NAD83 to WGS 84 (4)","","","","United States (USA)","9607","-0.9738","1.9453","0.5486","-0.00000013357","-0.00000004872","-0.00000005507","0.0","9001","9101","","9202","","","","1999-04-22 00:00:00"," http://www.ngs.noaa.gov/CORS/Derivation.html","EPSG","Strictly between NAD83 and ITRF94(1996.0).  Superseded by NAD83 to WGS 84 (5) (code 1515).","99.12  99.38",NULL};
-datafile_rows_t trf_nonpolynomial_row_207[] = {"1309","DHDN to ETRF89 (1)","","","","Germany - former west Germany.","9607","582.0","105.0","414.0","-1.04","-0.35","3.08","8.3","9001","9104","","9202","","","","1998-06-30 00:00:00","Institute for Cartography and Geodesy; Leipzig.","EPSG","Mean of 69 stations; residuals under 5 m.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_208[] = {"1310","Pulkovo 1942 to ETRF89 (1)","","","","Germany - former east Germany - Brandenburg; Mecklenburg-Vorpommern; Sachsen-Anhalt.","9607","24.0","-123.0","-94.0","-0.02","0.25","0.13","1.1","9001","9104","","9202","","","","1998-06-30 00:00:00","Institute for Cartography and Geodesy; Leipzig.","EPSG","Mean of 20 stations; residuals under 2 m.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_209[] = {"1311","ED50 to WGS 84 (Common Offshore)","ED50 to WGS 84 (18)","","","United Kingdom - UKCS offshore east of 6 deg west.","9606","-89.5","-93.8","-123.1","0.0","0.0","-0.156","1.2","9001","9104","","9202","","","","1998-06-30 00:00:00","The Hydrographic Journal; vol 52 page 50.","EPSG","Recommended transformation for UKCS petroleum purposes.  Based on ED50 to WGS72 (precise ephemeris) 6-nations agreement of 1981 to which precise to broadcas [...]
-datafile_rows_t trf_nonpolynomial_row_210[] = {"1312","NAD27 to NAD83 (3)","","","","Canada.","9614","","","","","","","","","9104","","","NTv1_0.gsb","","","1999-04-22 00:00:00","Geomatics Canada - Geodetic Survey Division.","EPSG","Uses NTv1 method.  Superseded in 1997 by NTv2 (non-poly transformation code 1313) except in Quebec.   Input expects longitudes to be positive west; EPSG GeogCS NAD27 (code 4267) and NAD83 (code 4269) have longitudes positive east.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_211[] = {"1313","NAD27 to NAD83 (4)","","","","Canada.","9615","","","","","","","","","9104","","","NTv2_0.gsb","","","1999-04-22 00:00:00","http://www.geod.nrcan.gc.ca/products/html-public/GSDapps/English/NTv2_Fact_Sheet.html","EPSG","Uses NTv2 data files.  Supersedes  NTv1 (non-poly transformation code 1312) except in Quebec.  Input expects longitudes to be positive west; EPSG GeogCS NAD27 (code 4267) and (code 4269) have longitudes positive east. [...]
-datafile_rows_t trf_nonpolynomial_row_212[] = {"1314","OSGB 1936 to WGS 84 (Petroleum)","","","","United Kingdom (UKCS) - Great Britain (GB) - England; Scotland; Wales; - North Sea.","9606","446.448","-125.157","542.06","0.15","0.247","0.842","-20.489","9001","9104","","9202","","","","1998-11-11 00:00:00","UK Offshore Operators Association.","EPSG","Accuracy better than 4m and generally better than 2m.  For a more accurate transformation contact the Ordnance Survey of Great Britain.","" [...]
-datafile_rows_t trf_nonpolynomial_row_213[] = {"1315","OSGB 1936 to ED50 (UKOOA)","","","","United Kingdom (UKCS) - Great Britain (GB) - England; Scotland; Wales; - North Sea.","9606","535.948","-31.357","665.16","0.15","0.247","0.998","-21.689","9001","9104","","9202","","","","1998-11-11 00:00:00","UK Offshore Operators Association.","EPSG","This transformation is concatenated from OSGB36 to WGS 84 (Petroleum) (code 1314) minus ED50 to WGS 84 (Common Offshore) (code 1311).","",NULL};
-datafile_rows_t trf_nonpolynomial_row_214[] = {"1316","Manoca to WGS 84 (1)","","","","Cameroon.","9603","-70.9","-151.8","-41.4","","","","","9001","","","","","","","1998-11-11 00:00:00","Stolt Comex Seaway and Geoid for Elf.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_215[] = {"1317","Camacupa to WGS 72BE (1)","","","","Angola - offshore.","9603","-37.2","-370.6","-228.5","","","","","9001","","","","","","","1998-11-11 00:00:00","EPSG","EPSG","Derived by Geophysical Services Inc. in 1979 from mean of Transit results at 7 stations.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_216[] = {"1318","Camacupa to WGS 84 (1)","","","","Angola - offshore block 5.","9603","-42.01","-332.21","-229.75","","","","","9001","","","","","","","1998-11-11 00:00:00","EPSG","EPSG","Used by Conoco.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_217[] = {"1319","Camacupa to WGS 84 (2)","","","","Angola - offshore block 2.","9603","-40.0","-354.0","-224.0","","","","","9001","","","","","","","1998-11-11 00:00:00","EPSG","EPSG","Used by Texaco.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_218[] = {"1320","Camacupa to WGS 84 (3)","","","","Angola - offshore blocks 1 and 16.","9606","-37.2","-370.6","-224.0","0.0","0.0","0.554","0.219","9001","9104","8901","9202","","","","1998-12-14 00:00:00","EPSG","EPSG","Used by Shell prior to 1994.  Superseded by Camacupa to WGS 84 (9).","98.56",NULL};
-datafile_rows_t trf_nonpolynomial_row_219[] = {"1321","Camacupa to WGS 84 (4)","","","","Angola - offshore blocks 7 and 8.  Also used rounded to integer metre for GSI/HGS/Western Geophysical speculative seismic data.","9603","-42.5","-342.5","-228.1","","","","","9001","","","","","","","1998-11-11 00:00:00","EPSG","EPSG","Derived as mean of 123 Transit passes at station Cabo Ledo NE base in January 1989.  Used by Total for block 8. Used by Elf for block 7 up to December 1992 then supers [...]
-datafile_rows_t trf_nonpolynomial_row_220[] = {"1322","Camacupa to WGS 84 (5)","","","","Angola - offshore block 3.","9603","-55.5","-348.0","-229.2","","","","","9001","","","","","","","1998-11-11 00:00:00","EPSG","EPSG","Derived at station Djeno during coordination of platform PAL F2 in February 1992. Used by Elf for block 3 up to December 1992 then superseded by Camacupa to WGS 84 (7).","",NULL};
-datafile_rows_t trf_nonpolynomial_row_221[] = {"1323","Camacupa to WGS 84 (6)","","","","Angola - offshore block 7.","9603","-43.0","-337.0","-233.0","","","","","9001","","","","","","","1998-11-11 00:00:00","EPSG","EPSG","Derived at Luanda observatory December 1992.  Used by Elf for 1993 block 7 shallow water survey.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_222[] = {"1324","Camacupa to WGS 84 (7)","","","","Angola - offshore blocks 3  7  15 and 17.","9603","-48.0","-345.0","-231.0","","","","","9001","","","","","","","1998-11-11 00:00:00","EPSG","EPSG","Derived at platform PAL F2 in December 1992.  Used by Elf for blocks 3, 7 and 17 between December 1992 and 1994 then superseded by Camacupa to WGS 84 (10).  Used by Exxon for block 15 since 1993.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_223[] = {"1325","Camacupa to WGS 84 (8)","","","","Angola - offshore block 2.","9603","-48.6","-345.1","-230.8","","","","","9001","","","","","","","1998-11-11 00:00:00","EPSG","EPSG","Derived at platform PAL F2 in December 1992. Used by Total for block 2 between December 1992 and 1994 then superseded by Camacupa to WGS 84 (10).","",NULL};
-datafile_rows_t trf_nonpolynomial_row_224[] = {"1326","Camacupa to WGS 84 (9)","","","","Angola - offshore blocks 1 16 and 18.","9606","-41.057","-374.564","-226.287","0.0","0.0","0.554","0.219","9001","9104","8901","9202","","","","1998-12-14 00:00:00","EPSG","EPSG","Used by Shell since 1994.  Supersedes Camacupa to WGS 84 (3).","98.56",NULL};
-datafile_rows_t trf_nonpolynomial_row_225[] = {"1327","Camacupa to WGS 84 (10)","","","","Angola - offshore blocks 2  3 17 and 31-33.","9603","-50.9","-347.6","-231.0","","","","","9001","","","","","","","1998-11-11 00:00:00","EPSG","EPSG","Derived at platform PAL F2 in 1994 by Topnav using Doris.  Used by Elf in blocks 3 and 17 since 1994.  Used by Total in block 2 since 1994. Adopted by BP-Amoco Elf and Exxon for blocks 31-33.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_226[] = {"1328","Malongo 1987 to Mhast (1)","","","","Angola - Cabinda offshore.","9603","0.0","0.0","0.0","","","","","9001","","","","","","","1998-11-11 00:00:00","EPSG","EPSG","Malongo 1987 is an offshore extension of Mhast adopted by Chevron in 1987.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_227[] = {"1329","Mhast to WGS 84 (1)","","","","Angola - Cabinda offshore.","9603","-252.95","-4.11","-96.38","","","","","9001","","","","","","","1998-11-11 00:00:00","EPSG","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_228[] = {"1330","Malongo 1987 to WGS 84 (1)","","","","Angola - Cabinda offshore.","9603","-252.95","-4.11","-96.38","","","","","9001","","","","","","","1998-11-11 00:00:00","EPSG","EPSG","Used by Chevron.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_229[] = {"1331","EST92 to ETRF89 (1)","","","","Estonia","9607","0.0","0.0","0.0","0.0","0.0","0.0","0.0","9001","9104","","9202","","","","1998-12-14 00:00:00","http://www.geo.ut.ee/~raivo/estcoord.html","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_230[] = {"1332","Pulkovo 1942 to EST92 (1)","","","","Estonia.","9607","21.53219","-97.00027","-60.74046","-0.99548","-0.58147","-0.2418","-4.5981","9001","9104","","9202","","","","1998-12-14 00:00:00","http://www.geo.ut.ee/~raivo/estcoord.html","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_231[] = {"1333","EST92 to WGS84 (1)","","","","Estonia.","9607","0.055","-0.541","-0.185","-0.0183","0.0003","0.007","-0.014","9001","9104","","9202","","","","1998-12-14 00:00:00","http://www.geo.ut.ee/~raivo/estcoord.html","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_232[] = {"1334","Pulkovo 1942 to WGS84 (12)","","","","Estonia.","9607","21.58719","-97.54127","-60.92546","-1.01378","-0.58117","-0.2348","-4.6121","9001","9104","","9202","","","","1998-12-14 00:00:00","http://www.geo.ut.ee/~raivo/estcoord.html","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_233[] = {"1335","Tokyo to WGS 84 (6)","","","","Japan - 45d 20m to 46d N; 141d to 142d E.","9618","7.92","-13.88","26.1","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_234[] = {"1336","Tokyo to WGS 84 (7)","","","","Japan - 45d 20m to 46d N; 142d to 143d E.","9618","7.94","-13.97","26.9","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_235[] = {"1337","Tokyo to WGS 84 (8)","","","","Japan - 44deg 40min to 45deg 20min N; 141deg to 142deg E.","9618","8.1","-13.81","27.2","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_236[] = {"1338","Tokyo to WGS 84 (9)","","","","Japan - 44deg 40min to 45deg 20min N; 142deg to 143deg E.","9618","8.15","-13.95","28.4","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_237[] = {"1339","Tokyo to WGS 84 (10)","","","","Japan - 44deg to 44deg 40min N; 141deg to 142deg E.","9618","8.37","-13.65","29.0","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_238[] = {"1340","Tokyo to WGS 84 (11)","","","","Japan - 44deg to 44deg 40min N; 142deg to 143deg E.","9618","8.44","-13.87","30.9","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_239[] = {"1341","Tokyo to WGS 84 (12)","","","","Japan - 44deg to 44deg 40min N; 143deg to 144deg E.","9618","8.61","-14.08","30.7","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_240[] = {"1342","Tokyo to WGS 84 (13)","","","","Japan - 44deg to 44deg 40min N; 144deg to 145deg E.","9618","8.73","-14.3","30.9","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_241[] = {"1343","Tokyo to WGS 84 (14)","","","","Japan - 43deg 20min to 44deg N; 141deg to 142deg E.","9618","8.63","-13.49","30.9","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_242[] = {"1344","Tokyo to WGS 84 (15)","","","","Japan - 43deg 20min to 44deg N; 142deg to 143deg E.","9618","8.71","-13.73","31.6","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_243[] = {"1345","Tokyo to WGS 84 (16)","","","","Japan - 43deg 20min to 44deg N; 143deg to 144deg E.","9618","8.84","-14.03","31.2","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_244[] = {"1346","Tokyo to WGS 84 (17)","","","","Japan - 43deg 20min to 44deg N; 144deg to 145deg E.","9618","8.98","-14.33","32.5","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_245[] = {"1347","Tokyo to WGS 84 (18)","","","","Japan - 43deg 20min to 44deg N; 145deg to 146deg E.","9618","9.1","-14.56","32.6","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_246[] = {"1348","Tokyo to WGS 84 (19)","","","","Japan - 42deg 40min to 43deg 20min N; 140deg to 141deg E.","9618","8.79","-13.0","33.3","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_247[] = {"1349","Tokyo to WGS 84 (20)","","","","Japan - 42deg 40min to 43deg 20min N; 141deg to 142deg E.","9618","8.84","-13.31","31.4","","","","","9001","9104","","","","","","1999-11-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","99.77",NULL};
-datafile_rows_t trf_nonpolynomial_row_248[] = {"1350","Tokyo to WGS 84 (21)","","","","Japan - 42deg 40min to 43deg 20min N; 142deg to 143deg E.","9618","8.98","-13.59","30.9","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_249[] = {"1351","Tokyo to WGS 84 (22)","","","","Japan - 42deg 40min to 43deg 20min N; 143deg to 144deg E.","9618","9.1","-13.91","29.3","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_250[] = {"1352","Tokyo to WGS 84 (23)","","","","Japan - 42deg 40min to 43deg 20min N; 144deg to 145deg E.","9618","9.17","-14.27","31.3","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_251[] = {"1353","Tokyo to WGS 84 (24)","","","","Japan - 42deg 40min to 43deg 20min N; 145deg to 146deg E.","9618","9.23","-14.52","31.4","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_252[] = {"1354","Tokyo to WGS 84 (25)","","","","Japan - 42deg to 42deg 40min N; 139deg to 140deg E.","9618","8.9","-12.68","34.4","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_253[] = {"1355","Tokyo to WGS 84 (26)","","","","Japan - 42deg to 42deg 40min N; 140deg to 141deg E.","9618","8.99","-12.8","34.2","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_254[] = {"1356","Tokyo to WGS 84 (27)","","","","Japan - 42deg to 42deg 40min N; 141deg to 142deg E.","9618","9.0","-13.07","31.7","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_255[] = {"1357","Tokyo to WGS 84 (28)","","","","Japan - 42deg to 42deg 40min N; 142deg to 143deg E.","9618","9.21","-13.51","27.5","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_256[] = {"1358","Tokyo to WGS 84 (29)","","","","Japan - 42deg to 42deg 40min N; 143deg to 144deg E.","9618","9.33","-13.66","23.8","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_257[] = {"1359","Tokyo to WGS 84 (30)","","","","Japan - 41deg 20min to 42deg N; 140deg to 141deg E.","9618","9.25","-12.72","34.2","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_258[] = {"1360","Tokyo to WGS 84 (31)","","","","Japan - 41deg 20min to 42deg N; 141deg to 142deg E.","9618","9.39","-12.91","31.8","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_259[] = {"1361","Tokyo to WGS 84 (32)","","","","Japan - 40deg 40min to 41deg 20min N; 140deg to 141deg E.","9618","9.55","-12.63","35.6","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_260[] = {"1362","Tokyo to WGS 84 (33)","","","","Japan - 40deg 40min to 41deg 20min N; 141deg to 142deg E.","9618","9.62","-12.82","34.7","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_261[] = {"1363","Tokyo to WGS 84 (34)","","","","Japan - 40deg to 40deg 40min N; 139deg to 140deg E.","9618","9.81","-12.29","36.6","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_262[] = {"1364","Tokyo to WGS 84 (35)","","","","Japan - 40deg to 40deg 40min N; 140deg to 141deg E.","9618","9.81","-12.45","37.5","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_263[] = {"1365","Tokyo to WGS 84 (36)","","","","Japan - 40deg to 40deg 40min N; 141deg to 142deg E.","9618","9.92","-12.79","38.3","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_264[] = {"1366","Tokyo to WGS 84 (37)","","","","Japan - 39deg 20min to 40deg N; 139deg to 140deg E.","9618","9.91","-12.21","36.6","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_265[] = {"1367","Tokyo to WGS 84 (38)","","","","Japan - 39deg 20min to 40deg N; 140deg to 141deg E.","9618","10.08","-12.35","39.0","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_266[] = {"1368","Tokyo to WGS 84 (39)","","","","Japan - 39deg 20min to 40deg N; 141deg to 142deg E.","9618","10.19","-12.74","40.3","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_267[] = {"1369","Tokyo to WGS 84 (40)","","","","Japan - 38deg 40min to 39deg 20min N; 139deg to 140deg E.","9618","10.29","-12.13","38.5","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_268[] = {"1370","Tokyo to WGS 84 (41)","","","","Japan - 38deg 40min to 39deg 20min N; 140deg to 141deg E.","9618","10.33","-12.27","40.1","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_269[] = {"1371","Tokyo to WGS 84 (42)","","","","Japan - 38deg 40min to 39deg 20min N; 141deg to 142deg E.","9618","10.45","-12.61","41.7","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_270[] = {"1372","Tokyo to WGS 84 (43)","","","","Japan - 38deg to 38deg 40min N; 139deg to 140deg E.","9618","10.54","-11.96","39.1","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_271[] = {"1373","Tokyo to WGS 84 (44)","","","","Japan - 38deg to 38deg 40min N; 140deg to 141deg E.","9618","10.65","-12.27","41.7","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_272[] = {"1374","Tokyo to WGS 84 (45)","","","","Japan - 38deg to 38deg 40min N; 141deg to 142deg E.","9618","10.67","-12.5","41.1","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_273[] = {"1375","Tokyo to WGS 84 (46)","","","","Japan - 37deg 20min to 38deg N; 136deg to 137deg E.","9618","10.67","-10.86","38.5","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_274[] = {"1376","Tokyo to WGS 84 (47)","","","","Japan - 37deg 20min to 38deg N; 137deg to 138deg E.","9618","10.68","-10.97","36.0","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_275[] = {"1377","Tokyo to WGS 84 (48)","","","","Japan - 37deg 20min to 38deg N; 138deg to 139deg E.","9618","10.8","-11.53","39.7","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_276[] = {"1378","Tokyo to WGS 84 (49)","","","","Japan - 37deg 20min to 38deg N; 139deg to 140deg E.","9618","10.8","-11.73","40.9","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_277[] = {"1379","Tokyo to WGS 84 (50)","","","","Japan - 37deg 20min to 38deg N; 140deg to 141deg E.","9618","10.92","-12.16","42.3","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_278[] = {"1380","Tokyo to WGS 84 (51)","","","","Japan - 37deg 20min to 38deg N; 141deg to 142deg E.","9618","11.0","-12.25","41.2","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_279[] = {"1381","Tokyo to WGS 84 (52)","","","","Japan - 36deg 40min to 37deg 20min N; 136deg to 137deg E.","9618","10.83","-10.77","36.2","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_280[] = {"1382","Tokyo to WGS 84 (53)","","","","Japan - 36deg 40min to 37deg 20min N; 137deg to 138deg E.","9618","10.95","-11.0","38.7","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_281[] = {"1383","Tokyo to WGS 84 (54)","","","","Japan - 36deg 40min to 37deg 20min N; 138deg to 139deg E.","9618","10.97","-11.34","40.8","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_282[] = {"1384","Tokyo to WGS 84 (55)","","","","Japan - 36deg 40min to 37deg 20min N; 139deg to 140deg E.","9618","11.04","-11.69","43.3","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_283[] = {"1385","Tokyo to WGS 84 (56)","","","","Japan - 36deg 40min to 37deg 20min N; 140deg to 141deg E.","9618","11.17","-12.05","42.6","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_284[] = {"1386","Tokyo to WGS 84 (57)","","","","Japan - 36deg to 37deg 40min N; 136deg to 137deg E.","9618","11.11","-10.59","37.3","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_285[] = {"1387","Tokyo to WGS 84 (58)","","","","Japan - 36deg to 37deg 40min N; 137deg to 138deg E.","9618","11.16","-10.97","40.3","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_286[] = {"1388","Tokyo to WGS 84 (59)","","","","Japan - 36deg to 37deg 40min N; 138deg to 139deg E.","9618","11.29","-11.23","42.4","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_287[] = {"1389","Tokyo to WGS 84 (60)","","","","Japan - 36deg to 37deg 40min N; 139deg to 140deg E.","9618","11.36","-11.59","42.5","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_288[] = {"1390","Tokyo to WGS 84 (61)","","","","Japan - 36deg to 37deg 40min N; 140deg to 141deg E.","9618","11.44","-11.88","40.3","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_289[] = {"1391","Tokyo to WGS 84 (62)","","","","Japan - 35deg 20min to 36deg N; 132deg to 133deg E.","9618","11.27","-9.31","30.9","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_290[] = {"1392","Tokyo to WGS 84 (63)","","","","Japan - 35deg 20min to 36deg N; 133deg to 134deg E.","9618","11.33","-9.52","33.8","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_291[] = {"1393","Tokyo to WGS 84 (64)","","","","Japan - 35deg 20min to 36deg N; 134deg to 135deg E.","9618","11.38","-9.86","34.9","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_292[] = {"1394","Tokyo to WGS 84 (65)","","","","Japan - 35deg 20min to 36deg N; 135deg to 136deg E.","9618","11.41","-10.14","35.7","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_293[] = {"1395","Tokyo to WGS 84 (66)","","","","Japan - 35deg 20min to 36deg N; 136deg to 137deg E.","9618","11.39","-10.52","37.5","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_294[] = {"1396","Tokyo to WGS 84 (67)","","","","Japan - 35deg 20min to 36deg N; 137deg to 138deg E.","9618","11.49","-10.83","39.3","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_295[] = {"1397","Tokyo to WGS 84 (68)","","","","Japan - 35deg 20min to 36deg N; 138deg to 139deg E.","9618","11.58","-11.21","41.7","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_296[] = {"1398","Tokyo to WGS 84 (69)","","","","Japan - 35deg 20min to 36deg N; 139deg to 140deg E.","9618","11.65","-11.53","38.5","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_297[] = {"1399","Tokyo to WGS 84 (70)","","","","Japan - 35deg 20min to 36deg N; 140deg to 141deg E.","9618","11.72","-11.8","34.5","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_298[] = {"1400","Tokyo to WGS 84 (71)","","","","Japan - 34deg 40min to 35deg 20min N; 132deg to 133deg E.","9618","11.44","-9.21","32.7","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_299[] = {"1401","Tokyo to WGS 84 (72)","","","","Japan - 34deg 40min to 35deg 20min N; 133deg to 134deg E.","9618","11.47","-9.52","35.2","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_300[] = {"1402","Tokyo to WGS 84 (73)","","","","Japan - 34deg 40min to 35deg 20min N; 134deg to 135deg E.","9618","11.55","-9.8","35.4","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_301[] = {"1403","Tokyo to WGS 84 (74)","","","","Japan - 34deg 40min to 35deg 20min N; 135deg to 136deg E.","9618","11.61","-10.12","35.9","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_302[] = {"1404","Tokyo to WGS 84 (75)","","","","Japan - 34deg 40min to 35deg 20min N; 136deg to 137deg E.","9618","11.66","-10.47","37.0","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_303[] = {"1405","Tokyo to WGS 84 (76)","","","","Japan - 34deg 40min to 35deg 20min N; 137deg to 138deg E.","9618","11.78","-10.79","39.8","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_304[] = {"1406","Tokyo to WGS 84 (77)","","","","Japan - 34deg 40min to 35deg 20min N; 138deg to 139deg E.","9618","11.85","-11.13","39.9","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_305[] = {"1407","Tokyo to WGS 84 (78)","","","","Japan - 34deg 40min to 35deg 20min N; 139deg to 140deg E.","9618","11.9","-11.47","36.9","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_306[] = {"1408","Tokyo to WGS 84 (79)","","","","Japan - 34deg 40min to 35deg 20min N; 140deg to 141deg E.","9618","11.91","-11.69","33.7","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_307[] = {"1409","Tokyo to WGS 84 (80)","","","","Japan - 34deg to 34deg 40min N; 130deg to 131deg E.","9618","11.65","-8.59","29.7","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_308[] = {"1410","Tokyo to WGS 84 (81)","","","","Japan - 34deg to 34deg 40min N; 131deg to 132deg E.","9618","11.68","-8.8","30.5","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_309[] = {"1411","Tokyo to WGS 84 (82)","","","","Japan - 34deg to 34deg 40min N; 132deg to 133deg E.","9618","11.73","-9.04","30.9","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_310[] = {"1412","Tokyo to WGS 84 (83)","","","","Japan - 34deg to 34deg 40min N; 133deg to 134deg E.","9618","11.72","-9.48","35.1","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_311[] = {"1413","Tokyo to WGS 84 (84)","","","","Japan - 34deg to 34deg 40min N; 134deg to 135deg E.","9618","11.81","9.74","35.8","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_312[] = {"1414","Tokyo to WGS 84 (85)","","","","Japan - 34deg to 34deg 40min N; 135deg to 136deg E.","9618","11.88","-10.1","37.1","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_313[] = {"1415","Tokyo to WGS 84 (86)","","","","Japan - 34deg to 34deg 40min N; 136deg to 137deg E.","9618","11.91","-10.35","37.9","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_314[] = {"1416","Tokyo to WGS 84 (87)","","","","Japan - 34deg to 34deg 40min N; 137deg to 138deg E.","9618","11.9","-10.7","39.3","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_315[] = {"1417","Tokyo to WGS 84 (88)","","","","Japan - 34deg to 34deg 40min N; 138deg to 139deg E.","9618","12.02","-11.09","38.2","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_316[] = {"1418","Tokyo to WGS 84 (89)","","","","Japan - 33deg 20min to 34deg N; 129deg to 130deg E.","9618","11.87","-8.23","29.7","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_317[] = {"1419","Tokyo to WGS 84 (90)","","","","Japan - 33deg 20min to 34deg N; 130deg to 131deg E.","9618","11.84","-8.44","30.6","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_318[] = {"1420","Tokyo to WGS 84 (91)","","","","Japan - 33deg 20min to 34deg N; 131deg to 132deg E.","9618","11.94","-8.71","30.2","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_319[] = {"1421","Tokyo to WGS 84 (92)","","","","Japan - 33deg 20min to 34deg N; 132deg to 133deg E.","9618","11.99","-9.02","30.9","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_320[] = {"1422","Tokyo to WGS 84 (93)","","","","Japan - 33deg 20min to 34deg N; 133deg to 134deg E.","9618","12.05","-9.36","35.0","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_321[] = {"1423","Tokyo to WGS 84 (94)","","","","Japan - 33deg 20min to 34deg N; 134deg to 135deg E.","9618","12.1","-9.64","35.5","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_322[] = {"1424","Tokyo to WGS 84 (95)","","","","Japan - 33deg 20min to 34deg N; 135deg to 136deg E.","9618","12.1","-10.08","37.3","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_323[] = {"1425","Tokyo to WGS 84 (96)","","","","Japan - 33deg 20min to 34deg N; 136deg to 137deg E.","9618","12.07","-10.25","37.3","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_324[] = {"1426","Tokyo to WGS 84 (97)","","","","Japan - 32deg 40min to 33deg 20min N; 129deg to 130deg E.","9618","12.0","-8.15","32.1","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_325[] = {"1427","Tokyo to WGS 84 (98)","","","","Japan - 32deg 40min to 33deg 20min N; 130deg to 131deg E.","9618","12.06","-8.38","31.0","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_326[] = {"1428","Tokyo to WGS 84 (99)","","","","Japan - 32deg 40min to 33deg 20min N; 131deg to 132deg E.","9618","12.17","-8.69","30.3","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_327[] = {"1429","Tokyo to WGS 84 (100)","","","","Japan - 32deg 40min to 33deg 20min N; 132deg to 133deg E.","9618","12.23","-8.99","31.7","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_328[] = {"1430","Tokyo to WGS 84 (101)","","","","Japan - 32deg 40min to 33deg 20min N; 133deg to 134deg E.","9618","12.21","-9.21","34.3","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_329[] = {"1431","Tokyo to WGS 84 (102)","","","","Japan - 32deg 40min to 33deg 20min N; 134deg to 135deg E.","9618","12.28","-9.6","33.3","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_330[] = {"1432","Tokyo to WGS 84 (103)","","","","Japan - 32deg to 32deg 40min N; 130deg to 131deg E.","9618","12.28","-8.25","31.0","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_331[] = {"1433","Tokyo to WGS 84 (104)","","","","Japan - 32deg to 32deg 40min N; 131deg to 132deg E.","9618","12.37","-8.55","29.1","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_332[] = {"1434","Tokyo to WGS 84 (105)","","","","Japan - 31deg 20min to 32deg N; 130deg to 131deg E.","9618","12.53","-8.21","31.0","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_333[] = {"1435","Tokyo to WGS 84 (106)","","","","Japan - 31deg 20min to 32deg N; 131deg to 132deg E.","9618","12.57","-8.4","28.4","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_334[] = {"1436","Tokyo to WGS 84 (107)","","","","Japan - 30deg 40min to 31deg 20min N; 130deg to 131deg E.","9618","12.71","-8.17","29.9","","","","","9001","9104","","","","","","1998-12-12 00:00:00","http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_335[] = {"1437","RT90 to ETRF89 (1)","","","","Sweden","9607","419.3836","99.3335","591.3451","-0.850389","-1.817277","7.862238","-0.99496","9001","9104","","9202","","","","1999-04-22 00:00:00","National Land Survey of Sweden.","EPSG","This transformation is actually between ETRF89 and RR92.  RR92 is a geographic 3D coordinate system where the horizontal component is RT90.","99.11",NULL};
-datafile_rows_t trf_nonpolynomial_row_336[] = {"1438","Fahud to WGS 84 (2)","","","","Oman.","9606","-333.102","-11.02","230.69","0.0","0.0","0.554","0.219","9001","9104","","9202","","","","1999-04-22 00:00:00","Petroleum Development Oman","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_337[] = {"1439","PSD93 to WGS 84 (1)","","","","Oman.","9606","-180.624","-225.516","173.919","-0.81","-1.898","8.336","16.71006","9001","9104","","9202","","","","1999-04-22 00:00:00","Petroleum Development Oman","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_338[] = {"1440","ED50 to WGS 84 (19)","","","","Greece.","9603","-86.0","-92.2","-127.5","","","","","9001","","","","","","","1999-04-22 00:00:00","Geodesy Department; Hellenic Petroleum s.a.","EPSG","Used in oil industry.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_339[] = {"1441","Antigua 1943 to WGS 84 (1)","","","","Antigua.","9603","-255.0","-15.0","71.0","","","","","9001","","","","","","","1999-04-22 00:00:00","Ordnance Survey of Great Britain","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_340[] = {"1442","Dominica 1945 to WGS 84 (1)","","","","Dominica.","9603","725.0","685.0","536.0","","","","","9001","","","","","","","1999-04-22 00:00:00","Ordnance Survey of Great Britain","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_341[] = {"1443","Grenada 1953 to WGS 84 (1)","","","","Grenada.","9603","72.0","213.7","93.0","","","","","9001","","","","","","","1999-04-22 00:00:00","Ordnance Survey of Great Britain","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_342[] = {"1444","Montserrat 1958 to WGS 84 (1)","","","","Montserrat.","9603","174.0","359.0","365.0","","","","","9001","","","","","","","1999-04-22 00:00:00","Ordnance Survey of Great Britain","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_343[] = {"1445","St. Kitts 1955 to WGS 84 (1)","","","","Saint Kitts and Nevis.","9603","9.0","183.0","236.0","","","","","9001","","","","","","","1999-04-22 00:00:00","Ordnance Survey of Great Britain","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_344[] = {"1446","St. Lucia 1955 to WGS 84 (1)","","","","Saint Lucia.","9603","-149.0","128.0","296.0","","","","","9001","","","","","","","1999-04-22 00:00:00","Ordnance Survey of Great Britain","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_345[] = {"1447","Anguilla 1957 to WGS 84 (1)","","","","Anguilla.","9619","-18.0","4.4","","","","","","","9104","","","","","","1999-04-22 00:00:00","Ordnance Survey of Great Britain","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_346[] = {"1450","ED50 to WGS 84 (20)","","","","Norway - offshore between 62 and 65 deg North and west of 5 deg East.","9620","","","","","","8047.0","8046.0","","9102","","","ED50 to WGS 84 (15)","ED50 to WGS 84 (14)","","1999-04-22 00:00:00","Norwegian Mapping Authority note of 13-Feb-1991 \"Om Transformasjon mellom Geodetiske Datum i Norge\"","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_347[] = {"1451","NAD27(CGQ77) to NAD83 (1)","","","","Canada - Quebec","9614","","","","","","","","","9104","","","PQV4.DAC","","","1999-05-15 00:00:00","Geodetic Service of Quebec.  Contact alain.bernard at mrn.gouv.qc.ca","EPSG","Uses NT method which expects longitudes positive west; EPSG GeogCSs CGQ77 (code 4609) and NAD83 (code 4269) have longitudes positive east.  Supersedes NAD27 to NAD83 (5) (code xxxx).","",NULL};
-datafile_rows_t trf_nonpolynomial_row_348[] = {"1454","Old Hawaiian to NAD83 (1)","","","","United States (USA) - Hawaii including EEZ.","9613","","","","","","","","","9104","","","hawaii.las","hawaii.los","","1999-05-15 00:00:00","US Coast & Geodetic Survey  www.ngs.noaa.gov","EPSG","Uses NADCON method which expects longitudes positive west; EPSG GeogCSs Old Hawaiian (code 4135) and NAD83 (code 4269) have longitudes positive east.  NADCON data converts from Old Hawaiian Datum to but ma [...]
-datafile_rows_t trf_nonpolynomial_row_349[] = {"1455","St. Lawrence Island to NAD83 (1)","","","","United States (USA) - Alaska - St. Lawrence Island.","9613","","","","","","","","","9104","","","stlrnc.las","stlrnc.los","","1999-05-15 00:00:00","US Coast & Geodetic Survey  www.ngs.noaa.gov","EPSG","Uses NADCON method which expects longitudes positive west; EPSG GeogCSs St. Lawrence (code 4136) and NAD83 (code 4269) have longitudes positive east. NADCON data converts from St. Lawrence D [...]
-datafile_rows_t trf_nonpolynomial_row_350[] = {"1456","St. Paul Island to NAD83 (1)","","","","United States (USA) - Alaska - St. Paul Island.","9613","","","","","","","","","9104","","","stpaul.las","stpaul.los","","1999-05-15 00:00:00","US Coast & Geodetic Survey  www.ngs.noaa.gov","EPSG","Uses NADCON method which expects longitudes positive west; EPSG GeogCSs St. Paul (code 4137) and NAD83 (code 4269) have longitudes positive east. NADCON data converts from St. Paul Datum to but make [...]
-datafile_rows_t trf_nonpolynomial_row_351[] = {"1457","St. George Island to NAD83 (1)","","","","United States (USA) - Alaska - St. George Island.","9613","","","","","","","","","9104","","","stgeorge.las","stgeorge.los","","1999-05-15 00:00:00","US Coast & Geodetic Survey  www.ngs.noaa.gov","EPSG","Uses NADCON method which expects longitudes positive west; EPSG GeogCSs St. George (code 4138) and NAD83 (code 4269) have longitudes positive east. NADCON data converts from St. George Datum [...]
-datafile_rows_t trf_nonpolynomial_row_352[] = {"1458","AGD66 to GDA94 (2)","","","","Australia - ACT.","9607","-129.193","-41.212","130.73","-0.246","-0.374","-0.329","-2.955","9001","9104","","9202","","","","1999-05-25 00:00:00","http://www.anzlic.org.au/icsm/gdatm/regional.htm","EPSG","1m accuracy.  Recommended for mid-accuracy use in A.C.T.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_353[] = {"1459","AGD66 to GDA94 (3)","","","","Australia - Tasmania.","9607","-120.695","-62.73","165.46","-0.109","0.141","0.116","2.733","9001","9104","","9202","","","","1999-05-25 00:00:00","http://www.anzlic.org.au/icsm/gdatm/regional.htm","EPSG","1m accuracy.  Recommended for mid-accuracy use in Tasmania.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_354[] = {"1460","AGD66 to GDA94 (4)","","","","Australia - New South Wales (NSW) and Victoria.","9607","-119.353","-48.301","139.484","-0.415","-0.26","-0.437","-0.613","9001","9104","","9202","","","","1999-05-25 00:00:00","http://www.anzlic.org.au/icsm/gdatm/regional.htm","EPSG","1m accuracy.  Recommended for mid-accuracy use in NSW and Victoria.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_355[] = {"1461","Puerto Rico to NAD83 (1)","","","","Puerto Rico; Virgin Islands (U.S.); Virgin Islands (British).","9613","","","","","","","","","9104","","","prvi.las","prvi.los","","1999-05-24 00:00:00","US Coast & Geodetic Survey  www.ngs.noaa.gov","EPSG","Uses NADCON method which expects longitudes positive west; EPSG GeogCSs Puerto Rico (code 4139) and NAD83 (code 4269) have longitudes positive east. NADCON data converts from Puerto Rico Datum [...]
-datafile_rows_t trf_nonpolynomial_row_356[] = {"1462","NAD27 to NAD83 (5)","","","","Canada - Quebec","9614","","","","","","","","","9104","","","GS2783v1.QUE","","","1999-05-24 00:00:00","Geodetic Service of Quebec.  Contact alain.bernard at mrn.gouv.qc.ca","EPSG","Uses NT method which expects longitudes positive west; EPSG GeogCSs NAD27 (code 4267) and NAD83 (code 4269) have longitudes positive east.  Superseded by NAD27(CGQ77) to NAD83 (1) (code 1451).","",NULL};
-datafile_rows_t trf_nonpolynomial_row_357[] = {"1463","NAD27(76) to NAD83 (1)","","","","Canada - Ontario","9615","","","","","","","","","9104","","","May76v20.gsb","","","1999-05-24 00:00:00","Geodetic Survey of Canada   http://www.geod.emr.ca/html-public/GSDapps/English/NTv2_Fact_Sheet.html","EPSG","Uses NT method which expects longitudes positive west; EPSG GeogCSs NAD27(76) (code 4608) and NAD83 (code 4269) have longitudes positive east.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_358[] = {"1464","AGD66 to GDA94 (5)","","","","Australia - Victoria.","9615","","","","","","","","","9104","","","vic_0799.gsb","","","1999-10-20 00:00:00","http://www.osg.vic.gov.au/tools.htm","EPSG","0.1m accuracy.  Input expects longitudes to be positive west; EPSG GeogCS AGD66 (code 4202) and GDA94 (code 4283) both have longitudes positive east.","99.67",NULL};
-datafile_rows_t trf_nonpolynomial_row_359[] = {"1466","NGO 1948 (Oslo) to NGO1948","","","","Norway - onshore.","9601","10.43225","","","","","","","","9110","","","","","","1999-11-12 00:00:00","J. Danielsen; \"Transformasjoner ved Norges Geografiske Oppm�ling\"; Kart Og Plan nr 1; 1982.","EPSG","Change of prime meridian.","99.79",NULL};
-datafile_rows_t trf_nonpolynomial_row_360[] = {"1467","NTF (Paris) to NTF (1)","","","","France - onshore.","9601","2.5969213","","","","","","","","9105","","","","","","1999-11-12 00:00:00","IGN Paris.","EPSG","Change of prime meridian.","99.63  99.79",NULL};
-datafile_rows_t trf_nonpolynomial_row_361[] = {"1468","NTF (Paris) to NTF (2)","","","","France - onshore.","9601","2.201395","","","","","","","","9110","","","","","","1999-11-12 00:00:00","Royal Geographic Society; London","EPSG","Change of prime meridian.  EPSG prefers value from IGN Paris (code 1467).","99.63  99.79",NULL};
-datafile_rows_t trf_nonpolynomial_row_362[] = {"1469","Locodjo 1965 to WGS 84 (1)","","","","Cote D'Ivoire (Ivory Coast)","9603","-125.0","53.0","467.0","","","","","9001","","","","","","","1999-10-20 00:00:00","IGN Paris","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_363[] = {"1470","Abidjan 1987 to WGS 84 (1)","","","","Cote D'Ivoire (Ivory Coast)","9603","-124.76","53.0","466.79","","","","","9001","","","","","","","1999-10-20 00:00:00","IGN Paris","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_364[] = {"1471","MGI to WGS 84 (2)","","","","Austria","9606","-577.326","-90.129","-463.919","-15.8537","-4.55","-16.3489","-2.4232","9001","9113","","9202","","","","1999-10-20 00:00:00","Bundesamt f�r Eich- und Vermessungswesen","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_365[] = {"1472","ATS77 to NAD83(CSRS98) (1)","","","","Canada - New Brunswick","9615","","","","","","","","","9104","","","NT7783v2.gsb","","","1999-10-20 00:00:00","New Brunswick Geographic Information Corporation land and water information standards manual.","EPSG","Introduced in 1999.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_366[] = {"1473","NAD83(CSRS98) to WGS 84 (1)","","","","Canada - New Brunswick","9603","0.0","0.0","0.0","","","","","9001","","","","","","","1999-10-20 00:00:00","EPSG","EPSG","For many purposes NAD83 can be considered to be coincident with WGS 84.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_367[] = {"1474","NAD83 to NAD83(HARN) (1)","","","","United States (USA) - Alabama.","9613","","","","","","","","","9104","","","alhpgn.las","alhpgn.los","","1999-10-20 00:00:00","US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file","EPSG","Uses NADCON method which expects longitudes positive west; EPSG GeogCSs NAD83 (code 4269) and NAD83(HARN) (code 4140) have longitudes positive east.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_368[] = {"1475","NAD83 to NAD83(HARN) (2)","","","","United States (USA) - Arizona.","9613","","","","","","","","","9104","","","azhpgn.las","azhpgn.los","","1999-10-20 00:00:00","US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file","EPSG","Uses NADCON method which expects longitudes positive west; EPSG GeogCSs NAD83 (code 4269) and NAD83(HARN) (code 4140) have longitudes positive east.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_369[] = {"1476","NAD83 to NAD83(HARN) (3)","","","","United States (USA) - California north of 38 deg N.","9613","","","","","","","","","9104","","","cnhpgn.las","cnhpgn.los","","1999-10-20 00:00:00","US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file","EPSG","Uses NADCON method which expects longitudes positive west; EPSG GeogCSs NAD83 (code 4269) and NAD83(HARN) (code 4140) have longitudes positive east.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_370[] = {"1477","NAD83 to NAD83(HARN) (4)","","","","United States (USA) - California south of 38 deg N.","9613","","","","","","","","","9104","","","cshpgn.las","cshpgn.los","","1999-10-20 00:00:00","US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file","EPSG","Uses NADCON method which expects longitudes positive west; EPSG GeogCSs NAD83 (code 4269) and NAD83(HARN) (code 4140) have longitudes positive east.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_371[] = {"1478","NAD83 to NAD83(HARN) (5)","","","","United States (USA) - Colorado.","9613","","","","","","","","","9104","","","cohpgn.las","cohpgn.los","","1999-10-20 00:00:00","US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file","EPSG","Uses NADCON method which expects longitudes positive west; EPSG GeogCSs NAD83 (code 4269) and NAD83(HARN) (code 4140) have longitudes positive east.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_372[] = {"1479","NAD83 to NAD83(HARN) (6)","","","","United States (USA) - Georgia.","9613","","","","","","","","","9104","","","gahpgn.las","gahpgn.los","","1999-10-20 00:00:00","US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file","EPSG","Uses NADCON method which expects longitudes positive west; EPSG GeogCSs NAD83 (code 4269) and NAD83(HARN) (code 4140) have longitudes positive east.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_373[] = {"1480","NAD83 to NAD83(HARN) (7)","","","","United States (USA) - Florida.","9613","","","","","","","","","9104","","","flhpgn.las","flhpgn.los","","1999-10-20 00:00:00","US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file","EPSG","Uses NADCON method which expects longitudes positive west; EPSG GeogCSs NAD83 (code 4269) and NAD83(HARN) (code 4140) have longitudes positive east.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_374[] = {"1481","NAD83 to NAD83(HARN) (8)","","","","United States (USA) - Idaho and Montana - east of 113 deg W.","9613","","","","","","","","","9104","","","emhpgn.las","emhpgn.los","","1999-10-20 00:00:00","US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file","EPSG","Uses NADCON method which expects longitudes positive west; EPSG GeogCSs NAD83 (code 4269) and NAD83(HARN) (code 4140) have longitudes positive east.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_375[] = {"1482","NAD83 to NAD83(HARN) (9)","","","","United States (USA) - Idaho and Montana - west of 113 deg W.","9613","","","","","","","","","9104","","","wmhpgn.las","wmhpgn.los","","1999-10-20 00:00:00","US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file","EPSG","Uses NADCON method which expects longitudes positive west; EPSG GeogCSs NAD83 (code 4269) and NAD83(HARN) (code 4140) have longitudes positive east.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_376[] = {"1483","NAD83 to NAD83(HARN) (10)","","","","United States (USA) - Kentucky.","9613","","","","","","","","","9104","","","kyhpgn.las","kyhpgn.los","","1999-10-20 00:00:00","US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file","EPSG","Uses NADCON method which expects longitudes positive west; EPSG GeogCSs NAD83 (code 4269) and NAD83(HARN) (code 4140) have longitudes positive east.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_377[] = {"1484","NAD83 to NAD83(HARN) (11)","","","","United States (USA) - Louisiana.","9613","","","","","","","","","9104","","","lahpgn.las","lahpgn.los","","1999-10-20 00:00:00","US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file","EPSG","Uses NADCON method which expects longitudes positive west; EPSG GeogCSs NAD83 (code 4269) and NAD83(HARN) (code 4140) have longitudes positive east.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_378[] = {"1485","NAD83 to NAD83(HARN) (12)","","","","United States (USA) - Delaware and Maryland.","9613","","","","","","","","","9104","","","mdhpgn.las","mdhpgn.los","","1999-10-20 00:00:00","US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file","EPSG","Uses NADCON method which expects longitudes positive west; EPSG GeogCSs NAD83 (code 4269) and NAD83(HARN) (code 4140) have longitudes positive east.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_379[] = {"1486","NAD83 to NAD83(HARN) (13)","","","","United States (USA) - Maine.","9613","","","","","","","","","9104","","","mehpgn.las","mehpgn.los","","1999-10-20 00:00:00","US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file","EPSG","Uses NADCON method which expects longitudes positive west; EPSG GeogCSs NAD83 (code 4269) and NAD83(HARN) (code 4140) have longitudes positive east.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_380[] = {"1487","NAD83 to NAD83(HARN) (14)","","","","United States (USA) - Michigan.","9613","","","","","","","","","9104","","","mihpgn.las","mihpgn.los","","1999-10-20 00:00:00","US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file","EPSG","Uses NADCON method which expects longitudes positive west; EPSG GeogCSs NAD83 (code 4269) and NAD83(HARN) (code 4140) have longitudes positive east.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_381[] = {"1488","NAD83 to NAD83(HARN) (15)","","","","United States (USA) - Mississippi.","9613","","","","","","","","","9104","","","mshpgn.las","mshpgn.los","","1999-10-20 00:00:00","US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file","EPSG","Uses NADCON method which expects longitudes positive west; EPSG GeogCSs NAD83 (code 4269) and NAD83(HARN) (code 4140) have longitudes positive east.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_382[] = {"1489","NAD83 to NAD83(HARN) (16)","","","","United States (USA) - Nebraska.","9613","","","","","","","","","9104","","","nbhpgn.las","nbhpgn.los","","1999-10-20 00:00:00","US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file","EPSG","Uses NADCON method which expects longitudes positive west; EPSG GeogCSs NAD83 (code 4269) and NAD83(HARN) (code 4140) have longitudes positive east.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_383[] = {"1490","NAD83 to NAD83(HARN) (17)","","","","United States (USA) - Connecticut; Massachusetts; New Hampshire; Rhode Island; Vermont.","9613","","","","","","","","","9104","","","nehpgn.las","nehpgn.los","","1999-10-20 00:00:00","US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file","EPSG","Uses NADCON method which expects longitudes positive west; EPSG GeogCSs NAD83 (code 4269) and NAD83(HARN) (code 4140) have longitudes positiv [...]
-datafile_rows_t trf_nonpolynomial_row_384[] = {"1491","NAD83 to NAD83(HARN) (18)","","","","United States (USA) - New Mexico.","9613","","","","","","","","","9104","","","nmhpgn.las","nmhpgn.los","","1999-10-20 00:00:00","US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file","EPSG","Uses NADCON method which expects longitudes positive west; EPSG GeogCSs NAD83 (code 4269) and NAD83(HARN) (code 4140) have longitudes positive east.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_385[] = {"1492","NAD83 to NAD83(HARN) (19)","","","","United States (USA) - New York.","9613","","","","","","","","","9104","","","nyhpgn.las","nyhpgn.los","","1999-10-20 00:00:00","US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file","EPSG","Uses NADCON method which expects longitudes positive west; EPSG GeogCSs NAD83 (code 4269) and NAD83(HARN) (code 4140) have longitudes positive east.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_386[] = {"1493","NAD83 to NAD83(HARN) (20)","","","","United States (USA) - North Dakota.","9613","","","","","","","","","9104","","","ndhpgn.las","ndhpgn.los","","1999-10-20 00:00:00","US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file","EPSG","Uses NADCON method which expects longitudes positive west; EPSG GeogCSs NAD83 (code 4269) and NAD83(HARN) (code 4140) have longitudes positive east.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_387[] = {"1494","NAD83 to NAD83(HARN) (21)","","","","United States (USA) - Oklahoma.","9613","","","","","","","","","9104","","","okhpgn.las","okhpgn.los","","1999-10-20 00:00:00","US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file","EPSG","Uses NADCON method which expects longitudes positive west; EPSG GeogCSs NAD83 (code 4269) and NAD83(HARN) (code 4140) have longitudes positive east.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_388[] = {"1495","NAD83 to NAD83(HARN) (22)","","","","United States (USA) - Puerto Rico and the Virgin Islands.","9613","","","","","","","","","9104","","","pvhpgn.las","pvhpgn.los","","1999-10-20 00:00:00","US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file","EPSG","Uses NADCON method which expects longitudes positive west; EPSG GeogCSs NAD83 (code 4269) and NAD83(HARN) (code 4140) have longitudes positive east.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_389[] = {"1496","NAD83 to NAD83(HARN) (23)","","","","United States (USA) - South Dakota.","9613","","","","","","","","","9104","","","sdhpgn.las","sdhpgn.los","","1999-10-20 00:00:00","US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file","EPSG","Uses NADCON method which expects longitudes positive west; EPSG GeogCSs NAD83 (code 4269) and NAD83(HARN) (code 4140) have longitudes positive east.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_390[] = {"1497","NAD83 to NAD83(HARN) (24)","","","","United States (USA) - Tennessee","9613","","","","","","","","","9104","","","tnhpgn.las","tnhpgn.los","","1999-10-20 00:00:00","US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file","EPSG","Uses NADCON method which expects longitudes positive west; EPSG GeogCSs NAD83 (code 4269) and NAD83(HARN) (code 4140) have longitudes positive east.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_391[] = {"1498","NAD83 to NAD83(HARN) (25)","","","","United States (USA) - Texas east of 100deg West.","9613","","","","","","","","","9104","","","ethpgn.las","ethpgn.los","","1999-10-20 00:00:00","US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file","EPSG","Uses NADCON method which expects longitudes positive west; EPSG GeogCSs NAD83 (code 4269) and NAD83(HARN) (code 4140) have longitudes positive east.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_392[] = {"1499","NAD83 to NAD83(HARN) (26)","","","","United States (USA) - Texas west of 100deg West.","9613","","","","","","","","","9104","","","wthpgn.las","wthpgn.los","","1999-10-20 00:00:00","US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file","EPSG","Uses NADCON method which expects longitudes positive west; EPSG GeogCSs NAD83 (code 4269) and NAD83(HARN) (code 4140) have longitudes positive east.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_393[] = {"1500","NAD83 to NAD83(HARN) (27)","","","","United States (USA) - Virginia.","9613","","","","","","","","","9104","","","vahpgn.las","vahpgn.los","","1999-10-20 00:00:00","US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file","EPSG","Uses NADCON method which expects longitudes positive west; EPSG GeogCSs NAD83 (code 4269) and NAD83(HARN) (code 4140) have longitudes positive east.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_394[] = {"1501","NAD83 to NAD83(HARN) (28)","","","","United States (USA) - Oregan; Washington.","9613","","","","","","","","","9104","","","wohpgn.las","wohpgn.los","","1999-10-20 00:00:00","US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file","EPSG","Uses NADCON method which expects longitudes positive west; EPSG GeogCSs NAD83 (code 4269) and NAD83(HARN) (code 4140) have longitudes positive east.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_395[] = {"1502","NAD83 to NAD83(HARN) (29)","","","","United States (USA) - Wisconsin.","9613","","","","","","","","","9104","","","wihpgn.las","wihpgn.los","","1999-10-20 00:00:00","US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file","EPSG","Uses NADCON method which expects longitudes positive west; EPSG GeogCSs NAD83 (code 4269) and NAD83(HARN) (code 4140) have longitudes positive east.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_396[] = {"1503","NAD83 to NAD83(HARN) (30)","","","","United States (USA) - Wyoming.","9613","","","","","","","","","9104","","","wyhpgn.las","wyhpgn.los","","1999-10-20 00:00:00","US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file","EPSG","Uses NADCON method which expects longitudes positive west; EPSG GeogCSs NAD83 (code 4269) and NAD83(HARN) (code 4140) have longitudes positive east.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_397[] = {"1504","Cape to Hartbeesthoek94 (1)","","","","South Africa.","9603","-134.73","-110.92","-292.66","","","","","9001","","","","","","","1999-10-20 00:00:00","Directorate of Surveys and Mapping; http://w3sli.wcape.gov.za/surveys/mapping/wgs84.htm","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_398[] = {"1505","Hartbeesthoek94 to WGS 84 (1)","","","","South Africa.","9603","0.0","0.0","0.0","","","","","9001","","","","","","","1999-10-20 00:00:00","EPSG","EPSG","For many purposes Hartbeesthoek94 datum can be considered to be coincident with WGS 84.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_399[] = {"1506","AGD66 to GDA94 (6)","","","","Australia - Tasmania.","9615","","","","","","","","","9104","","","tas_1098.gsb","","","1999-10-20 00:00:00","http://www.delm.tas.gov.au/osg/Geodetic_transform.htm","EPSG","0.1m accuracy.  Input expects longitudes to be positive west; EPSG GeogCS AGD66 (code 4202) and GDA94 (code 4283) both have longitudes positive east.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_400[] = {"1507","AGD66 to GDA94 (7)","","","","Australia - Northern Territory.","9615","","","","","","","","","9104","","","nt_0599.gsb","","","1999-10-20 00:00:00","http://www.anzlic.org.au/icsm/gdatm/chapter7.htm#high","EPSG","0.1m accuracy.  Input expects longitudes to be positive west; EPSG GeogCS AGD66 (code 4202) and GDA94 (code 4283) both have longitudes positive east.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_401[] = {"1508","CH1903 to WGS 84 (1)","","","","Liechtenstein;  Switzerland.","9607","660.077","13.551","369.344","2.484","1.783","2.939","5.66","9001","9113","","9202","","","","1999-10-20 00:00:00","Bundesamt f�r Landestopographie.  Aufbau der Landesvermessung der Schweiz 'LV95' Teil 3: Terrestrische Bezugssysteme und Bezugsrahmen. L+T 1999.","EPSG","Implemented in Bundesamt f�r Landestopographie programme GRANIT.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_402[] = {"1509","CH1903+ to CHTRF95 (1)","","","","Liechtenstein;  Switzerland.","9603","674.374","15.056","405.346","","","","","9001","","","","","","","1999-10-20 00:00:00","Bundesamt f�r Landestopographie.  Aufbau der Landesvermessung der Schweiz 'LV95' Teil 3: Terrestrische Bezugssysteme und Bezugsrahmen. L+T 1999.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_403[] = {"1510","CH1903 to WGS 84 (2)","","","","Liechtenstein;  Switzerland.","9603","674.374","15.056","405.346","","","","","9001","","","","","","","1999-10-20 00:00:00","Bundesamt f�r Landestopographie.  Aufbau der Landesvermessung der Schweiz 'LV95' Teil 3: Terrestrische Bezugssysteme und Bezugsrahmen. L+T 1999.","EPSG","These parameters are strictly between CH1903+ and CHTRF95 but are used from CH1903 as an approximation which is within the ac [...]
-datafile_rows_t trf_nonpolynomial_row_404[] = {"1511","CHTRF95 to WGS 84 (1)","","","","Liechtenstein;  Switzerland.","9603","0.0","0.0","0.0","","","","","9001","","","","","","","1999-10-20 00:00:00","EPSG","EPSG","For many purposes CHTRF95 can be considered to be coincident with WGS 84.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_405[] = {"1512","Rassadiran to WGS 84 (1)","","","","Iran - Taheri refinery site only.","9603","-133.63","-157.5","-158.62","","","","","9001","","","","","","","1999-10-20 00:00:00","Total-Fina","EPSG","Used only for terminal site.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_406[] = {"1513","FD58 to WGS 84 (1)","","","","Iran - Kangan district.","9603","-241.54","-163.64","396.06","","","","","9001","","","","","","","1999-10-20 00:00:00","Total-Fina","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_407[] = {"1514","ED50(ED77) to WGS 84 (1)","","","","Iran","9606","-110.33","-97.73","-119.85","0.3423","1.1634","0.2715","0.063","9001","9104","","9202","","","","1999-10-20 00:00:00","National Cartographic Centre of Iran","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_408[] = {"1515","NAD83 to WGS 84 (5)","","","","United States (USA)","9607","-0.991","1.9072","0.5129","-0.000000125033","-0.000000046785","-0.000000056529","0.0","9001","9101","","9202","","","","1999-11-05 00:00:00"," http://www.ngs.noaa.gov/CORS/Derivation.html","EPSG","Strictly between NAD83 and ITRF96(1997.0).  Supersedes NAD83 to WGS 84 (4) (code 1308).","",NULL};
-datafile_rows_t trf_nonpolynomial_row_409[] = {"1516","La Canoa to WGS 84 (1)","","","","Venezuela east - Delta Amacuro; Anzoategui; Bolivar; Monagas; Sucre states.","9603","-273.5","110.6","-357.9","","","","","9001","","","","","","","1999-11-05 00:00:00","Lagoven; Gonzalez Losano y Rodriguez; \"Determination de los Parametros de Transformacion para el Oriente del Pais\"; VII Venezuelan Geophysical Congress; September 1994.","EPSG","Also used for PSAD56 to WGS 84 transformations.  Para [...]
-datafile_rows_t trf_nonpolynomial_row_410[] = {"10101","Alabama CS27 East zone","Alabama East","","","United States (USA) - Alabama - Counties east of 86d 37m West.","9807","30.3","-85.5","","","0.99996","500000.0","0.0","9003","9110","8901","","","","","1995-12-02 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_411[] = {"10102","Alabama CS27 West zone","Alabama West","","","United States (USA) - Alabama - Counties east of 86d 37m West.","9807","30.0","-87.3","","","0.999933333","500000.0","0.0","9003","9110","8901","","","","","1995-12-02 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_412[] = {"10131","Alabama CS83 East zone","Alabama East","","","United States (USA) - Alabama - Counties east of 86d 37m West.","9807","30.3","-85.5","","","0.99996","200000.0","0.0","9001","9110","8901","","","","","1995-12-02 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_413[] = {"10132","Alabama CS83 West zone","Alabama West","","","United States (USA) - Alabama - Counties east of 86d 37m West.","9807","30.0","-87.3","","","0.999933333","600000.0","0.0","9001","9110","8901","","","","","1995-12-02 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_414[] = {"10201","Arizona Coordinate System  east zone","Arizona East","","","United States (USA) - Arizona - Apache; Cochise; Gila; Graham; Greenlee and Navajo counties; i.e. east of about 110d 45m West.","9807","31.0","-110.1","","","0.9999","500000.0","0.0","9003","9110","8901","","","","","1995-12-02 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_415[] = {"10202","Arizona Coordinate System Central zone","Arizona Central","","","United States (USA) - Arizona - Coconino; Maricopa; Pima; Pinal; Santa Cruz and Yavapai counties; i.e between about 110d 45m & 113d 20m west","9807","31.0","-111.55","","","0.9999","500000.0","0.0","9003","9110","8901","","","","","1995-12-02 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_416[] = {"10203","Arizona Coordinate System  west zone","Arizona West","","","United States (USA) - Arizona - La Paz; Mohave and Yuma counties; i.e west of about 113d 20m","9807","31.0","-113.45","","","0.999933333","500000.0","0.0","9003","9110","8901","","","","","1995-12-02 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_417[] = {"10231","Arizona CS83  east zone","Arizona  East","","","United States (USA) - Arizona - counties east of 110d 45m West","9807","31.0","-110.1","","","0.9999","213360.0","0.0","9001","9110","8901","","","","","1995-12-02 00:00:00","NOAA manual NOS NGS 5","EPSG","State law defines origin in International feet. FE = 700000ft.","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_418[] = {"10232","Arizona CS83 Central zone","Arizona Central","","","United States (USA) - Arizona - Coconino; Maricopa; Pima; Pinal; Santa Cruz and Yavapai counties; i.e between about 110d 45m & 113d 20m west","9807","31.0","-111.55","","","0.9999","213360.0","0.0","9001","9110","8901","","","","","1995-12-02 00:00:00","NOAA manual NOS NGS 5","EPSG","State law defines origin in International feet. FE = 700000ft.","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_419[] = {"10233","Arizona CS83  west zone","Arizona West","","","United States (USA) - Arizona - La Paz; Mohave and Yuma counties; i.e west of about 113d 20m","9807","31.0","-113.45","","","0.999933333","213360.0","0.0","9001","9110","8901","","","","","1995-12-02 00:00:00","NOAA manual NOS NGS 5","EPSG","State law defines origin in International feet. FE = 700000ft.","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_420[] = {"10301","Arkansas CS27 North","Arkansas North","","","United States (USA) - Arkansas - counties north of 34d 50m North.","9802","34.2","-92.0","36.14","34.56","","2000000.0","0.0","9003","9110","8901","","","","","1999-04-22 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_421[] = {"10302","Arkansas CS27 South","Arkansas South","","","United States (USA) - Arkansas - counties south of 34d 50m North.","9802","32.4","-92.0","34.46","33.18","","2000000.0","0.0","9003","9110","8901","","","","","1999-04-22 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_422[] = {"10331","Arkansas CS83 North zone","Arkansas North","","","United States (USA) - Arkansas - counties north of 34d 50m North.","9802","34.2","-92.0","36.14","34.56","","400000.0","0.0","9001","9110","8901","","","","","1999-04-22 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_423[] = {"10332","Arkansas CS83 South zone","Arkansas South","","","United States (USA) - Arkansas - counties south of 34d 50m North.","9802","32.4","-92.0","34.46","33.18","","400000.0","400000.0","9001","9110","8901","","","","","1999-04-22 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_424[] = {"10401","California CS27 zone I","California zone I","","","United States (USA) - California - counties north of 40deg North.","9802","39.2","-122.0","41.4","40.0","","2000000.0","0.0","9003","9110","8901","","","","","1999-04-22 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_425[] = {"10402","California CS27 zone II","California zone II","","","United States (USA) - California - counties between 40d & 38d 15m North.","9802","37.4","-122.0","39.5","38.2","","2000000.0","0.0","9003","9110","8901","","","","","1999-04-22 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_426[] = {"10403","California CS27 zone III","California zone III","","","United States (USA) - California - counties between 38d 15m & 37d North.","9802","36.3","-120.3","38.26","37.04","","2000000.0","0.0","9003","9110","8901","","","","","1999-04-22 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_427[] = {"10404","California CS27 zone IV","California zone IV","","","United States (USA) - California - counties between 37d & 35d 30m North.","9802","35.2","-119.0","37.15","36.0","","2000000.0","0.0","9003","9110","8901","","","","","1999-04-22 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_428[] = {"10405","California CS27 zone V","California zone V","","","United States (USA) - California - counties between 35d 50m & 34d North.","9802","33.3","-118.0","35.28","34.02","","2000000.0","0.0","9003","9110","8901","","","","","1999-04-22 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_429[] = {"10406","California CS27 zone VI","California zone VI","","","United States (USA) - California - counties south of 34deg North.","9802","32.1","-116.15","33.53","32.47","","2000000.0","0.0","9003","9110","8901","","","","","1999-04-22 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_430[] = {"10407","California CS27 zone VII","California zone VII","","","United States (USA) - California - Los Angeles.","9802","34.08","-118.2","34.25","33.52","","4186692.58","416926.74","9003","9110","8901","","","","","1999-04-22 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_431[] = {"10431","California CS83 zone 1","California zone 1","","","United States (USA) - California - counties north of 40deg North.","9802","39.2","-122.0","41.4","40.0","","2000000.0","500000.0","9001","9110","8901","","","","","1999-04-22 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_432[] = {"10432","California CS83 zone 2","California zone 2","","","United States (USA) - California - counties between 40d & 38d 15m North.","9802","37.4","-122.0","39.5","38.2","","2000000.0","500000.0","9001","9110","8901","","","","","1999-04-22 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_433[] = {"10433","California CS83 zone 3","California zone 3","","","United States (USA) - California - counties between 38d 15m & 37d North.","9802","36.3","-120.3","38.26","37.04","","2000000.0","500000.0","9001","9110","8901","","","","","1999-04-22 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_434[] = {"10434","California CS83 zone 4","California zone 4","","","United States (USA) - California - counties between 37d & 35d 30m North.","9802","35.2","-119.0","37.15","36.0","","2000000.0","500000.0","9001","9110","8901","","","","","1999-04-22 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_435[] = {"10435","California CS83 zone 5","California zone 5","","","United States (USA) - California - counties between 35d 50m & 34d North.","9802","33.3","-118.0","35.28","34.02","","2000000.0","500000.0","9001","9110","8901","","","","","1999-04-22 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_436[] = {"10436","California CS83 zone 6","California zone 6","","","United States (USA) - California - counties south of 34deg North.","9802","32.1","-116.15","33.53","32.47","","2000000.0","500000.0","9001","9110","8901","","","","","1999-04-22 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_437[] = {"10501","Colorado CS27 North zone","Colorado North","","","United States (USA) - Colorado - counties north of 39d 50m North.","9802","39.2","-105.3","39.43","40.47","","2000000.0","0.0","9003","9110","8901","","","","","1999-04-22 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_438[] = {"10502","Colorado CS27 Central zone","Colorado Central","","","United States (USA) - Colorado - counties between 39d 50m & 38d 30m North.","9802","37.5","-105.3","39.45","38.27","","2000000.0","0.0","9003","9110","8901","","","","","1999-04-22 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_439[] = {"10503","Colorado CS27 South zone","Colorado South","","","United States (USA) - Colorado - counties south of 38d 30m North.","9802","36.4","-105.3","38.26","37.14","","2000000.0","0.0","9003","9110","8901","","","","","1999-04-22 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_440[] = {"10531","Colorado CS83 North zone","Colorado North","","","United States (USA) - Colorado - counties north of 39d 50m North.","9802","39.2","-105.3","40.47","39.43","","914401.8289","304800.6096","9001","9110","8901","","","","","1999-04-22 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_441[] = {"10532","Colorado CS83 Central zone","Colorado Central","","","United States (USA) - Colorado - counties between 39d 50m & 38d 30m North.","9802","37.5","-105.3","39.45","38.27","","914401.8289","304800.6096","9001","9110","8901","","","","","1999-04-22 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_442[] = {"10533","Colorado CS83 South zone","Colorado South","","","United States (USA) - Colorado - counties south of 38d 30m North.","9802","36.4","-105.3","38.26","37.14","","914401.8289","304800.6096","9001","9110","8901","","","","","1999-04-22 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_443[] = {"10600","Connecticut CS27","Connecticut","","","United States (USA) - Connecticut.","9802","40.5","-72.45","41.52","41.12","","600000.0","0.0","9003","9110","8901","","","","","1999-04-22 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_444[] = {"10630","Connecticut CS83","Connecticut","","","United States (USA) - Connecticut.","9802","40.5","-72.45","41.52","41.12","","304800.6096","152400.3048","9001","9110","8901","","","","","1999-04-22 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_445[] = {"10700","Delaware CS27","Delaware","","","United States (USA) - Delaware.","9807","38.0","-75.25","","","0.999995","500000.0","0.0","9003","9110","8901","","","","","1995-12-02 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_446[] = {"10730","Delaware CS83","Delaware","","","United States (USA) - Delaware.","9807","38.0","-75.25","","","0.999995","200000.0","0.0","9001","9110","8901","","","","","1995-12-02 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_447[] = {"10901","Florida CS27 East zone","Florida East","","","United States (USA) - Florida - counties east of 81d 45m West.","9807","24.2","-81.0","","","0.999941177","500000.0","0.0","9003","9110","8901","","","","","1995-12-02 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_448[] = {"10902","Florida CS27 West zone","Florida West","","","United States (USA) - Florida - counties west of 81d 45m West & south of 29d 30m North.","9807","24.2","-82.0","","","0.999941177","500000.0","0.0","9003","9110","8901","","","","","1995-12-02 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_449[] = {"10903","Florida CS27 North zone","Florida North","","","United States (USA) - Florida - north of 29d 30m North & west of 82d West.","9802","29.0","-84.3","30.45","29.35","","2000000.0","0.0","9003","9110","8901","","","","","1999-04-22 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_450[] = {"10931","Florida CS83 East zone","Florida  East","","","United States (USA) - Florida - counties east of 81d 45m West.","9807","24.2","-81.0","","","0.999941177","200000.0","0.0","9001","9110","8901","","","","","1995-12-02 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_451[] = {"10932","Florida CS83 West zone","Florida  West","","","United States (USA) - Florida - counties west of 81d 45m West & south of 29d 30m North.","9807","24.2","-82.0","","","0.999941177","200000.0","0.0","9001","9110","8901","","","","","1995-12-02 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_452[] = {"10933","Florida CS83 North zone","Florida North","","","United States (USA) - Florida - north of 29d 30m North & west of 82d West.","9802","29.0","-84.3","30.45","29.35","","600000.0","0.0","9001","9110","8901","","","","","1999-04-22 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_453[] = {"11001","Georgia CS27 East zone","Georgia East","","","United States (USA) - Georgia - counties east of 83d 15m West.","9807","30.0","-82.1","","","0.9999","500000.0","0.0","9003","9110","8901","","","","","1995-12-02 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_454[] = {"11002","Georgia CS27 West zone","Georgia West","","","United States (USA) - Georgia - counties west of 83d 15m West.","9807","30.0","-84.1","","","0.9999","500000.0","0.0","9003","9110","8901","","","","","1995-12-02 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_455[] = {"11031","Georgia CS83 East zone","Georgia  East","","","United States (USA) - Georgia - counties east of 83d 15m West.","9807","30.0","-82.1","","","0.9999","200000.0","0.0","9001","9110","8901","","","","","1995-12-02 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_456[] = {"11032","Georgia CS83 West zone","Georgia West","","","United States (USA) - Georgia - counties west of 83d 15m West.","9807","30.0","-84.1","","","0.9999","700000.0","0.0","9001","9110","8901","","","","","1995-12-02 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_457[] = {"11101","Idaho CS27 East zone","Idaho East","","","United States (USA) - Idaho - counties east of 113d West.","9807","41.4","-112.1","","","0.999947368","500000.0","0.0","9003","9110","8901","","","","","1995-12-02 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_458[] = {"11102","Idaho CS27 Central zone","Idaho Central","","","United States (USA) - Idaho - counties between 113d & 115d West.","9807","41.4","-114.0","","","0.999947368","500000.0","0.0","9003","9110","8901","","","","","1995-12-02 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_459[] = {"11103","Idaho CS27 West zone","Idaho West","","","United States (USA) - Idaho - counties west of 115d West.","9807","41.4","-115.45","","","0.999933333","500000.0","0.0","9003","9110","8901","","","","","1995-12-02 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_460[] = {"11131","Idaho CS83 East zone","Idaho  East","","","United States (USA) - Idaho - counties east of 113d West.","9807","41.4","-112.1","","","0.999947368","200000.0","0.0","9001","9110","8901","","","","","1995-12-02 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_461[] = {"11132","Idaho CS83 Central zone","Idaho  Central","","","United States (USA) - Idaho - counties between 113d & 115d West.","9807","41.4","-114.0","","","0.999947368","500000.0","0.0","9001","9110","8901","","","","","1995-12-02 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_462[] = {"11133","Idaho CS83 West zone","Idaho  West","","","United States (USA) - Idaho - counties west of 115d West.","9807","41.4","-115.45","","","0.999933333","800000.0","0.0","9001","9110","8901","","","","","1995-12-02 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_463[] = {"11201","Illinois CS27 East zone","Illinois East","","","United States (USA) - Illinois - counties east of 89d 05m West.","9807","36.4","-88.2","","","0.999975","500000.0","0.0","9003","9110","8901","","","","","1995-12-02 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_464[] = {"11202","Illinois CS27 West zone","Illinois West","","","United States (USA) - Illinois - counties west of 89d 05m West.","9807","36.4","-90.1","","","0.999941177","500000.0","0.0","9003","9110","8901","","","","","1995-12-02 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_465[] = {"11231","Illinois CS83 East zone","Illinois  East","","","United States (USA) - Illinois - counties east of 89d 05m West.","9807","36.4","-88.2","","","0.999975","300000.0","0.0","9001","9110","8901","","","","","1995-12-02 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_466[] = {"11232","Illinois CS83 West zone","Illinois  West","","","United States (USA) - Illinois - counties west of 89d 05m West.","9807","36.4","-90.1","","","0.999941177","700000.0","0.0","9001","9110","8901","","","","","1995-12-02 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_467[] = {"11301","Indiana CS27 East zone","Indiana East","","","United States (USA) - Indiana - counties east of 86d 25m West.","9807","37.3","-85.4","","","0.999966667","500000.0","0.0","9003","9110","8901","","","","","1995-12-02 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_468[] = {"11302","Indiana CS27 West zone","Indiana West","","","United States (USA) - Indiana - counties west of 86d 25m West.","9807","37.3","-87.05","","","0.999966667","500000.0","0.0","9003","9110","8901","","","","","1995-12-02 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_469[] = {"11331","Indiana CS83 East zone","Indiana  East","","","United States (USA) - Indiana - counties east of 86d 25m West.","9807","37.3","-85.4","","","0.999966667","100000.0","250000.0","9001","9110","8901","","","","","1995-12-02 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_470[] = {"11332","Indiana CS83 West zone","Indiana  West","","","United States (USA) - Indiana - counties west of 86d 25m West.","9807","37.3","-87.05","","","0.999966667","900000.0","250000.0","9001","9110","8901","","","","","1995-12-02 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_471[] = {"11401","Iowa CS27 North zone","Iowa North","","","United States (USA) - Iowa - counties north of 42deg North.","9802","41.3","-93.3","43.16","42.04","","2000000.0","0.0","9003","9110","8901","","","","","1999-04-22 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_472[] = {"11402","Iowa CS27 South zone","Iowa South","","","United States (USA) - Iowa - counties south of 42deg North.","9802","40.0","-93.3","41.47","40.37","","2000000.0","0.0","9003","9110","8901","","","","","1999-04-22 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_473[] = {"11431","Iowa CS83 North zone","Iowa North","","","United States (USA) - Iowa - counties north of 42deg North.","9802","41.3","-93.3","43.16","42.04","","1500000.0","1000000.0","9001","9110","8901","","","","","1999-04-22 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_474[] = {"11432","Iowa CS83 South zone","Iowa South","","","United States (USA) - Iowa - counties south of 42deg North.","9802","40.0","-93.3","41.47","40.37","","500000.0","0.0","9001","9110","8901","","","","","1999-04-22 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_475[] = {"11501","Kansas CS27 North zone","Kansas North","","","United States (USA) - Kansas - counties north of 38d 45m North.","9802","38.2","-98.0","39.47","38.43","","2000000.0","0.0","9003","9110","8901","","","","","1999-04-22 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_476[] = {"11502","Kansas CS27 South zone","Kansas South","","","United States (USA) - Kansas - counties south of 38d 45m North.","9802","36.4","-98.3","38.34","37.16","","2000000.0","0.0","9003","9110","8901","","","","","1999-04-22 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_477[] = {"11531","Kansas CS83 North zone","Kansas North","","","United States (USA) - Kansas - counties north of 38d 45m North.","9802","38.2","-98.0","39.47","38.43","","400000.0","0.0","9001","9110","8901","","","","","1999-04-22 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_478[] = {"11532","Kansas CS83 South zone","Kansas South","","","United States (USA) - Kansas - counties south of 38d 45m North.","9802","36.4","-98.3","38.34","37.16","","400000.0","400000.0","9001","9110","8901","","","","","1999-04-22 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_479[] = {"11601","Kentucky CS27 North zone","Kentucky North","","","United States (USA) - Kentucky - counties north of 37d 55m North.","9802","37.3","-84.15","37.58","38.58","","2000000.0","0.0","9003","9110","8901","","","","","1999-04-22 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_480[] = {"11602","Kentucky CS27 South zone","Kentucky South","","","United States (USA) - Kentucky - counties south of 37d 55m North.","9802","36.2","-85.45","36.44","37.56","","2000000.0","0.0","9003","9110","8901","","","","","1999-04-22 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_481[] = {"11631","Kentucky CS83 North zone","Kentucky North","","","United States (USA) - Kentucky - counties north of 37d 55m North.","9802","37.3","-84.15","37.58","37.58","","500000.0","0.0","9001","9110","8901","","","","","1999-04-22 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_482[] = {"11632","Kentucky CS83 South zone","Kentucky South","","","United States (USA) - Kentucky - counties south of 37d 55m North.","9802","36.2","-85.45","37.56","36.44","","500000.0","500000.0","9001","9110","8901","","","","","1999-04-22 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_483[] = {"11701","Louisiana CS27 North zone","Louisiana North","","","United States (USA) - Louisiana - counties north of 30d 55m North.","9802","30.4","-92.3","31.1","32.4","","2000000.0","0.0","9003","9110","8901","","","","","1999-04-22 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_484[] = {"11702","Louisiana CS27 South zone","Louisiana South","","","United States (USA) - Louisiana - counties south of 30d 55m North. Also Gulf of Mexico LA shelf.","9802","28.4","-91.2","29.18","30.42","","2000000.0","0.0","9003","9110","8901","","","","","1999-04-22 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_485[] = {"11731","Louisiana CS83 North zone","Louisiana North","","","United States (USA) - Louisiana - counties north of 30d 55m North.","9802","30.3","-92.3","32.4","31.1","","1000000.0","0.0","9001","9110","8901","","","","","1999-04-22 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_486[] = {"11732","Louisiana CS83 South zone","Louisiana South","","","United States (USA) - Louisiana - counties south of 30d 55m North.","9802","28.3","-91.2","30.42","29.18","","1000000.0","0.0","9001","9110","8901","","","","","1999-04-22 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_487[] = {"11801","Maine CS27 East zone","Maine East","","","United States (USA) - Maine - counties east of 69d 30m West.","9807","43.5","-68.3","","","0.9999","500000.0","0.0","9003","9110","8901","","","","","1995-12-02 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_488[] = {"11802","Maine CS27 West zone","Maine West","","","United States (USA) - Maine - counties west of 69d 30m West.","9807","42.5","-70.1","","","0.999966667","500000.0","0.0","9003","9110","8901","","","","","1995-12-02 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_489[] = {"11831","Maine CS83 East zone","Maine  East","","","United States (USA) - Maine - counties east of 69d 30m West.","9807","43.4","-68.3","","","0.9999","300000.0","0.0","9001","9110","8901","","","","","1995-12-02 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_490[] = {"11832","Maine CS83 West zone","Maine  West","","","United States (USA) - Maine - counties west of 69d 30m West.","9807","42.5","-70.1","","","0.999966667","900000.0","0.0","9001","9110","8901","","","","","1995-12-02 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_491[] = {"11900","Maryland CS27","Maryland","","","United States (USA) - Maryland.","9802","37.5","-77.0","38.18","39.27","","800000.0","0.0","9003","9110","8901","","","","","1999-04-22 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_492[] = {"11930","Maryland CS83","Maryland","","","United States (USA) - Maryland.","9802","37.4","-77.0","39.27","38.18","","400000.0","0.0","9001","9110","8901","","","","","1999-04-22 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_493[] = {"12001","Massachusetts CS27 Mainland zone","Massachusetts Mainland","","","United States (USA) - Massachusetts onshore.","9802","41.0","-71.3","41.43","42.41","","600000.0","0.0","9003","9110","8901","","","","","1999-04-22 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_494[] = {"12002","Massachusetts CS27 Island zone","Massachusetts Island","","","United States (USA) - Massachusetts islands.","9802","41.0","-70.3","41.17","41.29","","200000.0","0.0","9003","9110","8901","","","","","1999-04-22 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_495[] = {"12031","Massachusetts CS83 Mainland zone","Massachusetts Mainland","","","United States (USA) - Massachusetts onshore.","9802","41.0","-71.3","42.41","41.43","","200000.0","750000.0","9001","9110","8901","","","","","1999-04-22 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_496[] = {"12032","Massachusetts CS83 Island zone","Massachusetts Island","","","United States (USA) - Massachusetts islands.","9802","41.0","-70.3","41.29","41.17","","500000.0","0.0","9001","9110","8901","","","","","1999-04-22 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_497[] = {"12101","Michigan State Plane East zone","Michigan East","","","United States (USA) - Michigan.","9807","41.3","-83.4","","","0.999942857","500000.0","0.0","9003","9110","8901","","","","","1998-11-11 00:00:00","USGS Professional Paper #1395","EPSG","Obsolete. Superseded by north central and south zones.","95.30  96.29  98.22",NULL};
-datafile_rows_t trf_nonpolynomial_row_498[] = {"12102","Michigan State Plane Old Central zone","Michigan Old Central","","","United States (USA) - Michigan.","9807","41.3","-85.45","","","0.999909091","500000.0","0.0","9003","9110","8901","","","","","1998-11-11 00:00:00","USGS Professional Paper #1395","EPSG","Obsolete. Superseded by north central and south zones.","95.30  96.29  98.22",NULL};
-datafile_rows_t trf_nonpolynomial_row_499[] = {"12103","Michigan State Plane West zone","Michigan West","","","United States (USA) - Michigan.","9807","41.3","-88.45","","","0.999909091","500000.0","0.0","9003","9110","8901","","","","","1998-11-11 00:00:00","USGS Professional Paper #1395","EPSG","Obsolete. Superseded by north central and south zones.","95.30  96.29  98.22",NULL};
-datafile_rows_t trf_nonpolynomial_row_500[] = {"12111","Michigan CS27 North zone","Michigan North","","","United States (USA) - Michigan - counties north of 45d 45m North.","9802","44.47","-87.0","45.29","47.05","","2000000.0","0.0","9003","9110","8901","","","","","1999-04-22 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.28  96.29  98.22  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_501[] = {"12112","Michigan CS27 Central zone","Michigan Central","","","United States (USA) - Michigan - counties between 45d 45m & 43d 55m North.","9802","43.19","-84.2","44.11","45.42","","2000000.0","0.0","9003","9110","8901","","","","","1999-04-22 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.28  96.29  98.22  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_502[] = {"12113","Michigan CS27 South zone","Michigan South","","","United States (USA) - Michigan - counties south of 43d 55m North.","9802","41.3","-84.2","42.06","43.4","","2000000.0","0.0","9003","9110","8901","","","","","1999-04-22 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.28  96.29  98.22  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_503[] = {"12141","Michigan CS83 North zone","Michigan North","","","United States (USA) - Michigan - counties north of 45d 45m North.","9802","44.47","-87.0","47.05","45.29","","8000000.0","0.0","9001","9110","8901","","","","","1999-04-22 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_504[] = {"12142","Michigan CS83 Central zone","Michigan Central","","","United States (USA) - Michigan - counties between 45d 45m & 43d 55m North.","9802","43.19","-84.22","45.42","44.11","","6000000.0","0.0","9001","9110","8901","","","","","1999-04-22 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_505[] = {"12143","Michigan CS83 South zone","Michigan South","","","United States (USA) - Michigan - counties south of 43d 55m North.","9802","41.3","-84.22","43.4","42.06","","4000000.0","0.0","9001","9110","8901","","","","","1999-04-22 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_506[] = {"12201","Minnesota CS27 North zone","Minnesota North","","","United States (USA) - Minnesota - counties north of 47d 10m North.","9802","46.3","-93.06","47.02","48.38","","2000000.0","0.0","9003","9110","8901","","","","","1999-04-22 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_507[] = {"12202","Minnesota CS27 Central zone","Minnesota Central","","","United States (USA) - Minnesota - counties between 47d 10m & 45d 30m North.","9802","45.0","-94.15","45.37","47.03","","2000000.0","0.0","9003","9110","8901","","","","","1999-04-22 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_508[] = {"12203","Minnesota CS27 South zone","Minnesota South","","","United States (USA) - Minnesota - counties south of 45d 30m North.","9802","43.0","-94.0","43.47","45.13","","2000000.0","0.0","9003","9110","8901","","","","","1999-04-22 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_509[] = {"12231","Minnesota CS83 North zone","Minnesota North","","","United States (USA) - Minnesota - counties north of 47d 10m North.","9802","46.3","-93.06","48.38","47.02","","800000.0","100000.0","9001","9110","8901","","","","","1999-04-22 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_510[] = {"12232","Minnesota CS83 Central zone","Minnesota Central","","","United States (USA) - Minnesota - counties between 47d 10m & 45d 30m North.","9802","45.0","-94.15","47.03","45.37","","800000.0","100000.0","9001","9110","8901","","","","","1999-04-22 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_511[] = {"12233","Minnesota CS83 South zone","Minnesota South","","","United States (USA) - Minnesota - counties south of 45d 30m North.","9802","43.0","-94.0","45.13","43.47","","800000.0","100000.0","9001","9110","8901","","","","","1999-04-22 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_512[] = {"12301","Mississippi CS27 East zone","Mississippi East","","","United States (USA) - Mississippi - counties east of 89d 40m West.","9807","29.4","-88.5","","","0.99996","500000.0","0.0","9003","9110","8901","","","","","1995-12-02 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_513[] = {"12302","Mississippi CS27 West zone","Mississippi West","","","United States (USA) - Mississippi - counties west of 89d 40m West.","9807","30.3","-90.2","","","0.999941177","500000.0","0.0","9003","9110","8901","","","","","1995-12-02 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_514[] = {"12331","Mississippi CS83 East zone","Mississippi East","","","United States (USA) - Mississippi - counties east of 89d 40m West.","9807","29.3","-88.5","","","0.99995","300000.0","0.0","9001","9110","8901","","","","","1995-12-02 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_515[] = {"12332","Mississippi CS83 West zone","Mississippi West","","","United States (USA) - Mississippi - counties west of 89d 40m West.","9807","29.3","-90.2","","","0.99995","700000.0","0.0","9001","9110","8901","","","","","1995-12-02 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_516[] = {"12401","Missouri CS27 East zone","Missouri East","","","United States (USA) - Missouri - counties east of 91d 45m West.","9807","35.5","-90.3","","","0.999933333","500000.0","0.0","9003","9110","8901","","","","","1995-12-02 00:00:00","USGS Professional Paper #1395","EPSG","","95.18  95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_517[] = {"12402","Missouri CS27 Central zone","Missouri Central","","","United States (USA) - Missouri - counties between 91d 45m & 93d 35m West.","9807","35.5","-92.3","","","0.999933333","500000.0","0.0","9003","9110","8901","","","","","1995-12-02 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_518[] = {"12403","Missouri CS27 West zone","Missouri West","","","United States (USA) - Missouri - counties west of 93d 35m West.","9807","36.1","-94.3","","","0.999941177","500000.0","0.0","9003","9110","8901","","","","","1995-12-02 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_519[] = {"12431","Missouri CS83 East zone","Missouri  East","","","United States (USA) - Missouri - counties east of 91d 45m West..","9807","35.5","-90.3","","","0.999933333","250000.0","0.0","9001","9110","8901","","","","","1995-12-02 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_520[] = {"12432","Missouri CS83 Central zone","Missouri Central","","","United States (USA) - Missouri - counties between 91d 45m & 93d 35m West","9807","35.5","-92.3","","","0.999933333","500000.0","0.0","9001","9110","8901","","","","","1995-12-02 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_521[] = {"12433","Missouri CS83 West zone","Missouri  West","","","United States (USA) - Missouri - counties west of 93d 35m West.","9807","36.1","-94.3","","","0.999941177","850000.0","0.0","9001","9110","8901","","","","","1995-12-02 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_522[] = {"12501","Montana CS27 North zone","Montana North","","","United States (USA) - Montana - counties north of 47d 50m North.","9802","47.0","-109.3","48.43","47.51","","2000000.0","0.0","9003","9110","8901","","","","","1999-04-22 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_523[] = {"12502","Montana CS27 Central zone","Montana Central","","","United States (USA) - Montana - counties between 47d 50m & 46d 40m North.","9802","45.5","-109.3","47.53","46.27","","2000000.0","0.0","9003","9110","8901","","","","","1999-04-22 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_524[] = {"12503","Montana CS27 South zone","Montana South","","","United States (USA) - Montana - counties south of 46d 40m North.","9802","44.0","-109.3","46.24","44.52","","2000000.0","0.0","9003","9110","8901","","","","","1999-04-22 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_525[] = {"12530","Montana CS83","Montana","","","United States (USA) - Montana.","9802","44.15","-109.3","49.0","45.0","","600000.0","0.0","9001","9110","8901","","","","","1999-04-22 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_526[] = {"12601","Nebraska CS27 North zone","Nebraska North","","","United States - Nebraska -Antelope; Blaine; Box Butte; Boyd; Brown; Burt; Cedar; Cherry; Cuming; Dakota; Dawes; Dixon; Garfield; Grant; Holt; Hooker; Keya Paha; Knox; Loup; Madison; Pierce; Rock; Sheridan; Sioux; Stanton; Thomas; Thurston; Wayne; Wheeler","9802","41.2","-100.0","41.51","42.49","","2000000.0","0.0","9003","9110","8901","","","","","1999-04-22 00:00:00","USGS Professio [...]
-datafile_rows_t trf_nonpolynomial_row_527[] = {"12602","Nebraska CS27 South zone","Nebraska South","","","United States (USA) - Nebraska - counties south of and including Scotts Bluff; Morrill; Garden; Arthur; McPherson; Logan; Custer; Valley; Greeley; Boome, Platte; Colfax; Dodge; Washington.","9802","39.4","-99.3","40.17","41.43","","2000000.0","0.0","9003","9110","8901","","","","","1999-04-22 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_528[] = {"12630","Nebraska CS83","Nebraska","","","United States (USA) - Nebraska.","9802","39.5","-100.0","43.0","40.0","","500000.0","0.0","9001","9110","8901","","","","","1999-04-22 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_529[] = {"12701","Nevada CS27 East zone","Nevada East","","","United States (USA) - Nevada - counties east of 116d  West & Eureka county.","9807","34.45","-115.35","","","0.9999","500000.0","0.0","9003","9110","8901","","","","","1995-12-02 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_530[] = {"12702","Nevada CS27 Central zone","Nevada Central","","","United States (USA) - Nevada - Lander & Nye counties.","9807","34.45","-116.4","","","0.9999","500000.0","0.0","9003","9110","8901","","","","","1995-12-02 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_531[] = {"12703","Nevada CS27 West zone","Nevada West","","","United States (USA) - Nevada - counties west of 117d 15m West.","9807","34.45","-118.35","","","0.9999","500000.0","0.0","9003","9110","8901","","","","","1995-12-02 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_532[] = {"12731","Nevada CS83 East zone","Nevada  East","","","United States (USA) - Nevada - counties east of 116d  West & Eureka county.","9807","34.45","-115.35","","","0.9999","200000.0","8000000.0","9001","9110","8901","","","","","1995-12-02 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_533[] = {"12732","Nevada CS83 Central zone","Nevada Central","","","United States (USA) - Nevada - Lander & Nye counties.","9807","34.45","-116.4","","","0.9999","500000.0","6000000.0","9001","9110","8901","","","","","1995-12-02 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_534[] = {"12733","Nevada CS83 West zone","Nevada West","","","United States (USA) - Nevada - counties west of 117d 15m West.","9807","34.45","-118.35","","","0.9999","800000.0","4000000.0","9001","9110","8901","","","","","1995-12-02 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_535[] = {"12800","New Hampshire CS27","New Hampshire","","","United States (USA) - New Hampshire.","9807","42.3","-71.4","","","0.999966667","500000.0","0.0","9003","9110","8901","","","","","1995-12-02 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_536[] = {"12830","New Hampshire CS83","New Hampshire","","","United States (USA) - New Hampshire.","9807","42.3","-71.4","","","0.999966667","300000.0","0.0","9001","9110","8901","","","","","1995-12-02 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_537[] = {"12900","New Jersey CS27","New Jersey","","","United States (USA) - New Jersey.","9807","38.5","-74.4","","","0.999975","2000000.0","0.0","9003","9110","8901","","","","","1995-12-02 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_538[] = {"12930","New Jersey CS83","New Jersey","","","United States (USA) - New Jersey.","9807","38.5","-74.3","","","0.9999","150000.0","0.0","9001","9110","8901","","","","","1995-12-02 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_539[] = {"13001","New Mexico CS27 East zone","New Mexico East","","","United States (USA) - New Mexico - counties east of 105d West.","9807","31.0","-104.2","","","0.999909091","500000.0","0.0","9003","9110","8901","","","","","1995-12-02 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_540[] = {"13002","New Mexico CS27 Central zone","New Mexico Central","","","United States (USA) - New Mexico - counties between 105d & 107d 15m West.","9807","31.0","-106.15","","","0.9999","500000.0","0.0","9003","9110","8901","","","","","1995-12-02 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_541[] = {"13003","New Mexico CS27 West zone","New Mexico West","","","United States (USA) - New Mexico - counties west of 107d 15m West.","9807","31.0","-107.5","","","0.999916667","500000.0","0.0","9003","9110","8901","","","","","1995-12-02 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_542[] = {"13031","New Mexico CS83 East zone","New Mexico East","","","United States (USA) - New Mexico - counties east of 105d West.","9807","31.0","-104.2","","","0.999909091","165000.0","0.0","9001","9110","8901","","","","","1995-12-02 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_543[] = {"13032","New Mexico CS83 Central zone","New Mexico Central","","","United States (USA) - New Mexico - counties between 105d & 107d 15m West.","9807","31.0","-106.15","","","0.9999","500000.0","0.0","9001","9110","8901","","","","","1995-12-02 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_544[] = {"13033","New Mexico CS83 West zone","New Mexico West","","","United States (USA) - New Mexico - counties west of 107d 15m West.","9807","31.0","-107.5","","","0.999916667","830000.0","0.0","9001","9110","8901","","","","","1995-12-02 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_545[] = {"13101","New York CS27 East zone","New York East","","","United States (USA) - New York - counties east of 75d 15m West excluding Long Island.","9807","40.0","-74.2","","","0.999966667","500000.0","0.0","9003","9110","8901","","","","","1995-12-02 00:00:00","USGS Professional Paper #1395","EPSG","","95.18  95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_546[] = {"13102","New York CS27 Central zone","New York Central","","","United States (USA) - New York - counties between 75d 15m & 77d 30m West.","9807","40.0","-76.35","","","0.9999375","500000.0","0.0","9003","9110","8901","","","","","1995-12-02 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_547[] = {"13103","New York CS27 West zone","New York West","","","United States (USA) - New York - counties west of 77d 30m West.","9807","40.0","-78.35","","","0.9999375","500000.0","0.0","9003","9110","8901","","","","","1995-12-02 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_548[] = {"13104","New York CS27 Long Island zone","New York Long Island","","","United States (USA) - New York - Long Island.","9802","40.3","-74.0","41.02","40.4","","1000000.0","0.0","9003","9110","8901","","","","","1999-04-22 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_549[] = {"13131","New York CS83 East zone","New York  East","","","United States (USA) - New York - counties east of 75d 15m West excluding Long Island.","9807","38.5","-74.3","","","0.9999","150000.0","0.0","9001","9110","8901","","","","","1995-12-02 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_550[] = {"13132","New York CS83 Central zone","New York Central","","","United States (USA) - New York - counties between 75d 15m & 77d 30m West.","9807","40.0","-76.35","","","0.9999375","250000.0","0.0","9001","9110","8901","","","","","1995-12-02 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_551[] = {"13133","New York CS83 West zone","New York  West","","","United States (USA) - New York - counties west of 77d 30m West.","9807","40.0","-78.35","","","0.9999375","350000.0","0.0","9001","9110","8901","","","","","1995-12-02 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_552[] = {"13134","New York CS83 Long Island zone","New York Long Island","","","United States (USA) - New York - Long Island.","9802","40.1","-74.0","41.02","40.4","","300000.0","0.0","9001","9110","8901","","","","","1999-04-22 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_553[] = {"13200","North Carolina CS27","North Carolina","","","United States (USA) - North Carolina.","9802","33.45","-79.0","34.2","36.1","","2000000.0","0.0","9003","9110","8901","","","","","1999-04-22 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_554[] = {"13230","North Carolina CS83","North Carolina","","","United States (USA) - North Carolina.","9802","33.45","-79.0","36.1","34.2","","609601.22","0.0","9001","9110","8901","","","","","1999-04-22 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_555[] = {"13301","North Dakota CS27 North zone","North Dakota North","","","United States (USA) - North Dakota - counties north of 47d 25m North.","9802","47.0","-100.3","47.26","48.44","","2000000.0","0.0","9003","9110","8901","","","","","1999-04-22 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_556[] = {"13302","North Dakota CS27 South zone","North Dakota South","","","United States (USA) - North Dakota - counties south of 47d 25m North.","9802","45.4","-100.3","46.11","47.29","","2000000.0","0.0","9003","9110","8901","","","","","1999-04-22 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_557[] = {"13331","North Dakota CS83 North zone","North Dakota North","","","United States (USA) - North Dakota - counties north of 47d 25m North.","9802","47.0","-100.3","48.44","47.26","","600000.0","0.0","9001","9110","8901","","","","","1999-04-22 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_558[] = {"13332","North Dakota CS83 South zone","North Dakota South","","","United States (USA) - North Dakota - counties south of 47d 25m North.","9802","45.4","-100.3","47.29","46.11","","600000.0","0.0","9001","9110","8901","","","","","1999-04-22 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_559[] = {"13401","Ohio CS27 North zone","Ohio North","","","United States (USA) - Ohio - counties north of 40d 15m North.","9802","39.4","-82.3","40.26","41.42","","2000000.0","0.0","9003","9110","8901","","","","","1999-04-22 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_560[] = {"13402","Ohio CS27 South zone","Ohio South","","","United States (USA) - Ohio - counties south of 40d 15m North.","9802","38.0","-82.3","38.44","40.02","","2000000.0","0.0","9003","9110","8901","","","","","1999-04-22 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_561[] = {"13431","Ohio CS83 North zone","Ohio North","","","United States (USA) - Ohio - counties north of 40d 15m North.","9802","39.4","-82.3","41.42","40.26","","600000.0","0.0","9001","9110","8901","","","","","1999-04-22 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_562[] = {"13432","Ohio CS83 South zone","Ohio South","","","United States (USA) - Ohio - counties south of 40d 15m North.","9802","38.0","-82.3","40.02","38.44","","600000.0","0.0","9001","9110","8901","","","","","1999-04-22 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_563[] = {"13501","Oklahoma CS27 North zone","Oklahoma North","","","United States (USA) - Oklahoma - counties north of 35d 20m North.","9802","35.0","-98.0","35.34","36.46","","2000000.0","0.0","9003","9110","8901","","","","","1999-04-22 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_564[] = {"13502","Oklahoma CS27 South zone","Oklahoma South","","","United States (USA) - Oklahoma - counties south of 35d 20m North.","9802","33.2","-98.0","33.56","35.14","","2000000.0","0.0","9003","9110","8901","","","","","1999-04-22 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_565[] = {"13531","Oklahoma CS83 North zone","Oklahoma North","","","United States (USA) - Oklahoma - counties north of 35d 20m North.","9802","35.0","-98.0","36.46","35.34","","600000.0","0.0","9001","9110","8901","","","","","1999-04-22 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_566[] = {"13532","Oklahoma CS83 South zone","Oklahoma South","","","United States (USA) - Oklahoma - counties south of 35d 20m North.","9802","33.2","-98.0","35.14","33.56","","600000.0","0.0","9001","9110","8901","","","","","1999-04-22 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_567[] = {"13601","Oregon CS27 North zone","Oregon North","","","United States (USA) - Oregon - counties north of 44d 15m North.","9802","43.4","-120.3","44.2","46.0","","2000000.0","0.0","9003","9110","8901","","","","","1999-04-22 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_568[] = {"13602","Oregon CS27 South zone","Oregon South","","","United States (USA) - Oregon - counties south of 44d 15m North.","9802","41.4","-120.3","42.2","44.0","","2000000.0","0.0","9003","9110","8901","","","","","1999-04-22 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_569[] = {"13631","Oregon CS83 North zone","Oregon North","","","United States (USA) - Oregon - counties north of 44d 15m North.","9802","43.4","-120.3","46.0","44.2","","2500000.0","0.0","9001","9110","8901","","","","","1999-04-22 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_570[] = {"13632","Oregon CS83 South zone","Oregon South","","","United States (USA) - Oregon - counties south of 44d 15m North.","9802","41.4","-120.3","44.0","42.2","","1500000.0","0.0","9001","9110","8901","","","","","1999-04-22 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_571[] = {"13701","Pennsylvania CS27 North zone","Pennsylvania North","","","United States (USA) - Pennsylvania - counties north of 40d 50m North.","9802","40.1","-77.45","40.53","41.57","","2000000.0","0.0","9003","9110","8901","","","","","1999-04-22 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_572[] = {"13702","Pennsylvania CS27 South zone","Pennsylvania South","","","United States (USA) - Pennsylvania - counties south of 40d 50m North.","9802","39.2","-77.45","39.56","40.48","","2000000.0","0.0","9003","9110","8901","","","","","1999-04-22 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_573[] = {"13731","Pennsylvania CS83 North zone","Pennsylvania North","","","United States (USA) - Pennsylvania - counties north of 40d 50m North.","9802","40.1","-77.45","41.57","40.53","","600000.0","0.0","9001","9110","8901","","","","","1999-04-22 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_574[] = {"13732","Pennsylvania CS83 South zone","Pennsylvania South","","","United States (USA) - Pennsylvania - counties south of 40d 50m North.","9802","39.2","-77.45","40.58","39.56","","600000.0","0.0","9001","9110","8901","","","","","1999-04-22 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_575[] = {"13800","Rhode Island CS27","Rhode Island","","","United States (USA) - Rhode Island.","9807","41.05","-71.3","","","0.9999938","500000.0","0.0","9003","9110","8901","","","","","1995-12-02 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_576[] = {"13830","Rhode Island CS83","Rhode Island","","","United States (USA) - Rhode Island.","9807","41.05","-71.3","","","0.99999375","100000.0","0.0","9001","9110","8901","","","","","1995-12-02 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_577[] = {"13901","South Carolina CS27 North zone","South Carolina North","","","United States (USA) - South Carolina counties north of and including Edgefield; Saluda; Lexington; Calhoun; Sumter; Florence; Marion & Horry.","9802","33.0","-81.0","33.46","34.58","","2000000.0","0.0","9003","9110","8901","","","","","1999-04-22 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_578[] = {"13902","South Carolina CS27 South zone","South Carolina South","","","United States (USA) - South Carolina - Aiken; Allendale; Bamberg; Barnwell; Beaufort; Berkeley; Charleston; Clarendon; Colleton; Dorchester; Georgetown; Hampton; Jasper; Orangeburg & Williamsburg counties.","9802","31.5","-81.0","32.2","33.4","","2000000.0","0.0","9003","9110","8901","","","","","1999-04-22 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29 [...]
-datafile_rows_t trf_nonpolynomial_row_579[] = {"13930","South Carolina CS83","South Carolina","","","United States (USA) - South Carolina.","9802","31.5","-81.0","34.5","32.3","","609600.0","0.0","9001","9110","8901","","","","","1999-04-22 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_580[] = {"14001","South Dakota CS27 North zone","South Dakota North","","","United States (USA) - South Dakota - counties north of 44d 20m North.","9802","43.5","-100.0","44.25","45.41","","2000000.0","0.0","9003","9110","8901","","","","","1999-04-22 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_581[] = {"14002","South Dakota CS27 South zone","South Dakota South","","","United States (USA) - South Dakota - counties south of 44d 20m North.","9802","42.2","-100.2","42.5","44.24","","2000000.0","0.0","9003","9110","8901","","","","","1999-04-22 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_582[] = {"14031","South Dakota CS83 North zone","South Dakota North","","","United States (USA) - South Dakota - counties north of 44d 20m North.","9802","43.5","-100.0","45.41","44.25","","600000.0","0.0","9001","9110","8901","","","","","1999-04-22 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_583[] = {"14032","South Dakota CS83 South zone","South Dakota South","","","United States (USA) - South Dakota - counties south of 44d 20m North.","9802","42.2","-100.2","44.24","42.5","","600000.0","0.0","9001","9110","8901","","","","","1999-04-22 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_584[] = {"14100","Tennessee CS27","Tennessee","","","United States (USA) - Tennessee.","9802","34.4","-86.0","35.15","36.25","","100000.0","0.0","9003","9110","8901","","","","","1999-04-22 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_585[] = {"14130","Tennessee CS83","Tennessee","","","United States (USA) - Tennessee.","9802","34.2","-86.0","36.25","35.15","","600000.0","0.0","9001","9110","8901","","","","","1999-04-22 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_586[] = {"14201","Texas CS27 North zone","Texas North","","","United States (USA) - Texas - counties north of 34d 20m North.","9802","34.0","-101.3","34.39","36.11","","2000000.0","0.0","9003","9110","8901","","","","","1999-04-22 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_587[] = {"14202","Texas CS27 North Central zone","Texas North Central","","","United States (USA) - Texas - counties between 34d 20m & 32deg North.","9802","31.4","-97.3","32.08","33.58","","2000000.0","0.0","9003","9110","8901","","","","","1999-04-22 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_588[] = {"14203","Texas CS27 Central zone","Texas Central","","","United States (USA) - Texas - counties between 32deg & 30d 10m North.","9802","29.4","-100.2","30.07","31.53","","2000000.0","0.0","9003","9110","8901","","","","","1999-04-22 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_589[] = {"14204","Texas CS27 South Central zone","Texas South Central","","","United States (USA) - Texas - counties between 30d 10m & 28d 05m North.","9802","27.5","-99.0","28.23","30.17","","2000000.0","0.0","9003","9110","8901","","","","","1999-04-22 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_590[] = {"14205","Texas CS27 South zone","Texas South","","","United States (USA) - Texas - counties south of 28d 05m North.","9802","25.4","-98.3","26.1","27.5","","2000000.0","0.0","9003","9110","8901","","","","","1999-04-22 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_591[] = {"14231","Texas CS83 North zone","Texas North","","","United States (USA) - Texas - counties north of 34d 20m North.","9802","34.0","-101.3","36.11","34.39","","200000.0","1000000.0","9001","9110","8901","","","","","1999-04-22 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_592[] = {"14232","Texas CS83 North Central zone","Texas North Central","","","United States (USA) - Texas - counties between 34d 20m & 32deg North.","9802","31.4","-98.3","33.58","32.08","","600000.0","2000000.0","9001","9110","8901","","","","","1999-04-22 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_593[] = {"14233","Texas CS83 Central zone","Texas Central","","","United States (USA) - Texas - counties between 32deg & 30d 10m North.","9802","29.4","-100.2","31.53","30.07","","700000.0","3000000.0","9001","9110","8901","","","","","1999-04-22 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_594[] = {"14234","Texas CS83 South Central zone","Texas South Central","","","United States (USA) - Texas - counties between 30d 10m & 28d 05m North.","9802","27.5","-99.0","30.17","28.23","","600000.0","4000000.0","9001","9110","8901","","","","","1999-04-22 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_595[] = {"14235","Texas CS83 South zone","Texas South","","","United States (USA) - Texas - counties south of 28d 05m North.","9802","25.4","-98.3","27.5","26.1","","300000.0","5000000.0","9001","9110","8901","","","","","1999-04-22 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_596[] = {"14301","Utah CS27 North zone","Utah North","","","United States (USA) - Utah - counties north of 40d 50m North.","9802","40.2","-111.3","40.43","41.47","","2000000.0","0.0","9003","9110","8901","","","","","1999-04-22 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_597[] = {"14302","Utah CS27 Central zone","Utah Central","","","United States (USA) - Utah - counties between 40d 50m & 38d 30m North.","9802","38.2","-111.3","39.01","40.39","","2000000.0","0.0","9003","9110","8901","","","","","1999-04-22 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_598[] = {"14303","Utah CS27 South zone","Utah South","","","United States (USA) - Utah - counties south of 38d 30m North.","9802","36.4","-111.3","37.13","38.21","","2000000.0","0.0","9003","9110","8901","","","","","1999-04-22 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_599[] = {"14331","Utah CS83 North zone","Utah North","","","United States (USA) - Utah - counties north of 40d 50m North.","9802","40.2","-111.3","41.47","40.43","","500000.0","1000000.0","9001","9110","8901","","","","","1999-04-22 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_600[] = {"14332","Utah CS83 Central zone","Utah Central","","","United States (USA) - Utah - counties between 40d 50m & 38d 30m North.","9802","38.2","-111.3","40.39","39.01","","500000.0","2000000.0","9001","9110","8901","","","","","1999-04-22 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_601[] = {"14333","Utah CS83 South zone","Utah South","","","United States (USA) - Utah - counties south of 38d 30m North.","9802","36.4","-111.3","38.21","37.13","","500000.0","3000000.0","9001","9110","8901","","","","","1999-04-22 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_602[] = {"14400","Vermont CS27","Vermont","","","United States (USA) - Vermont.","9807","42.3","-72.3","","","0.999964286","500000.0","0.0","9003","9110","8901","","","","","1995-12-02 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_603[] = {"14430","Vermont CS83","Vermont","","","United States (USA) - Vermont.","9807","42.3","-72.3","","","0.999964286","500000.0","0.0","9001","9110","8901","","","","","1995-12-02 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_604[] = {"14501","Virginia CS27 North zone","Virginia North","","","United States (USA) - Virginia - counties north of 38d 05m North.","9802","37.4","-78.3","38.02","39.12","","2000000.0","0.0","9003","9110","8901","","","","","1999-04-22 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_605[] = {"14502","Virginia CS27 South zone","Virginia South","","","United States (USA) - Virginia - counties south of 38d 05m North.","9802","36.2","-78.3","36.46","37.58","","2000000.0","0.0","9003","9110","8901","","","","","1999-04-22 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_606[] = {"14531","Virginia CS83 North zone","Virginia North","","","United States (USA) - Virginia - counties north of 38d 05m North.","9802","37.4","-78.3","39.12","38.02","","3500000.0","2000000.0","9001","9110","8901","","","","","1999-04-22 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_607[] = {"14532","Virginia CS83 South zone","Virginia South","","","United States (USA) - Virginia - counties south of 38d 05m North.","9802","36.2","-78.3","37.58","36.46","","3500000.0","1000000.0","9001","9110","8901","","","","","1999-04-22 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_608[] = {"14601","Washington CS27 North zone","Washington North","","","United States (USA) - Washington - counties north of 47d 30m North.","9802","47.0","-120.5","47.3","48.44","","2000000.0","0.0","9003","9110","8901","","","","","1999-04-22 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_609[] = {"14602","Washington CS27 South zone","Washington South","","","United States (USA) - Washington - counties south of 47d 30m North.","9802","45.2","-120.3","45.5","47.2","","2000000.0","0.0","9003","9110","8901","","","","","1999-04-22 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_610[] = {"14631","Washington CS83 North zone","Washington North","","","United States (USA) - Washington - counties north of 47d 30m North.","9802","47.0","-120.5","48.44","47.3","","500000.0","0.0","9001","9110","8901","","","","","1999-04-22 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_611[] = {"14632","Washington CS83 South zone","Washington South","","","United States (USA) - Washington - counties south of 47d 30m North.","9802","45.2","-120.3","47.2","45.5","","500000.0","0.0","9001","9110","8901","","","","","1999-04-22 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_612[] = {"14701","West Virginia CS27 North zone","West Virginia North","","","United States (USA) - West Virginia - counties north of 39deg North.","9802","38.3","-79.3","39.0","40.15","","2000000.0","0.0","9003","9110","8901","","","","","1999-04-22 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_613[] = {"14702","West Virginia CS27 South zone","West Virginia South","","","United States (USA) - West Virginia - counties south of 39deg North.","9802","37.0","-81.0","37.29","38.53","","2000000.0","0.0","9003","9110","8901","","","","","1999-04-22 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_614[] = {"14731","West Virginia CS83 North zone","West Virginia North","","","United States (USA) - West Virginia - counties north of 39deg North.","9802","38.3","-79.3","40.15","39.0","","600000.0","0.0","9001","9110","8901","","","","","1999-04-22 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_615[] = {"14732","West Virginia CS83 South zone","West Virginia South","","","United States (USA) - West Virginia - counties south of 39deg North.","9802","37.0","-81.0","38.53","37.29","","600000.0","0.0","9001","9110","8901","","","","","1999-04-22 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_616[] = {"14801","Wisconsin CS27 North zone","Wisconsin North","","","United States (USA) - Wisconsin - counties north of 45d 35m North.","9802","45.1","-90.0","45.34","46.46","","2000000.0","0.0","9003","9110","8901","","","","","1999-04-22 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_617[] = {"14802","Wisconsin CS27 Central zone","Wisconsin Central","","","United States (USA) - Wisconsin - counties between 45d 35m & 44d 15m North.","9802","43.5","-90.0","44.15","45.3","","2000000.0","0.0","9003","9110","8901","","","","","1999-04-22 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_618[] = {"14803","Wisconsin CS27 South zone","Wisconsin South","","","United States (USA) - Wisconsin - counties south of 44d 15m North.","9802","42.0","-90.0","42.44","44.04","","2000000.0","0.0","9003","9110","8901","","","","","1999-04-22 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_619[] = {"14831","Wisconsin CS83 North zone","Wisconsin North","","","United States (USA) - Wisconsin - counties north of 45d 35m North.","9802","45.1","-90.0","46.46","45.34","","600000.0","0.0","9001","9110","8901","","","","","1999-04-22 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_620[] = {"14832","Wisconsin CS83 Central zone","Wisconsin Central","","","United States (USA) - Wisconsin - counties between 45d 35m & 44d 15m North.","9802","43.5","-90.0","45.3","44.15","","600000.0","0.0","9001","9110","8901","","","","","1999-04-22 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_621[] = {"14833","Wisconsin CS83 South zone","Wisconsin South","","","United States (USA) - Wisconsin - counties south of 44d 15m North.","9802","42.0","-90.0","44.04","42.44","","600000.0","0.0","9001","9110","8901","","","","","1999-04-22 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_622[] = {"14901","Wyoming CS27 East zone","Wyoming East","","","United States (USA) - Wyoming - counties east of 106d West.","9807","40.4","-105.1","","","0.999941177","500000.0","0.0","9003","9110","8901","","","","","1995-12-02 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_623[] = {"14902","Wyoming CS27 East Central zone","Wyoming East Central","","","United States (USA) - Wyoming - counties between 106d & 108d 10m West.","9807","40.4","-107.2","","","0.999941177","500000.0","0.0","9003","9110","8901","","","","","1995-12-02 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_624[] = {"14903","Wyoming CS27 West Central zone","Wyoming West Central","","","United States (USA) - Wyoming - counties between 108d 10m & 109d 40m West.","9807","40.4","-108.45","","","0.999941177","500000.0","0.0","9003","9110","8901","","","","","1995-12-02 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_625[] = {"14904","Wyoming CS27 West zone","Wyoming West","","","United States (USA) - Wyoming - counties west of 109d 40m West.","9807","40.4","-110.05","","","0.999941177","500000.0","0.0","9003","9110","8901","","","","","1995-12-02 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_626[] = {"14931","Wyoming CS83 East zone","Wyoming East","","","United States (USA) - Wyoming - counties east of 106d West.","9807","40.3","-105.1","","","0.9999375","200000.0","0.0","9001","9110","8901","","","","","1995-12-02 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_627[] = {"14932","Wyoming CS83 East Central zone","Wyoming East Central","","","United States (USA) - Wyoming - counties between 106d & 108d 10m West.","9807","40.3","-107.2","","","0.9999375","400000.0","100000.0","9001","9110","8901","","","","","1995-12-02 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_628[] = {"14933","Wyoming CS83 West Central zone","Wyoming West Central","","","United States (USA) - Wyoming - counties between 108d 10m & 109d 40m West.","9807","40.3","-108.45","","","0.9999375","600000.0","0.0","9001","9110","8901","","","","","1995-12-02 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_629[] = {"14934","Wyoming CS83 West zone","Wyoming West","","","United States (USA) - Wyoming - counties west of 109d 40m West.","9807","40.3","-110.05","","","0.9999375","800000.0","100000.0","9001","9110","8901","","","","","1995-12-02 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_630[] = {"15001","Alaska CS27 zone 1","Alaska zone 1","","","United States (USA) - Alaska - east of 141 deg West; i.e. Panhandle.","9812","57.0","-133.4","323.07483685","323.07483685","0.9999","16404166.67","-16404166.67","9003","9110","8901","","","","","1997-04-11 00:00:00","USGS Professional Paper #1395","EPSG","","96.29  97.08",NULL};
-datafile_rows_t trf_nonpolynomial_row_631[] = {"15002","Alaska CS27 zone 2","Alaska zone 2","","","United States (USA) - Alaska - 141deg to 144deg West.","9807","54.0","-142.0","","","0.9999","500000.0","0.0","9003","9102","8901","","","","","1995-12-02 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_632[] = {"15003","Alaska CS27 zone 3","Alaska zone 3","","","United States (USA) - Alaska - 144deg to 148deg West excluding Kenai Peninsula; Perry Is. and Esther Is.","9807","54.0","-146.0","","","0.9999","500000.0","0.0","9003","9102","8901","","","","","1995-12-02 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_633[] = {"15004","Alaska CS27 zone 4","Alaska zone 4","","","United States (USA) - Alaska - 148deg to 152deg West.","9807","54.0","-150.0","","","0.9999","500000.0","0.0","9003","9102","8901","","","","","1995-12-02 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_634[] = {"15005","Alaska CS27 zone 5","Alaska zone 5","","","United States (USA) - Alaska - 152deg to 156deg West.","9807","54.0","-154.0","","","0.9999","500000.0","0.0","9003","9102","8901","","","","","1995-12-02 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_635[] = {"15006","Alaska CS27 zone 6","Alaska zone 6","","","United States (USA) - Alaska - 156deg to 160deg West.","9807","54.0","-158.0","","","0.9999","500000.0","0.0","9003","9102","8901","","","","","1995-12-02 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_636[] = {"15007","Alaska CS27 zone 7","Alaska zone 7","","","United States (USA) - Alaska - 160deg to 164deg West.","9807","54.0","-162.0","","","0.9999","700000.0","0.0","9003","9102","8901","","","","","1995-12-02 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_637[] = {"15008","Alaska CS27 zone 8","Alaska zone 8","","","United States (USA) - Alaska - 164deg to 168deg West north of 54d 30m North.","9807","54.0","-166.0","","","0.9999","500000.0","0.0","9003","9102","8901","","","","","1995-12-02 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_638[] = {"15009","Alaska CS27 zone 9","Alaska zone 9","","","United States (USA) - Alaska - west of 168deg West and north of 54d 30m North.","9807","54.0","-170.0","","","0.9999","600000.0","0.0","9003","9102","8901","","","","","1995-12-02 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_639[] = {"15010","Alaska CS27 zone 10","Alaska zone 10","","","United States (USA) - Alaska - Aleutian Islands.","9802","51.0","-176.0","53.5","51.5","","3000000.0","0.0","9003","9110","8901","","","","","1999-04-22 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_640[] = {"15031","Alaska CS83 zone 1","Alaska zone 1","","","United States (USA) - Alaska - east of 141 deg West; i.e. Panhandle.","9812","57.0","-133.4","323.07483685","323.07483685","0.9999","5000000.0","-5000000.0","9001","9110","8901","","","","","1996-09-12 00:00:00","NOAA manual NOS NGS 5","EPSG","","96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_641[] = {"15032","Alaska CS83 zone 2","Alaska zone 2","","","United States (USA) - Alaska - 141deg to 144deg West.","9807","54.0","-142.0","","","0.9999","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_642[] = {"15033","Alaska CS83 zone 3","Alaska zone 3","","","United States (USA) - Alaska - 144deg to 148deg West excluding Kenai Peninsula; Perry Is. and Esther Is.","9807","54.0","-146.0","","","0.9999","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_643[] = {"15034","Alaska CS83 zone 4","Alaska zone 4","","","United States (USA) - Alaska - 148deg to 152deg West.","9807","54.0","-150.0","","","0.9999","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_644[] = {"15035","Alaska CS83 zone 5","Alaska zone 5","","","United States (USA) - Alaska - 152deg to 156deg West.","9807","54.0","-154.0","","","0.9999","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_645[] = {"15036","Alaska CS83 zone 6","Alaska zone 6","","","United States (USA) - Alaska - 156deg to 160deg West.","9807","54.0","-158.0","","","0.9999","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_646[] = {"15037","Alaska CS83 zone 7","Alaska zone 7","","","United States (USA) - Alaska - 160deg to 164deg West.","9807","54.0","-162.0","","","0.9999","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_647[] = {"15038","Alaska CS83 zone 8","Alaska zone 8","","","United States (USA) - Alaska - 164deg to 168deg West north of 54d 30m North.","9807","54.0","-166.0","","","0.9999","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_648[] = {"15039","Alaska CS83 zone 9","Alaska zone 9","","","United States (USA) - Alaska - west of 168deg West and north of 54d 30m North.","9807","54.0","-170.0","","","0.9999","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_649[] = {"15040","Alaska CS83 zone 10","Alaska zone 10","","","United States (USA) - Alaska - Aleutian Islands.","9802","51.0","-176.0","53.5","51.5","","1000000.0","0.0","9001","9110","8901","","","","","1999-04-22 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_650[] = {"15101","Hawaii CS27 zone 1","Hawaii zone 1","","","United States (USA) - Hawaii - island of Hawaii.","9807","18.5","-155.3","","","0.999966667","500000.0","0.0","9003","9110","8901","","","","","1995-12-02 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_651[] = {"15102","Hawaii CS27 zone 2","Hawaii zone 2","","","United States (USA) - Hawaii - Maui; Kahoolawe; Lanai; Molokai.","9807","20.2","-156.4","","","0.999966667","500000.0","0.0","9003","9110","8901","","","","","1995-12-02 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_652[] = {"15103","Hawaii CS27 zone 3","Hawaii zone 3","","","United States (USA) - Hawaii - Oahu.","9807","21.1","-158.0","","","0.99999","500000.0","0.0","9003","9110","8901","","","","","1995-12-02 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_653[] = {"15104","Hawaii CS27 zone 4","Hawaii zone 4","","","United States (USA) - Hawaii - Kauai.","9807","21.5","-159.3","","","0.99999","500000.0","0.0","9003","9110","8901","","","","","1995-12-02 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_654[] = {"15105","Hawaii CS27 zone 5","Hawaii zone 5","","","United States (USA) - Hawaii - Niihau.","9807","21.4","-160.1","","","1.0","500000.0","0.0","9003","9110","8901","","","","","1995-12-02 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_655[] = {"15131","Hawaii CS83 zone 1","Hawaii  zone 1","","","United States (USA) - Hawaii - island of Hawaii.","9807","18.5","-155.3","","","0.999966667","500000.0","0.0","9001","9110","8901","","","","","1995-12-02 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_656[] = {"15132","Hawaii CS83 zone 2","Hawaii  zone 2","","","United States (USA) - Hawaii - Maui; Kahoolawe; Lanai; Molokai.","9807","20.2","-156.4","","","0.999966667","500000.0","0.0","9001","9110","8901","","","","","1995-12-02 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_657[] = {"15133","Hawaii CS83 zone 3","Hawaii  zone 3","","","United States (USA) - Hawaii - Oahu.","9807","21.1","-158.0","","","0.99999","500000.0","0.0","9001","9110","8901","","","","","1995-12-02 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_658[] = {"15134","Hawaii CS83 zone 4","Hawaii  zone 4","","","United States (USA) - Hawaii - Kauai.","9807","21.5","-159.3","","","0.99999","500000.0","0.0","9001","9110","8901","","","","","1995-12-02 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_659[] = {"15135","Hawaii CS83 zone 5","Hawaii  zone 5","","","United States (USA) - Hawaii - Niihau.","9807","21.4","-160.1","","","1.0","500000.0","0.0","9001","9110","8901","","","","","1995-12-02 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_660[] = {"15201","Puerto Rico CS27","Puerto Rico","","","Puerto Rico.","9802","17.5","-66.26","18.26","18.02","","500000.0","0.0","9003","9110","8901","","","","","1999-04-22 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_661[] = {"15202","St. Croix CS27","St. Croix","","","Virgin Islands of US - St. Croix.","9802","17.5","-66.26","18.26","18.02","","500000.0","100000.0","9003","9110","8901","","","","","1999-04-22 00:00:00","USGS Professional Paper #1395","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_662[] = {"15230","Puerto Rico & Virgin Islands CS83","Puerto Rico & Virgin Is.","","","Puerto Rico & Virgin Islands of US","9802","17.5","-66.26","18.26","18.02","","200000.0","200000.0","9001","9110","8901","","","","","1999-04-22 00:00:00","NOAA manual NOS NGS 5","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_663[] = {"15914","BLM zone 14N in feet","BLM 14N (feet)","","","United States (USA) - Gulf of Mexico - west of 96 deg West approximately.","9807","0.0","-99.0","","","0.9996","1640416.67","0.0","9003","9102","8901","","","","","1995-12-02 00:00:00","Minerals Management Service offshore protraction diagrams.","EPSG","Sometimes locally referred to as \"UTM zone 14\".","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_664[] = {"15915","BLM zone 15N in feet","BLM 15N (feet)","","","United States (USA) - Gulf of Mexico - 96 deg to 90 deg West approximately.","9807","0.0","-93.0","","","0.9996","1640416.67","0.0","9003","9102","8901","","","","","1995-12-02 00:00:00","Minerals Management Service offshore protraction diagrams.","EPSG","Sometimes locally referred to as \"UTM zone 15\".","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_665[] = {"15916","BLM zone 16N in feet","BLM 16N (feet)","","","United States (USA) - Gulf of Mexico - 90 deg to 84 deg West approximately.","9807","0.0","-87.0","","","0.9996","1640416.67","0.0","9003","9102","8901","","","","","1995-12-02 00:00:00","Minerals Management Service offshore protraction diagrams.","EPSG","Sometimes locally referred to as \"UTM zone 16\".","95.27  95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_666[] = {"15917","BLM zone 17N in feet","BLM 17N (feet)","","","United States (USA) - Gulf of Mexico - east of 84 deg West approximately.","9807","0.0","-81.0","","","0.9996","1640416.67","0.0","9003","9102","8901","","","","","1995-12-02 00:00:00","Minerals Management Service offshore protraction diagrams.","EPSG","Sometimes locally referred to as \"UTM zone 17\".","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_667[] = {"16001","UTM zone 1N","","","","180deg to 174deg West; northern hemisphere.","9807","0.0","-177.0","","","0.9996","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_668[] = {"16002","UTM zone 2N","","","","174deg West to 168deg West; northern hemisphere.","9807","0.0","-171.0","","","0.9996","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_669[] = {"16003","UTM zone 3N","","","","168deg West to 162deg West; northern hemisphere.","9807","0.0","-165.0","","","0.9996","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_670[] = {"16004","UTM zone 4N","","","","162deg West to 156deg West; northern hemisphere.","9807","0.0","-159.0","","","0.9996","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_671[] = {"16005","UTM zone 5N","","","","156deg West to 150deg West; northern hemisphere.","9807","0.0","-153.0","","","0.9996","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_672[] = {"16006","UTM zone 6N","","","","150deg West to 144deg West; northern hemisphere.","9807","0.0","-147.0","","","0.9996","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_673[] = {"16007","UTM zone 7N","","","","144deg West to 138deg West; northern hemisphere.","9807","0.0","-141.0","","","0.9996","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_674[] = {"16008","UTM zone 8N","","","","138deg West to 132deg West; northern hemisphere.","9807","0.0","-135.0","","","0.9996","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_675[] = {"16009","UTM zone 9N","","","","132deg West to 126deg West; northern hemisphere.","9807","0.0","-129.0","","","0.9996","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_676[] = {"16010","UTM zone 10N","","","","130deg West to 120deg West; northern hemisphere.","9807","0.0","-123.0","","","0.9996","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_677[] = {"16011","UTM zone 11N","","","","120deg West to 114deg West; northern hemisphere.","9807","0.0","-117.0","","","0.9996","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_678[] = {"16012","UTM zone 12N","","","","114deg West to 108deg West; northern hemisphere.","9807","0.0","-111.0","","","0.9996","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_679[] = {"16013","UTM zone 13N","","","","108deg West to 102deg West; northern hemisphere.","9807","0.0","-105.0","","","0.9996","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_680[] = {"16014","UTM zone 14N","","","","102deg West to 96deg West; northern hemisphere.","9807","0.0","-99.0","","","0.9996","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_681[] = {"16015","UTM zone 15N","","","","96deg West to 90deg West; northern hemisphere.","9807","0.0","-93.0","","","0.9996","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_682[] = {"16016","UTM zone 16N","","","","90deg West to 84deg West; northern hemisphere.","9807","0.0","-87.0","","","0.9996","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_683[] = {"16017","UTM zone 17N","","","","84deg West to 78deg West; northern hemisphere.","9807","0.0","-81.0","","","0.9996","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_684[] = {"16018","UTM zone 18N","","","","78deg West to 72deg West; northern hemisphere.","9807","0.0","-75.0","","","0.9996","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_685[] = {"16019","UTM zone 19N","","","","72deg West to 66deg West; northern hemisphere.","9807","0.0","-69.0","","","0.9996","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_686[] = {"16020","UTM zone 20N","","","","66deg West to 60deg West; northern hemisphere.","9807","0.0","-63.0","","","0.9996","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_687[] = {"16021","UTM zone 21N","","","","60deg West to 54deg West; northern hemisphere.","9807","0.0","-57.0","","","0.9996","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_688[] = {"16022","UTM zone 22N","","","","54deg West to 48deg West; northern hemisphere.","9807","0.0","-51.0","","","0.9996","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_689[] = {"16023","UTM zone 23N","","","","48deg West to 42deg West; northern hemisphere.","9807","0.0","-45.0","","","0.9996","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_690[] = {"16024","UTM zone 24N","","","","42deg West to 36deg West; northern hemisphere.","9807","0.0","-39.0","","","0.9996","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_691[] = {"16025","UTM zone 25N","","","","36deg West to 30deg West; northern hemisphere.","9807","0.0","-33.0","","","0.9996","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_692[] = {"16026","UTM zone 26N","","","","30deg West to 24deg West; northern hemisphere.","9807","0.0","-27.0","","","0.9996","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_693[] = {"16027","UTM zone 27N","","","","24deg West to 18deg West; northern hemisphere.","9807","0.0","-21.0","","","0.9996","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_694[] = {"16028","UTM zone 28N","","","","18deg West to 12deg West; northern hemisphere.","9807","0.0","-15.0","","","0.9996","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_695[] = {"16029","UTM zone 29N","","","","12deg West to 6deg West; northern hemisphere.","9807","0.0","-9.0","","","0.9996","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_696[] = {"16030","UTM zone 30N","","","","6deg West to 0deg; northern hemisphere.","9807","0.0","-3.0","","","0.9996","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_697[] = {"16031","UTM zone 31N","","","","0deg to 6deg East; northern hemisphere.","9807","0.0","3.0","","","0.9996","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_698[] = {"16032","UTM zone 32N","","","","6deg East to 12deg East; northern hemisphere.","9807","0.0","9.0","","","0.9996","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_699[] = {"16033","UTM zone 33N","","","","12deg East to 18deg East; northern hemisphere.","9807","0.0","15.0","","","0.9996","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_700[] = {"16034","UTM zone 34N","","","","18deg East to 24deg East; northern hemisphere.","9807","0.0","21.0","","","0.9996","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_701[] = {"16035","UTM zone 35N","","","","24deg East to 30deg East; northern hemisphere.","9807","0.0","27.0","","","0.9996","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_702[] = {"16036","UTM zone 36N","","","","30deg East to 36deg East; northern hemisphere.","9807","0.0","33.0","","","0.9996","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_703[] = {"16037","UTM zone 37N","","","","36deg East to 42deg East; northern hemisphere.","9807","0.0","39.0","","","0.9996","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_704[] = {"16038","UTM zone 38N","","","","42deg East to 48deg East; northern hemisphere.","9807","0.0","45.0","","","0.9996","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_705[] = {"16039","UTM zone 39N","","","","48deg East to 54deg East; northern hemisphere.","9807","0.0","51.0","","","0.9996","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_706[] = {"16040","UTM zone 40N","","","","54deg East to 60deg East; northern hemisphere.","9807","0.0","57.0","","","0.9996","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_707[] = {"16041","UTM zone 41N","","","","60deg East to 66deg East; northern hemisphere.","9807","0.0","63.0","","","0.9996","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_708[] = {"16042","UTM zone 42N","","","","66deg East to 72deg East; northern hemisphere.","9807","0.0","69.0","","","0.9996","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_709[] = {"16043","UTM zone 43N","","","","72deg East to 78deg East; northern hemisphere.","9807","0.0","75.0","","","0.9996","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_710[] = {"16044","UTM zone 44N","","","","78deg East to 84deg East; northern hemisphere.","9807","0.0","81.0","","","0.9996","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_711[] = {"16045","UTM zone 45N","","","","84deg East to 90deg East; northern hemisphere.","9807","0.0","87.0","","","0.9996","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_712[] = {"16046","UTM zone 46N","","","","90deg East to 96deg East; northern hemisphere.","9807","0.0","93.0","","","0.9996","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_713[] = {"16047","UTM zone 47N","","","","96deg East to 102eg East; northern hemisphere.","9807","0.0","99.0","","","0.9996","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_714[] = {"16048","UTM zone 48N","","","","102deg East to 108deg East; northern hemisphere.","9807","0.0","105.0","","","0.9996","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_715[] = {"16049","UTM zone 49N","","","","108deg East to 114deg East; northern hemisphere.","9807","0.0","111.0","","","0.9996","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_716[] = {"16050","UTM zone 50N","","","","114deg East to 120deg East; northern hemisphere.","9807","0.0","117.0","","","0.9996","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_717[] = {"16051","UTM zone 51N","","","","120deg East to 126deg East; northern hemisphere.","9807","0.0","123.0","","","0.9996","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_718[] = {"16052","UTM zone 52N","","","","126deg East to 132deg East; northern hemisphere.","9807","0.0","129.0","","","0.9996","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_719[] = {"16053","UTM zone 53N","","","","132deg East to 138deg East; northern hemisphere.","9807","0.0","135.0","","","0.9996","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_720[] = {"16054","UTM zone 54N","","","","138deg East to 144deg East; northern hemisphere.","9807","0.0","141.0","","","0.9996","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_721[] = {"16055","UTM zone 55N","","","","144deg East to 150deg East; northern hemisphere.","9807","0.0","147.0","","","0.9996","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_722[] = {"16056","UTM zone 56N","","","","150deg East to 156deg East; northern hemisphere.","9807","0.0","153.0","","","0.9996","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_723[] = {"16057","UTM zone 57N","","","","156deg East to 162deg East; northern hemisphere.","9807","0.0","159.0","","","0.9996","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_724[] = {"16058","UTM zone 58N","","","","162deg East to 168deg East; northern hemisphere.","9807","0.0","165.0","","","0.9996","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_725[] = {"16059","UTM zone 59N","","","","168deg East to 174deg East; northern hemisphere.","9807","0.0","171.0","","","0.9996","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_726[] = {"16060","UTM zone 60N","","","","174deg East to 180deg; northern hemisphere.","9807","0.0","177.0","","","0.9996","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_727[] = {"16061","Universal Polar Stereographic North","UPS North","","","Northern hemisphere polar area.","9810","90.0","0.0","","","0.994","2000000.0","2000000.0","9001","9102","8901","","","","","1997-06-16 00:00:00","","EPSG","","97.18",NULL};
-datafile_rows_t trf_nonpolynomial_row_728[] = {"16101","UTM zone 1S","","","","180deg to 174deg West; southern hemisphere.","9807","0.0","-177.0","","","0.9996","500000.0","10000000.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_729[] = {"16102","UTM zone 2S","","","","174deg West to 168deg West; southern hemisphere.","9807","0.0","-171.0","","","0.9996","500000.0","10000000.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_730[] = {"16103","UTM zone 3S","","","","168deg West to 162deg West; southern hemisphere.","9807","0.0","-165.0","","","0.9996","500000.0","10000000.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_731[] = {"16104","UTM zone 4S","","","","162deg West to 156deg West; southern hemisphere.","9807","0.0","-159.0","","","0.9996","500000.0","10000000.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_732[] = {"16105","UTM zone 5S","","","","156deg West to 150deg West; southern hemisphere.","9807","0.0","-153.0","","","0.9996","500000.0","10000000.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_733[] = {"16106","UTM zone 6S","","","","150deg West to 144deg West; southern hemisphere.","9807","0.0","-147.0","","","0.9996","500000.0","10000000.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_734[] = {"16107","UTM zone 7S","","","","144deg West to 138deg West; southern hemisphere.","9807","0.0","-141.0","","","0.9996","500000.0","10000000.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_735[] = {"16108","UTM zone 8S","","","","138deg West to 132deg West; southern hemisphere.","9807","0.0","-135.0","","","0.9996","500000.0","10000000.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_736[] = {"16109","UTM zone 9S","","","","132deg West to 126deg West; southern hemisphere.","9807","0.0","-129.0","","","0.9996","500000.0","10000000.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_737[] = {"16110","UTM zone 10S","","","","130deg West to 120deg West; southern hemisphere.","9807","0.0","-123.0","","","0.9996","500000.0","10000000.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_738[] = {"16111","UTM zone 11S","","","","120deg West to 114deg West; southern hemisphere.","9807","0.0","-117.0","","","0.9996","500000.0","10000000.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_739[] = {"16112","UTM zone 12S","","","","114deg West to 108deg West; southern hemisphere.","9807","0.0","-111.0","","","0.9996","500000.0","10000000.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_740[] = {"16113","UTM zone 13S","","","","108deg West to 102deg West; southern hemisphere.","9807","0.0","-105.0","","","0.9996","500000.0","10000000.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_741[] = {"16114","UTM zone 14S","","","","102deg West to 96deg West; southern hemisphere.","9807","0.0","-99.0","","","0.9996","500000.0","10000000.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_742[] = {"16115","UTM zone 15S","","","","96deg West to 90deg West; southern hemisphere.","9807","0.0","-93.0","","","0.9996","500000.0","10000000.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_743[] = {"16116","UTM zone 16S","","","","90deg West to 84deg West; southern hemisphere.","9807","0.0","-87.0","","","0.9996","500000.0","10000000.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_744[] = {"16117","UTM zone 17S","","","","84deg West to 78deg West; southern hemisphere.","9807","0.0","-81.0","","","0.9996","500000.0","10000000.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_745[] = {"16118","UTM zone 18S","","","","78deg West to 72deg West; southern hemisphere.","9807","0.0","-75.0","","","0.9996","500000.0","10000000.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_746[] = {"16119","UTM zone 19S","","","","72deg West to 66deg West; southern hemisphere.","9807","0.0","-69.0","","","0.9996","500000.0","10000000.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_747[] = {"16120","UTM zone 20S","","","","66deg West to 60deg West; southern hemisphere.","9807","0.0","-63.0","","","0.9996","500000.0","10000000.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_748[] = {"16121","UTM zone 21S","","","","60deg West to 54deg West; southern hemisphere.","9807","0.0","-57.0","","","0.9996","500000.0","10000000.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_749[] = {"16122","UTM zone 22S","","","","54deg West to 48deg West; southern hemisphere.","9807","0.0","-51.0","","","0.9996","500000.0","10000000.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_750[] = {"16123","UTM zone 23S","","","","48deg West to 42deg West; southern hemisphere.","9807","0.0","-45.0","","","0.9996","500000.0","10000000.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_751[] = {"16124","UTM zone 24S","","","","42deg West to 36deg West; southern hemisphere.","9807","0.0","-39.0","","","0.9996","500000.0","10000000.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_752[] = {"16125","UTM zone 25S","","","","36deg West to 30deg West; southern hemisphere.","9807","0.0","-33.0","","","0.9996","500000.0","10000000.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_753[] = {"16126","UTM zone 26S","","","","30deg West to 24deg West; southern hemisphere.","9807","0.0","-27.0","","","0.9996","500000.0","10000000.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_754[] = {"16127","UTM zone 27S","","","","24deg West to 18deg West; southern hemisphere.","9807","0.0","-21.0","","","0.9996","500000.0","10000000.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_755[] = {"16128","UTM zone 28S","","","","18deg West to 12deg West; southern hemisphere.","9807","0.0","-15.0","","","0.9996","500000.0","10000000.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_756[] = {"16129","UTM zone 29S","","","","12deg West to 6deg West; southern hemisphere.","9807","0.0","-9.0","","","0.9996","500000.0","10000000.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_757[] = {"16130","UTM zone 30S","","","","6deg West to 0deg; southern hemisphere.","9807","0.0","-3.0","","","0.9996","500000.0","10000000.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_758[] = {"16131","UTM zone 31S","","","","0deg to 6deg East; southern hemisphere.","9807","0.0","3.0","","","0.9996","500000.0","10000000.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_759[] = {"16132","UTM zone 32S","","","","6deg East to 12deg East; southern hemisphere.","9807","0.0","9.0","","","0.9996","500000.0","10000000.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_760[] = {"16133","UTM zone 33S","","","","12deg East to 18deg East; southern hemisphere.","9807","0.0","15.0","","","0.9996","500000.0","10000000.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_761[] = {"16134","UTM zone 34S","","","","18deg East to 24deg East; southern hemisphere.","9807","0.0","21.0","","","0.9996","500000.0","10000000.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_762[] = {"16135","UTM zone 35S","","","","24deg East to 30deg East; southern hemisphere.","9807","0.0","27.0","","","0.9996","500000.0","10000000.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_763[] = {"16136","UTM zone 36S","","","","30deg East to 36deg East; southern hemisphere.","9807","0.0","33.0","","","0.9996","500000.0","10000000.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_764[] = {"16137","UTM zone 37S","","","","36deg East to 42deg East; southern hemisphere.","9807","0.0","39.0","","","0.9996","500000.0","10000000.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_765[] = {"16138","UTM zone 38S","","","","42deg East to 48deg East; southern hemisphere.","9807","0.0","45.0","","","0.9996","500000.0","10000000.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_766[] = {"16139","UTM zone 39S","","","","48deg East to 54deg East; southern hemisphere.","9807","0.0","51.0","","","0.9996","500000.0","10000000.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_767[] = {"16140","UTM zone 40S","","","","54deg East to 60deg East; southern hemisphere.","9807","0.0","57.0","","","0.9996","500000.0","10000000.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_768[] = {"16141","UTM zone 41S","","","","60deg East to 66deg East; southern hemisphere.","9807","0.0","63.0","","","0.9996","500000.0","10000000.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_769[] = {"16142","UTM zone 42S","","","","66deg East to 72deg East; southern hemisphere.","9807","0.0","69.0","","","0.9996","500000.0","10000000.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_770[] = {"16143","UTM zone 43S","","","","72deg East to 78deg East; southern hemisphere.","9807","0.0","75.0","","","0.9996","500000.0","10000000.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_771[] = {"16144","UTM zone 44S","","","","78deg East to 84deg East; southern hemisphere.","9807","0.0","81.0","","","0.9996","500000.0","10000000.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_772[] = {"16145","UTM zone 45S","","","","84deg East to 90deg East; southern hemisphere.","9807","0.0","87.0","","","0.9996","500000.0","10000000.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_773[] = {"16146","UTM zone 46S","","","","90deg East to 96deg East; southern hemisphere.","9807","0.0","93.0","","","0.9996","500000.0","10000000.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_774[] = {"16147","UTM zone 47S","","","","96deg East to 102eg East; southern hemisphere.","9807","0.0","99.0","","","0.9996","500000.0","10000000.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_775[] = {"16148","UTM zone 48S","","","","102deg East to 108deg East; southern hemisphere.","9807","0.0","105.0","","","0.9996","500000.0","10000000.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_776[] = {"16149","UTM zone 49S","","","","108deg East to 114deg East; southern hemisphere.","9807","0.0","111.0","","","0.9996","500000.0","10000000.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_777[] = {"16150","UTM zone 50S","","","","114deg East to 120deg East; southern hemisphere.","9807","0.0","117.0","","","0.9996","500000.0","10000000.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_778[] = {"16151","UTM zone 51S","","","","120deg East to 126deg East; southern hemisphere.","9807","0.0","123.0","","","0.9996","500000.0","10000000.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_779[] = {"16152","UTM zone 52S","","","","126deg East to 132deg East; southern hemisphere.","9807","0.0","129.0","","","0.9996","500000.0","10000000.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_780[] = {"16153","UTM zone 53S","","","","132deg East to 138deg East; southern hemisphere.","9807","0.0","135.0","","","0.9996","500000.0","10000000.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_781[] = {"16154","UTM zone 54S","","","","138deg East to 144deg East; southern hemisphere.","9807","0.0","141.0","","","0.9996","500000.0","10000000.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_782[] = {"16155","UTM zone 55S","","","","144deg East to 150deg East; southern hemisphere.","9807","0.0","147.0","","","0.9996","500000.0","10000000.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_783[] = {"16156","UTM zone 56S","","","","150deg East to 156deg East; southern hemisphere.","9807","0.0","153.0","","","0.9996","500000.0","10000000.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_784[] = {"16157","UTM zone 57S","","","","156deg East to 162deg East; southern hemisphere.","9807","0.0","159.0","","","0.9996","500000.0","10000000.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_785[] = {"16158","UTM zone 58S","","","","162deg East to 168deg East; southern hemisphere.","9807","0.0","165.0","","","0.9996","500000.0","10000000.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_786[] = {"16159","UTM zone 59S","","","","168deg East to 174deg East; southern hemisphere.","9807","0.0","171.0","","","0.9996","500000.0","10000000.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_787[] = {"16160","UTM zone 60S","","","","174deg East to 180deg; southern hemisphere.","9807","0.0","177.0","","","0.9996","500000.0","10000000.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_788[] = {"16161","Universal Polar Stereographic South","UPS South","","","Southern hemisphere polar area.","9810","-90.0","0.0","","","0.994","2000000.0","2000000.0","9001","9102","8901","","","","","1997-06-16 00:00:00","","EPSG","","97.18",NULL};
-datafile_rows_t trf_nonpolynomial_row_789[] = {"16202","Gauss-Kruger zone 2","","","","6deg East to 12deg East; northern hemisphere.","9807","0.0","9.0","","","1.0","2500000.0","0.0","9001","9102","8901","","","","","1998-06-30 00:00:00","","EPSG","Original transformation by Gauss-Kruger formula.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_790[] = {"16203","Gauss-Kruger zone 3","","","","12deg East to 18deg East; northern hemisphere.","9807","0.0","15.0","","","1.0","3500000.0","0.0","9001","9102","8901","","","","","1998-06-30 00:00:00","","EPSG","Original transformation by Gauss-Kruger formula.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_791[] = {"16204","Gauss-Kruger zone 4","","","","18deg East to 24deg East; northern hemisphere.","9807","0.0","21.0","","","1.0","4500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","Original transformation by Gauss-Kruger formula.","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_792[] = {"16205","Gauss-Kruger zone 5","","","","24deg East to 30deg East; northern hemisphere.","9807","0.0","27.0","","","1.0","5500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","Original transformation by Gauss-Kruger formula.","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_793[] = {"16206","Gauss-Kruger zone 6","","","","30deg East to 36deg East; northern hemisphere.","9807","0.0","33.0","","","1.0","6500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","Original transformation by Gauss-Kruger formula.","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_794[] = {"16207","Gauss-Kruger zone 7","","","","36deg East to 42deg East; northern hemisphere.","9807","0.0","39.0","","","1.0","7500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","Original transformation by Gauss-Kruger formula.","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_795[] = {"16208","Gauss-Kruger zone 8","","","","42deg East to 48deg East; northern hemisphere.","9807","0.0","45.0","","","1.0","8500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","Original transformation by Gauss-Kruger formula.","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_796[] = {"16209","Gauss-Kruger zone 9","","","","48deg East to 54deg East; northern hemisphere.","9807","0.0","51.0","","","1.0","9500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","Original transformation by Gauss-Kruger formula.","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_797[] = {"16210","Gauss-Kruger zone 10","","","","54deg East to 60deg East; northern hemisphere.","9807","0.0","57.0","","","1.0","10500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","Original transformation by Gauss-Kruger formula.","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_798[] = {"16211","Gauss-Kruger zone 11","","","","60deg East to 66deg East; northern hemisphere.","9807","0.0","63.0","","","1.0","11500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","Original transformation by Gauss-Kruger formula.","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_799[] = {"16212","Gauss-Kruger zone 12","","","","66deg East to 72deg East; northern hemisphere.","9807","0.0","69.0","","","1.0","12500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","Original transformation by Gauss-Kruger formula.","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_800[] = {"16213","Gauss-Kruger zone 13","","","","72deg East to 78deg East; northern hemisphere.","9807","0.0","75.0","","","1.0","13500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","Original transformation by Gauss-Kruger formula.","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_801[] = {"16214","Gauss-Kruger zone 14","","","","78deg East to 84deg East; northern hemisphere.","9807","0.0","81.0","","","1.0","14500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","Original transformation by Gauss-Kruger formula.","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_802[] = {"16215","Gauss-Kruger zone 15","","","","84deg East to 90deg East; northern hemisphere.","9807","0.0","87.0","","","1.0","15500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","Original transformation by Gauss-Kruger formula.","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_803[] = {"16216","Gauss-Kruger zone 16","","","","90deg East to 96deg East; northern hemisphere.","9807","0.0","93.0","","","1.0","16500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","Original transformation by Gauss-Kruger formula.","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_804[] = {"16217","Gauss-Kruger zone 17","","","","96deg East to 102eg East; northern hemisphere.","9807","0.0","99.0","","","1.0","17500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","Original transformation by Gauss-Kruger formula.","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_805[] = {"16218","Gauss-Kruger zone 18","","","","102deg East to 108deg East; northern hemisphere.","9807","0.0","105.0","","","1.0","18500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","Original transformation by Gauss-Kruger formula.","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_806[] = {"16219","Gauss-Kruger zone 19","","","","108deg East to 114deg East; northern hemisphere.","9807","0.0","111.0","","","1.0","19500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","Original transformation by Gauss-Kruger formula.","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_807[] = {"16220","Gauss-Kruger zone 20","","","","114deg East to 120deg East; northern hemisphere.","9807","0.0","117.0","","","1.0","20500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","Original transformation by Gauss-Kruger formula.","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_808[] = {"16221","Gauss-Kruger zone 21","","","","120deg East to 126deg East; northern hemisphere.","9807","0.0","123.0","","","1.0","21500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","Original transformation by Gauss-Kruger formula.","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_809[] = {"16222","Gauss-Kruger zone 22","","","","126deg East to 132deg East; northern hemisphere.","9807","0.0","129.0","","","1.0","22500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","Original transformation by Gauss-Kruger formula.","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_810[] = {"16223","Gauss-Kruger zone 23","","","","132deg East to 138deg East; northern hemisphere.","9807","0.0","135.0","","","1.0","23500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","Original transformation by Gauss-Kruger formula.","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_811[] = {"16224","Gauss-Kruger zone 24","","","","138deg East to 144deg East; northern hemisphere.","9807","0.0","141.0","","","1.0","24500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","Original transformation by Gauss-Kruger formula.","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_812[] = {"16225","Gauss-Kruger zone 25","","","","144deg East to 150deg East; northern hemisphere.","9807","0.0","147.0","","","1.0","25500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","Original transformation by Gauss-Kruger formula.","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_813[] = {"16226","Gauss-Kruger zone 26","","","","150deg East to 156deg East; northern hemisphere.","9807","0.0","153.0","","","1.0","26500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","Original transformation by Gauss-Kruger formula.","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_814[] = {"16227","Gauss-Kruger zone 27","","","","156deg East to 162deg East; northern hemisphere.","9807","0.0","159.0","","","1.0","27500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","Original transformation by Gauss-Kruger formula.","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_815[] = {"16228","Gauss-Kruger zone 28","","","","162deg East to 168deg East; northern hemisphere.","9807","0.0","165.0","","","1.0","28500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","Original transformation by Gauss-Kruger formula.","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_816[] = {"16229","Gauss-Kruger zone 29","","","","168deg East to 174deg East; northern hemisphere.","9807","0.0","171.0","","","1.0","29500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","Original transformation by Gauss-Kruger formula.","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_817[] = {"16230","Gauss-Kruger zone 30","","","","174deg East to 180deg; northern hemisphere.","9807","0.0","177.0","","","1.0","30500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","Original transformation by Gauss-Kruger formula.","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_818[] = {"16231","Gauss-Kruger zone 31","","","","180deg to 174deg West; northern hemisphere.","9807","0.0","-177.0","","","1.0","31500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","Original transformation by Gauss-Kruger formula.","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_819[] = {"16232","Gauss-Kruger zone 32","","","","174deg West to 168deg West; northern hemisphere.","9807","0.0","-171.0","","","1.0","32500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","Original transformation by Gauss-Kruger formula.","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_820[] = {"16302","Gauss-Kruger 2N","","","","6deg East to 12deg East; northern hemisphere.","9807","0.0","9.0","","","1.0","500000.0","0.0","9001","9102","8901","","","","","1998-06-30 00:00:00","","EPSG","Original transformation by Gauss-Kruger formula.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_821[] = {"16303","Gauss-Kruger 3N","","","","12deg East to 18deg East; northern hemisphere.","9807","0.0","15.0","","","1.0","500000.0","0.0","9001","9102","8901","","","","","1998-06-30 00:00:00","","EPSG","Original transformation by Gauss-Kruger formula.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_822[] = {"16304","Gauss-Kruger 4N","","","","18deg East to 24deg East; northern hemisphere.","9807","0.0","21.0","","","1.0","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","Original transformation by Gauss-Kruger formula.","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_823[] = {"16305","Gauss-Kruger 5N","","","","24deg East to 30deg East; northern hemisphere.","9807","0.0","27.0","","","1.0","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","Original transformation by Gauss-Kruger formula.","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_824[] = {"16306","Gauss-Kruger 6N","","","","30deg East to 36deg East; northern hemisphere.","9807","0.0","33.0","","","1.0","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","Original transformation by Gauss-Kruger formula.","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_825[] = {"16307","Gauss-Kruger 7N","","","","36deg East to 42deg East; northern hemisphere.","9807","0.0","39.0","","","1.0","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","Original transformation by Gauss-Kruger formula.","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_826[] = {"16308","Gauss-Kruger 8N","","","","42deg East to 48deg East; northern hemisphere.","9807","0.0","45.0","","","1.0","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","Original transformation by Gauss-Kruger formula.","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_827[] = {"16309","Gauss-Kruger 9N","","","","48deg East to 54deg East; northern hemisphere.","9807","0.0","51.0","","","1.0","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","Original transformation by Gauss-Kruger formula.","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_828[] = {"16310","Gauss-Kruger 10N","","","","54deg East to 60deg East; northern hemisphere.","9807","0.0","57.0","","","1.0","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","Original transformation by Gauss-Kruger formula.","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_829[] = {"16311","Gauss-Kruger 11N","","","","60deg East to 66deg East; northern hemisphere.","9807","0.0","63.0","","","1.0","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","Original transformation by Gauss-Kruger formula.","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_830[] = {"16312","Gauss-Kruger 12N","","","","66deg East to 72deg East; northern hemisphere.","9807","0.0","69.0","","","1.0","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","Original transformation by Gauss-Kruger formula.","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_831[] = {"16313","Gauss-Kruger 13N","","","","72deg East to 78deg East; northern hemisphere.","9807","0.0","75.0","","","1.0","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","Original transformation by Gauss-Kruger formula.","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_832[] = {"16314","Gauss-Kruger 14N","","","","78deg East to 84deg East; northern hemisphere.","9807","0.0","81.0","","","1.0","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","Original transformation by Gauss-Kruger formula.","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_833[] = {"16315","Gauss-Kruger 15N","","","","84deg East to 90deg East; northern hemisphere.","9807","0.0","87.0","","","1.0","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","Original transformation by Gauss-Kruger formula.","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_834[] = {"16316","Gauss-Kruger 16N","","","","90deg East to 96deg East; northern hemisphere.","9807","0.0","93.0","","","1.0","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","Original transformation by Gauss-Kruger formula.","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_835[] = {"16317","Gauss-Kruger 17N","","","","96deg East to 102eg East; northern hemisphere.","9807","0.0","99.0","","","1.0","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","Original transformation by Gauss-Kruger formula.","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_836[] = {"16318","Gauss-Kruger 18N","","","","102deg East to 108deg East; northern hemisphere.","9807","0.0","105.0","","","1.0","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","Original transformation by Gauss-Kruger formula.","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_837[] = {"16319","Gauss-Kruger 19N","","","","108deg East to 114deg East; northern hemisphere.","9807","0.0","111.0","","","1.0","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","Original transformation by Gauss-Kruger formula.","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_838[] = {"16320","Gauss-Kruger 20N","","","","114deg East to 120deg East; northern hemisphere.","9807","0.0","117.0","","","1.0","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","Original transformation by Gauss-Kruger formula.","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_839[] = {"16321","Gauss-Kruger 21N","","","","120deg East to 126deg East; northern hemisphere.","9807","0.0","123.0","","","1.0","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","Original transformation by Gauss-Kruger formula.","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_840[] = {"16322","Gauss-Kruger 22N","","","","126deg East to 132deg East; northern hemisphere.","9807","0.0","129.0","","","1.0","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","Original transformation by Gauss-Kruger formula.","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_841[] = {"16323","Gauss-Kruger 23N","","","","132deg East to 138deg East; northern hemisphere.","9807","0.0","135.0","","","1.0","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","Original transformation by Gauss-Kruger formula.","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_842[] = {"16324","Gauss-Kruger 24N","","","","138deg East to 144deg East; northern hemisphere.","9807","0.0","141.0","","","1.0","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","Original transformation by Gauss-Kruger formula.","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_843[] = {"16325","Gauss-Kruger 25N","","","","144deg East to 150deg East; northern hemisphere.","9807","0.0","147.0","","","1.0","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","Original transformation by Gauss-Kruger formula.","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_844[] = {"16326","Gauss-Kruger 26N","","","","150deg East to 156deg East; northern hemisphere.","9807","0.0","153.0","","","1.0","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","Original transformation by Gauss-Kruger formula.","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_845[] = {"16327","Gauss-Kruger 27N","","","","156deg East to 162deg East; northern hemisphere.","9807","0.0","159.0","","","1.0","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","Original transformation by Gauss-Kruger formula.","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_846[] = {"16328","Gauss-Kruger 28N","","","","162deg East to 168deg East; northern hemisphere.","9807","0.0","165.0","","","1.0","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","Original transformation by Gauss-Kruger formula.","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_847[] = {"16329","Gauss-Kruger 29N","","","","168deg East to 174deg East; northern hemisphere.","9807","0.0","171.0","","","1.0","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","Original transformation by Gauss-Kruger formula.","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_848[] = {"16330","Gauss-Kruger 30N","","","","174deg East to 180deg; northern hemisphere.","9807","0.0","177.0","","","1.0","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","Original transformation by Gauss-Kruger formula.","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_849[] = {"16331","Gauss-Kruger 31N","","","","180deg to 174deg West; northern hemisphere.","9807","0.0","-177.0","","","1.0","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","Original transformation by Gauss-Kruger formula.","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_850[] = {"16332","Gauss-Kruger 32N","","","","174deg West to 168deg West; northern hemisphere.","9807","0.0","-171.0","","","1.0","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","Original transformation by Gauss-Kruger formula.","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_851[] = {"16400","TM 0 N","","","","United Kingdom (UKCS) - offshore North Sea.","9807","0.0","0.0","","","0.9996","500000.0","0.0","9001","9102","8901","","","","","1998-11-11 00:00:00","Shell UK","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_852[] = {"16405","TM 5 NE","","","","Netherlands - offshore.","9807","0.0","5.0","","","0.9996","500000.0","0.0","9001","9102","8901","","","","","1998-11-11 00:00:00","NAM","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_853[] = {"16506","TM 106 NE","","","","Vietnam - offshore.","9807","0.0","106.0","","","0.9996","500000.0","0.0","9001","9102","8901","","","","","1998-11-11 00:00:00","PetroVietnam","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_854[] = {"16611","TM 11.30 SE","","","","Angola - offshore.","9807","0.0","11.3","","","0.9996","500000.0","10000000.0","9001","9110","8901","","","","","1998-11-11 00:00:00","Esso Angola","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_855[] = {"16612","TM 12 SE","","","","Angola - offshore.","9807","0.0","12.0","","","0.9996","500000.0","10000000.0","9001","9102","8901","","","","","1998-11-11 00:00:00","Shell Angola","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_856[] = {"16636","TM 36 SE","","","","Mozambique - offshore.","9807","0.0","36.0","","","0.9996","500000.0","10000000.0","9001","9102","8901","","","","","1998-11-11 00:00:00","BP Mozambique","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_857[] = {"17348","Map Grid of Australia zone 48","MGA zone 48","","","Australia 102deg East  to 108deg East.","9807","0.0","105.0","","","0.9996","500000.0","10000000.0","9001","9102","8901","","","","","1995-12-02 00:00:00","Australian Surveying and Land Information Group Internet WWW page.","EPSG","Grid convergence uses opposite sign convention to UTM","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_858[] = {"17349","Map Grid of Australia zone 49","MGA zone 49","","","Australia 108deg East  to 114deg East.","9807","0.0","111.0","","","0.9996","500000.0","10000000.0","9001","9102","8901","","","","","1995-12-02 00:00:00","Australian Surveying and Land Information Group Internet WWW page.","EPSG","Grid convergence uses opposite sign convention to UTM","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_859[] = {"17350","Map Grid of Australia zone 50","MGA zone 50","","","Australia 114deg East  to 120deg East.","9807","0.0","117.0","","","0.9996","500000.0","10000000.0","9001","9102","8901","","","","","1995-12-02 00:00:00","Australian Surveying and Land Information Group Internet WWW page.","EPSG","Grid convergence uses opposite sign convention to UTM","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_860[] = {"17351","Map Grid of Australia zone 51","MGA zone 51","","","Australia 120deg East  to 126deg East.","9807","0.0","123.0","","","0.9996","500000.0","10000000.0","9001","9102","8901","","","","","1995-12-02 00:00:00","Australian Surveying and Land Information Group Internet WWW page.","EPSG","Grid convergence uses opposite sign convention to UTM","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_861[] = {"17352","Map Grid of Australia zone 52","MGA zone 52","","","Australia 126deg East  to 132deg East.","9807","0.0","129.0","","","0.9996","500000.0","10000000.0","9001","9102","8901","","","","","1995-12-02 00:00:00","Australian Surveying and Land Information Group Internet WWW page.","EPSG","Grid convergence uses opposite sign convention to UTM","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_862[] = {"17353","Map Grid of Australia zone 53","MGA zone 53","","","Australia 132deg East  to 138deg East.","9807","0.0","135.0","","","0.9996","500000.0","10000000.0","9001","9102","8901","","","","","1995-12-02 00:00:00","Australian Surveying and Land Information Group Internet WWW page.","EPSG","Grid convergence uses opposite sign convention to UTM","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_863[] = {"17354","Map Grid of Australia zone 54","MGA zone 54","","","Australia 138deg East  to 144deg East.","9807","0.0","141.0","","","0.9996","500000.0","10000000.0","9001","9102","8901","","","","","1995-12-02 00:00:00","Australian Surveying and Land Information Group Internet WWW page.","EPSG","Grid convergence uses opposite sign convention to UTM","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_864[] = {"17355","Map Grid of Australia zone 55","MGA zone 55","","","Australia 144deg East  to 150deg East.","9807","0.0","147.0","","","0.9996","500000.0","10000000.0","9001","9102","8901","","","","","1995-12-02 00:00:00","Australian Surveying and Land Information Group Internet WWW page.","EPSG","Grid convergence uses opposite sign convention to UTM","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_865[] = {"17356","Map Grid of Australia zone 56","MGA zone 56","","","Australia 150deg East  to 156deg East.","9807","0.0","153.0","","","0.9996","500000.0","10000000.0","9001","9102","8901","","","","","1995-12-02 00:00:00","Australian Surveying and Land Information Group Internet WWW page.","EPSG","Grid convergence uses opposite sign convention to UTM","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_866[] = {"17357","Map Grid of Australia zone 57","MGA zone 57","","","Australia 156deg East  to 162deg East.","9807","0.0","159.0","","","0.9996","500000.0","10000000.0","9001","9102","8901","","","","","1995-12-02 00:00:00","Australian Surveying and Land Information Group Internet WWW page.","EPSG","Grid convergence uses opposite sign convention to UTM","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_867[] = {"17358","Map Grid of Australia zone 58","MGA zone 58","","","Australia 162deg East  to 168deg East.","9807","0.0","165.0","","","0.9996","500000.0","10000000.0","9001","9102","8901","","","","","1995-12-02 00:00:00","Australian Surveying and Land Information Group Internet WWW page.","EPSG","Grid convergence uses opposite sign convention to UTM","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_868[] = {"17448","Australian Map Grid zone 48","AMG zone 48","","","Australia 102deg East  to 108deg East.","9807","0.0","105.0","","","0.9996","500000.0","10000000.0","9001","9102","8901","","","","","1995-12-02 00:00:00","The Australian Map Grid Technical Manual; National Mapping Council of Australia; 1972","EPSG","Grid convergence uses opposite sign convention to UTM","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_869[] = {"17449","Australian Map Grid zone 49","AMG zone 49","","","Australia 108deg East  to 114deg East.","9807","0.0","111.0","","","0.9996","500000.0","10000000.0","9001","9102","8901","","","","","1995-12-02 00:00:00","The Australian Map Grid Technical Manual; National Mapping Council of Australia; 1972","EPSG","Grid convergence uses opposite sign convention to UTM","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_870[] = {"17450","Australian Map Grid zone 50","AMG zone 50","","","Australia 114deg East  to 120deg East.","9807","0.0","117.0","","","0.9996","500000.0","10000000.0","9001","9102","8901","","","","","1995-12-02 00:00:00","The Australian Map Grid Technical Manual; National Mapping Council of Australia; 1972","EPSG","Grid convergence uses opposite sign convention to UTM","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_871[] = {"17451","Australian Map Grid zone 51","AMG zone 51","","","Australia 120deg East  to 126deg East.","9807","0.0","123.0","","","0.9996","500000.0","10000000.0","9001","9102","8901","","","","","1995-12-02 00:00:00","The Australian Map Grid Technical Manual; National Mapping Council of Australia; 1972","EPSG","Grid convergence uses opposite sign convention to UTM","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_872[] = {"17452","Australian Map Grid zone 52","AMG zone 52","","","Australia 126deg East  to 132deg East.","9807","0.0","129.0","","","0.9996","500000.0","10000000.0","9001","9102","8901","","","","","1995-12-02 00:00:00","The Australian Map Grid Technical Manual; National Mapping Council of Australia; 1972","EPSG","Grid convergence uses opposite sign convention to UTM","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_873[] = {"17453","Australian Map Grid zone 53","AMG zone 53","","","Australia 132deg East  to 138deg East.","9807","0.0","135.0","","","0.9996","500000.0","10000000.0","9001","9102","8901","","","","","1995-12-02 00:00:00","The Australian Map Grid Technical Manual; National Mapping Council of Australia; 1972","EPSG","Grid convergence uses opposite sign convention to UTM","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_874[] = {"17454","Australian Map Grid zone 54","AMG zone 54","","","Australia 138deg East  to 144deg East.  Papua New Guinea west of 144 deg East.","9807","0.0","141.0","","","0.9996","500000.0","10000000.0","9001","9102","8901","","","","","1995-12-02 00:00:00","The Australian Map Grid Technical Manual; National Mapping Council of Australia; 1972","EPSG","Grid convergence uses opposite sign convention to UTM","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_875[] = {"17455","Australian Map Grid zone 55","AMG zone 55","","","Australia 144deg East  to 150deg East.  Papua New Guinea 144deg East  to 150deg East.","9807","0.0","147.0","","","0.9996","500000.0","10000000.0","9001","9102","8901","","","","","1995-12-02 00:00:00","The Australian Map Grid Technical Manual; National Mapping Council of Australia; 1972","EPSG","Grid convergence uses opposite sign convention to UTM","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_876[] = {"17456","Australian Map Grid zone 56","AMG zone 56","","","Australia 150deg East  to 156deg East.","9807","0.0","153.0","","","0.9996","500000.0","10000000.0","9001","9102","8901","","","","","1995-12-02 00:00:00","The Australian Map Grid Technical Manual; National Mapping Council of Australia; 1972","EPSG","Grid convergence uses opposite sign convention to UTM","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_877[] = {"17457","Australian Map Grid zone 57","AMG zone 57","","","Australia 156deg East  to 162deg East.","9807","0.0","159.0","","","0.9996","500000.0","10000000.0","9001","9102","8901","","","","","1995-12-02 00:00:00","The Australian Map Grid Technical Manual; National Mapping Council of Australia; 1972","EPSG","Grid convergence uses opposite sign convention to UTM","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_878[] = {"17458","Australian Map Grid zone 58","AMG zone 58","","","Australia 162deg East  to 168deg East.","9807","0.0","165.0","","","0.9996","500000.0","10000000.0","9001","9102","8901","","","","","1995-12-02 00:00:00","The Australian Map Grid Technical Manual; National Mapping Council of Australia; 1972","EPSG","Grid convergence uses opposite sign convention to UTM","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_879[] = {"17515","South African Survey Grid zone 15","S. African Grid zone 15","","","South Africa - Walvis Bay.","9808","0.0","15.0","","","1.0","0.0","0.0","9001","9102","8901","","","","","1996-04-12 00:00:00","","EPSG","Transformation method sometimes described as \"Gauss conform\".","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_880[] = {"17517","South African Survey Grid zone 17","S. African Grid zone 17","","","South Africa - west of 18 deg East.","9808","0.0","17.0","","","1.0","0.0","0.0","9001","9102","8901","","","","","1996-04-12 00:00:00","","EPSG","Transformation method sometimes described as \"Gauss conform\".","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_881[] = {"17519","South African Survey Grid zone 19","S. African Grid zone 19","","","South Africa - 18 to 20 deg East.","9808","0.0","19.0","","","1.0","0.0","0.0","9001","9102","8901","","","","","1996-04-12 00:00:00","","EPSG","Transformation method sometimes described as \"Gauss conform\".","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_882[] = {"17521","South African Survey Grid zone 21","S. African Grid zone 21","","","South Africa - 20 to 22 deg East.","9808","0.0","21.0","","","1.0","0.0","0.0","9001","9102","8901","","","","","1996-04-12 00:00:00","","EPSG","Transformation method sometimes described as \"Gauss conform\".","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_883[] = {"17523","South African Survey Grid zone 23","S. African Grid zone 23","","","South Africa - 22 to 24 deg East.","9808","0.0","23.0","","","1.0","0.0","0.0","9001","9102","8901","","","","","1996-04-12 00:00:00","","EPSG","Transformation method sometimes described as \"Gauss conform\".","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_884[] = {"17525","South African Survey Grid zone 25","S. African Grid zone 25","","","Lestho  - west of 26 deg East; South Africa - 24 to 26 deg East.","9808","0.0","25.0","","","1.0","0.0","0.0","9001","9102","8901","","","","","1996-04-12 00:00:00","","EPSG","Transformation method sometimes described as \"Gauss conform\".","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_885[] = {"17527","South African Survey Grid zone 27","S. African Grid zone 27","","","Lestho  - east of 26 deg East;  South Africa - 26 to 28 deg East.","9808","0.0","27.0","","","1.0","0.0","0.0","9001","9102","8901","","","","","1996-04-12 00:00:00","","EPSG","Transformation method sometimes described as \"Gauss conform\".","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_886[] = {"17529","South African Survey Grid zone 29","S. African Grid zone 29","","","South Africa - 28 to 30 deg East.","9808","0.0","29.0","","","1.0","0.0","0.0","9001","9102","8901","","","","","1996-04-12 00:00:00","","EPSG","Transformation method sometimes described as \"Gauss conform\".","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_887[] = {"17531","South African Survey Grid zone 31","S. African Grid zone 31","","","South Africa - 30 to 32 deg East;  Swaziland.","9808","0.0","31.0","","","1.0","0.0","0.0","9001","9102","8901","","","","","1996-04-12 00:00:00","","EPSG","Transformation method sometimes described as \"Gauss conform\".","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_888[] = {"17533","South African Survey Grid zone 33","S. African Grid zone 33","","","South Africa - east of 32 deg East.","9808","0.0","33.0","","","1.0","0.0","0.0","9001","9102","8901","","","","","1996-04-12 00:00:00","","EPSG","Transformation method sometimes described as \"Gauss conform\".","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_889[] = {"17611","South West African Survey Grid zone 11","SW African Grid zone 11","","","Namibia - west of 12 deg East.","9808","-22.0","11.0","","","1.0","0.0","0.0","9031","9102","8901","","","","","1997-06-16 00:00:00","Chief Directorate Surveys and Land Information; Mowbray; South Africa.","EPSG","Transformation method sometimes described as \"Gauss conform\".","95.30  96.29  97.16",NULL};
-datafile_rows_t trf_nonpolynomial_row_890[] = {"17613","South West African Survey Grid zone 13","SW African Grid zone 13","","","Namibia - 12 to 14 deg East.","9808","-22.0","13.0","","","1.0","0.0","0.0","9031","9102","8901","","","","","1997-06-16 00:00:00","Chief Directorate Surveys and Land Information; Mowbray; South Africa.","EPSG","Transformation method sometimes described as \"Gauss conform\".","95.30  96.29  97.16",NULL};
-datafile_rows_t trf_nonpolynomial_row_891[] = {"17615","South West African Survey Grid zone 15","SW African Grid zone 15","","","Namibia - 14 to 16 deg East.","9808","-22.0","15.0","","","1.0","0.0","0.0","9031","9102","8901","","","","","1997-06-16 00:00:00","Chief Directorate Surveys and Land Information; Mowbray; South Africa.","EPSG","Transformation method sometimes described as \"Gauss conform\".","95.30  96.29  97.16",NULL};
-datafile_rows_t trf_nonpolynomial_row_892[] = {"17617","South West African Survey Grid zone 17","SW African Grid zone 17","","","Namibia - 16 to 18 deg East.","9808","-22.0","17.0","","","1.0","0.0","0.0","9031","9102","8901","","","","","1997-06-16 00:00:00","Chief Directorate Surveys and Land Information; Mowbray; South Africa.","EPSG","Transformation method sometimes described as \"Gauss conform\".","95.30  96.29  97.16",NULL};
-datafile_rows_t trf_nonpolynomial_row_893[] = {"17619","South West African Survey Grid zone 19","SW African Grid zone 19","","","Namibia - 18 to 20 deg East.","9808","-22.0","19.0","","","1.0","0.0","0.0","9031","9102","8901","","","","","1997-06-16 00:00:00","Chief Directorate Surveys and Land Information; Mowbray; South Africa.","EPSG","Transformation method sometimes described as \"Gauss conform\".","95.30  96.29  97.16",NULL};
-datafile_rows_t trf_nonpolynomial_row_894[] = {"17621","South West African Survey Grid zone 21","SW African Grid zone 21","","","Namibia - 20 to 22 deg East.","9808","-22.0","21.0","","","1.0","0.0","0.0","9031","9102","8901","","","","","1997-06-16 00:00:00","Chief Directorate Surveys and Land Information; Mowbray; South Africa.","EPSG","Transformation method sometimes described as \"Gauss conform\".","95.30  96.29  97.16",NULL};
-datafile_rows_t trf_nonpolynomial_row_895[] = {"17623","South West African Survey Grid zone 23","SW African Grid zone 23","","","Namibia - 22 to 24 deg East.","9808","-22.0","23.0","","","1.0","0.0","0.0","9031","9102","8901","","","","","1997-06-16 00:00:00","Chief Directorate Surveys and Land Information; Mowbray; South Africa.","EPSG","Transformation method sometimes described as \"Gauss conform\".","95.30  96.29  97.16",NULL};
-datafile_rows_t trf_nonpolynomial_row_896[] = {"17625","South West African Survey Grid zone 25","SW African Grid zone 25","","","Namibia - east of 24 deg East.","9808","-22.0","25.0","","","1.0","0.0","0.0","9031","9102","8901","","","","","1997-06-16 00:00:00","Chief Directorate Surveys and Land Information; Mowbray; South Africa.","EPSG","Transformation method sometimes described as \"Gauss conform\".","95.30  96.29  97.16",NULL};
-datafile_rows_t trf_nonpolynomial_row_897[] = {"17700","MTM Quebec zone 2","","","","Canada - Quebec - east of 57 deg East.","9807","0.0","-55.3","","","0.9999","304800.0","0.0","9001","9110","8901","","","","","1997-11-13 00:00:00","Topographic Mapping Section; Quebec Ministry of Natural Resources.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_898[] = {"17701","MTM zone 1","","","","Canada - Newfoundland - east of 54 deg 30 min West.","9807","0.0","-53.0","","","0.9999","304800.0","0.0","9001","9102","8901","","","","","1997-11-13 00:00:00","Geodetic Surveys Section; Newfoundland Department of Government Services and Lands.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_899[] = {"17702","MTM Newfoundland zone 2","MTM zone 2","","","Canada - Newfoundland and Labrador between 57 deg 30 min and 54 de 30 min West.","9807","0.0","-56.0","","","0.9999","304800.0","0.0","9001","9102","8901","","","","","1997-11-13 00:00:00","Geodetic Surveys Section; Newfoundland Department of Government Services and Lands.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_900[] = {"17703","MTM zone 3","","","","Canada - Newfoundland and Labrador between 60 deg and 57 deg 30 min West; Canada - Quebec between 60 deg and 57 deg West.","9807","0.0","-58.3","","","0.9999","304800.0","0.0","9001","9110","8901","","","","","1997-11-13 00:00:00","Topographic Mapping Section; Quebec Ministry of Natural Resources. Also Geodetic Surveys Section; Newfoundland Department of Government Services and Lands.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_901[] = {"17704","MTM zone 4","","","","Canada - Quebec and Newfoundland (Labrador) between 63 deg and 60 deg West.","9807","0.0","-61.3","","","0.9999","304800.0","0.0","9001","9110","8901","","","","","1997-11-13 00:00:00","Topographic Mapping Section; Quebec Ministry of Natural Resources. Also Geodetic Surveys Section; Newfoundland Department of Government Services and Lands.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_902[] = {"17705","MTM zone 5","","","","Canada - Quebec and Newfoundland (Labrador) between 66 deg and 63 deg West.","9807","0.0","-64.3","","","0.9999","304800.0","0.0","9001","9110","8901","","","","","1997-11-13 00:00:00","Topographic Mapping Section; Quebec Ministry of Natural Resources. Also Geodetic Surveys Section; Newfoundland Department of Government Services and Lands.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_903[] = {"17706","MTM zone 6","","","","Canada - Quebec and Newfoundland (Labrador) between 69 deg and  66 deg West.","9807","0.0","-67.3","","","0.9999","304800.0","0.0","9001","9110","8901","","","","","1997-11-13 00:00:00","Topographic Mapping Section; Quebec Ministry of Natural Resources. Also Geodetic Surveys Section; Newfoundland Department of Government Services and Lands.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_904[] = {"17707","MTM zone 7","","","","Canada - Quebec between 72 deg and 69 deg West.","9807","0.0","-70.3","","","0.9999","304800.0","0.0","9001","9110","8901","","","","","1997-11-13 00:00:00","Topographic Mapping Section; Quebec Ministry of Natural Resources.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_905[] = {"17708","MTM zone 8","","","","Canada - Quebec between 75 deg and 72 deg West.; Canada - Ontario - east of 75 deg West.","9807","0.0","-73.3","","","0.9999","304800.0","0.0","9001","9110","8901","","","","","1997-11-13 00:00:00","Surveys and Mapping Section; Ontario Ministry of Transportation.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_906[] = {"17709","MTM zone 9","","","","Canada - Quebec and Ontario - between 78 deg and 75 deg West.","9807","0.0","-76.3","","","0.9999","304800.0","0.0","9001","9110","8901","","","","","1997-11-13 00:00:00","Surveys and Mapping Section; Ontario Ministry of Transportation.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_907[] = {"17710","MTM zone 10","","","","Canada - Quebec west of 78 deg West; Canada - Ontario - between 79 deg 30 min and 78 deg W in area to north of 47 deg N; between 80 deg 15 min and 78 deg W in area between 46 deg and 47 deg N; between 81 deg and 78 deg W in area south of 46 deg N.","9807","0.0","-79.3","","","0.9999","304800.0","0.0","9001","9110","8901","","","","","1997-11-13 00:00:00","Surveys and Mapping Section; Ontario Ministry of Transp [...]
-datafile_rows_t trf_nonpolynomial_row_908[] = {"17711","MTM zone 11","","","","Canada - Ontario - south of 46 deg N and west of 81 deg West.","9807","0.0","-82.3","","","0.9999","304800.0","0.0","9001","9110","8901","","","","","1997-11-13 00:00:00","Surveys and Mapping Section; Ontario Ministry of Transportation.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_909[] = {"17712","MTM zone 12","","","","Canada - Ontario - between 82 deg 30 min and 79 deg 30 min W in area to north of 47 deg N; between 82 deg 30 min and 80 deg 15 min W in area between 46 deg and 47 deg N; between 82 deg 30 min and 79 deg 30 min W in area north of 47 deg N.","9807","0.0","-81.0","","","0.9999","304800.0","0.0","9001","9102","8901","","","","","1997-11-13 00:00:00","Surveys and Mapping Section; Ontario Ministry of Transportation. [...]
-datafile_rows_t trf_nonpolynomial_row_910[] = {"17713","MTM zone 13","","","","Canada - Ontario - between 85 deg 30 min and 82 deg 30 min West and north of 46 deg North.","9807","0.0","-84.0","","","0.9999","304800.0","0.0","9001","9102","8901","","","","","1997-11-13 00:00:00","Surveys and Mapping Section; Ontario Ministry of Transportation.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_911[] = {"17714","MTM zone 14","","","","Canada - Ontario - between 88 deg 30 min and 85 deg 30 min West.","9807","0.0","-87.0","","","0.9999","304800.0","0.0","9001","9102","8901","","","","","1997-11-13 00:00:00","Surveys and Mapping Section; Ontario Ministry of Transportation.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_912[] = {"17715","MTM zone 15","","","","Canada - Ontario - between 91 deg 30 min and 88 deg 30 min West.","9807","0.0","-90.0","","","0.9999","304800.0","0.0","9001","9102","8901","","","","","1997-11-13 00:00:00","Surveys and Mapping Section; Ontario Ministry of Transportation.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_913[] = {"17716","MTM zone 16","","","","Canada - Ontario - between 94 deg 30 min and 91 deg 30 min West.","9807","0.0","-93.0","","","0.9999","304800.0","0.0","9001","9102","8901","","","","","1997-11-13 00:00:00","Surveys and Mapping Section; Ontario Ministry of Transportation.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_914[] = {"17717","MTM zone 17","","","","Canada - Ontario - west of 94 deg 30 min West.","9807","0.0","-96.0","","","0.9999","304800.0","0.0","9001","9102","8901","","","","","1997-11-13 00:00:00","Surveys and Mapping Section; Ontario Ministry of Transportation.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_915[] = {"17794","MTM Nova Scotia zone 4","","","","Canada - Nova Scotia - east of 63 deg West.","9807","0.0","-61.3","","","0.9999","4500000.0","0.0","9001","9110","8901","","","","","1999-05-24 00:00:00","Geomatics Centre; Nova Scotia Ministry of Housing and Municipal Affairs.","EPSG","","99.042",NULL};
-datafile_rows_t trf_nonpolynomial_row_916[] = {"17795","MTM Nova Scotia zone 5","","","","Canada - Nova Scotia - west of 63 deg West.","9807","0.0","-64.3","","","0.9999","5500000.0","0.0","9001","9110","8901","","","","","1999-05-24 00:00:00","Geomatics Centre; Nova Scotia Ministry of Housing and Municipal Affairs.","EPSG","","99.042",NULL};
-datafile_rows_t trf_nonpolynomial_row_917[] = {"17801","Japan Plane Rectangular CS zone I","Japan zone I","","","Japan - Kyushu - Nagasaki-ken; islands of Kagoshima-ken between 27 and 32 deg N and between 128 deg 18 min and 130 deg E (between 128 deg 18 min and 30 deg 13 min E for Amami islands).","9807","33.0","129.3","","","0.9999","0.0","0.0","9001","9110","8901","","","","","1998-12-12 00:00:00","Ministry of Construction; Japan.  http://vldb.gsi-mc.go.jp/sokuchi/datum/image/heichoku2 [...]
-datafile_rows_t trf_nonpolynomial_row_918[] = {"17802","Japan Plane Rectangular CS zone II","Japan zone II","","","Japan - Kyushu - Fukuoka-ken; Saga-ken; Kumamoto-ken; Oita-ken; Miyazaki-ken; Kagoshima-ken (except for area within Japan Plane Rectangular Coordinates System zone I).","9807","33.0","131.0","","","0.9999","0.0","0.0","9001","9110","8901","","","","","1998-12-12 00:00:00","Ministry of Construction; Japan.  http://vldb.gsi-mc.go.jp/sokuchi/datum/image/heichoku2.gif","EPSG","O [...]
-datafile_rows_t trf_nonpolynomial_row_919[] = {"17803","Japan Plane Rectangular CS zone III","Japan zone III","","","Japan - Kyushu - Fukuoka-ken; Saga-ken; Kumamoto-ken; Oita-ken; Miyazaki-ken; Kagoshima-ken (except for area within Japan Plane Rectangular Coordinates System zone I).","9807","36.0","132.1","","","0.9999","0.0","0.0","9001","9110","8901","","","","","1998-12-12 00:00:00","Ministry of Construction; Japan.  http://vldb.gsi-mc.go.jp/sokuchi/datum/image/heichoku2.gif","EPSG", [...]
-datafile_rows_t trf_nonpolynomial_row_920[] = {"17804","Japan Plane Rectangular CS zone IV","Japan zone IV","","","Japan - Kyushu - Fukuoka-ken; Saga-ken; Kumamoto-ken; Oita-ken; Miyazaki-ken; Kagoshima-ken (except for area within Japan Plane Rectangular Coordinates System zone I).","9807","33.0","133.3","","","0.9999","0.0","0.0","9001","9110","8901","","","","","1998-12-12 00:00:00","Ministry of Construction; Japan.  http://vldb.gsi-mc.go.jp/sokuchi/datum/image/heichoku2.gif","EPSG","O [...]
-datafile_rows_t trf_nonpolynomial_row_921[] = {"17805","Japan Plane Rectangular CS zone V","Japan zone V","","","Japan - Kyushu - Fukuoka-ken; Saga-ken; Kumamoto-ken; Oita-ken; Miyazaki-ken; Kagoshima-ken (except for area within Japan Plane Rectangular Coordinates System zone I).","9807","36.0","134.2","","","0.9999","0.0","0.0","9001","9110","8901","","","","","1998-12-12 00:00:00","Ministry of Construction; Japan.  http://vldb.gsi-mc.go.jp/sokuchi/datum/image/heichoku2.gif","EPSG","Ori [...]
-datafile_rows_t trf_nonpolynomial_row_922[] = {"17806","Japan Plane Rectangular CS zone VI","Japan zone VI","","","Japan - Kyushu - Fukuoka-ken; Saga-ken; Kumamoto-ken; Oita-ken; Miyazaki-ken; Kagoshima-ken (except for area within Japan Plane Rectangular Coordinates System zone I).","9807","36.0","136.0","","","0.9999","0.0","0.0","9001","9110","8901","","","","","1998-12-12 00:00:00","Ministry of Construction; Japan.  http://vldb.gsi-mc.go.jp/sokuchi/datum/image/heichoku2.gif","EPSG","O [...]
-datafile_rows_t trf_nonpolynomial_row_923[] = {"17807","Japan Plane Rectangular CS zone VII","Japan zone VII","","","Japan - Kyushu - Fukuoka-ken; Saga-ken; Kumamoto-ken; Oita-ken; Miyazaki-ken; Kagoshima-ken (except for area within Japan Plane Rectangular Coordinates System zone I).","9807","36.0","137.1","","","0.9999","0.0","0.0","9001","9110","8901","","","","","1998-12-12 00:00:00","Ministry of Construction; Japan.  http://vldb.gsi-mc.go.jp/sokuchi/datum/image/heichoku2.gif","EPSG", [...]
-datafile_rows_t trf_nonpolynomial_row_924[] = {"17808","Japan Plane Rectangular CS zone VIII","Japan zone VIII","","","Japan - Kyushu - Fukuoka-ken; Saga-ken; Kumamoto-ken; Oita-ken; Miyazaki-ken; Kagoshima-ken (except for area within Japan Plane Rectangular Coordinates System zone I).","9807","36.0","138.3","","","0.9999","0.0","0.0","9001","9110","8901","","","","","1998-12-12 00:00:00","Ministry of Construction; Japan.  http://vldb.gsi-mc.go.jp/sokuchi/datum/image/heichoku2.gif","EPSG [...]
-datafile_rows_t trf_nonpolynomial_row_925[] = {"17809","Japan Plane Rectangular CS zone IX","Japan zone IX","","","Japan - Kyushu - Fukuoka-ken; Saga-ken; Kumamoto-ken; Oita-ken; Miyazaki-ken; Kagoshima-ken (except for area within Japan Plane Rectangular Coordinates System zone I).","9807","36.0","139.5","","","0.9999","0.0","0.0","9001","9110","8901","","","","","1998-12-12 00:00:00","Ministry of Construction; Japan.  http://vldb.gsi-mc.go.jp/sokuchi/datum/image/heichoku2.gif","EPSG","O [...]
-datafile_rows_t trf_nonpolynomial_row_926[] = {"17810","Japan Plane Rectangular CS zone X","Japan zone X","","","Japan - Kyushu - Fukuoka-ken; Saga-ken; Kumamoto-ken; Oita-ken; Miyazaki-ken; Kagoshima-ken (except for area within Japan Plane Rectangular Coordinates System zone I).","9807","40.0","140.5","","","0.9999","0.0","0.0","9001","9110","8901","","","","","1998-12-12 00:00:00","Ministry of Construction; Japan.  http://vldb.gsi-mc.go.jp/sokuchi/datum/image/heichoku2.gif","EPSG","Ori [...]
-datafile_rows_t trf_nonpolynomial_row_927[] = {"17811","Japan Plane Rectangular CS zone XI","Japan zone XI","","","Japan - Hokkaido west of 141 deg 15 min E approx. - Otaru city; Hakodate city; Date city; Usu-gun and Abuta-gun of Iburi-shicyo; area of Hiyama-shicyo; area of Shiribeshi-shicyo; Oshima-shicyo.","9807","44.0","140.15","","","0.9999","0.0","0.0","9001","9110","8901","","","","","1998-12-12 00:00:00","Ministry of Construction; Japan.  http://vldb.gsi-mc.go.jp/sokuchi/datum/ima [...]
-datafile_rows_t trf_nonpolynomial_row_928[] = {"17812","Japan Plane Rectangular CS zone XII","Japan zone XII","","","Japan - Hokkaido west of 141 deg 15 min E approx. - Otaru city; Hakodate city; Date city; Usu-gun and Abuta-gun of Iburi-shicyo; area of Hiyama-shicyo; area of Shiribeshi-shicyo; Oshima-shicyo.","9807","44.0","142.15","","","0.9999","0.0","0.0","9001","9110","8901","","","","","1998-12-12 00:00:00","Ministry of Construction; Japan.  http://vldb.gsi-mc.go.jp/sokuchi/datum/i [...]
-datafile_rows_t trf_nonpolynomial_row_929[] = {"17813","Japan Plane Rectangular CS zone XIII","Japan zone XIII","","","Japan - Hokkaido west of 141 deg 15 min E approx. - Otaru city; Hakodate city; Date city; Usu-gun and Abuta-gun of Iburi-shicyo; area of Hiyama-shicyo; area of Shiribeshi-shicyo; Oshima-shicyo.","9807","44.0","144.15","","","0.9999","0.0","0.0","9001","9110","8901","","","","","1998-12-12 00:00:00","Ministry of Construction; Japan.  http://vldb.gsi-mc.go.jp/sokuchi/datum [...]
-datafile_rows_t trf_nonpolynomial_row_930[] = {"17814","Japan Plane Rectangular CS zone XIV","Japan zone XIV","","","Japan - Tokyo-to south of 28 deg N & between 140 deg 30 min & 143 deg E.","9807","26.0","142.0","","","0.9999","0.0","0.0","9001","9110","8901","","","","","1998-12-12 00:00:00","Ministry of Construction; Japan.  http://vldb.gsi-mc.go.jp/sokuchi/datum/image/heichoku2.gif","EPSG","Original transformation by Gauss-Kruger formula.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_931[] = {"17815","Japan Plane Rectangular CS zone XV","Japan zone XV","","","Japan - Okinawa-ken between 126 deg &130 deg E.","9807","26.0","127.3","","","0.9999","0.0","0.0","9001","9110","8901","","","","","1998-12-12 00:00:00","Ministry of Construction; Japan.  http://vldb.gsi-mc.go.jp/sokuchi/datum/image/heichoku2.gif","EPSG","Original transformation by Gauss-Kruger formula.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_932[] = {"17816","Japan Plane Rectangular CS zone XVI","Japan zone XVI","","","Japan - Okinawa-ken west of 126 deg E.","9807","26.0","124.0","","","0.9999","0.0","0.0","9001","9110","8901","","","","","1998-12-12 00:00:00","Ministry of Construction; Japan.  http://vldb.gsi-mc.go.jp/sokuchi/datum/image/heichoku2.gif","EPSG","Original transformation by Gauss-Kruger formula.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_933[] = {"17817","Japan Plane Rectangular CS zone XVII","Japan zone XVII","","","Japan - Okinawa-ken east of 130 deg E.","9807","26.0","131.0","","","0.9999","0.0","0.0","9001","9110","8901","","","","","1998-12-12 00:00:00","Ministry of Construction; Japan.  http://vldb.gsi-mc.go.jp/sokuchi/datum/image/heichoku2.gif","EPSG","Original transformation by Gauss-Kruger formula.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_934[] = {"17818","Japan Plane Rectangular CS zone XVIII","Japan zone XVIII","","","Japan - Tokyo-to south of 28 N & west of 140 deg 30 min E.","9807","20.0","136.0","","","0.9999","0.0","0.0","9001","9110","8901","","","","","1998-12-12 00:00:00","Ministry of Construction; Japan.  http://vldb.gsi-mc.go.jp/sokuchi/datum/image/heichoku2.gif","EPSG","Original transformation by Gauss-Kruger formula.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_935[] = {"17819","Japan Plane Rectangular CS zone XIX","Japan zone XIX","","","Japan - Tokyo-to south of 28 N & east of 143 deg E.","9807","26.0","154.0","","","0.9999","0.0","0.0","9001","9110","8901","","","","","1998-12-12 00:00:00","Ministry of Construction; Japan.  http://vldb.gsi-mc.go.jp/sokuchi/datum/image/heichoku2.gif","EPSG","Original transformation by Gauss-Kruger formula.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_936[] = {"18011","Nord Algerie (ancienne)","","","","Algeria north of 38.5g (34 deg 39 min) North.","9801","40.0","3.0","","","0.999625544","500000.0","300000.0","9001","9105","8901","","","","","1996-09-12 00:00:00","","EPSG","Used with Voirol 1875 datum - now superseded.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_937[] = {"18012","Sud Algerie (ancienne)","","","","Algeria 35g to 38.5g (31 deg 30 min to 34 deg 39 min) North.","9801","37.0","3.0","","","0.999625769","500000.0","300000.0","9001","9105","8901","","","","","1996-09-12 00:00:00","","EPSG","Used with Voirol 1875 datum - now superseded.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_938[] = {"18021","Nord Algerie","","","","Algeria north of 38.5g (34 deg 39 min) North.","9801","40.0","3.0","","","0.999625544","500135.0","300090.0","9001","9105","8901","","","","","1996-09-12 00:00:00","","EPSG","Use with Voirol Unifie 1960 datum.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_939[] = {"18022","Sud Algerie","","","","Algeria 35g to 38.5g (31 deg 30 min to 34 deg 39 min) North.","9801","37.0","3.0","","","0.999625769","500135.0","300090.0","9001","9105","8901","","","","","1996-09-12 00:00:00","","EPSG","Use with Voirol Unifie 1960 datum.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_940[] = {"18031","Argentina zone 1","Argentina 1","","","Argentina west of 70 deg 30 min West.","9807","-90.0","-72.0","","","1.0","1500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","Original transformation by Gauss-Kruger formula","95.30",NULL};
-datafile_rows_t trf_nonpolynomial_row_941[] = {"18032","Argentina zone 2","Argentina 2","","","Argentina between 70 deg 30 min and 67 deg 30 min West.","9807","-90.0","-69.0","","","1.0","2500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","Original transformation by Gauss-Kruger formula","95.30",NULL};
-datafile_rows_t trf_nonpolynomial_row_942[] = {"18033","Argentina zone 3","Argentina 3","","","Argentina between 67 deg 30 min and 64 deg 30 min West.","9807","-90.0","-66.0","","","1.0","3500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","Original transformation by Gauss-Kruger formula","95.30",NULL};
-datafile_rows_t trf_nonpolynomial_row_943[] = {"18034","Argentina zone 4","Argentina 4","","","Argentina between 64 deg 30 min and 61 deg 30 min West.","9807","-90.0","-63.0","","","1.0","4500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","Original transformation by Gauss-Kruger formula","95.30",NULL};
-datafile_rows_t trf_nonpolynomial_row_944[] = {"18035","Argentina zone 5","Argentina 5","","","Argentina between 61 deg 30 min and 58 deg 30 min West.","9807","-90.0","-60.0","","","1.0","5500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","Original transformation by Gauss-Kruger formula","95.30",NULL};
-datafile_rows_t trf_nonpolynomial_row_945[] = {"18036","Argentina zone 6","Argentina 6","","","Argentina between 58 deg 30 min and 55 deg 30 min West.","9807","-90.0","-57.0","","","1.0","6500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","Original transformation by Gauss-Kruger formula","95.30",NULL};
-datafile_rows_t trf_nonpolynomial_row_946[] = {"18037","Argentina zone 7","Argentina 7","","","Argentina east of 55 deg 30 min West.","9807","-90.0","-54.0","","","1.0","7500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","Original transformation by Gauss-Kruger formula","95.30",NULL};
-datafile_rows_t trf_nonpolynomial_row_947[] = {"18041","Austria West Zone","","","","Austria west of 11deg 50min East of Greenwich (29deg 30min E of Ferro).","9807","0.0","28.0","","","1.0","0.0","0.0","9001","9102","8909","","","","","1997-04-11 00:00:00","","EPSG","Superseded by M28 (EPSG code 18044).","95.30  96.29  97.01  98.48",NULL};
-datafile_rows_t trf_nonpolynomial_row_948[] = {"18042","Austria Central Zone","","","","Austria between 11deg 50min and 14deg 50min East of Greenwich (29deg 30min and 32deg 30min East of Ferro).","9807","0.0","31.0","","","1.0","0.0","0.0","9001","9102","8909","","","","","1997-04-11 00:00:00","","EPSG","Superseded by M31 (EPSG code 18045).","95.30  96.29  97.01  98.48",NULL};
-datafile_rows_t trf_nonpolynomial_row_949[] = {"18043","Austria East Zone","","","","Austria east of 14deg 50min East of Greenwich (32deg 30min East of Ferro).","9807","0.0","34.0","","","1.0","0.0","0.0","9001","9102","8909","","","","","1997-04-11 00:00:00","","EPSG","Superseded by M34 (EPSG code 18046).","95.30  96.29  97.01  98.48",NULL};
-datafile_rows_t trf_nonpolynomial_row_950[] = {"18044","Austria M28","M28","","","Austria west of 11deg 50min East of Greenwich (29deg 30min E of Ferro).","9807","0.0","10.2","","","1.0","150000.0","0.0","9001","9110","8901","","","","","1999-10-20 00:00:00","Bundesamt f�r Eich- und Vermessungswesen","EPSG","Supersedes Austria West zone (EPSG code 18041).","",NULL};
-datafile_rows_t trf_nonpolynomial_row_951[] = {"18045","Austria M31","M31","","","Austria between 11deg 50min and 14deg 50min East of Greenwich (29deg 30min and 32deg 30min East of Ferro).","9807","0.0","13.2","","","1.0","450000.0","0.0","9001","9110","8901","","","","","1999-10-20 00:00:00","Bundesamt f�r Eich- und Vermessungswesen","EPSG","Supersedes Austria Central zone (EPSG code 18042).","",NULL};
-datafile_rows_t trf_nonpolynomial_row_952[] = {"18046","Austria M34","M34","","","Austria east of 14deg 50min East of Greenwich (32deg 30min East of Ferro).","9807","0.0","16.2","","","1.0","750000.0","0.0","9001","9110","8901","","","","","1999-10-20 00:00:00","Bundesamt f�r Eich- und Vermessungswesen","EPSG","Supersedes Austria East zone (EPSG code 18043).","",NULL};
-datafile_rows_t trf_nonpolynomial_row_953[] = {"18051","Colombia West zone","Colombia 3W","","","Colombia west of 1 deg 30 min W of Bogota (75d 34m 51.30s W of Greenwich).","9807","4.355657","-77.04513","","","1.0","1000000.0","1000000.0","9001","9110","8901","","","","","1997-04-11 00:00:00","","EPSG","Original transformation by Gauss-Kruger formula.  Zone name sometimes referred to as \"6 west\".","95.30  96.29  97.11",NULL};
-datafile_rows_t trf_nonpolynomial_row_954[] = {"18052","Colombia Bogota zone","Colombia Bogota","","","Colombia 1 deg 30 min W to 1 deg 30 min E of Bogota (75d 35m W to 72d 35m W of Greenwich).","9807","4.355657","-74.04513","","","1.0","1000000.0","1000000.0","9001","9110","8901","","","","","1997-04-11 00:00:00","","EPSG","Original transformation by Gauss-Kruger formula","95.30  96.29  97.11",NULL};
-datafile_rows_t trf_nonpolynomial_row_955[] = {"18053","Colombia East Central zone","Colombia 3E","","","Colombia 1 deg 30 min to 4 deg 30 min E of Bogota (72d 35m to 69d 34m W of Greenwich).","9807","4.355657","-71.04513","","","1.0","1000000.0","1000000.0","9001","9110","8901","","","","","1997-04-11 00:00:00","","EPSG","Original transformation by Gauss-Kruger formula.  Zone name sometimes referred to as \"3 east\".","95.30  96.29  97.11",NULL};
-datafile_rows_t trf_nonpolynomial_row_956[] = {"18054","Colombia East zone","Colombia 6E","","","Colombia east of 4 deg 30 min E of Bogota (69d 34m 51.3s W of Greenwich).","9807","4.355657","-68.04513","","","1.0","1000000.0","1000000.0","9001","9110","8901","","","","","1997-04-11 00:00:00","","EPSG","Original transformation by Gauss-Kruger formula.  Zone name sometimes referred to as \"6 east\".","95.30  96.29  97.11",NULL};
-datafile_rows_t trf_nonpolynomial_row_957[] = {"18061","Cuba Norte","","","","Cuba","9801","22.21","-81.0","","","0.99993602","500000.0","280296.016","9001","9110","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_958[] = {"18062","Cuba Sur","","","","Cuba","9801","20.43","-76.5","","","0.99994848","500000.0","229126.939","9001","9110","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_959[] = {"18071","Egypt Blue Belt","Blue Belt","","","Egypt  - Sinai peninsula.","9807","30.0","35.0","","","1.0","300000.0","1100000.0","9001","9102","8901","","","","","1999-04-22 00:00:00","","EPSG","Also known as Green Belt.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_960[] = {"18072","Egypt Red Belt","Red Belt","","","Egypt  east of 29 deg East.","9807","30.0","31.0","","","1.0","615000.0","810000.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.30",NULL};
-datafile_rows_t trf_nonpolynomial_row_961[] = {"18073","Egypt Purple Belt","Purple Belt","","","Egypt  west of 29 deg East; north of approx 28 deg 11 min North.","9807","30.0","27.0","","","1.0","700000.0","200000.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.30",NULL};
-datafile_rows_t trf_nonpolynomial_row_962[] = {"18074","Egypt Extended Purple Belt","Extended Purple Belt","","","Egypt  west of 29 deg East; south of approx 28 deg 11 min North.","9807","30.0","27.0","","","1.0","700000.0","1200000.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.30",NULL};
-datafile_rows_t trf_nonpolynomial_row_963[] = {"18081","France I","","","","France north of 53.5 grads (48 deg 09 min) North.","9801","55.0","0.0","","","0.999877341","600000.0","1200000.0","9001","9105","8903","","","","","1996-09-12 00:00:00","IGN Paris.","EPSG","Introduced 1972. See 18091.","95.26",NULL};
-datafile_rows_t trf_nonpolynomial_row_964[] = {"18082","France II","","","","France 50.5 to 53.5 grads (45 deg 27 min to 48 deg 09 min) North.","9801","52.0","0.0","","","0.99987742","600000.0","2200000.0","9001","9105","8903","","","","","1996-09-12 00:00:00","IGN Paris.","EPSG","Introduced 1972. See 18092.","95.26",NULL};
-datafile_rows_t trf_nonpolynomial_row_965[] = {"18083","France III","","","","France south of 50.5 grads (45 deg 27 min) North.","9801","49.0","0.0","","","0.999877499","600000.0","3200000.0","9001","9105","8903","","","","","1996-09-12 00:00:00","IGN Paris.","EPSG","Introduced 1972. See 18093.","95.26",NULL};
-datafile_rows_t trf_nonpolynomial_row_966[] = {"18084","France IV","","","","France - Corsica.","9801","46.85","0.0","","","0.99994471","234.358","4185861.369","9001","9105","8903","","","","","1996-09-12 00:00:00","IGN Paris.","EPSG","Introduced 1972. See 18094.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_967[] = {"18091","Nord France","","","","France north of 53.5 grads (48 deg 09 min) North.","9801","55.0","0.0","","","0.999877341","600000.0","200000.0","9001","9105","8903","","","","","1996-09-12 00:00:00","IGN Paris.","EPSG","Superseded by 18081 from 1972.","95.26",NULL};
-datafile_rows_t trf_nonpolynomial_row_968[] = {"18092","Centre France","","","","France 50.5 to 53.5 grads (45 deg 27 min to 48 deg 09 min) North.","9801","52.0","0.0","","","0.99987742","600000.0","200000.0","9001","9105","8903","","","","","1996-09-12 00:00:00","IGN Paris.","EPSG","Superseded by 18082 from 1972.","95.26",NULL};
-datafile_rows_t trf_nonpolynomial_row_969[] = {"18093","Sud France","","","","France south of 50.5 grads (45 deg 27 min) North.","9801","49.0","0.0","","","0.999877499","600000.0","200000.0","9001","9105","8903","","","","","1996-09-12 00:00:00","IGN Paris.","EPSG","Superseded by 18083 from 1972.","95.26",NULL};
-datafile_rows_t trf_nonpolynomial_row_970[] = {"18094","Corse","","","","France - Corsica.","9801","46.85","0.0","","","0.99994471","234.358","185861.369","9001","9105","8903","","","","","1996-09-12 00:00:00","IGN Paris.","EPSG","Superseded by 18084 from 1972.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_971[] = {"18101","Germany zone 1","","","","Germany - onshore west of 4 deg 30 min East.","9807","0.0","3.0","","","1.0","1500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","Original transformation by Gauss-Kruger formula","95.30",NULL};
-datafile_rows_t trf_nonpolynomial_row_972[] = {"18102","Germany zone 2","","","","Germany - onshore between 4 deg 30 min and 7 deg 30 min East.","9807","0.0","6.0","","","1.0","2500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","Original transformation by Gauss-Kruger formula","95.30",NULL};
-datafile_rows_t trf_nonpolynomial_row_973[] = {"18103","Germany zone 3","","","","Germany - onshore between 7 deg 30 min and 10 deg 30 min East.","9807","0.0","9.0","","","1.0","3500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","Original transformation by Gauss-Kruger formula","95.30",NULL};
-datafile_rows_t trf_nonpolynomial_row_974[] = {"18104","Germany zone 4","","","","Germany - onshore between 10 deg 30 min and 13 deg 30 min East.","9807","0.0","12.0","","","1.0","4500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","Original transformation by Gauss-Kruger formula","95.30",NULL};
-datafile_rows_t trf_nonpolynomial_row_975[] = {"18105","Germany zone 5","","","","Germany - onshore between 13 deg 30 min and 16 deg 30 min East.","9807","0.0","15.0","","","1.0","5500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","Original transformation by Gauss-Kruger formula","95.30",NULL};
-datafile_rows_t trf_nonpolynomial_row_976[] = {"18110","India zone 0","","","","Pakistan north of 35 deg 35 min North.","9801","39.3","68.0","","","0.99846154","2355500.0","2590000.0","9084","9110","8901","","","","","1999-10-20 00:00:00","US Army Map Service projection tables; 1943.","EPSG","BEWARE !  Different yard to metre conversion values have been used in different parts of south Asia. Some areas have changed conversion value with time.","95.30  96.01  96.02  96.29  97.23",NULL};
-datafile_rows_t trf_nonpolynomial_row_977[] = {"18111","India zone I","","","","India north of 28 deg North. Pakistan 28 deg to 35 deg 35 min North.","9801","32.3","68.0","","","0.99878641","3000000.0","1000000.0","9084","9110","8901","","","","","1999-10-20 00:00:00","US Army Map Service projection tables; 1943.","EPSG","BEWARE !  Different yard to metre conversion values have been used in different parts of south Asia. Some areas have changed conversion value with time.","95.30  96.02  [...]
-datafile_rows_t trf_nonpolynomial_row_978[] = {"18112","India zone IIa","","","","India - between 21 deg and 28 deg North and  west of 82 deg East; Pakistan - south of 28 deg North.","9801","26.0","74.0","","","0.99878641","3000000.0","1000000.0","9084","9102","8901","","","","","1999-10-20 00:00:00","US Army Map Service projection tables; 1943.","EPSG","BEWARE !  Different yard to metre conversion values have been used in different parts of south Asia. Some areas have changed conversion [...]
-datafile_rows_t trf_nonpolynomial_row_979[] = {"18113","India zone IIb","India zone II b","","","Bangladesh; India - north of 21 deg North and east of 82 deg East; Myanmar (Burma) - north of 21 deg North.","9801","26.0","90.0","","","0.99878641","3000000.0","1000000.0","9084","9102","8901","","","","","1999-10-20 00:00:00","US Army Map Service projection tables; 1943.","EPSG","BEWARE !  Different yard to metre conversion values have been used in different parts of south Asia. Some areas  [...]
-datafile_rows_t trf_nonpolynomial_row_980[] = {"18114","India zone IIIa","India zone IIIa","","","India - between 15 deg and 21 deg North.","9801","19.0","80.0","","","0.99878641","3000000.0","1000000.0","9084","9102","8901","","","","","1999-10-20 00:00:00","US Army Map Service projection tables; 1943.","EPSG","BEWARE !  Different yard to metre conversion values have been used in different parts of south Asia. Some areas have changed conversion value with time.","95.28  96.02  97.23",NULL};
-datafile_rows_t trf_nonpolynomial_row_981[] = {"18115","India zone IIIb","","","","Myanmar (Burma) - between 15 deg and 21 deg North.","9801","19.0","100.0","","","0.99878641","3000000.0","1000000.0","9084","9102","8901","","","","","1999-10-20 00:00:00","US Army Map Service projection tables; 1943.","EPSG","BEWARE !  Different yard to metre conversion values have been used in different parts of south Asia. Some areas have changed conversion value with time.","95.28  96.02  97.23",NULL};
-datafile_rows_t trf_nonpolynomial_row_982[] = {"18116","India zone IVa","India zone Iva","","","India - south of 15 deg North.","9801","12.0","80.0","","","0.99878641","3000000.0","1000000.0","9084","9102","8901","","","","","1999-10-20 00:00:00","US Army Map Service projection tables; 1943.","EPSG","BEWARE !  Different yard to metre conversion values have been used in different parts of south Asia. Some areas have changed conversion value with time.","95.28  96.02  97.23",NULL};
-datafile_rows_t trf_nonpolynomial_row_983[] = {"18117","India zone IVb","","","","Myanmar - south of 15 deg North.","9801","12.0","100.0","","","0.99878641","3000000.0","1000000.0","9084","9102","8901","","","","","1999-10-20 00:00:00","US Army Map Service projection tables; 1943.","EPSG","BEWARE !  Different yard to metre conversion values have been used in different parts of south Asia. Some areas have changed conversion value with time.","95.28  96.02  97.23",NULL};
-datafile_rows_t trf_nonpolynomial_row_984[] = {"18121","Italy zone 1","","","","Italy west of 12 deg East (of Greenwich).","9807","0.0","9.0","","","0.9996","1500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","Original transformation by Gauss-Boaga formula","",NULL};
-datafile_rows_t trf_nonpolynomial_row_985[] = {"18122","Italy zone 2","","","","Italy east of 12 deg East (of Greenwich).","9807","0.0","15.0","","","0.9996","2520000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","Original transformation by Gauss-Boaga formula","",NULL};
-datafile_rows_t trf_nonpolynomial_row_986[] = {"18131","Nord Maroc","","","","Morocco north of 35 grads (31 deg 30 min) North.","9801","37.0","-6.0","","","0.999625769","500000.0","300000.0","9001","9105","8901","","","","","1996-09-12 00:00:00","IGN Paris.","EPSG","A projection with the same parameter values used the Lambert Conic Near-Conformal method (EPSG code 9817) prior to 1953.","99.203",NULL};
-datafile_rows_t trf_nonpolynomial_row_987[] = {"18132","Sud Maroc","","","","Morocco 31gr to 35gr  (27 deg 54 min to 31 deg 30 min) North.","9801","33.0","-6.0","","","0.999615596","500000.0","300000.0","9001","9105","8901","","","","","1996-09-12 00:00:00","","EPSG","A projection with the same parameter values used the Lambert Conic Near-Conformal method (EPSG code 9817) prior to 1953.","99.203",NULL};
-datafile_rows_t trf_nonpolynomial_row_988[] = {"18133","Sahara","","","","Morocco south of 31gr  (27 deg 54 min) North.","9801","29.0","-6.0","","","0.9996","1200000.0","400000.0","9001","9105","8901","","","","","1996-09-12 00:00:00","IGN Paris","EPSG","Created in 1977 to cover Sahara Marocain (ex Spanish Sahara)","",NULL};
-datafile_rows_t trf_nonpolynomial_row_989[] = {"18141","New Zealand North Island National Grid","North Island Grid","","","New Zealand - North Island.","9807","-39.0","175.3","","","1.0","300000.0","400000.0","9040","9110","8901","","","","","1999-10-20 00:00:00","","EPSG","Superseded by New Zealand Map Grid.","95.30  96.29  97.231",NULL};
-datafile_rows_t trf_nonpolynomial_row_990[] = {"18142","New Zealand South Island National Grid","South Island Grid","","","New Zealand - South Island.","9807","-44.0","171.3","","","1.0","500000.0","500000.0","9040","9110","8901","","","","","1999-10-20 00:00:00","","EPSG","Superseded by New Zealand Map Grid.","95.30  96.29  97.231",NULL};
-datafile_rows_t trf_nonpolynomial_row_991[] = {"18151","Nigeria West Belt","","","","Nigeria west of 6 deg 30 min East.","9807","4.0","4.3","","","0.99975","230738.26","0.0","9001","9110","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_992[] = {"18152","Nigeria Mid Belt","","","","Nigeria between 6 deg 30 min and 10 deg 30 min East.","9807","4.0","8.3","","","0.99975","670553.98","0.0","9001","9110","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_993[] = {"18153","Nigeria East Belt","","","","Nigeria east of 10 deg 30 min East.","9807","4.0","12.3","","","0.99975","1110369.7","0.0","9001","9110","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_994[] = {"18161","Peru west zone","","","","Peru west of 79 deg West.","9807","-6.0","-80.3","","","0.99983008","222000.0","1426834.743","9001","9110","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_995[] = {"18162","Peru central zone","","","","Peru 79 to 73 deg West.","9807","-9.3","-76.0","","","0.99932994","720000.0","1039979.159","9001","9110","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_996[] = {"18163","Peru east zone","","","","Peru east of 73 deg West.","9807","-9.3","-70.3","","","0.99952992","1324000.0","1040084.558","9001","9110","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_997[] = {"18171","Philippines zone  I","","","","Philippines - west of 118 deg East.","9807","0.0","117.0","","","0.99995","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.30",NULL};
-datafile_rows_t trf_nonpolynomial_row_998[] = {"18172","Philippines zone  II","","","","Philippines - Palawan; Calamian Islands.","9807","0.0","119.0","","","0.99995","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.30",NULL};
-datafile_rows_t trf_nonpolynomial_row_999[] = {"18173","Philippines zone  III","","","","Philippines - Luzon (except SE part); Mindoro.","9807","0.0","121.0","","","0.99995","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.30",NULL};
-datafile_rows_t trf_nonpolynomial_row_1000[] = {"18174","Philippines zone  IV","","","","Philippines - SE Luzon; Tablas; Masbate; Panay; Cebu; Negros; W. Mindanao.","9807","0.0","123.0","","","0.99995","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.30",NULL};
-datafile_rows_t trf_nonpolynomial_row_1001[] = {"18175","Philippines zone  V","","","","Philippines - E. Mindanao; Bohol; Samar.","9807","0.0","125.0","","","0.99995","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.30",NULL};
-datafile_rows_t trf_nonpolynomial_row_1002[] = {"18181","Nord Tunisie","","","","Tunisia north of 38.5 grads (34 deg 39 min) North.","9801","40.0","11.0","","","0.999625544","500000.0","300000.0","9001","9105","8901","","","","","1996-09-12 00:00:00","","EPSG","","95.30",NULL};
-datafile_rows_t trf_nonpolynomial_row_1003[] = {"18182","Sud Tunisie","","","","Tunisia south of 38.5 grads (34 deg 39 min) North.","9801","37.0","11.0","","","0.999625769","500000.0","300000.0","9001","9105","8901","","","","","1996-09-12 00:00:00","","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_1004[] = {"18191","Finland zone 1","","","","Finland - west of 22deg 30min E.","9807","0.0","21.0","","","1.0","1500000.0","0.0","9001","9102","8901","","","","","1997-07-22 00:00:00","www.nls.fi/maa/papers/kkj.html","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_1005[] = {"18192","Finland zone 2","","","","Finland - 22deg 30 min to 25deg 30min E.","9807","0.0","24.0","","","1.0","2500000.0","0.0","9001","9102","8901","","","","","1997-07-22 00:00:00","www.nls.fi/maa/papers/kkj.html","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_1006[] = {"18193","Finland Uniform Coordinate System","Finland zone 3","","","Finland; Finland - 25 deg 30min E to 28deg 30min E.","9807","0.0","27.0","","","1.0","3500000.0","0.0","9001","9102","8901","","","","","1997-07-22 00:00:00","www.nls.fi/maa/papers/kkj.html","EPSG","Used by Uniform Coordinate System over all country and also by zone 3 of Basic Coordinate System at larger scales.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_1007[] = {"18194","Finland zone 4","","","","Finland - east of 28deg 30 min E.","9807","0.0","30.0","","","1.0","4500000.0","0.0","9001","9102","8901","","","","","1997-07-22 00:00:00","www.nls.fi/maa/papers/kkj.html","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_1008[] = {"18201","Palestine Grid","","","","Israel;  Jordan","9806","31.4402749","35.124349","","","","170251.555","126867.909","9001","9110","8901","","","","","1999-04-22 00:00:00","","EPSG","Also encountered as a Transverse Mercator projection with scale factor of 1.  The difference in conversion caused by the change of formula does not exceed 2m within Israel.  Within the State of Israel superseded by the Israeli CS Grid (EPSG code 18203).","",NULL};
-datafile_rows_t trf_nonpolynomial_row_1009[] = {"18202","Palestine Belt","","","","Israel;  Jordan","9807","31.4402749","35.124349","","","1.0","170251.555","1126867.909","9001","9110","8901","","","","","1999-04-22 00:00:00","","EPSG","Originally constructed as the Palestine Grid - EPSG code 18201. Adopted by the US Army Map Service as \"Palestine Belt\" with change of projection method and false northing (FN). Sometimes seen with unchanged FN of 126867.909.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_1010[] = {"18203","Israeli CS","ICS","","","Israel","9806","31.4402749","35.124349","","","","170251.555","1126867.909","9001","9110","8901","","","","","1999-10-20 00:00:00","Survey of Israel   ftp://ftp.rd.soi.gov.il/doc","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_1011[] = {"18204","Israeli TM","ITM","","","Israel","9807","31.4403817","35.1216261","","","1.0000067","219529.584","626907.39","9001","9110","8901","","","","","1999-10-20 00:00:00","Survey of Israel   ftp://ftp.rd.soi.gov.il/doc","EPSG","Designed to approximate Israeli CS grid in north-central Israel.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_1012[] = {"18211","Guatemala Norte","","","","Guatemala north of 15 deg 50 min North.","9801","16.49","-90.2","","","0.99992226","500000.0","292209.579","9001","9110","8901","","","","","1999-08-16 00:00:00","","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_1013[] = {"18212","Guatemala Sud","","","","Guatemala south of 15 deg 50 min North.","9801","14.54","-90.2","","","0.99989906","500000.0","325992.681","9001","9110","8901","","","","","1999-08-16 00:00:00","","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_1014[] = {"18221","NGO zone I","","","","Norway - west of 3deg 30min W of Oslo (7deg 13min 22.5sec E of Greenwich).","9807","58.0","-4.4","","","1.0","0.0","0.0","9001","9110","8913","","","","","1999-10-20 00:00:00","J. Danielsen; \"Transformasjoner ved Norges Geografiske Oppm�ling\"; Kart Og Plan nr 1; 1982.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_1015[] = {"18222","NGO zone II","","","","Norway - between 3deg 30min W and 1deg 10min W of Oslo (7deg 13min 22.5sec E  and 9deg 33min 22.5sec E of Greenwich).","9807","58.0","-2.2","","","1.0","0.0","0.0","9001","9110","8913","","","","","1999-10-20 00:00:00","J. Danielsen; \"Transformasjoner ved Norges Geografiske Oppm�ling\"; Kart Og Plan nr 1; 1982.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_1016[] = {"18223","NGO zone III","","","","Norway - between 1deg 10min W and 1deg 15min E of Oslo (9deg 33min 22.5sec E and 11deg 58min 22.5sec E of Greenwich).","9807","58.0","0.0","","","1.0","0.0","0.0","9001","9110","8913","","","","","1999-10-20 00:00:00","J. Danielsen; \"Transformasjoner ved Norges Geografiske Oppm�ling\"; Kart Og Plan nr 1; 1982.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_1017[] = {"18224","NGO zone IV","","","","Norway - between 1deg 15min E and 4deg 20min E of Oslo (11deg 58min 22.5sec E and 15deg 03min 22.5sec E of Greenwich).","9807","58.0","2.3","","","1.0","0.0","0.0","9001","9110","8913","","","","","1999-10-20 00:00:00","J. Danielsen; \"Transformasjoner ved Norges Geografiske Oppm�ling\"; Kart Og Plan nr 1; 1982.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_1018[] = {"18225","NGO zone V","","","","Norway - between 4deg 20min E and 8deg 10min E of Oslo (15deg 03min 22.5sec E and 18deg 53min 22.5sec E of Greenwich).","9807","58.0","6.1","","","1.0","0.0","0.0","9001","9110","8913","","","","","1999-10-20 00:00:00","J. Danielsen; \"Transformasjoner ved Norges Geografiske Oppm�ling\"; Kart Og Plan nr 1; 1982.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_1019[] = {"18226","NGO zone VI","","","","Norway - between 8deg 10min E and 12deg 10min E of Oslo (18deg 53min 22.5sec E and 22deg 53min 22.5sec E of Greenwich).","9807","58.0","10.1","","","1.0","0.0","0.0","9001","9110","8913","","","","","1999-10-20 00:00:00","J. Danielsen; \"Transformasjoner ved Norges Geografiske Oppm�ling\"; Kart Og Plan nr 1; 1982.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_1020[] = {"18227","NGO zone VII","","","","Norway - between 12deg 10min E and 16deg 15min E of Oslo (22deg 53min 22.5sec E and 26deg 58min 22.5sec E of Greenwich).","9807","58.0","14.1","","","1.0","0.0","0.0","9001","9110","8913","","","","","1999-10-20 00:00:00","J. Danielsen; \"Transformasjoner ved Norges Geografiske Oppm�ling\"; Kart Og Plan nr 1; 1982.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_1021[] = {"18228","NGO zone VIII","","","","Norway - east of 16deg 15min E of Oslo (26deg 58min 22.5sec E of Greenwich).","9807","58.0","18.2","","","1.0","0.0","0.0","9001","9110","8913","","","","","1999-10-20 00:00:00","J. Danielsen; \"Transformasjoner ved Norges Geografiske Oppm�ling\"; Kart Og Plan nr 1; 1982.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_1022[] = {"18231","India zone I (1975 metres)","India zone I","","","India north of 28 deg North.","9801","32.3","68.0","","","0.99878641","2743185.69","914395.23","9001","9110","8901","","","","","1999-10-20 00:00:00","","EPSG","BEWARE !  Different yard to metre conversion values have been used in different parts of south Asia. Some areas have changed conversion value with time.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_1023[] = {"18232","India zone IIa (1975 metres)","India zone II a","","","India - between 21 deg and 28 deg North and  west of 82 deg East.","9801","26.0","74.0","","","0.99878641","2743185.69","914395.23","9001","9102","8901","","","","","1999-10-20 00:00:00","","EPSG","BEWARE !  Different yard to metre conversion values have been used in different parts of south Asia. Some areas have changed conversion value with time.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_1024[] = {"18233","India zone IIIa (1975 metres)","India zone IIIa","","","India - between 15 deg and 21 deg North.","9801","19.0","80.0","","","0.99878641","2743185.69","914395.23","9001","9102","8901","","","","","1999-10-20 00:00:00","","EPSG","BEWARE !  Different yard to metre conversion values have been used in different parts of south Asia. Some areas have changed conversion value with time.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_1025[] = {"18234","India zone IVa (1975 metres)","India zone IV a","","","India - south of 15 deg North.","9801","12.0","80.0","","","0.99878641","2743185.69","914395.23","9001","9102","8901","","","","","1999-10-20 00:00:00","","EPSG","BEWARE !  Different yard to metre conversion values have been used in different parts of south Asia. Some areas have changed conversion value with time.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_1026[] = {"18235","India zone IIb (1975 metres)","India zone II b","","","India - north of 21 deg North and east of 82 deg East.","9801","26.0","90.0","","","0.99878641","2743185.69","914395.23","9001","9102","8901","","","","","1999-10-20 00:00:00","","EPSG","BEWARE !  Different yard to metre conversion values have been used in different parts of south Asia. Some areas have changed conversion value with time.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_1027[] = {"18236","India zone I (1962 metres)","India zone I","","","Pakistan - north of 28 deg North.","9801","32.3","68.0","","","0.99878641","2743196.4","914398.8","9001","9110","8901","","","","","1999-10-20 00:00:00","","EPSG","BEWARE !  Different yard to metre conversion values have been used in different parts of south Asia. Some areas have changed conversion value with time.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_1028[] = {"18237","India zone IIa (1962 metres)","India zone II a","","","Pakistan - south of 28 deg North.","9801","26.0","74.0","","","0.99878641","2743196.4","914398.8","9001","9102","8901","","","","","1999-10-20 00:00:00","","EPSG","BEWARE !  Different yard to metre conversion values have been used in different parts of south Asia. Some areas have changed conversion value with time.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_1029[] = {"18238","India zone IIb (1937 metres)","India zone II b","","","Bangladesh.","9801","26.0","90.0","","","0.99878641","2743195.5","914398.5","9001","9102","8901","","","","","1999-10-20 00:00:00","US Army Map Service projection tables; 1943.","EPSG","BEWARE !  Different yard to metre conversion values have been used in different parts of south Asia. Some areas have changed conversion value with time.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_1030[] = {"19900","Bahrain State Grid","Bahrain Grid","","","Bahrain.","9807","0.0","51.0","","","0.9996","500000.0","0.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.30",NULL};
-datafile_rows_t trf_nonpolynomial_row_1031[] = {"19901","Belge Lambert 50","","","","Belgium - onshore.","9802","90.0","0.0","49.5","51.1","","150000.0","5400000.0","9001","9110","8910","","","","","1999-04-22 00:00:00","\"Systemes de reference et formules de transformation en usage en Belgique\"; IGN Brussels","EPSG","","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_1032[] = {"19902","Belge Lambert 72","","","","Belgium - onshore.","9803","90.0","4.2124983","49.5","51.1","","150000.01256","5400088.4378","9001","9110","8901","","","","","1999-04-22 00:00:00","\"Systemes de reference et formules de transformation en usage en Belgique\"; IGN Brussels","EPSG","Rotation from Belge Lambert 50 to Belge Lambert 72 is +29.2985sec.","95.30  96.29  99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_1033[] = {"19903","Nord de Guerre","","","","France - Alsace.","9801","55.0","6.0","","","0.99950908","500000.0","300000.0","9001","9105","8903","","","","","1996-09-12 00:00:00","","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_1034[] = {"19904","Ghana Metre Grid","","","","Ghana.","9807","4.4","-1.0","","","0.99975","274319.51","0.0","9001","9110","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_1035[] = {"19905","Netherlands East Indies Equatorial Zone","NEIEZ","","","Indonesia.","9804","0.0","110.0","","","0.997","3900000.0","900000.0","9001","9102","8901","","","","","1995-12-02 00:00:00","US Army Map Service projection tables; 1943.","EPSG","","95.30",NULL};
-datafile_rows_t trf_nonpolynomial_row_1036[] = {"19906","Iraq zone","","","","Iran -south of 36 deg North; Iraq;  Kuwait.","9801","32.3","45.0","","","0.99878640776699","1500000.0","1166200.0","9001","9110","8901","","","","","1996-04-12 00:00:00","US Army Map Service projection tables; 1943.","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_1037[] = {"19907","Iraq National Grid","","","","Iraq.","9807","29.0134566","46.3","","","0.9994","800000.0","0.0","9001","9110","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_1038[] = {"19908","Irish National Grid","","","","Ireland - onshore.  United Kingdom (UK) - Northern Ireland onshore.","9807","53.3","-8.0","","","1.000035","200000.0","250000.0","9001","9110","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_1039[] = {"19909","Jamaica (Old Grid)","","","","Jamaica.","9801","18.0","-77.0","","","1.0","550000.0","400000.0","9005","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","Superseded by Jamaica (New Grid).","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_1040[] = {"19910","Jamaica National Grid","","","","Jamaica.","9801","18.0","-77.0","","","1.0","250000.0","150000.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","Supersedes Jamaica (Old Grid).","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_1041[] = {"19911","Laborde Grid","","","","Madagascar.","9815","-21.0","49.0","21.0","21.0","0.9995","400000.0","800000.0","9001","9105","8903","","","","","1997-11-13 00:00:00","","EPSG","Can also use transformation method 9813.","97.613",NULL};
-datafile_rows_t trf_nonpolynomial_row_1042[] = {"19912","Rectified Skew Orthomorphic Borneo Grid","R.S.O. Borneo","","","Brunei;  Malaysia - East Malaysia (Sabah; Sarawak).","9812","4.0","115.0","53.18569537","53.07483685","0.99984","0.0","0.0","9042","9110","8901","","","","","1999-10-20 00:00:00","","EPSG","","95.30  96.29  97.231",NULL};
-datafile_rows_t trf_nonpolynomial_row_1043[] = {"19913","RD Old","","","","Netherlands - onshore.","9809","52.0922178","5.23155","","","0.9999079","0.0","0.0","9001","9110","8901","","","","","1995-12-02 00:00:00","Nederlandse Commissie voor Geodesie publication 30.","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_1044[] = {"19914","RD New","","","","Netherlands - onshore.","9809","52.0922178","5.23155","","","0.9999079","155000.0","463000.0","9001","9110","8901","","","","","1995-12-02 00:00:00","Nederlandse Commissie voor Geodesie publication 30.","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_1045[] = {"19915","Aden Zone","","","","Yemen.","9801","15.0","45.0","","","0.999365678","1500000.0","1000000.0","9001","9102","8901","","","","","1995-12-02 00:00:00","US Army Map Service projection tables; 1943.","EPSG","","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_1046[] = {"19916","British National Grid","","","","United Kingdom (UK) - onshore England; Scotland; Wales; Isle of Man.","9807","49.0","-2.0","","","0.999601272","400000.0","-100000.0","9001","9102","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.30",NULL};
-datafile_rows_t trf_nonpolynomial_row_1047[] = {"19917","New Zealand Map Grid","","","","New Zealand.","9811","-41.0","173.0","","","","2510000.0","6023150.0","9001","9102","8901","","","","","1995-12-02 00:00:00","Dept. of Lands and Surveys Technical Circular 1973/32; 23 Nov 1973.","EPSG","Supersedes North and South Island National Grids.","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_1048[] = {"19919","Qatar National Grid","","","","Qatar.","9807","24.27","51.13","","","0.99999","200000.0","300000.0","9001","9110","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_1049[] = {"19920","Singapore Grid","","","","Singapore.","9806","1.1715528","103.5110808","","","","30000.0","30000.0","9001","9110","8901","","","","","1995-12-02 00:00:00","","EPSG","","95.30  96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_1050[] = {"19921","Spain","","","","Spain.","9801","40.0","0.0","","","0.9988085293","600000.0","600000.0","9001","9102","8905","","","","","1995-12-02 00:00:00","","EPSG","Superseded by UTM","95.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_1051[] = {"19922","Swiss New Grid","LV03","","","Liechtenstein;  Switzerland.","9815","46.570866","7.26225","90.0","90.0","1.0","600000.0","200000.0","9001","9110","8901","","","","","1997-11-13 00:00:00","\"Die Projektionen der schweizerischen Plan- und Kartenwerke\"; J. Bolliger 1967","EPSG","","95.30  96.29  97.27  97.612  97.62",NULL};
-datafile_rows_t trf_nonpolynomial_row_1052[] = {"19923","Swiss Old Grid","LV03C","","","Liechtenstein;  Switzerland.","9815","46.570866","0.0","90.0","90.0","1.0","0.0","0.0","9001","9110","8907","","","","","1997-11-13 00:00:00","\"Die Projektionen der schweizerischen Plan- und Kartenwerke\"; J. Bolliger 1967","EPSG","Superseded by LV03 (19922).","95.30  96.29  97.612  97.62",NULL};
-datafile_rows_t trf_nonpolynomial_row_1053[] = {"19924","Tobago Grid","","","","Trinidad and Tobago - Tobago.","9806","11.1507843","-60.4109632","","","","187500.0","180000.0","9039","9110","8901","","","","","1999-10-20 00:00:00","","EPSG","","95.30  96.29  97.231",NULL};
-datafile_rows_t trf_nonpolynomial_row_1054[] = {"19925","Trinidad Grid","","","","Trinidad and Tobago - Trinidad.","9806","10.263","-61.2","","","","430000.0","325000.0","9039","9110","8901","","","","","1999-10-20 00:00:00","","EPSG","","95.30  96.29  97.231",NULL};
-datafile_rows_t trf_nonpolynomial_row_1055[] = {"19926","Stereo 70","","","","Romania.","9809","46.0","25.0","","","0.99975","500000.0","500000.0","9001","9102","8901","","","","","1996-04-12 00:00:00","","EPSG","Supersedes Stereo 33 (code 19927).","",NULL};
-datafile_rows_t trf_nonpolynomial_row_1056[] = {"19927","Stereo 33","","","","Romania.","9809","45.54","25.23328772","","","0.9996667","500000.0","500000.0","9001","9110","8901","","","","","1996-04-12 00:00:00","","EPSG","Superseded by Stereo 70 (code 19926)","96.29",NULL};
-datafile_rows_t trf_nonpolynomial_row_1057[] = {"19928","Kuwait TM","KTM","","","Kuwait - Kuwait City.","9807","0.0","48.0","","","0.9996","500000.0","0.0","9001","9102","8901","","","","","1996-04-12 00:00:00","","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_1058[] = {"19929","Swedish National Projection","2.5 gon West","","","Sweden.","9807","0.0","15.48298","","","1.0","1500000.0","0.0","9001","9110","8901","","","","","1997-11-13 00:00:00","Lantmateriet of Sweden; private communication.","EPSG","Used since 1938 superseding 6 old zones.  Longitude of natural origin is 2.5 gon west of Stockholm prime meridian; transformation is also known as \"2.5 gon West of old Stockholm observatory\".","96.29  97.39" [...]
-datafile_rows_t trf_nonpolynomial_row_1059[] = {"19930","Greek Grid","","","","Greece","9807","0.0","24.0","","","0.9996","500000.0","0.0","9001","9102","8901","","","","","1997-06-16 00:00:00","Geodesy Department; Public Petroleum Corporation of Greece.","EPSG","Created for use with GGRS87.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_1060[] = {"19931","Egyseges Orszagos Vetuleti","EOV","","","Hungary","9815","47.08398174","19.02548584","90.0","90.0","0.99993","650000.0","200000.0","9001","9110","8901","","","","","1997-07-22 00:00:00","http://lazarus.elte.hu/gb/geodez/geod2.htm","EPSG","EOV = Uniform National Projection","",NULL};
-datafile_rows_t trf_nonpolynomial_row_1061[] = {"19933","Prince Edward Island Stereographic","PEI Stereographic","","","Canada - Prince Edward Island","9809","47.15","-63.0","","","0.999912","700000.0","400000.0","9001","9110","8901","","","","","1997-11-13 00:00:00","Geomatics Centre; Nova Scotia Ministry of Housing and Municipal Affairs.","EPSG","In use from 1979.  To be phased out in late 1990's.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_1062[] = {"19934","Lithuania 1994","","","","Lithuania","9807","0.0","24.0","","","0.9998","500000.0","0.0","9001","9102","8901","","","","","1998-03-12 00:00:00","HNIT-BALTIC GeoInfoServisas","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_1063[] = {"19935","Rectified Skew Orthomorphic Malaya Grid","R.S.O. Malaya","","","Malaysia - West Malaysia","9812","4.0","102.15","323.01328458","323.07483685","0.99984","40000.0","0.0","9062","9110","8901","","","","","1999-10-20 00:00:00","UK Directorate of Overseas Surveys paper","EPSG","","97.231",NULL};
-datafile_rows_t trf_nonpolynomial_row_1064[] = {"19936","Portuguese National Grid","","","","Portugal onshore.","9807","39.4","1.0","","","1.0","200000.0","300000.0","9001","9110","8902","","","","","1998-11-11 00:00:00","","EPSG","Original transformation by Gauss-Kruger formula.","95.30  96.29  98.42",NULL};
-datafile_rows_t trf_nonpolynomial_row_1065[] = {"19937","Tunisia Mining Grid","","","","Tunisia - onshore","9816","38.81973","7.83445","","","","270.0","582.0","9036","9105","8903","","","","","1999-11-15 00:00:00","Mining decree of 1st January 1953","EPSG","Origin: Djebel Kebar","99.81",NULL};
-datafile_rows_t trf_nonpolynomial_row_1066[] = {"19938","Estonian National Grid","","","","Estonia","9802","57.310319415","24.0","59.2","58.0","","500000.0","6375000.0","9001","9110","8901","","","","","1999-04-22 00:00:00","http://www.geo.ut.ee/~raivo/estcoord.html","EPSG","Coordinates at the projection origin match those of TM Baltic 93.","99.28",NULL};
-datafile_rows_t trf_nonpolynomial_row_1067[] = {"19939","TM Baltic 93","","","","Estonia; Latvia; Lithuania.","9807","0.0","24.0","","","0.9996","500000.0","0.0","9001","9102","8901","","","","","1998-12-14 00:00:00","http://www.geo.ut.ee/~raivo/estcoord.html","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_1068[] = {"19940","Levant Zone","","","","Syrian Arab Republic west of 39 deg E.","9817","34.39","37.21","","","0.9996256","300000.0","300000.0","9001","9110","8901","","","","","1999-04-22 00:00:00","US Army Map Service projection tables; 1943.","EPSG","Superseded by projection using full Lambert formula from 1973. (EPSG code 19948).","",NULL};
-datafile_rows_t trf_nonpolynomial_row_1069[] = {"19941","Brazil Polyconic","","","","Brazil","9818","0.0","-54.0","","","","5000000.0","10000000.0","9001","9102","8901","","","","","1999-10-20 00:00:00","PetroBras","EPSG","","99.55",NULL};
-datafile_rows_t trf_nonpolynomial_row_1070[] = {"19942","British West Indies Grid","","","","Windward Islands - Dominica  Grenada  Saint Lucia  Saint Vincent;  Leeward Islands - Anguilla   Antigua (excluding Barbuda)  Montserrat   Saint Kitts and Nevis; Barbados.","9807","0.0","-62.0","","","0.9995","400000.0","0.0","9001","9102","8901","","","","","1999-04-22 00:00:00","UK Royal Engineers projection tables P10/25, 1943.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_1071[] = {"19943","Barbados National Grid","","","","Barbados","9807","13.1035","-59.3335","","","0.9999986","30000.0","75000.0","9001","9110","8901","","","","","1999-04-22 00:00:00","Ordnance Survey of Great Britain","EPSG","Superseded British West Indies Grid (19942) after 1983.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_1072[] = {"19944","Quebec Lambert Projection","","","","Canada - Quebec","9802","44.0","-68.3","60.0","46.0","","0.0","0.0","9001","9110","8901","","","","","1999-10-22 00:00:00","Service de la Cartographie; Minist�re des Ressources Naturelles; Quebec","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_1073[] = {"19945","New Brunswick Stereographic (ATS77)","NB Stereographic ATS77","","","Canada - New Brunswick - onshore","9809","46.3","-66.3","","","0.999912","300000.0","800000.0","9001","9110","8901","","","","","1999-10-20 00:00:00","New Brunswick Geographic Information Corporation land and water information standards manual.","EPSG","In use from 1979.  To be phased out in late 1990's.","99.61",NULL};
-datafile_rows_t trf_nonpolynomial_row_1074[] = {"19946","New Brunswick Stereographic (NAD83)","NB Stereographic NAD83","","","Canada - New Brunswick - onshore","9809","46.3","-66.3","","","0.999912","2500000.0","7500000.0","9001","9110","8901","","","","","1999-10-20 00:00:00","New Brunswick Geographic Information Corporation land and water information standards manual.","EPSG","In use from 1999.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_1075[] = {"19947","Austria Lambert","","","","Austria","9802","13.2","47.3","49.0","46.0","","400000.0","400000.0","9001","9110","8901","","","","","1999-10-20 00:00:00","Bundesamt f�r Eich- und Vermessungswesen","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_1076[] = {"19948","Syria Lambert","","","","Syrian Arab Republic","9801","34.39","37.21","","","0.9996256","300000.0","300000.0","9001","9110","8901","","","","","1999-10-20 00:00:00","IGN Paris","EPSG","Superseded Levant zone (same parameters but using truncated near-conformal method) from 1973.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_1077[] = {"19949","Levant Stereographic","","","","Lebanon","9809","38.0","43.5","","","0.9995341","0.0","0.0","9001","9105","8901","","","","","1999-10-20 00:00:00","IGN Paris","EPSG","Used prior to World War II for cadastral and large scale topographic mapping.","",NULL};
-datafile_rows_t trf_nonpolynomial_row_1078[] = {"19950","Landesvermessung 1995","LV95","","","Liechtenstein;  Switzerland.","9815","46.570866","7.26225","90.0","90.0","1.0","2600000.0","1200000.0","9001","9110","8901","","","","","1999-10-20 00:00:00","Bundesamt f�r Landestopographie.  Aufbau der Landesvermessung der Schweiz 'LV95' Teil 3: Terrestrische Bezugssysteme und Bezugsrahmen. L+T 1999.","EPSG","","",NULL};
-datafile_rows_t trf_nonpolynomial_row_1079[] = {"19951","Nakhl e Taqi Oblique Mercator","Nakhl e Taqi","","","Iran - Taheri refinery site only.","9815","27.31077837","52.3612741","0.34179803","0.34179803","0.999895934","658377.437","3044969.194","9001","9110","8901","","","","","1999-10-20 00:00:00","Total-Fina","EPSG","Used only for terminal site.","",NULL};
-
-datafile_rows_t *trf_nonpolynomial_rows[] = {trf_nonpolynomial_row_1,trf_nonpolynomial_row_2,trf_nonpolynomial_row_3,trf_nonpolynomial_row_4,trf_nonpolynomial_row_5,trf_nonpolynomial_row_6,trf_nonpolynomial_row_7,trf_nonpolynomial_row_8,trf_nonpolynomial_row_9,trf_nonpolynomial_row_10,trf_nonpolynomial_row_11,trf_nonpolynomial_row_12,trf_nonpolynomial_row_13,trf_nonpolynomial_row_14,trf_nonpolynomial_row_15,trf_nonpolynomial_row_16,trf_nonpolynomial_row_17,trf_nonpolynomial_row_18,trf_no [...]
diff --git a/src/tiff/csv/trf_nonpolynomial.csv b/src/tiff/csv/trf_nonpolynomial.csv
deleted file mode 100644
index 53123a9..0000000
--- a/src/tiff/csv/trf_nonpolynomial.csv
+++ /dev/null
@@ -1,1079 +0,0 @@
-"COORD_TRF_CODE","COORD_TRF_EPSG_NAME","COORD_TRF_EPSG_ABBR","COORD_TRF_USER_NAME","DESCRIPTION","AREA_OF_USE","COORD_TRF_METHOD_CODE","PARAMETER_1","PARAMETER_2","PARAMETER_3","PARAMETER_4","PARAMETER_5","PARAMETER_6","PARAMETER_7","UOM_LENGTH_CODE","UOM_ANGLE_CODE","PRIME_MERIDIAN_CODE","UOM_SCALE_CODE","PARAMETER_35","PARAMETER_36","PARAMETER_37","REVISION_DATE","INFORMATION_SOURCE","DATA_SOURCE","REMARKS","CHANGE_ID"
-1100,Adindan to WGS 84 (1),,,,MEAN FOR Ethiopia; Sudan.,9603,-166.0,-15.0,204.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1101,Adindan to WGS 84 (2),,,,Burkina Faso.,9603,-118.0,-14.0,218.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1102,Adindan to WGS 84 (3),,,,Cameroon.,9603,-134.0,-2.0,210.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1103,Adindan to WGS 84 (4),,,,Ethiopia.,9603,-165.0,-11.0,206.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1104,Adindan to WGS 84 (5),,,,Mali.,9603,-123.0,-20.0,220.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1105,Adindan to WGS 84 (6),,,,Senegal.,9603,-128.0,-18.0,224.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1106,Adindan to WGS 84 (7),,,,Sudan.,9603,-161.0,-14.0,205.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1107,Afgooye to WGS 84 (1),,,,Somalia.,9603,-43.0,-163.0,45.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1108,AGD66 to WGS 84 (1),,,,Australia.,9603,-133.0,-48.0,148.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1109,AGD84 to WGS 84 (1),,,,Australia.,9603,-134.0,-48.0,149.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1110,Ain el Abd to WGS 84 (1),,,,Bahrain.,9603,-150.0,-250.0,-1.0,,,,,9001,,,,,,,1997-04-11 00:00:00,U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.,EPSG,,97.06
-1111,Ain el Abd to WGS 84 (2),,,,Saudi Arabia.,9603,-143.0,-236.0,7.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.,EPSG,,
-1112,Amersfoort to WGS 84 (1),,,,Netherlands.,9606,593.16,26.15,478.54,-6.3239,-0.5008,-5.5487,4.0775,9001,9109,,9202,,,,1997-04-11 00:00:00,Nederlandse Commissie voor Geodesie publication 30; 1993.,EPSG,,97.07
-1113,Arc 1950 to WGS 84 (1),,,,MEAN FOR Botswana; Lesotho; Malawi; Swaziland; Zaire; Zambia; Zimbabwe.,9603,-143.0,-90.0,-294.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1114,Arc 1950 to WGS 84 (2),,,,Botswana.,9603,-138.0,-105.0,-289.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1115,Arc 1950 to WGS 84 (3),,,,Burundi.,9603,-153.0,-5.0,-292.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1116,Arc 1950 to WGS 84 (4),,,,Lesotho.,9603,-125.0,-108.0,-295.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1117,Arc 1950 to WGS 84 (5),,,,Malawi.,9603,-161.0,-73.0,-317.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1118,Arc 1950 to WGS 84 (6),,,,Swaziland.,9603,-134.0,-105.0,-295.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1119,Arc 1950 to WGS 84 (7),,,,Zaire.,9603,-169.0,-19.0,-278.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1120,Arc 1950 to WGS 84 (8),,,,Zambia.,9603,-147.0,-74.0,-283.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1121,Arc 1950 to WGS 84 (9),,,,Zimbabwe.,9603,-142.0,-96.0,-293.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1122,Arc 1960 to WGS 84 (1),,,,MEAN FOR Kenya; Tanzania.,9603,-160.0,-6.0,-302.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.,EPSG,,
-1123,Batavia to WGS 84 (1),,,,Indonesia (Sumatra).,9603,-377.0,681.0,-50.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1124,Bermuda 1957 to WGS 84 (1),,,,Bermuda.,9603,-73.0,213.0,296.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1125,Bogota to WGS 84 (1),,,,Colombia.,9603,307.0,304.0,-318.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1126,Bukit Rimpah to WGS 84 (1),,,,Indonesia (Bangka & Belitung Islands).,9603,-384.0,664.0,-48.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1127,Campo Inchauspe to WGS 84 (1),,,,Argentina.,9603,-148.0,136.0,90.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1128,Cape to WGS 84 (1),,,,South Africa.,9603,-136.0,-108.0,-292.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1129,Cape to WGS 84 (2),,,,South Africa.,9603,-134.73,-110.92,-292.66,,,,,9001,,,,,,,1996-10-18 00:00:00,"Private Communication, Directorate of Surveys and Land Information, Cape Town.",EPSG,,
-1130,Carthage to WGS 84 (1),,,,Tunisia.,9603,-263.0,6.0,431.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1131,Chua to WGS 84 (1),,,,Paraguay.,9603,-134.0,229.0,-29.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1132,Corrego Alegre to WGS 84 (1),,,,Brazil.,9603,-206.0,172.0,-6.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1133,ED50 to WGS 84 (1),,,,MEAN FOR Austria; Belgium; Denmark; Finland;  France; Germany (west); Gibraltar; Greece;  Italy; Luxembourg; Netherlands; Norway;  Portugal; Spain; Sweden; Switzerland.,9603,-87.0,-98.0,-121.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,97.02
-1134,ED50 to WGS 84 (2),,,,MEAN FOR Austria; Denmark; France; Germany (west); Netherlands; Switzerland.,9603,-87.0,-96.0,-120.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1135,ED50 to WGS 84 (3),,,,MEAN FOR Iraq; Israel; Jordan; Lebanon;  Kuwait; Saudi Arabia; Syria.,9603,-103.0,-106.0,-141.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.,EPSG,,
-1136,ED50 to WGS 84 (4),,,,Cyprus.,9603,-104.0,-101.0,-140.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1137,ED50 to WGS 84 (5),,,,Egypt.,9603,-130.0,-117.0,-151.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1138,ED50 to WGS 84 (6),,,,Ireland; United Kingdom (UK).,9603,-86.0,-96.0,-120.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1139,ED50 to WGS 84 (7),,,,Finland; Norway.,9603,-87.0,-95.0,-120.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1140,ED50 to WGS 84 (8),,,,Greece.,9603,-84.0,-95.0,-130.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1141,ED50 to WGS 84 (9),,,,Iran.,9603,-117.0,-132.0,-164.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1142,ED50 to WGS 84 (10),,,,Italy (Sardinia).,9603,-97.0,-103.0,-120.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1143,ED50 to WGS 84 (11),,,,Italy (Sicily).,9603,-97.0,-88.0,-135.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1144,ED50 to WGS 84 (12),,,,Malta.,9603,-107.0,-88.0,-149.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.,EPSG,,
-1145,ED50 to WGS 84 (13),,,,Portugal; Spain.,9603,-84.0,-107.0,-120.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.,EPSG,,
-1146,ED87 to WGS 84 (1),,,,Denmark - North Sea;  Germany - North Sea;  Netherlands - offshore;  Norway; United Kingdom (UKCS) - North Sea south of 62 deg N.,9606,-82.981,-99.719,-110.709,-0.5076,0.1503,0.3898,-0.3143,9001,9109,,9202,,,,1997-04-11 00:00:00,"Norwegian Mapping Authority publication 1990:1 and note of 13-Feb-1991 \"Om Transformasjon mellom Geodetiske Datum i Norge\"",EPSG,,97.03  97.04
-1147,ED50 to ED87 (2),,,,Norway - offshore north of 65 deg N.,9606,-1.51,-0.84,-3.5,-1.893,-0.687,-2.764,0.609,9001,9109,,9202,,,,1997-04-11 00:00:00,"Norwegian Mapping Authority note of 13-Feb-1991 \"Om Transformasjon mellom Geodetiske Datum i Norge\"",EPSG,,97.04
-1148,Egypt 1907 to WGS 84 (1),,,,Egypt.,9603,-130.0,110.0,-13.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1149,ETRF89 to WGS 84 (1),,,,Europe.,9603,0.0,0.0,0.0,,,,,9001,,,,,,,1997-06-16 00:00:00,EPSG,EPSG,ETRF89 is a realisation of WGS84 coincident to within 1.5 metres.  This transformation has an accuracy equal to the coincidence figure.,97.24
-1150,GDA94 to WGS 84 (1),,,,Australia.,9603,0.0,0.0,0.0,,,,,9001,,,,,,,1996-10-18 00:00:00,EPSG,EPSG,GDA94 is a realisation of WGS84 coincident to within 1.5 metres.  This transformation has an accuracy equal to the coincidence figure.,
-1151,GD49 to WGS 84 (1),,,,New Zealand.,9603,84.0,-22.0,209.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1152,Hu Tzu Shan to WGS 84 (1),,,,Taiwan.,9603,-637.0,-549.0,-203.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.,EPSG,,
-1153,Indian 1954 to WGS 84 (1),,,,Thailand.,9603,217.0,823.0,299.0,,,,,9001,,,,,,,1997-04-11 00:00:00,U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.,EPSG,,97.06
-1154,Indian 1975 to WGS 84 (1),,,,Thailand.,9603,209.0,818.0,290.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 second edition September 1991,EPSG,,
-1155,Kalianpur 1937 to WGS 84 (1),,,,Bangladesh.,9603,282.0,726.0,254.0,,,,,9001,,,,,,,1999-10-20 00:00:00,U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.,EPSG,,97.235
-1156,Kalianpur 1975 to WGS 84 (1),,,,India; Nepal.,9603,295.0,736.0,257.0,,,,,9001,,,,,,,1999-10-20 00:00:00,U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.,EPSG,Care!  DMA ellipsoid is inconsistent with EPSG ellipsoid - transformation parameter values may not be appropriate.,97.235
-1157,Kandawala to WGS 84 (1),,,,Sri Lanka.,9603,-97.0,787.0,86.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1158,Kertau to WGS 84 (1),,,,Malaysia - West Malaysia; Singapore.,9603,-11.0,851.0,5.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1159,Leigon to WGS 84 (1),,,,Ghana.,9603,-130.0,29.0,364.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.,EPSG,,
-1160,Liberia 1964 to WGS 84 (1),,,,Liberia.,9603,-90.0,40.0,88.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1161,Luzon 1911 to WGS 84 (1),,,,Philippines (excluding Mindanao).,9603,-133.0,-77.0,-51.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1162,Luzon 1911 to WGS 84 (2),,,,Philippines (Mindanao).,9603,-133.0,-79.0,-72.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1163,M'poraloko to WGS 84 (1),,,,Gabon.,9603,-74.0,-130.0,42.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.,EPSG,,
-1164,Mahe 1971 to WGS 84 (1),,,,Seychelles - Mahe Island.,9603,41.0,-220.0,-134.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1165,Massawa to WGS 84 (1),,,,Ethiopia (Eritrea).,9603,639.0,405.0,60.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1166,Merchich to WGS 84 (1),,,,Morocco.,9603,31.0,146.0,47.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1167,Minna to WGS 84 (1),,,,Cameroon.,9603,-81.0,-84.0,115.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.,EPSG,,
-1168,Minna to WGS 84 (2),,,,Nigeria.,9603,-92.0,-93.0,122.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1169,Monte Mario to WGS 84 (1),,,,Italy (Sardinia).,9603,-225.0,-65.0,9.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1170,NAD27 to WGS 84 (1),,,,MEAN FOR Antigua; Barbados; Barbuda;  Caicos Islands; Cuba; Dominican Republic;  Grand Cayman; Jamaica; Turks Islands.,9603,-3.0,142.0,183.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1171,NAD27 to WGS 84 (2),,,,MEAN FOR Belize; Costa Rica; El Salvador;  Guatemala; Honduras; Nicaragua.,9603,0.0,125.0,194.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1172,NAD27 to WGS 84 (3),,,,MEAN FOR Canada.,9603,-10.0,158.0,187.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1173,NAD27 to WGS 84 (4),,,,MEAN FOR United States (USA) (CONUS).,9603,-8.0,160.0,176.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1174,NAD27 to WGS 84 (5),,,,MEAN FOR United States (USA) (CONUS East of Mississippi River  including Louisiana; Missouri; Minnesota).,9603,-9.0,161.0,179.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1175,NAD27 to WGS 84 (6),,,,MEAN FOR United States (USA) (CONUS West of Mississippi River).,9603,-8.0,159.0,175.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1176,NAD27 to WGS 84 (7),,,,United States (USA) - Alaska (Excluding Aleutian Islands).,9603,-5.0,135.0,172.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1177,NAD27 to WGS 84 (8),,,,Bahamas (Except San Salvador Island).,9603,-4.0,154.0,178.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1178,NAD27 to WGS 84 (9),,,,Bahamas (San Salvador Island).,9603,1.0,140.0,165.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1179,NAD27 to WGS 84 (10),,,,Canada (Alberta; British Columbia).,9603,-7.0,162.0,188.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1180,NAD27 to WGS 84 (11),,,,Canada (Manitoba; Ontario).,9603,-9.0,157.0,184.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1181,NAD27 to WGS 84 (12),,,,Canada (New Brunswick; Newfoundland; Nova Scotia; Quebec).,9603,-22.0,160.0,190.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1182,NAD27 to WGS 84 (13),,,,Canada (Northwest Territories; Nunavut; Saskatchewan).,9603,4.0,159.0,188.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1183,NAD27 to WGS 84 (14),,,,Canada (Yukon).,9603,-7.0,139.0,181.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1184,NAD27 to WGS 84 (15),,,,Panama - Canal Zone.,9603,0.0,125.0,201.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1185,NAD27 to WGS 84 (16),,,,Cuba.,9603,-9.0,152.0,178.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1186,NAD27 to WGS 84 (17),,,,Greenland (Hayes Peninsula).,9603,11.0,114.0,195.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1187,NAD27 to WGS 84 (18),,,,Mexico.,9603,-12.0,130.0,190.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1188,NAD83 to WGS 84 (1),,,,Canada; Central America; Mexico; United States (USA) (Alaska (excluding Aleutian Islands); CONUS).,9603,0.0,0.0,0.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.,EPSG,NAD83 is a realisation of WGS84 coincident to within 1.5 metres.  This transformation has an accuracy equal to the coincidence figure.,97.06
-1189,Nahrwan 1967 to WGS 84 (1),,,,Oman (Masirah Island).,9603,-247.0,-148.0,369.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1190,Nahrwan 1967 to WGS 84 (2),,,,Saudi Arabia.,9603,-243.0,-192.0,477.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.,EPSG,,
-1191,Nahrwan 1967 to WGS 84 (3),,,,United Arab Emirates (UAE).,9603,-249.0,-156.0,381.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1192,Naparima 1972 to WGS 84 (1),,,,Trinidad and Tobago.,9603,-10.0,375.0,165.0,,,,,9001,,,,,,,1998-06-30 00:00:00,U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.,EPSG,CAUTION: EPSG believes that these parameter values include a blunder and that if NIMA transformation parameters are to be used the 1987 version (EPSG code 1307) be used.,98.102
-1193,NTF to WGS 84 (1),,,,France.,9603,-168.0,-60.0,320.0,,,,,9001,,,,,,,1996-10-18 00:00:00,IGN technical report RT/G 14; January 1988.,EPSG,,
-1195,OSGB 1936 to WGS 84 (1),,,,MEAN FOR United Kingdom (UK) - Great Britain (England; Scotland; Wales); Isle of Man.,9603,375.0,-111.0,431.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1196,OSGB 1936 to WGS 84 (2),,,,United Kingdom (UK) - England.,9603,371.0,-112.0,434.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1197,OSGB 1936 to WGS 84 (3),,,,United Kingdom (UK) - England; Wales; Isle of Man.,9603,371.0,-111.0,434.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1198,OSGB 1936 to WGS 84 (4),,,,United Kingdom (UK) - Scotland (including Shetland Islands).,9603,384.0,-111.0,425.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1199,OSGB 1936 to WGS 84 (5),,,,United Kingdom (UK) - Wales.,9603,370.0,-108.0,434.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1200,Pointe Noire to WGS 84 (1),,,,Congo.,9603,-148.0,51.0,-291.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.,EPSG,,
-1201,PSAD56 to WGS 84 (1),,,,MEAN FOR Bolivia; Chile; Colombia;  Ecuador; Guyana; Peru; Venezuela.,9603,-288.0,175.0,-376.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1202,PSAD56 to WGS 84 (2),,,,Bolivia.,9603,-270.0,188.0,-388.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1203,PSAD56 to WGS 84 (3),,,,Chile (Northern; near 19 deg S).,9603,-270.0,183.0,-390.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1204,PSAD56 to WGS 84 (4),,,,Chile (Southern; near 43 deg S).,9603,-305.0,243.0,-442.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1205,PSAD56 to WGS 84 (5),,,,Colombia.,9603,-282.0,169.0,-371.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1206,PSAD56 to WGS 84 (6),,,,Ecuador.,9603,-278.0,171.0,-367.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1207,PSAD56 to WGS 84 (7),,,,Guyana.,9603,-298.0,159.0,-369.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1208,PSAD56 to WGS 84 (8),,,,Peru.,9603,-279.0,175.0,-379.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1209,PSAD56 to WGS 84 (9),,,,Venezuela.,9603,-295.0,173.0,-371.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1210,Qatar to WGS 84 (1),,,,Qatar.,9603,-128.0,-283.0,22.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1211,Qornoq to WGS 84 (1),,,,Greenland (South).,9603,164.0,138.0,-189.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1212,SAD69 to WGS 84 (1),,,,MEAN FOR Argentina; Bolivia; Brazil; Chile;  Colombia; Ecuador; Guyana; Paraguay;  Peru; Trinidad & Tobago; Venezuela.,9603,-57.0,1.0,-41.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1213,SAD69 to WGS 84 (2),,,,Argentina.,9603,-62.0,-1.0,-37.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1214,SAD69 to WGS 84 (3),,,,Bolivia.,9603,-61.0,2.0,-48.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1215,SAD69 to WGS 84 (4),,,,Brazil.,9603,-60.0,-2.0,-41.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1216,SAD69 to WGS 84 (5),,,,Chile.,9603,-75.0,-1.0,-44.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1217,SAD69 to WGS 84 (6),,,,Colombia.,9603,-44.0,6.0,-36.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1218,SAD69 to WGS 84 (7),,,,Ecuador.,9603,-48.0,3.0,-44.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1219,SAD69 to WGS 84 (8),,,,Ecuador (Baltra; Galapagos).,9603,-47.0,26.0,-42.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1220,SAD69 to WGS 84 (9),,,,Guyana.,9603,-53.0,3.0,-47.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1221,SAD69 to WGS 84 (10),,,,Paraguay.,9603,-61.0,2.0,-33.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1222,SAD69 to WGS 84 (11),,,,Peru.,9603,-58.0,0.0,-44.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1223,SAD69 to WGS 84 (12),,,,Trinidad and Tobago.,9603,-45.0,12.0,-33.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1224,SAD69 to WGS 84 (13),,,,Venezuela.,9603,-45.0,8.0,-33.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1225,Sapper Hill 1943 to WGS 84 (1),,,,Falkland Islands - East Falkland Island.,9603,-355.0,21.0,72.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.,EPSG,,
-1226,Schwarzeck to WGS 84 (1),,,,Namibia.,9603,616.0,97.0,-251.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1227,Tananarive to WGS 84 (1),,,,Madagascar.,9603,-189.0,-242.0,-91.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1228,Timbalai 1948 to WGS 84 (1),,,,Brunei; Malaysia (Sabah; Sarawak).,9603,-679.0,669.0,-48.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1229,TM65 to WGS 84 (1),,,,Ireland.,9603,506.0,-122.0,611.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1230,Tokyo to WGS 84 (1),,,,MEAN FOR Japan; South Korea; Okinawa.,9603,-148.0,507.0,685.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.,EPSG,,97.06
-1231,Tokyo to WGS 84 (2),,,,Japan.,9603,-148.0,507.0,685.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.,EPSG,,
-1232,Tokyo to WGS 84 (3),,,,South Korea.,9603,-146.0,507.0,687.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.,EPSG,,97.06
-1233,Tokyo to WGS 84 (4),,,,Japan (Okinawa).,9603,-158.0,507.0,676.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.,EPSG,,
-1234,Yacare to WGS 84 (1),,,,Uruguay.,9603,-155.0,171.0,37.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1235,Zanderij to WGS 84 (1),,,,Suriname.,9603,-265.0,120.0,-358.0,,,,,9001,,,,,,,1996-10-18 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,,
-1236,AGD84 to WGS 84 (2),,,,Australia.,9607,-116.0,-50.47,141.69,-0.23,-0.39,-0.344,0.0983,9001,9104,,9202,,,,1997-11-13 00:00:00,Australian Surveying and Land Information Group - www.auslig.gov.au/geodesy,EPSG,Superseded by AGD84 to GDA94 (2) (code 1280).,
-1237,WGS 72 to WGS 84 (1),,,,World.,9606,0.0,0.0,4.5,0.0,0.0,0.554,0.2263,9001,9104,,9202,,,,1996-12-12 00:00:00,,EPSG,,
-1238,WGS 72 to WGS 84 (2),,,,World.,9606,0.0,0.0,4.5,0.0,0.0,0.554,0.219,9001,9104,,9202,,,,1996-12-12 00:00:00,,EPSG,,
-1239,WGS 72BE to WGS 72 (1),,,,World.,9606,0.0,0.0,-2.6,0.0,0.0,0.26,-0.6063,9001,9104,,9202,,,,1996-12-12 00:00:00,,EPSG,,
-1240,WGS 72BE to WGS 84 (1),,,,World.,9606,0.0,0.0,1.9,0.0,0.0,0.814,-0.38,9001,9104,,9202,,,,1996-12-12 00:00:00,,EPSG,,
-1241,NAD27 to NAD83 (1),,,,United States (USA) - lower 48 states including EEZ.,9613,,,,,,,,,9104,,,conus.las,conus.los,,1999-04-22 00:00:00,US Coast & Geodetic Survey  www.ngs.noaa.gov,EPSG,Uses NADCON method which expects longitudes positive west; EPSG GeogCS NAD27 (code 4267) and NAD83 (code 4269) have longitudes positive east.,98.201  98.53
-1243,NAD27 to NAD83 (2),,,,United States (USA) - Alaska including EEZ.,9613,,,,,,,,,9104,,,alaska.las,alaska.los,,1999-04-22 00:00:00,US Coast & Geodetic Survey  www.ngs.noaa.gov,EPSG,Uses NADCON method which expects longitudes positive west; EPSG GeogCS NAD27 (code 4267) and NAD83 (code 4269) have longitudes positive east.,98.201  98.53
-1245,ED50 to WGS 84 (16),,,,Tunisia.,9603,-112.0,-77.0,-145.0,,,,,9001,,,,,,,1998-04-16 00:00:00,U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.,EPSG,,98.11
-1246,Herat North to WGS 84 (1),,,,Afghanistan.,9603,-333.0,-222.0,114.0,,,,,9001,,,,,,,1997-04-11 00:00:00,U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.,EPSG,,
-1247,Kalianpur 1962 to WGS 84 (1),,,,Pakistan.,9603,283.0,682.0,231.0,,,,,9001,,,,,,,1999-10-20 00:00:00,U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.,EPSG,Care!  DMA ellipsoid is inconsistent with EPSG ellipsoid - transformation parameter values may not be appropriate.,97.235
-1248,ID74 to WGS 84 (1),,,,Indonesia.,9603,-24.0,-15.0,5.0,,,,,9001,,,,,,,1997-04-11 00:00:00,U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.,EPSG,,
-1249,NAD27 to WGS 84 (21),,,,United States (USA) - Alaska - Aleutian Islands east of 180 deg.,9603,-2.0,152.0,149.0,,,,,9001,,,,,,,1997-04-11 00:00:00,U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.,EPSG,,
-1250,NAD27 to WGS 84 (22),,,,United States (USA) - Alaska - Aleutian Islands west of 180 deg.,9603,2.0,204.0,105.0,,,,,9001,,,,,,,1997-04-11 00:00:00,U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.,EPSG,,
-1251,NAD83 to WGS 84 (2),,,,United States (USA) - Alaska - Aleutian Islands.,9603,-2.0,0.0,4.0,,,,,9001,,,,,,,1997-04-11 00:00:00,U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.,EPSG,,
-1252,NAD83 to WGS 84 (3),,,,United States (USA) - Hawaii.,9603,1.0,1.0,-1.0,,,,,9001,,,,,,,1997-04-11 00:00:00,U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.,EPSG,,
-1253,Nord Sahara 1959 to WGS 84 (1),,,,Algeria.,9603,-186.0,-93.0,310.0,,,,,9001,,,,,,,1997-04-11 00:00:00,U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.,EPSG,,
-1254,Pulkovo 1942 to WGS 84 (1),,,,Russia.,9603,28.0,-130.0,-95.0,,,,,9001,,,,,,,1997-04-11 00:00:00,U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.,EPSG,,
-1255,Voirol Unifie to WGS 84 (1),,,,Algeria - north of 35g (31 deg 30 min) North.,9603,-123.0,-206.0,219.0,,,,,9001,,,,,,,1998-06-30 00:00:00,U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.,EPSG,CAUTION:   EPSG believes that the data used in the derivation of these parameters contains a blunder.  We recommend using transformation 1253 [North Sahara 1959 to WGS84 (1)] as Voirol 1960 geographical coordinates are the same as Nord Sahara 1959 geogs.,98.15
-1256,Fahud to WGS 84 (1),,,,Oman.,9603,-346.0,-1.0,224.0,,,,,9001,,,,,,,1997-04-11 00:00:00,U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.,EPSG,,
-1257,Bern 1898 (Bern) to Bern 1898,,,,Liechtenstein;  Switzerland.,9601,7.26225,,,,,,,,9110,,,,,,1999-11-12 00:00:00,EPSG,EPSG,Change of prime meridian.,99.79
-1258,Bogota (Bogota) to Bogota,,,,Colombia.,9601,-74.04513,,,,,,,,9110,,,,,,1999-11-12 00:00:00,EPSG,EPSG,Change of prime meridian.,99.79
-1259,Lisbon (Lisbon) to Lisbon,,,,Portugal - onshore.,9601,-9.0754862,,,,,,,,9110,,,,,,1999-11-12 00:00:00,EPSG,EPSG,Change of prime meridian.,99.79
-1260,Makassar (Jakarta) to Makassar,,,,Indonesia - south west Sulawesi.,9601,106.482779,,,,,,,,9110,,,,,,1999-11-12 00:00:00,EPSG,EPSG,Change of prime meridian.,99.79
-1261,MGI (Ferro) to MGI,,,,Austria.,9601,-17.4,,,,,,,,9110,,,,,,1999-11-12 00:00:00,EPSG,EPSG,Change of prime meridian.,99.79
-1262,Monte Mario (Rome) to Monte Mario,,,,Italy.,9601,12.27084,,,,,,,,9110,,,,,,1999-11-12 00:00:00,EPSG,EPSG,Change of prime meridian.,98.37  99.79
-1263,Padang (Jakarta) to Padang,,,,Indonesia - Sumatra.,9601,106.482779,,,,,,,,9110,,,,,,1999-11-12 00:00:00,EPSG,EPSG,Change of prime meridian.,99.79
-1264,Belge 1950 (Brussels) to Belge 1950,,,,Belgium - onshore.,9601,4.220471,,,,,,,,9110,,,,,,1999-11-12 00:00:00,EPSG,EPSG,Change of prime meridian.,99.79
-1265,Tananarive (Paris) to Tananarive,,,,Madagascar.,9601,2.5969213,,,,,,,,9105,,,,,,1999-11-12 00:00:00,EPSG,EPSG,Change of prime meridian.,99.79
-1266,Voirol 1875 (Paris) to Voirol 1875,,,,Algeria - north of 32 deg N.,9601,2.5969213,,,,,,,,9105,,,,,,1999-11-12 00:00:00,EPSG,EPSG,Change of prime meridian.,99.79
-1267,Voirol Unifie (Paris) to Voirol Unifie,,,,Algeria - north of 32 deg N.,9601,2.5969213,,,,,,,,9105,,,,,,1999-11-12 00:00:00,EPSG,EPSG,Change of prime meridian.,99.79
-1268,Batavia (Jakarta) to Batavia,,,,Indonesia - Java.,9601,106.482779,,,,,,,,9110,,,,,,1999-11-12 00:00:00,EPSG,EPSG,Change of prime meridian.,99.79
-1269,RT38 (Stockholm) to RT38,,,,Sweden.,9601,18.03298,,,,,,,,9110,,,,,,1999-11-12 00:00:00,EPSG,EPSG,Change of prime meridian.,99.79
-1270,Greek (Athens) to Greek,,,,Greece - onshore.,9601,23.4258815,,,,,,,,9110,,,,,,1999-11-12 00:00:00,Topography Department; National Technical University of Athens.,EPSG,Change of prime meridian.,99.79
-1271,Schwarzeck to WGS 84 (2),,,,Namibia.,9603,615.64,102.08,-255.81,,,,,9001,,,,,,,1997-11-13 00:00:00,Chief Directorate Surveys and Land Information; Mowbray; South Africa.,EPSG,Beware !   Schwarzeck CS uses German legal metres.  Example:  Schwarzeck Lat 19d 35m 46.952s S Long 20d 41m 50.649s E; X=5623409.40 Y=2124618.00 Z=-2125847.62 GLM; X=5623485.86 Y=2124646.89 Z=-2125876.53 m; WGS84 X=5624101.50 Y=2124748.97 Z=2126132.34 m.,97.48
-1272,GGRS87 to WGS 84 (1),,,,Greece.,9603,-199.87,74.79,246.62,,,,,9001,,,,,,,1997-06-16 00:00:00,Geodesy Department; Public Petroleum Corporation of Greece.,EPSG,,
-1273,HD72 to ETRF89 (1),,,,Hungary.,9607,-56.0,75.77,15.31,-0.37,-0.2,-0.21,-1.01,9001,9104,,9202,,,,1997-11-13 00:00:00,http://lazarus.elte.hu/gb/geodez/geod5.htm,EPSG,,97.47
-1274,Pulkovo 1942 to LKS94(ETRS89) (1),CS42 to LKS94 (1),,,Lithuania.,9607,-40.595,-18.55,-69.339,-2.508,-1.832,2.611,-4.299,9001,9104,,9202,,,,1998-03-12 00:00:00,HNIT-BALTIC GeoInfoServisas.,EPSG,,
-1275,ED50 to WGS 84 (17),,,,France.,9603,-84.0,-97.0,-117.0,,,,,9001,,,,,,,1998-04-16 00:00:00,IGN technical report 14 (January 1988).,EPSG,,98.11
-1276,NTF to ED50 (1),,,,France.,9603,-84.0,37.0,437.0,,,,,9001,,,,,,,1997-11-13 00:00:00,IGN technical report 7 (October 1981).,EPSG,,
-1277,NTF to WGS 72 (1),,,,France.,9603,-168.0,-72.0,314.0,,,,,9001,,,,,,,1997-11-13 00:00:00,IGN technical report 7 (October 1981).,EPSG,,
-1278,AGD66 to GDA94 (1),,,,Australia.,9603,-127.8,-52.3,152.9,,,,,9001,,,,,,,1997-11-13 00:00:00,http://www.anzlic.org.au/icsm/gdatm/molodens.htm,EPSG,5m accuracy.  Parameter values are given to greater precision but no better accuracy at http://www.dehaa.sa.gov.au/res_inform/sicom/where/geobas14.html,
-1279,AGD84 to GDA94 (1),,,,Australia.,9603,-128.5,-53.0,153.4,,,,,9001,,,,,,,1997-11-13 00:00:00,http://www.anzlic.org.au/icsm/gdatm/molodens.htm,EPSG,5m accuracy.  Parameter values are given to greater precision but no better accuracy at http://www.dehaa.sa.gov.au/res_inform/sicom/where/geobas14.html,
-1280,AGD84 to GDA94 (2),,,,Australia.,9607,-117.763,-51.51,139.061,-0.292,-0.443,-0.277,-0.191,9001,9104,,9202,,,,1997-11-13 00:00:00,http://www.anzlic.org.au/icsm/gdatm/simil.htm,EPSG,1m accuracy.  Supersedes AGD84 to WGS 84 (2) (code 1236).,
-1282,Samboja to WGS 84 (1),,,,Indonesia - east Kalimantan - Mahakam delta area.,9603,-404.78,-685.68,-45.47,,,,,9001,,,,,,,1997-11-13 00:00:00,Total Indonesia.,EPSG,Datum shift derived through ITRF93.,
-1283,LKS94(ETRS89) to WGS 84 (1),LKS94 to WGS 84 (1),,,Lithuania.,9603,0.0,0.0,0.0,,,,,9001,,,,,,,1998-03-12 00:00:00,HNIT-BALTIC GeoInfoServisas.,EPSG,LKS94 is a realisation of WGS84 coincident to within 1.5 metres.  This transformation has an accuracy equal to the coincidence figure.,98.13
-1284,Arc 1960 to WGS 84 (2),,,,Kenya.,9603,-157.0,-2.0,-299.0,,,,,9001,,,,,,,1998-03-12 00:00:00,U.S. National Imagery and Mapping Agency  TR8350.2 revision of October 1997; http://164.214.2.59/geospatial/products/GandG/tr83502b/toc.html,EPSG,,
-1285,Arc 1960 to WGS 84 (3),,,,Tanzania.,9603,-175.0,-23.0,-303.0,,,,,9001,,,,,,,1998-03-12 00:00:00,U.S. National Imagery and Mapping Agency  TR8350.2 revision of October 1997; http://164.214.2.59/geospatial/products/GandG/tr83502b/toc.html,EPSG,,
-1286,Segora to WGS 84 (1),,,,Indonesia - Kalimantan.,9603,-403.0,684.0,41.0,,,,,9001,,,,,,,1998-03-12 00:00:00,U.S. National Imagery and Mapping Agency  TR8350.2 revision of October 1997; http://164.214.2.59/geospatial/products/GandG/tr83502b/toc.html,EPSG,,
-1287,Pulkovo 1942 to WGS 84 (3),,,,Hungary.,9603,28.0,-121.0,-77.0,,,,,9001,,,,,,,1998-04-16 00:00:00,U.S. National Imagery and Mapping Agency  TR8350.2 revision of October 1997; http://164.214.2.59/geospatial/products/GandG/tr83502b/toc.html,EPSG,,98.11
-1288,Pulkovo 1942 to WGS 84 (4),,,,Poland.,9603,23.0,-124.0,-82.0,,,,,9001,,,,,,,1998-04-16 00:00:00,U.S. National Imagery and Mapping Agency  TR8350.2 revision of October 1997; http://164.214.2.59/geospatial/products/GandG/tr83502b/toc.html,EPSG,,98.11
-1289,Pulkovo 1942 to WGS 84 (5),,,,Czech Republic.,9603,26.0,-121.0,-78.0,,,,,9001,,,,,,,1998-04-16 00:00:00,U.S. National Imagery and Mapping Agency  TR8350.2 revision of October 1997; http://164.214.2.59/geospatial/products/GandG/tr83502b/toc.html,EPSG,,98.11
-1290,Pulkovo 1942 to WGS 84 (6),,,,Latvia.,9603,24.0,-124.0,-82.0,,,,,9001,,,,,,,1998-04-16 00:00:00,U.S. National Imagery and Mapping Agency  TR8350.2 revision of October 1997; http://164.214.2.59/geospatial/products/GandG/tr83502b/toc.html,EPSG,,98.11
-1291,Pulkovo 1942 to WGS 84 (7),,,,Kazakstan.,9603,15.0,-130.0,-84.0,,,,,9001,,,,,,,1998-04-16 00:00:00,U.S. National Imagery and Mapping Agency  TR8350.2 revision of October 1997; http://164.214.2.59/geospatial/products/GandG/tr83502b/toc.html,EPSG,,98.11
-1292,Pulkovo 1942 to WGS 84 (8),,,,Albania.,9603,24.0,-130.0,-92.0,,,,,9001,,,,,,,1998-04-16 00:00:00,U.S. National Imagery and Mapping Agency  TR8350.2 revision of October 1997; http://164.214.2.59/geospatial/products/GandG/tr83502b/toc.html,EPSG,,98.11
-1293,Pulkovo 1942 to WGS 84 (9),,,,Romania.,9603,28.0,-121.0,-77.0,,,,,9001,,,,,,,1998-04-16 00:00:00,U.S. National Imagery and Mapping Agency  TR8350.2 revision of October 1997; http://164.214.2.59/geospatial/products/GandG/tr83502b/toc.html,EPSG,,98.11
-1294,Voirol 1875 to WGS 84 (1),,,,Algeria - north of 35g (31 deg 30 min) North.,9603,-73.0,-247.0,227.0,,,,,9001,,,,,,,1998-03-12 00:00:00,U.S. Defense Mapping Agency  TR8350.2 revision of August 1993.,EPSG,,
-1295,Naparima 1972 to WGS 84 (2),,,,Trinidad and Tobago.,9603,-0.465,372.095,171.736,,,,,9001,,,,,,,1998-11-11 00:00:00,Trinidad Ministry of Energy and Energy Industries.,EPSG,,98/38
-1296,Trinidad 1903 to WGS 84 (1),,,,Trinidad.,9603,-61.702,284.488,472.052,,,,,9001,,,,,,,1998-11-11 00:00:00,Trinidad Ministry of Energy and Energy Industries.,EPSG,,98/38
-1297,Tete to Moznet (1),,,,Mozambique.,9607,-115.064,-87.39,-101.716,0.058,-4.001,2.062,9.366,9001,9104,,9202,,,,1998-04-16 00:00:00,Direc��o Nacional de Geografia e Cadastral (DINAGECA).,EPSG,Mean of 32 stations. Residuals as high as 30 metres. To reduce the size of the residuals; four regional parameter sets (codes 1298-1301) were developed.,
-1298,Tete to Moznet (2),,,,Mozambique - Maputo province and southern part of Gaza province; i.e. south of approximately 24 deg S.,9607,-82.875,-57.097,-156.768,2.158,-1.524,0.982,-0.359,9001,9104,,9202,,,,1998-04-16 00:00:00,Direc��o Nacional de Geografia e Cadastral (DINAGECA).,EPSG,Mean of 9 stations; residuals are generally under 1 metre.,
-1299,Tete to Moznet (3),,,,Mozambique - provinces of Gaza; Inhambane and southern parts of Sofala and Manhica; i.e. between approximately 24 and 20 deg South.,9607,-138.527,-91.999,-114.591,0.14,-3.363,2.217,11.748,9001,9104,,9202,,,,1998-04-16 00:00:00,Direc��o Nacional de Geografia e Cadastral (DINAGECA).,EPSG,Mean of 6 stations; residuals are generally under 4 metres.,
-1300,Tete to Moznet (4),,,,Mozambique - provinces of Sofala north of Beira corridor; Manhica; Tete and Zambezia; i.e. between approximately 20 and 16 deg South.,9607,-73.472,-51.66,-112.482,-0.953,-4.6,2.368,0.586,9001,9104,,9202,,,,1998-04-16 00:00:00,Direc��o Nacional de Geografia e Cadastral (DINAGECA).,EPSG,Mean of 11 stations; residuals are generally under 3 metres.,
-1301,Tete to Moznet (5),,,,Mozambique - provinces of Nampula; Niassa; Cabo Delgado; i.e. north of approximately 16 deg S.,9607,219.315,168.975,-166.145,-0.198,-5.926,2.356,-57.104,9001,9104,,9202,,,,1998-04-16 00:00:00,Direc��o Nacional de Geografia e Cadastral (DINAGECA).,EPSG,Mean of 7 stations; residuals are 5-10 metres.,
-1302,Moznet to WGS 84 (1),,,,Mozambique.,9607,0.0,0.0,0.0,0.0,0.0,0.0,0.0,9001,9104,,9202,,,,1998-04-16 00:00:00,EPSG,EPSG,For many purposes Moznet can be considered to be coincident with WGS 84. Accuracy better than 1 metre.,
-1303,Pulkovo 1942 to WGS 84 (10),,,,Kazakstan - Caspian.,9606,43.661,-103.342,-124.117,1.659,-0.824,0.653,0.59,9001,9104,,9202,,,,1998-04-16 00:00:00,KazakCaspiShelf consortium.,EPSG,Mean of 13 stations along entire Kazak coastline; residuals under 2 m.,
-1304,Indian 1975 to WGS 84 (2),,,,Thailand.,9603,210.0,814.0,289.0,,,,,9001,,,,,,,1998-04-16 00:00:00,U.S. National Imagery and Mapping Agency  TR8350.2 revision of October 1997; http://164.214.2.59/geospatial/products/GandG/tr83502b/toc.html,EPSG,,
-1305,Tokyo to WGS 84 (5),,,,South Korea.,9603,-147.0,506.0,687.0,,,,,9001,,,,,,,1998-04-16 00:00:00,U.S. National Imagery and Mapping Agency  TR8350.2 revision of October 1997; http://164.214.2.59/geospatial/products/GandG/tr83502b/toc.html,EPSG,,
-1306,MGI to WGS 84 (1),,,,MEAN FOR Boznia and Herzegovina; Croatia; Serbia; Slovenia.,9603,682.0,-203.0,480.0,,,,,9001,,,,,,,1998-04-16 00:00:00,U.S. National Imagery and Mapping Agency  TR8350.2 revision of October 1997; http://164.214.2.59/geospatial/products/GandG/tr83502b/toc.html,EPSG,,
-1307,Naparima 1972 to WGS 84 (3),,,,Trinidad & Tobago.,9603,-2.0,374.0,172.0,,,,,9001,,,,,,,1998-04-16 00:00:00,U.S. Defense Mapping Agency  TR8350.2 December 1987.,EPSG,See remarks for code 1192.,
-1308,NAD83 to WGS 84 (4),,,,United States (USA),9607,-0.9738,1.9453,0.5486,-0.00000013357,-0.00000004872,-0.00000005507,0.0,9001,9101,,9202,,,,1999-04-22 00:00:00, http://www.ngs.noaa.gov/CORS/Derivation.html,EPSG,Strictly between NAD83 and ITRF94(1996.0).  Superseded by NAD83 to WGS 84 (5) (code 1515).,99.12  99.38
-1309,DHDN to ETRF89 (1),,,,Germany - former west Germany.,9607,582.0,105.0,414.0,-1.04,-0.35,3.08,8.3,9001,9104,,9202,,,,1998-06-30 00:00:00,Institute for Cartography and Geodesy; Leipzig.,EPSG,Mean of 69 stations; residuals under 5 m.,
-1310,Pulkovo 1942 to ETRF89 (1),,,,Germany - former east Germany - Brandenburg; Mecklenburg-Vorpommern; Sachsen-Anhalt.,9607,24.0,-123.0,-94.0,-0.02,0.25,0.13,1.1,9001,9104,,9202,,,,1998-06-30 00:00:00,Institute for Cartography and Geodesy; Leipzig.,EPSG,Mean of 20 stations; residuals under 2 m.,
-1311,ED50 to WGS 84 (Common Offshore),ED50 to WGS 84 (18),,,United Kingdom - UKCS offshore east of 6 deg west.,9606,-89.5,-93.8,-123.1,0.0,0.0,-0.156,1.2,9001,9104,,9202,,,,1998-06-30 00:00:00,The Hydrographic Journal; vol 52 page 50.,EPSG,Recommended transformation for UKCS petroleum purposes.  Based on ED50 to WGS72 (precise ephemeris) 6-nations agreement of 1981 to which precise to broadcast and broadcast to WGS 84 transformations have been concatenated.,98.27
-1312,NAD27 to NAD83 (3),,,,Canada.,9614,,,,,,,,,9104,,,NTv1_0.gsb,,,1999-04-22 00:00:00,Geomatics Canada - Geodetic Survey Division.,EPSG,Uses NTv1 method.  Superseded in 1997 by NTv2 (non-poly transformation code 1313) except in Quebec.   Input expects longitudes to be positive west; EPSG GeogCS NAD27 (code 4267) and NAD83 (code 4269) have longitudes positive east.,
-1313,NAD27 to NAD83 (4),,,,Canada.,9615,,,,,,,,,9104,,,NTv2_0.gsb,,,1999-04-22 00:00:00,http://www.geod.nrcan.gc.ca/products/html-public/GSDapps/English/NTv2_Fact_Sheet.html,EPSG,Uses NTv2 data files.  Supersedes  NTv1 (non-poly transformation code 1312) except in Quebec.  Input expects longitudes to be positive west; EPSG GeogCS NAD27 (code 4267) and (code 4269) have longitudes positive east.,
-1314,OSGB 1936 to WGS 84 (Petroleum),,,,United Kingdom (UKCS) - Great Britain (GB) - England; Scotland; Wales; - North Sea.,9606,446.448,-125.157,542.06,0.15,0.247,0.842,-20.489,9001,9104,,9202,,,,1998-11-11 00:00:00,UK Offshore Operators Association.,EPSG,Accuracy better than 4m and generally better than 2m.  For a more accurate transformation contact the Ordnance Survey of Great Britain.,
-1315,OSGB 1936 to ED50 (UKOOA),,,,United Kingdom (UKCS) - Great Britain (GB) - England; Scotland; Wales; - North Sea.,9606,535.948,-31.357,665.16,0.15,0.247,0.998,-21.689,9001,9104,,9202,,,,1998-11-11 00:00:00,UK Offshore Operators Association.,EPSG,This transformation is concatenated from OSGB36 to WGS 84 (Petroleum) (code 1314) minus ED50 to WGS 84 (Common Offshore) (code 1311).,
-1316,Manoca to WGS 84 (1),,,,Cameroon.,9603,-70.9,-151.8,-41.4,,,,,9001,,,,,,,1998-11-11 00:00:00,Stolt Comex Seaway and Geoid for Elf.,EPSG,,
-1317,Camacupa to WGS 72BE (1),,,,Angola - offshore.,9603,-37.2,-370.6,-228.5,,,,,9001,,,,,,,1998-11-11 00:00:00,EPSG,EPSG,Derived by Geophysical Services Inc. in 1979 from mean of Transit results at 7 stations.,
-1318,Camacupa to WGS 84 (1),,,,Angola - offshore block 5.,9603,-42.01,-332.21,-229.75,,,,,9001,,,,,,,1998-11-11 00:00:00,EPSG,EPSG,Used by Conoco.,
-1319,Camacupa to WGS 84 (2),,,,Angola - offshore block 2.,9603,-40.0,-354.0,-224.0,,,,,9001,,,,,,,1998-11-11 00:00:00,EPSG,EPSG,Used by Texaco.,
-1320,Camacupa to WGS 84 (3),,,,Angola - offshore blocks 1 and 16.,9606,-37.2,-370.6,-224.0,0.0,0.0,0.554,0.219,9001,9104,8901,9202,,,,1998-12-14 00:00:00,EPSG,EPSG,Used by Shell prior to 1994.  Superseded by Camacupa to WGS 84 (9).,98.56
-1321,Camacupa to WGS 84 (4),,,,Angola - offshore blocks 7 and 8.  Also used rounded to integer metre for GSI/HGS/Western Geophysical speculative seismic data.,9603,-42.5,-342.5,-228.1,,,,,9001,,,,,,,1998-11-11 00:00:00,EPSG,EPSG,Derived as mean of 123 Transit passes at station Cabo Ledo NE base in January 1989.  Used by Total for block 8. Used by Elf for block 7 up to December 1992 then superseded by Camacupa to WGS 84 (7).,
-1322,Camacupa to WGS 84 (5),,,,Angola - offshore block 3.,9603,-55.5,-348.0,-229.2,,,,,9001,,,,,,,1998-11-11 00:00:00,EPSG,EPSG,Derived at station Djeno during coordination of platform PAL F2 in February 1992. Used by Elf for block 3 up to December 1992 then superseded by Camacupa to WGS 84 (7).,
-1323,Camacupa to WGS 84 (6),,,,Angola - offshore block 7.,9603,-43.0,-337.0,-233.0,,,,,9001,,,,,,,1998-11-11 00:00:00,EPSG,EPSG,Derived at Luanda observatory December 1992.  Used by Elf for 1993 block 7 shallow water survey.,
-1324,Camacupa to WGS 84 (7),,,,Angola - offshore blocks 3  7  15 and 17.,9603,-48.0,-345.0,-231.0,,,,,9001,,,,,,,1998-11-11 00:00:00,EPSG,EPSG,"Derived at platform PAL F2 in December 1992.  Used by Elf for blocks 3, 7 and 17 between December 1992 and 1994 then superseded by Camacupa to WGS 84 (10).  Used by Exxon for block 15 since 1993.",
-1325,Camacupa to WGS 84 (8),,,,Angola - offshore block 2.,9603,-48.6,-345.1,-230.8,,,,,9001,,,,,,,1998-11-11 00:00:00,EPSG,EPSG,Derived at platform PAL F2 in December 1992. Used by Total for block 2 between December 1992 and 1994 then superseded by Camacupa to WGS 84 (10).,
-1326,Camacupa to WGS 84 (9),,,,Angola - offshore blocks 1 16 and 18.,9606,-41.057,-374.564,-226.287,0.0,0.0,0.554,0.219,9001,9104,8901,9202,,,,1998-12-14 00:00:00,EPSG,EPSG,Used by Shell since 1994.  Supersedes Camacupa to WGS 84 (3).,98.56
-1327,Camacupa to WGS 84 (10),,,,Angola - offshore blocks 2  3 17 and 31-33.,9603,-50.9,-347.6,-231.0,,,,,9001,,,,,,,1998-11-11 00:00:00,EPSG,EPSG,Derived at platform PAL F2 in 1994 by Topnav using Doris.  Used by Elf in blocks 3 and 17 since 1994.  Used by Total in block 2 since 1994. Adopted by BP-Amoco Elf and Exxon for blocks 31-33.,
-1328,Malongo 1987 to Mhast (1),,,,Angola - Cabinda offshore.,9603,0.0,0.0,0.0,,,,,9001,,,,,,,1998-11-11 00:00:00,EPSG,EPSG,Malongo 1987 is an offshore extension of Mhast adopted by Chevron in 1987.,
-1329,Mhast to WGS 84 (1),,,,Angola - Cabinda offshore.,9603,-252.95,-4.11,-96.38,,,,,9001,,,,,,,1998-11-11 00:00:00,EPSG,EPSG,,
-1330,Malongo 1987 to WGS 84 (1),,,,Angola - Cabinda offshore.,9603,-252.95,-4.11,-96.38,,,,,9001,,,,,,,1998-11-11 00:00:00,EPSG,EPSG,Used by Chevron.,
-1331,EST92 to ETRF89 (1),,,,Estonia,9607,0.0,0.0,0.0,0.0,0.0,0.0,0.0,9001,9104,,9202,,,,1998-12-14 00:00:00,http://www.geo.ut.ee/~raivo/estcoord.html,EPSG,,
-1332,Pulkovo 1942 to EST92 (1),,,,Estonia.,9607,21.53219,-97.00027,-60.74046,-0.99548,-0.58147,-0.2418,-4.5981,9001,9104,,9202,,,,1998-12-14 00:00:00,http://www.geo.ut.ee/~raivo/estcoord.html,EPSG,,
-1333,EST92 to WGS84 (1),,,,Estonia.,9607,0.055,-0.541,-0.185,-0.0183,0.0003,0.007,-0.014,9001,9104,,9202,,,,1998-12-14 00:00:00,http://www.geo.ut.ee/~raivo/estcoord.html,EPSG,,
-1334,Pulkovo 1942 to WGS84 (12),,,,Estonia.,9607,21.58719,-97.54127,-60.92546,-1.01378,-0.58117,-0.2348,-4.6121,9001,9104,,9202,,,,1998-12-14 00:00:00,http://www.geo.ut.ee/~raivo/estcoord.html,EPSG,,
-1335,Tokyo to WGS 84 (6),,,,Japan - 45d 20m to 46d N; 141d to 142d E.,9618,7.92,-13.88,26.1,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1336,Tokyo to WGS 84 (7),,,,Japan - 45d 20m to 46d N; 142d to 143d E.,9618,7.94,-13.97,26.9,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1337,Tokyo to WGS 84 (8),,,,Japan - 44deg 40min to 45deg 20min N; 141deg to 142deg E.,9618,8.1,-13.81,27.2,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1338,Tokyo to WGS 84 (9),,,,Japan - 44deg 40min to 45deg 20min N; 142deg to 143deg E.,9618,8.15,-13.95,28.4,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1339,Tokyo to WGS 84 (10),,,,Japan - 44deg to 44deg 40min N; 141deg to 142deg E.,9618,8.37,-13.65,29.0,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1340,Tokyo to WGS 84 (11),,,,Japan - 44deg to 44deg 40min N; 142deg to 143deg E.,9618,8.44,-13.87,30.9,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1341,Tokyo to WGS 84 (12),,,,Japan - 44deg to 44deg 40min N; 143deg to 144deg E.,9618,8.61,-14.08,30.7,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1342,Tokyo to WGS 84 (13),,,,Japan - 44deg to 44deg 40min N; 144deg to 145deg E.,9618,8.73,-14.3,30.9,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1343,Tokyo to WGS 84 (14),,,,Japan - 43deg 20min to 44deg N; 141deg to 142deg E.,9618,8.63,-13.49,30.9,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1344,Tokyo to WGS 84 (15),,,,Japan - 43deg 20min to 44deg N; 142deg to 143deg E.,9618,8.71,-13.73,31.6,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1345,Tokyo to WGS 84 (16),,,,Japan - 43deg 20min to 44deg N; 143deg to 144deg E.,9618,8.84,-14.03,31.2,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1346,Tokyo to WGS 84 (17),,,,Japan - 43deg 20min to 44deg N; 144deg to 145deg E.,9618,8.98,-14.33,32.5,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1347,Tokyo to WGS 84 (18),,,,Japan - 43deg 20min to 44deg N; 145deg to 146deg E.,9618,9.1,-14.56,32.6,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1348,Tokyo to WGS 84 (19),,,,Japan - 42deg 40min to 43deg 20min N; 140deg to 141deg E.,9618,8.79,-13.0,33.3,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1349,Tokyo to WGS 84 (20),,,,Japan - 42deg 40min to 43deg 20min N; 141deg to 142deg E.,9618,8.84,-13.31,31.4,,,,,9001,9104,,,,,,1999-11-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,99.77
-1350,Tokyo to WGS 84 (21),,,,Japan - 42deg 40min to 43deg 20min N; 142deg to 143deg E.,9618,8.98,-13.59,30.9,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1351,Tokyo to WGS 84 (22),,,,Japan - 42deg 40min to 43deg 20min N; 143deg to 144deg E.,9618,9.1,-13.91,29.3,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1352,Tokyo to WGS 84 (23),,,,Japan - 42deg 40min to 43deg 20min N; 144deg to 145deg E.,9618,9.17,-14.27,31.3,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1353,Tokyo to WGS 84 (24),,,,Japan - 42deg 40min to 43deg 20min N; 145deg to 146deg E.,9618,9.23,-14.52,31.4,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1354,Tokyo to WGS 84 (25),,,,Japan - 42deg to 42deg 40min N; 139deg to 140deg E.,9618,8.9,-12.68,34.4,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1355,Tokyo to WGS 84 (26),,,,Japan - 42deg to 42deg 40min N; 140deg to 141deg E.,9618,8.99,-12.8,34.2,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1356,Tokyo to WGS 84 (27),,,,Japan - 42deg to 42deg 40min N; 141deg to 142deg E.,9618,9.0,-13.07,31.7,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1357,Tokyo to WGS 84 (28),,,,Japan - 42deg to 42deg 40min N; 142deg to 143deg E.,9618,9.21,-13.51,27.5,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1358,Tokyo to WGS 84 (29),,,,Japan - 42deg to 42deg 40min N; 143deg to 144deg E.,9618,9.33,-13.66,23.8,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1359,Tokyo to WGS 84 (30),,,,Japan - 41deg 20min to 42deg N; 140deg to 141deg E.,9618,9.25,-12.72,34.2,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1360,Tokyo to WGS 84 (31),,,,Japan - 41deg 20min to 42deg N; 141deg to 142deg E.,9618,9.39,-12.91,31.8,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1361,Tokyo to WGS 84 (32),,,,Japan - 40deg 40min to 41deg 20min N; 140deg to 141deg E.,9618,9.55,-12.63,35.6,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1362,Tokyo to WGS 84 (33),,,,Japan - 40deg 40min to 41deg 20min N; 141deg to 142deg E.,9618,9.62,-12.82,34.7,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1363,Tokyo to WGS 84 (34),,,,Japan - 40deg to 40deg 40min N; 139deg to 140deg E.,9618,9.81,-12.29,36.6,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1364,Tokyo to WGS 84 (35),,,,Japan - 40deg to 40deg 40min N; 140deg to 141deg E.,9618,9.81,-12.45,37.5,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1365,Tokyo to WGS 84 (36),,,,Japan - 40deg to 40deg 40min N; 141deg to 142deg E.,9618,9.92,-12.79,38.3,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1366,Tokyo to WGS 84 (37),,,,Japan - 39deg 20min to 40deg N; 139deg to 140deg E.,9618,9.91,-12.21,36.6,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1367,Tokyo to WGS 84 (38),,,,Japan - 39deg 20min to 40deg N; 140deg to 141deg E.,9618,10.08,-12.35,39.0,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1368,Tokyo to WGS 84 (39),,,,Japan - 39deg 20min to 40deg N; 141deg to 142deg E.,9618,10.19,-12.74,40.3,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1369,Tokyo to WGS 84 (40),,,,Japan - 38deg 40min to 39deg 20min N; 139deg to 140deg E.,9618,10.29,-12.13,38.5,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1370,Tokyo to WGS 84 (41),,,,Japan - 38deg 40min to 39deg 20min N; 140deg to 141deg E.,9618,10.33,-12.27,40.1,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1371,Tokyo to WGS 84 (42),,,,Japan - 38deg 40min to 39deg 20min N; 141deg to 142deg E.,9618,10.45,-12.61,41.7,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1372,Tokyo to WGS 84 (43),,,,Japan - 38deg to 38deg 40min N; 139deg to 140deg E.,9618,10.54,-11.96,39.1,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1373,Tokyo to WGS 84 (44),,,,Japan - 38deg to 38deg 40min N; 140deg to 141deg E.,9618,10.65,-12.27,41.7,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1374,Tokyo to WGS 84 (45),,,,Japan - 38deg to 38deg 40min N; 141deg to 142deg E.,9618,10.67,-12.5,41.1,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1375,Tokyo to WGS 84 (46),,,,Japan - 37deg 20min to 38deg N; 136deg to 137deg E.,9618,10.67,-10.86,38.5,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1376,Tokyo to WGS 84 (47),,,,Japan - 37deg 20min to 38deg N; 137deg to 138deg E.,9618,10.68,-10.97,36.0,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1377,Tokyo to WGS 84 (48),,,,Japan - 37deg 20min to 38deg N; 138deg to 139deg E.,9618,10.8,-11.53,39.7,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1378,Tokyo to WGS 84 (49),,,,Japan - 37deg 20min to 38deg N; 139deg to 140deg E.,9618,10.8,-11.73,40.9,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1379,Tokyo to WGS 84 (50),,,,Japan - 37deg 20min to 38deg N; 140deg to 141deg E.,9618,10.92,-12.16,42.3,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1380,Tokyo to WGS 84 (51),,,,Japan - 37deg 20min to 38deg N; 141deg to 142deg E.,9618,11.0,-12.25,41.2,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1381,Tokyo to WGS 84 (52),,,,Japan - 36deg 40min to 37deg 20min N; 136deg to 137deg E.,9618,10.83,-10.77,36.2,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1382,Tokyo to WGS 84 (53),,,,Japan - 36deg 40min to 37deg 20min N; 137deg to 138deg E.,9618,10.95,-11.0,38.7,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1383,Tokyo to WGS 84 (54),,,,Japan - 36deg 40min to 37deg 20min N; 138deg to 139deg E.,9618,10.97,-11.34,40.8,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1384,Tokyo to WGS 84 (55),,,,Japan - 36deg 40min to 37deg 20min N; 139deg to 140deg E.,9618,11.04,-11.69,43.3,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1385,Tokyo to WGS 84 (56),,,,Japan - 36deg 40min to 37deg 20min N; 140deg to 141deg E.,9618,11.17,-12.05,42.6,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1386,Tokyo to WGS 84 (57),,,,Japan - 36deg to 37deg 40min N; 136deg to 137deg E.,9618,11.11,-10.59,37.3,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1387,Tokyo to WGS 84 (58),,,,Japan - 36deg to 37deg 40min N; 137deg to 138deg E.,9618,11.16,-10.97,40.3,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1388,Tokyo to WGS 84 (59),,,,Japan - 36deg to 37deg 40min N; 138deg to 139deg E.,9618,11.29,-11.23,42.4,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1389,Tokyo to WGS 84 (60),,,,Japan - 36deg to 37deg 40min N; 139deg to 140deg E.,9618,11.36,-11.59,42.5,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1390,Tokyo to WGS 84 (61),,,,Japan - 36deg to 37deg 40min N; 140deg to 141deg E.,9618,11.44,-11.88,40.3,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1391,Tokyo to WGS 84 (62),,,,Japan - 35deg 20min to 36deg N; 132deg to 133deg E.,9618,11.27,-9.31,30.9,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1392,Tokyo to WGS 84 (63),,,,Japan - 35deg 20min to 36deg N; 133deg to 134deg E.,9618,11.33,-9.52,33.8,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1393,Tokyo to WGS 84 (64),,,,Japan - 35deg 20min to 36deg N; 134deg to 135deg E.,9618,11.38,-9.86,34.9,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1394,Tokyo to WGS 84 (65),,,,Japan - 35deg 20min to 36deg N; 135deg to 136deg E.,9618,11.41,-10.14,35.7,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1395,Tokyo to WGS 84 (66),,,,Japan - 35deg 20min to 36deg N; 136deg to 137deg E.,9618,11.39,-10.52,37.5,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1396,Tokyo to WGS 84 (67),,,,Japan - 35deg 20min to 36deg N; 137deg to 138deg E.,9618,11.49,-10.83,39.3,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1397,Tokyo to WGS 84 (68),,,,Japan - 35deg 20min to 36deg N; 138deg to 139deg E.,9618,11.58,-11.21,41.7,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1398,Tokyo to WGS 84 (69),,,,Japan - 35deg 20min to 36deg N; 139deg to 140deg E.,9618,11.65,-11.53,38.5,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1399,Tokyo to WGS 84 (70),,,,Japan - 35deg 20min to 36deg N; 140deg to 141deg E.,9618,11.72,-11.8,34.5,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1400,Tokyo to WGS 84 (71),,,,Japan - 34deg 40min to 35deg 20min N; 132deg to 133deg E.,9618,11.44,-9.21,32.7,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1401,Tokyo to WGS 84 (72),,,,Japan - 34deg 40min to 35deg 20min N; 133deg to 134deg E.,9618,11.47,-9.52,35.2,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1402,Tokyo to WGS 84 (73),,,,Japan - 34deg 40min to 35deg 20min N; 134deg to 135deg E.,9618,11.55,-9.8,35.4,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1403,Tokyo to WGS 84 (74),,,,Japan - 34deg 40min to 35deg 20min N; 135deg to 136deg E.,9618,11.61,-10.12,35.9,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1404,Tokyo to WGS 84 (75),,,,Japan - 34deg 40min to 35deg 20min N; 136deg to 137deg E.,9618,11.66,-10.47,37.0,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1405,Tokyo to WGS 84 (76),,,,Japan - 34deg 40min to 35deg 20min N; 137deg to 138deg E.,9618,11.78,-10.79,39.8,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1406,Tokyo to WGS 84 (77),,,,Japan - 34deg 40min to 35deg 20min N; 138deg to 139deg E.,9618,11.85,-11.13,39.9,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1407,Tokyo to WGS 84 (78),,,,Japan - 34deg 40min to 35deg 20min N; 139deg to 140deg E.,9618,11.9,-11.47,36.9,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1408,Tokyo to WGS 84 (79),,,,Japan - 34deg 40min to 35deg 20min N; 140deg to 141deg E.,9618,11.91,-11.69,33.7,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1409,Tokyo to WGS 84 (80),,,,Japan - 34deg to 34deg 40min N; 130deg to 131deg E.,9618,11.65,-8.59,29.7,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1410,Tokyo to WGS 84 (81),,,,Japan - 34deg to 34deg 40min N; 131deg to 132deg E.,9618,11.68,-8.8,30.5,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1411,Tokyo to WGS 84 (82),,,,Japan - 34deg to 34deg 40min N; 132deg to 133deg E.,9618,11.73,-9.04,30.9,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1412,Tokyo to WGS 84 (83),,,,Japan - 34deg to 34deg 40min N; 133deg to 134deg E.,9618,11.72,-9.48,35.1,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1413,Tokyo to WGS 84 (84),,,,Japan - 34deg to 34deg 40min N; 134deg to 135deg E.,9618,11.81,9.74,35.8,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1414,Tokyo to WGS 84 (85),,,,Japan - 34deg to 34deg 40min N; 135deg to 136deg E.,9618,11.88,-10.1,37.1,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1415,Tokyo to WGS 84 (86),,,,Japan - 34deg to 34deg 40min N; 136deg to 137deg E.,9618,11.91,-10.35,37.9,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1416,Tokyo to WGS 84 (87),,,,Japan - 34deg to 34deg 40min N; 137deg to 138deg E.,9618,11.9,-10.7,39.3,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1417,Tokyo to WGS 84 (88),,,,Japan - 34deg to 34deg 40min N; 138deg to 139deg E.,9618,12.02,-11.09,38.2,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1418,Tokyo to WGS 84 (89),,,,Japan - 33deg 20min to 34deg N; 129deg to 130deg E.,9618,11.87,-8.23,29.7,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1419,Tokyo to WGS 84 (90),,,,Japan - 33deg 20min to 34deg N; 130deg to 131deg E.,9618,11.84,-8.44,30.6,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1420,Tokyo to WGS 84 (91),,,,Japan - 33deg 20min to 34deg N; 131deg to 132deg E.,9618,11.94,-8.71,30.2,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1421,Tokyo to WGS 84 (92),,,,Japan - 33deg 20min to 34deg N; 132deg to 133deg E.,9618,11.99,-9.02,30.9,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1422,Tokyo to WGS 84 (93),,,,Japan - 33deg 20min to 34deg N; 133deg to 134deg E.,9618,12.05,-9.36,35.0,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1423,Tokyo to WGS 84 (94),,,,Japan - 33deg 20min to 34deg N; 134deg to 135deg E.,9618,12.1,-9.64,35.5,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1424,Tokyo to WGS 84 (95),,,,Japan - 33deg 20min to 34deg N; 135deg to 136deg E.,9618,12.1,-10.08,37.3,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1425,Tokyo to WGS 84 (96),,,,Japan - 33deg 20min to 34deg N; 136deg to 137deg E.,9618,12.07,-10.25,37.3,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1426,Tokyo to WGS 84 (97),,,,Japan - 32deg 40min to 33deg 20min N; 129deg to 130deg E.,9618,12.0,-8.15,32.1,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1427,Tokyo to WGS 84 (98),,,,Japan - 32deg 40min to 33deg 20min N; 130deg to 131deg E.,9618,12.06,-8.38,31.0,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1428,Tokyo to WGS 84 (99),,,,Japan - 32deg 40min to 33deg 20min N; 131deg to 132deg E.,9618,12.17,-8.69,30.3,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1429,Tokyo to WGS 84 (100),,,,Japan - 32deg 40min to 33deg 20min N; 132deg to 133deg E.,9618,12.23,-8.99,31.7,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1430,Tokyo to WGS 84 (101),,,,Japan - 32deg 40min to 33deg 20min N; 133deg to 134deg E.,9618,12.21,-9.21,34.3,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1431,Tokyo to WGS 84 (102),,,,Japan - 32deg 40min to 33deg 20min N; 134deg to 135deg E.,9618,12.28,-9.6,33.3,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1432,Tokyo to WGS 84 (103),,,,Japan - 32deg to 32deg 40min N; 130deg to 131deg E.,9618,12.28,-8.25,31.0,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1433,Tokyo to WGS 84 (104),,,,Japan - 32deg to 32deg 40min N; 131deg to 132deg E.,9618,12.37,-8.55,29.1,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1434,Tokyo to WGS 84 (105),,,,Japan - 31deg 20min to 32deg N; 130deg to 131deg E.,9618,12.53,-8.21,31.0,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1435,Tokyo to WGS 84 (106),,,,Japan - 31deg 20min to 32deg N; 131deg to 132deg E.,9618,12.57,-8.4,28.4,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1436,Tokyo to WGS 84 (107),,,,Japan - 30deg 40min to 31deg 20min N; 130deg to 131deg E.,9618,12.71,-8.17,29.9,,,,,9001,9104,,,,,,1998-12-12 00:00:00,http://vldb.gsi-mc.go.jp/sokuchi/coordinates/localtrans.html   (Geographical Survey Institute).,EPSG,,
-1437,RT90 to ETRF89 (1),,,,Sweden,9607,419.3836,99.3335,591.3451,-0.850389,-1.817277,7.862238,-0.99496,9001,9104,,9202,,,,1999-04-22 00:00:00,National Land Survey of Sweden.,EPSG,This transformation is actually between ETRF89 and RR92.  RR92 is a geographic 3D coordinate system where the horizontal component is RT90.,99.11
-1438,Fahud to WGS 84 (2),,,,Oman.,9606,-333.102,-11.02,230.69,0.0,0.0,0.554,0.219,9001,9104,,9202,,,,1999-04-22 00:00:00,Petroleum Development Oman,EPSG,,
-1439,PSD93 to WGS 84 (1),,,,Oman.,9606,-180.624,-225.516,173.919,-0.81,-1.898,8.336,16.71006,9001,9104,,9202,,,,1999-04-22 00:00:00,Petroleum Development Oman,EPSG,,
-1440,ED50 to WGS 84 (19),,,,Greece.,9603,-86.0,-92.2,-127.5,,,,,9001,,,,,,,1999-04-22 00:00:00,Geodesy Department; Hellenic Petroleum s.a.,EPSG,Used in oil industry.,
-1441,Antigua 1943 to WGS 84 (1),,,,Antigua.,9603,-255.0,-15.0,71.0,,,,,9001,,,,,,,1999-04-22 00:00:00,Ordnance Survey of Great Britain,EPSG,,
-1442,Dominica 1945 to WGS 84 (1),,,,Dominica.,9603,725.0,685.0,536.0,,,,,9001,,,,,,,1999-04-22 00:00:00,Ordnance Survey of Great Britain,EPSG,,
-1443,Grenada 1953 to WGS 84 (1),,,,Grenada.,9603,72.0,213.7,93.0,,,,,9001,,,,,,,1999-04-22 00:00:00,Ordnance Survey of Great Britain,EPSG,,
-1444,Montserrat 1958 to WGS 84 (1),,,,Montserrat.,9603,174.0,359.0,365.0,,,,,9001,,,,,,,1999-04-22 00:00:00,Ordnance Survey of Great Britain,EPSG,,
-1445,St. Kitts 1955 to WGS 84 (1),,,,Saint Kitts and Nevis.,9603,9.0,183.0,236.0,,,,,9001,,,,,,,1999-04-22 00:00:00,Ordnance Survey of Great Britain,EPSG,,
-1446,St. Lucia 1955 to WGS 84 (1),,,,Saint Lucia.,9603,-149.0,128.0,296.0,,,,,9001,,,,,,,1999-04-22 00:00:00,Ordnance Survey of Great Britain,EPSG,,
-1447,Anguilla 1957 to WGS 84 (1),,,,Anguilla.,9619,-18.0,4.4,,,,,,,9104,,,,,,1999-04-22 00:00:00,Ordnance Survey of Great Britain,EPSG,,
-1450,ED50 to WGS 84 (20),,,,Norway - offshore between 62 and 65 deg North and west of 5 deg East.,9620,,,,,,8047.0,8046.0,,9102,,,ED50 to WGS 84 (15),ED50 to WGS 84 (14),,1999-04-22 00:00:00,"Norwegian Mapping Authority note of 13-Feb-1991 \"Om Transformasjon mellom Geodetiske Datum i Norge\"",EPSG,,
-1451,NAD27(CGQ77) to NAD83 (1),,,,Canada - Quebec,9614,,,,,,,,,9104,,,PQV4.DAC,,,1999-05-15 00:00:00,Geodetic Service of Quebec.  Contact alain.bernard at mrn.gouv.qc.ca,EPSG,Uses NT method which expects longitudes positive west; EPSG GeogCSs CGQ77 (code 4609) and NAD83 (code 4269) have longitudes positive east.  Supersedes NAD27 to NAD83 (5) (code xxxx).,
-1454,Old Hawaiian to NAD83 (1),,,,United States (USA) - Hawaii including EEZ.,9613,,,,,,,,,9104,,,hawaii.las,hawaii.los,,1999-05-15 00:00:00,US Coast & Geodetic Survey  www.ngs.noaa.gov,EPSG,Uses NADCON method which expects longitudes positive west; EPSG GeogCSs Old Hawaiian (code 4135) and NAD83 (code 4269) have longitudes positive east.  NADCON data converts from Old Hawaiian Datum to but makes the transformation appear to be from NAD27.,
-1455,St. Lawrence Island to NAD83 (1),,,,United States (USA) - Alaska - St. Lawrence Island.,9613,,,,,,,,,9104,,,stlrnc.las,stlrnc.los,,1999-05-15 00:00:00,US Coast & Geodetic Survey  www.ngs.noaa.gov,EPSG,Uses NADCON method which expects longitudes positive west; EPSG GeogCSs St. Lawrence (code 4136) and NAD83 (code 4269) have longitudes positive east. NADCON data converts from St. Lawrence Datum to but makes the transformation appear to be from NAD27.,
-1456,St. Paul Island to NAD83 (1),,,,United States (USA) - Alaska - St. Paul Island.,9613,,,,,,,,,9104,,,stpaul.las,stpaul.los,,1999-05-15 00:00:00,US Coast & Geodetic Survey  www.ngs.noaa.gov,EPSG,Uses NADCON method which expects longitudes positive west; EPSG GeogCSs St. Paul (code 4137) and NAD83 (code 4269) have longitudes positive east. NADCON data converts from St. Paul Datum to but makes the transformation appear to be from NAD27.,
-1457,St. George Island to NAD83 (1),,,,United States (USA) - Alaska - St. George Island.,9613,,,,,,,,,9104,,,stgeorge.las,stgeorge.los,,1999-05-15 00:00:00,US Coast & Geodetic Survey  www.ngs.noaa.gov,EPSG,Uses NADCON method which expects longitudes positive west; EPSG GeogCSs St. George (code 4138) and NAD83 (code 4269) have longitudes positive east. NADCON data converts from St. George Datum to but makes the transformation appear to be from NAD27.,
-1458,AGD66 to GDA94 (2),,,,Australia - ACT.,9607,-129.193,-41.212,130.73,-0.246,-0.374,-0.329,-2.955,9001,9104,,9202,,,,1999-05-25 00:00:00,http://www.anzlic.org.au/icsm/gdatm/regional.htm,EPSG,1m accuracy.  Recommended for mid-accuracy use in A.C.T.,
-1459,AGD66 to GDA94 (3),,,,Australia - Tasmania.,9607,-120.695,-62.73,165.46,-0.109,0.141,0.116,2.733,9001,9104,,9202,,,,1999-05-25 00:00:00,http://www.anzlic.org.au/icsm/gdatm/regional.htm,EPSG,1m accuracy.  Recommended for mid-accuracy use in Tasmania.,
-1460,AGD66 to GDA94 (4),,,,Australia - New South Wales (NSW) and Victoria.,9607,-119.353,-48.301,139.484,-0.415,-0.26,-0.437,-0.613,9001,9104,,9202,,,,1999-05-25 00:00:00,http://www.anzlic.org.au/icsm/gdatm/regional.htm,EPSG,1m accuracy.  Recommended for mid-accuracy use in NSW and Victoria.,
-1461,Puerto Rico to NAD83 (1),,,,Puerto Rico; Virgin Islands (U.S.); Virgin Islands (British).,9613,,,,,,,,,9104,,,prvi.las,prvi.los,,1999-05-24 00:00:00,US Coast & Geodetic Survey  www.ngs.noaa.gov,EPSG,Uses NADCON method which expects longitudes positive west; EPSG GeogCSs Puerto Rico (code 4139) and NAD83 (code 4269) have longitudes positive east. NADCON data converts from Puerto Rico Datum to but makes the transformation appear to be from NAD27.,
-1462,NAD27 to NAD83 (5),,,,Canada - Quebec,9614,,,,,,,,,9104,,,GS2783v1.QUE,,,1999-05-24 00:00:00,Geodetic Service of Quebec.  Contact alain.bernard at mrn.gouv.qc.ca,EPSG,Uses NT method which expects longitudes positive west; EPSG GeogCSs NAD27 (code 4267) and NAD83 (code 4269) have longitudes positive east.  Superseded by NAD27(CGQ77) to NAD83 (1) (code 1451).,
-1463,NAD27(76) to NAD83 (1),,,,Canada - Ontario,9615,,,,,,,,,9104,,,May76v20.gsb,,,1999-05-24 00:00:00,Geodetic Survey of Canada   http://www.geod.emr.ca/html-public/GSDapps/English/NTv2_Fact_Sheet.html,EPSG,Uses NT method which expects longitudes positive west; EPSG GeogCSs NAD27(76) (code 4608) and NAD83 (code 4269) have longitudes positive east.,
-1464,AGD66 to GDA94 (5),,,,Australia - Victoria.,9615,,,,,,,,,9104,,,vic_0799.gsb,,,1999-10-20 00:00:00,http://www.osg.vic.gov.au/tools.htm,EPSG,0.1m accuracy.  Input expects longitudes to be positive west; EPSG GeogCS AGD66 (code 4202) and GDA94 (code 4283) both have longitudes positive east.,99.67
-1466,NGO 1948 (Oslo) to NGO1948,,,,Norway - onshore.,9601,10.43225,,,,,,,,9110,,,,,,1999-11-12 00:00:00,"J. Danielsen; \"Transformasjoner ved Norges Geografiske Oppm�ling\"; Kart Og Plan nr 1; 1982.",EPSG,Change of prime meridian.,99.79
-1467,NTF (Paris) to NTF (1),,,,France - onshore.,9601,2.5969213,,,,,,,,9105,,,,,,1999-11-12 00:00:00,IGN Paris.,EPSG,Change of prime meridian.,99.63  99.79
-1468,NTF (Paris) to NTF (2),,,,France - onshore.,9601,2.201395,,,,,,,,9110,,,,,,1999-11-12 00:00:00,Royal Geographic Society; London,EPSG,Change of prime meridian.  EPSG prefers value from IGN Paris (code 1467).,99.63  99.79
-1469,Locodjo 1965 to WGS 84 (1),,,,Cote D'Ivoire (Ivory Coast),9603,-125.0,53.0,467.0,,,,,9001,,,,,,,1999-10-20 00:00:00,IGN Paris,EPSG,,
-1470,Abidjan 1987 to WGS 84 (1),,,,Cote D'Ivoire (Ivory Coast),9603,-124.76,53.0,466.79,,,,,9001,,,,,,,1999-10-20 00:00:00,IGN Paris,EPSG,,
-1471,MGI to WGS 84 (2),,,,Austria,9606,-577.326,-90.129,-463.919,-15.8537,-4.55,-16.3489,-2.4232,9001,9113,,9202,,,,1999-10-20 00:00:00,Bundesamt f�r Eich- und Vermessungswesen,EPSG,,
-1472,ATS77 to NAD83(CSRS98) (1),,,,Canada - New Brunswick,9615,,,,,,,,,9104,,,NT7783v2.gsb,,,1999-10-20 00:00:00,New Brunswick Geographic Information Corporation land and water information standards manual.,EPSG,Introduced in 1999.,
-1473,NAD83(CSRS98) to WGS 84 (1),,,,Canada - New Brunswick,9603,0.0,0.0,0.0,,,,,9001,,,,,,,1999-10-20 00:00:00,EPSG,EPSG,For many purposes NAD83 can be considered to be coincident with WGS 84.,
-1474,NAD83 to NAD83(HARN) (1),,,,United States (USA) - Alabama.,9613,,,,,,,,,9104,,,alhpgn.las,alhpgn.los,,1999-10-20 00:00:00,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,Uses NADCON method which expects longitudes positive west; EPSG GeogCSs NAD83 (code 4269) and NAD83(HARN) (code 4140) have longitudes positive east.,
-1475,NAD83 to NAD83(HARN) (2),,,,United States (USA) - Arizona.,9613,,,,,,,,,9104,,,azhpgn.las,azhpgn.los,,1999-10-20 00:00:00,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,Uses NADCON method which expects longitudes positive west; EPSG GeogCSs NAD83 (code 4269) and NAD83(HARN) (code 4140) have longitudes positive east.,
-1476,NAD83 to NAD83(HARN) (3),,,,United States (USA) - California north of 38 deg N.,9613,,,,,,,,,9104,,,cnhpgn.las,cnhpgn.los,,1999-10-20 00:00:00,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,Uses NADCON method which expects longitudes positive west; EPSG GeogCSs NAD83 (code 4269) and NAD83(HARN) (code 4140) have longitudes positive east.,
-1477,NAD83 to NAD83(HARN) (4),,,,United States (USA) - California south of 38 deg N.,9613,,,,,,,,,9104,,,cshpgn.las,cshpgn.los,,1999-10-20 00:00:00,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,Uses NADCON method which expects longitudes positive west; EPSG GeogCSs NAD83 (code 4269) and NAD83(HARN) (code 4140) have longitudes positive east.,
-1478,NAD83 to NAD83(HARN) (5),,,,United States (USA) - Colorado.,9613,,,,,,,,,9104,,,cohpgn.las,cohpgn.los,,1999-10-20 00:00:00,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,Uses NADCON method which expects longitudes positive west; EPSG GeogCSs NAD83 (code 4269) and NAD83(HARN) (code 4140) have longitudes positive east.,
-1479,NAD83 to NAD83(HARN) (6),,,,United States (USA) - Georgia.,9613,,,,,,,,,9104,,,gahpgn.las,gahpgn.los,,1999-10-20 00:00:00,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,Uses NADCON method which expects longitudes positive west; EPSG GeogCSs NAD83 (code 4269) and NAD83(HARN) (code 4140) have longitudes positive east.,
-1480,NAD83 to NAD83(HARN) (7),,,,United States (USA) - Florida.,9613,,,,,,,,,9104,,,flhpgn.las,flhpgn.los,,1999-10-20 00:00:00,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,Uses NADCON method which expects longitudes positive west; EPSG GeogCSs NAD83 (code 4269) and NAD83(HARN) (code 4140) have longitudes positive east.,
-1481,NAD83 to NAD83(HARN) (8),,,,United States (USA) - Idaho and Montana - east of 113 deg W.,9613,,,,,,,,,9104,,,emhpgn.las,emhpgn.los,,1999-10-20 00:00:00,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,Uses NADCON method which expects longitudes positive west; EPSG GeogCSs NAD83 (code 4269) and NAD83(HARN) (code 4140) have longitudes positive east.,
-1482,NAD83 to NAD83(HARN) (9),,,,United States (USA) - Idaho and Montana - west of 113 deg W.,9613,,,,,,,,,9104,,,wmhpgn.las,wmhpgn.los,,1999-10-20 00:00:00,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,Uses NADCON method which expects longitudes positive west; EPSG GeogCSs NAD83 (code 4269) and NAD83(HARN) (code 4140) have longitudes positive east.,
-1483,NAD83 to NAD83(HARN) (10),,,,United States (USA) - Kentucky.,9613,,,,,,,,,9104,,,kyhpgn.las,kyhpgn.los,,1999-10-20 00:00:00,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,Uses NADCON method which expects longitudes positive west; EPSG GeogCSs NAD83 (code 4269) and NAD83(HARN) (code 4140) have longitudes positive east.,
-1484,NAD83 to NAD83(HARN) (11),,,,United States (USA) - Louisiana.,9613,,,,,,,,,9104,,,lahpgn.las,lahpgn.los,,1999-10-20 00:00:00,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,Uses NADCON method which expects longitudes positive west; EPSG GeogCSs NAD83 (code 4269) and NAD83(HARN) (code 4140) have longitudes positive east.,
-1485,NAD83 to NAD83(HARN) (12),,,,United States (USA) - Delaware and Maryland.,9613,,,,,,,,,9104,,,mdhpgn.las,mdhpgn.los,,1999-10-20 00:00:00,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,Uses NADCON method which expects longitudes positive west; EPSG GeogCSs NAD83 (code 4269) and NAD83(HARN) (code 4140) have longitudes positive east.,
-1486,NAD83 to NAD83(HARN) (13),,,,United States (USA) - Maine.,9613,,,,,,,,,9104,,,mehpgn.las,mehpgn.los,,1999-10-20 00:00:00,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,Uses NADCON method which expects longitudes positive west; EPSG GeogCSs NAD83 (code 4269) and NAD83(HARN) (code 4140) have longitudes positive east.,
-1487,NAD83 to NAD83(HARN) (14),,,,United States (USA) - Michigan.,9613,,,,,,,,,9104,,,mihpgn.las,mihpgn.los,,1999-10-20 00:00:00,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,Uses NADCON method which expects longitudes positive west; EPSG GeogCSs NAD83 (code 4269) and NAD83(HARN) (code 4140) have longitudes positive east.,
-1488,NAD83 to NAD83(HARN) (15),,,,United States (USA) - Mississippi.,9613,,,,,,,,,9104,,,mshpgn.las,mshpgn.los,,1999-10-20 00:00:00,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,Uses NADCON method which expects longitudes positive west; EPSG GeogCSs NAD83 (code 4269) and NAD83(HARN) (code 4140) have longitudes positive east.,
-1489,NAD83 to NAD83(HARN) (16),,,,United States (USA) - Nebraska.,9613,,,,,,,,,9104,,,nbhpgn.las,nbhpgn.los,,1999-10-20 00:00:00,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,Uses NADCON method which expects longitudes positive west; EPSG GeogCSs NAD83 (code 4269) and NAD83(HARN) (code 4140) have longitudes positive east.,
-1490,NAD83 to NAD83(HARN) (17),,,,United States (USA) - Connecticut; Massachusetts; New Hampshire; Rhode Island; Vermont.,9613,,,,,,,,,9104,,,nehpgn.las,nehpgn.los,,1999-10-20 00:00:00,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,Uses NADCON method which expects longitudes positive west; EPSG GeogCSs NAD83 (code 4269) and NAD83(HARN) (code 4140) have longitudes positive east.,
-1491,NAD83 to NAD83(HARN) (18),,,,United States (USA) - New Mexico.,9613,,,,,,,,,9104,,,nmhpgn.las,nmhpgn.los,,1999-10-20 00:00:00,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,Uses NADCON method which expects longitudes positive west; EPSG GeogCSs NAD83 (code 4269) and NAD83(HARN) (code 4140) have longitudes positive east.,
-1492,NAD83 to NAD83(HARN) (19),,,,United States (USA) - New York.,9613,,,,,,,,,9104,,,nyhpgn.las,nyhpgn.los,,1999-10-20 00:00:00,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,Uses NADCON method which expects longitudes positive west; EPSG GeogCSs NAD83 (code 4269) and NAD83(HARN) (code 4140) have longitudes positive east.,
-1493,NAD83 to NAD83(HARN) (20),,,,United States (USA) - North Dakota.,9613,,,,,,,,,9104,,,ndhpgn.las,ndhpgn.los,,1999-10-20 00:00:00,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,Uses NADCON method which expects longitudes positive west; EPSG GeogCSs NAD83 (code 4269) and NAD83(HARN) (code 4140) have longitudes positive east.,
-1494,NAD83 to NAD83(HARN) (21),,,,United States (USA) - Oklahoma.,9613,,,,,,,,,9104,,,okhpgn.las,okhpgn.los,,1999-10-20 00:00:00,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,Uses NADCON method which expects longitudes positive west; EPSG GeogCSs NAD83 (code 4269) and NAD83(HARN) (code 4140) have longitudes positive east.,
-1495,NAD83 to NAD83(HARN) (22),,,,United States (USA) - Puerto Rico and the Virgin Islands.,9613,,,,,,,,,9104,,,pvhpgn.las,pvhpgn.los,,1999-10-20 00:00:00,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,Uses NADCON method which expects longitudes positive west; EPSG GeogCSs NAD83 (code 4269) and NAD83(HARN) (code 4140) have longitudes positive east.,
-1496,NAD83 to NAD83(HARN) (23),,,,United States (USA) - South Dakota.,9613,,,,,,,,,9104,,,sdhpgn.las,sdhpgn.los,,1999-10-20 00:00:00,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,Uses NADCON method which expects longitudes positive west; EPSG GeogCSs NAD83 (code 4269) and NAD83(HARN) (code 4140) have longitudes positive east.,
-1497,NAD83 to NAD83(HARN) (24),,,,United States (USA) - Tennessee,9613,,,,,,,,,9104,,,tnhpgn.las,tnhpgn.los,,1999-10-20 00:00:00,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,Uses NADCON method which expects longitudes positive west; EPSG GeogCSs NAD83 (code 4269) and NAD83(HARN) (code 4140) have longitudes positive east.,
-1498,NAD83 to NAD83(HARN) (25),,,,United States (USA) - Texas east of 100deg West.,9613,,,,,,,,,9104,,,ethpgn.las,ethpgn.los,,1999-10-20 00:00:00,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,Uses NADCON method which expects longitudes positive west; EPSG GeogCSs NAD83 (code 4269) and NAD83(HARN) (code 4140) have longitudes positive east.,
-1499,NAD83 to NAD83(HARN) (26),,,,United States (USA) - Texas west of 100deg West.,9613,,,,,,,,,9104,,,wthpgn.las,wthpgn.los,,1999-10-20 00:00:00,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,Uses NADCON method which expects longitudes positive west; EPSG GeogCSs NAD83 (code 4269) and NAD83(HARN) (code 4140) have longitudes positive east.,
-1500,NAD83 to NAD83(HARN) (27),,,,United States (USA) - Virginia.,9613,,,,,,,,,9104,,,vahpgn.las,vahpgn.los,,1999-10-20 00:00:00,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,Uses NADCON method which expects longitudes positive west; EPSG GeogCSs NAD83 (code 4269) and NAD83(HARN) (code 4140) have longitudes positive east.,
-1501,NAD83 to NAD83(HARN) (28),,,,United States (USA) - Oregan; Washington.,9613,,,,,,,,,9104,,,wohpgn.las,wohpgn.los,,1999-10-20 00:00:00,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,Uses NADCON method which expects longitudes positive west; EPSG GeogCSs NAD83 (code 4269) and NAD83(HARN) (code 4140) have longitudes positive east.,
-1502,NAD83 to NAD83(HARN) (29),,,,United States (USA) - Wisconsin.,9613,,,,,,,,,9104,,,wihpgn.las,wihpgn.los,,1999-10-20 00:00:00,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,Uses NADCON method which expects longitudes positive west; EPSG GeogCSs NAD83 (code 4269) and NAD83(HARN) (code 4140) have longitudes positive east.,
-1503,NAD83 to NAD83(HARN) (30),,,,United States (USA) - Wyoming.,9613,,,,,,,,,9104,,,wyhpgn.las,wyhpgn.los,,1999-10-20 00:00:00,US Coast & Geodetic Survey  www.ngs.noaa.gov  NADCON readme file,EPSG,Uses NADCON method which expects longitudes positive west; EPSG GeogCSs NAD83 (code 4269) and NAD83(HARN) (code 4140) have longitudes positive east.,
-1504,Cape to Hartbeesthoek94 (1),,,,South Africa.,9603,-134.73,-110.92,-292.66,,,,,9001,,,,,,,1999-10-20 00:00:00,Directorate of Surveys and Mapping; http://w3sli.wcape.gov.za/surveys/mapping/wgs84.htm,EPSG,,
-1505,Hartbeesthoek94 to WGS 84 (1),,,,South Africa.,9603,0.0,0.0,0.0,,,,,9001,,,,,,,1999-10-20 00:00:00,EPSG,EPSG,For many purposes Hartbeesthoek94 datum can be considered to be coincident with WGS 84.,
-1506,AGD66 to GDA94 (6),,,,Australia - Tasmania.,9615,,,,,,,,,9104,,,tas_1098.gsb,,,1999-10-20 00:00:00,http://www.delm.tas.gov.au/osg/Geodetic_transform.htm,EPSG,0.1m accuracy.  Input expects longitudes to be positive west; EPSG GeogCS AGD66 (code 4202) and GDA94 (code 4283) both have longitudes positive east.,
-1507,AGD66 to GDA94 (7),,,,Australia - Northern Territory.,9615,,,,,,,,,9104,,,nt_0599.gsb,,,1999-10-20 00:00:00,http://www.anzlic.org.au/icsm/gdatm/chapter7.htm#high,EPSG,0.1m accuracy.  Input expects longitudes to be positive west; EPSG GeogCS AGD66 (code 4202) and GDA94 (code 4283) both have longitudes positive east.,
-1508,CH1903 to WGS 84 (1),,,,Liechtenstein;  Switzerland.,9607,660.077,13.551,369.344,2.484,1.783,2.939,5.66,9001,9113,,9202,,,,1999-10-20 00:00:00,Bundesamt f�r Landestopographie.  Aufbau der Landesvermessung der Schweiz 'LV95' Teil 3: Terrestrische Bezugssysteme und Bezugsrahmen. L+T 1999.,EPSG,Implemented in Bundesamt f�r Landestopographie programme GRANIT.,
-1509,CH1903+ to CHTRF95 (1),,,,Liechtenstein;  Switzerland.,9603,674.374,15.056,405.346,,,,,9001,,,,,,,1999-10-20 00:00:00,Bundesamt f�r Landestopographie.  Aufbau der Landesvermessung der Schweiz 'LV95' Teil 3: Terrestrische Bezugssysteme und Bezugsrahmen. L+T 1999.,EPSG,,
-1510,CH1903 to WGS 84 (2),,,,Liechtenstein;  Switzerland.,9603,674.374,15.056,405.346,,,,,9001,,,,,,,1999-10-20 00:00:00,Bundesamt f�r Landestopographie.  Aufbau der Landesvermessung der Schweiz 'LV95' Teil 3: Terrestrische Bezugssysteme und Bezugsrahmen. L+T 1999.,EPSG,These parameters are strictly between CH1903+ and CHTRF95 but are used from CH1903 as an approximation which is within the accuracy of the distortions within the CH1903 network.,
-1511,CHTRF95 to WGS 84 (1),,,,Liechtenstein;  Switzerland.,9603,0.0,0.0,0.0,,,,,9001,,,,,,,1999-10-20 00:00:00,EPSG,EPSG,For many purposes CHTRF95 can be considered to be coincident with WGS 84.,
-1512,Rassadiran to WGS 84 (1),,,,Iran - Taheri refinery site only.,9603,-133.63,-157.5,-158.62,,,,,9001,,,,,,,1999-10-20 00:00:00,Total-Fina,EPSG,Used only for terminal site.,
-1513,FD58 to WGS 84 (1),,,,Iran - Kangan district.,9603,-241.54,-163.64,396.06,,,,,9001,,,,,,,1999-10-20 00:00:00,Total-Fina,EPSG,,
-1514,ED50(ED77) to WGS 84 (1),,,,Iran,9606,-110.33,-97.73,-119.85,0.3423,1.1634,0.2715,0.063,9001,9104,,9202,,,,1999-10-20 00:00:00,National Cartographic Centre of Iran,EPSG,,
-1515,NAD83 to WGS 84 (5),,,,United States (USA),9607,-0.991,1.9072,0.5129,-0.000000125033,-0.000000046785,-0.000000056529,0.0,9001,9101,,9202,,,,1999-11-05 00:00:00, http://www.ngs.noaa.gov/CORS/Derivation.html,EPSG,Strictly between NAD83 and ITRF96(1997.0).  Supersedes NAD83 to WGS 84 (4) (code 1308).,
-1516,La Canoa to WGS 84 (1),,,,Venezuela east - Delta Amacuro; Anzoategui; Bolivar; Monagas; Sucre states.,9603,-273.5,110.6,-357.9,,,,,9001,,,,,,,1999-11-05 00:00:00,"Lagoven; Gonzalez Losano y Rodriguez; \"Determination de los Parametros de Transformacion para el Oriente del Pais\"; VII Venezuelan Geophysical Congress; September 1994.",EPSG,Also used for PSAD56 to WGS 84 transformations.  Parameter values estimated accuracy: � 2.0m;  � 2.7m;  � 1.3m respectively.,
-10101,Alabama CS27 East zone,Alabama East,,,United States (USA) - Alabama - Counties east of 86d 37m West.,9807,30.3,-85.5,,,0.99996,500000.0,0.0,9003,9110,8901,,,,,1995-12-02 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29
-10102,Alabama CS27 West zone,Alabama West,,,United States (USA) - Alabama - Counties east of 86d 37m West.,9807,30.0,-87.3,,,0.999933333,500000.0,0.0,9003,9110,8901,,,,,1995-12-02 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29
-10131,Alabama CS83 East zone,Alabama East,,,United States (USA) - Alabama - Counties east of 86d 37m West.,9807,30.3,-85.5,,,0.99996,200000.0,0.0,9001,9110,8901,,,,,1995-12-02 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29
-10132,Alabama CS83 West zone,Alabama West,,,United States (USA) - Alabama - Counties east of 86d 37m West.,9807,30.0,-87.3,,,0.999933333,600000.0,0.0,9001,9110,8901,,,,,1995-12-02 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29
-10201,Arizona Coordinate System  east zone,Arizona East,,,United States (USA) - Arizona - Apache; Cochise; Gila; Graham; Greenlee and Navajo counties; i.e. east of about 110d 45m West.,9807,31.0,-110.1,,,0.9999,500000.0,0.0,9003,9110,8901,,,,,1995-12-02 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29
-10202,Arizona Coordinate System Central zone,Arizona Central,,,United States (USA) - Arizona - Coconino; Maricopa; Pima; Pinal; Santa Cruz and Yavapai counties; i.e between about 110d 45m & 113d 20m west,9807,31.0,-111.55,,,0.9999,500000.0,0.0,9003,9110,8901,,,,,1995-12-02 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29
-10203,Arizona Coordinate System  west zone,Arizona West,,,United States (USA) - Arizona - La Paz; Mohave and Yuma counties; i.e west of about 113d 20m,9807,31.0,-113.45,,,0.999933333,500000.0,0.0,9003,9110,8901,,,,,1995-12-02 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29
-10231,Arizona CS83  east zone,Arizona  East,,,United States (USA) - Arizona - counties east of 110d 45m West,9807,31.0,-110.1,,,0.9999,213360.0,0.0,9001,9110,8901,,,,,1995-12-02 00:00:00,NOAA manual NOS NGS 5,EPSG,State law defines origin in International feet. FE = 700000ft.,95.30  96.29
-10232,Arizona CS83 Central zone,Arizona Central,,,United States (USA) - Arizona - Coconino; Maricopa; Pima; Pinal; Santa Cruz and Yavapai counties; i.e between about 110d 45m & 113d 20m west,9807,31.0,-111.55,,,0.9999,213360.0,0.0,9001,9110,8901,,,,,1995-12-02 00:00:00,NOAA manual NOS NGS 5,EPSG,State law defines origin in International feet. FE = 700000ft.,95.30  96.29
-10233,Arizona CS83  west zone,Arizona West,,,United States (USA) - Arizona - La Paz; Mohave and Yuma counties; i.e west of about 113d 20m,9807,31.0,-113.45,,,0.999933333,213360.0,0.0,9001,9110,8901,,,,,1995-12-02 00:00:00,NOAA manual NOS NGS 5,EPSG,State law defines origin in International feet. FE = 700000ft.,95.30  96.29
-10301,Arkansas CS27 North,Arkansas North,,,United States (USA) - Arkansas - counties north of 34d 50m North.,9802,34.2,-92.0,36.14,34.56,,2000000.0,0.0,9003,9110,8901,,,,,1999-04-22 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29  99.28
-10302,Arkansas CS27 South,Arkansas South,,,United States (USA) - Arkansas - counties south of 34d 50m North.,9802,32.4,-92.0,34.46,33.18,,2000000.0,0.0,9003,9110,8901,,,,,1999-04-22 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29  99.28
-10331,Arkansas CS83 North zone,Arkansas North,,,United States (USA) - Arkansas - counties north of 34d 50m North.,9802,34.2,-92.0,36.14,34.56,,400000.0,0.0,9001,9110,8901,,,,,1999-04-22 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29  99.28
-10332,Arkansas CS83 South zone,Arkansas South,,,United States (USA) - Arkansas - counties south of 34d 50m North.,9802,32.4,-92.0,34.46,33.18,,400000.0,400000.0,9001,9110,8901,,,,,1999-04-22 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29  99.28
-10401,California CS27 zone I,California zone I,,,United States (USA) - California - counties north of 40deg North.,9802,39.2,-122.0,41.4,40.0,,2000000.0,0.0,9003,9110,8901,,,,,1999-04-22 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29  99.28
-10402,California CS27 zone II,California zone II,,,United States (USA) - California - counties between 40d & 38d 15m North.,9802,37.4,-122.0,39.5,38.2,,2000000.0,0.0,9003,9110,8901,,,,,1999-04-22 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29  99.28
-10403,California CS27 zone III,California zone III,,,United States (USA) - California - counties between 38d 15m & 37d North.,9802,36.3,-120.3,38.26,37.04,,2000000.0,0.0,9003,9110,8901,,,,,1999-04-22 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29  99.28
-10404,California CS27 zone IV,California zone IV,,,United States (USA) - California - counties between 37d & 35d 30m North.,9802,35.2,-119.0,37.15,36.0,,2000000.0,0.0,9003,9110,8901,,,,,1999-04-22 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29  99.28
-10405,California CS27 zone V,California zone V,,,United States (USA) - California - counties between 35d 50m & 34d North.,9802,33.3,-118.0,35.28,34.02,,2000000.0,0.0,9003,9110,8901,,,,,1999-04-22 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29  99.28
-10406,California CS27 zone VI,California zone VI,,,United States (USA) - California - counties south of 34deg North.,9802,32.1,-116.15,33.53,32.47,,2000000.0,0.0,9003,9110,8901,,,,,1999-04-22 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29  99.28
-10407,California CS27 zone VII,California zone VII,,,United States (USA) - California - Los Angeles.,9802,34.08,-118.2,34.25,33.52,,4186692.58,416926.74,9003,9110,8901,,,,,1999-04-22 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29  99.28
-10431,California CS83 zone 1,California zone 1,,,United States (USA) - California - counties north of 40deg North.,9802,39.2,-122.0,41.4,40.0,,2000000.0,500000.0,9001,9110,8901,,,,,1999-04-22 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29  99.28
-10432,California CS83 zone 2,California zone 2,,,United States (USA) - California - counties between 40d & 38d 15m North.,9802,37.4,-122.0,39.5,38.2,,2000000.0,500000.0,9001,9110,8901,,,,,1999-04-22 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29  99.28
-10433,California CS83 zone 3,California zone 3,,,United States (USA) - California - counties between 38d 15m & 37d North.,9802,36.3,-120.3,38.26,37.04,,2000000.0,500000.0,9001,9110,8901,,,,,1999-04-22 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29  99.28
-10434,California CS83 zone 4,California zone 4,,,United States (USA) - California - counties between 37d & 35d 30m North.,9802,35.2,-119.0,37.15,36.0,,2000000.0,500000.0,9001,9110,8901,,,,,1999-04-22 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29  99.28
-10435,California CS83 zone 5,California zone 5,,,United States (USA) - California - counties between 35d 50m & 34d North.,9802,33.3,-118.0,35.28,34.02,,2000000.0,500000.0,9001,9110,8901,,,,,1999-04-22 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29  99.28
-10436,California CS83 zone 6,California zone 6,,,United States (USA) - California - counties south of 34deg North.,9802,32.1,-116.15,33.53,32.47,,2000000.0,500000.0,9001,9110,8901,,,,,1999-04-22 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29  99.28
-10501,Colorado CS27 North zone,Colorado North,,,United States (USA) - Colorado - counties north of 39d 50m North.,9802,39.2,-105.3,39.43,40.47,,2000000.0,0.0,9003,9110,8901,,,,,1999-04-22 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29  99.28
-10502,Colorado CS27 Central zone,Colorado Central,,,United States (USA) - Colorado - counties between 39d 50m & 38d 30m North.,9802,37.5,-105.3,39.45,38.27,,2000000.0,0.0,9003,9110,8901,,,,,1999-04-22 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29  99.28
-10503,Colorado CS27 South zone,Colorado South,,,United States (USA) - Colorado - counties south of 38d 30m North.,9802,36.4,-105.3,38.26,37.14,,2000000.0,0.0,9003,9110,8901,,,,,1999-04-22 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29  99.28
-10531,Colorado CS83 North zone,Colorado North,,,United States (USA) - Colorado - counties north of 39d 50m North.,9802,39.2,-105.3,40.47,39.43,,914401.8289,304800.6096,9001,9110,8901,,,,,1999-04-22 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29  99.28
-10532,Colorado CS83 Central zone,Colorado Central,,,United States (USA) - Colorado - counties between 39d 50m & 38d 30m North.,9802,37.5,-105.3,39.45,38.27,,914401.8289,304800.6096,9001,9110,8901,,,,,1999-04-22 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29  99.28
-10533,Colorado CS83 South zone,Colorado South,,,United States (USA) - Colorado - counties south of 38d 30m North.,9802,36.4,-105.3,38.26,37.14,,914401.8289,304800.6096,9001,9110,8901,,,,,1999-04-22 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29  99.28
-10600,Connecticut CS27,Connecticut,,,United States (USA) - Connecticut.,9802,40.5,-72.45,41.52,41.12,,600000.0,0.0,9003,9110,8901,,,,,1999-04-22 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29  99.28
-10630,Connecticut CS83,Connecticut,,,United States (USA) - Connecticut.,9802,40.5,-72.45,41.52,41.12,,304800.6096,152400.3048,9001,9110,8901,,,,,1999-04-22 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29  99.28
-10700,Delaware CS27,Delaware,,,United States (USA) - Delaware.,9807,38.0,-75.25,,,0.999995,500000.0,0.0,9003,9110,8901,,,,,1995-12-02 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29
-10730,Delaware CS83,Delaware,,,United States (USA) - Delaware.,9807,38.0,-75.25,,,0.999995,200000.0,0.0,9001,9110,8901,,,,,1995-12-02 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29
-10901,Florida CS27 East zone,Florida East,,,United States (USA) - Florida - counties east of 81d 45m West.,9807,24.2,-81.0,,,0.999941177,500000.0,0.0,9003,9110,8901,,,,,1995-12-02 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29
-10902,Florida CS27 West zone,Florida West,,,United States (USA) - Florida - counties west of 81d 45m West & south of 29d 30m North.,9807,24.2,-82.0,,,0.999941177,500000.0,0.0,9003,9110,8901,,,,,1995-12-02 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29
-10903,Florida CS27 North zone,Florida North,,,United States (USA) - Florida - north of 29d 30m North & west of 82d West.,9802,29.0,-84.3,30.45,29.35,,2000000.0,0.0,9003,9110,8901,,,,,1999-04-22 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29  99.28
-10931,Florida CS83 East zone,Florida  East,,,United States (USA) - Florida - counties east of 81d 45m West.,9807,24.2,-81.0,,,0.999941177,200000.0,0.0,9001,9110,8901,,,,,1995-12-02 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29
-10932,Florida CS83 West zone,Florida  West,,,United States (USA) - Florida - counties west of 81d 45m West & south of 29d 30m North.,9807,24.2,-82.0,,,0.999941177,200000.0,0.0,9001,9110,8901,,,,,1995-12-02 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29
-10933,Florida CS83 North zone,Florida North,,,United States (USA) - Florida - north of 29d 30m North & west of 82d West.,9802,29.0,-84.3,30.45,29.35,,600000.0,0.0,9001,9110,8901,,,,,1999-04-22 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29  99.28
-11001,Georgia CS27 East zone,Georgia East,,,United States (USA) - Georgia - counties east of 83d 15m West.,9807,30.0,-82.1,,,0.9999,500000.0,0.0,9003,9110,8901,,,,,1995-12-02 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29
-11002,Georgia CS27 West zone,Georgia West,,,United States (USA) - Georgia - counties west of 83d 15m West.,9807,30.0,-84.1,,,0.9999,500000.0,0.0,9003,9110,8901,,,,,1995-12-02 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29
-11031,Georgia CS83 East zone,Georgia  East,,,United States (USA) - Georgia - counties east of 83d 15m West.,9807,30.0,-82.1,,,0.9999,200000.0,0.0,9001,9110,8901,,,,,1995-12-02 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29
-11032,Georgia CS83 West zone,Georgia West,,,United States (USA) - Georgia - counties west of 83d 15m West.,9807,30.0,-84.1,,,0.9999,700000.0,0.0,9001,9110,8901,,,,,1995-12-02 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29
-11101,Idaho CS27 East zone,Idaho East,,,United States (USA) - Idaho - counties east of 113d West.,9807,41.4,-112.1,,,0.999947368,500000.0,0.0,9003,9110,8901,,,,,1995-12-02 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29
-11102,Idaho CS27 Central zone,Idaho Central,,,United States (USA) - Idaho - counties between 113d & 115d West.,9807,41.4,-114.0,,,0.999947368,500000.0,0.0,9003,9110,8901,,,,,1995-12-02 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29
-11103,Idaho CS27 West zone,Idaho West,,,United States (USA) - Idaho - counties west of 115d West.,9807,41.4,-115.45,,,0.999933333,500000.0,0.0,9003,9110,8901,,,,,1995-12-02 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29
-11131,Idaho CS83 East zone,Idaho  East,,,United States (USA) - Idaho - counties east of 113d West.,9807,41.4,-112.1,,,0.999947368,200000.0,0.0,9001,9110,8901,,,,,1995-12-02 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29
-11132,Idaho CS83 Central zone,Idaho  Central,,,United States (USA) - Idaho - counties between 113d & 115d West.,9807,41.4,-114.0,,,0.999947368,500000.0,0.0,9001,9110,8901,,,,,1995-12-02 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29
-11133,Idaho CS83 West zone,Idaho  West,,,United States (USA) - Idaho - counties west of 115d West.,9807,41.4,-115.45,,,0.999933333,800000.0,0.0,9001,9110,8901,,,,,1995-12-02 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29
-11201,Illinois CS27 East zone,Illinois East,,,United States (USA) - Illinois - counties east of 89d 05m West.,9807,36.4,-88.2,,,0.999975,500000.0,0.0,9003,9110,8901,,,,,1995-12-02 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29
-11202,Illinois CS27 West zone,Illinois West,,,United States (USA) - Illinois - counties west of 89d 05m West.,9807,36.4,-90.1,,,0.999941177,500000.0,0.0,9003,9110,8901,,,,,1995-12-02 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29
-11231,Illinois CS83 East zone,Illinois  East,,,United States (USA) - Illinois - counties east of 89d 05m West.,9807,36.4,-88.2,,,0.999975,300000.0,0.0,9001,9110,8901,,,,,1995-12-02 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29
-11232,Illinois CS83 West zone,Illinois  West,,,United States (USA) - Illinois - counties west of 89d 05m West.,9807,36.4,-90.1,,,0.999941177,700000.0,0.0,9001,9110,8901,,,,,1995-12-02 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29
-11301,Indiana CS27 East zone,Indiana East,,,United States (USA) - Indiana - counties east of 86d 25m West.,9807,37.3,-85.4,,,0.999966667,500000.0,0.0,9003,9110,8901,,,,,1995-12-02 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29
-11302,Indiana CS27 West zone,Indiana West,,,United States (USA) - Indiana - counties west of 86d 25m West.,9807,37.3,-87.05,,,0.999966667,500000.0,0.0,9003,9110,8901,,,,,1995-12-02 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29
-11331,Indiana CS83 East zone,Indiana  East,,,United States (USA) - Indiana - counties east of 86d 25m West.,9807,37.3,-85.4,,,0.999966667,100000.0,250000.0,9001,9110,8901,,,,,1995-12-02 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29
-11332,Indiana CS83 West zone,Indiana  West,,,United States (USA) - Indiana - counties west of 86d 25m West.,9807,37.3,-87.05,,,0.999966667,900000.0,250000.0,9001,9110,8901,,,,,1995-12-02 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29
-11401,Iowa CS27 North zone,Iowa North,,,United States (USA) - Iowa - counties north of 42deg North.,9802,41.3,-93.3,43.16,42.04,,2000000.0,0.0,9003,9110,8901,,,,,1999-04-22 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29  99.28
-11402,Iowa CS27 South zone,Iowa South,,,United States (USA) - Iowa - counties south of 42deg North.,9802,40.0,-93.3,41.47,40.37,,2000000.0,0.0,9003,9110,8901,,,,,1999-04-22 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29  99.28
-11431,Iowa CS83 North zone,Iowa North,,,United States (USA) - Iowa - counties north of 42deg North.,9802,41.3,-93.3,43.16,42.04,,1500000.0,1000000.0,9001,9110,8901,,,,,1999-04-22 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29  99.28
-11432,Iowa CS83 South zone,Iowa South,,,United States (USA) - Iowa - counties south of 42deg North.,9802,40.0,-93.3,41.47,40.37,,500000.0,0.0,9001,9110,8901,,,,,1999-04-22 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29  99.28
-11501,Kansas CS27 North zone,Kansas North,,,United States (USA) - Kansas - counties north of 38d 45m North.,9802,38.2,-98.0,39.47,38.43,,2000000.0,0.0,9003,9110,8901,,,,,1999-04-22 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29  99.28
-11502,Kansas CS27 South zone,Kansas South,,,United States (USA) - Kansas - counties south of 38d 45m North.,9802,36.4,-98.3,38.34,37.16,,2000000.0,0.0,9003,9110,8901,,,,,1999-04-22 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29  99.28
-11531,Kansas CS83 North zone,Kansas North,,,United States (USA) - Kansas - counties north of 38d 45m North.,9802,38.2,-98.0,39.47,38.43,,400000.0,0.0,9001,9110,8901,,,,,1999-04-22 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29  99.28
-11532,Kansas CS83 South zone,Kansas South,,,United States (USA) - Kansas - counties south of 38d 45m North.,9802,36.4,-98.3,38.34,37.16,,400000.0,400000.0,9001,9110,8901,,,,,1999-04-22 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29  99.28
-11601,Kentucky CS27 North zone,Kentucky North,,,United States (USA) - Kentucky - counties north of 37d 55m North.,9802,37.3,-84.15,37.58,38.58,,2000000.0,0.0,9003,9110,8901,,,,,1999-04-22 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29  99.28
-11602,Kentucky CS27 South zone,Kentucky South,,,United States (USA) - Kentucky - counties south of 37d 55m North.,9802,36.2,-85.45,36.44,37.56,,2000000.0,0.0,9003,9110,8901,,,,,1999-04-22 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29  99.28
-11631,Kentucky CS83 North zone,Kentucky North,,,United States (USA) - Kentucky - counties north of 37d 55m North.,9802,37.3,-84.15,37.58,37.58,,500000.0,0.0,9001,9110,8901,,,,,1999-04-22 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29  99.28
-11632,Kentucky CS83 South zone,Kentucky South,,,United States (USA) - Kentucky - counties south of 37d 55m North.,9802,36.2,-85.45,37.56,36.44,,500000.0,500000.0,9001,9110,8901,,,,,1999-04-22 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29  99.28
-11701,Louisiana CS27 North zone,Louisiana North,,,United States (USA) - Louisiana - counties north of 30d 55m North.,9802,30.4,-92.3,31.1,32.4,,2000000.0,0.0,9003,9110,8901,,,,,1999-04-22 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29  99.28
-11702,Louisiana CS27 South zone,Louisiana South,,,United States (USA) - Louisiana - counties south of 30d 55m North. Also Gulf of Mexico LA shelf.,9802,28.4,-91.2,29.18,30.42,,2000000.0,0.0,9003,9110,8901,,,,,1999-04-22 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29  99.28
-11731,Louisiana CS83 North zone,Louisiana North,,,United States (USA) - Louisiana - counties north of 30d 55m North.,9802,30.3,-92.3,32.4,31.1,,1000000.0,0.0,9001,9110,8901,,,,,1999-04-22 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29  99.28
-11732,Louisiana CS83 South zone,Louisiana South,,,United States (USA) - Louisiana - counties south of 30d 55m North.,9802,28.3,-91.2,30.42,29.18,,1000000.0,0.0,9001,9110,8901,,,,,1999-04-22 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29  99.28
-11801,Maine CS27 East zone,Maine East,,,United States (USA) - Maine - counties east of 69d 30m West.,9807,43.5,-68.3,,,0.9999,500000.0,0.0,9003,9110,8901,,,,,1995-12-02 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29
-11802,Maine CS27 West zone,Maine West,,,United States (USA) - Maine - counties west of 69d 30m West.,9807,42.5,-70.1,,,0.999966667,500000.0,0.0,9003,9110,8901,,,,,1995-12-02 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29
-11831,Maine CS83 East zone,Maine  East,,,United States (USA) - Maine - counties east of 69d 30m West.,9807,43.4,-68.3,,,0.9999,300000.0,0.0,9001,9110,8901,,,,,1995-12-02 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29
-11832,Maine CS83 West zone,Maine  West,,,United States (USA) - Maine - counties west of 69d 30m West.,9807,42.5,-70.1,,,0.999966667,900000.0,0.0,9001,9110,8901,,,,,1995-12-02 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29
-11900,Maryland CS27,Maryland,,,United States (USA) - Maryland.,9802,37.5,-77.0,38.18,39.27,,800000.0,0.0,9003,9110,8901,,,,,1999-04-22 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29  99.28
-11930,Maryland CS83,Maryland,,,United States (USA) - Maryland.,9802,37.4,-77.0,39.27,38.18,,400000.0,0.0,9001,9110,8901,,,,,1999-04-22 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29  99.28
-12001,Massachusetts CS27 Mainland zone,Massachusetts Mainland,,,United States (USA) - Massachusetts onshore.,9802,41.0,-71.3,41.43,42.41,,600000.0,0.0,9003,9110,8901,,,,,1999-04-22 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29  99.28
-12002,Massachusetts CS27 Island zone,Massachusetts Island,,,United States (USA) - Massachusetts islands.,9802,41.0,-70.3,41.17,41.29,,200000.0,0.0,9003,9110,8901,,,,,1999-04-22 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29  99.28
-12031,Massachusetts CS83 Mainland zone,Massachusetts Mainland,,,United States (USA) - Massachusetts onshore.,9802,41.0,-71.3,42.41,41.43,,200000.0,750000.0,9001,9110,8901,,,,,1999-04-22 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29  99.28
-12032,Massachusetts CS83 Island zone,Massachusetts Island,,,United States (USA) - Massachusetts islands.,9802,41.0,-70.3,41.29,41.17,,500000.0,0.0,9001,9110,8901,,,,,1999-04-22 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29  99.28
-12101,Michigan State Plane East zone,Michigan East,,,United States (USA) - Michigan.,9807,41.3,-83.4,,,0.999942857,500000.0,0.0,9003,9110,8901,,,,,1998-11-11 00:00:00,USGS Professional Paper #1395,EPSG,Obsolete. Superseded by north central and south zones.,95.30  96.29  98.22
-12102,Michigan State Plane Old Central zone,Michigan Old Central,,,United States (USA) - Michigan.,9807,41.3,-85.45,,,0.999909091,500000.0,0.0,9003,9110,8901,,,,,1998-11-11 00:00:00,USGS Professional Paper #1395,EPSG,Obsolete. Superseded by north central and south zones.,95.30  96.29  98.22
-12103,Michigan State Plane West zone,Michigan West,,,United States (USA) - Michigan.,9807,41.3,-88.45,,,0.999909091,500000.0,0.0,9003,9110,8901,,,,,1998-11-11 00:00:00,USGS Professional Paper #1395,EPSG,Obsolete. Superseded by north central and south zones.,95.30  96.29  98.22
-12111,Michigan CS27 North zone,Michigan North,,,United States (USA) - Michigan - counties north of 45d 45m North.,9802,44.47,-87.0,45.29,47.05,,2000000.0,0.0,9003,9110,8901,,,,,1999-04-22 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.28  96.29  98.22  99.28
-12112,Michigan CS27 Central zone,Michigan Central,,,United States (USA) - Michigan - counties between 45d 45m & 43d 55m North.,9802,43.19,-84.2,44.11,45.42,,2000000.0,0.0,9003,9110,8901,,,,,1999-04-22 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.28  96.29  98.22  99.28
-12113,Michigan CS27 South zone,Michigan South,,,United States (USA) - Michigan - counties south of 43d 55m North.,9802,41.3,-84.2,42.06,43.4,,2000000.0,0.0,9003,9110,8901,,,,,1999-04-22 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.28  96.29  98.22  99.28
-12141,Michigan CS83 North zone,Michigan North,,,United States (USA) - Michigan - counties north of 45d 45m North.,9802,44.47,-87.0,47.05,45.29,,8000000.0,0.0,9001,9110,8901,,,,,1999-04-22 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29  99.28
-12142,Michigan CS83 Central zone,Michigan Central,,,United States (USA) - Michigan - counties between 45d 45m & 43d 55m North.,9802,43.19,-84.22,45.42,44.11,,6000000.0,0.0,9001,9110,8901,,,,,1999-04-22 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29  99.28
-12143,Michigan CS83 South zone,Michigan South,,,United States (USA) - Michigan - counties south of 43d 55m North.,9802,41.3,-84.22,43.4,42.06,,4000000.0,0.0,9001,9110,8901,,,,,1999-04-22 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29  99.28
-12201,Minnesota CS27 North zone,Minnesota North,,,United States (USA) - Minnesota - counties north of 47d 10m North.,9802,46.3,-93.06,47.02,48.38,,2000000.0,0.0,9003,9110,8901,,,,,1999-04-22 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29  99.28
-12202,Minnesota CS27 Central zone,Minnesota Central,,,United States (USA) - Minnesota - counties between 47d 10m & 45d 30m North.,9802,45.0,-94.15,45.37,47.03,,2000000.0,0.0,9003,9110,8901,,,,,1999-04-22 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29  99.28
-12203,Minnesota CS27 South zone,Minnesota South,,,United States (USA) - Minnesota - counties south of 45d 30m North.,9802,43.0,-94.0,43.47,45.13,,2000000.0,0.0,9003,9110,8901,,,,,1999-04-22 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29  99.28
-12231,Minnesota CS83 North zone,Minnesota North,,,United States (USA) - Minnesota - counties north of 47d 10m North.,9802,46.3,-93.06,48.38,47.02,,800000.0,100000.0,9001,9110,8901,,,,,1999-04-22 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29  99.28
-12232,Minnesota CS83 Central zone,Minnesota Central,,,United States (USA) - Minnesota - counties between 47d 10m & 45d 30m North.,9802,45.0,-94.15,47.03,45.37,,800000.0,100000.0,9001,9110,8901,,,,,1999-04-22 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29  99.28
-12233,Minnesota CS83 South zone,Minnesota South,,,United States (USA) - Minnesota - counties south of 45d 30m North.,9802,43.0,-94.0,45.13,43.47,,800000.0,100000.0,9001,9110,8901,,,,,1999-04-22 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29  99.28
-12301,Mississippi CS27 East zone,Mississippi East,,,United States (USA) - Mississippi - counties east of 89d 40m West.,9807,29.4,-88.5,,,0.99996,500000.0,0.0,9003,9110,8901,,,,,1995-12-02 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29
-12302,Mississippi CS27 West zone,Mississippi West,,,United States (USA) - Mississippi - counties west of 89d 40m West.,9807,30.3,-90.2,,,0.999941177,500000.0,0.0,9003,9110,8901,,,,,1995-12-02 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29
-12331,Mississippi CS83 East zone,Mississippi East,,,United States (USA) - Mississippi - counties east of 89d 40m West.,9807,29.3,-88.5,,,0.99995,300000.0,0.0,9001,9110,8901,,,,,1995-12-02 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29
-12332,Mississippi CS83 West zone,Mississippi West,,,United States (USA) - Mississippi - counties west of 89d 40m West.,9807,29.3,-90.2,,,0.99995,700000.0,0.0,9001,9110,8901,,,,,1995-12-02 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29
-12401,Missouri CS27 East zone,Missouri East,,,United States (USA) - Missouri - counties east of 91d 45m West.,9807,35.5,-90.3,,,0.999933333,500000.0,0.0,9003,9110,8901,,,,,1995-12-02 00:00:00,USGS Professional Paper #1395,EPSG,,95.18  95.30  96.29
-12402,Missouri CS27 Central zone,Missouri Central,,,United States (USA) - Missouri - counties between 91d 45m & 93d 35m West.,9807,35.5,-92.3,,,0.999933333,500000.0,0.0,9003,9110,8901,,,,,1995-12-02 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29
-12403,Missouri CS27 West zone,Missouri West,,,United States (USA) - Missouri - counties west of 93d 35m West.,9807,36.1,-94.3,,,0.999941177,500000.0,0.0,9003,9110,8901,,,,,1995-12-02 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29
-12431,Missouri CS83 East zone,Missouri  East,,,United States (USA) - Missouri - counties east of 91d 45m West..,9807,35.5,-90.3,,,0.999933333,250000.0,0.0,9001,9110,8901,,,,,1995-12-02 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29
-12432,Missouri CS83 Central zone,Missouri Central,,,United States (USA) - Missouri - counties between 91d 45m & 93d 35m West,9807,35.5,-92.3,,,0.999933333,500000.0,0.0,9001,9110,8901,,,,,1995-12-02 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29
-12433,Missouri CS83 West zone,Missouri  West,,,United States (USA) - Missouri - counties west of 93d 35m West.,9807,36.1,-94.3,,,0.999941177,850000.0,0.0,9001,9110,8901,,,,,1995-12-02 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29
-12501,Montana CS27 North zone,Montana North,,,United States (USA) - Montana - counties north of 47d 50m North.,9802,47.0,-109.3,48.43,47.51,,2000000.0,0.0,9003,9110,8901,,,,,1999-04-22 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29  99.28
-12502,Montana CS27 Central zone,Montana Central,,,United States (USA) - Montana - counties between 47d 50m & 46d 40m North.,9802,45.5,-109.3,47.53,46.27,,2000000.0,0.0,9003,9110,8901,,,,,1999-04-22 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29  99.28
-12503,Montana CS27 South zone,Montana South,,,United States (USA) - Montana - counties south of 46d 40m North.,9802,44.0,-109.3,46.24,44.52,,2000000.0,0.0,9003,9110,8901,,,,,1999-04-22 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29  99.28
-12530,Montana CS83,Montana,,,United States (USA) - Montana.,9802,44.15,-109.3,49.0,45.0,,600000.0,0.0,9001,9110,8901,,,,,1999-04-22 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29  99.28
-12601,Nebraska CS27 North zone,Nebraska North,,,United States - Nebraska -Antelope; Blaine; Box Butte; Boyd; Brown; Burt; Cedar; Cherry; Cuming; Dakota; Dawes; Dixon; Garfield; Grant; Holt; Hooker; Keya Paha; Knox; Loup; Madison; Pierce; Rock; Sheridan; Sioux; Stanton; Thomas; Thurston; Wayne; Wheeler,9802,41.2,-100.0,41.51,42.49,,2000000.0,0.0,9003,9110,8901,,,,,1999-04-22 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29  99.28
-12602,Nebraska CS27 South zone,Nebraska South,,,"United States (USA) - Nebraska - counties south of and including Scotts Bluff; Morrill; Garden; Arthur; McPherson; Logan; Custer; Valley; Greeley; Boome, Platte; Colfax; Dodge; Washington.",9802,39.4,-99.3,40.17,41.43,,2000000.0,0.0,9003,9110,8901,,,,,1999-04-22 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29  99.28
-12630,Nebraska CS83,Nebraska,,,United States (USA) - Nebraska.,9802,39.5,-100.0,43.0,40.0,,500000.0,0.0,9001,9110,8901,,,,,1999-04-22 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29  99.28
-12701,Nevada CS27 East zone,Nevada East,,,United States (USA) - Nevada - counties east of 116d  West & Eureka county.,9807,34.45,-115.35,,,0.9999,500000.0,0.0,9003,9110,8901,,,,,1995-12-02 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29
-12702,Nevada CS27 Central zone,Nevada Central,,,United States (USA) - Nevada - Lander & Nye counties.,9807,34.45,-116.4,,,0.9999,500000.0,0.0,9003,9110,8901,,,,,1995-12-02 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29
-12703,Nevada CS27 West zone,Nevada West,,,United States (USA) - Nevada - counties west of 117d 15m West.,9807,34.45,-118.35,,,0.9999,500000.0,0.0,9003,9110,8901,,,,,1995-12-02 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29
-12731,Nevada CS83 East zone,Nevada  East,,,United States (USA) - Nevada - counties east of 116d  West & Eureka county.,9807,34.45,-115.35,,,0.9999,200000.0,8000000.0,9001,9110,8901,,,,,1995-12-02 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29
-12732,Nevada CS83 Central zone,Nevada Central,,,United States (USA) - Nevada - Lander & Nye counties.,9807,34.45,-116.4,,,0.9999,500000.0,6000000.0,9001,9110,8901,,,,,1995-12-02 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29
-12733,Nevada CS83 West zone,Nevada West,,,United States (USA) - Nevada - counties west of 117d 15m West.,9807,34.45,-118.35,,,0.9999,800000.0,4000000.0,9001,9110,8901,,,,,1995-12-02 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29
-12800,New Hampshire CS27,New Hampshire,,,United States (USA) - New Hampshire.,9807,42.3,-71.4,,,0.999966667,500000.0,0.0,9003,9110,8901,,,,,1995-12-02 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29
-12830,New Hampshire CS83,New Hampshire,,,United States (USA) - New Hampshire.,9807,42.3,-71.4,,,0.999966667,300000.0,0.0,9001,9110,8901,,,,,1995-12-02 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29
-12900,New Jersey CS27,New Jersey,,,United States (USA) - New Jersey.,9807,38.5,-74.4,,,0.999975,2000000.0,0.0,9003,9110,8901,,,,,1995-12-02 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29
-12930,New Jersey CS83,New Jersey,,,United States (USA) - New Jersey.,9807,38.5,-74.3,,,0.9999,150000.0,0.0,9001,9110,8901,,,,,1995-12-02 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29
-13001,New Mexico CS27 East zone,New Mexico East,,,United States (USA) - New Mexico - counties east of 105d West.,9807,31.0,-104.2,,,0.999909091,500000.0,0.0,9003,9110,8901,,,,,1995-12-02 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29
-13002,New Mexico CS27 Central zone,New Mexico Central,,,United States (USA) - New Mexico - counties between 105d & 107d 15m West.,9807,31.0,-106.15,,,0.9999,500000.0,0.0,9003,9110,8901,,,,,1995-12-02 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29
-13003,New Mexico CS27 West zone,New Mexico West,,,United States (USA) - New Mexico - counties west of 107d 15m West.,9807,31.0,-107.5,,,0.999916667,500000.0,0.0,9003,9110,8901,,,,,1995-12-02 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29
-13031,New Mexico CS83 East zone,New Mexico East,,,United States (USA) - New Mexico - counties east of 105d West.,9807,31.0,-104.2,,,0.999909091,165000.0,0.0,9001,9110,8901,,,,,1995-12-02 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29
-13032,New Mexico CS83 Central zone,New Mexico Central,,,United States (USA) - New Mexico - counties between 105d & 107d 15m West.,9807,31.0,-106.15,,,0.9999,500000.0,0.0,9001,9110,8901,,,,,1995-12-02 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29
-13033,New Mexico CS83 West zone,New Mexico West,,,United States (USA) - New Mexico - counties west of 107d 15m West.,9807,31.0,-107.5,,,0.999916667,830000.0,0.0,9001,9110,8901,,,,,1995-12-02 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29
-13101,New York CS27 East zone,New York East,,,United States (USA) - New York - counties east of 75d 15m West excluding Long Island.,9807,40.0,-74.2,,,0.999966667,500000.0,0.0,9003,9110,8901,,,,,1995-12-02 00:00:00,USGS Professional Paper #1395,EPSG,,95.18  95.30  96.29
-13102,New York CS27 Central zone,New York Central,,,United States (USA) - New York - counties between 75d 15m & 77d 30m West.,9807,40.0,-76.35,,,0.9999375,500000.0,0.0,9003,9110,8901,,,,,1995-12-02 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29
-13103,New York CS27 West zone,New York West,,,United States (USA) - New York - counties west of 77d 30m West.,9807,40.0,-78.35,,,0.9999375,500000.0,0.0,9003,9110,8901,,,,,1995-12-02 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29
-13104,New York CS27 Long Island zone,New York Long Island,,,United States (USA) - New York - Long Island.,9802,40.3,-74.0,41.02,40.4,,1000000.0,0.0,9003,9110,8901,,,,,1999-04-22 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29  99.28
-13131,New York CS83 East zone,New York  East,,,United States (USA) - New York - counties east of 75d 15m West excluding Long Island.,9807,38.5,-74.3,,,0.9999,150000.0,0.0,9001,9110,8901,,,,,1995-12-02 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29
-13132,New York CS83 Central zone,New York Central,,,United States (USA) - New York - counties between 75d 15m & 77d 30m West.,9807,40.0,-76.35,,,0.9999375,250000.0,0.0,9001,9110,8901,,,,,1995-12-02 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29
-13133,New York CS83 West zone,New York  West,,,United States (USA) - New York - counties west of 77d 30m West.,9807,40.0,-78.35,,,0.9999375,350000.0,0.0,9001,9110,8901,,,,,1995-12-02 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29
-13134,New York CS83 Long Island zone,New York Long Island,,,United States (USA) - New York - Long Island.,9802,40.1,-74.0,41.02,40.4,,300000.0,0.0,9001,9110,8901,,,,,1999-04-22 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29  99.28
-13200,North Carolina CS27,North Carolina,,,United States (USA) - North Carolina.,9802,33.45,-79.0,34.2,36.1,,2000000.0,0.0,9003,9110,8901,,,,,1999-04-22 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29  99.28
-13230,North Carolina CS83,North Carolina,,,United States (USA) - North Carolina.,9802,33.45,-79.0,36.1,34.2,,609601.22,0.0,9001,9110,8901,,,,,1999-04-22 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29  99.28
-13301,North Dakota CS27 North zone,North Dakota North,,,United States (USA) - North Dakota - counties north of 47d 25m North.,9802,47.0,-100.3,47.26,48.44,,2000000.0,0.0,9003,9110,8901,,,,,1999-04-22 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29  99.28
-13302,North Dakota CS27 South zone,North Dakota South,,,United States (USA) - North Dakota - counties south of 47d 25m North.,9802,45.4,-100.3,46.11,47.29,,2000000.0,0.0,9003,9110,8901,,,,,1999-04-22 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29  99.28
-13331,North Dakota CS83 North zone,North Dakota North,,,United States (USA) - North Dakota - counties north of 47d 25m North.,9802,47.0,-100.3,48.44,47.26,,600000.0,0.0,9001,9110,8901,,,,,1999-04-22 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29  99.28
-13332,North Dakota CS83 South zone,North Dakota South,,,United States (USA) - North Dakota - counties south of 47d 25m North.,9802,45.4,-100.3,47.29,46.11,,600000.0,0.0,9001,9110,8901,,,,,1999-04-22 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29  99.28
-13401,Ohio CS27 North zone,Ohio North,,,United States (USA) - Ohio - counties north of 40d 15m North.,9802,39.4,-82.3,40.26,41.42,,2000000.0,0.0,9003,9110,8901,,,,,1999-04-22 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29  99.28
-13402,Ohio CS27 South zone,Ohio South,,,United States (USA) - Ohio - counties south of 40d 15m North.,9802,38.0,-82.3,38.44,40.02,,2000000.0,0.0,9003,9110,8901,,,,,1999-04-22 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29  99.28
-13431,Ohio CS83 North zone,Ohio North,,,United States (USA) - Ohio - counties north of 40d 15m North.,9802,39.4,-82.3,41.42,40.26,,600000.0,0.0,9001,9110,8901,,,,,1999-04-22 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29  99.28
-13432,Ohio CS83 South zone,Ohio South,,,United States (USA) - Ohio - counties south of 40d 15m North.,9802,38.0,-82.3,40.02,38.44,,600000.0,0.0,9001,9110,8901,,,,,1999-04-22 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29  99.28
-13501,Oklahoma CS27 North zone,Oklahoma North,,,United States (USA) - Oklahoma - counties north of 35d 20m North.,9802,35.0,-98.0,35.34,36.46,,2000000.0,0.0,9003,9110,8901,,,,,1999-04-22 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29  99.28
-13502,Oklahoma CS27 South zone,Oklahoma South,,,United States (USA) - Oklahoma - counties south of 35d 20m North.,9802,33.2,-98.0,33.56,35.14,,2000000.0,0.0,9003,9110,8901,,,,,1999-04-22 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29  99.28
-13531,Oklahoma CS83 North zone,Oklahoma North,,,United States (USA) - Oklahoma - counties north of 35d 20m North.,9802,35.0,-98.0,36.46,35.34,,600000.0,0.0,9001,9110,8901,,,,,1999-04-22 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29  99.28
-13532,Oklahoma CS83 South zone,Oklahoma South,,,United States (USA) - Oklahoma - counties south of 35d 20m North.,9802,33.2,-98.0,35.14,33.56,,600000.0,0.0,9001,9110,8901,,,,,1999-04-22 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29  99.28
-13601,Oregon CS27 North zone,Oregon North,,,United States (USA) - Oregon - counties north of 44d 15m North.,9802,43.4,-120.3,44.2,46.0,,2000000.0,0.0,9003,9110,8901,,,,,1999-04-22 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29  99.28
-13602,Oregon CS27 South zone,Oregon South,,,United States (USA) - Oregon - counties south of 44d 15m North.,9802,41.4,-120.3,42.2,44.0,,2000000.0,0.0,9003,9110,8901,,,,,1999-04-22 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29  99.28
-13631,Oregon CS83 North zone,Oregon North,,,United States (USA) - Oregon - counties north of 44d 15m North.,9802,43.4,-120.3,46.0,44.2,,2500000.0,0.0,9001,9110,8901,,,,,1999-04-22 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29  99.28
-13632,Oregon CS83 South zone,Oregon South,,,United States (USA) - Oregon - counties south of 44d 15m North.,9802,41.4,-120.3,44.0,42.2,,1500000.0,0.0,9001,9110,8901,,,,,1999-04-22 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29  99.28
-13701,Pennsylvania CS27 North zone,Pennsylvania North,,,United States (USA) - Pennsylvania - counties north of 40d 50m North.,9802,40.1,-77.45,40.53,41.57,,2000000.0,0.0,9003,9110,8901,,,,,1999-04-22 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29  99.28
-13702,Pennsylvania CS27 South zone,Pennsylvania South,,,United States (USA) - Pennsylvania - counties south of 40d 50m North.,9802,39.2,-77.45,39.56,40.48,,2000000.0,0.0,9003,9110,8901,,,,,1999-04-22 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29  99.28
-13731,Pennsylvania CS83 North zone,Pennsylvania North,,,United States (USA) - Pennsylvania - counties north of 40d 50m North.,9802,40.1,-77.45,41.57,40.53,,600000.0,0.0,9001,9110,8901,,,,,1999-04-22 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29  99.28
-13732,Pennsylvania CS83 South zone,Pennsylvania South,,,United States (USA) - Pennsylvania - counties south of 40d 50m North.,9802,39.2,-77.45,40.58,39.56,,600000.0,0.0,9001,9110,8901,,,,,1999-04-22 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29  99.28
-13800,Rhode Island CS27,Rhode Island,,,United States (USA) - Rhode Island.,9807,41.05,-71.3,,,0.9999938,500000.0,0.0,9003,9110,8901,,,,,1995-12-02 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29
-13830,Rhode Island CS83,Rhode Island,,,United States (USA) - Rhode Island.,9807,41.05,-71.3,,,0.99999375,100000.0,0.0,9001,9110,8901,,,,,1995-12-02 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29
-13901,South Carolina CS27 North zone,South Carolina North,,,United States (USA) - South Carolina counties north of and including Edgefield; Saluda; Lexington; Calhoun; Sumter; Florence; Marion & Horry.,9802,33.0,-81.0,33.46,34.58,,2000000.0,0.0,9003,9110,8901,,,,,1999-04-22 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29  99.28
-13902,South Carolina CS27 South zone,South Carolina South,,,United States (USA) - South Carolina - Aiken; Allendale; Bamberg; Barnwell; Beaufort; Berkeley; Charleston; Clarendon; Colleton; Dorchester; Georgetown; Hampton; Jasper; Orangeburg & Williamsburg counties.,9802,31.5,-81.0,32.2,33.4,,2000000.0,0.0,9003,9110,8901,,,,,1999-04-22 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29  99.28
-13930,South Carolina CS83,South Carolina,,,United States (USA) - South Carolina.,9802,31.5,-81.0,34.5,32.3,,609600.0,0.0,9001,9110,8901,,,,,1999-04-22 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29  99.28
-14001,South Dakota CS27 North zone,South Dakota North,,,United States (USA) - South Dakota - counties north of 44d 20m North.,9802,43.5,-100.0,44.25,45.41,,2000000.0,0.0,9003,9110,8901,,,,,1999-04-22 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29  99.28
-14002,South Dakota CS27 South zone,South Dakota South,,,United States (USA) - South Dakota - counties south of 44d 20m North.,9802,42.2,-100.2,42.5,44.24,,2000000.0,0.0,9003,9110,8901,,,,,1999-04-22 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29  99.28
-14031,South Dakota CS83 North zone,South Dakota North,,,United States (USA) - South Dakota - counties north of 44d 20m North.,9802,43.5,-100.0,45.41,44.25,,600000.0,0.0,9001,9110,8901,,,,,1999-04-22 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29  99.28
-14032,South Dakota CS83 South zone,South Dakota South,,,United States (USA) - South Dakota - counties south of 44d 20m North.,9802,42.2,-100.2,44.24,42.5,,600000.0,0.0,9001,9110,8901,,,,,1999-04-22 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29  99.28
-14100,Tennessee CS27,Tennessee,,,United States (USA) - Tennessee.,9802,34.4,-86.0,35.15,36.25,,100000.0,0.0,9003,9110,8901,,,,,1999-04-22 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29  99.28
-14130,Tennessee CS83,Tennessee,,,United States (USA) - Tennessee.,9802,34.2,-86.0,36.25,35.15,,600000.0,0.0,9001,9110,8901,,,,,1999-04-22 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29  99.28
-14201,Texas CS27 North zone,Texas North,,,United States (USA) - Texas - counties north of 34d 20m North.,9802,34.0,-101.3,34.39,36.11,,2000000.0,0.0,9003,9110,8901,,,,,1999-04-22 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29  99.28
-14202,Texas CS27 North Central zone,Texas North Central,,,United States (USA) - Texas - counties between 34d 20m & 32deg North.,9802,31.4,-97.3,32.08,33.58,,2000000.0,0.0,9003,9110,8901,,,,,1999-04-22 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29  99.28
-14203,Texas CS27 Central zone,Texas Central,,,United States (USA) - Texas - counties between 32deg & 30d 10m North.,9802,29.4,-100.2,30.07,31.53,,2000000.0,0.0,9003,9110,8901,,,,,1999-04-22 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29  99.28
-14204,Texas CS27 South Central zone,Texas South Central,,,United States (USA) - Texas - counties between 30d 10m & 28d 05m North.,9802,27.5,-99.0,28.23,30.17,,2000000.0,0.0,9003,9110,8901,,,,,1999-04-22 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29  99.28
-14205,Texas CS27 South zone,Texas South,,,United States (USA) - Texas - counties south of 28d 05m North.,9802,25.4,-98.3,26.1,27.5,,2000000.0,0.0,9003,9110,8901,,,,,1999-04-22 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29  99.28
-14231,Texas CS83 North zone,Texas North,,,United States (USA) - Texas - counties north of 34d 20m North.,9802,34.0,-101.3,36.11,34.39,,200000.0,1000000.0,9001,9110,8901,,,,,1999-04-22 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29  99.28
-14232,Texas CS83 North Central zone,Texas North Central,,,United States (USA) - Texas - counties between 34d 20m & 32deg North.,9802,31.4,-98.3,33.58,32.08,,600000.0,2000000.0,9001,9110,8901,,,,,1999-04-22 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29  99.28
-14233,Texas CS83 Central zone,Texas Central,,,United States (USA) - Texas - counties between 32deg & 30d 10m North.,9802,29.4,-100.2,31.53,30.07,,700000.0,3000000.0,9001,9110,8901,,,,,1999-04-22 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29  99.28
-14234,Texas CS83 South Central zone,Texas South Central,,,United States (USA) - Texas - counties between 30d 10m & 28d 05m North.,9802,27.5,-99.0,30.17,28.23,,600000.0,4000000.0,9001,9110,8901,,,,,1999-04-22 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29  99.28
-14235,Texas CS83 South zone,Texas South,,,United States (USA) - Texas - counties south of 28d 05m North.,9802,25.4,-98.3,27.5,26.1,,300000.0,5000000.0,9001,9110,8901,,,,,1999-04-22 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29  99.28
-14301,Utah CS27 North zone,Utah North,,,United States (USA) - Utah - counties north of 40d 50m North.,9802,40.2,-111.3,40.43,41.47,,2000000.0,0.0,9003,9110,8901,,,,,1999-04-22 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29  99.28
-14302,Utah CS27 Central zone,Utah Central,,,United States (USA) - Utah - counties between 40d 50m & 38d 30m North.,9802,38.2,-111.3,39.01,40.39,,2000000.0,0.0,9003,9110,8901,,,,,1999-04-22 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29  99.28
-14303,Utah CS27 South zone,Utah South,,,United States (USA) - Utah - counties south of 38d 30m North.,9802,36.4,-111.3,37.13,38.21,,2000000.0,0.0,9003,9110,8901,,,,,1999-04-22 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29  99.28
-14331,Utah CS83 North zone,Utah North,,,United States (USA) - Utah - counties north of 40d 50m North.,9802,40.2,-111.3,41.47,40.43,,500000.0,1000000.0,9001,9110,8901,,,,,1999-04-22 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29  99.28
-14332,Utah CS83 Central zone,Utah Central,,,United States (USA) - Utah - counties between 40d 50m & 38d 30m North.,9802,38.2,-111.3,40.39,39.01,,500000.0,2000000.0,9001,9110,8901,,,,,1999-04-22 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29  99.28
-14333,Utah CS83 South zone,Utah South,,,United States (USA) - Utah - counties south of 38d 30m North.,9802,36.4,-111.3,38.21,37.13,,500000.0,3000000.0,9001,9110,8901,,,,,1999-04-22 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29  99.28
-14400,Vermont CS27,Vermont,,,United States (USA) - Vermont.,9807,42.3,-72.3,,,0.999964286,500000.0,0.0,9003,9110,8901,,,,,1995-12-02 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29
-14430,Vermont CS83,Vermont,,,United States (USA) - Vermont.,9807,42.3,-72.3,,,0.999964286,500000.0,0.0,9001,9110,8901,,,,,1995-12-02 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29
-14501,Virginia CS27 North zone,Virginia North,,,United States (USA) - Virginia - counties north of 38d 05m North.,9802,37.4,-78.3,38.02,39.12,,2000000.0,0.0,9003,9110,8901,,,,,1999-04-22 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29  99.28
-14502,Virginia CS27 South zone,Virginia South,,,United States (USA) - Virginia - counties south of 38d 05m North.,9802,36.2,-78.3,36.46,37.58,,2000000.0,0.0,9003,9110,8901,,,,,1999-04-22 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29  99.28
-14531,Virginia CS83 North zone,Virginia North,,,United States (USA) - Virginia - counties north of 38d 05m North.,9802,37.4,-78.3,39.12,38.02,,3500000.0,2000000.0,9001,9110,8901,,,,,1999-04-22 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29  99.28
-14532,Virginia CS83 South zone,Virginia South,,,United States (USA) - Virginia - counties south of 38d 05m North.,9802,36.2,-78.3,37.58,36.46,,3500000.0,1000000.0,9001,9110,8901,,,,,1999-04-22 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29  99.28
-14601,Washington CS27 North zone,Washington North,,,United States (USA) - Washington - counties north of 47d 30m North.,9802,47.0,-120.5,47.3,48.44,,2000000.0,0.0,9003,9110,8901,,,,,1999-04-22 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29  99.28
-14602,Washington CS27 South zone,Washington South,,,United States (USA) - Washington - counties south of 47d 30m North.,9802,45.2,-120.3,45.5,47.2,,2000000.0,0.0,9003,9110,8901,,,,,1999-04-22 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29  99.28
-14631,Washington CS83 North zone,Washington North,,,United States (USA) - Washington - counties north of 47d 30m North.,9802,47.0,-120.5,48.44,47.3,,500000.0,0.0,9001,9110,8901,,,,,1999-04-22 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29  99.28
-14632,Washington CS83 South zone,Washington South,,,United States (USA) - Washington - counties south of 47d 30m North.,9802,45.2,-120.3,47.2,45.5,,500000.0,0.0,9001,9110,8901,,,,,1999-04-22 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29  99.28
-14701,West Virginia CS27 North zone,West Virginia North,,,United States (USA) - West Virginia - counties north of 39deg North.,9802,38.3,-79.3,39.0,40.15,,2000000.0,0.0,9003,9110,8901,,,,,1999-04-22 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29  99.28
-14702,West Virginia CS27 South zone,West Virginia South,,,United States (USA) - West Virginia - counties south of 39deg North.,9802,37.0,-81.0,37.29,38.53,,2000000.0,0.0,9003,9110,8901,,,,,1999-04-22 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29  99.28
-14731,West Virginia CS83 North zone,West Virginia North,,,United States (USA) - West Virginia - counties north of 39deg North.,9802,38.3,-79.3,40.15,39.0,,600000.0,0.0,9001,9110,8901,,,,,1999-04-22 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29  99.28
-14732,West Virginia CS83 South zone,West Virginia South,,,United States (USA) - West Virginia - counties south of 39deg North.,9802,37.0,-81.0,38.53,37.29,,600000.0,0.0,9001,9110,8901,,,,,1999-04-22 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29  99.28
-14801,Wisconsin CS27 North zone,Wisconsin North,,,United States (USA) - Wisconsin - counties north of 45d 35m North.,9802,45.1,-90.0,45.34,46.46,,2000000.0,0.0,9003,9110,8901,,,,,1999-04-22 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29  99.28
-14802,Wisconsin CS27 Central zone,Wisconsin Central,,,United States (USA) - Wisconsin - counties between 45d 35m & 44d 15m North.,9802,43.5,-90.0,44.15,45.3,,2000000.0,0.0,9003,9110,8901,,,,,1999-04-22 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29  99.28
-14803,Wisconsin CS27 South zone,Wisconsin South,,,United States (USA) - Wisconsin - counties south of 44d 15m North.,9802,42.0,-90.0,42.44,44.04,,2000000.0,0.0,9003,9110,8901,,,,,1999-04-22 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29  99.28
-14831,Wisconsin CS83 North zone,Wisconsin North,,,United States (USA) - Wisconsin - counties north of 45d 35m North.,9802,45.1,-90.0,46.46,45.34,,600000.0,0.0,9001,9110,8901,,,,,1999-04-22 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29  99.28
-14832,Wisconsin CS83 Central zone,Wisconsin Central,,,United States (USA) - Wisconsin - counties between 45d 35m & 44d 15m North.,9802,43.5,-90.0,45.3,44.15,,600000.0,0.0,9001,9110,8901,,,,,1999-04-22 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29  99.28
-14833,Wisconsin CS83 South zone,Wisconsin South,,,United States (USA) - Wisconsin - counties south of 44d 15m North.,9802,42.0,-90.0,44.04,42.44,,600000.0,0.0,9001,9110,8901,,,,,1999-04-22 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29  99.28
-14901,Wyoming CS27 East zone,Wyoming East,,,United States (USA) - Wyoming - counties east of 106d West.,9807,40.4,-105.1,,,0.999941177,500000.0,0.0,9003,9110,8901,,,,,1995-12-02 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29
-14902,Wyoming CS27 East Central zone,Wyoming East Central,,,United States (USA) - Wyoming - counties between 106d & 108d 10m West.,9807,40.4,-107.2,,,0.999941177,500000.0,0.0,9003,9110,8901,,,,,1995-12-02 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29
-14903,Wyoming CS27 West Central zone,Wyoming West Central,,,United States (USA) - Wyoming - counties between 108d 10m & 109d 40m West.,9807,40.4,-108.45,,,0.999941177,500000.0,0.0,9003,9110,8901,,,,,1995-12-02 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29
-14904,Wyoming CS27 West zone,Wyoming West,,,United States (USA) - Wyoming - counties west of 109d 40m West.,9807,40.4,-110.05,,,0.999941177,500000.0,0.0,9003,9110,8901,,,,,1995-12-02 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29
-14931,Wyoming CS83 East zone,Wyoming East,,,United States (USA) - Wyoming - counties east of 106d West.,9807,40.3,-105.1,,,0.9999375,200000.0,0.0,9001,9110,8901,,,,,1995-12-02 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29
-14932,Wyoming CS83 East Central zone,Wyoming East Central,,,United States (USA) - Wyoming - counties between 106d & 108d 10m West.,9807,40.3,-107.2,,,0.9999375,400000.0,100000.0,9001,9110,8901,,,,,1995-12-02 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29
-14933,Wyoming CS83 West Central zone,Wyoming West Central,,,United States (USA) - Wyoming - counties between 108d 10m & 109d 40m West.,9807,40.3,-108.45,,,0.9999375,600000.0,0.0,9001,9110,8901,,,,,1995-12-02 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29
-14934,Wyoming CS83 West zone,Wyoming West,,,United States (USA) - Wyoming - counties west of 109d 40m West.,9807,40.3,-110.05,,,0.9999375,800000.0,100000.0,9001,9110,8901,,,,,1995-12-02 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29
-15001,Alaska CS27 zone 1,Alaska zone 1,,,United States (USA) - Alaska - east of 141 deg West; i.e. Panhandle.,9812,57.0,-133.4,323.07483685,323.07483685,0.9999,16404166.67,-16404166.67,9003,9110,8901,,,,,1997-04-11 00:00:00,USGS Professional Paper #1395,EPSG,,96.29  97.08
-15002,Alaska CS27 zone 2,Alaska zone 2,,,United States (USA) - Alaska - 141deg to 144deg West.,9807,54.0,-142.0,,,0.9999,500000.0,0.0,9003,9102,8901,,,,,1995-12-02 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29
-15003,Alaska CS27 zone 3,Alaska zone 3,,,United States (USA) - Alaska - 144deg to 148deg West excluding Kenai Peninsula; Perry Is. and Esther Is.,9807,54.0,-146.0,,,0.9999,500000.0,0.0,9003,9102,8901,,,,,1995-12-02 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29
-15004,Alaska CS27 zone 4,Alaska zone 4,,,United States (USA) - Alaska - 148deg to 152deg West.,9807,54.0,-150.0,,,0.9999,500000.0,0.0,9003,9102,8901,,,,,1995-12-02 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29
-15005,Alaska CS27 zone 5,Alaska zone 5,,,United States (USA) - Alaska - 152deg to 156deg West.,9807,54.0,-154.0,,,0.9999,500000.0,0.0,9003,9102,8901,,,,,1995-12-02 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29
-15006,Alaska CS27 zone 6,Alaska zone 6,,,United States (USA) - Alaska - 156deg to 160deg West.,9807,54.0,-158.0,,,0.9999,500000.0,0.0,9003,9102,8901,,,,,1995-12-02 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29
-15007,Alaska CS27 zone 7,Alaska zone 7,,,United States (USA) - Alaska - 160deg to 164deg West.,9807,54.0,-162.0,,,0.9999,700000.0,0.0,9003,9102,8901,,,,,1995-12-02 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29
-15008,Alaska CS27 zone 8,Alaska zone 8,,,United States (USA) - Alaska - 164deg to 168deg West north of 54d 30m North.,9807,54.0,-166.0,,,0.9999,500000.0,0.0,9003,9102,8901,,,,,1995-12-02 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29
-15009,Alaska CS27 zone 9,Alaska zone 9,,,United States (USA) - Alaska - west of 168deg West and north of 54d 30m North.,9807,54.0,-170.0,,,0.9999,600000.0,0.0,9003,9102,8901,,,,,1995-12-02 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29
-15010,Alaska CS27 zone 10,Alaska zone 10,,,United States (USA) - Alaska - Aleutian Islands.,9802,51.0,-176.0,53.5,51.5,,3000000.0,0.0,9003,9110,8901,,,,,1999-04-22 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29  99.28
-15031,Alaska CS83 zone 1,Alaska zone 1,,,United States (USA) - Alaska - east of 141 deg West; i.e. Panhandle.,9812,57.0,-133.4,323.07483685,323.07483685,0.9999,5000000.0,-5000000.0,9001,9110,8901,,,,,1996-09-12 00:00:00,NOAA manual NOS NGS 5,EPSG,,96.29
-15032,Alaska CS83 zone 2,Alaska zone 2,,,United States (USA) - Alaska - 141deg to 144deg West.,9807,54.0,-142.0,,,0.9999,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29
-15033,Alaska CS83 zone 3,Alaska zone 3,,,United States (USA) - Alaska - 144deg to 148deg West excluding Kenai Peninsula; Perry Is. and Esther Is.,9807,54.0,-146.0,,,0.9999,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29
-15034,Alaska CS83 zone 4,Alaska zone 4,,,United States (USA) - Alaska - 148deg to 152deg West.,9807,54.0,-150.0,,,0.9999,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29
-15035,Alaska CS83 zone 5,Alaska zone 5,,,United States (USA) - Alaska - 152deg to 156deg West.,9807,54.0,-154.0,,,0.9999,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29
-15036,Alaska CS83 zone 6,Alaska zone 6,,,United States (USA) - Alaska - 156deg to 160deg West.,9807,54.0,-158.0,,,0.9999,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29
-15037,Alaska CS83 zone 7,Alaska zone 7,,,United States (USA) - Alaska - 160deg to 164deg West.,9807,54.0,-162.0,,,0.9999,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29
-15038,Alaska CS83 zone 8,Alaska zone 8,,,United States (USA) - Alaska - 164deg to 168deg West north of 54d 30m North.,9807,54.0,-166.0,,,0.9999,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29
-15039,Alaska CS83 zone 9,Alaska zone 9,,,United States (USA) - Alaska - west of 168deg West and north of 54d 30m North.,9807,54.0,-170.0,,,0.9999,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29
-15040,Alaska CS83 zone 10,Alaska zone 10,,,United States (USA) - Alaska - Aleutian Islands.,9802,51.0,-176.0,53.5,51.5,,1000000.0,0.0,9001,9110,8901,,,,,1999-04-22 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29  99.28
-15101,Hawaii CS27 zone 1,Hawaii zone 1,,,United States (USA) - Hawaii - island of Hawaii.,9807,18.5,-155.3,,,0.999966667,500000.0,0.0,9003,9110,8901,,,,,1995-12-02 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29
-15102,Hawaii CS27 zone 2,Hawaii zone 2,,,United States (USA) - Hawaii - Maui; Kahoolawe; Lanai; Molokai.,9807,20.2,-156.4,,,0.999966667,500000.0,0.0,9003,9110,8901,,,,,1995-12-02 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29
-15103,Hawaii CS27 zone 3,Hawaii zone 3,,,United States (USA) - Hawaii - Oahu.,9807,21.1,-158.0,,,0.99999,500000.0,0.0,9003,9110,8901,,,,,1995-12-02 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29
-15104,Hawaii CS27 zone 4,Hawaii zone 4,,,United States (USA) - Hawaii - Kauai.,9807,21.5,-159.3,,,0.99999,500000.0,0.0,9003,9110,8901,,,,,1995-12-02 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29
-15105,Hawaii CS27 zone 5,Hawaii zone 5,,,United States (USA) - Hawaii - Niihau.,9807,21.4,-160.1,,,1.0,500000.0,0.0,9003,9110,8901,,,,,1995-12-02 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29
-15131,Hawaii CS83 zone 1,Hawaii  zone 1,,,United States (USA) - Hawaii - island of Hawaii.,9807,18.5,-155.3,,,0.999966667,500000.0,0.0,9001,9110,8901,,,,,1995-12-02 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29
-15132,Hawaii CS83 zone 2,Hawaii  zone 2,,,United States (USA) - Hawaii - Maui; Kahoolawe; Lanai; Molokai.,9807,20.2,-156.4,,,0.999966667,500000.0,0.0,9001,9110,8901,,,,,1995-12-02 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29
-15133,Hawaii CS83 zone 3,Hawaii  zone 3,,,United States (USA) - Hawaii - Oahu.,9807,21.1,-158.0,,,0.99999,500000.0,0.0,9001,9110,8901,,,,,1995-12-02 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29
-15134,Hawaii CS83 zone 4,Hawaii  zone 4,,,United States (USA) - Hawaii - Kauai.,9807,21.5,-159.3,,,0.99999,500000.0,0.0,9001,9110,8901,,,,,1995-12-02 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29
-15135,Hawaii CS83 zone 5,Hawaii  zone 5,,,United States (USA) - Hawaii - Niihau.,9807,21.4,-160.1,,,1.0,500000.0,0.0,9001,9110,8901,,,,,1995-12-02 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29
-15201,Puerto Rico CS27,Puerto Rico,,,Puerto Rico.,9802,17.5,-66.26,18.26,18.02,,500000.0,0.0,9003,9110,8901,,,,,1999-04-22 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29  99.28
-15202,St. Croix CS27,St. Croix,,,Virgin Islands of US - St. Croix.,9802,17.5,-66.26,18.26,18.02,,500000.0,100000.0,9003,9110,8901,,,,,1999-04-22 00:00:00,USGS Professional Paper #1395,EPSG,,95.30  96.29  99.28
-15230,Puerto Rico & Virgin Islands CS83,Puerto Rico & Virgin Is.,,,Puerto Rico & Virgin Islands of US,9802,17.5,-66.26,18.26,18.02,,200000.0,200000.0,9001,9110,8901,,,,,1999-04-22 00:00:00,NOAA manual NOS NGS 5,EPSG,,95.30  96.29  99.28
-15914,BLM zone 14N in feet,BLM 14N (feet),,,United States (USA) - Gulf of Mexico - west of 96 deg West approximately.,9807,0.0,-99.0,,,0.9996,1640416.67,0.0,9003,9102,8901,,,,,1995-12-02 00:00:00,Minerals Management Service offshore protraction diagrams.,EPSG,"Sometimes locally referred to as \"UTM zone 14\".",95.30  96.29
-15915,BLM zone 15N in feet,BLM 15N (feet),,,United States (USA) - Gulf of Mexico - 96 deg to 90 deg West approximately.,9807,0.0,-93.0,,,0.9996,1640416.67,0.0,9003,9102,8901,,,,,1995-12-02 00:00:00,Minerals Management Service offshore protraction diagrams.,EPSG,"Sometimes locally referred to as \"UTM zone 15\".",95.30  96.29
-15916,BLM zone 16N in feet,BLM 16N (feet),,,United States (USA) - Gulf of Mexico - 90 deg to 84 deg West approximately.,9807,0.0,-87.0,,,0.9996,1640416.67,0.0,9003,9102,8901,,,,,1995-12-02 00:00:00,Minerals Management Service offshore protraction diagrams.,EPSG,"Sometimes locally referred to as \"UTM zone 16\".",95.27  95.30  96.29
-15917,BLM zone 17N in feet,BLM 17N (feet),,,United States (USA) - Gulf of Mexico - east of 84 deg West approximately.,9807,0.0,-81.0,,,0.9996,1640416.67,0.0,9003,9102,8901,,,,,1995-12-02 00:00:00,Minerals Management Service offshore protraction diagrams.,EPSG,"Sometimes locally referred to as \"UTM zone 17\".",95.30  96.29
-16001,UTM zone 1N,,,,180deg to 174deg West; northern hemisphere.,9807,0.0,-177.0,,,0.9996,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16002,UTM zone 2N,,,,174deg West to 168deg West; northern hemisphere.,9807,0.0,-171.0,,,0.9996,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16003,UTM zone 3N,,,,168deg West to 162deg West; northern hemisphere.,9807,0.0,-165.0,,,0.9996,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16004,UTM zone 4N,,,,162deg West to 156deg West; northern hemisphere.,9807,0.0,-159.0,,,0.9996,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16005,UTM zone 5N,,,,156deg West to 150deg West; northern hemisphere.,9807,0.0,-153.0,,,0.9996,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16006,UTM zone 6N,,,,150deg West to 144deg West; northern hemisphere.,9807,0.0,-147.0,,,0.9996,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16007,UTM zone 7N,,,,144deg West to 138deg West; northern hemisphere.,9807,0.0,-141.0,,,0.9996,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16008,UTM zone 8N,,,,138deg West to 132deg West; northern hemisphere.,9807,0.0,-135.0,,,0.9996,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16009,UTM zone 9N,,,,132deg West to 126deg West; northern hemisphere.,9807,0.0,-129.0,,,0.9996,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16010,UTM zone 10N,,,,130deg West to 120deg West; northern hemisphere.,9807,0.0,-123.0,,,0.9996,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16011,UTM zone 11N,,,,120deg West to 114deg West; northern hemisphere.,9807,0.0,-117.0,,,0.9996,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16012,UTM zone 12N,,,,114deg West to 108deg West; northern hemisphere.,9807,0.0,-111.0,,,0.9996,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16013,UTM zone 13N,,,,108deg West to 102deg West; northern hemisphere.,9807,0.0,-105.0,,,0.9996,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16014,UTM zone 14N,,,,102deg West to 96deg West; northern hemisphere.,9807,0.0,-99.0,,,0.9996,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16015,UTM zone 15N,,,,96deg West to 90deg West; northern hemisphere.,9807,0.0,-93.0,,,0.9996,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16016,UTM zone 16N,,,,90deg West to 84deg West; northern hemisphere.,9807,0.0,-87.0,,,0.9996,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16017,UTM zone 17N,,,,84deg West to 78deg West; northern hemisphere.,9807,0.0,-81.0,,,0.9996,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16018,UTM zone 18N,,,,78deg West to 72deg West; northern hemisphere.,9807,0.0,-75.0,,,0.9996,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16019,UTM zone 19N,,,,72deg West to 66deg West; northern hemisphere.,9807,0.0,-69.0,,,0.9996,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16020,UTM zone 20N,,,,66deg West to 60deg West; northern hemisphere.,9807,0.0,-63.0,,,0.9996,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16021,UTM zone 21N,,,,60deg West to 54deg West; northern hemisphere.,9807,0.0,-57.0,,,0.9996,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16022,UTM zone 22N,,,,54deg West to 48deg West; northern hemisphere.,9807,0.0,-51.0,,,0.9996,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16023,UTM zone 23N,,,,48deg West to 42deg West; northern hemisphere.,9807,0.0,-45.0,,,0.9996,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16024,UTM zone 24N,,,,42deg West to 36deg West; northern hemisphere.,9807,0.0,-39.0,,,0.9996,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16025,UTM zone 25N,,,,36deg West to 30deg West; northern hemisphere.,9807,0.0,-33.0,,,0.9996,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16026,UTM zone 26N,,,,30deg West to 24deg West; northern hemisphere.,9807,0.0,-27.0,,,0.9996,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16027,UTM zone 27N,,,,24deg West to 18deg West; northern hemisphere.,9807,0.0,-21.0,,,0.9996,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16028,UTM zone 28N,,,,18deg West to 12deg West; northern hemisphere.,9807,0.0,-15.0,,,0.9996,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16029,UTM zone 29N,,,,12deg West to 6deg West; northern hemisphere.,9807,0.0,-9.0,,,0.9996,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16030,UTM zone 30N,,,,6deg West to 0deg; northern hemisphere.,9807,0.0,-3.0,,,0.9996,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16031,UTM zone 31N,,,,0deg to 6deg East; northern hemisphere.,9807,0.0,3.0,,,0.9996,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16032,UTM zone 32N,,,,6deg East to 12deg East; northern hemisphere.,9807,0.0,9.0,,,0.9996,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16033,UTM zone 33N,,,,12deg East to 18deg East; northern hemisphere.,9807,0.0,15.0,,,0.9996,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16034,UTM zone 34N,,,,18deg East to 24deg East; northern hemisphere.,9807,0.0,21.0,,,0.9996,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16035,UTM zone 35N,,,,24deg East to 30deg East; northern hemisphere.,9807,0.0,27.0,,,0.9996,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16036,UTM zone 36N,,,,30deg East to 36deg East; northern hemisphere.,9807,0.0,33.0,,,0.9996,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16037,UTM zone 37N,,,,36deg East to 42deg East; northern hemisphere.,9807,0.0,39.0,,,0.9996,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16038,UTM zone 38N,,,,42deg East to 48deg East; northern hemisphere.,9807,0.0,45.0,,,0.9996,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16039,UTM zone 39N,,,,48deg East to 54deg East; northern hemisphere.,9807,0.0,51.0,,,0.9996,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16040,UTM zone 40N,,,,54deg East to 60deg East; northern hemisphere.,9807,0.0,57.0,,,0.9996,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16041,UTM zone 41N,,,,60deg East to 66deg East; northern hemisphere.,9807,0.0,63.0,,,0.9996,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16042,UTM zone 42N,,,,66deg East to 72deg East; northern hemisphere.,9807,0.0,69.0,,,0.9996,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16043,UTM zone 43N,,,,72deg East to 78deg East; northern hemisphere.,9807,0.0,75.0,,,0.9996,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16044,UTM zone 44N,,,,78deg East to 84deg East; northern hemisphere.,9807,0.0,81.0,,,0.9996,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16045,UTM zone 45N,,,,84deg East to 90deg East; northern hemisphere.,9807,0.0,87.0,,,0.9996,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16046,UTM zone 46N,,,,90deg East to 96deg East; northern hemisphere.,9807,0.0,93.0,,,0.9996,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16047,UTM zone 47N,,,,96deg East to 102eg East; northern hemisphere.,9807,0.0,99.0,,,0.9996,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16048,UTM zone 48N,,,,102deg East to 108deg East; northern hemisphere.,9807,0.0,105.0,,,0.9996,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16049,UTM zone 49N,,,,108deg East to 114deg East; northern hemisphere.,9807,0.0,111.0,,,0.9996,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16050,UTM zone 50N,,,,114deg East to 120deg East; northern hemisphere.,9807,0.0,117.0,,,0.9996,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16051,UTM zone 51N,,,,120deg East to 126deg East; northern hemisphere.,9807,0.0,123.0,,,0.9996,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16052,UTM zone 52N,,,,126deg East to 132deg East; northern hemisphere.,9807,0.0,129.0,,,0.9996,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16053,UTM zone 53N,,,,132deg East to 138deg East; northern hemisphere.,9807,0.0,135.0,,,0.9996,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16054,UTM zone 54N,,,,138deg East to 144deg East; northern hemisphere.,9807,0.0,141.0,,,0.9996,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16055,UTM zone 55N,,,,144deg East to 150deg East; northern hemisphere.,9807,0.0,147.0,,,0.9996,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16056,UTM zone 56N,,,,150deg East to 156deg East; northern hemisphere.,9807,0.0,153.0,,,0.9996,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16057,UTM zone 57N,,,,156deg East to 162deg East; northern hemisphere.,9807,0.0,159.0,,,0.9996,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16058,UTM zone 58N,,,,162deg East to 168deg East; northern hemisphere.,9807,0.0,165.0,,,0.9996,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16059,UTM zone 59N,,,,168deg East to 174deg East; northern hemisphere.,9807,0.0,171.0,,,0.9996,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16060,UTM zone 60N,,,,174deg East to 180deg; northern hemisphere.,9807,0.0,177.0,,,0.9996,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16061,Universal Polar Stereographic North,UPS North,,,Northern hemisphere polar area.,9810,90.0,0.0,,,0.994,2000000.0,2000000.0,9001,9102,8901,,,,,1997-06-16 00:00:00,,EPSG,,97.18
-16101,UTM zone 1S,,,,180deg to 174deg West; southern hemisphere.,9807,0.0,-177.0,,,0.9996,500000.0,10000000.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16102,UTM zone 2S,,,,174deg West to 168deg West; southern hemisphere.,9807,0.0,-171.0,,,0.9996,500000.0,10000000.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16103,UTM zone 3S,,,,168deg West to 162deg West; southern hemisphere.,9807,0.0,-165.0,,,0.9996,500000.0,10000000.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16104,UTM zone 4S,,,,162deg West to 156deg West; southern hemisphere.,9807,0.0,-159.0,,,0.9996,500000.0,10000000.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16105,UTM zone 5S,,,,156deg West to 150deg West; southern hemisphere.,9807,0.0,-153.0,,,0.9996,500000.0,10000000.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16106,UTM zone 6S,,,,150deg West to 144deg West; southern hemisphere.,9807,0.0,-147.0,,,0.9996,500000.0,10000000.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16107,UTM zone 7S,,,,144deg West to 138deg West; southern hemisphere.,9807,0.0,-141.0,,,0.9996,500000.0,10000000.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16108,UTM zone 8S,,,,138deg West to 132deg West; southern hemisphere.,9807,0.0,-135.0,,,0.9996,500000.0,10000000.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16109,UTM zone 9S,,,,132deg West to 126deg West; southern hemisphere.,9807,0.0,-129.0,,,0.9996,500000.0,10000000.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16110,UTM zone 10S,,,,130deg West to 120deg West; southern hemisphere.,9807,0.0,-123.0,,,0.9996,500000.0,10000000.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16111,UTM zone 11S,,,,120deg West to 114deg West; southern hemisphere.,9807,0.0,-117.0,,,0.9996,500000.0,10000000.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16112,UTM zone 12S,,,,114deg West to 108deg West; southern hemisphere.,9807,0.0,-111.0,,,0.9996,500000.0,10000000.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16113,UTM zone 13S,,,,108deg West to 102deg West; southern hemisphere.,9807,0.0,-105.0,,,0.9996,500000.0,10000000.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16114,UTM zone 14S,,,,102deg West to 96deg West; southern hemisphere.,9807,0.0,-99.0,,,0.9996,500000.0,10000000.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16115,UTM zone 15S,,,,96deg West to 90deg West; southern hemisphere.,9807,0.0,-93.0,,,0.9996,500000.0,10000000.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16116,UTM zone 16S,,,,90deg West to 84deg West; southern hemisphere.,9807,0.0,-87.0,,,0.9996,500000.0,10000000.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16117,UTM zone 17S,,,,84deg West to 78deg West; southern hemisphere.,9807,0.0,-81.0,,,0.9996,500000.0,10000000.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16118,UTM zone 18S,,,,78deg West to 72deg West; southern hemisphere.,9807,0.0,-75.0,,,0.9996,500000.0,10000000.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16119,UTM zone 19S,,,,72deg West to 66deg West; southern hemisphere.,9807,0.0,-69.0,,,0.9996,500000.0,10000000.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16120,UTM zone 20S,,,,66deg West to 60deg West; southern hemisphere.,9807,0.0,-63.0,,,0.9996,500000.0,10000000.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16121,UTM zone 21S,,,,60deg West to 54deg West; southern hemisphere.,9807,0.0,-57.0,,,0.9996,500000.0,10000000.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16122,UTM zone 22S,,,,54deg West to 48deg West; southern hemisphere.,9807,0.0,-51.0,,,0.9996,500000.0,10000000.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16123,UTM zone 23S,,,,48deg West to 42deg West; southern hemisphere.,9807,0.0,-45.0,,,0.9996,500000.0,10000000.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16124,UTM zone 24S,,,,42deg West to 36deg West; southern hemisphere.,9807,0.0,-39.0,,,0.9996,500000.0,10000000.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16125,UTM zone 25S,,,,36deg West to 30deg West; southern hemisphere.,9807,0.0,-33.0,,,0.9996,500000.0,10000000.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16126,UTM zone 26S,,,,30deg West to 24deg West; southern hemisphere.,9807,0.0,-27.0,,,0.9996,500000.0,10000000.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16127,UTM zone 27S,,,,24deg West to 18deg West; southern hemisphere.,9807,0.0,-21.0,,,0.9996,500000.0,10000000.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16128,UTM zone 28S,,,,18deg West to 12deg West; southern hemisphere.,9807,0.0,-15.0,,,0.9996,500000.0,10000000.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16129,UTM zone 29S,,,,12deg West to 6deg West; southern hemisphere.,9807,0.0,-9.0,,,0.9996,500000.0,10000000.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16130,UTM zone 30S,,,,6deg West to 0deg; southern hemisphere.,9807,0.0,-3.0,,,0.9996,500000.0,10000000.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16131,UTM zone 31S,,,,0deg to 6deg East; southern hemisphere.,9807,0.0,3.0,,,0.9996,500000.0,10000000.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16132,UTM zone 32S,,,,6deg East to 12deg East; southern hemisphere.,9807,0.0,9.0,,,0.9996,500000.0,10000000.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16133,UTM zone 33S,,,,12deg East to 18deg East; southern hemisphere.,9807,0.0,15.0,,,0.9996,500000.0,10000000.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16134,UTM zone 34S,,,,18deg East to 24deg East; southern hemisphere.,9807,0.0,21.0,,,0.9996,500000.0,10000000.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16135,UTM zone 35S,,,,24deg East to 30deg East; southern hemisphere.,9807,0.0,27.0,,,0.9996,500000.0,10000000.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16136,UTM zone 36S,,,,30deg East to 36deg East; southern hemisphere.,9807,0.0,33.0,,,0.9996,500000.0,10000000.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16137,UTM zone 37S,,,,36deg East to 42deg East; southern hemisphere.,9807,0.0,39.0,,,0.9996,500000.0,10000000.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16138,UTM zone 38S,,,,42deg East to 48deg East; southern hemisphere.,9807,0.0,45.0,,,0.9996,500000.0,10000000.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16139,UTM zone 39S,,,,48deg East to 54deg East; southern hemisphere.,9807,0.0,51.0,,,0.9996,500000.0,10000000.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16140,UTM zone 40S,,,,54deg East to 60deg East; southern hemisphere.,9807,0.0,57.0,,,0.9996,500000.0,10000000.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16141,UTM zone 41S,,,,60deg East to 66deg East; southern hemisphere.,9807,0.0,63.0,,,0.9996,500000.0,10000000.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16142,UTM zone 42S,,,,66deg East to 72deg East; southern hemisphere.,9807,0.0,69.0,,,0.9996,500000.0,10000000.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16143,UTM zone 43S,,,,72deg East to 78deg East; southern hemisphere.,9807,0.0,75.0,,,0.9996,500000.0,10000000.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16144,UTM zone 44S,,,,78deg East to 84deg East; southern hemisphere.,9807,0.0,81.0,,,0.9996,500000.0,10000000.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16145,UTM zone 45S,,,,84deg East to 90deg East; southern hemisphere.,9807,0.0,87.0,,,0.9996,500000.0,10000000.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16146,UTM zone 46S,,,,90deg East to 96deg East; southern hemisphere.,9807,0.0,93.0,,,0.9996,500000.0,10000000.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16147,UTM zone 47S,,,,96deg East to 102eg East; southern hemisphere.,9807,0.0,99.0,,,0.9996,500000.0,10000000.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16148,UTM zone 48S,,,,102deg East to 108deg East; southern hemisphere.,9807,0.0,105.0,,,0.9996,500000.0,10000000.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16149,UTM zone 49S,,,,108deg East to 114deg East; southern hemisphere.,9807,0.0,111.0,,,0.9996,500000.0,10000000.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16150,UTM zone 50S,,,,114deg East to 120deg East; southern hemisphere.,9807,0.0,117.0,,,0.9996,500000.0,10000000.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16151,UTM zone 51S,,,,120deg East to 126deg East; southern hemisphere.,9807,0.0,123.0,,,0.9996,500000.0,10000000.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16152,UTM zone 52S,,,,126deg East to 132deg East; southern hemisphere.,9807,0.0,129.0,,,0.9996,500000.0,10000000.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16153,UTM zone 53S,,,,132deg East to 138deg East; southern hemisphere.,9807,0.0,135.0,,,0.9996,500000.0,10000000.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16154,UTM zone 54S,,,,138deg East to 144deg East; southern hemisphere.,9807,0.0,141.0,,,0.9996,500000.0,10000000.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16155,UTM zone 55S,,,,144deg East to 150deg East; southern hemisphere.,9807,0.0,147.0,,,0.9996,500000.0,10000000.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16156,UTM zone 56S,,,,150deg East to 156deg East; southern hemisphere.,9807,0.0,153.0,,,0.9996,500000.0,10000000.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16157,UTM zone 57S,,,,156deg East to 162deg East; southern hemisphere.,9807,0.0,159.0,,,0.9996,500000.0,10000000.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16158,UTM zone 58S,,,,162deg East to 168deg East; southern hemisphere.,9807,0.0,165.0,,,0.9996,500000.0,10000000.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16159,UTM zone 59S,,,,168deg East to 174deg East; southern hemisphere.,9807,0.0,171.0,,,0.9996,500000.0,10000000.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16160,UTM zone 60S,,,,174deg East to 180deg; southern hemisphere.,9807,0.0,177.0,,,0.9996,500000.0,10000000.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.28
-16161,Universal Polar Stereographic South,UPS South,,,Southern hemisphere polar area.,9810,-90.0,0.0,,,0.994,2000000.0,2000000.0,9001,9102,8901,,,,,1997-06-16 00:00:00,,EPSG,,97.18
-16202,Gauss-Kruger zone 2,,,,6deg East to 12deg East; northern hemisphere.,9807,0.0,9.0,,,1.0,2500000.0,0.0,9001,9102,8901,,,,,1998-06-30 00:00:00,,EPSG,Original transformation by Gauss-Kruger formula.,
-16203,Gauss-Kruger zone 3,,,,12deg East to 18deg East; northern hemisphere.,9807,0.0,15.0,,,1.0,3500000.0,0.0,9001,9102,8901,,,,,1998-06-30 00:00:00,,EPSG,Original transformation by Gauss-Kruger formula.,
-16204,Gauss-Kruger zone 4,,,,18deg East to 24deg East; northern hemisphere.,9807,0.0,21.0,,,1.0,4500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,Original transformation by Gauss-Kruger formula.,95.28
-16205,Gauss-Kruger zone 5,,,,24deg East to 30deg East; northern hemisphere.,9807,0.0,27.0,,,1.0,5500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,Original transformation by Gauss-Kruger formula.,95.28
-16206,Gauss-Kruger zone 6,,,,30deg East to 36deg East; northern hemisphere.,9807,0.0,33.0,,,1.0,6500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,Original transformation by Gauss-Kruger formula.,95.28
-16207,Gauss-Kruger zone 7,,,,36deg East to 42deg East; northern hemisphere.,9807,0.0,39.0,,,1.0,7500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,Original transformation by Gauss-Kruger formula.,95.28
-16208,Gauss-Kruger zone 8,,,,42deg East to 48deg East; northern hemisphere.,9807,0.0,45.0,,,1.0,8500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,Original transformation by Gauss-Kruger formula.,95.28
-16209,Gauss-Kruger zone 9,,,,48deg East to 54deg East; northern hemisphere.,9807,0.0,51.0,,,1.0,9500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,Original transformation by Gauss-Kruger formula.,95.28
-16210,Gauss-Kruger zone 10,,,,54deg East to 60deg East; northern hemisphere.,9807,0.0,57.0,,,1.0,10500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,Original transformation by Gauss-Kruger formula.,95.28
-16211,Gauss-Kruger zone 11,,,,60deg East to 66deg East; northern hemisphere.,9807,0.0,63.0,,,1.0,11500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,Original transformation by Gauss-Kruger formula.,95.28
-16212,Gauss-Kruger zone 12,,,,66deg East to 72deg East; northern hemisphere.,9807,0.0,69.0,,,1.0,12500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,Original transformation by Gauss-Kruger formula.,95.28
-16213,Gauss-Kruger zone 13,,,,72deg East to 78deg East; northern hemisphere.,9807,0.0,75.0,,,1.0,13500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,Original transformation by Gauss-Kruger formula.,95.28
-16214,Gauss-Kruger zone 14,,,,78deg East to 84deg East; northern hemisphere.,9807,0.0,81.0,,,1.0,14500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,Original transformation by Gauss-Kruger formula.,95.28
-16215,Gauss-Kruger zone 15,,,,84deg East to 90deg East; northern hemisphere.,9807,0.0,87.0,,,1.0,15500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,Original transformation by Gauss-Kruger formula.,95.28
-16216,Gauss-Kruger zone 16,,,,90deg East to 96deg East; northern hemisphere.,9807,0.0,93.0,,,1.0,16500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,Original transformation by Gauss-Kruger formula.,95.28
-16217,Gauss-Kruger zone 17,,,,96deg East to 102eg East; northern hemisphere.,9807,0.0,99.0,,,1.0,17500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,Original transformation by Gauss-Kruger formula.,95.28
-16218,Gauss-Kruger zone 18,,,,102deg East to 108deg East; northern hemisphere.,9807,0.0,105.0,,,1.0,18500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,Original transformation by Gauss-Kruger formula.,95.28
-16219,Gauss-Kruger zone 19,,,,108deg East to 114deg East; northern hemisphere.,9807,0.0,111.0,,,1.0,19500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,Original transformation by Gauss-Kruger formula.,95.28
-16220,Gauss-Kruger zone 20,,,,114deg East to 120deg East; northern hemisphere.,9807,0.0,117.0,,,1.0,20500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,Original transformation by Gauss-Kruger formula.,95.28
-16221,Gauss-Kruger zone 21,,,,120deg East to 126deg East; northern hemisphere.,9807,0.0,123.0,,,1.0,21500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,Original transformation by Gauss-Kruger formula.,95.28
-16222,Gauss-Kruger zone 22,,,,126deg East to 132deg East; northern hemisphere.,9807,0.0,129.0,,,1.0,22500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,Original transformation by Gauss-Kruger formula.,95.28
-16223,Gauss-Kruger zone 23,,,,132deg East to 138deg East; northern hemisphere.,9807,0.0,135.0,,,1.0,23500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,Original transformation by Gauss-Kruger formula.,95.28
-16224,Gauss-Kruger zone 24,,,,138deg East to 144deg East; northern hemisphere.,9807,0.0,141.0,,,1.0,24500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,Original transformation by Gauss-Kruger formula.,95.28
-16225,Gauss-Kruger zone 25,,,,144deg East to 150deg East; northern hemisphere.,9807,0.0,147.0,,,1.0,25500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,Original transformation by Gauss-Kruger formula.,95.28
-16226,Gauss-Kruger zone 26,,,,150deg East to 156deg East; northern hemisphere.,9807,0.0,153.0,,,1.0,26500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,Original transformation by Gauss-Kruger formula.,95.28
-16227,Gauss-Kruger zone 27,,,,156deg East to 162deg East; northern hemisphere.,9807,0.0,159.0,,,1.0,27500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,Original transformation by Gauss-Kruger formula.,95.28
-16228,Gauss-Kruger zone 28,,,,162deg East to 168deg East; northern hemisphere.,9807,0.0,165.0,,,1.0,28500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,Original transformation by Gauss-Kruger formula.,95.28
-16229,Gauss-Kruger zone 29,,,,168deg East to 174deg East; northern hemisphere.,9807,0.0,171.0,,,1.0,29500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,Original transformation by Gauss-Kruger formula.,95.28
-16230,Gauss-Kruger zone 30,,,,174deg East to 180deg; northern hemisphere.,9807,0.0,177.0,,,1.0,30500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,Original transformation by Gauss-Kruger formula.,95.28
-16231,Gauss-Kruger zone 31,,,,180deg to 174deg West; northern hemisphere.,9807,0.0,-177.0,,,1.0,31500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,Original transformation by Gauss-Kruger formula.,95.28
-16232,Gauss-Kruger zone 32,,,,174deg West to 168deg West; northern hemisphere.,9807,0.0,-171.0,,,1.0,32500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,Original transformation by Gauss-Kruger formula.,95.28
-16302,Gauss-Kruger 2N,,,,6deg East to 12deg East; northern hemisphere.,9807,0.0,9.0,,,1.0,500000.0,0.0,9001,9102,8901,,,,,1998-06-30 00:00:00,,EPSG,Original transformation by Gauss-Kruger formula.,
-16303,Gauss-Kruger 3N,,,,12deg East to 18deg East; northern hemisphere.,9807,0.0,15.0,,,1.0,500000.0,0.0,9001,9102,8901,,,,,1998-06-30 00:00:00,,EPSG,Original transformation by Gauss-Kruger formula.,
-16304,Gauss-Kruger 4N,,,,18deg East to 24deg East; northern hemisphere.,9807,0.0,21.0,,,1.0,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,Original transformation by Gauss-Kruger formula.,95.28
-16305,Gauss-Kruger 5N,,,,24deg East to 30deg East; northern hemisphere.,9807,0.0,27.0,,,1.0,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,Original transformation by Gauss-Kruger formula.,95.28
-16306,Gauss-Kruger 6N,,,,30deg East to 36deg East; northern hemisphere.,9807,0.0,33.0,,,1.0,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,Original transformation by Gauss-Kruger formula.,95.28
-16307,Gauss-Kruger 7N,,,,36deg East to 42deg East; northern hemisphere.,9807,0.0,39.0,,,1.0,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,Original transformation by Gauss-Kruger formula.,95.28
-16308,Gauss-Kruger 8N,,,,42deg East to 48deg East; northern hemisphere.,9807,0.0,45.0,,,1.0,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,Original transformation by Gauss-Kruger formula.,95.28
-16309,Gauss-Kruger 9N,,,,48deg East to 54deg East; northern hemisphere.,9807,0.0,51.0,,,1.0,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,Original transformation by Gauss-Kruger formula.,95.28
-16310,Gauss-Kruger 10N,,,,54deg East to 60deg East; northern hemisphere.,9807,0.0,57.0,,,1.0,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,Original transformation by Gauss-Kruger formula.,95.28
-16311,Gauss-Kruger 11N,,,,60deg East to 66deg East; northern hemisphere.,9807,0.0,63.0,,,1.0,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,Original transformation by Gauss-Kruger formula.,95.28
-16312,Gauss-Kruger 12N,,,,66deg East to 72deg East; northern hemisphere.,9807,0.0,69.0,,,1.0,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,Original transformation by Gauss-Kruger formula.,95.28
-16313,Gauss-Kruger 13N,,,,72deg East to 78deg East; northern hemisphere.,9807,0.0,75.0,,,1.0,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,Original transformation by Gauss-Kruger formula.,95.28
-16314,Gauss-Kruger 14N,,,,78deg East to 84deg East; northern hemisphere.,9807,0.0,81.0,,,1.0,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,Original transformation by Gauss-Kruger formula.,95.28
-16315,Gauss-Kruger 15N,,,,84deg East to 90deg East; northern hemisphere.,9807,0.0,87.0,,,1.0,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,Original transformation by Gauss-Kruger formula.,95.28
-16316,Gauss-Kruger 16N,,,,90deg East to 96deg East; northern hemisphere.,9807,0.0,93.0,,,1.0,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,Original transformation by Gauss-Kruger formula.,95.28
-16317,Gauss-Kruger 17N,,,,96deg East to 102eg East; northern hemisphere.,9807,0.0,99.0,,,1.0,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,Original transformation by Gauss-Kruger formula.,95.28
-16318,Gauss-Kruger 18N,,,,102deg East to 108deg East; northern hemisphere.,9807,0.0,105.0,,,1.0,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,Original transformation by Gauss-Kruger formula.,95.28
-16319,Gauss-Kruger 19N,,,,108deg East to 114deg East; northern hemisphere.,9807,0.0,111.0,,,1.0,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,Original transformation by Gauss-Kruger formula.,95.28
-16320,Gauss-Kruger 20N,,,,114deg East to 120deg East; northern hemisphere.,9807,0.0,117.0,,,1.0,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,Original transformation by Gauss-Kruger formula.,95.28
-16321,Gauss-Kruger 21N,,,,120deg East to 126deg East; northern hemisphere.,9807,0.0,123.0,,,1.0,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,Original transformation by Gauss-Kruger formula.,95.28
-16322,Gauss-Kruger 22N,,,,126deg East to 132deg East; northern hemisphere.,9807,0.0,129.0,,,1.0,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,Original transformation by Gauss-Kruger formula.,95.28
-16323,Gauss-Kruger 23N,,,,132deg East to 138deg East; northern hemisphere.,9807,0.0,135.0,,,1.0,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,Original transformation by Gauss-Kruger formula.,95.28
-16324,Gauss-Kruger 24N,,,,138deg East to 144deg East; northern hemisphere.,9807,0.0,141.0,,,1.0,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,Original transformation by Gauss-Kruger formula.,95.28
-16325,Gauss-Kruger 25N,,,,144deg East to 150deg East; northern hemisphere.,9807,0.0,147.0,,,1.0,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,Original transformation by Gauss-Kruger formula.,95.28
-16326,Gauss-Kruger 26N,,,,150deg East to 156deg East; northern hemisphere.,9807,0.0,153.0,,,1.0,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,Original transformation by Gauss-Kruger formula.,95.28
-16327,Gauss-Kruger 27N,,,,156deg East to 162deg East; northern hemisphere.,9807,0.0,159.0,,,1.0,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,Original transformation by Gauss-Kruger formula.,95.28
-16328,Gauss-Kruger 28N,,,,162deg East to 168deg East; northern hemisphere.,9807,0.0,165.0,,,1.0,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,Original transformation by Gauss-Kruger formula.,95.28
-16329,Gauss-Kruger 29N,,,,168deg East to 174deg East; northern hemisphere.,9807,0.0,171.0,,,1.0,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,Original transformation by Gauss-Kruger formula.,95.28
-16330,Gauss-Kruger 30N,,,,174deg East to 180deg; northern hemisphere.,9807,0.0,177.0,,,1.0,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,Original transformation by Gauss-Kruger formula.,95.28
-16331,Gauss-Kruger 31N,,,,180deg to 174deg West; northern hemisphere.,9807,0.0,-177.0,,,1.0,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,Original transformation by Gauss-Kruger formula.,95.28
-16332,Gauss-Kruger 32N,,,,174deg West to 168deg West; northern hemisphere.,9807,0.0,-171.0,,,1.0,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,Original transformation by Gauss-Kruger formula.,95.28
-16400,TM 0 N,,,,United Kingdom (UKCS) - offshore North Sea.,9807,0.0,0.0,,,0.9996,500000.0,0.0,9001,9102,8901,,,,,1998-11-11 00:00:00,Shell UK,EPSG,,
-16405,TM 5 NE,,,,Netherlands - offshore.,9807,0.0,5.0,,,0.9996,500000.0,0.0,9001,9102,8901,,,,,1998-11-11 00:00:00,NAM,EPSG,,
-16506,TM 106 NE,,,,Vietnam - offshore.,9807,0.0,106.0,,,0.9996,500000.0,0.0,9001,9102,8901,,,,,1998-11-11 00:00:00,PetroVietnam,EPSG,,
-16611,TM 11.30 SE,,,,Angola - offshore.,9807,0.0,11.3,,,0.9996,500000.0,10000000.0,9001,9110,8901,,,,,1998-11-11 00:00:00,Esso Angola,EPSG,,
-16612,TM 12 SE,,,,Angola - offshore.,9807,0.0,12.0,,,0.9996,500000.0,10000000.0,9001,9102,8901,,,,,1998-11-11 00:00:00,Shell Angola,EPSG,,
-16636,TM 36 SE,,,,Mozambique - offshore.,9807,0.0,36.0,,,0.9996,500000.0,10000000.0,9001,9102,8901,,,,,1998-11-11 00:00:00,BP Mozambique,EPSG,,
-17348,Map Grid of Australia zone 48,MGA zone 48,,,Australia 102deg East  to 108deg East.,9807,0.0,105.0,,,0.9996,500000.0,10000000.0,9001,9102,8901,,,,,1995-12-02 00:00:00,Australian Surveying and Land Information Group Internet WWW page.,EPSG,Grid convergence uses opposite sign convention to UTM,95.30  96.29
-17349,Map Grid of Australia zone 49,MGA zone 49,,,Australia 108deg East  to 114deg East.,9807,0.0,111.0,,,0.9996,500000.0,10000000.0,9001,9102,8901,,,,,1995-12-02 00:00:00,Australian Surveying and Land Information Group Internet WWW page.,EPSG,Grid convergence uses opposite sign convention to UTM,95.30  96.29
-17350,Map Grid of Australia zone 50,MGA zone 50,,,Australia 114deg East  to 120deg East.,9807,0.0,117.0,,,0.9996,500000.0,10000000.0,9001,9102,8901,,,,,1995-12-02 00:00:00,Australian Surveying and Land Information Group Internet WWW page.,EPSG,Grid convergence uses opposite sign convention to UTM,95.30  96.29
-17351,Map Grid of Australia zone 51,MGA zone 51,,,Australia 120deg East  to 126deg East.,9807,0.0,123.0,,,0.9996,500000.0,10000000.0,9001,9102,8901,,,,,1995-12-02 00:00:00,Australian Surveying and Land Information Group Internet WWW page.,EPSG,Grid convergence uses opposite sign convention to UTM,95.30  96.29
-17352,Map Grid of Australia zone 52,MGA zone 52,,,Australia 126deg East  to 132deg East.,9807,0.0,129.0,,,0.9996,500000.0,10000000.0,9001,9102,8901,,,,,1995-12-02 00:00:00,Australian Surveying and Land Information Group Internet WWW page.,EPSG,Grid convergence uses opposite sign convention to UTM,95.30  96.29
-17353,Map Grid of Australia zone 53,MGA zone 53,,,Australia 132deg East  to 138deg East.,9807,0.0,135.0,,,0.9996,500000.0,10000000.0,9001,9102,8901,,,,,1995-12-02 00:00:00,Australian Surveying and Land Information Group Internet WWW page.,EPSG,Grid convergence uses opposite sign convention to UTM,95.30  96.29
-17354,Map Grid of Australia zone 54,MGA zone 54,,,Australia 138deg East  to 144deg East.,9807,0.0,141.0,,,0.9996,500000.0,10000000.0,9001,9102,8901,,,,,1995-12-02 00:00:00,Australian Surveying and Land Information Group Internet WWW page.,EPSG,Grid convergence uses opposite sign convention to UTM,95.30  96.29
-17355,Map Grid of Australia zone 55,MGA zone 55,,,Australia 144deg East  to 150deg East.,9807,0.0,147.0,,,0.9996,500000.0,10000000.0,9001,9102,8901,,,,,1995-12-02 00:00:00,Australian Surveying and Land Information Group Internet WWW page.,EPSG,Grid convergence uses opposite sign convention to UTM,95.30  96.29
-17356,Map Grid of Australia zone 56,MGA zone 56,,,Australia 150deg East  to 156deg East.,9807,0.0,153.0,,,0.9996,500000.0,10000000.0,9001,9102,8901,,,,,1995-12-02 00:00:00,Australian Surveying and Land Information Group Internet WWW page.,EPSG,Grid convergence uses opposite sign convention to UTM,95.30  96.29
-17357,Map Grid of Australia zone 57,MGA zone 57,,,Australia 156deg East  to 162deg East.,9807,0.0,159.0,,,0.9996,500000.0,10000000.0,9001,9102,8901,,,,,1995-12-02 00:00:00,Australian Surveying and Land Information Group Internet WWW page.,EPSG,Grid convergence uses opposite sign convention to UTM,95.30  96.29
-17358,Map Grid of Australia zone 58,MGA zone 58,,,Australia 162deg East  to 168deg East.,9807,0.0,165.0,,,0.9996,500000.0,10000000.0,9001,9102,8901,,,,,1995-12-02 00:00:00,Australian Surveying and Land Information Group Internet WWW page.,EPSG,Grid convergence uses opposite sign convention to UTM,95.30  96.29
-17448,Australian Map Grid zone 48,AMG zone 48,,,Australia 102deg East  to 108deg East.,9807,0.0,105.0,,,0.9996,500000.0,10000000.0,9001,9102,8901,,,,,1995-12-02 00:00:00,The Australian Map Grid Technical Manual; National Mapping Council of Australia; 1972,EPSG,Grid convergence uses opposite sign convention to UTM,95.30  96.29
-17449,Australian Map Grid zone 49,AMG zone 49,,,Australia 108deg East  to 114deg East.,9807,0.0,111.0,,,0.9996,500000.0,10000000.0,9001,9102,8901,,,,,1995-12-02 00:00:00,The Australian Map Grid Technical Manual; National Mapping Council of Australia; 1972,EPSG,Grid convergence uses opposite sign convention to UTM,95.30  96.29
-17450,Australian Map Grid zone 50,AMG zone 50,,,Australia 114deg East  to 120deg East.,9807,0.0,117.0,,,0.9996,500000.0,10000000.0,9001,9102,8901,,,,,1995-12-02 00:00:00,The Australian Map Grid Technical Manual; National Mapping Council of Australia; 1972,EPSG,Grid convergence uses opposite sign convention to UTM,95.30  96.29
-17451,Australian Map Grid zone 51,AMG zone 51,,,Australia 120deg East  to 126deg East.,9807,0.0,123.0,,,0.9996,500000.0,10000000.0,9001,9102,8901,,,,,1995-12-02 00:00:00,The Australian Map Grid Technical Manual; National Mapping Council of Australia; 1972,EPSG,Grid convergence uses opposite sign convention to UTM,95.30  96.29
-17452,Australian Map Grid zone 52,AMG zone 52,,,Australia 126deg East  to 132deg East.,9807,0.0,129.0,,,0.9996,500000.0,10000000.0,9001,9102,8901,,,,,1995-12-02 00:00:00,The Australian Map Grid Technical Manual; National Mapping Council of Australia; 1972,EPSG,Grid convergence uses opposite sign convention to UTM,95.30  96.29
-17453,Australian Map Grid zone 53,AMG zone 53,,,Australia 132deg East  to 138deg East.,9807,0.0,135.0,,,0.9996,500000.0,10000000.0,9001,9102,8901,,,,,1995-12-02 00:00:00,The Australian Map Grid Technical Manual; National Mapping Council of Australia; 1972,EPSG,Grid convergence uses opposite sign convention to UTM,95.30  96.29
-17454,Australian Map Grid zone 54,AMG zone 54,,,Australia 138deg East  to 144deg East.  Papua New Guinea west of 144 deg East.,9807,0.0,141.0,,,0.9996,500000.0,10000000.0,9001,9102,8901,,,,,1995-12-02 00:00:00,The Australian Map Grid Technical Manual; National Mapping Council of Australia; 1972,EPSG,Grid convergence uses opposite sign convention to UTM,95.30  96.29
-17455,Australian Map Grid zone 55,AMG zone 55,,,Australia 144deg East  to 150deg East.  Papua New Guinea 144deg East  to 150deg East.,9807,0.0,147.0,,,0.9996,500000.0,10000000.0,9001,9102,8901,,,,,1995-12-02 00:00:00,The Australian Map Grid Technical Manual; National Mapping Council of Australia; 1972,EPSG,Grid convergence uses opposite sign convention to UTM,95.30  96.29
-17456,Australian Map Grid zone 56,AMG zone 56,,,Australia 150deg East  to 156deg East.,9807,0.0,153.0,,,0.9996,500000.0,10000000.0,9001,9102,8901,,,,,1995-12-02 00:00:00,The Australian Map Grid Technical Manual; National Mapping Council of Australia; 1972,EPSG,Grid convergence uses opposite sign convention to UTM,95.30  96.29
-17457,Australian Map Grid zone 57,AMG zone 57,,,Australia 156deg East  to 162deg East.,9807,0.0,159.0,,,0.9996,500000.0,10000000.0,9001,9102,8901,,,,,1995-12-02 00:00:00,The Australian Map Grid Technical Manual; National Mapping Council of Australia; 1972,EPSG,Grid convergence uses opposite sign convention to UTM,95.30  96.29
-17458,Australian Map Grid zone 58,AMG zone 58,,,Australia 162deg East  to 168deg East.,9807,0.0,165.0,,,0.9996,500000.0,10000000.0,9001,9102,8901,,,,,1995-12-02 00:00:00,The Australian Map Grid Technical Manual; National Mapping Council of Australia; 1972,EPSG,Grid convergence uses opposite sign convention to UTM,95.30  96.29
-17515,South African Survey Grid zone 15,S. African Grid zone 15,,,South Africa - Walvis Bay.,9808,0.0,15.0,,,1.0,0.0,0.0,9001,9102,8901,,,,,1996-04-12 00:00:00,,EPSG,"Transformation method sometimes described as \"Gauss conform\".",95.30  96.29
-17517,South African Survey Grid zone 17,S. African Grid zone 17,,,South Africa - west of 18 deg East.,9808,0.0,17.0,,,1.0,0.0,0.0,9001,9102,8901,,,,,1996-04-12 00:00:00,,EPSG,"Transformation method sometimes described as \"Gauss conform\".",95.30  96.29
-17519,South African Survey Grid zone 19,S. African Grid zone 19,,,South Africa - 18 to 20 deg East.,9808,0.0,19.0,,,1.0,0.0,0.0,9001,9102,8901,,,,,1996-04-12 00:00:00,,EPSG,"Transformation method sometimes described as \"Gauss conform\".",95.30  96.29
-17521,South African Survey Grid zone 21,S. African Grid zone 21,,,South Africa - 20 to 22 deg East.,9808,0.0,21.0,,,1.0,0.0,0.0,9001,9102,8901,,,,,1996-04-12 00:00:00,,EPSG,"Transformation method sometimes described as \"Gauss conform\".",95.30  96.29
-17523,South African Survey Grid zone 23,S. African Grid zone 23,,,South Africa - 22 to 24 deg East.,9808,0.0,23.0,,,1.0,0.0,0.0,9001,9102,8901,,,,,1996-04-12 00:00:00,,EPSG,"Transformation method sometimes described as \"Gauss conform\".",95.30  96.29
-17525,South African Survey Grid zone 25,S. African Grid zone 25,,,Lestho  - west of 26 deg East; South Africa - 24 to 26 deg East.,9808,0.0,25.0,,,1.0,0.0,0.0,9001,9102,8901,,,,,1996-04-12 00:00:00,,EPSG,"Transformation method sometimes described as \"Gauss conform\".",95.30  96.29
-17527,South African Survey Grid zone 27,S. African Grid zone 27,,,Lestho  - east of 26 deg East;  South Africa - 26 to 28 deg East.,9808,0.0,27.0,,,1.0,0.0,0.0,9001,9102,8901,,,,,1996-04-12 00:00:00,,EPSG,"Transformation method sometimes described as \"Gauss conform\".",95.30  96.29
-17529,South African Survey Grid zone 29,S. African Grid zone 29,,,South Africa - 28 to 30 deg East.,9808,0.0,29.0,,,1.0,0.0,0.0,9001,9102,8901,,,,,1996-04-12 00:00:00,,EPSG,"Transformation method sometimes described as \"Gauss conform\".",95.30  96.29
-17531,South African Survey Grid zone 31,S. African Grid zone 31,,,South Africa - 30 to 32 deg East;  Swaziland.,9808,0.0,31.0,,,1.0,0.0,0.0,9001,9102,8901,,,,,1996-04-12 00:00:00,,EPSG,"Transformation method sometimes described as \"Gauss conform\".",95.30  96.29
-17533,South African Survey Grid zone 33,S. African Grid zone 33,,,South Africa - east of 32 deg East.,9808,0.0,33.0,,,1.0,0.0,0.0,9001,9102,8901,,,,,1996-04-12 00:00:00,,EPSG,"Transformation method sometimes described as \"Gauss conform\".",95.30  96.29
-17611,South West African Survey Grid zone 11,SW African Grid zone 11,,,Namibia - west of 12 deg East.,9808,-22.0,11.0,,,1.0,0.0,0.0,9031,9102,8901,,,,,1997-06-16 00:00:00,Chief Directorate Surveys and Land Information; Mowbray; South Africa.,EPSG,"Transformation method sometimes described as \"Gauss conform\".",95.30  96.29  97.16
-17613,South West African Survey Grid zone 13,SW African Grid zone 13,,,Namibia - 12 to 14 deg East.,9808,-22.0,13.0,,,1.0,0.0,0.0,9031,9102,8901,,,,,1997-06-16 00:00:00,Chief Directorate Surveys and Land Information; Mowbray; South Africa.,EPSG,"Transformation method sometimes described as \"Gauss conform\".",95.30  96.29  97.16
-17615,South West African Survey Grid zone 15,SW African Grid zone 15,,,Namibia - 14 to 16 deg East.,9808,-22.0,15.0,,,1.0,0.0,0.0,9031,9102,8901,,,,,1997-06-16 00:00:00,Chief Directorate Surveys and Land Information; Mowbray; South Africa.,EPSG,"Transformation method sometimes described as \"Gauss conform\".",95.30  96.29  97.16
-17617,South West African Survey Grid zone 17,SW African Grid zone 17,,,Namibia - 16 to 18 deg East.,9808,-22.0,17.0,,,1.0,0.0,0.0,9031,9102,8901,,,,,1997-06-16 00:00:00,Chief Directorate Surveys and Land Information; Mowbray; South Africa.,EPSG,"Transformation method sometimes described as \"Gauss conform\".",95.30  96.29  97.16
-17619,South West African Survey Grid zone 19,SW African Grid zone 19,,,Namibia - 18 to 20 deg East.,9808,-22.0,19.0,,,1.0,0.0,0.0,9031,9102,8901,,,,,1997-06-16 00:00:00,Chief Directorate Surveys and Land Information; Mowbray; South Africa.,EPSG,"Transformation method sometimes described as \"Gauss conform\".",95.30  96.29  97.16
-17621,South West African Survey Grid zone 21,SW African Grid zone 21,,,Namibia - 20 to 22 deg East.,9808,-22.0,21.0,,,1.0,0.0,0.0,9031,9102,8901,,,,,1997-06-16 00:00:00,Chief Directorate Surveys and Land Information; Mowbray; South Africa.,EPSG,"Transformation method sometimes described as \"Gauss conform\".",95.30  96.29  97.16
-17623,South West African Survey Grid zone 23,SW African Grid zone 23,,,Namibia - 22 to 24 deg East.,9808,-22.0,23.0,,,1.0,0.0,0.0,9031,9102,8901,,,,,1997-06-16 00:00:00,Chief Directorate Surveys and Land Information; Mowbray; South Africa.,EPSG,"Transformation method sometimes described as \"Gauss conform\".",95.30  96.29  97.16
-17625,South West African Survey Grid zone 25,SW African Grid zone 25,,,Namibia - east of 24 deg East.,9808,-22.0,25.0,,,1.0,0.0,0.0,9031,9102,8901,,,,,1997-06-16 00:00:00,Chief Directorate Surveys and Land Information; Mowbray; South Africa.,EPSG,"Transformation method sometimes described as \"Gauss conform\".",95.30  96.29  97.16
-17700,MTM Quebec zone 2,,,,Canada - Quebec - east of 57 deg East.,9807,0.0,-55.3,,,0.9999,304800.0,0.0,9001,9110,8901,,,,,1997-11-13 00:00:00,Topographic Mapping Section; Quebec Ministry of Natural Resources.,EPSG,,
-17701,MTM zone 1,,,,Canada - Newfoundland - east of 54 deg 30 min West.,9807,0.0,-53.0,,,0.9999,304800.0,0.0,9001,9102,8901,,,,,1997-11-13 00:00:00,Geodetic Surveys Section; Newfoundland Department of Government Services and Lands.,EPSG,,
-17702,MTM Newfoundland zone 2,MTM zone 2,,,Canada - Newfoundland and Labrador between 57 deg 30 min and 54 de 30 min West.,9807,0.0,-56.0,,,0.9999,304800.0,0.0,9001,9102,8901,,,,,1997-11-13 00:00:00,Geodetic Surveys Section; Newfoundland Department of Government Services and Lands.,EPSG,,
-17703,MTM zone 3,,,,Canada - Newfoundland and Labrador between 60 deg and 57 deg 30 min West; Canada - Quebec between 60 deg and 57 deg West.,9807,0.0,-58.3,,,0.9999,304800.0,0.0,9001,9110,8901,,,,,1997-11-13 00:00:00,Topographic Mapping Section; Quebec Ministry of Natural Resources. Also Geodetic Surveys Section; Newfoundland Department of Government Services and Lands.,EPSG,,
-17704,MTM zone 4,,,,Canada - Quebec and Newfoundland (Labrador) between 63 deg and 60 deg West.,9807,0.0,-61.3,,,0.9999,304800.0,0.0,9001,9110,8901,,,,,1997-11-13 00:00:00,Topographic Mapping Section; Quebec Ministry of Natural Resources. Also Geodetic Surveys Section; Newfoundland Department of Government Services and Lands.,EPSG,,
-17705,MTM zone 5,,,,Canada - Quebec and Newfoundland (Labrador) between 66 deg and 63 deg West.,9807,0.0,-64.3,,,0.9999,304800.0,0.0,9001,9110,8901,,,,,1997-11-13 00:00:00,Topographic Mapping Section; Quebec Ministry of Natural Resources. Also Geodetic Surveys Section; Newfoundland Department of Government Services and Lands.,EPSG,,
-17706,MTM zone 6,,,,Canada - Quebec and Newfoundland (Labrador) between 69 deg and  66 deg West.,9807,0.0,-67.3,,,0.9999,304800.0,0.0,9001,9110,8901,,,,,1997-11-13 00:00:00,Topographic Mapping Section; Quebec Ministry of Natural Resources. Also Geodetic Surveys Section; Newfoundland Department of Government Services and Lands.,EPSG,,
-17707,MTM zone 7,,,,Canada - Quebec between 72 deg and 69 deg West.,9807,0.0,-70.3,,,0.9999,304800.0,0.0,9001,9110,8901,,,,,1997-11-13 00:00:00,Topographic Mapping Section; Quebec Ministry of Natural Resources.,EPSG,,
-17708,MTM zone 8,,,,Canada - Quebec between 75 deg and 72 deg West.; Canada - Ontario - east of 75 deg West.,9807,0.0,-73.3,,,0.9999,304800.0,0.0,9001,9110,8901,,,,,1997-11-13 00:00:00,Surveys and Mapping Section; Ontario Ministry of Transportation.,EPSG,,
-17709,MTM zone 9,,,,Canada - Quebec and Ontario - between 78 deg and 75 deg West.,9807,0.0,-76.3,,,0.9999,304800.0,0.0,9001,9110,8901,,,,,1997-11-13 00:00:00,Surveys and Mapping Section; Ontario Ministry of Transportation.,EPSG,,
-17710,MTM zone 10,,,,Canada - Quebec west of 78 deg West; Canada - Ontario - between 79 deg 30 min and 78 deg W in area to north of 47 deg N; between 80 deg 15 min and 78 deg W in area between 46 deg and 47 deg N; between 81 deg and 78 deg W in area south of 46 deg N.,9807,0.0,-79.3,,,0.9999,304800.0,0.0,9001,9110,8901,,,,,1997-11-13 00:00:00,Surveys and Mapping Section; Ontario Ministry of Transportation.,EPSG,,
-17711,MTM zone 11,,,,Canada - Ontario - south of 46 deg N and west of 81 deg West.,9807,0.0,-82.3,,,0.9999,304800.0,0.0,9001,9110,8901,,,,,1997-11-13 00:00:00,Surveys and Mapping Section; Ontario Ministry of Transportation.,EPSG,,
-17712,MTM zone 12,,,,Canada - Ontario - between 82 deg 30 min and 79 deg 30 min W in area to north of 47 deg N; between 82 deg 30 min and 80 deg 15 min W in area between 46 deg and 47 deg N; between 82 deg 30 min and 79 deg 30 min W in area north of 47 deg N.,9807,0.0,-81.0,,,0.9999,304800.0,0.0,9001,9102,8901,,,,,1997-11-13 00:00:00,Surveys and Mapping Section; Ontario Ministry of Transportation.,EPSG,,
-17713,MTM zone 13,,,,Canada - Ontario - between 85 deg 30 min and 82 deg 30 min West and north of 46 deg North.,9807,0.0,-84.0,,,0.9999,304800.0,0.0,9001,9102,8901,,,,,1997-11-13 00:00:00,Surveys and Mapping Section; Ontario Ministry of Transportation.,EPSG,,
-17714,MTM zone 14,,,,Canada - Ontario - between 88 deg 30 min and 85 deg 30 min West.,9807,0.0,-87.0,,,0.9999,304800.0,0.0,9001,9102,8901,,,,,1997-11-13 00:00:00,Surveys and Mapping Section; Ontario Ministry of Transportation.,EPSG,,
-17715,MTM zone 15,,,,Canada - Ontario - between 91 deg 30 min and 88 deg 30 min West.,9807,0.0,-90.0,,,0.9999,304800.0,0.0,9001,9102,8901,,,,,1997-11-13 00:00:00,Surveys and Mapping Section; Ontario Ministry of Transportation.,EPSG,,
-17716,MTM zone 16,,,,Canada - Ontario - between 94 deg 30 min and 91 deg 30 min West.,9807,0.0,-93.0,,,0.9999,304800.0,0.0,9001,9102,8901,,,,,1997-11-13 00:00:00,Surveys and Mapping Section; Ontario Ministry of Transportation.,EPSG,,
-17717,MTM zone 17,,,,Canada - Ontario - west of 94 deg 30 min West.,9807,0.0,-96.0,,,0.9999,304800.0,0.0,9001,9102,8901,,,,,1997-11-13 00:00:00,Surveys and Mapping Section; Ontario Ministry of Transportation.,EPSG,,
-17794,MTM Nova Scotia zone 4,,,,Canada - Nova Scotia - east of 63 deg West.,9807,0.0,-61.3,,,0.9999,4500000.0,0.0,9001,9110,8901,,,,,1999-05-24 00:00:00,Geomatics Centre; Nova Scotia Ministry of Housing and Municipal Affairs.,EPSG,,99.042
-17795,MTM Nova Scotia zone 5,,,,Canada - Nova Scotia - west of 63 deg West.,9807,0.0,-64.3,,,0.9999,5500000.0,0.0,9001,9110,8901,,,,,1999-05-24 00:00:00,Geomatics Centre; Nova Scotia Ministry of Housing and Municipal Affairs.,EPSG,,99.042
-17801,Japan Plane Rectangular CS zone I,Japan zone I,,,Japan - Kyushu - Nagasaki-ken; islands of Kagoshima-ken between 27 and 32 deg N and between 128 deg 18 min and 130 deg E (between 128 deg 18 min and 30 deg 13 min E for Amami islands).,9807,33.0,129.3,,,0.9999,0.0,0.0,9001,9110,8901,,,,,1998-12-12 00:00:00,Ministry of Construction; Japan.  http://vldb.gsi-mc.go.jp/sokuchi/datum/image/heichoku2.gif,EPSG,Original transformation by Gauss-Kruger formula.,
-17802,Japan Plane Rectangular CS zone II,Japan zone II,,,Japan - Kyushu - Fukuoka-ken; Saga-ken; Kumamoto-ken; Oita-ken; Miyazaki-ken; Kagoshima-ken (except for area within Japan Plane Rectangular Coordinates System zone I).,9807,33.0,131.0,,,0.9999,0.0,0.0,9001,9110,8901,,,,,1998-12-12 00:00:00,Ministry of Construction; Japan.  http://vldb.gsi-mc.go.jp/sokuchi/datum/image/heichoku2.gif,EPSG,Original transformation by Gauss-Kruger formula.,
-17803,Japan Plane Rectangular CS zone III,Japan zone III,,,Japan - Kyushu - Fukuoka-ken; Saga-ken; Kumamoto-ken; Oita-ken; Miyazaki-ken; Kagoshima-ken (except for area within Japan Plane Rectangular Coordinates System zone I).,9807,36.0,132.1,,,0.9999,0.0,0.0,9001,9110,8901,,,,,1998-12-12 00:00:00,Ministry of Construction; Japan.  http://vldb.gsi-mc.go.jp/sokuchi/datum/image/heichoku2.gif,EPSG,Original transformation by Gauss-Kruger formula.,
-17804,Japan Plane Rectangular CS zone IV,Japan zone IV,,,Japan - Kyushu - Fukuoka-ken; Saga-ken; Kumamoto-ken; Oita-ken; Miyazaki-ken; Kagoshima-ken (except for area within Japan Plane Rectangular Coordinates System zone I).,9807,33.0,133.3,,,0.9999,0.0,0.0,9001,9110,8901,,,,,1998-12-12 00:00:00,Ministry of Construction; Japan.  http://vldb.gsi-mc.go.jp/sokuchi/datum/image/heichoku2.gif,EPSG,Original transformation by Gauss-Kruger formula.,
-17805,Japan Plane Rectangular CS zone V,Japan zone V,,,Japan - Kyushu - Fukuoka-ken; Saga-ken; Kumamoto-ken; Oita-ken; Miyazaki-ken; Kagoshima-ken (except for area within Japan Plane Rectangular Coordinates System zone I).,9807,36.0,134.2,,,0.9999,0.0,0.0,9001,9110,8901,,,,,1998-12-12 00:00:00,Ministry of Construction; Japan.  http://vldb.gsi-mc.go.jp/sokuchi/datum/image/heichoku2.gif,EPSG,Original transformation by Gauss-Kruger formula.,
-17806,Japan Plane Rectangular CS zone VI,Japan zone VI,,,Japan - Kyushu - Fukuoka-ken; Saga-ken; Kumamoto-ken; Oita-ken; Miyazaki-ken; Kagoshima-ken (except for area within Japan Plane Rectangular Coordinates System zone I).,9807,36.0,136.0,,,0.9999,0.0,0.0,9001,9110,8901,,,,,1998-12-12 00:00:00,Ministry of Construction; Japan.  http://vldb.gsi-mc.go.jp/sokuchi/datum/image/heichoku2.gif,EPSG,Original transformation by Gauss-Kruger formula.,
-17807,Japan Plane Rectangular CS zone VII,Japan zone VII,,,Japan - Kyushu - Fukuoka-ken; Saga-ken; Kumamoto-ken; Oita-ken; Miyazaki-ken; Kagoshima-ken (except for area within Japan Plane Rectangular Coordinates System zone I).,9807,36.0,137.1,,,0.9999,0.0,0.0,9001,9110,8901,,,,,1998-12-12 00:00:00,Ministry of Construction; Japan.  http://vldb.gsi-mc.go.jp/sokuchi/datum/image/heichoku2.gif,EPSG,Original transformation by Gauss-Kruger formula.,
-17808,Japan Plane Rectangular CS zone VIII,Japan zone VIII,,,Japan - Kyushu - Fukuoka-ken; Saga-ken; Kumamoto-ken; Oita-ken; Miyazaki-ken; Kagoshima-ken (except for area within Japan Plane Rectangular Coordinates System zone I).,9807,36.0,138.3,,,0.9999,0.0,0.0,9001,9110,8901,,,,,1998-12-12 00:00:00,Ministry of Construction; Japan.  http://vldb.gsi-mc.go.jp/sokuchi/datum/image/heichoku2.gif,EPSG,Original transformation by Gauss-Kruger formula.,
-17809,Japan Plane Rectangular CS zone IX,Japan zone IX,,,Japan - Kyushu - Fukuoka-ken; Saga-ken; Kumamoto-ken; Oita-ken; Miyazaki-ken; Kagoshima-ken (except for area within Japan Plane Rectangular Coordinates System zone I).,9807,36.0,139.5,,,0.9999,0.0,0.0,9001,9110,8901,,,,,1998-12-12 00:00:00,Ministry of Construction; Japan.  http://vldb.gsi-mc.go.jp/sokuchi/datum/image/heichoku2.gif,EPSG,Original transformation by Gauss-Kruger formula.,
-17810,Japan Plane Rectangular CS zone X,Japan zone X,,,Japan - Kyushu - Fukuoka-ken; Saga-ken; Kumamoto-ken; Oita-ken; Miyazaki-ken; Kagoshima-ken (except for area within Japan Plane Rectangular Coordinates System zone I).,9807,40.0,140.5,,,0.9999,0.0,0.0,9001,9110,8901,,,,,1998-12-12 00:00:00,Ministry of Construction; Japan.  http://vldb.gsi-mc.go.jp/sokuchi/datum/image/heichoku2.gif,EPSG,Original transformation by Gauss-Kruger formula.,
-17811,Japan Plane Rectangular CS zone XI,Japan zone XI,,,Japan - Hokkaido west of 141 deg 15 min E approx. - Otaru city; Hakodate city; Date city; Usu-gun and Abuta-gun of Iburi-shicyo; area of Hiyama-shicyo; area of Shiribeshi-shicyo; Oshima-shicyo.,9807,44.0,140.15,,,0.9999,0.0,0.0,9001,9110,8901,,,,,1998-12-12 00:00:00,Ministry of Construction; Japan.  http://vldb.gsi-mc.go.jp/sokuchi/datum/image/heichoku2.gif,EPSG,Original transformation by Gauss-Kruger formula.,
-17812,Japan Plane Rectangular CS zone XII,Japan zone XII,,,Japan - Hokkaido west of 141 deg 15 min E approx. - Otaru city; Hakodate city; Date city; Usu-gun and Abuta-gun of Iburi-shicyo; area of Hiyama-shicyo; area of Shiribeshi-shicyo; Oshima-shicyo.,9807,44.0,142.15,,,0.9999,0.0,0.0,9001,9110,8901,,,,,1998-12-12 00:00:00,Ministry of Construction; Japan.  http://vldb.gsi-mc.go.jp/sokuchi/datum/image/heichoku2.gif,EPSG,Original transformation by Gauss-Kruger formula.,
-17813,Japan Plane Rectangular CS zone XIII,Japan zone XIII,,,Japan - Hokkaido west of 141 deg 15 min E approx. - Otaru city; Hakodate city; Date city; Usu-gun and Abuta-gun of Iburi-shicyo; area of Hiyama-shicyo; area of Shiribeshi-shicyo; Oshima-shicyo.,9807,44.0,144.15,,,0.9999,0.0,0.0,9001,9110,8901,,,,,1998-12-12 00:00:00,Ministry of Construction; Japan.  http://vldb.gsi-mc.go.jp/sokuchi/datum/image/heichoku2.gif,EPSG,Original transformation by Gauss-Kruger formula.,
-17814,Japan Plane Rectangular CS zone XIV,Japan zone XIV,,,Japan - Tokyo-to south of 28 deg N & between 140 deg 30 min & 143 deg E.,9807,26.0,142.0,,,0.9999,0.0,0.0,9001,9110,8901,,,,,1998-12-12 00:00:00,Ministry of Construction; Japan.  http://vldb.gsi-mc.go.jp/sokuchi/datum/image/heichoku2.gif,EPSG,Original transformation by Gauss-Kruger formula.,
-17815,Japan Plane Rectangular CS zone XV,Japan zone XV,,,Japan - Okinawa-ken between 126 deg &130 deg E.,9807,26.0,127.3,,,0.9999,0.0,0.0,9001,9110,8901,,,,,1998-12-12 00:00:00,Ministry of Construction; Japan.  http://vldb.gsi-mc.go.jp/sokuchi/datum/image/heichoku2.gif,EPSG,Original transformation by Gauss-Kruger formula.,
-17816,Japan Plane Rectangular CS zone XVI,Japan zone XVI,,,Japan - Okinawa-ken west of 126 deg E.,9807,26.0,124.0,,,0.9999,0.0,0.0,9001,9110,8901,,,,,1998-12-12 00:00:00,Ministry of Construction; Japan.  http://vldb.gsi-mc.go.jp/sokuchi/datum/image/heichoku2.gif,EPSG,Original transformation by Gauss-Kruger formula.,
-17817,Japan Plane Rectangular CS zone XVII,Japan zone XVII,,,Japan - Okinawa-ken east of 130 deg E.,9807,26.0,131.0,,,0.9999,0.0,0.0,9001,9110,8901,,,,,1998-12-12 00:00:00,Ministry of Construction; Japan.  http://vldb.gsi-mc.go.jp/sokuchi/datum/image/heichoku2.gif,EPSG,Original transformation by Gauss-Kruger formula.,
-17818,Japan Plane Rectangular CS zone XVIII,Japan zone XVIII,,,Japan - Tokyo-to south of 28 N & west of 140 deg 30 min E.,9807,20.0,136.0,,,0.9999,0.0,0.0,9001,9110,8901,,,,,1998-12-12 00:00:00,Ministry of Construction; Japan.  http://vldb.gsi-mc.go.jp/sokuchi/datum/image/heichoku2.gif,EPSG,Original transformation by Gauss-Kruger formula.,
-17819,Japan Plane Rectangular CS zone XIX,Japan zone XIX,,,Japan - Tokyo-to south of 28 N & east of 143 deg E.,9807,26.0,154.0,,,0.9999,0.0,0.0,9001,9110,8901,,,,,1998-12-12 00:00:00,Ministry of Construction; Japan.  http://vldb.gsi-mc.go.jp/sokuchi/datum/image/heichoku2.gif,EPSG,Original transformation by Gauss-Kruger formula.,
-18011,Nord Algerie (ancienne),,,,Algeria north of 38.5g (34 deg 39 min) North.,9801,40.0,3.0,,,0.999625544,500000.0,300000.0,9001,9105,8901,,,,,1996-09-12 00:00:00,,EPSG,Used with Voirol 1875 datum - now superseded.,
-18012,Sud Algerie (ancienne),,,,Algeria 35g to 38.5g (31 deg 30 min to 34 deg 39 min) North.,9801,37.0,3.0,,,0.999625769,500000.0,300000.0,9001,9105,8901,,,,,1996-09-12 00:00:00,,EPSG,Used with Voirol 1875 datum - now superseded.,
-18021,Nord Algerie,,,,Algeria north of 38.5g (34 deg 39 min) North.,9801,40.0,3.0,,,0.999625544,500135.0,300090.0,9001,9105,8901,,,,,1996-09-12 00:00:00,,EPSG,Use with Voirol Unifie 1960 datum.,
-18022,Sud Algerie,,,,Algeria 35g to 38.5g (31 deg 30 min to 34 deg 39 min) North.,9801,37.0,3.0,,,0.999625769,500135.0,300090.0,9001,9105,8901,,,,,1996-09-12 00:00:00,,EPSG,Use with Voirol Unifie 1960 datum.,
-18031,Argentina zone 1,Argentina 1,,,Argentina west of 70 deg 30 min West.,9807,-90.0,-72.0,,,1.0,1500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,Original transformation by Gauss-Kruger formula,95.30
-18032,Argentina zone 2,Argentina 2,,,Argentina between 70 deg 30 min and 67 deg 30 min West.,9807,-90.0,-69.0,,,1.0,2500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,Original transformation by Gauss-Kruger formula,95.30
-18033,Argentina zone 3,Argentina 3,,,Argentina between 67 deg 30 min and 64 deg 30 min West.,9807,-90.0,-66.0,,,1.0,3500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,Original transformation by Gauss-Kruger formula,95.30
-18034,Argentina zone 4,Argentina 4,,,Argentina between 64 deg 30 min and 61 deg 30 min West.,9807,-90.0,-63.0,,,1.0,4500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,Original transformation by Gauss-Kruger formula,95.30
-18035,Argentina zone 5,Argentina 5,,,Argentina between 61 deg 30 min and 58 deg 30 min West.,9807,-90.0,-60.0,,,1.0,5500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,Original transformation by Gauss-Kruger formula,95.30
-18036,Argentina zone 6,Argentina 6,,,Argentina between 58 deg 30 min and 55 deg 30 min West.,9807,-90.0,-57.0,,,1.0,6500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,Original transformation by Gauss-Kruger formula,95.30
-18037,Argentina zone 7,Argentina 7,,,Argentina east of 55 deg 30 min West.,9807,-90.0,-54.0,,,1.0,7500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,Original transformation by Gauss-Kruger formula,95.30
-18041,Austria West Zone,,,,Austria west of 11deg 50min East of Greenwich (29deg 30min E of Ferro).,9807,0.0,28.0,,,1.0,0.0,0.0,9001,9102,8909,,,,,1997-04-11 00:00:00,,EPSG,Superseded by M28 (EPSG code 18044).,95.30  96.29  97.01  98.48
-18042,Austria Central Zone,,,,Austria between 11deg 50min and 14deg 50min East of Greenwich (29deg 30min and 32deg 30min East of Ferro).,9807,0.0,31.0,,,1.0,0.0,0.0,9001,9102,8909,,,,,1997-04-11 00:00:00,,EPSG,Superseded by M31 (EPSG code 18045).,95.30  96.29  97.01  98.48
-18043,Austria East Zone,,,,Austria east of 14deg 50min East of Greenwich (32deg 30min East of Ferro).,9807,0.0,34.0,,,1.0,0.0,0.0,9001,9102,8909,,,,,1997-04-11 00:00:00,,EPSG,Superseded by M34 (EPSG code 18046).,95.30  96.29  97.01  98.48
-18044,Austria M28,M28,,,Austria west of 11deg 50min East of Greenwich (29deg 30min E of Ferro).,9807,0.0,10.2,,,1.0,150000.0,0.0,9001,9110,8901,,,,,1999-10-20 00:00:00,Bundesamt f�r Eich- und Vermessungswesen,EPSG,Supersedes Austria West zone (EPSG code 18041).,
-18045,Austria M31,M31,,,Austria between 11deg 50min and 14deg 50min East of Greenwich (29deg 30min and 32deg 30min East of Ferro).,9807,0.0,13.2,,,1.0,450000.0,0.0,9001,9110,8901,,,,,1999-10-20 00:00:00,Bundesamt f�r Eich- und Vermessungswesen,EPSG,Supersedes Austria Central zone (EPSG code 18042).,
-18046,Austria M34,M34,,,Austria east of 14deg 50min East of Greenwich (32deg 30min East of Ferro).,9807,0.0,16.2,,,1.0,750000.0,0.0,9001,9110,8901,,,,,1999-10-20 00:00:00,Bundesamt f�r Eich- und Vermessungswesen,EPSG,Supersedes Austria East zone (EPSG code 18043).,
-18051,Colombia West zone,Colombia 3W,,,Colombia west of 1 deg 30 min W of Bogota (75d 34m 51.30s W of Greenwich).,9807,4.355657,-77.04513,,,1.0,1000000.0,1000000.0,9001,9110,8901,,,,,1997-04-11 00:00:00,,EPSG,"Original transformation by Gauss-Kruger formula.  Zone name sometimes referred to as \"6 west\".",95.30  96.29  97.11
-18052,Colombia Bogota zone,Colombia Bogota,,,Colombia 1 deg 30 min W to 1 deg 30 min E of Bogota (75d 35m W to 72d 35m W of Greenwich).,9807,4.355657,-74.04513,,,1.0,1000000.0,1000000.0,9001,9110,8901,,,,,1997-04-11 00:00:00,,EPSG,Original transformation by Gauss-Kruger formula,95.30  96.29  97.11
-18053,Colombia East Central zone,Colombia 3E,,,Colombia 1 deg 30 min to 4 deg 30 min E of Bogota (72d 35m to 69d 34m W of Greenwich).,9807,4.355657,-71.04513,,,1.0,1000000.0,1000000.0,9001,9110,8901,,,,,1997-04-11 00:00:00,,EPSG,"Original transformation by Gauss-Kruger formula.  Zone name sometimes referred to as \"3 east\".",95.30  96.29  97.11
-18054,Colombia East zone,Colombia 6E,,,Colombia east of 4 deg 30 min E of Bogota (69d 34m 51.3s W of Greenwich).,9807,4.355657,-68.04513,,,1.0,1000000.0,1000000.0,9001,9110,8901,,,,,1997-04-11 00:00:00,,EPSG,"Original transformation by Gauss-Kruger formula.  Zone name sometimes referred to as \"6 east\".",95.30  96.29  97.11
-18061,Cuba Norte,,,,Cuba,9801,22.21,-81.0,,,0.99993602,500000.0,280296.016,9001,9110,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.30  96.29
-18062,Cuba Sur,,,,Cuba,9801,20.43,-76.5,,,0.99994848,500000.0,229126.939,9001,9110,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.30  96.29
-18071,Egypt Blue Belt,Blue Belt,,,Egypt  - Sinai peninsula.,9807,30.0,35.0,,,1.0,300000.0,1100000.0,9001,9102,8901,,,,,1999-04-22 00:00:00,,EPSG,Also known as Green Belt.,
-18072,Egypt Red Belt,Red Belt,,,Egypt  east of 29 deg East.,9807,30.0,31.0,,,1.0,615000.0,810000.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.30
-18073,Egypt Purple Belt,Purple Belt,,,Egypt  west of 29 deg East; north of approx 28 deg 11 min North.,9807,30.0,27.0,,,1.0,700000.0,200000.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.30
-18074,Egypt Extended Purple Belt,Extended Purple Belt,,,Egypt  west of 29 deg East; south of approx 28 deg 11 min North.,9807,30.0,27.0,,,1.0,700000.0,1200000.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.30
-18081,France I,,,,France north of 53.5 grads (48 deg 09 min) North.,9801,55.0,0.0,,,0.999877341,600000.0,1200000.0,9001,9105,8903,,,,,1996-09-12 00:00:00,IGN Paris.,EPSG,Introduced 1972. See 18091.,95.26
-18082,France II,,,,France 50.5 to 53.5 grads (45 deg 27 min to 48 deg 09 min) North.,9801,52.0,0.0,,,0.99987742,600000.0,2200000.0,9001,9105,8903,,,,,1996-09-12 00:00:00,IGN Paris.,EPSG,Introduced 1972. See 18092.,95.26
-18083,France III,,,,France south of 50.5 grads (45 deg 27 min) North.,9801,49.0,0.0,,,0.999877499,600000.0,3200000.0,9001,9105,8903,,,,,1996-09-12 00:00:00,IGN Paris.,EPSG,Introduced 1972. See 18093.,95.26
-18084,France IV,,,,France - Corsica.,9801,46.85,0.0,,,0.99994471,234.358,4185861.369,9001,9105,8903,,,,,1996-09-12 00:00:00,IGN Paris.,EPSG,Introduced 1972. See 18094.,
-18091,Nord France,,,,France north of 53.5 grads (48 deg 09 min) North.,9801,55.0,0.0,,,0.999877341,600000.0,200000.0,9001,9105,8903,,,,,1996-09-12 00:00:00,IGN Paris.,EPSG,Superseded by 18081 from 1972.,95.26
-18092,Centre France,,,,France 50.5 to 53.5 grads (45 deg 27 min to 48 deg 09 min) North.,9801,52.0,0.0,,,0.99987742,600000.0,200000.0,9001,9105,8903,,,,,1996-09-12 00:00:00,IGN Paris.,EPSG,Superseded by 18082 from 1972.,95.26
-18093,Sud France,,,,France south of 50.5 grads (45 deg 27 min) North.,9801,49.0,0.0,,,0.999877499,600000.0,200000.0,9001,9105,8903,,,,,1996-09-12 00:00:00,IGN Paris.,EPSG,Superseded by 18083 from 1972.,95.26
-18094,Corse,,,,France - Corsica.,9801,46.85,0.0,,,0.99994471,234.358,185861.369,9001,9105,8903,,,,,1996-09-12 00:00:00,IGN Paris.,EPSG,Superseded by 18084 from 1972.,
-18101,Germany zone 1,,,,Germany - onshore west of 4 deg 30 min East.,9807,0.0,3.0,,,1.0,1500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,Original transformation by Gauss-Kruger formula,95.30
-18102,Germany zone 2,,,,Germany - onshore between 4 deg 30 min and 7 deg 30 min East.,9807,0.0,6.0,,,1.0,2500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,Original transformation by Gauss-Kruger formula,95.30
-18103,Germany zone 3,,,,Germany - onshore between 7 deg 30 min and 10 deg 30 min East.,9807,0.0,9.0,,,1.0,3500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,Original transformation by Gauss-Kruger formula,95.30
-18104,Germany zone 4,,,,Germany - onshore between 10 deg 30 min and 13 deg 30 min East.,9807,0.0,12.0,,,1.0,4500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,Original transformation by Gauss-Kruger formula,95.30
-18105,Germany zone 5,,,,Germany - onshore between 13 deg 30 min and 16 deg 30 min East.,9807,0.0,15.0,,,1.0,5500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,Original transformation by Gauss-Kruger formula,95.30
-18110,India zone 0,,,,Pakistan north of 35 deg 35 min North.,9801,39.3,68.0,,,0.99846154,2355500.0,2590000.0,9084,9110,8901,,,,,1999-10-20 00:00:00,US Army Map Service projection tables; 1943.,EPSG,BEWARE !  Different yard to metre conversion values have been used in different parts of south Asia. Some areas have changed conversion value with time.,95.30  96.01  96.02  96.29  97.23
-18111,India zone I,,,,India north of 28 deg North. Pakistan 28 deg to 35 deg 35 min North.,9801,32.3,68.0,,,0.99878641,3000000.0,1000000.0,9084,9110,8901,,,,,1999-10-20 00:00:00,US Army Map Service projection tables; 1943.,EPSG,BEWARE !  Different yard to metre conversion values have been used in different parts of south Asia. Some areas have changed conversion value with time.,95.30  96.02  96.29  97.23
-18112,India zone IIa,,,,India - between 21 deg and 28 deg North and  west of 82 deg East; Pakistan - south of 28 deg North.,9801,26.0,74.0,,,0.99878641,3000000.0,1000000.0,9084,9102,8901,,,,,1999-10-20 00:00:00,US Army Map Service projection tables; 1943.,EPSG,BEWARE !  Different yard to metre conversion values have been used in different parts of south Asia. Some areas have changed conversion value with time.,95.28  96.02  97.23
-18113,India zone IIb,India zone II b,,,Bangladesh; India - north of 21 deg North and east of 82 deg East; Myanmar (Burma) - north of 21 deg North.,9801,26.0,90.0,,,0.99878641,3000000.0,1000000.0,9084,9102,8901,,,,,1999-10-20 00:00:00,US Army Map Service projection tables; 1943.,EPSG,BEWARE !  Different yard to metre conversion values have been used in different parts of south Asia. Some areas have changed conversion value with time.,95.28  96.02  97.23
-18114,India zone IIIa,India zone IIIa,,,India - between 15 deg and 21 deg North.,9801,19.0,80.0,,,0.99878641,3000000.0,1000000.0,9084,9102,8901,,,,,1999-10-20 00:00:00,US Army Map Service projection tables; 1943.,EPSG,BEWARE !  Different yard to metre conversion values have been used in different parts of south Asia. Some areas have changed conversion value with time.,95.28  96.02  97.23
-18115,India zone IIIb,,,,Myanmar (Burma) - between 15 deg and 21 deg North.,9801,19.0,100.0,,,0.99878641,3000000.0,1000000.0,9084,9102,8901,,,,,1999-10-20 00:00:00,US Army Map Service projection tables; 1943.,EPSG,BEWARE !  Different yard to metre conversion values have been used in different parts of south Asia. Some areas have changed conversion value with time.,95.28  96.02  97.23
-18116,India zone IVa,India zone Iva,,,India - south of 15 deg North.,9801,12.0,80.0,,,0.99878641,3000000.0,1000000.0,9084,9102,8901,,,,,1999-10-20 00:00:00,US Army Map Service projection tables; 1943.,EPSG,BEWARE !  Different yard to metre conversion values have been used in different parts of south Asia. Some areas have changed conversion value with time.,95.28  96.02  97.23
-18117,India zone IVb,,,,Myanmar - south of 15 deg North.,9801,12.0,100.0,,,0.99878641,3000000.0,1000000.0,9084,9102,8901,,,,,1999-10-20 00:00:00,US Army Map Service projection tables; 1943.,EPSG,BEWARE !  Different yard to metre conversion values have been used in different parts of south Asia. Some areas have changed conversion value with time.,95.28  96.02  97.23
-18121,Italy zone 1,,,,Italy west of 12 deg East (of Greenwich).,9807,0.0,9.0,,,0.9996,1500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,Original transformation by Gauss-Boaga formula,
-18122,Italy zone 2,,,,Italy east of 12 deg East (of Greenwich).,9807,0.0,15.0,,,0.9996,2520000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,Original transformation by Gauss-Boaga formula,
-18131,Nord Maroc,,,,Morocco north of 35 grads (31 deg 30 min) North.,9801,37.0,-6.0,,,0.999625769,500000.0,300000.0,9001,9105,8901,,,,,1996-09-12 00:00:00,IGN Paris.,EPSG,A projection with the same parameter values used the Lambert Conic Near-Conformal method (EPSG code 9817) prior to 1953.,99.203
-18132,Sud Maroc,,,,Morocco 31gr to 35gr  (27 deg 54 min to 31 deg 30 min) North.,9801,33.0,-6.0,,,0.999615596,500000.0,300000.0,9001,9105,8901,,,,,1996-09-12 00:00:00,,EPSG,A projection with the same parameter values used the Lambert Conic Near-Conformal method (EPSG code 9817) prior to 1953.,99.203
-18133,Sahara,,,,Morocco south of 31gr  (27 deg 54 min) North.,9801,29.0,-6.0,,,0.9996,1200000.0,400000.0,9001,9105,8901,,,,,1996-09-12 00:00:00,IGN Paris,EPSG,Created in 1977 to cover Sahara Marocain (ex Spanish Sahara),
-18141,New Zealand North Island National Grid,North Island Grid,,,New Zealand - North Island.,9807,-39.0,175.3,,,1.0,300000.0,400000.0,9040,9110,8901,,,,,1999-10-20 00:00:00,,EPSG,Superseded by New Zealand Map Grid.,95.30  96.29  97.231
-18142,New Zealand South Island National Grid,South Island Grid,,,New Zealand - South Island.,9807,-44.0,171.3,,,1.0,500000.0,500000.0,9040,9110,8901,,,,,1999-10-20 00:00:00,,EPSG,Superseded by New Zealand Map Grid.,95.30  96.29  97.231
-18151,Nigeria West Belt,,,,Nigeria west of 6 deg 30 min East.,9807,4.0,4.3,,,0.99975,230738.26,0.0,9001,9110,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.30  96.29
-18152,Nigeria Mid Belt,,,,Nigeria between 6 deg 30 min and 10 deg 30 min East.,9807,4.0,8.3,,,0.99975,670553.98,0.0,9001,9110,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.30  96.29
-18153,Nigeria East Belt,,,,Nigeria east of 10 deg 30 min East.,9807,4.0,12.3,,,0.99975,1110369.7,0.0,9001,9110,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.30  96.29
-18161,Peru west zone,,,,Peru west of 79 deg West.,9807,-6.0,-80.3,,,0.99983008,222000.0,1426834.743,9001,9110,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.30  96.29
-18162,Peru central zone,,,,Peru 79 to 73 deg West.,9807,-9.3,-76.0,,,0.99932994,720000.0,1039979.159,9001,9110,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.30  96.29
-18163,Peru east zone,,,,Peru east of 73 deg West.,9807,-9.3,-70.3,,,0.99952992,1324000.0,1040084.558,9001,9110,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.30  96.29
-18171,Philippines zone  I,,,,Philippines - west of 118 deg East.,9807,0.0,117.0,,,0.99995,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.30
-18172,Philippines zone  II,,,,Philippines - Palawan; Calamian Islands.,9807,0.0,119.0,,,0.99995,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.30
-18173,Philippines zone  III,,,,Philippines - Luzon (except SE part); Mindoro.,9807,0.0,121.0,,,0.99995,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.30
-18174,Philippines zone  IV,,,,Philippines - SE Luzon; Tablas; Masbate; Panay; Cebu; Negros; W. Mindanao.,9807,0.0,123.0,,,0.99995,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.30
-18175,Philippines zone  V,,,,Philippines - E. Mindanao; Bohol; Samar.,9807,0.0,125.0,,,0.99995,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.30
-18181,Nord Tunisie,,,,Tunisia north of 38.5 grads (34 deg 39 min) North.,9801,40.0,11.0,,,0.999625544,500000.0,300000.0,9001,9105,8901,,,,,1996-09-12 00:00:00,,EPSG,,95.30
-18182,Sud Tunisie,,,,Tunisia south of 38.5 grads (34 deg 39 min) North.,9801,37.0,11.0,,,0.999625769,500000.0,300000.0,9001,9105,8901,,,,,1996-09-12 00:00:00,,EPSG,,
-18191,Finland zone 1,,,,Finland - west of 22deg 30min E.,9807,0.0,21.0,,,1.0,1500000.0,0.0,9001,9102,8901,,,,,1997-07-22 00:00:00,www.nls.fi/maa/papers/kkj.html,EPSG,,
-18192,Finland zone 2,,,,Finland - 22deg 30 min to 25deg 30min E.,9807,0.0,24.0,,,1.0,2500000.0,0.0,9001,9102,8901,,,,,1997-07-22 00:00:00,www.nls.fi/maa/papers/kkj.html,EPSG,,
-18193,Finland Uniform Coordinate System,Finland zone 3,,,Finland; Finland - 25 deg 30min E to 28deg 30min E.,9807,0.0,27.0,,,1.0,3500000.0,0.0,9001,9102,8901,,,,,1997-07-22 00:00:00,www.nls.fi/maa/papers/kkj.html,EPSG,Used by Uniform Coordinate System over all country and also by zone 3 of Basic Coordinate System at larger scales.,
-18194,Finland zone 4,,,,Finland - east of 28deg 30 min E.,9807,0.0,30.0,,,1.0,4500000.0,0.0,9001,9102,8901,,,,,1997-07-22 00:00:00,www.nls.fi/maa/papers/kkj.html,EPSG,,
-18201,Palestine Grid,,,,Israel;  Jordan,9806,31.4402749,35.124349,,,,170251.555,126867.909,9001,9110,8901,,,,,1999-04-22 00:00:00,,EPSG,Also encountered as a Transverse Mercator projection with scale factor of 1.  The difference in conversion caused by the change of formula does not exceed 2m within Israel.  Within the State of Israel superseded by the Israeli CS Grid (EPSG code 18203).,
-18202,Palestine Belt,,,,Israel;  Jordan,9807,31.4402749,35.124349,,,1.0,170251.555,1126867.909,9001,9110,8901,,,,,1999-04-22 00:00:00,,EPSG,"Originally constructed as the Palestine Grid - EPSG code 18201. Adopted by the US Army Map Service as \"Palestine Belt\" with change of projection method and false northing (FN). Sometimes seen with unchanged FN of 126867.909.",
-18203,Israeli CS,ICS,,,Israel,9806,31.4402749,35.124349,,,,170251.555,1126867.909,9001,9110,8901,,,,,1999-10-20 00:00:00,Survey of Israel   ftp://ftp.rd.soi.gov.il/doc,EPSG,,
-18204,Israeli TM,ITM,,,Israel,9807,31.4403817,35.1216261,,,1.0000067,219529.584,626907.39,9001,9110,8901,,,,,1999-10-20 00:00:00,Survey of Israel   ftp://ftp.rd.soi.gov.il/doc,EPSG,Designed to approximate Israeli CS grid in north-central Israel.,
-18211,Guatemala Norte,,,,Guatemala north of 15 deg 50 min North.,9801,16.49,-90.2,,,0.99992226,500000.0,292209.579,9001,9110,8901,,,,,1999-08-16 00:00:00,,EPSG,,
-18212,Guatemala Sud,,,,Guatemala south of 15 deg 50 min North.,9801,14.54,-90.2,,,0.99989906,500000.0,325992.681,9001,9110,8901,,,,,1999-08-16 00:00:00,,EPSG,,
-18221,NGO zone I,,,,Norway - west of 3deg 30min W of Oslo (7deg 13min 22.5sec E of Greenwich).,9807,58.0,-4.4,,,1.0,0.0,0.0,9001,9110,8913,,,,,1999-10-20 00:00:00,"J. Danielsen; \"Transformasjoner ved Norges Geografiske Oppm�ling\"; Kart Og Plan nr 1; 1982.",EPSG,,
-18222,NGO zone II,,,,Norway - between 3deg 30min W and 1deg 10min W of Oslo (7deg 13min 22.5sec E  and 9deg 33min 22.5sec E of Greenwich).,9807,58.0,-2.2,,,1.0,0.0,0.0,9001,9110,8913,,,,,1999-10-20 00:00:00,"J. Danielsen; \"Transformasjoner ved Norges Geografiske Oppm�ling\"; Kart Og Plan nr 1; 1982.",EPSG,,
-18223,NGO zone III,,,,Norway - between 1deg 10min W and 1deg 15min E of Oslo (9deg 33min 22.5sec E and 11deg 58min 22.5sec E of Greenwich).,9807,58.0,0.0,,,1.0,0.0,0.0,9001,9110,8913,,,,,1999-10-20 00:00:00,"J. Danielsen; \"Transformasjoner ved Norges Geografiske Oppm�ling\"; Kart Og Plan nr 1; 1982.",EPSG,,
-18224,NGO zone IV,,,,Norway - between 1deg 15min E and 4deg 20min E of Oslo (11deg 58min 22.5sec E and 15deg 03min 22.5sec E of Greenwich).,9807,58.0,2.3,,,1.0,0.0,0.0,9001,9110,8913,,,,,1999-10-20 00:00:00,"J. Danielsen; \"Transformasjoner ved Norges Geografiske Oppm�ling\"; Kart Og Plan nr 1; 1982.",EPSG,,
-18225,NGO zone V,,,,Norway - between 4deg 20min E and 8deg 10min E of Oslo (15deg 03min 22.5sec E and 18deg 53min 22.5sec E of Greenwich).,9807,58.0,6.1,,,1.0,0.0,0.0,9001,9110,8913,,,,,1999-10-20 00:00:00,"J. Danielsen; \"Transformasjoner ved Norges Geografiske Oppm�ling\"; Kart Og Plan nr 1; 1982.",EPSG,,
-18226,NGO zone VI,,,,Norway - between 8deg 10min E and 12deg 10min E of Oslo (18deg 53min 22.5sec E and 22deg 53min 22.5sec E of Greenwich).,9807,58.0,10.1,,,1.0,0.0,0.0,9001,9110,8913,,,,,1999-10-20 00:00:00,"J. Danielsen; \"Transformasjoner ved Norges Geografiske Oppm�ling\"; Kart Og Plan nr 1; 1982.",EPSG,,
-18227,NGO zone VII,,,,Norway - between 12deg 10min E and 16deg 15min E of Oslo (22deg 53min 22.5sec E and 26deg 58min 22.5sec E of Greenwich).,9807,58.0,14.1,,,1.0,0.0,0.0,9001,9110,8913,,,,,1999-10-20 00:00:00,"J. Danielsen; \"Transformasjoner ved Norges Geografiske Oppm�ling\"; Kart Og Plan nr 1; 1982.",EPSG,,
-18228,NGO zone VIII,,,,Norway - east of 16deg 15min E of Oslo (26deg 58min 22.5sec E of Greenwich).,9807,58.0,18.2,,,1.0,0.0,0.0,9001,9110,8913,,,,,1999-10-20 00:00:00,"J. Danielsen; \"Transformasjoner ved Norges Geografiske Oppm�ling\"; Kart Og Plan nr 1; 1982.",EPSG,,
-18231,India zone I (1975 metres),India zone I,,,India north of 28 deg North.,9801,32.3,68.0,,,0.99878641,2743185.69,914395.23,9001,9110,8901,,,,,1999-10-20 00:00:00,,EPSG,BEWARE !  Different yard to metre conversion values have been used in different parts of south Asia. Some areas have changed conversion value with time.,
-18232,India zone IIa (1975 metres),India zone II a,,,India - between 21 deg and 28 deg North and  west of 82 deg East.,9801,26.0,74.0,,,0.99878641,2743185.69,914395.23,9001,9102,8901,,,,,1999-10-20 00:00:00,,EPSG,BEWARE !  Different yard to metre conversion values have been used in different parts of south Asia. Some areas have changed conversion value with time.,
-18233,India zone IIIa (1975 metres),India zone IIIa,,,India - between 15 deg and 21 deg North.,9801,19.0,80.0,,,0.99878641,2743185.69,914395.23,9001,9102,8901,,,,,1999-10-20 00:00:00,,EPSG,BEWARE !  Different yard to metre conversion values have been used in different parts of south Asia. Some areas have changed conversion value with time.,
-18234,India zone IVa (1975 metres),India zone IV a,,,India - south of 15 deg North.,9801,12.0,80.0,,,0.99878641,2743185.69,914395.23,9001,9102,8901,,,,,1999-10-20 00:00:00,,EPSG,BEWARE !  Different yard to metre conversion values have been used in different parts of south Asia. Some areas have changed conversion value with time.,
-18235,India zone IIb (1975 metres),India zone II b,,,India - north of 21 deg North and east of 82 deg East.,9801,26.0,90.0,,,0.99878641,2743185.69,914395.23,9001,9102,8901,,,,,1999-10-20 00:00:00,,EPSG,BEWARE !  Different yard to metre conversion values have been used in different parts of south Asia. Some areas have changed conversion value with time.,
-18236,India zone I (1962 metres),India zone I,,,Pakistan - north of 28 deg North.,9801,32.3,68.0,,,0.99878641,2743196.4,914398.8,9001,9110,8901,,,,,1999-10-20 00:00:00,,EPSG,BEWARE !  Different yard to metre conversion values have been used in different parts of south Asia. Some areas have changed conversion value with time.,
-18237,India zone IIa (1962 metres),India zone II a,,,Pakistan - south of 28 deg North.,9801,26.0,74.0,,,0.99878641,2743196.4,914398.8,9001,9102,8901,,,,,1999-10-20 00:00:00,,EPSG,BEWARE !  Different yard to metre conversion values have been used in different parts of south Asia. Some areas have changed conversion value with time.,
-18238,India zone IIb (1937 metres),India zone II b,,,Bangladesh.,9801,26.0,90.0,,,0.99878641,2743195.5,914398.5,9001,9102,8901,,,,,1999-10-20 00:00:00,US Army Map Service projection tables; 1943.,EPSG,BEWARE !  Different yard to metre conversion values have been used in different parts of south Asia. Some areas have changed conversion value with time.,
-19900,Bahrain State Grid,Bahrain Grid,,,Bahrain.,9807,0.0,51.0,,,0.9996,500000.0,0.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.30
-19901,Belge Lambert 50,,,,Belgium - onshore.,9802,90.0,0.0,49.5,51.1,,150000.0,5400000.0,9001,9110,8910,,,,,1999-04-22 00:00:00,"\"Systemes de reference et formules de transformation en usage en Belgique\"; IGN Brussels",EPSG,,95.30  96.29  99.28
-19902,Belge Lambert 72,,,,Belgium - onshore.,9803,90.0,4.2124983,49.5,51.1,,150000.01256,5400088.4378,9001,9110,8901,,,,,1999-04-22 00:00:00,"\"Systemes de reference et formules de transformation en usage en Belgique\"; IGN Brussels",EPSG,Rotation from Belge Lambert 50 to Belge Lambert 72 is +29.2985sec.,95.30  96.29  99.28
-19903,Nord de Guerre,,,,France - Alsace.,9801,55.0,6.0,,,0.99950908,500000.0,300000.0,9001,9105,8903,,,,,1996-09-12 00:00:00,,EPSG,,
-19904,Ghana Metre Grid,,,,Ghana.,9807,4.4,-1.0,,,0.99975,274319.51,0.0,9001,9110,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.30  96.29
-19905,Netherlands East Indies Equatorial Zone,NEIEZ,,,Indonesia.,9804,0.0,110.0,,,0.997,3900000.0,900000.0,9001,9102,8901,,,,,1995-12-02 00:00:00,US Army Map Service projection tables; 1943.,EPSG,,95.30
-19906,Iraq zone,,,,Iran -south of 36 deg North; Iraq;  Kuwait.,9801,32.3,45.0,,,0.99878640776699,1500000.0,1166200.0,9001,9110,8901,,,,,1996-04-12 00:00:00,US Army Map Service projection tables; 1943.,EPSG,,95.30  96.29
-19907,Iraq National Grid,,,,Iraq.,9807,29.0134566,46.3,,,0.9994,800000.0,0.0,9001,9110,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.30  96.29
-19908,Irish National Grid,,,,Ireland - onshore.  United Kingdom (UK) - Northern Ireland onshore.,9807,53.3,-8.0,,,1.000035,200000.0,250000.0,9001,9110,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.30  96.29
-19909,Jamaica (Old Grid),,,,Jamaica.,9801,18.0,-77.0,,,1.0,550000.0,400000.0,9005,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,Superseded by Jamaica (New Grid).,95.28
-19910,Jamaica National Grid,,,,Jamaica.,9801,18.0,-77.0,,,1.0,250000.0,150000.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,Supersedes Jamaica (Old Grid).,95.28
-19911,Laborde Grid,,,,Madagascar.,9815,-21.0,49.0,21.0,21.0,0.9995,400000.0,800000.0,9001,9105,8903,,,,,1997-11-13 00:00:00,,EPSG,Can also use transformation method 9813.,97.613
-19912,Rectified Skew Orthomorphic Borneo Grid,R.S.O. Borneo,,,Brunei;  Malaysia - East Malaysia (Sabah; Sarawak).,9812,4.0,115.0,53.18569537,53.07483685,0.99984,0.0,0.0,9042,9110,8901,,,,,1999-10-20 00:00:00,,EPSG,,95.30  96.29  97.231
-19913,RD Old,,,,Netherlands - onshore.,9809,52.0922178,5.23155,,,0.9999079,0.0,0.0,9001,9110,8901,,,,,1995-12-02 00:00:00,Nederlandse Commissie voor Geodesie publication 30.,EPSG,,95.30  96.29
-19914,RD New,,,,Netherlands - onshore.,9809,52.0922178,5.23155,,,0.9999079,155000.0,463000.0,9001,9110,8901,,,,,1995-12-02 00:00:00,Nederlandse Commissie voor Geodesie publication 30.,EPSG,,95.30  96.29
-19915,Aden Zone,,,,Yemen.,9801,15.0,45.0,,,0.999365678,1500000.0,1000000.0,9001,9102,8901,,,,,1995-12-02 00:00:00,US Army Map Service projection tables; 1943.,EPSG,,95.28
-19916,British National Grid,,,,United Kingdom (UK) - onshore England; Scotland; Wales; Isle of Man.,9807,49.0,-2.0,,,0.999601272,400000.0,-100000.0,9001,9102,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.30
-19917,New Zealand Map Grid,,,,New Zealand.,9811,-41.0,173.0,,,,2510000.0,6023150.0,9001,9102,8901,,,,,1995-12-02 00:00:00,Dept. of Lands and Surveys Technical Circular 1973/32; 23 Nov 1973.,EPSG,Supersedes North and South Island National Grids.,95.28
-19919,Qatar National Grid,,,,Qatar.,9807,24.27,51.13,,,0.99999,200000.0,300000.0,9001,9110,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.30  96.29
-19920,Singapore Grid,,,,Singapore.,9806,1.1715528,103.5110808,,,,30000.0,30000.0,9001,9110,8901,,,,,1995-12-02 00:00:00,,EPSG,,95.30  96.29
-19921,Spain,,,,Spain.,9801,40.0,0.0,,,0.9988085293,600000.0,600000.0,9001,9102,8905,,,,,1995-12-02 00:00:00,,EPSG,Superseded by UTM,95.28
-19922,Swiss New Grid,LV03,,,Liechtenstein;  Switzerland.,9815,46.570866,7.26225,90.0,90.0,1.0,600000.0,200000.0,9001,9110,8901,,,,,1997-11-13 00:00:00,"\"Die Projektionen der schweizerischen Plan- und Kartenwerke\"; J. Bolliger 1967",EPSG,,95.30  96.29  97.27  97.612  97.62
-19923,Swiss Old Grid,LV03C,,,Liechtenstein;  Switzerland.,9815,46.570866,0.0,90.0,90.0,1.0,0.0,0.0,9001,9110,8907,,,,,1997-11-13 00:00:00,"\"Die Projektionen der schweizerischen Plan- und Kartenwerke\"; J. Bolliger 1967",EPSG,Superseded by LV03 (19922).,95.30  96.29  97.612  97.62
-19924,Tobago Grid,,,,Trinidad and Tobago - Tobago.,9806,11.1507843,-60.4109632,,,,187500.0,180000.0,9039,9110,8901,,,,,1999-10-20 00:00:00,,EPSG,,95.30  96.29  97.231
-19925,Trinidad Grid,,,,Trinidad and Tobago - Trinidad.,9806,10.263,-61.2,,,,430000.0,325000.0,9039,9110,8901,,,,,1999-10-20 00:00:00,,EPSG,,95.30  96.29  97.231
-19926,Stereo 70,,,,Romania.,9809,46.0,25.0,,,0.99975,500000.0,500000.0,9001,9102,8901,,,,,1996-04-12 00:00:00,,EPSG,Supersedes Stereo 33 (code 19927).,
-19927,Stereo 33,,,,Romania.,9809,45.54,25.23328772,,,0.9996667,500000.0,500000.0,9001,9110,8901,,,,,1996-04-12 00:00:00,,EPSG,Superseded by Stereo 70 (code 19926),96.29
-19928,Kuwait TM,KTM,,,Kuwait - Kuwait City.,9807,0.0,48.0,,,0.9996,500000.0,0.0,9001,9102,8901,,,,,1996-04-12 00:00:00,,EPSG,,
-19929,Swedish National Projection,2.5 gon West,,,Sweden.,9807,0.0,15.48298,,,1.0,1500000.0,0.0,9001,9110,8901,,,,,1997-11-13 00:00:00,Lantmateriet of Sweden; private communication.,EPSG,"Used since 1938 superseding 6 old zones.  Longitude of natural origin is 2.5 gon west of Stockholm prime meridian; transformation is also known as \"2.5 gon West of old Stockholm observatory\".",96.29  97.39
-19930,Greek Grid,,,,Greece,9807,0.0,24.0,,,0.9996,500000.0,0.0,9001,9102,8901,,,,,1997-06-16 00:00:00,Geodesy Department; Public Petroleum Corporation of Greece.,EPSG,Created for use with GGRS87.,
-19931,Egyseges Orszagos Vetuleti,EOV,,,Hungary,9815,47.08398174,19.02548584,90.0,90.0,0.99993,650000.0,200000.0,9001,9110,8901,,,,,1997-07-22 00:00:00,http://lazarus.elte.hu/gb/geodez/geod2.htm,EPSG,EOV = Uniform National Projection,
-19933,Prince Edward Island Stereographic,PEI Stereographic,,,Canada - Prince Edward Island,9809,47.15,-63.0,,,0.999912,700000.0,400000.0,9001,9110,8901,,,,,1997-11-13 00:00:00,Geomatics Centre; Nova Scotia Ministry of Housing and Municipal Affairs.,EPSG,In use from 1979.  To be phased out in late 1990's.,
-19934,Lithuania 1994,,,,Lithuania,9807,0.0,24.0,,,0.9998,500000.0,0.0,9001,9102,8901,,,,,1998-03-12 00:00:00,HNIT-BALTIC GeoInfoServisas,EPSG,,
-19935,Rectified Skew Orthomorphic Malaya Grid,R.S.O. Malaya,,,Malaysia - West Malaysia,9812,4.0,102.15,323.01328458,323.07483685,0.99984,40000.0,0.0,9062,9110,8901,,,,,1999-10-20 00:00:00,UK Directorate of Overseas Surveys paper,EPSG,,97.231
-19936,Portuguese National Grid,,,,Portugal onshore.,9807,39.4,1.0,,,1.0,200000.0,300000.0,9001,9110,8902,,,,,1998-11-11 00:00:00,,EPSG,Original transformation by Gauss-Kruger formula.,95.30  96.29  98.42
-19937,Tunisia Mining Grid,,,,Tunisia - onshore,9816,38.81973,7.83445,,,,270.0,582.0,9036,9105,8903,,,,,1999-11-15 00:00:00,Mining decree of 1st January 1953,EPSG,Origin: Djebel Kebar,99.81
-19938,Estonian National Grid,,,,Estonia,9802,57.310319415,24.0,59.2,58.0,,500000.0,6375000.0,9001,9110,8901,,,,,1999-04-22 00:00:00,http://www.geo.ut.ee/~raivo/estcoord.html,EPSG,Coordinates at the projection origin match those of TM Baltic 93.,99.28
-19939,TM Baltic 93,,,,Estonia; Latvia; Lithuania.,9807,0.0,24.0,,,0.9996,500000.0,0.0,9001,9102,8901,,,,,1998-12-14 00:00:00,http://www.geo.ut.ee/~raivo/estcoord.html,EPSG,,
-19940,Levant Zone,,,,Syrian Arab Republic west of 39 deg E.,9817,34.39,37.21,,,0.9996256,300000.0,300000.0,9001,9110,8901,,,,,1999-04-22 00:00:00,US Army Map Service projection tables; 1943.,EPSG,Superseded by projection using full Lambert formula from 1973. (EPSG code 19948).,
-19941,Brazil Polyconic,,,,Brazil,9818,0.0,-54.0,,,,5000000.0,10000000.0,9001,9102,8901,,,,,1999-10-20 00:00:00,PetroBras,EPSG,,99.55
-19942,British West Indies Grid,,,,Windward Islands - Dominica  Grenada  Saint Lucia  Saint Vincent;  Leeward Islands - Anguilla   Antigua (excluding Barbuda)  Montserrat   Saint Kitts and Nevis; Barbados.,9807,0.0,-62.0,,,0.9995,400000.0,0.0,9001,9102,8901,,,,,1999-04-22 00:00:00,"UK Royal Engineers projection tables P10/25, 1943.",EPSG,,
-19943,Barbados National Grid,,,,Barbados,9807,13.1035,-59.3335,,,0.9999986,30000.0,75000.0,9001,9110,8901,,,,,1999-04-22 00:00:00,Ordnance Survey of Great Britain,EPSG,Superseded British West Indies Grid (19942) after 1983.,
-19944,Quebec Lambert Projection,,,,Canada - Quebec,9802,44.0,-68.3,60.0,46.0,,0.0,0.0,9001,9110,8901,,,,,1999-10-22 00:00:00,Service de la Cartographie; Minist�re des Ressources Naturelles; Quebec,EPSG,,
-19945,New Brunswick Stereographic (ATS77),NB Stereographic ATS77,,,Canada - New Brunswick - onshore,9809,46.3,-66.3,,,0.999912,300000.0,800000.0,9001,9110,8901,,,,,1999-10-20 00:00:00,New Brunswick Geographic Information Corporation land and water information standards manual.,EPSG,In use from 1979.  To be phased out in late 1990's.,99.61
-19946,New Brunswick Stereographic (NAD83),NB Stereographic NAD83,,,Canada - New Brunswick - onshore,9809,46.3,-66.3,,,0.999912,2500000.0,7500000.0,9001,9110,8901,,,,,1999-10-20 00:00:00,New Brunswick Geographic Information Corporation land and water information standards manual.,EPSG,In use from 1999.,
-19947,Austria Lambert,,,,Austria,9802,13.2,47.3,49.0,46.0,,400000.0,400000.0,9001,9110,8901,,,,,1999-10-20 00:00:00,Bundesamt f�r Eich- und Vermessungswesen,EPSG,,
-19948,Syria Lambert,,,,Syrian Arab Republic,9801,34.39,37.21,,,0.9996256,300000.0,300000.0,9001,9110,8901,,,,,1999-10-20 00:00:00,IGN Paris,EPSG,Superseded Levant zone (same parameters but using truncated near-conformal method) from 1973.,
-19949,Levant Stereographic,,,,Lebanon,9809,38.0,43.5,,,0.9995341,0.0,0.0,9001,9105,8901,,,,,1999-10-20 00:00:00,IGN Paris,EPSG,Used prior to World War II for cadastral and large scale topographic mapping.,
-19950,Landesvermessung 1995,LV95,,,Liechtenstein;  Switzerland.,9815,46.570866,7.26225,90.0,90.0,1.0,2600000.0,1200000.0,9001,9110,8901,,,,,1999-10-20 00:00:00,Bundesamt f�r Landestopographie.  Aufbau der Landesvermessung der Schweiz 'LV95' Teil 3: Terrestrische Bezugssysteme und Bezugsrahmen. L+T 1999.,EPSG,,
-19951,Nakhl e Taqi Oblique Mercator,Nakhl e Taqi,,,Iran - Taheri refinery site only.,9815,27.31077837,52.3612741,0.34179803,0.34179803,0.999895934,658377.437,3044969.194,9001,9110,8901,,,,,1999-10-20 00:00:00,Total-Fina,EPSG,Used only for terminal site.,
diff --git a/src/tiff/csv/trf_path.c b/src/tiff/csv/trf_path.c
deleted file mode 100644
index 2514d84..0000000
--- a/src/tiff/csv/trf_path.c
+++ /dev/null
@@ -1,568 +0,0 @@
-#include "defs.h"
-datafile_rows_t trf_path_row_1[] = {"TRF_PATH_CODE","TRF_STEP_CODE","SOURCE_HORIZCS_CODE","TARGET_HORIZCS_CODE","POLYN_TRF_CODE","NONPOLYN_TRF_CODE","CHANGE_ID",NULL};
-datafile_rows_t trf_path_row_2[] = {"8400","1","4201","4326","","1100","",NULL};
-datafile_rows_t trf_path_row_3[] = {"8401","1","4201","4326","","1101","",NULL};
-datafile_rows_t trf_path_row_4[] = {"8402","1","4201","4326","","1102","",NULL};
-datafile_rows_t trf_path_row_5[] = {"8403","1","4201","4326","","1103","",NULL};
-datafile_rows_t trf_path_row_6[] = {"8404","1","4201","4326","","1104","",NULL};
-datafile_rows_t trf_path_row_7[] = {"8405","1","4201","4326","","1105","",NULL};
-datafile_rows_t trf_path_row_8[] = {"8406","1","4201","4326","","1106","",NULL};
-datafile_rows_t trf_path_row_9[] = {"8407","1","4205","4326","","1107","",NULL};
-datafile_rows_t trf_path_row_10[] = {"8408","1","4202","4326","","1108","",NULL};
-datafile_rows_t trf_path_row_11[] = {"8409","1","4203","4326","","1109","",NULL};
-datafile_rows_t trf_path_row_12[] = {"8410","1","4204","4326","","1110","",NULL};
-datafile_rows_t trf_path_row_13[] = {"8411","1","4204","4326","","1111","",NULL};
-datafile_rows_t trf_path_row_14[] = {"8412","1","4289","4326","","1112","",NULL};
-datafile_rows_t trf_path_row_15[] = {"8413","1","4209","4326","","1113","",NULL};
-datafile_rows_t trf_path_row_16[] = {"8414","1","4209","4326","","1114","",NULL};
-datafile_rows_t trf_path_row_17[] = {"8415","1","4209","4326","","1115","",NULL};
-datafile_rows_t trf_path_row_18[] = {"8416","1","4209","4326","","1116","",NULL};
-datafile_rows_t trf_path_row_19[] = {"8417","1","4209","4326","","1117","",NULL};
-datafile_rows_t trf_path_row_20[] = {"8418","1","4209","4326","","1118","",NULL};
-datafile_rows_t trf_path_row_21[] = {"8419","1","4209","4326","","1119","",NULL};
-datafile_rows_t trf_path_row_22[] = {"8420","1","4209","4326","","1120","",NULL};
-datafile_rows_t trf_path_row_23[] = {"8421","1","4209","4326","","1121","",NULL};
-datafile_rows_t trf_path_row_24[] = {"8422","1","4210","4326","","1122","",NULL};
-datafile_rows_t trf_path_row_25[] = {"8423","1","4211","4326","","1123","",NULL};
-datafile_rows_t trf_path_row_26[] = {"8424","1","4216","4326","","1124","",NULL};
-datafile_rows_t trf_path_row_27[] = {"8425","1","4218","4326","","1125","",NULL};
-datafile_rows_t trf_path_row_28[] = {"8426","1","4219","4326","","1126","",NULL};
-datafile_rows_t trf_path_row_29[] = {"8427","1","4221","4326","","1127","",NULL};
-datafile_rows_t trf_path_row_30[] = {"8428","1","4222","4326","","1128","",NULL};
-datafile_rows_t trf_path_row_31[] = {"8429","1","4222","4326","","1129","",NULL};
-datafile_rows_t trf_path_row_32[] = {"8430","1","4223","4326","","1130","",NULL};
-datafile_rows_t trf_path_row_33[] = {"8431","1","4224","4326","","1131","",NULL};
-datafile_rows_t trf_path_row_34[] = {"8432","1","4225","4326","","1132","",NULL};
-datafile_rows_t trf_path_row_35[] = {"8433","1","4230","4326","","1133","",NULL};
-datafile_rows_t trf_path_row_36[] = {"8434","1","4230","4326","","1134","",NULL};
-datafile_rows_t trf_path_row_37[] = {"8435","1","4230","4326","","1135","",NULL};
-datafile_rows_t trf_path_row_38[] = {"8436","1","4230","4326","","1136","",NULL};
-datafile_rows_t trf_path_row_39[] = {"8437","1","4230","4326","","1137","",NULL};
-datafile_rows_t trf_path_row_40[] = {"8438","1","4230","4326","","1138","",NULL};
-datafile_rows_t trf_path_row_41[] = {"8439","1","4230","4326","","1139","",NULL};
-datafile_rows_t trf_path_row_42[] = {"8440","1","4230","4326","","1140","",NULL};
-datafile_rows_t trf_path_row_43[] = {"8441","1","4230","4326","","1141","",NULL};
-datafile_rows_t trf_path_row_44[] = {"8442","1","4230","4326","","1142","",NULL};
-datafile_rows_t trf_path_row_45[] = {"8443","1","4230","4326","","1143","",NULL};
-datafile_rows_t trf_path_row_46[] = {"8444","1","4230","4326","","1144","",NULL};
-datafile_rows_t trf_path_row_47[] = {"8445","1","4230","4326","","1145","",NULL};
-datafile_rows_t trf_path_row_48[] = {"8446","1","4230","4231","1000","","",NULL};
-datafile_rows_t trf_path_row_49[] = {"8446","2","4231","4326","","1146","",NULL};
-datafile_rows_t trf_path_row_50[] = {"8447","1","4230","4231","","1147","",NULL};
-datafile_rows_t trf_path_row_51[] = {"8447","2","4231","4326","","1146","",NULL};
-datafile_rows_t trf_path_row_52[] = {"8448","1","4229","4326","","1148","",NULL};
-datafile_rows_t trf_path_row_53[] = {"8449","1","4258","4326","","1149","",NULL};
-datafile_rows_t trf_path_row_54[] = {"8450","1","4283","4326","","1150","",NULL};
-datafile_rows_t trf_path_row_55[] = {"8451","1","4272","4326","","1151","",NULL};
-datafile_rows_t trf_path_row_56[] = {"8452","1","4236","4326","","1152","",NULL};
-datafile_rows_t trf_path_row_57[] = {"8453","1","4239","4326","","1153","",NULL};
-datafile_rows_t trf_path_row_58[] = {"8454","1","4240","4326","","1154","",NULL};
-datafile_rows_t trf_path_row_59[] = {"8455","1","4144","4326","","1155","97.235",NULL};
-datafile_rows_t trf_path_row_60[] = {"8456","1","4146","4326","","1156","97.235",NULL};
-datafile_rows_t trf_path_row_61[] = {"8457","1","4244","4326","","1157","",NULL};
-datafile_rows_t trf_path_row_62[] = {"8458","1","4245","4326","","1158","",NULL};
-datafile_rows_t trf_path_row_63[] = {"8459","1","4250","4326","","1159","",NULL};
-datafile_rows_t trf_path_row_64[] = {"8460","1","4251","4326","","1160","",NULL};
-datafile_rows_t trf_path_row_65[] = {"8461","1","4253","4326","","1161","",NULL};
-datafile_rows_t trf_path_row_66[] = {"8462","1","4253","4326","","1162","",NULL};
-datafile_rows_t trf_path_row_67[] = {"8463","1","4266","4326","","1163","",NULL};
-datafile_rows_t trf_path_row_68[] = {"8464","1","4256","4326","","1164","",NULL};
-datafile_rows_t trf_path_row_69[] = {"8465","1","4262","4326","","1165","",NULL};
-datafile_rows_t trf_path_row_70[] = {"8466","1","4261","4326","","1166","",NULL};
-datafile_rows_t trf_path_row_71[] = {"8467","1","4263","4326","","1167","",NULL};
-datafile_rows_t trf_path_row_72[] = {"8468","1","4263","4326","","1168","",NULL};
-datafile_rows_t trf_path_row_73[] = {"8469","1","4265","4326","","1169","",NULL};
-datafile_rows_t trf_path_row_74[] = {"8470","1","4267","4326","","1170","",NULL};
-datafile_rows_t trf_path_row_75[] = {"8471","1","4267","4326","","1171","",NULL};
-datafile_rows_t trf_path_row_76[] = {"8472","1","4267","4326","","1172","",NULL};
-datafile_rows_t trf_path_row_77[] = {"8473","1","4267","4326","","1173","",NULL};
-datafile_rows_t trf_path_row_78[] = {"8474","1","4267","4326","","1174","",NULL};
-datafile_rows_t trf_path_row_79[] = {"8475","1","4267","4326","","1175","",NULL};
-datafile_rows_t trf_path_row_80[] = {"8476","1","4267","4326","","1176","",NULL};
-datafile_rows_t trf_path_row_81[] = {"8477","1","4267","4326","","1177","",NULL};
-datafile_rows_t trf_path_row_82[] = {"8478","1","4267","4326","","1178","",NULL};
-datafile_rows_t trf_path_row_83[] = {"8479","1","4267","4326","","1179","",NULL};
-datafile_rows_t trf_path_row_84[] = {"8480","1","4267","4326","","1180","",NULL};
-datafile_rows_t trf_path_row_85[] = {"8481","1","4267","4326","","1181","",NULL};
-datafile_rows_t trf_path_row_86[] = {"8482","1","4267","4326","","1182","",NULL};
-datafile_rows_t trf_path_row_87[] = {"8483","1","4267","4326","","1183","",NULL};
-datafile_rows_t trf_path_row_88[] = {"8484","1","4267","4326","","1184","",NULL};
-datafile_rows_t trf_path_row_89[] = {"8485","1","4267","4326","","1185","",NULL};
-datafile_rows_t trf_path_row_90[] = {"8486","1","4267","4326","","1186","",NULL};
-datafile_rows_t trf_path_row_91[] = {"8487","1","4267","4326","","1187","",NULL};
-datafile_rows_t trf_path_row_92[] = {"8488","1","4269","4326","","1188","",NULL};
-datafile_rows_t trf_path_row_93[] = {"8489","1","4270","4326","","1189","",NULL};
-datafile_rows_t trf_path_row_94[] = {"8490","1","4270","4326","","1190","",NULL};
-datafile_rows_t trf_path_row_95[] = {"8491","1","4270","4326","","1191","",NULL};
-datafile_rows_t trf_path_row_96[] = {"8492","1","4271","4326","","1192","",NULL};
-datafile_rows_t trf_path_row_97[] = {"8493","1","4275","4326","","1193","",NULL};
-datafile_rows_t trf_path_row_98[] = {"8494","1","4807","4275","","1467","97.05",NULL};
-datafile_rows_t trf_path_row_99[] = {"8494","2","4275","4326","","1193","",NULL};
-datafile_rows_t trf_path_row_100[] = {"8495","1","4277","4326","","1195","",NULL};
-datafile_rows_t trf_path_row_101[] = {"8496","1","4277","4326","","1196","",NULL};
-datafile_rows_t trf_path_row_102[] = {"8497","1","4277","4326","","1197","",NULL};
-datafile_rows_t trf_path_row_103[] = {"8498","1","4277","4326","","1198","",NULL};
-datafile_rows_t trf_path_row_104[] = {"8499","1","4277","4326","","1199","",NULL};
-datafile_rows_t trf_path_row_105[] = {"8500","1","4282","4326","","1200","",NULL};
-datafile_rows_t trf_path_row_106[] = {"8501","1","4248","4326","","1201","",NULL};
-datafile_rows_t trf_path_row_107[] = {"8502","1","4248","4326","","1202","",NULL};
-datafile_rows_t trf_path_row_108[] = {"8503","1","4248","4326","","1203","",NULL};
-datafile_rows_t trf_path_row_109[] = {"8504","1","4248","4326","","1204","",NULL};
-datafile_rows_t trf_path_row_110[] = {"8505","1","4248","4326","","1205","",NULL};
-datafile_rows_t trf_path_row_111[] = {"8506","1","4248","4326","","1206","",NULL};
-datafile_rows_t trf_path_row_112[] = {"8507","1","4248","4326","","1207","",NULL};
-datafile_rows_t trf_path_row_113[] = {"8508","1","4248","4326","","1208","",NULL};
-datafile_rows_t trf_path_row_114[] = {"8509","1","4248","4326","","1209","",NULL};
-datafile_rows_t trf_path_row_115[] = {"8510","1","4285","4326","","1210","",NULL};
-datafile_rows_t trf_path_row_116[] = {"8511","1","4287","4326","","1211","",NULL};
-datafile_rows_t trf_path_row_117[] = {"8512","1","4291","4326","","1212","",NULL};
-datafile_rows_t trf_path_row_118[] = {"8513","1","4291","4326","","1213","",NULL};
-datafile_rows_t trf_path_row_119[] = {"8514","1","4291","4326","","1214","",NULL};
-datafile_rows_t trf_path_row_120[] = {"8515","1","4291","4326","","1215","",NULL};
-datafile_rows_t trf_path_row_121[] = {"8516","1","4291","4326","","1216","",NULL};
-datafile_rows_t trf_path_row_122[] = {"8517","1","4291","4326","","1217","",NULL};
-datafile_rows_t trf_path_row_123[] = {"8518","1","4291","4326","","1218","",NULL};
-datafile_rows_t trf_path_row_124[] = {"8519","1","4291","4326","","1219","",NULL};
-datafile_rows_t trf_path_row_125[] = {"8520","1","4291","4326","","1220","",NULL};
-datafile_rows_t trf_path_row_126[] = {"8521","1","4291","4326","","1221","",NULL};
-datafile_rows_t trf_path_row_127[] = {"8522","1","4291","4326","","1222","",NULL};
-datafile_rows_t trf_path_row_128[] = {"8523","1","4291","4326","","1223","",NULL};
-datafile_rows_t trf_path_row_129[] = {"8524","1","4291","4326","","1224","",NULL};
-datafile_rows_t trf_path_row_130[] = {"8525","1","4292","4326","","1225","",NULL};
-datafile_rows_t trf_path_row_131[] = {"8526","1","4293","4326","","1226","",NULL};
-datafile_rows_t trf_path_row_132[] = {"8527","1","4297","4326","","1227","",NULL};
-datafile_rows_t trf_path_row_133[] = {"8528","1","4298","4326","","1228","",NULL};
-datafile_rows_t trf_path_row_134[] = {"8529","1","4299","4326","","1229","",NULL};
-datafile_rows_t trf_path_row_135[] = {"8530","1","4301","4326","","1230","",NULL};
-datafile_rows_t trf_path_row_136[] = {"8531","1","4301","4326","","1231","",NULL};
-datafile_rows_t trf_path_row_137[] = {"8532","1","4301","4326","","1232","",NULL};
-datafile_rows_t trf_path_row_138[] = {"8533","1","4301","4326","","1233","",NULL};
-datafile_rows_t trf_path_row_139[] = {"8534","1","4309","4326","","1234","",NULL};
-datafile_rows_t trf_path_row_140[] = {"8535","1","4311","4326","","1235","",NULL};
-datafile_rows_t trf_path_row_141[] = {"8536","1","4230","4231","1000","","",NULL};
-datafile_rows_t trf_path_row_142[] = {"8537","1","4231","4326","","1146","",NULL};
-datafile_rows_t trf_path_row_143[] = {"8538","1","4230","4231","","1147","",NULL};
-datafile_rows_t trf_path_row_144[] = {"8539","1","4203","4326","","1236","",NULL};
-datafile_rows_t trf_path_row_145[] = {"8540","1","4322","4326","","1237","",NULL};
-datafile_rows_t trf_path_row_146[] = {"8541","1","4322","4326","","1238","",NULL};
-datafile_rows_t trf_path_row_147[] = {"8542","1","4324","4322","","1239","",NULL};
-datafile_rows_t trf_path_row_148[] = {"8543","1","4324","4326","","1240","",NULL};
-datafile_rows_t trf_path_row_149[] = {"8544","1","4267","4269","","1241","",NULL};
-datafile_rows_t trf_path_row_150[] = {"8546","1","4267","4269","","1243","",NULL};
-datafile_rows_t trf_path_row_151[] = {"8548","1","4230","4326","","1245","",NULL};
-datafile_rows_t trf_path_row_152[] = {"8549","1","4255","4326","","1246","",NULL};
-datafile_rows_t trf_path_row_153[] = {"8550","1","4145","4326","","1247","97.235",NULL};
-datafile_rows_t trf_path_row_154[] = {"8551","1","4238","4326","","1248","",NULL};
-datafile_rows_t trf_path_row_155[] = {"8552","1","4267","4326","","1249","",NULL};
-datafile_rows_t trf_path_row_156[] = {"8553","1","4267","4326","","1250","",NULL};
-datafile_rows_t trf_path_row_157[] = {"8554","1","4269","4326","","1251","",NULL};
-datafile_rows_t trf_path_row_158[] = {"8555","1","4269","4326","","1252","",NULL};
-datafile_rows_t trf_path_row_159[] = {"8556","1","4307","4326","","1253","",NULL};
-datafile_rows_t trf_path_row_160[] = {"8557","1","4284","4326","","1254","",NULL};
-datafile_rows_t trf_path_row_161[] = {"8558","1","4305","4326","","1255","",NULL};
-datafile_rows_t trf_path_row_162[] = {"8559","1","4232","4326","","1256","",NULL};
-datafile_rows_t trf_path_row_163[] = {"8560","1","4807","4275","","1467","99.63",NULL};
-datafile_rows_t trf_path_row_164[] = {"8561","1","4801","4217","","1257","",NULL};
-datafile_rows_t trf_path_row_165[] = {"8562","1","4802","4218","","1258","",NULL};
-datafile_rows_t trf_path_row_166[] = {"8563","1","4802","4218","","1258","",NULL};
-datafile_rows_t trf_path_row_167[] = {"8563","2","4218","4326","","1125","",NULL};
-datafile_rows_t trf_path_row_168[] = {"8564","1","4803","4207","","1259","",NULL};
-datafile_rows_t trf_path_row_169[] = {"8565","1","4804","4257","","1260","",NULL};
-datafile_rows_t trf_path_row_170[] = {"8566","1","4805","4312","","1261","",NULL};
-datafile_rows_t trf_path_row_171[] = {"8567","1","4806","4265","","1262","",NULL};
-datafile_rows_t trf_path_row_172[] = {"8568","1","4806","4265","","1262","",NULL};
-datafile_rows_t trf_path_row_173[] = {"8568","2","4265","4326","","1169","",NULL};
-datafile_rows_t trf_path_row_174[] = {"8569","1","4808","4280","","1263","",NULL};
-datafile_rows_t trf_path_row_175[] = {"8570","1","4809","4215","","1264","",NULL};
-datafile_rows_t trf_path_row_176[] = {"8571","1","4810","4297","","1265","",NULL};
-datafile_rows_t trf_path_row_177[] = {"8572","1","4810","4297","","1265","",NULL};
-datafile_rows_t trf_path_row_178[] = {"8572","2","4297","4326","","1227","",NULL};
-datafile_rows_t trf_path_row_179[] = {"8573","1","4811","4304","","1266","",NULL};
-datafile_rows_t trf_path_row_180[] = {"8574","1","4812","4305","","1267","",NULL};
-datafile_rows_t trf_path_row_181[] = {"8575","1","4812","4305","","1267","",NULL};
-datafile_rows_t trf_path_row_182[] = {"8575","2","4305","4326","","1255","",NULL};
-datafile_rows_t trf_path_row_183[] = {"8576","1","4813","4211","","1268","",NULL};
-datafile_rows_t trf_path_row_184[] = {"8577","1","4813","4211","","1268","",NULL};
-datafile_rows_t trf_path_row_185[] = {"8577","2","4211","4326","","1123","",NULL};
-datafile_rows_t trf_path_row_186[] = {"8578","1","4814","4308","","1269","98.51",NULL};
-datafile_rows_t trf_path_row_187[] = {"8579","1","4815","4120","","1270","",NULL};
-datafile_rows_t trf_path_row_188[] = {"8580","1","4293","4326","","1271","",NULL};
-datafile_rows_t trf_path_row_189[] = {"8581","1","4121","4326","","1272","",NULL};
-datafile_rows_t trf_path_row_190[] = {"8582","1","4237","4258","","1273","",NULL};
-datafile_rows_t trf_path_row_191[] = {"8583","1","4237","4258","","1273","",NULL};
-datafile_rows_t trf_path_row_192[] = {"8583","2","4258","4326","","1149","",NULL};
-datafile_rows_t trf_path_row_193[] = {"8584","1","4230","4326","","1275","",NULL};
-datafile_rows_t trf_path_row_194[] = {"8585","1","4275","4230","","1276","",NULL};
-datafile_rows_t trf_path_row_195[] = {"8586","1","4807","4275","","1467","",NULL};
-datafile_rows_t trf_path_row_196[] = {"8586","2","4275","4230","","1276","",NULL};
-datafile_rows_t trf_path_row_197[] = {"8587","1","4275","4322","","1277","",NULL};
-datafile_rows_t trf_path_row_198[] = {"8588","1","4807","4275","","1467","",NULL};
-datafile_rows_t trf_path_row_199[] = {"8588","2","4275","4322","","1277","",NULL};
-datafile_rows_t trf_path_row_200[] = {"8589","1","4202","4283","","1278","",NULL};
-datafile_rows_t trf_path_row_201[] = {"8590","1","4202","4283","","1278","",NULL};
-datafile_rows_t trf_path_row_202[] = {"8590","2","4283","4326","","1150","98.50",NULL};
-datafile_rows_t trf_path_row_203[] = {"8591","1","4203","4283","","1279","",NULL};
-datafile_rows_t trf_path_row_204[] = {"8592","1","4203","4283","","1279","",NULL};
-datafile_rows_t trf_path_row_205[] = {"8592","2","4283","4326","","1150","98.50",NULL};
-datafile_rows_t trf_path_row_206[] = {"8593","1","4203","4283","","1280","",NULL};
-datafile_rows_t trf_path_row_207[] = {"8594","1","4203","4283","","1280","",NULL};
-datafile_rows_t trf_path_row_208[] = {"8594","2","4283","4326","","1150","98.50",NULL};
-datafile_rows_t trf_path_row_209[] = {"8595","1","4124","4258","","1437","99.11",NULL};
-datafile_rows_t trf_path_row_210[] = {"8595","2","4258","4326","","1149","99.11",NULL};
-datafile_rows_t trf_path_row_211[] = {"8596","1","4125","4326","","1282","",NULL};
-datafile_rows_t trf_path_row_212[] = {"8597","1","4284","4126","","1274","",NULL};
-datafile_rows_t trf_path_row_213[] = {"8598","1","4126","4326","","1283","",NULL};
-datafile_rows_t trf_path_row_214[] = {"8599","1","4210","4326","","1284","",NULL};
-datafile_rows_t trf_path_row_215[] = {"8600","1","4210","4326","","1285","",NULL};
-datafile_rows_t trf_path_row_216[] = {"8601","1","4294","4326","","1286","",NULL};
-datafile_rows_t trf_path_row_217[] = {"8602","1","4284","4326","","1287","",NULL};
-datafile_rows_t trf_path_row_218[] = {"8603","1","4284","4326","","1288","",NULL};
-datafile_rows_t trf_path_row_219[] = {"8604","1","4284","4326","","1289","",NULL};
-datafile_rows_t trf_path_row_220[] = {"8605","1","4284","4326","","1290","",NULL};
-datafile_rows_t trf_path_row_221[] = {"8606","1","4284","4326","","1291","",NULL};
-datafile_rows_t trf_path_row_222[] = {"8607","1","4284","4326","","1292","",NULL};
-datafile_rows_t trf_path_row_223[] = {"8608","1","4284","4326","","1293","",NULL};
-datafile_rows_t trf_path_row_224[] = {"8609","1","4284","4126","","1274","",NULL};
-datafile_rows_t trf_path_row_225[] = {"8609","2","4126","4326","","1283","",NULL};
-datafile_rows_t trf_path_row_226[] = {"8610","1","4304","4326","","1294","",NULL};
-datafile_rows_t trf_path_row_227[] = {"8611","1","4811","4304","","1266","",NULL};
-datafile_rows_t trf_path_row_228[] = {"8611","2","4304","4326","","1294","",NULL};
-datafile_rows_t trf_path_row_229[] = {"8612","1","4271","4326","","1295","",NULL};
-datafile_rows_t trf_path_row_230[] = {"8613","1","4302","4326","","1296","",NULL};
-datafile_rows_t trf_path_row_231[] = {"8614","1","4127","4130","","1297","",NULL};
-datafile_rows_t trf_path_row_232[] = {"8615","1","4127","4130","","1297","",NULL};
-datafile_rows_t trf_path_row_233[] = {"8615","2","4130","4326","","1302","",NULL};
-datafile_rows_t trf_path_row_234[] = {"8616","1","4127","4130","","1298","",NULL};
-datafile_rows_t trf_path_row_235[] = {"8617","1","4127","4130","","1298","",NULL};
-datafile_rows_t trf_path_row_236[] = {"8617","2","4130","4326","","1302","",NULL};
-datafile_rows_t trf_path_row_237[] = {"8618","1","4127","4130","","1299","",NULL};
-datafile_rows_t trf_path_row_238[] = {"8619","1","4127","4130","","1299","",NULL};
-datafile_rows_t trf_path_row_239[] = {"8619","2","4130","4326","","1302","",NULL};
-datafile_rows_t trf_path_row_240[] = {"8620","1","4127","4130","","1300","",NULL};
-datafile_rows_t trf_path_row_241[] = {"8621","1","4127","4130","","1300","",NULL};
-datafile_rows_t trf_path_row_242[] = {"8621","2","4130","4326","","1302","",NULL};
-datafile_rows_t trf_path_row_243[] = {"8622","1","4127","4130","","1301","",NULL};
-datafile_rows_t trf_path_row_244[] = {"8623","1","4127","4130","","1301","",NULL};
-datafile_rows_t trf_path_row_245[] = {"8623","2","4130","4326","","1302","",NULL};
-datafile_rows_t trf_path_row_246[] = {"8624","1","4130","4326","","1302","",NULL};
-datafile_rows_t trf_path_row_247[] = {"8625","1","4284","4326","","1303","",NULL};
-datafile_rows_t trf_path_row_248[] = {"8626","1","4240","4326","","1304","",NULL};
-datafile_rows_t trf_path_row_249[] = {"8627","1","4301","4326","","1305","",NULL};
-datafile_rows_t trf_path_row_250[] = {"8628","1","4312","4326","","1306","",NULL};
-datafile_rows_t trf_path_row_251[] = {"8629","1","4271","4326","","1307","",NULL};
-datafile_rows_t trf_path_row_252[] = {"8633","1","4314","4258","","1309","",NULL};
-datafile_rows_t trf_path_row_253[] = {"8634","1","4314","4258","","1309","",NULL};
-datafile_rows_t trf_path_row_254[] = {"8634","2","4258","4326","","1149","",NULL};
-datafile_rows_t trf_path_row_255[] = {"8635","1","4284","4258","","1310","",NULL};
-datafile_rows_t trf_path_row_256[] = {"8636","1","4284","4258","","1310","",NULL};
-datafile_rows_t trf_path_row_257[] = {"8636","2","4258","4326","","1149","",NULL};
-datafile_rows_t trf_path_row_258[] = {"8637","1","4230","4326","","1311","",NULL};
-datafile_rows_t trf_path_row_259[] = {"8638","1","4903","4230","1001","","",NULL};
-datafile_rows_t trf_path_row_260[] = {"8639","1","4903","4230","1002","","",NULL};
-datafile_rows_t trf_path_row_261[] = {"8640","1","4903","4230","1003","","",NULL};
-datafile_rows_t trf_path_row_262[] = {"8641","1","4903","4230","1001","","",NULL};
-datafile_rows_t trf_path_row_263[] = {"8641","2","4230","4326","","1145","",NULL};
-datafile_rows_t trf_path_row_264[] = {"8642","1","4267","4269","","1312","",NULL};
-datafile_rows_t trf_path_row_265[] = {"8643","1","4267","4269","","1312","",NULL};
-datafile_rows_t trf_path_row_266[] = {"8643","2","4269","4326","","1188","",NULL};
-datafile_rows_t trf_path_row_267[] = {"8644","1","4267","4269","","1313","",NULL};
-datafile_rows_t trf_path_row_268[] = {"8645","1","4267","4269","","1313","",NULL};
-datafile_rows_t trf_path_row_269[] = {"8645","2","4269","4326","","1188","",NULL};
-datafile_rows_t trf_path_row_270[] = {"8646","1","4277","4326","","1314","",NULL};
-datafile_rows_t trf_path_row_271[] = {"8647","1","4277","4230","","1315","",NULL};
-datafile_rows_t trf_path_row_272[] = {"8648","1","4260","4326","","1316","",NULL};
-datafile_rows_t trf_path_row_273[] = {"8649","1","4220","4324","","1317","",NULL};
-datafile_rows_t trf_path_row_274[] = {"8650","1","4220","4326","","1318","",NULL};
-datafile_rows_t trf_path_row_275[] = {"8651","1","4220","4326","","1319","",NULL};
-datafile_rows_t trf_path_row_276[] = {"8652","1","4220","4326","","1320","",NULL};
-datafile_rows_t trf_path_row_277[] = {"8653","1","4220","4326","","1321","",NULL};
-datafile_rows_t trf_path_row_278[] = {"8654","1","4220","4326","","1322","",NULL};
-datafile_rows_t trf_path_row_279[] = {"8655","1","4220","4326","","1323","",NULL};
-datafile_rows_t trf_path_row_280[] = {"8656","1","4220","4326","","1324","",NULL};
-datafile_rows_t trf_path_row_281[] = {"8657","1","4220","4326","","1325","",NULL};
-datafile_rows_t trf_path_row_282[] = {"8658","1","4220","4326","","1326","",NULL};
-datafile_rows_t trf_path_row_283[] = {"8659","1","4220","4326","","1327","",NULL};
-datafile_rows_t trf_path_row_284[] = {"8660","1","4259","4264","","1328","",NULL};
-datafile_rows_t trf_path_row_285[] = {"8661","1","4264","4326","","1329","",NULL};
-datafile_rows_t trf_path_row_286[] = {"8662","1","4259","4326","","1330","",NULL};
-datafile_rows_t trf_path_row_287[] = {"8663","1","4805","4312","","1261","",NULL};
-datafile_rows_t trf_path_row_288[] = {"8663","2","4312","4326","","1306","",NULL};
-datafile_rows_t trf_path_row_289[] = {"8664","1","4133","4258","","1331","",NULL};
-datafile_rows_t trf_path_row_290[] = {"8665","1","4284","4133","","1332","",NULL};
-datafile_rows_t trf_path_row_291[] = {"8666","1","4133","4326","","1333","",NULL};
-datafile_rows_t trf_path_row_292[] = {"8667","1","4284","4326","","1334","",NULL};
-datafile_rows_t trf_path_row_293[] = {"8668","1","4301","4326","","1335","",NULL};
-datafile_rows_t trf_path_row_294[] = {"8669","1","4301","4326","","1336","",NULL};
-datafile_rows_t trf_path_row_295[] = {"8670","1","4301","4326","","1337","",NULL};
-datafile_rows_t trf_path_row_296[] = {"8671","1","4301","4326","","1338","",NULL};
-datafile_rows_t trf_path_row_297[] = {"8672","1","4301","4326","","1339","",NULL};
-datafile_rows_t trf_path_row_298[] = {"8673","1","4301","4326","","1340","",NULL};
-datafile_rows_t trf_path_row_299[] = {"8674","1","4301","4326","","1341","",NULL};
-datafile_rows_t trf_path_row_300[] = {"8675","1","4301","4326","","1342","",NULL};
-datafile_rows_t trf_path_row_301[] = {"8676","1","4301","4326","","1343","",NULL};
-datafile_rows_t trf_path_row_302[] = {"8677","1","4301","4326","","1344","",NULL};
-datafile_rows_t trf_path_row_303[] = {"8678","1","4301","4326","","1345","",NULL};
-datafile_rows_t trf_path_row_304[] = {"8679","1","4301","4326","","1346","",NULL};
-datafile_rows_t trf_path_row_305[] = {"8680","1","4301","4326","","1347","",NULL};
-datafile_rows_t trf_path_row_306[] = {"8681","1","4301","4326","","1348","",NULL};
-datafile_rows_t trf_path_row_307[] = {"8682","1","4301","4326","","1349","",NULL};
-datafile_rows_t trf_path_row_308[] = {"8683","1","4301","4326","","1350","",NULL};
-datafile_rows_t trf_path_row_309[] = {"8684","1","4301","4326","","1351","",NULL};
-datafile_rows_t trf_path_row_310[] = {"8685","1","4301","4326","","1352","",NULL};
-datafile_rows_t trf_path_row_311[] = {"8686","1","4301","4326","","1353","",NULL};
-datafile_rows_t trf_path_row_312[] = {"8687","1","4301","4326","","1354","",NULL};
-datafile_rows_t trf_path_row_313[] = {"8688","1","4301","4326","","1355","",NULL};
-datafile_rows_t trf_path_row_314[] = {"8689","1","4301","4326","","1356","",NULL};
-datafile_rows_t trf_path_row_315[] = {"8690","1","4301","4326","","1357","",NULL};
-datafile_rows_t trf_path_row_316[] = {"8691","1","4301","4326","","1358","",NULL};
-datafile_rows_t trf_path_row_317[] = {"8692","1","4301","4326","","1359","",NULL};
-datafile_rows_t trf_path_row_318[] = {"8693","1","4301","4326","","1360","",NULL};
-datafile_rows_t trf_path_row_319[] = {"8694","1","4301","4326","","1361","",NULL};
-datafile_rows_t trf_path_row_320[] = {"8695","1","4301","4326","","1362","",NULL};
-datafile_rows_t trf_path_row_321[] = {"8696","1","4301","4326","","1363","",NULL};
-datafile_rows_t trf_path_row_322[] = {"8697","1","4301","4326","","1364","",NULL};
-datafile_rows_t trf_path_row_323[] = {"8698","1","4301","4326","","1365","",NULL};
-datafile_rows_t trf_path_row_324[] = {"8699","1","4301","4326","","1366","",NULL};
-datafile_rows_t trf_path_row_325[] = {"8700","1","4301","4326","","1367","",NULL};
-datafile_rows_t trf_path_row_326[] = {"8701","1","4301","4326","","1368","",NULL};
-datafile_rows_t trf_path_row_327[] = {"8702","1","4301","4326","","1369","",NULL};
-datafile_rows_t trf_path_row_328[] = {"8703","1","4301","4326","","1370","",NULL};
-datafile_rows_t trf_path_row_329[] = {"8704","1","4301","4326","","1371","",NULL};
-datafile_rows_t trf_path_row_330[] = {"8705","1","4301","4326","","1372","",NULL};
-datafile_rows_t trf_path_row_331[] = {"8706","1","4301","4326","","1373","",NULL};
-datafile_rows_t trf_path_row_332[] = {"8707","1","4301","4326","","1374","",NULL};
-datafile_rows_t trf_path_row_333[] = {"8708","1","4301","4326","","1375","",NULL};
-datafile_rows_t trf_path_row_334[] = {"8709","1","4301","4326","","1376","",NULL};
-datafile_rows_t trf_path_row_335[] = {"8710","1","4301","4326","","1377","",NULL};
-datafile_rows_t trf_path_row_336[] = {"8711","1","4301","4326","","1378","",NULL};
-datafile_rows_t trf_path_row_337[] = {"8712","1","4301","4326","","1379","",NULL};
-datafile_rows_t trf_path_row_338[] = {"8713","1","4301","4326","","1380","",NULL};
-datafile_rows_t trf_path_row_339[] = {"8714","1","4301","4326","","1381","",NULL};
-datafile_rows_t trf_path_row_340[] = {"8715","1","4301","4326","","1382","",NULL};
-datafile_rows_t trf_path_row_341[] = {"8716","1","4301","4326","","1383","",NULL};
-datafile_rows_t trf_path_row_342[] = {"8717","1","4301","4326","","1384","",NULL};
-datafile_rows_t trf_path_row_343[] = {"8718","1","4301","4326","","1385","",NULL};
-datafile_rows_t trf_path_row_344[] = {"8719","1","4301","4326","","1386","",NULL};
-datafile_rows_t trf_path_row_345[] = {"8720","1","4301","4326","","1387","",NULL};
-datafile_rows_t trf_path_row_346[] = {"8721","1","4301","4326","","1388","",NULL};
-datafile_rows_t trf_path_row_347[] = {"8722","1","4301","4326","","1389","",NULL};
-datafile_rows_t trf_path_row_348[] = {"8723","1","4301","4326","","1390","",NULL};
-datafile_rows_t trf_path_row_349[] = {"8724","1","4301","4326","","1391","",NULL};
-datafile_rows_t trf_path_row_350[] = {"8725","1","4301","4326","","1392","",NULL};
-datafile_rows_t trf_path_row_351[] = {"8726","1","4301","4326","","1393","",NULL};
-datafile_rows_t trf_path_row_352[] = {"8727","1","4301","4326","","1394","",NULL};
-datafile_rows_t trf_path_row_353[] = {"8728","1","4301","4326","","1395","",NULL};
-datafile_rows_t trf_path_row_354[] = {"8729","1","4301","4326","","1396","",NULL};
-datafile_rows_t trf_path_row_355[] = {"8730","1","4301","4326","","1397","",NULL};
-datafile_rows_t trf_path_row_356[] = {"8731","1","4301","4326","","1398","",NULL};
-datafile_rows_t trf_path_row_357[] = {"8732","1","4301","4326","","1399","",NULL};
-datafile_rows_t trf_path_row_358[] = {"8733","1","4301","4326","","1400","",NULL};
-datafile_rows_t trf_path_row_359[] = {"8734","1","4301","4326","","1401","",NULL};
-datafile_rows_t trf_path_row_360[] = {"8735","1","4301","4326","","1402","",NULL};
-datafile_rows_t trf_path_row_361[] = {"8736","1","4301","4326","","1403","",NULL};
-datafile_rows_t trf_path_row_362[] = {"8737","1","4301","4326","","1404","",NULL};
-datafile_rows_t trf_path_row_363[] = {"8738","1","4301","4326","","1405","",NULL};
-datafile_rows_t trf_path_row_364[] = {"8739","1","4301","4326","","1406","",NULL};
-datafile_rows_t trf_path_row_365[] = {"8740","1","4301","4326","","1407","",NULL};
-datafile_rows_t trf_path_row_366[] = {"8741","1","4301","4326","","1408","",NULL};
-datafile_rows_t trf_path_row_367[] = {"8742","1","4301","4326","","1409","",NULL};
-datafile_rows_t trf_path_row_368[] = {"8743","1","4301","4326","","1410","",NULL};
-datafile_rows_t trf_path_row_369[] = {"8744","1","4301","4326","","1411","",NULL};
-datafile_rows_t trf_path_row_370[] = {"8745","1","4301","4326","","1412","",NULL};
-datafile_rows_t trf_path_row_371[] = {"8746","1","4301","4326","","1413","",NULL};
-datafile_rows_t trf_path_row_372[] = {"8747","1","4301","4326","","1414","",NULL};
-datafile_rows_t trf_path_row_373[] = {"8748","1","4301","4326","","1415","",NULL};
-datafile_rows_t trf_path_row_374[] = {"8749","1","4301","4326","","1416","",NULL};
-datafile_rows_t trf_path_row_375[] = {"8750","1","4301","4326","","1417","",NULL};
-datafile_rows_t trf_path_row_376[] = {"8751","1","4301","4326","","1418","",NULL};
-datafile_rows_t trf_path_row_377[] = {"8752","1","4301","4326","","1419","",NULL};
-datafile_rows_t trf_path_row_378[] = {"8753","1","4301","4326","","1420","",NULL};
-datafile_rows_t trf_path_row_379[] = {"8754","1","4301","4326","","1421","",NULL};
-datafile_rows_t trf_path_row_380[] = {"8755","1","4301","4326","","1422","",NULL};
-datafile_rows_t trf_path_row_381[] = {"8756","1","4301","4326","","1423","",NULL};
-datafile_rows_t trf_path_row_382[] = {"8757","1","4301","4326","","1424","",NULL};
-datafile_rows_t trf_path_row_383[] = {"8758","1","4301","4326","","1425","",NULL};
-datafile_rows_t trf_path_row_384[] = {"8759","1","4301","4326","","1426","",NULL};
-datafile_rows_t trf_path_row_385[] = {"8760","1","4301","4326","","1427","",NULL};
-datafile_rows_t trf_path_row_386[] = {"8761","1","4301","4326","","1428","",NULL};
-datafile_rows_t trf_path_row_387[] = {"8762","1","4301","4326","","1429","",NULL};
-datafile_rows_t trf_path_row_388[] = {"8763","1","4301","4326","","1430","",NULL};
-datafile_rows_t trf_path_row_389[] = {"8764","1","4301","4326","","1431","",NULL};
-datafile_rows_t trf_path_row_390[] = {"8765","1","4301","4326","","1432","",NULL};
-datafile_rows_t trf_path_row_391[] = {"8766","1","4301","4326","","1433","",NULL};
-datafile_rows_t trf_path_row_392[] = {"8767","1","4301","4326","","1434","",NULL};
-datafile_rows_t trf_path_row_393[] = {"8768","1","4301","4326","","1435","",NULL};
-datafile_rows_t trf_path_row_394[] = {"8769","1","4301","4326","","1436","",NULL};
-datafile_rows_t trf_path_row_395[] = {"8770","1","4232","4326","","1438","",NULL};
-datafile_rows_t trf_path_row_396[] = {"8771","1","4134","4326","","1439","",NULL};
-datafile_rows_t trf_path_row_397[] = {"8772","1","4230","4326","","1440","",NULL};
-datafile_rows_t trf_path_row_398[] = {"8773","1","4601","4326","","1441","",NULL};
-datafile_rows_t trf_path_row_399[] = {"8774","1","4602","4326","","1442","",NULL};
-datafile_rows_t trf_path_row_400[] = {"8775","1","4603","4326","","1443","",NULL};
-datafile_rows_t trf_path_row_401[] = {"8776","1","4604","4326","","1444","",NULL};
-datafile_rows_t trf_path_row_402[] = {"8777","1","4605","4326","","1445","",NULL};
-datafile_rows_t trf_path_row_403[] = {"8778","1","4606","4326","","1446","",NULL};
-datafile_rows_t trf_path_row_404[] = {"8779","1","4600","4326","","1447","",NULL};
-datafile_rows_t trf_path_row_405[] = {"8780","1","4124","4258","","1437","",NULL};
-datafile_rows_t trf_path_row_406[] = {"8784","1","4230","4326","","1450","",NULL};
-datafile_rows_t trf_path_row_407[] = {"8785","1","4135","4269","","1454","",NULL};
-datafile_rows_t trf_path_row_408[] = {"8786","1","4135","4269","","1454","",NULL};
-datafile_rows_t trf_path_row_409[] = {"8786","2","4269","4326","","1188","",NULL};
-datafile_rows_t trf_path_row_410[] = {"8787","1","4136","4269","","1455","",NULL};
-datafile_rows_t trf_path_row_411[] = {"8788","1","4136","4269","","1455","",NULL};
-datafile_rows_t trf_path_row_412[] = {"8788","2","4269","4326","","1188","",NULL};
-datafile_rows_t trf_path_row_413[] = {"8789","1","4137","4269","","1456","",NULL};
-datafile_rows_t trf_path_row_414[] = {"8790","1","4137","4269","","1456","",NULL};
-datafile_rows_t trf_path_row_415[] = {"8790","2","4269","4326","","1188","",NULL};
-datafile_rows_t trf_path_row_416[] = {"8791","1","4138","4269","","1457","",NULL};
-datafile_rows_t trf_path_row_417[] = {"8792","1","4138","4269","","1457","",NULL};
-datafile_rows_t trf_path_row_418[] = {"8792","2","4269","4326","","1188","",NULL};
-datafile_rows_t trf_path_row_419[] = {"8793","1","4609","4269","","1451","",NULL};
-datafile_rows_t trf_path_row_420[] = {"8794","1","4609","4269","","1451","",NULL};
-datafile_rows_t trf_path_row_421[] = {"8794","2","4269","4326","","1188","",NULL};
-datafile_rows_t trf_path_row_422[] = {"8795","1","4202","4283","","1458","",NULL};
-datafile_rows_t trf_path_row_423[] = {"8796","1","4202","4283","","1458","",NULL};
-datafile_rows_t trf_path_row_424[] = {"8796","2","4283","4326","","1150","",NULL};
-datafile_rows_t trf_path_row_425[] = {"8797","1","4202","4283","","1459","",NULL};
-datafile_rows_t trf_path_row_426[] = {"8798","1","4202","4283","","1459","",NULL};
-datafile_rows_t trf_path_row_427[] = {"8798","2","4283","4326","","1150","",NULL};
-datafile_rows_t trf_path_row_428[] = {"8799","1","4202","4283","","1460","",NULL};
-datafile_rows_t trf_path_row_429[] = {"8800","1","4202","4283","","1460","",NULL};
-datafile_rows_t trf_path_row_430[] = {"8800","2","4283","4326","","1150","",NULL};
-datafile_rows_t trf_path_row_431[] = {"8801","1","4139","4269","","1461","",NULL};
-datafile_rows_t trf_path_row_432[] = {"8802","1","4139","4269","","1461","",NULL};
-datafile_rows_t trf_path_row_433[] = {"8802","2","4269","4326","","1188","",NULL};
-datafile_rows_t trf_path_row_434[] = {"8803","1","4267","4269","","1462","",NULL};
-datafile_rows_t trf_path_row_435[] = {"8804","1","4267","4269","","1462","",NULL};
-datafile_rows_t trf_path_row_436[] = {"8804","2","4269","4326","","1188","",NULL};
-datafile_rows_t trf_path_row_437[] = {"8805","1","4608","4269","","1463","",NULL};
-datafile_rows_t trf_path_row_438[] = {"8806","1","4608","4269","","1463","",NULL};
-datafile_rows_t trf_path_row_439[] = {"8806","2","4269","4326","","1188","",NULL};
-datafile_rows_t trf_path_row_440[] = {"8807","1","4202","4283","","1464","",NULL};
-datafile_rows_t trf_path_row_441[] = {"8808","1","4202","4283","","1464","",NULL};
-datafile_rows_t trf_path_row_442[] = {"8808","2","4283","4326","","1150","",NULL};
-datafile_rows_t trf_path_row_443[] = {"8811","1","4817","4273","","1466","",NULL};
-datafile_rows_t trf_path_row_444[] = {"8812","1","4807","4275","","1468","",NULL};
-datafile_rows_t trf_path_row_445[] = {"8813","1","4142","4326","","1469","",NULL};
-datafile_rows_t trf_path_row_446[] = {"8814","1","4143","4326","","1470","",NULL};
-datafile_rows_t trf_path_row_447[] = {"8815","1","4312","4326","","1471","",NULL};
-datafile_rows_t trf_path_row_448[] = {"8816","1","4122","4140","","1472","",NULL};
-datafile_rows_t trf_path_row_449[] = {"8817","1","4140","4326","","1473","",NULL};
-datafile_rows_t trf_path_row_450[] = {"8818","1","4122","4140","","1472","",NULL};
-datafile_rows_t trf_path_row_451[] = {"8818","2","4140","4326","","1473","",NULL};
-datafile_rows_t trf_path_row_452[] = {"8819","1","4269","4152","","1474","",NULL};
-datafile_rows_t trf_path_row_453[] = {"8820","1","4269","4152","","1475","",NULL};
-datafile_rows_t trf_path_row_454[] = {"8821","1","4269","4152","","1476","",NULL};
-datafile_rows_t trf_path_row_455[] = {"8822","1","4269","4152","","1477","",NULL};
-datafile_rows_t trf_path_row_456[] = {"8823","1","4269","4152","","1478","",NULL};
-datafile_rows_t trf_path_row_457[] = {"8824","1","4269","4152","","1479","",NULL};
-datafile_rows_t trf_path_row_458[] = {"8825","1","4269","4152","","1480","",NULL};
-datafile_rows_t trf_path_row_459[] = {"8826","1","4269","4152","","1481","",NULL};
-datafile_rows_t trf_path_row_460[] = {"8827","1","4269","4152","","1482","",NULL};
-datafile_rows_t trf_path_row_461[] = {"8828","1","4269","4152","","1483","",NULL};
-datafile_rows_t trf_path_row_462[] = {"8829","1","4269","4152","","1484","",NULL};
-datafile_rows_t trf_path_row_463[] = {"8830","1","4269","4152","","1485","",NULL};
-datafile_rows_t trf_path_row_464[] = {"8831","1","4269","4152","","1486","",NULL};
-datafile_rows_t trf_path_row_465[] = {"8832","1","4269","4152","","1487","",NULL};
-datafile_rows_t trf_path_row_466[] = {"8833","1","4269","4152","","1488","",NULL};
-datafile_rows_t trf_path_row_467[] = {"8834","1","4269","4152","","1489","",NULL};
-datafile_rows_t trf_path_row_468[] = {"8835","1","4269","4152","","1490","",NULL};
-datafile_rows_t trf_path_row_469[] = {"8836","1","4269","4152","","1491","",NULL};
-datafile_rows_t trf_path_row_470[] = {"8837","1","4269","4152","","1492","",NULL};
-datafile_rows_t trf_path_row_471[] = {"8838","1","4269","4152","","1493","",NULL};
-datafile_rows_t trf_path_row_472[] = {"8839","1","4269","4152","","1494","",NULL};
-datafile_rows_t trf_path_row_473[] = {"8840","1","4269","4152","","1495","",NULL};
-datafile_rows_t trf_path_row_474[] = {"8841","1","4269","4152","","1496","",NULL};
-datafile_rows_t trf_path_row_475[] = {"8842","1","4269","4152","","1497","",NULL};
-datafile_rows_t trf_path_row_476[] = {"8843","1","4269","4152","","1498","",NULL};
-datafile_rows_t trf_path_row_477[] = {"8844","1","4269","4152","","1499","",NULL};
-datafile_rows_t trf_path_row_478[] = {"8845","1","4269","4152","","1500","",NULL};
-datafile_rows_t trf_path_row_479[] = {"8846","1","4269","4152","","1501","",NULL};
-datafile_rows_t trf_path_row_480[] = {"8847","1","4269","4152","","1502","",NULL};
-datafile_rows_t trf_path_row_481[] = {"8848","1","4269","4152","","1503","",NULL};
-datafile_rows_t trf_path_row_482[] = {"8849","1","4222","4148","","1504","",NULL};
-datafile_rows_t trf_path_row_483[] = {"8850","1","4148","4326","","1505","",NULL};
-datafile_rows_t trf_path_row_484[] = {"8851","1","4202","4283","","1506","",NULL};
-datafile_rows_t trf_path_row_485[] = {"8852","1","4202","4283","","1507","",NULL};
-datafile_rows_t trf_path_row_486[] = {"8853","1","4202","4283","","1506","",NULL};
-datafile_rows_t trf_path_row_487[] = {"8853","2","4283","4326","","1150","",NULL};
-datafile_rows_t trf_path_row_488[] = {"8854","1","4202","4283","","1507","",NULL};
-datafile_rows_t trf_path_row_489[] = {"8854","2","4283","4326","","1150","",NULL};
-datafile_rows_t trf_path_row_490[] = {"8855","1","4149","4326","","1508","",NULL};
-datafile_rows_t trf_path_row_491[] = {"8856","1","4150","4151","","1509","",NULL};
-datafile_rows_t trf_path_row_492[] = {"8857","1","4150","4151","","1509","",NULL};
-datafile_rows_t trf_path_row_493[] = {"8857","2","4151","4326","","1511","",NULL};
-datafile_rows_t trf_path_row_494[] = {"8858","1","4149","4326","","1510","",NULL};
-datafile_rows_t trf_path_row_495[] = {"8859","1","4151","4326","","1511","",NULL};
-datafile_rows_t trf_path_row_496[] = {"8860","1","4267","4269","","1241","",NULL};
-datafile_rows_t trf_path_row_497[] = {"8860","2","4269","4152","","1474","",NULL};
-datafile_rows_t trf_path_row_498[] = {"8861","1","4267","4269","","1241","",NULL};
-datafile_rows_t trf_path_row_499[] = {"8861","2","4269","4152","","1475","",NULL};
-datafile_rows_t trf_path_row_500[] = {"8862","1","4267","4269","","1241","",NULL};
-datafile_rows_t trf_path_row_501[] = {"8862","2","4269","4152","","1476","",NULL};
-datafile_rows_t trf_path_row_502[] = {"8863","1","4267","4269","","1241","",NULL};
-datafile_rows_t trf_path_row_503[] = {"8863","2","4269","4152","","1477","",NULL};
-datafile_rows_t trf_path_row_504[] = {"8864","1","4267","4269","","1241","",NULL};
-datafile_rows_t trf_path_row_505[] = {"8864","2","4269","4152","","1478","",NULL};
-datafile_rows_t trf_path_row_506[] = {"8865","1","4267","4269","","1241","",NULL};
-datafile_rows_t trf_path_row_507[] = {"8865","2","4269","4152","","1479","",NULL};
-datafile_rows_t trf_path_row_508[] = {"8866","1","4267","4269","","1241","",NULL};
-datafile_rows_t trf_path_row_509[] = {"8866","2","4269","4152","","1480","",NULL};
-datafile_rows_t trf_path_row_510[] = {"8867","1","4267","4269","","1241","",NULL};
-datafile_rows_t trf_path_row_511[] = {"8867","2","4269","4152","","1481","",NULL};
-datafile_rows_t trf_path_row_512[] = {"8868","1","4267","4269","","1241","",NULL};
-datafile_rows_t trf_path_row_513[] = {"8868","2","4269","4152","","1482","",NULL};
-datafile_rows_t trf_path_row_514[] = {"8869","1","4267","4269","","1241","",NULL};
-datafile_rows_t trf_path_row_515[] = {"8869","2","4269","4152","","1483","",NULL};
-datafile_rows_t trf_path_row_516[] = {"8870","1","4267","4269","","1241","",NULL};
-datafile_rows_t trf_path_row_517[] = {"8870","2","4269","4152","","1484","",NULL};
-datafile_rows_t trf_path_row_518[] = {"8871","1","4267","4269","","1241","",NULL};
-datafile_rows_t trf_path_row_519[] = {"8871","2","4269","4152","","1485","",NULL};
-datafile_rows_t trf_path_row_520[] = {"8872","1","4267","4269","","1241","",NULL};
-datafile_rows_t trf_path_row_521[] = {"8872","2","4269","4152","","1486","",NULL};
-datafile_rows_t trf_path_row_522[] = {"8873","1","4267","4269","","1241","",NULL};
-datafile_rows_t trf_path_row_523[] = {"8873","2","4269","4152","","1487","",NULL};
-datafile_rows_t trf_path_row_524[] = {"8874","1","4267","4269","","1241","",NULL};
-datafile_rows_t trf_path_row_525[] = {"8874","2","4269","4152","","1488","",NULL};
-datafile_rows_t trf_path_row_526[] = {"8875","1","4267","4269","","1241","",NULL};
-datafile_rows_t trf_path_row_527[] = {"8875","2","4269","4152","","1489","",NULL};
-datafile_rows_t trf_path_row_528[] = {"8876","1","4267","4269","","1241","",NULL};
-datafile_rows_t trf_path_row_529[] = {"8876","2","4269","4152","","1490","",NULL};
-datafile_rows_t trf_path_row_530[] = {"8877","1","4267","4269","","1241","",NULL};
-datafile_rows_t trf_path_row_531[] = {"8877","2","4269","4152","","1491","",NULL};
-datafile_rows_t trf_path_row_532[] = {"8878","1","4267","4269","","1241","",NULL};
-datafile_rows_t trf_path_row_533[] = {"8878","2","4269","4152","","1492","",NULL};
-datafile_rows_t trf_path_row_534[] = {"8879","1","4267","4269","","1241","",NULL};
-datafile_rows_t trf_path_row_535[] = {"8879","2","4269","4152","","1493","",NULL};
-datafile_rows_t trf_path_row_536[] = {"8880","1","4267","4269","","1241","",NULL};
-datafile_rows_t trf_path_row_537[] = {"8880","2","4269","4152","","1494","",NULL};
-datafile_rows_t trf_path_row_538[] = {"8881","1","4139","4269","","1461","",NULL};
-datafile_rows_t trf_path_row_539[] = {"8881","2","4269","4152","","1495","",NULL};
-datafile_rows_t trf_path_row_540[] = {"8882","1","4267","4269","","1241","",NULL};
-datafile_rows_t trf_path_row_541[] = {"8882","2","4269","4152","","1496","",NULL};
-datafile_rows_t trf_path_row_542[] = {"8883","1","4267","4269","","1241","",NULL};
-datafile_rows_t trf_path_row_543[] = {"8883","2","4269","4152","","1497","",NULL};
-datafile_rows_t trf_path_row_544[] = {"8884","1","4267","4269","","1241","",NULL};
-datafile_rows_t trf_path_row_545[] = {"8884","2","4269","4152","","1498","",NULL};
-datafile_rows_t trf_path_row_546[] = {"8885","1","4267","4269","","1241","",NULL};
-datafile_rows_t trf_path_row_547[] = {"8885","2","4269","4152","","1499","",NULL};
-datafile_rows_t trf_path_row_548[] = {"8886","1","4267","4269","","1241","",NULL};
-datafile_rows_t trf_path_row_549[] = {"8886","2","4269","4152","","1500","",NULL};
-datafile_rows_t trf_path_row_550[] = {"8887","1","4267","4269","","1241","",NULL};
-datafile_rows_t trf_path_row_551[] = {"8887","2","4269","4152","","1501","",NULL};
-datafile_rows_t trf_path_row_552[] = {"8888","1","4267","4269","","1241","",NULL};
-datafile_rows_t trf_path_row_553[] = {"8888","2","4269","4152","","1502","",NULL};
-datafile_rows_t trf_path_row_554[] = {"8889","1","4267","4269","","1241","",NULL};
-datafile_rows_t trf_path_row_555[] = {"8889","2","4269","4152","","1503","",NULL};
-datafile_rows_t trf_path_row_556[] = {"8890","1","4153","4326","","1512","",NULL};
-datafile_rows_t trf_path_row_557[] = {"8891","1","4132","4326","","1513","",NULL};
-datafile_rows_t trf_path_row_558[] = {"8892","1","4154","4326","","1514","",NULL};
-datafile_rows_t trf_path_row_559[] = {"8893","1","4269","4326","","1308","",NULL};
-datafile_rows_t trf_path_row_560[] = {"8894","1","4269","4326","","1515","",NULL};
-datafile_rows_t trf_path_row_561[] = {"8895","1","4247","4326","","1516","",NULL};
-datafile_rows_t trf_path_row_562[] = {"8896","1","4267","4269","","1241","",NULL};
-datafile_rows_t trf_path_row_563[] = {"8896","2","4269","4326","","1515","",NULL};
-datafile_rows_t trf_path_row_564[] = {"8897","1","4267","4269","","1243","",NULL};
-datafile_rows_t trf_path_row_565[] = {"8897","2","4269","4326","","1515","",NULL};
-
-datafile_rows_t *trf_path_rows[] = {trf_path_row_1,trf_path_row_2,trf_path_row_3,trf_path_row_4,trf_path_row_5,trf_path_row_6,trf_path_row_7,trf_path_row_8,trf_path_row_9,trf_path_row_10,trf_path_row_11,trf_path_row_12,trf_path_row_13,trf_path_row_14,trf_path_row_15,trf_path_row_16,trf_path_row_17,trf_path_row_18,trf_path_row_19,trf_path_row_20,trf_path_row_21,trf_path_row_22,trf_path_row_23,trf_path_row_24,trf_path_row_25,trf_path_row_26,trf_path_row_27,trf_path_row_28,trf_path_row_29,t [...]
diff --git a/src/tiff/csv/trf_path.csv b/src/tiff/csv/trf_path.csv
deleted file mode 100644
index d522f3f..0000000
--- a/src/tiff/csv/trf_path.csv
+++ /dev/null
@@ -1,565 +0,0 @@
-"TRF_PATH_CODE","TRF_STEP_CODE","SOURCE_HORIZCS_CODE","TARGET_HORIZCS_CODE","POLYN_TRF_CODE","NONPOLYN_TRF_CODE","CHANGE_ID"
-8400,1,4201,4326,,1100,
-8401,1,4201,4326,,1101,
-8402,1,4201,4326,,1102,
-8403,1,4201,4326,,1103,
-8404,1,4201,4326,,1104,
-8405,1,4201,4326,,1105,
-8406,1,4201,4326,,1106,
-8407,1,4205,4326,,1107,
-8408,1,4202,4326,,1108,
-8409,1,4203,4326,,1109,
-8410,1,4204,4326,,1110,
-8411,1,4204,4326,,1111,
-8412,1,4289,4326,,1112,
-8413,1,4209,4326,,1113,
-8414,1,4209,4326,,1114,
-8415,1,4209,4326,,1115,
-8416,1,4209,4326,,1116,
-8417,1,4209,4326,,1117,
-8418,1,4209,4326,,1118,
-8419,1,4209,4326,,1119,
-8420,1,4209,4326,,1120,
-8421,1,4209,4326,,1121,
-8422,1,4210,4326,,1122,
-8423,1,4211,4326,,1123,
-8424,1,4216,4326,,1124,
-8425,1,4218,4326,,1125,
-8426,1,4219,4326,,1126,
-8427,1,4221,4326,,1127,
-8428,1,4222,4326,,1128,
-8429,1,4222,4326,,1129,
-8430,1,4223,4326,,1130,
-8431,1,4224,4326,,1131,
-8432,1,4225,4326,,1132,
-8433,1,4230,4326,,1133,
-8434,1,4230,4326,,1134,
-8435,1,4230,4326,,1135,
-8436,1,4230,4326,,1136,
-8437,1,4230,4326,,1137,
-8438,1,4230,4326,,1138,
-8439,1,4230,4326,,1139,
-8440,1,4230,4326,,1140,
-8441,1,4230,4326,,1141,
-8442,1,4230,4326,,1142,
-8443,1,4230,4326,,1143,
-8444,1,4230,4326,,1144,
-8445,1,4230,4326,,1145,
-8446,1,4230,4231,1000,,
-8446,2,4231,4326,,1146,
-8447,1,4230,4231,,1147,
-8447,2,4231,4326,,1146,
-8448,1,4229,4326,,1148,
-8449,1,4258,4326,,1149,
-8450,1,4283,4326,,1150,
-8451,1,4272,4326,,1151,
-8452,1,4236,4326,,1152,
-8453,1,4239,4326,,1153,
-8454,1,4240,4326,,1154,
-8455,1,4144,4326,,1155,97.235
-8456,1,4146,4326,,1156,97.235
-8457,1,4244,4326,,1157,
-8458,1,4245,4326,,1158,
-8459,1,4250,4326,,1159,
-8460,1,4251,4326,,1160,
-8461,1,4253,4326,,1161,
-8462,1,4253,4326,,1162,
-8463,1,4266,4326,,1163,
-8464,1,4256,4326,,1164,
-8465,1,4262,4326,,1165,
-8466,1,4261,4326,,1166,
-8467,1,4263,4326,,1167,
-8468,1,4263,4326,,1168,
-8469,1,4265,4326,,1169,
-8470,1,4267,4326,,1170,
-8471,1,4267,4326,,1171,
-8472,1,4267,4326,,1172,
-8473,1,4267,4326,,1173,
-8474,1,4267,4326,,1174,
-8475,1,4267,4326,,1175,
-8476,1,4267,4326,,1176,
-8477,1,4267,4326,,1177,
-8478,1,4267,4326,,1178,
-8479,1,4267,4326,,1179,
-8480,1,4267,4326,,1180,
-8481,1,4267,4326,,1181,
-8482,1,4267,4326,,1182,
-8483,1,4267,4326,,1183,
-8484,1,4267,4326,,1184,
-8485,1,4267,4326,,1185,
-8486,1,4267,4326,,1186,
-8487,1,4267,4326,,1187,
-8488,1,4269,4326,,1188,
-8489,1,4270,4326,,1189,
-8490,1,4270,4326,,1190,
-8491,1,4270,4326,,1191,
-8492,1,4271,4326,,1192,
-8493,1,4275,4326,,1193,
-8494,1,4807,4275,,1467,97.05
-8494,2,4275,4326,,1193,
-8495,1,4277,4326,,1195,
-8496,1,4277,4326,,1196,
-8497,1,4277,4326,,1197,
-8498,1,4277,4326,,1198,
-8499,1,4277,4326,,1199,
-8500,1,4282,4326,,1200,
-8501,1,4248,4326,,1201,
-8502,1,4248,4326,,1202,
-8503,1,4248,4326,,1203,
-8504,1,4248,4326,,1204,
-8505,1,4248,4326,,1205,
-8506,1,4248,4326,,1206,
-8507,1,4248,4326,,1207,
-8508,1,4248,4326,,1208,
-8509,1,4248,4326,,1209,
-8510,1,4285,4326,,1210,
-8511,1,4287,4326,,1211,
-8512,1,4291,4326,,1212,
-8513,1,4291,4326,,1213,
-8514,1,4291,4326,,1214,
-8515,1,4291,4326,,1215,
-8516,1,4291,4326,,1216,
-8517,1,4291,4326,,1217,
-8518,1,4291,4326,,1218,
-8519,1,4291,4326,,1219,
-8520,1,4291,4326,,1220,
-8521,1,4291,4326,,1221,
-8522,1,4291,4326,,1222,
-8523,1,4291,4326,,1223,
-8524,1,4291,4326,,1224,
-8525,1,4292,4326,,1225,
-8526,1,4293,4326,,1226,
-8527,1,4297,4326,,1227,
-8528,1,4298,4326,,1228,
-8529,1,4299,4326,,1229,
-8530,1,4301,4326,,1230,
-8531,1,4301,4326,,1231,
-8532,1,4301,4326,,1232,
-8533,1,4301,4326,,1233,
-8534,1,4309,4326,,1234,
-8535,1,4311,4326,,1235,
-8536,1,4230,4231,1000,,
-8537,1,4231,4326,,1146,
-8538,1,4230,4231,,1147,
-8539,1,4203,4326,,1236,
-8540,1,4322,4326,,1237,
-8541,1,4322,4326,,1238,
-8542,1,4324,4322,,1239,
-8543,1,4324,4326,,1240,
-8544,1,4267,4269,,1241,
-8546,1,4267,4269,,1243,
-8548,1,4230,4326,,1245,
-8549,1,4255,4326,,1246,
-8550,1,4145,4326,,1247,97.235
-8551,1,4238,4326,,1248,
-8552,1,4267,4326,,1249,
-8553,1,4267,4326,,1250,
-8554,1,4269,4326,,1251,
-8555,1,4269,4326,,1252,
-8556,1,4307,4326,,1253,
-8557,1,4284,4326,,1254,
-8558,1,4305,4326,,1255,
-8559,1,4232,4326,,1256,
-8560,1,4807,4275,,1467,99.63
-8561,1,4801,4217,,1257,
-8562,1,4802,4218,,1258,
-8563,1,4802,4218,,1258,
-8563,2,4218,4326,,1125,
-8564,1,4803,4207,,1259,
-8565,1,4804,4257,,1260,
-8566,1,4805,4312,,1261,
-8567,1,4806,4265,,1262,
-8568,1,4806,4265,,1262,
-8568,2,4265,4326,,1169,
-8569,1,4808,4280,,1263,
-8570,1,4809,4215,,1264,
-8571,1,4810,4297,,1265,
-8572,1,4810,4297,,1265,
-8572,2,4297,4326,,1227,
-8573,1,4811,4304,,1266,
-8574,1,4812,4305,,1267,
-8575,1,4812,4305,,1267,
-8575,2,4305,4326,,1255,
-8576,1,4813,4211,,1268,
-8577,1,4813,4211,,1268,
-8577,2,4211,4326,,1123,
-8578,1,4814,4308,,1269,98.51
-8579,1,4815,4120,,1270,
-8580,1,4293,4326,,1271,
-8581,1,4121,4326,,1272,
-8582,1,4237,4258,,1273,
-8583,1,4237,4258,,1273,
-8583,2,4258,4326,,1149,
-8584,1,4230,4326,,1275,
-8585,1,4275,4230,,1276,
-8586,1,4807,4275,,1467,
-8586,2,4275,4230,,1276,
-8587,1,4275,4322,,1277,
-8588,1,4807,4275,,1467,
-8588,2,4275,4322,,1277,
-8589,1,4202,4283,,1278,
-8590,1,4202,4283,,1278,
-8590,2,4283,4326,,1150,98.50
-8591,1,4203,4283,,1279,
-8592,1,4203,4283,,1279,
-8592,2,4283,4326,,1150,98.50
-8593,1,4203,4283,,1280,
-8594,1,4203,4283,,1280,
-8594,2,4283,4326,,1150,98.50
-8595,1,4124,4258,,1437,99.11
-8595,2,4258,4326,,1149,99.11
-8596,1,4125,4326,,1282,
-8597,1,4284,4126,,1274,
-8598,1,4126,4326,,1283,
-8599,1,4210,4326,,1284,
-8600,1,4210,4326,,1285,
-8601,1,4294,4326,,1286,
-8602,1,4284,4326,,1287,
-8603,1,4284,4326,,1288,
-8604,1,4284,4326,,1289,
-8605,1,4284,4326,,1290,
-8606,1,4284,4326,,1291,
-8607,1,4284,4326,,1292,
-8608,1,4284,4326,,1293,
-8609,1,4284,4126,,1274,
-8609,2,4126,4326,,1283,
-8610,1,4304,4326,,1294,
-8611,1,4811,4304,,1266,
-8611,2,4304,4326,,1294,
-8612,1,4271,4326,,1295,
-8613,1,4302,4326,,1296,
-8614,1,4127,4130,,1297,
-8615,1,4127,4130,,1297,
-8615,2,4130,4326,,1302,
-8616,1,4127,4130,,1298,
-8617,1,4127,4130,,1298,
-8617,2,4130,4326,,1302,
-8618,1,4127,4130,,1299,
-8619,1,4127,4130,,1299,
-8619,2,4130,4326,,1302,
-8620,1,4127,4130,,1300,
-8621,1,4127,4130,,1300,
-8621,2,4130,4326,,1302,
-8622,1,4127,4130,,1301,
-8623,1,4127,4130,,1301,
-8623,2,4130,4326,,1302,
-8624,1,4130,4326,,1302,
-8625,1,4284,4326,,1303,
-8626,1,4240,4326,,1304,
-8627,1,4301,4326,,1305,
-8628,1,4312,4326,,1306,
-8629,1,4271,4326,,1307,
-8633,1,4314,4258,,1309,
-8634,1,4314,4258,,1309,
-8634,2,4258,4326,,1149,
-8635,1,4284,4258,,1310,
-8636,1,4284,4258,,1310,
-8636,2,4258,4326,,1149,
-8637,1,4230,4326,,1311,
-8638,1,4903,4230,1001,,
-8639,1,4903,4230,1002,,
-8640,1,4903,4230,1003,,
-8641,1,4903,4230,1001,,
-8641,2,4230,4326,,1145,
-8642,1,4267,4269,,1312,
-8643,1,4267,4269,,1312,
-8643,2,4269,4326,,1188,
-8644,1,4267,4269,,1313,
-8645,1,4267,4269,,1313,
-8645,2,4269,4326,,1188,
-8646,1,4277,4326,,1314,
-8647,1,4277,4230,,1315,
-8648,1,4260,4326,,1316,
-8649,1,4220,4324,,1317,
-8650,1,4220,4326,,1318,
-8651,1,4220,4326,,1319,
-8652,1,4220,4326,,1320,
-8653,1,4220,4326,,1321,
-8654,1,4220,4326,,1322,
-8655,1,4220,4326,,1323,
-8656,1,4220,4326,,1324,
-8657,1,4220,4326,,1325,
-8658,1,4220,4326,,1326,
-8659,1,4220,4326,,1327,
-8660,1,4259,4264,,1328,
-8661,1,4264,4326,,1329,
-8662,1,4259,4326,,1330,
-8663,1,4805,4312,,1261,
-8663,2,4312,4326,,1306,
-8664,1,4133,4258,,1331,
-8665,1,4284,4133,,1332,
-8666,1,4133,4326,,1333,
-8667,1,4284,4326,,1334,
-8668,1,4301,4326,,1335,
-8669,1,4301,4326,,1336,
-8670,1,4301,4326,,1337,
-8671,1,4301,4326,,1338,
-8672,1,4301,4326,,1339,
-8673,1,4301,4326,,1340,
-8674,1,4301,4326,,1341,
-8675,1,4301,4326,,1342,
-8676,1,4301,4326,,1343,
-8677,1,4301,4326,,1344,
-8678,1,4301,4326,,1345,
-8679,1,4301,4326,,1346,
-8680,1,4301,4326,,1347,
-8681,1,4301,4326,,1348,
-8682,1,4301,4326,,1349,
-8683,1,4301,4326,,1350,
-8684,1,4301,4326,,1351,
-8685,1,4301,4326,,1352,
-8686,1,4301,4326,,1353,
-8687,1,4301,4326,,1354,
-8688,1,4301,4326,,1355,
-8689,1,4301,4326,,1356,
-8690,1,4301,4326,,1357,
-8691,1,4301,4326,,1358,
-8692,1,4301,4326,,1359,
-8693,1,4301,4326,,1360,
-8694,1,4301,4326,,1361,
-8695,1,4301,4326,,1362,
-8696,1,4301,4326,,1363,
-8697,1,4301,4326,,1364,
-8698,1,4301,4326,,1365,
-8699,1,4301,4326,,1366,
-8700,1,4301,4326,,1367,
-8701,1,4301,4326,,1368,
-8702,1,4301,4326,,1369,
-8703,1,4301,4326,,1370,
-8704,1,4301,4326,,1371,
-8705,1,4301,4326,,1372,
-8706,1,4301,4326,,1373,
-8707,1,4301,4326,,1374,
-8708,1,4301,4326,,1375,
-8709,1,4301,4326,,1376,
-8710,1,4301,4326,,1377,
-8711,1,4301,4326,,1378,
-8712,1,4301,4326,,1379,
-8713,1,4301,4326,,1380,
-8714,1,4301,4326,,1381,
-8715,1,4301,4326,,1382,
-8716,1,4301,4326,,1383,
-8717,1,4301,4326,,1384,
-8718,1,4301,4326,,1385,
-8719,1,4301,4326,,1386,
-8720,1,4301,4326,,1387,
-8721,1,4301,4326,,1388,
-8722,1,4301,4326,,1389,
-8723,1,4301,4326,,1390,
-8724,1,4301,4326,,1391,
-8725,1,4301,4326,,1392,
-8726,1,4301,4326,,1393,
-8727,1,4301,4326,,1394,
-8728,1,4301,4326,,1395,
-8729,1,4301,4326,,1396,
-8730,1,4301,4326,,1397,
-8731,1,4301,4326,,1398,
-8732,1,4301,4326,,1399,
-8733,1,4301,4326,,1400,
-8734,1,4301,4326,,1401,
-8735,1,4301,4326,,1402,
-8736,1,4301,4326,,1403,
-8737,1,4301,4326,,1404,
-8738,1,4301,4326,,1405,
-8739,1,4301,4326,,1406,
-8740,1,4301,4326,,1407,
-8741,1,4301,4326,,1408,
-8742,1,4301,4326,,1409,
-8743,1,4301,4326,,1410,
-8744,1,4301,4326,,1411,
-8745,1,4301,4326,,1412,
-8746,1,4301,4326,,1413,
-8747,1,4301,4326,,1414,
-8748,1,4301,4326,,1415,
-8749,1,4301,4326,,1416,
-8750,1,4301,4326,,1417,
-8751,1,4301,4326,,1418,
-8752,1,4301,4326,,1419,
-8753,1,4301,4326,,1420,
-8754,1,4301,4326,,1421,
-8755,1,4301,4326,,1422,
-8756,1,4301,4326,,1423,
-8757,1,4301,4326,,1424,
-8758,1,4301,4326,,1425,
-8759,1,4301,4326,,1426,
-8760,1,4301,4326,,1427,
-8761,1,4301,4326,,1428,
-8762,1,4301,4326,,1429,
-8763,1,4301,4326,,1430,
-8764,1,4301,4326,,1431,
-8765,1,4301,4326,,1432,
-8766,1,4301,4326,,1433,
-8767,1,4301,4326,,1434,
-8768,1,4301,4326,,1435,
-8769,1,4301,4326,,1436,
-8770,1,4232,4326,,1438,
-8771,1,4134,4326,,1439,
-8772,1,4230,4326,,1440,
-8773,1,4601,4326,,1441,
-8774,1,4602,4326,,1442,
-8775,1,4603,4326,,1443,
-8776,1,4604,4326,,1444,
-8777,1,4605,4326,,1445,
-8778,1,4606,4326,,1446,
-8779,1,4600,4326,,1447,
-8780,1,4124,4258,,1437,
-8784,1,4230,4326,,1450,
-8785,1,4135,4269,,1454,
-8786,1,4135,4269,,1454,
-8786,2,4269,4326,,1188,
-8787,1,4136,4269,,1455,
-8788,1,4136,4269,,1455,
-8788,2,4269,4326,,1188,
-8789,1,4137,4269,,1456,
-8790,1,4137,4269,,1456,
-8790,2,4269,4326,,1188,
-8791,1,4138,4269,,1457,
-8792,1,4138,4269,,1457,
-8792,2,4269,4326,,1188,
-8793,1,4609,4269,,1451,
-8794,1,4609,4269,,1451,
-8794,2,4269,4326,,1188,
-8795,1,4202,4283,,1458,
-8796,1,4202,4283,,1458,
-8796,2,4283,4326,,1150,
-8797,1,4202,4283,,1459,
-8798,1,4202,4283,,1459,
-8798,2,4283,4326,,1150,
-8799,1,4202,4283,,1460,
-8800,1,4202,4283,,1460,
-8800,2,4283,4326,,1150,
-8801,1,4139,4269,,1461,
-8802,1,4139,4269,,1461,
-8802,2,4269,4326,,1188,
-8803,1,4267,4269,,1462,
-8804,1,4267,4269,,1462,
-8804,2,4269,4326,,1188,
-8805,1,4608,4269,,1463,
-8806,1,4608,4269,,1463,
-8806,2,4269,4326,,1188,
-8807,1,4202,4283,,1464,
-8808,1,4202,4283,,1464,
-8808,2,4283,4326,,1150,
-8811,1,4817,4273,,1466,
-8812,1,4807,4275,,1468,
-8813,1,4142,4326,,1469,
-8814,1,4143,4326,,1470,
-8815,1,4312,4326,,1471,
-8816,1,4122,4140,,1472,
-8817,1,4140,4326,,1473,
-8818,1,4122,4140,,1472,
-8818,2,4140,4326,,1473,
-8819,1,4269,4152,,1474,
-8820,1,4269,4152,,1475,
-8821,1,4269,4152,,1476,
-8822,1,4269,4152,,1477,
-8823,1,4269,4152,,1478,
-8824,1,4269,4152,,1479,
-8825,1,4269,4152,,1480,
-8826,1,4269,4152,,1481,
-8827,1,4269,4152,,1482,
-8828,1,4269,4152,,1483,
-8829,1,4269,4152,,1484,
-8830,1,4269,4152,,1485,
-8831,1,4269,4152,,1486,
-8832,1,4269,4152,,1487,
-8833,1,4269,4152,,1488,
-8834,1,4269,4152,,1489,
-8835,1,4269,4152,,1490,
-8836,1,4269,4152,,1491,
-8837,1,4269,4152,,1492,
-8838,1,4269,4152,,1493,
-8839,1,4269,4152,,1494,
-8840,1,4269,4152,,1495,
-8841,1,4269,4152,,1496,
-8842,1,4269,4152,,1497,
-8843,1,4269,4152,,1498,
-8844,1,4269,4152,,1499,
-8845,1,4269,4152,,1500,
-8846,1,4269,4152,,1501,
-8847,1,4269,4152,,1502,
-8848,1,4269,4152,,1503,
-8849,1,4222,4148,,1504,
-8850,1,4148,4326,,1505,
-8851,1,4202,4283,,1506,
-8852,1,4202,4283,,1507,
-8853,1,4202,4283,,1506,
-8853,2,4283,4326,,1150,
-8854,1,4202,4283,,1507,
-8854,2,4283,4326,,1150,
-8855,1,4149,4326,,1508,
-8856,1,4150,4151,,1509,
-8857,1,4150,4151,,1509,
-8857,2,4151,4326,,1511,
-8858,1,4149,4326,,1510,
-8859,1,4151,4326,,1511,
-8860,1,4267,4269,,1241,
-8860,2,4269,4152,,1474,
-8861,1,4267,4269,,1241,
-8861,2,4269,4152,,1475,
-8862,1,4267,4269,,1241,
-8862,2,4269,4152,,1476,
-8863,1,4267,4269,,1241,
-8863,2,4269,4152,,1477,
-8864,1,4267,4269,,1241,
-8864,2,4269,4152,,1478,
-8865,1,4267,4269,,1241,
-8865,2,4269,4152,,1479,
-8866,1,4267,4269,,1241,
-8866,2,4269,4152,,1480,
-8867,1,4267,4269,,1241,
-8867,2,4269,4152,,1481,
-8868,1,4267,4269,,1241,
-8868,2,4269,4152,,1482,
-8869,1,4267,4269,,1241,
-8869,2,4269,4152,,1483,
-8870,1,4267,4269,,1241,
-8870,2,4269,4152,,1484,
-8871,1,4267,4269,,1241,
-8871,2,4269,4152,,1485,
-8872,1,4267,4269,,1241,
-8872,2,4269,4152,,1486,
-8873,1,4267,4269,,1241,
-8873,2,4269,4152,,1487,
-8874,1,4267,4269,,1241,
-8874,2,4269,4152,,1488,
-8875,1,4267,4269,,1241,
-8875,2,4269,4152,,1489,
-8876,1,4267,4269,,1241,
-8876,2,4269,4152,,1490,
-8877,1,4267,4269,,1241,
-8877,2,4269,4152,,1491,
-8878,1,4267,4269,,1241,
-8878,2,4269,4152,,1492,
-8879,1,4267,4269,,1241,
-8879,2,4269,4152,,1493,
-8880,1,4267,4269,,1241,
-8880,2,4269,4152,,1494,
-8881,1,4139,4269,,1461,
-8881,2,4269,4152,,1495,
-8882,1,4267,4269,,1241,
-8882,2,4269,4152,,1496,
-8883,1,4267,4269,,1241,
-8883,2,4269,4152,,1497,
-8884,1,4267,4269,,1241,
-8884,2,4269,4152,,1498,
-8885,1,4267,4269,,1241,
-8885,2,4269,4152,,1499,
-8886,1,4267,4269,,1241,
-8886,2,4269,4152,,1500,
-8887,1,4267,4269,,1241,
-8887,2,4269,4152,,1501,
-8888,1,4267,4269,,1241,
-8888,2,4269,4152,,1502,
-8889,1,4267,4269,,1241,
-8889,2,4269,4152,,1503,
-8890,1,4153,4326,,1512,
-8891,1,4132,4326,,1513,
-8892,1,4154,4326,,1514,
-8893,1,4269,4326,,1308,
-8894,1,4269,4326,,1515,
-8895,1,4247,4326,,1516,
-8896,1,4267,4269,,1241,
-8896,2,4269,4326,,1515,
-8897,1,4267,4269,,1243,
-8897,2,4269,4326,,1515,
diff --git a/src/tiff/csv/unit_of_measure.csv b/src/tiff/csv/unit_of_measure.csv
deleted file mode 100644
index a34e40a..0000000
--- a/src/tiff/csv/unit_of_measure.csv
+++ /dev/null
@@ -1,64 +0,0 @@
-"UOM_CODE","UNIT_OF_MEAS_NAME","UNIT_OF_MEAS_TYPE","TARGET_UOM_CODE","FACTOR_B","FACTOR_C","REMARKS","INFORMATION_SOURCE","DATA_SOURCE","REVISION_DATE","CHANGE_ID","DEPRECATED"
-9001,metre,length,9001,1.0,1.0,Also known as International metre.,ISO 1000.,EPSG,1995-06-02 00:00:00,,0
-9002,foot,length,9001,0.3048,1.0,,ISO; 1958,EPSG,1995-06-02 00:00:00,,0
-9003,US survey foot,length,9001,12.0,39.37,Used in USA.,EPSG,EPSG,2000-05-07 00:00:00,99.99,0
-9005,Clarke's foot,length,9001,0.304797265,1.0,"Assumes Clarke's 1865 ratio of 1 British foot = 0.304797265 French legal metres applies to the international metre.   Used in older Australian, southern African & British West Indian mapping.",Australian Land Information Group  www.auslig.gov.au/geodesy/histry.htm,EPSG,2001-01-21 00:00:00,97.234 99.99  2000.05,0
-9014,fathom,length,9001,1.8288,1.0,= 6 feet.,,EPSG,1995-06-02 00:00:00,,0
-9030,nautical mile,length,9001,1852.0,1.0,,,EPSG,1996-10-18 00:00:00,96.24,0
-9031,German legal metre,length,9001,1.0000135965,1.0,Used in Namibia.,Chief Directorate Surveys and Land Information; Mowbray; South Africa,EPSG,1997-06-16 00:00:00,,0
-9033,US survey chain,length,9001,792.0,39.37,Used in USA primarily for public lands cadastral work.,Bureau of Land Management technical bulletin 6 (1973) and Standard Field Tables 8th edition (1956).,EPSG,2000-05-07 00:00:00,99.99,0
-9034,US survey link,length,9001,7.92,39.37,Used in USA primarily for public lands cadastral work.,Bureau of Land Management technical bulletin 6 (1973) and Standard Field Tables 8th edition (1956).,EPSG,2000-05-07 00:00:00,99.99,0
-9035,US survey mile,length,9001,63360.0,39.37,Used in USA primarily for public lands cadastral work.,Bureau of Land Management technical bulletin 6 (1973) and Standard Field Tables 8th edition (1956).,EPSG,2000-05-07 00:00:00,99.99,0
-9036,kilometre,length,9001,1000.0,1.0,,ISO 1000.,EPSG,1998-11-11 00:00:00,,0
-9037,Clarke's yard,length,9001,0.914391795,1.0,"=3 Clarke's feet.  Assumes Clarke's 1865 ratio of 1 British foot = 0.304797265 French legal metres applies to the international metre.   Used in older Australian, southern African & British West Indian mapping.",Australian Land Information Group  www.auslig.gov.au/geodesy/histry.htm,EPSG,2000-05-07 00:00:00,97.233  99.99,0
-9038,Clarke's chain,length,9001,20.11661949,1.0,"=22 Clarke's yards.  Assumes Clarke's 1865 ratio of 1 British foot = 0.304797265 French legal metres applies to the international metre.   Used in older Australian, southern African & British West Indian mapping.",Australian Land Information Group  www.auslig.gov.au/geodesy/histry.htm,EPSG,2000-05-07 00:00:00,97.233  99.99,0
-9039,Clarke's link,length,9001,0.2011661949,1.0,"=1/100 Clarke's chain. Assumes Clarke's 1865 ratio of 1 British foot = 0.304797265 French legal metres applies to the international metre.   Used in older Australian, southern African & British West Indian mapping.",Australian Land Information Group  www.auslig.gov.au/geodesy/histry.htm,EPSG,2000-05-07 00:00:00,97.233  99.99,0
-9040,British yard (Sears 1922),length,9001,36.0,39.370147,Uses Sear's 1922 British yard-metre ratio as given by Bomford as 39.370147 inches per metre.  Used in East Malaysian and older New Zealand mapping.,"G. Bomford ""Geodesy"" 2nd edition 1962; after J.S.Clark ""Remeasurement of the Old Length Standards""; Empire Survey Review no. 90; 1953.",EPSG,2000-05-07 00:00:00,97.233  99.99,0
-9041,British foot (Sears 1922),length,9001,12.0,39.370147,Uses Sear's 1922 British yard-metre ratio as given by Bomford as 39.370147 inches per metre.  Used in East Malaysian and older New Zealand mapping.,"G. Bomford ""Geodesy"" 2nd edition 1962; after J.S.Clark ""Remeasurement of the Old Length Standards""; Empire Survey Review no. 90; 1953.",EPSG,2000-05-07 00:00:00,97.233  99.99,0
-9042,British chain (Sears 1922),length,9001,792.0,39.370147,Uses Sear's 1922 British yard-metre ratio as given by Bomford as 39.370147 inches per metre.  Used in East Malaysian and older New Zealand mapping.,"G. Bomford ""Geodesy"" 2nd edition 1962; after J.S.Clark ""Remeasurement of the Old Length Standards""; Empire Survey Review no. 90; 1953.",EPSG,2000-05-07 00:00:00,97.233  99.99,0
-9043,British link (Sears 1922),length,9001,7.92,39.370147,Uses Sear's 1922 British yard-metre ratio as given by Bomford as 39.370147 inches per metre.  Used in East Malaysian and older New Zealand mapping.,"G. Bomford ""Geodesy"" 2nd edition 1962; after J.S.Clark ""Remeasurement of the Old Length Standards""; Empire Survey Review no. 90; 1953.",EPSG,2000-05-07 00:00:00,97.233  99.99,0
-9050,British yard (Benoit 1895 A),length,9001,0.9143992,1.0,Uses Benoit's 1895 British yard-metre ratio as given by Clark as 0.9144992 metres per yard.  Used for deriving metric size of ellipsoid in Palestine.,"J.S.Clark; ""Remeasurement of the Old Length Standards""; Empire Survey Review no. 90; 1953.",EPSG,2000-05-07 00:00:00,97.233  99.99,0
-9051,British foot (Benoit 1895 A),length,9001,0.9143992,3.0,Uses Benoit's 1895 British yard-metre ratio as given by Clark as 0.9144992 metres per yard.  Used for deriving metric size of ellipsoid in Palestine.,"J.S.Clark; ""Remeasurement of the Old Length Standards""; Empire Survey Review no. 90; 1953.",EPSG,2000-05-07 00:00:00,97.233  99.99,0
-9052,British chain (Benoit 1895 A),length,9001,20.1167824,1.0,Uses Benoit's 1895 British yard-metre ratio as given by Clark as 0.9144992 metres per yard.  Used for deriving metric size of ellipsoid in Palestine.,"J.S.Clark; ""Remeasurement of the Old Length Standards""; Empire Survey Review no. 90; 1953.",EPSG,2000-05-07 00:00:00,97.233  99.99,0
-9053,British link (Benoit 1895 A),length,9001,0.201167824,1.0,Uses Benoit's 1895 British yard-metre ratio as given by Clark as 0.9144992 metres per yard.  Used for deriving metric size of ellipsoid in Palestine.,"J.S.Clark; ""Remeasurement of the Old Length Standards""; Empire Survey Review no. 90; 1953.",EPSG,2000-05-07 00:00:00,97.233  99.99,0
-9060,British yard (Benoit 1895 B),length,9001,36.0,39.370113,"G. Bomford ""Geodesy"" 2nd edition 1962; after J.S.Clark ""Remeasurement of the Old Length Standards""; Empire Survey Review no. 90; 1953.","G. Bomford ""Geodesy"" 2nd edition 1962; after J.S.Clark ""Remeasurement of the Old Length Standards""; Empire Survey Review no. 90; 1953.",EPSG,2000-05-07 00:00:00,97.233  99.99,0
-9061,British foot (Benoit 1895 B),length,9001,12.0,39.370113,Uses Benoit's 1895 British yard-metre ratio as given by Bomford as 39.370113 inches per metre.  Used in West Malaysian mapping.,"G. Bomford ""Geodesy"" 2nd edition 1962; after J.S.Clark ""Remeasurement of the Old Length Standards""; Empire Survey Review no. 90; 1953.",EPSG,2000-05-07 00:00:00,97.233  99.99,0
-9062,British chain (Benoit 1895 B),length,9001,792.0,39.370113,Uses Benoit's 1895 British yard-metre ratio as given by Bomford as 39.370113 inches per metre.  Used in West Malaysian mapping.,"G. Bomford ""Geodesy"" 2nd edition 1962; after J.S.Clark ""Remeasurement of the Old Length Standards""; Empire Survey Review no. 90; 1953.",EPSG,2000-05-07 00:00:00,97.233  99.99,0
-9063,British link (Benoit 1895 B),length,9001,7.92,39.370113,Uses Benoit's 1895 British yard-metre ratio as given by Bomford as 39.370113 inches per metre.  Used in West Malaysian mapping.,"G. Bomford; ""Geodesy""; 3rd edition 1975",EPSG,2000-05-07 00:00:00,97.233  99.99,0
-9070,British foot (1865),length,9001,0.9144025,3.0,Uses Clark's estimate of 1853-1865 British foot-metre ratio of 0.9144025 metres per yard.  Used in 1962 and 1975 estimates of Indian foot.,"J.S.Clark; ""Remeasurement of the Old Length Standards""; Empire Survey Review no. 90; 1953.",EPSG,2000-05-07 00:00:00,97.233  99.99,0
-9080,Indian foot,length,9001,12.0,39.370142,Indian Foot = 0.99999566 British feet (A.R.Clarke 1865).  British yard (= 3 British feet) taken to be J.S.Clark's 1865 value of 0.9144025 metres.,"G. Bomford; ""The Re-adjustment of the Indian Triangulation""; Survey of India Professional Paper 28; 1939.",EPSG,2000-05-07 00:00:00,97.231  99.99,0
-9081,Indian foot (1937),length,9001,0.30479841,1.0,Indian Foot = 0.99999566 British feet (A.R.Clarke 1865).  British foot taken to be 1895 Benoit value of 12/39.370113m.  Rounded to 8 decimal places as 0.30479841. Used from Bangladesh to Vietnam.  Previously used in India and Pakistan but superseded.,"G. Bomford; ""The Re-adjustment of the Indian Triangulation""; Survey of India Professional Paper 28; 1939.",EPSG,2000-05-07 00:00:00,97.231  99.99,0
-9082,Indian foot (1962),length,9001,0.3047996,1.0,Indian Foot = 0.99999566 British feet (A.R.Clarke 1865).  British yard (3 feet) taken to be J.S. Clark's 1865 value of 0.9144025m. Rounded to 8 significant figures with a small error as 1 Ind ft=0.3048996m.  Used in Pakistan since metrication.,"G. Bomford; ""Geodesy""; 2nd edition 1962",EPSG,2000-05-07 00:00:00,97.231  99.99,0
-9083,Indian foot (1975),length,9001,0.3047995,1.0,Indian Foot = 0.99999566 British feet (A.R.Clarke 1865).  British yard (3 feet) taken to be J.S. Clark's 1865 value of 0.9144025m. Rounded to 8 significant figures as 1 Ind ft=0.3048995m.  Used in India since metrication.,"G. Bomford; ""Geodesy""; 3rd edition 1975",EPSG,2000-05-07 00:00:00,97.231  99.99,0
-9084,Indian yard,length,9001,36.0,39.370142,Indian Foot = 0.99999566 British feet (A.R.Clarke 1865).  British yard (= 3 British feet) taken to be J.S.Clark's 1865 value of 0.9144025 metres.,"G. Bomford; ""The Re-adjustment of the Indian Triangulation""; Survey of India Professional Paper 28; 1939.",EPSG,2000-05-07 00:00:00,97.231  99.99,0
-9085,Indian yard (1937),length,9001,0.91439523,1.0,Indian Foot = 0.99999566 British feet (A.R.Clarke 1865).  British foot taken to be 1895 Benoit value of 12/39.370113m.  Rounded to 8 decimal places as 0.30479841. Used from Bangladesh to Vietnam.  Previously used in India and Pakistan but superseded.,"G. Bomford; ""The Re-adjustment of the Indian Triangulation""; Survey of India Professional Paper 28; 1939.",EPSG,2000-05-07 00:00:00,97.231  99.99,0
-9086,Indian yard (1962),length,9001,0.9143988,1.0,Indian Foot = 0.99999566 British feet (A.R.Clarke 1865).  British yard (3 feet) taken to be J.S. Clark's 1865 value of 0.9144025m. Rounded to 8 significant figures with a small error as 1 Ind ft=0.3048996m.  Used in Pakistan since metrication.,"G. Bomford; ""Geodesy""; 2nd edition 1962",EPSG,2000-05-07 00:00:00,97.231  99.99,0
-9087,Indian yard (1975),length,9001,0.9143985,1.0,Indian Foot = 0.99999566 British feet (A.R.Clarke 1865).  British yard (3 feet) taken to be J.S. Clark's 1865 value of 0.9144025m. Rounded to 8 significant figures as 1 Ind ft=0.3048995m.  Used in India since metrication.,"G. Bomford; ""Geodesy""; 3rd edition 1975",EPSG,2000-05-07 00:00:00,97.231  99.99,0
-9093,Statute mile,length,9001,1609.344,1.0,=5280 feet,EPSG,EPSG,2000-03-07 00:00:00,,0
-9094,Gold Coast foot,length,9001,6378300.0,20926201.0,"Used in Ghana and some adjacent parts of British west Africa prior to metrication, except for the metrication of projection defining parameters when British foot (Sears 1922) used.",Ordnance Survey International,EPSG,2001-01-21 00:00:00,2000.86,0
-9101,radian,angle,9101,1.0,1.0,SI standard unit.,ISO 1000.,EPSG,1995-06-02 00:00:00,,0
-9102,degree,angle,9101,3.14159265358979,180.0,=pi/180,,EPSG,1996-10-18 00:00:00,96.22,0
-9103,arc-minute,angle,9101,3.14159265358979,10800.0,1/60th degree.  =(pi/180) / 60,,EPSG,1996-10-18 00:00:00,96.22,0
-9104,arc-second,angle,9101,3.14159265358979,648000.0,1/60th arc-minute.  =(pi/180) / 3600,,EPSG,1996-10-18 00:00:00,96.22,0
-9105,grad,angle,9101,3.14159265358979,200.0,"=pi/200.  In France also abbreviated as ""gr"".",,EPSG,1996-10-18 00:00:00,96.22  99.05,0
-9106,gon,angle,9101,3.14159265358979,200.0,=pi/200,,EPSG,1996-10-18 00:00:00,96.22,0
-9107,degree minute second,angle,9101,,,"Format: sign - degrees (integer) - symbol - arc-minutes (integer) - symbol - arc-seconds (real, any precision). Different symbol sets are in use as separators for example � ' "". Convert to degrees using formula. Not recommended for data storage.",EPSG,EPSG,2002-07-13 00:00:00,96.19 2002.07,0
-9108,degree minute second hemisphere,angle,9101,,,Format: degrees (integer) - symbol - arc-minutes (integer) - symbol - arc-seconds (real) - symbol - hemisphere (single character N S E or W). Different symbol sets are in use as separators. Convert to deg using formula. Not recommended for data storage.,EPSG,EPSG,2002-07-13 00:00:00,96.19 2002.07,0
-9109,microradian,angle,9101,1.0,1000000.0,rad * 10E-6,ISO 1000.,EPSG,1996-10-18 00:00:00,99.05,0
-9110,sexagesimal DMS,angle,9101,,,Format: sign - degrees - decimal point - minutes (two digits) - integer seconds (two digits) - fraction of seconds (any precision). Must include leading zero in minutes and seconds and exclude decimal point for seconds. Convert to degrees using formula.,EPSG,EPSG,2002-07-13 00:00:00,2002.27,0
-9111,sexagesimal DM,angle,9101,,,Format: sign - degrees - decimal point - integer minutes (two digits) - fraction of minutes (any precision).  Must include leading zero in integer minutes.  Must exclude decimal point for minutes.  Convert to degrees using formula.  Not recommended.,EPSG,EPSG,2002-06-22 00:00:00,2002.07,0
-9112,centesimal minute,angle,9101,3.14159265358979,20000.0,1/100 of a grad and gon.  =(pi/200) / 100,http://www.geodesy.matav.hu/xgonmil.htm,EPSG,1999-10-20 00:00:00,98.48  99.51,0
-9113,centesimal second,angle,9101,3.14159265358979,2000000.0,"1/100 of a centesimal minute or 1/10,000th of a grad and gon.  =(pi/200) / 10000",http://www.geodesy.matav.hu/xgonmil.htm,EPSG,1999-10-20 00:00:00,99.51,0
-9114,mil_6400,angle,9101,3.14159265358979,3200.0,Angle subtended by 1/6400 part of a circle.  Approximates to 1/1000th radian.  Note that other approximations (notably 1/6300 circle and 1/6000 circle) also exist.,http://www.geodesy.matav.hu/xgonmil.htm,EPSG,1999-10-20 00:00:00,99.51,0
-9115,degree minute,angle,9101,,,"Format: sign - degrees (integer) - symbol - arc-minutes (real, any precision) - symbol. Different symbol sets are in use as separators for example � '. Convert to degrees using formula. Not recommended for data storage.",EPSG,EPSG,2002-07-13 00:00:00,,0
-9201,unity,scale,9201,1.0,1.0,,,EPSG,1996-09-12 00:00:00,,0
-9202,parts per million,scale,9201,1.0,1000000.0,,,EPSG,1996-09-12 00:00:00,,0
-9203,coefficient,scale,9201,,,Used when parameters are coefficients.  They inherently take the units which depend upon the term to which the coefficient applies.,EPSG,EPSG,2000-03-07 00:00:00,,0
-9204,Bin width 330 US survey feet,length,9001,3960.0,39.37,,EPSG,EPSG,2000-10-19 00:00:00,2000.59,0
-9205,Bin width 165 US survey feet,length,9001,1980.0,39.37,,EPSG,EPSG,2000-10-19 00:00:00,2000.59,0
-9206,Bin width 82.5 US survey feet,length,9001,990.0,39.37,,EPSG,EPSG,2000-10-19 00:00:00,2000.59,0
-9207,Bin width 37.5 metres,length,9001,37.5,1.0,,EPSG,EPSG,2000-10-19 00:00:00,2000.59,0
-9208,Bin width 25 metres,length,9001,25.0,1.0,,EPSG,EPSG,2000-10-19 00:00:00,2000.59,0
-9209,Bin width 12.5 metres,length,9001,12.5,1.0,,EPSG,EPSG,2000-10-19 00:00:00,2000.59,0
-9210,Bin width 6.25 metres,length,9001,6.25,1.0,,EPSG,EPSG,2000-10-19 00:00:00,2000.59,0
-9211,Bin width 3.125 metres,length,9001,3.125,1.0,,EPSG,EPSG,2000-10-19 00:00:00,2000.59,0
diff --git a/src/tiff/csv/uom_an_alias.c b/src/tiff/csv/uom_an_alias.c
deleted file mode 100644
index 0a181da..0000000
--- a/src/tiff/csv/uom_an_alias.c
+++ /dev/null
@@ -1,5 +0,0 @@
-#include "defs.h"
-datafile_rows_t uom_an_alias_row_1[] = {"UOM_A_ALIAS_CODE","UOM_A_ALIAS_NAME","UOM_ANGLE_CODE","REVISION_DATE","INFORMATION_SOURCE","DATA_SOURCE","REMARKS","CHANGE_ID",NULL};
-datafile_rows_t uom_an_alias_row_2[] = {"9115","mil","9114","1999-04-22 00:00:00","http://www.geodesy.matav.hu/xgonmil.htm","EPSG","Alias also applies to other variations of a mil, especially mil_6300 and mil_6000.","",NULL};
-
-datafile_rows_t *uom_an_alias_rows[] = {uom_an_alias_row_1,uom_an_alias_row_2,NULL};
diff --git a/src/tiff/csv/uom_an_alias.csv b/src/tiff/csv/uom_an_alias.csv
deleted file mode 100644
index f590c58..0000000
--- a/src/tiff/csv/uom_an_alias.csv
+++ /dev/null
@@ -1,2 +0,0 @@
-"UOM_A_ALIAS_CODE","UOM_A_ALIAS_NAME","UOM_ANGLE_CODE","REVISION_DATE","INFORMATION_SOURCE","DATA_SOURCE","REMARKS","CHANGE_ID"
-9115,mil,9114,1999-04-22 00:00:00,http://www.geodesy.matav.hu/xgonmil.htm,EPSG,"Alias also applies to other variations of a mil, especially mil_6300 and mil_6000.",
diff --git a/src/tiff/csv/uom_angle.c b/src/tiff/csv/uom_angle.c
deleted file mode 100644
index b066249..0000000
--- a/src/tiff/csv/uom_angle.c
+++ /dev/null
@@ -1,18 +0,0 @@
-#include "defs.h"
-datafile_rows_t uom_angle_row_1[] = {"UOM_ANGLE_CODE","UNIT_OF_MEAS_EPSG_NAME","UNIT_OF_MEAS_USER_NAME","ABBREVIATION","DESCRIPTION","TARGET_UOM_ANGLE_CODE","FACTOR_B","FACTOR_C","REVISION_DATE","INFORMATION_SOURCE","DATA_SOURCE","REMARKS","CHANGE_ID",NULL};
-datafile_rows_t uom_angle_row_2[] = {"9101","radian","","rad","","9101","1.0","1.0","1995-06-02 00:00:00","ISO 1000.","EPSG","SI standard unit.","",NULL};
-datafile_rows_t uom_angle_row_3[] = {"9102","degree","","deg","","9101","3.14159265358979","180.0","1996-10-18 00:00:00","","EPSG","=pi/180","96.22",NULL};
-datafile_rows_t uom_angle_row_4[] = {"9103","arc-minute","","min","","9101","3.14159265358979","10800.0","1996-10-18 00:00:00","","EPSG","1/60th degree.  =(pi/180) / 60","96.22",NULL};
-datafile_rows_t uom_angle_row_5[] = {"9104","arc-second","","sec","","9101","3.14159265358979","648000.0","1996-10-18 00:00:00","","EPSG","1/60th arc-minute.  =(pi/180) / 3600","96.22",NULL};
-datafile_rows_t uom_angle_row_6[] = {"9105","grad","","g","","9101","3.14159265358979","200.0","1996-10-18 00:00:00","","EPSG","=pi/200.  In France also abbreviated as \"gr\".","96.22  99.05",NULL};
-datafile_rows_t uom_angle_row_7[] = {"9106","gon","","","","9101","3.14159265358979","200.0","1996-10-18 00:00:00","","EPSG","=pi/200","96.22",NULL};
-datafile_rows_t uom_angle_row_8[] = {"9107","DMS","","","degree minute second","9101","","","1996-10-18 00:00:00","","EPSG","Format: degrees (integer) - space - arc-minutes (integer) - space - arc-seconds (real).  Convert to degees using formula.","96.19",NULL};
-datafile_rows_t uom_angle_row_9[] = {"9108","DMSH","","","degree minute second hemisphere","9101","","","1996-10-18 00:00:00","","EPSG","Format: degrees (integer) - space - arc-minutes (integer) - space - arc-seconds (real) - hemisphere (single character N S E or W).  Convert to degrees using formula.","96.19",NULL};
-datafile_rows_t uom_angle_row_10[] = {"9109","microradian","","�rad","rad * 10E-6","9101","1.0","1000000.0","1996-10-18 00:00:00","ISO 1000.","EPSG","","99.05",NULL};
-datafile_rows_t uom_angle_row_11[] = {"9110","DDD.MMSSsss","","","sexagesimal degrees","9101","","","1996-10-18 00:00:00","","EPSG","Format: degrees - decimal point - minutes (two digits) - integer seconds (two digits) - fraction of seconds (any precision).  Must include leading zero in minutes and seconds.  Must exclude decimal point for seconds.  Convert to degrees using formula.","",NULL};
-datafile_rows_t uom_angle_row_12[] = {"9111","DDD.MMm","","","degrees and decimal minutes","9101","","","1999-04-22 00:00:00","","EPSG","Format: degrees - decimal point - integer minutes (two digits) - fraction of minutes.  Must include leading zero in integer minutes.  Must exclude decimal point for minutes.  Any precision of minutes are allowed.  Convert to degrees using formula.","",NULL};
-datafile_rows_t uom_angle_row_13[] = {"9112","centesimal minute","","c","","9101","3.14159265358979","20000.0","1999-10-20 00:00:00","http://www.geodesy.matav.hu/xgonmil.htm","EPSG","1/100 of a grad and gon.  =(pi/200) / 100","98.48  99.51",NULL};
-datafile_rows_t uom_angle_row_14[] = {"9113","centesimal second","","cc","","9101","3.14159265358979","2000000.0","1999-10-20 00:00:00","http://www.geodesy.matav.hu/xgonmil.htm","EPSG","1/100 of a centesimal minute or 1/10,000th of a grad and gon.  =(pi/200) / 10000","99.51",NULL};
-datafile_rows_t uom_angle_row_15[] = {"9114","mil_6400","","mil","Angle subtended by 1/6400 part of a circle","9101","3.14159265358979","3200.0","1999-10-20 00:00:00","http://www.geodesy.matav.hu/xgonmil.htm","EPSG","Angle subtended by 1/6400 part of a circle.  Approximates to 1/1000th radian.  Note that other approximations (notably 1/6300 circle and 1/6000 circle) also exist.","99.51",NULL};
-
-datafile_rows_t *uom_angle_rows[] = {uom_angle_row_1,uom_angle_row_2,uom_angle_row_3,uom_angle_row_4,uom_angle_row_5,uom_angle_row_6,uom_angle_row_7,uom_angle_row_8,uom_angle_row_9,uom_angle_row_10,uom_angle_row_11,uom_angle_row_12,uom_angle_row_13,uom_angle_row_14,uom_angle_row_15,NULL};
diff --git a/src/tiff/csv/uom_angle.csv b/src/tiff/csv/uom_angle.csv
deleted file mode 100644
index 9b2e72e..0000000
--- a/src/tiff/csv/uom_angle.csv
+++ /dev/null
@@ -1,15 +0,0 @@
-"UOM_ANGLE_CODE","UNIT_OF_MEAS_EPSG_NAME","UNIT_OF_MEAS_USER_NAME","ABBREVIATION","DESCRIPTION","TARGET_UOM_ANGLE_CODE","FACTOR_B","FACTOR_C","REVISION_DATE","INFORMATION_SOURCE","DATA_SOURCE","REMARKS","CHANGE_ID"
-9101,radian,,rad,,9101,1.0,1.0,1995-06-02 00:00:00,ISO 1000.,EPSG,SI standard unit.,
-9102,degree,,deg,,9101,3.14159265358979,180.0,1996-10-18 00:00:00,,EPSG,=pi/180,96.22
-9103,arc-minute,,min,,9101,3.14159265358979,10800.0,1996-10-18 00:00:00,,EPSG,1/60th degree.  =(pi/180) / 60,96.22
-9104,arc-second,,sec,,9101,3.14159265358979,648000.0,1996-10-18 00:00:00,,EPSG,1/60th arc-minute.  =(pi/180) / 3600,96.22
-9105,grad,,g,,9101,3.14159265358979,200.0,1996-10-18 00:00:00,,EPSG,"=pi/200.  In France also abbreviated as \"gr\".",96.22  99.05
-9106,gon,,,,9101,3.14159265358979,200.0,1996-10-18 00:00:00,,EPSG,=pi/200,96.22
-9107,DMS,,,degree minute second,9101,,,1996-10-18 00:00:00,,EPSG,Format: degrees (integer) - space - arc-minutes (integer) - space - arc-seconds (real).  Convert to degees using formula.,96.19
-9108,DMSH,,,degree minute second hemisphere,9101,,,1996-10-18 00:00:00,,EPSG,Format: degrees (integer) - space - arc-minutes (integer) - space - arc-seconds (real) - hemisphere (single character N S E or W).  Convert to degrees using formula.,96.19
-9109,microradian,,�rad,rad * 10E-6,9101,1.0,1000000.0,1996-10-18 00:00:00,ISO 1000.,EPSG,,99.05
-9110,DDD.MMSSsss,,,sexagesimal degrees,9101,,,1996-10-18 00:00:00,,EPSG,Format: degrees - decimal point - minutes (two digits) - integer seconds (two digits) - fraction of seconds (any precision).  Must include leading zero in minutes and seconds.  Must exclude decimal point for seconds.  Convert to degrees using formula.,
-9111,DDD.MMm,,,degrees and decimal minutes,9101,,,1999-04-22 00:00:00,,EPSG,Format: degrees - decimal point - integer minutes (two digits) - fraction of minutes.  Must include leading zero in integer minutes.  Must exclude decimal point for minutes.  Any precision of minutes are allowed.  Convert to degrees using formula.,
-9112,centesimal minute,,c,,9101,3.14159265358979,20000.0,1999-10-20 00:00:00,http://www.geodesy.matav.hu/xgonmil.htm,EPSG,1/100 of a grad and gon.  =(pi/200) / 100,98.48  99.51
-9113,centesimal second,,cc,,9101,3.14159265358979,2000000.0,1999-10-20 00:00:00,http://www.geodesy.matav.hu/xgonmil.htm,EPSG,"1/100 of a centesimal minute or 1/10,000th of a grad and gon.  =(pi/200) / 10000",99.51
-9114,mil_6400,,mil,Angle subtended by 1/6400 part of a circle,9101,3.14159265358979,3200.0,1999-10-20 00:00:00,http://www.geodesy.matav.hu/xgonmil.htm,EPSG,Angle subtended by 1/6400 part of a circle.  Approximates to 1/1000th radian.  Note that other approximations (notably 1/6300 circle and 1/6000 circle) also exist.,99.51
diff --git a/src/tiff/csv/uom_le_alias.c b/src/tiff/csv/uom_le_alias.c
deleted file mode 100644
index 49c3a1e..0000000
--- a/src/tiff/csv/uom_le_alias.c
+++ /dev/null
@@ -1,27 +0,0 @@
-#include "defs.h"
-datafile_rows_t uom_le_alias_row_1[] = {"UOM_L_ALIAS_CODE","UOM_L_ALIAS_NAME","UOM_LENGTH_CODE","REVISION_DATE","INFORMATION_SOURCE","DATA_SOURCE","REMARKS","CHANGE_ID",NULL};
-datafile_rows_t uom_le_alias_row_2[] = {"9015","International nautical mile","9030","1996-10-18 00:00:00","","EPSG","","9624",NULL};
-datafile_rows_t uom_le_alias_row_3[] = {"9016","meter","9001","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t uom_le_alias_row_4[] = {"9018","International foot","9002","1995-06-02 00:00:00","ISO 1958.","EPSG","","",NULL};
-datafile_rows_t uom_le_alias_row_5[] = {"9019","American foot","9003","1995-06-02 00:00:00","","EPSG","Used in USA.","",NULL};
-datafile_rows_t uom_le_alias_row_6[] = {"9020","Cape foot","9005","1995-06-02 00:00:00","","EPSG","Assumes Clarke's 1865 ratio of 1 French legal metre = 39.370432 imperial inches applies to the international metre.   Used in southern African & Jamaica mapping.","",NULL};
-datafile_rows_t uom_le_alias_row_7[] = {"9022","Indian geodetic foot","9080","1995-06-02 00:00:00","","EPSG","Indian Foot = 0.9999566 British feet (A.R.Clarke). British yard (=3 feet) taken to be J.S.Clarke 1865 value of 0.9144025 metres.","97.23",NULL};
-datafile_rows_t uom_le_alias_row_8[] = {"9023","link (Clarke's ratio)","9039","1999-10-20 00:00:00","","EPSG","Assumes Clarke's 1865 ratio of 1 French legal metre = 39.370432 imperial inches applies to the international metre.  Used in Trinidad and Tobago mapping.","97.231",NULL};
-datafile_rows_t uom_le_alias_row_9[] = {"9024","link","9063","1999-10-20 00:00:00","","EPSG","Used in West Malaysian mapping.","97.231",NULL};
-datafile_rows_t uom_le_alias_row_10[] = {"9025","link","9043","1999-10-20 00:00:00","","EPSG","Used in East Malaysian mapping.","97.231",NULL};
-datafile_rows_t uom_le_alias_row_11[] = {"9026","chain","9062","1999-10-20 00:00:00","","EPSG","Used in West Malaysian mapping.","97.231",NULL};
-datafile_rows_t uom_le_alias_row_12[] = {"9027","chain","9042","1999-10-20 00:00:00","","EPSG","Used in East Malaysian mapping.","97.231",NULL};
-datafile_rows_t uom_le_alias_row_13[] = {"9028","yard","9040","1999-10-20 00:00:00","","EPSG","Used in older New Zealand mapping.","97.231",NULL};
-datafile_rows_t uom_le_alias_row_14[] = {"9029","yard","9085","1999-10-20 00:00:00","","EPSG","= 3 Indian feet.","97.23",NULL};
-datafile_rows_t uom_le_alias_row_15[] = {"9044","foot","9041","1999-10-20 00:00:00","","EPSG","","",NULL};
-datafile_rows_t uom_le_alias_row_16[] = {"9054","chain","9052","1999-10-20 00:00:00","","EPSG","","",NULL};
-datafile_rows_t uom_le_alias_row_17[] = {"9055","foot","9051","1999-10-20 00:00:00","","EPSG","","",NULL};
-datafile_rows_t uom_le_alias_row_18[] = {"9056","link","9053","1999-10-20 00:00:00","","EPSG","","",NULL};
-datafile_rows_t uom_le_alias_row_19[] = {"9057","yard","9050","1999-10-20 00:00:00","","EPSG","","",NULL};
-datafile_rows_t uom_le_alias_row_20[] = {"9064","foot","9061","1999-10-20 00:00:00","","EPSG","","",NULL};
-datafile_rows_t uom_le_alias_row_21[] = {"9065","yard","9060","1999-10-20 00:00:00","","EPSG","","",NULL};
-datafile_rows_t uom_le_alias_row_22[] = {"9071","foot","9070","1999-10-20 00:00:00","","EPSG","","",NULL};
-datafile_rows_t uom_le_alias_row_23[] = {"9088","Indian geodetic foot","9081","1999-10-20 00:00:00","","EPSG","Indian Foot = 0.9999566 British feet (A.R.Clarke). British yard (=3 feet) taken to be Benoit's 1885 value of 0.9144992 metres.","",NULL};
-datafile_rows_t uom_le_alias_row_24[] = {"9090","yard","9084","1999-10-20 00:00:00","","EPSG","= 3 Indian feet.","97.23",NULL};
-
-datafile_rows_t *uom_le_alias_rows[] = {uom_le_alias_row_1,uom_le_alias_row_2,uom_le_alias_row_3,uom_le_alias_row_4,uom_le_alias_row_5,uom_le_alias_row_6,uom_le_alias_row_7,uom_le_alias_row_8,uom_le_alias_row_9,uom_le_alias_row_10,uom_le_alias_row_11,uom_le_alias_row_12,uom_le_alias_row_13,uom_le_alias_row_14,uom_le_alias_row_15,uom_le_alias_row_16,uom_le_alias_row_17,uom_le_alias_row_18,uom_le_alias_row_19,uom_le_alias_row_20,uom_le_alias_row_21,uom_le_alias_row_22,uom_le_alias_row_23,u [...]
diff --git a/src/tiff/csv/uom_le_alias.csv b/src/tiff/csv/uom_le_alias.csv
deleted file mode 100644
index c00a10e..0000000
--- a/src/tiff/csv/uom_le_alias.csv
+++ /dev/null
@@ -1,24 +0,0 @@
-"UOM_L_ALIAS_CODE","UOM_L_ALIAS_NAME","UOM_LENGTH_CODE","REVISION_DATE","INFORMATION_SOURCE","DATA_SOURCE","REMARKS","CHANGE_ID"
-9015,International nautical mile,9030,1996-10-18 00:00:00,,EPSG,,9624
-9016,meter,9001,1995-06-02 00:00:00,,EPSG,,
-9018,International foot,9002,1995-06-02 00:00:00,ISO 1958.,EPSG,,
-9019,American foot,9003,1995-06-02 00:00:00,,EPSG,Used in USA.,
-9020,Cape foot,9005,1995-06-02 00:00:00,,EPSG,Assumes Clarke's 1865 ratio of 1 French legal metre = 39.370432 imperial inches applies to the international metre.   Used in southern African & Jamaica mapping.,
-9022,Indian geodetic foot,9080,1995-06-02 00:00:00,,EPSG,Indian Foot = 0.9999566 British feet (A.R.Clarke). British yard (=3 feet) taken to be J.S.Clarke 1865 value of 0.9144025 metres.,97.23
-9023,link (Clarke's ratio),9039,1999-10-20 00:00:00,,EPSG,Assumes Clarke's 1865 ratio of 1 French legal metre = 39.370432 imperial inches applies to the international metre.  Used in Trinidad and Tobago mapping.,97.231
-9024,link,9063,1999-10-20 00:00:00,,EPSG,Used in West Malaysian mapping.,97.231
-9025,link,9043,1999-10-20 00:00:00,,EPSG,Used in East Malaysian mapping.,97.231
-9026,chain,9062,1999-10-20 00:00:00,,EPSG,Used in West Malaysian mapping.,97.231
-9027,chain,9042,1999-10-20 00:00:00,,EPSG,Used in East Malaysian mapping.,97.231
-9028,yard,9040,1999-10-20 00:00:00,,EPSG,Used in older New Zealand mapping.,97.231
-9029,yard,9085,1999-10-20 00:00:00,,EPSG,= 3 Indian feet.,97.23
-9044,foot,9041,1999-10-20 00:00:00,,EPSG,,
-9054,chain,9052,1999-10-20 00:00:00,,EPSG,,
-9055,foot,9051,1999-10-20 00:00:00,,EPSG,,
-9056,link,9053,1999-10-20 00:00:00,,EPSG,,
-9057,yard,9050,1999-10-20 00:00:00,,EPSG,,
-9064,foot,9061,1999-10-20 00:00:00,,EPSG,,
-9065,yard,9060,1999-10-20 00:00:00,,EPSG,,
-9071,foot,9070,1999-10-20 00:00:00,,EPSG,,
-9088,Indian geodetic foot,9081,1999-10-20 00:00:00,,EPSG,Indian Foot = 0.9999566 British feet (A.R.Clarke). British yard (=3 feet) taken to be Benoit's 1885 value of 0.9144992 metres.,
-9090,yard,9084,1999-10-20 00:00:00,,EPSG,= 3 Indian feet.,97.23
diff --git a/src/tiff/csv/uom_length.c b/src/tiff/csv/uom_length.c
deleted file mode 100644
index 78541da..0000000
--- a/src/tiff/csv/uom_length.c
+++ /dev/null
@@ -1,39 +0,0 @@
-#include "defs.h"
-datafile_rows_t uom_length_row_1[] = {"UOM_LENGTH_CODE","UNIT_OF_MEAS_EPSG_NAME","UNIT_OF_MEAS_USER_NAME","ABBREVIATION","DESCRIPTION","TARGET_UOM_LENGTH_CODE","FACTOR_B","FACTOR_C","REVISION_DATE","INFORMATION_SOURCE","DATA_SOURCE","REMARKS","CHANGE_ID",NULL};
-datafile_rows_t uom_length_row_2[] = {"9001","metre","","m","","9001","1.0","1.0","1995-06-02 00:00:00","ISO 1000.","EPSG","Also known as International metre.","",NULL};
-datafile_rows_t uom_length_row_3[] = {"9002","foot","","ft","","9001","0.3048","1.0","1995-06-02 00:00:00","ISO; 1958","EPSG","","",NULL};
-datafile_rows_t uom_length_row_4[] = {"9003","US survey foot","","ft US","","9001","12.0","39.37","1995-06-02 00:00:00","","EPSG","Used in USA.","",NULL};
-datafile_rows_t uom_length_row_5[] = {"9005","Clarke's foot","","ft (Cla)","","9001","0.304797265","1.0","1999-10-20 00:00:00","Australian Land Information Group  www.auslig.gov/au/geodesy/histry.htm","EPSG","Assumes Clarke's 1865 ratio of 1 British foot = 0.304797265 French legal metres applies to the international metre.   Used in older Australian, southern African & British West Indian mapping.","97.234",NULL};
-datafile_rows_t uom_length_row_6[] = {"9014","fathom","","f","","9001","1.8288","1.0","1999-10-20 00:00:00","","EPSG","= 6 feet.","",NULL};
-datafile_rows_t uom_length_row_7[] = {"9030","nautical mile","","NM","","9001","1852.0","1.0","1996-10-18 00:00:00","","EPSG","","96.24",NULL};
-datafile_rows_t uom_length_row_8[] = {"9031","German legal metre","","GLM","","9001","1.0000135965","1.0","1997-06-16 00:00:00","Chief Directorate Surveys and Land Information; Mowbray; South Africa","EPSG","Used in Namibia.","",NULL};
-datafile_rows_t uom_length_row_9[] = {"9033","US survey chain","","ch US","","9001","792.0","39.37","1998-03-12 00:00:00","Bureau of Land Management technical bulletin 6 (1973) and Standard Field Tables 8th edition (1956).","EPSG","Used in USA primarily for public lands cadastral work.","",NULL};
-datafile_rows_t uom_length_row_10[] = {"9034","US survey link","","lk US","","9001","7.92","39.37","1998-03-12 00:00:00","Bureau of Land Management technical bulletin 6 (1973) and Standard Field Tables 8th edition (1956).","EPSG","Used in USA primarily for public lands cadastral work.","",NULL};
-datafile_rows_t uom_length_row_11[] = {"9035","US survey mile","","mile US","","9001","63360.0","39.37","1998-03-12 00:00:00","Bureau of Land Management technical bulletin 6 (1973) and Standard Field Tables 8th edition (1956).","EPSG","Used in USA primarily for public lands cadastral work.","",NULL};
-datafile_rows_t uom_length_row_12[] = {"9036","kilometre","","km","","9001","1000.0","1.0","1998-11-11 00:00:00","ISO 1000.","EPSG","","",NULL};
-datafile_rows_t uom_length_row_13[] = {"9037","Clarke's yard","","yd (Cla)","","9001","0.914391795","1.0","1999-10-20 00:00:00","Australian Land Information Group  www.auslig.gov/au/geodesy/histry.htm","EPSG","=3 Clarke's feet.  Assumes Clarke's 1865 ratio of 1 British foot = 0.304797265 French legal metres applies to the international metre.   Used in older Australian, southern African & British West Indian mapping.","97.233",NULL};
-datafile_rows_t uom_length_row_14[] = {"9038","Clarke's chain","","ch (Cla)","","9001","20.11661949","1.0","1999-10-20 00:00:00","Australian Land Information Group  www.auslig.gov/au/geodesy/histry.htm","EPSG","=22 Clarke's yards.  Assumes Clarke's 1865 ratio of 1 British foot = 0.304797265 French legal metres applies to the international metre.   Used in older Australian, southern African & British West Indian mapping.","97.233",NULL};
-datafile_rows_t uom_length_row_15[] = {"9039","Clarke's link","","lk (Cla)","","9001","0.2011661949","1.0","1999-10-20 00:00:00","Australian Land Information Group  www.auslig.gov/au/geodesy/histry.htm","EPSG","=1/100 Clarke's chain. Assumes Clarke's 1865 ratio of 1 British foot = 0.304797265 French legal metres applies to the international metre.   Used in older Australian, southern African & British West Indian mapping.","97.233",NULL};
-datafile_rows_t uom_length_row_16[] = {"9040","British yard (Sears 1922)","","yd (Sears)","","9001","36.0","39.370147","1999-10-20 00:00:00","G. Bomford \"Geodesy\" 2nd edition 1962; after J.S.Clark \"Remeasurement of the Old Length Standards\"; Empire Survey Review no. 90; 1953.","EPSG","Uses Sear's 1922 British yard-metre ratio as given by Bomford as 39.370147 inches per metre.  Used in East Malaysian and older New Zealand mapping.","97.233",NULL};
-datafile_rows_t uom_length_row_17[] = {"9041","British foot (Sears 1922)","","ft (Sears)","","9001","12.0","39.370147","1999-10-20 00:00:00","G. Bomford \"Geodesy\" 2nd edition 1962; after J.S.Clark \"Remeasurement of the Old Length Standards\"; Empire Survey Review no. 90; 1953.","EPSG","Uses Sear's 1922 British yard-metre ratio as given by Bomford as 39.370147 inches per metre.  Used in East Malaysian and older New Zealand mapping.","97.233",NULL};
-datafile_rows_t uom_length_row_18[] = {"9042","British chain (Sears 1922)","","ch (Sears)","","9001","792.0","39.370147","1999-10-20 00:00:00","\"Geodesy\"; G. Bomford.","EPSG","Uses Sear's 1922 British yard-metre ratio as given by Bomford as 39.370147 inches per metre.  Used in East Malaysian and older New Zealand mapping.","97.233",NULL};
-datafile_rows_t uom_length_row_19[] = {"9043","British link (Sears 1922)","","lk (Sears)","","9001","7.92","39.370147","1999-10-20 00:00:00","G. Bomford \"Geodesy\" 2nd edition 1962; after J.S.Clark \"Remeasurement of the Old Length Standards\"; Empire Survey Review no. 90; 1953.","EPSG","Uses Sear's 1922 British yard-metre ratio as given by Bomford as 39.370147 inches per metre.  Used in East Malaysian and older New Zealand mapping.","97.233",NULL};
-datafile_rows_t uom_length_row_20[] = {"9050","British yard (Benoit 1895 A)","","yd (Ben A)","","9001","0.9143992","1.0","1999-10-20 00:00:00","J.S.Clark; \"Remeasurement of the Old Length Standards\"; Empire Survey Review no. 90; 1953.","EPSG","Uses Benoit's 1895 British yard-metre ratio as given by Clark as 0.9144992 metres per yard.  Used for deriving metric size of ellipsoid in Palestine.","97.233",NULL};
-datafile_rows_t uom_length_row_21[] = {"9051","British foot (Benoit 1895 A)","","ft (Ben A)","","9001","0.9143992","3.0","1999-10-20 00:00:00","J.S.Clark; \"Remeasurement of the Old Length Standards\"; Empire Survey Review no. 90; 1953.","EPSG","Uses Benoit's 1895 British yard-metre ratio as given by Clark as 0.9144992 metres per yard.  Used for deriving metric size of ellipsoid in Palestine.","97.233",NULL};
-datafile_rows_t uom_length_row_22[] = {"9052","British chain (Benoit 1895 A)","","ch (Ben A)","","9001","20.1167824","1.0","1999-10-20 00:00:00","J.S.Clark; \"Remeasurement of the Old Length Standards\"; Empire Survey Review no. 90; 1953.","EPSG","Uses Benoit's 1895 British yard-metre ratio as given by Clark as 0.9144992 metres per yard.  Used for deriving metric size of ellipsoid in Palestine.","97.233",NULL};
-datafile_rows_t uom_length_row_23[] = {"9053","British link (Benoit 1895 A)","","lk (Ben A)","","9001","0.201167824","1.0","1999-10-20 00:00:00","J.S.Clark; \"Remeasurement of the Old Length Standards\"; Empire Survey Review no. 90; 1953.","EPSG","Uses Benoit's 1895 British yard-metre ratio as given by Clark as 0.9144992 metres per yard.  Used for deriving metric size of ellipsoid in Palestine.","97.233",NULL};
-datafile_rows_t uom_length_row_24[] = {"9060","British yard (Benoit 1895 B)","","yd (Ben B)","","9001","36.0","39.370113","1999-10-20 00:00:00","G. Bomford \"Geodesy\" 2nd edition 1962; after J.S.Clark \"Remeasurement of the Old Length Standards\"; Empire Survey Review no. 90; 1953.","EPSG","Uses Benoit's 1895 British yard-metre ratio as given by Bomford as 39.370113 inches per metre.  Used in West Malaysian mapping.","97.233",NULL};
-datafile_rows_t uom_length_row_25[] = {"9061","British foot (Benoit 1895 B)","","ft (Ben B)","","9001","12.0","39.370113","1999-10-20 00:00:00","G. Bomford \"Geodesy\" 2nd edition 1962; after J.S.Clark \"Remeasurement of the Old Length Standards\"; Empire Survey Review no. 90; 1953.","EPSG","Uses Benoit's 1895 British yard-metre ratio as given by Bomford as 39.370113 inches per metre.  Used in West Malaysian mapping.","97.233",NULL};
-datafile_rows_t uom_length_row_26[] = {"9062","British chain (Benoit 1895 B)","","ch (Ben B)","","9001","792.0","39.370113","1999-10-20 00:00:00","G. Bomford \"Geodesy\" 2nd edition 1962; after J.S.Clark \"Remeasurement of the Old Length Standards\"; Empire Survey Review no. 90; 1953.","EPSG","Uses Benoit's 1895 British yard-metre ratio as given by Bomford as 39.370113 inches per metre.  Used in West Malaysian mapping.","97.233",NULL};
-datafile_rows_t uom_length_row_27[] = {"9063","British link (Benoit 1895 B)","","lk (Ben B)","","9001","7.92","39.370113","1999-10-20 00:00:00","\"Geodesy\"; G. Bomford.","EPSG","Uses Benoit's 1895 British yard-metre ratio as given by Bomford as 39.370113 inches per metre.  Used in West Malaysian mapping.","97.233",NULL};
-datafile_rows_t uom_length_row_28[] = {"9070","British foot (1865)","","ft (1865)","","9001","0.9144025","3.0","1999-10-20 00:00:00","J.S.Clark; \"Remeasurement of the Old Length Standards\"; Empire Survey Review no. 90; 1953.","EPSG","Uses Clark's estimate of 1853-1865 British foot-metre ratio of 0.9144025 metres per yard.  Used in 1962 and 1975 estimates of Indian foot.","97.233",NULL};
-datafile_rows_t uom_length_row_29[] = {"9080","Indian foot","","Ind ft (Cla)","","9001","12.0","39.370142","1999-10-20 00:00:00","G. Bomford; \"The Re-adjustment of the Indian Triangulation\"; Survey of India Professional Paper 28; 1939.","EPSG","Indian Foot = 0.99999566 British feet (A.R.Clarke 1865).  British yard (= 3 British feet) taken to be J.S.Clark's 1865 value of 0.9144025 metres.","97.231",NULL};
-datafile_rows_t uom_length_row_30[] = {"9081","Indian foot (1937)","","Ind ft (37)","","9001","0.30479841","1.0","1999-10-20 00:00:00","G. Bomford; \"The Re-adjustment of the Indian Triangulation\"; Survey of India Professional Paper 28; 1939.","EPSG","Indian Foot = 0.99999566 British feet (A.R.Clarke 1865).  British foot taken to be 1895 Benoit value of 12/39.370113m.  Rounded to 8 decimal places as 0.30479841. Used from Bangladesh to Vietnam.  Previously used in India and Pakistan but  [...]
-datafile_rows_t uom_length_row_31[] = {"9082","Indian foot (1962)","","Ind ft (62)","","9001","0.3047996","1.0","1999-10-20 00:00:00","G. Bomford; \"Geodesy\"; 2nd edition 1962","EPSG","Indian Foot = 0.99999566 British feet (A.R.Clarke 1865).  British yard (3 feet) taken to be J.S. Clark's 1865 value of 0.9144025m. Rounded to 8 significant figures with a small error as 1 Ind ft=0.3048996m.  Used in Pakistan since metrication.","97.231",NULL};
-datafile_rows_t uom_length_row_32[] = {"9083","Indian foot (1975)","","Ind ft (75)","","9001","0.3047995","1.0","1999-10-20 00:00:00","G. Bomford; \"Geodesy\"; 3rd edition 1975","EPSG","Indian Foot = 0.99999566 British feet (A.R.Clarke 1865).  British yard (3 feet) taken to be J.S. Clark's 1865 value of 0.9144025m. Rounded to 8 significant figures as 1 Ind ft=0.3048995m.  Used in India since metrication.","97.231",NULL};
-datafile_rows_t uom_length_row_33[] = {"9084","Indian yard","","Ind yd (Cla)","","9001","36.0","39.370142","1999-10-20 00:00:00","G. Bomford; \"The Re-adjustment of the Indian Triangulation\"; Survey of India Professional Paper 28; 1939.","EPSG","Indian Foot = 0.99999566 British feet (A.R.Clarke 1865).  British yard (= 3 British feet) taken to be J.S.Clark's 1865 value of 0.9144025 metres.","97.231",NULL};
-datafile_rows_t uom_length_row_34[] = {"9085","Indian yard (1937)","","Ind yd (37)","","9001","0.91439523","1.0","1999-10-20 00:00:00","G. Bomford; \"The Re-adjustment of the Indian Triangulation\"; Survey of India Professional Paper 28; 1939.","EPSG","Indian Foot = 0.99999566 British feet (A.R.Clarke 1865).  British foot taken to be 1895 Benoit value of 12/39.370113m.  Rounded to 8 decimal places as 0.30479841. Used from Bangladesh to Vietnam.  Previously used in India and Pakistan but  [...]
-datafile_rows_t uom_length_row_35[] = {"9086","Indian yard (1962)","","Ind yd (62)","","9001","0.9143988","1.0","1999-10-20 00:00:00","G. Bomford; \"Geodesy\"; 2nd edition 1962","EPSG","Indian Foot = 0.99999566 British feet (A.R.Clarke 1865).  British yard (3 feet) taken to be J.S. Clark's 1865 value of 0.9144025m. Rounded to 8 significant figures with a small error as 1 Ind ft=0.3048996m.  Used in Pakistan since metrication.","97.231",NULL};
-datafile_rows_t uom_length_row_36[] = {"9087","Indian yard (1975)","","Ind yd (75)","","9001","0.9143985","1.0","1999-10-20 00:00:00","G. Bomford; \"Geodesy\"; 3rd edition 1975","EPSG","Indian Foot = 0.99999566 British feet (A.R.Clarke 1865).  British yard (3 feet) taken to be J.S. Clark's 1865 value of 0.9144025m. Rounded to 8 significant figures as 1 Ind ft=0.3048995m.  Used in India since metrication.","97.231",NULL};
-
-datafile_rows_t *uom_length_rows[] = {uom_length_row_1,uom_length_row_2,uom_length_row_3,uom_length_row_4,uom_length_row_5,uom_length_row_6,uom_length_row_7,uom_length_row_8,uom_length_row_9,uom_length_row_10,uom_length_row_11,uom_length_row_12,uom_length_row_13,uom_length_row_14,uom_length_row_15,uom_length_row_16,uom_length_row_17,uom_length_row_18,uom_length_row_19,uom_length_row_20,uom_length_row_21,uom_length_row_22,uom_length_row_23,uom_length_row_24,uom_length_row_25,uom_length_ro [...]
diff --git a/src/tiff/csv/uom_length.csv b/src/tiff/csv/uom_length.csv
deleted file mode 100644
index 76c873e..0000000
--- a/src/tiff/csv/uom_length.csv
+++ /dev/null
@@ -1,36 +0,0 @@
-"UOM_LENGTH_CODE","UNIT_OF_MEAS_EPSG_NAME","UNIT_OF_MEAS_USER_NAME","ABBREVIATION","DESCRIPTION","TARGET_UOM_LENGTH_CODE","FACTOR_B","FACTOR_C","REVISION_DATE","INFORMATION_SOURCE","DATA_SOURCE","REMARKS","CHANGE_ID"
-9001,metre,,m,,9001,1.0,1.0,1995-06-02 00:00:00,ISO 1000.,EPSG,Also known as International metre.,
-9002,foot,,ft,,9001,0.3048,1.0,1995-06-02 00:00:00,ISO; 1958,EPSG,,
-9003,US survey foot,,ft US,,9001,12.0,39.37,1995-06-02 00:00:00,,EPSG,Used in USA.,
-9005,Clarke's foot,,ft (Cla),,9001,0.304797265,1.0,1999-10-20 00:00:00,Australian Land Information Group  www.auslig.gov/au/geodesy/histry.htm,EPSG,"Assumes Clarke's 1865 ratio of 1 British foot = 0.304797265 French legal metres applies to the international metre.   Used in older Australian, southern African & British West Indian mapping.",97.234
-9014,fathom,,f,,9001,1.8288,1.0,1999-10-20 00:00:00,,EPSG,= 6 feet.,
-9030,nautical mile,,NM,,9001,1852.0,1.0,1996-10-18 00:00:00,,EPSG,,96.24
-9031,German legal metre,,GLM,,9001,1.0000135965,1.0,1997-06-16 00:00:00,Chief Directorate Surveys and Land Information; Mowbray; South Africa,EPSG,Used in Namibia.,
-9033,US survey chain,,ch US,,9001,792.0,39.37,1998-03-12 00:00:00,Bureau of Land Management technical bulletin 6 (1973) and Standard Field Tables 8th edition (1956).,EPSG,Used in USA primarily for public lands cadastral work.,
-9034,US survey link,,lk US,,9001,7.92,39.37,1998-03-12 00:00:00,Bureau of Land Management technical bulletin 6 (1973) and Standard Field Tables 8th edition (1956).,EPSG,Used in USA primarily for public lands cadastral work.,
-9035,US survey mile,,mile US,,9001,63360.0,39.37,1998-03-12 00:00:00,Bureau of Land Management technical bulletin 6 (1973) and Standard Field Tables 8th edition (1956).,EPSG,Used in USA primarily for public lands cadastral work.,
-9036,kilometre,,km,,9001,1000.0,1.0,1998-11-11 00:00:00,ISO 1000.,EPSG,,
-9037,Clarke's yard,,yd (Cla),,9001,0.914391795,1.0,1999-10-20 00:00:00,Australian Land Information Group  www.auslig.gov/au/geodesy/histry.htm,EPSG,"=3 Clarke's feet.  Assumes Clarke's 1865 ratio of 1 British foot = 0.304797265 French legal metres applies to the international metre.   Used in older Australian, southern African & British West Indian mapping.",97.233
-9038,Clarke's chain,,ch (Cla),,9001,20.11661949,1.0,1999-10-20 00:00:00,Australian Land Information Group  www.auslig.gov/au/geodesy/histry.htm,EPSG,"=22 Clarke's yards.  Assumes Clarke's 1865 ratio of 1 British foot = 0.304797265 French legal metres applies to the international metre.   Used in older Australian, southern African & British West Indian mapping.",97.233
-9039,Clarke's link,,lk (Cla),,9001,0.2011661949,1.0,1999-10-20 00:00:00,Australian Land Information Group  www.auslig.gov/au/geodesy/histry.htm,EPSG,"=1/100 Clarke's chain. Assumes Clarke's 1865 ratio of 1 British foot = 0.304797265 French legal metres applies to the international metre.   Used in older Australian, southern African & British West Indian mapping.",97.233
-9040,British yard (Sears 1922),,yd (Sears),,9001,36.0,39.370147,1999-10-20 00:00:00,"G. Bomford \"Geodesy\" 2nd edition 1962; after J.S.Clark \"Remeasurement of the Old Length Standards\"; Empire Survey Review no. 90; 1953.",EPSG,Uses Sear's 1922 British yard-metre ratio as given by Bomford as 39.370147 inches per metre.  Used in East Malaysian and older New Zealand mapping.,97.233
-9041,British foot (Sears 1922),,ft (Sears),,9001,12.0,39.370147,1999-10-20 00:00:00,"G. Bomford \"Geodesy\" 2nd edition 1962; after J.S.Clark \"Remeasurement of the Old Length Standards\"; Empire Survey Review no. 90; 1953.",EPSG,Uses Sear's 1922 British yard-metre ratio as given by Bomford as 39.370147 inches per metre.  Used in East Malaysian and older New Zealand mapping.,97.233
-9042,British chain (Sears 1922),,ch (Sears),,9001,792.0,39.370147,1999-10-20 00:00:00,"\"Geodesy\"; G. Bomford.",EPSG,Uses Sear's 1922 British yard-metre ratio as given by Bomford as 39.370147 inches per metre.  Used in East Malaysian and older New Zealand mapping.,97.233
-9043,British link (Sears 1922),,lk (Sears),,9001,7.92,39.370147,1999-10-20 00:00:00,"G. Bomford \"Geodesy\" 2nd edition 1962; after J.S.Clark \"Remeasurement of the Old Length Standards\"; Empire Survey Review no. 90; 1953.",EPSG,Uses Sear's 1922 British yard-metre ratio as given by Bomford as 39.370147 inches per metre.  Used in East Malaysian and older New Zealand mapping.,97.233
-9050,British yard (Benoit 1895 A),,yd (Ben A),,9001,0.9143992,1.0,1999-10-20 00:00:00,"J.S.Clark; \"Remeasurement of the Old Length Standards\"; Empire Survey Review no. 90; 1953.",EPSG,Uses Benoit's 1895 British yard-metre ratio as given by Clark as 0.9144992 metres per yard.  Used for deriving metric size of ellipsoid in Palestine.,97.233
-9051,British foot (Benoit 1895 A),,ft (Ben A),,9001,0.9143992,3.0,1999-10-20 00:00:00,"J.S.Clark; \"Remeasurement of the Old Length Standards\"; Empire Survey Review no. 90; 1953.",EPSG,Uses Benoit's 1895 British yard-metre ratio as given by Clark as 0.9144992 metres per yard.  Used for deriving metric size of ellipsoid in Palestine.,97.233
-9052,British chain (Benoit 1895 A),,ch (Ben A),,9001,20.1167824,1.0,1999-10-20 00:00:00,"J.S.Clark; \"Remeasurement of the Old Length Standards\"; Empire Survey Review no. 90; 1953.",EPSG,Uses Benoit's 1895 British yard-metre ratio as given by Clark as 0.9144992 metres per yard.  Used for deriving metric size of ellipsoid in Palestine.,97.233
-9053,British link (Benoit 1895 A),,lk (Ben A),,9001,0.201167824,1.0,1999-10-20 00:00:00,"J.S.Clark; \"Remeasurement of the Old Length Standards\"; Empire Survey Review no. 90; 1953.",EPSG,Uses Benoit's 1895 British yard-metre ratio as given by Clark as 0.9144992 metres per yard.  Used for deriving metric size of ellipsoid in Palestine.,97.233
-9060,British yard (Benoit 1895 B),,yd (Ben B),,9001,36.0,39.370113,1999-10-20 00:00:00,"G. Bomford \"Geodesy\" 2nd edition 1962; after J.S.Clark \"Remeasurement of the Old Length Standards\"; Empire Survey Review no. 90; 1953.",EPSG,Uses Benoit's 1895 British yard-metre ratio as given by Bomford as 39.370113 inches per metre.  Used in West Malaysian mapping.,97.233
-9061,British foot (Benoit 1895 B),,ft (Ben B),,9001,12.0,39.370113,1999-10-20 00:00:00,"G. Bomford \"Geodesy\" 2nd edition 1962; after J.S.Clark \"Remeasurement of the Old Length Standards\"; Empire Survey Review no. 90; 1953.",EPSG,Uses Benoit's 1895 British yard-metre ratio as given by Bomford as 39.370113 inches per metre.  Used in West Malaysian mapping.,97.233
-9062,British chain (Benoit 1895 B),,ch (Ben B),,9001,792.0,39.370113,1999-10-20 00:00:00,"G. Bomford \"Geodesy\" 2nd edition 1962; after J.S.Clark \"Remeasurement of the Old Length Standards\"; Empire Survey Review no. 90; 1953.",EPSG,Uses Benoit's 1895 British yard-metre ratio as given by Bomford as 39.370113 inches per metre.  Used in West Malaysian mapping.,97.233
-9063,British link (Benoit 1895 B),,lk (Ben B),,9001,7.92,39.370113,1999-10-20 00:00:00,"\"Geodesy\"; G. Bomford.",EPSG,Uses Benoit's 1895 British yard-metre ratio as given by Bomford as 39.370113 inches per metre.  Used in West Malaysian mapping.,97.233
-9070,British foot (1865),,ft (1865),,9001,0.9144025,3.0,1999-10-20 00:00:00,"J.S.Clark; \"Remeasurement of the Old Length Standards\"; Empire Survey Review no. 90; 1953.",EPSG,Uses Clark's estimate of 1853-1865 British foot-metre ratio of 0.9144025 metres per yard.  Used in 1962 and 1975 estimates of Indian foot.,97.233
-9080,Indian foot,,Ind ft (Cla),,9001,12.0,39.370142,1999-10-20 00:00:00,"G. Bomford; \"The Re-adjustment of the Indian Triangulation\"; Survey of India Professional Paper 28; 1939.",EPSG,Indian Foot = 0.99999566 British feet (A.R.Clarke 1865).  British yard (= 3 British feet) taken to be J.S.Clark's 1865 value of 0.9144025 metres.,97.231
-9081,Indian foot (1937),,Ind ft (37),,9001,0.30479841,1.0,1999-10-20 00:00:00,"G. Bomford; \"The Re-adjustment of the Indian Triangulation\"; Survey of India Professional Paper 28; 1939.",EPSG,Indian Foot = 0.99999566 British feet (A.R.Clarke 1865).  British foot taken to be 1895 Benoit value of 12/39.370113m.  Rounded to 8 decimal places as 0.30479841. Used from Bangladesh to Vietnam.  Previously used in India and Pakistan but superseded.,97.231
-9082,Indian foot (1962),,Ind ft (62),,9001,0.3047996,1.0,1999-10-20 00:00:00,"G. Bomford; \"Geodesy\"; 2nd edition 1962",EPSG,Indian Foot = 0.99999566 British feet (A.R.Clarke 1865).  British yard (3 feet) taken to be J.S. Clark's 1865 value of 0.9144025m. Rounded to 8 significant figures with a small error as 1 Ind ft=0.3048996m.  Used in Pakistan since metrication.,97.231
-9083,Indian foot (1975),,Ind ft (75),,9001,0.3047995,1.0,1999-10-20 00:00:00,"G. Bomford; \"Geodesy\"; 3rd edition 1975",EPSG,Indian Foot = 0.99999566 British feet (A.R.Clarke 1865).  British yard (3 feet) taken to be J.S. Clark's 1865 value of 0.9144025m. Rounded to 8 significant figures as 1 Ind ft=0.3048995m.  Used in India since metrication.,97.231
-9084,Indian yard,,Ind yd (Cla),,9001,36.0,39.370142,1999-10-20 00:00:00,"G. Bomford; \"The Re-adjustment of the Indian Triangulation\"; Survey of India Professional Paper 28; 1939.",EPSG,Indian Foot = 0.99999566 British feet (A.R.Clarke 1865).  British yard (= 3 British feet) taken to be J.S.Clark's 1865 value of 0.9144025 metres.,97.231
-9085,Indian yard (1937),,Ind yd (37),,9001,0.91439523,1.0,1999-10-20 00:00:00,"G. Bomford; \"The Re-adjustment of the Indian Triangulation\"; Survey of India Professional Paper 28; 1939.",EPSG,Indian Foot = 0.99999566 British feet (A.R.Clarke 1865).  British foot taken to be 1895 Benoit value of 12/39.370113m.  Rounded to 8 decimal places as 0.30479841. Used from Bangladesh to Vietnam.  Previously used in India and Pakistan but superseded.,97.231
-9086,Indian yard (1962),,Ind yd (62),,9001,0.9143988,1.0,1999-10-20 00:00:00,"G. Bomford; \"Geodesy\"; 2nd edition 1962",EPSG,Indian Foot = 0.99999566 British feet (A.R.Clarke 1865).  British yard (3 feet) taken to be J.S. Clark's 1865 value of 0.9144025m. Rounded to 8 significant figures with a small error as 1 Ind ft=0.3048996m.  Used in Pakistan since metrication.,97.231
-9087,Indian yard (1975),,Ind yd (75),,9001,0.9143985,1.0,1999-10-20 00:00:00,"G. Bomford; \"Geodesy\"; 3rd edition 1975",EPSG,Indian Foot = 0.99999566 British feet (A.R.Clarke 1865).  British yard (3 feet) taken to be J.S. Clark's 1865 value of 0.9144025m. Rounded to 8 significant figures as 1 Ind ft=0.3048995m.  Used in India since metrication.,97.231
diff --git a/src/tiff/csv/uom_sc_alias.c b/src/tiff/csv/uom_sc_alias.c
deleted file mode 100644
index 3d15565..0000000
--- a/src/tiff/csv/uom_sc_alias.c
+++ /dev/null
@@ -1,4 +0,0 @@
-#include "defs.h"
-datafile_rows_t uom_sc_alias_row_1[] = {"UOM_S_ALIAS_CODE","UOM_S_ALIAS_NAME","UOM_SCALE_CODE","REVISION_DATE","INFORMATION_SOURCE","DATA_SOURCE","REMARKS","CHANGE_ID",NULL};
-
-datafile_rows_t *uom_sc_alias_rows[] = {uom_sc_alias_row_1,NULL};
diff --git a/src/tiff/csv/uom_sc_alias.csv b/src/tiff/csv/uom_sc_alias.csv
deleted file mode 100644
index 1624600..0000000
--- a/src/tiff/csv/uom_sc_alias.csv
+++ /dev/null
@@ -1 +0,0 @@
-"UOM_S_ALIAS_CODE","UOM_S_ALIAS_NAME","UOM_SCALE_CODE","REVISION_DATE","INFORMATION_SOURCE","DATA_SOURCE","REMARKS","CHANGE_ID"
diff --git a/src/tiff/csv/uom_scale.c b/src/tiff/csv/uom_scale.c
deleted file mode 100644
index cdc8376..0000000
--- a/src/tiff/csv/uom_scale.c
+++ /dev/null
@@ -1,6 +0,0 @@
-#include "defs.h"
-datafile_rows_t uom_scale_row_1[] = {"UOM_SCALE_CODE","UNIT_OF_MEAS_EPSG_NAME","UNIT_OF_MEAS_USER_NAME","ABBREVIATION","DESCRIPTION","TARGET_UOM_SCALE_CODE","FACTOR_B","FACTOR_C","REVISION_DATE","INFORMATION_SOURCE","DATA_SOURCE","REMARKS","CHANGE_ID",NULL};
-datafile_rows_t uom_scale_row_2[] = {"9201","unity","","","","9201","1.0","1.0","1996-09-12 00:00:00","","EPSG","","",NULL};
-datafile_rows_t uom_scale_row_3[] = {"9202","parts per million","","ppm","","9201","1.0","1000000.0","1996-09-12 00:00:00","","EPSG","","",NULL};
-
-datafile_rows_t *uom_scale_rows[] = {uom_scale_row_1,uom_scale_row_2,uom_scale_row_3,NULL};
diff --git a/src/tiff/csv/uom_scale.csv b/src/tiff/csv/uom_scale.csv
deleted file mode 100644
index c2a7728..0000000
--- a/src/tiff/csv/uom_scale.csv
+++ /dev/null
@@ -1,3 +0,0 @@
-"UOM_SCALE_CODE","UNIT_OF_MEAS_EPSG_NAME","UNIT_OF_MEAS_USER_NAME","ABBREVIATION","DESCRIPTION","TARGET_UOM_SCALE_CODE","FACTOR_B","FACTOR_C","REVISION_DATE","INFORMATION_SOURCE","DATA_SOURCE","REMARKS","CHANGE_ID"
-9201,unity,,,,9201,1.0,1.0,1996-09-12 00:00:00,,EPSG,,
-9202,parts per million,,ppm,,9201,1.0,1000000.0,1996-09-12 00:00:00,,EPSG,,
diff --git a/src/tiff/csv/version_history.csv b/src/tiff/csv/version_history.csv
deleted file mode 100644
index 6912bb9..0000000
--- a/src/tiff/csv/version_history.csv
+++ /dev/null
@@ -1,23 +0,0 @@
-"VERSION_DATE","VERSION_NUMBER","VERSION_REMARKS","SUPERCEDED_BY","SUPERCEDES"
-1999-11-19 00:00:00,4.4,Version 4.4 release.,5.0,4.3
-1999-07-26 00:00:00,4.3,Version 4.3 release.,4.4,4.2
-1998-11-25 00:00:00,4.2,Version 4.2 release.,4.3,4.1
-1998-09-29 00:00:00,4.1,Version 4.1 release.,4.2,4.0
-1998-03-24 00:00:00,4.0,Version 4.0 release.  Access v7.,4.1,3.2
-1997-08-28 00:00:00,3.2,Version 3.2 release.,4.0,3.1
-1997-04-11 00:00:00,3.1,Version 3.1 release.,3.2,3.0
-1996-12-12 00:00:00,3.0,Version 3.0 release.  Access v2.,3.1,2.1
-1996-06-02 00:00:00,2.1,Version 2.1 release.  Excel v4.,3.0,
-2000-06-29 00:00:00,4.5,Version 4.5 release.,5.1,4.4
-2000-06-29 00:00:00,5.0,Version 5.0 release.  Access97,5.01,4.4
-2000-12-31 00:00:00,5.1,Version 5.1 release.,5.2,5.01
-2001-06-11 00:00:00,5.2,Version 5.2 release.,5.21,5.1
-2001-09-03 00:00:00,6.02,v6.02 release to EPSG wg and ISO 1927 project team.,6.1,
-1994-06-01 00:00:00,1.0,Version 1.0 release.  Excel v2.,,
-2000-07-09 00:00:00,5.01,Version 5.01 release.,5.1,5.0
-2001-06-26 00:00:00,5.21,Version 5.21 release.,6.1,5.2
-2002-02-21 00:00:00,5.3,Version 5.3 release. Same data as v6.1.,6.1,5.21
-2002-02-25 00:00:00,6.1,Version 6.1 release. ISO 19111 compliant data model and terminology.,6.2,5.21  6.02
-2002-07-31 00:00:00,6.2,Version 6.2 release.,6.2.1,5.3  6.1
-2002-09-05 00:00:00,6.2.1,v6.2 data; purged redundant Visual Basic code behind forms.,6.2.2,6.2
-2002-09-16 00:00:00,6.2.2,v6.2 data; purged further redundant Visual Basic code behind forms.,,6.2.1
diff --git a/src/tiff/csv/vert_cs.c b/src/tiff/csv/vert_cs.c
deleted file mode 100644
index 8bfd014..0000000
--- a/src/tiff/csv/vert_cs.c
+++ /dev/null
@@ -1,31 +0,0 @@
-#include "defs.h"
-datafile_rows_t vert_cs_row_1[] = {"VERTCS_CODE","VERTCS_EPSG_NAME","VERTCS_EPSG_ABBR","VERTCS_USER_NAME","DESCRIPTION","AREA_OF_USE","VERTCS_TYPE","VERTICAL_DATUM_CODE","VERTCS_AXIS_NAME","VERTCS_AXIS_ABBREV","VERTCS_AXIS_UOM_CODE","REVISION_DATE","INFORMATION_SOURCE","DATA_SOURCE","REMARKS","CHANGE_ID",NULL};
-datafile_rows_t vert_cs_row_2[] = {"5701","Newlyn","ODN","","","United Kingdom (UK) - Great Britain.","height system","5101","height","","9001","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t vert_cs_row_3[] = {"5702","National Geodetic Vertical Datum of 1929","NGVD29","","","United States (USA).","height system","5102","height","","9003","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t vert_cs_row_4[] = {"5703","North American Vertical Datum of 1988","NAVD88","","","Canada;  United States (USA).","height system","5103","height","","9001","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t vert_cs_row_5[] = {"5704","Yellow Sea","","","","China.","height system","5104","height","","9001","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t vert_cs_row_6[] = {"5705","Baltic","","","","Armenia;  Azerbaijan;  Belorus;  Estonia;  Georgia;  Kazakstan;  Kirgizstan;  Latvia;  Lithuania;  Moldavia;  Russia;  Tadzhikistan;  Turkmenistan;  Ukraine;  Uzbekistan.","height system","5105","height","","9001","1996-09-12 00:00:00","","EPSG","","",NULL};
-datafile_rows_t vert_cs_row_7[] = {"5706","Caspian","","","","Azerbaijan - offshore; Kazakhstan - offshore;  Russia - Caspian Sea;  Turkmenistan - offshore.","depth system","5106","depth","","9001","1996-09-12 00:00:00","","EPSG","","",NULL};
-datafile_rows_t vert_cs_row_8[] = {"5709","Noormal Amsterdams Piel","NAP","","","Netherlands.","height system","5109","height","","9001","1996-09-12 00:00:00","Nederlandse Commissie voor Geodesie publication 30; 1993","EPSG","","",NULL};
-datafile_rows_t vert_cs_row_9[] = {"5710","Oostende","","","","Belgium.","height system","5110","height","","9001","1996-09-12 00:00:00","Nederlandse Commissie voor Geodesie publication 30; 1993","EPSG","","",NULL};
-datafile_rows_t vert_cs_row_10[] = {"5711","Australian Height Datum","AHD","","","Australia (New South Wales; Northern Territories; Queensland; South Australia; Western Australia; Victoria).","height system","5111","height","","9001","1996-09-12 00:00:00","http://www.auslig.gov.au/geodesy","EPSG","","",NULL};
-datafile_rows_t vert_cs_row_11[] = {"5712","Australian Height Datum (Tasmania)","AHD (Tasmania)","","","Australia - Tasmania.","height system","5112","height","","9001","1996-09-12 00:00:00","","EPSG","","",NULL};
-datafile_rows_t vert_cs_row_12[] = {"5713","Canadian Vertical Datum of 1928","CVD28","","","Canada.","height system","5114","height","","9001","1996-12-12 00:00:00","","EPSG","","",NULL};
-datafile_rows_t vert_cs_row_13[] = {"5714","mean sea level height","msl height","","","","height system","5100","height","","9001","1996-04-12 00:00:00","","EPSG","Approximates geoid.  Not specific to any location or epoch.","",NULL};
-datafile_rows_t vert_cs_row_14[] = {"5715","mean sea level depth","msl depth","","","","depth system","5100","depth","","9001","1996-10-18 00:00:00","","EPSG","Approximates geoid.  Not specific to any location or epoch.","",NULL};
-datafile_rows_t vert_cs_row_15[] = {"5716","Piraeus","","","","Greece.","height system","5115","height","","9001","1997-06-16 00:00:00","Geodesy Department; Public Petroleum Corporation of Greece.","EPSG","","",NULL};
-datafile_rows_t vert_cs_row_16[] = {"5717","N60","","","","Finland.","height system","5116","height","","9001","1997-07-22 00:00:00","www.nls.fi/maa/papers/kkj.html","EPSG","In use since 1968.","",NULL};
-datafile_rows_t vert_cs_row_17[] = {"5718","RH70","","","","Sweden","height system","5117","height","","9001","1997-11-13 00:00:00","National and Survey of Sweden","EPSG","","",NULL};
-datafile_rows_t vert_cs_row_18[] = {"5719","NGF Lallemand","","","","France - mainland.","height system","5118","height","","9001","1997-11-13 00:00:00","Conseil National de l'Information Geographique groupe de travail \"Reseaux de Nivellement\" recommendations v5.1 April 1994","EPSG","Generally but not entirely superceded by NGF IGN69 (code 5720).","",NULL};
-datafile_rows_t vert_cs_row_19[] = {"5720","NGF IGN69","","","","France - mainland.","height system","5119","height","","9001","1997-11-13 00:00:00","Conseil National de l'Information Geographique groupe de travail \"Reseaux de Nivellement\" recommendations v5.1 April 1994","EPSG","","",NULL};
-datafile_rows_t vert_cs_row_20[] = {"5721","NGF IGN78","","","","France - Corsica.","height system","5120","height","","9001","1997-11-13 00:00:00","Conseil National de l'Information Geographique groupe de travail \"Reseaux de Nivellement\" recommendations v5.1 April 1994","EPSG","","",NULL};
-datafile_rows_t vert_cs_row_21[] = {"5722","Maputo","","","","Mozambique.","height system","5121","height","","9001","1998-04-16 00:00:00","Direc��o Nacional de Geografia e Cadastral (DINAGECA).","EPSG","","",NULL};
-datafile_rows_t vert_cs_row_22[] = {"5723","Japanese Standard Levelling Datum","Japan Levelling Datum","","","Japan","height system","5122","height","","9001","1999-04-22 00:00:00","Ministry of Construction; Japan.  http://vldb.gsi-mc.go.jp/sokuchi/datum/image/heichoku2.gif","EPSG","","",NULL};
-datafile_rows_t vert_cs_row_23[] = {"5724","PDO Height Datum 1993","PHD93","","","Oman","height system","5123","height","","9001","1999-04-22 00:00:00","Petroleum Development Oman","EPSG","Supersedes Fahud vertical datum (code 5725) from 1993.","",NULL};
-datafile_rows_t vert_cs_row_24[] = {"5725","Fahud Height Datum 1993","","","","Oman","height system","5124","height","","9001","1999-04-22 00:00:00","Petroleum Development Oman","EPSG","Superseded by PHD93 (code 5724)  from 1993.","",NULL};
-datafile_rows_t vert_cs_row_25[] = {"5726","Ha Tien 1960","","","","Cambodia; Vietnam","height system","5125","height","","9001","1999-10-20 00:00:00","","EPSG","In Vietnam superseded by Hon Dau from 1992.","",NULL};
-datafile_rows_t vert_cs_row_26[] = {"5727","Hon Dau 1992","","","","Vietnam","height system","5126","height","","9001","1999-10-20 00:00:00","","EPSG","In Vietnam supersedes Ha Tien from 1992.","",NULL};
-datafile_rows_t vert_cs_row_27[] = {"5728","Landesnivellement 1902","LN02","","","Liechtenstein;  Switzerland.","height system","5127","height","","9001","1999-10-20 00:00:00","Bundesamt f�r Landestopographie","EPSG","To be superseded by LHN95 (code 5729).","",NULL};
-datafile_rows_t vert_cs_row_28[] = {"5729","Landeshohennetz 1995","LHN95","","","Liechtenstein;  Switzerland.","height system","5128","height","","9001","1999-10-20 00:00:00","Bundesamt f�r Landestopographie","EPSG","To supersede LN02 (code 5728).","",NULL};
-
-datafile_rows_t *vert_cs_rows[] = {vert_cs_row_1,vert_cs_row_2,vert_cs_row_3,vert_cs_row_4,vert_cs_row_5,vert_cs_row_6,vert_cs_row_7,vert_cs_row_8,vert_cs_row_9,vert_cs_row_10,vert_cs_row_11,vert_cs_row_12,vert_cs_row_13,vert_cs_row_14,vert_cs_row_15,vert_cs_row_16,vert_cs_row_17,vert_cs_row_18,vert_cs_row_19,vert_cs_row_20,vert_cs_row_21,vert_cs_row_22,vert_cs_row_23,vert_cs_row_24,vert_cs_row_25,vert_cs_row_26,vert_cs_row_27,vert_cs_row_28,NULL};
diff --git a/src/tiff/csv/vert_cs.csv b/src/tiff/csv/vert_cs.csv
deleted file mode 100644
index 11b5057..0000000
--- a/src/tiff/csv/vert_cs.csv
+++ /dev/null
@@ -1,28 +0,0 @@
-"VERTCS_CODE","VERTCS_EPSG_NAME","VERTCS_EPSG_ABBR","VERTCS_USER_NAME","DESCRIPTION","AREA_OF_USE","VERTCS_TYPE","VERTICAL_DATUM_CODE","VERTCS_AXIS_NAME","VERTCS_AXIS_ABBREV","VERTCS_AXIS_UOM_CODE","REVISION_DATE","INFORMATION_SOURCE","DATA_SOURCE","REMARKS","CHANGE_ID"
-5701,Newlyn,ODN,,,United Kingdom (UK) - Great Britain.,height system,5101,height,,9001,1995-06-02 00:00:00,,EPSG,,
-5702,National Geodetic Vertical Datum of 1929,NGVD29,,,United States (USA).,height system,5102,height,,9003,1996-10-18 00:00:00,,EPSG,,
-5703,North American Vertical Datum of 1988,NAVD88,,,Canada;  United States (USA).,height system,5103,height,,9001,1996-10-18 00:00:00,,EPSG,,
-5704,Yellow Sea,,,,China.,height system,5104,height,,9001,1995-06-02 00:00:00,,EPSG,,
-5705,Baltic,,,,Armenia;  Azerbaijan;  Belorus;  Estonia;  Georgia;  Kazakstan;  Kirgizstan;  Latvia;  Lithuania;  Moldavia;  Russia;  Tadzhikistan;  Turkmenistan;  Ukraine;  Uzbekistan.,height system,5105,height,,9001,1996-09-12 00:00:00,,EPSG,,
-5706,Caspian,,,,Azerbaijan - offshore; Kazakhstan - offshore;  Russia - Caspian Sea;  Turkmenistan - offshore.,depth system,5106,depth,,9001,1996-09-12 00:00:00,,EPSG,,
-5709,Noormal Amsterdams Piel,NAP,,,Netherlands.,height system,5109,height,,9001,1996-09-12 00:00:00,Nederlandse Commissie voor Geodesie publication 30; 1993,EPSG,,
-5710,Oostende,,,,Belgium.,height system,5110,height,,9001,1996-09-12 00:00:00,Nederlandse Commissie voor Geodesie publication 30; 1993,EPSG,,
-5711,Australian Height Datum,AHD,,,Australia (New South Wales; Northern Territories; Queensland; South Australia; Western Australia; Victoria).,height system,5111,height,,9001,1996-09-12 00:00:00,http://www.auslig.gov.au/geodesy,EPSG,,
-5712,Australian Height Datum (Tasmania),AHD (Tasmania),,,Australia - Tasmania.,height system,5112,height,,9001,1996-09-12 00:00:00,,EPSG,,
-5713,Canadian Vertical Datum of 1928,CVD28,,,Canada.,height system,5114,height,,9001,1996-12-12 00:00:00,,EPSG,,
-5714,mean sea level height,msl height,,,,height system,5100,height,,9001,1996-04-12 00:00:00,,EPSG,Approximates geoid.  Not specific to any location or epoch.,
-5715,mean sea level depth,msl depth,,,,depth system,5100,depth,,9001,1996-10-18 00:00:00,,EPSG,Approximates geoid.  Not specific to any location or epoch.,
-5716,Piraeus,,,,Greece.,height system,5115,height,,9001,1997-06-16 00:00:00,Geodesy Department; Public Petroleum Corporation of Greece.,EPSG,,
-5717,N60,,,,Finland.,height system,5116,height,,9001,1997-07-22 00:00:00,www.nls.fi/maa/papers/kkj.html,EPSG,In use since 1968.,
-5718,RH70,,,,Sweden,height system,5117,height,,9001,1997-11-13 00:00:00,National and Survey of Sweden,EPSG,,
-5719,NGF Lallemand,,,,France - mainland.,height system,5118,height,,9001,1997-11-13 00:00:00,"Conseil National de l'Information Geographique groupe de travail \"Reseaux de Nivellement\" recommendations v5.1 April 1994",EPSG,Generally but not entirely superceded by NGF IGN69 (code 5720).,
-5720,NGF IGN69,,,,France - mainland.,height system,5119,height,,9001,1997-11-13 00:00:00,"Conseil National de l'Information Geographique groupe de travail \"Reseaux de Nivellement\" recommendations v5.1 April 1994",EPSG,,
-5721,NGF IGN78,,,,France - Corsica.,height system,5120,height,,9001,1997-11-13 00:00:00,"Conseil National de l'Information Geographique groupe de travail \"Reseaux de Nivellement\" recommendations v5.1 April 1994",EPSG,,
-5722,Maputo,,,,Mozambique.,height system,5121,height,,9001,1998-04-16 00:00:00,Direc��o Nacional de Geografia e Cadastral (DINAGECA).,EPSG,,
-5723,Japanese Standard Levelling Datum,Japan Levelling Datum,,,Japan,height system,5122,height,,9001,1999-04-22 00:00:00,Ministry of Construction; Japan.  http://vldb.gsi-mc.go.jp/sokuchi/datum/image/heichoku2.gif,EPSG,,
-5724,PDO Height Datum 1993,PHD93,,,Oman,height system,5123,height,,9001,1999-04-22 00:00:00,Petroleum Development Oman,EPSG,Supersedes Fahud vertical datum (code 5725) from 1993.,
-5725,Fahud Height Datum 1993,,,,Oman,height system,5124,height,,9001,1999-04-22 00:00:00,Petroleum Development Oman,EPSG,Superseded by PHD93 (code 5724)  from 1993.,
-5726,Ha Tien 1960,,,,Cambodia; Vietnam,height system,5125,height,,9001,1999-10-20 00:00:00,,EPSG,In Vietnam superseded by Hon Dau from 1992.,
-5727,Hon Dau 1992,,,,Vietnam,height system,5126,height,,9001,1999-10-20 00:00:00,,EPSG,In Vietnam supersedes Ha Tien from 1992.,
-5728,Landesnivellement 1902,LN02,,,Liechtenstein;  Switzerland.,height system,5127,height,,9001,1999-10-20 00:00:00,Bundesamt f�r Landestopographie,EPSG,To be superseded by LHN95 (code 5729).,
-5729,Landeshohennetz 1995,LHN95,,,Liechtenstein;  Switzerland.,height system,5128,height,,9001,1999-10-20 00:00:00,Bundesamt f�r Landestopographie,EPSG,To supersede LN02 (code 5728).,
diff --git a/src/tiff/csv/vert_datum.c b/src/tiff/csv/vert_datum.c
deleted file mode 100644
index 779f3fe..0000000
--- a/src/tiff/csv/vert_datum.c
+++ /dev/null
@@ -1,32 +0,0 @@
-#include "defs.h"
-datafile_rows_t vert_datum_row_1[] = {"VERTICAL_DATUM_CODE","VERT_DAT_EPSG_NAME","VERT_DAT_EPSG_ABBREV","VERT_DAT_USER_NAME","DESCRIPTION","VERT_DAT_TYPE","REVISION_DATE","INFORMATION_SOURCE","DATA_SOURCE","REMARKS","CHANGE_ID",NULL};
-datafile_rows_t vert_datum_row_2[] = {"5100","Mean Sea Level","msl","","","geoidal","1996-04-12 00:00:00","","EPSG","msl has geographic and temporal components.  Users are advised to not use this generic vertical datum but to define specific instances of msl based on knowledge of these components; for instance \"msl at xxx during 19yy\".","",NULL};
-datafile_rows_t vert_datum_row_3[] = {"5101","Ordnance Datum Newlyn","ODN","","","geoidal","1996-10-18 00:00:00","","EPSG","","",NULL};
-datafile_rows_t vert_datum_row_4[] = {"5102","National Geodetic Vertical Datum 1929","NGVD29","","","geoidal","1996-09-12 00:00:00","","EPSG","","",NULL};
-datafile_rows_t vert_datum_row_5[] = {"5103","North American Vertical Datum 1988","NAVD88","","","geoidal","1996-09-12 00:00:00","","EPSG","","",NULL};
-datafile_rows_t vert_datum_row_6[] = {"5104","Yellow Sea 1956","Yellow Sea","","","geoidal","1995-06-02 00:00:00","","EPSG","","",NULL};
-datafile_rows_t vert_datum_row_7[] = {"5105","Baltic Sea","Baltic","","","geoidal","1996-09-12 00:00:00","","EPSG","Average water level at Kronshtadt","",NULL};
-datafile_rows_t vert_datum_row_8[] = {"5106","Caspian Sea","Caspian","","","geoidal","1996-09-12 00:00:00","","EPSG","Defined as -28.0m Baltic datum","",NULL};
-datafile_rows_t vert_datum_row_9[] = {"5107","Nivellement general de la France","NGF","","","geoidal","1996-04-12 00:00:00","","EPSG","Mean sea level at Marseille","",NULL};
-datafile_rows_t vert_datum_row_10[] = {"5109","Normaal Amsterdams Peil","NAP","","","geoidal","1996-09-12 00:00:00","Nederlandse Commissie voor Geodesie publication 30; 1993","EPSG","","",NULL};
-datafile_rows_t vert_datum_row_11[] = {"5110","Oostende","","","","geoidal","1996-09-12 00:00:00","Nederlandse Commissie voor Geodesie publication 30; 1993","EPSG","Mean low water during 1958","",NULL};
-datafile_rows_t vert_datum_row_12[] = {"5111","Australian Height Datum","AHD","","","geoidal","1996-09-12 00:00:00","http://www.auslig.gov.au/geodesy","EPSG","MSL 1966-68 at 30 gauges around coast.","",NULL};
-datafile_rows_t vert_datum_row_13[] = {"5112","Australian Height Datum (Tasmania)","AHD (Tasmania)","","","geoidal","1996-09-12 00:00:00","","EPSG","MSL 1972 at Hobart and Burnie.","",NULL};
-datafile_rows_t vert_datum_row_14[] = {"5113","Sea Level","","","","geoidal","1996-09-12 00:00:00","","EPSG","An unspecified local vertical datum not recommended for use.","",NULL};
-datafile_rows_t vert_datum_row_15[] = {"5114","Canadian Vertical Datum of 1928","CVD28","","","geoidal","1996-12-12 00:00:00","","EPSG","","",NULL};
-datafile_rows_t vert_datum_row_16[] = {"5115","Piraeus Harbour 1986","Piraeus86","","","geoidal","1997-06-16 00:00:00","Geodesy Department; Public Pertoleum Corporation of Greece","EPSG","MSL determined during 1986.","",NULL};
-datafile_rows_t vert_datum_row_17[] = {"5116","Helsinki 1960","N60","","","geoidal","1997-07-22 00:00:00","www.nls.fi/maa/papers/kkj.html","EPSG","MSL at Helsinki during 1960.","",NULL};
-datafile_rows_t vert_datum_row_18[] = {"5117","Rikets hoghtsystem 1970","RH70","","","geoidal","1997-11-13 00:00:00","National Land Survey of Sweden","EPSG","","",NULL};
-datafile_rows_t vert_datum_row_19[] = {"5118","Nivellement general de la France - Lalle","NGF - Lallemand","","","geoidal","1997-11-13 00:00:00","Conseil National de l'Information Geographique groupe de travail \"Reseaux de Nivellement\" recommendations v5.1 April 1994","EPSG","Mean sea level at Marseille.","",NULL};
-datafile_rows_t vert_datum_row_20[] = {"5119","Nivellement general de la France - IGN69","NGF - IGN69","","","geoidal","1997-11-13 00:00:00","Conseil National de l'Information Geographique groupe de travail \"Reseaux de Nivellement\" recommendations v5.1 April 1994","EPSG","Mean sea level at Marseille.","",NULL};
-datafile_rows_t vert_datum_row_21[] = {"5120","Nivellement general de la France - IGN78","NGF - IGN78","","","geoidal","1997-11-13 00:00:00","Conseil National de l'Information Geographique groupe de travail \"Reseaux de Nivellement\" recommendations v5.1 April 1994","EPSG","","",NULL};
-datafile_rows_t vert_datum_row_22[] = {"5121","Maputo","","","","geoidal","1998-04-16 00:00:00","Direc��o Nacional de Geografia e Cadastral (DINAGECA).","EPSG","Mean sea level at Maputo.","",NULL};
-datafile_rows_t vert_datum_row_23[] = {"5122","Japanese Standard Levelling Datum 1949","JapanVD","","","geoidal","1999-04-22 00:00:00","Ministry of Construction; Japan.  http://vldb.gsi-mc.go.jp/sokuchi/datum/tokyodatum.html","EPSG","24.4140 metres above mean sea level Tokyo Bay.","",NULL};
-datafile_rows_t vert_datum_row_24[] = {"5123","PDO Height Datum 1993","PHD93","","","geoidal","1999-04-22 00:00:00","Petroleum Development Oman","EPSG","Misclosure between Muscat and Salalah less than .5 meters with differences from of up to 5 meters from old Fahud Datum.  The PHD93 adjustment was initially known as the Spine.  Supercedes Fahud Vertical Datum (Code 5124) from 1993.","",NULL};
-datafile_rows_t vert_datum_row_25[] = {"5124","Fahud Height Datum","","","","geoidal","1999-04-22 00:00:00","Petroleum Development Oman","EPSG","Superceded by PHD93 Datum (Code 5123) in 1993.  Based on reciprocal trigonometric heighting based on single MSL determination at Mina Al Fahal.","",NULL};
-datafile_rows_t vert_datum_row_26[] = {"5125","Ha Tien 1960","","","","geoidal","1999-10-20 00:00:00","","EPSG","In Vietnam replaced by Hon Dau in 1992.","",NULL};
-datafile_rows_t vert_datum_row_27[] = {"5126","Hon Dau 1992","","","","geoidal","1999-10-20 00:00:00","","EPSG","Supersedes Ha Tien in Vietnam.","",NULL};
-datafile_rows_t vert_datum_row_28[] = {"5127","Landesnivellement 1902","LN02","","","geoidal","1999-10-20 00:00:00","Bundesamt f�r Landestopographie","EPSG","Origin at Repere Pierre du Niton (RPN) 373.6 metres above msl derived at Marseille.","",NULL};
-datafile_rows_t vert_datum_row_29[] = {"5128","Landeshohennetz 1995","LHN95","","","geoidal","1999-10-20 00:00:00","Bundesamt f�r Landestopographie","EPSG","Origin at Repere Pierre du Niton (RPN) 373.6 metres above msl derived at Marseille.","",NULL};
-
-datafile_rows_t *vert_datum_rows[] = {vert_datum_row_1,vert_datum_row_2,vert_datum_row_3,vert_datum_row_4,vert_datum_row_5,vert_datum_row_6,vert_datum_row_7,vert_datum_row_8,vert_datum_row_9,vert_datum_row_10,vert_datum_row_11,vert_datum_row_12,vert_datum_row_13,vert_datum_row_14,vert_datum_row_15,vert_datum_row_16,vert_datum_row_17,vert_datum_row_18,vert_datum_row_19,vert_datum_row_20,vert_datum_row_21,vert_datum_row_22,vert_datum_row_23,vert_datum_row_24,vert_datum_row_25,vert_datum_ro [...]
diff --git a/src/tiff/csv/vert_datum.csv b/src/tiff/csv/vert_datum.csv
deleted file mode 100644
index 852029e..0000000
--- a/src/tiff/csv/vert_datum.csv
+++ /dev/null
@@ -1,29 +0,0 @@
-"VERTICAL_DATUM_CODE","VERT_DAT_EPSG_NAME","VERT_DAT_EPSG_ABBREV","VERT_DAT_USER_NAME","DESCRIPTION","VERT_DAT_TYPE","REVISION_DATE","INFORMATION_SOURCE","DATA_SOURCE","REMARKS","CHANGE_ID"
-5100,Mean Sea Level,msl,,,geoidal,1996-04-12 00:00:00,,EPSG,"msl has geographic and temporal components.  Users are advised to not use this generic vertical datum but to define specific instances of msl based on knowledge of these components; for instance \"msl at xxx during 19yy\".",
-5101,Ordnance Datum Newlyn,ODN,,,geoidal,1996-10-18 00:00:00,,EPSG,,
-5102,National Geodetic Vertical Datum 1929,NGVD29,,,geoidal,1996-09-12 00:00:00,,EPSG,,
-5103,North American Vertical Datum 1988,NAVD88,,,geoidal,1996-09-12 00:00:00,,EPSG,,
-5104,Yellow Sea 1956,Yellow Sea,,,geoidal,1995-06-02 00:00:00,,EPSG,,
-5105,Baltic Sea,Baltic,,,geoidal,1996-09-12 00:00:00,,EPSG,Average water level at Kronshtadt,
-5106,Caspian Sea,Caspian,,,geoidal,1996-09-12 00:00:00,,EPSG,Defined as -28.0m Baltic datum,
-5107,Nivellement general de la France,NGF,,,geoidal,1996-04-12 00:00:00,,EPSG,Mean sea level at Marseille,
-5109,Normaal Amsterdams Peil,NAP,,,geoidal,1996-09-12 00:00:00,Nederlandse Commissie voor Geodesie publication 30; 1993,EPSG,,
-5110,Oostende,,,,geoidal,1996-09-12 00:00:00,Nederlandse Commissie voor Geodesie publication 30; 1993,EPSG,Mean low water during 1958,
-5111,Australian Height Datum,AHD,,,geoidal,1996-09-12 00:00:00,http://www.auslig.gov.au/geodesy,EPSG,MSL 1966-68 at 30 gauges around coast.,
-5112,Australian Height Datum (Tasmania),AHD (Tasmania),,,geoidal,1996-09-12 00:00:00,,EPSG,MSL 1972 at Hobart and Burnie.,
-5113,Sea Level,,,,geoidal,1996-09-12 00:00:00,,EPSG,An unspecified local vertical datum not recommended for use.,
-5114,Canadian Vertical Datum of 1928,CVD28,,,geoidal,1996-12-12 00:00:00,,EPSG,,
-5115,Piraeus Harbour 1986,Piraeus86,,,geoidal,1997-06-16 00:00:00,Geodesy Department; Public Pertoleum Corporation of Greece,EPSG,MSL determined during 1986.,
-5116,Helsinki 1960,N60,,,geoidal,1997-07-22 00:00:00,www.nls.fi/maa/papers/kkj.html,EPSG,MSL at Helsinki during 1960.,
-5117,Rikets hoghtsystem 1970,RH70,,,geoidal,1997-11-13 00:00:00,National Land Survey of Sweden,EPSG,,
-5118,Nivellement general de la France - Lalle,NGF - Lallemand,,,geoidal,1997-11-13 00:00:00,"Conseil National de l'Information Geographique groupe de travail \"Reseaux de Nivellement\" recommendations v5.1 April 1994",EPSG,Mean sea level at Marseille.,
-5119,Nivellement general de la France - IGN69,NGF - IGN69,,,geoidal,1997-11-13 00:00:00,"Conseil National de l'Information Geographique groupe de travail \"Reseaux de Nivellement\" recommendations v5.1 April 1994",EPSG,Mean sea level at Marseille.,
-5120,Nivellement general de la France - IGN78,NGF - IGN78,,,geoidal,1997-11-13 00:00:00,"Conseil National de l'Information Geographique groupe de travail \"Reseaux de Nivellement\" recommendations v5.1 April 1994",EPSG,,
-5121,Maputo,,,,geoidal,1998-04-16 00:00:00,Direc��o Nacional de Geografia e Cadastral (DINAGECA).,EPSG,Mean sea level at Maputo.,
-5122,Japanese Standard Levelling Datum 1949,JapanVD,,,geoidal,1999-04-22 00:00:00,Ministry of Construction; Japan.  http://vldb.gsi-mc.go.jp/sokuchi/datum/tokyodatum.html,EPSG,24.4140 metres above mean sea level Tokyo Bay.,
-5123,PDO Height Datum 1993,PHD93,,,geoidal,1999-04-22 00:00:00,Petroleum Development Oman,EPSG,Misclosure between Muscat and Salalah less than .5 meters with differences from of up to 5 meters from old Fahud Datum.  The PHD93 adjustment was initially known as the Spine.  Supercedes Fahud Vertical Datum (Code 5124) from 1993.,
-5124,Fahud Height Datum,,,,geoidal,1999-04-22 00:00:00,Petroleum Development Oman,EPSG,Superceded by PHD93 Datum (Code 5123) in 1993.  Based on reciprocal trigonometric heighting based on single MSL determination at Mina Al Fahal.,
-5125,Ha Tien 1960,,,,geoidal,1999-10-20 00:00:00,,EPSG,In Vietnam replaced by Hon Dau in 1992.,
-5126,Hon Dau 1992,,,,geoidal,1999-10-20 00:00:00,,EPSG,Supersedes Ha Tien in Vietnam.,
-5127,Landesnivellement 1902,LN02,,,geoidal,1999-10-20 00:00:00,Bundesamt f�r Landestopographie,EPSG,Origin at Repere Pierre du Niton (RPN) 373.6 metres above msl derived at Marseille.,
-5128,Landeshohennetz 1995,LHN95,,,geoidal,1999-10-20 00:00:00,Bundesamt f�r Landestopographie,EPSG,Origin at Repere Pierre du Niton (RPN) 373.6 metres above msl derived at Marseille.,
diff --git a/src/tiff/csv/vert_offset.c b/src/tiff/csv/vert_offset.c
deleted file mode 100644
index 555fedb..0000000
--- a/src/tiff/csv/vert_offset.c
+++ /dev/null
@@ -1,5 +0,0 @@
-#include "defs.h"
-datafile_rows_t vert_offset_row_1[] = {"OFFSET_CODE","INITIAL_VERTCS_CODE","TERMINAL_VERTCS_CODE","COORD_TRF_METHOD_CODE","OFFSET_VALUE","OFFSET_UOM_CODE","AREA_OF_USE","DESCRIPTION","REVISION_DATE","INFORMATION_SOURCE","DATA_SOURCE","REMARKS","CHANGE_ID",NULL};
-datafile_rows_t vert_offset_row_2[] = {"5400","5705","5706","9616","28.0","9001","Azerbaijan; Kazakstan; Russia; Turkmenistan - Caspian Sea","","1999-11-12 00:00:00","","EPSG","","97.61  99.79",NULL};
-
-datafile_rows_t *vert_offset_rows[] = {vert_offset_row_1,vert_offset_row_2,NULL};
diff --git a/src/tiff/csv/vert_offset.csv b/src/tiff/csv/vert_offset.csv
deleted file mode 100644
index 88f9cc0..0000000
--- a/src/tiff/csv/vert_offset.csv
+++ /dev/null
@@ -1,2 +0,0 @@
-"OFFSET_CODE","INITIAL_VERTCS_CODE","TERMINAL_VERTCS_CODE","COORD_TRF_METHOD_CODE","OFFSET_VALUE","OFFSET_UOM_CODE","AREA_OF_USE","DESCRIPTION","REVISION_DATE","INFORMATION_SOURCE","DATA_SOURCE","REMARKS","CHANGE_ID"
-5400,5705,5706,9616,28.0,9001,Azerbaijan; Kazakstan; Russia; Turkmenistan - Caspian Sea,,1999-11-12 00:00:00,,EPSG,,97.61  99.79
diff --git a/src/tiff/epsg_datum.inc b/src/tiff/epsg_datum.inc
deleted file mode 100644
index 43d6d79..0000000
--- a/src/tiff/epsg_datum.inc
+++ /dev/null
@@ -1,174 +0,0 @@
-/*
- *  EPSG/POSC Datum database -- GeoTIFF Rev. 0.2
- */
- 
-/* C database for Geotiff include files.   */
-/* the macro ValuePair() must be defined   */
-/* by the enclosing include file           */
-
-#ifdef INCLUDE_OLD_CODES
-#include old_datum.inc
-#endif /* OLD Codes */
-
-/* New datums */
-ValuePair(Datum_Dealul_Piscului_1970,6317)
-
-/* Datums for which only the ellipsoid is known */
-ValuePair(DatumE_Airy1830,	6001)
-ValuePair(DatumE_AiryModified1849,	6002)
-ValuePair(DatumE_AustralianNationalSpheroid,	6003)
-ValuePair(DatumE_Bessel1841,	6004)
-ValuePair(DatumE_BesselModified,	6005)
-ValuePair(DatumE_BesselNamibia,	6006)
-ValuePair(DatumE_Clarke1858,	6007)
-ValuePair(DatumE_Clarke1866,	6008)
-ValuePair(DatumE_Clarke1866Michigan,	6009)
-ValuePair(DatumE_Clarke1880_Benoit,	6010)
-ValuePair(DatumE_Clarke1880_IGN,	6011)
-ValuePair(DatumE_Clarke1880_RGS,	6012)
-ValuePair(DatumE_Clarke1880_Arc,	6013)
-ValuePair(DatumE_Clarke1880_SGA1922,	6014)
-ValuePair(DatumE_Everest1830_1937Adjustment,	6015)
-ValuePair(DatumE_Everest1830_1967Definition,	6016)
-ValuePair(DatumE_Everest1830_1975Definition,	6017)
-ValuePair(DatumE_Everest1830Modified,	6018)
-ValuePair(DatumE_GRS1980,	6019)
-ValuePair(DatumE_Helmert1906,	6020)
-ValuePair(DatumE_IndonesianNationalSpheroid,	6021)
-ValuePair(DatumE_International1924,	6022)
-ValuePair(DatumE_International1967,	6023)
-ValuePair(DatumE_Krassowsky1960,	6024)
-ValuePair(DatumE_NWL9D,	6025)
-ValuePair(DatumE_NWL10D,	6026)
-ValuePair(DatumE_Plessis1817,	6027)
-ValuePair(DatumE_Struve1860,	6028)
-ValuePair(DatumE_WarOffice,	6029)
-ValuePair(DatumE_WGS84,	6030)
-ValuePair(DatumE_GEM10C,	6031)
-ValuePair(DatumE_OSU86F,	6032)
-ValuePair(DatumE_OSU91A,	6033)
-ValuePair(DatumE_Clarke1880,	6034)
-ValuePair(DatumE_Sphere,	6035)
-
-/* standard datums */
-ValuePair(Datum_Adindan,	6201)
-ValuePair(Datum_Australian_Geodetic_Datum_1966,	6202)
-ValuePair(Datum_Australian_Geodetic_Datum_1984,	6203)
-ValuePair(Datum_Ain_el_Abd_1970,	6204)
-ValuePair(Datum_Afgooye,	6205)
-ValuePair(Datum_Agadez,	6206)
-ValuePair(Datum_Lisbon,	6207)
-ValuePair(Datum_Aratu,	6208)
-ValuePair(Datum_Arc_1950,	6209)
-ValuePair(Datum_Arc_1960,	6210)
-ValuePair(Datum_Batavia,	6211)
-ValuePair(Datum_Barbados,	6212)
-ValuePair(Datum_Beduaram,	6213)
-ValuePair(Datum_Beijing_1954,	6214)
-ValuePair(Datum_Reseau_National_Belge_1950,	6215)
-ValuePair(Datum_Bermuda_1957,	6216)
-ValuePair(Datum_Bern_1898,	6217)
-ValuePair(Datum_Bogota,	6218)
-ValuePair(Datum_Bukit_Rimpah,	6219)
-ValuePair(Datum_Camacupa,	6220)
-ValuePair(Datum_Campo_Inchauspe,	6221)
-ValuePair(Datum_Cape,	6222)
-ValuePair(Datum_Carthage,	6223)
-ValuePair(Datum_Chua,	6224)
-ValuePair(Datum_Corrego_Alegre,	6225)
-ValuePair(Datum_Cote_d_Ivoire,	6226)
-ValuePair(Datum_Deir_ez_Zor,	6227)
-ValuePair(Datum_Douala,	6228)
-ValuePair(Datum_Egypt_1907,	6229)
-ValuePair(Datum_European_Datum_1950,	6230)
-ValuePair(Datum_European_Datum_1987,	6231)
-ValuePair(Datum_Fahud,	6232)
-ValuePair(Datum_Gandajika_1970,	6233)
-ValuePair(Datum_Garoua,	6234)
-ValuePair(Datum_Guyane_Francaise,	6235)
-ValuePair(Datum_Hu_Tzu_Shan,	6236)
-ValuePair(Datum_Hungarian_Datum_1972,	6237)
-ValuePair(Datum_Indonesian_Datum_1974,	6238)
-ValuePair(Datum_Indian_1954,	6239)
-ValuePair(Datum_Indian_1975,	6240)
-ValuePair(Datum_Jamaica_1875,	6241)
-ValuePair(Datum_Jamaica_1969,	6242)
-ValuePair(Datum_Kalianpur,	6243)
-ValuePair(Datum_Kandawala,	6244)
-ValuePair(Datum_Kertau,	6245)
-ValuePair(Datum_Kuwait_Oil_Company,	6246)
-ValuePair(Datum_La_Canoa,	6247)
-ValuePair(Datum_Provisional_S_American_Datum_1956,	6248)
-ValuePair(Datum_Lake,	6249)
-ValuePair(Datum_Leigon,	6250)
-ValuePair(Datum_Liberia_1964,	6251)
-ValuePair(Datum_Lome,	6252)
-ValuePair(Datum_Luzon_1911,	6253)
-ValuePair(Datum_Hito_XVIII_1963,	6254)
-ValuePair(Datum_Herat_North,	6255)
-ValuePair(Datum_Mahe_1971,	6256)
-ValuePair(Datum_Makassar,	6257)
-ValuePair(Datum_European_Reference_System_1989,	6258)
-ValuePair(Datum_Malongo_1987,	6259)
-ValuePair(Datum_Manoca,	6260)
-ValuePair(Datum_Merchich,	6261)
-ValuePair(Datum_Massawa,	6262)
-ValuePair(Datum_Minna,	6263)
-ValuePair(Datum_Mhast,	6264)
-ValuePair(Datum_Monte_Mario,	6265)
-ValuePair(Datum_M_poraloko,	6266)
-ValuePair(Datum_North_American_Datum_1927,	6267)
-ValuePair(Datum_NAD_Michigan,	6268)
-ValuePair(Datum_North_American_Datum_1983,	6269)
-ValuePair(Datum_Nahrwan_1967,	6270)
-ValuePair(Datum_Naparima_1972,	6271)
-ValuePair(Datum_New_Zealand_Geodetic_Datum_1949,	6272)
-ValuePair(Datum_NGO_1948,	6273)
-ValuePair(Datum_Datum_73,	6274)
-ValuePair(Datum_Nouvelle_Triangulation_Francaise,	6275)
-ValuePair(Datum_NSWC_9Z_2,	6276)
-ValuePair(Datum_OSGB_1936,	6277)
-ValuePair(Datum_OSGB_1970_SN,	6278)
-ValuePair(Datum_OS_SN_1980,	6279)
-ValuePair(Datum_Padang_1884,	6280)
-ValuePair(Datum_Palestine_1923,	6281)
-ValuePair(Datum_Pointe_Noire,	6282)
-ValuePair(Datum_Geocentric_Datum_of_Australia_1994,	6283)
-ValuePair(Datum_Pulkovo_1942,	6284)
-ValuePair(Datum_Qatar,	6285)
-ValuePair(Datum_Qatar_1948,	6286)
-ValuePair(Datum_Qornoq,	6287)
-ValuePair(Datum_Loma_Quintana,	6288)
-ValuePair(Datum_Amersfoort,	6289)
-ValuePair(Datum_RT38,	6290)
-ValuePair(Datum_South_American_Datum_1969,	6291)
-ValuePair(Datum_Sapper_Hill_1943,	6292)
-ValuePair(Datum_Schwarzeck,	6293)
-ValuePair(Datum_Segora,	6294)
-ValuePair(Datum_Serindung,	6295)
-ValuePair(Datum_Sudan,	6296)
-ValuePair(Datum_Tananarive_1925,	6297)
-ValuePair(Datum_Timbalai_1948,	6298)
-ValuePair(Datum_TM65,	6299)
-ValuePair(Datum_TM75,	6300)
-ValuePair(Datum_Tokyo,	6301)
-ValuePair(Datum_Trinidad_1903,	6302)
-ValuePair(Datum_Trucial_Coast_1948,	6303)
-ValuePair(Datum_Voirol_1875,	6304)
-ValuePair(Datum_Voirol_Unifie_1960,	6305)
-ValuePair(Datum_Bern_1938,	6306)
-ValuePair(Datum_Nord_Sahara_1959,	6307)
-ValuePair(Datum_Stockholm_1938,	6308)
-ValuePair(Datum_Yacare,	6309)
-ValuePair(Datum_Yoff,	6310)
-ValuePair(Datum_Zanderij,	6311)
-ValuePair(Datum_Militar_Geographische_Institut,	6312)
-ValuePair(Datum_Reseau_National_Belge_1972,	6313)
-ValuePair(Datum_Deutsche_Hauptdreiecksnetz,	6314)
-ValuePair(Datum_Conakry_1905,	6315)
-ValuePair(Datum_WGS72,	6322)
-ValuePair(Datum_WGS72_Transit_Broadcast_Ephemeris,	6324)
-ValuePair(Datum_WGS84,	6326)
-ValuePair(Datum_Ancienne_Triangulation_Francaise,	6901)
-ValuePair(Datum_Nord_de_Guerre,	6902)
-/* end of list */
diff --git a/src/tiff/epsg_ellipse.inc b/src/tiff/epsg_ellipse.inc
deleted file mode 100644
index 2a05b6a..0000000
--- a/src/tiff/epsg_ellipse.inc
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- *  GeoTIFF Rev. 0.2  Ellipsoids
- */
-
-/* C database for Geotiff include files.   */
-/* the macro ValuePair() must be defined   */
-/* by the enclosing include file           */
-
-#ifdef INCLUDE_OLD_CODES
-#include old_ellipse.inc
-#endif /* OLD Codes */
-
-ValuePair(Ellipse_Airy_1830,	7001)
-ValuePair(Ellipse_Airy_Modified_1849,	7002)
-ValuePair(Ellipse_Australian_National_Spheroid,	7003)
-ValuePair(Ellipse_Bessel_1841,	7004)
-ValuePair(Ellipse_Bessel_Modified,	7005)
-ValuePair(Ellipse_Bessel_Namibia,	7006)
-ValuePair(Ellipse_Clarke_1858,	7007)
-ValuePair(Ellipse_Clarke_1866,	7008)
-ValuePair(Ellipse_Clarke_1866_Michigan,	7009)
-ValuePair(Ellipse_Clarke_1880_Benoit,	7010)
-ValuePair(Ellipse_Clarke_1880_IGN,	7011)
-ValuePair(Ellipse_Clarke_1880_RGS,	7012)
-ValuePair(Ellipse_Clarke_1880_Arc,	7013)
-ValuePair(Ellipse_Clarke_1880_SGA_1922,	7014)
-ValuePair(Ellipse_Everest_1830_1937_Adjustment,	7015)
-ValuePair(Ellipse_Everest_1830_1967_Definition,	7016)
-ValuePair(Ellipse_Everest_1830_1975_Definition,	7017)
-ValuePair(Ellipse_Everest_1830_Modified,	7018)
-ValuePair(Ellipse_GRS_1980,	7019)
-ValuePair(Ellipse_Helmert_1906,	7020)
-ValuePair(Ellipse_Indonesian_National_Spheroid,	7021)
-ValuePair(Ellipse_International_1924,	7022)
-ValuePair(Ellipse_International_1967,	7023)
-ValuePair(Ellipse_Krassowsky_1940,	7024)
-ValuePair(Ellipse_NWL_9D,	7025)
-ValuePair(Ellipse_NWL_10D,	7026)
-ValuePair(Ellipse_Plessis_1817,	7027)
-ValuePair(Ellipse_Struve_1860,	7028)
-ValuePair(Ellipse_War_Office,	7029)
-ValuePair(Ellipse_WGS_84,	7030)
-ValuePair(Ellipse_GEM_10C,	7031)
-ValuePair(Ellipse_OSU86F,	7032)
-ValuePair(Ellipse_OSU91A,	7033)
-ValuePair(Ellipse_Clarke_1880,	7034)
-ValuePair(Ellipse_Sphere,	7035)
-/* end of list */
diff --git a/src/tiff/epsg_gcs.inc b/src/tiff/epsg_gcs.inc
deleted file mode 100644
index d351c24..0000000
--- a/src/tiff/epsg_gcs.inc
+++ /dev/null
@@ -1,193 +0,0 @@
-/*
- *  EPSG/POSC GCS Codes -- GeoTIFF Rev. 0.2
- */
-
-/* C database for Geotiff include files.   */
-/* the macro ValuePair() must be defined   */
-/* by the enclosing include file           */
-
-#ifdef INCLUDE_OLD_CODES
-#include old_gcs.inc
-#endif /* OLD Codes */
-
-/* Unspecified GCS based on ellipsoid */
-ValuePair(GCSE_Airy1830,	4001)
-ValuePair(GCSE_AiryModified1849,	4002)
-ValuePair(GCSE_AustralianNationalSpheroid,	4003)
-ValuePair(GCSE_Bessel1841,	4004)
-ValuePair(GCSE_BesselModified,	4005)
-ValuePair(GCSE_BesselNamibia,	4006)
-ValuePair(GCSE_Clarke1858,	4007)
-ValuePair(GCSE_Clarke1866,	4008)
-ValuePair(GCSE_Clarke1866Michigan,	4009)
-ValuePair(GCSE_Clarke1880_Benoit,	4010)
-ValuePair(GCSE_Clarke1880_IGN,	4011)
-ValuePair(GCSE_Clarke1880_RGS,	4012)
-ValuePair(GCSE_Clarke1880_Arc,	4013)
-ValuePair(GCSE_Clarke1880_SGA1922,	4014)
-ValuePair(GCSE_Everest1830_1937Adjustment,	4015)
-ValuePair(GCSE_Everest1830_1967Definition,	4016)
-ValuePair(GCSE_Everest1830_1975Definition,	4017)
-ValuePair(GCSE_Everest1830Modified,	4018)
-ValuePair(GCSE_GRS1980,	4019)
-ValuePair(GCSE_Helmert1906,	4020)
-ValuePair(GCSE_IndonesianNationalSpheroid,	4021)
-ValuePair(GCSE_International1924,	4022)
-ValuePair(GCSE_International1967,	4023)
-ValuePair(GCSE_Krassowsky1940,	4024)
-ValuePair(GCSE_NWL9D,	4025)
-ValuePair(GCSE_NWL10D,	4026)
-ValuePair(GCSE_Plessis1817,	4027)
-ValuePair(GCSE_Struve1860,	4028)
-ValuePair(GCSE_WarOffice,	4029)
-ValuePair(GCSE_WGS84,	4030)
-ValuePair(GCSE_GEM10C,	4031)
-ValuePair(GCSE_OSU86F,	4032)
-ValuePair(GCSE_OSU91A,	4033)
-ValuePair(GCSE_Clarke1880,	4034)
-ValuePair(GCSE_Sphere,	4035)
-
-/* New GCS */
-ValuePair(GCS_Greek,4120)
-ValuePair(GCS_GGRS87,4121)
-ValuePair(GCS_KKJ,4123)
-ValuePair(GCS_RT90,4124)
-ValuePair(GCS_EST92,4133)
-ValuePair(GCS_Dealul_Piscului_1970,4317)
-ValuePair(GCS_Greek_Athens,4815)
-
-/* Standard GCS */
-ValuePair(GCS_Adindan,	4201)
-ValuePair(GCS_AGD66,	4202)
-ValuePair(GCS_AGD84,	4203)
-ValuePair(GCS_Ain_el_Abd,	4204)
-ValuePair(GCS_Afgooye,	4205)
-ValuePair(GCS_Agadez,	4206)
-ValuePair(GCS_Lisbon,	4207)
-ValuePair(GCS_Aratu,	4208)
-ValuePair(GCS_Arc_1950,	4209)
-ValuePair(GCS_Arc_1960,	4210)
-ValuePair(GCS_Batavia,	4211)
-ValuePair(GCS_Barbados,	4212)
-ValuePair(GCS_Beduaram,	4213)
-ValuePair(GCS_Beijing_1954,	4214)
-ValuePair(GCS_Belge_1950,	4215)
-ValuePair(GCS_Bermuda_1957,	4216)
-ValuePair(GCS_Bern_1898,	4217)
-ValuePair(GCS_Bogota,	4218)
-ValuePair(GCS_Bukit_Rimpah,	4219)
-ValuePair(GCS_Camacupa,	4220)
-ValuePair(GCS_Campo_Inchauspe,	4221)
-ValuePair(GCS_Cape,	4222)
-ValuePair(GCS_Carthage,	4223)
-ValuePair(GCS_Chua,	4224)
-ValuePair(GCS_Corrego_Alegre,	4225)
-ValuePair(GCS_Cote_d_Ivoire,	4226)
-ValuePair(GCS_Deir_ez_Zor,	4227)
-ValuePair(GCS_Douala,	4228)
-ValuePair(GCS_Egypt_1907,	4229)
-ValuePair(GCS_ED50,	4230)
-ValuePair(GCS_ED87,	4231)
-ValuePair(GCS_Fahud,	4232)
-ValuePair(GCS_Gandajika_1970,	4233)
-ValuePair(GCS_Garoua,	4234)
-ValuePair(GCS_Guyane_Francaise,	4235)
-ValuePair(GCS_Hu_Tzu_Shan,	4236)
-ValuePair(GCS_HD72,	4237)
-ValuePair(GCS_ID74,	4238)
-ValuePair(GCS_Indian_1954,	4239)
-ValuePair(GCS_Indian_1975,	4240)
-ValuePair(GCS_Jamaica_1875,	4241)
-ValuePair(GCS_JAD69,	4242)
-ValuePair(GCS_Kalianpur,	4243)
-ValuePair(GCS_Kandawala,	4244)
-ValuePair(GCS_Kertau,	4245)
-ValuePair(GCS_KOC,	4246)
-ValuePair(GCS_La_Canoa,	4247)
-ValuePair(GCS_PSAD56,	4248)
-ValuePair(GCS_Lake,	4249)
-ValuePair(GCS_Leigon,	4250)
-ValuePair(GCS_Liberia_1964,	4251)
-ValuePair(GCS_Lome,	4252)
-ValuePair(GCS_Luzon_1911,	4253)
-ValuePair(GCS_Hito_XVIII_1963,	4254)
-ValuePair(GCS_Herat_North,	4255)
-ValuePair(GCS_Mahe_1971,	4256)
-ValuePair(GCS_Makassar,	4257)
-ValuePair(GCS_EUREF89,	4258)
-ValuePair(GCS_Malongo_1987,	4259)
-ValuePair(GCS_Manoca,	4260)
-ValuePair(GCS_Merchich,	4261)
-ValuePair(GCS_Massawa,	4262)
-ValuePair(GCS_Minna,	4263)
-ValuePair(GCS_Mhast,	4264)
-ValuePair(GCS_Monte_Mario,	4265)
-ValuePair(GCS_M_poraloko,	4266)
-ValuePair(GCS_NAD27,	4267)
-ValuePair(GCS_NAD_Michigan,	4268)
-ValuePair(GCS_NAD83,	4269)
-ValuePair(GCS_Nahrwan_1967,	4270)
-ValuePair(GCS_Naparima_1972,	4271)
-ValuePair(GCS_GD49,	4272)
-ValuePair(GCS_NGO_1948,	4273)
-ValuePair(GCS_Datum_73,	4274)
-ValuePair(GCS_NTF,	4275)
-ValuePair(GCS_NSWC_9Z_2,	4276)
-ValuePair(GCS_OSGB_1936,	4277)
-ValuePair(GCS_OSGB70,	4278)
-ValuePair(GCS_OS_SN80,	4279)
-ValuePair(GCS_Padang,	4280)
-ValuePair(GCS_Palestine_1923,	4281)
-ValuePair(GCS_Pointe_Noire,	4282)
-ValuePair(GCS_GDA94,	4283)
-ValuePair(GCS_Pulkovo_1942,	4284)
-ValuePair(GCS_Qatar,	4285)
-ValuePair(GCS_Qatar_1948,	4286)
-ValuePair(GCS_Qornoq,	4287)
-ValuePair(GCS_Loma_Quintana,	4288)
-ValuePair(GCS_Amersfoort,	4289)
-ValuePair(GCS_RT38,	4290)
-ValuePair(GCS_SAD69,	4291)
-ValuePair(GCS_Sapper_Hill_1943,	4292)
-ValuePair(GCS_Schwarzeck,	4293)
-ValuePair(GCS_Segora,	4294)
-ValuePair(GCS_Serindung,	4295)
-ValuePair(GCS_Sudan,	4296)
-ValuePair(GCS_Tananarive,	4297)
-ValuePair(GCS_Timbalai_1948,	4298)
-ValuePair(GCS_TM65,	4299)
-ValuePair(GCS_TM75,	4300)
-ValuePair(GCS_Tokyo,	4301)
-ValuePair(GCS_Trinidad_1903,	4302)
-ValuePair(GCS_TC_1948,	4303)
-ValuePair(GCS_Voirol_1875,	4304)
-ValuePair(GCS_Voirol_Unifie,	4305)
-ValuePair(GCS_Bern_1938,	4306)
-ValuePair(GCS_Nord_Sahara_1959,	4307)
-ValuePair(GCS_Stockholm_1938,	4308)
-ValuePair(GCS_Yacare,	4309)
-ValuePair(GCS_Yoff,	4310)
-ValuePair(GCS_Zanderij,	4311)
-ValuePair(GCS_MGI,	4312)
-ValuePair(GCS_Belge_1972,	4313)
-ValuePair(GCS_DHDN,	4314)
-ValuePair(GCS_Conakry_1905,	4315)
-ValuePair(GCS_WGS_72,	4322)
-ValuePair(GCS_WGS_72BE,	4324)
-ValuePair(GCS_WGS_84,	4326)
-ValuePair(GCS_Bern_1898_Bern,	4801)
-ValuePair(GCS_Bogota_Bogota,	4802)
-ValuePair(GCS_Lisbon_Lisbon,	4803)
-ValuePair(GCS_Makassar_Jakarta,	4804)
-ValuePair(GCS_MGI_Ferro,	4805)
-ValuePair(GCS_Monte_Mario_Rome,	4806)
-ValuePair(GCS_NTF_Paris,	4807)
-ValuePair(GCS_Padang_Jakarta,	4808)
-ValuePair(GCS_Belge_1950_Brussels,	4809)
-ValuePair(GCS_Tananarive_Paris,	4810)
-ValuePair(GCS_Voirol_1875_Paris,	4811)
-ValuePair(GCS_Voirol_Unifie_Paris,	4812)
-ValuePair(GCS_Batavia_Jakarta,	4813)
-ValuePair(GCS_ATF_Paris,	4901)
-ValuePair(GCS_NDG_Paris,	4902)
-/* End of list */
diff --git a/src/tiff/epsg_pcs.inc b/src/tiff/epsg_pcs.inc
deleted file mode 100644
index bca0f0d..0000000
--- a/src/tiff/epsg_pcs.inc
+++ /dev/null
@@ -1,1012 +0,0 @@
-/*
- *  EPSG PCS Codes - GeoTIFF Rev 0.2
- */
-
-/* C database for Geotiff include files.   */
-/* the macro ValuePair() must be defined   */
-/* by the enclosing include file           */
-
-#ifdef INCLUDE_OLD_CODES
-#include old_pcs.inc
-#endif /* OLD Codes */
-
-/* Newer PCS */
-ValuePair(PCS_Hjorsey_1955_Lambert, 3053)
-ValuePair(PCS_ISN93_Lambert_1993, 3057)
-ValuePair(PCS_ETRS89_Poland_CS2000_zone_5,2176)
-ValuePair(PCS_ETRS89_Poland_CS2000_zone_6,2177)
-ValuePair(PCS_ETRS89_Poland_CS2000_zone_7,2177)
-ValuePair(PCS_ETRS89_Poland_CS2000_zone_8,2178)
-ValuePair(PCS_ETRS89_Poland_CS92,2180)
-
-/* New PCS */
-ValuePair(PCS_GGRS87_Greek_Grid,2100)
-ValuePair(PCS_KKJ_Finland_zone_1,2391)
-ValuePair(PCS_KKJ_Finland_zone_2,2392)
-ValuePair(PCS_KKJ_Finland_zone_3,2393)
-ValuePair(PCS_KKJ_Finland_zone_4,2394)
-ValuePair(PCS_RT90_2_5_gon_W,2400)
-ValuePair(PCS_Lietuvos_Koordinoei_Sistema_1994,2600)
-ValuePair(PCS_Estonian_Coordinate_System_of_1992,3300)
-ValuePair(PCS_HD72_EOV,23700)
-ValuePair(PCS_Dealul_Piscului_1970_Stereo_70,31700)
-
-ValuePair(PCS_Adindan_UTM_zone_37N,	20137)
-ValuePair(PCS_Adindan_UTM_zone_38N,	20138)
-ValuePair(PCS_AGD66_AMG_zone_48,	20248)
-ValuePair(PCS_AGD66_AMG_zone_49,	20249)
-ValuePair(PCS_AGD66_AMG_zone_50,	20250)
-ValuePair(PCS_AGD66_AMG_zone_51,	20251)
-ValuePair(PCS_AGD66_AMG_zone_52,	20252)
-ValuePair(PCS_AGD66_AMG_zone_53,	20253)
-ValuePair(PCS_AGD66_AMG_zone_54,	20254)
-ValuePair(PCS_AGD66_AMG_zone_55,	20255)
-ValuePair(PCS_AGD66_AMG_zone_56,	20256)
-ValuePair(PCS_AGD66_AMG_zone_57,	20257)
-ValuePair(PCS_AGD66_AMG_zone_58,	20258)
-ValuePair(PCS_AGD84_AMG_zone_48,	20348)
-ValuePair(PCS_AGD84_AMG_zone_49,	20349)
-ValuePair(PCS_AGD84_AMG_zone_50,	20350)
-ValuePair(PCS_AGD84_AMG_zone_51,	20351)
-ValuePair(PCS_AGD84_AMG_zone_52,	20352)
-ValuePair(PCS_AGD84_AMG_zone_53,	20353)
-ValuePair(PCS_AGD84_AMG_zone_54,	20354)
-ValuePair(PCS_AGD84_AMG_zone_55,	20355)
-ValuePair(PCS_AGD84_AMG_zone_56,	20356)
-ValuePair(PCS_AGD84_AMG_zone_57,	20357)
-ValuePair(PCS_AGD84_AMG_zone_58,	20358)
-ValuePair(PCS_Ain_el_Abd_UTM_zone_37N,	20437)
-ValuePair(PCS_Ain_el_Abd_UTM_zone_38N,	20438)
-ValuePair(PCS_Ain_el_Abd_UTM_zone_39N,	20439)
-ValuePair(PCS_Ain_el_Abd_Bahrain_Grid,	20499)
-ValuePair(PCS_Afgooye_UTM_zone_38N,	20538)
-ValuePair(PCS_Afgooye_UTM_zone_39N,	20539)
-ValuePair(PCS_Lisbon_Portugese_Grid,	20700)
-ValuePair(PCS_Aratu_UTM_zone_22S,	20822)
-ValuePair(PCS_Aratu_UTM_zone_23S,	20823)
-ValuePair(PCS_Aratu_UTM_zone_24S,	20824)
-ValuePair(PCS_Arc_1950_Lo13,	20973)
-ValuePair(PCS_Arc_1950_Lo15,	20975)
-ValuePair(PCS_Arc_1950_Lo17,	20977)
-ValuePair(PCS_Arc_1950_Lo19,	20979)
-ValuePair(PCS_Arc_1950_Lo21,	20981)
-ValuePair(PCS_Arc_1950_Lo23,	20983)
-ValuePair(PCS_Arc_1950_Lo25,	20985)
-ValuePair(PCS_Arc_1950_Lo27,	20987)
-ValuePair(PCS_Arc_1950_Lo29,	20989)
-ValuePair(PCS_Arc_1950_Lo31,	20991)
-ValuePair(PCS_Arc_1950_Lo33,	20993)
-ValuePair(PCS_Arc_1950_Lo35,	20995)
-ValuePair(PCS_Batavia_NEIEZ,	21100)
-ValuePair(PCS_Batavia_UTM_zone_48S,	21148)
-ValuePair(PCS_Batavia_UTM_zone_49S,	21149)
-ValuePair(PCS_Batavia_UTM_zone_50S,	21150)
-ValuePair(PCS_Beijing_Gauss_zone_13,	21413)
-ValuePair(PCS_Beijing_Gauss_zone_14,	21414)
-ValuePair(PCS_Beijing_Gauss_zone_15,	21415)
-ValuePair(PCS_Beijing_Gauss_zone_16,	21416)
-ValuePair(PCS_Beijing_Gauss_zone_17,	21417)
-ValuePair(PCS_Beijing_Gauss_zone_18,	21418)
-ValuePair(PCS_Beijing_Gauss_zone_19,	21419)
-ValuePair(PCS_Beijing_Gauss_zone_20,	21420)
-ValuePair(PCS_Beijing_Gauss_zone_21,	21421)
-ValuePair(PCS_Beijing_Gauss_zone_22,	21422)
-ValuePair(PCS_Beijing_Gauss_zone_23,	21423)
-ValuePair(PCS_Beijing_Gauss_13N,	21473)
-ValuePair(PCS_Beijing_Gauss_14N,	21474)
-ValuePair(PCS_Beijing_Gauss_15N,	21475)
-ValuePair(PCS_Beijing_Gauss_16N,	21476)
-ValuePair(PCS_Beijing_Gauss_17N,	21477)
-ValuePair(PCS_Beijing_Gauss_18N,	21478)
-ValuePair(PCS_Beijing_Gauss_19N,	21479)
-ValuePair(PCS_Beijing_Gauss_20N,	21480)
-ValuePair(PCS_Beijing_Gauss_21N,	21481)
-ValuePair(PCS_Beijing_Gauss_22N,	21482)
-ValuePair(PCS_Beijing_Gauss_23N,	21483)
-ValuePair(PCS_Belge_Lambert_50,	21500)
-ValuePair(PCS_Bern_1898_Swiss_Old,	21790)
-ValuePair(PCS_Bogota_UTM_zone_17N,	21817)
-ValuePair(PCS_Bogota_UTM_zone_18N,	21818)
-ValuePair(PCS_Bogota_Colombia_3W,	21891)
-ValuePair(PCS_Bogota_Colombia_Bogota,	21892)
-ValuePair(PCS_Bogota_Colombia_3E,	21893)
-ValuePair(PCS_Bogota_Colombia_6E,	21894)
-ValuePair(PCS_Camacupa_UTM_32S,	22032)
-ValuePair(PCS_Camacupa_UTM_33S,	22033)
-ValuePair(PCS_C_Inchauspe_Argentina_1,	22191)
-ValuePair(PCS_C_Inchauspe_Argentina_2,	22192)
-ValuePair(PCS_C_Inchauspe_Argentina_3,	22193)
-ValuePair(PCS_C_Inchauspe_Argentina_4,	22194)
-ValuePair(PCS_C_Inchauspe_Argentina_5,	22195)
-ValuePair(PCS_C_Inchauspe_Argentina_6,	22196)
-ValuePair(PCS_C_Inchauspe_Argentina_7,	22197)
-ValuePair(PCS_Carthage_UTM_zone_32N,	22332)
-ValuePair(PCS_Carthage_Nord_Tunisie,	22391)
-ValuePair(PCS_Carthage_Sud_Tunisie,	22392)
-ValuePair(PCS_Corrego_Alegre_UTM_23S,	22523)
-ValuePair(PCS_Corrego_Alegre_UTM_24S,	22524)
-ValuePair(PCS_Douala_UTM_zone_32N,	22832)
-ValuePair(PCS_Egypt_1907_Red_Belt,	22992)
-ValuePair(PCS_Egypt_1907_Purple_Belt,	22993)
-ValuePair(PCS_Egypt_1907_Ext_Purple,	22994)
-ValuePair(PCS_ED50_UTM_zone_28N,	23028)
-ValuePair(PCS_ED50_UTM_zone_29N,	23029)
-ValuePair(PCS_ED50_UTM_zone_30N,	23030)
-ValuePair(PCS_ED50_UTM_zone_31N,	23031)
-ValuePair(PCS_ED50_UTM_zone_32N,	23032)
-ValuePair(PCS_ED50_UTM_zone_33N,	23033)
-ValuePair(PCS_ED50_UTM_zone_34N,	23034)
-ValuePair(PCS_ED50_UTM_zone_35N,	23035)
-ValuePair(PCS_ED50_UTM_zone_36N,	23036)
-ValuePair(PCS_ED50_UTM_zone_37N,	23037)
-ValuePair(PCS_ED50_UTM_zone_38N,	23038)
-ValuePair(PCS_Fahud_UTM_zone_39N,	23239)
-ValuePair(PCS_Fahud_UTM_zone_40N,	23240)
-ValuePair(PCS_Garoua_UTM_zone_33N,	23433)
-ValuePair(PCS_ID74_UTM_zone_46N,	23846)
-ValuePair(PCS_ID74_UTM_zone_47N,	23847)
-ValuePair(PCS_ID74_UTM_zone_48N,	23848)
-ValuePair(PCS_ID74_UTM_zone_49N,	23849)
-ValuePair(PCS_ID74_UTM_zone_50N,	23850)
-ValuePair(PCS_ID74_UTM_zone_51N,	23851)
-ValuePair(PCS_ID74_UTM_zone_52N,	23852)
-ValuePair(PCS_ID74_UTM_zone_53N,	23853)
-ValuePair(PCS_ID74_UTM_zone_46S,	23886)
-ValuePair(PCS_ID74_UTM_zone_47S,	23887)
-ValuePair(PCS_ID74_UTM_zone_48S,	23888)
-ValuePair(PCS_ID74_UTM_zone_49S,	23889)
-ValuePair(PCS_ID74_UTM_zone_50S,	23890)
-ValuePair(PCS_ID74_UTM_zone_51S,	23891)
-ValuePair(PCS_ID74_UTM_zone_52S,	23892)
-ValuePair(PCS_ID74_UTM_zone_53S,	23893)
-ValuePair(PCS_ID74_UTM_zone_54S,	23894)
-ValuePair(PCS_Indian_1954_UTM_47N,	23947)
-ValuePair(PCS_Indian_1954_UTM_48N,	23948)
-ValuePair(PCS_Indian_1975_UTM_47N,	24047)
-ValuePair(PCS_Indian_1975_UTM_48N,	24048)
-ValuePair(PCS_Jamaica_1875_Old_Grid,	24100)
-ValuePair(PCS_JAD69_Jamaica_Grid,	24200)
-ValuePair(PCS_Kalianpur_India_0,	24370)
-ValuePair(PCS_Kalianpur_India_I,	24371)
-ValuePair(PCS_Kalianpur_India_IIa,	24372)
-ValuePair(PCS_Kalianpur_India_IIIa,	24373)
-ValuePair(PCS_Kalianpur_India_IVa,	24374)
-ValuePair(PCS_Kalianpur_India_IIb,	24382)
-ValuePair(PCS_Kalianpur_India_IIIb,	24383)
-ValuePair(PCS_Kalianpur_India_IVb,	24384)
-ValuePair(PCS_Kertau_Singapore_Grid,	24500)
-ValuePair(PCS_Kertau_UTM_zone_47N,	24547)
-ValuePair(PCS_Kertau_UTM_zone_48N,	24548)
-ValuePair(PCS_La_Canoa_UTM_zone_20N,	24720)
-ValuePair(PCS_La_Canoa_UTM_zone_21N,	24721)
-ValuePair(PCS_PSAD56_UTM_zone_18N,	24818)
-ValuePair(PCS_PSAD56_UTM_zone_19N,	24819)
-ValuePair(PCS_PSAD56_UTM_zone_20N,	24820)
-ValuePair(PCS_PSAD56_UTM_zone_21N,	24821)
-ValuePair(PCS_PSAD56_UTM_zone_17S,	24877)
-ValuePair(PCS_PSAD56_UTM_zone_18S,	24878)
-ValuePair(PCS_PSAD56_UTM_zone_19S,	24879)
-ValuePair(PCS_PSAD56_UTM_zone_20S,	24880)
-ValuePair(PCS_PSAD56_Peru_west_zone,	24891)
-ValuePair(PCS_PSAD56_Peru_central,	24892)
-ValuePair(PCS_PSAD56_Peru_east_zone,	24893)
-ValuePair(PCS_Leigon_Ghana_Grid,	25000)
-ValuePair(PCS_Lome_UTM_zone_31N,	25231)
-ValuePair(PCS_Luzon_Philippines_I,	25391)
-ValuePair(PCS_Luzon_Philippines_II,	25392)
-ValuePair(PCS_Luzon_Philippines_III,	25393)
-ValuePair(PCS_Luzon_Philippines_IV,	25394)
-ValuePair(PCS_Luzon_Philippines_V,	25395)
-ValuePair(PCS_Makassar_NEIEZ,	25700)
-ValuePair(PCS_Malongo_1987_UTM_32S,	25932)
-ValuePair(PCS_Merchich_Nord_Maroc,	26191)
-ValuePair(PCS_Merchich_Sud_Maroc,	26192)
-ValuePair(PCS_Merchich_Sahara,	26193)
-ValuePair(PCS_Massawa_UTM_zone_37N,	26237)
-ValuePair(PCS_Minna_UTM_zone_31N,	26331)
-ValuePair(PCS_Minna_UTM_zone_32N,	26332)
-ValuePair(PCS_Minna_Nigeria_West,	26391)
-ValuePair(PCS_Minna_Nigeria_Mid_Belt,	26392)
-ValuePair(PCS_Minna_Nigeria_East,	26393)
-ValuePair(PCS_Mhast_UTM_zone_32S,	26432)
-ValuePair(PCS_Monte_Mario_Italy_1,	26591)
-ValuePair(PCS_Monte_Mario_Italy_2,	26592)
-ValuePair(PCS_M_poraloko_UTM_32N,	26632)
-ValuePair(PCS_M_poraloko_UTM_32S,	26692)
-ValuePair(PCS_NAD27_UTM_zone_3N,	26703)
-ValuePair(PCS_NAD27_UTM_zone_4N,	26704)
-ValuePair(PCS_NAD27_UTM_zone_5N,	26705)
-ValuePair(PCS_NAD27_UTM_zone_6N,	26706)
-ValuePair(PCS_NAD27_UTM_zone_7N,	26707)
-ValuePair(PCS_NAD27_UTM_zone_8N,	26708)
-ValuePair(PCS_NAD27_UTM_zone_9N,	26709)
-ValuePair(PCS_NAD27_UTM_zone_10N,	26710)
-ValuePair(PCS_NAD27_UTM_zone_11N,	26711)
-ValuePair(PCS_NAD27_UTM_zone_12N,	26712)
-ValuePair(PCS_NAD27_UTM_zone_13N,	26713)
-ValuePair(PCS_NAD27_UTM_zone_14N,	26714)
-ValuePair(PCS_NAD27_UTM_zone_15N,	26715)
-ValuePair(PCS_NAD27_UTM_zone_16N,	26716)
-ValuePair(PCS_NAD27_UTM_zone_17N,	26717)
-ValuePair(PCS_NAD27_UTM_zone_18N,	26718)
-ValuePair(PCS_NAD27_UTM_zone_19N,	26719)
-ValuePair(PCS_NAD27_UTM_zone_20N,	26720)
-ValuePair(PCS_NAD27_UTM_zone_21N,	26721)
-ValuePair(PCS_NAD27_UTM_zone_22N,	26722)
-ValuePair(PCS_NAD27_Alabama_East,	26729)
-ValuePair(PCS_NAD27_Alabama_West,	26730)
-ValuePair(PCS_NAD27_Alaska_zone_1,	26731)
-ValuePair(PCS_NAD27_Alaska_zone_2,	26732)
-ValuePair(PCS_NAD27_Alaska_zone_3,	26733)
-ValuePair(PCS_NAD27_Alaska_zone_4,	26734)
-ValuePair(PCS_NAD27_Alaska_zone_5,	26735)
-ValuePair(PCS_NAD27_Alaska_zone_6,	26736)
-ValuePair(PCS_NAD27_Alaska_zone_7,	26737)
-ValuePair(PCS_NAD27_Alaska_zone_8,	26738)
-ValuePair(PCS_NAD27_Alaska_zone_9,	26739)
-ValuePair(PCS_NAD27_Alaska_zone_10,	26740)
-ValuePair(PCS_NAD27_California_I,	26741)
-ValuePair(PCS_NAD27_California_II,	26742)
-ValuePair(PCS_NAD27_California_III,	26743)
-ValuePair(PCS_NAD27_California_IV,	26744)
-ValuePair(PCS_NAD27_California_V,	26745)
-ValuePair(PCS_NAD27_California_VI,	26746)
-ValuePair(PCS_NAD27_California_VII,	26747)
-ValuePair(PCS_NAD27_Arizona_East,	26748)
-ValuePair(PCS_NAD27_Arizona_Central,	26749)
-ValuePair(PCS_NAD27_Arizona_West,	26750)
-ValuePair(PCS_NAD27_Arkansas_North,	26751)
-ValuePair(PCS_NAD27_Arkansas_South,	26752)
-ValuePair(PCS_NAD27_Colorado_North,	26753)
-ValuePair(PCS_NAD27_Colorado_Central,	26754)
-ValuePair(PCS_NAD27_Colorado_South,	26755)
-ValuePair(PCS_NAD27_Connecticut,	26756)
-ValuePair(PCS_NAD27_Delaware,	26757)
-ValuePair(PCS_NAD27_Florida_East,	26758)
-ValuePair(PCS_NAD27_Florida_West,	26759)
-ValuePair(PCS_NAD27_Florida_North,	26760)
-ValuePair(PCS_NAD27_Hawaii_zone_1,	26761)
-ValuePair(PCS_NAD27_Hawaii_zone_2,	26762)
-ValuePair(PCS_NAD27_Hawaii_zone_3,	26763)
-ValuePair(PCS_NAD27_Hawaii_zone_4,	26764)
-ValuePair(PCS_NAD27_Hawaii_zone_5,	26765)
-ValuePair(PCS_NAD27_Georgia_East,	26766)
-ValuePair(PCS_NAD27_Georgia_West,	26767)
-ValuePair(PCS_NAD27_Idaho_East,	26768)
-ValuePair(PCS_NAD27_Idaho_Central,	26769)
-ValuePair(PCS_NAD27_Idaho_West,	26770)
-ValuePair(PCS_NAD27_Illinois_East,	26771)
-ValuePair(PCS_NAD27_Illinois_West,	26772)
-ValuePair(PCS_NAD27_Indiana_East,	26773)
-ValuePair(PCS_NAD27_BLM_14N_feet,	26774)
-ValuePair(PCS_NAD27_Indiana_West,	26774)
-ValuePair(PCS_NAD27_BLM_15N_feet,	26775)
-ValuePair(PCS_NAD27_Iowa_North,	26775)
-ValuePair(PCS_NAD27_BLM_16N_feet,	26776)
-ValuePair(PCS_NAD27_Iowa_South,	26776)
-ValuePair(PCS_NAD27_BLM_17N_feet,	26777)
-ValuePair(PCS_NAD27_Kansas_North,	26777)
-ValuePair(PCS_NAD27_Kansas_South,	26778)
-ValuePair(PCS_NAD27_Kentucky_North,	26779)
-ValuePair(PCS_NAD27_Kentucky_South,	26780)
-ValuePair(PCS_NAD27_Louisiana_North,	26781)
-ValuePair(PCS_NAD27_Louisiana_South,	26782)
-ValuePair(PCS_NAD27_Maine_East,	26783)
-ValuePair(PCS_NAD27_Maine_West,	26784)
-ValuePair(PCS_NAD27_Maryland,	26785)
-ValuePair(PCS_NAD27_Massachusetts,	26786)
-ValuePair(PCS_NAD27_Massachusetts_Is,	26787)
-ValuePair(PCS_NAD27_Michigan_North,	26788)
-ValuePair(PCS_NAD27_Michigan_Central,	26789)
-ValuePair(PCS_NAD27_Michigan_South,	26790)
-ValuePair(PCS_NAD27_Minnesota_North,	26791)
-ValuePair(PCS_NAD27_Minnesota_Cent,	26792)
-ValuePair(PCS_NAD27_Minnesota_South,	26793)
-ValuePair(PCS_NAD27_Mississippi_East,	26794)
-ValuePair(PCS_NAD27_Mississippi_West,	26795)
-ValuePair(PCS_NAD27_Missouri_East,	26796)
-ValuePair(PCS_NAD27_Missouri_Central,	26797)
-ValuePair(PCS_NAD27_Missouri_West,	26798)
-ValuePair(PCS_NAD_Michigan_Michigan_East,	26801)
-ValuePair(PCS_NAD_Michigan_Michigan_Old_Central,	26802)
-ValuePair(PCS_NAD_Michigan_Michigan_West,	26803)
-ValuePair(PCS_NAD83_UTM_zone_3N,	26903)
-ValuePair(PCS_NAD83_UTM_zone_4N,	26904)
-ValuePair(PCS_NAD83_UTM_zone_5N,	26905)
-ValuePair(PCS_NAD83_UTM_zone_6N,	26906)
-ValuePair(PCS_NAD83_UTM_zone_7N,	26907)
-ValuePair(PCS_NAD83_UTM_zone_8N,	26908)
-ValuePair(PCS_NAD83_UTM_zone_9N,	26909)
-ValuePair(PCS_NAD83_UTM_zone_10N,	26910)
-ValuePair(PCS_NAD83_UTM_zone_11N,	26911)
-ValuePair(PCS_NAD83_UTM_zone_12N,	26912)
-ValuePair(PCS_NAD83_UTM_zone_13N,	26913)
-ValuePair(PCS_NAD83_UTM_zone_14N,	26914)
-ValuePair(PCS_NAD83_UTM_zone_15N,	26915)
-ValuePair(PCS_NAD83_UTM_zone_16N,	26916)
-ValuePair(PCS_NAD83_UTM_zone_17N,	26917)
-ValuePair(PCS_NAD83_UTM_zone_18N,	26918)
-ValuePair(PCS_NAD83_UTM_zone_19N,	26919)
-ValuePair(PCS_NAD83_UTM_zone_20N,	26920)
-ValuePair(PCS_NAD83_UTM_zone_21N,	26921)
-ValuePair(PCS_NAD83_UTM_zone_22N,	26922)
-ValuePair(PCS_NAD83_UTM_zone_23N,	26923)
-ValuePair(PCS_NAD83_Alabama_East,	26929)
-ValuePair(PCS_NAD83_Alabama_West,	26930)
-ValuePair(PCS_NAD83_Alaska_zone_1,	26931)
-ValuePair(PCS_NAD83_Alaska_zone_2,	26932)
-ValuePair(PCS_NAD83_Alaska_zone_3,	26933)
-ValuePair(PCS_NAD83_Alaska_zone_4,	26934)
-ValuePair(PCS_NAD83_Alaska_zone_5,	26935)
-ValuePair(PCS_NAD83_Alaska_zone_6,	26936)
-ValuePair(PCS_NAD83_Alaska_zone_7,	26937)
-ValuePair(PCS_NAD83_Alaska_zone_8,	26938)
-ValuePair(PCS_NAD83_Alaska_zone_9,	26939)
-ValuePair(PCS_NAD83_Alaska_zone_10,	26940)
-ValuePair(PCS_NAD83_California_1,	26941)
-ValuePair(PCS_NAD83_California_2,	26942)
-ValuePair(PCS_NAD83_California_3,	26943)
-ValuePair(PCS_NAD83_California_4,	26944)
-ValuePair(PCS_NAD83_California_5,	26945)
-ValuePair(PCS_NAD83_California_6,	26946)
-ValuePair(PCS_NAD83_Arizona_East,	26948)
-ValuePair(PCS_NAD83_Arizona_Central,	26949)
-ValuePair(PCS_NAD83_Arizona_West,	26950)
-ValuePair(PCS_NAD83_Arkansas_North,	26951)
-ValuePair(PCS_NAD83_Arkansas_South,	26952)
-ValuePair(PCS_NAD83_Colorado_North,	26953)
-ValuePair(PCS_NAD83_Colorado_Central,	26954)
-ValuePair(PCS_NAD83_Colorado_South,	26955)
-ValuePair(PCS_NAD83_Connecticut,	26956)
-ValuePair(PCS_NAD83_Delaware,	26957)
-ValuePair(PCS_NAD83_Florida_East,	26958)
-ValuePair(PCS_NAD83_Florida_West,	26959)
-ValuePair(PCS_NAD83_Florida_North,	26960)
-ValuePair(PCS_NAD83_Hawaii_zone_1,	26961)
-ValuePair(PCS_NAD83_Hawaii_zone_2,	26962)
-ValuePair(PCS_NAD83_Hawaii_zone_3,	26963)
-ValuePair(PCS_NAD83_Hawaii_zone_4,	26964)
-ValuePair(PCS_NAD83_Hawaii_zone_5,	26965)
-ValuePair(PCS_NAD83_Georgia_East,	26966)
-ValuePair(PCS_NAD83_Georgia_West,	26967)
-ValuePair(PCS_NAD83_Idaho_East,	26968)
-ValuePair(PCS_NAD83_Idaho_Central,	26969)
-ValuePair(PCS_NAD83_Idaho_West,	26970)
-ValuePair(PCS_NAD83_Illinois_East,	26971)
-ValuePair(PCS_NAD83_Illinois_West,	26972)
-ValuePair(PCS_NAD83_Indiana_East,	26973)
-ValuePair(PCS_NAD83_Indiana_West,	26974)
-ValuePair(PCS_NAD83_Iowa_North,	26975)
-ValuePair(PCS_NAD83_Iowa_South,	26976)
-ValuePair(PCS_NAD83_Kansas_North,	26977)
-ValuePair(PCS_NAD83_Kansas_South,	26978)
-ValuePair(PCS_NAD83_Kentucky_North,	2205)
-ValuePair(PCS_NAD83_Kentucky_South,	26980)
-ValuePair(PCS_NAD83_Louisiana_North,	26981)
-ValuePair(PCS_NAD83_Louisiana_South,	26982)
-ValuePair(PCS_NAD83_Maine_East,	26983)
-ValuePair(PCS_NAD83_Maine_West,	26984)
-ValuePair(PCS_NAD83_Maryland,	26985)
-ValuePair(PCS_NAD83_Massachusetts,	26986)
-ValuePair(PCS_NAD83_Massachusetts_Is,	26987)
-ValuePair(PCS_NAD83_Michigan_North,	26988)
-ValuePair(PCS_NAD83_Michigan_Central,	26989)
-ValuePair(PCS_NAD83_Michigan_South,	26990)
-ValuePair(PCS_NAD83_Minnesota_North,	26991)
-ValuePair(PCS_NAD83_Minnesota_Cent,	26992)
-ValuePair(PCS_NAD83_Minnesota_South,	26993)
-ValuePair(PCS_NAD83_Mississippi_East,	26994)
-ValuePair(PCS_NAD83_Mississippi_West,	26995)
-ValuePair(PCS_NAD83_Missouri_East,	26996)
-ValuePair(PCS_NAD83_Missouri_Central,	26997)
-ValuePair(PCS_NAD83_Missouri_West,	26998)
-ValuePair(PCS_Nahrwan_1967_UTM_38N,	27038)
-ValuePair(PCS_Nahrwan_1967_UTM_39N,	27039)
-ValuePair(PCS_Nahrwan_1967_UTM_40N,	27040)
-ValuePair(PCS_Naparima_UTM_20N,	27120)
-ValuePair(PCS_GD49_NZ_Map_Grid,	27200)
-ValuePair(PCS_GD49_North_Island_Grid,	27291)
-ValuePair(PCS_GD49_South_Island_Grid,	27292)
-ValuePair(PCS_Datum_73_UTM_zone_29N,	27429)
-ValuePair(PCS_ATF_Nord_de_Guerre,	27500)
-ValuePair(PCS_NTF_France_I,	27581)
-ValuePair(PCS_NTF_France_II,	27582)
-ValuePair(PCS_NTF_France_III,	27583)
-ValuePair(PCS_NTF_Nord_France,	27591)
-ValuePair(PCS_NTF_Centre_France,	27592)
-ValuePair(PCS_NTF_Sud_France,	27593)
-ValuePair(PCS_British_National_Grid,	27700)
-ValuePair(PCS_Point_Noire_UTM_32S,	28232)
-ValuePair(PCS_GDA94_MGA_zone_48,	28348)
-ValuePair(PCS_GDA94_MGA_zone_49,	28349)
-ValuePair(PCS_GDA94_MGA_zone_50,	28350)
-ValuePair(PCS_GDA94_MGA_zone_51,	28351)
-ValuePair(PCS_GDA94_MGA_zone_52,	28352)
-ValuePair(PCS_GDA94_MGA_zone_53,	28353)
-ValuePair(PCS_GDA94_MGA_zone_54,	28354)
-ValuePair(PCS_GDA94_MGA_zone_55,	28355)
-ValuePair(PCS_GDA94_MGA_zone_56,	28356)
-ValuePair(PCS_GDA94_MGA_zone_57,	28357)
-ValuePair(PCS_GDA94_MGA_zone_58,	28358)
-ValuePair(PCS_Pulkovo_Gauss_zone_4,	28404)
-ValuePair(PCS_Pulkovo_Gauss_zone_5,	28405)
-ValuePair(PCS_Pulkovo_Gauss_zone_6,	28406)
-ValuePair(PCS_Pulkovo_Gauss_zone_7,	28407)
-ValuePair(PCS_Pulkovo_Gauss_zone_8,	28408)
-ValuePair(PCS_Pulkovo_Gauss_zone_9,	28409)
-ValuePair(PCS_Pulkovo_Gauss_zone_10,	28410)
-ValuePair(PCS_Pulkovo_Gauss_zone_11,	28411)
-ValuePair(PCS_Pulkovo_Gauss_zone_12,	28412)
-ValuePair(PCS_Pulkovo_Gauss_zone_13,	28413)
-ValuePair(PCS_Pulkovo_Gauss_zone_14,	28414)
-ValuePair(PCS_Pulkovo_Gauss_zone_15,	28415)
-ValuePair(PCS_Pulkovo_Gauss_zone_16,	28416)
-ValuePair(PCS_Pulkovo_Gauss_zone_17,	28417)
-ValuePair(PCS_Pulkovo_Gauss_zone_18,	28418)
-ValuePair(PCS_Pulkovo_Gauss_zone_19,	28419)
-ValuePair(PCS_Pulkovo_Gauss_zone_20,	28420)
-ValuePair(PCS_Pulkovo_Gauss_zone_21,	28421)
-ValuePair(PCS_Pulkovo_Gauss_zone_22,	28422)
-ValuePair(PCS_Pulkovo_Gauss_zone_23,	28423)
-ValuePair(PCS_Pulkovo_Gauss_zone_24,	28424)
-ValuePair(PCS_Pulkovo_Gauss_zone_25,	28425)
-ValuePair(PCS_Pulkovo_Gauss_zone_26,	28426)
-ValuePair(PCS_Pulkovo_Gauss_zone_27,	28427)
-ValuePair(PCS_Pulkovo_Gauss_zone_28,	28428)
-ValuePair(PCS_Pulkovo_Gauss_zone_29,	28429)
-ValuePair(PCS_Pulkovo_Gauss_zone_30,	28430)
-ValuePair(PCS_Pulkovo_Gauss_zone_31,	28431)
-ValuePair(PCS_Pulkovo_Gauss_zone_32,	28432)
-ValuePair(PCS_Pulkovo_Gauss_4N,	28464)
-ValuePair(PCS_Pulkovo_Gauss_5N,	28465)
-ValuePair(PCS_Pulkovo_Gauss_6N,	28466)
-ValuePair(PCS_Pulkovo_Gauss_7N,	28467)
-ValuePair(PCS_Pulkovo_Gauss_8N,	28468)
-ValuePair(PCS_Pulkovo_Gauss_9N,	28469)
-ValuePair(PCS_Pulkovo_Gauss_10N,	28470)
-ValuePair(PCS_Pulkovo_Gauss_11N,	28471)
-ValuePair(PCS_Pulkovo_Gauss_12N,	28472)
-ValuePair(PCS_Pulkovo_Gauss_13N,	28473)
-ValuePair(PCS_Pulkovo_Gauss_14N,	28474)
-ValuePair(PCS_Pulkovo_Gauss_15N,	28475)
-ValuePair(PCS_Pulkovo_Gauss_16N,	28476)
-ValuePair(PCS_Pulkovo_Gauss_17N,	28477)
-ValuePair(PCS_Pulkovo_Gauss_18N,	28478)
-ValuePair(PCS_Pulkovo_Gauss_19N,	28479)
-ValuePair(PCS_Pulkovo_Gauss_20N,	28480)
-ValuePair(PCS_Pulkovo_Gauss_21N,	28481)
-ValuePair(PCS_Pulkovo_Gauss_22N,	28482)
-ValuePair(PCS_Pulkovo_Gauss_23N,	28483)
-ValuePair(PCS_Pulkovo_Gauss_24N,	28484)
-ValuePair(PCS_Pulkovo_Gauss_25N,	28485)
-ValuePair(PCS_Pulkovo_Gauss_26N,	28486)
-ValuePair(PCS_Pulkovo_Gauss_27N,	28487)
-ValuePair(PCS_Pulkovo_Gauss_28N,	28488)
-ValuePair(PCS_Pulkovo_Gauss_29N,	28489)
-ValuePair(PCS_Pulkovo_Gauss_30N,	28490)
-ValuePair(PCS_Pulkovo_Gauss_31N,	28491)
-ValuePair(PCS_Pulkovo_Gauss_32N,	28492)
-ValuePair(PCS_Qatar_National_Grid,	28600)
-ValuePair(PCS_RD_Netherlands_Old,	28991)
-ValuePair(PCS_RD_Netherlands_New,	28992)
-ValuePair(PCS_SAD69_UTM_zone_18N,	29118)
-ValuePair(PCS_SAD69_UTM_zone_19N,	29119)
-ValuePair(PCS_SAD69_UTM_zone_20N,	29120)
-ValuePair(PCS_SAD69_UTM_zone_21N,	29121)
-ValuePair(PCS_SAD69_UTM_zone_22N,	29122)
-ValuePair(PCS_SAD69_UTM_zone_17S,	29177)
-ValuePair(PCS_SAD69_UTM_zone_18S,	29178)
-ValuePair(PCS_SAD69_UTM_zone_19S,	29179)
-ValuePair(PCS_SAD69_UTM_zone_20S,	29180)
-ValuePair(PCS_SAD69_UTM_zone_21S,	29181)
-ValuePair(PCS_SAD69_UTM_zone_22S,	29182)
-ValuePair(PCS_SAD69_UTM_zone_23S,	29183)
-ValuePair(PCS_SAD69_UTM_zone_24S,	29184)
-ValuePair(PCS_SAD69_UTM_zone_25S,	29185)
-ValuePair(PCS_Sapper_Hill_UTM_20S,	29220)
-ValuePair(PCS_Sapper_Hill_UTM_21S,	29221)
-ValuePair(PCS_Schwarzeck_UTM_33S,	29333)
-ValuePair(PCS_Sudan_UTM_zone_35N,	29635)
-ValuePair(PCS_Sudan_UTM_zone_36N,	29636)
-ValuePair(PCS_Tananarive_Laborde,	29700)
-ValuePair(PCS_Tananarive_UTM_38S,	29738)
-ValuePair(PCS_Tananarive_UTM_39S,	29739)
-ValuePair(PCS_Timbalai_1948_Borneo,	29800)
-ValuePair(PCS_Timbalai_1948_UTM_49N,	29849)
-ValuePair(PCS_Timbalai_1948_UTM_50N,	29850)
-ValuePair(PCS_TM65_Irish_Nat_Grid,	29900)
-ValuePair(PCS_Trinidad_1903_Trinidad,	30200)
-ValuePair(PCS_TC_1948_UTM_zone_39N,	30339)
-ValuePair(PCS_TC_1948_UTM_zone_40N,	30340)
-ValuePair(PCS_Voirol_N_Algerie_ancien,	30491)
-ValuePair(PCS_Voirol_S_Algerie_ancien,	30492)
-ValuePair(PCS_Voirol_Unifie_N_Algerie,	30591)
-ValuePair(PCS_Voirol_Unifie_S_Algerie,	30592)
-ValuePair(PCS_Bern_1938_Swiss_New,	30600)
-ValuePair(PCS_Nord_Sahara_UTM_29N,	30729)
-ValuePair(PCS_Nord_Sahara_UTM_30N,	30730)
-ValuePair(PCS_Nord_Sahara_UTM_31N,	30731)
-ValuePair(PCS_Nord_Sahara_UTM_32N,	30732)
-ValuePair(PCS_Yoff_UTM_zone_28N,	31028)
-ValuePair(PCS_Zanderij_UTM_zone_21N,	31121)
-ValuePair(PCS_MGI_Austria_West,	31291)
-ValuePair(PCS_MGI_Austria_Central,	31292)
-ValuePair(PCS_MGI_Austria_East,	31293)
-ValuePair(PCS_Belge_Lambert_72,	31300)
-ValuePair(PCS_DHDN_Germany_zone_1,	31491)
-ValuePair(PCS_DHDN_Germany_zone_2,	31492)
-ValuePair(PCS_DHDN_Germany_zone_3,	31493)
-ValuePair(PCS_DHDN_Germany_zone_4,	31494)
-ValuePair(PCS_DHDN_Germany_zone_5,	31495)
-ValuePair(PCS_NAD27_Montana_North,	32001)
-ValuePair(PCS_NAD27_Montana_Central,	32002)
-ValuePair(PCS_NAD27_Montana_South,	32003)
-ValuePair(PCS_NAD27_Nebraska_North,	32005)
-ValuePair(PCS_NAD27_Nebraska_South,	32006)
-ValuePair(PCS_NAD27_Nevada_East,	32007)
-ValuePair(PCS_NAD27_Nevada_Central,	32008)
-ValuePair(PCS_NAD27_Nevada_West,	32009)
-ValuePair(PCS_NAD27_New_Hampshire,	32010)
-ValuePair(PCS_NAD27_New_Jersey,	32011)
-ValuePair(PCS_NAD27_New_Mexico_East,	32012)
-ValuePair(PCS_NAD27_New_Mexico_Cent,	32013)
-ValuePair(PCS_NAD27_New_Mexico_West,	32014)
-ValuePair(PCS_NAD27_New_York_East,	32015)
-ValuePair(PCS_NAD27_New_York_Central,	32016)
-ValuePair(PCS_NAD27_New_York_West,	32017)
-ValuePair(PCS_NAD27_New_York_Long_Is,	32018)
-ValuePair(PCS_NAD27_North_Carolina,	32019)
-ValuePair(PCS_NAD27_North_Dakota_N,	32020)
-ValuePair(PCS_NAD27_North_Dakota_S,	32021)
-ValuePair(PCS_NAD27_Ohio_North,	32022)
-ValuePair(PCS_NAD27_Ohio_South,	32023)
-ValuePair(PCS_NAD27_Oklahoma_North,	32024)
-ValuePair(PCS_NAD27_Oklahoma_South,	32025)
-ValuePair(PCS_NAD27_Oregon_North,	32026)
-ValuePair(PCS_NAD27_Oregon_South,	32027)
-ValuePair(PCS_NAD27_Pennsylvania_N,	32028)
-ValuePair(PCS_NAD27_Pennsylvania_S,	32029)
-ValuePair(PCS_NAD27_Rhode_Island,	32030)
-ValuePair(PCS_NAD27_South_Carolina_N,	32031)
-ValuePair(PCS_NAD27_South_Carolina_S,	32033)
-ValuePair(PCS_NAD27_South_Dakota_N,	32034)
-ValuePair(PCS_NAD27_South_Dakota_S,	32035)
-ValuePair(PCS_NAD27_Tennessee,		2204)
-ValuePair(PCS_NAD27_Texas_North,	32037)
-ValuePair(PCS_NAD27_Texas_North_Cen,	32038)
-ValuePair(PCS_NAD27_Texas_Central,	32039)
-ValuePair(PCS_NAD27_Texas_South_Cen,	32040)
-ValuePair(PCS_NAD27_Texas_South,	32041)
-ValuePair(PCS_NAD27_Utah_North,	32042)
-ValuePair(PCS_NAD27_Utah_Central,	32043)
-ValuePair(PCS_NAD27_Utah_South,	32044)
-ValuePair(PCS_NAD27_Vermont,	32045)
-ValuePair(PCS_NAD27_Virginia_North,	32046)
-ValuePair(PCS_NAD27_Virginia_South,	32047)
-ValuePair(PCS_NAD27_Washington_North,	32048)
-ValuePair(PCS_NAD27_Washington_South,	32049)
-ValuePair(PCS_NAD27_West_Virginia_N,	32050)
-ValuePair(PCS_NAD27_West_Virginia_S,	32051)
-ValuePair(PCS_NAD27_Wisconsin_North,	32052)
-ValuePair(PCS_NAD27_Wisconsin_Cen,	32053)
-ValuePair(PCS_NAD27_Wisconsin_South,	32054)
-ValuePair(PCS_NAD27_Wyoming_East,	32055)
-ValuePair(PCS_NAD27_Wyoming_E_Cen,	32056)
-ValuePair(PCS_NAD27_Wyoming_W_Cen,	32057)
-ValuePair(PCS_NAD27_Wyoming_West,	32058)
-ValuePair(PCS_NAD27_Puerto_Rico,	32059)
-ValuePair(PCS_NAD27_St_Croix,	32060)
-ValuePair(PCS_NAD83_Montana,	32100)
-ValuePair(PCS_NAD83_Nebraska,	32104)
-ValuePair(PCS_NAD83_Nevada_East,	32107)
-ValuePair(PCS_NAD83_Nevada_Central,	32108)
-ValuePair(PCS_NAD83_Nevada_West,	32109)
-ValuePair(PCS_NAD83_New_Hampshire,	32110)
-ValuePair(PCS_NAD83_New_Jersey,	32111)
-ValuePair(PCS_NAD83_New_Mexico_East,	32112)
-ValuePair(PCS_NAD83_New_Mexico_Cent,	32113)
-ValuePair(PCS_NAD83_New_Mexico_West,	32114)
-ValuePair(PCS_NAD83_New_York_East,	32115)
-ValuePair(PCS_NAD83_New_York_Central,	32116)
-ValuePair(PCS_NAD83_New_York_West,	32117)
-ValuePair(PCS_NAD83_New_York_Long_Is,	32118)
-ValuePair(PCS_NAD83_North_Carolina,	32119)
-ValuePair(PCS_NAD83_North_Dakota_N,	32120)
-ValuePair(PCS_NAD83_North_Dakota_S,	32121)
-ValuePair(PCS_NAD83_Ohio_North,	32122)
-ValuePair(PCS_NAD83_Ohio_South,	32123)
-ValuePair(PCS_NAD83_Oklahoma_North,	32124)
-ValuePair(PCS_NAD83_Oklahoma_South,	32125)
-ValuePair(PCS_NAD83_Oregon_North,	32126)
-ValuePair(PCS_NAD83_Oregon_South,	32127)
-ValuePair(PCS_NAD83_Pennsylvania_N,	32128)
-ValuePair(PCS_NAD83_Pennsylvania_S,	32129)
-ValuePair(PCS_NAD83_Rhode_Island,	32130)
-ValuePair(PCS_NAD83_South_Carolina,	32133)
-ValuePair(PCS_NAD83_South_Dakota_N,	32134)
-ValuePair(PCS_NAD83_South_Dakota_S,	32135)
-ValuePair(PCS_NAD83_Tennessee,	32136)
-ValuePair(PCS_NAD83_Texas_North,	32137)
-ValuePair(PCS_NAD83_Texas_North_Cen,	32138)
-ValuePair(PCS_NAD83_Texas_Central,	32139)
-ValuePair(PCS_NAD83_Texas_South_Cen,	32140)
-ValuePair(PCS_NAD83_Texas_South,	32141)
-ValuePair(PCS_NAD83_Utah_North,	32142)
-ValuePair(PCS_NAD83_Utah_Central,	32143)
-ValuePair(PCS_NAD83_Utah_South,	32144)
-ValuePair(PCS_NAD83_Vermont,	32145)
-ValuePair(PCS_NAD83_Virginia_North,	32146)
-ValuePair(PCS_NAD83_Virginia_South,	32147)
-ValuePair(PCS_NAD83_Washington_North,	32148)
-ValuePair(PCS_NAD83_Washington_South,	32149)
-ValuePair(PCS_NAD83_West_Virginia_N,	32150)
-ValuePair(PCS_NAD83_West_Virginia_S,	32151)
-ValuePair(PCS_NAD83_Wisconsin_North,	32152)
-ValuePair(PCS_NAD83_Wisconsin_Cen,	32153)
-ValuePair(PCS_NAD83_Wisconsin_South,	32154)
-ValuePair(PCS_NAD83_Wyoming_East,	32155)
-ValuePair(PCS_NAD83_Wyoming_E_Cen,	32156)
-ValuePair(PCS_NAD83_Wyoming_W_Cen,	32157)
-ValuePair(PCS_NAD83_Wyoming_West,	32158)
-ValuePair(PCS_NAD83_Puerto_Rico_Virgin_Is,	32161)
-ValuePair(PCS_WGS72_UTM_zone_1N,	32201)
-ValuePair(PCS_WGS72_UTM_zone_2N,	32202)
-ValuePair(PCS_WGS72_UTM_zone_3N,	32203)
-ValuePair(PCS_WGS72_UTM_zone_4N,	32204)
-ValuePair(PCS_WGS72_UTM_zone_5N,	32205)
-ValuePair(PCS_WGS72_UTM_zone_6N,	32206)
-ValuePair(PCS_WGS72_UTM_zone_7N,	32207)
-ValuePair(PCS_WGS72_UTM_zone_8N,	32208)
-ValuePair(PCS_WGS72_UTM_zone_9N,	32209)
-ValuePair(PCS_WGS72_UTM_zone_10N,	32210)
-ValuePair(PCS_WGS72_UTM_zone_11N,	32211)
-ValuePair(PCS_WGS72_UTM_zone_12N,	32212)
-ValuePair(PCS_WGS72_UTM_zone_13N,	32213)
-ValuePair(PCS_WGS72_UTM_zone_14N,	32214)
-ValuePair(PCS_WGS72_UTM_zone_15N,	32215)
-ValuePair(PCS_WGS72_UTM_zone_16N,	32216)
-ValuePair(PCS_WGS72_UTM_zone_17N,	32217)
-ValuePair(PCS_WGS72_UTM_zone_18N,	32218)
-ValuePair(PCS_WGS72_UTM_zone_19N,	32219)
-ValuePair(PCS_WGS72_UTM_zone_20N,	32220)
-ValuePair(PCS_WGS72_UTM_zone_21N,	32221)
-ValuePair(PCS_WGS72_UTM_zone_22N,	32222)
-ValuePair(PCS_WGS72_UTM_zone_23N,	32223)
-ValuePair(PCS_WGS72_UTM_zone_24N,	32224)
-ValuePair(PCS_WGS72_UTM_zone_25N,	32225)
-ValuePair(PCS_WGS72_UTM_zone_26N,	32226)
-ValuePair(PCS_WGS72_UTM_zone_27N,	32227)
-ValuePair(PCS_WGS72_UTM_zone_28N,	32228)
-ValuePair(PCS_WGS72_UTM_zone_29N,	32229)
-ValuePair(PCS_WGS72_UTM_zone_30N,	32230)
-ValuePair(PCS_WGS72_UTM_zone_31N,	32231)
-ValuePair(PCS_WGS72_UTM_zone_32N,	32232)
-ValuePair(PCS_WGS72_UTM_zone_33N,	32233)
-ValuePair(PCS_WGS72_UTM_zone_34N,	32234)
-ValuePair(PCS_WGS72_UTM_zone_35N,	32235)
-ValuePair(PCS_WGS72_UTM_zone_36N,	32236)
-ValuePair(PCS_WGS72_UTM_zone_37N,	32237)
-ValuePair(PCS_WGS72_UTM_zone_38N,	32238)
-ValuePair(PCS_WGS72_UTM_zone_39N,	32239)
-ValuePair(PCS_WGS72_UTM_zone_40N,	32240)
-ValuePair(PCS_WGS72_UTM_zone_41N,	32241)
-ValuePair(PCS_WGS72_UTM_zone_42N,	32242)
-ValuePair(PCS_WGS72_UTM_zone_43N,	32243)
-ValuePair(PCS_WGS72_UTM_zone_44N,	32244)
-ValuePair(PCS_WGS72_UTM_zone_45N,	32245)
-ValuePair(PCS_WGS72_UTM_zone_46N,	32246)
-ValuePair(PCS_WGS72_UTM_zone_47N,	32247)
-ValuePair(PCS_WGS72_UTM_zone_48N,	32248)
-ValuePair(PCS_WGS72_UTM_zone_49N,	32249)
-ValuePair(PCS_WGS72_UTM_zone_50N,	32250)
-ValuePair(PCS_WGS72_UTM_zone_51N,	32251)
-ValuePair(PCS_WGS72_UTM_zone_52N,	32252)
-ValuePair(PCS_WGS72_UTM_zone_53N,	32253)
-ValuePair(PCS_WGS72_UTM_zone_54N,	32254)
-ValuePair(PCS_WGS72_UTM_zone_55N,	32255)
-ValuePair(PCS_WGS72_UTM_zone_56N,	32256)
-ValuePair(PCS_WGS72_UTM_zone_57N,	32257)
-ValuePair(PCS_WGS72_UTM_zone_58N,	32258)
-ValuePair(PCS_WGS72_UTM_zone_59N,	32259)
-ValuePair(PCS_WGS72_UTM_zone_60N,	32260)
-ValuePair(PCS_WGS72_UTM_zone_1S,	32301)
-ValuePair(PCS_WGS72_UTM_zone_2S,	32302)
-ValuePair(PCS_WGS72_UTM_zone_3S,	32303)
-ValuePair(PCS_WGS72_UTM_zone_4S,	32304)
-ValuePair(PCS_WGS72_UTM_zone_5S,	32305)
-ValuePair(PCS_WGS72_UTM_zone_6S,	32306)
-ValuePair(PCS_WGS72_UTM_zone_7S,	32307)
-ValuePair(PCS_WGS72_UTM_zone_8S,	32308)
-ValuePair(PCS_WGS72_UTM_zone_9S,	32309)
-ValuePair(PCS_WGS72_UTM_zone_10S,	32310)
-ValuePair(PCS_WGS72_UTM_zone_11S,	32311)
-ValuePair(PCS_WGS72_UTM_zone_12S,	32312)
-ValuePair(PCS_WGS72_UTM_zone_13S,	32313)
-ValuePair(PCS_WGS72_UTM_zone_14S,	32314)
-ValuePair(PCS_WGS72_UTM_zone_15S,	32315)
-ValuePair(PCS_WGS72_UTM_zone_16S,	32316)
-ValuePair(PCS_WGS72_UTM_zone_17S,	32317)
-ValuePair(PCS_WGS72_UTM_zone_18S,	32318)
-ValuePair(PCS_WGS72_UTM_zone_19S,	32319)
-ValuePair(PCS_WGS72_UTM_zone_20S,	32320)
-ValuePair(PCS_WGS72_UTM_zone_21S,	32321)
-ValuePair(PCS_WGS72_UTM_zone_22S,	32322)
-ValuePair(PCS_WGS72_UTM_zone_23S,	32323)
-ValuePair(PCS_WGS72_UTM_zone_24S,	32324)
-ValuePair(PCS_WGS72_UTM_zone_25S,	32325)
-ValuePair(PCS_WGS72_UTM_zone_26S,	32326)
-ValuePair(PCS_WGS72_UTM_zone_27S,	32327)
-ValuePair(PCS_WGS72_UTM_zone_28S,	32328)
-ValuePair(PCS_WGS72_UTM_zone_29S,	32329)
-ValuePair(PCS_WGS72_UTM_zone_30S,	32330)
-ValuePair(PCS_WGS72_UTM_zone_31S,	32331)
-ValuePair(PCS_WGS72_UTM_zone_32S,	32332)
-ValuePair(PCS_WGS72_UTM_zone_33S,	32333)
-ValuePair(PCS_WGS72_UTM_zone_34S,	32334)
-ValuePair(PCS_WGS72_UTM_zone_35S,	32335)
-ValuePair(PCS_WGS72_UTM_zone_36S,	32336)
-ValuePair(PCS_WGS72_UTM_zone_37S,	32337)
-ValuePair(PCS_WGS72_UTM_zone_38S,	32338)
-ValuePair(PCS_WGS72_UTM_zone_39S,	32339)
-ValuePair(PCS_WGS72_UTM_zone_40S,	32340)
-ValuePair(PCS_WGS72_UTM_zone_41S,	32341)
-ValuePair(PCS_WGS72_UTM_zone_42S,	32342)
-ValuePair(PCS_WGS72_UTM_zone_43S,	32343)
-ValuePair(PCS_WGS72_UTM_zone_44S,	32344)
-ValuePair(PCS_WGS72_UTM_zone_45S,	32345)
-ValuePair(PCS_WGS72_UTM_zone_46S,	32346)
-ValuePair(PCS_WGS72_UTM_zone_47S,	32347)
-ValuePair(PCS_WGS72_UTM_zone_48S,	32348)
-ValuePair(PCS_WGS72_UTM_zone_49S,	32349)
-ValuePair(PCS_WGS72_UTM_zone_50S,	32350)
-ValuePair(PCS_WGS72_UTM_zone_51S,	32351)
-ValuePair(PCS_WGS72_UTM_zone_52S,	32352)
-ValuePair(PCS_WGS72_UTM_zone_53S,	32353)
-ValuePair(PCS_WGS72_UTM_zone_54S,	32354)
-ValuePair(PCS_WGS72_UTM_zone_55S,	32355)
-ValuePair(PCS_WGS72_UTM_zone_56S,	32356)
-ValuePair(PCS_WGS72_UTM_zone_57S,	32357)
-ValuePair(PCS_WGS72_UTM_zone_58S,	32358)
-ValuePair(PCS_WGS72_UTM_zone_59S,	32359)
-ValuePair(PCS_WGS72_UTM_zone_60S,	32360)
-ValuePair(PCS_WGS72BE_UTM_zone_1N,	32401)
-ValuePair(PCS_WGS72BE_UTM_zone_2N,	32402)
-ValuePair(PCS_WGS72BE_UTM_zone_3N,	32403)
-ValuePair(PCS_WGS72BE_UTM_zone_4N,	32404)
-ValuePair(PCS_WGS72BE_UTM_zone_5N,	32405)
-ValuePair(PCS_WGS72BE_UTM_zone_6N,	32406)
-ValuePair(PCS_WGS72BE_UTM_zone_7N,	32407)
-ValuePair(PCS_WGS72BE_UTM_zone_8N,	32408)
-ValuePair(PCS_WGS72BE_UTM_zone_9N,	32409)
-ValuePair(PCS_WGS72BE_UTM_zone_10N,	32410)
-ValuePair(PCS_WGS72BE_UTM_zone_11N,	32411)
-ValuePair(PCS_WGS72BE_UTM_zone_12N,	32412)
-ValuePair(PCS_WGS72BE_UTM_zone_13N,	32413)
-ValuePair(PCS_WGS72BE_UTM_zone_14N,	32414)
-ValuePair(PCS_WGS72BE_UTM_zone_15N,	32415)
-ValuePair(PCS_WGS72BE_UTM_zone_16N,	32416)
-ValuePair(PCS_WGS72BE_UTM_zone_17N,	32417)
-ValuePair(PCS_WGS72BE_UTM_zone_18N,	32418)
-ValuePair(PCS_WGS72BE_UTM_zone_19N,	32419)
-ValuePair(PCS_WGS72BE_UTM_zone_20N,	32420)
-ValuePair(PCS_WGS72BE_UTM_zone_21N,	32421)
-ValuePair(PCS_WGS72BE_UTM_zone_22N,	32422)
-ValuePair(PCS_WGS72BE_UTM_zone_23N,	32423)
-ValuePair(PCS_WGS72BE_UTM_zone_24N,	32424)
-ValuePair(PCS_WGS72BE_UTM_zone_25N,	32425)
-ValuePair(PCS_WGS72BE_UTM_zone_26N,	32426)
-ValuePair(PCS_WGS72BE_UTM_zone_27N,	32427)
-ValuePair(PCS_WGS72BE_UTM_zone_28N,	32428)
-ValuePair(PCS_WGS72BE_UTM_zone_29N,	32429)
-ValuePair(PCS_WGS72BE_UTM_zone_30N,	32430)
-ValuePair(PCS_WGS72BE_UTM_zone_31N,	32431)
-ValuePair(PCS_WGS72BE_UTM_zone_32N,	32432)
-ValuePair(PCS_WGS72BE_UTM_zone_33N,	32433)
-ValuePair(PCS_WGS72BE_UTM_zone_34N,	32434)
-ValuePair(PCS_WGS72BE_UTM_zone_35N,	32435)
-ValuePair(PCS_WGS72BE_UTM_zone_36N,	32436)
-ValuePair(PCS_WGS72BE_UTM_zone_37N,	32437)
-ValuePair(PCS_WGS72BE_UTM_zone_38N,	32438)
-ValuePair(PCS_WGS72BE_UTM_zone_39N,	32439)
-ValuePair(PCS_WGS72BE_UTM_zone_40N,	32440)
-ValuePair(PCS_WGS72BE_UTM_zone_41N,	32441)
-ValuePair(PCS_WGS72BE_UTM_zone_42N,	32442)
-ValuePair(PCS_WGS72BE_UTM_zone_43N,	32443)
-ValuePair(PCS_WGS72BE_UTM_zone_44N,	32444)
-ValuePair(PCS_WGS72BE_UTM_zone_45N,	32445)
-ValuePair(PCS_WGS72BE_UTM_zone_46N,	32446)
-ValuePair(PCS_WGS72BE_UTM_zone_47N,	32447)
-ValuePair(PCS_WGS72BE_UTM_zone_48N,	32448)
-ValuePair(PCS_WGS72BE_UTM_zone_49N,	32449)
-ValuePair(PCS_WGS72BE_UTM_zone_50N,	32450)
-ValuePair(PCS_WGS72BE_UTM_zone_51N,	32451)
-ValuePair(PCS_WGS72BE_UTM_zone_52N,	32452)
-ValuePair(PCS_WGS72BE_UTM_zone_53N,	32453)
-ValuePair(PCS_WGS72BE_UTM_zone_54N,	32454)
-ValuePair(PCS_WGS72BE_UTM_zone_55N,	32455)
-ValuePair(PCS_WGS72BE_UTM_zone_56N,	32456)
-ValuePair(PCS_WGS72BE_UTM_zone_57N,	32457)
-ValuePair(PCS_WGS72BE_UTM_zone_58N,	32458)
-ValuePair(PCS_WGS72BE_UTM_zone_59N,	32459)
-ValuePair(PCS_WGS72BE_UTM_zone_60N,	32460)
-ValuePair(PCS_WGS72BE_UTM_zone_1S,	32501)
-ValuePair(PCS_WGS72BE_UTM_zone_2S,	32502)
-ValuePair(PCS_WGS72BE_UTM_zone_3S,	32503)
-ValuePair(PCS_WGS72BE_UTM_zone_4S,	32504)
-ValuePair(PCS_WGS72BE_UTM_zone_5S,	32505)
-ValuePair(PCS_WGS72BE_UTM_zone_6S,	32506)
-ValuePair(PCS_WGS72BE_UTM_zone_7S,	32507)
-ValuePair(PCS_WGS72BE_UTM_zone_8S,	32508)
-ValuePair(PCS_WGS72BE_UTM_zone_9S,	32509)
-ValuePair(PCS_WGS72BE_UTM_zone_10S,	32510)
-ValuePair(PCS_WGS72BE_UTM_zone_11S,	32511)
-ValuePair(PCS_WGS72BE_UTM_zone_12S,	32512)
-ValuePair(PCS_WGS72BE_UTM_zone_13S,	32513)
-ValuePair(PCS_WGS72BE_UTM_zone_14S,	32514)
-ValuePair(PCS_WGS72BE_UTM_zone_15S,	32515)
-ValuePair(PCS_WGS72BE_UTM_zone_16S,	32516)
-ValuePair(PCS_WGS72BE_UTM_zone_17S,	32517)
-ValuePair(PCS_WGS72BE_UTM_zone_18S,	32518)
-ValuePair(PCS_WGS72BE_UTM_zone_19S,	32519)
-ValuePair(PCS_WGS72BE_UTM_zone_20S,	32520)
-ValuePair(PCS_WGS72BE_UTM_zone_21S,	32521)
-ValuePair(PCS_WGS72BE_UTM_zone_22S,	32522)
-ValuePair(PCS_WGS72BE_UTM_zone_23S,	32523)
-ValuePair(PCS_WGS72BE_UTM_zone_24S,	32524)
-ValuePair(PCS_WGS72BE_UTM_zone_25S,	32525)
-ValuePair(PCS_WGS72BE_UTM_zone_26S,	32526)
-ValuePair(PCS_WGS72BE_UTM_zone_27S,	32527)
-ValuePair(PCS_WGS72BE_UTM_zone_28S,	32528)
-ValuePair(PCS_WGS72BE_UTM_zone_29S,	32529)
-ValuePair(PCS_WGS72BE_UTM_zone_30S,	32530)
-ValuePair(PCS_WGS72BE_UTM_zone_31S,	32531)
-ValuePair(PCS_WGS72BE_UTM_zone_32S,	32532)
-ValuePair(PCS_WGS72BE_UTM_zone_33S,	32533)
-ValuePair(PCS_WGS72BE_UTM_zone_34S,	32534)
-ValuePair(PCS_WGS72BE_UTM_zone_35S,	32535)
-ValuePair(PCS_WGS72BE_UTM_zone_36S,	32536)
-ValuePair(PCS_WGS72BE_UTM_zone_37S,	32537)
-ValuePair(PCS_WGS72BE_UTM_zone_38S,	32538)
-ValuePair(PCS_WGS72BE_UTM_zone_39S,	32539)
-ValuePair(PCS_WGS72BE_UTM_zone_40S,	32540)
-ValuePair(PCS_WGS72BE_UTM_zone_41S,	32541)
-ValuePair(PCS_WGS72BE_UTM_zone_42S,	32542)
-ValuePair(PCS_WGS72BE_UTM_zone_43S,	32543)
-ValuePair(PCS_WGS72BE_UTM_zone_44S,	32544)
-ValuePair(PCS_WGS72BE_UTM_zone_45S,	32545)
-ValuePair(PCS_WGS72BE_UTM_zone_46S,	32546)
-ValuePair(PCS_WGS72BE_UTM_zone_47S,	32547)
-ValuePair(PCS_WGS72BE_UTM_zone_48S,	32548)
-ValuePair(PCS_WGS72BE_UTM_zone_49S,	32549)
-ValuePair(PCS_WGS72BE_UTM_zone_50S,	32550)
-ValuePair(PCS_WGS72BE_UTM_zone_51S,	32551)
-ValuePair(PCS_WGS72BE_UTM_zone_52S,	32552)
-ValuePair(PCS_WGS72BE_UTM_zone_53S,	32553)
-ValuePair(PCS_WGS72BE_UTM_zone_54S,	32554)
-ValuePair(PCS_WGS72BE_UTM_zone_55S,	32555)
-ValuePair(PCS_WGS72BE_UTM_zone_56S,	32556)
-ValuePair(PCS_WGS72BE_UTM_zone_57S,	32557)
-ValuePair(PCS_WGS72BE_UTM_zone_58S,	32558)
-ValuePair(PCS_WGS72BE_UTM_zone_59S,	32559)
-ValuePair(PCS_WGS72BE_UTM_zone_60S,	32560)
-ValuePair(PCS_WGS84_UTM_zone_1N,	32601)
-ValuePair(PCS_WGS84_UTM_zone_2N,	32602)
-ValuePair(PCS_WGS84_UTM_zone_3N,	32603)
-ValuePair(PCS_WGS84_UTM_zone_4N,	32604)
-ValuePair(PCS_WGS84_UTM_zone_5N,	32605)
-ValuePair(PCS_WGS84_UTM_zone_6N,	32606)
-ValuePair(PCS_WGS84_UTM_zone_7N,	32607)
-ValuePair(PCS_WGS84_UTM_zone_8N,	32608)
-ValuePair(PCS_WGS84_UTM_zone_9N,	32609)
-ValuePair(PCS_WGS84_UTM_zone_10N,	32610)
-ValuePair(PCS_WGS84_UTM_zone_11N,	32611)
-ValuePair(PCS_WGS84_UTM_zone_12N,	32612)
-ValuePair(PCS_WGS84_UTM_zone_13N,	32613)
-ValuePair(PCS_WGS84_UTM_zone_14N,	32614)
-ValuePair(PCS_WGS84_UTM_zone_15N,	32615)
-ValuePair(PCS_WGS84_UTM_zone_16N,	32616)
-ValuePair(PCS_WGS84_UTM_zone_17N,	32617)
-ValuePair(PCS_WGS84_UTM_zone_18N,	32618)
-ValuePair(PCS_WGS84_UTM_zone_19N,	32619)
-ValuePair(PCS_WGS84_UTM_zone_20N,	32620)
-ValuePair(PCS_WGS84_UTM_zone_21N,	32621)
-ValuePair(PCS_WGS84_UTM_zone_22N,	32622)
-ValuePair(PCS_WGS84_UTM_zone_23N,	32623)
-ValuePair(PCS_WGS84_UTM_zone_24N,	32624)
-ValuePair(PCS_WGS84_UTM_zone_25N,	32625)
-ValuePair(PCS_WGS84_UTM_zone_26N,	32626)
-ValuePair(PCS_WGS84_UTM_zone_27N,	32627)
-ValuePair(PCS_WGS84_UTM_zone_28N,	32628)
-ValuePair(PCS_WGS84_UTM_zone_29N,	32629)
-ValuePair(PCS_WGS84_UTM_zone_30N,	32630)
-ValuePair(PCS_WGS84_UTM_zone_31N,	32631)
-ValuePair(PCS_WGS84_UTM_zone_32N,	32632)
-ValuePair(PCS_WGS84_UTM_zone_33N,	32633)
-ValuePair(PCS_WGS84_UTM_zone_34N,	32634)
-ValuePair(PCS_WGS84_UTM_zone_35N,	32635)
-ValuePair(PCS_WGS84_UTM_zone_36N,	32636)
-ValuePair(PCS_WGS84_UTM_zone_37N,	32637)
-ValuePair(PCS_WGS84_UTM_zone_38N,	32638)
-ValuePair(PCS_WGS84_UTM_zone_39N,	32639)
-ValuePair(PCS_WGS84_UTM_zone_40N,	32640)
-ValuePair(PCS_WGS84_UTM_zone_41N,	32641)
-ValuePair(PCS_WGS84_UTM_zone_42N,	32642)
-ValuePair(PCS_WGS84_UTM_zone_43N,	32643)
-ValuePair(PCS_WGS84_UTM_zone_44N,	32644)
-ValuePair(PCS_WGS84_UTM_zone_45N,	32645)
-ValuePair(PCS_WGS84_UTM_zone_46N,	32646)
-ValuePair(PCS_WGS84_UTM_zone_47N,	32647)
-ValuePair(PCS_WGS84_UTM_zone_48N,	32648)
-ValuePair(PCS_WGS84_UTM_zone_49N,	32649)
-ValuePair(PCS_WGS84_UTM_zone_50N,	32650)
-ValuePair(PCS_WGS84_UTM_zone_51N,	32651)
-ValuePair(PCS_WGS84_UTM_zone_52N,	32652)
-ValuePair(PCS_WGS84_UTM_zone_53N,	32653)
-ValuePair(PCS_WGS84_UTM_zone_54N,	32654)
-ValuePair(PCS_WGS84_UTM_zone_55N,	32655)
-ValuePair(PCS_WGS84_UTM_zone_56N,	32656)
-ValuePair(PCS_WGS84_UTM_zone_57N,	32657)
-ValuePair(PCS_WGS84_UTM_zone_58N,	32658)
-ValuePair(PCS_WGS84_UTM_zone_59N,	32659)
-ValuePair(PCS_WGS84_UTM_zone_60N,	32660)
-ValuePair(PCS_WGS84_UTM_zone_1S,	32701)
-ValuePair(PCS_WGS84_UTM_zone_2S,	32702)
-ValuePair(PCS_WGS84_UTM_zone_3S,	32703)
-ValuePair(PCS_WGS84_UTM_zone_4S,	32704)
-ValuePair(PCS_WGS84_UTM_zone_5S,	32705)
-ValuePair(PCS_WGS84_UTM_zone_6S,	32706)
-ValuePair(PCS_WGS84_UTM_zone_7S,	32707)
-ValuePair(PCS_WGS84_UTM_zone_8S,	32708)
-ValuePair(PCS_WGS84_UTM_zone_9S,	32709)
-ValuePair(PCS_WGS84_UTM_zone_10S,	32710)
-ValuePair(PCS_WGS84_UTM_zone_11S,	32711)
-ValuePair(PCS_WGS84_UTM_zone_12S,	32712)
-ValuePair(PCS_WGS84_UTM_zone_13S,	32713)
-ValuePair(PCS_WGS84_UTM_zone_14S,	32714)
-ValuePair(PCS_WGS84_UTM_zone_15S,	32715)
-ValuePair(PCS_WGS84_UTM_zone_16S,	32716)
-ValuePair(PCS_WGS84_UTM_zone_17S,	32717)
-ValuePair(PCS_WGS84_UTM_zone_18S,	32718)
-ValuePair(PCS_WGS84_UTM_zone_19S,	32719)
-ValuePair(PCS_WGS84_UTM_zone_20S,	32720)
-ValuePair(PCS_WGS84_UTM_zone_21S,	32721)
-ValuePair(PCS_WGS84_UTM_zone_22S,	32722)
-ValuePair(PCS_WGS84_UTM_zone_23S,	32723)
-ValuePair(PCS_WGS84_UTM_zone_24S,	32724)
-ValuePair(PCS_WGS84_UTM_zone_25S,	32725)
-ValuePair(PCS_WGS84_UTM_zone_26S,	32726)
-ValuePair(PCS_WGS84_UTM_zone_27S,	32727)
-ValuePair(PCS_WGS84_UTM_zone_28S,	32728)
-ValuePair(PCS_WGS84_UTM_zone_29S,	32729)
-ValuePair(PCS_WGS84_UTM_zone_30S,	32730)
-ValuePair(PCS_WGS84_UTM_zone_31S,	32731)
-ValuePair(PCS_WGS84_UTM_zone_32S,	32732)
-ValuePair(PCS_WGS84_UTM_zone_33S,	32733)
-ValuePair(PCS_WGS84_UTM_zone_34S,	32734)
-ValuePair(PCS_WGS84_UTM_zone_35S,	32735)
-ValuePair(PCS_WGS84_UTM_zone_36S,	32736)
-ValuePair(PCS_WGS84_UTM_zone_37S,	32737)
-ValuePair(PCS_WGS84_UTM_zone_38S,	32738)
-ValuePair(PCS_WGS84_UTM_zone_39S,	32739)
-ValuePair(PCS_WGS84_UTM_zone_40S,	32740)
-ValuePair(PCS_WGS84_UTM_zone_41S,	32741)
-ValuePair(PCS_WGS84_UTM_zone_42S,	32742)
-ValuePair(PCS_WGS84_UTM_zone_43S,	32743)
-ValuePair(PCS_WGS84_UTM_zone_44S,	32744)
-ValuePair(PCS_WGS84_UTM_zone_45S,	32745)
-ValuePair(PCS_WGS84_UTM_zone_46S,	32746)
-ValuePair(PCS_WGS84_UTM_zone_47S,	32747)
-ValuePair(PCS_WGS84_UTM_zone_48S,	32748)
-ValuePair(PCS_WGS84_UTM_zone_49S,	32749)
-ValuePair(PCS_WGS84_UTM_zone_50S,	32750)
-ValuePair(PCS_WGS84_UTM_zone_51S,	32751)
-ValuePair(PCS_WGS84_UTM_zone_52S,	32752)
-ValuePair(PCS_WGS84_UTM_zone_53S,	32753)
-ValuePair(PCS_WGS84_UTM_zone_54S,	32754)
-ValuePair(PCS_WGS84_UTM_zone_55S,	32755)
-ValuePair(PCS_WGS84_UTM_zone_56S,	32756)
-ValuePair(PCS_WGS84_UTM_zone_57S,	32757)
-ValuePair(PCS_WGS84_UTM_zone_58S,	32758)
-ValuePair(PCS_WGS84_UTM_zone_59S,	32759)
-ValuePair(PCS_WGS84_UTM_zone_60S,	32760)
-/* end of list */
diff --git a/src/tiff/epsg_pm.inc b/src/tiff/epsg_pm.inc
deleted file mode 100644
index 6eedf76..0000000
--- a/src/tiff/epsg_pm.inc
+++ /dev/null
@@ -1,22 +0,0 @@
-/* EPSG/GeoTIFF Rev 0.2 Prime Meridian Database */
-
-/* C database for Geotiff include files.   */
-/* the macro ValuePair() must be defined   */
-/* by the enclosing include file           */
-
-#ifdef INCLUDE_OLD_CODES
-#include old_pm.inc
-#endif /* OLD Codes */
-
-ValuePair(PM_Greenwich,	8901)
-ValuePair(PM_Lisbon,	8902)
-ValuePair(PM_Paris,	8903)
-ValuePair(PM_Bogota,	8904)
-ValuePair(PM_Madrid,	8905)
-ValuePair(PM_Rome,	8906)
-ValuePair(PM_Bern,	8907)
-ValuePair(PM_Jakarta,	8908)
-ValuePair(PM_Ferro,	8909)
-ValuePair(PM_Brussels,	8910)
-ValuePair(PM_Stockholm,	8911)
-/* end of list */
diff --git a/src/tiff/epsg_proj.inc b/src/tiff/epsg_proj.inc
deleted file mode 100644
index ac4f603..0000000
--- a/src/tiff/epsg_proj.inc
+++ /dev/null
@@ -1,443 +0,0 @@
-/*
- *  EPSG/POSC Projection Codes - GeoTIFF Rev 0.2
- */
-
-/* C database for Geotiff include files.   */
-/* the macro ValuePair() must be defined   */
-/* by the enclosing include file           */
-
-#ifdef INCLUDE_OLD_CODES
-#include old_proj.inc
-#endif /* OLD Codes */
-
-/* New codes */
-
-ValuePair(Proj_Stereo_70,19926)
-
-/* old codes */
-
-ValuePair(Proj_Alabama_CS27_East,	10101)
-ValuePair(Proj_Alabama_CS27_West,	10102)
-ValuePair(Proj_Alabama_CS83_East,	10131)
-ValuePair(Proj_Alabama_CS83_West,	10132)
-ValuePair(Proj_Arizona_Coordinate_System_east,	10201)
-ValuePair(Proj_Arizona_Coordinate_System_Central,	10202)
-ValuePair(Proj_Arizona_Coordinate_System_west,	10203)
-ValuePair(Proj_Arizona_CS83_east,	10231)
-ValuePair(Proj_Arizona_CS83_Central,	10232)
-ValuePair(Proj_Arizona_CS83_west,	10233)
-ValuePair(Proj_Arkansas_CS27_North,	10301)
-ValuePair(Proj_Arkansas_CS27_South,	10302)
-ValuePair(Proj_Arkansas_CS83_North,	10331)
-ValuePair(Proj_Arkansas_CS83_South,	10332)
-ValuePair(Proj_California_CS27_I,	10401)
-ValuePair(Proj_California_CS27_II,	10402)
-ValuePair(Proj_California_CS27_III,	10403)
-ValuePair(Proj_California_CS27_IV,	10404)
-ValuePair(Proj_California_CS27_V,	10405)
-ValuePair(Proj_California_CS27_VI,	10406)
-ValuePair(Proj_California_CS27_VII,	10407)
-ValuePair(Proj_California_CS83_1,	10431)
-ValuePair(Proj_California_CS83_2,	10432)
-ValuePair(Proj_California_CS83_3,	10433)
-ValuePair(Proj_California_CS83_4,	10434)
-ValuePair(Proj_California_CS83_5,	10435)
-ValuePair(Proj_California_CS83_6,	10436)
-ValuePair(Proj_Colorado_CS27_North,	10501)
-ValuePair(Proj_Colorado_CS27_Central,	10502)
-ValuePair(Proj_Colorado_CS27_South,	10503)
-ValuePair(Proj_Colorado_CS83_North,	10531)
-ValuePair(Proj_Colorado_CS83_Central,	10532)
-ValuePair(Proj_Colorado_CS83_South,	10533)
-ValuePair(Proj_Connecticut_CS27,	10600)
-ValuePair(Proj_Connecticut_CS83,	10630)
-ValuePair(Proj_Delaware_CS27,	10700)
-ValuePair(Proj_Delaware_CS83,	10730)
-ValuePair(Proj_Florida_CS27_East,	10901)
-ValuePair(Proj_Florida_CS27_West,	10902)
-ValuePair(Proj_Florida_CS27_North,	10903)
-ValuePair(Proj_Florida_CS83_East,	10931)
-ValuePair(Proj_Florida_CS83_West,	10932)
-ValuePair(Proj_Florida_CS83_North,	10933)
-ValuePair(Proj_Georgia_CS27_East,	11001)
-ValuePair(Proj_Georgia_CS27_West,	11002)
-ValuePair(Proj_Georgia_CS83_East,	11031)
-ValuePair(Proj_Georgia_CS83_West,	11032)
-ValuePair(Proj_Idaho_CS27_East,	11101)
-ValuePair(Proj_Idaho_CS27_Central,	11102)
-ValuePair(Proj_Idaho_CS27_West,	11103)
-ValuePair(Proj_Idaho_CS83_East,	11131)
-ValuePair(Proj_Idaho_CS83_Central,	11132)
-ValuePair(Proj_Idaho_CS83_West,	11133)
-ValuePair(Proj_Illinois_CS27_East,	11201)
-ValuePair(Proj_Illinois_CS27_West,	11202)
-ValuePair(Proj_Illinois_CS83_East,	11231)
-ValuePair(Proj_Illinois_CS83_West,	11232)
-ValuePair(Proj_Indiana_CS27_East,	11301)
-ValuePair(Proj_Indiana_CS27_West,	11302)
-ValuePair(Proj_Indiana_CS83_East,	11331)
-ValuePair(Proj_Indiana_CS83_West,	11332)
-ValuePair(Proj_Iowa_CS27_North,	11401)
-ValuePair(Proj_Iowa_CS27_South,	11402)
-ValuePair(Proj_Iowa_CS83_North,	11431)
-ValuePair(Proj_Iowa_CS83_South,	11432)
-ValuePair(Proj_Kansas_CS27_North,	11501)
-ValuePair(Proj_Kansas_CS27_South,	11502)
-ValuePair(Proj_Kansas_CS83_North,	11531)
-ValuePair(Proj_Kansas_CS83_South,	11532)
-ValuePair(Proj_Kentucky_CS27_North,	11601)
-ValuePair(Proj_Kentucky_CS27_South,	11602)
-ValuePair(Proj_Kentucky_CS83_North,	15303)
-ValuePair(Proj_Kentucky_CS83_South,	11632)
-ValuePair(Proj_Louisiana_CS27_North,	11701)
-ValuePair(Proj_Louisiana_CS27_South,	11702)
-ValuePair(Proj_Louisiana_CS83_North,	11731)
-ValuePair(Proj_Louisiana_CS83_South,	11732)
-ValuePair(Proj_Maine_CS27_East,	11801)
-ValuePair(Proj_Maine_CS27_West,	11802)
-ValuePair(Proj_Maine_CS83_East,	11831)
-ValuePair(Proj_Maine_CS83_West,	11832)
-ValuePair(Proj_Maryland_CS27,	11900)
-ValuePair(Proj_Maryland_CS83,	11930)
-ValuePair(Proj_Massachusetts_CS27_Mainland,	12001)
-ValuePair(Proj_Massachusetts_CS27_Island,	12002)
-ValuePair(Proj_Massachusetts_CS83_Mainland,	12031)
-ValuePair(Proj_Massachusetts_CS83_Island,	12032)
-ValuePair(Proj_Michigan_State_Plane_East,	12101)
-ValuePair(Proj_Michigan_State_Plane_Old_Central,	12102)
-ValuePair(Proj_Michigan_State_Plane_West,	12103)
-ValuePair(Proj_Michigan_CS27_North,	12111)
-ValuePair(Proj_Michigan_CS27_Central,	12112)
-ValuePair(Proj_Michigan_CS27_South,	12113)
-ValuePair(Proj_Michigan_CS83_North,	12141)
-ValuePair(Proj_Michigan_CS83_Central,	12142)
-ValuePair(Proj_Michigan_CS83_South,	12143)
-ValuePair(Proj_Minnesota_CS27_North,	12201)
-ValuePair(Proj_Minnesota_CS27_Central,	12202)
-ValuePair(Proj_Minnesota_CS27_South,	12203)
-ValuePair(Proj_Minnesota_CS83_North,	12231)
-ValuePair(Proj_Minnesota_CS83_Central,	12232)
-ValuePair(Proj_Minnesota_CS83_South,	12233)
-ValuePair(Proj_Mississippi_CS27_East,	12301)
-ValuePair(Proj_Mississippi_CS27_West,	12302)
-ValuePair(Proj_Mississippi_CS83_East,	12331)
-ValuePair(Proj_Mississippi_CS83_West,	12332)
-ValuePair(Proj_Missouri_CS27_East,	12401)
-ValuePair(Proj_Missouri_CS27_Central,	12402)
-ValuePair(Proj_Missouri_CS27_West,	12403)
-ValuePair(Proj_Missouri_CS83_East,	12431)
-ValuePair(Proj_Missouri_CS83_Central,	12432)
-ValuePair(Proj_Missouri_CS83_West,	12433)
-ValuePair(Proj_Montana_CS27_North,	12501)
-ValuePair(Proj_Montana_CS27_Central,	12502)
-ValuePair(Proj_Montana_CS27_South,	12503)
-ValuePair(Proj_Montana_CS83,	12530)
-ValuePair(Proj_Nebraska_CS27_North,	12601)
-ValuePair(Proj_Nebraska_CS27_South,	12602)
-ValuePair(Proj_Nebraska_CS83,	12630)
-ValuePair(Proj_Nevada_CS27_East,	12701)
-ValuePair(Proj_Nevada_CS27_Central,	12702)
-ValuePair(Proj_Nevada_CS27_West,	12703)
-ValuePair(Proj_Nevada_CS83_East,	12731)
-ValuePair(Proj_Nevada_CS83_Central,	12732)
-ValuePair(Proj_Nevada_CS83_West,	12733)
-ValuePair(Proj_New_Hampshire_CS27,	12800)
-ValuePair(Proj_New_Hampshire_CS83,	12830)
-ValuePair(Proj_New_Jersey_CS27,	12900)
-ValuePair(Proj_New_Jersey_CS83,	12930)
-ValuePair(Proj_New_Mexico_CS27_East,	13001)
-ValuePair(Proj_New_Mexico_CS27_Central,	13002)
-ValuePair(Proj_New_Mexico_CS27_West,	13003)
-ValuePair(Proj_New_Mexico_CS83_East,	13031)
-ValuePair(Proj_New_Mexico_CS83_Central,	13032)
-ValuePair(Proj_New_Mexico_CS83_West,	13033)
-ValuePair(Proj_New_York_CS27_East,	13101)
-ValuePair(Proj_New_York_CS27_Central,	13102)
-ValuePair(Proj_New_York_CS27_West,	13103)
-ValuePair(Proj_New_York_CS27_Long_Island,	13104)
-ValuePair(Proj_New_York_CS83_East,	13131)
-ValuePair(Proj_New_York_CS83_Central,	13132)
-ValuePair(Proj_New_York_CS83_West,	13133)
-ValuePair(Proj_New_York_CS83_Long_Island,	13134)
-ValuePair(Proj_North_Carolina_CS27,	13200)
-ValuePair(Proj_North_Carolina_CS83,	13230)
-ValuePair(Proj_North_Dakota_CS27_North,	13301)
-ValuePair(Proj_North_Dakota_CS27_South,	13302)
-ValuePair(Proj_North_Dakota_CS83_North,	13331)
-ValuePair(Proj_North_Dakota_CS83_South,	13332)
-ValuePair(Proj_Ohio_CS27_North,	13401)
-ValuePair(Proj_Ohio_CS27_South,	13402)
-ValuePair(Proj_Ohio_CS83_North,	13431)
-ValuePair(Proj_Ohio_CS83_South,	13432)
-ValuePair(Proj_Oklahoma_CS27_North,	13501)
-ValuePair(Proj_Oklahoma_CS27_South,	13502)
-ValuePair(Proj_Oklahoma_CS83_North,	13531)
-ValuePair(Proj_Oklahoma_CS83_South,	13532)
-ValuePair(Proj_Oregon_CS27_North,	13601)
-ValuePair(Proj_Oregon_CS27_South,	13602)
-ValuePair(Proj_Oregon_CS83_North,	13631)
-ValuePair(Proj_Oregon_CS83_South,	13632)
-ValuePair(Proj_Pennsylvania_CS27_North,	13701)
-ValuePair(Proj_Pennsylvania_CS27_South,	13702)
-ValuePair(Proj_Pennsylvania_CS83_North,	13731)
-ValuePair(Proj_Pennsylvania_CS83_South,	13732)
-ValuePair(Proj_Rhode_Island_CS27,	13800)
-ValuePair(Proj_Rhode_Island_CS83,	13830)
-ValuePair(Proj_South_Carolina_CS27_North,	13901)
-ValuePair(Proj_South_Carolina_CS27_South,	13902)
-ValuePair(Proj_South_Carolina_CS83,	13930)
-ValuePair(Proj_South_Dakota_CS27_North,	14001)
-ValuePair(Proj_South_Dakota_CS27_South,	14002)
-ValuePair(Proj_South_Dakota_CS83_North,	14031)
-ValuePair(Proj_South_Dakota_CS83_South,	14032)
-ValuePair(Proj_Tennessee_CS27,	15302)
-ValuePair(Proj_Tennessee_CS83,	14130)
-ValuePair(Proj_Texas_CS27_North,	14201)
-ValuePair(Proj_Texas_CS27_North_Central,	14202)
-ValuePair(Proj_Texas_CS27_Central,	14203)
-ValuePair(Proj_Texas_CS27_South_Central,	14204)
-ValuePair(Proj_Texas_CS27_South,	14205)
-ValuePair(Proj_Texas_CS83_North,	14231)
-ValuePair(Proj_Texas_CS83_North_Central,	14232)
-ValuePair(Proj_Texas_CS83_Central,	14233)
-ValuePair(Proj_Texas_CS83_South_Central,	14234)
-ValuePair(Proj_Texas_CS83_South,	14235)
-ValuePair(Proj_Utah_CS27_North,	14301)
-ValuePair(Proj_Utah_CS27_Central,	14302)
-ValuePair(Proj_Utah_CS27_South,	14303)
-ValuePair(Proj_Utah_CS83_North,	14331)
-ValuePair(Proj_Utah_CS83_Central,	14332)
-ValuePair(Proj_Utah_CS83_South,	14333)
-ValuePair(Proj_Vermont_CS27,	14400)
-ValuePair(Proj_Vermont_CS83,	14430)
-ValuePair(Proj_Virginia_CS27_North,	14501)
-ValuePair(Proj_Virginia_CS27_South,	14502)
-ValuePair(Proj_Virginia_CS83_North,	14531)
-ValuePair(Proj_Virginia_CS83_South,	14532)
-ValuePair(Proj_Washington_CS27_North,	14601)
-ValuePair(Proj_Washington_CS27_South,	14602)
-ValuePair(Proj_Washington_CS83_North,	14631)
-ValuePair(Proj_Washington_CS83_South,	14632)
-ValuePair(Proj_West_Virginia_CS27_North,	14701)
-ValuePair(Proj_West_Virginia_CS27_South,	14702)
-ValuePair(Proj_West_Virginia_CS83_North,	14731)
-ValuePair(Proj_West_Virginia_CS83_South,	14732)
-ValuePair(Proj_Wisconsin_CS27_North,	14801)
-ValuePair(Proj_Wisconsin_CS27_Central,	14802)
-ValuePair(Proj_Wisconsin_CS27_South,	14803)
-ValuePair(Proj_Wisconsin_CS83_North,	14831)
-ValuePair(Proj_Wisconsin_CS83_Central,	14832)
-ValuePair(Proj_Wisconsin_CS83_South,	14833)
-ValuePair(Proj_Wyoming_CS27_East,	14901)
-ValuePair(Proj_Wyoming_CS27_East_Central,	14902)
-ValuePair(Proj_Wyoming_CS27_West_Central,	14903)
-ValuePair(Proj_Wyoming_CS27_West,	14904)
-ValuePair(Proj_Wyoming_CS83_East,	14931)
-ValuePair(Proj_Wyoming_CS83_East_Central,	14932)
-ValuePair(Proj_Wyoming_CS83_West_Central,	14933)
-ValuePair(Proj_Wyoming_CS83_West,	14934)
-ValuePair(Proj_Alaska_CS27_1,	15001)
-ValuePair(Proj_Alaska_CS27_2,	15002)
-ValuePair(Proj_Alaska_CS27_3,	15003)
-ValuePair(Proj_Alaska_CS27_4,	15004)
-ValuePair(Proj_Alaska_CS27_5,	15005)
-ValuePair(Proj_Alaska_CS27_6,	15006)
-ValuePair(Proj_Alaska_CS27_7,	15007)
-ValuePair(Proj_Alaska_CS27_8,	15008)
-ValuePair(Proj_Alaska_CS27_9,	15009)
-ValuePair(Proj_Alaska_CS27_10,	15010)
-ValuePair(Proj_Alaska_CS83_1,	15031)
-ValuePair(Proj_Alaska_CS83_2,	15032)
-ValuePair(Proj_Alaska_CS83_3,	15033)
-ValuePair(Proj_Alaska_CS83_4,	15034)
-ValuePair(Proj_Alaska_CS83_5,	15035)
-ValuePair(Proj_Alaska_CS83_6,	15036)
-ValuePair(Proj_Alaska_CS83_7,	15037)
-ValuePair(Proj_Alaska_CS83_8,	15038)
-ValuePair(Proj_Alaska_CS83_9,	15039)
-ValuePair(Proj_Alaska_CS83_10,	15040)
-ValuePair(Proj_Hawaii_CS27_1,	15101)
-ValuePair(Proj_Hawaii_CS27_2,	15102)
-ValuePair(Proj_Hawaii_CS27_3,	15103)
-ValuePair(Proj_Hawaii_CS27_4,	15104)
-ValuePair(Proj_Hawaii_CS27_5,	15105)
-ValuePair(Proj_Hawaii_CS83_1,	15131)
-ValuePair(Proj_Hawaii_CS83_2,	15132)
-ValuePair(Proj_Hawaii_CS83_3,	15133)
-ValuePair(Proj_Hawaii_CS83_4,	15134)
-ValuePair(Proj_Hawaii_CS83_5,	15135)
-ValuePair(Proj_Puerto_Rico_CS27,	15201)
-ValuePair(Proj_St_Croix,	15202)
-ValuePair(Proj_Puerto_Rico_Virgin_Is,	15230)
-ValuePair(Proj_BLM_14N_feet,	15914)
-ValuePair(Proj_BLM_15N_feet,	15915)
-ValuePair(Proj_BLM_16N_feet,	15916)
-ValuePair(Proj_BLM_17N_feet,	15917)
-ValuePair(Proj_UTM_zone_1N,  16001)
-ValuePair(Proj_UTM_zone_2N,  16002)
-ValuePair(Proj_UTM_zone_3N,  16003)
-ValuePair(Proj_UTM_zone_4N,  16004)
-ValuePair(Proj_UTM_zone_5N,  16005)
-ValuePair(Proj_UTM_zone_6N,  16006)
-ValuePair(Proj_UTM_zone_7N,  16007)
-ValuePair(Proj_UTM_zone_8N,  16008)
-ValuePair(Proj_UTM_zone_9N,  16009)
-ValuePair(Proj_UTM_zone_10N, 16010)
-ValuePair(Proj_UTM_zone_11N, 16011)
-ValuePair(Proj_UTM_zone_12N, 16012)
-ValuePair(Proj_UTM_zone_13N, 16013)
-ValuePair(Proj_UTM_zone_14N, 16014)
-ValuePair(Proj_UTM_zone_15N, 16015)
-ValuePair(Proj_UTM_zone_16N, 16016)
-ValuePair(Proj_UTM_zone_17N, 16017)
-ValuePair(Proj_UTM_zone_18N, 16018)
-ValuePair(Proj_UTM_zone_19N, 16019)
-ValuePair(Proj_UTM_zone_20N, 16020)
-ValuePair(Proj_UTM_zone_21N, 16021)
-ValuePair(Proj_UTM_zone_22N, 16022)
-ValuePair(Proj_UTM_zone_23N, 16023)
-ValuePair(Proj_UTM_zone_24N, 16024)
-ValuePair(Proj_UTM_zone_25N, 16025)
-ValuePair(Proj_UTM_zone_26N, 16026)
-ValuePair(Proj_UTM_zone_27N, 16027)
-ValuePair(Proj_UTM_zone_28N, 16028)
-ValuePair(Proj_UTM_zone_29N, 16029)
-ValuePair(Proj_UTM_zone_30N, 16030)
-ValuePair(Proj_UTM_zone_31N, 16031)
-ValuePair(Proj_UTM_zone_32N, 16032)
-ValuePair(Proj_UTM_zone_33N, 16033)
-ValuePair(Proj_UTM_zone_34N, 16034)
-ValuePair(Proj_UTM_zone_35N, 16035)
-ValuePair(Proj_UTM_zone_36N, 16036)
-ValuePair(Proj_UTM_zone_37N, 16037)
-ValuePair(Proj_UTM_zone_38N, 16038)
-ValuePair(Proj_UTM_zone_39N, 16039)
-ValuePair(Proj_UTM_zone_40N, 16040)
-ValuePair(Proj_UTM_zone_41N, 16041)
-ValuePair(Proj_UTM_zone_42N, 16042)
-ValuePair(Proj_UTM_zone_43N, 16043)
-ValuePair(Proj_UTM_zone_44N, 16044)
-ValuePair(Proj_UTM_zone_45N, 16045)
-ValuePair(Proj_UTM_zone_46N, 16046)
-ValuePair(Proj_UTM_zone_47N, 16047)
-ValuePair(Proj_UTM_zone_48N, 16048)
-ValuePair(Proj_UTM_zone_49N, 16049)
-ValuePair(Proj_UTM_zone_50N, 16050)
-ValuePair(Proj_UTM_zone_51N, 16051)
-ValuePair(Proj_UTM_zone_52N, 16052)
-ValuePair(Proj_UTM_zone_53N, 16053)
-ValuePair(Proj_UTM_zone_54N, 16054)
-ValuePair(Proj_UTM_zone_55N, 16055)
-ValuePair(Proj_UTM_zone_56N, 16056)
-ValuePair(Proj_UTM_zone_57N, 16057)
-ValuePair(Proj_UTM_zone_58N, 16058)
-ValuePair(Proj_UTM_zone_59N, 16059)
-ValuePair(Proj_UTM_zone_60N, 16060)
-ValuePair(Proj_UTM_zone_1S,  16101)
-ValuePair(Proj_UTM_zone_2S,  16102)
-ValuePair(Proj_UTM_zone_3S,  16103)
-ValuePair(Proj_UTM_zone_4S,  16104)
-ValuePair(Proj_UTM_zone_5S,  16105)
-ValuePair(Proj_UTM_zone_6S,  16106)
-ValuePair(Proj_UTM_zone_7S,  16107)
-ValuePair(Proj_UTM_zone_8S,  16108)
-ValuePair(Proj_UTM_zone_9S,  16109)
-ValuePair(Proj_UTM_zone_10S, 16110)
-ValuePair(Proj_UTM_zone_11S, 16111)
-ValuePair(Proj_UTM_zone_12S, 16112)
-ValuePair(Proj_UTM_zone_13S, 16113)
-ValuePair(Proj_UTM_zone_14S, 16114)
-ValuePair(Proj_UTM_zone_15S, 16115)
-ValuePair(Proj_UTM_zone_16S, 16116)
-ValuePair(Proj_UTM_zone_17S, 16117)
-ValuePair(Proj_UTM_zone_18S, 16118)
-ValuePair(Proj_UTM_zone_19S, 16119)
-ValuePair(Proj_UTM_zone_20S, 16120)
-ValuePair(Proj_UTM_zone_21S, 16121)
-ValuePair(Proj_UTM_zone_22S, 16122)
-ValuePair(Proj_UTM_zone_23S, 16123)
-ValuePair(Proj_UTM_zone_24S, 16124)
-ValuePair(Proj_UTM_zone_25S, 16125)
-ValuePair(Proj_UTM_zone_26S, 16126)
-ValuePair(Proj_UTM_zone_27S, 16127)
-ValuePair(Proj_UTM_zone_28S, 16128)
-ValuePair(Proj_UTM_zone_29S, 16129)
-ValuePair(Proj_UTM_zone_30S, 16130)
-ValuePair(Proj_UTM_zone_31S, 16131)
-ValuePair(Proj_UTM_zone_32S, 16132)
-ValuePair(Proj_UTM_zone_33S, 16133)
-ValuePair(Proj_UTM_zone_34S, 16134)
-ValuePair(Proj_UTM_zone_35S, 16135)
-ValuePair(Proj_UTM_zone_36S, 16136)
-ValuePair(Proj_UTM_zone_37S, 16137)
-ValuePair(Proj_UTM_zone_38S, 16138)
-ValuePair(Proj_UTM_zone_39S, 16139)
-ValuePair(Proj_UTM_zone_40S, 16140)
-ValuePair(Proj_UTM_zone_41S, 16141)
-ValuePair(Proj_UTM_zone_42S, 16142)
-ValuePair(Proj_UTM_zone_43S, 16143)
-ValuePair(Proj_UTM_zone_44S, 16144)
-ValuePair(Proj_UTM_zone_45S, 16145)
-ValuePair(Proj_UTM_zone_46S, 16146)
-ValuePair(Proj_UTM_zone_47S, 16147)
-ValuePair(Proj_UTM_zone_48S, 16148)
-ValuePair(Proj_UTM_zone_49S, 16149)
-ValuePair(Proj_UTM_zone_50S, 16150)
-ValuePair(Proj_UTM_zone_51S, 16151)
-ValuePair(Proj_UTM_zone_52S, 16152)
-ValuePair(Proj_UTM_zone_53S, 16153)
-ValuePair(Proj_UTM_zone_54S, 16154)
-ValuePair(Proj_UTM_zone_55S, 16155)
-ValuePair(Proj_UTM_zone_56S, 16156)
-ValuePair(Proj_UTM_zone_57S, 16157)
-ValuePair(Proj_UTM_zone_58S, 16158)
-ValuePair(Proj_UTM_zone_59S, 16159)
-ValuePair(Proj_UTM_zone_60S, 16160)
-ValuePair(Proj_Gauss_Kruger_zone_0, 16200)
-ValuePair(Proj_Gauss_Kruger_zone_1, 16201)
-ValuePair(Proj_Gauss_Kruger_zone_2, 16202)
-ValuePair(Proj_Gauss_Kruger_zone_3, 16203)
-ValuePair(Proj_Gauss_Kruger_zone_4, 16204)
-ValuePair(Proj_Gauss_Kruger_zone_5, 16205)
-ValuePair(Proj_Map_Grid_of_Australia_48,	17348)
-ValuePair(Proj_Map_Grid_of_Australia_49,	17349)
-ValuePair(Proj_Map_Grid_of_Australia_50,	17350)
-ValuePair(Proj_Map_Grid_of_Australia_51,	17351)
-ValuePair(Proj_Map_Grid_of_Australia_52,	17352)
-ValuePair(Proj_Map_Grid_of_Australia_53,	17353)
-ValuePair(Proj_Map_Grid_of_Australia_54,	17354)
-ValuePair(Proj_Map_Grid_of_Australia_55,	17355)
-ValuePair(Proj_Map_Grid_of_Australia_56,	17356)
-ValuePair(Proj_Map_Grid_of_Australia_57,	17357)
-ValuePair(Proj_Map_Grid_of_Australia_58,	17358)
-ValuePair(Proj_Australian_Map_Grid_48,	17448)
-ValuePair(Proj_Australian_Map_Grid_49,	17449)
-ValuePair(Proj_Australian_Map_Grid_50,	17450)
-ValuePair(Proj_Australian_Map_Grid_51,	17451)
-ValuePair(Proj_Australian_Map_Grid_52,	17452)
-ValuePair(Proj_Australian_Map_Grid_53,	17453)
-ValuePair(Proj_Australian_Map_Grid_54,	17454)
-ValuePair(Proj_Australian_Map_Grid_55,	17455)
-ValuePair(Proj_Australian_Map_Grid_56,	17456)
-ValuePair(Proj_Australian_Map_Grid_57,	17457)
-ValuePair(Proj_Australian_Map_Grid_58,	17458)
-ValuePair(Proj_Argentina_1,	18031)
-ValuePair(Proj_Argentina_2,	18032)
-ValuePair(Proj_Argentina_3,	18033)
-ValuePair(Proj_Argentina_4,	18034)
-ValuePair(Proj_Argentina_5,	18035)
-ValuePair(Proj_Argentina_6,	18036)
-ValuePair(Proj_Argentina_7,	18037)
-ValuePair(Proj_Colombia_3W,	18051)
-ValuePair(Proj_Colombia_Bogota,	18052)
-ValuePair(Proj_Colombia_3E,	18053)
-ValuePair(Proj_Colombia_6E,	18054)
-ValuePair(Proj_Egypt_Red_Belt,	18072)
-ValuePair(Proj_Egypt_Purple_Belt,	18073)
-ValuePair(Proj_Extended_Purple_Belt,	18074)
-ValuePair(Proj_New_Zealand_North_Island_Nat_Grid,	18141)
-ValuePair(Proj_New_Zealand_South_Island_Nat_Grid,	18142)
-ValuePair(Proj_Bahrain_Grid,	19900)
-ValuePair(Proj_Netherlands_E_Indies_Equatorial,	19905)
-ValuePair(Proj_RSO_Borneo,	19912)
-/* end of list */
diff --git a/src/tiff/epsg_units.inc b/src/tiff/epsg_units.inc
deleted file mode 100644
index 9aef060..0000000
--- a/src/tiff/epsg_units.inc
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Rev. 0.2 EPSG/POSC Units Database.
- */
- 
-#ifdef INCLUDE_OLD_CODES
-#include geo_units.inc
-#endif /* OLD Codes */
-
-ValuePair(Linear_Meter,	9001)
-ValuePair(Linear_Foot,	9002)
-ValuePair(Linear_Foot_US_Survey,	9003)
-ValuePair(Linear_Foot_Modified_American,	9004)
-ValuePair(Linear_Foot_Clarke,	9005)
-ValuePair(Linear_Foot_Indian,	9006)
-ValuePair(Linear_Link,	9007)
-ValuePair(Linear_Link_Benoit,	9008)
-ValuePair(Linear_Link_Sears,	9009)
-ValuePair(Linear_Chain_Benoit,	9010)
-ValuePair(Linear_Chain_Sears,	9011)
-ValuePair(Linear_Yard_Sears,	9012)
-ValuePair(Linear_Yard_Indian,	9013)
-ValuePair(Linear_Fathom,	9014)
-ValuePair(Linear_Mile_International_Nautical,	9015)
-/*
- *  Angular Units
- */
-ValuePair(Angular_Radian,	9101)
-ValuePair(Angular_Degree,	9102)
-ValuePair(Angular_Arc_Minute,	9103)
-ValuePair(Angular_Arc_Second,	9104)
-ValuePair(Angular_Grad,	9105)
-ValuePair(Angular_Gon,	9106)
-ValuePair(Angular_DMS,	9107)
-ValuePair(Angular_DMS_Hemisphere,	9108)
-/* end of list */
diff --git a/src/tiff/epsg_vertcs.inc b/src/tiff/epsg_vertcs.inc
deleted file mode 100644
index 89e3255..0000000
--- a/src/tiff/epsg_vertcs.inc
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- *  EPSG/POSC Ellipsoid-referenced Vertical CS
- *   Note: these should correspond exactly with the Ellipsoid database.
- */
-ValuePair(VertCS_Airy_1830_ellipsoid,	5001)
-ValuePair(VertCS_Airy_Modified_1849_ellipsoid,	5002)
-ValuePair(VertCS_ANS_ellipsoid,	5003)
-ValuePair(VertCS_Bessel_1841_ellipsoid,	5004)
-ValuePair(VertCS_Bessel_Modified_ellipsoid,	5005)
-ValuePair(VertCS_Bessel_Namibia_ellipsoid,	5006)
-ValuePair(VertCS_Clarke_1858_ellipsoid,	5007)
-ValuePair(VertCS_Clarke_1866_ellipsoid,	5008)
-ValuePair(VertCS_Clarke_1880_Benoit_ellipsoid,	5010)
-ValuePair(VertCS_Clarke_1880_IGN_ellipsoid,	5011)
-ValuePair(VertCS_Clarke_1880_RGS_ellipsoid,	5012)
-ValuePair(VertCS_Clarke_1880_Arc_ellipsoid,	5013)
-ValuePair(VertCS_Clarke_1880_SGA_1922_ellipsoid,	5014)
-ValuePair(VertCS_Everest_1830_1937_Adjustment_ellipsoid,	5015)
-ValuePair(VertCS_Everest_1830_1967_Definition_ellipsoid,	5016)
-ValuePair(VertCS_Everest_1830_1975_Definition_ellipsoid,	5017)
-ValuePair(VertCS_Everest_1830_Modified_ellipsoid,	5018)
-ValuePair(VertCS_GRS_1980_ellipsoid,	5019)
-ValuePair(VertCS_Helmert_1906_ellipsoid,	5020)
-ValuePair(VertCS_INS_ellipsoid,	5021)
-ValuePair(VertCS_International_1924_ellipsoid,	5022)
-ValuePair(VertCS_International_1967_ellipsoid,	5023)
-ValuePair(VertCS_Krassowsky_1940_ellipsoid,	5024)
-ValuePair(VertCS_NWL_9D_ellipsoid,	5025)
-ValuePair(VertCS_NWL_10D_ellipsoid,	5026)
-ValuePair(VertCS_Plessis_1817_ellipsoid,	5027)
-ValuePair(VertCS_Struve_1860_ellipsoid,	5028)
-ValuePair(VertCS_War_Office_ellipsoid,	5029)
-ValuePair(VertCS_WGS_84_ellipsoid,	5030)
-ValuePair(VertCS_GEM_10C_ellipsoid,	5031)
-ValuePair(VertCS_OSU86F_ellipsoid,	5032)
-ValuePair(VertCS_OSU91A_ellipsoid,	5033)
-/*
- *  Other established Vertical CS
- */
-ValuePair(VertCS_Newlyn,	5101)
-ValuePair(VertCS_North_American_Vertical_Datum_1929,	5102)
-ValuePair(VertCS_North_American_Vertical_Datum_1988,	5103)
-ValuePair(VertCS_Yellow_Sea_1956,	5104)
-ValuePair(VertCS_Baltic_Sea,	5105)
-ValuePair(VertCS_Caspian_Sea,	5106)
-/* end of list */
diff --git a/src/tiff/fax3sm.c b/src/tiff/fax3sm.c
deleted file mode 100644
index 1d0f34a..0000000
--- a/src/tiff/fax3sm.c
+++ /dev/null
@@ -1,1046 +0,0 @@
-/* WARNING, this file was automatically generated by the
-    mkg3states program */
-#include "tiff.h"
-#include "tif_fax3.h"
- const  TIFFFaxTabEnt TIFFFaxMainTable[128] = {
-12,7,0,3,1,0,5,3,1,3,1,0,2,3,0,3,1,0,4,3,1,3,1,0,1,4,0,3,1,0,5,3,1,3,1,0,
-2,3,0,3,1,0,4,3,1,3,1,0,5,6,2,3,1,0,5,3,1,3,1,0,2,3,0,3,1,0,4,3,1,3,1,0,
-1,4,0,3,1,0,5,3,1,3,1,0,2,3,0,3,1,0,4,3,1,3,1,0,5,7,3,3,1,0,5,3,1,3,1,0,
-2,3,0,3,1,0,4,3,1,3,1,0,1,4,0,3,1,0,5,3,1,3,1,0,2,3,0,3,1,0,4,3,1,3,1,0,
-4,6,2,3,1,0,5,3,1,3,1,0,2,3,0,3,1,0,4,3,1,3,1,0,1,4,0,3,1,0,5,3,1,3,1,0,
-2,3,0,3,1,0,4,3,1,3,1,0,6,7,0,3,1,0,5,3,1,3,1,0,2,3,0,3,1,0,4,3,1,3,1,0,
-1,4,0,3,1,0,5,3,1,3,1,0,2,3,0,3,1,0,4,3,1,3,1,0,5,6,2,3,1,0,5,3,1,3,1,0,
-2,3,0,3,1,0,4,3,1,3,1,0,1,4,0,3,1,0,5,3,1,3,1,0,2,3,0,3,1,0,4,3,1,3,1,0,
-4,7,3,3,1,0,5,3,1,3,1,0,2,3,0,3,1,0,4,3,1,3,1,0,1,4,0,3,1,0,5,3,1,3,1,0,
-2,3,0,3,1,0,4,3,1,3,1,0,4,6,2,3,1,0,5,3,1,3,1,0,2,3,0,3,1,0,4,3,1,3,1,0,
-1,4,0,3,1,0,5,3,1,3,1,0,2,3,0,3,1,0,4,3,1,3,1,0
-};
-const TIFFFaxTabEnt TIFFFaxWhiteTable[4096] = {
-12,11,0,7,4,3,7,5,11,7,4,5,7,6,12,7,5,9,9,6,1664,7,4,6,7,7,20,9,5,128,7,7,24,7,6,14,
-7,7,28,7,4,4,7,4,2,7,4,7,7,7,23,7,4,3,7,7,27,7,4,5,7,8,39,7,6,16,9,8,576,7,4,6,
-7,7,19,7,5,8,7,8,55,9,5,64,7,5,10,7,4,4,7,4,2,7,4,7,7,8,45,7,4,3,7,5,11,7,4,5,
-7,8,53,7,5,9,9,8,448,7,4,6,7,8,35,9,5,128,7,8,51,7,6,15,7,8,63,7,4,4,7,4,2,7,4,7,
-7,6,13,7,4,3,9,9,1472,7,4,5,7,8,43,7,6,17,9,9,1216,7,4,6,7,6,1,7,5,8,9,6,192,9,5,64,
-7,5,10,7,4,4,7,4,2,7,4,7,7,8,29,7,4,3,7,5,11,7,4,5,7,6,12,7,5,9,9,6,1664,7,4,6,
-7,8,33,9,5,128,7,8,49,7,6,14,7,8,61,7,4,4,7,4,2,7,4,7,7,8,47,7,4,3,7,8,59,7,4,5,
-7,8,41,7,6,16,9,9,960,7,4,6,7,8,31,7,5,8,7,8,57,9,5,64,7,5,10,7,4,4,7,4,2,7,4,7,
-7,7,22,7,4,3,7,5,11,7,4,5,7,7,26,7,5,9,9,9,704,7,4,6,7,8,37,9,5,128,7,7,25,7,6,15,
-9,8,320,7,4,4,7,4,2,7,4,7,7,6,13,7,4,3,7,7,18,7,4,5,7,7,21,7,6,17,9,7,256,7,4,6,
-7,6,1,7,5,8,9,6,192,9,5,64,7,5,10,7,4,4,7,4,2,7,4,7,11,11,1792,7,4,3,7,5,11,7,4,5,
-7,6,12,7,5,9,9,6,1664,7,4,6,7,7,20,9,5,128,7,7,24,7,6,14,7,7,28,7,4,4,7,4,2,7,4,7,
-7,7,23,7,4,3,7,7,27,7,4,5,7,8,40,7,6,16,9,9,832,7,4,6,7,7,19,7,5,8,7,8,56,9,5,64,
-7,5,10,7,4,4,7,4,2,7,4,7,7,8,46,7,4,3,7,5,11,7,4,5,7,8,54,7,5,9,9,8,512,7,4,6,
-7,8,36,9,5,128,7,8,52,7,6,15,7,8,0,7,4,4,7,4,2,7,4,7,7,6,13,7,4,3,9,9,1600,7,4,5,
-7,8,44,7,6,17,9,9,1344,7,4,6,7,6,1,7,5,8,9,6,192,9,5,64,7,5,10,7,4,4,7,4,2,7,4,7,
-7,8,30,7,4,3,7,5,11,7,4,5,7,6,12,7,5,9,9,6,1664,7,4,6,7,8,34,9,5,128,7,8,50,7,6,14,
-7,8,62,7,4,4,7,4,2,7,4,7,7,8,48,7,4,3,7,8,60,7,4,5,7,8,42,7,6,16,9,9,1088,7,4,6,
-7,8,32,7,5,8,7,8,58,9,5,64,7,5,10,7,4,4,7,4,2,7,4,7,7,7,22,7,4,3,7,5,11,7,4,5,
-7,7,26,7,5,9,9,8,640,7,4,6,7,8,38,9,5,128,7,7,25,7,6,15,9,8,384,7,4,4,7,4,2,7,4,7,
-7,6,13,7,4,3,7,7,18,7,4,5,7,7,21,7,6,17,9,7,256,7,4,6,7,6,1,7,5,8,9,6,192,9,5,64,
-7,5,10,7,4,4,7,4,2,7,4,7,0,0,0,7,4,3,7,5,11,7,4,5,7,6,12,7,5,9,9,6,1664,7,4,6,
-7,7,20,9,5,128,7,7,24,7,6,14,7,7,28,7,4,4,7,4,2,7,4,7,7,7,23,7,4,3,7,7,27,7,4,5,
-7,8,39,7,6,16,9,8,576,7,4,6,7,7,19,7,5,8,7,8,55,9,5,64,7,5,10,7,4,4,7,4,2,7,4,7,
-7,8,45,7,4,3,7,5,11,7,4,5,7,8,53,7,5,9,9,8,448,7,4,6,7,8,35,9,5,128,7,8,51,7,6,15,
-7,8,63,7,4,4,7,4,2,7,4,7,7,6,13,7,4,3,9,9,1536,7,4,5,7,8,43,7,6,17,9,9,1280,7,4,6,
-7,6,1,7,5,8,9,6,192,9,5,64,7,5,10,7,4,4,7,4,2,7,4,7,7,8,29,7,4,3,7,5,11,7,4,5,
-7,6,12,7,5,9,9,6,1664,7,4,6,7,8,33,9,5,128,7,8,49,7,6,14,7,8,61,7,4,4,7,4,2,7,4,7,
-7,8,47,7,4,3,7,8,59,7,4,5,7,8,41,7,6,16,9,9,1024,7,4,6,7,8,31,7,5,8,7,8,57,9,5,64,
-7,5,10,7,4,4,7,4,2,7,4,7,7,7,22,7,4,3,7,5,11,7,4,5,7,7,26,7,5,9,9,9,768,7,4,6,
-7,8,37,9,5,128,7,7,25,7,6,15,9,8,320,7,4,4,7,4,2,7,4,7,7,6,13,7,4,3,7,7,18,7,4,5,
-7,7,21,7,6,17,9,7,256,7,4,6,7,6,1,7,5,8,9,6,192,9,5,64,7,5,10,7,4,4,7,4,2,7,4,7,
-11,11,1856,7,4,3,7,5,11,7,4,5,7,6,12,7,5,9,9,6,1664,7,4,6,7,7,20,9,5,128,7,7,24,7,6,14,
-7,7,28,7,4,4,7,4,2,7,4,7,7,7,23,7,4,3,7,7,27,7,4,5,7,8,40,7,6,16,9,9,896,7,4,6,
-7,7,19,7,5,8,7,8,56,9,5,64,7,5,10,7,4,4,7,4,2,7,4,7,7,8,46,7,4,3,7,5,11,7,4,5,
-7,8,54,7,5,9,9,8,512,7,4,6,7,8,36,9,5,128,7,8,52,7,6,15,7,8,0,7,4,4,7,4,2,7,4,7,
-7,6,13,7,4,3,9,9,1728,7,4,5,7,8,44,7,6,17,9,9,1408,7,4,6,7,6,1,7,5,8,9,6,192,9,5,64,
-7,5,10,7,4,4,7,4,2,7,4,7,7,8,30,7,4,3,7,5,11,7,4,5,7,6,12,7,5,9,9,6,1664,7,4,6,
-7,8,34,9,5,128,7,8,50,7,6,14,7,8,62,7,4,4,7,4,2,7,4,7,7,8,48,7,4,3,7,8,60,7,4,5,
-7,8,42,7,6,16,9,9,1152,7,4,6,7,8,32,7,5,8,7,8,58,9,5,64,7,5,10,7,4,4,7,4,2,7,4,7,
-7,7,22,7,4,3,7,5,11,7,4,5,7,7,26,7,5,9,9,8,640,7,4,6,7,8,38,9,5,128,7,7,25,7,6,15,
-9,8,384,7,4,4,7,4,2,7,4,7,7,6,13,7,4,3,7,7,18,7,4,5,7,7,21,7,6,17,9,7,256,7,4,6,
-7,6,1,7,5,8,9,6,192,9,5,64,7,5,10,7,4,4,7,4,2,7,4,7,0,0,0,7,4,3,7,5,11,7,4,5,
-7,6,12,7,5,9,9,6,1664,7,4,6,7,7,20,9,5,128,7,7,24,7,6,14,7,7,28,7,4,4,7,4,2,7,4,7,
-7,7,23,7,4,3,7,7,27,7,4,5,7,8,39,7,6,16,9,8,576,7,4,6,7,7,19,7,5,8,7,8,55,9,5,64,
-7,5,10,7,4,4,7,4,2,7,4,7,7,8,45,7,4,3,7,5,11,7,4,5,7,8,53,7,5,9,9,8,448,7,4,6,
-7,8,35,9,5,128,7,8,51,7,6,15,7,8,63,7,4,4,7,4,2,7,4,7,7,6,13,7,4,3,9,9,1472,7,4,5,
-7,8,43,7,6,17,9,9,1216,7,4,6,7,6,1,7,5,8,9,6,192,9,5,64,7,5,10,7,4,4,7,4,2,7,4,7,
-7,8,29,7,4,3,7,5,11,7,4,5,7,6,12,7,5,9,9,6,1664,7,4,6,7,8,33,9,5,128,7,8,49,7,6,14,
-7,8,61,7,4,4,7,4,2,7,4,7,7,8,47,7,4,3,7,8,59,7,4,5,7,8,41,7,6,16,9,9,960,7,4,6,
-7,8,31,7,5,8,7,8,57,9,5,64,7,5,10,7,4,4,7,4,2,7,4,7,7,7,22,7,4,3,7,5,11,7,4,5,
-7,7,26,7,5,9,9,9,704,7,4,6,7,8,37,9,5,128,7,7,25,7,6,15,9,8,320,7,4,4,7,4,2,7,4,7,
-7,6,13,7,4,3,7,7,18,7,4,5,7,7,21,7,6,17,9,7,256,7,4,6,7,6,1,7,5,8,9,6,192,9,5,64,
-7,5,10,7,4,4,7,4,2,7,4,7,11,12,2112,7,4,3,7,5,11,7,4,5,7,6,12,7,5,9,9,6,1664,7,4,6,
-7,7,20,9,5,128,7,7,24,7,6,14,7,7,28,7,4,4,7,4,2,7,4,7,7,7,23,7,4,3,7,7,27,7,4,5,
-7,8,40,7,6,16,9,9,832,7,4,6,7,7,19,7,5,8,7,8,56,9,5,64,7,5,10,7,4,4,7,4,2,7,4,7,
-7,8,46,7,4,3,7,5,11,7,4,5,7,8,54,7,5,9,9,8,512,7,4,6,7,8,36,9,5,128,7,8,52,7,6,15,
-7,8,0,7,4,4,7,4,2,7,4,7,7,6,13,7,4,3,9,9,1600,7,4,5,7,8,44,7,6,17,9,9,1344,7,4,6,
-7,6,1,7,5,8,9,6,192,9,5,64,7,5,10,7,4,4,7,4,2,7,4,7,7,8,30,7,4,3,7,5,11,7,4,5,
-7,6,12,7,5,9,9,6,1664,7,4,6,7,8,34,9,5,128,7,8,50,7,6,14,7,8,62,7,4,4,7,4,2,7,4,7,
-7,8,48,7,4,3,7,8,60,7,4,5,7,8,42,7,6,16,9,9,1088,7,4,6,7,8,32,7,5,8,7,8,58,9,5,64,
-7,5,10,7,4,4,7,4,2,7,4,7,7,7,22,7,4,3,7,5,11,7,4,5,7,7,26,7,5,9,9,8,640,7,4,6,
-7,8,38,9,5,128,7,7,25,7,6,15,9,8,384,7,4,4,7,4,2,7,4,7,7,6,13,7,4,3,7,7,18,7,4,5,
-7,7,21,7,6,17,9,7,256,7,4,6,7,6,1,7,5,8,9,6,192,9,5,64,7,5,10,7,4,4,7,4,2,7,4,7,
-0,0,0,7,4,3,7,5,11,7,4,5,7,6,12,7,5,9,9,6,1664,7,4,6,7,7,20,9,5,128,7,7,24,7,6,14,
-7,7,28,7,4,4,7,4,2,7,4,7,7,7,23,7,4,3,7,7,27,7,4,5,7,8,39,7,6,16,9,8,576,7,4,6,
-7,7,19,7,5,8,7,8,55,9,5,64,7,5,10,7,4,4,7,4,2,7,4,7,7,8,45,7,4,3,7,5,11,7,4,5,
-7,8,53,7,5,9,9,8,448,7,4,6,7,8,35,9,5,128,7,8,51,7,6,15,7,8,63,7,4,4,7,4,2,7,4,7,
-7,6,13,7,4,3,9,9,1536,7,4,5,7,8,43,7,6,17,9,9,1280,7,4,6,7,6,1,7,5,8,9,6,192,9,5,64,
-7,5,10,7,4,4,7,4,2,7,4,7,7,8,29,7,4,3,7,5,11,7,4,5,7,6,12,7,5,9,9,6,1664,7,4,6,
-7,8,33,9,5,128,7,8,49,7,6,14,7,8,61,7,4,4,7,4,2,7,4,7,7,8,47,7,4,3,7,8,59,7,4,5,
-7,8,41,7,6,16,9,9,1024,7,4,6,7,8,31,7,5,8,7,8,57,9,5,64,7,5,10,7,4,4,7,4,2,7,4,7,
-7,7,22,7,4,3,7,5,11,7,4,5,7,7,26,7,5,9,9,9,768,7,4,6,7,8,37,9,5,128,7,7,25,7,6,15,
-9,8,320,7,4,4,7,4,2,7,4,7,7,6,13,7,4,3,7,7,18,7,4,5,7,7,21,7,6,17,9,7,256,7,4,6,
-7,6,1,7,5,8,9,6,192,9,5,64,7,5,10,7,4,4,7,4,2,7,4,7,11,12,2368,7,4,3,7,5,11,7,4,5,
-7,6,12,7,5,9,9,6,1664,7,4,6,7,7,20,9,5,128,7,7,24,7,6,14,7,7,28,7,4,4,7,4,2,7,4,7,
-7,7,23,7,4,3,7,7,27,7,4,5,7,8,40,7,6,16,9,9,896,7,4,6,7,7,19,7,5,8,7,8,56,9,5,64,
-7,5,10,7,4,4,7,4,2,7,4,7,7,8,46,7,4,3,7,5,11,7,4,5,7,8,54,7,5,9,9,8,512,7,4,6,
-7,8,36,9,5,128,7,8,52,7,6,15,7,8,0,7,4,4,7,4,2,7,4,7,7,6,13,7,4,3,9,9,1728,7,4,5,
-7,8,44,7,6,17,9,9,1408,7,4,6,7,6,1,7,5,8,9,6,192,9,5,64,7,5,10,7,4,4,7,4,2,7,4,7,
-7,8,30,7,4,3,7,5,11,7,4,5,7,6,12,7,5,9,9,6,1664,7,4,6,7,8,34,9,5,128,7,8,50,7,6,14,
-7,8,62,7,4,4,7,4,2,7,4,7,7,8,48,7,4,3,7,8,60,7,4,5,7,8,42,7,6,16,9,9,1152,7,4,6,
-7,8,32,7,5,8,7,8,58,9,5,64,7,5,10,7,4,4,7,4,2,7,4,7,7,7,22,7,4,3,7,5,11,7,4,5,
-7,7,26,7,5,9,9,8,640,7,4,6,7,8,38,9,5,128,7,7,25,7,6,15,9,8,384,7,4,4,7,4,2,7,4,7,
-7,6,13,7,4,3,7,7,18,7,4,5,7,7,21,7,6,17,9,7,256,7,4,6,7,6,1,7,5,8,9,6,192,9,5,64,
-7,5,10,7,4,4,7,4,2,7,4,7,0,0,0,7,4,3,7,5,11,7,4,5,7,6,12,7,5,9,9,6,1664,7,4,6,
-7,7,20,9,5,128,7,7,24,7,6,14,7,7,28,7,4,4,7,4,2,7,4,7,7,7,23,7,4,3,7,7,27,7,4,5,
-7,8,39,7,6,16,9,8,576,7,4,6,7,7,19,7,5,8,7,8,55,9,5,64,7,5,10,7,4,4,7,4,2,7,4,7,
-7,8,45,7,4,3,7,5,11,7,4,5,7,8,53,7,5,9,9,8,448,7,4,6,7,8,35,9,5,128,7,8,51,7,6,15,
-7,8,63,7,4,4,7,4,2,7,4,7,7,6,13,7,4,3,9,9,1472,7,4,5,7,8,43,7,6,17,9,9,1216,7,4,6,
-7,6,1,7,5,8,9,6,192,9,5,64,7,5,10,7,4,4,7,4,2,7,4,7,7,8,29,7,4,3,7,5,11,7,4,5,
-7,6,12,7,5,9,9,6,1664,7,4,6,7,8,33,9,5,128,7,8,49,7,6,14,7,8,61,7,4,4,7,4,2,7,4,7,
-7,8,47,7,4,3,7,8,59,7,4,5,7,8,41,7,6,16,9,9,960,7,4,6,7,8,31,7,5,8,7,8,57,9,5,64,
-7,5,10,7,4,4,7,4,2,7,4,7,7,7,22,7,4,3,7,5,11,7,4,5,7,7,26,7,5,9,9,9,704,7,4,6,
-7,8,37,9,5,128,7,7,25,7,6,15,9,8,320,7,4,4,7,4,2,7,4,7,7,6,13,7,4,3,7,7,18,7,4,5,
-7,7,21,7,6,17,9,7,256,7,4,6,7,6,1,7,5,8,9,6,192,9,5,64,7,5,10,7,4,4,7,4,2,7,4,7,
-11,12,1984,7,4,3,7,5,11,7,4,5,7,6,12,7,5,9,9,6,1664,7,4,6,7,7,20,9,5,128,7,7,24,7,6,14,
-7,7,28,7,4,4,7,4,2,7,4,7,7,7,23,7,4,3,7,7,27,7,4,5,7,8,40,7,6,16,9,9,832,7,4,6,
-7,7,19,7,5,8,7,8,56,9,5,64,7,5,10,7,4,4,7,4,2,7,4,7,7,8,46,7,4,3,7,5,11,7,4,5,
-7,8,54,7,5,9,9,8,512,7,4,6,7,8,36,9,5,128,7,8,52,7,6,15,7,8,0,7,4,4,7,4,2,7,4,7,
-7,6,13,7,4,3,9,9,1600,7,4,5,7,8,44,7,6,17,9,9,1344,7,4,6,7,6,1,7,5,8,9,6,192,9,5,64,
-7,5,10,7,4,4,7,4,2,7,4,7,7,8,30,7,4,3,7,5,11,7,4,5,7,6,12,7,5,9,9,6,1664,7,4,6,
-7,8,34,9,5,128,7,8,50,7,6,14,7,8,62,7,4,4,7,4,2,7,4,7,7,8,48,7,4,3,7,8,60,7,4,5,
-7,8,42,7,6,16,9,9,1088,7,4,6,7,8,32,7,5,8,7,8,58,9,5,64,7,5,10,7,4,4,7,4,2,7,4,7,
-7,7,22,7,4,3,7,5,11,7,4,5,7,7,26,7,5,9,9,8,640,7,4,6,7,8,38,9,5,128,7,7,25,7,6,15,
-9,8,384,7,4,4,7,4,2,7,4,7,7,6,13,7,4,3,7,7,18,7,4,5,7,7,21,7,6,17,9,7,256,7,4,6,
-7,6,1,7,5,8,9,6,192,9,5,64,7,5,10,7,4,4,7,4,2,7,4,7,0,0,0,7,4,3,7,5,11,7,4,5,
-7,6,12,7,5,9,9,6,1664,7,4,6,7,7,20,9,5,128,7,7,24,7,6,14,7,7,28,7,4,4,7,4,2,7,4,7,
-7,7,23,7,4,3,7,7,27,7,4,5,7,8,39,7,6,16,9,8,576,7,4,6,7,7,19,7,5,8,7,8,55,9,5,64,
-7,5,10,7,4,4,7,4,2,7,4,7,7,8,45,7,4,3,7,5,11,7,4,5,7,8,53,7,5,9,9,8,448,7,4,6,
-7,8,35,9,5,128,7,8,51,7,6,15,7,8,63,7,4,4,7,4,2,7,4,7,7,6,13,7,4,3,9,9,1536,7,4,5,
-7,8,43,7,6,17,9,9,1280,7,4,6,7,6,1,7,5,8,9,6,192,9,5,64,7,5,10,7,4,4,7,4,2,7,4,7,
-7,8,29,7,4,3,7,5,11,7,4,5,7,6,12,7,5,9,9,6,1664,7,4,6,7,8,33,9,5,128,7,8,49,7,6,14,
-7,8,61,7,4,4,7,4,2,7,4,7,7,8,47,7,4,3,7,8,59,7,4,5,7,8,41,7,6,16,9,9,1024,7,4,6,
-7,8,31,7,5,8,7,8,57,9,5,64,7,5,10,7,4,4,7,4,2,7,4,7,7,7,22,7,4,3,7,5,11,7,4,5,
-7,7,26,7,5,9,9,9,768,7,4,6,7,8,37,9,5,128,7,7,25,7,6,15,9,8,320,7,4,4,7,4,2,7,4,7,
-7,6,13,7,4,3,7,7,18,7,4,5,7,7,21,7,6,17,9,7,256,7,4,6,7,6,1,7,5,8,9,6,192,9,5,64,
-7,5,10,7,4,4,7,4,2,7,4,7,11,11,1920,7,4,3,7,5,11,7,4,5,7,6,12,7,5,9,9,6,1664,7,4,6,
-7,7,20,9,5,128,7,7,24,7,6,14,7,7,28,7,4,4,7,4,2,7,4,7,7,7,23,7,4,3,7,7,27,7,4,5,
-7,8,40,7,6,16,9,9,896,7,4,6,7,7,19,7,5,8,7,8,56,9,5,64,7,5,10,7,4,4,7,4,2,7,4,7,
-7,8,46,7,4,3,7,5,11,7,4,5,7,8,54,7,5,9,9,8,512,7,4,6,7,8,36,9,5,128,7,8,52,7,6,15,
-7,8,0,7,4,4,7,4,2,7,4,7,7,6,13,7,4,3,9,9,1728,7,4,5,7,8,44,7,6,17,9,9,1408,7,4,6,
-7,6,1,7,5,8,9,6,192,9,5,64,7,5,10,7,4,4,7,4,2,7,4,7,7,8,30,7,4,3,7,5,11,7,4,5,
-7,6,12,7,5,9,9,6,1664,7,4,6,7,8,34,9,5,128,7,8,50,7,6,14,7,8,62,7,4,4,7,4,2,7,4,7,
-7,8,48,7,4,3,7,8,60,7,4,5,7,8,42,7,6,16,9,9,1152,7,4,6,7,8,32,7,5,8,7,8,58,9,5,64,
-7,5,10,7,4,4,7,4,2,7,4,7,7,7,22,7,4,3,7,5,11,7,4,5,7,7,26,7,5,9,9,8,640,7,4,6,
-7,8,38,9,5,128,7,7,25,7,6,15,9,8,384,7,4,4,7,4,2,7,4,7,7,6,13,7,4,3,7,7,18,7,4,5,
-7,7,21,7,6,17,9,7,256,7,4,6,7,6,1,7,5,8,9,6,192,9,5,64,7,5,10,7,4,4,7,4,2,7,4,7,
-0,0,0,7,4,3,7,5,11,7,4,5,7,6,12,7,5,9,9,6,1664,7,4,6,7,7,20,9,5,128,7,7,24,7,6,14,
-7,7,28,7,4,4,7,4,2,7,4,7,7,7,23,7,4,3,7,7,27,7,4,5,7,8,39,7,6,16,9,8,576,7,4,6,
-7,7,19,7,5,8,7,8,55,9,5,64,7,5,10,7,4,4,7,4,2,7,4,7,7,8,45,7,4,3,7,5,11,7,4,5,
-7,8,53,7,5,9,9,8,448,7,4,6,7,8,35,9,5,128,7,8,51,7,6,15,7,8,63,7,4,4,7,4,2,7,4,7,
-7,6,13,7,4,3,9,9,1472,7,4,5,7,8,43,7,6,17,9,9,1216,7,4,6,7,6,1,7,5,8,9,6,192,9,5,64,
-7,5,10,7,4,4,7,4,2,7,4,7,7,8,29,7,4,3,7,5,11,7,4,5,7,6,12,7,5,9,9,6,1664,7,4,6,
-7,8,33,9,5,128,7,8,49,7,6,14,7,8,61,7,4,4,7,4,2,7,4,7,7,8,47,7,4,3,7,8,59,7,4,5,
-7,8,41,7,6,16,9,9,960,7,4,6,7,8,31,7,5,8,7,8,57,9,5,64,7,5,10,7,4,4,7,4,2,7,4,7,
-7,7,22,7,4,3,7,5,11,7,4,5,7,7,26,7,5,9,9,9,704,7,4,6,7,8,37,9,5,128,7,7,25,7,6,15,
-9,8,320,7,4,4,7,4,2,7,4,7,7,6,13,7,4,3,7,7,18,7,4,5,7,7,21,7,6,17,9,7,256,7,4,6,
-7,6,1,7,5,8,9,6,192,9,5,64,7,5,10,7,4,4,7,4,2,7,4,7,11,12,2240,7,4,3,7,5,11,7,4,5,
-7,6,12,7,5,9,9,6,1664,7,4,6,7,7,20,9,5,128,7,7,24,7,6,14,7,7,28,7,4,4,7,4,2,7,4,7,
-7,7,23,7,4,3,7,7,27,7,4,5,7,8,40,7,6,16,9,9,832,7,4,6,7,7,19,7,5,8,7,8,56,9,5,64,
-7,5,10,7,4,4,7,4,2,7,4,7,7,8,46,7,4,3,7,5,11,7,4,5,7,8,54,7,5,9,9,8,512,7,4,6,
-7,8,36,9,5,128,7,8,52,7,6,15,7,8,0,7,4,4,7,4,2,7,4,7,7,6,13,7,4,3,9,9,1600,7,4,5,
-7,8,44,7,6,17,9,9,1344,7,4,6,7,6,1,7,5,8,9,6,192,9,5,64,7,5,10,7,4,4,7,4,2,7,4,7,
-7,8,30,7,4,3,7,5,11,7,4,5,7,6,12,7,5,9,9,6,1664,7,4,6,7,8,34,9,5,128,7,8,50,7,6,14,
-7,8,62,7,4,4,7,4,2,7,4,7,7,8,48,7,4,3,7,8,60,7,4,5,7,8,42,7,6,16,9,9,1088,7,4,6,
-7,8,32,7,5,8,7,8,58,9,5,64,7,5,10,7,4,4,7,4,2,7,4,7,7,7,22,7,4,3,7,5,11,7,4,5,
-7,7,26,7,5,9,9,8,640,7,4,6,7,8,38,9,5,128,7,7,25,7,6,15,9,8,384,7,4,4,7,4,2,7,4,7,
-7,6,13,7,4,3,7,7,18,7,4,5,7,7,21,7,6,17,9,7,256,7,4,6,7,6,1,7,5,8,9,6,192,9,5,64,
-7,5,10,7,4,4,7,4,2,7,4,7,0,0,0,7,4,3,7,5,11,7,4,5,7,6,12,7,5,9,9,6,1664,7,4,6,
-7,7,20,9,5,128,7,7,24,7,6,14,7,7,28,7,4,4,7,4,2,7,4,7,7,7,23,7,4,3,7,7,27,7,4,5,
-7,8,39,7,6,16,9,8,576,7,4,6,7,7,19,7,5,8,7,8,55,9,5,64,7,5,10,7,4,4,7,4,2,7,4,7,
-7,8,45,7,4,3,7,5,11,7,4,5,7,8,53,7,5,9,9,8,448,7,4,6,7,8,35,9,5,128,7,8,51,7,6,15,
-7,8,63,7,4,4,7,4,2,7,4,7,7,6,13,7,4,3,9,9,1536,7,4,5,7,8,43,7,6,17,9,9,1280,7,4,6,
-7,6,1,7,5,8,9,6,192,9,5,64,7,5,10,7,4,4,7,4,2,7,4,7,7,8,29,7,4,3,7,5,11,7,4,5,
-7,6,12,7,5,9,9,6,1664,7,4,6,7,8,33,9,5,128,7,8,49,7,6,14,7,8,61,7,4,4,7,4,2,7,4,7,
-7,8,47,7,4,3,7,8,59,7,4,5,7,8,41,7,6,16,9,9,1024,7,4,6,7,8,31,7,5,8,7,8,57,9,5,64,
-7,5,10,7,4,4,7,4,2,7,4,7,7,7,22,7,4,3,7,5,11,7,4,5,7,7,26,7,5,9,9,9,768,7,4,6,
-7,8,37,9,5,128,7,7,25,7,6,15,9,8,320,7,4,4,7,4,2,7,4,7,7,6,13,7,4,3,7,7,18,7,4,5,
-7,7,21,7,6,17,9,7,256,7,4,6,7,6,1,7,5,8,9,6,192,9,5,64,7,5,10,7,4,4,7,4,2,7,4,7,
-11,12,2496,7,4,3,7,5,11,7,4,5,7,6,12,7,5,9,9,6,1664,7,4,6,7,7,20,9,5,128,7,7,24,7,6,14,
-7,7,28,7,4,4,7,4,2,7,4,7,7,7,23,7,4,3,7,7,27,7,4,5,7,8,40,7,6,16,9,9,896,7,4,6,
-7,7,19,7,5,8,7,8,56,9,5,64,7,5,10,7,4,4,7,4,2,7,4,7,7,8,46,7,4,3,7,5,11,7,4,5,
-7,8,54,7,5,9,9,8,512,7,4,6,7,8,36,9,5,128,7,8,52,7,6,15,7,8,0,7,4,4,7,4,2,7,4,7,
-7,6,13,7,4,3,9,9,1728,7,4,5,7,8,44,7,6,17,9,9,1408,7,4,6,7,6,1,7,5,8,9,6,192,9,5,64,
-7,5,10,7,4,4,7,4,2,7,4,7,7,8,30,7,4,3,7,5,11,7,4,5,7,6,12,7,5,9,9,6,1664,7,4,6,
-7,8,34,9,5,128,7,8,50,7,6,14,7,8,62,7,4,4,7,4,2,7,4,7,7,8,48,7,4,3,7,8,60,7,4,5,
-7,8,42,7,6,16,9,9,1152,7,4,6,7,8,32,7,5,8,7,8,58,9,5,64,7,5,10,7,4,4,7,4,2,7,4,7,
-7,7,22,7,4,3,7,5,11,7,4,5,7,7,26,7,5,9,9,8,640,7,4,6,7,8,38,9,5,128,7,7,25,7,6,15,
-9,8,384,7,4,4,7,4,2,7,4,7,7,6,13,7,4,3,7,7,18,7,4,5,7,7,21,7,6,17,9,7,256,7,4,6,
-7,6,1,7,5,8,9,6,192,9,5,64,7,5,10,7,4,4,7,4,2,7,4,7,12,11,0,7,4,3,7,5,11,7,4,5,
-7,6,12,7,5,9,9,6,1664,7,4,6,7,7,20,9,5,128,7,7,24,7,6,14,7,7,28,7,4,4,7,4,2,7,4,7,
-7,7,23,7,4,3,7,7,27,7,4,5,7,8,39,7,6,16,9,8,576,7,4,6,7,7,19,7,5,8,7,8,55,9,5,64,
-7,5,10,7,4,4,7,4,2,7,4,7,7,8,45,7,4,3,7,5,11,7,4,5,7,8,53,7,5,9,9,8,448,7,4,6,
-7,8,35,9,5,128,7,8,51,7,6,15,7,8,63,7,4,4,7,4,2,7,4,7,7,6,13,7,4,3,9,9,1472,7,4,5,
-7,8,43,7,6,17,9,9,1216,7,4,6,7,6,1,7,5,8,9,6,192,9,5,64,7,5,10,7,4,4,7,4,2,7,4,7,
-7,8,29,7,4,3,7,5,11,7,4,5,7,6,12,7,5,9,9,6,1664,7,4,6,7,8,33,9,5,128,7,8,49,7,6,14,
-7,8,61,7,4,4,7,4,2,7,4,7,7,8,47,7,4,3,7,8,59,7,4,5,7,8,41,7,6,16,9,9,960,7,4,6,
-7,8,31,7,5,8,7,8,57,9,5,64,7,5,10,7,4,4,7,4,2,7,4,7,7,7,22,7,4,3,7,5,11,7,4,5,
-7,7,26,7,5,9,9,9,704,7,4,6,7,8,37,9,5,128,7,7,25,7,6,15,9,8,320,7,4,4,7,4,2,7,4,7,
-7,6,13,7,4,3,7,7,18,7,4,5,7,7,21,7,6,17,9,7,256,7,4,6,7,6,1,7,5,8,9,6,192,9,5,64,
-7,5,10,7,4,4,7,4,2,7,4,7,11,11,1792,7,4,3,7,5,11,7,4,5,7,6,12,7,5,9,9,6,1664,7,4,6,
-7,7,20,9,5,128,7,7,24,7,6,14,7,7,28,7,4,4,7,4,2,7,4,7,7,7,23,7,4,3,7,7,27,7,4,5,
-7,8,40,7,6,16,9,9,832,7,4,6,7,7,19,7,5,8,7,8,56,9,5,64,7,5,10,7,4,4,7,4,2,7,4,7,
-7,8,46,7,4,3,7,5,11,7,4,5,7,8,54,7,5,9,9,8,512,7,4,6,7,8,36,9,5,128,7,8,52,7,6,15,
-7,8,0,7,4,4,7,4,2,7,4,7,7,6,13,7,4,3,9,9,1600,7,4,5,7,8,44,7,6,17,9,9,1344,7,4,6,
-7,6,1,7,5,8,9,6,192,9,5,64,7,5,10,7,4,4,7,4,2,7,4,7,7,8,30,7,4,3,7,5,11,7,4,5,
-7,6,12,7,5,9,9,6,1664,7,4,6,7,8,34,9,5,128,7,8,50,7,6,14,7,8,62,7,4,4,7,4,2,7,4,7,
-7,8,48,7,4,3,7,8,60,7,4,5,7,8,42,7,6,16,9,9,1088,7,4,6,7,8,32,7,5,8,7,8,58,9,5,64,
-7,5,10,7,4,4,7,4,2,7,4,7,7,7,22,7,4,3,7,5,11,7,4,5,7,7,26,7,5,9,9,8,640,7,4,6,
-7,8,38,9,5,128,7,7,25,7,6,15,9,8,384,7,4,4,7,4,2,7,4,7,7,6,13,7,4,3,7,7,18,7,4,5,
-7,7,21,7,6,17,9,7,256,7,4,6,7,6,1,7,5,8,9,6,192,9,5,64,7,5,10,7,4,4,7,4,2,7,4,7,
-0,0,0,7,4,3,7,5,11,7,4,5,7,6,12,7,5,9,9,6,1664,7,4,6,7,7,20,9,5,128,7,7,24,7,6,14,
-7,7,28,7,4,4,7,4,2,7,4,7,7,7,23,7,4,3,7,7,27,7,4,5,7,8,39,7,6,16,9,8,576,7,4,6,
-7,7,19,7,5,8,7,8,55,9,5,64,7,5,10,7,4,4,7,4,2,7,4,7,7,8,45,7,4,3,7,5,11,7,4,5,
-7,8,53,7,5,9,9,8,448,7,4,6,7,8,35,9,5,128,7,8,51,7,6,15,7,8,63,7,4,4,7,4,2,7,4,7,
-7,6,13,7,4,3,9,9,1536,7,4,5,7,8,43,7,6,17,9,9,1280,7,4,6,7,6,1,7,5,8,9,6,192,9,5,64,
-7,5,10,7,4,4,7,4,2,7,4,7,7,8,29,7,4,3,7,5,11,7,4,5,7,6,12,7,5,9,9,6,1664,7,4,6,
-7,8,33,9,5,128,7,8,49,7,6,14,7,8,61,7,4,4,7,4,2,7,4,7,7,8,47,7,4,3,7,8,59,7,4,5,
-7,8,41,7,6,16,9,9,1024,7,4,6,7,8,31,7,5,8,7,8,57,9,5,64,7,5,10,7,4,4,7,4,2,7,4,7,
-7,7,22,7,4,3,7,5,11,7,4,5,7,7,26,7,5,9,9,9,768,7,4,6,7,8,37,9,5,128,7,7,25,7,6,15,
-9,8,320,7,4,4,7,4,2,7,4,7,7,6,13,7,4,3,7,7,18,7,4,5,7,7,21,7,6,17,9,7,256,7,4,6,
-7,6,1,7,5,8,9,6,192,9,5,64,7,5,10,7,4,4,7,4,2,7,4,7,11,11,1856,7,4,3,7,5,11,7,4,5,
-7,6,12,7,5,9,9,6,1664,7,4,6,7,7,20,9,5,128,7,7,24,7,6,14,7,7,28,7,4,4,7,4,2,7,4,7,
-7,7,23,7,4,3,7,7,27,7,4,5,7,8,40,7,6,16,9,9,896,7,4,6,7,7,19,7,5,8,7,8,56,9,5,64,
-7,5,10,7,4,4,7,4,2,7,4,7,7,8,46,7,4,3,7,5,11,7,4,5,7,8,54,7,5,9,9,8,512,7,4,6,
-7,8,36,9,5,128,7,8,52,7,6,15,7,8,0,7,4,4,7,4,2,7,4,7,7,6,13,7,4,3,9,9,1728,7,4,5,
-7,8,44,7,6,17,9,9,1408,7,4,6,7,6,1,7,5,8,9,6,192,9,5,64,7,5,10,7,4,4,7,4,2,7,4,7,
-7,8,30,7,4,3,7,5,11,7,4,5,7,6,12,7,5,9,9,6,1664,7,4,6,7,8,34,9,5,128,7,8,50,7,6,14,
-7,8,62,7,4,4,7,4,2,7,4,7,7,8,48,7,4,3,7,8,60,7,4,5,7,8,42,7,6,16,9,9,1152,7,4,6,
-7,8,32,7,5,8,7,8,58,9,5,64,7,5,10,7,4,4,7,4,2,7,4,7,7,7,22,7,4,3,7,5,11,7,4,5,
-7,7,26,7,5,9,9,8,640,7,4,6,7,8,38,9,5,128,7,7,25,7,6,15,9,8,384,7,4,4,7,4,2,7,4,7,
-7,6,13,7,4,3,7,7,18,7,4,5,7,7,21,7,6,17,9,7,256,7,4,6,7,6,1,7,5,8,9,6,192,9,5,64,
-7,5,10,7,4,4,7,4,2,7,4,7,0,0,0,7,4,3,7,5,11,7,4,5,7,6,12,7,5,9,9,6,1664,7,4,6,
-7,7,20,9,5,128,7,7,24,7,6,14,7,7,28,7,4,4,7,4,2,7,4,7,7,7,23,7,4,3,7,7,27,7,4,5,
-7,8,39,7,6,16,9,8,576,7,4,6,7,7,19,7,5,8,7,8,55,9,5,64,7,5,10,7,4,4,7,4,2,7,4,7,
-7,8,45,7,4,3,7,5,11,7,4,5,7,8,53,7,5,9,9,8,448,7,4,6,7,8,35,9,5,128,7,8,51,7,6,15,
-7,8,63,7,4,4,7,4,2,7,4,7,7,6,13,7,4,3,9,9,1472,7,4,5,7,8,43,7,6,17,9,9,1216,7,4,6,
-7,6,1,7,5,8,9,6,192,9,5,64,7,5,10,7,4,4,7,4,2,7,4,7,7,8,29,7,4,3,7,5,11,7,4,5,
-7,6,12,7,5,9,9,6,1664,7,4,6,7,8,33,9,5,128,7,8,49,7,6,14,7,8,61,7,4,4,7,4,2,7,4,7,
-7,8,47,7,4,3,7,8,59,7,4,5,7,8,41,7,6,16,9,9,960,7,4,6,7,8,31,7,5,8,7,8,57,9,5,64,
-7,5,10,7,4,4,7,4,2,7,4,7,7,7,22,7,4,3,7,5,11,7,4,5,7,7,26,7,5,9,9,9,704,7,4,6,
-7,8,37,9,5,128,7,7,25,7,6,15,9,8,320,7,4,4,7,4,2,7,4,7,7,6,13,7,4,3,7,7,18,7,4,5,
-7,7,21,7,6,17,9,7,256,7,4,6,7,6,1,7,5,8,9,6,192,9,5,64,7,5,10,7,4,4,7,4,2,7,4,7,
-11,12,2176,7,4,3,7,5,11,7,4,5,7,6,12,7,5,9,9,6,1664,7,4,6,7,7,20,9,5,128,7,7,24,7,6,14,
-7,7,28,7,4,4,7,4,2,7,4,7,7,7,23,7,4,3,7,7,27,7,4,5,7,8,40,7,6,16,9,9,832,7,4,6,
-7,7,19,7,5,8,7,8,56,9,5,64,7,5,10,7,4,4,7,4,2,7,4,7,7,8,46,7,4,3,7,5,11,7,4,5,
-7,8,54,7,5,9,9,8,512,7,4,6,7,8,36,9,5,128,7,8,52,7,6,15,7,8,0,7,4,4,7,4,2,7,4,7,
-7,6,13,7,4,3,9,9,1600,7,4,5,7,8,44,7,6,17,9,9,1344,7,4,6,7,6,1,7,5,8,9,6,192,9,5,64,
-7,5,10,7,4,4,7,4,2,7,4,7,7,8,30,7,4,3,7,5,11,7,4,5,7,6,12,7,5,9,9,6,1664,7,4,6,
-7,8,34,9,5,128,7,8,50,7,6,14,7,8,62,7,4,4,7,4,2,7,4,7,7,8,48,7,4,3,7,8,60,7,4,5,
-7,8,42,7,6,16,9,9,1088,7,4,6,7,8,32,7,5,8,7,8,58,9,5,64,7,5,10,7,4,4,7,4,2,7,4,7,
-7,7,22,7,4,3,7,5,11,7,4,5,7,7,26,7,5,9,9,8,640,7,4,6,7,8,38,9,5,128,7,7,25,7,6,15,
-9,8,384,7,4,4,7,4,2,7,4,7,7,6,13,7,4,3,7,7,18,7,4,5,7,7,21,7,6,17,9,7,256,7,4,6,
-7,6,1,7,5,8,9,6,192,9,5,64,7,5,10,7,4,4,7,4,2,7,4,7,0,0,0,7,4,3,7,5,11,7,4,5,
-7,6,12,7,5,9,9,6,1664,7,4,6,7,7,20,9,5,128,7,7,24,7,6,14,7,7,28,7,4,4,7,4,2,7,4,7,
-7,7,23,7,4,3,7,7,27,7,4,5,7,8,39,7,6,16,9,8,576,7,4,6,7,7,19,7,5,8,7,8,55,9,5,64,
-7,5,10,7,4,4,7,4,2,7,4,7,7,8,45,7,4,3,7,5,11,7,4,5,7,8,53,7,5,9,9,8,448,7,4,6,
-7,8,35,9,5,128,7,8,51,7,6,15,7,8,63,7,4,4,7,4,2,7,4,7,7,6,13,7,4,3,9,9,1536,7,4,5,
-7,8,43,7,6,17,9,9,1280,7,4,6,7,6,1,7,5,8,9,6,192,9,5,64,7,5,10,7,4,4,7,4,2,7,4,7,
-7,8,29,7,4,3,7,5,11,7,4,5,7,6,12,7,5,9,9,6,1664,7,4,6,7,8,33,9,5,128,7,8,49,7,6,14,
-7,8,61,7,4,4,7,4,2,7,4,7,7,8,47,7,4,3,7,8,59,7,4,5,7,8,41,7,6,16,9,9,1024,7,4,6,
-7,8,31,7,5,8,7,8,57,9,5,64,7,5,10,7,4,4,7,4,2,7,4,7,7,7,22,7,4,3,7,5,11,7,4,5,
-7,7,26,7,5,9,9,9,768,7,4,6,7,8,37,9,5,128,7,7,25,7,6,15,9,8,320,7,4,4,7,4,2,7,4,7,
-7,6,13,7,4,3,7,7,18,7,4,5,7,7,21,7,6,17,9,7,256,7,4,6,7,6,1,7,5,8,9,6,192,9,5,64,
-7,5,10,7,4,4,7,4,2,7,4,7,11,12,2432,7,4,3,7,5,11,7,4,5,7,6,12,7,5,9,9,6,1664,7,4,6,
-7,7,20,9,5,128,7,7,24,7,6,14,7,7,28,7,4,4,7,4,2,7,4,7,7,7,23,7,4,3,7,7,27,7,4,5,
-7,8,40,7,6,16,9,9,896,7,4,6,7,7,19,7,5,8,7,8,56,9,5,64,7,5,10,7,4,4,7,4,2,7,4,7,
-7,8,46,7,4,3,7,5,11,7,4,5,7,8,54,7,5,9,9,8,512,7,4,6,7,8,36,9,5,128,7,8,52,7,6,15,
-7,8,0,7,4,4,7,4,2,7,4,7,7,6,13,7,4,3,9,9,1728,7,4,5,7,8,44,7,6,17,9,9,1408,7,4,6,
-7,6,1,7,5,8,9,6,192,9,5,64,7,5,10,7,4,4,7,4,2,7,4,7,7,8,30,7,4,3,7,5,11,7,4,5,
-7,6,12,7,5,9,9,6,1664,7,4,6,7,8,34,9,5,128,7,8,50,7,6,14,7,8,62,7,4,4,7,4,2,7,4,7,
-7,8,48,7,4,3,7,8,60,7,4,5,7,8,42,7,6,16,9,9,1152,7,4,6,7,8,32,7,5,8,7,8,58,9,5,64,
-7,5,10,7,4,4,7,4,2,7,4,7,7,7,22,7,4,3,7,5,11,7,4,5,7,7,26,7,5,9,9,8,640,7,4,6,
-7,8,38,9,5,128,7,7,25,7,6,15,9,8,384,7,4,4,7,4,2,7,4,7,7,6,13,7,4,3,7,7,18,7,4,5,
-7,7,21,7,6,17,9,7,256,7,4,6,7,6,1,7,5,8,9,6,192,9,5,64,7,5,10,7,4,4,7,4,2,7,4,7,
-0,0,0,7,4,3,7,5,11,7,4,5,7,6,12,7,5,9,9,6,1664,7,4,6,7,7,20,9,5,128,7,7,24,7,6,14,
-7,7,28,7,4,4,7,4,2,7,4,7,7,7,23,7,4,3,7,7,27,7,4,5,7,8,39,7,6,16,9,8,576,7,4,6,
-7,7,19,7,5,8,7,8,55,9,5,64,7,5,10,7,4,4,7,4,2,7,4,7,7,8,45,7,4,3,7,5,11,7,4,5,
-7,8,53,7,5,9,9,8,448,7,4,6,7,8,35,9,5,128,7,8,51,7,6,15,7,8,63,7,4,4,7,4,2,7,4,7,
-7,6,13,7,4,3,9,9,1472,7,4,5,7,8,43,7,6,17,9,9,1216,7,4,6,7,6,1,7,5,8,9,6,192,9,5,64,
-7,5,10,7,4,4,7,4,2,7,4,7,7,8,29,7,4,3,7,5,11,7,4,5,7,6,12,7,5,9,9,6,1664,7,4,6,
-7,8,33,9,5,128,7,8,49,7,6,14,7,8,61,7,4,4,7,4,2,7,4,7,7,8,47,7,4,3,7,8,59,7,4,5,
-7,8,41,7,6,16,9,9,960,7,4,6,7,8,31,7,5,8,7,8,57,9,5,64,7,5,10,7,4,4,7,4,2,7,4,7,
-7,7,22,7,4,3,7,5,11,7,4,5,7,7,26,7,5,9,9,9,704,7,4,6,7,8,37,9,5,128,7,7,25,7,6,15,
-9,8,320,7,4,4,7,4,2,7,4,7,7,6,13,7,4,3,7,7,18,7,4,5,7,7,21,7,6,17,9,7,256,7,4,6,
-7,6,1,7,5,8,9,6,192,9,5,64,7,5,10,7,4,4,7,4,2,7,4,7,11,12,2048,7,4,3,7,5,11,7,4,5,
-7,6,12,7,5,9,9,6,1664,7,4,6,7,7,20,9,5,128,7,7,24,7,6,14,7,7,28,7,4,4,7,4,2,7,4,7,
-7,7,23,7,4,3,7,7,27,7,4,5,7,8,40,7,6,16,9,9,832,7,4,6,7,7,19,7,5,8,7,8,56,9,5,64,
-7,5,10,7,4,4,7,4,2,7,4,7,7,8,46,7,4,3,7,5,11,7,4,5,7,8,54,7,5,9,9,8,512,7,4,6,
-7,8,36,9,5,128,7,8,52,7,6,15,7,8,0,7,4,4,7,4,2,7,4,7,7,6,13,7,4,3,9,9,1600,7,4,5,
-7,8,44,7,6,17,9,9,1344,7,4,6,7,6,1,7,5,8,9,6,192,9,5,64,7,5,10,7,4,4,7,4,2,7,4,7,
-7,8,30,7,4,3,7,5,11,7,4,5,7,6,12,7,5,9,9,6,1664,7,4,6,7,8,34,9,5,128,7,8,50,7,6,14,
-7,8,62,7,4,4,7,4,2,7,4,7,7,8,48,7,4,3,7,8,60,7,4,5,7,8,42,7,6,16,9,9,1088,7,4,6,
-7,8,32,7,5,8,7,8,58,9,5,64,7,5,10,7,4,4,7,4,2,7,4,7,7,7,22,7,4,3,7,5,11,7,4,5,
-7,7,26,7,5,9,9,8,640,7,4,6,7,8,38,9,5,128,7,7,25,7,6,15,9,8,384,7,4,4,7,4,2,7,4,7,
-7,6,13,7,4,3,7,7,18,7,4,5,7,7,21,7,6,17,9,7,256,7,4,6,7,6,1,7,5,8,9,6,192,9,5,64,
-7,5,10,7,4,4,7,4,2,7,4,7,0,0,0,7,4,3,7,5,11,7,4,5,7,6,12,7,5,9,9,6,1664,7,4,6,
-7,7,20,9,5,128,7,7,24,7,6,14,7,7,28,7,4,4,7,4,2,7,4,7,7,7,23,7,4,3,7,7,27,7,4,5,
-7,8,39,7,6,16,9,8,576,7,4,6,7,7,19,7,5,8,7,8,55,9,5,64,7,5,10,7,4,4,7,4,2,7,4,7,
-7,8,45,7,4,3,7,5,11,7,4,5,7,8,53,7,5,9,9,8,448,7,4,6,7,8,35,9,5,128,7,8,51,7,6,15,
-7,8,63,7,4,4,7,4,2,7,4,7,7,6,13,7,4,3,9,9,1536,7,4,5,7,8,43,7,6,17,9,9,1280,7,4,6,
-7,6,1,7,5,8,9,6,192,9,5,64,7,5,10,7,4,4,7,4,2,7,4,7,7,8,29,7,4,3,7,5,11,7,4,5,
-7,6,12,7,5,9,9,6,1664,7,4,6,7,8,33,9,5,128,7,8,49,7,6,14,7,8,61,7,4,4,7,4,2,7,4,7,
-7,8,47,7,4,3,7,8,59,7,4,5,7,8,41,7,6,16,9,9,1024,7,4,6,7,8,31,7,5,8,7,8,57,9,5,64,
-7,5,10,7,4,4,7,4,2,7,4,7,7,7,22,7,4,3,7,5,11,7,4,5,7,7,26,7,5,9,9,9,768,7,4,6,
-7,8,37,9,5,128,7,7,25,7,6,15,9,8,320,7,4,4,7,4,2,7,4,7,7,6,13,7,4,3,7,7,18,7,4,5,
-7,7,21,7,6,17,9,7,256,7,4,6,7,6,1,7,5,8,9,6,192,9,5,64,7,5,10,7,4,4,7,4,2,7,4,7,
-11,11,1920,7,4,3,7,5,11,7,4,5,7,6,12,7,5,9,9,6,1664,7,4,6,7,7,20,9,5,128,7,7,24,7,6,14,
-7,7,28,7,4,4,7,4,2,7,4,7,7,7,23,7,4,3,7,7,27,7,4,5,7,8,40,7,6,16,9,9,896,7,4,6,
-7,7,19,7,5,8,7,8,56,9,5,64,7,5,10,7,4,4,7,4,2,7,4,7,7,8,46,7,4,3,7,5,11,7,4,5,
-7,8,54,7,5,9,9,8,512,7,4,6,7,8,36,9,5,128,7,8,52,7,6,15,7,8,0,7,4,4,7,4,2,7,4,7,
-7,6,13,7,4,3,9,9,1728,7,4,5,7,8,44,7,6,17,9,9,1408,7,4,6,7,6,1,7,5,8,9,6,192,9,5,64,
-7,5,10,7,4,4,7,4,2,7,4,7,7,8,30,7,4,3,7,5,11,7,4,5,7,6,12,7,5,9,9,6,1664,7,4,6,
-7,8,34,9,5,128,7,8,50,7,6,14,7,8,62,7,4,4,7,4,2,7,4,7,7,8,48,7,4,3,7,8,60,7,4,5,
-7,8,42,7,6,16,9,9,1152,7,4,6,7,8,32,7,5,8,7,8,58,9,5,64,7,5,10,7,4,4,7,4,2,7,4,7,
-7,7,22,7,4,3,7,5,11,7,4,5,7,7,26,7,5,9,9,8,640,7,4,6,7,8,38,9,5,128,7,7,25,7,6,15,
-9,8,384,7,4,4,7,4,2,7,4,7,7,6,13,7,4,3,7,7,18,7,4,5,7,7,21,7,6,17,9,7,256,7,4,6,
-7,6,1,7,5,8,9,6,192,9,5,64,7,5,10,7,4,4,7,4,2,7,4,7,0,0,0,7,4,3,7,5,11,7,4,5,
-7,6,12,7,5,9,9,6,1664,7,4,6,7,7,20,9,5,128,7,7,24,7,6,14,7,7,28,7,4,4,7,4,2,7,4,7,
-7,7,23,7,4,3,7,7,27,7,4,5,7,8,39,7,6,16,9,8,576,7,4,6,7,7,19,7,5,8,7,8,55,9,5,64,
-7,5,10,7,4,4,7,4,2,7,4,7,7,8,45,7,4,3,7,5,11,7,4,5,7,8,53,7,5,9,9,8,448,7,4,6,
-7,8,35,9,5,128,7,8,51,7,6,15,7,8,63,7,4,4,7,4,2,7,4,7,7,6,13,7,4,3,9,9,1472,7,4,5,
-7,8,43,7,6,17,9,9,1216,7,4,6,7,6,1,7,5,8,9,6,192,9,5,64,7,5,10,7,4,4,7,4,2,7,4,7,
-7,8,29,7,4,3,7,5,11,7,4,5,7,6,12,7,5,9,9,6,1664,7,4,6,7,8,33,9,5,128,7,8,49,7,6,14,
-7,8,61,7,4,4,7,4,2,7,4,7,7,8,47,7,4,3,7,8,59,7,4,5,7,8,41,7,6,16,9,9,960,7,4,6,
-7,8,31,7,5,8,7,8,57,9,5,64,7,5,10,7,4,4,7,4,2,7,4,7,7,7,22,7,4,3,7,5,11,7,4,5,
-7,7,26,7,5,9,9,9,704,7,4,6,7,8,37,9,5,128,7,7,25,7,6,15,9,8,320,7,4,4,7,4,2,7,4,7,
-7,6,13,7,4,3,7,7,18,7,4,5,7,7,21,7,6,17,9,7,256,7,4,6,7,6,1,7,5,8,9,6,192,9,5,64,
-7,5,10,7,4,4,7,4,2,7,4,7,11,12,2304,7,4,3,7,5,11,7,4,5,7,6,12,7,5,9,9,6,1664,7,4,6,
-7,7,20,9,5,128,7,7,24,7,6,14,7,7,28,7,4,4,7,4,2,7,4,7,7,7,23,7,4,3,7,7,27,7,4,5,
-7,8,40,7,6,16,9,9,832,7,4,6,7,7,19,7,5,8,7,8,56,9,5,64,7,5,10,7,4,4,7,4,2,7,4,7,
-7,8,46,7,4,3,7,5,11,7,4,5,7,8,54,7,5,9,9,8,512,7,4,6,7,8,36,9,5,128,7,8,52,7,6,15,
-7,8,0,7,4,4,7,4,2,7,4,7,7,6,13,7,4,3,9,9,1600,7,4,5,7,8,44,7,6,17,9,9,1344,7,4,6,
-7,6,1,7,5,8,9,6,192,9,5,64,7,5,10,7,4,4,7,4,2,7,4,7,7,8,30,7,4,3,7,5,11,7,4,5,
-7,6,12,7,5,9,9,6,1664,7,4,6,7,8,34,9,5,128,7,8,50,7,6,14,7,8,62,7,4,4,7,4,2,7,4,7,
-7,8,48,7,4,3,7,8,60,7,4,5,7,8,42,7,6,16,9,9,1088,7,4,6,7,8,32,7,5,8,7,8,58,9,5,64,
-7,5,10,7,4,4,7,4,2,7,4,7,7,7,22,7,4,3,7,5,11,7,4,5,7,7,26,7,5,9,9,8,640,7,4,6,
-7,8,38,9,5,128,7,7,25,7,6,15,9,8,384,7,4,4,7,4,2,7,4,7,7,6,13,7,4,3,7,7,18,7,4,5,
-7,7,21,7,6,17,9,7,256,7,4,6,7,6,1,7,5,8,9,6,192,9,5,64,7,5,10,7,4,4,7,4,2,7,4,7,
-0,0,0,7,4,3,7,5,11,7,4,5,7,6,12,7,5,9,9,6,1664,7,4,6,7,7,20,9,5,128,7,7,24,7,6,14,
-7,7,28,7,4,4,7,4,2,7,4,7,7,7,23,7,4,3,7,7,27,7,4,5,7,8,39,7,6,16,9,8,576,7,4,6,
-7,7,19,7,5,8,7,8,55,9,5,64,7,5,10,7,4,4,7,4,2,7,4,7,7,8,45,7,4,3,7,5,11,7,4,5,
-7,8,53,7,5,9,9,8,448,7,4,6,7,8,35,9,5,128,7,8,51,7,6,15,7,8,63,7,4,4,7,4,2,7,4,7,
-7,6,13,7,4,3,9,9,1536,7,4,5,7,8,43,7,6,17,9,9,1280,7,4,6,7,6,1,7,5,8,9,6,192,9,5,64,
-7,5,10,7,4,4,7,4,2,7,4,7,7,8,29,7,4,3,7,5,11,7,4,5,7,6,12,7,5,9,9,6,1664,7,4,6,
-7,8,33,9,5,128,7,8,49,7,6,14,7,8,61,7,4,4,7,4,2,7,4,7,7,8,47,7,4,3,7,8,59,7,4,5,
-7,8,41,7,6,16,9,9,1024,7,4,6,7,8,31,7,5,8,7,8,57,9,5,64,7,5,10,7,4,4,7,4,2,7,4,7,
-7,7,22,7,4,3,7,5,11,7,4,5,7,7,26,7,5,9,9,9,768,7,4,6,7,8,37,9,5,128,7,7,25,7,6,15,
-9,8,320,7,4,4,7,4,2,7,4,7,7,6,13,7,4,3,7,7,18,7,4,5,7,7,21,7,6,17,9,7,256,7,4,6,
-7,6,1,7,5,8,9,6,192,9,5,64,7,5,10,7,4,4,7,4,2,7,4,7,11,12,2560,7,4,3,7,5,11,7,4,5,
-7,6,12,7,5,9,9,6,1664,7,4,6,7,7,20,9,5,128,7,7,24,7,6,14,7,7,28,7,4,4,7,4,2,7,4,7,
-7,7,23,7,4,3,7,7,27,7,4,5,7,8,40,7,6,16,9,9,896,7,4,6,7,7,19,7,5,8,7,8,56,9,5,64,
-7,5,10,7,4,4,7,4,2,7,4,7,7,8,46,7,4,3,7,5,11,7,4,5,7,8,54,7,5,9,9,8,512,7,4,6,
-7,8,36,9,5,128,7,8,52,7,6,15,7,8,0,7,4,4,7,4,2,7,4,7,7,6,13,7,4,3,9,9,1728,7,4,5,
-7,8,44,7,6,17,9,9,1408,7,4,6,7,6,1,7,5,8,9,6,192,9,5,64,7,5,10,7,4,4,7,4,2,7,4,7,
-7,8,30,7,4,3,7,5,11,7,4,5,7,6,12,7,5,9,9,6,1664,7,4,6,7,8,34,9,5,128,7,8,50,7,6,14,
-7,8,62,7,4,4,7,4,2,7,4,7,7,8,48,7,4,3,7,8,60,7,4,5,7,8,42,7,6,16,9,9,1152,7,4,6,
-7,8,32,7,5,8,7,8,58,9,5,64,7,5,10,7,4,4,7,4,2,7,4,7,7,7,22,7,4,3,7,5,11,7,4,5,
-7,7,26,7,5,9,9,8,640,7,4,6,7,8,38,9,5,128,7,7,25,7,6,15,9,8,384,7,4,4,7,4,2,7,4,7,
-7,6,13,7,4,3,7,7,18,7,4,5,7,7,21,7,6,17,9,7,256,7,4,6,7,6,1,7,5,8,9,6,192,9,5,64,
-7,5,10,7,4,4,7,4,2,7,4,7
-};
-const  TIFFFaxTabEnt TIFFFaxBlackTable[8192] = {
-12,11,0,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,6,9,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,7,10,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,8,13,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,6,8,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,9,15,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,10,18,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,6,9,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,7,11,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,10,17,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,6,8,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,7,12,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,11,11,1792,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,6,9,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,7,10,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,11,23,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,6,8,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,11,20,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,11,25,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,6,9,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,7,11,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,8,14,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,6,8,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,7,12,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,0,0,0,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,6,9,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,7,10,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,8,13,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,6,8,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,10,12,128,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,12,56,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,6,9,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,7,11,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,12,30,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,6,8,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,7,12,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-11,11,1856,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,6,9,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,7,10,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,12,57,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,6,8,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,11,21,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,12,54,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,6,9,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,7,11,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,8,14,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,6,8,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,7,12,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,0,0,0,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,6,9,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,7,10,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,8,13,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,6,8,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,9,15,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,12,52,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,6,9,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,7,11,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,12,48,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,6,8,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,7,12,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,11,12,2112,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,6,9,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,7,10,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,12,44,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,6,8,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,12,36,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,10,12,384,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,6,9,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,7,11,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,8,14,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,6,8,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,7,12,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-0,0,0,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,6,9,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,7,10,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,8,13,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,6,8,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,12,28,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,12,60,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,6,9,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,7,11,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,12,40,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,6,8,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,7,12,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,11,12,2368,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,6,9,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,7,10,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,10,16,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,6,8,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,10,0,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-10,10,64,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,6,9,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,7,11,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,8,14,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,6,8,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,7,12,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,0,0,0,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,6,9,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,7,10,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,8,13,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,6,8,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,9,15,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,10,18,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,6,9,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,7,11,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,10,17,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,6,8,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,7,12,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-11,12,1984,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,6,9,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,7,10,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,12,50,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,6,8,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,12,34,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,10,13,1664,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,6,9,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,7,11,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,8,14,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,6,8,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,7,12,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,0,0,0,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,6,9,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,7,10,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,8,13,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,6,8,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,12,26,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-10,13,1408,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,6,9,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,7,11,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,12,32,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,6,8,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,7,12,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,11,11,1920,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,6,9,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,7,10,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,12,61,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,6,8,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,12,42,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,10,13,1024,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,6,9,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,7,11,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,8,14,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,6,8,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,7,12,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-0,0,0,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,6,9,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,7,10,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,8,13,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,6,8,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,9,15,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,10,13,768,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,6,9,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,7,11,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,12,62,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,6,8,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,7,12,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,11,12,2240,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,6,9,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,7,10,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,12,46,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,6,8,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,12,38,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-10,13,512,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,6,9,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,7,11,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,8,14,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,6,8,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,7,12,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,0,0,0,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,6,9,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,7,10,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,8,13,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,6,8,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,11,19,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,11,24,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,6,9,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,7,11,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,11,22,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,6,8,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,7,12,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-11,12,2496,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,6,9,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,7,10,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,10,16,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,6,8,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,10,0,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,10,10,64,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,6,9,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,7,11,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,8,14,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,6,8,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,7,12,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,12,11,0,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,6,9,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,7,10,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,8,13,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,6,8,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,9,15,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,10,18,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,6,9,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,7,11,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,10,17,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,6,8,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,7,12,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,11,11,1792,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,6,9,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,7,10,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,11,23,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,6,8,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,11,20,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,11,25,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,6,9,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,7,11,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,8,14,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,6,8,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,7,12,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-0,0,0,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,6,9,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,7,10,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,8,13,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,6,8,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-10,12,192,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,10,13,1280,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,6,9,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,7,11,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,12,31,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,6,8,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,7,12,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,11,11,1856,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,6,9,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,7,10,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,12,58,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,6,8,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,11,21,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-10,13,896,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,6,9,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,7,11,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,8,14,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,6,8,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,7,12,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,0,0,0,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,6,9,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,7,10,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,8,13,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,6,8,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,9,15,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,10,13,640,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,6,9,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,7,11,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,12,49,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,6,8,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,7,12,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-11,12,2176,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,6,9,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,7,10,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,12,45,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,6,8,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,12,37,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,10,12,448,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,6,9,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,7,11,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,8,14,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,6,8,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,7,12,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,0,0,0,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,6,9,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,7,10,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,8,13,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,6,8,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,12,29,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-10,13,1536,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,6,9,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,7,11,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,12,41,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,6,8,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,7,12,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,11,12,2432,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,6,9,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,7,10,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,10,16,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,6,8,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,10,0,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,10,10,64,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,6,9,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,7,11,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,8,14,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,6,8,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,7,12,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-0,0,0,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,6,9,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,7,10,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,8,13,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,6,8,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,9,15,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,10,18,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,6,9,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,7,11,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,10,17,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,6,8,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,7,12,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,11,12,2048,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,6,9,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,7,10,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,12,51,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,6,8,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,12,35,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-10,12,320,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,6,9,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,7,11,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,8,14,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,6,8,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,7,12,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,0,0,0,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,6,9,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,7,10,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,8,13,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,6,8,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,12,27,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,12,59,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,6,9,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,7,11,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,12,33,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,6,8,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,7,12,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-11,11,1920,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,6,9,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,7,10,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,10,12,256,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,6,8,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,12,43,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,10,13,1152,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,6,9,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,7,11,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,8,14,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,6,8,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,7,12,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,0,0,0,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,6,9,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,7,10,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,8,13,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,6,8,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,9,15,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,12,55,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,6,9,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,7,11,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,12,63,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,6,8,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,7,12,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,11,12,2304,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,6,9,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,7,10,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,12,47,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,6,8,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,12,39,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,12,53,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,6,9,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,7,11,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,8,14,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,6,8,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,7,12,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-0,0,0,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,6,9,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,7,10,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,8,13,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,6,8,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,11,19,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,11,24,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,6,9,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,7,11,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,11,22,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,6,8,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,7,12,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,11,12,2560,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,6,9,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,7,10,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,10,16,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,6,8,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,10,0,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-10,10,64,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,6,9,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,7,11,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,8,14,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,6,8,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,7,12,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,12,11,0,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,6,9,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,7,10,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,8,13,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,6,8,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,9,15,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,10,18,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,6,9,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,7,11,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,10,17,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,6,8,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,7,12,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-11,11,1792,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,6,9,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,7,10,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,11,23,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,6,8,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,11,20,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,11,25,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,6,9,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,7,11,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,8,14,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,6,8,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,7,12,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,0,0,0,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,6,9,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,7,10,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,8,13,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,6,8,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,10,12,128,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,12,56,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,6,9,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,7,11,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,12,30,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,6,8,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,7,12,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,11,11,1856,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,6,9,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,7,10,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,12,57,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,6,8,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,11,21,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,12,54,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,6,9,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,7,11,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,8,14,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,6,8,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,7,12,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-0,0,0,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,6,9,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,7,10,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,8,13,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,6,8,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,9,15,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,12,52,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,6,9,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,7,11,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,12,48,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,6,8,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,7,12,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,11,12,2112,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,6,9,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,7,10,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,12,44,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,6,8,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,12,36,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-10,12,384,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,6,9,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,7,11,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,8,14,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,6,8,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,7,12,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,0,0,0,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,6,9,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,7,10,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,8,13,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,6,8,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,12,28,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,12,60,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,6,9,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,7,11,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,12,40,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,6,8,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,7,12,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-11,12,2368,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,6,9,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,7,10,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,10,16,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,6,8,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,10,0,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,10,10,64,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,6,9,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,7,11,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,8,14,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,6,8,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,7,12,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,0,0,0,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,6,9,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,7,10,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,8,13,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,6,8,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,9,15,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,10,18,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,6,9,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,7,11,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,10,17,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,6,8,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,7,12,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,11,12,1984,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,6,9,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,7,10,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,12,50,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,6,8,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,12,34,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,10,13,1728,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,6,9,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,7,11,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,8,14,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,6,8,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,7,12,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-0,0,0,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,6,9,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,7,10,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,8,13,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,6,8,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,12,26,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,10,13,1472,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,6,9,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,7,11,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,12,32,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,6,8,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,7,12,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,11,11,1920,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,6,9,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,7,10,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,12,61,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,6,8,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,12,42,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-10,13,1088,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,6,9,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,7,11,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,8,14,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,6,8,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,7,12,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,0,0,0,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,6,9,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,7,10,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,8,13,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,6,8,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,9,15,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,10,13,832,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,6,9,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,7,11,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,12,62,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,6,8,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,7,12,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-11,12,2240,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,6,9,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,7,10,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,12,46,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,6,8,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,12,38,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,10,13,576,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,6,9,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,7,11,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,8,14,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,6,8,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,7,12,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,0,0,0,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,6,9,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,7,10,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,8,13,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,6,8,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,11,19,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,11,24,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,6,9,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,7,11,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,11,22,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,6,8,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,7,12,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,11,12,2496,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,6,9,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,7,10,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,10,16,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,6,8,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,10,0,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,10,10,64,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,6,9,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,7,11,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,8,14,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,6,8,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,7,12,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-12,11,0,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,6,9,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,7,10,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,8,13,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,6,8,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,9,15,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,10,18,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,6,9,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,7,11,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,10,17,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,6,8,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,7,12,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,11,11,1792,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,6,9,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,7,10,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,11,23,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,6,8,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,11,20,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,11,25,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,6,9,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,7,11,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,8,14,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,6,8,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,7,12,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,0,0,0,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,6,9,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,7,10,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,8,13,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,6,8,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,10,12,192,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,10,13,1344,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,6,9,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,7,11,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,12,31,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,6,8,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,7,12,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-11,11,1856,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,6,9,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,7,10,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,12,58,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,6,8,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,11,21,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,10,13,960,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,6,9,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,7,11,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,8,14,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,6,8,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,7,12,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,0,0,0,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,6,9,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,7,10,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,8,13,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,6,8,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,9,15,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-10,13,704,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,6,9,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,7,11,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,12,49,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,6,8,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,7,12,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,11,12,2176,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,6,9,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,7,10,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,12,45,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,6,8,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,12,37,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,10,12,448,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,6,9,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,7,11,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,8,14,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,6,8,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,7,12,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-0,0,0,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,6,9,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,7,10,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,8,13,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,6,8,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,12,29,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,10,13,1600,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,6,9,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,7,11,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,12,41,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,6,8,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,7,12,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,11,12,2432,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,6,9,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,7,10,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,10,16,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,6,8,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,10,0,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-10,10,64,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,6,9,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,7,11,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,8,14,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,6,8,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,7,12,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,0,0,0,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,6,9,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,7,10,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,8,13,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,6,8,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,9,15,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,10,18,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,6,9,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,7,11,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,10,17,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,6,8,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,7,12,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-11,12,2048,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,6,9,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,7,10,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,12,51,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,6,8,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,12,35,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,10,12,320,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,6,9,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,7,11,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,8,14,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,6,8,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,7,12,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,0,0,0,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,6,9,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,7,10,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,8,13,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,6,8,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,12,27,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,12,59,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,6,9,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,7,11,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,12,33,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,6,8,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,7,12,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,11,11,1920,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,6,9,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,7,10,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-10,12,256,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,6,8,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,12,43,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,10,13,1216,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,6,9,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,7,11,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,8,14,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,6,8,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,7,12,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-0,0,0,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,6,9,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,7,10,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,8,13,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,6,8,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,9,15,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,12,55,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,6,9,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,7,11,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,12,63,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,6,8,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,7,12,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,11,12,2304,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,6,9,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,7,10,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,12,47,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,6,8,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,12,39,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,12,53,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,6,9,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,7,11,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,8,14,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,6,8,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,7,12,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,0,0,0,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,6,9,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,7,10,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,8,13,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,6,8,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,11,19,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,11,24,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,6,9,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,7,11,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,11,22,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,6,8,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,7,12,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-11,12,2560,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,6,9,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,7,10,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,10,16,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,6,8,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,10,0,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,10,10,64,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,6,9,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,8,7,11,8,2,3,8,3,1,8,2,2,
-8,4,6,8,2,3,8,3,4,8,2,2,8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2,
-8,8,14,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,8,6,8,8,2,3,8,3,1,8,2,2,
-8,4,5,8,2,3,8,3,4,8,2,2,8,7,12,8,2,3,8,3,1,8,2,2,8,4,6,8,2,3,8,3,4,8,2,2,
-8,5,7,8,2,3,8,3,1,8,2,2,8,4,5,8,2,3,8,3,4,8,2,2
-};
diff --git a/src/tiff/geo_config.h b/src/tiff/geo_config.h
deleted file mode 100644
index 0c7a7eb..0000000
--- a/src/tiff/geo_config.h
+++ /dev/null
@@ -1,24 +0,0 @@
-/* geo_config.h.  Generated automatically by configure.  */
-#ifndef GEO_CONFIG_H
-#define GEO_CONFIG_H
-
-/* Define if you have the ANSI C header files.  */
-#define STDC_HEADERS 1
-
-/* Define if your processor stores words with the most significant
-   byte first (like Motorola and SPARC, unlike Intel and VAX).  */
-/* #undef WORDS_BIGENDIAN */
-
-/* Define if you have the <stdlib.h> header file.  */
-#define HAVE_STDLIB_H 1
-
-/* Define if you have the <string.h> header file.  */
-#define HAVE_STRING_H 1
-
-/* Define if you have the <strings.h> header file.  */
-#define HAVE_STRINGS_H 1
-
-/* Build as DLL */
-#define BUILD_AS_DLL      1
-
-#endif /* ndef GEO_CONFIG_H */
diff --git a/src/tiff/geo_ctrans.inc b/src/tiff/geo_ctrans.inc
deleted file mode 100644
index 7414280..0000000
--- a/src/tiff/geo_ctrans.inc
+++ /dev/null
@@ -1,91 +0,0 @@
-/******************************************************************************
- * $Id: geo_ctrans.inc 4825 2006-08-16 13:01:53Z lubia $
- *
- * Project:  libgeotiff
- * Purpose:  GeoTIFF Projection Method codes. 
- * Author:   Frank Warmerdam, warmerdam at pobox.com
- *
- ******************************************************************************
- * Copyright (c) 2005, Frank Warmerdam <warmerdam at pobox.com>
- *
- * 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 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- ******************************************************************************
- *
- * $Log$
- * Revision 1.3  2005/03/04 03:59:11  fwarmerdam
- * Added header.
- *
- */
-
-/* C database for Geotiff include files.   */
-/* the macro ValuePair() must be defined   */
-/* by the enclosing include file           */
-
-/*
- *  Revised 12 Jul 1995   NDR -- changed South Oriented to a code 
- *  Revised 28 Sep 1995   NDR -- Added Rev. 1.0 aliases. 
- */
-
-ValuePair(CT_TransverseMercator,	1)
-ValuePair(CT_TransvMercator_Modified_Alaska, 2)
-ValuePair(CT_ObliqueMercator,	3)
-ValuePair(CT_ObliqueMercator_Laborde,	4)
-ValuePair(CT_ObliqueMercator_Rosenmund,	5)
-ValuePair(CT_ObliqueMercator_Spherical,	6)   /* not advisable */
-ValuePair(CT_Mercator,	7)
-ValuePair(CT_LambertConfConic_2SP,	8)
-ValuePair(CT_LambertConfConic,CT_LambertConfConic_2SP)         /* Alias */
-ValuePair(CT_LambertConfConic_1SP,	9)
-ValuePair(CT_LambertConfConic_Helmert,CT_LambertConfConic_1SP) /* alias */
-ValuePair(CT_LambertAzimEqualArea,	10)
-ValuePair(CT_AlbersEqualArea,	11)
-ValuePair(CT_AzimuthalEquidistant,	12)
-ValuePair(CT_EquidistantConic,	13)
-ValuePair(CT_Stereographic,	14)
-ValuePair(CT_PolarStereographic,	15)
-ValuePair(CT_ObliqueStereographic,	16)   /* not advisable */
-ValuePair(CT_Equirectangular,	17)
-ValuePair(CT_CassiniSoldner,	18)
-ValuePair(CT_Gnomonic,	19)
-ValuePair(CT_MillerCylindrical,	20)
-ValuePair(CT_Orthographic,	21)
-ValuePair(CT_Polyconic,	22)
-ValuePair(CT_Robinson,	23)
-ValuePair(CT_Sinusoidal,	24)
-ValuePair(CT_VanDerGrinten,	25)
-ValuePair(CT_NewZealandMapGrid,	26)
-/* Added for 1.0 */
-ValuePair(CT_TransvMercator_SouthOrientated, 27)
-
-/* Added Feb 2005 */
-ValuePair(CT_CylindricalEqualArea, 28)
-
-
-/* Aliases */
-
-ValuePair(CT_SouthOrientedGaussConformal,CT_TransvMercator_SouthOrientated)
-ValuePair(CT_AlaskaConformal,	CT_TransvMercator_Modified_Alaska)
-ValuePair(CT_TransvEquidistCylindrical,	CT_CassiniSoldner)
-ValuePair(CT_ObliqueMercator_Hotine,	CT_ObliqueMercator)
-ValuePair(CT_SwissObliqueCylindrical,	CT_ObliqueMercator_Rosenmund)
-ValuePair(CT_GaussBoaga,	CT_TransverseMercator)
-ValuePair(CT_GaussKruger,	CT_TransverseMercator)
-ValuePair(CT_TransvMercator_SouthOriented, CT_TransvMercator_SouthOrientated)
-
-
diff --git a/src/tiff/geo_extra.c b/src/tiff/geo_extra.c
deleted file mode 100644
index 9e95387..0000000
--- a/src/tiff/geo_extra.c
+++ /dev/null
@@ -1,747 +0,0 @@
-/******************************************************************************
- * $Id: geo_extra.c 4825 2006-08-16 13:01:53Z lubia $
- *
- * Project:  libgeotiff
- * Purpose:  Code to normalize a few common PCS values without use of CSV
- *           files.
- * Author:   Frank Warmerdam, warmerda at home.com
- *
- ******************************************************************************
- * Copyright (c) 1999, Frank Warmerdam
- *
- * 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 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- ******************************************************************************
- *
- * $Log$
- * Revision 1.4  2002/12/01 23:44:34  warmerda
- * Fixed typo in last fix.
- *
- * Revision 1.3  2002/12/01 23:42:06  warmerda
- * added overrides for two deprecated stateplane zones
- *
- * Revision 1.2  1999/05/04 03:09:33  warmerda
- * avoid warnings
- *
- * Revision 1.1  1999/04/28 20:01:29  warmerda
- * new
- *
- */
-
-/*
-#include "geotiff.h"
-#include "geo_tiffp.h"
-#include "geo_keyp.h"
-*/
-
-#include "geo_normalize.h"
-#include "geovalues.h"
-
-static int StatePlaneTable[] = 
-{
-    PCS_NAD83_Alabama_East,		Proj_Alabama_CS83_East,
-    PCS_NAD83_Alabama_West,		Proj_Alabama_CS83_West,
-
-    PCS_NAD83_Alaska_zone_1,		Proj_Alaska_CS83_1,
-    PCS_NAD83_Alaska_zone_2,		Proj_Alaska_CS83_2,
-    PCS_NAD83_Alaska_zone_3,		Proj_Alaska_CS83_3,
-    PCS_NAD83_Alaska_zone_4,		Proj_Alaska_CS83_4,
-    PCS_NAD83_Alaska_zone_5,		Proj_Alaska_CS83_5,
-    PCS_NAD83_Alaska_zone_6,		Proj_Alaska_CS83_6,
-    PCS_NAD83_Alaska_zone_7,		Proj_Alaska_CS83_7,
-    PCS_NAD83_Alaska_zone_8,		Proj_Alaska_CS83_8,
-    PCS_NAD83_Alaska_zone_9,		Proj_Alaska_CS83_9,
-    PCS_NAD83_Alaska_zone_10,		Proj_Alaska_CS83_10,
-
-    PCS_NAD83_California_1,		Proj_California_CS83_1,
-    PCS_NAD83_California_2,		Proj_California_CS83_2,
-    PCS_NAD83_California_3,		Proj_California_CS83_3,
-    PCS_NAD83_California_4,		Proj_California_CS83_4,
-    PCS_NAD83_California_5,		Proj_California_CS83_5,
-    PCS_NAD83_California_6,		Proj_California_CS83_6,
-
-    PCS_NAD83_Arizona_East,		Proj_Arizona_CS83_east,
-    PCS_NAD83_Arizona_Central,		Proj_Arizona_CS83_Central,
-    PCS_NAD83_Arizona_West,		Proj_Arizona_CS83_west,
-
-    PCS_NAD83_Arkansas_North,		Proj_Arkansas_CS83_North,
-    PCS_NAD83_Arkansas_South,		Proj_Arkansas_CS83_South,
-
-    PCS_NAD83_Colorado_North,		Proj_Colorado_CS83_North,
-    PCS_NAD83_Colorado_Central,		Proj_Colorado_CS83_Central,
-    PCS_NAD83_Colorado_South,		Proj_Colorado_CS83_South,
-
-    PCS_NAD83_Connecticut,		Proj_Connecticut_CS83,
-
-    PCS_NAD83_Delaware,			Proj_Delaware_CS83,
-
-    PCS_NAD83_Florida_East,		Proj_Florida_CS83_East,
-    PCS_NAD83_Florida_North,		Proj_Florida_CS83_North,
-    PCS_NAD83_Florida_West,		Proj_Florida_CS83_West,
-
-    PCS_NAD83_Hawaii_zone_1,		Proj_Hawaii_CS83_1,
-    PCS_NAD83_Hawaii_zone_2,		Proj_Hawaii_CS83_2,
-    PCS_NAD83_Hawaii_zone_3,		Proj_Hawaii_CS83_3,
-    PCS_NAD83_Hawaii_zone_4,		Proj_Hawaii_CS83_4,
-    PCS_NAD83_Hawaii_zone_5,		Proj_Hawaii_CS83_5,
-
-    PCS_NAD83_Georgia_East,		Proj_Georgia_CS83_East,
-    PCS_NAD83_Georgia_West,		Proj_Georgia_CS83_West,
-
-    PCS_NAD83_Idaho_East,		Proj_Idaho_CS83_East,
-    PCS_NAD83_Idaho_Central,		Proj_Idaho_CS83_Central,
-    PCS_NAD83_Idaho_West,		Proj_Idaho_CS83_West,
-
-    PCS_NAD83_Illinois_East,		Proj_Illinois_CS83_East,
-    PCS_NAD83_Illinois_West,		Proj_Illinois_CS83_West,
-
-    PCS_NAD83_Indiana_East,		Proj_Indiana_CS83_East,
-    PCS_NAD83_Indiana_West,		Proj_Indiana_CS83_West,
-
-    PCS_NAD83_Iowa_North,      		Proj_Iowa_CS83_North,
-    PCS_NAD83_Iowa_South,      		Proj_Iowa_CS83_South,
-
-    PCS_NAD83_Kansas_North,		Proj_Kansas_CS83_North,
-    PCS_NAD83_Kansas_South,		Proj_Kansas_CS83_South,
-
-    PCS_NAD83_Kentucky_North,		Proj_Kentucky_CS83_North,
-    PCS_NAD83_Kentucky_South,		Proj_Kentucky_CS83_South,
-
-    PCS_NAD83_Louisiana_North,		Proj_Louisiana_CS83_North,
-    PCS_NAD83_Louisiana_South,		Proj_Louisiana_CS83_South,
-
-    PCS_NAD83_Maine_East,		Proj_Maine_CS83_East,
-    PCS_NAD83_Maine_West,		Proj_Maine_CS83_West,
-
-    PCS_NAD83_Maryland,			Proj_Maryland_CS83,
-
-    PCS_NAD83_Massachusetts,		Proj_Massachusetts_CS83_Mainland,
-    PCS_NAD83_Massachusetts_Is,		Proj_Massachusetts_CS83_Island,
-
-    PCS_NAD83_Michigan_North,		Proj_Michigan_CS83_North,
-    PCS_NAD83_Michigan_Central,		Proj_Michigan_CS83_Central,
-    PCS_NAD83_Michigan_South,		Proj_Michigan_CS83_South,
-
-    PCS_NAD83_Minnesota_North,		Proj_Minnesota_CS83_North,
-    PCS_NAD83_Minnesota_Cent,		Proj_Minnesota_CS83_Central,
-    PCS_NAD83_Minnesota_South,		Proj_Minnesota_CS83_South,
-
-    PCS_NAD83_Mississippi_East,		Proj_Mississippi_CS83_East,
-    PCS_NAD83_Mississippi_West,		Proj_Mississippi_CS83_West,
-
-    PCS_NAD83_Missouri_East,		Proj_Missouri_CS83_East,
-    PCS_NAD83_Missouri_Central,		Proj_Missouri_CS83_Central,
-    PCS_NAD83_Missouri_West,		Proj_Missouri_CS83_West,
-
-    PCS_NAD83_Montana,			Proj_Montana_CS83,
-
-    PCS_NAD83_Nebraska,			Proj_Nebraska_CS83,
-
-    PCS_NAD83_Nevada_East,		Proj_Nevada_CS83_East,
-    PCS_NAD83_Nevada_Central,		Proj_Nevada_CS83_Central,
-    PCS_NAD83_Nevada_West,		Proj_Nevada_CS83_West,
-
-    PCS_NAD83_New_Hampshire,		Proj_New_Hampshire_CS83,
-
-    PCS_NAD83_New_Jersey,		Proj_New_Jersey_CS83,
-
-    PCS_NAD83_New_Mexico_East,		Proj_New_Mexico_CS83_East,
-    PCS_NAD83_New_Mexico_Cent,		Proj_New_Mexico_CS83_Central,
-    PCS_NAD83_New_Mexico_West,		Proj_New_Mexico_CS83_West,
-
-    PCS_NAD83_New_York_East,		Proj_New_York_CS83_East,
-    PCS_NAD83_New_York_Central,		Proj_New_York_CS83_Central,
-    PCS_NAD83_New_York_West,		Proj_New_York_CS83_West,
-    PCS_NAD83_New_York_Long_Is,		Proj_New_York_CS83_Long_Island,
-
-    PCS_NAD83_North_Carolina,	       	Proj_North_Carolina_CS83,
-
-    PCS_NAD83_North_Dakota_N,		Proj_North_Dakota_CS83_North,
-    PCS_NAD83_North_Dakota_S,		Proj_North_Dakota_CS83_South,
-
-    PCS_NAD83_Ohio_North,		Proj_Ohio_CS83_North,
-    PCS_NAD83_Ohio_South,		Proj_Ohio_CS83_South,
-
-    PCS_NAD83_Oklahoma_North,		Proj_Oklahoma_CS83_North,
-    PCS_NAD83_Oklahoma_South,		Proj_Oklahoma_CS83_South,
-
-    PCS_NAD83_Oregon_North,		Proj_Oregon_CS83_North,
-    PCS_NAD83_Oregon_South,		Proj_Oregon_CS83_South,
-
-    PCS_NAD83_Pennsylvania_N,		Proj_Pennsylvania_CS83_North,
-    PCS_NAD83_Pennsylvania_S,		Proj_Pennsylvania_CS83_South,
-
-    PCS_NAD83_Rhode_Island,		Proj_Rhode_Island_CS83,
-
-    PCS_NAD83_South_Carolina,		Proj_South_Carolina_CS83,
-
-    PCS_NAD83_South_Dakota_N,		Proj_South_Dakota_CS83_North,
-    PCS_NAD83_South_Dakota_S,		Proj_South_Dakota_CS83_South,
-
-    PCS_NAD83_Tennessee,		Proj_Tennessee_CS83,
-
-    PCS_NAD83_Texas_North,		Proj_Texas_CS83_North,
-    PCS_NAD83_Texas_North_Cen,		Proj_Texas_CS83_North_Central,
-    PCS_NAD83_Texas_Central,		Proj_Texas_CS83_Central,
-    PCS_NAD83_Texas_South_Cen,		Proj_Texas_CS83_South_Central,
-    PCS_NAD83_Texas_South,		Proj_Texas_CS83_South,
-
-    PCS_NAD83_Utah_North,		Proj_Utah_CS83_North,
-    PCS_NAD83_Utah_Central,		Proj_Utah_CS83_Central,
-    PCS_NAD83_Utah_South,		Proj_Utah_CS83_South,
-
-    PCS_NAD83_Vermont,			Proj_Vermont_CS83,
-
-    PCS_NAD83_Virginia_North,		Proj_Virginia_CS83_North,
-    PCS_NAD83_Virginia_South,		Proj_Virginia_CS83_South,
-
-    PCS_NAD83_Washington_North,		Proj_Washington_CS83_North,
-    PCS_NAD83_Washington_South,		Proj_Washington_CS83_South,
-
-    PCS_NAD83_West_Virginia_N,		Proj_West_Virginia_CS83_North,
-    PCS_NAD83_West_Virginia_S,		Proj_West_Virginia_CS83_South,
-
-    PCS_NAD83_Wisconsin_North,		Proj_Wisconsin_CS83_North,
-    PCS_NAD83_Wisconsin_Cen,		Proj_Wisconsin_CS83_Central,
-    PCS_NAD83_Wisconsin_South,		Proj_Wisconsin_CS83_South,
-
-    PCS_NAD83_Wyoming_East,		Proj_Wyoming_CS83_East,
-    PCS_NAD83_Wyoming_E_Cen,		Proj_Wyoming_CS83_East_Central,
-    PCS_NAD83_Wyoming_W_Cen,		Proj_Wyoming_CS83_West_Central,
-    PCS_NAD83_Wyoming_West,		Proj_Wyoming_CS83_West,
-    
-    PCS_NAD83_Puerto_Rico_Virgin_Is,	Proj_Puerto_Rico_Virgin_Is,
-
-    PCS_NAD27_Alabama_East,		Proj_Alabama_CS27_East,
-    PCS_NAD27_Alabama_West,		Proj_Alabama_CS27_West,
-
-    PCS_NAD27_Alaska_zone_1,		Proj_Alaska_CS27_1,
-    PCS_NAD27_Alaska_zone_2,		Proj_Alaska_CS27_2,
-    PCS_NAD27_Alaska_zone_3,		Proj_Alaska_CS27_3,
-    PCS_NAD27_Alaska_zone_4,		Proj_Alaska_CS27_4,
-    PCS_NAD27_Alaska_zone_5,		Proj_Alaska_CS27_5,
-    PCS_NAD27_Alaska_zone_6,		Proj_Alaska_CS27_6,
-    PCS_NAD27_Alaska_zone_7,		Proj_Alaska_CS27_7,
-    PCS_NAD27_Alaska_zone_8,		Proj_Alaska_CS27_8,
-    PCS_NAD27_Alaska_zone_9,		Proj_Alaska_CS27_9,
-    PCS_NAD27_Alaska_zone_10,		Proj_Alaska_CS27_10,
-
-    PCS_NAD27_California_I,		Proj_California_CS27_I,
-    PCS_NAD27_California_II,		Proj_California_CS27_II,
-    PCS_NAD27_California_III,		Proj_California_CS27_III,
-    PCS_NAD27_California_IV,		Proj_California_CS27_IV,
-    PCS_NAD27_California_V,		Proj_California_CS27_V,
-    PCS_NAD27_California_VI,		Proj_California_CS27_VI,
-    PCS_NAD27_California_VII,		Proj_California_CS27_VII,
-
-    PCS_NAD27_Arizona_East,		Proj_Arizona_Coordinate_System_east,
-    PCS_NAD27_Arizona_Central,		Proj_Arizona_Coordinate_System_Central,
-    PCS_NAD27_Arizona_West,		Proj_Arizona_Coordinate_System_west,
-
-    PCS_NAD27_Arkansas_North,		Proj_Arkansas_CS27_North,
-    PCS_NAD27_Arkansas_South,		Proj_Arkansas_CS27_South,
-
-    PCS_NAD27_Colorado_North,		Proj_Colorado_CS27_North,
-    PCS_NAD27_Colorado_Central,		Proj_Colorado_CS27_Central,
-    PCS_NAD27_Colorado_South,		Proj_Colorado_CS27_South,
-
-    PCS_NAD27_Connecticut,		Proj_Connecticut_CS27,
-
-    PCS_NAD27_Delaware,			Proj_Delaware_CS27,
-
-    PCS_NAD27_Florida_East,		Proj_Florida_CS27_East,
-    PCS_NAD27_Florida_North,		Proj_Florida_CS27_North,
-    PCS_NAD27_Florida_West,		Proj_Florida_CS27_West,
-
-    PCS_NAD27_Hawaii_zone_1,		Proj_Hawaii_CS27_1,
-    PCS_NAD27_Hawaii_zone_2,		Proj_Hawaii_CS27_2,
-    PCS_NAD27_Hawaii_zone_3,		Proj_Hawaii_CS27_3,
-    PCS_NAD27_Hawaii_zone_4,		Proj_Hawaii_CS27_4,
-    PCS_NAD27_Hawaii_zone_5,		Proj_Hawaii_CS27_5,
-
-    PCS_NAD27_Georgia_East,		Proj_Georgia_CS27_East,
-    PCS_NAD27_Georgia_West,		Proj_Georgia_CS27_West,
-
-    PCS_NAD27_Idaho_East,		Proj_Idaho_CS27_East,
-    PCS_NAD27_Idaho_Central,		Proj_Idaho_CS27_Central,
-    PCS_NAD27_Idaho_West,		Proj_Idaho_CS27_West,
-
-    PCS_NAD27_Illinois_East,		Proj_Illinois_CS27_East,
-    PCS_NAD27_Illinois_West,		Proj_Illinois_CS27_West,
-
-    PCS_NAD27_Indiana_East,		Proj_Indiana_CS27_East,
-    PCS_NAD27_Indiana_West,		Proj_Indiana_CS27_West,
-
-    PCS_NAD27_Iowa_North,      		Proj_Iowa_CS27_North,
-    PCS_NAD27_Iowa_South,      		Proj_Iowa_CS27_South,
-
-    PCS_NAD27_Kansas_North,		Proj_Kansas_CS27_North,
-    PCS_NAD27_Kansas_South,		Proj_Kansas_CS27_South,
-
-    PCS_NAD27_Kentucky_North,		Proj_Kentucky_CS27_North,
-    PCS_NAD27_Kentucky_South,		Proj_Kentucky_CS27_South,
-
-    PCS_NAD27_Louisiana_North,		Proj_Louisiana_CS27_North,
-    PCS_NAD27_Louisiana_South,		Proj_Louisiana_CS27_South,
-
-    PCS_NAD27_Maine_East,		Proj_Maine_CS27_East,
-    PCS_NAD27_Maine_West,		Proj_Maine_CS27_West,
-
-    PCS_NAD27_Maryland,			Proj_Maryland_CS27,
-
-    PCS_NAD27_Massachusetts,		Proj_Massachusetts_CS27_Mainland,
-    PCS_NAD27_Massachusetts_Is,		Proj_Massachusetts_CS27_Island,
-
-    PCS_NAD27_Michigan_North,		Proj_Michigan_CS27_North,
-    PCS_NAD27_Michigan_Central,		Proj_Michigan_CS27_Central,
-    PCS_NAD27_Michigan_South,		Proj_Michigan_CS27_South,
-
-    PCS_NAD27_Minnesota_North,		Proj_Minnesota_CS27_North,
-    PCS_NAD27_Minnesota_Cent,		Proj_Minnesota_CS27_Central,
-    PCS_NAD27_Minnesota_South,		Proj_Minnesota_CS27_South,
-
-    PCS_NAD27_Mississippi_East,		Proj_Mississippi_CS27_East,
-    PCS_NAD27_Mississippi_West,		Proj_Mississippi_CS27_West,
-
-    PCS_NAD27_Missouri_East,		Proj_Missouri_CS27_East,
-    PCS_NAD27_Missouri_Central,		Proj_Missouri_CS27_Central,
-    PCS_NAD27_Missouri_West,		Proj_Missouri_CS27_West,
-
-    PCS_NAD27_Montana_North,		Proj_Montana_CS27_North,
-    PCS_NAD27_Montana_Central,		Proj_Montana_CS27_Central,
-    PCS_NAD27_Montana_South,		Proj_Montana_CS27_South,
-
-    PCS_NAD27_Nebraska_North,		Proj_Nebraska_CS27_North,
-    PCS_NAD27_Nebraska_South,		Proj_Nebraska_CS27_South,
-
-    PCS_NAD27_Nevada_East,		Proj_Nevada_CS27_East,
-    PCS_NAD27_Nevada_Central,		Proj_Nevada_CS27_Central,
-    PCS_NAD27_Nevada_West,		Proj_Nevada_CS27_West,
-
-    PCS_NAD27_New_Hampshire,		Proj_New_Hampshire_CS27,
-
-    PCS_NAD27_New_Jersey,		Proj_New_Jersey_CS27,
-
-    PCS_NAD27_New_Mexico_East,		Proj_New_Mexico_CS27_East,
-    PCS_NAD27_New_Mexico_Cent,		Proj_New_Mexico_CS27_Central,
-    PCS_NAD27_New_Mexico_West,		Proj_New_Mexico_CS27_West,
-
-    PCS_NAD27_New_York_East,		Proj_New_York_CS27_East,
-    PCS_NAD27_New_York_Central,		Proj_New_York_CS27_Central,
-    PCS_NAD27_New_York_West,		Proj_New_York_CS27_West,
-    PCS_NAD27_New_York_Long_Is,		Proj_New_York_CS27_Long_Island,
-
-    PCS_NAD27_North_Carolina,	       	Proj_North_Carolina_CS27,
-
-    PCS_NAD27_North_Dakota_N,		Proj_North_Dakota_CS27_North,
-    PCS_NAD27_North_Dakota_S,		Proj_North_Dakota_CS27_South,
-
-    PCS_NAD27_Ohio_North,		Proj_Ohio_CS27_North,
-    PCS_NAD27_Ohio_South,		Proj_Ohio_CS27_South,
-
-    PCS_NAD27_Oklahoma_North,		Proj_Oklahoma_CS27_North,
-    PCS_NAD27_Oklahoma_South,		Proj_Oklahoma_CS27_South,
-
-    PCS_NAD27_Oregon_North,		Proj_Oregon_CS27_North,
-    PCS_NAD27_Oregon_South,		Proj_Oregon_CS27_South,
-
-    PCS_NAD27_Pennsylvania_N,		Proj_Pennsylvania_CS27_North,
-    PCS_NAD27_Pennsylvania_S,		Proj_Pennsylvania_CS27_South,
-
-    PCS_NAD27_Rhode_Island,		Proj_Rhode_Island_CS27,
-
-    PCS_NAD27_South_Carolina_N,		Proj_South_Carolina_CS27_North,
-    PCS_NAD27_South_Carolina_S,		Proj_South_Carolina_CS27_South,
-
-    PCS_NAD27_South_Dakota_N,		Proj_South_Dakota_CS27_North,
-    PCS_NAD27_South_Dakota_S,		Proj_South_Dakota_CS27_South,
-
-    PCS_NAD27_Tennessee,		Proj_Tennessee_CS27,
-
-    PCS_NAD27_Texas_North,		Proj_Texas_CS27_North,
-    PCS_NAD27_Texas_North_Cen,		Proj_Texas_CS27_North_Central,
-    PCS_NAD27_Texas_Central,		Proj_Texas_CS27_Central,
-    PCS_NAD27_Texas_South_Cen,		Proj_Texas_CS27_South_Central,
-    PCS_NAD27_Texas_South,		Proj_Texas_CS27_South,
-
-    PCS_NAD27_Utah_North,		Proj_Utah_CS27_North,
-    PCS_NAD27_Utah_Central,		Proj_Utah_CS27_Central,
-    PCS_NAD27_Utah_South,		Proj_Utah_CS27_South,
-
-    PCS_NAD27_Vermont,			Proj_Vermont_CS27,
-
-    PCS_NAD27_Virginia_North,		Proj_Virginia_CS27_North,
-    PCS_NAD27_Virginia_South,		Proj_Virginia_CS27_South,
-
-    PCS_NAD27_Washington_North,		Proj_Washington_CS27_North,
-    PCS_NAD27_Washington_South,		Proj_Washington_CS27_South,
-
-    PCS_NAD27_West_Virginia_N,		Proj_West_Virginia_CS27_North,
-    PCS_NAD27_West_Virginia_S,		Proj_West_Virginia_CS27_South,
-
-    PCS_NAD27_Wisconsin_North,		Proj_Wisconsin_CS27_North,
-    PCS_NAD27_Wisconsin_Cen,		Proj_Wisconsin_CS27_Central,
-    PCS_NAD27_Wisconsin_South,		Proj_Wisconsin_CS27_South,
-
-    PCS_NAD27_Wyoming_East,		Proj_Wyoming_CS27_East,
-    PCS_NAD27_Wyoming_E_Cen,		Proj_Wyoming_CS27_East_Central,
-    PCS_NAD27_Wyoming_W_Cen,		Proj_Wyoming_CS27_West_Central,
-    PCS_NAD27_Wyoming_West,		Proj_Wyoming_CS27_West,
-    
-    PCS_NAD27_Puerto_Rico,		Proj_Puerto_Rico_CS27,
-
-    KvUserDefined
-};
-
-/************************************************************************/
-/*                          GTIFMapSysToPCS()                           */
-/*                                                                      */
-/*      Given a Datum, MapSys and zone value generate the best PCS      */
-/*      code possible.                                                  */
-/************************************************************************/
-
-int	GTIFMapSysToPCS( int MapSys, int Datum, int nZone )
-
-{
-    int		PCSCode = KvUserDefined;
-
-    if( MapSys == MapSys_UTM_North )
-    {
-	if( Datum == GCS_NAD27 )
-	    PCSCode = PCS_NAD27_UTM_zone_3N + nZone - 3;
-	else if( Datum == GCS_NAD83 )
-	    PCSCode = PCS_NAD83_UTM_zone_3N + nZone - 3;
-	else if( Datum == GCS_WGS_72 )
-	    PCSCode = PCS_WGS72_UTM_zone_1N + nZone - 1;
-	else if( Datum == GCS_WGS_72BE )
-	    PCSCode = PCS_WGS72BE_UTM_zone_1N + nZone - 1;
-	else if( Datum == GCS_WGS_84 )
-	    PCSCode = PCS_WGS84_UTM_zone_1N + nZone - 1;
-    }
-    else if( MapSys == MapSys_UTM_South )
-    {
-	if( Datum == GCS_WGS_72 )
-	    PCSCode = PCS_WGS72_UTM_zone_1S + nZone - 1;
-	else if( Datum == GCS_WGS_72BE )
-	    PCSCode = PCS_WGS72BE_UTM_zone_1S + nZone - 1;
-	else if( Datum == GCS_WGS_84 )
-	    PCSCode = PCS_WGS84_UTM_zone_1S + nZone - 1;
-    }
-    else if( MapSys == MapSys_State_Plane_27 )
-    {
-	int		i;
-
-        PCSCode = 10000 + nZone;
-	for( i = 0; StatePlaneTable[i] != KvUserDefined; i += 2 )
-	{
-	    if( StatePlaneTable[i+1] == PCSCode )
-	        PCSCode = StatePlaneTable[i];
-	}
-
-        /* Old EPSG code was in error for Tennesse CS27, override */
-        if( nZone == 4100 )
-            PCSCode = 2204;
-    }
-    else if( MapSys == MapSys_State_Plane_83 )
-    {
-	int		i;
-
-        PCSCode = 10000 + nZone + 30;
-
-	for( i = 0; StatePlaneTable[i] != KvUserDefined; i += 2 )
-	{
-	    if( StatePlaneTable[i+1] == PCSCode )
-	        PCSCode = StatePlaneTable[i];
-	}
-
-        /* Old EPSG code was in error for Kentucky North CS83, override */
-        if( nZone == 1601 )
-            PCSCode = 2205;
-    }
-
-    return( PCSCode );
-}
-
-/************************************************************************/
-/*                          GTIFMapSysToProj()                          */
-/*                                                                      */
-/*      Given a MapSys and zone value generate the best Proj_           */
-/*      code possible.                                                  */
-/************************************************************************/
-
-int	GTIFMapSysToProj( int MapSys, int nZone )
-
-{
-    int		ProjCode = KvUserDefined;
-
-    if( MapSys == MapSys_UTM_North )
-    {
-        ProjCode = Proj_UTM_zone_1N + nZone - 1;
-    }
-    else if( MapSys == MapSys_UTM_South )
-    {
-        ProjCode = Proj_UTM_zone_1S + nZone - 1;
-    }
-    else if( MapSys == MapSys_State_Plane_27 )
-    {
-        ProjCode = 10000 + nZone;
-
-        /* Tennesse override */
-        if( nZone == 4100 )
-            ProjCode = 15302;
-    }
-    else if( MapSys == MapSys_State_Plane_83 )
-    {
-        ProjCode = 10000 + nZone + 30;
-
-        /* Kentucky North override */
-        if( nZone == 1601 )
-            ProjCode = 15303;
-    }
-
-    return( ProjCode );
-}
-
-/************************************************************************/
-/*                          GTIFPCSToMapSys()                           */
-/************************************************************************/
-
-/**
- * Translate a PCS_ code into a UTM or State Plane map system, a datum,
- * and a zone if possible.
- *
- * @param PCSCode The projection code (PCS_*) as would be stored in the
- * ProjectedCSTypeGeoKey of a GeoTIFF file.
- *
- * @param pDatum Pointer to an integer into which the datum code (GCS_*)
- * is put if the function succeeds.
- *
- * @param pZone Pointer to an integer into which the zone will be placed
- * if the function is successful.
- *
- * @return Returns either MapSys_UTM_North, MapSys_UTM_South,
- * MapSys_State_Plane_83, MapSys_State_Plane_27 or KvUserDefined.
- * KvUserDefined indicates that the
- * function failed to recognise the projection as UTM or State Plane.
- *
- * The zone value is only set if the return code is other than KvUserDefined.
- * For utm map system the returned zone will be between 1 and 60.  For
- * State Plane, the USGS state plane zone number is returned.  For instance,
- * Alabama East is zone 101.
- *
- * The datum (really this is the GCS) is set to a GCS_ value such as GCS_NAD27.
- *
- * This function is useful to recognise (most) UTM and State Plane coordinate
- * systems, even if CSV files aren't available to translate them automatically.
- * It is used as a fallback mechanism by GTIFGetDefn() for normalization when
- * CSV files aren't found. 
- */
-
-int GTIFPCSToMapSys( int PCSCode, int * pDatum, int * pZone )
-
-{
-    int		Datum = KvUserDefined, Proj = KvUserDefined;
-    int		nZone = KvUserDefined, i;
-
-/* -------------------------------------------------------------------- */
-/*      UTM with various datums.  Note there are lots of PCS UTM        */
-/*      codes not done yet which use strange datums.                    */
-/* -------------------------------------------------------------------- */
-    if( PCSCode >= PCS_NAD27_UTM_zone_3N && PCSCode <= PCS_NAD27_UTM_zone_22N )
-    {
-	Datum = GCS_NAD27;
-	Proj = MapSys_UTM_North;
-	nZone = PCSCode - PCS_NAD27_UTM_zone_3N + 3;
-    }
-    else if( PCSCode >= PCS_NAD83_UTM_zone_3N 
-	     && PCSCode <= PCS_NAD83_UTM_zone_23N )
-    {
-	Datum = GCS_NAD83;
-	Proj = MapSys_UTM_North;
-	nZone = PCSCode - PCS_NAD83_UTM_zone_3N + 3;
-    }
-
-    else if( PCSCode >= PCS_WGS72_UTM_zone_1N
-	     && PCSCode <= PCS_WGS72_UTM_zone_60N )
-    {
-	Datum = GCS_WGS_72;
-	Proj = MapSys_UTM_North;
-	nZone = PCSCode - PCS_WGS72_UTM_zone_1N + 1;
-    }
-    else if( PCSCode >= PCS_WGS72_UTM_zone_1S
-	     && PCSCode <= PCS_WGS72_UTM_zone_60S )
-    {
-	Datum = GCS_WGS_72;
-	Proj = MapSys_UTM_South;
-	nZone = PCSCode - PCS_WGS72_UTM_zone_1S + 1;
-    }
-
-    else if( PCSCode >= PCS_WGS72BE_UTM_zone_1N
-	     && PCSCode <= PCS_WGS72BE_UTM_zone_60N )
-    {
-	Datum = GCS_WGS_72BE;
-	Proj = MapSys_UTM_North;
-	nZone = PCSCode - PCS_WGS72BE_UTM_zone_1N + 1;
-    }
-    else if( PCSCode >= PCS_WGS72BE_UTM_zone_1S
-	     && PCSCode <= PCS_WGS72BE_UTM_zone_60S )
-    {
-	Datum = GCS_WGS_72BE;
-	Proj = MapSys_UTM_South;
-	nZone = PCSCode - PCS_WGS72BE_UTM_zone_1S + 1;
-    }
-
-    else if( PCSCode >= PCS_WGS84_UTM_zone_1N
-	     && PCSCode <= PCS_WGS84_UTM_zone_60N )
-    {
-	Datum = GCS_WGS_84;
-	Proj = MapSys_UTM_North;
-	nZone = PCSCode - PCS_WGS84_UTM_zone_1N + 1;
-    }
-    else if( PCSCode >= PCS_WGS84_UTM_zone_1S
-	     && PCSCode <= PCS_WGS84_UTM_zone_60S )
-    {
-	Datum = GCS_WGS_84;
-	Proj = MapSys_UTM_South;
-	nZone = PCSCode - PCS_WGS84_UTM_zone_1S + 1;
-    }
-    else if( PCSCode >= PCS_SAD69_UTM_zone_18N 
-	     && PCSCode <= PCS_SAD69_UTM_zone_22N )
-    {
-	Datum = KvUserDefined;
-	Proj = MapSys_UTM_North;
-	nZone = PCSCode - PCS_SAD69_UTM_zone_18N + 18;
-    }
-    else if( PCSCode >= PCS_SAD69_UTM_zone_17S
-	     && PCSCode <= PCS_SAD69_UTM_zone_25S )
-    {
-	Datum = KvUserDefined;
-	Proj = MapSys_UTM_South;
-	nZone = PCSCode - PCS_SAD69_UTM_zone_17S + 17;
-    }
-
-/* -------------------------------------------------------------------- */
-/*      State Plane zones, first we translate any PCS_ codes to		*/
-/*	a Proj_ code that we can get a handle on.			*/
-/* -------------------------------------------------------------------- */
-    for( i = 0; StatePlaneTable[i] != KvUserDefined; i += 2 )
-    {
-	if( StatePlaneTable[i] == PCSCode )
-	    PCSCode = StatePlaneTable[i+1];
-    }
-
-    if( PCSCode <= 15900 && PCSCode >= 10000 )
-    {
-	if( (PCSCode % 100) >= 30 )
-        {
-            Proj = MapSys_State_Plane_83;
-	    Datum = GCS_NAD83;
-        }
-	else
-        {
-            Proj = MapSys_State_Plane_27;
-	    Datum = GCS_NAD27;
-        }
-	
-	nZone = PCSCode - 10000;
-	if( Datum == GCS_NAD83 )
-	    nZone -= 30;
-    }
-
-    if( pDatum != NULL )
-        *pDatum = Datum;
-
-    if( pZone != NULL )
-        *pZone = nZone;
-
-    return( Proj );
-}
-
-/************************************************************************/
-/*                          GTIFProjToMapSys()                          */
-/************************************************************************/
-
-/**
- * Translate a Proj_ code into a UTM or State Plane map system, and a zone
- * if possible.
- *
- * @param ProjCode The projection code (Proj_*) as would be stored in the
- * ProjectionGeoKey of a GeoTIFF file.
- * @param pZone Pointer to an integer into which the zone will be placed
- * if the function is successful.
- *
- * @return Returns either MapSys_UTM_North, MapSys_UTM_South,
- * MapSys_State_Plane_27, MapSys_State_Plane_83 or KvUserDefined.
- * KvUserDefined indicates that the
- * function failed to recognise the projection as UTM or State Plane.
- *
- * The zone value is only set if the return code is other than KvUserDefined.
- * For utm map system the returned zone will be between 1 and 60.  For
- * State Plane, the USGS state plane zone number is returned.  For instance,
- * Alabama East is zone 101.
- *
- * This function is useful to recognise UTM and State Plane coordinate
- * systems, and to extract zone numbers so the projections can be
- * represented as UTM rather than as the underlying projection method such
- * Transverse Mercator for instance.
- */
-
-int GTIFProjToMapSys( int ProjCode, int * pZone )
-
-{
-    int		nZone = KvUserDefined;
-    int		MapSys = KvUserDefined;
-
-/* -------------------------------------------------------------------- */
-/*      Handle UTM.                                                     */
-/* -------------------------------------------------------------------- */
-    if( ProjCode >= Proj_UTM_zone_1N && ProjCode <= Proj_UTM_zone_60N )
-    {
-	MapSys = MapSys_UTM_North;
-	nZone = ProjCode - Proj_UTM_zone_1N + 1;
-    }
-    else if( ProjCode >= Proj_UTM_zone_1S && ProjCode <= Proj_UTM_zone_60S )
-    {
-	MapSys = MapSys_UTM_South;
-	nZone = ProjCode - Proj_UTM_zone_1S + 1;
-    }
-
-/* -------------------------------------------------------------------- */
-/*      Handle State Plane.  I think there are some anomolies in        */
-/*      here, so this is a bit risky.                                   */
-/* -------------------------------------------------------------------- */
-    else if( ProjCode >= 10101 && ProjCode <= 15299 )
-    {
-        if( ProjCode % 100 >= 30 )
-        {
-            MapSys = MapSys_State_Plane_83;
-            nZone = ProjCode - 10000 - 30;
-        }
-        else
-        {
-            MapSys = MapSys_State_Plane_27;
-            nZone = ProjCode - 10000;
-        }
-    }
-    
-    if( pZone != NULL )
-        *pZone = nZone;
-
-    return( MapSys );
-}
-
diff --git a/src/tiff/geo_free.c b/src/tiff/geo_free.c
deleted file mode 100644
index 5618d43..0000000
--- a/src/tiff/geo_free.c
+++ /dev/null
@@ -1,62 +0,0 @@
-/**********************************************************************
- *
- *  geo_free.c  -- Public routines for GEOTIFF GeoKey access.
- *
- *    Written By: Niles D. Ritter.
- *
- *  copyright (c) 1995   Niles D. Ritter
- *
- *  Permission granted to use this software, so long as this copyright
- *  notice accompanies any products derived therefrom.
- *
- **********************************************************************/
-
-#include "geotiff.h"   /* public interface        */
-#include "geo_tiffp.h" /* external TIFF interface */
-#include "geo_keyp.h"  /* private interface       */
-
-
-/**********************************************************************
- *
- *                        Public Routines
- *
- **********************************************************************/
-
-/**
-  
-This function deallocates an existing GeoTIFF access handle previously
-created with GTIFNew().  If the handle was
-used to write GeoTIFF keys to the TIFF file, the 
-GTIFWriteKeys() function should be used
-to flush results to the file before calling GTIFFree().  GTIFFree()
-should be called before XTIFFClose() is
-called on the corresponding TIFF file handle.<p>
-
-*/
-
-void GTIFFree(GTIF* gtif)
-{
-    int     i;
-	
-    if (!gtif) return;
-	
-    /* Free parameter arrays */
-    if (gtif->gt_double) _GTIFFree (gtif->gt_double);
-    if (gtif->gt_short) _GTIFFree (gtif->gt_short);
-	
-    /* Free GeoKey arrays */
-    if (gtif->gt_keys)
-    {
-        for (i = 0; i < MAX_KEYS; i++)
-        {
-            if (gtif->gt_keys[i].gk_type == TYPE_ASCII)
-            {
-                _GTIFFree (gtif->gt_keys[i].gk_data);
-            }
-        }
-        _GTIFFree (gtif->gt_keys);
-    }
-    if (gtif->gt_keyindex) _GTIFFree (gtif->gt_keyindex);
-	
-    _GTIFFree (gtif);
-}
diff --git a/src/tiff/geo_get.c b/src/tiff/geo_get.c
deleted file mode 100644
index 61f560b..0000000
--- a/src/tiff/geo_get.c
+++ /dev/null
@@ -1,176 +0,0 @@
-/**********************************************************************
- *
- *  geo_get.c  -- Public routines for GEOTIFF GeoKey access.
- *
- *    Written By: Niles D. Ritter.
- *
- *  copyright (c) 1995   Niles D. Ritter
- *
- *  Permission granted to use this software, so long as this copyright
- *  notice accompanies any products derived therefrom.
- *
- *  Revision History;
- *
- *    20 June, 1995      Niles D. Ritter         New
- *    3 July,  1995      Greg Martin             Fix strings and index
- *    6 July,  1995      Niles D. Ritter         Unfix indexing.
- *
- **********************************************************************/
-
-#include "geotiff.h"   /* public interface        */
-#include "geo_tiffp.h" /* external TIFF interface */
-#include "geo_keyp.h"  /* private interface       */
-
-/* return the Header info of this geotiff file */
-
-void GTIFDirectoryInfo(GTIF *gtif, int version[3], int *keycount)
-{
-        if (version)
-        {
-                version[0]  = gtif->gt_version;
-                version[1]  = gtif->gt_rev_major;
-                version[2]  = gtif->gt_rev_minor;
-        }
-        if (keycount) *keycount = gtif->gt_num_keys;
-}
-
-
-int GTIFKeyInfo(GTIF *gtif, geokey_t key, int *size, tagtype_t* type)
-{
-        int index = gtif->gt_keyindex[ key ];
-        GeoKey *keyptr;
-
-        if (!index) return 0;
-
-        keyptr = gtif->gt_keys + index;
-        if (size) *size = (int) keyptr->gk_size;
-        if (type) *type = keyptr->gk_type;
-
-        return keyptr->gk_count;
-}
-
-/** 
-
-This function reads the value of a single GeoKey from a GeoTIFF file.
-
- at param gtif The geotiff information handle from GTIFNew().
-
- at param thekey The geokey_t name (such as ProjectedCSTypeGeoKey).
-This must come from the list of legal geokey_t values
-(an enumeration) listed below.
-
- at param val The <b>val</b> argument is a pointer to the
-variable into which the value should be read.  The type of the variable
-varies depending on the geokey_t given.  While there is no ready mapping
-of geokey_t values onto types, in general code values are of type <i>short</i>,
-citations are strings, and everything else is of type <i>double</i>.  Note
-that pointer's to <i>int</i> should never be passed to GTIFKeyGet() for
-integer values as they will be shorts, and the int's may not be properly
-initialized (and will be grossly wrong on MSB systems).
-
- at param index Indicates how far into the list of values
-for this geokey to offset. Should normally be zero.
-
- at param count Indicates how many values
-to read.  At this time all keys except for strings have only one value,
-so <b>index</b> should be zero, and <b>count</b> should be one.
-
- at return The GTIFKeyGet() function returns the number of values read.  Normally
-this would be one if successful or zero if the key doesn't exist for this
-file.
-
-From geokeys.inc we see the following geokey_t values are possible:<p>
-
-<pre>
--- 6.2.1 GeoTIFF Configuration Keys --
-
-ValuePair(  GTModelTypeGeoKey,	1024) -- Section 6.3.1.1 Codes       --
-ValuePair(  GTRasterTypeGeoKey,	1025) -- Section 6.3.1.2 Codes       --
-ValuePair(  GTCitationGeoKey,	1026) -- documentation --
-
--- 6.2.2 Geographic CS Parameter Keys --
-
-ValuePair(  GeographicTypeGeoKey,	2048) -- Section 6.3.2.1 Codes     --
-ValuePair(  GeogCitationGeoKey,	2049) -- documentation             --
-ValuePair(  GeogGeodeticDatumGeoKey,	2050) -- Section 6.3.2.2 Codes     --
-ValuePair(  GeogPrimeMeridianGeoKey,	2051) -- Section 6.3.2.4 codes     --
-ValuePair(  GeogLinearUnitsGeoKey,	2052) -- Section 6.3.1.3 Codes     --
-ValuePair(  GeogLinearUnitSizeGeoKey,	2053) -- meters                    --
-ValuePair(  GeogAngularUnitsGeoKey,	2054) -- Section 6.3.1.4 Codes     --
-ValuePair(  GeogAngularUnitSizeGeoKey,	2055) -- radians                   --
-ValuePair(  GeogEllipsoidGeoKey,	2056) -- Section 6.3.2.3 Codes     --
-ValuePair(  GeogSemiMajorAxisGeoKey,	2057) -- GeogLinearUnits           --
-ValuePair(  GeogSemiMinorAxisGeoKey,	2058) -- GeogLinearUnits           --
-ValuePair(  GeogInvFlatteningGeoKey,	2059) -- ratio                     --
-ValuePair(  GeogAzimuthUnitsGeoKey,	2060) -- Section 6.3.1.4 Codes     --
-ValuePair(  GeogPrimeMeridianLongGeoKey,	2061) -- GeoAngularUnit            --
-
--- 6.2.3 Projected CS Parameter Keys --
---    Several keys have been renamed,--
---    and the deprecated names aliased for backward compatibility --
-
-ValuePair(  ProjectedCSTypeGeoKey,	3072)     -- Section 6.3.3.1 codes   --
-ValuePair(  PCSCitationGeoKey,	3073)     -- documentation           --
-ValuePair(  ProjectionGeoKey,	3074)     -- Section 6.3.3.2 codes   --
-ValuePair(  ProjCoordTransGeoKey,	3075)     -- Section 6.3.3.3 codes   --
-ValuePair(  ProjLinearUnitsGeoKey,	3076)     -- Section 6.3.1.3 codes   --
-ValuePair(  ProjLinearUnitSizeGeoKey,	3077)     -- meters                  --
-ValuePair(  ProjStdParallel1GeoKey,	3078)     -- GeogAngularUnit --
-ValuePair(  ProjStdParallelGeoKey,ProjStdParallel1GeoKey) -- ** alias **   --
-ValuePair(  ProjStdParallel2GeoKey,	3079)     -- GeogAngularUnit --
-ValuePair(  ProjNatOriginLongGeoKey,	3080)     -- GeogAngularUnit --
-ValuePair(  ProjOriginLongGeoKey,ProjNatOriginLongGeoKey) -- ** alias **     --
-ValuePair(  ProjNatOriginLatGeoKey,	3081)     -- GeogAngularUnit --
-ValuePair(  ProjOriginLatGeoKey,ProjNatOriginLatGeoKey)   -- ** alias **     --
-ValuePair(  ProjFalseEastingGeoKey,	3082)     -- ProjLinearUnits --
-ValuePair(  ProjFalseNorthingGeoKey,	3083)     -- ProjLinearUnits --
-ValuePair(  ProjFalseOriginLongGeoKey,	3084)     -- GeogAngularUnit --
-ValuePair(  ProjFalseOriginLatGeoKey,	3085)     -- GeogAngularUnit --
-ValuePair(  ProjFalseOriginEastingGeoKey,	3086)     -- ProjLinearUnits --
-ValuePair(  ProjFalseOriginNorthingGeoKey,	3087)     -- ProjLinearUnits --
-ValuePair(  ProjCenterLongGeoKey,	3088)     -- GeogAngularUnit --
-ValuePair(  ProjCenterLatGeoKey,	3089)     -- GeogAngularUnit --
-ValuePair(  ProjCenterEastingGeoKey,	3090)     -- ProjLinearUnits --
-ValuePair(  ProjCenterNorthingGeoKey,	3091)     -- ProjLinearUnits --
-ValuePair(  ProjScaleAtNatOriginGeoKey,	3092)     -- ratio   --
-ValuePair(  ProjScaleAtOriginGeoKey,ProjScaleAtNatOriginGeoKey)  -- ** alias **   --
-ValuePair(  ProjScaleAtCenterGeoKey,	3093)     -- ratio   --
-ValuePair(  ProjAzimuthAngleGeoKey,	3094)     -- GeogAzimuthUnit --
-ValuePair(  ProjStraightVertPoleLongGeoKey,	3095)     -- GeogAngularUnit --
-
- 6.2.4 Vertical CS Keys 
-   
-ValuePair(  VerticalCSTypeGeoKey,	4096)  -- Section 6.3.4.1 codes   --
-ValuePair(  VerticalCitationGeoKey,	4097)  -- documentation --
-ValuePair(  VerticalDatumGeoKey,	4098)  -- Section 6.3.4.2 codes   --
-ValuePair(  VerticalUnitsGeoKey,	4099)  -- Section 6.3.1 (.x) codes   --
-</pre>
-*/
-
-int GTIFKeyGet(GTIF *gtif, geokey_t thekey, void *val, int index, int count)
-{
-        int kindex = gtif->gt_keyindex[ thekey ];
-        GeoKey *key;
-        gsize_t size;
-        char *data;
-        tagtype_t type;
-
-        if (!kindex) return 0;
-
-        key = gtif->gt_keys+kindex;
-        if (!count) count = key->gk_count - index;
-        if (count <=0) return 0;
-        if (count > key->gk_count) count = key->gk_count;
-        size = key->gk_size;
-        type = key->gk_type;
-
-        if (count==1 && type==TYPE_SHORT) data = (char *)&key->gk_data;
-        else data = key->gk_data;
-
-        _GTIFmemcpy( val, data + index*size, count*size );
-
-        if (type==TYPE_ASCII)
-           ((char *)val)[count-1] = '\0'; /* replace last char with NULL */
-
-        return count;
-}
diff --git a/src/tiff/geo_keyp.h b/src/tiff/geo_keyp.h
deleted file mode 100644
index 0cdb9a6..0000000
--- a/src/tiff/geo_keyp.h
+++ /dev/null
@@ -1,98 +0,0 @@
-/**********************************************************************
- *
- *  geo_keyp.h - private interface for GeoTIFF geokey tag parsing
- *
- *     Written by: Niles D. Ritter
- *
- **********************************************************************/
-
-#ifndef __geo_keyp_h_
-#define __geo_keyp_h_
-
-#include <stdlib.h> /* for size_t */
-
-/*
- * This structure contains the internal program
- * representation of the key entry.
- */
-struct GeoKey {
-	int       gk_key;    /* GeoKey ID        */
-	size_t    gk_size;   /* data byte size   */
-	tagtype_t gk_type;   /* TIFF data type   */
-	long      gk_count;  /* number of values */
-	char*     gk_data;   /* pointer to data, or value */
-};
-typedef struct GeoKey GeoKey;
-
-/*
- *  This structure represents the file-organization of
- *  the key entry. Note that it assumes that short entries
- *  are aligned along 2-byte boundaries.
- */
-struct KeyEntry {
-	pinfo_t ent_key;        /* GeoKey ID            */
-	pinfo_t ent_location;   /* TIFF Tag ID or 0     */
-	pinfo_t ent_count;      /* GeoKey value count   */
-	pinfo_t ent_val_offset; /* value or tag offset  */
-};
-typedef struct KeyEntry KeyEntry;
-
-/*
- * This is the header of the CoordSystemInfoTag. The 'Version'
- *  will only change if the CoorSystemInfoTag structure changes;
- *  The Major Revision will be incremented whenever a new set of
- *  Keys is added or changed, while the Minor revision will be
- *  incremented when only the set of Key-values is increased.
- */
-struct KeyHeader{
-	pinfo_t hdr_version;      /* GeoTIFF Version          */
-	pinfo_t hdr_rev_major;    /* GeoKey Major Revision #  */
-	pinfo_t hdr_rev_minor;    /* GeoKey Minor Revision #  */
-	pinfo_t hdr_num_keys;     /* Number of GeoKeys        */
-};
-typedef struct KeyHeader KeyHeader;
-
-/*
- * This structure holds temporary data while reading or writing
- *  the tags.
- */
-struct TempKeyData {
-    char   *tk_asciiParams;
-    int     tk_asciiParamsLength;
-    int     tk_asciiParamsOffset;
-};
-typedef struct TempKeyData TempKeyData;
-
-
-struct gtiff {
-   tiff_t*    gt_tif;      /* TIFF file descriptor  */
-   TIFFMethod gt_methods;  /* TIFF i/o methods      */
-   int        gt_flags;    /* file flags            */
-   
-   pinfo_t    gt_version;  /* GeoTIFF Version       */
-   pinfo_t    gt_rev_major;/* GeoKey Key Revision   */
-   pinfo_t    gt_rev_minor;/* GeoKey Code Revision  */
-   
-   int        gt_num_keys; /* number of keys        */
-   GeoKey*    gt_keys;     /* array of keys         */
-   int*       gt_keyindex; /* index of a key, if set*/
-   int        gt_keymin;   /* smallest key set      */
-   int        gt_keymax;   /* largest key set       */
-   
-   pinfo_t*   gt_short;    /* array of SHORT vals   */
-   double*    gt_double;   /* array of DOUBLE vals  */
-   int        gt_nshorts;  /* number of SHORT vals  */
-   int        gt_ndoubles; /* number of DOUBLE vals */
-};  
-
-typedef enum {
-	FLAG_FILE_OPEN=1,
-	FLAG_FILE_MODIFIED=2
-} gtiff_flags;
-
-#define MAX_KEYINDEX 65535   /* largest possible key    */
-#define MAX_KEYS 100         /* maximum keys in a file  */
-#define MAX_VALUES 1000      /* maximum values in a tag */
-
-#endif /* __geo_keyp_h_ */
-
diff --git a/src/tiff/geo_names.c b/src/tiff/geo_names.c
deleted file mode 100644
index 0e4c652..0000000
--- a/src/tiff/geo_names.c
+++ /dev/null
@@ -1,175 +0,0 @@
-/*
- * geo_names.c
- *
- *  This encapsulates all of the value-naming mechanism of 
- *  libgeotiff. 
- *
- *  Written By: Niles Ritter
- */
-
-#include "geotiffio.h"
-#include "geonames.h"
-#include "geo_tiffp.h" /* for tag names */
-
-static KeyInfo _formatInfo[] =  {
-   {TYPE_BYTE,    "Byte"},
-   {TYPE_SHORT,   "Short"},
-   {TYPE_LONG,    "Long"},
-   {TYPE_RATIONAL,"Rational"},
-   {TYPE_ASCII,   "Ascii"},
-   {TYPE_FLOAT,   "Float"},
-   {TYPE_DOUBLE,  "Double"},
-   {TYPE_SBYTE,   "SignedByte"},
-   {TYPE_SSHORT,  "SignedShort"},
-   {TYPE_SLONG,  "SignedLong"},
-   {TYPE_UNKNOWN, "Unknown"},
-    END_LIST
-};
-
-static KeyInfo _tagInfo[] =  {
-    {GTIFF_PIXELSCALE,  "ModelPixelScaleTag"},
-    {GTIFF_TRANSMATRIX, "ModelTransformationTag"},
-    {GTIFF_TIEPOINTS,   "ModelTiepointTag"},
-     /* This alias maps the Intergraph symbol to the current tag */
-    {GTIFF_TRANSMATRIX, "IntergraphMatrixTag"},
-    END_LIST
-};
-
-static char *FindName(KeyInfo *info,int key)
-{
-   static char errmsg[80];
-   
-   while (info->ki_key>=0 && info->ki_key != key) info++;
-
-   if (info->ki_key<0)
-   {
-	   sprintf(errmsg,"Unknown-%d", key );
-	   return errmsg;
-   }
-   return info->ki_name;
-}
-
-char *GTIFKeyName(geokey_t key)
-{
-   return FindName( &_keyInfo[0],key);
-}
-
-char *GTIFTypeName(tagtype_t type)
-{
-   return FindName( &_formatInfo[0],type);
-}
-
-char *GTIFTagName(int tag)
-{
-   return FindName( &_tagInfo[0],tag);
-}
-
-char *GTIFValueName(geokey_t key, int value)
-{
-   KeyInfo *info;
-   
-   switch (key)
-   {
-	/* All codes using linear/angular/whatever units */
-	case GeogLinearUnitsGeoKey: 
-	case ProjLinearUnitsGeoKey: 
-	case GeogAngularUnitsGeoKey: 
-	case GeogAzimuthUnitsGeoKey: 
-		                      info=_geounitsValue; break;
-
-   	/* put other key-dependent lists here */
-	case GTModelTypeGeoKey:       info=_modeltypeValue; break;
-	case GTRasterTypeGeoKey:      info=_rastertypeValue; break;
-	case GeographicTypeGeoKey:    info=_geographicValue; break;
-	case GeogGeodeticDatumGeoKey: info=_geodeticdatumValue; break;
-	case GeogEllipsoidGeoKey:     info=_ellipsoidValue; break;
-	case GeogPrimeMeridianGeoKey: info=_primemeridianValue; break;
-	case ProjectedCSTypeGeoKey:   info=_pcstypeValue; break;
-	case ProjectionGeoKey:        info=_projectionValue; break;
-	case ProjCoordTransGeoKey:    info=_coordtransValue; break;
-	case VerticalCSTypeGeoKey:    info=_vertcstypeValue; break;
-	case VerticalDatumGeoKey:     info=_vdatumValue; break;
-
-	/* And if all else fails... */
-   	default:                      info = _csdefaultValue;break;
-   }
-   
-   return FindName( info,value);
-}
-
-/* 
- * Inverse Utilities (name->code) 
- */
-
-
-static int FindCode(KeyInfo *info,char *key)
-{
-   while (info->ki_key>=0 && strcmp(info->ki_name,key) ) info++;
-
-   if (info->ki_key<0)
-   {
-	/* not a registered key; might be generic code */
-	if (!strncmp(key,"Unknown-",8))
-	{
-		int code=-1;
-		sscanf(key,"Unknown-%d",&code);
-		return code;
-	}
-	else return -1;
-   }
-   return info->ki_key;
-}
-
-int GTIFKeyCode(char *key)
-{
-   return FindCode( &_keyInfo[0],key);
-}
-
-int GTIFTypeCode(char *type)
-{
-   return FindCode( &_formatInfo[0],type);
-}
-
-int GTIFTagCode(char *tag)
-{
-   return FindCode( &_tagInfo[0],tag);
-}
-
-
-/*
- *  The key must be determined with GTIFKeyCode() before
- *  the name can be encoded.
- */
-int GTIFValueCode(geokey_t key, char *name)
-{
-   KeyInfo *info;
-   
-   switch (key)
-   {
-	/* All codes using linear/angular/whatever units */
-	case GeogLinearUnitsGeoKey: 
-	case ProjLinearUnitsGeoKey: 
-	case GeogAngularUnitsGeoKey: 
-	case GeogAzimuthUnitsGeoKey: 
-		                      info=_geounitsValue; break;
-
-   	/* put other key-dependent lists here */
-	case GTModelTypeGeoKey:       info=_modeltypeValue; break;
-	case GTRasterTypeGeoKey:      info=_rastertypeValue; break;
-	case GeographicTypeGeoKey:    info=_geographicValue; break;
-	case GeogGeodeticDatumGeoKey: info=_geodeticdatumValue; break;
-	case GeogEllipsoidGeoKey:     info=_ellipsoidValue; break;
-	case GeogPrimeMeridianGeoKey: info=_primemeridianValue; break;
-	case ProjectedCSTypeGeoKey:   info=_pcstypeValue; break;
-	case ProjectionGeoKey:        info=_projectionValue; break;
-	case ProjCoordTransGeoKey:    info=_coordtransValue; break;
-	case VerticalCSTypeGeoKey:    info=_vertcstypeValue; break;
-	case VerticalDatumGeoKey:     info=_vdatumValue; break;
-
-	/* And if all else fails... */
-   	default:                      info = _csdefaultValue;break;
-   }
-   
-   return FindCode( info,name);
-}
-
diff --git a/src/tiff/geo_new.c b/src/tiff/geo_new.c
deleted file mode 100644
index 25579c1..0000000
--- a/src/tiff/geo_new.c
+++ /dev/null
@@ -1,242 +0,0 @@
-/**********************************************************************
- *
- *  geo_new.c  -- Public routines for GEOTIFF GeoKey access.
- *
- *    Written By: Niles D. Ritter.
- *
- *  copyright (c) 1995   Niles D. Ritter
- *
- *  Permission granted to use this software, so long as this copyright
- *  notice accompanies any products derived therefrom.
- *
- *    20 June, 1995      Niles D. Ritter         New
- *    7 July,  1995      Greg Martin             Fix index
- *
- * $Log$
- * Revision 1.11  2004/04/27 21:32:08  warmerda
- * Allow GTIFNew(NULL) to work
- *
- * Revision 1.10  2003/09/02 13:52:17  warmerda
- * various hacks to support improperly terminated asciiparms
- *
- * Revision 1.9  2003/06/19 20:04:11  warmerda
- * fix memory underwrite if ascii parameter string is zero length
- *
- * Revision 1.8  2003/06/05 14:20:45  warmerda
- * cosmetic formatting changes
- *
- **********************************************************************/
-
-#include "geotiffio.h"   /* public interface        */
-#include "geo_tiffp.h" /* external TIFF interface */
-#include "geo_keyp.h"  /* private interface       */
-
-/* private local routines */
-static int ReadKey(GTIF* gt, TempKeyData* tempData,
-                   KeyEntry* entptr, GeoKey* keyptr);
-
-
-/**********************************************************************
- *
- *                        Public Routines
- *
- **********************************************************************/
-
-
-/**
- * Given an open TIFF file, look for GTIF keys and 
- *  values and return GTIF structure.
-
-This function creates a GeoTIFF information interpretation handle
-(GTIF *) based on a passed in TIFF handle originally from 
-XTIFFOpen().  Even though the argument 
-(<b>tif</b>) is shown as type <tt>void *</tt>, it is really normally
-of type <tt>TIFF *</tt>.<p>
-
-The returned GTIF handle can be used to read or write GeoTIFF tags 
-using the various GTIF functions.  The handle should be destroyed using
-GTIFFree() before the file is closed with TIFFClose().<p>
-
-If the file accessed has no GeoTIFF keys, an valid (but empty) GTIF is
-still returned.  GTIFNew() is used both for existing files being read, and
-for new TIFF files that will have GeoTIFF tags written to them.<p>
-
- */
- 
-GTIF* GTIFNew(void *tif)
-{
-    GTIF* gt=(GTIF*)0;
-    int count,bufcount,index;
-    GeoKey *keyptr;
-    pinfo_t *data;
-    KeyEntry *entptr;
-    KeyHeader *header;
-    TempKeyData tempData;
-	
-    gt = (GTIF*)_GTIFcalloc( sizeof(GTIF));
-    if (!gt) goto failure;	
-	
-    /* install TIFF file and I/O methods */
-    gt->gt_tif = (tiff_t *)tif;
-    _GTIFSetDefaultTIFF(&gt->gt_methods);
-
-    tempData.tk_asciiParams = 0;
-    tempData.tk_asciiParamsLength = 0;
-    tempData.tk_asciiParamsOffset = 0;
-	
-    /* since this is an array, GTIF will allocate the memory */
-    if ( tif == NULL 
-         || !(gt->gt_methods.get)(tif, GTIFF_GEOKEYDIRECTORY, &gt->gt_nshorts, &data ))
-    {
-        /* No ProjectionInfo, create a blank one */
-        data=(pinfo_t*)_GTIFcalloc((4+MAX_VALUES)*sizeof(pinfo_t));
-        if (!data) goto failure;	
-        header = (KeyHeader *)data;
-        header->hdr_version = GvCurrentVersion;
-        header->hdr_rev_major = GvCurrentRevision;
-        header->hdr_rev_minor = GvCurrentMinorRev;
-        gt->gt_nshorts=sizeof(KeyHeader)/sizeof(pinfo_t);
-    }
-    gt->gt_short = data;
-    header = (KeyHeader *)data;
-	
-    if (header->hdr_version > GvCurrentVersion) goto failure;
-    if (header->hdr_rev_major > GvCurrentRevision)
-    {
-        /* issue warning */
-    }
-	
-    /* If we got here, then the geokey can be parsed */
-    count = header->hdr_num_keys;
-    gt->gt_num_keys = count;
-    gt->gt_version  = header->hdr_version;
-    gt->gt_rev_major  = header->hdr_rev_major;
-    gt->gt_rev_minor  = header->hdr_rev_minor;
-
-    bufcount = count+MAX_KEYS; /* allow for expansion */
-
-    /* Get the PARAMS Tags, if any */
-    if (tif == NULL
-        || !(gt->gt_methods.get)(tif, GTIFF_DOUBLEPARAMS,
-                                 &gt->gt_ndoubles, &gt->gt_double ))
-    {
-        gt->gt_double=(double*)_GTIFcalloc(MAX_VALUES*sizeof(double));
-        if (!gt->gt_double) goto failure;	
-    }
-    if ( tif == NULL
-         || !(gt->gt_methods.get)(tif, GTIFF_ASCIIPARAMS,
-                                  &tempData.tk_asciiParamsLength,
-                                  &tempData.tk_asciiParams ))
-    {
-        tempData.tk_asciiParams         = 0;
-        tempData.tk_asciiParamsLength   = 0;
-    }
-    else
-    {
-        /* last NULL doesn't count; "|" used for delimiter */
-        --tempData.tk_asciiParamsLength;
-    }
-
-    /* allocate space for GeoKey array and its index */
-    gt->gt_keys = (GeoKey *)_GTIFcalloc( sizeof(GeoKey)*bufcount);
-    if (!gt->gt_keys) goto failure;
-    gt->gt_keyindex = (int *)_GTIFcalloc( sizeof(int)*(MAX_KEYINDEX+1));
-    if (!gt->gt_keyindex) goto failure;
-	
-    /*  Loop to get all GeoKeys */
-    entptr = ((KeyEntry *)data) + 1;
-    keyptr = gt->gt_keys;
-    gt->gt_keymin = MAX_KEYINDEX;
-    gt->gt_keymax = 0;
-    for (index=1; index<=count; index++,entptr++)
-    {
-        if (!ReadKey(gt, &tempData, entptr, ++keyptr))
-            goto failure;
-			
-        /* Set up the index (start at 1, since 0=unset) */
-        gt->gt_keyindex[entptr->ent_key] = index;		
-    }
-
-    if( tempData.tk_asciiParams != NULL )
-        _GTIFFree( tempData.tk_asciiParams );
-	
-    return gt;
-	
-  failure:
-    /* Notify of error */
-    GTIFFree (gt);
-    return (GTIF *)0;
-}
-
-/**********************************************************************
- *
- *                        Private Routines
- *
- **********************************************************************/
-
-/*
- * Given KeyEntry, read in the GeoKey value location and set up
- *  the Key structure, returning 0 if failure.
- */
-
-static int ReadKey(GTIF* gt, TempKeyData* tempData,
-                   KeyEntry* entptr, GeoKey* keyptr)
-{
-    int offset,count;
-	
-    keyptr->gk_key = entptr->ent_key;
-    keyptr->gk_count = entptr->ent_count;
-    count = entptr->ent_count;
-    offset = entptr->ent_val_offset;
-    if (gt->gt_keymin > keyptr->gk_key)  gt->gt_keymin=keyptr->gk_key;
-    if (gt->gt_keymax < keyptr->gk_key)  gt->gt_keymax=keyptr->gk_key;
-	
-    if (entptr->ent_location)
-        keyptr->gk_type = (gt->gt_methods.type)(gt->gt_tif,entptr->ent_location);
-    else
-        keyptr->gk_type = (gt->gt_methods.type)(gt->gt_tif,GTIFF_GEOKEYDIRECTORY);
-	  
-    switch (entptr->ent_location)
-    {
-        case GTIFF_LOCAL:
-            /* store value into data value */
-            *(pinfo_t *)(&keyptr->gk_data) = entptr->ent_val_offset;
-            break;
-        case GTIFF_GEOKEYDIRECTORY:
-            keyptr->gk_data = (char *)(gt->gt_short+offset);
-            if (gt->gt_nshorts < offset+count)
-                gt->gt_nshorts = offset+count;
-            break;
-        case GTIFF_DOUBLEPARAMS:
-            keyptr->gk_data = (char *)(gt->gt_double+offset);
-            if (gt->gt_ndoubles < offset+count)
-                gt->gt_ndoubles = offset+count;
-            break;
-        case GTIFF_ASCIIPARAMS:
-            if( offset + count == tempData->tk_asciiParamsLength + 1 
-                && count > 0 )
-            {
-                /* some vendors seem to feel they should not use the 
-                   terminating '|' char, but do include a terminating '\0'
-                   which we lose in the low level reading code.  
-                   If this is the case, drop the extra character */
-                count--;
-            }
-            else if (offset + count > tempData->tk_asciiParamsLength)
-                return (0);
-
-            keyptr->gk_data = (char *) _GTIFcalloc (MAX(1,count+1));
-            _GTIFmemcpy (keyptr->gk_data,
-                         tempData->tk_asciiParams + offset, count);
-            if( keyptr->gk_data[MAX(0,count-1)] == '|' )
-                keyptr->gk_data[MAX(0,count-1)] = '\0';
-            else
-                keyptr->gk_data[MAX(0,count)] = '\0';
-            break;
-        default:
-            return 0; /* failure */
-    }
-    keyptr->gk_size = _gtiff_size[keyptr->gk_type];
-	
-    return 1; /* success */
-}
diff --git a/src/tiff/geo_normalize.c b/src/tiff/geo_normalize.c
deleted file mode 100644
index 152ff6d..0000000
--- a/src/tiff/geo_normalize.c
+++ /dev/null
@@ -1,2402 +0,0 @@
-/******************************************************************************
- * $Id: geo_normalize.c 4825 2006-08-16 13:01:53Z lubia $
- *
- * Project:  libgeotiff
- * Purpose:  Code to normalize PCS and other composite codes in a GeoTIFF file.
- * Author:   Frank Warmerdam, warmerda at home.com
- *
- ******************************************************************************
- * Copyright (c) 1999, Frank Warmerdam
- *
- * 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 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- ******************************************************************************
- *
- * $Log$
- * Revision 1.45  2005/03/15 16:01:18  fwarmerdam
- * zero inv flattening interpreted as sphere
- *
- * Revision 1.44  2005/03/04 04:32:37  fwarmerdam
- * added cylindricalequalarea support
- *
- * Revision 1.43  2005/03/04 04:02:40  fwarmerdam
- * Fixed initialization of dfStdParallel2 for AEA and EC.
- *
- * Revision 1.42  2005/02/17 01:21:38  fwarmerdam
- * fixed handling of ProjFalseOrigin{Easting,Northing}GeoKey
- *
- * Revision 1.41  2004/12/01 22:06:42  fwarmerdam
- * bug 698: GTIFGetGCSInfo should not fail on missing pm if pm info not req.
- *
- * Revision 1.40  2004/07/09 17:27:37  warmerda
- * Added 9122 as an alias for simple degrees.
- *
- * Revision 1.39  2004/06/07 12:57:13  warmerda
- * fallback to using gdal_datum.csv if datum.csv not found
- *
- * Revision 1.38  2004/03/19 12:20:40  dron
- * Initialize projection parameters in GTIFFetchProjParms() before using.
- *
- * Revision 1.37  2003/07/08 17:31:30  warmerda
- * cleanup various warnings
- *
- * Revision 1.36  2003/01/28 18:31:58  warmerda
- * Default dfInDegrees in GTIFAngleToDD().
- *
- * Revision 1.35  2003/01/15 04:39:16  warmerda
- * Added GTIFDeaccessCSV
- *
- * Revision 1.34  2003/01/15 03:37:40  warmerda
- * added GTIFFreeMemory()
- *
- * Revision 1.33  2002/12/05 19:21:01  warmerda
- * fixed dfInDegrees to actually be in degrees, not radians!
- *
- * Revision 1.32  2002/11/30 16:01:11  warmerda
- * fixed some problems in GTIFGetUOMAngleInfo
- *
- * Revision 1.31  2002/11/30 15:44:35  warmerda
- * fixed GetCTParms EPSG code mappings
- *
- * Revision 1.30  2002/11/28 22:27:42  warmerda
- * preliminary upgrade to EPSG 6.2.2 tables
- *
- * Revision 1.29  2002/06/19 03:51:15  warmerda
- * migrated cpl_csv.h into cpl_serv.h
- *
- * Revision 1.28  2002/01/03 21:28:25  warmerda
- * call CSVDeaccess(NULL) at end of GTIFPrintDefn()
- *
- * Revision 1.27  2001/04/17 13:41:10  warmerda
- * fix memory leaks in GTIFPrintDefn()
- *
- * Revision 1.26  2001/04/17 13:23:07  warmerda
- * added support for reading custom ellipsoid definitions
- *
- * Revision 1.25  2001/03/05 04:55:26  warmerda
- * CVSDeaccess at end of GTIFGetDefn to avoid file leak
- *
- * Revision 1.24  2001/03/05 03:26:29  warmerda
- * fixed memory leaks in GTIFPrintDefn()
- *
- * Revision 1.23  2001/02/23 13:49:48  warmerda
- * Fixed GTIFPrintDefn() to use fprintf( fp ), instead of printf().
- *
- * Revision 1.22  2000/10/13 14:30:57  warmerda
- * fixed LCC parm order when parameters read directly from geotiff file
- *
- * Revision 1.21  2000/09/15 19:30:14  warmerda
- * report units of linear proj parms
- *
- * Revision 1.20  2000/09/15 18:21:07  warmerda
- * Fixed order of parameters for LCC 2SP.  When parameters
- * were read from EPSG CSV files the standard parallels and origin
- * were mixed up.  This affects alot of state plane zones!
- *
- * Revision 1.19  2000/06/09 14:05:43  warmerda
- * added default knowledge of NAD27/NAD83/WGS72/WGS84
- *
- * Revision 1.18  1999/12/10 21:28:12  warmerda
- * fixed Stereographic to look for ProjCenterLat/Long
- *
- * Revision 1.17  1999/12/10 20:06:58  warmerda
- * fixed up scale geokey used for a couple of projections
- *
- * Revision 1.16  1999/12/10 19:50:21  warmerda
- * Added EquidistantConic support, fixed return of StdParallel2GeoKey for
- * LCC2, and Albers.
- *
- * Revision 1.15  1999/12/10 19:39:26  warmerda
- * Fixed bug setting the false northing for files with
- * ProjCenterNorthingGeoKey set in GTIFGetDefn().
- *
- * Revision 1.14  1999/09/17 14:58:37  warmerda
- * Added ProjRectifiedGridAngleGeoKey(3096) and support for it's
- * use with Oblique Mercator in geo_normalize.c.
- *
- * Revision 1.13  1999/09/17 00:55:26  warmerda
- * added GTIFGetUOMAngleInfo(), and UOMAngle in GTIFDefn
- *
- * Revision 1.12  1999/09/15 18:51:31  warmerda
- * Map 9808 to TM South Oriented, not TM Modified Alaska.
- *
- * Revision 1.11  1999/09/15 16:44:06  warmerda
- * Change meter to metre to match EPSG database in GTIFGetUOMLengthInfo()
- * shortcut.
- *
- * Revision 1.10  1999/09/15 16:35:15  warmerda
- * Fixed the fractions of second handling properly in GTIFAngleStringToDD().
- *
- * Revision 1.9  1999/09/15 14:24:17  warmerda
- * Fixed serious bug in geo_normalize.c with translation of
- * DD.MMSSsss values.  Return value was seriously off if any
- * fraction of a second was included in the string.
- *
- * Revision 1.8  1999/07/13 03:12:52  warmerda
- * Make scale a parameter of CT_Stereographic.
- *
- * Revision 1.7  1999/05/04 03:13:22  warmerda
- * fixed a serious bug in parsing DMSmmss.sss values, and a bug in forming DMS strings
- *
- * Revision 1.6  1999/05/03 17:50:31  warmerda
- * avoid warnings on IRIX
- *
- * Revision 1.5  1999/04/28 20:04:51  warmerda
- * Added doxygen style documentation.
- * Use GTIFPCSToMapSys() and related functions to partially normalize
- * projections when we don't have the CSV files.
- *
- * Revision 1.4  1999/03/18 21:34:59  geotiff
- * added GTIFDecToDMS
- *
- * Revision 1.3  1999/03/17 19:53:15  geotiff
- * sys includes moved to cpl_serv.h
- *
- * Revision 1.2  1999/03/10 18:24:06  geotiff
- * corrected to use int'
- *
- * Revision 1.1  1999/03/09 15:57:04  geotiff
- * New
- *
- * Revision 1.4  1999/03/03 02:29:38  warmerda
- * Define PI if not already defined.
- *
- * Revision 1.3  1999/03/02 21:10:57  warmerda
- * added lots of projections
- *
- * Revision 1.2  1999/02/24 16:24:15  warmerda
- * Continuing to evolve
- *
- * Revision 1.1  1999/02/22 18:51:08  warmerda
- * New
- *
- */
- 
-#include "cpl_serv.h"
-#include "geo_tiffp.h"
-#include "geovalues.h"
-#include "geo_normalize.h"
-
-#ifndef KvUserDefined
-#  define KvUserDefined 32767
-#endif
-
-#ifndef PI
-#  define PI 3.14159265358979323846
-#endif
-
-/* EPSG Codes for projection parameters.  Unfortunately, these bear no
-   relationship to the GeoTIFF codes even though the names are so similar. */
-
-#define EPSGNatOriginLat         8801
-#define EPSGNatOriginLong        8802
-#define EPSGNatOriginScaleFactor 8805
-#define EPSGFalseEasting         8806
-#define EPSGFalseNorthing        8807
-#define EPSGProjCenterLat        8811
-#define EPSGProjCenterLong       8812
-#define EPSGAzimuth              8813
-#define EPSGAngleRectifiedToSkewedGrid 8814
-#define EPSGInitialLineScaleFactor 8815
-#define EPSGProjCenterEasting    8816
-#define EPSGProjCenterNorthing   8817
-#define EPSGPseudoStdParallelLat 8818
-#define EPSGPseudoStdParallelScaleFactor 8819
-#define EPSGFalseOriginLat       8821
-#define EPSGFalseOriginLong      8822
-#define EPSGStdParallel1Lat      8823
-#define EPSGStdParallel2Lat      8824
-#define EPSGFalseOriginEasting   8826
-#define EPSGFalseOriginNorthing  8827
-#define EPSGSphericalOriginLat   8828
-#define EPSGSphericalOriginLong  8829
-#define EPSGInitialLongitude     8830
-#define EPSGZoneWidth            8831
-
-/************************************************************************/
-/*                           GTIFGetPCSInfo()                           */
-/************************************************************************/
-
-int GTIFGetPCSInfo( int nPCSCode, char **ppszEPSGName, 
-                    short *pnProjOp, short *pnUOMLengthCode, 
-                    short *pnGeogCS )
-
-{
-    char	**papszRecord;
-    char	szSearchKey[24];
-    const char	*pszFilename = CSVFilename( "pcs.csv" );
-    
-/* -------------------------------------------------------------------- */
-/*      Search the units database for this unit.  If we don't find      */
-/*      it return failure.                                              */
-/* -------------------------------------------------------------------- */
-    sprintf( szSearchKey, "%d", nPCSCode );
-    papszRecord = CSVScanFileByName( pszFilename, "COORD_REF_SYS_CODE",
-                                     szSearchKey, CC_Integer );
-
-    if( papszRecord == NULL )
-        return FALSE;
-
-/* -------------------------------------------------------------------- */
-/*      Get the name, if requested.                                     */
-/* -------------------------------------------------------------------- */
-    if( ppszEPSGName != NULL )
-    {
-        *ppszEPSGName =
-            CPLStrdup( CSLGetField( papszRecord,
-                                    CSVGetFileFieldId(pszFilename,
-                                                      "COORD_REF_SYS_NAME") ));
-    }
-
-/* -------------------------------------------------------------------- */
-/*      Get the UOM Length code, if requested.                          */
-/* -------------------------------------------------------------------- */
-    if( pnUOMLengthCode != NULL )
-    {
-        const char	*pszValue;
-
-        pszValue =
-            CSLGetField( papszRecord,
-                         CSVGetFileFieldId(pszFilename,"UOM_CODE"));
-        if( atoi(pszValue) > 0 )
-            *pnUOMLengthCode = (short) atoi(pszValue);
-        else
-            *pnUOMLengthCode = KvUserDefined;
-    }
-
-/* -------------------------------------------------------------------- */
-/*      Get the UOM Length code, if requested.                          */
-/* -------------------------------------------------------------------- */
-    if( pnProjOp != NULL )
-    {
-        const char	*pszValue;
-
-        pszValue =
-            CSLGetField( papszRecord,
-                         CSVGetFileFieldId(pszFilename,"COORD_OP_CODE"));
-        if( atoi(pszValue) > 0 )
-            *pnProjOp = (short) atoi(pszValue);
-        else
-            *pnUOMLengthCode = KvUserDefined;
-    }
-
-/* -------------------------------------------------------------------- */
-/*      Get the GeogCS (Datum with PM) code, if requested.		*/
-/* -------------------------------------------------------------------- */
-    if( pnGeogCS != NULL )
-    {
-        const char	*pszValue;
-
-        pszValue =
-            CSLGetField( papszRecord,
-                         CSVGetFileFieldId(pszFilename,"SOURCE_GEOGCRS_CODE"));
-        if( atoi(pszValue) > 0 )
-            *pnGeogCS = (short) atoi(pszValue);
-        else
-            *pnGeogCS = KvUserDefined;
-    }
-
-    return TRUE;
-}
-
-/************************************************************************/
-/*                           GTIFAngleToDD()                            */
-/*                                                                      */
-/*      Convert a numeric angle to decimal degress.                     */
-/************************************************************************/
-
-double GTIFAngleToDD( double dfAngle, int nUOMAngle )
-
-{
-    if( nUOMAngle == 9110 )		/* DDD.MMSSsss */
-    {
-        char	szAngleString[32];
-
-        sprintf( szAngleString, "%12.7f", dfAngle );
-        dfAngle = GTIFAngleStringToDD( szAngleString, nUOMAngle );
-    }
-    else
-    {
-        double		dfInDegrees = 1.0;
-        
-        GTIFGetUOMAngleInfo( nUOMAngle, NULL, &dfInDegrees );
-        dfAngle = dfAngle * dfInDegrees;
-    }
-
-    return( dfAngle );
-}
-
-/************************************************************************/
-/*                        GTIFAngleStringToDD()                         */
-/*                                                                      */
-/*      Convert an angle in the specified units to decimal degrees.     */
-/************************************************************************/
-
-double GTIFAngleStringToDD( const char * pszAngle, int nUOMAngle )
-
-{
-    double	dfAngle;
-    
-    if( nUOMAngle == 9110 )		/* DDD.MMSSsss */
-    {
-        char	*pszDecimal;
-        
-        dfAngle = ABS(atoi(pszAngle));
-        pszDecimal = strchr(pszAngle,'.');
-        if( pszDecimal != NULL && strlen(pszDecimal) > 1 )
-        {
-            char	szMinutes[3];
-            char	szSeconds[64];
-
-            szMinutes[0] = pszDecimal[1];
-            if( pszDecimal[2] >= '0' && pszDecimal[2] <= '9' )
-                szMinutes[1] = pszDecimal[2];
-            else
-                szMinutes[1] = '0';
-            
-            szMinutes[2] = '\0';
-            dfAngle += atoi(szMinutes) / 60.0;
-
-            if( strlen(pszDecimal) > 3 )
-            {
-                szSeconds[0] = pszDecimal[3];
-                if( pszDecimal[4] >= '0' && pszDecimal[4] <= '9' )
-                {
-                    szSeconds[1] = pszDecimal[4];
-                    szSeconds[2] = '.';
-                    strcpy( szSeconds+3, pszDecimal + 5 );
-                }
-                else
-                {
-                    szSeconds[1] = '0';
-                    szSeconds[2] = '\0';
-                }
-                dfAngle += atof(szSeconds) / 3600.0;
-            }
-        }
-
-        if( pszAngle[0] == '-' )
-            dfAngle *= -1;
-    }
-    else if( nUOMAngle == 9105 || nUOMAngle == 9106 )	/* grad */
-    {
-        dfAngle = 180 * (atof(pszAngle ) / 200);
-    }
-    else if( nUOMAngle == 9101 )			/* radians */
-    {
-        dfAngle = 180 * (atof(pszAngle ) / PI);
-    }
-    else if( nUOMAngle == 9103 )			/* arc-minute */
-    {
-        dfAngle = atof(pszAngle) / 60;
-    }
-    else if( nUOMAngle == 9104 )			/* arc-second */
-    {
-        dfAngle = atof(pszAngle) / 3600;
-    }
-    else /* decimal degrees ... some cases missing but seeminly never used */
-    {
-        CPLAssert( nUOMAngle == 9102 || nUOMAngle == KvUserDefined
-                   || nUOMAngle == 0 );
-        
-        dfAngle = atof(pszAngle );
-    }
-
-    return( dfAngle );
-}
-
-/************************************************************************/
-/*                           GTIFGetGCSInfo()                           */
-/*                                                                      */
-/*      Fetch the datum, and prime meridian related to a particular     */
-/*      GCS.                                                            */
-/************************************************************************/
-
-int GTIFGetGCSInfo( int nGCSCode, char ** ppszName,
-                    short * pnDatum, short * pnPM, short *pnUOMAngle )
-
-{
-    char	szSearchKey[24];
-    int		nDatum, nPM, nUOMAngle;
-
-/* -------------------------------------------------------------------- */
-/*      Search the database for the corresponding datum code.           */
-/* -------------------------------------------------------------------- */
-    sprintf( szSearchKey, "%d", nGCSCode );
-
-    nDatum = atoi(CSVGetField( CSVFilename("gcs.csv" ),
-                               "COORD_REF_SYS_CODE", szSearchKey, CC_Integer,
-                               "DATUM_CODE" ) );
-
-/* -------------------------------------------------------------------- */
-/*      Handle some "well known" GCS codes directly if the table        */
-/*      wasn't found.                                                   */
-/* -------------------------------------------------------------------- */
-    if( nDatum < 1 )
-    {
-        const char * pszName = NULL;
-        nPM = PM_Greenwich;
-        nUOMAngle = Angular_DMS_Hemisphere; 
-        if( nGCSCode == GCS_NAD27 )
-        {
-            nDatum = Datum_North_American_Datum_1927;
-            pszName = "NAD27";
-        }
-        else if( nGCSCode == GCS_NAD83 )
-        {
-            nDatum = Datum_North_American_Datum_1983;
-            pszName = "NAD83";
-        }
-        else if( nGCSCode == GCS_WGS_84 )
-        {
-            nDatum = Datum_WGS84;
-            pszName = "WGS 84";
-        }
-        else if( nGCSCode == GCS_WGS_72 )
-        {
-            nDatum = Datum_WGS72;
-            pszName = "WGS 82";
-        }
-        else
-            return FALSE;
-
-        if( ppszName != NULL )
-            *ppszName = CPLStrdup( pszName );
-        if( pnDatum != NULL )
-            *pnDatum = (short) nDatum;
-        if( pnPM != NULL )
-            *pnPM = (short) nPM;
-        if( pnUOMAngle != NULL )
-            *pnUOMAngle = (short) nUOMAngle;
-
-        return TRUE;
-    }
-
-    if( pnDatum != NULL )
-        *pnDatum = (short) nDatum;
-    
-/* -------------------------------------------------------------------- */
-/*      Get the PM.                                                     */
-/* -------------------------------------------------------------------- */
-    if( pnPM != NULL )
-    {
-        nPM = atoi(CSVGetField( CSVFilename("gcs.csv" ),
-                            "COORD_REF_SYS_CODE", szSearchKey, CC_Integer,
-                            "PRIME_MERIDIAN_CODE" ) );
-
-        if( nPM < 1 )
-            return FALSE;
-
-        *pnPM = (short) nPM;
-    }
-
-/* -------------------------------------------------------------------- */
-/*      Get the angular units.                                          */
-/* -------------------------------------------------------------------- */
-    nUOMAngle = atoi(CSVGetField( CSVFilename("gcs.csv" ),
-                                  "COORD_REF_SYS_CODE",szSearchKey, CC_Integer,
-                                  "UOM_CODE" ) );
-
-    if( nUOMAngle < 1 )
-        return FALSE;
-
-    if( pnUOMAngle != NULL )
-        *pnUOMAngle = (short) nUOMAngle;
-
-/* -------------------------------------------------------------------- */
-/*      Get the name, if requested.                                     */
-/* -------------------------------------------------------------------- */
-    if( ppszName != NULL )
-        *ppszName =
-            CPLStrdup(CSVGetField( CSVFilename("gcs.csv" ),
-                                   "COORD_REF_SYS_CODE",szSearchKey,CC_Integer,
-                                   "COORD_REF_SYS_NAME" ));
-    
-    return( TRUE );
-}
-
-/************************************************************************/
-/*                        GTIFGetEllipsoidInfo()                        */
-/*                                                                      */
-/*      Fetch info about an ellipsoid.  Axes are always returned in     */
-/*      meters.  SemiMajor computed based on inverse flattening         */
-/*      where that is provided.                                         */
-/************************************************************************/
-
-int GTIFGetEllipsoidInfo( int nEllipseCode, char ** ppszName,
-                          double * pdfSemiMajor, double * pdfSemiMinor )
-
-{
-    char	szSearchKey[24];
-    double	dfSemiMajor, dfToMeters = 1.0;
-    int		nUOMLength;
-    
-/* -------------------------------------------------------------------- */
-/*      Get the semi major axis.                                        */
-/* -------------------------------------------------------------------- */
-    sprintf( szSearchKey, "%d", nEllipseCode );
-
-    dfSemiMajor =
-        atof(CSVGetField( CSVFilename("ellipsoid.csv" ),
-                          "ELLIPSOID_CODE", szSearchKey, CC_Integer,
-                          "SEMI_MAJOR_AXIS" ) );
-
-/* -------------------------------------------------------------------- */
-/*      Try some well known ellipsoids.                                 */
-/* -------------------------------------------------------------------- */
-    if( dfSemiMajor == 0.0 )
-    {
-        double     dfInvFlattening, dfSemiMinor;
-        const char *pszName = NULL;
-        
-        if( nEllipseCode == Ellipse_Clarke_1866 )
-        {
-            pszName = "Clarke 1866";
-            dfSemiMajor = 6378206.4;
-            dfSemiMinor = 6356583.8;
-            dfInvFlattening = 0.0;
-        }
-        else if( nEllipseCode == Ellipse_GRS_1980 )
-        {
-            pszName = "GRS 1980";
-            dfSemiMajor = 6378137.0;
-            dfSemiMinor = 0.0;
-            dfInvFlattening = 298.257222101;
-        }
-        else if( nEllipseCode == Ellipse_WGS_84 )
-        {
-            pszName = "WGS 84";
-            dfSemiMajor = 6378137.0;
-            dfSemiMinor = 0.0;
-            dfInvFlattening = 298.257223563;
-        }
-        else if( nEllipseCode == 7043 )
-        {
-            pszName = "WGS 72";
-            dfSemiMajor = 6378135.0;
-            dfSemiMinor = 0.0;
-            dfInvFlattening = 298.26;
-        }
-        else
-            return FALSE;
-
-        if( dfSemiMinor == 0.0 )
-            dfSemiMinor = dfSemiMajor * (1 - 1.0/dfInvFlattening);
-
-        if( pdfSemiMinor != NULL )
-            *pdfSemiMinor = dfSemiMinor;
-        if( pdfSemiMajor != NULL )
-            *pdfSemiMajor = dfSemiMajor;
-        if( ppszName != NULL )
-            *ppszName = CPLStrdup( pszName );
-
-        return TRUE;
-    }
-
-/* -------------------------------------------------------------------- */
-/*	Get the translation factor into meters.				*/
-/* -------------------------------------------------------------------- */
-    nUOMLength = atoi(CSVGetField( CSVFilename("ellipsoid.csv" ),
-                                   "ELLIPSOID_CODE", szSearchKey, CC_Integer,
-                                   "UOM_CODE" ));
-    GTIFGetUOMLengthInfo( nUOMLength, NULL, &dfToMeters );
-
-    dfSemiMajor *= dfToMeters;
-    
-    if( pdfSemiMajor != NULL )
-        *pdfSemiMajor = dfSemiMajor;
-    
-/* -------------------------------------------------------------------- */
-/*      Get the semi-minor if requested.  If the Semi-minor axis        */
-/*      isn't available, compute it based on the inverse flattening.    */
-/* -------------------------------------------------------------------- */
-    if( pdfSemiMinor != NULL )
-    {
-        *pdfSemiMinor =
-            atof(CSVGetField( CSVFilename("ellipsoid.csv" ),
-                              "ELLIPSOID_CODE", szSearchKey, CC_Integer,
-                              "SEMI_MINOR_AXIS" )) * dfToMeters;
-
-        if( *pdfSemiMinor == 0.0 )
-        {
-            double	dfInvFlattening;
-            
-            dfInvFlattening = 
-                atof(CSVGetField( CSVFilename("ellipsoid.csv" ),
-                                  "ELLIPSOID_CODE", szSearchKey, CC_Integer,
-                                  "INV_FLATTENING" ));
-            *pdfSemiMinor = dfSemiMajor * (1 - 1.0/dfInvFlattening);
-        }
-    }
-
-/* -------------------------------------------------------------------- */
-/*      Get the name, if requested.                                     */
-/* -------------------------------------------------------------------- */
-    if( ppszName != NULL )
-        *ppszName =
-            CPLStrdup(CSVGetField( CSVFilename("ellipsoid.csv" ),
-                                   "ELLIPSOID_CODE", szSearchKey, CC_Integer,
-                                   "ELLIPSOID_NAME" ));
-    
-    return( TRUE );
-}
-
-/************************************************************************/
-/*                           GTIFGetPMInfo()                            */
-/*                                                                      */
-/*      Get the offset between a given prime meridian and Greenwich     */
-/*      in degrees.                                                     */
-/************************************************************************/
-
-int GTIFGetPMInfo( int nPMCode, char ** ppszName, double *pdfOffset )
-
-{
-    char	szSearchKey[24];
-    int		nUOMAngle;
-    const char *pszFilename = CSVFilename("prime_meridian.csv");
-
-/* -------------------------------------------------------------------- */
-/*      Use a special short cut for Greenwich, since it is so common.   */
-/* -------------------------------------------------------------------- */
-    if( nPMCode == PM_Greenwich )
-    {
-        if( pdfOffset != NULL )
-            *pdfOffset = 0.0;
-        if( ppszName != NULL )
-            *ppszName = CPLStrdup( "Greenwich" );
-        return TRUE;
-    }
-
-/* -------------------------------------------------------------------- */
-/*      Search the database for the corresponding datum code.           */
-/* -------------------------------------------------------------------- */
-    sprintf( szSearchKey, "%d", nPMCode );
-
-    nUOMAngle =
-        atoi(CSVGetField( pszFilename, 
-                          "PRIME_MERIDIAN_CODE", szSearchKey, CC_Integer,
-                          "UOM_CODE" ) );
-    if( nUOMAngle < 1 )
-        return FALSE;
-
-/* -------------------------------------------------------------------- */
-/*      Get the PM offset.                                              */
-/* -------------------------------------------------------------------- */
-    if( pdfOffset != NULL )
-    {
-        *pdfOffset =
-            GTIFAngleStringToDD(
-                CSVGetField( pszFilename, 
-                             "PRIME_MERIDIAN_CODE", szSearchKey, CC_Integer,
-                             "GREENWICH_LONGITUDE" ),
-                nUOMAngle );
-    }
-    
-/* -------------------------------------------------------------------- */
-/*      Get the name, if requested.                                     */
-/* -------------------------------------------------------------------- */
-    if( ppszName != NULL )
-        *ppszName =
-            CPLStrdup(
-                CSVGetField( pszFilename, 
-                             "PRIME_MERIDIAN_CODE", szSearchKey, CC_Integer,
-                             "PRIME_MERIDIAN_NAME" ));
-    
-    return( TRUE );
-}
-
-/************************************************************************/
-/*                          GTIFGetDatumInfo()                          */
-/*                                                                      */
-/*      Fetch the ellipsoid, and name for a datum.                      */
-/************************************************************************/
-
-int GTIFGetDatumInfo( int nDatumCode, char ** ppszName, short * pnEllipsoid )
-
-{
-    char	szSearchKey[24];
-    int		nEllipsoid;
-    const char *pszFilename = CSVFilename( "datum.csv" );
-    FILE       *fp;
-
-/* -------------------------------------------------------------------- */
-/*      If we can't find datum.csv then gdal_datum.csv is an            */
-/*      acceptable fallback.  Mostly this is for GDAL.                  */
-/* -------------------------------------------------------------------- */
-    if( (fp = VSIFOpen(pszFilename,"r")) == NULL )
-        pszFilename = CSVFilename( "gdal_datum.csv" );
-    else
-        VSIFClose( fp );
-
-/* -------------------------------------------------------------------- */
-/*      Search the database for the corresponding datum code.           */
-/* -------------------------------------------------------------------- */
-    sprintf( szSearchKey, "%d", nDatumCode );
-
-    nEllipsoid = atoi(CSVGetField( pszFilename,
-                                   "DATUM_CODE", szSearchKey, CC_Integer,
-                                   "ELLIPSOID_CODE" ) );
-
-    if( pnEllipsoid != NULL )
-        *pnEllipsoid = (short) nEllipsoid;
-    
-/* -------------------------------------------------------------------- */
-/*      Handle a few built-in datums.                                   */
-/* -------------------------------------------------------------------- */
-    if( nEllipsoid < 1 )
-    {
-        const char *pszName = NULL;
-        
-        if( nDatumCode == Datum_North_American_Datum_1927 )
-        {
-            nEllipsoid = Ellipse_Clarke_1866;
-            pszName = "North American Datum 1927";
-        }
-        else if( nDatumCode == Datum_North_American_Datum_1983 )
-        {
-            nEllipsoid = Ellipse_GRS_1980;
-            pszName = "North American Datum 1983";
-        }
-        else if( nDatumCode == Datum_WGS84 )
-        {
-            nEllipsoid = Ellipse_WGS_84;
-            pszName = "World Geodetic System 1984";
-        }
-        else if( nDatumCode == Datum_WGS72 )
-        {
-            nEllipsoid = 7043; /* WGS7 */
-            pszName = "World Geodetic System 1972";
-        }
-        else
-            return FALSE;
-
-        if( pnEllipsoid != NULL )
-            *pnEllipsoid = (short) nEllipsoid;
-
-        if( ppszName != NULL )
-            *ppszName = CPLStrdup( pszName );
-
-        return TRUE;
-    }
-
-/* -------------------------------------------------------------------- */
-/*      Get the name, if requested.                                     */
-/* -------------------------------------------------------------------- */
-    if( ppszName != NULL )
-        *ppszName =
-            CPLStrdup(CSVGetField( pszFilename,
-                                   "DATUM_CODE", szSearchKey, CC_Integer,
-                                   "DATUM_NAME" ));
-    
-    return( TRUE );
-}
-
-
-/************************************************************************/
-/*                        GTIFGetUOMLengthInfo()                        */
-/*                                                                      */
-/*      Note: This function should eventually also know how to          */
-/*      lookup length aliases in the UOM_LE_ALIAS table.                */
-/************************************************************************/
-
-int GTIFGetUOMLengthInfo( int nUOMLengthCode,
-                          char **ppszUOMName,
-                          double * pdfInMeters )
-
-{
-    char	**papszUnitsRecord;
-    char	szSearchKey[24];
-    int		iNameField;
-    const char *pszFilename;
-
-/* -------------------------------------------------------------------- */
-/*      We short cut meter to save work in the most common case.        */
-/* -------------------------------------------------------------------- */
-    if( nUOMLengthCode == 9001 )
-    {
-        if( ppszUOMName != NULL )
-            *ppszUOMName = CPLStrdup( "metre" );
-        if( pdfInMeters != NULL )
-            *pdfInMeters = 1.0;
-
-        return TRUE;
-    }
-
-/* -------------------------------------------------------------------- */
-/*      Search the units database for this unit.  If we don't find      */
-/*      it return failure.                                              */
-/* -------------------------------------------------------------------- */
-    pszFilename = CSVFilename( "unit_of_measure.csv" );
-
-    sprintf( szSearchKey, "%d", nUOMLengthCode );
-    papszUnitsRecord =
-        CSVScanFileByName( pszFilename,
-                           "UOM_CODE", szSearchKey, CC_Integer );
-
-    if( papszUnitsRecord == NULL )
-        return FALSE;
-
-/* -------------------------------------------------------------------- */
-/*      Get the name, if requested.                                     */
-/* -------------------------------------------------------------------- */
-    if( ppszUOMName != NULL )
-    {
-        iNameField = CSVGetFileFieldId( pszFilename,
-                                        "UNIT_OF_MEAS_NAME" );
-        *ppszUOMName = CPLStrdup( CSLGetField(papszUnitsRecord, iNameField) );
-    }
-    
-/* -------------------------------------------------------------------- */
-/*      Get the A and B factor fields, and create the multiplicative    */
-/*      factor.                                                         */
-/* -------------------------------------------------------------------- */
-    if( pdfInMeters != NULL )
-    {
-        int	iBFactorField, iCFactorField;
-        
-        iBFactorField = CSVGetFileFieldId( pszFilename, "FACTOR_B" );
-        iCFactorField = CSVGetFileFieldId( pszFilename, "FACTOR_C" );
-
-        if( atof(CSLGetField(papszUnitsRecord, iCFactorField)) > 0.0 )
-            *pdfInMeters = atof(CSLGetField(papszUnitsRecord, iBFactorField))
-                / atof(CSLGetField(papszUnitsRecord, iCFactorField));
-        else
-            *pdfInMeters = 0.0;
-    }
-    
-    return( TRUE );
-}
-
-/************************************************************************/
-/*                        GTIFGetUOMAngleInfo()                         */
-/************************************************************************/
-
-int GTIFGetUOMAngleInfo( int nUOMAngleCode,
-                         char **ppszUOMName,
-                         double * pdfInDegrees )
-
-{
-    const char	*pszUOMName = NULL;
-    double	dfInDegrees = 1.0;
-    const char *pszFilename = CSVFilename( "unit_of_measure.csv" );
-    char	szSearchKey[24];
-
-    sprintf( szSearchKey, "%d", nUOMAngleCode );
-    pszUOMName = CSVGetField( pszFilename,
-                              "UOM_CODE", szSearchKey, CC_Integer,
-                              "UNIT_OF_MEAS_NAME" );
-
-/* -------------------------------------------------------------------- */
-/*      If the file is found, read from there.  Note that FactorC is    */
-/*      an empty field for any of the DMS style formats, and in this    */
-/*      case we really want to return the default InDegrees value       */
-/*      (1.0) from above.                                               */
-/* -------------------------------------------------------------------- */
-    if( pszUOMName != NULL )
-    {
-        double dfFactorB, dfFactorC, dfInRadians;
-        
-        dfFactorB = 
-            atof(CSVGetField( pszFilename,
-                              "UOM_CODE", szSearchKey, CC_Integer,
-                              "FACTOR_B" ));
-        
-        dfFactorC = 
-            atof(CSVGetField( pszFilename,
-                              "UOM_CODE", szSearchKey, CC_Integer,
-                              "FACTOR_C" ));
-
-        if( dfFactorC != 0.0 )
-        {
-            dfInRadians = (dfFactorB / dfFactorC);
-            dfInDegrees = dfInRadians * 180.0 / PI;
-        }
-                          
-
-        /* We do a special override of some of the DMS formats name */
-        if( nUOMAngleCode == 9102 || nUOMAngleCode == 9107
-            || nUOMAngleCode == 9108 || nUOMAngleCode == 9110
-            || nUOMAngleCode == 9122 )
-        {
-            dfInDegrees = 1.0;
-            pszUOMName = "degree";
-        }
-    }
-
-/* -------------------------------------------------------------------- */
-/*      Otherwise handle a few well known units directly.               */
-/* -------------------------------------------------------------------- */
-    else
-    {
-        switch( nUOMAngleCode )
-        {
-          case 9101:
-            pszUOMName = "radian";
-            dfInDegrees = 180.0 / PI;
-            break;
-        
-          case 9102:
-          case 9107:
-          case 9108:
-          case 9110:
-            pszUOMName = "degree";
-            dfInDegrees = 1.0;
-            break;
-
-          case 9103:
-            pszUOMName = "arc-minute";
-            dfInDegrees = 1 / 60.0;
-            break;
-
-          case 9104:
-            pszUOMName = "arc-second";
-            dfInDegrees = 1 / 3600.0;
-            break;
-        
-          case 9105:
-            pszUOMName = "grad";
-            dfInDegrees = 180.0 / 200.0;
-            break;
-
-          case 9106:
-            pszUOMName = "gon";
-            dfInDegrees = 180.0 / 200.0;
-            break;
-        
-          case 9109:
-            pszUOMName = "microradian";
-            dfInDegrees = 180.0 / (PI * 1000000.0);
-            break;
-
-          default:
-            return FALSE;
-        }
-    }
-
-/* -------------------------------------------------------------------- */
-/*      Return to caller.                                               */
-/* -------------------------------------------------------------------- */
-    if( ppszUOMName != NULL )
-    {
-        if( pszUOMName != NULL )
-            *ppszUOMName = CPLStrdup( pszUOMName );
-        else
-            *ppszUOMName = NULL;
-    }
-
-    if( pdfInDegrees != NULL )
-        *pdfInDegrees = dfInDegrees;
-
-    return( TRUE );
-}
-
-/************************************************************************/
-/*                    EPSGProjMethodToCTProjMethod()                    */
-/*                                                                      */
-/*      Convert between the EPSG enumeration for projection methods,    */
-/*      and the GeoTIFF CT codes.                                       */
-/************************************************************************/
-
-static int EPSGProjMethodToCTProjMethod( int nEPSG )
-
-{
-    /* see trf_method.csv for list of EPSG codes */
-    
-    switch( nEPSG )
-    {
-      case 9801:
-        return( CT_LambertConfConic_1SP );
-
-      case 9802:
-        return( CT_LambertConfConic_2SP );
-
-      case 9803:
-        return( CT_LambertConfConic_2SP ); /* Belgian variant not supported */
-
-      case 9804:
-        return( CT_Mercator );  /* 1SP and 2SP not differentiated */
-
-      case 9805:
-        return( CT_Mercator );  /* 1SP and 2SP not differentiated */
-
-      case 9806:
-        return( CT_CassiniSoldner );
-
-      case 9807:
-        return( CT_TransverseMercator );
-
-      case 9808:
-        return( CT_TransvMercator_SouthOriented );
-
-      case 9809:
-        return( CT_ObliqueStereographic );
-
-      case 9810:
-        return( CT_PolarStereographic );
-
-      case 9811:
-        return( CT_NewZealandMapGrid );
-
-      case 9812:
-        return( CT_ObliqueMercator ); /* is hotine actually different? */
-
-      case 9813:
-        return( CT_ObliqueMercator_Laborde );
-
-      case 9814:
-        return( CT_ObliqueMercator_Rosenmund ); /* swiss  */
-
-      case 9815:
-        return( CT_ObliqueMercator );
-
-      case 9816: /* tunesia mining grid has no counterpart */
-        return( KvUserDefined );
-    }
-
-    return( KvUserDefined );
-}
-
-/************************************************************************/
-/*                            SetGTParmIds()                            */
-/*                                                                      */
-/*      This is hardcoded logic to set the GeoTIFF parmaeter            */
-/*      identifiers for all the EPSG supported projections.  As the     */
-/*      trf_method.csv table grows with new projections, this code      */
-/*      will need to be updated.                                        */
-/************************************************************************/
-
-static int SetGTParmIds( int nCTProjection, 
-                         int *panProjParmId, 
-                         int *panEPSGCodes )
-
-{
-    int anWorkingDummy[7];
-
-    if( panEPSGCodes == NULL )
-        panEPSGCodes = anWorkingDummy;
-    if( panProjParmId == NULL )
-        panProjParmId = anWorkingDummy;
-
-    memset( panEPSGCodes, 0, sizeof(int) * 7 );
-
-    /* psDefn->nParms = 7; */
-    
-    switch( nCTProjection )
-    {
-      case CT_CassiniSoldner:
-      case CT_NewZealandMapGrid:
-        panProjParmId[0] = ProjNatOriginLatGeoKey;
-        panProjParmId[1] = ProjNatOriginLongGeoKey;
-        panProjParmId[5] = ProjFalseEastingGeoKey;
-        panProjParmId[6] = ProjFalseNorthingGeoKey;
-
-        panEPSGCodes[0] = EPSGNatOriginLat;
-        panEPSGCodes[1] = EPSGNatOriginLong;
-        panEPSGCodes[5] = EPSGFalseEasting;
-        panEPSGCodes[6] = EPSGFalseNorthing;
-        return TRUE;
-
-      case CT_ObliqueMercator:
-        panProjParmId[0] = ProjCenterLatGeoKey;
-        panProjParmId[1] = ProjCenterLongGeoKey;
-        panProjParmId[2] = ProjAzimuthAngleGeoKey;
-        panProjParmId[3] = ProjRectifiedGridAngleGeoKey;
-        panProjParmId[4] = ProjScaleAtCenterGeoKey;
-        panProjParmId[5] = ProjFalseEastingGeoKey;
-        panProjParmId[6] = ProjFalseNorthingGeoKey;
-
-        panEPSGCodes[0] = EPSGProjCenterLat;
-        panEPSGCodes[1] = EPSGProjCenterLong;
-        panEPSGCodes[2] = EPSGAzimuth;
-        panEPSGCodes[3] = EPSGAngleRectifiedToSkewedGrid;
-        panEPSGCodes[4] = EPSGInitialLineScaleFactor;
-        panEPSGCodes[5] = EPSGProjCenterEasting;
-        panEPSGCodes[6] = EPSGProjCenterNorthing;
-        return TRUE;
-
-      case CT_ObliqueMercator_Laborde:
-        panProjParmId[0] = ProjCenterLatGeoKey;
-        panProjParmId[1] = ProjCenterLongGeoKey;
-        panProjParmId[2] = ProjAzimuthAngleGeoKey;
-        panProjParmId[4] = ProjScaleAtCenterGeoKey;
-        panProjParmId[5] = ProjFalseEastingGeoKey;
-        panProjParmId[6] = ProjFalseNorthingGeoKey;
-
-        panEPSGCodes[0] = EPSGProjCenterLat;
-        panEPSGCodes[1] = EPSGProjCenterLong;
-        panEPSGCodes[2] = EPSGAzimuth;
-        panEPSGCodes[4] = EPSGInitialLineScaleFactor;
-        panEPSGCodes[5] = EPSGProjCenterEasting;
-        panEPSGCodes[6] = EPSGProjCenterNorthing;
-        return TRUE;
-        
-      case CT_LambertConfConic_1SP:
-      case CT_Mercator:
-      case CT_ObliqueStereographic:
-      case CT_PolarStereographic:
-      case CT_TransverseMercator:
-      case CT_TransvMercator_SouthOriented:
-        panProjParmId[0] = ProjNatOriginLatGeoKey;
-        panProjParmId[1] = ProjNatOriginLongGeoKey;
-        panProjParmId[4] = ProjScaleAtNatOriginGeoKey;
-        panProjParmId[5] = ProjFalseEastingGeoKey;
-        panProjParmId[6] = ProjFalseNorthingGeoKey;
-
-        panEPSGCodes[0] = EPSGNatOriginLat;
-        panEPSGCodes[1] = EPSGNatOriginLong;
-        panEPSGCodes[4] = EPSGNatOriginScaleFactor;
-        panEPSGCodes[5] = EPSGFalseEasting;
-        panEPSGCodes[6] = EPSGFalseNorthing;
-        return TRUE;
-
-      case CT_LambertConfConic_2SP:
-        panProjParmId[0] = ProjFalseOriginLatGeoKey;
-        panProjParmId[1] = ProjFalseOriginLongGeoKey;
-        panProjParmId[2] = ProjStdParallel1GeoKey;
-        panProjParmId[3] = ProjStdParallel2GeoKey;
-        panProjParmId[5] = ProjFalseEastingGeoKey;
-        panProjParmId[6] = ProjFalseNorthingGeoKey;
-
-        panEPSGCodes[0] = EPSGFalseOriginLat;
-        panEPSGCodes[1] = EPSGFalseOriginLong;
-        panEPSGCodes[2] = EPSGStdParallel1Lat;
-        panEPSGCodes[3] = EPSGStdParallel2Lat;
-        panEPSGCodes[5] = EPSGFalseOriginEasting;
-        panEPSGCodes[6] = EPSGFalseOriginNorthing;
-        return TRUE;
-
-      case CT_SwissObliqueCylindrical:
-        panProjParmId[0] = ProjCenterLatGeoKey;
-        panProjParmId[1] = ProjCenterLongGeoKey;
-        panProjParmId[5] = ProjFalseEastingGeoKey;
-        panProjParmId[6] = ProjFalseNorthingGeoKey;
-
-        /* EPSG codes? */
-        return TRUE;
-
-      default:
-        return( FALSE );
-    }
-}
-
-/************************************************************************/
-/*                         GTIFGetProjTRFInfo()                         */
-/*                                                                      */
-/*      Transform a PROJECTION_TRF_CODE into a projection method,       */
-/*      and a set of parameters.  The parameters identify will          */
-/*      depend on the returned method, but they will all have been      */
-/*      normalized into degrees and meters.                             */
-/************************************************************************/
-
-int GTIFGetProjTRFInfo( /* COORD_OP_CODE from coordinate_operation.csv */
-                        int nProjTRFCode, 
-                        char **ppszProjTRFName,
-                        short * pnProjMethod,
-                        double * padfProjParms )
-
-{
-    int		nProjMethod, i, anEPSGCodes[7];
-    double	adfProjParms[7];
-    char	szTRFCode[16];
-    int         nCTProjMethod;
-    char       *pszFilename = CPLStrdup(CSVFilename("projop_wparm.csv"));
-
-/* -------------------------------------------------------------------- */
-/*      Get the proj method.  If this fails to return a meaningful      */
-/*      number, then the whole function fails.                          */
-/* -------------------------------------------------------------------- */
-    sprintf( szTRFCode, "%d", nProjTRFCode );
-    nProjMethod =
-        atoi( CSVGetField( pszFilename,
-                           "COORD_OP_CODE", szTRFCode, CC_Integer,
-                           "COORD_OP_METHOD_CODE" ) );
-    if( nProjMethod == 0 )
-    {
-        CPLFree( pszFilename );
-        return FALSE;
-    }
-
-/* -------------------------------------------------------------------- */
-/*      Initialize a definition of what EPSG codes need to be loaded    */
-/*      into what fields in adfProjParms.                               */
-/* -------------------------------------------------------------------- */
-    nCTProjMethod = EPSGProjMethodToCTProjMethod( nProjMethod );
-    SetGTParmIds( nCTProjMethod, NULL, anEPSGCodes );
-
-/* -------------------------------------------------------------------- */
-/*      Get the parameters for this projection.  For the time being     */
-/*      I am assuming the first four parameters are angles, the         */
-/*      fifth is unitless (normally scale), and the remainder are       */
-/*      linear measures.  This works fine for the existing              */
-/*      projections, but is a pretty fragile approach.                  */
-/* -------------------------------------------------------------------- */
-
-    for( i = 0; i < 7; i++ )
-    {
-        char    szParamUOMID[32], szParamValueID[32], szParamCodeID[32];
-        const char *pszValue;
-        int     nUOM;
-        int     nEPSGCode = anEPSGCodes[i];
-        int     iEPSG;
-
-        /* Establish default */
-        if( nEPSGCode == EPSGAngleRectifiedToSkewedGrid )
-            adfProjParms[i] = 90.0;
-        else if( nEPSGCode == EPSGNatOriginScaleFactor
-                 || nEPSGCode == EPSGInitialLineScaleFactor
-                 || nEPSGCode == EPSGPseudoStdParallelScaleFactor )
-            adfProjParms[i] = 1.0;
-        else
-            adfProjParms[i] = 0.0;
-
-        /* If there is no parameter, skip */
-        if( nEPSGCode == 0 )
-            continue;
-
-        /* Find the matching parameter */
-        for( iEPSG = 0; iEPSG < 7; iEPSG++ )
-        {
-            sprintf( szParamCodeID, "PARAMETER_CODE_%d", iEPSG+1 );
-
-            if( atoi(CSVGetField( pszFilename,
-                                  "COORD_OP_CODE", szTRFCode, CC_Integer, 
-                                  szParamCodeID )) == nEPSGCode )
-                break;
-        }
-
-        /* not found, accept the default */
-        if( iEPSG == 7 )
-            continue;
-
-        /* Get the value, and UOM */
-        sprintf( szParamUOMID, "PARAMETER_UOM_%d", iEPSG+1 );
-        sprintf( szParamValueID, "PARAMETER_VALUE_%d", iEPSG+1 );
-
-        nUOM = atoi(CSVGetField( pszFilename,
-                                 "COORD_OP_CODE", szTRFCode, CC_Integer, 
-                                 szParamUOMID ));
-        pszValue = CSVGetField( pszFilename,
-                                "COORD_OP_CODE", szTRFCode, CC_Integer, 
-                                szParamValueID );
-
-        /* Transform according to the UOM */
-        if( nUOM >= 9100 && nUOM < 9200 )
-            adfProjParms[i] = GTIFAngleStringToDD( pszValue, nUOM );
-        else if( nUOM > 9000 && nUOM < 9100 )
-        {
-            double dfInMeters;
-
-            if( !GTIFGetUOMLengthInfo( nUOM, NULL, &dfInMeters ) )
-                dfInMeters = 1.0;
-            adfProjParms[i] = atof(pszValue) * dfInMeters;
-        }
-        else
-            adfProjParms[i] = atof(pszValue);
-    }
-
-/* -------------------------------------------------------------------- */
-/*      Get the name, if requested.                                     */
-/* -------------------------------------------------------------------- */
-    if( ppszProjTRFName != NULL )
-    {
-        *ppszProjTRFName =
-            CPLStrdup(CSVGetField( pszFilename,
-                                   "COORD_OP_CODE", szTRFCode, CC_Integer,
-                                   "COORD_OP_NAME" ));
-    }
-    
-/* -------------------------------------------------------------------- */
-/*      Transfer requested data into passed variables.                  */
-/* -------------------------------------------------------------------- */
-    if( pnProjMethod != NULL )
-        *pnProjMethod = (short) nProjMethod;
-
-    if( padfProjParms != NULL )
-    {
-        for( i = 0; i < 7; i++ )
-            padfProjParms[i] = adfProjParms[i];
-    }
-
-    CPLFree( pszFilename );
-
-    return TRUE;
-}
-
-/************************************************************************/
-/*                         GTIFFetchProjParms()                         */
-/*                                                                      */
-/*      Fetch the projection parameters for a particular projection     */
-/*      from a GeoTIFF file, and fill the GTIFDefn structure out        */
-/*      with them.                                                      */
-/************************************************************************/
-
-static void GTIFFetchProjParms( GTIF * psGTIF, GTIFDefn * psDefn )
-
-{
-    double dfNatOriginLong = 0.0, dfNatOriginLat = 0.0, dfRectGridAngle = 0.0;
-    double dfFalseEasting = 0.0, dfFalseNorthing = 0.0, dfNatOriginScale = 1.0;
-    double dfStdParallel1 = 0.0, dfStdParallel2 = 0.0, dfAzimuth = 0.0;
-
-/* -------------------------------------------------------------------- */
-/*      Get the false easting, and northing if available.               */
-/* -------------------------------------------------------------------- */
-    if( !GTIFKeyGet(psGTIF, ProjFalseEastingGeoKey, &dfFalseEasting, 0, 1)
-        && !GTIFKeyGet(psGTIF, ProjCenterEastingGeoKey,
-                       &dfFalseEasting, 0, 1) 
-        && !GTIFKeyGet(psGTIF, ProjFalseOriginEastingGeoKey,
-                       &dfFalseEasting, 0, 1) )
-        dfFalseEasting = 0.0;
-        
-    if( !GTIFKeyGet(psGTIF, ProjFalseNorthingGeoKey, &dfFalseNorthing,0,1)
-        && !GTIFKeyGet(psGTIF, ProjCenterNorthingGeoKey,
-                       &dfFalseNorthing, 0, 1)
-        && !GTIFKeyGet(psGTIF, ProjFalseOriginNorthingGeoKey,
-                       &dfFalseNorthing, 0, 1) )
-        dfFalseNorthing = 0.0;
-        
-    switch( psDefn->CTProjection )
-    {
-/* -------------------------------------------------------------------- */
-      case CT_Stereographic:
-/* -------------------------------------------------------------------- */
-        if( GTIFKeyGet(psGTIF, ProjNatOriginLongGeoKey, 
-                       &dfNatOriginLong, 0, 1 ) == 0
-            && GTIFKeyGet(psGTIF, ProjFalseOriginLongGeoKey, 
-                          &dfNatOriginLong, 0, 1 ) == 0
-            && GTIFKeyGet(psGTIF, ProjCenterLongGeoKey, 
-                          &dfNatOriginLong, 0, 1 ) == 0 )
-            dfNatOriginLong = 0.0;
-
-        if( GTIFKeyGet(psGTIF, ProjNatOriginLatGeoKey, 
-                       &dfNatOriginLat, 0, 1 ) == 0
-            && GTIFKeyGet(psGTIF, ProjFalseOriginLatGeoKey, 
-                          &dfNatOriginLat, 0, 1 ) == 0
-            && GTIFKeyGet(psGTIF, ProjCenterLatGeoKey, 
-                          &dfNatOriginLat, 0, 1 ) == 0 )
-            dfNatOriginLat = 0.0;
-
-        if( GTIFKeyGet(psGTIF, ProjScaleAtNatOriginGeoKey,
-                       &dfNatOriginScale, 0, 1 ) == 0 )
-            dfNatOriginScale = 1.0;
-            
-        /* notdef: should transform to decimal degrees at this point */
-
-        psDefn->ProjParm[0] = dfNatOriginLat;
-        psDefn->ProjParmId[0] = ProjCenterLatGeoKey;
-        psDefn->ProjParm[1] = dfNatOriginLong;
-        psDefn->ProjParmId[1] = ProjCenterLongGeoKey;
-        psDefn->ProjParm[4] = dfNatOriginScale;
-        psDefn->ProjParmId[4] = ProjScaleAtNatOriginGeoKey;
-        psDefn->ProjParm[5] = dfFalseEasting;
-        psDefn->ProjParmId[5] = ProjFalseEastingGeoKey;
-        psDefn->ProjParm[6] = dfFalseNorthing;
-        psDefn->ProjParmId[6] = ProjFalseNorthingGeoKey;
-
-        psDefn->nParms = 7;
-        break;
-
-/* -------------------------------------------------------------------- */
-      case CT_LambertConfConic_1SP:
-      case CT_Mercator:
-      case CT_ObliqueStereographic:
-      case CT_TransverseMercator:
-      case CT_TransvMercator_SouthOriented:
-/* -------------------------------------------------------------------- */
-        if( GTIFKeyGet(psGTIF, ProjNatOriginLongGeoKey, 
-                       &dfNatOriginLong, 0, 1 ) == 0
-            && GTIFKeyGet(psGTIF, ProjFalseOriginLongGeoKey, 
-                          &dfNatOriginLong, 0, 1 ) == 0
-            && GTIFKeyGet(psGTIF, ProjCenterLongGeoKey, 
-                          &dfNatOriginLong, 0, 1 ) == 0 )
-            dfNatOriginLong = 0.0;
-
-        if( GTIFKeyGet(psGTIF, ProjNatOriginLatGeoKey, 
-                       &dfNatOriginLat, 0, 1 ) == 0
-            && GTIFKeyGet(psGTIF, ProjFalseOriginLatGeoKey, 
-                          &dfNatOriginLat, 0, 1 ) == 0
-            && GTIFKeyGet(psGTIF, ProjCenterLatGeoKey, 
-                          &dfNatOriginLat, 0, 1 ) == 0 )
-            dfNatOriginLat = 0.0;
-
-        if( GTIFKeyGet(psGTIF, ProjScaleAtNatOriginGeoKey,
-                       &dfNatOriginScale, 0, 1 ) == 0 )
-            dfNatOriginScale = 1.0;
-            
-        /* notdef: should transform to decimal degrees at this point */
-
-        psDefn->ProjParm[0] = dfNatOriginLat;
-        psDefn->ProjParmId[0] = ProjNatOriginLatGeoKey;
-        psDefn->ProjParm[1] = dfNatOriginLong;
-        psDefn->ProjParmId[1] = ProjNatOriginLongGeoKey;
-        psDefn->ProjParm[4] = dfNatOriginScale;
-        psDefn->ProjParmId[4] = ProjScaleAtNatOriginGeoKey;
-        psDefn->ProjParm[5] = dfFalseEasting;
-        psDefn->ProjParmId[5] = ProjFalseEastingGeoKey;
-        psDefn->ProjParm[6] = dfFalseNorthing;
-        psDefn->ProjParmId[6] = ProjFalseNorthingGeoKey;
-
-        psDefn->nParms = 7;
-        break;
-
-/* -------------------------------------------------------------------- */
-      case CT_ObliqueMercator: /* hotine */
-/* -------------------------------------------------------------------- */
-        if( GTIFKeyGet(psGTIF, ProjNatOriginLongGeoKey, 
-                       &dfNatOriginLong, 0, 1 ) == 0
-            && GTIFKeyGet(psGTIF, ProjFalseOriginLongGeoKey, 
-                          &dfNatOriginLong, 0, 1 ) == 0
-            && GTIFKeyGet(psGTIF, ProjCenterLongGeoKey, 
-                          &dfNatOriginLong, 0, 1 ) == 0 )
-            dfNatOriginLong = 0.0;
-
-        if( GTIFKeyGet(psGTIF, ProjNatOriginLatGeoKey, 
-                       &dfNatOriginLat, 0, 1 ) == 0
-            && GTIFKeyGet(psGTIF, ProjFalseOriginLatGeoKey, 
-                          &dfNatOriginLat, 0, 1 ) == 0
-            && GTIFKeyGet(psGTIF, ProjCenterLatGeoKey, 
-                          &dfNatOriginLat, 0, 1 ) == 0 )
-            dfNatOriginLat = 0.0;
-
-        if( GTIFKeyGet(psGTIF, ProjAzimuthAngleGeoKey, 
-                       &dfAzimuth, 0, 1 ) == 0 )
-            dfAzimuth = 0.0;
-
-        if( GTIFKeyGet(psGTIF, ProjRectifiedGridAngleGeoKey,
-                       &dfRectGridAngle, 0, 1 ) == 0 )
-            dfRectGridAngle = 90.0;
-
-        if( GTIFKeyGet(psGTIF, ProjScaleAtNatOriginGeoKey,
-                       &dfNatOriginScale, 0, 1 ) == 0
-            && GTIFKeyGet(psGTIF, ProjScaleAtCenterGeoKey,
-                          &dfNatOriginScale, 0, 1 ) == 0 )
-            dfNatOriginScale = 1.0;
-            
-        /* notdef: should transform to decimal degrees at this point */
-
-        psDefn->ProjParm[0] = dfNatOriginLat;
-        psDefn->ProjParmId[0] = ProjCenterLatGeoKey;
-        psDefn->ProjParm[1] = dfNatOriginLong;
-        psDefn->ProjParmId[1] = ProjCenterLongGeoKey;
-        psDefn->ProjParm[2] = dfAzimuth;
-        psDefn->ProjParmId[2] = ProjAzimuthAngleGeoKey;
-        psDefn->ProjParm[3] = dfRectGridAngle;
-        psDefn->ProjParmId[3] = ProjRectifiedGridAngleGeoKey;
-        psDefn->ProjParm[4] = dfNatOriginScale;
-        psDefn->ProjParmId[4] = ProjScaleAtCenterGeoKey;
-        psDefn->ProjParm[5] = dfFalseEasting;
-        psDefn->ProjParmId[5] = ProjFalseEastingGeoKey;
-        psDefn->ProjParm[6] = dfFalseNorthing;
-        psDefn->ProjParmId[6] = ProjFalseNorthingGeoKey;
-
-        psDefn->nParms = 7;
-        break;
-
-/* -------------------------------------------------------------------- */
-      case CT_CassiniSoldner:
-      case CT_Polyconic:
-/* -------------------------------------------------------------------- */
-        if( GTIFKeyGet(psGTIF, ProjNatOriginLongGeoKey, 
-                       &dfNatOriginLong, 0, 1 ) == 0
-            && GTIFKeyGet(psGTIF, ProjFalseOriginLongGeoKey, 
-                          &dfNatOriginLong, 0, 1 ) == 0
-            && GTIFKeyGet(psGTIF, ProjCenterLongGeoKey, 
-                          &dfNatOriginLong, 0, 1 ) == 0 )
-            dfNatOriginLong = 0.0;
-
-        if( GTIFKeyGet(psGTIF, ProjNatOriginLatGeoKey, 
-                       &dfNatOriginLat, 0, 1 ) == 0
-            && GTIFKeyGet(psGTIF, ProjFalseOriginLatGeoKey, 
-                          &dfNatOriginLat, 0, 1 ) == 0
-            && GTIFKeyGet(psGTIF, ProjCenterLatGeoKey, 
-                          &dfNatOriginLat, 0, 1 ) == 0 )
-            dfNatOriginLat = 0.0;
-
-        if( GTIFKeyGet(psGTIF, ProjScaleAtNatOriginGeoKey,
-                       &dfNatOriginScale, 0, 1 ) == 0
-            && GTIFKeyGet(psGTIF, ProjScaleAtCenterGeoKey,
-                          &dfNatOriginScale, 0, 1 ) == 0 )
-            dfNatOriginScale = 1.0;
-            
-        /* notdef: should transform to decimal degrees at this point */
-
-        psDefn->ProjParm[0] = dfNatOriginLat;
-        psDefn->ProjParmId[0] = ProjNatOriginLatGeoKey;
-        psDefn->ProjParm[1] = dfNatOriginLong;
-        psDefn->ProjParmId[1] = ProjNatOriginLongGeoKey;
-        psDefn->ProjParm[4] = dfNatOriginScale;
-        psDefn->ProjParmId[4] = ProjScaleAtNatOriginGeoKey;
-        psDefn->ProjParm[5] = dfFalseEasting;
-        psDefn->ProjParmId[5] = ProjFalseEastingGeoKey;
-        psDefn->ProjParm[6] = dfFalseNorthing;
-        psDefn->ProjParmId[6] = ProjFalseNorthingGeoKey;
-
-        psDefn->nParms = 7;
-        break;
-
-/* -------------------------------------------------------------------- */
-      case CT_AzimuthalEquidistant:
-      case CT_MillerCylindrical:
-      case CT_Equirectangular:
-      case CT_Gnomonic:
-      case CT_LambertAzimEqualArea:
-      case CT_Orthographic:
-/* -------------------------------------------------------------------- */
-        if( GTIFKeyGet(psGTIF, ProjNatOriginLongGeoKey, 
-                       &dfNatOriginLong, 0, 1 ) == 0
-            && GTIFKeyGet(psGTIF, ProjFalseOriginLongGeoKey, 
-                          &dfNatOriginLong, 0, 1 ) == 0
-            && GTIFKeyGet(psGTIF, ProjCenterLongGeoKey, 
-                          &dfNatOriginLong, 0, 1 ) == 0 )
-            dfNatOriginLong = 0.0;
-
-        if( GTIFKeyGet(psGTIF, ProjNatOriginLatGeoKey, 
-                       &dfNatOriginLat, 0, 1 ) == 0
-            && GTIFKeyGet(psGTIF, ProjFalseOriginLatGeoKey, 
-                          &dfNatOriginLat, 0, 1 ) == 0
-            && GTIFKeyGet(psGTIF, ProjCenterLatGeoKey, 
-                          &dfNatOriginLat, 0, 1 ) == 0 )
-            dfNatOriginLat = 0.0;
-
-        /* notdef: should transform to decimal degrees at this point */
-
-        psDefn->ProjParm[0] = dfNatOriginLat;
-        psDefn->ProjParmId[0] = ProjCenterLatGeoKey;
-        psDefn->ProjParm[1] = dfNatOriginLong;
-        psDefn->ProjParmId[1] = ProjCenterLongGeoKey;
-        psDefn->ProjParm[5] = dfFalseEasting;
-        psDefn->ProjParmId[5] = ProjFalseEastingGeoKey;
-        psDefn->ProjParm[6] = dfFalseNorthing;
-        psDefn->ProjParmId[6] = ProjFalseNorthingGeoKey;
-
-        psDefn->nParms = 7;
-        break;
-
-/* -------------------------------------------------------------------- */
-      case CT_Robinson:
-      case CT_Sinusoidal:
-      case CT_VanDerGrinten:
-/* -------------------------------------------------------------------- */
-        if( GTIFKeyGet(psGTIF, ProjNatOriginLongGeoKey, 
-                       &dfNatOriginLong, 0, 1 ) == 0
-            && GTIFKeyGet(psGTIF, ProjFalseOriginLongGeoKey, 
-                          &dfNatOriginLong, 0, 1 ) == 0
-            && GTIFKeyGet(psGTIF, ProjCenterLongGeoKey, 
-                          &dfNatOriginLong, 0, 1 ) == 0 )
-            dfNatOriginLong = 0.0;
-
-        /* notdef: should transform to decimal degrees at this point */
-
-        psDefn->ProjParm[1] = dfNatOriginLong;
-        psDefn->ProjParmId[1] = ProjCenterLongGeoKey;
-        psDefn->ProjParm[5] = dfFalseEasting;
-        psDefn->ProjParmId[5] = ProjFalseEastingGeoKey;
-        psDefn->ProjParm[6] = dfFalseNorthing;
-        psDefn->ProjParmId[6] = ProjFalseNorthingGeoKey;
-
-        psDefn->nParms = 7;
-        break;
-
-/* -------------------------------------------------------------------- */
-      case CT_PolarStereographic:
-/* -------------------------------------------------------------------- */
-        if( GTIFKeyGet(psGTIF, ProjStraightVertPoleLongGeoKey, 
-                       &dfNatOriginLong, 0, 1 ) == 0
-            && GTIFKeyGet(psGTIF, ProjNatOriginLongGeoKey, 
-                          &dfNatOriginLong, 0, 1 ) == 0
-            && GTIFKeyGet(psGTIF, ProjFalseOriginLongGeoKey, 
-                          &dfNatOriginLong, 0, 1 ) == 0
-            && GTIFKeyGet(psGTIF, ProjCenterLongGeoKey, 
-                          &dfNatOriginLong, 0, 1 ) == 0 )
-            dfNatOriginLong = 0.0;
-
-        if( GTIFKeyGet(psGTIF, ProjNatOriginLatGeoKey, 
-                       &dfNatOriginLat, 0, 1 ) == 0
-            && GTIFKeyGet(psGTIF, ProjFalseOriginLatGeoKey, 
-                          &dfNatOriginLat, 0, 1 ) == 0
-            && GTIFKeyGet(psGTIF, ProjCenterLatGeoKey, 
-                          &dfNatOriginLat, 0, 1 ) == 0 )
-            dfNatOriginLat = 0.0;
-
-        if( GTIFKeyGet(psGTIF, ProjScaleAtNatOriginGeoKey,
-                       &dfNatOriginScale, 0, 1 ) == 0
-            && GTIFKeyGet(psGTIF, ProjScaleAtCenterGeoKey,
-                          &dfNatOriginScale, 0, 1 ) == 0 )
-            dfNatOriginScale = 1.0;
-            
-        /* notdef: should transform to decimal degrees at this point */
-
-        psDefn->ProjParm[0] = dfNatOriginLat;
-        psDefn->ProjParmId[0] = ProjNatOriginLatGeoKey;;
-        psDefn->ProjParm[1] = dfNatOriginLong;
-        psDefn->ProjParmId[1] = ProjStraightVertPoleLongGeoKey;
-        psDefn->ProjParm[4] = dfNatOriginScale;
-        psDefn->ProjParmId[4] = ProjScaleAtNatOriginGeoKey;
-        psDefn->ProjParm[5] = dfFalseEasting;
-        psDefn->ProjParmId[5] = ProjFalseEastingGeoKey;
-        psDefn->ProjParm[6] = dfFalseNorthing;
-        psDefn->ProjParmId[6] = ProjFalseNorthingGeoKey;
-
-        psDefn->nParms = 7;
-        break;
-
-/* -------------------------------------------------------------------- */
-      case CT_LambertConfConic_2SP:
-/* -------------------------------------------------------------------- */
-        if( GTIFKeyGet(psGTIF, ProjStdParallel1GeoKey, 
-                       &dfStdParallel1, 0, 1 ) == 0 )
-            dfStdParallel1 = 0.0;
-
-        if( GTIFKeyGet(psGTIF, ProjStdParallel2GeoKey, 
-                       &dfStdParallel2, 0, 1 ) == 0 )
-            dfStdParallel1 = 0.0;
-
-        if( GTIFKeyGet(psGTIF, ProjNatOriginLongGeoKey, 
-                       &dfNatOriginLong, 0, 1 ) == 0
-            && GTIFKeyGet(psGTIF, ProjFalseOriginLongGeoKey, 
-                          &dfNatOriginLong, 0, 1 ) == 0
-            && GTIFKeyGet(psGTIF, ProjCenterLongGeoKey, 
-                          &dfNatOriginLong, 0, 1 ) == 0 )
-            dfNatOriginLong = 0.0;
-
-        if( GTIFKeyGet(psGTIF, ProjNatOriginLatGeoKey, 
-                       &dfNatOriginLat, 0, 1 ) == 0
-            && GTIFKeyGet(psGTIF, ProjFalseOriginLatGeoKey, 
-                          &dfNatOriginLat, 0, 1 ) == 0
-            && GTIFKeyGet(psGTIF, ProjCenterLatGeoKey, 
-                          &dfNatOriginLat, 0, 1 ) == 0 )
-            dfNatOriginLat = 0.0;
-
-        /* notdef: should transform to decimal degrees at this point */
-
-        psDefn->ProjParm[0] = dfNatOriginLat;
-        psDefn->ProjParmId[0] = ProjFalseOriginLatGeoKey;
-        psDefn->ProjParm[1] = dfNatOriginLong;
-        psDefn->ProjParmId[1] = ProjFalseOriginLongGeoKey;
-        psDefn->ProjParm[2] = dfStdParallel1;
-        psDefn->ProjParmId[2] = ProjStdParallel1GeoKey;
-        psDefn->ProjParm[3] = dfStdParallel2;
-        psDefn->ProjParmId[3] = ProjStdParallel2GeoKey;
-        psDefn->ProjParm[5] = dfFalseEasting;
-        psDefn->ProjParmId[5] = ProjFalseEastingGeoKey;
-        psDefn->ProjParm[6] = dfFalseNorthing;
-        psDefn->ProjParmId[6] = ProjFalseNorthingGeoKey;
-
-        psDefn->nParms = 7;
-        break;
-
-/* -------------------------------------------------------------------- */
-      case CT_AlbersEqualArea:
-      case CT_EquidistantConic:
-/* -------------------------------------------------------------------- */
-        if( GTIFKeyGet(psGTIF, ProjStdParallel1GeoKey, 
-                       &dfStdParallel1, 0, 1 ) == 0 )
-            dfStdParallel1 = 0.0;
-
-        if( GTIFKeyGet(psGTIF, ProjStdParallel2GeoKey, 
-                       &dfStdParallel2, 0, 1 ) == 0 )
-            dfStdParallel2 = 0.0;
-
-        if( GTIFKeyGet(psGTIF, ProjNatOriginLongGeoKey, 
-                       &dfNatOriginLong, 0, 1 ) == 0
-            && GTIFKeyGet(psGTIF, ProjFalseOriginLongGeoKey, 
-                          &dfNatOriginLong, 0, 1 ) == 0
-            && GTIFKeyGet(psGTIF, ProjCenterLongGeoKey, 
-                          &dfNatOriginLong, 0, 1 ) == 0 )
-            dfNatOriginLong = 0.0;
-
-        if( GTIFKeyGet(psGTIF, ProjNatOriginLatGeoKey, 
-                       &dfNatOriginLat, 0, 1 ) == 0
-            && GTIFKeyGet(psGTIF, ProjFalseOriginLatGeoKey, 
-                          &dfNatOriginLat, 0, 1 ) == 0
-            && GTIFKeyGet(psGTIF, ProjCenterLatGeoKey, 
-                          &dfNatOriginLat, 0, 1 ) == 0 )
-            dfNatOriginLat = 0.0;
-
-        /* notdef: should transform to decimal degrees at this point */
-
-        psDefn->ProjParm[0] = dfStdParallel1;
-        psDefn->ProjParmId[0] = ProjStdParallel1GeoKey;
-        psDefn->ProjParm[1] = dfStdParallel2;
-        psDefn->ProjParmId[1] = ProjStdParallel2GeoKey;
-        psDefn->ProjParm[2] = dfNatOriginLat;
-        psDefn->ProjParmId[2] = ProjNatOriginLatGeoKey;
-        psDefn->ProjParm[3] = dfNatOriginLong;
-        psDefn->ProjParmId[3] = ProjNatOriginLongGeoKey;
-        psDefn->ProjParm[5] = dfFalseEasting;
-        psDefn->ProjParmId[5] = ProjFalseEastingGeoKey;
-        psDefn->ProjParm[6] = dfFalseNorthing;
-        psDefn->ProjParmId[6] = ProjFalseNorthingGeoKey;
-
-        psDefn->nParms = 7;
-        break;
-
-/* -------------------------------------------------------------------- */
-      case CT_CylindricalEqualArea:
-/* -------------------------------------------------------------------- */
-        if( GTIFKeyGet(psGTIF, ProjStdParallel1GeoKey, 
-                       &dfStdParallel1, 0, 1 ) == 0 )
-            dfStdParallel1 = 0.0;
-
-        if( GTIFKeyGet(psGTIF, ProjNatOriginLongGeoKey, 
-                       &dfNatOriginLong, 0, 1 ) == 0
-            && GTIFKeyGet(psGTIF, ProjFalseOriginLongGeoKey, 
-                          &dfNatOriginLong, 0, 1 ) == 0
-            && GTIFKeyGet(psGTIF, ProjCenterLongGeoKey, 
-                          &dfNatOriginLong, 0, 1 ) == 0 )
-            dfNatOriginLong = 0.0;
-
-        /* notdef: should transform to decimal degrees at this point */
-
-        psDefn->ProjParm[0] = dfStdParallel1;
-        psDefn->ProjParmId[0] = ProjStdParallel1GeoKey;
-        psDefn->ProjParm[1] = dfNatOriginLong;
-        psDefn->ProjParmId[1] = ProjNatOriginLongGeoKey;
-        psDefn->ProjParm[5] = dfFalseEasting;
-        psDefn->ProjParmId[5] = ProjFalseEastingGeoKey;
-        psDefn->ProjParm[6] = dfFalseNorthing;
-        psDefn->ProjParmId[6] = ProjFalseNorthingGeoKey;
-
-        psDefn->nParms = 7;
-        break;
-    }
-}
-
-/************************************************************************/
-/*                            GTIFGetDefn()                             */
-/************************************************************************/
-
-/**
- at param psGTIF GeoTIFF information handle as returned by GTIFNew.
- at param psDefn Pointer to an existing GTIFDefn structure.  This structure
-does not need to have been pre-initialized at all.
-
- at return TRUE if the function has been successful, otherwise FALSE.
-
-This function reads the coordinate system definition from a GeoTIFF file,
-and <i>normalizes</i> it into a set of component information using 
-definitions from CSV (Comma Seperated Value ASCII) files derived from 
-EPSG tables.  This function is intended to simplify correct support for
-reading files with defined PCS (Projected Coordinate System) codes that
-wouldn't otherwise be directly known by application software by reducing
-it to the underlying projection method, parameters, datum, ellipsoid, 
-prime meridian and units.<p>
-
-The application should pass a pointer to an existing uninitialized 
-GTIFDefn structure, and GTIFGetDefn() will fill it in.  The fuction 
-currently always returns TRUE but in the future will return FALSE if 
-CSV files are not found.  In any event, all geokeys actually found in the
-file will be copied into the GTIFDefn.  However, if the CSV files aren't
-found codes implied by other codes will not be set properly.<p>
-
-GTIFGetDefn() will not generally work if the EPSG derived CSV files cannot
-be found.  By default a modest attempt will be made to find them, but 
-in general it is necessary for the calling application to override the
-logic to find them.  This can be done by calling the 
-SetCSVFilenameHook() function to
-override the search method based on application knowledge of where they are
-found.<p>
-
-The normalization methodology operates by fetching tags from the GeoTIFF
-file, and then setting all other tags implied by them in the structure.  The
-implied relationships are worked out by reading definitions from the 
-various EPSG derived CSV tables.<p>
-
-For instance, if a PCS (ProjectedCSTypeGeoKey) is found in the GeoTIFF file
-this code is used to lookup a record in the <tt>horiz_cs.csv</tt> CSV
-file.  For example given the PCS 26746 we can find the name
-(NAD27 / California zone VI), the GCS 4257 (NAD27), and the ProjectionCode
-10406 (California CS27 zone VI).  The GCS, and ProjectionCode can in turn
-be looked up in other tables until all the details of units, ellipsoid, 
-prime meridian, datum, projection (LambertConfConic_2SP) and projection
-parameters are established.  A full listgeo dump of a file 
-for this result might look like the following, all based on a single PCS
-value:<p>
-
-<pre>
-% listgeo -norm ~/data/geotiff/pci_eg/spaf27.tif
-Geotiff_Information:
-   Version: 1
-   Key_Revision: 1.0
-   Tagged_Information:
-      ModelTiepointTag (2,3):
-         0                0                0                
-         1577139.71       634349.176       0                
-      ModelPixelScaleTag (1,3):
-         195.509321       198.32184        0                
-      End_Of_Tags.
-   Keyed_Information:
-      GTModelTypeGeoKey (Short,1): ModelTypeProjected
-      GTRasterTypeGeoKey (Short,1): RasterPixelIsArea
-      ProjectedCSTypeGeoKey (Short,1): PCS_NAD27_California_VI
-      End_Of_Keys.
-   End_Of_Geotiff.
-
-PCS = 26746 (NAD27 / California zone VI)
-Projection = 10406 (California CS27 zone VI)
-Projection Method: CT_LambertConfConic_2SP
-   ProjStdParallel1GeoKey: 33.883333
-   ProjStdParallel2GeoKey: 32.766667
-   ProjFalseOriginLatGeoKey: 32.166667
-   ProjFalseOriginLongGeoKey: -116.233333
-   ProjFalseEastingGeoKey: 609601.219202
-   ProjFalseNorthingGeoKey: 0.000000
-GCS: 4267/NAD27
-Datum: 6267/North American Datum 1927
-Ellipsoid: 7008/Clarke 1866 (6378206.40,6356583.80)
-Prime Meridian: 8901/Greenwich (0.000000)
-Projection Linear Units: 9003/US survey foot (0.304801m)
-</pre>
-
-Note that GTIFGetDefn() does not inspect or return the tiepoints and scale.
-This must be handled seperately as it normally would.  It is intended to
-simplify capture and normalization of the coordinate system definition.  
-Note that GTIFGetDefn() also does the following things:
-
-<ol>
-<li> Convert all angular values to decimal degrees.
-<li> Convert all linear values to meters. 
-<li> Return the linear units and conversion to meters for the tiepoints and
-scale (though the tiepoints and scale remain in their native units). 
-<li> When reading projection parameters a variety of differences between
-different GeoTIFF generators are handled, and a normalized set of parameters
-for each projection are always returned.
-</ol>
-
-Code fields in the GTIFDefn are filled with KvUserDefined if there is not
-value to assign.  The parameter lists for each of the underlying projection
-transform methods can be found at the
-<a href="http://www.remotesensing.org/geotiff/proj_list">Projections</a>
-page.  Note that nParms will be set based on the maximum parameter used.
-Some of the parameters may not be used in which case the
-GTIFDefn::ProjParmId[] will
-be zero.  This is done to retain correspondence to the EPSG parameter
-numbering scheme.<p>
-
-The 
-<a href="http://www.remotesensing.org/cgi-bin/cvsweb.cgi/~checkout~/osrs/geotiff/libgeotiff/geotiff_proj4.c">geotiff_proj4.c</a> module distributed with libgeotiff can 
-be used as an example of code that converts a GTIFDefn into another projection
-system.<p>
-
- at see GTIFKeySet(), SetCSVFilenameHook()
-
-*/
-
-int GTIFGetDefn( GTIF * psGTIF, GTIFDefn * psDefn )
-
-{
-    int		i;
-    short	nGeogUOMLinear;
-    double	dfInvFlattening;
-    
-/* -------------------------------------------------------------------- */
-/*      Initially we default all the information we can.                */
-/* -------------------------------------------------------------------- */
-    psDefn->Model = KvUserDefined;
-    psDefn->PCS = KvUserDefined;
-    psDefn->GCS = KvUserDefined;
-    psDefn->UOMLength = KvUserDefined;
-    psDefn->UOMLengthInMeters = 1.0;
-    psDefn->UOMAngle = KvUserDefined;
-    psDefn->UOMAngleInDegrees = 1.0;
-    psDefn->Datum = KvUserDefined;
-    psDefn->Ellipsoid = KvUserDefined;
-    psDefn->SemiMajor = 0.0;
-    psDefn->SemiMinor = 0.0;
-    psDefn->PM = KvUserDefined;
-    psDefn->PMLongToGreenwich = 0.0;
-
-    psDefn->ProjCode = KvUserDefined;
-    psDefn->Projection = KvUserDefined;
-    psDefn->CTProjection = KvUserDefined;
-
-    psDefn->nParms = 0;
-    for( i = 0; i < MAX_GTIF_PROJPARMS; i++ )
-    {
-        psDefn->ProjParm[i] = 0.0;
-        psDefn->ProjParmId[i] = 0;
-    }
-
-    psDefn->MapSys = KvUserDefined;
-    psDefn->Zone = 0;
-
-/* -------------------------------------------------------------------- */
-/*	Try to get the overall model type.				*/
-/* -------------------------------------------------------------------- */
-    GTIFKeyGet(psGTIF,GTModelTypeGeoKey,&(psDefn->Model),0,1);
-
-/* -------------------------------------------------------------------- */
-/*	Extract the Geog units.  					*/
-/* -------------------------------------------------------------------- */
-    nGeogUOMLinear = 9001; /* Linear_Meter */
-    GTIFKeyGet(psGTIF, GeogLinearUnitsGeoKey, &nGeogUOMLinear, 0, 1 );
-
-/* -------------------------------------------------------------------- */
-/*      Try to get a PCS.                                               */
-/* -------------------------------------------------------------------- */
-    if( GTIFKeyGet(psGTIF,ProjectedCSTypeGeoKey, &(psDefn->PCS),0,1) == 1
-        && psDefn->PCS != KvUserDefined )
-    {
-        /*
-         * Translate this into useful information.
-         */
-        GTIFGetPCSInfo( psDefn->PCS, NULL, &(psDefn->ProjCode),
-                        &(psDefn->UOMLength), &(psDefn->GCS) );
-    }
-
-/* -------------------------------------------------------------------- */
-/*       If we have the PCS code, but didn't find it in the CSV files   */
-/*      (likely because we can't find them) we will try some ``jiffy    */
-/*      rules'' for UTM and state plane.                                */
-/* -------------------------------------------------------------------- */
-    if( psDefn->PCS != KvUserDefined && psDefn->ProjCode == KvUserDefined )
-    {
-        int	nMapSys, nZone;
-        int	nGCS = psDefn->GCS;
-
-        nMapSys = GTIFPCSToMapSys( psDefn->PCS, &nGCS, &nZone );
-        if( nMapSys != KvUserDefined )
-        {
-            psDefn->ProjCode = (short) GTIFMapSysToProj( nMapSys, nZone );
-            psDefn->GCS = (short) nGCS;
-        }
-    }
-
-/* -------------------------------------------------------------------- */
-/*      If the Proj_ code is specified directly, use that.              */
-/* -------------------------------------------------------------------- */
-    if( psDefn->ProjCode == KvUserDefined )
-        GTIFKeyGet(psGTIF, ProjectionGeoKey, &(psDefn->ProjCode), 0, 1 );
-    
-    if( psDefn->ProjCode != KvUserDefined )
-    {
-        /*
-         * We have an underlying projection transformation value.  Look
-         * this up.  For a PCS of ``WGS 84 / UTM 11'' the transformation
-         * would be Transverse Mercator, with a particular set of options.
-         * The nProjTRFCode itself would correspond to the name
-         * ``UTM zone 11N'', and doesn't include datum info.
-         */
-        GTIFGetProjTRFInfo( psDefn->ProjCode, NULL, &(psDefn->Projection),
-                            psDefn->ProjParm );
-        
-        /*
-         * Set the GeoTIFF identity of the parameters.
-         */
-        psDefn->CTProjection = (short) 
-            EPSGProjMethodToCTProjMethod( psDefn->Projection );
-
-        SetGTParmIds( psDefn->CTProjection, psDefn->ProjParmId, NULL);
-        psDefn->nParms = 7;
-    }
-
-/* -------------------------------------------------------------------- */
-/*      Try to get a GCS.  If found, it will override any implied by    */
-/*      the PCS.                                                        */
-/* -------------------------------------------------------------------- */
-    GTIFKeyGet(psGTIF, GeographicTypeGeoKey, &(psDefn->GCS), 0, 1 );
-
-/* -------------------------------------------------------------------- */
-/*      Derive the datum, and prime meridian from the GCS.              */
-/* -------------------------------------------------------------------- */
-    if( psDefn->GCS != KvUserDefined )
-    {
-        GTIFGetGCSInfo( psDefn->GCS, NULL, &(psDefn->Datum), &(psDefn->PM),
-                        &(psDefn->UOMAngle) );
-    }
-    
-/* -------------------------------------------------------------------- */
-/*      Handle the GCS angular units.  GeogAngularUnitsGeoKey           */
-/*      overrides the GCS or PCS setting.                               */
-/* -------------------------------------------------------------------- */
-    GTIFKeyGet(psGTIF, GeogAngularUnitsGeoKey, &(psDefn->UOMAngle), 0, 1 );
-    if( psDefn->UOMAngle != KvUserDefined )
-    {
-        GTIFGetUOMAngleInfo( psDefn->UOMAngle, NULL,
-                             &(psDefn->UOMAngleInDegrees) );
-    }
-
-/* -------------------------------------------------------------------- */
-/*      Check for a datum setting, and then use the datum to derive     */
-/*      an ellipsoid.                                                   */
-/* -------------------------------------------------------------------- */
-    GTIFKeyGet(psGTIF, GeogGeodeticDatumGeoKey, &(psDefn->Datum), 0, 1 );
-
-    if( psDefn->Datum != KvUserDefined )
-    {
-        GTIFGetDatumInfo( psDefn->Datum, NULL, &(psDefn->Ellipsoid) );
-    }
-
-/* -------------------------------------------------------------------- */
-/*      Check for an explicit ellipsoid.  Use the ellipsoid to          */
-/*      derive the ellipsoid characteristics, if possible.              */
-/* -------------------------------------------------------------------- */
-    GTIFKeyGet(psGTIF, GeogEllipsoidGeoKey, &(psDefn->Ellipsoid), 0, 1 );
-
-    if( psDefn->Ellipsoid != KvUserDefined )
-    {
-        GTIFGetEllipsoidInfo( psDefn->Ellipsoid, NULL,
-                              &(psDefn->SemiMajor), &(psDefn->SemiMinor) );
-    }
-
-/* -------------------------------------------------------------------- */
-/*      Check for overridden ellipsoid parameters.  It would be nice    */
-/*      to warn if they conflict with provided information, but for     */
-/*      now we just override.                                           */
-/* -------------------------------------------------------------------- */
-    GTIFKeyGet(psGTIF, GeogSemiMajorAxisGeoKey, &(psDefn->SemiMajor), 0, 1 );
-    GTIFKeyGet(psGTIF, GeogSemiMinorAxisGeoKey, &(psDefn->SemiMinor), 0, 1 );
-    
-    if( GTIFKeyGet(psGTIF, GeogInvFlatteningGeoKey, &dfInvFlattening, 
-                   0, 1 ) == 1 )
-    {
-        if( dfInvFlattening != 0.0 )
-            psDefn->SemiMinor = 
-                psDefn->SemiMajor * (1 - 1.0/dfInvFlattening);
-        else
-            psDefn->SemiMinor = psDefn->SemiMajor;
-    }
-    
-/* -------------------------------------------------------------------- */
-/*      Get the prime meridian info.                                    */
-/* -------------------------------------------------------------------- */
-    GTIFKeyGet(psGTIF, GeogPrimeMeridianGeoKey, &(psDefn->PM), 0, 1 );
-
-    if( psDefn->PM != KvUserDefined )
-    {
-        GTIFGetPMInfo( psDefn->PM, NULL, &(psDefn->PMLongToGreenwich) );
-    }
-    else
-    {
-        GTIFKeyGet(psGTIF, GeogPrimeMeridianLongGeoKey,
-                   &(psDefn->PMLongToGreenwich), 0, 1 );
-
-        psDefn->PMLongToGreenwich =
-            GTIFAngleToDD( psDefn->PMLongToGreenwich,
-                           psDefn->UOMAngle );
-    }
-
-/* -------------------------------------------------------------------- */
-/*      Have the projection units of measure been overridden?  We       */
-/*      should likely be doing something about angular units too,       */
-/*      but these are very rarely not decimal degrees for actual        */
-/*      file coordinates.                                               */
-/* -------------------------------------------------------------------- */
-    GTIFKeyGet(psGTIF,ProjLinearUnitsGeoKey,&(psDefn->UOMLength),0,1);
-
-    if( psDefn->UOMLength != KvUserDefined )
-    {
-        GTIFGetUOMLengthInfo( psDefn->UOMLength, NULL,
-                              &(psDefn->UOMLengthInMeters) );
-    }
-
-/* -------------------------------------------------------------------- */
-/*      Handle a variety of user defined transform types.               */
-/* -------------------------------------------------------------------- */
-    if( GTIFKeyGet(psGTIF,ProjCoordTransGeoKey,
-                   &(psDefn->CTProjection),0,1) == 1)
-    {
-        GTIFFetchProjParms( psGTIF, psDefn );
-    }
-
-/* -------------------------------------------------------------------- */
-/*      Try to set the zoned map system information.                    */
-/* -------------------------------------------------------------------- */
-    psDefn->MapSys = GTIFProjToMapSys( psDefn->ProjCode, &(psDefn->Zone) );
-
-/* -------------------------------------------------------------------- */
-/*      If this is UTM, and we were unable to extract the projection    */
-/*      parameters from the CSV file, just set them directly now,       */
-/*      since it's pretty easy, and a common case.                      */
-/* -------------------------------------------------------------------- */
-    if( (psDefn->MapSys == MapSys_UTM_North
-         || psDefn->MapSys == MapSys_UTM_South)
-        && psDefn->CTProjection == KvUserDefined )
-    {
-        psDefn->CTProjection = CT_TransverseMercator;
-        psDefn->nParms = 7;
-        psDefn->ProjParmId[0] = ProjNatOriginLatGeoKey;
-        psDefn->ProjParm[0] = 0.0;
-            
-        psDefn->ProjParmId[1] = ProjNatOriginLongGeoKey;
-        psDefn->ProjParm[1] = psDefn->Zone*6 - 183.0;
-        
-        psDefn->ProjParmId[4] = ProjScaleAtNatOriginGeoKey;
-        psDefn->ProjParm[4] = 0.9996;
-        
-        psDefn->ProjParmId[5] = ProjFalseEastingGeoKey;
-        psDefn->ProjParm[5] = 500000.0;
-        
-        psDefn->ProjParmId[6] = ProjFalseNorthingGeoKey;
-
-        if( psDefn->MapSys == MapSys_UTM_North )
-            psDefn->ProjParm[6] = 0.0;
-        else
-            psDefn->ProjParm[6] = 10000000.0;
-    }
-
-/* -------------------------------------------------------------------- */
-/*      For now we forceable deaccess all CSV files to reduce the       */
-/*      chance of "leakage".  Really, this should be application        */
-/*      controlled.                                                     */
-/* -------------------------------------------------------------------- */
-    CSVDeaccess( NULL );
-
-    return TRUE;
-}
-
-/************************************************************************/
-/*                            GTIFDecToDMS()                            */
-/*                                                                      */
-/*      Convenient function to translate decimal degrees to DMS         */
-/*      format for reporting to a user.                                 */
-/************************************************************************/
-
-const char *GTIFDecToDMS( double dfAngle, const char * pszAxis,
-                          int nPrecision )
-
-{
-    int		nDegrees, nMinutes;
-    double	dfSeconds;
-    char	szFormat[30];
-    static char szBuffer[50];
-    const char	*pszHemisphere = NULL;
-    double	dfRound;
-    int		i;
-
-    dfRound = 0.5/60;
-    for( i = 0; i < nPrecision; i++ )
-        dfRound = dfRound * 0.1;
-
-    nDegrees = (int) ABS(dfAngle);
-    nMinutes = (int) ((ABS(dfAngle) - nDegrees) * 60 + dfRound);
-    dfSeconds = ABS((ABS(dfAngle) * 3600 - nDegrees*3600 - nMinutes*60));
-
-    if( EQUAL(pszAxis,"Long") && dfAngle < 0.0 )
-        pszHemisphere = "W";
-    else if( EQUAL(pszAxis,"Long") )
-        pszHemisphere = "E";
-    else if( dfAngle < 0.0 )
-        pszHemisphere = "S";
-    else
-        pszHemisphere = "N";
-
-    sprintf( szFormat, "%%3dd%%2d\'%%%d.%df\"%s",
-             nPrecision+3, nPrecision, pszHemisphere );
-    sprintf( szBuffer, szFormat, nDegrees, nMinutes, dfSeconds );
-
-    return( szBuffer );
-}
-
-/************************************************************************/
-/*                           GTIFPrintDefn()                            */
-/*                                                                      */
-/*      Report the contents of a GTIFDefn structure ... mostly for      */
-/*      debugging.                                                      */
-/************************************************************************/
-
-void GTIFPrintDefn( GTIFDefn * psDefn, FILE * fp )
-
-{
-/* -------------------------------------------------------------------- */
-/*      Get the PCS name if possible.                                   */
-/* -------------------------------------------------------------------- */
-    if( psDefn->PCS != KvUserDefined )
-    {
-        char	*pszPCSName = NULL;
-    
-        GTIFGetPCSInfo( psDefn->PCS, &pszPCSName, NULL, NULL, NULL );
-        if( pszPCSName == NULL )
-            pszPCSName = CPLStrdup("name unknown");
-        
-        fprintf( fp, "PCS = %d (%s)\n", psDefn->PCS, pszPCSName );
-        CPLFree( pszPCSName );
-    }
-
-/* -------------------------------------------------------------------- */
-/*	Dump the projection code if possible.				*/
-/* -------------------------------------------------------------------- */
-    if( psDefn->ProjCode != KvUserDefined )
-    {
-        char	*pszTRFName = NULL;
-
-        GTIFGetProjTRFInfo( psDefn->ProjCode, &pszTRFName, NULL, NULL );
-        if( pszTRFName == NULL )
-            pszTRFName = CPLStrdup("");
-                
-        fprintf( fp, "Projection = %d (%s)\n",
-                 psDefn->ProjCode, pszTRFName );
-
-        CPLFree( pszTRFName );
-    }
-
-/* -------------------------------------------------------------------- */
-/*      Try to dump the projection method name, and parameters if possible.*/
-/* -------------------------------------------------------------------- */
-    if( psDefn->CTProjection != KvUserDefined )
-    {
-        char	*pszName = GTIFValueName(ProjCoordTransGeoKey,
-                                         psDefn->CTProjection);
-        int     i;
-
-        if( pszName == NULL )
-            pszName = "(unknown)";
-            
-        fprintf( fp, "Projection Method: %s\n", pszName );
-
-        for( i = 0; i < psDefn->nParms; i++ )
-        {
-            if( psDefn->ProjParmId[i] == 0 )
-                continue;
-
-            pszName = GTIFKeyName((geokey_t) psDefn->ProjParmId[i]);
-            if( pszName == NULL )
-                pszName = "(unknown)";
-
-            if( i < 4 )
-            {
-                char	*pszAxisName;
-                
-                if( strstr(pszName,"Long") != NULL )
-                    pszAxisName = "Long";
-                else if( strstr(pszName,"Lat") != NULL )
-                    pszAxisName = "Lat";
-                else
-                    pszAxisName = "?";
-                
-                fprintf( fp, "   %s: %f (%s)\n",
-                         pszName, psDefn->ProjParm[i],
-                         GTIFDecToDMS( psDefn->ProjParm[i], pszAxisName, 2 ) );
-            }
-            else if( i == 4 )
-                fprintf( fp, "   %s: %f\n", pszName, psDefn->ProjParm[i] );
-            else
-                fprintf( fp, "   %s: %f m\n", pszName, psDefn->ProjParm[i] );
-        }
-    }
-
-/* -------------------------------------------------------------------- */
-/*      Report the GCS name, and number.                                */
-/* -------------------------------------------------------------------- */
-    if( psDefn->GCS != KvUserDefined )
-    {
-        char	*pszName = NULL;
-
-        GTIFGetGCSInfo( psDefn->GCS, &pszName, NULL, NULL, NULL );
-        if( pszName == NULL )
-            pszName = CPLStrdup("(unknown)");
-        
-        fprintf( fp, "GCS: %d/%s\n", psDefn->GCS, pszName );
-        CPLFree( pszName );
-    }
-
-/* -------------------------------------------------------------------- */
-/*      Report the datum name.                                          */
-/* -------------------------------------------------------------------- */
-    if( psDefn->Datum != KvUserDefined )
-    {
-        char	*pszName = NULL;
-
-        GTIFGetDatumInfo( psDefn->Datum, &pszName, NULL );
-        if( pszName == NULL )
-            pszName = CPLStrdup("(unknown)");
-        
-        fprintf( fp, "Datum: %d/%s\n", psDefn->Datum, pszName );
-        CPLFree( pszName );
-    }
-
-/* -------------------------------------------------------------------- */
-/*      Report the ellipsoid.                                           */
-/* -------------------------------------------------------------------- */
-    if( psDefn->Ellipsoid != KvUserDefined )
-    {
-        char	*pszName = NULL;
-
-        GTIFGetEllipsoidInfo( psDefn->Ellipsoid, &pszName, NULL, NULL );
-        if( pszName == NULL )
-            pszName = CPLStrdup("(unknown)");
-        
-        fprintf( fp, "Ellipsoid: %d/%s (%.2f,%.2f)\n",
-                 psDefn->Ellipsoid, pszName,
-                 psDefn->SemiMajor, psDefn->SemiMinor );
-        CPLFree( pszName );
-    }
-    
-/* -------------------------------------------------------------------- */
-/*      Report the prime meridian.                                      */
-/* -------------------------------------------------------------------- */
-    if( psDefn->PM != KvUserDefined )
-    {
-        char	*pszName = NULL;
-
-        GTIFGetPMInfo( psDefn->PM, &pszName, NULL );
-
-        if( pszName == NULL )
-            pszName = CPLStrdup("(unknown)");
-        
-        fprintf( fp, "Prime Meridian: %d/%s (%f/%s)\n",
-                 psDefn->PM, pszName,
-                 psDefn->PMLongToGreenwich,
-                 GTIFDecToDMS( psDefn->PMLongToGreenwich, "Long", 2 ) );
-        CPLFree( pszName );
-    }
-
-/* -------------------------------------------------------------------- */
-/*      Report the projection units of measure (currently just          */
-/*      linear).                                                        */
-/* -------------------------------------------------------------------- */
-    if( psDefn->UOMLength != KvUserDefined )
-    {
-        char	*pszName = NULL;
-
-        GTIFGetUOMLengthInfo( psDefn->UOMLength, &pszName, NULL );
-        if( pszName == NULL )
-            pszName = CPLStrdup( "(unknown)" );
-        
-        fprintf( fp, "Projection Linear Units: %d/%s (%fm)\n",
-                 psDefn->UOMLength, pszName, psDefn->UOMLengthInMeters );
-        CPLFree( pszName );
-    }
-
-    CSVDeaccess( NULL );
-}
-
-/************************************************************************/
-/*                           GTIFFreeMemory()                           */
-/*                                                                      */
-/*      Externally visible function to free memory allocated within     */
-/*      geo_normalize.c.                                                */
-/************************************************************************/
-
-void GTIFFreeMemory( char * pMemory )
-
-{
-    if( pMemory != NULL )
-        VSIFree( pMemory );
-}
-
-/************************************************************************/
-/*                          GTIFDeaccessCSV()                           */
-/*                                                                      */
-/*      Free all cached CSV info.                                       */
-/************************************************************************/
-
-void GTIFDeaccessCSV()
-
-{
-    CSVDeaccess( NULL );
-}
diff --git a/src/tiff/geo_normalize.h b/src/tiff/geo_normalize.h
deleted file mode 100644
index 332b389..0000000
--- a/src/tiff/geo_normalize.h
+++ /dev/null
@@ -1,238 +0,0 @@
-/******************************************************************************
- * $Id: geo_normalize.h 4825 2006-08-16 13:01:53Z lubia $
- *
- * Project:  libgeotiff
- * Purpose:  Include file related to geo_normalize.c containing Code to
- *           normalize PCS and other composite codes in a GeoTIFF file.
- * Author:   Frank Warmerdam, warmerda at home.com
- *
- ******************************************************************************
- * Copyright (c) 1999, Frank Warmerdam
- *
- * 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 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- ******************************************************************************
- *
- * $Log$
- * Revision 1.12  2005/08/26 16:08:14  fwarmerdam
- * Include void in empty argument list for prototype.
- *
- * Revision 1.11  2004/02/03 17:19:50  warmerda
- * export GTIFAngleToDD() - used by GDAL mrsiddataset.cpp
- *
- * Revision 1.10  2003/01/15 04:39:16  warmerda
- * Added GTIFDeaccessCSV
- *
- * Revision 1.9  2003/01/15 03:37:40  warmerda
- * added GTIFFreeMemory()
- *
- * Revision 1.8  2002/11/28 22:27:42  warmerda
- * preliminary upgrade to EPSG 6.2.2 tables
- *
- * Revision 1.7  1999/09/17 00:55:26  warmerda
- * added GTIFGetUOMAngleInfo(), and UOMAngle in GTIFDefn
- *
- * Revision 1.6  1999/05/04 03:13:42  warmerda
- * Added prototype
- *
- * Revision 1.5  1999/04/29 23:02:55  warmerda
- * added docs, and MapSys related stuff
- *
- * Revision 1.4  1999/03/18 21:35:19  geotiff
- * Added PROJ.4 related stuff
- *
- * Revision 1.3  1999/03/17 20:44:04  geotiff
- * added CPL_DLL related support
- *
- * Revision 1.2  1999/03/10 18:24:06  geotiff
- * corrected to use int'
- *
- */
-
-#ifndef GEO_NORMALIZE_H_INCLUDED
-#define GEO_NORMALIZE_H_INCLUDED
-
-#include <stdio.h>
-#include "geotiff.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * \file geo_normalize.h
- *
- * Include file for extended projection definition normalization api.
- */
-    
-#define MAX_GTIF_PROJPARMS 	10
-
-/**
- * Holds a definition of a coordinate system in normalized form.
- */
-
-typedef struct {
-    /** From GTModelTypeGeoKey tag.  Can have the values ModelTypeGeographic
-        or ModelTypeProjected. */
-    short	Model;
-
-    /** From ProjectedCSTypeGeoKey tag.  For example PCS_NAD27_UTM_zone_3N.*/
-    short	PCS;
-
-    /** From GeographicTypeGeoKey tag.  For example GCS_WGS_84 or
-        GCS_Voirol_1875_Paris.  Includes datum and prime meridian value. */
-    short	GCS;	      
-
-    /** From ProjLinearUnitsGeoKey.  For example Linear_Meter. */
-    short	UOMLength;
-
-    /** One UOMLength = UOMLengthInMeters meters. */
-    double	UOMLengthInMeters;
-
-    /** The angular units of the GCS. */
-    short       UOMAngle;
-
-    /** One UOMAngle = UOMLengthInDegrees degrees. */
-    double      UOMAngleInDegrees;
-    
-    /** Datum from GeogGeodeticDatumGeoKey tag. For example Datum_WGS84 */
-    short	Datum;
-
-    /** Prime meridian from GeogPrimeMeridianGeoKey.  For example PM_Greenwich
-        or PM_Paris. */
-    short	PM;
-
-    /** Decimal degrees of longitude between this prime meridian and
-        Greenwich.  Prime meridians to the west of Greenwich are negative. */
-    double	PMLongToGreenwich;
-
-    /** Ellipsoid identifier from GeogELlipsoidGeoKey.  For example
-        Ellipse_Clarke_1866. */
-    short	Ellipsoid;
-
-    /** The length of the semi major ellipse axis in meters. */
-    double	SemiMajor;
-
-    /** The length of the semi minor ellipse axis in meters. */
-    double	SemiMinor;
-
-    /** Projection id from ProjectionGeoKey.  For example Proj_UTM_11S. */
-    short	ProjCode;
-
-    /** EPSG identifier for underlying projection method.  From the EPSG
-        TRF_METHOD table.  */
-    short	Projection;
-
-    /** GeoTIFF identifier for underlying projection method.  While some of
-      these values have corresponding vlaues in EPSG (Projection field),
-      others do not.  For example CT_TransverseMercator. */
-    short	CTProjection;   
-
-    /** Number of projection parameters in ProjParm and ProjParmId. */
-    int		nParms;
-
-    /** Projection parameter value.  The identify of this parameter
-        is established from the corresponding entry in ProjParmId.  The
-        value will be measured in meters, or decimal degrees if it is a
-        linear or angular measure. */
-    double	ProjParm[MAX_GTIF_PROJPARMS];
-
-    /** Projection parameter identifier.  For example ProjFalseEastingGeoKey.
-        The value will be 0 for unused table entries. */
-    int		ProjParmId[MAX_GTIF_PROJPARMS]; /* geokey identifier,
-                                                   eg. ProjFalseEastingGeoKey*/
-
-    /** Special zone map system code (MapSys_UTM_South, MapSys_UTM_North,
-        MapSys_State_Plane or KvUserDefined if none apply. */
-    int		MapSys;
-
-    /** UTM, or State Plane Zone number, zero if not known. */
-    int		Zone;
-
-} GTIFDefn;
-
-int CPL_DLL GTIFGetPCSInfo( int nPCSCode, char **ppszEPSGName,
-                            short *pnProjOp, 
-                            short *pnUOMLengthCode, short *pnGeogCS );
-int CPL_DLL GTIFGetProjTRFInfo( int nProjTRFCode,
-                                char ** ppszProjTRFName,
-                                short * pnProjMethod,
-                                double * padfProjParms );
-int CPL_DLL GTIFGetGCSInfo( int nGCSCode, char **ppszName,
-                            short *pnDatum, short *pnPM, short *pnUOMAngle );
-int CPL_DLL GTIFGetDatumInfo( int nDatumCode, char **ppszName,
-                              short * pnEllipsoid );
-int CPL_DLL GTIFGetEllipsoidInfo( int nEllipsoid, char ** ppszName,
-                                  double * pdfSemiMajor,
-                                  double * pdfSemiMinor );
-int CPL_DLL GTIFGetPMInfo( int nPM, char **ppszName,
-                           double * pdfLongToGreenwich );
-
-double CPL_DLL GTIFAngleStringToDD( const char *pszAngle, int nUOMAngle );
-int CPL_DLL GTIFGetUOMLengthInfo( int nUOMLengthCode,
-                                  char **ppszUOMName,
-                                  double * pdfInMeters );
-int CPL_DLL GTIFGetUOMAngleInfo( int nUOMAngleCode,
-                                 char **ppszUOMName,
-                                 double * pdfInDegrees );
-double CPL_DLL GTIFAngleToDD( double dfAngle, int nUOMAngle );
-    
-
-/* this should be used to free strings returned by GTIFGet... funcs */
-void CPL_DLL GTIFFreeMemory( char * );
-void CPL_DLL GTIFDeaccessCSV( void );
-
-int CPL_DLL GTIFGetDefn( GTIF *psGTIF, GTIFDefn * psDefn );
-void CPL_DLL GTIFPrintDefn( GTIFDefn *, FILE * );
-void CPL_DLL GTIFFreeDefn( GTIF * );
-
-void CPL_DLL SetCSVFilenameHook( const char *(*CSVFileOverride)(const char *) );
-
-const char CPL_DLL *GTIFDecToDMS( double, const char *, int );
-
-/*
- * These are useful for recognising UTM and State Plane, with or without
- * CSV files being found.
- */
-
-#define MapSys_UTM_North	-9001
-#define MapSys_UTM_South	-9002
-#define MapSys_State_Plane_27	-9003
-#define MapSys_State_Plane_83	-9004
-
-int CPL_DLL   GTIFMapSysToPCS( int MapSys, int Datum, int nZone );
-int CPL_DLL   GTIFMapSysToProj( int MapSys, int nZone );
-int CPL_DLL   GTIFPCSToMapSys( int PCSCode, int * pDatum, int * pZone );
-int CPL_DLL   GTIFProjToMapSys( int ProjCode, int * pZone );
-
-/*
- * These are only useful if using libgeotiff with libproj (PROJ.4+).
- */
-char CPL_DLL *GTIFGetProj4Defn( GTIFDefn * );
-int  CPL_DLL  GTIFProj4ToLatLong( GTIFDefn *, int, double *, double * );
-int  CPL_DLL  GTIFProj4FromLatLong( GTIFDefn *, int, double *, double * );
-
-#if defined(HAVE_LIBPROJ) && defined(HAVE_PROJECTS_H)
-#  define HAVE_GTIFPROJ4
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-    
-#endif /* ndef GEO_NORMALIZE_H_INCLUDED */
diff --git a/src/tiff/geo_print.c b/src/tiff/geo_print.c
deleted file mode 100644
index d8e1c1b..0000000
--- a/src/tiff/geo_print.c
+++ /dev/null
@@ -1,517 +0,0 @@
-/**********************************************************************
- *
- *  geo_print.c  -- Key-dumping routines for GEOTIFF files.
- *
- *    Written By: Niles D. Ritter.
- *
- *  copyright (c) 1995   Niles D. Ritter
- *
- *  Permission granted to use this software, so long as this copyright
- *  notice accompanies any products derived therefrom.
- *
- *  Revision History;
- *
- *    20 June,  1995      Niles D. Ritter      New
- *     7 July,  1995      NDR                  Fix indexing
- *    27 July,  1995      NDR                  Added Import utils
- *    28 July,  1995      NDR                  Made parser more strict.
- *    29  Sep,  1995      NDR                  Fixed matrix printing.
- *
- * $Log$
- * Revision 1.9  2004/10/19 14:24:09  fwarmerdam
- * dynamically allocate tag list so large lists work: Oliver Colin
- *
- * Revision 1.8  2004/04/27 21:31:31  warmerda
- * avoid crash if gt_tif is NULL
- *
- * Revision 1.7  2003/10/21 19:19:53  warmerda
- * fixed bug with large message texts sometimes causing a crash
- *
- * Revision 1.6  2003/09/23 18:27:30  warmerda
- * fixed bug with long datum names: bug 399
- *
- * Revision 1.5  2003/07/08 17:31:30  warmerda
- * cleanup various warnings
- *
- * Revision 1.4  2002/05/31 14:27:26  warmerda
- * added escaping in metadata for string key values
- *
- * Revision 1.3  1999/05/04 03:14:35  warmerda
- * avoid warnings
- *
- * Revision 1.2  1999/05/03 17:50:31  warmerda
- * avoid warnings on IRIX
- *
- *
- **********************************************************************/
-
-#include "geotiff.h"   /* public interface        */
-#include "geo_tiffp.h" /* external TIFF interface */
-#include "geo_keyp.h"  /* private interface       */
-#include "geokeys.h"
-
-#include <stdio.h>     /* for sprintf             */
-
-#define FMT_GEOTIFF "Geotiff_Information:"
-#define FMT_VERSION "Version: %hd"
-#define FMT_REV     "Key_Revision: %1hd.%hd"
-#define FMT_TAGS    "Tagged_Information:"
-#define FMT_TAGEND  "End_Of_Tags."
-#define FMT_KEYS    "Keyed_Information:"
-#define FMT_KEYEND  "End_Of_Keys."
-#define FMT_GEOEND  "End_Of_Geotiff."
-#define FMT_DOUBLE  "%-17.9g"
-#define FMT_SHORT   "%-11hd"
-
-static void DefaultPrint(char *string, void *aux);
-static void PrintKey(GeoKey *key, GTIFPrintMethod print,void *aux);
-static void PrintGeoTags(GTIF *gtif,GTIFReadMethod scan,void *aux);
-static void PrintTag(int tag, int nrows, double *data, int ncols, 
-					GTIFPrintMethod print,void *aux);
-static void DefaultRead(char *string, void *aux);
-static int  ReadKey(GTIF *gt, GTIFReadMethod scan, void *aux);
-static int  ReadTag(GTIF *gt,GTIFReadMethod scan,void *aux);
-
-/*
- * Print off the directory info, using whatever method is specified
- * (defaults to fprintf if null). The "aux" parameter is provided for user
- * defined method for passing parameters or whatever.
- *
- * The output format is a "GeoTIFF meta-data" file, which may be
- * used to import information with the GTIFFImport() routine.
- */
- 
-void GTIFPrint(GTIF *gtif, GTIFPrintMethod print,void *aux)
-{
-    int i;
-    int numkeys = gtif->gt_num_keys;
-    GeoKey *key = gtif->gt_keys;
-    char message[1024];
-	
-    if (!print) print = (GTIFPrintMethod) &DefaultPrint;
-    if (!aux) aux=stdout;	
-
-    sprintf(message,FMT_GEOTIFF "\n"); 
-    print(message,aux);
-    sprintf(message, "Version: %hd" ,gtif->gt_version);
-    sprintf(message, FMT_VERSION,gtif->gt_version);
-    print("   ",aux); print(message,aux); print("\n",aux);
-    sprintf(message, FMT_REV,gtif->gt_rev_major,
-            gtif->gt_rev_minor); 
-    print("   ",aux); print(message,aux); print("\n",aux);
-
-    sprintf(message,"   %s\n",FMT_TAGS); print(message,aux);
-    PrintGeoTags(gtif,print,aux);
-    sprintf(message,"      %s\n",FMT_TAGEND); print(message,aux);
-
-    sprintf(message,"   %s\n",FMT_KEYS); print(message,aux);
-    for (i=0; i<numkeys; i++)
-        PrintKey(++key,print,aux);
-    sprintf(message,"      %s\n",FMT_KEYEND); print(message,aux);
-
-    sprintf(message,"   %s\n",FMT_GEOEND); print(message,aux);
-}
-
-static void PrintGeoTags(GTIF *gt, GTIFPrintMethod print,void *aux)
-{
-	double *data;
-	int count;
-	tiff_t *tif=gt->gt_tif;
-
-        if( tif == NULL )
-            return;
-
-	if ((gt->gt_methods.get)(tif, GTIFF_TIEPOINTS, &count, &data ))
-		PrintTag(GTIFF_TIEPOINTS,count/3, data, 3, print, aux);
-	if ((gt->gt_methods.get)(tif, GTIFF_PIXELSCALE, &count, &data ))
-		PrintTag(GTIFF_PIXELSCALE,count/3, data, 3, print, aux);
-	if ((gt->gt_methods.get)(tif, GTIFF_TRANSMATRIX, &count, &data ))
-		PrintTag(GTIFF_TRANSMATRIX,count/4, data, 4, print, aux);
-}
-
-static void PrintTag(int tag, int nrows, double *dptr, int ncols, 
-					GTIFPrintMethod print,void *aux)
-{
-	int i,j;
-	double *data=dptr;
-        char message[1024];
-
-	print("      ",aux);
-	print(GTIFTagName(tag),aux);
-	sprintf(message," (%d,%d):\n",nrows,ncols);
-	print(message,aux);
-	for (i=0;i<nrows;i++)
-	{
-		print("         ",aux);
-		for (j=0;j<ncols;j++)
-		{
-			sprintf(message,FMT_DOUBLE,*data++);
-			print(message,aux);
-		}
-		print("\n",aux);
-	}
-	_GTIFFree(dptr); /* free up the allocated memory */
-}
-
-
-static void PrintKey(GeoKey *key, GTIFPrintMethod print, void *aux)
-{
-    char *data;
-    geokey_t keyid = (geokey_t) key->gk_key;
-    int count = key->gk_count;
-    int vals_now,i;
-    pinfo_t *sptr;
-    double *dptr;
-    char message[40];
-
-    print("      ",aux);
-    print(GTIFKeyName(keyid),aux);
-	
-    sprintf(message," (%s,%d): ",GTIFTypeName(key->gk_type),count);
-    print(message,aux);
-	
-    if (key->gk_type==TYPE_SHORT && count==1)
-        data = (char *)&key->gk_data;
-    else
-        data = key->gk_data;
-		
-    switch (key->gk_type)
-    {
-      case TYPE_ASCII: 
-      {
-          int  in_char, out_char;
-
-          print("\"",aux);
-
-          in_char = 0;
-          out_char = 0;
-          while( in_char < count-1 )
-          {
-              char ch = ((char *) data)[in_char++];
-
-              if( ch == '\n' )
-              {
-                  message[out_char++] = '\\';
-                  message[out_char++] = 'n';
-              }
-              else if( ch == '\\' )
-              {
-                  message[out_char++] = '\\';
-                  message[out_char++] = '\\';
-              }
-              else
-                  message[out_char++] = ch;
-
-              /* flush message if buffer full */
-              if( out_char >= sizeof(message)-3 )
-              {
-                  message[out_char] = '\0';
-                  print(message,aux);
-                  out_char = 0;
-              }
-          }
-
-          message[out_char]='\0';
-          print(message,aux);
-
-          print("\"\n",aux);
-      }
-      break;
-        
-      case TYPE_DOUBLE: 
-        for (dptr = (double *)data; count > 0; count-= vals_now)
-        {
-            vals_now = count > 3? 3: count;
-            for (i=0; i<vals_now; i++,dptr++)
-            {
-                sprintf(message,FMT_DOUBLE ,*dptr);
-                print(message,aux);
-            }
-            print("\n",aux);
-        }
-        break;
-        
-      case TYPE_SHORT: 
-        sptr = (pinfo_t *)data;
-        if (count==1)
-        {
-            print( GTIFValueName(keyid,*sptr), aux );
-            print( "\n", aux );
-        }
-        else
-            for (; count > 0; count-= vals_now)
-            {
-                vals_now = count > 3? 3: count;
-                for (i=0; i<vals_now; i++,sptr++)
-                {
-                    sprintf(message,FMT_SHORT,*sptr);
-                    print(message,aux);
-                }
-                print("\n",aux);
-            }
-        break;
-        
-      default: 
-        sprintf(message, "Unknown Type (%d)\n",key->gk_type);
-        print(message,aux);
-        break;
-    }
-}
-
-static void DefaultPrint(char *string, void *aux)
-{
-    /* Pretty boring */
-    fprintf((FILE *)aux,string);
-}
-
-
-/*
- *  Importing metadata file
- */
-
-/*
- * Import the directory info, using whatever method is specified
- * (defaults to fscanf if null). The "aux" parameter is provided for user
- * defined method for passing file or whatever.
- *
- * The input format is a "GeoTIFF meta-data" file, which may be
- * generated by the GTIFFPrint() routine.
- */
- 
-int GTIFImport(GTIF *gtif, GTIFReadMethod scan,void *aux)
-{
-    int status;
-    char message[1024];
-	
-    if (!scan) scan = (GTIFReadMethod) &DefaultRead;
-    if (!aux) aux=stdin;	
-	
-    scan(message,aux);
-    if (strncmp(message,FMT_GEOTIFF,8)) return 0; 
-    scan(message,aux);
-    if (!sscanf(message,FMT_VERSION,&gtif->gt_version)) return 0;
-    scan(message,aux);
-    if (sscanf(message,FMT_REV,&gtif->gt_rev_major,
-               &gtif->gt_rev_minor) !=2) return 0;
-
-    scan(message,aux);
-    if (strncmp(message,FMT_TAGS,8)) return 0;
-    while ((status=ReadTag(gtif,scan,aux))>0);
-    if (status < 0) return 0;
-
-    scan(message,aux);
-    if (strncmp(message,FMT_KEYS,8)) return 0;
-    while ((status=ReadKey(gtif,scan,aux))>0);
-	
-    return (status==0); /* success */
-}
-
-static int StringError(char *string)
-{
-    fprintf(stderr,"Parsing Error at \'%s\'\n",string);
-    return -1;
-}
-
-#define SKIPWHITE(vptr) \
-  while (*vptr && (*vptr==' '||*vptr=='\t')) vptr++
-#define FINDCHAR(vptr,c) \
-  while (*vptr && *vptr!=(c)) vptr++
-
-static int ReadTag(GTIF *gt,GTIFReadMethod scan,void *aux)
-{
-    int i,j,tag;
-    char *vptr;
-    char tagname[100];
-    double *data,*dptr;
-    int count,nrows,ncols,num;
-    char message[1024];
-
-    scan(message,aux);
-    if (!strncmp(message,FMT_TAGEND,8)) return 0;
-
-    num=sscanf(message,"%[^( ] (%d,%d):\n",tagname,&nrows,&ncols);
-    if (num!=3) return StringError(message);
-	
-    tag = GTIFTagCode(tagname);
-    if (tag < 0) return StringError(tagname);
-
-    count = nrows*ncols;
-
-    data = (double *) _GTIFcalloc(count * sizeof(double));
-    dptr = data;
-	
-    for (i=0;i<nrows;i++)
-    {
-        scan(message,aux);
-        vptr = message;
-        for (j=0;j<ncols;j++)
-        {
-            if (!sscanf(vptr,"%lg",dptr++))
-                return StringError(vptr);
-            FINDCHAR(vptr,' ');
-            SKIPWHITE(vptr);
-        }
-    }	
-    (gt->gt_methods.set)(gt->gt_tif, (pinfo_t) tag, count, data );	
-
-    _GTIFFree( data );
-
-    return 1;
-}
-
-
-static int ReadKey(GTIF *gt, GTIFReadMethod scan, void *aux)
-{
-    tagtype_t ktype;
-    int count,outcount;
-    int vals_now,i;
-    geokey_t key;
-    int icode;
-    pinfo_t code;
-    short  *sptr;
-    char name[1000];
-    char type[20];
-    double data[100];
-    double *dptr;
-    char *vptr;
-    int num;
-    char message[2048];
-
-    scan(message,aux); 
-    if (!strncmp(message,FMT_KEYEND,8)) return 0;
-
-    num=sscanf(message,"%[^( ] (%[^,],%d):\n",name,type,&count);
-    if (num!=3) return StringError(message);
-
-    vptr = message;
-    FINDCHAR(vptr,':'); 
-    if (!*vptr) return StringError(message);
-    vptr+=2;
-
-    if( GTIFKeyCode(name) < 0 )
-        return StringError(name);
-    else
-        key = (geokey_t) GTIFKeyCode(name);
-
-    if( GTIFTypeCode(type) < 0 )
-        return StringError(type);
-    else
-        ktype = (tagtype_t) GTIFTypeCode(type);
-
-    /* skip white space */
-    SKIPWHITE(vptr);
-    if (!*vptr) return StringError(message);
-			
-    switch (ktype)
-    {
-      case TYPE_ASCII: 
-      {
-          char *cdata;
-          int out_char = 0;
-
-          FINDCHAR(vptr,'"');
-          if (!*vptr) return StringError(message);
-
-          cdata = (char *) _GTIFcalloc( count+1 );
-
-          vptr++;
-          while( out_char < count-1 )
-          {
-              if( *vptr == '\0' )
-                  break;
-
-              else if( vptr[0] == '\\' && vptr[1] == 'n' )
-              {
-                  cdata[out_char++] = '\n';
-                  vptr += 2;
-              }
-              else if( vptr[0] == '\\' && vptr[1] == '\\' )
-              {
-                  cdata[out_char++] = '\\';
-                  vptr += 2;
-              }
-              else
-                  cdata[out_char++] = *(vptr++);
-          }
-
-          if( out_char < count-1 ) return StringError(message);
-          if( *vptr != '"' ) return StringError(message);
-
-          cdata[count-1] = '\0';
-          GTIFKeySet(gt,key,ktype,count,cdata);
-
-          _GTIFFree( cdata );
-      }
-      break;
-        
-      case TYPE_DOUBLE: 
-        outcount = count;
-        for (dptr = data; count > 0; count-= vals_now)
-        {
-            vals_now = count > 3? 3: count;
-            for (i=0; i<vals_now; i++,dptr++)
-            {
-                if (!sscanf(vptr,"%lg" ,dptr))
-                    StringError(vptr);
-                FINDCHAR(vptr,' ');
-                SKIPWHITE(vptr);
-            }
-            if (vals_now<count)
-            {
-                scan(message,aux);
-                vptr = message;
-            }
-        }
-        if (outcount==1)
-            GTIFKeySet(gt,key,ktype,outcount,data[0]);
-        else
-            GTIFKeySet(gt,key,ktype,outcount,data);
-        break;
-        
-      case TYPE_SHORT: 
-        if (count==1)
-        {
-            icode = GTIFValueCode(key,vptr);
-            if (icode < 0) return StringError(vptr);
-            code = (pinfo_t) icode;
-            GTIFKeySet(gt,key,ktype,count,code);
-        }
-        else  /* multi-valued short - no such thing yet */
-        {
-            sptr = (short *)data;
-            outcount = count;
-            for (; count > 0; count-= vals_now)
-            {
-                vals_now = count > 3? 3: count;
-                for (i=0; i<vals_now; i++,sptr++)
-                {
-                    int		work_int;
-
-                    /* note: FMT_SHORT (%11hd) not supported on IRIX */
-                    sscanf(message,"%11d",&work_int);
-                    *sptr = (short) work_int;
-                    scan(message,aux);
-                }
-                if (vals_now<count)
-                {
-                    scan(message,aux);
-                    vptr = message;
-                }
-            }
-            GTIFKeySet(gt,key,ktype,outcount,sptr);			
-        }
-        break;
-        
-      default: 
-        return -1;
-    }
-    return 1;
-}
-
-
-static void DefaultRead(char *string, void *aux)
-{
-	/* Pretty boring */
-	fscanf((FILE *)aux,"%[^\n]\n",string);
-}
-
diff --git a/src/tiff/geo_set.c b/src/tiff/geo_set.c
deleted file mode 100644
index 86d1d63..0000000
--- a/src/tiff/geo_set.c
+++ /dev/null
@@ -1,262 +0,0 @@
-/**********************************************************************
- *
- *  geo_set.c  -- Public routines for GEOTIFF GeoKey access.
- *
- *    Written By: Niles D. Ritter.
- *
- *  copyright (c) 1995   Niles D. Ritter
- *
- *  Permission granted to use this software, so long as this copyright
- *  notice accompanies any products derived therefrom.
- *
- * $Log$
- * Revision 1.11  2004/04/27 21:32:33  warmerda
- * reformat for clarity
- *
- * Revision 1.10  2003/07/08 17:31:30  warmerda
- * cleanup various warnings
- *
- * Revision 1.9  2003/01/15 03:37:19  warmerda
- * avoid warning
- *
- * Revision 1.8  2002/09/27 13:05:33  warmerda
- * allow dynamic set/delete of ASCII tags. ASCIIPARAMS now kept split
- *
- * Revision 1.7  2001/05/02 16:48:22  warmerda
- * fixed a couple bugs in delete code
- *
- * Revision 1.6  2001/05/02 13:54:34  warmerda
- * updated geo_set.c to support deleting tags
- *
- * Revision 1.5  1999/05/04 03:09:33  warmerda
- * avoid warnings
- *
- * Revision 1.4  1999/05/03 17:50:31  warmerda
- * avoid warnings on IRIX
- *
- * Revision 1.3  1999/04/28 19:59:38  warmerda
- * added some doxygen style documentation
- *
- * Revision 1.2  1999/03/11 17:39:38  geotiff
- * Added fix for case where a key is being overwritten.
- *
- **********************************************************************/
-
-#include "geotiff.h"   /* public interface        */
-#include "geo_tiffp.h" /* external TIFF interface */
-#include "geo_keyp.h"  /* private interface       */
-
-#include <assert.h>
-
-/**
-This function writes a geokey_t value to a GeoTIFF file.
-
- at param gtif The geotiff information handle from GTIFNew().
-
- at param keyID The geokey_t name (such as ProjectedCSTypeGeoKey).
-This must come from the list of legal geokey_t values
-(an enumeration) listed below.
-
- at param val The <b>val</b> argument is a pointer to the
-variable into which the value should be read.  The type of the variable
-varies depending on the geokey_t given.  While there is no ready mapping
-of geokey_t values onto types, in general code values are of type <i>short</i>,
-citations are strings, and everything else is of type <i>double</i>.  Note
-that pointer's to <i>int</i> should never be passed to GTIFKeyGet() for
-integer values as they will be shorts, and the int's may not be properly
-initialized (and will be grossly wrong on MSB systems).
-
- at param index Indicates how far into the list of values
-for this geokey to offset. Should normally be zero.
-
- at param count Indicates how many values
-to read.  At this time all keys except for strings have only one value,
-so <b>index</b> should be zero, and <b>count</b> should be one.<p>
-
-The <b>key</b> indicates the key name to be written to the
-file and should from the geokey_t enumeration 
-(eg. <tt>ProjectedCSTypeGeoKey</tt>).  The full list of possible geokey_t
-values can be found in geokeys.inc, or in the online documentation for
-GTIFKeyGet().<p>
-
-The <b>type</b> should be one of TYPE_SHORT, TYPE_ASCII, or TYPE_DOUBLE and
-will indicate the type of value being passed at the end of the argument
-list (the key value).  The <b>count</b> should be one except for strings
-when it should be the length of the string (or zero to for this to be
-computed internally).  As a special case a <b>count</b> of -1 can be
-used to request an existing key be deleted, in which no value is passed.<p>
-
-The actual value is passed at the end of the argument list, and should be
-a short, a double, or a char * value.  Note that short and double values
-are passed as is, not as pointers.<p>
-
-Note that key values aren't actually flushed to the file until
-GTIFWriteKeys() is called.  Till then 
-the new values are just kept with the GTIF structure.<p>
-
-<b>Example:</b><p>
-
-<pre>
-    GTIFKeySet(gtif, GTRasterTypeGeoKey, TYPE_SHORT, 1, 
-               RasterPixelIsArea);
-    GTIFKeySet(gtif, GTCitationGeoKey, TYPE_ASCII, 0, 
-               "UTM 11 North / NAD27" );
-</pre>
-
- */
-
-int GTIFKeySet(GTIF *gtif, geokey_t keyID, tagtype_t type, int count,...)
-{
-    va_list ap;
-    int index = gtif->gt_keyindex[ keyID ];
-    int newvalues = 0;
-    GeoKey *key;
-    char *data = NULL;
-    char *val = NULL;
-    pinfo_t sval;
-    double dval;
-
-    va_start(ap, count);
-    /* pass singleton keys by value */
-    if (count>1 && type!=TYPE_ASCII) 
-    {
-        val = va_arg(ap, char*);
-    }
-    else if( count == -1 )
-    {
-        /* delete the indicated tag */
-        va_end(ap);
-
-        if( index < 1 )
-            return 0;
-
-        if (gtif->gt_keys[index].gk_type == TYPE_ASCII)
-        {
-            _GTIFFree (gtif->gt_keys[index].gk_data);
-        }
-
-        while( index < gtif->gt_num_keys )
-        {
-            _GTIFmemcpy( gtif->gt_keys + index, 
-                         gtif->gt_keys + index + 1, 
-                         sizeof(GeoKey) );
-            gtif->gt_keyindex[gtif->gt_keys[index].gk_key] = index;
-            index++;
-        }
-
-        gtif->gt_num_keys--;
-        gtif->gt_nshorts -= sizeof(KeyEntry)/sizeof(pinfo_t);
-        gtif->gt_keyindex[keyID] = 0;
-        gtif->gt_flags |= FLAG_FILE_MODIFIED;
-
-        return 1;
-    }
-    else switch (type)
-    {
-      case TYPE_SHORT:  sval=(pinfo_t) va_arg(ap, int); val=(char *)&sval;     break;
-      case TYPE_DOUBLE: dval=va_arg(ap, dblparam_t); val=(char *)&dval;  break;
-      case TYPE_ASCII: 
-        val=va_arg(ap, char*);
-        count = strlen(val) + 1; /* force = string length */
-        break;
-      default:
-        assert( FALSE );
-        break;
-    }
-    va_end(ap);
-    
-    /* We assume here that there are no multi-valued SHORTS ! */
-    if (index)
-    {
-        /* Key already exists */
-        key = gtif->gt_keys+index;
-        if (type!=key->gk_type || count > key->gk_count)
-        {
-            /* need to reset data pointer */
-            key->gk_type = type;
-            key->gk_count = count;
-            key->gk_size = _gtiff_size[ type ];
-            newvalues = 1;
-        }
-    }
-    else
-    {
-        /* We need to create the key */
-        if (gtif->gt_num_keys == MAX_KEYS) return 0;
-        key = gtif->gt_keys + ++gtif->gt_num_keys;
-        index = gtif->gt_num_keys;
-        gtif->gt_keyindex[ keyID ] = index;
-        key->gk_key = keyID;
-        key->gk_type = type;
-        key->gk_count = count;
-        key->gk_size = _gtiff_size[ type ];
-        if (gtif->gt_keymin > keyID)  gtif->gt_keymin=keyID;
-        if (gtif->gt_keymax < keyID)  gtif->gt_keymax=keyID;
-        newvalues = 1;
-    }
-
-    if (newvalues)
-    {
-        switch (type)
-        {
-          case TYPE_SHORT:  
-            if (count > 1) return 0;
-            data = (char *)&key->gk_data; /* store value *in* data */
-            break;
-          case TYPE_DOUBLE:
-            key->gk_data = (char *)(gtif->gt_double + gtif->gt_ndoubles);
-            data = key->gk_data;
-            gtif->gt_ndoubles += count;
-            break;
-          case TYPE_ASCII:
-            break;
-          default:
-            va_end(ap);
-            return 0;
-        }
-        gtif->gt_nshorts += sizeof(KeyEntry)/sizeof(pinfo_t);
-    }
-
-    /* this fixes a bug where if a request is made to write a duplicate
-       key, we must initialize the data to a valid value.
-       Bryan Wells (bryan at athena.bangor.autometric.com) */
-        
-    else /* no new values, but still have something to write */
-    {
-        switch (type)
-        {
-          case TYPE_SHORT:  
-            if (count > 1) return 0;
-            data = (char *)&key->gk_data; /* store value *in* data */
-            break;
-          case TYPE_DOUBLE:
-            data = key->gk_data;
-            break;
-          case TYPE_ASCII:
-            break;
-          default:
-            return 0;
-        }
-    }
-        
-    switch (type)
-    {
-      case TYPE_ASCII:
-        /* throw away existing data and allocate room for new data */
-        if (key->gk_data != 0)
-        {
-            _GTIFFree(key->gk_data);
-        }
-        key->gk_data = (char *)_GTIFcalloc(count);
-        key->gk_count = count;
-        data = key->gk_data;
-        break;
-      default:
-        break;
-    }
-
-    _GTIFmemcpy(data, val, count*key->gk_size);
-    
-    gtif->gt_flags |= FLAG_FILE_MODIFIED;
-    return 1;
-}
diff --git a/src/tiff/geo_tiffp.c b/src/tiff/geo_tiffp.c
deleted file mode 100644
index 989227b..0000000
--- a/src/tiff/geo_tiffp.c
+++ /dev/null
@@ -1,140 +0,0 @@
-/**********************************************************************
- *
- *  geo_tiffp.c  Private TIFF interface module for GEOTIFF
- *
- *    This module implements the interface between the GEOTIFF
- *    tag parser and the TIFF i/o module. The current setup
- *    relies on the "libtiff" code, but if you use your own
- *    TIFF reader software, you may replace the module implementations
- *    here with your own calls. No "libtiff" dependencies occur
- *    anywhere else in this code.
- *
- **********************************************************************/
- 
-#include "geotiff.h"    /* public GTIFF interface */
-
-#include "geo_tiffp.h"  /* Private TIFF interface */
-#include "geo_keyp.h"   /* Private GTIFF interface */
-
-/* tiff size array global */
-gsize_t _gtiff_size[] = { 0, 1, 2, 4, 8, 1, 4, 8, 1, 2, 4, 1 };
-
-static int        _GTIFGetField (tiff_t *tif, pinfo_t tag, int *count, void *value );
-static int        _GTIFSetField (tiff_t *tif, pinfo_t tag, int  count, void *value );
-static tagtype_t  _GTIFTagType  (tiff_t *tif, pinfo_t tag);
-
-/*
- * Set up default TIFF handlers. 
- */
-void _GTIFSetDefaultTIFF(TIFFMethod *method)
-{
-	if (!method) return;
-	
-	method->get = _GTIFGetField;
-	method->set = _GTIFSetField;
-	method->type = _GTIFTagType;
-}
-
-gdata_t _GTIFcalloc(gsize_t size)
-{
-    gdata_t data=(gdata_t)_TIFFmalloc((tsize_t)size);
-	if (data) _TIFFmemset((tdata_t)data,0,(tsize_t)size);
-	return data;
-}
-
-gdata_t _GTIFrealloc(gdata_t ptr, gsize_t size)
-{
-    return( _TIFFrealloc((tdata_t)ptr, (tsize_t) size) );
-}
-
-void _GTIFmemcpy(gdata_t out,gdata_t in,gsize_t size)
-{
-	_TIFFmemcpy((tdata_t)out,(tdata_t)in,(tsize_t)size);
-}
-
-void _GTIFFree(gdata_t data)
-{
-	if (data) _TIFFfree((tdata_t)data);
-}
-
-
-
-/* returns the value of TIFF tag <tag>, or if
- * the value is an array, returns an allocated buffer
- * containing the values. Allocate a copy of the actual
- * buffer, sized up for updating.
- */
-static int _GTIFGetField (tiff_t *tif, pinfo_t tag, int *count, void *val )
-{
-	int status;
-	unsigned short scount=0;
-	char *tmp;
-	char *value;
-	gsize_t size = _gtiff_size[_GTIFTagType (tif,tag)];
-	
-	if (_GTIFTagType(tif,  tag) == TYPE_ASCII)
-	{
-		status = TIFFGetField((TIFF *)tif,tag,&tmp);
-		if (!status) return status;
-		scount = (unsigned short) (strlen(tmp)+1);
-	}
-	else status = TIFFGetField((TIFF *)tif,tag,&scount,&tmp);
-	if (!status) return status;
-	
-	*count = scount;
-
-	value = (char *)_GTIFcalloc( (scount+MAX_VALUES)*size);
-	if (!value) return 0;
-	
-	_TIFFmemcpy( value, tmp,  size * scount);
-	
-	*(char **)val = value;
-	return status;
-}
-
-/* 
- * Set a GeoTIFF TIFF field.
- */
-static int _GTIFSetField (tiff_t *tif, pinfo_t tag, int count, void *value )
-{
-	int status;
-	unsigned short scount = (unsigned short) count;
-
-	/* libtiff ASCII uses null-delimiter */
-	if (_GTIFTagType(tif,  tag) == TYPE_ASCII)
-		status = TIFFSetField((TIFF *)tif,tag,value);
-	else 
-		status = TIFFSetField((TIFF *)tif,tag,scount,value);
-	return status;
-}
-
-
-/*
- *  This routine is supposed to return the TagType of the <tag>
- *  TIFF tag. Unfortunately, "libtiff" does not provide this
- *  service by default, so we just have to "know" what type of tags
- *  we've got, and how many. We only define the ones Geotiff
- *  uses here, and others return UNKNOWN. The "tif" parameter
- *  is provided for those TIFF implementations that provide
- *  for tag-type queries.
- */
-static tagtype_t  _GTIFTagType  (tiff_t *tif, pinfo_t tag)
-{
-	tagtype_t ttype;
-
-	(void) tif; /* dummy reference */
-	
-	switch (tag)
-	{
-		case GTIFF_ASCIIPARAMS:    ttype=TYPE_ASCII; break;
-		case GTIFF_PIXELSCALE:
-		case GTIFF_TRANSMATRIX:
-		case GTIFF_TIEPOINTS:
-		case GTIFF_DOUBLEPARAMS:   ttype=TYPE_DOUBLE; break;
-		case GTIFF_GEOKEYDIRECTORY: ttype=TYPE_SHORT; break;
-		default: ttype = TYPE_UNKNOWN;
-	}
-	
-	return ttype;
-}
-
diff --git a/src/tiff/geo_tiffp.h b/src/tiff/geo_tiffp.h
deleted file mode 100644
index 57802f2..0000000
--- a/src/tiff/geo_tiffp.h
+++ /dev/null
@@ -1,114 +0,0 @@
-/**********************************************************************
- *
- *  geo_tiffp.h - Private interface for TIFF tag parsing.
- *
- *   Written by: Niles D. Ritter
- *
- *   This interface file encapsulates the interface to external TIFF
- *   file-io routines and definitions. The current configuration
- *   assumes that the "libtiff" module is used, but if you have your
- *   own TIFF reader, you may replace the definitions with your own
- *   here, and replace the implementations in geo_tiffp.c. No other
- *   modules have any explicit dependence on external TIFF modules.
- *
- *  Revision History;
- *
- *    20 June, 1995      Niles D. Ritter         New
- *    6 July,  1995      Niles D. Ritter         Fix prototypes
- *
- **********************************************************************/
-
-#ifndef __geo_tiffp_h_
-#define __geo_tiffp_h_
-
-/**********************************************************************
- *
- *                        Private includes
- *
- *   If you are not using libtiff and XTIFF, replace this include file
- *    with the appropriate one for your own TIFF parsing routines.
- *
- *   Revision History
- * 
- *      19 September 1995   ndr    Demoted Intergraph trans matrix.
- *
- **********************************************************************/
-
-#include "geotiff.h"
-#include "xtiffio.h"
-#include "cpl_serv.h"
-
-/*
- * dblparam_t is the type that a double precision
- * floating point value will have on the parameter
- * stack (when coerced by the compiler). You shouldn't
- * have to change this.
- */
-#ifdef applec
-typedef extended dblparam_t;
-#else
-typedef double dblparam_t;
-#endif
-
-
-/**********************************************************************
- *
- *                        Private defines
- *
- *   If you are not using "libtiff"/LIBXTIFF, replace these definitions
- *   with the appropriate definitions to access the geo-tags
- *
- **********************************************************************/
- 
-typedef unsigned short pinfo_t;    /* SHORT ProjectionInfo tag type */
-typedef TIFF    tiff_t;            /* TIFF file descriptor          */
-typedef tdata_t  gdata_t;          /* pointer to data */
-typedef tsize_t  gsize_t;          /* data allocation size */
- 
-#define GTIFF_GEOKEYDIRECTORY   TIFFTAG_GEOKEYDIRECTORY /* from xtiffio.h */
-#define GTIFF_DOUBLEPARAMS      TIFFTAG_GEODOUBLEPARAMS
-#define GTIFF_ASCIIPARAMS       TIFFTAG_GEOASCIIPARAMS
-#define GTIFF_PIXELSCALE        TIFFTAG_GEOPIXELSCALE
-#define GTIFF_TRANSMATRIX       TIFFTAG_GEOTRANSMATRIX
-#define GTIFF_INTERGRAPH_MATRIX TIFFTAG_INTERGRAPH_MATRIX
-#define GTIFF_TIEPOINTS         TIFFTAG_GEOTIEPOINTS
-#define GTIFF_LOCAL          0
-
-#if defined(__cplusplus)
-extern "C" {
-#endif
-
-/*
- * Method function pointer types
- */
-typedef int        (*GTGetFunction) (tiff_t *tif, pinfo_t tag, int *count, void *value );
-typedef int        (*GTSetFunction) (tiff_t *tif, pinfo_t tag, int  count, void *value );
-typedef tagtype_t  (*GTTypeFunction) (tiff_t *tif, pinfo_t tag);
-typedef struct     _TIFFMethod {
-	GTGetFunction get;
-	GTSetFunction set;
-	GTTypeFunction type;
-} TIFFMethod;
-
-/**********************************************************************
- *
- *               Protected Function Declarations  
- *
- *   These routines are exposed implementations, and should not
- *   be used by external GEOTIFF client programs.
- *
- **********************************************************************/
-
-extern gsize_t _gtiff_size[]; /* TIFF data sizes */
-extern void CPL_DLL _GTIFSetDefaultTIFF(TIFFMethod *method);
-extern gdata_t CPL_DLL _GTIFcalloc(gsize_t);
-extern gdata_t CPL_DLL _GTIFrealloc(gdata_t,gsize_t);
-extern void CPL_DLL _GTIFFree(gdata_t data);
-extern void CPL_DLL _GTIFmemcpy(gdata_t out,gdata_t in,gsize_t size);
-
-#if defined(__cplusplus)
-} 
-#endif
-
-
-#endif /* __geo_tiffp_h_ */
diff --git a/src/tiff/geo_trans.c b/src/tiff/geo_trans.c
deleted file mode 100644
index 6956277..0000000
--- a/src/tiff/geo_trans.c
+++ /dev/null
@@ -1,334 +0,0 @@
-/******************************************************************************
- * $Id: geo_trans.c 4825 2006-08-16 13:01:53Z lubia $
- *
- * Project:  libgeotiff
- * Purpose:  Code to abstract translation between pixel/line and PCS
- *           coordinates.
- * Author:   Frank Warmerdam, warmerda at home.com
- *
- ******************************************************************************
- * Copyright (c) 1999, Frank Warmerdam
- *
- * 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 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- ******************************************************************************
- *
- * $Log$
- * Revision 1.10  2003/07/08 17:31:30  warmerda
- * cleanup various warnings
- *
- * Revision 1.9  2001/11/28 14:20:30  warmerda
- * fixed transform memory leak in GTIFPCSToImage
- *
- * Revision 1.8  2001/04/06 16:56:22  warmerda
- * added support for PCSToImage with matrix
- *
- * Revision 1.7  2001/03/05 03:25:23  warmerda
- * restructure cleanup, and apply to GTIFPCSToImage()
- *
- * Revision 1.6  2001/03/04 22:37:39  warmerda
- * fixed memory leak for fields fetched with gt_methods.get - Alan Gray
- *
- * Revision 1.5  2000/08/22 03:32:46  warmerda
- * removed GTIFTiepointTranslate code
- *
- * Revision 1.4  1999/09/17 01:19:51  warmerda
- * Fixed bug in use of transform matrix.
- *
- * Revision 1.3  1999/09/16 21:25:40  warmerda
- * Added tiepoint, and transformation matrix based translation.  Note
- * that we don't try to invert the transformation matrix for
- * GTIFPCSToImage().
- *
- * Revision 1.2  1999/09/07 20:00:40  warmerda
- * Fixed count/tiepoint_count bug in GTIFPCSToImage().
- *
- * Revision 1.1  1999/05/04 03:07:57  warmerda
- * New
- *
- */
- 
-#include "geotiff.h"
-#include "geo_tiffp.h" /* external TIFF interface */
-#include "geo_keyp.h"  /* private interface       */
-#include "geokeys.h"
-
-/************************************************************************/
-/*                          inv_geotransform()                          */
-/*                                                                      */
-/*      Invert a 6 term geotransform style matrix.                      */
-/************************************************************************/
-
-static int inv_geotransform( double *gt_in, double *gt_out )
-
-{
-    double	det, inv_det;
-
-    /* we assume a 3rd row that is [0 0 1] */
-
-    /* Compute determinate */
-
-    det = gt_in[0] * gt_in[4] - gt_in[1] * gt_in[3];
-
-    if( fabs(det) < 0.000000000000001 )
-        return 0;
-
-    inv_det = 1.0 / det;
-
-    /* compute adjoint, and devide by determinate */
-
-    gt_out[0] =  gt_in[4] * inv_det;
-    gt_out[3] = -gt_in[3] * inv_det;
-
-    gt_out[1] = -gt_in[1] * inv_det;
-    gt_out[4] =  gt_in[0] * inv_det;
-
-    gt_out[2] = ( gt_in[1] * gt_in[5] - gt_in[2] * gt_in[4]) * inv_det;
-    gt_out[5] = (-gt_in[0] * gt_in[5] + gt_in[2] * gt_in[3]) * inv_det;
-
-    return 1;
-}
-
-/************************************************************************/
-/*                       GTIFTiepointTranslate()                        */
-/************************************************************************/
-
-int GTIFTiepointTranslate( int gcp_count, double * gcps_in, double * gcps_out,
-                           double x_in, double y_in,
-                           double *x_out, double *y_out )
-
-{
-    (void) gcp_count;
-    (void) gcps_in;
-    (void) gcps_out;
-    (void) x_in;
-    (void) y_in;
-    (void) x_out;
-    (void) y_out;
-    
-    /* I would appreciate a _brief_ block of code for doing second order
-       polynomial regression here! */
-    return FALSE;
-}
-
-
-/************************************************************************/
-/*                           GTIFImageToPCS()                           */
-/************************************************************************/
-
-/**
- * Translate a pixel/line coordinate to projection coordinates.
- *
- * At this time this function does not support image to PCS translations for
- * tiepoints-only definitions,  only pixelscale and transformation matrix
- * formulations.
- *
- * @param gtif The handle from GTIFNew() indicating the target file.
- * @param x A pointer to the double containing the pixel offset on input,
- * and into which the easting/longitude will be put on completion.
- * @param y A pointer to the double containing the line offset on input,
- * and into which the northing/latitude will be put on completion.
- *
- * @return TRUE if the transformation succeeds, or FALSE if it fails.  It may
- * fail if the file doesn't have properly setup transformation information,
- * or it is in a form unsupported by this function.
- */
-
-int GTIFImageToPCS( GTIF *gtif, double *x, double *y )
-
-{
-    int     res = FALSE;
-    int     tiepoint_count, count, transform_count;
-    tiff_t *tif=gtif->gt_tif;
-    double *tiepoints   = 0;
-    double *pixel_scale = 0;
-    double *transform   = 0;
-
-
-    if (!(gtif->gt_methods.get)(tif, GTIFF_TIEPOINTS,
-                              &tiepoint_count, &tiepoints ))
-        tiepoint_count = 0;
-
-    if (!(gtif->gt_methods.get)(tif, GTIFF_PIXELSCALE, &count, &pixel_scale ))
-        count = 0;
-
-    if (!(gtif->gt_methods.get)(tif, GTIFF_TRANSMATRIX,
-                                &transform_count, &transform ))
-        transform_count = 0;
-
-/* -------------------------------------------------------------------- */
-/*      If the pixelscale count is zero, but we have tiepoints use      */
-/*      the tiepoint based approach.                                    */
-/* -------------------------------------------------------------------- */
-    if( tiepoint_count > 6 && count == 0 ) 
-    {
-        res = GTIFTiepointTranslate( tiepoint_count / 6,
-                                     tiepoints, tiepoints + 3,
-                                     *x, *y, x, y );
-    }
-
-/* -------------------------------------------------------------------- */
-/*	If we have a transformation matrix, use it. 			*/
-/* -------------------------------------------------------------------- */
-    else if( transform_count == 16 ) 
-    {
-        double x_in = *x, y_in = *y;
-
-        *x = x_in * transform[0] + y_in * transform[1] + transform[3];
-        *y = x_in * transform[4] + y_in * transform[5] + transform[7];
-        
-        res = TRUE;
-    } 
-
-/* -------------------------------------------------------------------- */
-/*      For now we require one tie point, and a valid pixel scale.      */
-/* -------------------------------------------------------------------- */
-    else if( count < 3 || tiepoint_count < 6 ) 
-    {
-        res = FALSE;
-    } 
-
-    else 
-    {
-        *x = (*x - tiepoints[0]) * pixel_scale[0] + tiepoints[3];
-        *y = (*y - tiepoints[1]) * (-1 * pixel_scale[1]) + tiepoints[4];
-
-        res = TRUE;
-    }
-
-/* -------------------------------------------------------------------- */
-/*      Cleanup                                                         */
-/* -------------------------------------------------------------------- */
-    if(tiepoints)   
-        _GTIFFree(tiepoints);
-    if(pixel_scale)
-        _GTIFFree(pixel_scale);
-    if(transform)  
-        _GTIFFree(transform);
-
-    return res;
-}
-
-/************************************************************************/
-/*                           GTIFPCSToImage()                           */
-/************************************************************************/
-
-/**
- * Translate a projection coordinate to pixel/line coordinates.
- *
- * At this time this function does not support PCS to image translations for
- * tiepoints-only based definitions, only matrix and pixelscale/tiepoints 
- * formulations are supposed.
- *
- * @param gtif The handle from GTIFNew() indicating the target file.
- * @param x A pointer to the double containing the pixel offset on input,
- * and into which the easting/longitude will be put on completion.
- * @param y A pointer to the double containing the line offset on input,
- * and into which the northing/latitude will be put on completion.
- *
- * @return TRUE if the transformation succeeds, or FALSE if it fails.  It may
- * fail if the file doesn't have properly setup transformation information,
- * or it is in a form unsupported by this function.
- */
-
-int GTIFPCSToImage( GTIF *gtif, double *x, double *y )
-
-{
-    double 	*tiepoints = NULL;
-    int 	tiepoint_count, count, transform_count = 0;
-    double	*pixel_scale = NULL;
-    double 	*transform   = NULL;
-    tiff_t 	*tif=gtif->gt_tif;
-    int		result = FALSE;
-
-/* -------------------------------------------------------------------- */
-/*      Fetch tiepoints and pixel scale.                                */
-/* -------------------------------------------------------------------- */
-    if (!(gtif->gt_methods.get)(tif, GTIFF_TIEPOINTS,
-                              &tiepoint_count, &tiepoints ))
-        tiepoint_count = 0;
-
-    if (!(gtif->gt_methods.get)(tif, GTIFF_PIXELSCALE, &count, &pixel_scale ))
-        count = 0;
-
-    if (!(gtif->gt_methods.get)(tif, GTIFF_TRANSMATRIX,
-                                &transform_count, &transform ))
-        transform_count = 0;
-
-/* -------------------------------------------------------------------- */
-/*      If the pixelscale count is zero, but we have tiepoints use      */
-/*      the tiepoint based approach.                                    */
-/* -------------------------------------------------------------------- */
-    if( tiepoint_count > 6 && count == 0 )
-    {
-        result = GTIFTiepointTranslate( tiepoint_count / 6,
-                                        tiepoints + 3, tiepoints,
-                                        *x, *y, x, y );
-    }
-
-/* -------------------------------------------------------------------- */
-/*      Handle matrix - convert to "geotransform" format, invert and    */
-/*      apply.                                                          */
-/* -------------------------------------------------------------------- */
-    else if( transform_count == 16 )
-    {
-        double  x_in = *x, y_in = *y;
-        double	gt_in[6], gt_out[6];
-        
-        gt_in[0] = transform[0];
-        gt_in[1] = transform[1];
-        gt_in[2] = transform[3];
-        gt_in[3] = transform[4];
-        gt_in[4] = transform[5];
-        gt_in[5] = transform[7];
-
-        if( !inv_geotransform( gt_in, gt_out ) )
-            result = FALSE;
-        else
-        {
-            *x = x_in * gt_out[0] + y_in * gt_out[1] + gt_out[2];
-            *y = x_in * gt_out[3] + y_in * gt_out[4] + gt_out[5];
-            
-            result = TRUE;
-        }
-    }
-
-/* -------------------------------------------------------------------- */
-/*      For now we require one tie point, and a valid pixel scale.      */
-/* -------------------------------------------------------------------- */
-    else if( count >= 3 && tiepoint_count >= 6 )
-    {
-        *x = (*x - tiepoints[3]) / pixel_scale[0] + tiepoints[0];
-        *y = (*y - tiepoints[4]) / (-1 * pixel_scale[1]) + tiepoints[1];
-
-        result = TRUE;
-    }
-
-/* -------------------------------------------------------------------- */
-/*      Cleanup.                                                        */
-/* -------------------------------------------------------------------- */
-    if(tiepoints)   
-        _GTIFFree(tiepoints);
-    if(pixel_scale)
-        _GTIFFree(pixel_scale);
-    if(transform)  
-        _GTIFFree(transform);
-
-    return result;
-}
-
diff --git a/src/tiff/geo_write.c b/src/tiff/geo_write.c
deleted file mode 100644
index 817f6ce..0000000
--- a/src/tiff/geo_write.c
+++ /dev/null
@@ -1,193 +0,0 @@
-/**********************************************************************
- *
- *  geo_write.c  -- Public routines for GEOTIFF GeoKey access.
- *
- *    Written By: Niles D. Ritter.
- *
- *  copyright (c) 1995   Niles D. Ritter
- *
- *  Permission granted to use this software, so long as this copyright
- *  notice accompanies any source code derived therefrom.
- *
- **********************************************************************/
-
-#include "geotiffio.h"   /* public interface        */
-#include "geo_tiffp.h" /* external TIFF interface */
-#include "geo_keyp.h"  /* private interface       */
-
-static int WriteKey(GTIF* gt, TempKeyData* tempData,
-                    KeyEntry* entptr, GeoKey* keyptr);
-static int SortKeys(GTIF* gt,int *sortkeys);
-
-
-/**
-This function flushes all the GeoTIFF keys that have been set with the 
-GTIFKeySet() function into the associated 
-TIFF file.
-
- at param gt The GeoTIFF handle returned by GTIFNew.
-
-GTIFWriteKeys() should be called before 
-GTIFFree() is used to deallocate a GeoTIFF access handle.
- */
-
-int GTIFWriteKeys(GTIF *gt)
-{
-    int i;
-    GeoKey *keyptr;
-    KeyEntry *entptr;
-    KeyHeader *header;
-    TempKeyData tempData;
-    int sortkeys[MAX_KEYS];
-	
-    if (!(gt->gt_flags & FLAG_FILE_MODIFIED)) return 1;
-
-    if( gt->gt_tif == NULL )
-        return 0;
-	
-    tempData.tk_asciiParams = 0;
-    tempData.tk_asciiParamsLength = 0;
-    tempData.tk_asciiParamsOffset = 0;
-
-    /*  Sort the Keys into numerical order */
-    if (!SortKeys(gt,sortkeys))
-    {
-        /* XXX error: a key was not recognized */
-    }
-	
-    /* Set up header of ProjectionInfo tag */
-    header = (KeyHeader *)gt->gt_short;
-    header->hdr_num_keys = (pinfo_t) gt->gt_num_keys;
-    header->hdr_version  = GvCurrentVersion;
-    header->hdr_rev_major  = GvCurrentRevision;
-    header->hdr_rev_minor  = GvCurrentMinorRev;
-	
-    /* Sum up the ASCII tag lengths */
-    for (i = 0; i < gt->gt_num_keys; i++)
-    {
-        keyptr = gt->gt_keys + sortkeys[i];
-        if (keyptr->gk_type == TYPE_ASCII)
-        {
-            tempData.tk_asciiParamsLength += keyptr->gk_count;
-        }
-    }
-    if (tempData.tk_asciiParamsLength > 0)
-    {
-        tempData.tk_asciiParams =
-            (char *)_GTIFcalloc(tempData.tk_asciiParamsLength + 1);
-        tempData.tk_asciiParams[tempData.tk_asciiParamsLength] = '\0';
-    }
-
-    /* Set up the rest of SHORT array properly */
-    keyptr = gt->gt_keys;
-    entptr = (KeyEntry*)(gt->gt_short + 4);
-    for (i=0; i< gt->gt_num_keys; i++,entptr++)
-    {
-        if (!WriteKey(gt,&tempData,entptr,keyptr+sortkeys[i])) return 0;
-    }	
-	
-    /* Write out the Key Directory */
-    (gt->gt_methods.set)(gt->gt_tif, GTIFF_GEOKEYDIRECTORY, gt->gt_nshorts, gt->gt_short );	
-	
-    /* Write out the params directories */
-    if (gt->gt_ndoubles)
-        (gt->gt_methods.set)(gt->gt_tif, GTIFF_DOUBLEPARAMS, gt->gt_ndoubles, gt->gt_double );
-    if (tempData.tk_asciiParamsLength > 0)
-    {
-        /* just to be safe */
-        tempData.tk_asciiParams[tempData.tk_asciiParamsLength] = '\0';
-        (gt->gt_methods.set)(gt->gt_tif,
-                             GTIFF_ASCIIPARAMS, 0, tempData.tk_asciiParams);
-    }
-	
-    gt->gt_flags &= ~FLAG_FILE_MODIFIED;
-
-    if (tempData.tk_asciiParamsLength > 0)
-    {
-        _GTIFFree (tempData.tk_asciiParams);
-    }
-    return 1;
-}
-
-/**********************************************************************
- *
- *                        Private Routines
- *
- **********************************************************************/
- 
-/*
- * Given GeoKey, write out the KeyEntry entries, returning 0 if failure.
- *  This is the exact complement of ReadKey().
- */
-
-static int WriteKey(GTIF* gt, TempKeyData* tempData,
-                    KeyEntry* entptr, GeoKey* keyptr)
-{
-    int count;
-	
-    entptr->ent_key = (pinfo_t) keyptr->gk_key;
-    entptr->ent_count = (pinfo_t) keyptr->gk_count;
-    count = entptr->ent_count;
-	
-    if (count==1 && keyptr->gk_type==TYPE_SHORT)
-    {
-        entptr->ent_location = GTIFF_LOCAL;
-        entptr->ent_val_offset = *(pinfo_t*)&keyptr->gk_data;
-        return 1;
-    }
-		  
-    switch (keyptr->gk_type)
-    {
-      case TYPE_SHORT:
-        entptr->ent_location = GTIFF_GEOKEYDIRECTORY;
-        entptr->ent_val_offset = (pinfo_t)
-            ((pinfo_t*)keyptr->gk_data - gt->gt_short);
-        break;
-      case TYPE_DOUBLE:
-        entptr->ent_location = GTIFF_DOUBLEPARAMS;
-        entptr->ent_val_offset = (pinfo_t) 
-            ((double*)keyptr->gk_data - gt->gt_double);
-        break;
-      case TYPE_ASCII:
-        entptr->ent_location = GTIFF_ASCIIPARAMS;
-        entptr->ent_val_offset = (pinfo_t) tempData->tk_asciiParamsOffset;
-        _GTIFmemcpy (tempData->tk_asciiParams + tempData->tk_asciiParamsOffset
-                     , keyptr->gk_data, keyptr->gk_count);
-        tempData->tk_asciiParams[tempData->tk_asciiParamsOffset+keyptr->gk_count-1] = '|';
-        tempData->tk_asciiParamsOffset += keyptr->gk_count;
-        break;
-      default:
-        return 0; /* failure */
-    }
-	
-    return 1; /* success */
-}
-
-
-/* 
- * Numerically sort the GeoKeys.
- * We just do a linear search through
- * the list and pull out the keys that were set.
- */
-
-static int SortKeys(GTIF* gt,int *sortkeys)
-{
-    int loc;
-    int nkeys=0;
-    geokey_t key,kmin,kmax;
-    int *index = gt->gt_keyindex;
-	
-    kmin = (geokey_t) gt->gt_keymin;
-    kmax = (geokey_t) gt->gt_keymax;
-    for (key=kmin; key<=kmax; key++)
-    {
-        if ( (loc=index[key]) != 0 )
-        {
-            sortkeys[nkeys] = loc;
-            nkeys++;
-        }
-    }
-	
-    return nkeys==gt->gt_num_keys;
-}
-
diff --git a/src/tiff/geokeys.h b/src/tiff/geokeys.h
deleted file mode 100644
index 97c5327..0000000
--- a/src/tiff/geokeys.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/**********************************************************************
- *
- *  geokeys.h - Public registry for valid GEOTIFF GeoKeys.
- *
- *   Written By: Niles D. Ritter
- *
- *  Revision History:
- *
- *     Rev.#  Author  M/D/Y Date     Key Changes/Additions
- *     -----  ------  ----------  -------------------------------------
- *       0      ndr    06/10/95      Inital Beta Release
- *       1      ndr    09/18/95      Final 1.0 Release
- *
- **********************************************************************/
-
-#ifndef __geokeys_h_
-#define __geokeys_h_
-
-/* The GvCurrentRevision number should be incremented whenever a 
- * new set of Keys are defined or modified in "geokeys.inc", and comments 
- * added to the "Revision History" section above. If only code
- * _values_ are augmented, the "GvCurrentMinorRev" number should
- * be incremented instead (see "geovalues.h"). Whenever the 
- * GvCurrentRevision is incremented, the GvCurrentMinorRev should
- * be reset to zero.
- *
- *
- * The Section Numbers below refer to the GeoTIFF Spec sections
- * in which these values are documented.
- *
- */
-#define GvCurrentRevision  1  /* Final 1.0 Release */
-
-#ifdef ValuePair
-#  undef ValuePair
-#endif
-#define ValuePair(name,value)    name = value,
-
-typedef enum {
-   BaseGeoKey   =  1024,               /* First valid code */
-
-#  include "geokeys.inc"         /* geokey database */
-
-   ReservedEndGeoKey  =  32767,
-   
-   /* Key space available for Private or internal use */
-   PrivateBaseGeoKey = 32768,    /* Consistent with TIFF Private tags */
-   PrivateEndGeoKey  = 65535,    
-   
-   EndGeoKey = 65535             /* Largest Possible GeoKey ID */
-} geokey_t;
-
-
-#endif /* __geokeys_h_ */
diff --git a/src/tiff/geokeys.inc b/src/tiff/geokeys.inc
deleted file mode 100644
index cfccb86..0000000
--- a/src/tiff/geokeys.inc
+++ /dev/null
@@ -1,76 +0,0 @@
-/* GeoTIFF GeoKey Database */
-
-/* Note: Any changes/additions to this database require */
-/* a change in the revision value in geokeys.h          */
-
-/* C database for Geotiff include files.   */
-/* the macro ValuePair() must be defined   */
-/* by the enclosing include file           */
-
-/*  Revised 28 Sep 1995   NDR -- Added Rev. 1.0 aliases. */
-
-/* 6.2.1 GeoTIFF Configuration Keys */
-
-ValuePair(  GTModelTypeGeoKey,	1024) /* Section 6.3.1.1 Codes       */
-ValuePair(  GTRasterTypeGeoKey,	1025) /* Section 6.3.1.2 Codes       */
-ValuePair(  GTCitationGeoKey,	1026) /* documentation */
-
-/* 6.2.2 Geographic CS Parameter Keys */
-
-ValuePair(  GeographicTypeGeoKey,	2048) /* Section 6.3.2.1 Codes     */
-ValuePair(  GeogCitationGeoKey,	2049) /* documentation             */
-ValuePair(  GeogGeodeticDatumGeoKey,	2050) /* Section 6.3.2.2 Codes     */
-ValuePair(  GeogPrimeMeridianGeoKey,	2051) /* Section 6.3.2.4 codes     */
-ValuePair(  GeogLinearUnitsGeoKey,	2052) /* Section 6.3.1.3 Codes     */
-ValuePair(  GeogLinearUnitSizeGeoKey,	2053) /* meters                    */
-ValuePair(  GeogAngularUnitsGeoKey,	2054) /* Section 6.3.1.4 Codes     */
-ValuePair(  GeogAngularUnitSizeGeoKey,	2055) /* radians                   */
-ValuePair(  GeogEllipsoidGeoKey,	2056) /* Section 6.3.2.3 Codes     */
-ValuePair(  GeogSemiMajorAxisGeoKey,	2057) /* GeogLinearUnits           */
-ValuePair(  GeogSemiMinorAxisGeoKey,	2058) /* GeogLinearUnits           */
-ValuePair(  GeogInvFlatteningGeoKey,	2059) /* ratio                     */
-ValuePair(  GeogAzimuthUnitsGeoKey,	2060) /* Section 6.3.1.4 Codes     */
-ValuePair(  GeogPrimeMeridianLongGeoKey,	2061) /* GeoAngularUnit            */
-
-/* 6.2.3 Projected CS Parameter Keys */
-/*    Several keys have been renamed,*/
-/*    and the deprecated names aliased for backward compatibility */
-
-ValuePair(  ProjectedCSTypeGeoKey,	3072)     /* Section 6.3.3.1 codes   */
-ValuePair(  PCSCitationGeoKey,	3073)     /* documentation           */
-ValuePair(  ProjectionGeoKey,	3074)     /* Section 6.3.3.2 codes   */
-ValuePair(  ProjCoordTransGeoKey,	3075)     /* Section 6.3.3.3 codes   */
-ValuePair(  ProjLinearUnitsGeoKey,	3076)     /* Section 6.3.1.3 codes   */
-ValuePair(  ProjLinearUnitSizeGeoKey,	3077)     /* meters                  */
-ValuePair(  ProjStdParallel1GeoKey,	3078)     /* GeogAngularUnit */
-ValuePair(  ProjStdParallelGeoKey,ProjStdParallel1GeoKey) /* ** alias **   */
-ValuePair(  ProjStdParallel2GeoKey,	3079)     /* GeogAngularUnit */
-ValuePair(  ProjNatOriginLongGeoKey,	3080)     /* GeogAngularUnit */
-ValuePair(  ProjOriginLongGeoKey,ProjNatOriginLongGeoKey) /* ** alias **     */
-ValuePair(  ProjNatOriginLatGeoKey,	3081)     /* GeogAngularUnit */
-ValuePair(  ProjOriginLatGeoKey,ProjNatOriginLatGeoKey)   /* ** alias **     */
-ValuePair(  ProjFalseEastingGeoKey,	3082)     /* ProjLinearUnits */
-ValuePair(  ProjFalseNorthingGeoKey,	3083)     /* ProjLinearUnits */
-ValuePair(  ProjFalseOriginLongGeoKey,	3084)     /* GeogAngularUnit */
-ValuePair(  ProjFalseOriginLatGeoKey,	3085)     /* GeogAngularUnit */
-ValuePair(  ProjFalseOriginEastingGeoKey,	3086)     /* ProjLinearUnits */
-ValuePair(  ProjFalseOriginNorthingGeoKey,	3087)     /* ProjLinearUnits */
-ValuePair(  ProjCenterLongGeoKey,	3088)     /* GeogAngularUnit */
-ValuePair(  ProjCenterLatGeoKey,	3089)     /* GeogAngularUnit */
-ValuePair(  ProjCenterEastingGeoKey,	3090)     /* ProjLinearUnits */
-ValuePair(  ProjCenterNorthingGeoKey,	3091)     /* ProjLinearUnits */
-ValuePair(  ProjScaleAtNatOriginGeoKey,	3092)     /* ratio   */
-ValuePair(  ProjScaleAtOriginGeoKey,ProjScaleAtNatOriginGeoKey)  /* ** alias **   */
-ValuePair(  ProjScaleAtCenterGeoKey,	3093)     /* ratio   */
-ValuePair(  ProjAzimuthAngleGeoKey,	3094)     /* GeogAzimuthUnit */
-ValuePair(  ProjStraightVertPoleLongGeoKey, 3095) /* GeogAngularUnit */
-ValuePair(  ProjRectifiedGridAngleGeoKey, 3096)   /* GeogAngularUnit */
-
-/* 6.2.4 Vertical CS Keys */
-   
-ValuePair(  VerticalCSTypeGeoKey,	4096)  /* Section 6.3.4.1 codes   */
-ValuePair(  VerticalCitationGeoKey,	4097)  /* documentation */
-ValuePair(  VerticalDatumGeoKey,	4098)  /* Section 6.3.4.2 codes   */
-ValuePair(  VerticalUnitsGeoKey,	4099)  /* Section 6.3.1 (.x) codes   */
-
-/* End of Data base */
diff --git a/src/tiff/geonames.h b/src/tiff/geonames.h
deleted file mode 100644
index dc1b016..0000000
--- a/src/tiff/geonames.h
+++ /dev/null
@@ -1,146 +0,0 @@
-/*
- * geonames.h
- *
- *  This encapsulates all of the value-naming mechanism of 
- *  libgeotiff. 
- *
- *  Written By: Niles Ritter
- *
- *  Revision History:
- *
- *      Author     Date     Key Changes/Additions
- *      ------  ----------  -------------------------------------
- *      ndr    10 Jun 95     Inital Beta Release
- *      ndr    28 Jul 95     Added ModelType aliases, Kv aliases.
- */
-
-#ifndef __geonames_h
-#define __geonames_h
-
-struct _KeyInfo {
-	int ki_key;
-	char *ki_name;
-};
-typedef struct _KeyInfo KeyInfo;
-
-/* If memory is a premium, then omitting the 
- * long name lists may save some space; simply 
- * #define OMIT_GEOTIFF_NAMES in the compile statement
- * to remove all key->string translation.
- */
-#ifdef ValuePair
-#  undef ValuePair
-#endif
-
-#ifndef OMIT_GEOTIFF_NAMES
-#define ValuePair(token,value)  {token,#token},
-#else
-#define ValuePair(token,value)
-#endif
-
-#define END_LIST { -1, (char *)0}
-
-/************************************************************
- *         6.2.x GeoTIFF Keys
- ************************************************************/
-
-static KeyInfo _keyInfo[] =  {
-#   include "geokeys.inc"   /* geokey database */
-    END_LIST
-};
-
-#define COMMON_VALUES \
-   {KvUndefined, "Undefined"}, \
-   {KvUserDefined,"User-Defined"}, \
-   ValuePair(KvUndefined,KvUndefined) \
-   ValuePair(KvUserDefined,KvUserDefined) 
-
-static KeyInfo _csdefaultValue[] = {
-   COMMON_VALUES
-   END_LIST  
-};
-
-/************************************************************
- *         6.3.x GeoTIFF Key Values
- ************************************************************/
-
-static KeyInfo _modeltypeValue[] = {
-   COMMON_VALUES
-    ValuePair(ModelTypeProjected,1)
-    ValuePair(ModelTypeGeographic,2)
-    ValuePair(ModelTypeGeocentric,3)
-    ValuePair(ModelProjected,1)     /* aliases */
-    ValuePair(ModelGeographic,2)    /* aliases */
-    ValuePair(ModelGeocentric,3)    /* aliases */
-   END_LIST  
-};
-
-static KeyInfo _rastertypeValue[] = {
-   COMMON_VALUES
-    ValuePair(RasterPixelIsArea,1)
-    ValuePair(RasterPixelIsPoint,2)
-   END_LIST  
-};
-
-static KeyInfo _geounitsValue[] = {
-   COMMON_VALUES
-#  include "epsg_units.inc"
-   END_LIST  
-};
-
-static KeyInfo _geographicValue[] = {
-   COMMON_VALUES
-#  include "epsg_gcs.inc"
-   END_LIST  
-};
-
-static KeyInfo _geodeticdatumValue[] = {
-   COMMON_VALUES
-#  include "epsg_datum.inc"
-   END_LIST  
-};
-
-static KeyInfo _ellipsoidValue[] = {
-   COMMON_VALUES
-#  include "epsg_ellipse.inc"
-   END_LIST  
-};
-
-static KeyInfo _primemeridianValue[] = {
-   COMMON_VALUES
-#  include "epsg_pm.inc"
-   END_LIST  
-};
-
-static KeyInfo _pcstypeValue[] = {
-   COMMON_VALUES
-#  include "epsg_pcs.inc"
-   END_LIST  
-};
-
-static KeyInfo _projectionValue[] = {
-   COMMON_VALUES
-#  include "epsg_proj.inc"
-   END_LIST  
-};
-
-static KeyInfo _coordtransValue[] = {
-   COMMON_VALUES
-#  include "geo_ctrans.inc"
-   END_LIST  
-};
-
-static KeyInfo _vertcstypeValue[] = {
-   COMMON_VALUES
-#  include "epsg_vertcs.inc"
-   END_LIST  
-};
-
-static KeyInfo _vdatumValue[] = {
-   COMMON_VALUES
-    ValuePair(VDatumBase,1)
-   END_LIST  
-};
-
-#endif /* __geonames_h */
-
diff --git a/src/tiff/geotiff.h b/src/tiff/geotiff.h
deleted file mode 100644
index 088e504..0000000
--- a/src/tiff/geotiff.h
+++ /dev/null
@@ -1,117 +0,0 @@
-/**********************************************************************
- *
- *  geotiff.h - Public interface for Geotiff tag parsing.
- *
- *
- *   Written By: Niles D. Ritter
- *
- **********************************************************************/
-
-#ifndef __geotiff_h_
-#define __geotiff_h_
-
-/**
- * \file geotiff.h
- *
- * Primary libgeotiff include file.
- *
- * This is the defacto registry for valid GEOTIFF GeoKeys
- * and their associated symbolic values. This is also the only file
- * of the GeoTIFF library which needs to be included in client source
- * code.
- */
-
-/* This Version code should only change if a drastic
- * alteration is made to the GeoTIFF key structure. Readers
- * encountering a larger value should give up gracefully.
- */
-#define GvCurrentVersion   1
-
-#define LIBGEOTIFF_VERSION 1230
-
-#include "geo_config.h"
-#include "geokeys.h"
-
-/**********************************************************************
- * Do we want to build as a DLL on windows?
- **********************************************************************/
-#if !defined(CPL_DLL)
-#  if defined(_WIN32) && defined(BUILD_AS_DLL)
-#    define CPL_DLL     __declspec(dllexport)
-#  else
-#    define CPL_DLL
-#  endif
-#endif
-
-/**********************************************************************
- *
- *                 Public Structures & Definitions
- *
- **********************************************************************/
-
-#if defined(__cplusplus)
-extern "C" {
-#endif
-
-typedef struct gtiff GTIF;   /* struct gtiff is private */
-typedef unsigned short tifftag_t;
-typedef unsigned short geocode_t;
-typedef int (*GTIFPrintMethod)(char *string, void *aux);
-typedef int (*GTIFReadMethod)(char *string, void *aux);
-
-typedef enum {
-   TYPE_BYTE=1,
-   TYPE_SHORT=2,
-   TYPE_LONG=3,
-   TYPE_RATIONAL=4,
-   TYPE_ASCII=5,
-   TYPE_FLOAT=6,
-   TYPE_DOUBLE=7,
-   TYPE_SBYTE=8,
-   TYPE_SSHORT=9,
-   TYPE_SLONG=10,
-   TYPE_UNKNOWN=11
-} tagtype_t;
-
-
-/**********************************************************************
- *
- *                 Public Function Declarations
- *
- **********************************************************************/
-
-/* TIFF-level interface */
-GTIF CPL_DLL *GTIFNew(void *tif);
-void CPL_DLL  GTIFFree(GTIF *gtif);
-int  CPL_DLL  GTIFWriteKeys(GTIF *gtif);
-void CPL_DLL  GTIFDirectoryInfo(GTIF *gtif, int *versions, int *keycount);
-
-/* GeoKey Access */
-int  CPL_DLL  GTIFKeyInfo(GTIF *gtif, geokey_t key, int *size, tagtype_t* type);
-int  CPL_DLL  GTIFKeyGet(GTIF *gtif, geokey_t key, void *val, int index,
-                         int count);
-int  CPL_DLL  GTIFKeySet(GTIF *gtif, geokey_t keyID, tagtype_t type,
-                         int count,...);
-
-/* Metadata Import-Export utilities */
-void  CPL_DLL  GTIFPrint(GTIF *gtif, GTIFPrintMethod print, void *aux);
-int   CPL_DLL  GTIFImport(GTIF *gtif, GTIFReadMethod scan, void *aux);
-char  CPL_DLL *GTIFKeyName(geokey_t key);
-char  CPL_DLL *GTIFValueName(geokey_t key,int value);
-char  CPL_DLL *GTIFTypeName(tagtype_t type);
-char  CPL_DLL *GTIFTagName(int tag);
-int   CPL_DLL  GTIFKeyCode(char * key);
-int   CPL_DLL  GTIFValueCode(geokey_t key,char *value);
-int   CPL_DLL  GTIFTypeCode(char *type);
-int   CPL_DLL  GTIFTagCode(char *tag);
-
-/* Translation between image/PCS space */
-
-int CPL_DLL    GTIFImageToPCS( GTIF *gtif, double *x, double *y );
-int CPL_DLL    GTIFPCSToImage( GTIF *gtif, double *x, double *y );
-
-#if defined(__cplusplus)
-}
-#endif
-
-#endif /* __geotiff_h_ */
diff --git a/src/tiff/geotiff_proj4.c b/src/tiff/geotiff_proj4.c
deleted file mode 100644
index e5e8e3b..0000000
--- a/src/tiff/geotiff_proj4.c
+++ /dev/null
@@ -1,716 +0,0 @@
-/******************************************************************************
- * $Id: geotiff_proj4.c 4825 2006-08-16 13:01:53Z lubia $
- *
- * Project:  libgeotiff
- * Purpose:  Code to convert a normalized GeoTIFF definition into a PROJ.4
- *           (OGDI) compatible projection string.
- * Author:   Frank Warmerdam, warmerda at home.com
- *
- ******************************************************************************
- * Copyright (c) 1999, Frank Warmerdam
- *
- * 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 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- ******************************************************************************
- *
- * $Log$
- * Revision 1.22  2005/03/04 04:32:37  fwarmerdam
- * added cylindricalequalarea support
- *
- * Revision 1.21  2003/08/21 18:42:39  warmerda
- * fixed support for ModelTypeGeographic as per email from Young Su, Cha
- *
- * Revision 1.20  2003/07/08 17:31:30  warmerda
- * cleanup various warnings
- *
- * Revision 1.19  2002/11/29 20:57:09  warmerda
- * added LCC1SP mapping
- *
- * Revision 1.18  2002/07/09 14:47:53  warmerda
- * fixed translation of polar stereographic
- *
- * Revision 1.17  2001/11/23 19:53:56  warmerda
- * free PROJ.4 definitions after use
- *
- * Revision 1.16  2000/12/05 19:21:45  warmerda
- * added cassini support
- *
- * Revision 1.15  2000/12/05 17:44:41  warmerda
- * Use +R_A for Miller and VanDerGrinten
- *
- * Revision 1.14  2000/10/13 18:06:51  warmerda
- * added econic support for PROJ.4 translation
- *
- * Revision 1.13  2000/09/15 19:30:48  warmerda
- * *** empty log message ***
- *
- * Revision 1.12  2000/09/15 18:21:07  warmerda
- * Fixed order of parameters for LCC 2SP.  When parameters
- * were read from EPSG CSV files the standard parallels and origin
- * were mixed up.  This affects alot of state plane zones!
- *
- * Revision 1.11  2000/06/06 17:39:45  warmerda
- * Modify to work with projUV version of library.
- *
- * Revision 1.10  1999/07/06 15:05:51  warmerda
- * Fixed up LCC_1SP notes.
- *
- * Revision 1.9  1999/05/04 16:24:49  warmerda
- * Fixed projection string formating with zones.
- *
- * Revision 1.8  1999/05/04 12:27:01  geotiff
- * only emit proj unsupported warning if DEBUG defined
- *
- * Revision 1.7  1999/05/04 03:14:59  warmerda
- * fixed use of foot instead of ft for units
- *
- * Revision 1.6  1999/05/03 17:50:31  warmerda
- * avoid warnings on IRIX
- *
- * Revision 1.5  1999/04/29 23:02:24  warmerda
- * added mapsys utm test.
- *
- * Revision 1.4  1999/03/18 21:35:42  geotiff
- * Added reprojection functions
- *
- * Revision 1.3  1999/03/10 18:11:17  geotiff
- * Removed comment about this not being the master ... now it is.
- *
- * Revision 1.2  1999/03/10 18:10:27  geotiff
- * Avoid use of cpl_serv.h and CPLStrdup().
- *
- * Revision 1.1  1999/03/10 15:20:43  geotiff
- * New
- *
- */
-
-#include "cpl_serv.h"
-#include "geotiff.h"
-#include "geo_normalize.h"
-#include "geovalues.h"
-
-/************************************************************************/
-/*                          GTIFGetProj4Defn()                          */
-/************************************************************************/
-
-char * GTIFGetProj4Defn( GTIFDefn * psDefn )
-
-{
-    char	szProjection[512];
-    char	szUnits[24];
-    double      dfFalseEasting, dfFalseNorthing;
-
-    szProjection[0] = '\0';
-    
-/* ==================================================================== */
-/*      Translate the units of measure.                                 */
-/*                                                                      */
-/*      Note that even with a +units, or +to_meter in effect, it is     */
-/*      still assumed that all the projection parameters are in         */
-/*      meters.                                                         */
-/* ==================================================================== */
-    if( psDefn->UOMLength == Linear_Meter )
-    {
-        strcpy( szUnits, "+units=m " ); 
-    }
-    else if( psDefn->UOMLength == Linear_Foot )
-    {
-        strcpy( szUnits, "+units=ft " );
-    }
-    else if( psDefn->UOMLength == Linear_Foot_US_Survey )
-    {
-        strcpy( szUnits, "+units=us-ft " );
-    }
-    else if( psDefn->UOMLength == Linear_Foot_Indian )
-    {
-        strcpy( szUnits, "+units=ind-ft " );
-    }
-    else if( psDefn->UOMLength == Linear_Link )
-    {
-        strcpy( szUnits, "+units=link " );
-    }
-    else if( psDefn->UOMLength == Linear_Yard_Indian)
-    {
-        strcpy( szUnits, "+units=ind-yd " );
-    }
-    else if( psDefn->UOMLength == Linear_Fathom )
-    {
-        strcpy( szUnits, "+units=fath " );
-    }
-    else if( psDefn->UOMLength == Linear_Mile_International_Nautical )
-    {
-        strcpy( szUnits, "+units=kmi " );
-    }
-    else
-    {
-        sprintf( szUnits, "+to_meter=%.10f", psDefn->UOMLengthInMeters );
-    }
-
-/* -------------------------------------------------------------------- */
-/*      false easting and northing are in meters and that is what       */
-/*      PROJ.4 wants regardless of the linear units.                    */
-/* -------------------------------------------------------------------- */
-    dfFalseEasting = psDefn->ProjParm[5];
-    dfFalseNorthing = psDefn->ProjParm[6];
-    
-/* ==================================================================== */
-/*      Handle general projection methods.                              */
-/* ==================================================================== */
- 
-/* -------------------------------------------------------------------- */
-/*      Geographic.                                                     */
-/* -------------------------------------------------------------------- */
-    if(psDefn->Model==ModelTypeGeographic)
-    {
-        sprintf(szProjection+strlen(szProjection),"+proj=latlong ");
-        
-    }
- 
-/* -------------------------------------------------------------------- */
-/*      UTM - special case override on transverse mercator so things    */
-/*      will be more meaningful to the user.                            */
-/* -------------------------------------------------------------------- */
-    else if( psDefn->MapSys == MapSys_UTM_North )
-    {
-        sprintf( szProjection+strlen(szProjection),
-                 "+proj=utm +zone=%d ",
-                 psDefn->Zone );
-    }
-    
-/* -------------------------------------------------------------------- */
-/*      Transverse Mercator                                             */
-/* -------------------------------------------------------------------- */
-    else if( psDefn->CTProjection == CT_TransverseMercator )
-    {
-        sprintf( szProjection+strlen(szProjection),
-           "+proj=tmerc +lat_0=%.9f +lon_0=%.9f +k=%f +x_0=%.3f +y_0=%.3f ",
-                 psDefn->ProjParm[0],
-                 psDefn->ProjParm[1],
-                 psDefn->ProjParm[4],
-                 dfFalseEasting,
-                 dfFalseNorthing );
-    }
-
-/* -------------------------------------------------------------------- */
-/*      Mercator							*/
-/* -------------------------------------------------------------------- */
-    else if( psDefn->CTProjection == CT_Mercator )
-    {
-        sprintf( szProjection+strlen(szProjection),
-           "+proj=merc +lat_ts=%.9f +lon_0=%.9f +k=%f +x_0=%.3f +y_0=%.3f ",
-                 psDefn->ProjParm[0],
-                 psDefn->ProjParm[1],
-                 psDefn->ProjParm[4],
-                 dfFalseEasting,
-                 dfFalseNorthing );
-    }
-
-/* -------------------------------------------------------------------- */
-/*      Cassini/Soldner                                                 */
-/* -------------------------------------------------------------------- */
-    else if( psDefn->CTProjection == CT_CassiniSoldner )
-    {
-        sprintf( szProjection+strlen(szProjection),
-                 "+proj=cass +lat_0=%.9f +lon_0=%.9f +x_0=%.3f +y_0=%.3f ",
-                 psDefn->ProjParm[0],
-                 psDefn->ProjParm[1],
-                 dfFalseEasting,
-                 dfFalseNorthing );
-    }
-
-/* -------------------------------------------------------------------- */
-/*      Oblique Stereographic - Should this really map onto             */
-/*      Stereographic?                                                  */
-/* -------------------------------------------------------------------- */
-    else if( psDefn->CTProjection == CT_ObliqueStereographic )
-    {
-        sprintf( szProjection+strlen(szProjection),
-           "+proj=stere +lat_0=%.9f +lon_0=%.9f +k=%f +x_0=%.3f +y_0=%.3f ",
-                 psDefn->ProjParm[0],
-                 psDefn->ProjParm[1],
-                 psDefn->ProjParm[4],
-                 dfFalseEasting,
-                 dfFalseNorthing );
-    }
-
-/* -------------------------------------------------------------------- */
-/*      Stereographic                                                   */
-/* -------------------------------------------------------------------- */
-    else if( psDefn->CTProjection == CT_Stereographic )
-    {
-        sprintf( szProjection+strlen(szProjection),
-           "+proj=stere +lat_0=%.9f +lon_0=%.9f +x_0=%.3f +y_0=%.3f ",
-                 psDefn->ProjParm[0],
-                 psDefn->ProjParm[1],
-                 dfFalseEasting,
-                 dfFalseNorthing );
-    }
-
-/* -------------------------------------------------------------------- */
-/*      Polar Stereographic                                             */
-/* -------------------------------------------------------------------- */
-    else if( psDefn->CTProjection == CT_PolarStereographic )
-    {
-        if( psDefn->ProjParm[0] > 0.0 )
-            sprintf( szProjection+strlen(szProjection),
-                     "+proj=stere +lat_0=90 +lat_ts=%.9f +lon_0=%.9f "
-                     "+k=%.9f +x_0=%.3f +y_0=%.3f ",
-                     psDefn->ProjParm[0],
-                     psDefn->ProjParm[1],
-                     psDefn->ProjParm[4],
-                     dfFalseEasting,
-                     dfFalseNorthing );
-        else
-            sprintf( szProjection+strlen(szProjection),
-                     "+proj=stere +lat_0=-90 +lat_ts=%.9f +lon_0=%.9f "
-                     "+k=%.9f +x_0=%.3f +y_0=%.3f ",
-                     psDefn->ProjParm[0],
-                     psDefn->ProjParm[1],
-                     psDefn->ProjParm[4],
-                     dfFalseEasting,
-                     dfFalseNorthing );
-    }
-
-/* -------------------------------------------------------------------- */
-/*      Equirectangular                                                 */
-/* -------------------------------------------------------------------- */
-    else if( psDefn->CTProjection == CT_Equirectangular )
-    {
-        sprintf( szProjection+strlen(szProjection),
-                 "+proj=eqc +lat_ts=%.9f +lon_0=%.9f +x_0=%.3f +y_0=%.3f ",
-                 psDefn->ProjParm[0],
-                 psDefn->ProjParm[1],
-                 dfFalseEasting,
-                 dfFalseNorthing );
-    }
-
-/* -------------------------------------------------------------------- */
-/*      Gnomonic                                                        */
-/* -------------------------------------------------------------------- */
-    else if( psDefn->CTProjection == CT_Gnomonic )
-    {
-        sprintf( szProjection+strlen(szProjection),
-                 "+proj=gnom +lat_0=%.9f +lon_0=%.9f +x_0=%.3f +y_0=%.3f ",
-                 psDefn->ProjParm[0],
-                 psDefn->ProjParm[1],
-                 dfFalseEasting,
-                 dfFalseNorthing );
-    }
-
-/* -------------------------------------------------------------------- */
-/*      Orthographic                                                    */
-/* -------------------------------------------------------------------- */
-    else if( psDefn->CTProjection == CT_Orthographic )
-    {
-        sprintf( szProjection+strlen(szProjection),
-                 "+proj=ortho +lat_0=%.9f +lon_0=%.9f +x_0=%.3f +y_0=%.3f ",
-                 psDefn->ProjParm[0],
-                 psDefn->ProjParm[1],
-                 dfFalseEasting,
-                 dfFalseNorthing );
-    }
-
-/* -------------------------------------------------------------------- */
-/*      Lambert Azimuthal Equal Area                                    */
-/* -------------------------------------------------------------------- */
-    else if( psDefn->CTProjection == CT_LambertAzimEqualArea )
-    {
-        sprintf( szProjection+strlen(szProjection),
-                 "+proj=laea +lat_0=%.9f +lon_0=%.9f +x_0=%.3f +y_0=%.3f ",
-                 psDefn->ProjParm[0],
-                 psDefn->ProjParm[1],
-                 dfFalseEasting,
-                 dfFalseNorthing );
-    }
-
-/* -------------------------------------------------------------------- */
-/*      Azimuthal Equidistant                                           */
-/* -------------------------------------------------------------------- */
-    else if( psDefn->CTProjection == CT_AzimuthalEquidistant )
-    {
-        sprintf( szProjection+strlen(szProjection),
-           "+proj=aeqd +lat_0=%.9f +lon_0=%.9f +x_0=%.3f +y_0=%.3f ",
-                 psDefn->ProjParm[0],
-                 psDefn->ProjParm[1],
-                 dfFalseEasting,
-                 dfFalseNorthing );
-    }
-
-/* -------------------------------------------------------------------- */
-/*      Miller Cylindrical                                              */
-/* -------------------------------------------------------------------- */
-    else if( psDefn->CTProjection == CT_MillerCylindrical )
-    {
-        sprintf( szProjection+strlen(szProjection),
-           "+proj=mill +lat_0=%.9f +lon_0=%.9f +x_0=%.3f +y_0=%.3f +R_A ",
-                 psDefn->ProjParm[0],
-                 psDefn->ProjParm[1],
-                 dfFalseEasting,
-                 dfFalseNorthing );
-    }
-
-/* -------------------------------------------------------------------- */
-/*      Polyconic                                                       */
-/* -------------------------------------------------------------------- */
-    else if( psDefn->CTProjection == CT_Polyconic )
-    {
-        sprintf( szProjection+strlen(szProjection),
-           "+proj=poly +lat_0=%.9f +lon_0=%.9f +x_0=%.3f +y_0=%.3f ",
-                 psDefn->ProjParm[0],
-                 psDefn->ProjParm[1],
-                 dfFalseEasting,
-                 dfFalseNorthing );
-    }
-
-/* -------------------------------------------------------------------- */
-/*      AlbersEqualArea                                                 */
-/* -------------------------------------------------------------------- */
-    else if( psDefn->CTProjection == CT_AlbersEqualArea )
-    {
-        sprintf( szProjection+strlen(szProjection),
-                 "+proj=aea +lat_1=%.9f +lat_2=%.9f +lat_0=%.9f +lon_0=%.9f"
-                 " +x_0=%.3f +y_0=%.3f ",
-                 psDefn->ProjParm[0],
-                 psDefn->ProjParm[1],
-                 psDefn->ProjParm[2],
-                 psDefn->ProjParm[3],
-                 dfFalseEasting,
-                 dfFalseNorthing );
-    }
-    
-/* -------------------------------------------------------------------- */
-/*      EquidistantConic                                                */
-/* -------------------------------------------------------------------- */
-    else if( psDefn->CTProjection == CT_EquidistantConic )
-    {
-        sprintf( szProjection+strlen(szProjection),
-                 "+proj=eqdc +lat_1=%.9f +lat_2=%.9f +lat_0=%.9f +lon_0=%.9f"
-                 " +x_0=%.3f +y_0=%.3f ",
-                 psDefn->ProjParm[0],
-                 psDefn->ProjParm[1],
-                 psDefn->ProjParm[2],
-                 psDefn->ProjParm[3],
-                 dfFalseEasting,
-                 dfFalseNorthing );
-    }
-    
-/* -------------------------------------------------------------------- */
-/*      Robinson                                                        */
-/* -------------------------------------------------------------------- */
-    else if( psDefn->CTProjection == CT_Robinson )
-    {
-        sprintf( szProjection+strlen(szProjection),
-                 "+proj=robin +lon_0=%.9f +x_0=%.3f +y_0=%.3f ",
-                 psDefn->ProjParm[1],
-                 dfFalseEasting,
-                 dfFalseNorthing );
-    }
-    
-/* -------------------------------------------------------------------- */
-/*      VanDerGrinten                                                   */
-/* -------------------------------------------------------------------- */
-    else if( psDefn->CTProjection == CT_VanDerGrinten )
-    {
-        sprintf( szProjection+strlen(szProjection),
-                 "+proj=vandg +lon_0=%.9f +x_0=%.3f +y_0=%.3f +R_A ",
-                 psDefn->ProjParm[1],
-                 dfFalseEasting,
-                 dfFalseNorthing );
-    }
-    
-/* -------------------------------------------------------------------- */
-/*      Sinusoidal                                                      */
-/* -------------------------------------------------------------------- */
-    else if( psDefn->CTProjection == CT_Sinusoidal )
-    {
-        sprintf( szProjection+strlen(szProjection),
-                 "+proj=sinu +lon_0=%.9f +x_0=%.3f +y_0=%.3f ",
-                 psDefn->ProjParm[1],
-                 dfFalseEasting,
-                 dfFalseNorthing );
-    }
-    
-/* -------------------------------------------------------------------- */
-/*      LambertConfConic_2SP                                            */
-/* -------------------------------------------------------------------- */
-    else if( psDefn->CTProjection == CT_LambertConfConic_2SP )
-    {
-        sprintf( szProjection+strlen(szProjection),
-                 "+proj=lcc +lat_0=%.9f +lon_0=%.9f +lat_1=%.9f +lat_2=%.9f "
-                 " +x_0=%.3f +y_0=%.3f ",
-                 psDefn->ProjParm[0],
-                 psDefn->ProjParm[1],
-                 psDefn->ProjParm[2],
-                 psDefn->ProjParm[3],
-                 dfFalseEasting,
-                 dfFalseNorthing );
-    }
-    
-/* -------------------------------------------------------------------- */
-/*      LambertConfConic_1SP                                            */
-/* -------------------------------------------------------------------- */
-    else if( psDefn->CTProjection == CT_LambertConfConic_1SP )
-    {
-        sprintf( szProjection+strlen(szProjection),
-                 "+proj=lcc +lat_0=%.9f +lat_1=%.9f +lon_0=%.9f"
-                 " +k_0=%.9f +x_0=%.3f +y_0=%.3f ",
-                 psDefn->ProjParm[0],
-                 psDefn->ProjParm[0],
-                 psDefn->ProjParm[1],
-                 psDefn->ProjParm[4],
-                 psDefn->ProjParm[5],
-                 psDefn->ProjParm[6] );
-    }
-    
-/* -------------------------------------------------------------------- */
-/*      CT_CylindricalEqualArea                                         */
-/* -------------------------------------------------------------------- */
-    else if( psDefn->CTProjection == CT_CylindricalEqualArea )
-    {
-        sprintf( szProjection+strlen(szProjection),
-                 "+proj=cea +lat_ts=%.9f +lon_0=%.9f "
-                 " +x_0=%.3f +y_0=%.3f ",
-                 psDefn->ProjParm[0],
-                 psDefn->ProjParm[1],
-                 psDefn->ProjParm[5],
-                 psDefn->ProjParm[6] );
-    }
-    
-/* -------------------------------------------------------------------- */
-/*      NewZealandMapGrid                                               */
-/* -------------------------------------------------------------------- */
-    else if( psDefn->CTProjection == CT_NewZealandMapGrid )
-    {
-        /* this appears to be an unsupported formulation with PROJ.4 */
-    }
-    
-/* -------------------------------------------------------------------- */
-/*      Transverse Mercator - south oriented.                           */
-/* -------------------------------------------------------------------- */
-    else if( psDefn->CTProjection == CT_TransvMercator_SouthOriented )
-    {
-        /* this appears to be an unsupported formulation with PROJ.4 */
-    }
-    
-/* -------------------------------------------------------------------- */
-/*      ObliqueMercator (Hotine)                                        */
-/* -------------------------------------------------------------------- */
-    else if( psDefn->CTProjection == CT_ObliqueMercator )
-    {
-        /* not clear how ProjParm[3] - angle from rectified to skewed grid -
-           should be applied ... see the +not_rot flag for PROJ.4.
-           Just ignoring for now. */
-
-        sprintf( szProjection+strlen(szProjection),
-                 "+proj=omerc +lat_0=%.9f +lonc=%.9f +alpha=%.9f"
-                 " +k=%.9f +x_0=%.3f +y_0=%.3f ",
-                 psDefn->ProjParm[0],
-                 psDefn->ProjParm[1],
-                 psDefn->ProjParm[2],
-                 psDefn->ProjParm[4],
-                 psDefn->ProjParm[5],
-                 psDefn->ProjParm[6] );
-    }
-
-/* ==================================================================== */
-/*      Handle ellipsoid information.                                   */
-/* ==================================================================== */
-    if( psDefn->Ellipsoid == Ellipse_WGS_84 )
-        strcat( szProjection, "+ellps=WGS84 " );
-    else if( psDefn->Ellipsoid == Ellipse_Clarke_1866 )
-        strcat( szProjection, "+ellps=clrk66 " );
-    else if( psDefn->Ellipsoid == Ellipse_Clarke_1880 )
-        strcat( szProjection, "+ellps=clrk80 " );
-    else if( psDefn->Ellipsoid == Ellipse_GRS_1980 )
-        strcat( szProjection, "+ellps=GRS80 " );
-    else
-    {
-        if( psDefn->SemiMajor != 0.0 && psDefn->SemiMinor != 0.0 )
-        {
-            sprintf( szProjection+strlen(szProjection),
-                     "+a=%.3f +b=%.3f ",
-                     psDefn->SemiMajor,
-                     psDefn->SemiMinor );
-        }
-    }
-
-    strcat( szProjection, szUnits );
-
-    return( strdup( szProjection ) );
-}
-
-#if !defined(HAVE_LIBPROJ) || !defined(HAVE_PROJECTS_H)
-
-int GTIFProj4ToLatLong( GTIFDefn * psDefn, int nPoints,
-                        double *padfX, double *padfY )
-{
-    (void) psDefn;
-    (void) nPoints;
-    (void) padfX;
-    (void) padfY;
-#ifdef DEBUG    
-    fprintf( stderr,
-             "GTIFProj4ToLatLong() - PROJ.4 support not compiled in.\n" );
-#endif    
-    return FALSE;
-}
-
-int GTIFProj4FromLatLong( GTIFDefn * psDefn, int nPoints,
-                          double *padfX, double *padfY )
-{
-    (void) psDefn;
-    (void) nPoints;
-    (void) padfX;
-    (void) padfY;
-#ifdef DEBUG    
-    fprintf( stderr,
-             "GTIFProj4FromLatLong() - PROJ.4 support not compiled in.\n" );
-#endif    
-    return FALSE;
-}
-#else
-
-#include "projects.h"
-
-#ifdef USE_PROJUV
-#  define UV projUV
-#endif
-
-/************************************************************************/
-/*                        GTIFProj4FromLatLong()                        */
-/*                                                                      */
-/*      Convert lat/long values to projected coordinate for a           */
-/*      particular definition.                                          */
-/************************************************************************/
-
-int GTIFProj4FromLatLong( GTIFDefn * psDefn, int nPoints,
-                          double *padfX, double *padfY )
-
-{
-    char	*pszProjection, **papszArgs;
-    PJ		*psPJ;
-    int		i;
-    
-/* -------------------------------------------------------------------- */
-/*      Get a projection definition.                                    */
-/* -------------------------------------------------------------------- */
-    pszProjection = GTIFGetProj4Defn( psDefn );
-
-    if( pszProjection == NULL )
-        return FALSE;
-
-/* -------------------------------------------------------------------- */
-/*      Parse into tokens for pj_init(), and initialize the projection. */
-/* -------------------------------------------------------------------- */
-    
-    papszArgs = CSLTokenizeStringComplex( pszProjection, " +", TRUE, FALSE );
-    free( pszProjection );
-
-    psPJ = pj_init( CSLCount(papszArgs), papszArgs );
-
-    CSLDestroy( papszArgs );
-
-    if( psPJ == NULL )
-    {
-        return FALSE;
-    }
-
-/* -------------------------------------------------------------------- */
-/*      Process each of the points.                                     */
-/* -------------------------------------------------------------------- */
-    for( i = 0; i < nPoints; i++ )
-    {
-        UV	sUV;
-
-        sUV.u = padfX[i] * DEG_TO_RAD;
-        sUV.v = padfY[i] * DEG_TO_RAD;
-
-        sUV = pj_fwd( sUV, psPJ );
-
-        padfX[i] = sUV.u;
-        padfY[i] = sUV.v;
-    }
-
-    pj_free( psPJ );
-
-    return TRUE;
-}
-
-/************************************************************************/
-/*                         GTIFProj4ToLatLong()                         */
-/*                                                                      */
-/*      Convert projection coordinates to lat/long for a particular     */
-/*      definition.                                                     */
-/************************************************************************/
-
-int GTIFProj4ToLatLong( GTIFDefn * psDefn, int nPoints,
-                        double *padfX, double *padfY )
-
-{
-    char	*pszProjection, **papszArgs;
-    PJ		*psPJ;
-    int		i;
-    
-/* -------------------------------------------------------------------- */
-/*      Get a projection definition.                                    */
-/* -------------------------------------------------------------------- */
-    pszProjection = GTIFGetProj4Defn( psDefn );
-
-    if( pszProjection == NULL )
-        return FALSE;
-
-/* -------------------------------------------------------------------- */
-/*      Parse into tokens for pj_init(), and initialize the projection. */
-/* -------------------------------------------------------------------- */
-    
-    papszArgs = CSLTokenizeStringComplex( pszProjection, " +", TRUE, FALSE );
-    free( pszProjection );
-
-    psPJ = pj_init( CSLCount(papszArgs), papszArgs );
-
-    CSLDestroy( papszArgs );
-
-    if( psPJ == NULL )
-    {
-        return FALSE;
-    }
-
-/* -------------------------------------------------------------------- */
-/*      Process each of the points.                                     */
-/* -------------------------------------------------------------------- */
-    for( i = 0; i < nPoints; i++ )
-    {
-        UV	sUV;
-
-        sUV.u = padfX[i];
-        sUV.v = padfY[i];
-
-        sUV = pj_inv( sUV, psPJ );
-
-        padfX[i] = sUV.u * RAD_TO_DEG;
-        padfY[i] = sUV.v * RAD_TO_DEG;
-    }
-
-    pj_free( psPJ );
-
-    return TRUE;
-}
-
-
-#endif /* has projects.h and -lproj */
-
diff --git a/src/tiff/geotiffio.h b/src/tiff/geotiffio.h
deleted file mode 100644
index 5880664..0000000
--- a/src/tiff/geotiffio.h
+++ /dev/null
@@ -1,16 +0,0 @@
-/* 
- * geotiffio.h
- * 
- * Standard include file for geotiff, including all
- *  key and code definitions.
- */
-
-
-#ifndef __geotiffio_h
-#define __geotiffio_h
-
-#include "geotiff.h"  /* public key interface */
-#include "geovalues.h" /* key code definitions */
-
-#endif /* __geotiffio_h */
-
diff --git a/src/tiff/geovalues.h b/src/tiff/geovalues.h
deleted file mode 100644
index 9834534..0000000
--- a/src/tiff/geovalues.h
+++ /dev/null
@@ -1,120 +0,0 @@
-/**********************************************************************
- *
- *  geovalues.h - Public registry for valid GEOTIFF  key-values.
- *
- *   Written By: Niles D. Ritter
- *
- *  Revision History:
- *
- *     Rev.#  Author     Date     Key Changes/Additions
- *     -----  ------  ----------  -------------------------------------
- *      0.1     ndr    10 Jun 95     Inital Beta Release
- *      0.2     ndr    12 Jul 95     New EPSG Tables installed.
- *      0.2.1   ndr    28 Jul 95     Added ModelType aliases to Model's
- *      1.0     ndr    18 Sep 95     Promoted to Revision 1.0
- *
- **********************************************************************/
-
-#ifndef __geovalues_h_
-#define __geovalues_h_
-
-/* If code values are added or modified, the "GvCurrentMinorRev" 
- * number should be incremented here. If new Keys are added, then the
- * GvCurrentRevision number should be incremented instead, and the
- * GvCurrentMinorRev should be reset to zero (see "geokeys.h").
- *
- * In addition, any changes here should be reflected in "geo_names.c"
- *
- */
- 
-#define GvCurrentMinorRev  0  /* First Major Rev EPSG Code Release  */
-
-
-/*
- * Universal key values -- defined for consistency
- */
-#define KvUndefined         0
-#define KvUserDefined   32767
-
-#ifdef ValuePair
-#  undef ValuePair
-#endif
-#define ValuePair(name,value)    name = value,
-
-/*
- * The section numbers refer to the GeoTIFF Specification section
- * in which the code values are documented.
- */
- 
-/************************************************************
- *         6.3.1 GeoTIFF General Codes
- ************************************************************/
-
-/* 6.3.1.1 Model Type Codes */
-typedef enum {
-	ModelTypeProjected  = 1,  /* Projection Coordinate System */
-	ModelTypeGeographic = 2,  /* Geographic latitude-longitude System */
-	ModelTypeGeocentric = 3,   /* Geocentric (X,Y,Z) Coordinate System */
-	ModelProjected  = ModelTypeProjected,   /* alias */
-	ModelGeographic = ModelTypeGeographic,  /* alias */
-	ModelGeocentric = ModelTypeGeocentric   /* alias */
-} modeltype_t;
-
-/* 6.3.1.2 Raster Type Codes */
-typedef enum {
-	RasterPixelIsArea   = 1,  /* Standard pixel-fills-grid-cell */
-	RasterPixelIsPoint  = 2   /* Pixel-at-grid-vertex */
-} rastertype_t;
-
-typedef enum {
-#  include "epsg_gcs.inc"
-  geographic_end
-} geographic_t;
-
-typedef enum {
-#  include "epsg_datum.inc"
-   geodeticdatum_end
-} geodeticdatum_t;
-
-typedef enum {
-#  include "epsg_units.inc"
-   Unit_End
-} geounits_t;
-
-typedef enum {
-#  include "epsg_ellipse.inc"
-    ellipsoid_end
-} ellipsoid_t;
-
-typedef enum {
-#  include "epsg_pm.inc"
-   primemeridian_end
-} primemeridian_t;
-
-typedef enum {
-#  include "epsg_pcs.inc"
-   pcstype_end
-} pcstype_t;
-
-typedef enum {
-#  include "epsg_proj.inc"
-   projection_end
-} projection_t;
-
-typedef enum {
-#  include "geo_ctrans.inc"
-   coordtrans_end
-} coordtrans_t;
-
-typedef enum {
-#  include "epsg_vertcs.inc"
-   vertcs_end
-} vertcstype_t;
-
-
-typedef enum {
-	VDatumBase = 1
-} vdatum_t;
-
-#endif /* __geovalues_h_ */
-
diff --git a/src/tiff/port.h b/src/tiff/port.h
deleted file mode 100644
index 293ad05..0000000
--- a/src/tiff/port.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Warning, this file was automatically created by the TIFF configure script
- * VERSION:	 v3.4033
- * DATE:	 Fri Dec 12 17:10:08 EDT 1997
- * TARGET:	 sparc-sun-solaris2.5.1
- * CCOMPILER:	 /usr/local/bin/gcc-2.7.2
- */
-#ifndef _PORT_
-#define _PORT_ 1
-#ifdef __cplusplus
-extern "C" {
-#endif
-#include <sys/types.h>
-#define HOST_FILLORDER FILLORDER_LSB2MSB
-#define HOST_BIGENDIAN	0
-#define HAVE_MMAP 1
-#include <stdio.h>
-#include <unistd.h>
-#include <string.h>
-#include <stdlib.h>
-#include <fcntl.h>
-typedef double dblparam_t;
-#ifdef __STRICT_ANSI__
-#define	INLINE	__inline__
-#else
-#define	INLINE	inline
-#endif
-#define GLOBALDATA(TYPE,NAME)	extern TYPE NAME
-#ifdef __cplusplus
-}
-#endif
-#endif
diff --git a/src/tiff/t4.h b/src/tiff/t4.h
deleted file mode 100644
index e358233..0000000
--- a/src/tiff/t4.h
+++ /dev/null
@@ -1,285 +0,0 @@
-/* $Id: t4.h 4825 2006-08-16 13:01:53Z lubia $ */
-
-/*
- * Copyright (c) 1988-1997 Sam Leffler
- * Copyright (c) 1991-1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and 
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- * 
- * 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 SAM LEFFLER OR SILICON GRAPHICS 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.
- */
-
-#ifndef _T4_
-#define	_T4_
-/*
- * CCITT T.4 1D Huffman runlength codes and
- * related definitions.  Given the small sizes
- * of these tables it does not seem
- * worthwhile to make code & length 8 bits.
- */
-typedef struct tableentry {
-    unsigned short length;	/* bit length of g3 code */
-    unsigned short code;	/* g3 code */
-    short	runlen;		/* run length in bits */
-} tableentry;
-
-#define	EOL	0x001	/* EOL code value - 0000 0000 0000 1 */
-
-/* status values returned instead of a run length */
-#define	G3CODE_EOL	-1	/* NB: ACT_EOL - ACT_WRUNT */
-#define	G3CODE_INVALID	-2	/* NB: ACT_INVALID - ACT_WRUNT */
-#define	G3CODE_EOF	-3	/* end of input data */
-#define	G3CODE_INCOMP	-4	/* incomplete run code */
-
-/*
- * Note that these tables are ordered such that the
- * index into the table is known to be either the
- * run length, or (run length / 64) + a fixed offset.
- *
- * NB: The G3CODE_INVALID entries are only used
- *     during state generation (see mkg3states.c).
- */
-#ifdef G3CODES
-const tableentry TIFFFaxWhiteCodes[] = {
-    { 8, 0x35, 0 },	/* 0011 0101 */
-    { 6, 0x7, 1 },	/* 0001 11 */
-    { 4, 0x7, 2 },	/* 0111 */
-    { 4, 0x8, 3 },	/* 1000 */
-    { 4, 0xB, 4 },	/* 1011 */
-    { 4, 0xC, 5 },	/* 1100 */
-    { 4, 0xE, 6 },	/* 1110 */
-    { 4, 0xF, 7 },	/* 1111 */
-    { 5, 0x13, 8 },	/* 1001 1 */
-    { 5, 0x14, 9 },	/* 1010 0 */
-    { 5, 0x7, 10 },	/* 0011 1 */
-    { 5, 0x8, 11 },	/* 0100 0 */
-    { 6, 0x8, 12 },	/* 0010 00 */
-    { 6, 0x3, 13 },	/* 0000 11 */
-    { 6, 0x34, 14 },	/* 1101 00 */
-    { 6, 0x35, 15 },	/* 1101 01 */
-    { 6, 0x2A, 16 },	/* 1010 10 */
-    { 6, 0x2B, 17 },	/* 1010 11 */
-    { 7, 0x27, 18 },	/* 0100 111 */
-    { 7, 0xC, 19 },	/* 0001 100 */
-    { 7, 0x8, 20 },	/* 0001 000 */
-    { 7, 0x17, 21 },	/* 0010 111 */
-    { 7, 0x3, 22 },	/* 0000 011 */
-    { 7, 0x4, 23 },	/* 0000 100 */
-    { 7, 0x28, 24 },	/* 0101 000 */
-    { 7, 0x2B, 25 },	/* 0101 011 */
-    { 7, 0x13, 26 },	/* 0010 011 */
-    { 7, 0x24, 27 },	/* 0100 100 */
-    { 7, 0x18, 28 },	/* 0011 000 */
-    { 8, 0x2, 29 },	/* 0000 0010 */
-    { 8, 0x3, 30 },	/* 0000 0011 */
-    { 8, 0x1A, 31 },	/* 0001 1010 */
-    { 8, 0x1B, 32 },	/* 0001 1011 */
-    { 8, 0x12, 33 },	/* 0001 0010 */
-    { 8, 0x13, 34 },	/* 0001 0011 */
-    { 8, 0x14, 35 },	/* 0001 0100 */
-    { 8, 0x15, 36 },	/* 0001 0101 */
-    { 8, 0x16, 37 },	/* 0001 0110 */
-    { 8, 0x17, 38 },	/* 0001 0111 */
-    { 8, 0x28, 39 },	/* 0010 1000 */
-    { 8, 0x29, 40 },	/* 0010 1001 */
-    { 8, 0x2A, 41 },	/* 0010 1010 */
-    { 8, 0x2B, 42 },	/* 0010 1011 */
-    { 8, 0x2C, 43 },	/* 0010 1100 */
-    { 8, 0x2D, 44 },	/* 0010 1101 */
-    { 8, 0x4, 45 },	/* 0000 0100 */
-    { 8, 0x5, 46 },	/* 0000 0101 */
-    { 8, 0xA, 47 },	/* 0000 1010 */
-    { 8, 0xB, 48 },	/* 0000 1011 */
-    { 8, 0x52, 49 },	/* 0101 0010 */
-    { 8, 0x53, 50 },	/* 0101 0011 */
-    { 8, 0x54, 51 },	/* 0101 0100 */
-    { 8, 0x55, 52 },	/* 0101 0101 */
-    { 8, 0x24, 53 },	/* 0010 0100 */
-    { 8, 0x25, 54 },	/* 0010 0101 */
-    { 8, 0x58, 55 },	/* 0101 1000 */
-    { 8, 0x59, 56 },	/* 0101 1001 */
-    { 8, 0x5A, 57 },	/* 0101 1010 */
-    { 8, 0x5B, 58 },	/* 0101 1011 */
-    { 8, 0x4A, 59 },	/* 0100 1010 */
-    { 8, 0x4B, 60 },	/* 0100 1011 */
-    { 8, 0x32, 61 },	/* 0011 0010 */
-    { 8, 0x33, 62 },	/* 0011 0011 */
-    { 8, 0x34, 63 },	/* 0011 0100 */
-    { 5, 0x1B, 64 },	/* 1101 1 */
-    { 5, 0x12, 128 },	/* 1001 0 */
-    { 6, 0x17, 192 },	/* 0101 11 */
-    { 7, 0x37, 256 },	/* 0110 111 */
-    { 8, 0x36, 320 },	/* 0011 0110 */
-    { 8, 0x37, 384 },	/* 0011 0111 */
-    { 8, 0x64, 448 },	/* 0110 0100 */
-    { 8, 0x65, 512 },	/* 0110 0101 */
-    { 8, 0x68, 576 },	/* 0110 1000 */
-    { 8, 0x67, 640 },	/* 0110 0111 */
-    { 9, 0xCC, 704 },	/* 0110 0110 0 */
-    { 9, 0xCD, 768 },	/* 0110 0110 1 */
-    { 9, 0xD2, 832 },	/* 0110 1001 0 */
-    { 9, 0xD3, 896 },	/* 0110 1001 1 */
-    { 9, 0xD4, 960 },	/* 0110 1010 0 */
-    { 9, 0xD5, 1024 },	/* 0110 1010 1 */
-    { 9, 0xD6, 1088 },	/* 0110 1011 0 */
-    { 9, 0xD7, 1152 },	/* 0110 1011 1 */
-    { 9, 0xD8, 1216 },	/* 0110 1100 0 */
-    { 9, 0xD9, 1280 },	/* 0110 1100 1 */
-    { 9, 0xDA, 1344 },	/* 0110 1101 0 */
-    { 9, 0xDB, 1408 },	/* 0110 1101 1 */
-    { 9, 0x98, 1472 },	/* 0100 1100 0 */
-    { 9, 0x99, 1536 },	/* 0100 1100 1 */
-    { 9, 0x9A, 1600 },	/* 0100 1101 0 */
-    { 6, 0x18, 1664 },	/* 0110 00 */
-    { 9, 0x9B, 1728 },	/* 0100 1101 1 */
-    { 11, 0x8, 1792 },	/* 0000 0001 000 */
-    { 11, 0xC, 1856 },	/* 0000 0001 100 */
-    { 11, 0xD, 1920 },	/* 0000 0001 101 */
-    { 12, 0x12, 1984 },	/* 0000 0001 0010 */
-    { 12, 0x13, 2048 },	/* 0000 0001 0011 */
-    { 12, 0x14, 2112 },	/* 0000 0001 0100 */
-    { 12, 0x15, 2176 },	/* 0000 0001 0101 */
-    { 12, 0x16, 2240 },	/* 0000 0001 0110 */
-    { 12, 0x17, 2304 },	/* 0000 0001 0111 */
-    { 12, 0x1C, 2368 },	/* 0000 0001 1100 */
-    { 12, 0x1D, 2432 },	/* 0000 0001 1101 */
-    { 12, 0x1E, 2496 },	/* 0000 0001 1110 */
-    { 12, 0x1F, 2560 },	/* 0000 0001 1111 */
-    { 12, 0x1, G3CODE_EOL },	/* 0000 0000 0001 */
-    { 9, 0x1, G3CODE_INVALID },	/* 0000 0000 1 */
-    { 10, 0x1, G3CODE_INVALID },	/* 0000 0000 01 */
-    { 11, 0x1, G3CODE_INVALID },	/* 0000 0000 001 */
-    { 12, 0x0, G3CODE_INVALID },	/* 0000 0000 0000 */
-};
-
-const tableentry TIFFFaxBlackCodes[] = {
-    { 10, 0x37, 0 },	/* 0000 1101 11 */
-    { 3, 0x2, 1 },	/* 010 */
-    { 2, 0x3, 2 },	/* 11 */
-    { 2, 0x2, 3 },	/* 10 */
-    { 3, 0x3, 4 },	/* 011 */
-    { 4, 0x3, 5 },	/* 0011 */
-    { 4, 0x2, 6 },	/* 0010 */
-    { 5, 0x3, 7 },	/* 0001 1 */
-    { 6, 0x5, 8 },	/* 0001 01 */
-    { 6, 0x4, 9 },	/* 0001 00 */
-    { 7, 0x4, 10 },	/* 0000 100 */
-    { 7, 0x5, 11 },	/* 0000 101 */
-    { 7, 0x7, 12 },	/* 0000 111 */
-    { 8, 0x4, 13 },	/* 0000 0100 */
-    { 8, 0x7, 14 },	/* 0000 0111 */
-    { 9, 0x18, 15 },	/* 0000 1100 0 */
-    { 10, 0x17, 16 },	/* 0000 0101 11 */
-    { 10, 0x18, 17 },	/* 0000 0110 00 */
-    { 10, 0x8, 18 },	/* 0000 0010 00 */
-    { 11, 0x67, 19 },	/* 0000 1100 111 */
-    { 11, 0x68, 20 },	/* 0000 1101 000 */
-    { 11, 0x6C, 21 },	/* 0000 1101 100 */
-    { 11, 0x37, 22 },	/* 0000 0110 111 */
-    { 11, 0x28, 23 },	/* 0000 0101 000 */
-    { 11, 0x17, 24 },	/* 0000 0010 111 */
-    { 11, 0x18, 25 },	/* 0000 0011 000 */
-    { 12, 0xCA, 26 },	/* 0000 1100 1010 */
-    { 12, 0xCB, 27 },	/* 0000 1100 1011 */
-    { 12, 0xCC, 28 },	/* 0000 1100 1100 */
-    { 12, 0xCD, 29 },	/* 0000 1100 1101 */
-    { 12, 0x68, 30 },	/* 0000 0110 1000 */
-    { 12, 0x69, 31 },	/* 0000 0110 1001 */
-    { 12, 0x6A, 32 },	/* 0000 0110 1010 */
-    { 12, 0x6B, 33 },	/* 0000 0110 1011 */
-    { 12, 0xD2, 34 },	/* 0000 1101 0010 */
-    { 12, 0xD3, 35 },	/* 0000 1101 0011 */
-    { 12, 0xD4, 36 },	/* 0000 1101 0100 */
-    { 12, 0xD5, 37 },	/* 0000 1101 0101 */
-    { 12, 0xD6, 38 },	/* 0000 1101 0110 */
-    { 12, 0xD7, 39 },	/* 0000 1101 0111 */
-    { 12, 0x6C, 40 },	/* 0000 0110 1100 */
-    { 12, 0x6D, 41 },	/* 0000 0110 1101 */
-    { 12, 0xDA, 42 },	/* 0000 1101 1010 */
-    { 12, 0xDB, 43 },	/* 0000 1101 1011 */
-    { 12, 0x54, 44 },	/* 0000 0101 0100 */
-    { 12, 0x55, 45 },	/* 0000 0101 0101 */
-    { 12, 0x56, 46 },	/* 0000 0101 0110 */
-    { 12, 0x57, 47 },	/* 0000 0101 0111 */
-    { 12, 0x64, 48 },	/* 0000 0110 0100 */
-    { 12, 0x65, 49 },	/* 0000 0110 0101 */
-    { 12, 0x52, 50 },	/* 0000 0101 0010 */
-    { 12, 0x53, 51 },	/* 0000 0101 0011 */
-    { 12, 0x24, 52 },	/* 0000 0010 0100 */
-    { 12, 0x37, 53 },	/* 0000 0011 0111 */
-    { 12, 0x38, 54 },	/* 0000 0011 1000 */
-    { 12, 0x27, 55 },	/* 0000 0010 0111 */
-    { 12, 0x28, 56 },	/* 0000 0010 1000 */
-    { 12, 0x58, 57 },	/* 0000 0101 1000 */
-    { 12, 0x59, 58 },	/* 0000 0101 1001 */
-    { 12, 0x2B, 59 },	/* 0000 0010 1011 */
-    { 12, 0x2C, 60 },	/* 0000 0010 1100 */
-    { 12, 0x5A, 61 },	/* 0000 0101 1010 */
-    { 12, 0x66, 62 },	/* 0000 0110 0110 */
-    { 12, 0x67, 63 },	/* 0000 0110 0111 */
-    { 10, 0xF, 64 },	/* 0000 0011 11 */
-    { 12, 0xC8, 128 },	/* 0000 1100 1000 */
-    { 12, 0xC9, 192 },	/* 0000 1100 1001 */
-    { 12, 0x5B, 256 },	/* 0000 0101 1011 */
-    { 12, 0x33, 320 },	/* 0000 0011 0011 */
-    { 12, 0x34, 384 },	/* 0000 0011 0100 */
-    { 12, 0x35, 448 },	/* 0000 0011 0101 */
-    { 13, 0x6C, 512 },	/* 0000 0011 0110 0 */
-    { 13, 0x6D, 576 },	/* 0000 0011 0110 1 */
-    { 13, 0x4A, 640 },	/* 0000 0010 0101 0 */
-    { 13, 0x4B, 704 },	/* 0000 0010 0101 1 */
-    { 13, 0x4C, 768 },	/* 0000 0010 0110 0 */
-    { 13, 0x4D, 832 },	/* 0000 0010 0110 1 */
-    { 13, 0x72, 896 },	/* 0000 0011 1001 0 */
-    { 13, 0x73, 960 },	/* 0000 0011 1001 1 */
-    { 13, 0x74, 1024 },	/* 0000 0011 1010 0 */
-    { 13, 0x75, 1088 },	/* 0000 0011 1010 1 */
-    { 13, 0x76, 1152 },	/* 0000 0011 1011 0 */
-    { 13, 0x77, 1216 },	/* 0000 0011 1011 1 */
-    { 13, 0x52, 1280 },	/* 0000 0010 1001 0 */
-    { 13, 0x53, 1344 },	/* 0000 0010 1001 1 */
-    { 13, 0x54, 1408 },	/* 0000 0010 1010 0 */
-    { 13, 0x55, 1472 },	/* 0000 0010 1010 1 */
-    { 13, 0x5A, 1536 },	/* 0000 0010 1101 0 */
-    { 13, 0x5B, 1600 },	/* 0000 0010 1101 1 */
-    { 13, 0x64, 1664 },	/* 0000 0011 0010 0 */
-    { 13, 0x65, 1728 },	/* 0000 0011 0010 1 */
-    { 11, 0x8, 1792 },	/* 0000 0001 000 */
-    { 11, 0xC, 1856 },	/* 0000 0001 100 */
-    { 11, 0xD, 1920 },	/* 0000 0001 101 */
-    { 12, 0x12, 1984 },	/* 0000 0001 0010 */
-    { 12, 0x13, 2048 },	/* 0000 0001 0011 */
-    { 12, 0x14, 2112 },	/* 0000 0001 0100 */
-    { 12, 0x15, 2176 },	/* 0000 0001 0101 */
-    { 12, 0x16, 2240 },	/* 0000 0001 0110 */
-    { 12, 0x17, 2304 },	/* 0000 0001 0111 */
-    { 12, 0x1C, 2368 },	/* 0000 0001 1100 */
-    { 12, 0x1D, 2432 },	/* 0000 0001 1101 */
-    { 12, 0x1E, 2496 },	/* 0000 0001 1110 */
-    { 12, 0x1F, 2560 },	/* 0000 0001 1111 */
-    { 12, 0x1, G3CODE_EOL },	/* 0000 0000 0001 */
-    { 9, 0x1, G3CODE_INVALID },	/* 0000 0000 1 */
-    { 10, 0x1, G3CODE_INVALID },	/* 0000 0000 01 */
-    { 11, 0x1, G3CODE_INVALID },	/* 0000 0000 001 */
-    { 12, 0x0, G3CODE_INVALID },	/* 0000 0000 0000 */
-};
-#else
-extern	const tableentry TIFFFaxWhiteCodes[];
-extern	const tableentry TIFFFaxBlackCodes[];
-#endif
-#endif /* _T4_ */
diff --git a/src/tiff/tif_aux.c b/src/tiff/tif_aux.c
deleted file mode 100644
index db7caeb..0000000
--- a/src/tiff/tif_aux.c
+++ /dev/null
@@ -1,267 +0,0 @@
-/* $Id: tif_aux.c 4825 2006-08-16 13:01:53Z lubia $ */
-
-/*
- * Copyright (c) 1991-1997 Sam Leffler
- * Copyright (c) 1991-1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and 
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- * 
- * 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 SAM LEFFLER OR SILICON GRAPHICS 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.
- */
-
-/*
- * TIFF Library.
- *
- * Auxiliary Support Routines.
- */
-#include "tiffiop.h"
-#include "tif_predict.h"
-#include <math.h>
-
-tdata_t
-_TIFFCheckMalloc(TIFF* tif, size_t nmemb, size_t elem_size, const char* what)
-{
-	tdata_t cp = NULL;
-	tsize_t	bytes = nmemb * elem_size;
-
-	/*
-	 * XXX: Check for integer overflow.
-	 */
-	if (nmemb && elem_size && bytes / elem_size == nmemb)
-		cp = _TIFFmalloc(bytes);
-
-	if (cp == NULL)
-		TIFFErrorExt(tif->tif_clientdata, tif->tif_name, "No space %s", what);
-
-	return (cp);
-}
-
-static int
-TIFFDefaultTransferFunction(TIFFDirectory* td)
-{
-	uint16 **tf = td->td_transferfunction;
-	tsize_t i, n, nbytes;
-
-	tf[0] = tf[1] = tf[2] = 0;
-	if (td->td_bitspersample >= sizeof(tsize_t) * 8 - 2)
-		return 0;
-
-	n = 1<<td->td_bitspersample;
-	nbytes = n * sizeof (uint16);
-	if (!(tf[0] = (uint16 *)_TIFFmalloc(nbytes)))
-		return 0;
-	tf[0][0] = 0;
-	for (i = 1; i < n; i++) {
-		double t = (double)i/((double) n-1.);
-		tf[0][i] = (uint16)floor(65535.*pow(t, 2.2) + .5);
-	}
-
-	if (td->td_samplesperpixel - td->td_extrasamples > 1) {
-		if (!(tf[1] = (uint16 *)_TIFFmalloc(nbytes)))
-			goto bad;
-		_TIFFmemcpy(tf[1], tf[0], nbytes);
-		if (!(tf[2] = (uint16 *)_TIFFmalloc(nbytes)))
-			goto bad;
-		_TIFFmemcpy(tf[2], tf[0], nbytes);
-	}
-	return 1;
-
-bad:
-	if (tf[0])
-		_TIFFfree(tf[0]);
-	if (tf[1])
-		_TIFFfree(tf[1]);
-	if (tf[2])
-		_TIFFfree(tf[2]);
-	tf[0] = tf[1] = tf[2] = 0;
-	return 0;
-}
-
-/*
- * Like TIFFGetField, but return any default
- * value if the tag is not present in the directory.
- *
- * NB:	We use the value in the directory, rather than
- *	explcit values so that defaults exist only one
- *	place in the library -- in TIFFDefaultDirectory.
- */
-int
-TIFFVGetFieldDefaulted(TIFF* tif, ttag_t tag, va_list ap)
-{
-	TIFFDirectory *td = &tif->tif_dir;
-
-	if (TIFFVGetField(tif, tag, ap))
-		return (1);
-	switch (tag) {
-	case TIFFTAG_SUBFILETYPE:
-		*va_arg(ap, uint32 *) = td->td_subfiletype;
-		return (1);
-	case TIFFTAG_BITSPERSAMPLE:
-		*va_arg(ap, uint16 *) = td->td_bitspersample;
-		return (1);
-	case TIFFTAG_THRESHHOLDING:
-		*va_arg(ap, uint16 *) = td->td_threshholding;
-		return (1);
-	case TIFFTAG_FILLORDER:
-		*va_arg(ap, uint16 *) = td->td_fillorder;
-		return (1);
-	case TIFFTAG_ORIENTATION:
-		*va_arg(ap, uint16 *) = td->td_orientation;
-		return (1);
-	case TIFFTAG_SAMPLESPERPIXEL:
-		*va_arg(ap, uint16 *) = td->td_samplesperpixel;
-		return (1);
-	case TIFFTAG_ROWSPERSTRIP:
-		*va_arg(ap, uint32 *) = td->td_rowsperstrip;
-		return (1);
-	case TIFFTAG_MINSAMPLEVALUE:
-		*va_arg(ap, uint16 *) = td->td_minsamplevalue;
-		return (1);
-	case TIFFTAG_MAXSAMPLEVALUE:
-		*va_arg(ap, uint16 *) = td->td_maxsamplevalue;
-		return (1);
-	case TIFFTAG_PLANARCONFIG:
-		*va_arg(ap, uint16 *) = td->td_planarconfig;
-		return (1);
-	case TIFFTAG_RESOLUTIONUNIT:
-		*va_arg(ap, uint16 *) = td->td_resolutionunit;
-		return (1);
-	case TIFFTAG_PREDICTOR:
-                {
-			TIFFPredictorState* sp = (TIFFPredictorState*) tif->tif_data;
-			*va_arg(ap, uint16*) = (uint16) sp->predictor;
-			return 1;
-                }
-	case TIFFTAG_DOTRANGE:
-		*va_arg(ap, uint16 *) = 0;
-		*va_arg(ap, uint16 *) = (1<<td->td_bitspersample)-1;
-		return (1);
-	case TIFFTAG_INKSET:
-		*va_arg(ap, uint16 *) = INKSET_CMYK;
-		return 1;
-	case TIFFTAG_NUMBEROFINKS:
-		*va_arg(ap, uint16 *) = 4;
-		return (1);
-	case TIFFTAG_EXTRASAMPLES:
-		*va_arg(ap, uint16 *) = td->td_extrasamples;
-		*va_arg(ap, uint16 **) = td->td_sampleinfo;
-		return (1);
-	case TIFFTAG_MATTEING:
-		*va_arg(ap, uint16 *) =
-		    (td->td_extrasamples == 1 &&
-		     td->td_sampleinfo[0] == EXTRASAMPLE_ASSOCALPHA);
-		return (1);
-	case TIFFTAG_TILEDEPTH:
-		*va_arg(ap, uint32 *) = td->td_tiledepth;
-		return (1);
-	case TIFFTAG_DATATYPE:
-		*va_arg(ap, uint16 *) = td->td_sampleformat-1;
-		return (1);
-	case TIFFTAG_SAMPLEFORMAT:
-		*va_arg(ap, uint16 *) = td->td_sampleformat;
-                return(1);
-	case TIFFTAG_IMAGEDEPTH:
-		*va_arg(ap, uint32 *) = td->td_imagedepth;
-		return (1);
-	case TIFFTAG_YCBCRCOEFFICIENTS:
-		{
-			/* defaults are from CCIR Recommendation 601-1 */
-			static float ycbcrcoeffs[] = { 0.299f, 0.587f, 0.114f };
-			*va_arg(ap, float **) = ycbcrcoeffs;
-			return 1;
-		}
-	case TIFFTAG_YCBCRSUBSAMPLING:
-		*va_arg(ap, uint16 *) = td->td_ycbcrsubsampling[0];
-		*va_arg(ap, uint16 *) = td->td_ycbcrsubsampling[1];
-		return (1);
-	case TIFFTAG_YCBCRPOSITIONING:
-		*va_arg(ap, uint16 *) = td->td_ycbcrpositioning;
-		return (1);
-	case TIFFTAG_WHITEPOINT:
-		{
-			static float whitepoint[2];
-
-			/* TIFF 6.0 specification tells that it is no default
-			   value for the WhitePoint, but AdobePhotoshop TIFF
-			   Technical Note tells that it should be CIE D50. */
-			whitepoint[0] =	D50_X0 / (D50_X0 + D50_Y0 + D50_Z0);
-			whitepoint[1] =	D50_Y0 / (D50_X0 + D50_Y0 + D50_Z0);
-			*va_arg(ap, float **) = whitepoint;
-			return 1;
-		}
-	case TIFFTAG_TRANSFERFUNCTION:
-		if (!td->td_transferfunction[0] &&
-		    !TIFFDefaultTransferFunction(td)) {
-			TIFFErrorExt(tif->tif_clientdata, tif->tif_name, "No space for \"TransferFunction\" tag");
-			return (0);
-		}
-		*va_arg(ap, uint16 **) = td->td_transferfunction[0];
-		if (td->td_samplesperpixel - td->td_extrasamples > 1) {
-			*va_arg(ap, uint16 **) = td->td_transferfunction[1];
-			*va_arg(ap, uint16 **) = td->td_transferfunction[2];
-		}
-		return (1);
-	case TIFFTAG_REFERENCEBLACKWHITE:
-		{
-			int i;
-			static float ycbcr_refblackwhite[] = 
-			{ 0.0F, 255.0F, 128.0F, 255.0F, 128.0F, 255.0F };
-			static float rgb_refblackwhite[6];
-
-			for (i = 0; i < 3; i++) {
-				rgb_refblackwhite[2 * i + 0] = 0.0F;
-				rgb_refblackwhite[2 * i + 1] =
-					(float)((1L<<td->td_bitspersample)-1L);
-			}
-			
-			if (td->td_photometric == PHOTOMETRIC_YCBCR) {
-				/*
-				 * YCbCr (Class Y) images must have the
-				 * ReferenceBlackWhite tag set. Fix the
-				 * broken images, which lacks that tag.
-				 */
-				*va_arg(ap, float **) = ycbcr_refblackwhite;
-			} else {
-				/*
-				 * Assume RGB (Class R)
-				 */
-				*va_arg(ap, float **) = rgb_refblackwhite;
-			}
-			return 1;
-		}
-	}
-	return 0;
-}
-
-/*
- * Like TIFFGetField, but return any default
- * value if the tag is not present in the directory.
- */
-int
-TIFFGetFieldDefaulted(TIFF* tif, ttag_t tag, ...)
-{
-	int ok;
-	va_list ap;
-
-	va_start(ap, tag);
-	ok =  TIFFVGetFieldDefaulted(tif, tag, ap);
-	va_end(ap);
-	return (ok);
-}
-
-/* vim: set ts=8 sts=8 sw=8 noet: */
diff --git a/src/tiff/tif_close.c b/src/tiff/tif_close.c
deleted file mode 100644
index 070deb6..0000000
--- a/src/tiff/tif_close.c
+++ /dev/null
@@ -1,119 +0,0 @@
-/* $Id: tif_close.c 4825 2006-08-16 13:01:53Z lubia $ */
-
-/*
- * Copyright (c) 1988-1997 Sam Leffler
- * Copyright (c) 1991-1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and 
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- * 
- * 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 SAM LEFFLER OR SILICON GRAPHICS 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.
- */
-
-/*
- * TIFF Library.
- */
-#include "tiffiop.h"
-
-/************************************************************************/
-/*                            TIFFCleanup()                             */
-/************************************************************************/
-
-/**
- * Auxiliary function to free the TIFF structure. Given structure will be
- * completetly freed, so you should save opened file handle and pointer
- * to the close procedure in external variables before calling
- * _TIFFCleanup(), if you will need these ones to close the file.
- * 
- * @param tif A TIFF pointer.
- */
-
-void
-TIFFCleanup(TIFF* tif)
-{
-	if (tif->tif_mode != O_RDONLY)
-	    /*
-	     * Flush buffered data and directory (if dirty).
-	     */
-	    TIFFFlush(tif);
-	(*tif->tif_cleanup)(tif);
-	TIFFFreeDirectory(tif);
-
-	if (tif->tif_dirlist)
-	    _TIFFfree(tif->tif_dirlist);
-	    
-	/* Clean up client info links */
-	while( tif->tif_clientinfo )
-	{
-	    TIFFClientInfoLink *link = tif->tif_clientinfo;
-
-	    tif->tif_clientinfo = link->next;
-	    _TIFFfree( link->name );
-	    _TIFFfree( link );
-	}
-
-	if (tif->tif_rawdata && (tif->tif_flags&TIFF_MYBUFFER))
-	    _TIFFfree(tif->tif_rawdata);
-	if (isMapped(tif))
-	    TIFFUnmapFileContents(tif, tif->tif_base, tif->tif_size);
-
-	/* Clean up custom fields */
-	if (tif->tif_nfields > 0) 
-	{
-	    size_t  i;
-
-	    for (i = 0; i < tif->tif_nfields; i++) 
-	    {
-		TIFFFieldInfo *fld = tif->tif_fieldinfo[i];
-		if (fld->field_bit == FIELD_CUSTOM && 
-		    strncmp("Tag ", fld->field_name, 4) == 0) 
-		{
-		    _TIFFfree(fld->field_name);
-		    _TIFFfree(fld);
-		}
-	    }   
-	  
-	    _TIFFfree(tif->tif_fieldinfo);
-	}
-
-	_TIFFfree(tif);
-}
-
-/************************************************************************/
-/*                            TIFFClose()                               */
-/************************************************************************/
-
-/**
- * Close a previously opened TIFF file.
- *
- * TIFFClose closes a file that was previously opened with TIFFOpen().
- * Any buffered data are flushed to the file, including the contents of
- * the current directory (if modified); and all resources are reclaimed.
- * 
- * @param tif A TIFF pointer.
- */
-
-void
-TIFFClose(TIFF* tif)
-{
-	TIFFCloseProc closeproc = tif->tif_closeproc;
-	thandle_t fd = tif->tif_clientdata;
-
-	TIFFCleanup(tif);
-	(void) (*closeproc)(fd);
-}
-
diff --git a/src/tiff/tif_codec.c b/src/tiff/tif_codec.c
deleted file mode 100644
index a5b718f..0000000
--- a/src/tiff/tif_codec.c
+++ /dev/null
@@ -1,150 +0,0 @@
-/* $Id: tif_codec.c 4825 2006-08-16 13:01:53Z lubia $ */
-
-/*
- * Copyright (c) 1988-1997 Sam Leffler
- * Copyright (c) 1991-1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and 
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- * 
- * 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 SAM LEFFLER OR SILICON GRAPHICS 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.
- */
-
-/*
- * TIFF Library
- *
- * Builtin Compression Scheme Configuration Support.
- */
-#include "tiffiop.h"
-
-static	int NotConfigured(TIFF*, int);
-
-#ifndef	LZW_SUPPORT
-#define	TIFFInitLZW		NotConfigured
-#endif
-#ifndef	PACKBITS_SUPPORT
-#define	TIFFInitPackBits	NotConfigured
-#endif
-#ifndef	THUNDER_SUPPORT
-#define	TIFFInitThunderScan	NotConfigured
-#endif
-#ifndef	NEXT_SUPPORT
-#define	TIFFInitNeXT		NotConfigured
-#endif
-#ifndef	JPEG_SUPPORT
-#define	TIFFInitJPEG		NotConfigured
-#endif
-#ifndef	OJPEG_SUPPORT
-#define	TIFFInitOJPEG		NotConfigured
-#endif
-#ifndef	CCITT_SUPPORT
-#define	TIFFInitCCITTRLE	NotConfigured
-#define	TIFFInitCCITTRLEW	NotConfigured
-#define	TIFFInitCCITTFax3	NotConfigured
-#define	TIFFInitCCITTFax4	NotConfigured
-#endif
-#ifndef JBIG_SUPPORT
-#define	TIFFInitJBIG		NotConfigured
-#endif
-#ifndef	ZIP_SUPPORT
-#define	TIFFInitZIP		NotConfigured
-#endif
-#ifndef	PIXARLOG_SUPPORT
-#define	TIFFInitPixarLog	NotConfigured
-#endif
-#ifndef LOGLUV_SUPPORT
-#define TIFFInitSGILog		NotConfigured
-#endif
-
-/*
- * Compression schemes statically built into the library.
- */
-#ifdef VMS
-const TIFFCodec _TIFFBuiltinCODECS[] = {
-#else
-TIFFCodec _TIFFBuiltinCODECS[] = {
-#endif
-    { "None",		COMPRESSION_NONE,	TIFFInitDumpMode },
-    { "LZW",		COMPRESSION_LZW,	TIFFInitLZW },
-    { "PackBits",	COMPRESSION_PACKBITS,	TIFFInitPackBits },
-    { "ThunderScan",	COMPRESSION_THUNDERSCAN,TIFFInitThunderScan },
-    { "NeXT",		COMPRESSION_NEXT,	TIFFInitNeXT },
-    { "JPEG",		COMPRESSION_JPEG,	TIFFInitJPEG },
-    { "Old-style JPEG",	COMPRESSION_OJPEG,	TIFFInitOJPEG },
-    { "CCITT RLE",	COMPRESSION_CCITTRLE,	TIFFInitCCITTRLE },
-    { "CCITT RLE/W",	COMPRESSION_CCITTRLEW,	TIFFInitCCITTRLEW },
-    { "CCITT Group 3",	COMPRESSION_CCITTFAX3,	TIFFInitCCITTFax3 },
-    { "CCITT Group 4",	COMPRESSION_CCITTFAX4,	TIFFInitCCITTFax4 },
-    { "ISO JBIG",	COMPRESSION_JBIG,	TIFFInitJBIG },
-    { "Deflate",	COMPRESSION_DEFLATE,	TIFFInitZIP },
-    { "AdobeDeflate",   COMPRESSION_ADOBE_DEFLATE , TIFFInitZIP }, 
-    { "PixarLog",	COMPRESSION_PIXARLOG,	TIFFInitPixarLog },
-    { "SGILog",		COMPRESSION_SGILOG,	TIFFInitSGILog },
-    { "SGILog24",	COMPRESSION_SGILOG24,	TIFFInitSGILog },
-    { NULL,             0,                      NULL }
-};
-
-static int
-_notConfigured(TIFF* tif)
-{
-	const TIFFCodec* c = TIFFFindCODEC(tif->tif_dir.td_compression);
-
-	TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-	    "%s compression support is not configured", c->name);
-	return (0);
-}
-
-static int
-NotConfigured(TIFF* tif, int scheme)
-{
-    (void) scheme;
-    
-    tif->tif_decodestatus = FALSE;
-    tif->tif_setupdecode = _notConfigured;
-    tif->tif_encodestatus = FALSE;
-    tif->tif_setupencode = _notConfigured;
-    return (1);
-}
-
-/************************************************************************/
-/*                       TIFFIsCODECConfigured()                        */
-/************************************************************************/
-
-/**
- * Check whether we have working codec for the specific coding scheme.
- * 
- * @return returns 1 if the codec is configured and working. Otherwise
- * 0 will be returned.
- */
-
-int
-TIFFIsCODECConfigured(uint16 scheme)
-{
-	const TIFFCodec* codec = TIFFFindCODEC(scheme);
-
-	if(codec == NULL) {
-            return 0;
-        }
-        if(codec->init == NULL) {
-            return 0;
-        }
-	if(codec->init != NotConfigured){
-            return 1;
-        }
-	return 0;
-}
-
diff --git a/src/tiff/tif_color.c b/src/tiff/tif_color.c
deleted file mode 100644
index 8aa0bdd..0000000
--- a/src/tiff/tif_color.c
+++ /dev/null
@@ -1,275 +0,0 @@
-/* $Id: tif_color.c 4825 2006-08-16 13:01:53Z lubia $ */
-
-/*
- * Copyright (c) 1988-1997 Sam Leffler
- * Copyright (c) 1991-1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and 
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- * 
- * 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 SAM LEFFLER OR SILICON GRAPHICS 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.
- */
-
-/*
- * CIE L*a*b* to CIE XYZ and CIE XYZ to RGB conversion routines are taken
- * from the VIPS library (http://www.vips.ecs.soton.ac.uk) with
- * the permission of John Cupitt, the VIPS author.
- */
-
-/*
- * TIFF Library.
- *
- * Color space conversion routines.
- */
-
-#include "tiffiop.h"
-#include <math.h>
-
-/*
- * Convert color value from the CIE L*a*b* 1976 space to CIE XYZ.
- */
-void
-TIFFCIELabToXYZ(TIFFCIELabToRGB *cielab, uint32 l, int32 a, int32 b,
-		float *X, float *Y, float *Z)
-{
-	float L = (float)l * 100.0F / 255.0F;
-	float cby, tmp;
-
-	if( L < 8.856F ) {
-		*Y = (L * cielab->Y0) / 903.292F;
-		cby = 7.787F * (*Y / cielab->Y0) + 16.0F / 116.0F;
-	} else {
-		cby = (L + 16.0F) / 116.0F;
-		*Y = cielab->Y0 * cby * cby * cby;
-	}
-
-	tmp = (float)a / 500.0F + cby;
-	if( tmp < 0.2069F )
-		*X = cielab->X0 * (tmp - 0.13793F) / 7.787F;
-	else    
-		*X = cielab->X0 * tmp * tmp * tmp;
-
-	tmp = cby - (float)b / 200.0F;
-	if( tmp < 0.2069F )
-		*Z = cielab->Z0 * (tmp - 0.13793F) / 7.787F;
-	else    
-		*Z = cielab->Z0 * tmp * tmp * tmp;
-}
-
-#define RINT(R) ((uint32)((R)>0?((R)+0.5):((R)-0.5)))
-/*
- * Convert color value from the XYZ space to RGB.
- */
-void
-TIFFXYZToRGB(TIFFCIELabToRGB *cielab, float X, float Y, float Z,
-	     uint32 *r, uint32 *g, uint32 *b)
-{
-	int i;
-	float Yr, Yg, Yb;
-	float *matrix = &cielab->display.d_mat[0][0];
-
-	/* Multiply through the matrix to get luminosity values. */
-	Yr =  matrix[0] * X + matrix[1] * Y + matrix[2] * Z;
-	Yg =  matrix[3] * X + matrix[4] * Y + matrix[5] * Z;
-	Yb =  matrix[6] * X + matrix[7] * Y + matrix[8] * Z;
-
-	/* Clip input */
-	Yr = TIFFmax(Yr, cielab->display.d_Y0R);
-	Yg = TIFFmax(Yg, cielab->display.d_Y0G);
-	Yb = TIFFmax(Yb, cielab->display.d_Y0B);
-
-	/* Avoid overflow in case of wrong input values */
-	Yr = TIFFmin(Yr, cielab->display.d_YCR);
-	Yg = TIFFmin(Yg, cielab->display.d_YCG);
-	Yb = TIFFmin(Yb, cielab->display.d_YCB);
-
-	/* Turn luminosity to colour value. */
-	i = (int)((Yr - cielab->display.d_Y0R) / cielab->rstep);
-	i = TIFFmin(cielab->range, i);
-	*r = RINT(cielab->Yr2r[i]);
-
-	i = (int)((Yg - cielab->display.d_Y0G) / cielab->gstep);
-	i = TIFFmin(cielab->range, i);
-	*g = RINT(cielab->Yg2g[i]);
-
-	i = (int)((Yb - cielab->display.d_Y0B) / cielab->bstep);
-	i = TIFFmin(cielab->range, i);
-	*b = RINT(cielab->Yb2b[i]);
-
-	/* Clip output. */
-	*r = TIFFmin(*r, cielab->display.d_Vrwr);
-	*g = TIFFmin(*g, cielab->display.d_Vrwg);
-	*b = TIFFmin(*b, cielab->display.d_Vrwb);
-}
-#undef RINT
-
-/* 
- * Allocate conversion state structures and make look_up tables for
- * the Yr,Yb,Yg <=> r,g,b conversions.
- */
-int
-TIFFCIELabToRGBInit(TIFFCIELabToRGB* cielab,
-		    TIFFDisplay *display, float *refWhite)
-{
-	int i;
-	double gamma;
-
-	cielab->range = CIELABTORGB_TABLE_RANGE;
-
-	_TIFFmemcpy(&cielab->display, display, sizeof(TIFFDisplay));
-
-	/* Red */
-	gamma = 1.0 / cielab->display.d_gammaR ;
-	cielab->rstep =
-		(cielab->display.d_YCR - cielab->display.d_Y0R)	/ cielab->range;
-	for(i = 0; i <= cielab->range; i++) {
-		cielab->Yr2r[i] = cielab->display.d_Vrwr
-		    * ((float)pow((double)i / cielab->range, gamma));
-	}
-
-	/* Green */
-	gamma = 1.0 / cielab->display.d_gammaG ;
-	cielab->gstep =
-	    (cielab->display.d_YCR - cielab->display.d_Y0R) / cielab->range;
-	for(i = 0; i <= cielab->range; i++) {
-		cielab->Yg2g[i] = cielab->display.d_Vrwg
-		    * ((float)pow((double)i / cielab->range, gamma));
-	}
-
-	/* Blue */
-	gamma = 1.0 / cielab->display.d_gammaB ;
-	cielab->bstep =
-	    (cielab->display.d_YCR - cielab->display.d_Y0R) / cielab->range;
-	for(i = 0; i <= cielab->range; i++) {
-		cielab->Yb2b[i] = cielab->display.d_Vrwb
-		    * ((float)pow((double)i / cielab->range, gamma));
-	}
-
-	/* Init reference white point */
-	cielab->X0 = refWhite[0];
-	cielab->Y0 = refWhite[1];
-	cielab->Z0 = refWhite[2];
-
-	return 0;
-}
-
-/* 
- * Convert color value from the YCbCr space to CIE XYZ.
- * The colorspace conversion algorithm comes from the IJG v5a code;
- * see below for more information on how it works.
- */
-#define	SHIFT			16
-#define	FIX(x)			((int32)((x) * (1L<<SHIFT) + 0.5))
-#define	ONE_HALF		((int32)(1<<(SHIFT-1)))
-#define	Code2V(c, RB, RW, CR)	((((c)-(int32)(RB))*(float)(CR))/(float)(((RW)-(RB)) ? ((RW)-(RB)) : 1))
-#define	CLAMP(f,min,max)	((f)<(min)?(min):(f)>(max)?(max):(f))
-#define HICLAMP(f,max)		((f)>(max)?(max):(f))
-
-void
-TIFFYCbCrtoRGB(TIFFYCbCrToRGB *ycbcr, uint32 Y, int32 Cb, int32 Cr,
-	       uint32 *r, uint32 *g, uint32 *b)
-{
-	/* XXX: Only 8-bit YCbCr input supported for now */
-	Y = HICLAMP(Y, 255), Cb = CLAMP(Cb, 0, 255), Cr = CLAMP(Cr, 0, 255);
-
-	*r = ycbcr->clamptab[ycbcr->Y_tab[Y] + ycbcr->Cr_r_tab[Cr]];
-	*g = ycbcr->clamptab[ycbcr->Y_tab[Y]
-	    + (int)((ycbcr->Cb_g_tab[Cb] + ycbcr->Cr_g_tab[Cr]) >> SHIFT)];
-	*b = ycbcr->clamptab[ycbcr->Y_tab[Y] + ycbcr->Cb_b_tab[Cb]];
-}
-
-/*
- * Initialize the YCbCr->RGB conversion tables.  The conversion
- * is done according to the 6.0 spec:
- *
- *    R = Y + Cr*(2 - 2*LumaRed)
- *    B = Y + Cb*(2 - 2*LumaBlue)
- *    G =   Y
- *        - LumaBlue*Cb*(2-2*LumaBlue)/LumaGreen
- *        - LumaRed*Cr*(2-2*LumaRed)/LumaGreen
- *
- * To avoid floating point arithmetic the fractional constants that
- * come out of the equations are represented as fixed point values
- * in the range 0...2^16.  We also eliminate multiplications by
- * pre-calculating possible values indexed by Cb and Cr (this code
- * assumes conversion is being done for 8-bit samples).
- */
-int
-TIFFYCbCrToRGBInit(TIFFYCbCrToRGB* ycbcr, float *luma, float *refBlackWhite)
-{
-    TIFFRGBValue* clamptab;
-    int i;
-    
-#define LumaRed	    luma[0]
-#define LumaGreen   luma[1]
-#define LumaBlue    luma[2]
-
-    clamptab = (TIFFRGBValue*)(
-	(tidata_t) ycbcr+TIFFroundup(sizeof (TIFFYCbCrToRGB), sizeof (long)));
-    _TIFFmemset(clamptab, 0, 256);		/* v < 0 => 0 */
-    ycbcr->clamptab = (clamptab += 256);
-    for (i = 0; i < 256; i++)
-	clamptab[i] = (TIFFRGBValue) i;
-    _TIFFmemset(clamptab+256, 255, 2*256);	/* v > 255 => 255 */
-    ycbcr->Cr_r_tab = (int*) (clamptab + 3*256);
-    ycbcr->Cb_b_tab = ycbcr->Cr_r_tab + 256;
-    ycbcr->Cr_g_tab = (int32*) (ycbcr->Cb_b_tab + 256);
-    ycbcr->Cb_g_tab = ycbcr->Cr_g_tab + 256;
-    ycbcr->Y_tab = ycbcr->Cb_g_tab + 256;
-
-    { float f1 = 2-2*LumaRed;		int32 D1 = FIX(f1);
-      float f2 = LumaRed*f1/LumaGreen;	int32 D2 = -FIX(f2);
-      float f3 = 2-2*LumaBlue;		int32 D3 = FIX(f3);
-      float f4 = LumaBlue*f3/LumaGreen;	int32 D4 = -FIX(f4);
-      int x;
-
-#undef LumaBlue
-#undef LumaGreen
-#undef LumaRed
-      
-      /*
-       * i is the actual input pixel value in the range 0..255
-       * Cb and Cr values are in the range -128..127 (actually
-       * they are in a range defined by the ReferenceBlackWhite
-       * tag) so there is some range shifting to do here when
-       * constructing tables indexed by the raw pixel data.
-       */
-      for (i = 0, x = -128; i < 256; i++, x++) {
-	    int32 Cr = (int32)Code2V(x, refBlackWhite[4] - 128.0F,
-			    refBlackWhite[5] - 128.0F, 127);
-	    int32 Cb = (int32)Code2V(x, refBlackWhite[2] - 128.0F,
-			    refBlackWhite[3] - 128.0F, 127);
-
-	    ycbcr->Cr_r_tab[i] = (int32)((D1*Cr + ONE_HALF)>>SHIFT);
-	    ycbcr->Cb_b_tab[i] = (int32)((D3*Cb + ONE_HALF)>>SHIFT);
-	    ycbcr->Cr_g_tab[i] = D2*Cr;
-	    ycbcr->Cb_g_tab[i] = D4*Cb + ONE_HALF;
-	    ycbcr->Y_tab[i] =
-		    (int32)Code2V(x + 128, refBlackWhite[0], refBlackWhite[1], 255);
-      }
-    }
-
-    return 0;
-}
-#undef	HICLAMP
-#undef	CLAMP
-#undef	Code2V
-#undef	SHIFT
-#undef	ONE_HALF
-#undef	FIX
-
-/* vim: set ts=8 sts=8 sw=8 noet: */
diff --git a/src/tiff/tif_compress.c b/src/tiff/tif_compress.c
deleted file mode 100644
index 86c300c..0000000
--- a/src/tiff/tif_compress.c
+++ /dev/null
@@ -1,286 +0,0 @@
-/* $Id: tif_compress.c 4825 2006-08-16 13:01:53Z lubia $ */
-
-/*
- * Copyright (c) 1988-1997 Sam Leffler
- * Copyright (c) 1991-1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and 
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- * 
- * 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 SAM LEFFLER OR SILICON GRAPHICS 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.
- */
-
-/*
- * TIFF Library
- *
- * Compression Scheme Configuration Support.
- */
-#include "tiffiop.h"
-
-static int
-TIFFNoEncode(TIFF* tif, const char* method)
-{
-	const TIFFCodec* c = TIFFFindCODEC(tif->tif_dir.td_compression);
-
-	if (c) { 
-			TIFFErrorExt(tif->tif_clientdata, tif->tif_name, "%s %s encoding is not implemented",
-                          c->name, method);
-	} else { 
-		TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-			  "Compression scheme %u %s encoding is not implemented",
-		    tif->tif_dir.td_compression, method);
-	}
-	return (-1);
-}
-
-int
-_TIFFNoRowEncode(TIFF* tif, tidata_t pp, tsize_t cc, tsample_t s)
-{
-	(void) pp; (void) cc; (void) s;
-	return (TIFFNoEncode(tif, "scanline"));
-}
-
-int
-_TIFFNoStripEncode(TIFF* tif, tidata_t pp, tsize_t cc, tsample_t s)
-{
-	(void) pp; (void) cc; (void) s;
-	return (TIFFNoEncode(tif, "strip"));
-}
-
-int
-_TIFFNoTileEncode(TIFF* tif, tidata_t pp, tsize_t cc, tsample_t s)
-{
-	(void) pp; (void) cc; (void) s;
-	return (TIFFNoEncode(tif, "tile"));
-}
-
-static int
-TIFFNoDecode(TIFF* tif, const char* method)
-{
-	const TIFFCodec* c = TIFFFindCODEC(tif->tif_dir.td_compression);
-
-	if (c)
-		TIFFErrorExt(tif->tif_clientdata, tif->tif_name, "%s %s decoding is not implemented",
-		    c->name, method);
-	else
-		TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-		    "Compression scheme %u %s decoding is not implemented",
-		    tif->tif_dir.td_compression, method);
-	return (-1);
-}
-
-int
-_TIFFNoRowDecode(TIFF* tif, tidata_t pp, tsize_t cc, tsample_t s)
-{
-	(void) pp; (void) cc; (void) s;
-	return (TIFFNoDecode(tif, "scanline"));
-}
-
-int
-_TIFFNoStripDecode(TIFF* tif, tidata_t pp, tsize_t cc, tsample_t s)
-{
-	(void) pp; (void) cc; (void) s;
-	return (TIFFNoDecode(tif, "strip"));
-}
-
-int
-_TIFFNoTileDecode(TIFF* tif, tidata_t pp, tsize_t cc, tsample_t s)
-{
-	(void) pp; (void) cc; (void) s;
-	return (TIFFNoDecode(tif, "tile"));
-}
-
-int
-_TIFFNoSeek(TIFF* tif, uint32 off)
-{
-	(void) off;
-	TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-	    "Compression algorithm does not support random access");
-	return (0);
-}
-
-int
-_TIFFNoPreCode(TIFF* tif, tsample_t s)
-{
-	(void) tif; (void) s;
-	return (1);
-}
-
-static int _TIFFtrue(TIFF* tif) { (void) tif; return (1); }
-static void _TIFFvoid(TIFF* tif) { (void) tif; }
-
-void
-_TIFFSetDefaultCompressionState(TIFF* tif)
-{
-	tif->tif_decodestatus = TRUE;
-	tif->tif_setupdecode = _TIFFtrue;
-	tif->tif_predecode = _TIFFNoPreCode;
-	tif->tif_decoderow = _TIFFNoRowDecode;
-	tif->tif_decodestrip = _TIFFNoStripDecode;
-	tif->tif_decodetile = _TIFFNoTileDecode;
-	tif->tif_encodestatus = TRUE;
-	tif->tif_setupencode = _TIFFtrue;
-	tif->tif_preencode = _TIFFNoPreCode;
-	tif->tif_postencode = _TIFFtrue;
-	tif->tif_encoderow = _TIFFNoRowEncode;
-	tif->tif_encodestrip = _TIFFNoStripEncode;
-	tif->tif_encodetile = _TIFFNoTileEncode;
-	tif->tif_close = _TIFFvoid;
-	tif->tif_seek = _TIFFNoSeek;
-	tif->tif_cleanup = _TIFFvoid;
-	tif->tif_defstripsize = _TIFFDefaultStripSize;
-	tif->tif_deftilesize = _TIFFDefaultTileSize;
-	tif->tif_flags &= ~TIFF_NOBITREV;
-}
-
-int
-TIFFSetCompressionScheme(TIFF* tif, int scheme)
-{
-	const TIFFCodec *c = TIFFFindCODEC((uint16) scheme);
-
-	_TIFFSetDefaultCompressionState(tif);
-	/*
-	 * Don't treat an unknown compression scheme as an error.
-	 * This permits applications to open files with data that
-	 * the library does not have builtin support for, but which
-	 * may still be meaningful.
-	 */
-	return (c ? (*c->init)(tif, scheme) : 1);
-}
-
-/*
- * Other compression schemes may be registered.  Registered
- * schemes can also override the builtin versions provided
- * by this library.
- */
-typedef struct _codec {
-	struct _codec*	next;
-	TIFFCodec*	info;
-} codec_t;
-static	codec_t* registeredCODECS = NULL;
-
-const TIFFCodec*
-TIFFFindCODEC(uint16 scheme)
-{
-	const TIFFCodec* c;
-	codec_t* cd;
-
-	for (cd = registeredCODECS; cd; cd = cd->next)
-		if (cd->info->scheme == scheme)
-			return ((const TIFFCodec*) cd->info);
-	for (c = _TIFFBuiltinCODECS; c->name; c++)
-		if (c->scheme == scheme)
-			return (c);
-	return ((const TIFFCodec*) 0);
-}
-
-TIFFCodec*
-TIFFRegisterCODEC(uint16 scheme, const char* name, TIFFInitMethod init)
-{
-	codec_t* cd = (codec_t*)
-	    _TIFFmalloc(sizeof (codec_t) + sizeof (TIFFCodec) + strlen(name)+1);
-
-	if (cd != NULL) {
-		cd->info = (TIFFCodec*) ((tidata_t) cd + sizeof (codec_t));
-		cd->info->name = (char*)
-		    ((tidata_t) cd->info + sizeof (TIFFCodec));
-		strcpy(cd->info->name, name);
-		cd->info->scheme = scheme;
-		cd->info->init = init;
-		cd->next = registeredCODECS;
-		registeredCODECS = cd;
-	} else {
-		TIFFErrorExt(0, "TIFFRegisterCODEC",
-		    "No space to register compression scheme %s", name);
-		return NULL;
-	}
-	return (cd->info);
-}
-
-void
-TIFFUnRegisterCODEC(TIFFCodec* c)
-{
-	codec_t* cd;
-	codec_t** pcd;
-
-	for (pcd = ®isteredCODECS; (cd = *pcd); pcd = &cd->next)
-		if (cd->info == c) {
-			*pcd = cd->next;
-			_TIFFfree(cd);
-			return;
-		}
-	TIFFErrorExt(0, "TIFFUnRegisterCODEC",
-	    "Cannot remove compression scheme %s; not registered", c->name);
-}
-
-/************************************************************************/
-/*                       TIFFGetConfisuredCODECs()                      */
-/************************************************************************/
-
-/**
- * Get list of configured codecs, both built-in and registered by user.
- * Caller is responsible to free this structure.
- * 
- * @return returns array of TIFFCodec records (the last record should be NULL)
- * or NULL if function failed.
- */
-
-TIFFCodec*
-TIFFGetConfiguredCODECs()
-{
-	int		i = 1;
-        codec_t		*cd;
-        const TIFFCodec	*c;
-	TIFFCodec	*codecs = NULL, *new_codecs;
-
-        for (cd = registeredCODECS; cd; cd = cd->next) {
-                new_codecs = (TIFFCodec *)
-			_TIFFrealloc(codecs, i * sizeof(TIFFCodec));
-		if (!new_codecs) {
-			_TIFFfree (codecs);
-			return NULL;
-		}
-		codecs = new_codecs;
-		_TIFFmemcpy(codecs + i - 1, cd, sizeof(TIFFCodec));
-		i++;
-	}
-        for (c = _TIFFBuiltinCODECS; c->name; c++) {
-                if (TIFFIsCODECConfigured(c->scheme)) {
-                        new_codecs = (TIFFCodec *)
-				_TIFFrealloc(codecs, i * sizeof(TIFFCodec));
-			if (!new_codecs) {
-				_TIFFfree (codecs);
-				return NULL;
-			}
-			codecs = new_codecs;
-			_TIFFmemcpy(codecs + i - 1, (const tdata_t)c, sizeof(TIFFCodec));
-			i++;
-		}
-	}
-
-	new_codecs = (TIFFCodec *) _TIFFrealloc(codecs, i * sizeof(TIFFCodec));
-	if (!new_codecs) {
-		_TIFFfree (codecs);
-		return NULL;
-	}
-	codecs = new_codecs;
-	_TIFFmemset(codecs + i - 1, 0, sizeof(TIFFCodec));
-
-        return codecs;
-}
-
-/* vim: set ts=8 sts=8 sw=8 noet: */
diff --git a/src/tiff/tif_config.h b/src/tiff/tif_config.h
deleted file mode 100644
index 39253ca..0000000
--- a/src/tiff/tif_config.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/* Define to 1 if you have the <assert.h> header file. */
-#define HAVE_ASSERT_H 1
-
-/* Define to 1 if you have the <fcntl.h> header file. */
-#define HAVE_FCNTL_H 1
-
-/* Define as 0 or 1 according to the floating point format suported by the
-   machine */
-#define HAVE_IEEEFP 1
-
-/* Define to 1 if you have the <string.h> header file. */
-#define HAVE_STRING_H 1
-
-/* Define to 1 if you have the <sys/types.h> header file. */
-#define HAVE_SYS_TYPES_H 1
-
-/* Define to 1 if you have the <io.h> header file. */
-#define HAVE_IO_H 1
-
-/* Define to 1 if you have the <search.h> header file. */
-#define HAVE_SEARCH_H 1
-
-/* The size of a `int', as computed by sizeof. */
-#define SIZEOF_INT 4
-
-/* The size of a `long', as computed by sizeof. */
-#define SIZEOF_LONG 4
-
-/* Set the native cpu bit order */
-#define HOST_FILLORDER FILLORDER_LSB2MSB
-
-/* Define to 1 if your processor stores words with the most significant byte
-   first (like Motorola and SPARC, unlike Intel and VAX). */
-/* #undef WORDS_BIGENDIAN */
-
-/* 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
-# ifndef inline
-#  define inline __inline
-# endif
-#endif
-
-// Comented due undefined reference to `_lfind' on linux
-//#define lfind _lfind
diff --git a/src/tiff/tif_dir.c b/src/tiff/tif_dir.c
deleted file mode 100644
index 2b55d5b..0000000
--- a/src/tiff/tif_dir.c
+++ /dev/null
@@ -1,1350 +0,0 @@
-/* $Id: tif_dir.c 4825 2006-08-16 13:01:53Z lubia $ */
-
-/*
- * Copyright (c) 1988-1997 Sam Leffler
- * Copyright (c) 1991-1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and 
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- * 
- * 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 SAM LEFFLER OR SILICON GRAPHICS 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.
- */
-
-/*
- * TIFF Library.
- *
- * Directory Tag Get & Set Routines.
- * (and also some miscellaneous stuff)
- */
-#include "tiffiop.h"
-
-/*
- * These are used in the backwards compatibility code...
- */
-#define DATATYPE_VOID		0       /* !untyped data */
-#define DATATYPE_INT		1       /* !signed integer data */
-#define DATATYPE_UINT		2       /* !unsigned integer data */
-#define DATATYPE_IEEEFP		3       /* !IEEE floating point data */
-
-static void
-setByteArray(void** vpp, void* vp, size_t nmemb, size_t elem_size)
-{
-	if (*vpp)
-		_TIFFfree(*vpp), *vpp = 0;
-	if (vp) {
-		tsize_t	bytes = nmemb * elem_size;
-		if (elem_size && bytes / elem_size == nmemb)
-			*vpp = (void*) _TIFFmalloc(bytes);
-		if (*vpp)
-			_TIFFmemcpy(*vpp, vp, bytes);
-	}
-}
-void _TIFFsetByteArray(void** vpp, void* vp, uint32 n)
-    { setByteArray(vpp, vp, n, 1); }
-void _TIFFsetString(char** cpp, char* cp)
-    { setByteArray((void**) cpp, (void*) cp, strlen(cp)+1, 1); }
-void _TIFFsetNString(char** cpp, char* cp, uint32 n)
-    { setByteArray((void**) cpp, (void*) cp, n, 1); }
-void _TIFFsetShortArray(uint16** wpp, uint16* wp, uint32 n)
-    { setByteArray((void**) wpp, (void*) wp, n, sizeof (uint16)); }
-void _TIFFsetLongArray(uint32** lpp, uint32* lp, uint32 n)
-    { setByteArray((void**) lpp, (void*) lp, n, sizeof (uint32)); }
-void _TIFFsetFloatArray(float** fpp, float* fp, uint32 n)
-    { setByteArray((void**) fpp, (void*) fp, n, sizeof (float)); }
-void _TIFFsetDoubleArray(double** dpp, double* dp, uint32 n)
-    { setByteArray((void**) dpp, (void*) dp, n, sizeof (double)); }
-
-/*
- * Install extra samples information.
- */
-static int
-setExtraSamples(TIFFDirectory* td, va_list ap, uint32* v)
-{
-	uint16* va;
-	uint32 i;
-
-	*v = va_arg(ap, uint32);
-	if ((uint16) *v > td->td_samplesperpixel)
-		return (0);
-	va = va_arg(ap, uint16*);
-	if (*v > 0 && va == NULL)		/* typically missing param */
-		return (0);
-	for (i = 0; i < *v; i++)
-		if (va[i] > EXTRASAMPLE_UNASSALPHA)
-			return (0);
-	td->td_extrasamples = (uint16) *v;
-	_TIFFsetShortArray(&td->td_sampleinfo, va, td->td_extrasamples);
-	return (1);
-}
-
-static uint32
-checkInkNamesString(TIFF* tif, uint32 slen, const char* s)
-{
-	TIFFDirectory* td = &tif->tif_dir;
-	uint16 i = td->td_samplesperpixel;
-
-	if (slen > 0) {
-		const char* ep = s+slen;
-		const char* cp = s;
-		for (; i > 0; i--) {
-			for (; *cp != '\0'; cp++)
-				if (cp >= ep)
-					goto bad;
-			cp++;				/* skip \0 */
-		}
-		return (cp-s);
-	}
-bad:
-	TIFFErrorExt(tif->tif_clientdata, "TIFFSetField",
-	    "%s: Invalid InkNames value; expecting %d names, found %d",
-	    tif->tif_name,
-	    td->td_samplesperpixel,
-	    td->td_samplesperpixel-i);
-	return (0);
-}
-
-static int
-_TIFFVSetField(TIFF* tif, ttag_t tag, va_list ap)
-{
-	static const char module[] = "_TIFFVSetField";
-	
-	TIFFDirectory* td = &tif->tif_dir;
-	int status = 1;
-	uint32 v32, i, v;
-	char* s;
-
-	switch (tag) {
-	case TIFFTAG_SUBFILETYPE:
-		td->td_subfiletype = va_arg(ap, uint32);
-		break;
-	case TIFFTAG_IMAGEWIDTH:
-		td->td_imagewidth = va_arg(ap, uint32);
-		break;
-	case TIFFTAG_IMAGELENGTH:
-		td->td_imagelength = va_arg(ap, uint32);
-		break;
-	case TIFFTAG_BITSPERSAMPLE:
-		td->td_bitspersample = (uint16) va_arg(ap, int);
-		/*
-		 * If the data require post-decoding processing to byte-swap
-		 * samples, set it up here.  Note that since tags are required
-		 * to be ordered, compression code can override this behaviour
-		 * in the setup method if it wants to roll the post decoding
-		 * work in with its normal work.
-		 */
-		if (tif->tif_flags & TIFF_SWAB) {
-			if (td->td_bitspersample == 16)
-				tif->tif_postdecode = _TIFFSwab16BitData;
-			else if (td->td_bitspersample == 24)
-				tif->tif_postdecode = _TIFFSwab24BitData;
-			else if (td->td_bitspersample == 32)
-				tif->tif_postdecode = _TIFFSwab32BitData;
-			else if (td->td_bitspersample == 64)
-				tif->tif_postdecode = _TIFFSwab64BitData;
-			else if (td->td_bitspersample == 128) /* two 64's */
-				tif->tif_postdecode = _TIFFSwab64BitData;
-		}
-		break;
-	case TIFFTAG_COMPRESSION:
-		v = va_arg(ap, uint32) & 0xffff;
-		/*
-		 * If we're changing the compression scheme, the notify the
-		 * previous module so that it can cleanup any state it's
-		 * setup.
-		 */
-		if (TIFFFieldSet(tif, FIELD_COMPRESSION)) {
-			if (td->td_compression == v)
-				break;
-			(*tif->tif_cleanup)(tif);
-			tif->tif_flags &= ~TIFF_CODERSETUP;
-		}
-		/*
-		 * Setup new compression routine state.
-		 */
-		if( (status = TIFFSetCompressionScheme(tif, v)) != 0 )
-                    td->td_compression = (uint16) v;
-                else
-                    status = 0;
-		break;
-	case TIFFTAG_PHOTOMETRIC:
-		td->td_photometric = (uint16) va_arg(ap, int);
-		break;
-	case TIFFTAG_THRESHHOLDING:
-		td->td_threshholding = (uint16) va_arg(ap, int);
-		break;
-	case TIFFTAG_FILLORDER:
-		v = va_arg(ap, uint32);
-		if (v != FILLORDER_LSB2MSB && v != FILLORDER_MSB2LSB)
-			goto badvalue;
-		td->td_fillorder = (uint16) v;
-		break;
-		break;
-	case TIFFTAG_ORIENTATION:
-		v = va_arg(ap, uint32);
-		if (v < ORIENTATION_TOPLEFT || ORIENTATION_LEFTBOT < v) {
-			TIFFWarningExt(tif->tif_clientdata, tif->tif_name,
-			    "Bad value %lu for \"%s\" tag ignored",
-			    v, _TIFFFieldWithTag(tif, tag)->field_name);
-		} else
-			td->td_orientation = (uint16) v;
-		break;
-	case TIFFTAG_SAMPLESPERPIXEL:
-		/* XXX should cross check -- e.g. if pallette, then 1 */
-		v = va_arg(ap, uint32);
-		if (v == 0)
-			goto badvalue;
-		td->td_samplesperpixel = (uint16) v;
-		break;
-	case TIFFTAG_ROWSPERSTRIP:
-		v32 = va_arg(ap, uint32);
-		if (v32 == 0)
-			goto badvalue32;
-		td->td_rowsperstrip = v32;
-		if (!TIFFFieldSet(tif, FIELD_TILEDIMENSIONS)) {
-			td->td_tilelength = v32;
-			td->td_tilewidth = td->td_imagewidth;
-		}
-		break;
-	case TIFFTAG_MINSAMPLEVALUE:
-		td->td_minsamplevalue = (uint16) va_arg(ap, int);
-		break;
-	case TIFFTAG_MAXSAMPLEVALUE:
-		td->td_maxsamplevalue = (uint16) va_arg(ap, int);
-		break;
-	case TIFFTAG_SMINSAMPLEVALUE:
-		td->td_sminsamplevalue = va_arg(ap, double);
-		break;
-	case TIFFTAG_SMAXSAMPLEVALUE:
-		td->td_smaxsamplevalue = va_arg(ap, double);
-		break;
-	case TIFFTAG_XRESOLUTION:
-		td->td_xresolution = (float) va_arg(ap, double);
-		break;
-	case TIFFTAG_YRESOLUTION:
-		td->td_yresolution = (float) va_arg(ap, double);
-		break;
-	case TIFFTAG_PLANARCONFIG:
-		v = va_arg(ap, uint32);
-		if (v != PLANARCONFIG_CONTIG && v != PLANARCONFIG_SEPARATE)
-			goto badvalue;
-		td->td_planarconfig = (uint16) v;
-		break;
-	case TIFFTAG_XPOSITION:
-		td->td_xposition = (float) va_arg(ap, double);
-		break;
-	case TIFFTAG_YPOSITION:
-		td->td_yposition = (float) va_arg(ap, double);
-		break;
-	case TIFFTAG_RESOLUTIONUNIT:
-		v = va_arg(ap, uint32);
-		if (v < RESUNIT_NONE || RESUNIT_CENTIMETER < v)
-			goto badvalue;
-		td->td_resolutionunit = (uint16) v;
-		break;
-	case TIFFTAG_PAGENUMBER:
-		td->td_pagenumber[0] = (uint16) va_arg(ap, int);
-		td->td_pagenumber[1] = (uint16) va_arg(ap, int);
-		break;
-	case TIFFTAG_HALFTONEHINTS:
-		td->td_halftonehints[0] = (uint16) va_arg(ap, int);
-		td->td_halftonehints[1] = (uint16) va_arg(ap, int);
-		break;
-	case TIFFTAG_COLORMAP:
-		v32 = (uint32)(1L<<td->td_bitspersample);
-		_TIFFsetShortArray(&td->td_colormap[0], va_arg(ap, uint16*), v32);
-		_TIFFsetShortArray(&td->td_colormap[1], va_arg(ap, uint16*), v32);
-		_TIFFsetShortArray(&td->td_colormap[2], va_arg(ap, uint16*), v32);
-		break;
-	case TIFFTAG_EXTRASAMPLES:
-		if (!setExtraSamples(td, ap, &v))
-			goto badvalue;
-		break;
-	case TIFFTAG_MATTEING:
-		td->td_extrasamples = (uint16) (va_arg(ap, int) != 0);
-		if (td->td_extrasamples) {
-			uint16 sv = EXTRASAMPLE_ASSOCALPHA;
-			_TIFFsetShortArray(&td->td_sampleinfo, &sv, 1);
-		}
-		break;
-	case TIFFTAG_TILEWIDTH:
-		v32 = va_arg(ap, uint32);
-		if (v32 % 16) {
-			if (tif->tif_mode != O_RDONLY)
-				goto badvalue32;
-			TIFFWarningExt(tif->tif_clientdata, tif->tif_name,
-				"Nonstandard tile width %d, convert file", v32);
-		}
-		td->td_tilewidth = v32;
-		tif->tif_flags |= TIFF_ISTILED;
-		break;
-	case TIFFTAG_TILELENGTH:
-		v32 = va_arg(ap, uint32);
-		if (v32 % 16) {
-			if (tif->tif_mode != O_RDONLY)
-				goto badvalue32;
-			TIFFWarningExt(tif->tif_clientdata, tif->tif_name,
-			    "Nonstandard tile length %d, convert file", v32);
-		}
-		td->td_tilelength = v32;
-		tif->tif_flags |= TIFF_ISTILED;
-		break;
-	case TIFFTAG_TILEDEPTH:
-		v32 = va_arg(ap, uint32);
-		if (v32 == 0)
-			goto badvalue32;
-		td->td_tiledepth = v32;
-		break;
-	case TIFFTAG_DATATYPE:
-		v = va_arg(ap, uint32);
-		switch (v) {
-		case DATATYPE_VOID:	v = SAMPLEFORMAT_VOID;	break;
-		case DATATYPE_INT:	v = SAMPLEFORMAT_INT;	break;
-		case DATATYPE_UINT:	v = SAMPLEFORMAT_UINT;	break;
-		case DATATYPE_IEEEFP:	v = SAMPLEFORMAT_IEEEFP;break;
-		default:		goto badvalue;
-		}
-		td->td_sampleformat = (uint16) v;
-		break;
-	case TIFFTAG_SAMPLEFORMAT:
-		v = va_arg(ap, uint32);
-		if (v < SAMPLEFORMAT_UINT || SAMPLEFORMAT_COMPLEXIEEEFP < v)
-			goto badvalue;
-		td->td_sampleformat = (uint16) v;
-
-                /*  Try to fix up the SWAB function for complex data. */
-                if( td->td_sampleformat == SAMPLEFORMAT_COMPLEXINT 
-                    && td->td_bitspersample == 32
-                    && tif->tif_postdecode == _TIFFSwab32BitData )
-                    tif->tif_postdecode = _TIFFSwab16BitData;
-                else if( (td->td_sampleformat == SAMPLEFORMAT_COMPLEXINT 
-                          || td->td_sampleformat == SAMPLEFORMAT_COMPLEXIEEEFP)
-                         && td->td_bitspersample == 64
-                         && tif->tif_postdecode == _TIFFSwab64BitData )
-                    tif->tif_postdecode = _TIFFSwab32BitData;
-		break;
-	case TIFFTAG_IMAGEDEPTH:
-		td->td_imagedepth = va_arg(ap, uint32);
-		break;
-	case TIFFTAG_SUBIFD:
-		if ((tif->tif_flags & TIFF_INSUBIFD) == 0) {
-			td->td_nsubifd = (uint16) va_arg(ap, int);
-			_TIFFsetLongArray(&td->td_subifd, va_arg(ap, uint32*),
-			    (long) td->td_nsubifd);
-		} else {
-			TIFFErrorExt(tif->tif_clientdata, module, "%s: Sorry, cannot nest SubIFDs",
-				  tif->tif_name);
-			status = 0;
-		}
-		break;
-	case TIFFTAG_YCBCRPOSITIONING:
-		td->td_ycbcrpositioning = (uint16) va_arg(ap, int);
-		break;
-	case TIFFTAG_YCBCRSUBSAMPLING:
-		td->td_ycbcrsubsampling[0] = (uint16) va_arg(ap, int);
-		td->td_ycbcrsubsampling[1] = (uint16) va_arg(ap, int);
-		break;
-	case TIFFTAG_TRANSFERFUNCTION:
-		v = (td->td_samplesperpixel - td->td_extrasamples) > 1 ? 3 : 1;
-		for (i = 0; i < v; i++)
-			_TIFFsetShortArray(&td->td_transferfunction[i],
-			    va_arg(ap, uint16*), 1L<<td->td_bitspersample);
-		break;
-	case TIFFTAG_INKNAMES:
-		v = va_arg(ap, uint32);
-		s = va_arg(ap, char*);
-		v = checkInkNamesString(tif, v, s);
-                status = v > 0;
-		if( v > 0 ) {
-			_TIFFsetNString(&td->td_inknames, s, v);
-			td->td_inknameslen = v;
-		}
-		break;
-        default: {
-            const TIFFFieldInfo* fip = _TIFFFindFieldInfo(tif, tag, TIFF_ANY);
-            TIFFTagValue *tv;
-            int tv_size, iCustom;
-
-            /*
-	     * This can happen if multiple images are open with different
-	     * codecs which have private tags.  The global tag information
-	     * table may then have tags that are valid for one file but not
-	     * the other. If the client tries to set a tag that is not valid
-	     * for the image's codec then we'll arrive here.  This
-	     * happens, for example, when tiffcp is used to convert between
-	     * compression schemes and codec-specific tags are blindly copied.
-             */
-            if(fip == NULL || fip->field_bit != FIELD_CUSTOM) {
-		TIFFErrorExt(tif->tif_clientdata, module,
-		    "%s: Invalid %stag \"%s\" (not supported by codec)",
-		    tif->tif_name, isPseudoTag(tag) ? "pseudo-" : "",
-		    _TIFFFieldWithTag(tif, tag)->field_name);
-		status = 0;
-		break;
-            }
-
-            /*
-             * Find the existing entry for this custom value.
-             */
-            tv = NULL;
-            for(iCustom = 0; iCustom < td->td_customValueCount; iCustom++) {
-                if(td->td_customValues[iCustom].info == fip) {
-                    tv = td->td_customValues + iCustom;
-                    if(tv->value != NULL)
-                    {
-                        _TIFFfree(tv->value);
-                        tv->value = NULL;
-                    }
-                    break;
-                }
-            }
-
-            /*
-             * Grow the custom list if the entry was not found.
-             */
-            if(tv == NULL) {
-		TIFFTagValue	*new_customValues;
-		
-		td->td_customValueCount++;
-		new_customValues = (TIFFTagValue *)
-			_TIFFrealloc(td->td_customValues,
-				     sizeof(TIFFTagValue) * td->td_customValueCount);
-		if (!new_customValues) {
-			TIFFErrorExt(tif->tif_clientdata, module,
-		"%s: Failed to allocate space for list of custom values",
-				  tif->tif_name);
-			status = 0;
-			goto end;
-		}
-
-		td->td_customValues = new_customValues;
-
-                tv = td->td_customValues + (td->td_customValueCount-1);
-                tv->info = fip;
-                tv->value = NULL;
-                tv->count = 0;
-            }
-
-            /*
-             * Set custom value ... save a copy of the custom tag value.
-             */
-	    tv_size = _TIFFDataSize(fip->field_type);
-	    if (tv_size == 0) {
-		    status = 0;
-		    TIFFErrorExt(tif->tif_clientdata, module,
-				 "%s: Bad field type %d for \"%s\"",
-				 tif->tif_name, fip->field_type,
-				 fip->field_name);
-		    goto end;
-	    }
-           
-            if(fip->field_passcount) {
-		    if (fip->field_writecount == TIFF_VARIABLE2)
-			tv->count = (uint32) va_arg(ap, uint32);
-		    else
-			tv->count = (int) va_arg(ap, int);
-	    } else if (fip->field_writecount == TIFF_VARIABLE
-		       || fip->field_writecount == TIFF_VARIABLE2)
-		tv->count = 1;
-	    else if (fip->field_writecount == TIFF_SPP)
-		tv->count = td->td_samplesperpixel;
-	    else
-                tv->count = fip->field_writecount;
-            
-    
-	    if (fip->field_type == TIFF_ASCII)
-		    _TIFFsetString((char **)&tv->value, va_arg(ap, char *));
-	    else {
-                tv->value = _TIFFmalloc(tv_size * tv->count);
-		if (!tv->value) {
-		    status = 0;
-		    goto end;
-		}
-
-		if ((fip->field_passcount
-		    || fip->field_writecount == TIFF_VARIABLE
-		    || fip->field_writecount == TIFF_VARIABLE2
-		    || fip->field_writecount == TIFF_SPP
-		    || tv->count > 1)
-		    && fip->field_tag != TIFFTAG_PAGENUMBER
-		    && fip->field_tag != TIFFTAG_HALFTONEHINTS
-		    && fip->field_tag != TIFFTAG_YCBCRSUBSAMPLING
-		    && fip->field_tag != TIFFTAG_DOTRANGE) {
-                    _TIFFmemcpy(tv->value, va_arg(ap, void *),
-				tv->count * tv_size);
-		} else {
-		    /*
-		     * XXX: The following loop required to handle
-		     * TIFFTAG_PAGENUMBER, TIFFTAG_HALFTONEHINTS,
-		     * TIFFTAG_YCBCRSUBSAMPLING and TIFFTAG_DOTRANGE tags.
-		     * These tags are actually arrays and should be passed as
-		     * array pointers to TIFFSetField() function, but actually
-		     * passed as a list of separate values. This behaviour
-		     * must be changed in the future!
-		     */
-		    int i;
-		    char *val = (char *)tv->value;
-
-		    for (i = 0; i < tv->count; i++, val += tv_size) {
-			    switch (fip->field_type) {
-				case TIFF_BYTE:
-				case TIFF_UNDEFINED:
-				    {
-					uint8 v = (uint8)va_arg(ap, int);
-					_TIFFmemcpy(val, &v, tv_size);
-				    }
-				    break;
-				case TIFF_SBYTE:
-				    {
-					int8 v = (int8)va_arg(ap, int);
-					_TIFFmemcpy(val, &v, tv_size);
-				    }
-				    break;
-				case TIFF_SHORT:
-				    {
-					uint16 v = (uint16)va_arg(ap, int);
-					_TIFFmemcpy(val, &v, tv_size);
-				    }
-				    break;
-				case TIFF_SSHORT:
-				    {
-					int16 v = (int16)va_arg(ap, int);
-					_TIFFmemcpy(val, &v, tv_size);
-				    }
-				    break;
-				case TIFF_LONG:
-				case TIFF_IFD:
-				    {
-					uint32 v = va_arg(ap, uint32);
-					_TIFFmemcpy(val, &v, tv_size);
-				    }
-				    break;
-				case TIFF_SLONG:
-				    {
-					int32 v = va_arg(ap, int32);
-					_TIFFmemcpy(val, &v, tv_size);
-				    }
-				    break;
-				case TIFF_RATIONAL:
-				case TIFF_SRATIONAL:
-				case TIFF_FLOAT:
-				    {
-					float v = (float)va_arg(ap, double);
-					_TIFFmemcpy(val, &v, tv_size);
-				    }
-				    break;
-				case TIFF_DOUBLE:
-				    {
-					double v = va_arg(ap, double);
-					_TIFFmemcpy(val, &v, tv_size);
-				    }
-				    break;
-				default:
-				    _TIFFmemset(val, 0, tv_size);
-				    status = 0;
-				    break;
-			    }
-		    }
-		}
-	    }
-          }
-	}
-	if (status) {
-		TIFFSetFieldBit(tif, _TIFFFieldWithTag(tif, tag)->field_bit);
-		tif->tif_flags |= TIFF_DIRTYDIRECT;
-	}
-
-end:
-	va_end(ap);
-	return (status);
-badvalue:
-	TIFFErrorExt(tif->tif_clientdata, module, "%s: Bad value %d for \"%s\"",
-		  tif->tif_name, v, _TIFFFieldWithTag(tif, tag)->field_name);
-	va_end(ap);
-	return (0);
-badvalue32:
-	TIFFErrorExt(tif->tif_clientdata, module, "%s: Bad value %ld for \"%s\"",
-		   tif->tif_name, v32, _TIFFFieldWithTag(tif, tag)->field_name);
-	va_end(ap);
-	return (0);
-}
-
-/*
- * Return 1/0 according to whether or not
- * it is permissible to set the tag's value.
- * Note that we allow ImageLength to be changed
- * so that we can append and extend to images.
- * Any other tag may not be altered once writing
- * has commenced, unless its value has no effect
- * on the format of the data that is written.
- */
-static int
-OkToChangeTag(TIFF* tif, ttag_t tag)
-{
-	const TIFFFieldInfo* fip = _TIFFFindFieldInfo(tif, tag, TIFF_ANY);
-	if (!fip) {			/* unknown tag */
-		TIFFErrorExt(tif->tif_clientdata, "TIFFSetField", "%s: Unknown %stag %u",
-		    tif->tif_name, isPseudoTag(tag) ? "pseudo-" : "", tag);
-		return (0);
-	}
-	if (tag != TIFFTAG_IMAGELENGTH && (tif->tif_flags & TIFF_BEENWRITING) &&
-	    !fip->field_oktochange) {
-		/*
-		 * Consult info table to see if tag can be changed
-		 * after we've started writing.  We only allow changes
-		 * to those tags that don't/shouldn't affect the
-		 * compression and/or format of the data.
-		 */
-		TIFFErrorExt(tif->tif_clientdata, "TIFFSetField",
-		    "%s: Cannot modify tag \"%s\" while writing",
-		    tif->tif_name, fip->field_name);
-		return (0);
-	}
-	return (1);
-}
-
-/*
- * Record the value of a field in the
- * internal directory structure.  The
- * field will be written to the file
- * when/if the directory structure is
- * updated.
- */
-int
-TIFFSetField(TIFF* tif, ttag_t tag, ...)
-{
-	va_list ap;
-	int status;
-
-	va_start(ap, tag);
-	status = TIFFVSetField(tif, tag, ap);
-	va_end(ap);
-	return (status);
-}
-
-/*
- * Like TIFFSetField, but taking a varargs
- * parameter list.  This routine is useful
- * for building higher-level interfaces on
- * top of the library.
- */
-int
-TIFFVSetField(TIFF* tif, ttag_t tag, va_list ap)
-{
-	return OkToChangeTag(tif, tag) ?
-	    (*tif->tif_tagmethods.vsetfield)(tif, tag, ap) : 0;
-}
-
-static int
-_TIFFVGetField(TIFF* tif, ttag_t tag, va_list ap)
-{
-    TIFFDirectory* td = &tif->tif_dir;
-    int            ret_val = 1;
-
-    switch (tag) {
-	case TIFFTAG_SUBFILETYPE:
-            *va_arg(ap, uint32*) = td->td_subfiletype;
-            break;
-	case TIFFTAG_IMAGEWIDTH:
-            *va_arg(ap, uint32*) = td->td_imagewidth;
-            break;
-	case TIFFTAG_IMAGELENGTH:
-            *va_arg(ap, uint32*) = td->td_imagelength;
-            break;
-	case TIFFTAG_BITSPERSAMPLE:
-            *va_arg(ap, uint16*) = td->td_bitspersample;
-            break;
-	case TIFFTAG_COMPRESSION:
-            *va_arg(ap, uint16*) = td->td_compression;
-            break;
-	case TIFFTAG_PHOTOMETRIC:
-            *va_arg(ap, uint16*) = td->td_photometric;
-            break;
-	case TIFFTAG_THRESHHOLDING:
-            *va_arg(ap, uint16*) = td->td_threshholding;
-            break;
-	case TIFFTAG_FILLORDER:
-            *va_arg(ap, uint16*) = td->td_fillorder;
-            break;
-	case TIFFTAG_ORIENTATION:
-            *va_arg(ap, uint16*) = td->td_orientation;
-            break;
-	case TIFFTAG_SAMPLESPERPIXEL:
-            *va_arg(ap, uint16*) = td->td_samplesperpixel;
-            break;
-	case TIFFTAG_ROWSPERSTRIP:
-            *va_arg(ap, uint32*) = td->td_rowsperstrip;
-            break;
-	case TIFFTAG_MINSAMPLEVALUE:
-            *va_arg(ap, uint16*) = td->td_minsamplevalue;
-            break;
-	case TIFFTAG_MAXSAMPLEVALUE:
-            *va_arg(ap, uint16*) = td->td_maxsamplevalue;
-            break;
-	case TIFFTAG_SMINSAMPLEVALUE:
-            *va_arg(ap, double*) = td->td_sminsamplevalue;
-            break;
-	case TIFFTAG_SMAXSAMPLEVALUE:
-            *va_arg(ap, double*) = td->td_smaxsamplevalue;
-            break;
-	case TIFFTAG_XRESOLUTION:
-            *va_arg(ap, float*) = td->td_xresolution;
-            break;
-	case TIFFTAG_YRESOLUTION:
-            *va_arg(ap, float*) = td->td_yresolution;
-            break;
-	case TIFFTAG_PLANARCONFIG:
-            *va_arg(ap, uint16*) = td->td_planarconfig;
-            break;
-	case TIFFTAG_XPOSITION:
-            *va_arg(ap, float*) = td->td_xposition;
-            break;
-	case TIFFTAG_YPOSITION:
-            *va_arg(ap, float*) = td->td_yposition;
-            break;
-	case TIFFTAG_RESOLUTIONUNIT:
-            *va_arg(ap, uint16*) = td->td_resolutionunit;
-            break;
-	case TIFFTAG_PAGENUMBER:
-            *va_arg(ap, uint16*) = td->td_pagenumber[0];
-            *va_arg(ap, uint16*) = td->td_pagenumber[1];
-            break;
-	case TIFFTAG_HALFTONEHINTS:
-            *va_arg(ap, uint16*) = td->td_halftonehints[0];
-            *va_arg(ap, uint16*) = td->td_halftonehints[1];
-            break;
-	case TIFFTAG_COLORMAP:
-            *va_arg(ap, uint16**) = td->td_colormap[0];
-            *va_arg(ap, uint16**) = td->td_colormap[1];
-            *va_arg(ap, uint16**) = td->td_colormap[2];
-            break;
-	case TIFFTAG_STRIPOFFSETS:
-	case TIFFTAG_TILEOFFSETS:
-            *va_arg(ap, uint32**) = td->td_stripoffset;
-            break;
-	case TIFFTAG_STRIPBYTECOUNTS:
-	case TIFFTAG_TILEBYTECOUNTS:
-            *va_arg(ap, uint32**) = td->td_stripbytecount;
-            break;
-	case TIFFTAG_MATTEING:
-            *va_arg(ap, uint16*) =
-                (td->td_extrasamples == 1 &&
-                 td->td_sampleinfo[0] == EXTRASAMPLE_ASSOCALPHA);
-            break;
-	case TIFFTAG_EXTRASAMPLES:
-            *va_arg(ap, uint16*) = td->td_extrasamples;
-            *va_arg(ap, uint16**) = td->td_sampleinfo;
-            break;
-	case TIFFTAG_TILEWIDTH:
-            *va_arg(ap, uint32*) = td->td_tilewidth;
-            break;
-	case TIFFTAG_TILELENGTH:
-            *va_arg(ap, uint32*) = td->td_tilelength;
-            break;
-	case TIFFTAG_TILEDEPTH:
-            *va_arg(ap, uint32*) = td->td_tiledepth;
-            break;
-	case TIFFTAG_DATATYPE:
-            switch (td->td_sampleformat) {
-		case SAMPLEFORMAT_UINT:
-                    *va_arg(ap, uint16*) = DATATYPE_UINT;
-                    break;
-		case SAMPLEFORMAT_INT:
-                    *va_arg(ap, uint16*) = DATATYPE_INT;
-                    break;
-		case SAMPLEFORMAT_IEEEFP:
-                    *va_arg(ap, uint16*) = DATATYPE_IEEEFP;
-                    break;
-		case SAMPLEFORMAT_VOID:
-                    *va_arg(ap, uint16*) = DATATYPE_VOID;
-                    break;
-            }
-            break;
-	case TIFFTAG_SAMPLEFORMAT:
-            *va_arg(ap, uint16*) = td->td_sampleformat;
-            break;
-	case TIFFTAG_IMAGEDEPTH:
-            *va_arg(ap, uint32*) = td->td_imagedepth;
-            break;
-	case TIFFTAG_SUBIFD:
-            *va_arg(ap, uint16*) = td->td_nsubifd;
-            *va_arg(ap, uint32**) = td->td_subifd;
-            break;
-	case TIFFTAG_YCBCRPOSITIONING:
-            *va_arg(ap, uint16*) = td->td_ycbcrpositioning;
-            break;
-	case TIFFTAG_YCBCRSUBSAMPLING:
-            *va_arg(ap, uint16*) = td->td_ycbcrsubsampling[0];
-            *va_arg(ap, uint16*) = td->td_ycbcrsubsampling[1];
-            break;
-	case TIFFTAG_TRANSFERFUNCTION:
-            *va_arg(ap, uint16**) = td->td_transferfunction[0];
-            if (td->td_samplesperpixel - td->td_extrasamples > 1) {
-                *va_arg(ap, uint16**) = td->td_transferfunction[1];
-                *va_arg(ap, uint16**) = td->td_transferfunction[2];
-            }
-            break;
-	case TIFFTAG_INKNAMES:
-            *va_arg(ap, char**) = td->td_inknames;
-            break;
-        default:
-        {
-            const TIFFFieldInfo* fip = _TIFFFindFieldInfo(tif, tag, TIFF_ANY);
-            int           i;
-            
-            /*
-             * This can happen if multiple images are open with
-             * different codecs which have private tags.  The
-             * global tag information table may then have tags
-             * that are valid for one file but not the other. 
-             * If the client tries to get a tag that is not valid
-             * for the image's codec then we'll arrive here.
-             */
-            if( fip == NULL || fip->field_bit != FIELD_CUSTOM )
-            {
-				TIFFErrorExt(tif->tif_clientdata, "_TIFFVGetField",
-                          "%s: Invalid %stag \"%s\" (not supported by codec)",
-                          tif->tif_name, isPseudoTag(tag) ? "pseudo-" : "",
-                          _TIFFFieldWithTag(tif, tag)->field_name);
-                ret_val = 0;
-                break;
-            }
-
-            /*
-	     * Do we have a custom value?
-	     */
-            ret_val = 0;
-            for (i = 0; i < td->td_customValueCount; i++) {
-		TIFFTagValue *tv = td->td_customValues + i;
-
-		if (tv->info->field_tag != tag)
-			continue;
-                
-		if (fip->field_passcount) {
-			if (fip->field_readcount == TIFF_VARIABLE2) 
-				*va_arg(ap, uint32*) = (uint32)tv->count;
-			else	/* Assume TIFF_VARIABLE */
-				*va_arg(ap, uint16*) = (uint16)tv->count;
-			*va_arg(ap, void **) = tv->value;
-			ret_val = 1;
-                } else {
-			if ((fip->field_type == TIFF_ASCII
-			    || fip->field_readcount == TIFF_VARIABLE
-			    || fip->field_readcount == TIFF_VARIABLE2
-			    || fip->field_readcount == TIFF_SPP
-			    || tv->count > 1)
-			    && fip->field_tag != TIFFTAG_PAGENUMBER
-			    && fip->field_tag != TIFFTAG_HALFTONEHINTS
-			    && fip->field_tag != TIFFTAG_YCBCRSUBSAMPLING
-			    && fip->field_tag != TIFFTAG_DOTRANGE) {
-				*va_arg(ap, void **) = tv->value;
-				ret_val = 1;
-			} else {
-			    int j;
-			    char *val = (char *)tv->value;
-
-			    for (j = 0; j < tv->count;
-				 j++, val += _TIFFDataSize(tv->info->field_type)) {
-				switch (fip->field_type) {
-					case TIFF_BYTE:
-					case TIFF_UNDEFINED:
-						*va_arg(ap, uint8*) =
-							*(uint8 *)val;
-						ret_val = 1;
-						break;
-					case TIFF_SBYTE:
-						*va_arg(ap, int8*) =
-							*(int8 *)val;
-						ret_val = 1;
-						break;
-					case TIFF_SHORT:
-						*va_arg(ap, uint16*) =
-							*(uint16 *)val;
-						ret_val = 1;
-						break;
-					case TIFF_SSHORT:
-						*va_arg(ap, int16*) =
-							*(int16 *)val;
-						ret_val = 1;
-						break;
-					case TIFF_LONG:
-					case TIFF_IFD:
-						*va_arg(ap, uint32*) =
-							*(uint32 *)val;
-						ret_val = 1;
-						break;
-					case TIFF_SLONG:
-						*va_arg(ap, int32*) =
-							*(int32 *)val;
-						ret_val = 1;
-						break;
-					case TIFF_RATIONAL:
-					case TIFF_SRATIONAL:
-					case TIFF_FLOAT:
-						*va_arg(ap, float*) =
-							*(float *)val;
-						ret_val = 1;
-						break;
-					case TIFF_DOUBLE:
-						*va_arg(ap, double*) =
-							*(double *)val;
-						ret_val = 1;
-						break;
-					default:
-						ret_val = 0;
-						break;
-				}
-			    }
-			}
-                }
-		break;
-            }
-        }
-    }
-    return(ret_val);
-}
-
-/*
- * Return the value of a field in the
- * internal directory structure.
- */
-int
-TIFFGetField(TIFF* tif, ttag_t tag, ...)
-{
-	int status;
-	va_list ap;
-
-	va_start(ap, tag);
-	status = TIFFVGetField(tif, tag, ap);
-	va_end(ap);
-	return (status);
-}
-
-/*
- * Like TIFFGetField, but taking a varargs
- * parameter list.  This routine is useful
- * for building higher-level interfaces on
- * top of the library.
- */
-int
-TIFFVGetField(TIFF* tif, ttag_t tag, va_list ap)
-{
-	const TIFFFieldInfo* fip = _TIFFFindFieldInfo(tif, tag, TIFF_ANY);
-	return (fip && (isPseudoTag(tag) || TIFFFieldSet(tif, fip->field_bit)) ?
-	    (*tif->tif_tagmethods.vgetfield)(tif, tag, ap) : 0);
-}
-
-#define	CleanupField(member) {		\
-    if (td->member) {			\
-	_TIFFfree(td->member);		\
-	td->member = 0;			\
-    }					\
-}
-
-/*
- * Release storage associated with a directory.
- */
-void
-TIFFFreeDirectory(TIFF* tif)
-{
-	TIFFDirectory *td = &tif->tif_dir;
-	int            i;
-
-	_TIFFmemset(td->td_fieldsset, 0, FIELD_SETLONGS);
-	CleanupField(td_colormap[0]);
-	CleanupField(td_colormap[1]);
-	CleanupField(td_colormap[2]);
-	CleanupField(td_sampleinfo);
-	CleanupField(td_subifd);
-	CleanupField(td_inknames);
-	CleanupField(td_transferfunction[0]);
-	CleanupField(td_transferfunction[1]);
-	CleanupField(td_transferfunction[2]);
-	CleanupField(td_stripoffset);
-	CleanupField(td_stripbytecount);
-	TIFFClrFieldBit(tif, FIELD_YCBCRSUBSAMPLING);
-	TIFFClrFieldBit(tif, FIELD_YCBCRPOSITIONING);
-
-	/* Cleanup custom tag values */
-	for( i = 0; i < td->td_customValueCount; i++ ) {
-		if (td->td_customValues[i].value)
-			_TIFFfree(td->td_customValues[i].value);
-	}
-
-	td->td_customValueCount = 0;
-	CleanupField(td_customValues);
-}
-#undef CleanupField
-
-/*
- * Client Tag extension support (from Niles Ritter).
- */
-static TIFFExtendProc _TIFFextender = (TIFFExtendProc) NULL;
-
-TIFFExtendProc
-TIFFSetTagExtender(TIFFExtendProc extender)
-{
-	TIFFExtendProc prev = _TIFFextender;
-	_TIFFextender = extender;
-	return (prev);
-}
-
-/*
- * Setup for a new directory.  Should we automatically call
- * TIFFWriteDirectory() if the current one is dirty?
- *
- * The newly created directory will not exist on the file till
- * TIFFWriteDirectory(), TIFFFlush() or TIFFClose() is called.
- */
-int
-TIFFCreateDirectory(TIFF* tif)
-{
-    TIFFDefaultDirectory(tif);
-    tif->tif_diroff = 0;
-    tif->tif_nextdiroff = 0;
-    tif->tif_curoff = 0;
-    tif->tif_row = (uint32) -1;
-    tif->tif_curstrip = (tstrip_t) -1;
-
-    return 0;
-}
-
-/*
- * Setup a default directory structure.
- */
-int
-TIFFDefaultDirectory(TIFF* tif)
-{
-	register TIFFDirectory* td = &tif->tif_dir;
-
-	size_t tiffFieldInfoCount;
-	const TIFFFieldInfo *tiffFieldInfo =
-		_TIFFGetFieldInfo(&tiffFieldInfoCount);
-	_TIFFSetupFieldInfo(tif, tiffFieldInfo, tiffFieldInfoCount);
-
-	_TIFFmemset(td, 0, sizeof (*td));
-	td->td_fillorder = FILLORDER_MSB2LSB;
-	td->td_bitspersample = 1;
-	td->td_threshholding = THRESHHOLD_BILEVEL;
-	td->td_orientation = ORIENTATION_TOPLEFT;
-	td->td_samplesperpixel = 1;
-	td->td_rowsperstrip = (uint32) -1;
-	td->td_tilewidth = 0;
-	td->td_tilelength = 0;
-	td->td_tiledepth = 1;
-	td->td_stripbytecountsorted = 1; /* Our own arrays always sorted. */
-	td->td_resolutionunit = RESUNIT_INCH;
-	td->td_sampleformat = SAMPLEFORMAT_UINT;
-	td->td_imagedepth = 1;
-	td->td_ycbcrsubsampling[0] = 2;
-	td->td_ycbcrsubsampling[1] = 2;
-	td->td_ycbcrpositioning = YCBCRPOSITION_CENTERED;
-	tif->tif_postdecode = _TIFFNoPostDecode;
-        tif->tif_foundfield = NULL;
-	tif->tif_tagmethods.vsetfield = _TIFFVSetField;
-	tif->tif_tagmethods.vgetfield = _TIFFVGetField;
-	tif->tif_tagmethods.printdir = NULL;
-	/*
-	 *  Give client code a chance to install their own
-	 *  tag extensions & methods, prior to compression overloads.
-	 */
-	if (_TIFFextender)
-		(*_TIFFextender)(tif);
-	(void) TIFFSetField(tif, TIFFTAG_COMPRESSION, COMPRESSION_NONE);
-	/*
-	 * NB: The directory is marked dirty as a result of setting
-	 * up the default compression scheme.  However, this really
-	 * isn't correct -- we want TIFF_DIRTYDIRECT to be set only
-	 * if the user does something.  We could just do the setup
-	 * by hand, but it seems better to use the normal mechanism
-	 * (i.e. TIFFSetField).
-	 */
-	tif->tif_flags &= ~TIFF_DIRTYDIRECT;
-
-        /*
-         * As per http://bugzilla.remotesensing.org/show_bug.cgi?id=19
-         * we clear the ISTILED flag when setting up a new directory.
-         * Should we also be clearing stuff like INSUBIFD?
-         */
-        tif->tif_flags &= ~TIFF_ISTILED;
-
-	return (1);
-}
-
-static int
-TIFFAdvanceDirectory(TIFF* tif, uint32* nextdir, toff_t* off)
-{
-    static const char module[] = "TIFFAdvanceDirectory";
-    uint16 dircount;
-    if (isMapped(tif))
-    {
-        toff_t poff=*nextdir;
-        if (poff+sizeof(uint16) > tif->tif_size)
-        {
-			TIFFErrorExt(tif->tif_clientdata, module, "%s: Error fetching directory count",
-                      tif->tif_name);
-            return (0);
-        }
-        _TIFFmemcpy(&dircount, tif->tif_base+poff, sizeof (uint16));
-        if (tif->tif_flags & TIFF_SWAB)
-            TIFFSwabShort(&dircount);
-        poff+=sizeof (uint16)+dircount*sizeof (TIFFDirEntry);
-        if (off != NULL)
-            *off = poff;
-        if (((toff_t) (poff+sizeof (uint32))) > tif->tif_size)
-        {
-			TIFFErrorExt(tif->tif_clientdata, module, "%s: Error fetching directory link",
-                      tif->tif_name);
-            return (0);
-        }
-        _TIFFmemcpy(nextdir, tif->tif_base+poff, sizeof (uint32));
-        if (tif->tif_flags & TIFF_SWAB)
-            TIFFSwabLong(nextdir);
-        return (1);
-    }
-    else
-    {
-        if (!SeekOK(tif, *nextdir) ||
-            !ReadOK(tif, &dircount, sizeof (uint16))) {
-			TIFFErrorExt(tif->tif_clientdata, module, "%s: Error fetching directory count",
-                      tif->tif_name);
-            return (0);
-        }
-        if (tif->tif_flags & TIFF_SWAB)
-            TIFFSwabShort(&dircount);
-        if (off != NULL)
-            *off = TIFFSeekFile(tif,
-                                dircount*sizeof (TIFFDirEntry), SEEK_CUR);
-        else
-            (void) TIFFSeekFile(tif,
-                                dircount*sizeof (TIFFDirEntry), SEEK_CUR);
-        if (!ReadOK(tif, nextdir, sizeof (uint32))) {
-			TIFFErrorExt(tif->tif_clientdata, module, "%s: Error fetching directory link",
-                      tif->tif_name);
-            return (0);
-        }
-        if (tif->tif_flags & TIFF_SWAB)
-            TIFFSwabLong(nextdir);
-        return (1);
-    }
-}
-
-/*
- * Count the number of directories in a file.
- */
-tdir_t
-TIFFNumberOfDirectories(TIFF* tif)
-{
-    toff_t nextdir = tif->tif_header.tiff_diroff;
-    tdir_t n = 0;
-    
-    while (nextdir != 0 && TIFFAdvanceDirectory(tif, &nextdir, NULL))
-        n++;
-    return (n);
-}
-
-/*
- * Set the n-th directory as the current directory.
- * NB: Directories are numbered starting at 0.
- */
-int
-TIFFSetDirectory(TIFF* tif, tdir_t dirn)
-{
-	toff_t nextdir;
-	tdir_t n;
-
-	nextdir = tif->tif_header.tiff_diroff;
-	for (n = dirn; n > 0 && nextdir != 0; n--)
-		if (!TIFFAdvanceDirectory(tif, &nextdir, NULL))
-			return (0);
-	tif->tif_nextdiroff = nextdir;
-	/*
-	 * Set curdir to the actual directory index.  The
-	 * -1 is because TIFFReadDirectory will increment
-	 * tif_curdir after successfully reading the directory.
-	 */
-	tif->tif_curdir = (dirn - n) - 1;
-	/*
-	 * Reset tif_dirnumber counter and start new list of seen directories.
-	 * We need this to prevent IFD loops.
-	 */
-	tif->tif_dirnumber = 0;
-	return (TIFFReadDirectory(tif));
-}
-
-/*
- * Set the current directory to be the directory
- * located at the specified file offset.  This interface
- * is used mainly to access directories linked with
- * the SubIFD tag (e.g. thumbnail images).
- */
-int
-TIFFSetSubDirectory(TIFF* tif, uint32 diroff)
-{
-	tif->tif_nextdiroff = diroff;
-	/*
-	 * Reset tif_dirnumber counter and start new list of seen directories.
-	 * We need this to prevent IFD loops.
-	 */
-	tif->tif_dirnumber = 0;
-	return (TIFFReadDirectory(tif));
-}
-
-/*
- * Return file offset of the current directory.
- */
-uint32
-TIFFCurrentDirOffset(TIFF* tif)
-{
-	return (tif->tif_diroff);
-}
-
-/*
- * Return an indication of whether or not we are
- * at the last directory in the file.
- */
-int
-TIFFLastDirectory(TIFF* tif)
-{
-	return (tif->tif_nextdiroff == 0);
-}
-
-/*
- * Unlink the specified directory from the directory chain.
- */
-int
-TIFFUnlinkDirectory(TIFF* tif, tdir_t dirn)
-{
-	static const char module[] = "TIFFUnlinkDirectory";
-	toff_t nextdir;
-	toff_t off;
-	tdir_t n;
-
-	if (tif->tif_mode == O_RDONLY) {
-		TIFFErrorExt(tif->tif_clientdata, module,
-                             "Can not unlink directory in read-only file");
-		return (0);
-	}
-	/*
-	 * Go to the directory before the one we want
-	 * to unlink and nab the offset of the link
-	 * field we'll need to patch.
-	 */
-	nextdir = tif->tif_header.tiff_diroff;
-	off = sizeof (uint16) + sizeof (uint16);
-	for (n = dirn-1; n > 0; n--) {
-		if (nextdir == 0) {
-			TIFFErrorExt(tif->tif_clientdata, module, "Directory %d does not exist", dirn);
-			return (0);
-		}
-		if (!TIFFAdvanceDirectory(tif, &nextdir, &off))
-			return (0);
-	}
-	/*
-	 * Advance to the directory to be unlinked and fetch
-	 * the offset of the directory that follows.
-	 */
-	if (!TIFFAdvanceDirectory(tif, &nextdir, NULL))
-		return (0);
-	/*
-	 * Go back and patch the link field of the preceding
-	 * directory to point to the offset of the directory
-	 * that follows.
-	 */
-	(void) TIFFSeekFile(tif, off, SEEK_SET);
-	if (tif->tif_flags & TIFF_SWAB)
-		TIFFSwabLong(&nextdir);
-	if (!WriteOK(tif, &nextdir, sizeof (uint32))) {
-		TIFFErrorExt(tif->tif_clientdata, module, "Error writing directory link");
-		return (0);
-	}
-	/*
-	 * Leave directory state setup safely.  We don't have
-	 * facilities for doing inserting and removing directories,
-	 * so it's safest to just invalidate everything.  This
-	 * means that the caller can only append to the directory
-	 * chain.
-	 */
-	(*tif->tif_cleanup)(tif);
-	if ((tif->tif_flags & TIFF_MYBUFFER) && tif->tif_rawdata) {
-		_TIFFfree(tif->tif_rawdata);
-		tif->tif_rawdata = NULL;
-		tif->tif_rawcc = 0;
-	}
-	tif->tif_flags &= ~(TIFF_BEENWRITING|TIFF_BUFFERSETUP|TIFF_POSTENCODE);
-	TIFFFreeDirectory(tif);
-	TIFFDefaultDirectory(tif);
-	tif->tif_diroff = 0;			/* force link on next write */
-	tif->tif_nextdiroff = 0;		/* next write must be at end */
-	tif->tif_curoff = 0;
-	tif->tif_row = (uint32) -1;
-	tif->tif_curstrip = (tstrip_t) -1;
-	return (1);
-}
-
-/*			[BFC]
- *
- * Author: Bruce Cameron <cameron at petris.com>
- *
- * Set a table of tags that are to be replaced during directory process by the
- * 'IGNORE' state - or return TRUE/FALSE for the requested tag such that
- * 'ReadDirectory' can use the stored information.
- *
- * FIXME: this is never used properly. Should be removed in the future.
- */
-int
-TIFFReassignTagToIgnore (enum TIFFIgnoreSense task, int TIFFtagID)
-{
-    static int TIFFignoretags [FIELD_LAST];
-    static int tagcount = 0 ;
-    int		i;					/* Loop index */
-    int		j;					/* Loop index */
-
-    switch (task)
-    {
-      case TIS_STORE:
-        if ( tagcount < (FIELD_LAST - 1) )
-        {
-            for ( j = 0 ; j < tagcount ; ++j )
-            {					/* Do not add duplicate tag */
-                if ( TIFFignoretags [j] == TIFFtagID )
-                    return (TRUE) ;
-            }
-            TIFFignoretags [tagcount++] = TIFFtagID ;
-            return (TRUE) ;
-        }
-        break ;
-        
-      case TIS_EXTRACT:
-        for ( i = 0 ; i < tagcount ; ++i )
-        {
-            if ( TIFFignoretags [i] == TIFFtagID )
-                return (TRUE) ;
-        }
-        break;
-        
-      case TIS_EMPTY:
-        tagcount = 0 ;			/* Clear the list */
-        return (TRUE) ;
-        
-      default:
-        break;
-    }
-    
-    return (FALSE);
-}
-
-/* vim: set ts=8 sts=8 sw=8 noet: */
diff --git a/src/tiff/tif_dir.h b/src/tiff/tif_dir.h
deleted file mode 100644
index 1be56ec..0000000
--- a/src/tiff/tif_dir.h
+++ /dev/null
@@ -1,199 +0,0 @@
-/* $Id: tif_dir.h 4825 2006-08-16 13:01:53Z lubia $ */
-
-/*
- * Copyright (c) 1988-1997 Sam Leffler
- * Copyright (c) 1991-1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and 
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- * 
- * 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 SAM LEFFLER OR SILICON GRAPHICS 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.
- */
-
-#ifndef _TIFFDIR_
-#define	_TIFFDIR_
-/*
- * ``Library-private'' Directory-related Definitions.
- */
-
-/*
- * Internal format of a TIFF directory entry.
- */
-typedef	struct {
-#define	FIELD_SETLONGS	4
-	/* bit vector of fields that are set */
-	unsigned long	td_fieldsset[FIELD_SETLONGS];
-
-	uint32	td_imagewidth, td_imagelength, td_imagedepth;
-	uint32	td_tilewidth, td_tilelength, td_tiledepth;
-	uint32	td_subfiletype;
-	uint16	td_bitspersample;
-	uint16	td_sampleformat;
-	uint16	td_compression;
-	uint16	td_photometric;
-	uint16	td_threshholding;
-	uint16	td_fillorder;
-	uint16	td_orientation;
-	uint16	td_samplesperpixel;
-	uint32	td_rowsperstrip;
-	uint16	td_minsamplevalue, td_maxsamplevalue;
-	double	td_sminsamplevalue, td_smaxsamplevalue;
-	float	td_xresolution, td_yresolution;
-	uint16	td_resolutionunit;
-	uint16	td_planarconfig;
-	float	td_xposition, td_yposition;
-	uint16	td_pagenumber[2];
-	uint16*	td_colormap[3];
-	uint16	td_halftonehints[2];
-	uint16	td_extrasamples;
-	uint16*	td_sampleinfo;
-	tstrip_t td_stripsperimage;
-	tstrip_t td_nstrips;		/* size of offset & bytecount arrays */
-	uint32*	td_stripoffset;
-	uint32*	td_stripbytecount;
-	int	td_stripbytecountsorted; /* is the bytecount array sorted ascending? */
-	uint16	td_nsubifd;
-	uint32*	td_subifd;
-	/* YCbCr parameters */
-	uint16	td_ycbcrsubsampling[2];
-	uint16	td_ycbcrpositioning;
-	/* Colorimetry parameters */
-	uint16*	td_transferfunction[3];
-	/* CMYK parameters */
-	int	td_inknameslen;
-	char*	td_inknames;
-
-	int     td_customValueCount;
-        TIFFTagValue *td_customValues;
-} TIFFDirectory;
-
-/*
- * Field flags used to indicate fields that have
- * been set in a directory, and to reference fields
- * when manipulating a directory.
- */
-
-/*
- * FIELD_IGNORE is used to signify tags that are to
- * be processed but otherwise ignored.  This permits
- * antiquated tags to be quietly read and discarded.
- * Note that a bit *is* allocated for ignored tags;
- * this is understood by the directory reading logic
- * which uses this fact to avoid special-case handling
- */ 
-#define	FIELD_IGNORE			0
-
-/* multi-item fields */
-#define	FIELD_IMAGEDIMENSIONS		1
-#define FIELD_TILEDIMENSIONS		2
-#define	FIELD_RESOLUTION		3
-#define	FIELD_POSITION			4
-
-/* single-item fields */
-#define	FIELD_SUBFILETYPE		5
-#define	FIELD_BITSPERSAMPLE		6
-#define	FIELD_COMPRESSION		7
-#define	FIELD_PHOTOMETRIC		8
-#define	FIELD_THRESHHOLDING		9
-#define	FIELD_FILLORDER			10
-#define	FIELD_ORIENTATION		15
-#define	FIELD_SAMPLESPERPIXEL		16
-#define	FIELD_ROWSPERSTRIP		17
-#define	FIELD_MINSAMPLEVALUE		18
-#define	FIELD_MAXSAMPLEVALUE		19
-#define	FIELD_PLANARCONFIG		20
-#define	FIELD_RESOLUTIONUNIT		22
-#define	FIELD_PAGENUMBER		23
-#define	FIELD_STRIPBYTECOUNTS		24
-#define	FIELD_STRIPOFFSETS		25
-#define	FIELD_COLORMAP			26
-#define	FIELD_EXTRASAMPLES		31
-#define FIELD_SAMPLEFORMAT		32
-#define	FIELD_SMINSAMPLEVALUE		33
-#define	FIELD_SMAXSAMPLEVALUE		34
-#define FIELD_IMAGEDEPTH		35
-#define FIELD_TILEDEPTH			36
-#define	FIELD_HALFTONEHINTS		37
-#define FIELD_YCBCRSUBSAMPLING		39
-#define FIELD_YCBCRPOSITIONING		40
-#define	FIELD_TRANSFERFUNCTION		44
-#define	FIELD_INKNAMES			46
-#define	FIELD_SUBIFD			49
-/*      FIELD_CUSTOM (see tiffio.h)     65 */
-/* end of support for well-known tags; codec-private tags follow */
-#define	FIELD_CODEC			66	/* base of codec-private tags */
-
-
-/*
- * Pseudo-tags don't normally need field bits since they
- * are not written to an output file (by definition).
- * The library also has express logic to always query a
- * codec for a pseudo-tag so allocating a field bit for
- * one is a waste.   If codec wants to promote the notion
- * of a pseudo-tag being ``set'' or ``unset'' then it can
- * do using internal state flags without polluting the
- * field bit space defined for real tags.
- */
-#define	FIELD_PSEUDO			0
-
-#define	FIELD_LAST			(32*FIELD_SETLONGS-1)
-
-#define	TIFFExtractData(tif, type, v) \
-    ((uint32) ((tif)->tif_header.tiff_magic == TIFF_BIGENDIAN ? \
-        ((v) >> (tif)->tif_typeshift[type]) & (tif)->tif_typemask[type] : \
-	(v) & (tif)->tif_typemask[type]))
-#define	TIFFInsertData(tif, type, v) \
-    ((uint32) ((tif)->tif_header.tiff_magic == TIFF_BIGENDIAN ? \
-        ((v) & (tif)->tif_typemask[type]) << (tif)->tif_typeshift[type] : \
-	(v) & (tif)->tif_typemask[type]))
-
-
-#define BITn(n)				(((unsigned long)1L)<<((n)&0x1f)) 
-#define BITFIELDn(tif, n)		((tif)->tif_dir.td_fieldsset[(n)/32]) 
-#define TIFFFieldSet(tif, field)	(BITFIELDn(tif, field) & BITn(field)) 
-#define TIFFSetFieldBit(tif, field)	(BITFIELDn(tif, field) |= BITn(field))
-#define TIFFClrFieldBit(tif, field)	(BITFIELDn(tif, field) &= ~BITn(field))
-
-#define	FieldSet(fields, f)		(fields[(f)/32] & BITn(f))
-#define	ResetFieldBit(fields, f)	(fields[(f)/32] &= ~BITn(f))
-
-#if defined(__cplusplus)
-extern "C" {
-#endif
-extern	const TIFFFieldInfo *_TIFFGetFieldInfo(size_t *);
-extern	const TIFFFieldInfo *_TIFFGetExifFieldInfo(size_t *);
-extern	void _TIFFSetupFieldInfo(TIFF*, const TIFFFieldInfo[], size_t);
-extern	void _TIFFPrintFieldInfo(TIFF*, FILE*);
-extern	TIFFDataType _TIFFSampleToTagType(TIFF*);
-extern  const TIFFFieldInfo* _TIFFFindOrRegisterFieldInfo( TIFF *tif,
-							   ttag_t tag,
-							   TIFFDataType dt );
-extern  TIFFFieldInfo* _TIFFCreateAnonFieldInfo( TIFF *tif, ttag_t tag,
-                                                 TIFFDataType dt );
-
-#define _TIFFMergeFieldInfo	    TIFFMergeFieldInfo
-#define _TIFFFindFieldInfo	    TIFFFindFieldInfo
-#define _TIFFFindFieldInfoByName    TIFFFindFieldInfoByName
-#define _TIFFFieldWithTag	    TIFFFieldWithTag
-#define _TIFFFieldWithName	    TIFFFieldWithName
-
-#if defined(__cplusplus)
-}
-#endif
-#endif /* _TIFFDIR_ */
-
-/* vim: set ts=8 sts=8 sw=8 noet: */
diff --git a/src/tiff/tif_dirinfo.c b/src/tiff/tif_dirinfo.c
deleted file mode 100644
index 4c940e8..0000000
--- a/src/tiff/tif_dirinfo.c
+++ /dev/null
@@ -1,846 +0,0 @@
-/* $Id: tif_dirinfo.c 4825 2006-08-16 13:01:53Z lubia $ */
-
-/*
- * Copyright (c) 1988-1997 Sam Leffler
- * Copyright (c) 1991-1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and 
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- * 
- * 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 SAM LEFFLER OR SILICON GRAPHICS 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.
- */
-
-/*
- * TIFF Library.
- *
- * Core Directory Tag Support.
- */
-#include "tiffiop.h"
-#include <stdlib.h>
-
-/*
- * NB: NB: THIS ARRAY IS ASSUMED TO BE SORTED BY TAG.
- *       If a tag can have both LONG and SHORT types then the LONG must be
- *       placed before the SHORT for writing to work properly.
- *
- * NOTE: The second field (field_readcount) and third field (field_writecount)
- *       sometimes use the values TIFF_VARIABLE (-1), TIFF_VARIABLE2 (-3)
- *       and TIFFTAG_SPP (-2). The macros should be used but would throw off 
- *       the formatting of the code, so please interprete the -1, -2 and -3 
- *       values accordingly.
- */
-static const TIFFFieldInfo
-tiffFieldInfo[] = {
-    { TIFFTAG_SUBFILETYPE,	 1, 1,	TIFF_LONG,	FIELD_SUBFILETYPE,
-      1,	0,	"SubfileType" },
-/* XXX SHORT for compatibility w/ old versions of the library */
-    { TIFFTAG_SUBFILETYPE,	 1, 1,	TIFF_SHORT,	FIELD_SUBFILETYPE,
-      1,	0,	"SubfileType" },
-    { TIFFTAG_OSUBFILETYPE,	 1, 1,	TIFF_SHORT,	FIELD_SUBFILETYPE,
-      1,	0,	"OldSubfileType" },
-    { TIFFTAG_IMAGEWIDTH,	 1, 1,	TIFF_LONG,	FIELD_IMAGEDIMENSIONS,
-      0,	0,	"ImageWidth" },
-    { TIFFTAG_IMAGEWIDTH,	 1, 1,	TIFF_SHORT,	FIELD_IMAGEDIMENSIONS,
-      0,	0,	"ImageWidth" },
-    { TIFFTAG_IMAGELENGTH,	 1, 1,	TIFF_LONG,	FIELD_IMAGEDIMENSIONS,
-      1,	0,	"ImageLength" },
-    { TIFFTAG_IMAGELENGTH,	 1, 1,	TIFF_SHORT,	FIELD_IMAGEDIMENSIONS,
-      1,	0,	"ImageLength" },
-    { TIFFTAG_BITSPERSAMPLE,	-1,-1,	TIFF_SHORT,	FIELD_BITSPERSAMPLE,
-      0,	0,	"BitsPerSample" },
-/* XXX LONG for compatibility with some broken TIFF writers */
-    { TIFFTAG_BITSPERSAMPLE,	-1,-1,	TIFF_LONG,	FIELD_BITSPERSAMPLE,
-      0,	0,	"BitsPerSample" },
-    { TIFFTAG_COMPRESSION,	-1, 1,	TIFF_SHORT,	FIELD_COMPRESSION,
-      0,	0,	"Compression" },
-/* XXX LONG for compatibility with some broken TIFF writers */
-    { TIFFTAG_COMPRESSION,	-1, 1,	TIFF_LONG,	FIELD_COMPRESSION,
-      0,	0,	"Compression" },
-    { TIFFTAG_PHOTOMETRIC,	 1, 1,	TIFF_SHORT,	FIELD_PHOTOMETRIC,
-      0,	0,	"PhotometricInterpretation" },
-/* XXX LONG for compatibility with some broken TIFF writers */
-    { TIFFTAG_PHOTOMETRIC,	 1, 1,	TIFF_LONG,	FIELD_PHOTOMETRIC,
-      0,	0,	"PhotometricInterpretation" },
-    { TIFFTAG_THRESHHOLDING,	 1, 1,	TIFF_SHORT,	FIELD_THRESHHOLDING,
-      1,	0,	"Threshholding" },
-    { TIFFTAG_CELLWIDTH,	 1, 1,	TIFF_SHORT,	FIELD_IGNORE,
-      1,	0,	"CellWidth" },
-    { TIFFTAG_CELLLENGTH,	 1, 1,	TIFF_SHORT,	FIELD_IGNORE,
-      1,	0,	"CellLength" },
-    { TIFFTAG_FILLORDER,	 1, 1,	TIFF_SHORT,	FIELD_FILLORDER,
-      0,	0,	"FillOrder" },
-    { TIFFTAG_DOCUMENTNAME,	-1,-1,	TIFF_ASCII,	FIELD_CUSTOM,
-      1,	0,	"DocumentName" },
-    { TIFFTAG_IMAGEDESCRIPTION,	-1,-1,	TIFF_ASCII,	FIELD_CUSTOM,
-      1,	0,	"ImageDescription" },
-    { TIFFTAG_MAKE,		-1,-1,	TIFF_ASCII,	FIELD_CUSTOM,
-      1,	0,	"Make" },
-    { TIFFTAG_MODEL,		-1,-1,	TIFF_ASCII,	FIELD_CUSTOM,
-      1,	0,	"Model" },
-    { TIFFTAG_STRIPOFFSETS,	-1,-1,	TIFF_LONG,	FIELD_STRIPOFFSETS,
-      0,	0,	"StripOffsets" },
-    { TIFFTAG_STRIPOFFSETS,	-1,-1,	TIFF_SHORT,	FIELD_STRIPOFFSETS,
-      0,	0,	"StripOffsets" },
-    { TIFFTAG_ORIENTATION,	 1, 1,	TIFF_SHORT,	FIELD_ORIENTATION,
-      0,	0,	"Orientation" },
-    { TIFFTAG_SAMPLESPERPIXEL,	 1, 1,	TIFF_SHORT,	FIELD_SAMPLESPERPIXEL,
-      0,	0,	"SamplesPerPixel" },
-    { TIFFTAG_ROWSPERSTRIP,	 1, 1,	TIFF_LONG,	FIELD_ROWSPERSTRIP,
-      0,	0,	"RowsPerStrip" },
-    { TIFFTAG_ROWSPERSTRIP,	 1, 1,	TIFF_SHORT,	FIELD_ROWSPERSTRIP,
-      0,	0,	"RowsPerStrip" },
-    { TIFFTAG_STRIPBYTECOUNTS,	-1,-1,	TIFF_LONG,	FIELD_STRIPBYTECOUNTS,
-      0,	0,	"StripByteCounts" },
-    { TIFFTAG_STRIPBYTECOUNTS,	-1,-1,	TIFF_SHORT,	FIELD_STRIPBYTECOUNTS,
-      0,	0,	"StripByteCounts" },
-    { TIFFTAG_MINSAMPLEVALUE,	-2,-1,	TIFF_SHORT,	FIELD_MINSAMPLEVALUE,
-      1,	0,	"MinSampleValue" },
-    { TIFFTAG_MAXSAMPLEVALUE,	-2,-1,	TIFF_SHORT,	FIELD_MAXSAMPLEVALUE,
-      1,	0,	"MaxSampleValue" },
-    { TIFFTAG_XRESOLUTION,	 1, 1,	TIFF_RATIONAL,	FIELD_RESOLUTION,
-      1,	0,	"XResolution" },
-    { TIFFTAG_YRESOLUTION,	 1, 1,	TIFF_RATIONAL,	FIELD_RESOLUTION,
-      1,	0,	"YResolution" },
-    { TIFFTAG_PLANARCONFIG,	 1, 1,	TIFF_SHORT,	FIELD_PLANARCONFIG,
-      0,	0,	"PlanarConfiguration" },
-    { TIFFTAG_PAGENAME,		-1,-1,	TIFF_ASCII,	FIELD_CUSTOM,
-      1,	0,	"PageName" },
-    { TIFFTAG_XPOSITION,	 1, 1,	TIFF_RATIONAL,	FIELD_POSITION,
-      1,	0,	"XPosition" },
-    { TIFFTAG_YPOSITION,	 1, 1,	TIFF_RATIONAL,	FIELD_POSITION,
-      1,	0,	"YPosition" },
-    { TIFFTAG_FREEOFFSETS,	-1,-1,	TIFF_LONG,	FIELD_IGNORE,
-      0,	0,	"FreeOffsets" },
-    { TIFFTAG_FREEBYTECOUNTS,	-1,-1,	TIFF_LONG,	FIELD_IGNORE,
-      0,	0,	"FreeByteCounts" },
-    { TIFFTAG_GRAYRESPONSEUNIT,	 1, 1,	TIFF_SHORT,	FIELD_IGNORE,
-      1,	0,	"GrayResponseUnit" },
-    { TIFFTAG_GRAYRESPONSECURVE,-1,-1,	TIFF_SHORT,	FIELD_IGNORE,
-      1,	0,	"GrayResponseCurve" },
-    { TIFFTAG_RESOLUTIONUNIT,	 1, 1,	TIFF_SHORT,	FIELD_RESOLUTIONUNIT,
-      1,	0,	"ResolutionUnit" },
-    { TIFFTAG_PAGENUMBER,	 2, 2,	TIFF_SHORT,	FIELD_PAGENUMBER,
-      1,	0,	"PageNumber" },
-    { TIFFTAG_COLORRESPONSEUNIT, 1, 1,	TIFF_SHORT,	FIELD_IGNORE,
-      1,	0,	"ColorResponseUnit" },
-    { TIFFTAG_TRANSFERFUNCTION,	-1,-1,	TIFF_SHORT,	FIELD_TRANSFERFUNCTION,
-      1,	0,	"TransferFunction" },
-    { TIFFTAG_SOFTWARE,		-1,-1,	TIFF_ASCII,	FIELD_CUSTOM,
-      1,	0,	"Software" },
-    { TIFFTAG_DATETIME,		20,20,	TIFF_ASCII,	FIELD_CUSTOM,
-      1,	0,	"DateTime" },
-    { TIFFTAG_ARTIST,		-1,-1,	TIFF_ASCII,	FIELD_CUSTOM,
-      1,	0,	"Artist" },
-    { TIFFTAG_HOSTCOMPUTER,	-1,-1,	TIFF_ASCII,	FIELD_CUSTOM,
-      1,	0,	"HostComputer" },
-    { TIFFTAG_WHITEPOINT,	 2, 2,	TIFF_RATIONAL,	FIELD_CUSTOM,
-      1,	0,	"WhitePoint" },
-    { TIFFTAG_PRIMARYCHROMATICITIES,6,6,TIFF_RATIONAL,	FIELD_CUSTOM,
-      1,	0,	"PrimaryChromaticities" },
-    { TIFFTAG_COLORMAP,		-1,-1,	TIFF_SHORT,	FIELD_COLORMAP,
-      1,	0,	"ColorMap" },
-    { TIFFTAG_HALFTONEHINTS,	 2, 2,	TIFF_SHORT,	FIELD_HALFTONEHINTS,
-      1,	0,	"HalftoneHints" },
-    { TIFFTAG_TILEWIDTH,	 1, 1,	TIFF_LONG,	FIELD_TILEDIMENSIONS,
-      0,	0,	"TileWidth" },
-    { TIFFTAG_TILEWIDTH,	 1, 1,	TIFF_SHORT,	FIELD_TILEDIMENSIONS,
-      0,	0,	"TileWidth" },
-    { TIFFTAG_TILELENGTH,	 1, 1,	TIFF_LONG,	FIELD_TILEDIMENSIONS,
-      0,	0,	"TileLength" },
-    { TIFFTAG_TILELENGTH,	 1, 1,	TIFF_SHORT,	FIELD_TILEDIMENSIONS,
-      0,	0,	"TileLength" },
-    { TIFFTAG_TILEOFFSETS,	-1, 1,	TIFF_LONG,	FIELD_STRIPOFFSETS,
-      0,	0,	"TileOffsets" },
-    { TIFFTAG_TILEBYTECOUNTS,	-1, 1,	TIFF_LONG,	FIELD_STRIPBYTECOUNTS,
-      0,	0,	"TileByteCounts" },
-    { TIFFTAG_TILEBYTECOUNTS,	-1, 1,	TIFF_SHORT,	FIELD_STRIPBYTECOUNTS,
-      0,	0,	"TileByteCounts" },
-    { TIFFTAG_SUBIFD,		-1,-1,	TIFF_IFD,	FIELD_SUBIFD,
-      1,	1,	"SubIFD" },
-    { TIFFTAG_SUBIFD,		-1,-1,	TIFF_LONG,	FIELD_SUBIFD,
-      1,	1,	"SubIFD" },
-    { TIFFTAG_INKSET,		 1, 1,	TIFF_SHORT,	FIELD_CUSTOM,
-      0,	0,	"InkSet" },
-    { TIFFTAG_INKNAMES,		-1,-1,	TIFF_ASCII,	FIELD_INKNAMES,
-      1,	1,	"InkNames" },
-    { TIFFTAG_NUMBEROFINKS,	 1, 1,	TIFF_SHORT,	FIELD_CUSTOM,
-      1,	0,	"NumberOfInks" },
-    { TIFFTAG_DOTRANGE,		 2, 2,	TIFF_SHORT,	FIELD_CUSTOM,
-      0,	0,	"DotRange" },
-    { TIFFTAG_DOTRANGE,		 2, 2,	TIFF_BYTE,	FIELD_CUSTOM,
-      0,	0,	"DotRange" },
-    { TIFFTAG_TARGETPRINTER,	-1,-1,	TIFF_ASCII,	FIELD_CUSTOM,
-      1,	0,	"TargetPrinter" },
-    { TIFFTAG_EXTRASAMPLES,	-1,-1,	TIFF_SHORT,	FIELD_EXTRASAMPLES,
-      0,	1,	"ExtraSamples" },
-/* XXX for bogus Adobe Photoshop v2.5 files */
-    { TIFFTAG_EXTRASAMPLES,	-1,-1,	TIFF_BYTE,	FIELD_EXTRASAMPLES,
-      0,	1,	"ExtraSamples" },
-    { TIFFTAG_SAMPLEFORMAT,	-1,-1,	TIFF_SHORT,	FIELD_SAMPLEFORMAT,
-      0,	0,	"SampleFormat" },
-    { TIFFTAG_SMINSAMPLEVALUE,	-2,-1,	TIFF_ANY,	FIELD_SMINSAMPLEVALUE,
-      1,	0,	"SMinSampleValue" },
-    { TIFFTAG_SMAXSAMPLEVALUE,	-2,-1,	TIFF_ANY,	FIELD_SMAXSAMPLEVALUE,
-      1,	0,	"SMaxSampleValue" },
-    { TIFFTAG_CLIPPATH,		-1, -3, TIFF_BYTE,	FIELD_CUSTOM,
-      0,	1,	"ClipPath" },
-    { TIFFTAG_XCLIPPATHUNITS,	 1, 1,	TIFF_SLONG,	FIELD_CUSTOM,
-      0,	0,	"XClipPathUnits" },
-    { TIFFTAG_XCLIPPATHUNITS,	 1, 1,	TIFF_SSHORT,	FIELD_CUSTOM,
-      0,	0,	"XClipPathUnits" },
-    { TIFFTAG_XCLIPPATHUNITS,	 1, 1,	TIFF_SBYTE,	FIELD_CUSTOM,
-      0,	0,	"XClipPathUnits" },
-    { TIFFTAG_YCLIPPATHUNITS,	 1, 1,	TIFF_SLONG,	FIELD_CUSTOM,
-      0,	0,	"YClipPathUnits" },
-    { TIFFTAG_YCLIPPATHUNITS,	 1, 1,	TIFF_SSHORT,	FIELD_CUSTOM,
-      0,	0,	"YClipPathUnits" },
-    { TIFFTAG_YCLIPPATHUNITS,	 1, 1,	TIFF_SBYTE,	FIELD_CUSTOM,
-      0,	0,	"YClipPathUnits" },
-    { TIFFTAG_YCBCRCOEFFICIENTS, 3, 3,	TIFF_RATIONAL,	FIELD_CUSTOM,
-      0,	0,	"YCbCrCoefficients" },
-    { TIFFTAG_YCBCRSUBSAMPLING,	 2, 2,	TIFF_SHORT,	FIELD_YCBCRSUBSAMPLING,
-      0,	0,	"YCbCrSubsampling" },
-    { TIFFTAG_YCBCRPOSITIONING,	 1, 1,	TIFF_SHORT,	FIELD_YCBCRPOSITIONING,
-      0,	0,	"YCbCrPositioning" },
-    { TIFFTAG_REFERENCEBLACKWHITE, 6, 6, TIFF_RATIONAL,	FIELD_CUSTOM,
-      1,	0,	"ReferenceBlackWhite" },
-/* XXX temporarily accept LONG for backwards compatibility */
-    { TIFFTAG_REFERENCEBLACKWHITE, 6, 6, TIFF_LONG,	FIELD_CUSTOM,
-      1,	0,	"ReferenceBlackWhite" },
-    { TIFFTAG_XMLPACKET,	-3,-3,	TIFF_BYTE,	FIELD_CUSTOM,
-      0,	1,	"XMLPacket" },
-/* begin SGI tags */
-    { TIFFTAG_MATTEING,		 1, 1,	TIFF_SHORT,	FIELD_EXTRASAMPLES,
-      0,	0,	"Matteing" },
-    { TIFFTAG_DATATYPE,		-2,-1,	TIFF_SHORT,	FIELD_SAMPLEFORMAT,
-      0,	0,	"DataType" },
-    { TIFFTAG_IMAGEDEPTH,	 1, 1,	TIFF_LONG,	FIELD_IMAGEDEPTH,
-      0,	0,	"ImageDepth" },
-    { TIFFTAG_IMAGEDEPTH,	 1, 1,	TIFF_SHORT,	FIELD_IMAGEDEPTH,
-      0,	0,	"ImageDepth" },
-    { TIFFTAG_TILEDEPTH,	 1, 1,	TIFF_LONG,	FIELD_TILEDEPTH,
-      0,	0,	"TileDepth" },
-    { TIFFTAG_TILEDEPTH,	 1, 1,	TIFF_SHORT,	FIELD_TILEDEPTH,
-      0,	0,	"TileDepth" },
-/* end SGI tags */
-/* begin Pixar tags */
-    { TIFFTAG_PIXAR_IMAGEFULLWIDTH,  1, 1, TIFF_LONG,	FIELD_CUSTOM,
-      1,	0,	"ImageFullWidth" },
-    { TIFFTAG_PIXAR_IMAGEFULLLENGTH, 1, 1, TIFF_LONG,	FIELD_CUSTOM,
-      1,	0,	"ImageFullLength" },
-    { TIFFTAG_PIXAR_TEXTUREFORMAT,  -1, -1, TIFF_ASCII,	FIELD_CUSTOM,
-      1,	0,	"TextureFormat" },
-    { TIFFTAG_PIXAR_WRAPMODES,	    -1, -1, TIFF_ASCII,	FIELD_CUSTOM,
-      1,	0,	"TextureWrapModes" },
-    { TIFFTAG_PIXAR_FOVCOT,	     1, 1, TIFF_FLOAT,	FIELD_CUSTOM,
-      1,	0,	"FieldOfViewCotangent" },
-    { TIFFTAG_PIXAR_MATRIX_WORLDTOSCREEN,	16,16,	TIFF_FLOAT,
-      FIELD_CUSTOM,	1,	0,	"MatrixWorldToScreen" },
-    { TIFFTAG_PIXAR_MATRIX_WORLDTOCAMERA,	16,16,	TIFF_FLOAT,
-       FIELD_CUSTOM,	1,	0,	"MatrixWorldToCamera" },
-    { TIFFTAG_COPYRIGHT,	-1, -1,	TIFF_ASCII,	FIELD_CUSTOM,
-      1,	0,	"Copyright" },
-/* end Pixar tags */
-    { TIFFTAG_RICHTIFFIPTC, -3, -3,	TIFF_LONG,	FIELD_CUSTOM, 
-      0,    1,   "RichTIFFIPTC" },
-    { TIFFTAG_PHOTOSHOP,    -3, -3,	TIFF_BYTE,	FIELD_CUSTOM, 
-      0,    1,   "Photoshop" },
-    { TIFFTAG_EXIFIFD,		1, 1,	TIFF_LONG,	FIELD_CUSTOM,
-      0,	0,	"EXIFIFDOffset" },
-    { TIFFTAG_ICCPROFILE,	-3, -3,	TIFF_UNDEFINED,	FIELD_CUSTOM,
-      0,	1,	"ICC Profile" },
-    { TIFFTAG_GPSIFD,		1, 1,	TIFF_LONG,	FIELD_CUSTOM,
-      0,	0,	"GPSIFDOffset" },
-    { TIFFTAG_STONITS,		 1, 1,	TIFF_DOUBLE,	FIELD_CUSTOM,
-      0,	0,	"StoNits" },
-    { TIFFTAG_INTEROPERABILITYIFD, 1, 1, TIFF_LONG,	FIELD_CUSTOM,
-      0,	0,	"InteroperabilityIFDOffset" },
-/* begin DNG tags */
-    { TIFFTAG_DNGVERSION,	4, 4,	TIFF_BYTE,	FIELD_CUSTOM, 
-      0,	0,	"DNGVersion" },
-    { TIFFTAG_DNGBACKWARDVERSION, 4, 4,	TIFF_BYTE,	FIELD_CUSTOM, 
-      0,	0,	"DNGBackwardVersion" },
-    { TIFFTAG_UNIQUECAMERAMODEL,    -1, -1, TIFF_ASCII,	FIELD_CUSTOM,
-      1,	0,	"UniqueCameraModel" },
-    { TIFFTAG_LOCALIZEDCAMERAMODEL, -1, -1, TIFF_ASCII,	FIELD_CUSTOM,
-      1,	0,	"LocalizedCameraModel" },
-    { TIFFTAG_LOCALIZEDCAMERAMODEL, -1, -1, TIFF_BYTE,	FIELD_CUSTOM,
-      1,	1,	"LocalizedCameraModel" },
-    { TIFFTAG_CFAPLANECOLOR,	-1, -1,	TIFF_BYTE,	FIELD_CUSTOM, 
-      0,	1,	"CFAPlaneColor" },
-    { TIFFTAG_CFALAYOUT,	1, 1,	TIFF_SHORT,	FIELD_CUSTOM, 
-      0,	0,	"CFALayout" },
-    { TIFFTAG_LINEARIZATIONTABLE, -1, -1, TIFF_SHORT,	FIELD_CUSTOM, 
-      0,	1,	"LinearizationTable" },
-    { TIFFTAG_BLACKLEVELREPEATDIM, 2, 2, TIFF_SHORT,	FIELD_CUSTOM, 
-      0,	0,	"BlackLevelRepeatDim" },
-    { TIFFTAG_BLACKLEVEL,	-1, -1,	TIFF_LONG,	FIELD_CUSTOM, 
-      0,	1,	"BlackLevel" },
-    { TIFFTAG_BLACKLEVEL,	-1, -1,	TIFF_SHORT,	FIELD_CUSTOM, 
-      0,	1,	"BlackLevel" },
-    { TIFFTAG_BLACKLEVEL,	-1, -1,	TIFF_RATIONAL,	FIELD_CUSTOM, 
-      0,	1,	"BlackLevel" },
-    { TIFFTAG_BLACKLEVELDELTAH,	-1, -1,	TIFF_SRATIONAL,	FIELD_CUSTOM, 
-      0,	1,	"BlackLevelDeltaH" },
-    { TIFFTAG_BLACKLEVELDELTAV,	-1, -1,	TIFF_SRATIONAL,	FIELD_CUSTOM, 
-      0,	1,	"BlackLevelDeltaV" },
-    { TIFFTAG_WHITELEVEL,	-2, -2,	TIFF_LONG,	FIELD_CUSTOM, 
-      0,	0,	"WhiteLevel" },
-    { TIFFTAG_WHITELEVEL,	-2, -2,	TIFF_SHORT,	FIELD_CUSTOM, 
-      0,	0,	"WhiteLevel" },
-    { TIFFTAG_DEFAULTSCALE,	2, 2,	TIFF_RATIONAL,	FIELD_CUSTOM, 
-      0,	0,	"DefaultScale" },
-    { TIFFTAG_BESTQUALITYSCALE,	1, 1,	TIFF_RATIONAL,	FIELD_CUSTOM, 
-      0,	0,	"BestQualityScale" },
-    { TIFFTAG_DEFAULTCROPORIGIN,	2, 2,	TIFF_LONG,	FIELD_CUSTOM, 
-      0,	0,	"DefaultCropOrigin" },
-    { TIFFTAG_DEFAULTCROPORIGIN,	2, 2,	TIFF_SHORT,	FIELD_CUSTOM, 
-      0,	0,	"DefaultCropOrigin" },
-    { TIFFTAG_DEFAULTCROPORIGIN,	2, 2,	TIFF_RATIONAL,	FIELD_CUSTOM, 
-      0,	0,	"DefaultCropOrigin" },
-    { TIFFTAG_DEFAULTCROPSIZE,	2, 2,	TIFF_LONG,	FIELD_CUSTOM, 
-      0,	0,	"DefaultCropSize" },
-    { TIFFTAG_DEFAULTCROPSIZE,	2, 2,	TIFF_SHORT,	FIELD_CUSTOM, 
-      0,	0,	"DefaultCropSize" },
-    { TIFFTAG_DEFAULTCROPSIZE,	2, 2,	TIFF_RATIONAL,	FIELD_CUSTOM, 
-      0,	0,	"DefaultCropSize" },
-    { TIFFTAG_COLORMATRIX1,	-1, -1,	TIFF_SRATIONAL,	FIELD_CUSTOM, 
-      0,	1,	"ColorMatrix1" },
-    { TIFFTAG_COLORMATRIX2,	-1, -1,	TIFF_SRATIONAL,	FIELD_CUSTOM, 
-      0,	1,	"ColorMatrix2" },
-    { TIFFTAG_CAMERACALIBRATION1,	-1, -1,	TIFF_SRATIONAL,	FIELD_CUSTOM, 
-      0,	1,	"CameraCalibration1" },
-    { TIFFTAG_CAMERACALIBRATION2,	-1, -1,	TIFF_SRATIONAL,	FIELD_CUSTOM, 
-      0,	1,	"CameraCalibration2" },
-    { TIFFTAG_REDUCTIONMATRIX1,	-1, -1,	TIFF_SRATIONAL,	FIELD_CUSTOM, 
-      0,	1,	"ReductionMatrix1" },
-    { TIFFTAG_REDUCTIONMATRIX2,	-1, -1,	TIFF_SRATIONAL,	FIELD_CUSTOM, 
-      0,	1,	"ReductionMatrix2" },
-    { TIFFTAG_ANALOGBALANCE,	-1, -1,	TIFF_RATIONAL,	FIELD_CUSTOM, 
-      0,	1,	"AnalogBalance" },
-    { TIFFTAG_ASSHOTNEUTRAL,	-1, -1,	TIFF_SHORT,	FIELD_CUSTOM, 
-      0,	1,	"AsShotNeutral" },
-    { TIFFTAG_ASSHOTNEUTRAL,	-1, -1,	TIFF_RATIONAL,	FIELD_CUSTOM, 
-      0,	1,	"AsShotNeutral" },
-    { TIFFTAG_ASSHOTWHITEXY,	2, 2,	TIFF_RATIONAL,	FIELD_CUSTOM, 
-      0,	0,	"AsShotWhiteXY" },
-    { TIFFTAG_BASELINEEXPOSURE,	1, 1,	TIFF_SRATIONAL,	FIELD_CUSTOM, 
-      0,	0,	"BaselineExposure" },
-    { TIFFTAG_BASELINENOISE,	1, 1,	TIFF_RATIONAL,	FIELD_CUSTOM, 
-      0,	0,	"BaselineNoise" },
-    { TIFFTAG_BASELINESHARPNESS,	1, 1,	TIFF_RATIONAL,	FIELD_CUSTOM, 
-      0,	0,	"BaselineSharpness" },
-    { TIFFTAG_BAYERGREENSPLIT,	1, 1,	TIFF_LONG,	FIELD_CUSTOM, 
-      0,	0,	"BayerGreenSplit" },
-    { TIFFTAG_LINEARRESPONSELIMIT,	1, 1,	TIFF_RATIONAL,	FIELD_CUSTOM, 
-      0,	0,	"LinearResponseLimit" },
-    { TIFFTAG_CAMERASERIALNUMBER,    -1, -1, TIFF_ASCII,	FIELD_CUSTOM,
-      1,	0,	"CameraSerialNumber" },
-    { TIFFTAG_LENSINFO,	4, 4,	TIFF_RATIONAL,	FIELD_CUSTOM, 
-      0,	0,	"LensInfo" },
-    { TIFFTAG_CHROMABLURRADIUS,	1, 1,	TIFF_RATIONAL,	FIELD_CUSTOM, 
-      0,	0,	"ChromaBlurRadius" },
-    { TIFFTAG_ANTIALIASSTRENGTH,	1, 1,	TIFF_RATIONAL,	FIELD_CUSTOM, 
-      0,	0,	"AntiAliasStrength" },
-    { TIFFTAG_SHADOWSCALE,	1, 1,	TIFF_RATIONAL,	FIELD_CUSTOM, 
-      0,	0,	"ShadowScale" },
-    { TIFFTAG_DNGPRIVATEDATA,    -1, -1, TIFF_BYTE,	FIELD_CUSTOM,
-      0,	1,	"DNGPrivateData" },
-    { TIFFTAG_MAKERNOTESAFETY,	1, 1,	TIFF_SHORT,	FIELD_CUSTOM, 
-      0,	0,	"MakerNoteSafety" },
-    { TIFFTAG_CALIBRATIONILLUMINANT1,	1, 1,	TIFF_SHORT,	FIELD_CUSTOM, 
-      0,	0,	"CalibrationIlluminant1" },
-    { TIFFTAG_CALIBRATIONILLUMINANT2,	1, 1,	TIFF_SHORT,	FIELD_CUSTOM, 
-      0,	0,	"CalibrationIlluminant2" },
-    { TIFFTAG_RAWDATAUNIQUEID,	16, 16,	TIFF_BYTE,	FIELD_CUSTOM, 
-      0,	0,	"RawDataUniqueID" },
-    { TIFFTAG_ORIGINALRAWFILENAME,    -1, -1, TIFF_ASCII,	FIELD_CUSTOM,
-      1,	0,	"OriginalRawFileName" },
-    { TIFFTAG_ORIGINALRAWFILENAME,    -1, -1, TIFF_BYTE,	FIELD_CUSTOM,
-      1,	1,	"OriginalRawFileName" },
-    { TIFFTAG_ORIGINALRAWFILEDATA,    -1, -1, TIFF_UNDEFINED,	FIELD_CUSTOM,
-      0,	1,	"OriginalRawFileData" },
-    { TIFFTAG_ACTIVEAREA,	4, 4,	TIFF_LONG,	FIELD_CUSTOM, 
-      0,	0,	"ActiveArea" },
-    { TIFFTAG_ACTIVEAREA,	4, 4,	TIFF_SHORT,	FIELD_CUSTOM, 
-      0,	0,	"ActiveArea" },
-    { TIFFTAG_MASKEDAREAS,	-1, -1,	TIFF_LONG,	FIELD_CUSTOM, 
-      0,	1,	"MaskedAreas" },
-    { TIFFTAG_ASSHOTICCPROFILE,    -1, -1, TIFF_UNDEFINED,	FIELD_CUSTOM,
-      0,	1,	"AsShotICCProfile" },
-    { TIFFTAG_ASSHOTPREPROFILEMATRIX,	-1, -1,	TIFF_SRATIONAL,	FIELD_CUSTOM, 
-      0,	1,	"AsShotPreProfileMatrix" },
-    { TIFFTAG_CURRENTICCPROFILE,    -1, -1, TIFF_UNDEFINED,	FIELD_CUSTOM,
-      0,	1,	"CurrentICCProfile" },
-    { TIFFTAG_CURRENTPREPROFILEMATRIX,	-1, -1,	TIFF_SRATIONAL,	FIELD_CUSTOM, 
-      0,	1,	"CurrentPreProfileMatrix" },
-/* end DNG tags */
-};
-
-static const TIFFFieldInfo
-exifFieldInfo[] = {
-    { EXIFTAG_EXPOSURETIME,	1, 1,		TIFF_RATIONAL,	FIELD_CUSTOM, 
-      1,	0,	"ExposureTime" },
-    { EXIFTAG_FNUMBER,		1, 1,		TIFF_RATIONAL,	FIELD_CUSTOM, 
-      1,	0,	"FNumber" },
-    { EXIFTAG_EXPOSUREPROGRAM,	1, 1,		TIFF_SHORT,	FIELD_CUSTOM,
-      1,	0,	"ExposureProgram" },
-    { EXIFTAG_SPECTRALSENSITIVITY,    -1, -1,	TIFF_ASCII,	FIELD_CUSTOM,
-      1,	0,	"SpectralSensitivity" },
-    { EXIFTAG_ISOSPEEDRATINGS,  -1, -1,		TIFF_SHORT,	FIELD_CUSTOM,
-      1,	1,	"ISOSpeedRatings" },
-    { EXIFTAG_OECF,	-1, -1,			TIFF_UNDEFINED,	FIELD_CUSTOM,
-      1,	1,	"OptoelectricConversionFactor" },
-    { EXIFTAG_EXIFVERSION,	4, 4,		TIFF_UNDEFINED,	FIELD_CUSTOM,
-      1,	0,	"ExifVersion" },
-    { EXIFTAG_DATETIMEORIGINAL,	20, 20,		TIFF_ASCII,	FIELD_CUSTOM,
-      1,	0,	"DateTimeOriginal" },
-    { EXIFTAG_DATETIMEDIGITIZED, 20, 20,	TIFF_ASCII,	FIELD_CUSTOM,
-      1,	0,	"DateTimeDigitized" },
-    { EXIFTAG_COMPONENTSCONFIGURATION,	 4, 4,	TIFF_UNDEFINED,	FIELD_CUSTOM,
-      1,	0,	"ComponentsConfiguration" },
-    { EXIFTAG_COMPRESSEDBITSPERPIXEL,	 1, 1,	TIFF_RATIONAL,	FIELD_CUSTOM,
-      1,	0,	"CompressedBitsPerPixel" },
-    { EXIFTAG_SHUTTERSPEEDVALUE,	1, 1,	TIFF_SRATIONAL,	FIELD_CUSTOM, 
-      1,	0,	"ShutterSpeedValue" },
-    { EXIFTAG_APERTUREVALUE,	1, 1,		TIFF_RATIONAL,	FIELD_CUSTOM, 
-      1,	0,	"ApertureValue" },
-    { EXIFTAG_BRIGHTNESSVALUE,	1, 1,		TIFF_SRATIONAL,	FIELD_CUSTOM, 
-      1,	0,	"BrightnessValue" },
-    { EXIFTAG_EXPOSUREBIASVALUE,	1, 1,	TIFF_SRATIONAL,	FIELD_CUSTOM, 
-      1,	0,	"ExposureBiasValue" },
-    { EXIFTAG_MAXAPERTUREVALUE,	1, 1,		TIFF_RATIONAL,	FIELD_CUSTOM, 
-      1,	0,	"MaxApertureValue" },
-    { EXIFTAG_SUBJECTDISTANCE,	1, 1,		TIFF_RATIONAL,	FIELD_CUSTOM, 
-      1,	0,	"SubjectDistance" },
-    { EXIFTAG_METERINGMODE,	1, 1,		TIFF_SHORT,	FIELD_CUSTOM,
-      1,	0,	"MeteringMode" },
-    { EXIFTAG_LIGHTSOURCE,	1, 1,		TIFF_SHORT,	FIELD_CUSTOM,
-      1,	0,	"LightSource" },
-    { EXIFTAG_FLASH,	1, 1,			TIFF_SHORT,	FIELD_CUSTOM,
-      1,	0,	"Flash" },
-    { EXIFTAG_FOCALLENGTH,	1, 1,		TIFF_RATIONAL,	FIELD_CUSTOM, 
-      1,	0,	"FocalLength" },
-    { EXIFTAG_SUBJECTAREA,	-1, -1,		TIFF_SHORT,	FIELD_CUSTOM,
-      1,	1,	"SubjectArea" },
-    { EXIFTAG_MAKERNOTE,	-1, -1,		TIFF_UNDEFINED,	FIELD_CUSTOM,
-      1,	1,	"MakerNote" },
-    { EXIFTAG_USERCOMMENT,	-1, -1,		TIFF_UNDEFINED,	FIELD_CUSTOM,
-      1,	1,	"UserComment" },
-    { EXIFTAG_SUBSECTIME,    -1, -1,		TIFF_ASCII,	FIELD_CUSTOM,
-      1,	0,	"SubSecTime" },
-    { EXIFTAG_SUBSECTIMEORIGINAL, -1, -1,	TIFF_ASCII,	FIELD_CUSTOM,
-      1,	0,	"SubSecTimeOriginal" },
-    { EXIFTAG_SUBSECTIMEDIGITIZED,-1, -1,	TIFF_ASCII,	FIELD_CUSTOM,
-      1,	0,	"SubSecTimeDigitized" },
-    { EXIFTAG_FLASHPIXVERSION,	4, 4,		TIFF_UNDEFINED,	FIELD_CUSTOM,
-      1,	0,	"FlashpixVersion" },
-    { EXIFTAG_PIXELXDIMENSION,	1, 1,		TIFF_LONG,	FIELD_CUSTOM,
-      1,	0,	"PixelXDimension" },
-    { EXIFTAG_PIXELXDIMENSION,	1, 1,		TIFF_SHORT,	FIELD_CUSTOM,
-      1,	0,	"PixelXDimension" },
-    { EXIFTAG_PIXELYDIMENSION,	1, 1,		TIFF_LONG,	FIELD_CUSTOM,
-      1,	0,	"PixelYDimension" },
-    { EXIFTAG_PIXELYDIMENSION,	1, 1,		TIFF_SHORT,	FIELD_CUSTOM,
-      1,	0,	"PixelYDimension" },
-    { EXIFTAG_RELATEDSOUNDFILE,	13, 13,		TIFF_ASCII,	FIELD_CUSTOM,
-      1,	0,	"RelatedSoundFile" },
-    { EXIFTAG_FLASHENERGY,	1, 1,		TIFF_RATIONAL,	FIELD_CUSTOM, 
-      1,	0,	"FlashEnergy" },
-    { EXIFTAG_SPATIALFREQUENCYRESPONSE,	-1, -1,	TIFF_UNDEFINED,	FIELD_CUSTOM,
-      1,	1,	"SpatialFrequencyResponse" },
-    { EXIFTAG_FOCALPLANEXRESOLUTION,	1, 1,	TIFF_RATIONAL,	FIELD_CUSTOM, 
-      1,	0,	"FocalPlaneXResolution" },
-    { EXIFTAG_FOCALPLANEYRESOLUTION,	1, 1,	TIFF_RATIONAL,	FIELD_CUSTOM, 
-      1,	0,	"FocalPlaneYResolution" },
-    { EXIFTAG_FOCALPLANERESOLUTIONUNIT,	1, 1,	TIFF_SHORT,	FIELD_CUSTOM,
-      1,	0,	"FocalPlaneResolutionUnit" },
-    { EXIFTAG_SUBJECTLOCATION,	2, 2,		TIFF_SHORT,	FIELD_CUSTOM,
-      1,	0,	"SubjectLocation" },
-    { EXIFTAG_EXPOSUREINDEX,	1, 1,		TIFF_RATIONAL,	FIELD_CUSTOM, 
-      1,	0,	"ExposureIndex" },
-    { EXIFTAG_SENSINGMETHOD,	1, 1,		TIFF_SHORT,	FIELD_CUSTOM,
-      1,	0,	"SensingMethod" },
-    { EXIFTAG_FILESOURCE,	1, 1,		TIFF_UNDEFINED,	FIELD_CUSTOM,
-      1,	0,	"FileSource" },
-    { EXIFTAG_SCENETYPE,	1, 1,		TIFF_UNDEFINED,	FIELD_CUSTOM,
-      1,	0,	"SceneType" },
-    { EXIFTAG_CFAPATTERN,	-1, -1,		TIFF_UNDEFINED,	FIELD_CUSTOM,
-      1,	1,	"CFAPattern" },
-    { EXIFTAG_CUSTOMRENDERED,	1, 1,		TIFF_SHORT,	FIELD_CUSTOM,
-      1,	0,	"CustomRendered" },
-    { EXIFTAG_EXPOSUREMODE,	1, 1,		TIFF_SHORT,	FIELD_CUSTOM,
-      1,	0,	"ExposureMode" },
-    { EXIFTAG_WHITEBALANCE,	1, 1,		TIFF_SHORT,	FIELD_CUSTOM,
-      1,	0,	"WhiteBalance" },
-    { EXIFTAG_DIGITALZOOMRATIO,	1, 1,		TIFF_RATIONAL,	FIELD_CUSTOM, 
-      1,	0,	"DigitalZoomRatio" },
-    { EXIFTAG_FOCALLENGTHIN35MMFILM, 1, 1,	TIFF_SHORT,	FIELD_CUSTOM,
-      1,	0,	"FocalLengthIn35mmFilm" },
-    { EXIFTAG_SCENECAPTURETYPE,	1, 1,		TIFF_SHORT,	FIELD_CUSTOM,
-      1,	0,	"SceneCaptureType" },
-    { EXIFTAG_GAINCONTROL,	1, 1,		TIFF_RATIONAL,	FIELD_CUSTOM, 
-      1,	0,	"GainControl" },
-    { EXIFTAG_CONTRAST,		1, 1,		TIFF_SHORT,	FIELD_CUSTOM,
-      1,	0,	"Contrast" },
-    { EXIFTAG_SATURATION,	1, 1,		TIFF_SHORT,	FIELD_CUSTOM,
-      1,	0,	"Saturation" },
-    { EXIFTAG_SHARPNESS,	1, 1,		TIFF_SHORT,	FIELD_CUSTOM,
-      1,	0,	"Sharpness" },
-    { EXIFTAG_DEVICESETTINGDESCRIPTION,	-1, -1,	TIFF_UNDEFINED,	FIELD_CUSTOM,
-      1,	1,	"DeviceSettingDescription" },
-    { EXIFTAG_SUBJECTDISTANCERANGE, 1, 1,	TIFF_SHORT,	FIELD_CUSTOM,
-      1,	0,	"SubjectDistanceRange" },
-    { EXIFTAG_IMAGEUNIQUEID,	33, 33,		TIFF_ASCII,	FIELD_CUSTOM,
-      1,	0,	"ImageUniqueID" }
-};
-
-const TIFFFieldInfo *
-_TIFFGetFieldInfo(size_t *size)
-{
-	*size = TIFFArrayCount(tiffFieldInfo);
-	return tiffFieldInfo;
-}
-
-const TIFFFieldInfo *
-_TIFFGetExifFieldInfo(size_t *size)
-{
-	*size = TIFFArrayCount(exifFieldInfo);
-	return exifFieldInfo;
-}
-
-void
-_TIFFSetupFieldInfo(TIFF* tif, const TIFFFieldInfo info[], size_t n)
-{
-	if (tif->tif_fieldinfo) {
-		size_t  i;
-
-		for (i = 0; i < tif->tif_nfields; i++) 
-		{
-			TIFFFieldInfo *fld = tif->tif_fieldinfo[i];
-			if (fld->field_bit == FIELD_CUSTOM && 
-				strncmp("Tag ", fld->field_name, 4) == 0) {
-					_TIFFfree(fld->field_name);
-					_TIFFfree(fld);
-				}
-		}   
-      
-		_TIFFfree(tif->tif_fieldinfo);
-		tif->tif_nfields = 0;
-	}
-	_TIFFMergeFieldInfo(tif, info, n);
-}
-
-static int
-tagCompare(const void* a, const void* b)
-{
-	const TIFFFieldInfo* ta = *(const TIFFFieldInfo**) a;
-	const TIFFFieldInfo* tb = *(const TIFFFieldInfo**) b;
-	/* NB: be careful of return values for 16-bit platforms */
-	if (ta->field_tag != tb->field_tag)
-		return (ta->field_tag < tb->field_tag ? -1 : 1);
-	else
-		return ((int)tb->field_type - (int)ta->field_type);
-}
-
-static int
-tagNameCompare(const void* a, const void* b)
-{
-	const TIFFFieldInfo* ta = *(const TIFFFieldInfo**) a;
-	const TIFFFieldInfo* tb = *(const TIFFFieldInfo**) b;
-
-        return strcmp(ta->field_name, tb->field_name);
-}
-
-void
-_TIFFMergeFieldInfo(TIFF* tif, const TIFFFieldInfo info[], int n)
-{
-	TIFFFieldInfo** tp;
-	int i;
-
-        tif->tif_foundfield = NULL;
-
-	if (tif->tif_nfields > 0) {
-		tif->tif_fieldinfo = (TIFFFieldInfo**)
-		    _TIFFrealloc(tif->tif_fieldinfo,
-			(tif->tif_nfields+n) * sizeof (TIFFFieldInfo*));
-	} else {
-		tif->tif_fieldinfo = (TIFFFieldInfo**)
-		    _TIFFmalloc(n * sizeof (TIFFFieldInfo*));
-	}
-	assert(tif->tif_fieldinfo != NULL);
-	tp = tif->tif_fieldinfo + tif->tif_nfields;
-	for (i = 0; i < n; i++)
-		*tp++ = (TIFFFieldInfo*) (info + i);	/* XXX */
-
-        /* Sort the field info by tag number */
-        qsort(tif->tif_fieldinfo, tif->tif_nfields += n,
-	      sizeof (TIFFFieldInfo*), tagCompare);
-}
-
-void
-_TIFFPrintFieldInfo(TIFF* tif, FILE* fd)
-{
-	size_t i;
-
-	fprintf(fd, "%s: \n", tif->tif_name);
-	for (i = 0; i < tif->tif_nfields; i++) {
-		const TIFFFieldInfo* fip = tif->tif_fieldinfo[i];
-		fprintf(fd, "field[%2d] %5lu, %2d, %2d, %d, %2d, %5s, %5s, %s\n"
-			, (int)i
-			, (unsigned long) fip->field_tag
-			, fip->field_readcount, fip->field_writecount
-			, fip->field_type
-			, fip->field_bit
-			, fip->field_oktochange ? "TRUE" : "FALSE"
-			, fip->field_passcount ? "TRUE" : "FALSE"
-			, fip->field_name
-		);
-	}
-}
-
-/*
- * Return size of TIFFDataType in bytes
- */
-int
-TIFFDataWidth(TIFFDataType type)
-{
-	switch(type)
-	{
-	case 0:  /* nothing */
-	case 1:  /* TIFF_BYTE */
-	case 2:  /* TIFF_ASCII */
-	case 6:  /* TIFF_SBYTE */
-	case 7:  /* TIFF_UNDEFINED */
-		return 1;
-	case 3:  /* TIFF_SHORT */
-	case 8:  /* TIFF_SSHORT */
-		return 2;
-	case 4:  /* TIFF_LONG */
-	case 9:  /* TIFF_SLONG */
-	case 11: /* TIFF_FLOAT */
-        case 13: /* TIFF_IFD */
-		return 4;
-	case 5:  /* TIFF_RATIONAL */
-	case 10: /* TIFF_SRATIONAL */
-	case 12: /* TIFF_DOUBLE */
-		return 8;
-	default:
-		return 0; /* will return 0 for unknown types */
-	}
-}
-
-/*
- * Return size of TIFFDataType in bytes.
- *
- * XXX: We need a separate function to determine the space needed
- * to store the value. For TIFF_RATIONAL values TIFFDataWidth() returns 8,
- * but we use 4-byte float to represent rationals.
- */
-int
-_TIFFDataSize(TIFFDataType type)
-{
-	switch (type) {
-		case TIFF_BYTE:
-		case TIFF_SBYTE:
-		case TIFF_ASCII:
-		case TIFF_UNDEFINED:
-		    return 1;
-		case TIFF_SHORT:
-		case TIFF_SSHORT:
-		    return 2;
-		case TIFF_LONG:
-		case TIFF_SLONG:
-		case TIFF_FLOAT:
-		case TIFF_IFD:
-		case TIFF_RATIONAL:
-		case TIFF_SRATIONAL:
-		    return 4;
-		case TIFF_DOUBLE:
-		    return 8;
-		default:
-		    return 0;
-	}
-}
-
-/*
- * Return nearest TIFFDataType to the sample type of an image.
- */
-TIFFDataType
-_TIFFSampleToTagType(TIFF* tif)
-{
-	uint32 bps = TIFFhowmany8(tif->tif_dir.td_bitspersample);
-
-	switch (tif->tif_dir.td_sampleformat) {
-	case SAMPLEFORMAT_IEEEFP:
-		return (bps == 4 ? TIFF_FLOAT : TIFF_DOUBLE);
-	case SAMPLEFORMAT_INT:
-		return (bps <= 1 ? TIFF_SBYTE :
-		    bps <= 2 ? TIFF_SSHORT : TIFF_SLONG);
-	case SAMPLEFORMAT_UINT:
-		return (bps <= 1 ? TIFF_BYTE :
-		    bps <= 2 ? TIFF_SHORT : TIFF_LONG);
-	case SAMPLEFORMAT_VOID:
-		return (TIFF_UNDEFINED);
-	}
-	/*NOTREACHED*/
-	return (TIFF_UNDEFINED);
-}
-
-const TIFFFieldInfo*
-_TIFFFindFieldInfo(TIFF* tif, ttag_t tag, TIFFDataType dt)
-{
-	int i, n;
-
-	if (tif->tif_foundfield && tif->tif_foundfield->field_tag == tag &&
-	    (dt == TIFF_ANY || dt == tif->tif_foundfield->field_type))
-		return (tif->tif_foundfield);
-	/* NB: use sorted search (e.g. binary search) */
-	if(dt != TIFF_ANY) {
-            TIFFFieldInfo key = {0, 0, 0, TIFF_NOTYPE, 0, 0, 0, 0};
-	    TIFFFieldInfo* pkey = &key;
-	    const TIFFFieldInfo **ret;
-
-	    key.field_tag = tag;
-            key.field_type = dt;
-
-	    ret = (const TIFFFieldInfo **) bsearch(&pkey,
-						   tif->tif_fieldinfo, 
-						   tif->tif_nfields,
-						   sizeof(TIFFFieldInfo *), 
-						   tagCompare);
-	    return (ret) ? (*ret) : NULL;
-        } else for (i = 0, n = tif->tif_nfields; i < n; i++) {
-		const TIFFFieldInfo* fip = tif->tif_fieldinfo[i];
-		if (fip->field_tag == tag &&
-		    (dt == TIFF_ANY || fip->field_type == dt))
-			return (tif->tif_foundfield = fip);
-	}
-	return ((const TIFFFieldInfo *)0);
-}
-
-const TIFFFieldInfo*
-_TIFFFindFieldInfoByName(TIFF* tif, const char *field_name, TIFFDataType dt)
-{
-	int i, n;
-
-	if (tif->tif_foundfield
-	    && streq(tif->tif_foundfield->field_name, field_name)
-	    && (dt == TIFF_ANY || dt == tif->tif_foundfield->field_type))
-		return (tif->tif_foundfield);
-	/* NB: use sorted search (e.g. binary search) */
-	if(dt != TIFF_ANY) {
-            TIFFFieldInfo key = {0, 0, 0, TIFF_NOTYPE, 0, 0, 0, 0};
-	    TIFFFieldInfo* pkey = &key;
-	    const TIFFFieldInfo **ret;
-
-            key.field_name = (char *)field_name;
-            key.field_type = dt;
-
-            ret = (const TIFFFieldInfo **) lfind(&pkey,
-						 tif->tif_fieldinfo, 
-						 &tif->tif_nfields,
-						 sizeof(TIFFFieldInfo *),
-						 tagNameCompare);
-	    return (ret) ? (*ret) : NULL;
-        } else
-		for (i = 0, n = tif->tif_nfields; i < n; i++) {
-			const TIFFFieldInfo* fip = tif->tif_fieldinfo[i];
-			if (streq(fip->field_name, field_name) &&
-			    (dt == TIFF_ANY || fip->field_type == dt))
-				return (tif->tif_foundfield = fip);
-		}
-	return ((const TIFFFieldInfo *)0);
-}
-
-const TIFFFieldInfo*
-_TIFFFieldWithTag(TIFF* tif, ttag_t tag)
-{
-	const TIFFFieldInfo* fip = _TIFFFindFieldInfo(tif, tag, TIFF_ANY);
-	if (!fip) {
-		TIFFErrorExt(tif->tif_clientdata, "TIFFFieldWithTag",
-			  "Internal error, unknown tag 0x%x",
-                          (unsigned int) tag);
-		assert(fip != NULL);
-		/*NOTREACHED*/
-	}
-	return (fip);
-}
-
-const TIFFFieldInfo*
-_TIFFFieldWithName(TIFF* tif, const char *field_name)
-{
-	const TIFFFieldInfo* fip =
-		_TIFFFindFieldInfoByName(tif, field_name, TIFF_ANY);
-	if (!fip) {
-		TIFFErrorExt(tif->tif_clientdata, "TIFFFieldWithName",
-			  "Internal error, unknown tag %s", field_name);
-		assert(fip != NULL);
-		/*NOTREACHED*/
-	}
-	return (fip);
-}
-
-const TIFFFieldInfo*
-_TIFFFindOrRegisterFieldInfo( TIFF *tif, ttag_t tag, TIFFDataType dt )
-
-{
-    const TIFFFieldInfo *fld;
-
-    fld = _TIFFFindFieldInfo( tif, tag, dt );
-    if( fld == NULL )
-    {
-        fld = _TIFFCreateAnonFieldInfo( tif, tag, dt );
-        _TIFFMergeFieldInfo( tif, fld, 1 );
-    }
-
-    return fld;
-}
-
-TIFFFieldInfo*
-_TIFFCreateAnonFieldInfo(TIFF *tif, ttag_t tag, TIFFDataType field_type)
-{
-	TIFFFieldInfo *fld;
-	(void) tif;
-
-	fld = (TIFFFieldInfo *) _TIFFmalloc(sizeof (TIFFFieldInfo));
-	if (fld == NULL)
-	    return NULL;
-	_TIFFmemset( fld, 0, sizeof(TIFFFieldInfo) );
-
-	fld->field_tag = tag;
-	fld->field_readcount = TIFF_VARIABLE;
-	fld->field_writecount = TIFF_VARIABLE;
-	fld->field_type = field_type;
-	fld->field_bit = FIELD_CUSTOM;
-	fld->field_oktochange = TRUE;
-	fld->field_passcount = TRUE;
-	fld->field_name = (char *) _TIFFmalloc(32);
-	if (fld->field_name == NULL) {
-	    _TIFFfree(fld);
-	    return NULL;
-	}
-
-	/* note that this name is a special sign to TIFFClose() and
-	 * _TIFFSetupFieldInfo() to free the field
-	 */
-	sprintf(fld->field_name, "Tag %d", (int) tag);
-
-	return fld;    
-}
-
-/* vim: set ts=8 sts=8 sw=8 noet: */
diff --git a/src/tiff/tif_dirread.c b/src/tiff/tif_dirread.c
deleted file mode 100644
index f88d9db..0000000
--- a/src/tiff/tif_dirread.c
+++ /dev/null
@@ -1,1789 +0,0 @@
-/* $Id: tif_dirread.c 4825 2006-08-16 13:01:53Z lubia $ */
-
-/*
- * Copyright (c) 1988-1997 Sam Leffler
- * Copyright (c) 1991-1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and 
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- * 
- * 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 SAM LEFFLER OR SILICON GRAPHICS 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.
- */
-
-/*
- * TIFF Library.
- *
- * Directory Read Support Routines.
- */
-#include "tiffiop.h"
-
-#define	IGNORE	0		/* tag placeholder used below */
-
-#ifdef HAVE_IEEEFP
-# define	TIFFCvtIEEEFloatToNative(tif, n, fp)
-# define	TIFFCvtIEEEDoubleToNative(tif, n, dp)
-#else
-extern	void TIFFCvtIEEEFloatToNative(TIFF*, uint32, float*);
-extern	void TIFFCvtIEEEDoubleToNative(TIFF*, uint32, double*);
-#endif
-
-static	int EstimateStripByteCounts(TIFF*, TIFFDirEntry*, uint16);
-static	void MissingRequired(TIFF*, const char*);
-static	int CheckDirCount(TIFF*, TIFFDirEntry*, uint32);
-static	tsize_t TIFFFetchData(TIFF*, TIFFDirEntry*, char*);
-static	tsize_t TIFFFetchString(TIFF*, TIFFDirEntry*, char*);
-static	float TIFFFetchRational(TIFF*, TIFFDirEntry*);
-static	int TIFFFetchNormalTag(TIFF*, TIFFDirEntry*);
-static	int TIFFFetchPerSampleShorts(TIFF*, TIFFDirEntry*, uint16*);
-static	int TIFFFetchPerSampleLongs(TIFF*, TIFFDirEntry*, uint32*);
-static	int TIFFFetchPerSampleAnys(TIFF*, TIFFDirEntry*, double*);
-static	int TIFFFetchShortArray(TIFF*, TIFFDirEntry*, uint16*);
-static	int TIFFFetchStripThing(TIFF*, TIFFDirEntry*, long, uint32**);
-static	int TIFFFetchRefBlackWhite(TIFF*, TIFFDirEntry*);
-static	float TIFFFetchFloat(TIFF*, TIFFDirEntry*);
-static	int TIFFFetchFloatArray(TIFF*, TIFFDirEntry*, float*);
-static	int TIFFFetchDoubleArray(TIFF*, TIFFDirEntry*, double*);
-static	int TIFFFetchAnyArray(TIFF*, TIFFDirEntry*, double*);
-static	int TIFFFetchShortPair(TIFF*, TIFFDirEntry*);
-static	void ChopUpSingleUncompressedStrip(TIFF*);
-
-/*
- * Read the next TIFF directory from a file
- * and convert it to the internal format.
- * We read directories sequentially.
- */
-int
-TIFFReadDirectory(TIFF* tif)
-{
-	static const char module[] = "TIFFReadDirectory";
-
-	int n;
-	TIFFDirectory* td;
-	TIFFDirEntry *dp, *dir = NULL;
-	uint16 iv;
-	uint32 v;
-	const TIFFFieldInfo* fip;
-	size_t fix;
-	uint16 dircount;
-	toff_t nextdiroff;
-	int diroutoforderwarning = 0;
-	toff_t* new_dirlist;
-
-	tif->tif_diroff = tif->tif_nextdiroff;
-	if (tif->tif_diroff == 0)		/* no more directories */
-		return (0);
-
-	/*
-	 * XXX: Trick to prevent IFD looping. The one can create TIFF file
-	 * with looped directory pointers. We will maintain a list of already
-	 * seen directories and check every IFD offset against this list.
-	 */
-	for (n = 0; n < tif->tif_dirnumber; n++) {
-		if (tif->tif_dirlist[n] == tif->tif_diroff)
-			return (0);
-	}
-	tif->tif_dirnumber++;
-	new_dirlist = (toff_t *)_TIFFrealloc(tif->tif_dirlist,
-					tif->tif_dirnumber * sizeof(toff_t));
-	if (!new_dirlist) {
-		TIFFErrorExt(tif->tif_clientdata, module,
-			  "%s: Failed to allocate space for IFD list",
-			  tif->tif_name);
-		return (0);
-	}
-	tif->tif_dirlist = new_dirlist;
-	tif->tif_dirlist[tif->tif_dirnumber - 1] = tif->tif_diroff;
-
-	/*
-	 * Cleanup any previous compression state.
-	 */
-	(*tif->tif_cleanup)(tif);
-	tif->tif_curdir++;
-	nextdiroff = 0;
-	if (!isMapped(tif)) {
-		if (!SeekOK(tif, tif->tif_diroff)) {
-			TIFFErrorExt(tif->tif_clientdata, module,
-			    "%s: Seek error accessing TIFF directory",
-                            tif->tif_name);
-			return (0);
-		}
-		if (!ReadOK(tif, &dircount, sizeof (uint16))) {
-			TIFFErrorExt(tif->tif_clientdata, module,
-			    "%s: Can not read TIFF directory count",
-                            tif->tif_name);
-			return (0);
-		}
-		if (tif->tif_flags & TIFF_SWAB)
-			TIFFSwabShort(&dircount);
-		dir = (TIFFDirEntry *)_TIFFCheckMalloc(tif, dircount,
-						       sizeof (TIFFDirEntry),
-						"to read TIFF directory");
-		if (dir == NULL)
-			return (0);
-		if (!ReadOK(tif, dir, dircount*sizeof (TIFFDirEntry))) {
-			TIFFErrorExt(tif->tif_clientdata, module,
-                                  "%.100s: Can not read TIFF directory",
-                                  tif->tif_name);
-			goto bad;
-		}
-		/*
-		 * Read offset to next directory for sequential scans.
-		 */
-		(void) ReadOK(tif, &nextdiroff, sizeof (uint32));
-	} else {
-		toff_t off = tif->tif_diroff;
-
-		if (off + sizeof (uint16) > tif->tif_size) {
-			TIFFErrorExt(tif->tif_clientdata, module,
-			    "%s: Can not read TIFF directory count",
-                            tif->tif_name);
-			return (0);
-		} else
-			_TIFFmemcpy(&dircount, tif->tif_base + off, sizeof (uint16));
-		off += sizeof (uint16);
-		if (tif->tif_flags & TIFF_SWAB)
-			TIFFSwabShort(&dircount);
-		dir = (TIFFDirEntry *)_TIFFCheckMalloc(tif, dircount,
-						       sizeof (TIFFDirEntry),
-						"to read TIFF directory");
-		if (dir == NULL)
-			return (0);
-		if (off + dircount*sizeof (TIFFDirEntry) > tif->tif_size) {
-			TIFFErrorExt(tif->tif_clientdata, module,
-                                  "%s: Can not read TIFF directory",
-                                  tif->tif_name);
-			goto bad;
-		} else {
-			_TIFFmemcpy(dir, tif->tif_base + off,
-				    dircount*sizeof (TIFFDirEntry));
-		}
-		off += dircount* sizeof (TIFFDirEntry);
-		if (off + sizeof (uint32) <= tif->tif_size)
-			_TIFFmemcpy(&nextdiroff, tif->tif_base+off, sizeof (uint32));
-	}
-	if (tif->tif_flags & TIFF_SWAB)
-		TIFFSwabLong(&nextdiroff);
-	tif->tif_nextdiroff = nextdiroff;
-
-	tif->tif_flags &= ~TIFF_BEENWRITING;	/* reset before new dir */
-	/*
-	 * Setup default value and then make a pass over
-	 * the fields to check type and tag information,
-	 * and to extract info required to size data
-	 * structures.  A second pass is made afterwards
-	 * to read in everthing not taken in the first pass.
-	 */
-	td = &tif->tif_dir;
-	/* free any old stuff and reinit */
-	TIFFFreeDirectory(tif);
-	TIFFDefaultDirectory(tif);
-	/*
-	 * Electronic Arts writes gray-scale TIFF files
-	 * without a PlanarConfiguration directory entry.
-	 * Thus we setup a default value here, even though
-	 * the TIFF spec says there is no default value.
-	 */
-	TIFFSetField(tif, TIFFTAG_PLANARCONFIG, PLANARCONFIG_CONTIG);
-
-	/*
-	 * Sigh, we must make a separate pass through the
-	 * directory for the following reason:
-	 *
-	 * We must process the Compression tag in the first pass
-	 * in order to merge in codec-private tag definitions (otherwise
-	 * we may get complaints about unknown tags).  However, the
-	 * Compression tag may be dependent on the SamplesPerPixel
-	 * tag value because older TIFF specs permited Compression
-	 * to be written as a SamplesPerPixel-count tag entry.
-	 * Thus if we don't first figure out the correct SamplesPerPixel
-	 * tag value then we may end up ignoring the Compression tag
-	 * value because it has an incorrect count value (if the
-	 * true value of SamplesPerPixel is not 1).
-	 *
-	 * It sure would have been nice if Aldus had really thought
-	 * this stuff through carefully.
-	 */ 
-	for (dp = dir, n = dircount; n > 0; n--, dp++) {
-		if (tif->tif_flags & TIFF_SWAB) {
-			TIFFSwabArrayOfShort(&dp->tdir_tag, 2);
-			TIFFSwabArrayOfLong(&dp->tdir_count, 2);
-		}
-		if (dp->tdir_tag == TIFFTAG_SAMPLESPERPIXEL) {
-			if (!TIFFFetchNormalTag(tif, dp))
-				goto bad;
-			dp->tdir_tag = IGNORE;
-		}
-	}
-	/*
-	 * First real pass over the directory.
-	 */
-	fix = 0;
-	for (dp = dir, n = dircount; n > 0; n--, dp++) {
-
-		if (fix >= tif->tif_nfields || dp->tdir_tag == IGNORE)
-			continue;
-               
-		/*
-		 * Silicon Beach (at least) writes unordered
-		 * directory tags (violating the spec).  Handle
-		 * it here, but be obnoxious (maybe they'll fix it?).
-		 */
-		if (dp->tdir_tag < tif->tif_fieldinfo[fix]->field_tag) {
-			if (!diroutoforderwarning) {
-				TIFFWarningExt(tif->tif_clientdata, module,
-	"%s: invalid TIFF directory; tags are not sorted in ascending order",
-					       tif->tif_name);
-				diroutoforderwarning = 1;
-			}
-			fix = 0;			/* O(n^2) */
-		}
-		while (fix < tif->tif_nfields &&
-		       tif->tif_fieldinfo[fix]->field_tag < dp->tdir_tag)
-			fix++;
-		if (fix >= tif->tif_nfields ||
-		    tif->tif_fieldinfo[fix]->field_tag != dp->tdir_tag) {
-
-					TIFFWarningExt(tif->tif_clientdata,
-						       module,
-                        "%s: unknown field with tag %d (0x%x) encountered",
-						       tif->tif_name,
-						       dp->tdir_tag,
-						       dp->tdir_tag,
-						       dp->tdir_type);
-
-                    TIFFMergeFieldInfo(tif,
-                                       _TIFFCreateAnonFieldInfo(tif,
-						dp->tdir_tag,
-						(TIFFDataType) dp->tdir_type),
-				       1 );
-                    fix = 0;
-                    while (fix < tif->tif_nfields &&
-                           tif->tif_fieldinfo[fix]->field_tag < dp->tdir_tag)
-			fix++;
-		}
-		/*
-		 * Null out old tags that we ignore.
-		 */
-		if (tif->tif_fieldinfo[fix]->field_bit == FIELD_IGNORE) {
-	ignore:
-			dp->tdir_tag = IGNORE;
-			continue;
-		}
-		/*
-		 * Check data type.
-		 */
-		fip = tif->tif_fieldinfo[fix];
-		while (dp->tdir_type != (unsigned short) fip->field_type
-                       && fix < tif->tif_nfields) {
-			if (fip->field_type == TIFF_ANY)	/* wildcard */
-				break;
-                        fip = tif->tif_fieldinfo[++fix];
-			if (fix >= tif->tif_nfields ||
-			    fip->field_tag != dp->tdir_tag) {
-				TIFFWarningExt(tif->tif_clientdata, module,
-			"%s: wrong data type %d for \"%s\"; tag ignored",
-					    tif->tif_name, dp->tdir_type,
-					    tif->tif_fieldinfo[fix-1]->field_name);
-				goto ignore;
-			}
-		}
-		/*
-		 * Check count if known in advance.
-		 */
-		if (fip->field_readcount != TIFF_VARIABLE
-		    && fip->field_readcount != TIFF_VARIABLE2) {
-			uint32 expected = (fip->field_readcount == TIFF_SPP) ?
-			    (uint32) td->td_samplesperpixel :
-			    (uint32) fip->field_readcount;
-			if (!CheckDirCount(tif, dp, expected))
-				goto ignore;
-		}
-
-		switch (dp->tdir_tag) {
-		case TIFFTAG_COMPRESSION:
-			/*
-			 * The 5.0 spec says the Compression tag has
-			 * one value, while earlier specs say it has
-			 * one value per sample.  Because of this, we
-			 * accept the tag if one value is supplied.
-			 */
-			if (dp->tdir_count == 1) {
-				v = TIFFExtractData(tif,
-				    dp->tdir_type, dp->tdir_offset);
-				if (!TIFFSetField(tif, dp->tdir_tag, (uint16)v))
-					goto bad;
-				break;
-			/* XXX: workaround for broken TIFFs */
-			} else if (dp->tdir_type == TIFF_LONG) {
-				if (!TIFFFetchPerSampleLongs(tif, dp, &v) ||
-				    !TIFFSetField(tif, dp->tdir_tag, (uint16)v))
-					goto bad;
-			} else {
-				if (!TIFFFetchPerSampleShorts(tif, dp, &iv)
-				    || !TIFFSetField(tif, dp->tdir_tag, iv))
-					goto bad;
-			}
-			dp->tdir_tag = IGNORE;
-			break;
-		case TIFFTAG_STRIPOFFSETS:
-		case TIFFTAG_STRIPBYTECOUNTS:
-		case TIFFTAG_TILEOFFSETS:
-		case TIFFTAG_TILEBYTECOUNTS:
-			TIFFSetFieldBit(tif, fip->field_bit);
-			break;
-		case TIFFTAG_IMAGEWIDTH:
-		case TIFFTAG_IMAGELENGTH:
-		case TIFFTAG_IMAGEDEPTH:
-		case TIFFTAG_TILELENGTH:
-		case TIFFTAG_TILEWIDTH:
-		case TIFFTAG_TILEDEPTH:
-		case TIFFTAG_PLANARCONFIG:
-		case TIFFTAG_ROWSPERSTRIP:
-		case TIFFTAG_EXTRASAMPLES:
-			if (!TIFFFetchNormalTag(tif, dp))
-				goto bad;
-			dp->tdir_tag = IGNORE;
-			break;
-		}
-	}
-
-	/*
-	 * Allocate directory structure and setup defaults.
-	 */
-	if (!TIFFFieldSet(tif, FIELD_IMAGEDIMENSIONS)) {
-		MissingRequired(tif, "ImageLength");
-		goto bad;
-	}
-	/* 
- 	 * Setup appropriate structures (by strip or by tile)
-	 */
-	if (!TIFFFieldSet(tif, FIELD_TILEDIMENSIONS)) {
-		td->td_nstrips = TIFFNumberOfStrips(tif);
-		td->td_tilewidth = td->td_imagewidth;
-		td->td_tilelength = td->td_rowsperstrip;
-		td->td_tiledepth = td->td_imagedepth;
-		tif->tif_flags &= ~TIFF_ISTILED;
-	} else {
-		td->td_nstrips = TIFFNumberOfTiles(tif);
-		tif->tif_flags |= TIFF_ISTILED;
-	}
-	if (!td->td_nstrips) {
-		TIFFErrorExt(tif->tif_clientdata, module,
-			     "%s: cannot handle zero number of %s",
-			     tif->tif_name, isTiled(tif) ? "tiles" : "strips");
-		goto bad;
-	}
-	td->td_stripsperimage = td->td_nstrips;
-	if (td->td_planarconfig == PLANARCONFIG_SEPARATE)
-		td->td_stripsperimage /= td->td_samplesperpixel;
-	if (!TIFFFieldSet(tif, FIELD_STRIPOFFSETS)) {
-		MissingRequired(tif,
-				isTiled(tif) ? "TileOffsets" : "StripOffsets");
-		goto bad;
-	}
-
-	/*
-	 * Second pass: extract other information.
-	 */
-	for (dp = dir, n = dircount; n > 0; n--, dp++) {
-		if (dp->tdir_tag == IGNORE)
-			continue;
-		switch (dp->tdir_tag) {
-		case TIFFTAG_MINSAMPLEVALUE:
-		case TIFFTAG_MAXSAMPLEVALUE:
-		case TIFFTAG_BITSPERSAMPLE:
-		case TIFFTAG_DATATYPE:
-		case TIFFTAG_SAMPLEFORMAT:
-			/*
-			 * The 5.0 spec says the Compression tag has
-			 * one value, while earlier specs say it has
-			 * one value per sample.  Because of this, we
-			 * accept the tag if one value is supplied.
-			 *
-                         * The MinSampleValue, MaxSampleValue, BitsPerSample
-                         * DataType and SampleFormat tags are supposed to be
-                         * written as one value/sample, but some vendors
-                         * incorrectly write one value only -- so we accept
-                         * that as well (yech). Other vendors write correct
-			 * value for NumberOfSamples, but incorrect one for
-			 * BitsPerSample and friends, and we will read this
-			 * too.
-			 */
-			if (dp->tdir_count == 1) {
-				v = TIFFExtractData(tif,
-				    dp->tdir_type, dp->tdir_offset);
-				if (!TIFFSetField(tif, dp->tdir_tag, (uint16)v))
-					goto bad;
-			/* XXX: workaround for broken TIFFs */
-			} else if (dp->tdir_tag == TIFFTAG_BITSPERSAMPLE
-				   && dp->tdir_type == TIFF_LONG) {
-				if (!TIFFFetchPerSampleLongs(tif, dp, &v) ||
-				    !TIFFSetField(tif, dp->tdir_tag, (uint16)v))
-					goto bad;
-			} else {
-				if (!TIFFFetchPerSampleShorts(tif, dp, &iv) ||
-				    !TIFFSetField(tif, dp->tdir_tag, iv))
-					goto bad;
-			}
-			break;
-		case TIFFTAG_SMINSAMPLEVALUE:
-		case TIFFTAG_SMAXSAMPLEVALUE:
-			{
-				double dv = 0.0;
-				if (!TIFFFetchPerSampleAnys(tif, dp, &dv) ||
-				    !TIFFSetField(tif, dp->tdir_tag, dv))
-					goto bad;
-			}
-			break;
-		case TIFFTAG_STRIPOFFSETS:
-		case TIFFTAG_TILEOFFSETS:
-			if (!TIFFFetchStripThing(tif, dp,
-			    td->td_nstrips, &td->td_stripoffset))
-				goto bad;
-			break;
-		case TIFFTAG_STRIPBYTECOUNTS:
-		case TIFFTAG_TILEBYTECOUNTS:
-			if (!TIFFFetchStripThing(tif, dp,
-			    td->td_nstrips, &td->td_stripbytecount))
-				goto bad;
-			break;
-		case TIFFTAG_COLORMAP:
-		case TIFFTAG_TRANSFERFUNCTION:
-			{
-				char* cp;
-				/*
-				 * TransferFunction can have either 1x or 3x
-				 * data values; Colormap can have only 3x
-				 * items.
-				 */
-				v = 1L<<td->td_bitspersample;
-				if (dp->tdir_tag == TIFFTAG_COLORMAP ||
-				    dp->tdir_count != v) {
-					if (!CheckDirCount(tif, dp, 3 * v))
-						break;
-				}
-				v *= sizeof(uint16);
-				cp = (char *)_TIFFCheckMalloc(tif,
-							      dp->tdir_count,
-							      sizeof (uint16),
-					"to read \"TransferFunction\" tag");
-				if (cp != NULL) {
-					if (TIFFFetchData(tif, dp, cp)) {
-						/*
-						 * This deals with there being
-						 * only one array to apply to
-						 * all samples.
-						 */
-						uint32 c = 1L << td->td_bitspersample;
-						if (dp->tdir_count == c)
-							v = 0L;
-						TIFFSetField(tif, dp->tdir_tag,
-						    cp, cp+v, cp+2*v);
-					}
-					_TIFFfree(cp);
-				}
-				break;
-			}
-		case TIFFTAG_PAGENUMBER:
-		case TIFFTAG_HALFTONEHINTS:
-		case TIFFTAG_YCBCRSUBSAMPLING:
-		case TIFFTAG_DOTRANGE:
-			(void) TIFFFetchShortPair(tif, dp);
-			break;
-		case TIFFTAG_REFERENCEBLACKWHITE:
-			(void) TIFFFetchRefBlackWhite(tif, dp);
-			break;
-/* BEGIN REV 4.0 COMPATIBILITY */
-		case TIFFTAG_OSUBFILETYPE:
-			v = 0L;
-			switch (TIFFExtractData(tif, dp->tdir_type,
-			    dp->tdir_offset)) {
-			case OFILETYPE_REDUCEDIMAGE:
-				v = FILETYPE_REDUCEDIMAGE;
-				break;
-			case OFILETYPE_PAGE:
-				v = FILETYPE_PAGE;
-				break;
-			}
-			if (v)
-				TIFFSetField(tif, TIFFTAG_SUBFILETYPE, v);
-			break;
-/* END REV 4.0 COMPATIBILITY */
-		default:
-			(void) TIFFFetchNormalTag(tif, dp);
-			break;
-		}
-	}
-	/*
-	 * Verify Palette image has a Colormap.
-	 */
-	if (td->td_photometric == PHOTOMETRIC_PALETTE &&
-	    !TIFFFieldSet(tif, FIELD_COLORMAP)) {
-		MissingRequired(tif, "Colormap");
-		goto bad;
-	}
-	/*
-	 * Attempt to deal with a missing StripByteCounts tag.
-	 */
-	if (!TIFFFieldSet(tif, FIELD_STRIPBYTECOUNTS)) {
-		/*
-		 * Some manufacturers violate the spec by not giving
-		 * the size of the strips.  In this case, assume there
-		 * is one uncompressed strip of data.
-		 */
-		if ((td->td_planarconfig == PLANARCONFIG_CONTIG &&
-		    td->td_nstrips > 1) ||
-		    (td->td_planarconfig == PLANARCONFIG_SEPARATE &&
-		     td->td_nstrips != td->td_samplesperpixel)) {
-		    MissingRequired(tif, "StripByteCounts");
-		    goto bad;
-		}
-		TIFFWarningExt(tif->tif_clientdata, module,
-			"%s: TIFF directory is missing required "
-			"\"%s\" field, calculating from imagelength",
-			tif->tif_name,
-		        _TIFFFieldWithTag(tif,TIFFTAG_STRIPBYTECOUNTS)->field_name);
-		if (EstimateStripByteCounts(tif, dir, dircount) < 0)
-		    goto bad;
-/* 
- * Assume we have wrong StripByteCount value (in case of single strip) in
- * following cases:
- *   - it is equal to zero along with StripOffset;
- *   - it is larger than file itself (in case of uncompressed image);
- *   - it is smaller than the size of the bytes per row multiplied on the
- *     number of rows.  The last case should not be checked in the case of
- *     writing new image, because we may do not know the exact strip size
- *     until the whole image will be written and directory dumped out.
- */
-#define	BYTECOUNTLOOKSBAD \
-    ( (td->td_stripbytecount[0] == 0 && td->td_stripoffset[0] != 0) || \
-      (td->td_compression == COMPRESSION_NONE && \
-       td->td_stripbytecount[0] > TIFFGetFileSize(tif) - td->td_stripoffset[0]) || \
-      (tif->tif_mode == O_RDONLY && \
-       td->td_compression == COMPRESSION_NONE && \
-       td->td_stripbytecount[0] < TIFFScanlineSize(tif) * td->td_imagelength) )
-
-	} else if (td->td_nstrips == 1 
-                   && td->td_stripoffset[0] != 0 
-                   && BYTECOUNTLOOKSBAD) {
-		/*
-		 * XXX: Plexus (and others) sometimes give a value of zero for
-		 * a tag when they don't know what the correct value is!  Try
-		 * and handle the simple case of estimating the size of a one
-		 * strip image.
-		 */
-		TIFFWarningExt(tif->tif_clientdata, module,
-	"%s: Bogus \"%s\" field, ignoring and calculating from imagelength",
-                            tif->tif_name,
-		            _TIFFFieldWithTag(tif,TIFFTAG_STRIPBYTECOUNTS)->field_name);
-		if(EstimateStripByteCounts(tif, dir, dircount) < 0)
-		    goto bad;
-	} else if (td->td_planarconfig == PLANARCONFIG_CONTIG
-		   && td->td_nstrips > 2
-		   && td->td_compression == COMPRESSION_NONE
-		   && td->td_stripbytecount[0] != td->td_stripbytecount[1]) {
-		/*
-		 * XXX: Some vendors fill StripByteCount array with absolutely
-		 * wrong values (it can be equal to StripOffset array, for
-		 * example). Catch this case here.
-		 */
-		TIFFWarningExt(tif->tif_clientdata, module,
-	"%s: Wrong \"%s\" field, ignoring and calculating from imagelength",
-                            tif->tif_name,
-		            _TIFFFieldWithTag(tif,TIFFTAG_STRIPBYTECOUNTS)->field_name);
-		if (EstimateStripByteCounts(tif, dir, dircount) < 0)
-		    goto bad;
-	}
-	if (dir) {
-		_TIFFfree((char *)dir);
-		dir = NULL;
-	}
-	if (!TIFFFieldSet(tif, FIELD_MAXSAMPLEVALUE))
-		td->td_maxsamplevalue = (uint16)((1L<<td->td_bitspersample)-1);
-	/*
-	 * Setup default compression scheme.
-	 */
-
-	/*
-	 * XXX: We can optimize checking for the strip bounds using the sorted
-	 * bytecounts array. See also comments for TIFFAppendToStrip()
-	 * function in tif_write.c.
-	 */
-	if (td->td_nstrips > 1) {
-		tstrip_t strip;
-
-		td->td_stripbytecountsorted = 1;
-		for (strip = 1; strip < td->td_nstrips; strip++) {
-			if (td->td_stripoffset[strip - 1] >
-			    td->td_stripoffset[strip]) {
-				td->td_stripbytecountsorted = 0;
-				break;
-			}
-		}
-	}
-
-	if (!TIFFFieldSet(tif, FIELD_COMPRESSION))
-		TIFFSetField(tif, TIFFTAG_COMPRESSION, COMPRESSION_NONE);
-        /*
-         * Some manufacturers make life difficult by writing
-	 * large amounts of uncompressed data as a single strip.
-	 * This is contrary to the recommendations of the spec.
-         * The following makes an attempt at breaking such images
-	 * into strips closer to the recommended 8k bytes.  A
-	 * side effect, however, is that the RowsPerStrip tag
-	 * value may be changed.
-         */
-	if (td->td_nstrips == 1 && td->td_compression == COMPRESSION_NONE &&
-	    (tif->tif_flags & (TIFF_STRIPCHOP|TIFF_ISTILED)) == TIFF_STRIPCHOP)
-		ChopUpSingleUncompressedStrip(tif);
-
-	/*
-	 * Reinitialize i/o since we are starting on a new directory.
-	 */
-	tif->tif_row = (uint32) -1;
-	tif->tif_curstrip = (tstrip_t) -1;
-	tif->tif_col = (uint32) -1;
-	tif->tif_curtile = (ttile_t) -1;
-	tif->tif_tilesize = (tsize_t) -1;
-
-	tif->tif_scanlinesize = TIFFScanlineSize(tif);
-	if (!tif->tif_scanlinesize) {
-		TIFFErrorExt(tif->tif_clientdata, module, "%s: cannot handle zero scanline size",
-			  tif->tif_name);
-		return (0);
-	}
-
-	if (isTiled(tif)) {
-		tif->tif_tilesize = TIFFTileSize(tif);
-		if (!tif->tif_tilesize) {
-			TIFFErrorExt(tif->tif_clientdata, module, "%s: cannot handle zero tile size",
-				  tif->tif_name);
-			return (0);
-		}
-	} else {
-		if (!TIFFStripSize(tif)) {
-			TIFFErrorExt(tif->tif_clientdata, module, "%s: cannot handle zero strip size",
-				  tif->tif_name);
-			return (0);
-		}
-	}
-	return (1);
-bad:
-	if (dir)
-		_TIFFfree(dir);
-	return (0);
-}
-
-/* 
- * Read custom directory from the arbitarry offset.
- * The code is very similar to TIFFReadDirectory().
- */
-int
-TIFFReadCustomDirectory(TIFF* tif, toff_t diroff,
-			const TIFFFieldInfo info[], size_t n)
-{
-	static const char module[] = "TIFFReadCustomDirectory";
-
-	TIFFDirectory* td = &tif->tif_dir;
-	TIFFDirEntry *dp, *dir = NULL;
-	const TIFFFieldInfo* fip;
-	size_t fix;
-	uint16 i, dircount;
-
-	_TIFFSetupFieldInfo(tif, info, n);
-
-	tif->tif_diroff = diroff;
-
-	if (!isMapped(tif)) {
-		if (!SeekOK(tif, diroff)) {
-			TIFFErrorExt(tif->tif_clientdata, module,
-			    "%s: Seek error accessing TIFF directory",
-                            tif->tif_name);
-			return (0);
-		}
-		if (!ReadOK(tif, &dircount, sizeof (uint16))) {
-			TIFFErrorExt(tif->tif_clientdata, module,
-			    "%s: Can not read TIFF directory count",
-                            tif->tif_name);
-			return (0);
-		}
-		if (tif->tif_flags & TIFF_SWAB)
-			TIFFSwabShort(&dircount);
-		dir = (TIFFDirEntry *)_TIFFCheckMalloc(tif, dircount,
-						       sizeof (TIFFDirEntry),
-					"to read TIFF custom directory");
-		if (dir == NULL)
-			return (0);
-		if (!ReadOK(tif, dir, dircount * sizeof (TIFFDirEntry))) {
-			TIFFErrorExt(tif->tif_clientdata, module,
-                                  "%.100s: Can not read TIFF directory",
-                                  tif->tif_name);
-			goto bad;
-		}
-	} else {
-		toff_t off = diroff;
-
-		if (off + sizeof (uint16) > tif->tif_size) {
-			TIFFErrorExt(tif->tif_clientdata, module,
-			    "%s: Can not read TIFF directory count",
-                            tif->tif_name);
-			return (0);
-		} else
-			_TIFFmemcpy(&dircount, tif->tif_base + off, sizeof (uint16));
-		off += sizeof (uint16);
-		if (tif->tif_flags & TIFF_SWAB)
-			TIFFSwabShort(&dircount);
-		dir = (TIFFDirEntry *)_TIFFCheckMalloc(tif, dircount,
-						       sizeof (TIFFDirEntry),
-					"to read TIFF custom directory");
-		if (dir == NULL)
-			return (0);
-		if (off + dircount * sizeof (TIFFDirEntry) > tif->tif_size) {
-			TIFFErrorExt(tif->tif_clientdata, module,
-                                  "%s: Can not read TIFF directory",
-                                  tif->tif_name);
-			goto bad;
-		} else {
-			_TIFFmemcpy(dir, tif->tif_base + off,
-				    dircount * sizeof (TIFFDirEntry));
-		}
-	}
-
-	TIFFFreeDirectory(tif);
-
-	fix = 0;
-	for (dp = dir, i = dircount; i > 0; i--, dp++) {
-		if (tif->tif_flags & TIFF_SWAB) {
-			TIFFSwabArrayOfShort(&dp->tdir_tag, 2);
-			TIFFSwabArrayOfLong(&dp->tdir_count, 2);
-		}
-
-		if (fix >= tif->tif_nfields || dp->tdir_tag == IGNORE)
-			continue;
-
-		while (fix < tif->tif_nfields &&
-		       tif->tif_fieldinfo[fix]->field_tag < dp->tdir_tag)
-			fix++;
-
-		if (fix >= tif->tif_nfields ||
-		    tif->tif_fieldinfo[fix]->field_tag != dp->tdir_tag) {
-
-			TIFFWarningExt(tif->tif_clientdata, module,
-                        "%s: unknown field with tag %d (0x%x) encountered",
-				    tif->tif_name, dp->tdir_tag, dp->tdir_tag,
-				    dp->tdir_type);
-
-			TIFFMergeFieldInfo(tif,
-					   _TIFFCreateAnonFieldInfo(tif,
-						dp->tdir_tag,
-						(TIFFDataType)dp->tdir_type),
-					   1);
-
-			fix = 0;
-			while (fix < tif->tif_nfields &&
-			       tif->tif_fieldinfo[fix]->field_tag < dp->tdir_tag)
-				fix++;
-		}
-		/*
-		 * Null out old tags that we ignore.
-		 */
-		if (tif->tif_fieldinfo[fix]->field_bit == FIELD_IGNORE) {
-	ignore:
-			dp->tdir_tag = IGNORE;
-			continue;
-		}
-		/*
-		 * Check data type.
-		 */
-		fip = tif->tif_fieldinfo[fix];
-		while (dp->tdir_type != (unsigned short) fip->field_type
-                       && fix < tif->tif_nfields) {
-			if (fip->field_type == TIFF_ANY)	/* wildcard */
-				break;
-                        fip = tif->tif_fieldinfo[++fix];
-			if (fix >= tif->tif_nfields ||
-			    fip->field_tag != dp->tdir_tag) {
-				TIFFWarningExt(tif->tif_clientdata, module,
-			"%s: wrong data type %d for \"%s\"; tag ignored",
-					    tif->tif_name, dp->tdir_type,
-					    tif->tif_fieldinfo[fix-1]->field_name);
-				goto ignore;
-			}
-		}
-		/*
-		 * Check count if known in advance.
-		 */
-		if (fip->field_readcount != TIFF_VARIABLE
-		    && fip->field_readcount != TIFF_VARIABLE2) {
-			uint32 expected = (fip->field_readcount == TIFF_SPP) ?
-			    (uint32) td->td_samplesperpixel :
-			    (uint32) fip->field_readcount;
-			if (!CheckDirCount(tif, dp, expected))
-				goto ignore;
-		}
-
-		(void) TIFFFetchNormalTag(tif, dp);
-	}
-	
-	if (dir)
-		_TIFFfree(dir);
-	return 1;
-
-bad:
-	if (dir)
-		_TIFFfree(dir);
-	return 0;
-}
-
-/*
- * EXIF is important special case of custom IFD, so we have a special
- * function to read it.
- */
-int
-TIFFReadEXIFDirectory(TIFF* tif, toff_t diroff)
-{
-	size_t exifFieldInfoCount;
-	const TIFFFieldInfo *exifFieldInfo =
-		_TIFFGetExifFieldInfo(&exifFieldInfoCount);
-	return TIFFReadCustomDirectory(tif, diroff, exifFieldInfo,
-				       exifFieldInfoCount);
-}
-
-static int
-EstimateStripByteCounts(TIFF* tif, TIFFDirEntry* dir, uint16 dircount)
-{
-	static const char module[] = "EstimateStripByteCounts";
-
-	register TIFFDirEntry *dp;
-	register TIFFDirectory *td = &tif->tif_dir;
-	uint16 i;
-
-	if (td->td_stripbytecount)
-		_TIFFfree(td->td_stripbytecount);
-	td->td_stripbytecount = (uint32*)
-	    _TIFFCheckMalloc(tif, td->td_nstrips, sizeof (uint32),
-		"for \"StripByteCounts\" array");
-	if (td->td_compression != COMPRESSION_NONE) {
-		uint32 space = (uint32)(sizeof (TIFFHeader)
-		    + sizeof (uint16)
-		    + (dircount * sizeof (TIFFDirEntry))
-		    + sizeof (uint32));
-		toff_t filesize = TIFFGetFileSize(tif);
-		uint16 n;
-
-		/* calculate amount of space used by indirect values */
-		for (dp = dir, n = dircount; n > 0; n--, dp++)
-		{
-			uint32 cc = TIFFDataWidth((TIFFDataType) dp->tdir_type);
-			if (cc == 0) {
-				TIFFErrorExt(tif->tif_clientdata, module,
-			"%s: Cannot determine size of unknown tag type %d",
-					  tif->tif_name, dp->tdir_type);
-				return -1;
-			}
-			cc = cc * dp->tdir_count;
-			if (cc > sizeof (uint32))
-				space += cc;
-		}
-		space = filesize - space;
-		if (td->td_planarconfig == PLANARCONFIG_SEPARATE)
-			space /= td->td_samplesperpixel;
-		for (i = 0; i < td->td_nstrips; i++)
-			td->td_stripbytecount[i] = space;
-		/*
-		 * This gross hack handles the case were the offset to
-		 * the last strip is past the place where we think the strip
-		 * should begin.  Since a strip of data must be contiguous,
-		 * it's safe to assume that we've overestimated the amount
-		 * of data in the strip and trim this number back accordingly.
-		 */ 
-		i--;
-		if (((toff_t)(td->td_stripoffset[i]+td->td_stripbytecount[i]))
-                                                               > filesize)
-			td->td_stripbytecount[i] =
-			    filesize - td->td_stripoffset[i];
-	} else {
-		uint32 rowbytes = TIFFScanlineSize(tif);
-		uint32 rowsperstrip = td->td_imagelength/td->td_stripsperimage;
-		for (i = 0; i < td->td_nstrips; i++)
-			td->td_stripbytecount[i] = rowbytes*rowsperstrip;
-	}
-	TIFFSetFieldBit(tif, FIELD_STRIPBYTECOUNTS);
-	if (!TIFFFieldSet(tif, FIELD_ROWSPERSTRIP))
-		td->td_rowsperstrip = td->td_imagelength;
-	return 1;
-}
-
-static void
-MissingRequired(TIFF* tif, const char* tagname)
-{
-	static const char module[] = "MissingRequired";
-
-	TIFFErrorExt(tif->tif_clientdata, module,
-		  "%s: TIFF directory is missing required \"%s\" field",
-		  tif->tif_name, tagname);
-}
-
-/*
- * Check the count field of a directory
- * entry against a known value.  The caller
- * is expected to skip/ignore the tag if
- * there is a mismatch.
- */
-static int
-CheckDirCount(TIFF* tif, TIFFDirEntry* dir, uint32 count)
-{
-	if (count > dir->tdir_count) {
-		TIFFWarningExt(tif->tif_clientdata, tif->tif_name,
-	"incorrect count for field \"%s\" (%lu, expecting %lu); tag ignored",
-		    _TIFFFieldWithTag(tif, dir->tdir_tag)->field_name,
-		    dir->tdir_count, count);
-		return (0);
-	} else if (count < dir->tdir_count) {
-		TIFFWarningExt(tif->tif_clientdata, tif->tif_name,
-	"incorrect count for field \"%s\" (%lu, expecting %lu); tag trimmed",
-		    _TIFFFieldWithTag(tif, dir->tdir_tag)->field_name,
-		    dir->tdir_count, count);
-		return (1);
-	}
-	return (1);
-}
-
-/*
- * Fetch a contiguous directory item.
- */
-static tsize_t
-TIFFFetchData(TIFF* tif, TIFFDirEntry* dir, char* cp)
-{
-	int w = TIFFDataWidth((TIFFDataType) dir->tdir_type);
-	tsize_t cc = dir->tdir_count * w;
-
-	/* Check for overflow. */
-	if (!dir->tdir_count || !w || cc / w != (tsize_t)dir->tdir_count)
-		goto bad;
-
-	if (!isMapped(tif)) {
-		if (!SeekOK(tif, dir->tdir_offset))
-			goto bad;
-		if (!ReadOK(tif, cp, cc))
-			goto bad;
-	} else {
-		/* Check for overflow. */
-		if ((tsize_t)dir->tdir_offset + cc < (tsize_t)dir->tdir_offset
-		    || (tsize_t)dir->tdir_offset + cc < cc
-		    || (tsize_t)dir->tdir_offset + cc > (tsize_t)tif->tif_size)
-			goto bad;
-		_TIFFmemcpy(cp, tif->tif_base + dir->tdir_offset, cc);
-	}
-	if (tif->tif_flags & TIFF_SWAB) {
-		switch (dir->tdir_type) {
-		case TIFF_SHORT:
-		case TIFF_SSHORT:
-			TIFFSwabArrayOfShort((uint16*) cp, dir->tdir_count);
-			break;
-		case TIFF_LONG:
-		case TIFF_SLONG:
-		case TIFF_FLOAT:
-			TIFFSwabArrayOfLong((uint32*) cp, dir->tdir_count);
-			break;
-		case TIFF_RATIONAL:
-		case TIFF_SRATIONAL:
-			TIFFSwabArrayOfLong((uint32*) cp, 2*dir->tdir_count);
-			break;
-		case TIFF_DOUBLE:
-			TIFFSwabArrayOfDouble((double*) cp, dir->tdir_count);
-			break;
-		}
-	}
-	return (cc);
-bad:
-	TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-		     "Error fetching data for field \"%s\"",
-		     _TIFFFieldWithTag(tif, dir->tdir_tag)->field_name);
-	return (tsize_t) 0;
-}
-
-/*
- * Fetch an ASCII item from the file.
- */
-static tsize_t
-TIFFFetchString(TIFF* tif, TIFFDirEntry* dir, char* cp)
-{
-	if (dir->tdir_count <= 4) {
-		uint32 l = dir->tdir_offset;
-		if (tif->tif_flags & TIFF_SWAB)
-			TIFFSwabLong(&l);
-		_TIFFmemcpy(cp, &l, dir->tdir_count);
-		return (1);
-	}
-	return (TIFFFetchData(tif, dir, cp));
-}
-
-/*
- * Convert numerator+denominator to float.
- */
-static int
-cvtRational(TIFF* tif, TIFFDirEntry* dir, uint32 num, uint32 denom, float* rv)
-{
-	if (denom == 0) {
-		TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-		    "%s: Rational with zero denominator (num = %lu)",
-		    _TIFFFieldWithTag(tif, dir->tdir_tag)->field_name, num);
-		return (0);
-	} else {
-		if (dir->tdir_type == TIFF_RATIONAL)
-			*rv = ((float)num / (float)denom);
-		else
-			*rv = ((float)(int32)num / (float)(int32)denom);
-		return (1);
-	}
-}
-
-/*
- * Fetch a rational item from the file
- * at offset off and return the value
- * as a floating point number.
- */
-static float
-TIFFFetchRational(TIFF* tif, TIFFDirEntry* dir)
-{
-	uint32 l[2];
-	float v;
-
-	return (!TIFFFetchData(tif, dir, (char *)l) ||
-	    !cvtRational(tif, dir, l[0], l[1], &v) ? 1.0f : v);
-}
-
-/*
- * Fetch a single floating point value
- * from the offset field and return it
- * as a native float.
- */
-static float
-TIFFFetchFloat(TIFF* tif, TIFFDirEntry* dir)
-{
-	float v;
-	int32 l = TIFFExtractData(tif, dir->tdir_type, dir->tdir_offset);
-        _TIFFmemcpy(&v, &l, sizeof(float));
-	TIFFCvtIEEEFloatToNative(tif, 1, &v);
-	return (v);
-}
-
-/*
- * Fetch an array of BYTE or SBYTE values.
- */
-static int
-TIFFFetchByteArray(TIFF* tif, TIFFDirEntry* dir, uint8* v)
-{
-    if (dir->tdir_count <= 4) {
-        /*
-         * Extract data from offset field.
-         */
-        if (tif->tif_header.tiff_magic == TIFF_BIGENDIAN) {
-	    if (dir->tdir_type == TIFF_SBYTE)
-                switch (dir->tdir_count) {
-                    case 4: v[3] = dir->tdir_offset & 0xff;
-                    case 3: v[2] = (dir->tdir_offset >> 8) & 0xff;
-                    case 2: v[1] = (dir->tdir_offset >> 16) & 0xff;
-		    case 1: v[0] = dir->tdir_offset >> 24;
-                }
-	    else
-                switch (dir->tdir_count) {
-                    case 4: v[3] = dir->tdir_offset & 0xff;
-                    case 3: v[2] = (dir->tdir_offset >> 8) & 0xff;
-                    case 2: v[1] = (dir->tdir_offset >> 16) & 0xff;
-		    case 1: v[0] = dir->tdir_offset >> 24;
-                }
-	} else {
-	    if (dir->tdir_type == TIFF_SBYTE)
-                switch (dir->tdir_count) {
-                    case 4: v[3] = dir->tdir_offset >> 24;
-                    case 3: v[2] = (dir->tdir_offset >> 16) & 0xff;
-                    case 2: v[1] = (dir->tdir_offset >> 8) & 0xff;
-                    case 1: v[0] = dir->tdir_offset & 0xff;
-		}
-	    else
-                switch (dir->tdir_count) {
-                    case 4: v[3] = dir->tdir_offset >> 24;
-                    case 3: v[2] = (dir->tdir_offset >> 16) & 0xff;
-                    case 2: v[1] = (dir->tdir_offset >> 8) & 0xff;
-                    case 1: v[0] = dir->tdir_offset & 0xff;
-		}
-	}
-        return (1);
-    } else
-        return (TIFFFetchData(tif, dir, (char*) v) != 0);	/* XXX */
-}
-
-/*
- * Fetch an array of SHORT or SSHORT values.
- */
-static int
-TIFFFetchShortArray(TIFF* tif, TIFFDirEntry* dir, uint16* v)
-{
-	if (dir->tdir_count <= 2) {
-		if (tif->tif_header.tiff_magic == TIFF_BIGENDIAN) {
-			switch (dir->tdir_count) {
-			case 2: v[1] = (uint16) (dir->tdir_offset & 0xffff);
-			case 1: v[0] = (uint16) (dir->tdir_offset >> 16);
-			}
-		} else {
-			switch (dir->tdir_count) {
-			case 2: v[1] = (uint16) (dir->tdir_offset >> 16);
-			case 1: v[0] = (uint16) (dir->tdir_offset & 0xffff);
-			}
-		}
-		return (1);
-	} else
-		return (TIFFFetchData(tif, dir, (char *)v) != 0);
-}
-
-/*
- * Fetch a pair of SHORT or BYTE values. Some tags may have either BYTE
- * or SHORT type and this function works with both ones.
- */
-static int
-TIFFFetchShortPair(TIFF* tif, TIFFDirEntry* dir)
-{
-	switch (dir->tdir_type) {
-		case TIFF_BYTE:
-		case TIFF_SBYTE:
-			{
-			uint8 v[4];
-			return TIFFFetchByteArray(tif, dir, v)
-				&& TIFFSetField(tif, dir->tdir_tag, v[0], v[1]);
-			}
-		case TIFF_SHORT:
-		case TIFF_SSHORT:
-			{
-			uint16 v[2];
-			return TIFFFetchShortArray(tif, dir, v)
-				&& TIFFSetField(tif, dir->tdir_tag, v[0], v[1]);
-			}
-		default:
-			return 0;
-	}
-}
-
-/*
- * Fetch an array of LONG or SLONG values.
- */
-static int
-TIFFFetchLongArray(TIFF* tif, TIFFDirEntry* dir, uint32* v)
-{
-	if (dir->tdir_count == 1) {
-		v[0] = dir->tdir_offset;
-		return (1);
-	} else
-		return (TIFFFetchData(tif, dir, (char*) v) != 0);
-}
-
-/*
- * Fetch an array of RATIONAL or SRATIONAL values.
- */
-static int
-TIFFFetchRationalArray(TIFF* tif, TIFFDirEntry* dir, float* v)
-{
-	int ok = 0;
-	uint32* l;
-
-	l = (uint32*)_TIFFCheckMalloc(tif,
-	    dir->tdir_count, TIFFDataWidth((TIFFDataType) dir->tdir_type),
-	    "to fetch array of rationals");
-	if (l) {
-		if (TIFFFetchData(tif, dir, (char *)l)) {
-			uint32 i;
-			for (i = 0; i < dir->tdir_count; i++) {
-				ok = cvtRational(tif, dir,
-				    l[2*i+0], l[2*i+1], &v[i]);
-				if (!ok)
-					break;
-			}
-		}
-		_TIFFfree((char *)l);
-	}
-	return (ok);
-}
-
-/*
- * Fetch an array of FLOAT values.
- */
-static int
-TIFFFetchFloatArray(TIFF* tif, TIFFDirEntry* dir, float* v)
-{
-
-	if (dir->tdir_count == 1) {
-		v[0] = *(float*) &dir->tdir_offset;
-		TIFFCvtIEEEFloatToNative(tif, dir->tdir_count, v);
-		return (1);
-	} else	if (TIFFFetchData(tif, dir, (char*) v)) {
-		TIFFCvtIEEEFloatToNative(tif, dir->tdir_count, v);
-		return (1);
-	} else
-		return (0);
-}
-
-/*
- * Fetch an array of DOUBLE values.
- */
-static int
-TIFFFetchDoubleArray(TIFF* tif, TIFFDirEntry* dir, double* v)
-{
-	if (TIFFFetchData(tif, dir, (char*) v)) {
-		TIFFCvtIEEEDoubleToNative(tif, dir->tdir_count, v);
-		return (1);
-	} else
-		return (0);
-}
-
-/*
- * Fetch an array of ANY values.  The actual values are
- * returned as doubles which should be able hold all the
- * types.  Yes, there really should be an tany_t to avoid
- * this potential non-portability ...  Note in particular
- * that we assume that the double return value vector is
- * large enough to read in any fundamental type.  We use
- * that vector as a buffer to read in the base type vector
- * and then convert it in place to double (from end
- * to front of course).
- */
-static int
-TIFFFetchAnyArray(TIFF* tif, TIFFDirEntry* dir, double* v)
-{
-	int i;
-
-	switch (dir->tdir_type) {
-	case TIFF_BYTE:
-	case TIFF_SBYTE:
-		if (!TIFFFetchByteArray(tif, dir, (uint8*) v))
-			return (0);
-		if (dir->tdir_type == TIFF_BYTE) {
-			uint8* vp = (uint8*) v;
-			for (i = dir->tdir_count-1; i >= 0; i--)
-				v[i] = vp[i];
-		} else {
-			int8* vp = (int8*) v;
-			for (i = dir->tdir_count-1; i >= 0; i--)
-				v[i] = vp[i];
-		}
-		break;
-	case TIFF_SHORT:
-	case TIFF_SSHORT:
-		if (!TIFFFetchShortArray(tif, dir, (uint16*) v))
-			return (0);
-		if (dir->tdir_type == TIFF_SHORT) {
-			uint16* vp = (uint16*) v;
-			for (i = dir->tdir_count-1; i >= 0; i--)
-				v[i] = vp[i];
-		} else {
-			int16* vp = (int16*) v;
-			for (i = dir->tdir_count-1; i >= 0; i--)
-				v[i] = vp[i];
-		}
-		break;
-	case TIFF_LONG:
-	case TIFF_SLONG:
-		if (!TIFFFetchLongArray(tif, dir, (uint32*) v))
-			return (0);
-		if (dir->tdir_type == TIFF_LONG) {
-			uint32* vp = (uint32*) v;
-			for (i = dir->tdir_count-1; i >= 0; i--)
-				v[i] = vp[i];
-		} else {
-			int32* vp = (int32*) v;
-			for (i = dir->tdir_count-1; i >= 0; i--)
-				v[i] = vp[i];
-		}
-		break;
-	case TIFF_RATIONAL:
-	case TIFF_SRATIONAL:
-		if (!TIFFFetchRationalArray(tif, dir, (float*) v))
-			return (0);
-		{ float* vp = (float*) v;
-		  for (i = dir->tdir_count-1; i >= 0; i--)
-			v[i] = vp[i];
-		}
-		break;
-	case TIFF_FLOAT:
-		if (!TIFFFetchFloatArray(tif, dir, (float*) v))
-			return (0);
-		{ float* vp = (float*) v;
-		  for (i = dir->tdir_count-1; i >= 0; i--)
-			v[i] = vp[i];
-		}
-		break;
-	case TIFF_DOUBLE:
-		return (TIFFFetchDoubleArray(tif, dir, (double*) v));
-	default:
-		/* TIFF_NOTYPE */
-		/* TIFF_ASCII */
-		/* TIFF_UNDEFINED */
-		TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-			     "cannot read TIFF_ANY type %d for field \"%s\"",
-			     dir->tdir_type,
-			     _TIFFFieldWithTag(tif, dir->tdir_tag)->field_name);
-		return (0);
-	}
-	return (1);
-}
-
-/*
- * Fetch a tag that is not handled by special case code.
- */
-static int
-TIFFFetchNormalTag(TIFF* tif, TIFFDirEntry* dp)
-{
-	static const char mesg[] = "to fetch tag value";
-	int ok = 0;
-	const TIFFFieldInfo* fip = _TIFFFieldWithTag(tif, dp->tdir_tag);
-
-	if (dp->tdir_count > 1) {		/* array of values */
-		char* cp = NULL;
-
-		switch (dp->tdir_type) {
-		case TIFF_BYTE:
-		case TIFF_SBYTE:
-			cp = (char *)_TIFFCheckMalloc(tif,
-			    dp->tdir_count, sizeof (uint8), mesg);
-			ok = cp && TIFFFetchByteArray(tif, dp, (uint8*) cp);
-			break;
-		case TIFF_SHORT:
-		case TIFF_SSHORT:
-			cp = (char *)_TIFFCheckMalloc(tif,
-			    dp->tdir_count, sizeof (uint16), mesg);
-			ok = cp && TIFFFetchShortArray(tif, dp, (uint16*) cp);
-			break;
-		case TIFF_LONG:
-		case TIFF_SLONG:
-			cp = (char *)_TIFFCheckMalloc(tif,
-			    dp->tdir_count, sizeof (uint32), mesg);
-			ok = cp && TIFFFetchLongArray(tif, dp, (uint32*) cp);
-			break;
-		case TIFF_RATIONAL:
-		case TIFF_SRATIONAL:
-			cp = (char *)_TIFFCheckMalloc(tif,
-			    dp->tdir_count, sizeof (float), mesg);
-			ok = cp && TIFFFetchRationalArray(tif, dp, (float*) cp);
-			break;
-		case TIFF_FLOAT:
-			cp = (char *)_TIFFCheckMalloc(tif,
-			    dp->tdir_count, sizeof (float), mesg);
-			ok = cp && TIFFFetchFloatArray(tif, dp, (float*) cp);
-			break;
-		case TIFF_DOUBLE:
-			cp = (char *)_TIFFCheckMalloc(tif,
-			    dp->tdir_count, sizeof (double), mesg);
-			ok = cp && TIFFFetchDoubleArray(tif, dp, (double*) cp);
-			break;
-		case TIFF_ASCII:
-		case TIFF_UNDEFINED:		/* bit of a cheat... */
-			/*
-			 * Some vendors write strings w/o the trailing
-			 * NULL byte, so always append one just in case.
-			 */
-			cp = (char *)_TIFFCheckMalloc(tif, dp->tdir_count + 1,
-						      1, mesg);
-			if( (ok = (cp && TIFFFetchString(tif, dp, cp))) != 0 )
-				cp[dp->tdir_count] = '\0';	/* XXX */
-			break;
-		}
-		if (ok) {
-			ok = (fip->field_passcount ?
-			    TIFFSetField(tif, dp->tdir_tag, dp->tdir_count, cp)
-			  : TIFFSetField(tif, dp->tdir_tag, cp));
-		}
-		if (cp != NULL)
-			_TIFFfree(cp);
-	} else if (CheckDirCount(tif, dp, 1)) {	/* singleton value */
-		switch (dp->tdir_type) {
-		case TIFF_BYTE:
-		case TIFF_SBYTE:
-		case TIFF_SHORT:
-		case TIFF_SSHORT:
-			/*
-			 * If the tag is also acceptable as a LONG or SLONG
-			 * then TIFFSetField will expect an uint32 parameter
-			 * passed to it (through varargs).  Thus, for machines
-			 * where sizeof (int) != sizeof (uint32) we must do
-			 * a careful check here.  It's hard to say if this
-			 * is worth optimizing.
-			 *
-			 * NB: We use TIFFFieldWithTag here knowing that
-			 *     it returns us the first entry in the table
-			 *     for the tag and that that entry is for the
-			 *     widest potential data type the tag may have.
-			 */
-			{ TIFFDataType type = fip->field_type;
-			  if (type != TIFF_LONG && type != TIFF_SLONG) {
-				uint16 v = (uint16)
-			   TIFFExtractData(tif, dp->tdir_type, dp->tdir_offset);
-				ok = (fip->field_passcount ?
-				    TIFFSetField(tif, dp->tdir_tag, 1, &v)
-				  : TIFFSetField(tif, dp->tdir_tag, v));
-				break;
-			  }
-			}
-			/* fall thru... */
-		case TIFF_LONG:
-		case TIFF_SLONG:
-			{ uint32 v32 =
-		    TIFFExtractData(tif, dp->tdir_type, dp->tdir_offset);
-			  ok = (fip->field_passcount ? 
-			      TIFFSetField(tif, dp->tdir_tag, 1, &v32)
-			    : TIFFSetField(tif, dp->tdir_tag, v32));
-			}
-			break;
-		case TIFF_RATIONAL:
-		case TIFF_SRATIONAL:
-		case TIFF_FLOAT:
-			{ float v = (dp->tdir_type == TIFF_FLOAT ? 
-			      TIFFFetchFloat(tif, dp)
-			    : TIFFFetchRational(tif, dp));
-			  ok = (fip->field_passcount ?
-			      TIFFSetField(tif, dp->tdir_tag, 1, &v)
-			    : TIFFSetField(tif, dp->tdir_tag, v));
-			}
-			break;
-		case TIFF_DOUBLE:
-			{ double v;
-			  ok = (TIFFFetchDoubleArray(tif, dp, &v) &&
-			    (fip->field_passcount ?
-			      TIFFSetField(tif, dp->tdir_tag, 1, &v)
-			    : TIFFSetField(tif, dp->tdir_tag, v))
-			  );
-			}
-			break;
-		case TIFF_ASCII:
-		case TIFF_UNDEFINED:		/* bit of a cheat... */
-			{ char c[2];
-			  if( (ok = (TIFFFetchString(tif, dp, c) != 0)) != 0 ) {
-				c[1] = '\0';		/* XXX paranoid */
-				ok = (fip->field_passcount ?
-					TIFFSetField(tif, dp->tdir_tag, 1, c)
-				      : TIFFSetField(tif, dp->tdir_tag, c));
-			  }
-			}
-			break;
-		}
-	}
-	return (ok);
-}
-
-#define	NITEMS(x)	(sizeof (x) / sizeof (x[0]))
-/*
- * Fetch samples/pixel short values for 
- * the specified tag and verify that
- * all values are the same.
- */
-static int
-TIFFFetchPerSampleShorts(TIFF* tif, TIFFDirEntry* dir, uint16* pl)
-{
-    uint16 samples = tif->tif_dir.td_samplesperpixel;
-    int status = 0;
-
-    if (CheckDirCount(tif, dir, (uint32) samples)) {
-        uint16 buf[10];
-        uint16* v = buf;
-
-        if (dir->tdir_count > NITEMS(buf))
-            v = (uint16*) _TIFFCheckMalloc(tif, dir->tdir_count, sizeof(uint16),
-                                      "to fetch per-sample values");
-        if (v && TIFFFetchShortArray(tif, dir, v)) {
-            uint16 i;
-            int check_count = dir->tdir_count;
-            if( samples < check_count )
-                check_count = samples;
-
-            for (i = 1; i < check_count; i++)
-                if (v[i] != v[0]) {
-					TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-                              "Cannot handle different per-sample values for field \"%s\"",
-                              _TIFFFieldWithTag(tif, dir->tdir_tag)->field_name);
-                    goto bad;
-                }
-            *pl = v[0];
-            status = 1;
-        }
-      bad:
-        if (v && v != buf)
-            _TIFFfree(v);
-    }
-    return (status);
-}
-
-/*
- * Fetch samples/pixel long values for 
- * the specified tag and verify that
- * all values are the same.
- */
-static int
-TIFFFetchPerSampleLongs(TIFF* tif, TIFFDirEntry* dir, uint32* pl)
-{
-    uint16 samples = tif->tif_dir.td_samplesperpixel;
-    int status = 0;
-
-    if (CheckDirCount(tif, dir, (uint32) samples)) {
-        uint32 buf[10];
-        uint32* v = buf;
-
-        if (dir->tdir_count > NITEMS(buf))
-            v = (uint32*) _TIFFCheckMalloc(tif, dir->tdir_count, sizeof(uint32),
-                                      "to fetch per-sample values");
-        if (v && TIFFFetchLongArray(tif, dir, v)) {
-            uint16 i;
-            int check_count = dir->tdir_count;
-
-            if( samples < check_count )
-                check_count = samples;
-            for (i = 1; i < check_count; i++)
-                if (v[i] != v[0]) {
-					TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-                              "Cannot handle different per-sample values for field \"%s\"",
-                              _TIFFFieldWithTag(tif, dir->tdir_tag)->field_name);
-                    goto bad;
-                }
-            *pl = v[0];
-            status = 1;
-        }
-      bad:
-        if (v && v != buf)
-            _TIFFfree(v);
-    }
-    return (status);
-}
-
-/*
- * Fetch samples/pixel ANY values for the specified tag and verify that all
- * values are the same.
- */
-static int
-TIFFFetchPerSampleAnys(TIFF* tif, TIFFDirEntry* dir, double* pl)
-{
-    uint16 samples = tif->tif_dir.td_samplesperpixel;
-    int status = 0;
-
-    if (CheckDirCount(tif, dir, (uint32) samples)) {
-        double buf[10];
-        double* v = buf;
-
-        if (dir->tdir_count > NITEMS(buf))
-            v = (double*) _TIFFCheckMalloc(tif, dir->tdir_count, sizeof (double),
-                                      "to fetch per-sample values");
-        if (v && TIFFFetchAnyArray(tif, dir, v)) {
-            uint16 i;
-            int check_count = dir->tdir_count;
-            if( samples < check_count )
-                check_count = samples;
-
-            for (i = 1; i < check_count; i++)
-                if (v[i] != v[0]) {
-                    TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-                              "Cannot handle different per-sample values for field \"%s\"",
-                              _TIFFFieldWithTag(tif, dir->tdir_tag)->field_name);
-                    goto bad;
-                }
-            *pl = v[0];
-            status = 1;
-        }
-      bad:
-        if (v && v != buf)
-            _TIFFfree(v);
-    }
-    return (status);
-}
-#undef NITEMS
-
-/*
- * Fetch a set of offsets or lengths.
- * While this routine says "strips", in fact it's also used for tiles.
- */
-static int
-TIFFFetchStripThing(TIFF* tif, TIFFDirEntry* dir, long nstrips, uint32** lpp)
-{
-	register uint32* lp;
-	int status;
-
-        CheckDirCount(tif, dir, (uint32) nstrips);
-
-	/*
-	 * Allocate space for strip information.
-	 */
-	if (*lpp == NULL &&
-	    (*lpp = (uint32 *)_TIFFCheckMalloc(tif,
-	      nstrips, sizeof (uint32), "for strip array")) == NULL)
-		return (0);
-	lp = *lpp;
-        _TIFFmemset( lp, 0, sizeof(uint32) * nstrips );
-
-	if (dir->tdir_type == (int)TIFF_SHORT) {
-		/*
-		 * Handle uint16->uint32 expansion.
-		 */
-		uint16* dp = (uint16*) _TIFFCheckMalloc(tif,
-		    dir->tdir_count, sizeof (uint16), "to fetch strip tag");
-		if (dp == NULL)
-			return (0);
-		if( (status = TIFFFetchShortArray(tif, dir, dp)) != 0 ) {
-                    int i;
-                    
-                    for( i = 0; i < nstrips && i < (int) dir->tdir_count; i++ )
-                    {
-                        lp[i] = dp[i];
-                    }
-		}
-		_TIFFfree((char*) dp);
-
-        } else if( nstrips != (int) dir->tdir_count ) {
-            /* Special case to correct length */
-
-            uint32* dp = (uint32*) _TIFFCheckMalloc(tif,
-		    dir->tdir_count, sizeof (uint32), "to fetch strip tag");
-            if (dp == NULL)
-                return (0);
-
-            status = TIFFFetchLongArray(tif, dir, dp);
-            if( status != 0 ) {
-                int i;
-
-                for( i = 0; i < nstrips && i < (int) dir->tdir_count; i++ )
-                {
-                    lp[i] = dp[i];
-                }
-            }
-
-            _TIFFfree( (char *) dp );
-	} else
-            status = TIFFFetchLongArray(tif, dir, lp);
-        
-	return (status);
-}
-
-/*
- * Fetch and set the RefBlackWhite tag.
- */
-static int
-TIFFFetchRefBlackWhite(TIFF* tif, TIFFDirEntry* dir)
-{
-	static const char mesg[] = "for \"ReferenceBlackWhite\" array";
-	char* cp;
-	int ok;
-
-	if (dir->tdir_type == TIFF_RATIONAL)
-		return (TIFFFetchNormalTag(tif, dir));
-	/*
-	 * Handle LONG's for backward compatibility.
-	 */
-	cp = (char *)_TIFFCheckMalloc(tif, dir->tdir_count,
-				      sizeof (uint32), mesg);
-	if( (ok = (cp && TIFFFetchLongArray(tif, dir, (uint32*) cp))) != 0) {
-		float* fp = (float*)
-		    _TIFFCheckMalloc(tif, dir->tdir_count, sizeof (float), mesg);
-		if( (ok = (fp != NULL)) != 0 ) {
-			uint32 i;
-			for (i = 0; i < dir->tdir_count; i++)
-				fp[i] = (float)((uint32*) cp)[i];
-			ok = TIFFSetField(tif, dir->tdir_tag, fp);
-			_TIFFfree((char*) fp);
-		}
-	}
-	if (cp)
-		_TIFFfree(cp);
-	return (ok);
-}
-
-/*
- * Replace a single strip (tile) of uncompressed data by
- * multiple strips (tiles), each approximately 8Kbytes.
- * This is useful for dealing with large images or
- * for dealing with machines with a limited amount
- * memory.
- */
-static void
-ChopUpSingleUncompressedStrip(TIFF* tif)
-{
-	register TIFFDirectory *td = &tif->tif_dir;
-	uint32 bytecount = td->td_stripbytecount[0];
-	uint32 offset = td->td_stripoffset[0];
-	tsize_t rowbytes = TIFFVTileSize(tif, 1), stripbytes;
-	tstrip_t strip, nstrips, rowsperstrip;
-	uint32* newcounts;
-	uint32* newoffsets;
-
-	/*
-	 * Make the rows hold at least one scanline, but fill specified amount
-	 * of data if possible.
-	 */
-	if (rowbytes > STRIP_SIZE_DEFAULT) {
-		stripbytes = rowbytes;
-		rowsperstrip = 1;
-	} else if (rowbytes > 0 ) {
-		rowsperstrip = STRIP_SIZE_DEFAULT / rowbytes;
-		stripbytes = rowbytes * rowsperstrip;
-	}
-        else
-            return;
-
-	/* 
-	 * never increase the number of strips in an image
-	 */
-	if (rowsperstrip >= td->td_rowsperstrip)
-		return;
-	nstrips = (tstrip_t) TIFFhowmany(bytecount, stripbytes);
-        if( nstrips == 0 ) /* something is wonky, do nothing. */
-            return;
-
-	newcounts = (uint32*) _TIFFCheckMalloc(tif, nstrips, sizeof (uint32),
-				"for chopped \"StripByteCounts\" array");
-	newoffsets = (uint32*) _TIFFCheckMalloc(tif, nstrips, sizeof (uint32),
-				"for chopped \"StripOffsets\" array");
-	if (newcounts == NULL || newoffsets == NULL) {
-	        /*
-		 * Unable to allocate new strip information, give
-		 * up and use the original one strip information.
-		 */
-		if (newcounts != NULL)
-			_TIFFfree(newcounts);
-		if (newoffsets != NULL)
-			_TIFFfree(newoffsets);
-		return;
-	}
-	/*
-	 * Fill the strip information arrays with new bytecounts and offsets
-	 * that reflect the broken-up format.
-	 */
-	for (strip = 0; strip < nstrips; strip++) {
-		if (stripbytes > (tsize_t) bytecount)
-			stripbytes = bytecount;
-		newcounts[strip] = stripbytes;
-		newoffsets[strip] = offset;
-		offset += stripbytes;
-		bytecount -= stripbytes;
-	}
-	/*
-	 * Replace old single strip info with multi-strip info.
-	 */
-	td->td_stripsperimage = td->td_nstrips = nstrips;
-	TIFFSetField(tif, TIFFTAG_ROWSPERSTRIP, rowsperstrip);
-
-	_TIFFfree(td->td_stripbytecount);
-	_TIFFfree(td->td_stripoffset);
-	td->td_stripbytecount = newcounts;
-	td->td_stripoffset = newoffsets;
-	td->td_stripbytecountsorted = 1;
-}
-
-/* vim: set ts=8 sts=8 sw=8 noet: */
diff --git a/src/tiff/tif_dirwrite.c b/src/tiff/tif_dirwrite.c
deleted file mode 100644
index 928a862..0000000
--- a/src/tiff/tif_dirwrite.c
+++ /dev/null
@@ -1,1243 +0,0 @@
-/* $Id: tif_dirwrite.c 4825 2006-08-16 13:01:53Z lubia $ */
-
-/*
- * Copyright (c) 1988-1997 Sam Leffler
- * Copyright (c) 1991-1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and 
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- * 
- * 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 SAM LEFFLER OR SILICON GRAPHICS 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.
- */
-
-/*
- * TIFF Library.
- *
- * Directory Write Support Routines.
- */
-#include "tiffiop.h"
-
-#ifdef HAVE_IEEEFP
-# define	TIFFCvtNativeToIEEEFloat(tif, n, fp)
-# define	TIFFCvtNativeToIEEEDouble(tif, n, dp)
-#else
-extern	void TIFFCvtNativeToIEEEFloat(TIFF*, uint32, float*);
-extern	void TIFFCvtNativeToIEEEDouble(TIFF*, uint32, double*);
-#endif
-
-static	int TIFFWriteNormalTag(TIFF*, TIFFDirEntry*, const TIFFFieldInfo*);
-static	void TIFFSetupShortLong(TIFF*, ttag_t, TIFFDirEntry*, uint32);
-static	void TIFFSetupShort(TIFF*, ttag_t, TIFFDirEntry*, uint16);
-static	int TIFFSetupShortPair(TIFF*, ttag_t, TIFFDirEntry*);
-static	int TIFFWritePerSampleShorts(TIFF*, ttag_t, TIFFDirEntry*);
-static	int TIFFWritePerSampleAnys(TIFF*, TIFFDataType, ttag_t, TIFFDirEntry*);
-static	int TIFFWriteShortTable(TIFF*, ttag_t, TIFFDirEntry*, uint32, uint16**);
-static	int TIFFWriteShortArray(TIFF*, TIFFDirEntry*, uint16*);
-static	int TIFFWriteLongArray(TIFF *, TIFFDirEntry*, uint32*);
-static	int TIFFWriteRationalArray(TIFF *, TIFFDirEntry*, float*);
-static	int TIFFWriteFloatArray(TIFF *, TIFFDirEntry*, float*);
-static	int TIFFWriteDoubleArray(TIFF *, TIFFDirEntry*, double*);
-static	int TIFFWriteByteArray(TIFF*, TIFFDirEntry*, char*);
-static	int TIFFWriteAnyArray(TIFF*,
-	    TIFFDataType, ttag_t, TIFFDirEntry*, uint32, double*);
-static	int TIFFWriteTransferFunction(TIFF*, TIFFDirEntry*);
-static	int TIFFWriteInkNames(TIFF*, TIFFDirEntry*);
-static	int TIFFWriteData(TIFF*, TIFFDirEntry*, char*);
-static	int TIFFLinkDirectory(TIFF*);
-
-#define	WriteRationalPair(type, tag1, v1, tag2, v2) {		\
-	TIFFWriteRational((tif), (type), (tag1), (dir), (v1))	\
-	TIFFWriteRational((tif), (type), (tag2), (dir)+1, (v2))	\
-	(dir)++;						\
-}
-#define	TIFFWriteRational(tif, type, tag, dir, v)		\
-	(dir)->tdir_tag = (tag);				\
-	(dir)->tdir_type = (type);				\
-	(dir)->tdir_count = 1;					\
-	if (!TIFFWriteRationalArray((tif), (dir), &(v)))	\
-		goto bad;
-
-/*
- * Write the contents of the current directory
- * to the specified file.  This routine doesn't
- * handle overwriting a directory with auxiliary
- * storage that's been changed.
- */
-static int
-_TIFFWriteDirectory(TIFF* tif, int done)
-{
-	uint16 dircount;
-	toff_t diroff;
-	ttag_t tag;
-	uint32 nfields;
-	tsize_t dirsize;
-	char* data;
-	TIFFDirEntry* dir;
-	TIFFDirectory* td;
-	unsigned long b, fields[FIELD_SETLONGS];
-	int fi, nfi;
-
-	if (tif->tif_mode == O_RDONLY)
-		return (1);
-	/*
-	 * Clear write state so that subsequent images with
-	 * different characteristics get the right buffers
-	 * setup for them.
-	 */
-	if (done)
-	{
-	    if (tif->tif_flags & TIFF_POSTENCODE) {
-		    tif->tif_flags &= ~TIFF_POSTENCODE;
-		    if (!(*tif->tif_postencode)(tif)) {
-				TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-				"Error post-encoding before directory write");
-			    return (0);
-		    }
-	    }
-	    (*tif->tif_close)(tif);		/* shutdown encoder */
-	    /*
-	     * Flush any data that might have been written
-	     * by the compression close+cleanup routines.
-	     */
-	    if (tif->tif_rawcc > 0 && !TIFFFlushData1(tif)) {
-			TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-			"Error flushing data before directory write");
-		    return (0);
-	    }
-	    if ((tif->tif_flags & TIFF_MYBUFFER) && tif->tif_rawdata) {
-		    _TIFFfree(tif->tif_rawdata);
-		    tif->tif_rawdata = NULL;
-		    tif->tif_rawcc = 0;
-		    tif->tif_rawdatasize = 0;
-	    }
-	    tif->tif_flags &= ~(TIFF_BEENWRITING|TIFF_BUFFERSETUP);
-	}
-
-	td = &tif->tif_dir;
-	/*
-	 * Size the directory so that we can calculate
-	 * offsets for the data items that aren't kept
-	 * in-place in each field.
-	 */
-	nfields = 0;
-	for (b = 0; b <= FIELD_LAST; b++)
-		if (TIFFFieldSet(tif, b) && b != FIELD_CUSTOM)
-			nfields += (b < FIELD_SUBFILETYPE ? 2 : 1);
-        nfields += td->td_customValueCount;
-	dirsize = nfields * sizeof (TIFFDirEntry);
-	data = (char*) _TIFFmalloc(dirsize);
-	if (data == NULL) {
-		TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-		    "Cannot write directory, out of space");
-		return (0);
-	}
-	/*
-	 * Directory hasn't been placed yet, put
-	 * it at the end of the file and link it
-	 * into the existing directory structure.
-	 */
-	if (tif->tif_diroff == 0 && !TIFFLinkDirectory(tif))
-		goto bad;
-	tif->tif_dataoff = (toff_t)(
-	    tif->tif_diroff + sizeof (uint16) + dirsize + sizeof (toff_t));
-	if (tif->tif_dataoff & 1)
-		tif->tif_dataoff++;
-	(void) TIFFSeekFile(tif, tif->tif_dataoff, SEEK_SET);
-	tif->tif_curdir++;
-	dir = (TIFFDirEntry*) data;
-	/*
-	 * Setup external form of directory
-	 * entries and write data items.
-	 */
-	_TIFFmemcpy(fields, td->td_fieldsset, sizeof (fields));
-	/*
-	 * Write out ExtraSamples tag only if
-	 * extra samples are present in the data.
-	 */
-	if (FieldSet(fields, FIELD_EXTRASAMPLES) && !td->td_extrasamples) {
-		ResetFieldBit(fields, FIELD_EXTRASAMPLES);
-		nfields--;
-		dirsize -= sizeof (TIFFDirEntry);
-	}								/*XXX*/
-	for (fi = 0, nfi = tif->tif_nfields; nfi > 0; nfi--, fi++) {
-		const TIFFFieldInfo* fip = tif->tif_fieldinfo[fi];
-
-                /*
-                ** For custom fields, we test to see if the custom field
-                ** is set or not.  For normal fields, we just use the
-                ** FieldSet test. 
-                */
-                if( fip->field_bit == FIELD_CUSTOM )
-                {
-                    int ci, is_set = FALSE;
-
-                    for( ci = 0; ci < td->td_customValueCount; ci++ )
-                        is_set |= (td->td_customValues[ci].info == fip);
-
-                    if( !is_set )
-                        continue;
-                }
-		else if (!FieldSet(fields, fip->field_bit))
-                    continue;
-
-
-                /*
-                ** Handle other fields.
-                */
-		switch (fip->field_bit)
-                {
-		case FIELD_STRIPOFFSETS:
-			/*
-			 * We use one field bit for both strip and tile
-
-			 * offsets, and so must be careful in selecting
-			 * the appropriate field descriptor (so that tags
-			 * are written in sorted order).
-			 */
-			tag = isTiled(tif) ?
-			    TIFFTAG_TILEOFFSETS : TIFFTAG_STRIPOFFSETS;
-			if (tag != fip->field_tag)
-				continue;
-			
-			dir->tdir_tag = (uint16) tag;
-			dir->tdir_type = (uint16) TIFF_LONG;
-			dir->tdir_count = (uint32) td->td_nstrips;
-			if (!TIFFWriteLongArray(tif, dir, td->td_stripoffset))
-				goto bad;
-			break;
-		case FIELD_STRIPBYTECOUNTS:
-			/*
-			 * We use one field bit for both strip and tile
-			 * byte counts, and so must be careful in selecting
-			 * the appropriate field descriptor (so that tags
-			 * are written in sorted order).
-			 */
-			tag = isTiled(tif) ?
-			    TIFFTAG_TILEBYTECOUNTS : TIFFTAG_STRIPBYTECOUNTS;
-			if (tag != fip->field_tag)
-				continue;
-			
-			dir->tdir_tag = (uint16) tag;
-			dir->tdir_type = (uint16) TIFF_LONG;
-			dir->tdir_count = (uint32) td->td_nstrips;
-			if (!TIFFWriteLongArray(tif, dir,
-						td->td_stripbytecount))
-				goto bad;
-			break;
-		case FIELD_ROWSPERSTRIP:
-			TIFFSetupShortLong(tif, TIFFTAG_ROWSPERSTRIP,
-			    dir, td->td_rowsperstrip);
-			break;
-		case FIELD_COLORMAP:
-			if (!TIFFWriteShortTable(tif, TIFFTAG_COLORMAP, dir,
-			    3, td->td_colormap))
-				goto bad;
-			break;
-		case FIELD_IMAGEDIMENSIONS:
-			TIFFSetupShortLong(tif, TIFFTAG_IMAGEWIDTH,
-			    dir++, td->td_imagewidth);
-			TIFFSetupShortLong(tif, TIFFTAG_IMAGELENGTH,
-			    dir, td->td_imagelength);
-			break;
-		case FIELD_TILEDIMENSIONS:
-			TIFFSetupShortLong(tif, TIFFTAG_TILEWIDTH,
-			    dir++, td->td_tilewidth);
-			TIFFSetupShortLong(tif, TIFFTAG_TILELENGTH,
-			    dir, td->td_tilelength);
-			break;
-		case FIELD_COMPRESSION:
-			TIFFSetupShort(tif, TIFFTAG_COMPRESSION,
-			    dir, td->td_compression);
-			break;
-		case FIELD_PHOTOMETRIC:
-			TIFFSetupShort(tif, TIFFTAG_PHOTOMETRIC,
-			    dir, td->td_photometric);
-			break;
-		case FIELD_POSITION:
-			WriteRationalPair(TIFF_RATIONAL,
-			    TIFFTAG_XPOSITION, td->td_xposition,
-			    TIFFTAG_YPOSITION, td->td_yposition);
-			break;
-		case FIELD_RESOLUTION:
-			WriteRationalPair(TIFF_RATIONAL,
-			    TIFFTAG_XRESOLUTION, td->td_xresolution,
-			    TIFFTAG_YRESOLUTION, td->td_yresolution);
-			break;
-		case FIELD_BITSPERSAMPLE:
-		case FIELD_MINSAMPLEVALUE:
-		case FIELD_MAXSAMPLEVALUE:
-		case FIELD_SAMPLEFORMAT:
-			if (!TIFFWritePerSampleShorts(tif, fip->field_tag, dir))
-				goto bad;
-			break;
-		case FIELD_SMINSAMPLEVALUE:
-		case FIELD_SMAXSAMPLEVALUE:
-			if (!TIFFWritePerSampleAnys(tif,
-			    _TIFFSampleToTagType(tif), fip->field_tag, dir))
-				goto bad;
-			break;
-		case FIELD_PAGENUMBER:
-		case FIELD_HALFTONEHINTS:
-		case FIELD_YCBCRSUBSAMPLING:
-			if (!TIFFSetupShortPair(tif, fip->field_tag, dir))
-				goto bad;
-			break;
-		case FIELD_INKNAMES:
-			if (!TIFFWriteInkNames(tif, dir))
-				goto bad;
-			break;
-		case FIELD_TRANSFERFUNCTION:
-			if (!TIFFWriteTransferFunction(tif, dir))
-				goto bad;
-			break;
-		case FIELD_SUBIFD:
-			/*
-			 * XXX: Always write this field using LONG type
-			 * for backward compatibility.
-			 */
-			dir->tdir_tag = (uint16) fip->field_tag;
-			dir->tdir_type = (uint16) TIFF_LONG;
-			dir->tdir_count = (uint32) td->td_nsubifd;
-			if (!TIFFWriteLongArray(tif, dir, td->td_subifd))
-				goto bad;
-			/*
-			 * Total hack: if this directory includes a SubIFD
-			 * tag then force the next <n> directories to be
-			 * written as ``sub directories'' of this one.  This
-			 * is used to write things like thumbnails and
-			 * image masks that one wants to keep out of the
-			 * normal directory linkage access mechanism.
-			 */
-			if (dir->tdir_count > 0) {
-				tif->tif_flags |= TIFF_INSUBIFD;
-				tif->tif_nsubifd = (uint16) dir->tdir_count;
-				if (dir->tdir_count > 1)
-					tif->tif_subifdoff = dir->tdir_offset;
-				else
-					tif->tif_subifdoff = (uint32)(
-					      tif->tif_diroff
-					    + sizeof (uint16)
-					    + ((char*)&dir->tdir_offset-data));
-			}
-			break;
-		default:
-			/* XXX: Should be fixed and removed. */
-			if (fip->field_tag == TIFFTAG_DOTRANGE) {
-				if (!TIFFSetupShortPair(tif, fip->field_tag, dir))
-					goto bad;
-			}
-			else if (!TIFFWriteNormalTag(tif, dir, fip))
-				goto bad;
-			break;
-		}
-		dir++;
-                
-                if( fip->field_bit != FIELD_CUSTOM )
-                    ResetFieldBit(fields, fip->field_bit);
-	}
-
-	/*
-	 * Write directory.
-	 */
-	dircount = (uint16) nfields;
-	diroff = (uint32) tif->tif_nextdiroff;
-	if (tif->tif_flags & TIFF_SWAB) {
-		/*
-		 * The file's byte order is opposite to the
-		 * native machine architecture.  We overwrite
-		 * the directory information with impunity
-		 * because it'll be released below after we
-		 * write it to the file.  Note that all the
-		 * other tag construction routines assume that
-		 * we do this byte-swapping; i.e. they only
-		 * byte-swap indirect data.
-		 */
-		for (dir = (TIFFDirEntry*) data; dircount; dir++, dircount--) {
-			TIFFSwabArrayOfShort(&dir->tdir_tag, 2);
-			TIFFSwabArrayOfLong(&dir->tdir_count, 2);
-		}
-		dircount = (uint16) nfields;
-		TIFFSwabShort(&dircount);
-		TIFFSwabLong(&diroff);
-	}
-	(void) TIFFSeekFile(tif, tif->tif_diroff, SEEK_SET);
-	if (!WriteOK(tif, &dircount, sizeof (dircount))) {
-		TIFFErrorExt(tif->tif_clientdata, tif->tif_name, "Error writing directory count");
-		goto bad;
-	}
-	if (!WriteOK(tif, data, dirsize)) {
-		TIFFErrorExt(tif->tif_clientdata, tif->tif_name, "Error writing directory contents");
-		goto bad;
-	}
-	if (!WriteOK(tif, &diroff, sizeof (diroff))) {
-		TIFFErrorExt(tif->tif_clientdata, tif->tif_name, "Error writing directory link");
-		goto bad;
-	}
-	if (done) {
-		TIFFFreeDirectory(tif);
-		tif->tif_flags &= ~TIFF_DIRTYDIRECT;
-		(*tif->tif_cleanup)(tif);
-
-		/*
-		* Reset directory-related state for subsequent
-		* directories.
-		*/
-		TIFFCreateDirectory(tif);
-	}
-	_TIFFfree(data);
-	return (1);
-bad:
-	_TIFFfree(data);
-	return (0);
-}
-#undef WriteRationalPair
-
-int
-TIFFWriteDirectory(TIFF* tif)
-{
-	return _TIFFWriteDirectory(tif, TRUE);
-}
-
-/*
- * Similar to TIFFWriteDirectory(), writes the directory out
- * but leaves all data structures in memory so that it can be
- * written again.  This will make a partially written TIFF file
- * readable before it is successfully completed/closed.
- */ 
-int
-TIFFCheckpointDirectory(TIFF* tif)
-{
-	int rc;
-	/* Setup the strips arrays, if they haven't already been. */
-	if (tif->tif_dir.td_stripoffset == NULL)
-	    (void) TIFFSetupStrips(tif);
-	rc = _TIFFWriteDirectory(tif, FALSE);
-	(void) TIFFSetWriteOffset(tif, TIFFSeekFile(tif, 0, SEEK_END));
-	return rc;
-}
-
-/*
- * Process tags that are not special cased.
- */
-static int
-TIFFWriteNormalTag(TIFF* tif, TIFFDirEntry* dir, const TIFFFieldInfo* fip)
-{
-	uint16 wc = (uint16) fip->field_writecount;
-	uint32 wc2;
-
-	dir->tdir_tag = (uint16) fip->field_tag;
-	dir->tdir_type = (uint16) fip->field_type;
-	dir->tdir_count = wc;
-	
-	switch (fip->field_type) {
-	case TIFF_SHORT:
-	case TIFF_SSHORT:
-		if (fip->field_passcount) {
-			uint16* wp;
-			if (wc == (uint16) TIFF_VARIABLE2) {
-				TIFFGetField(tif, fip->field_tag, &wc2, &wp);
-				dir->tdir_count = wc2;
-			} else {	/* Assume TIFF_VARIABLE */
-				TIFFGetField(tif, fip->field_tag, &wc, &wp);
-				dir->tdir_count = wc;
-			}
-			if (!TIFFWriteShortArray(tif, dir, wp))
-				return 0;
-		} else {
-			if (wc == 1) {
-				uint16 sv;
-				TIFFGetField(tif, fip->field_tag, &sv);
-				dir->tdir_offset =
-					TIFFInsertData(tif, dir->tdir_type, sv);
-			} else {
-				uint16* wp;
-				TIFFGetField(tif, fip->field_tag, &wp);
-				if (!TIFFWriteShortArray(tif, dir, wp))
-					return 0;
-			}
-		}
-		break;
-	case TIFF_LONG:
-	case TIFF_SLONG:
-	case TIFF_IFD:
-		if (fip->field_passcount) {
-			uint32* lp;
-			if (wc == (uint16) TIFF_VARIABLE2) {
-				TIFFGetField(tif, fip->field_tag, &wc2, &lp);
-				dir->tdir_count = wc2;
-			} else {	/* Assume TIFF_VARIABLE */
-				TIFFGetField(tif, fip->field_tag, &wc, &lp);
-				dir->tdir_count = wc;
-			}
-			if (!TIFFWriteLongArray(tif, dir, lp))
-				return 0;
-		} else {
-			if (wc == 1) {
-				/* XXX handle LONG->SHORT conversion */
-				TIFFGetField(tif, fip->field_tag,
-					     &dir->tdir_offset);
-			} else {
-				uint32* lp;
-				TIFFGetField(tif, fip->field_tag, &lp);
-				if (!TIFFWriteLongArray(tif, dir, lp))
-					return 0;
-			}
-		}
-		break;
-	case TIFF_RATIONAL:
-	case TIFF_SRATIONAL:
-		if (fip->field_passcount) {
-			float* fp;
-			if (wc == (uint16) TIFF_VARIABLE2) {
-				TIFFGetField(tif, fip->field_tag, &wc2, &fp);
-				dir->tdir_count = wc2;
-			} else {	/* Assume TIFF_VARIABLE */
-				TIFFGetField(tif, fip->field_tag, &wc, &fp);
-				dir->tdir_count = wc;
-			}
-			if (!TIFFWriteRationalArray(tif, dir, fp))
-				return 0;
-		} else {
-			if (wc == 1) {
-				float fv;
-				TIFFGetField(tif, fip->field_tag, &fv);
-				if (!TIFFWriteRationalArray(tif, dir, &fv))
-					return 0;
-			} else {
-				float* fp;
-				TIFFGetField(tif, fip->field_tag, &fp);
-				if (!TIFFWriteRationalArray(tif, dir, fp))
-					return 0;
-			}
-		}
-		break;
-	case TIFF_FLOAT:
-		if (fip->field_passcount) {
-			float* fp;
-			if (wc == (uint16) TIFF_VARIABLE2) {
-				TIFFGetField(tif, fip->field_tag, &wc2, &fp);
-				dir->tdir_count = wc2;
-			} else {	/* Assume TIFF_VARIABLE */
-				TIFFGetField(tif, fip->field_tag, &wc, &fp);
-				dir->tdir_count = wc;
-			}
-			if (!TIFFWriteFloatArray(tif, dir, fp))
-				return 0;
-		} else {
-			if (wc == 1) {
-				float fv;
-				TIFFGetField(tif, fip->field_tag, &fv);
-				if (!TIFFWriteFloatArray(tif, dir, &fv))
-					return 0;
-			} else {
-				float* fp;
-				TIFFGetField(tif, fip->field_tag, &fp);
-				if (!TIFFWriteFloatArray(tif, dir, fp))
-					return 0;
-			}
-		}
-		break;
-	case TIFF_DOUBLE:
-		if (fip->field_passcount) {
-			double* dp;
-			if (wc == (uint16) TIFF_VARIABLE2) {
-				TIFFGetField(tif, fip->field_tag, &wc2, &dp);
-				dir->tdir_count = wc2;
-			} else {	/* Assume TIFF_VARIABLE */
-				TIFFGetField(tif, fip->field_tag, &wc, &dp);
-				dir->tdir_count = wc;
-			}
-			if (!TIFFWriteDoubleArray(tif, dir, dp))
-				return 0;
-		} else {
-			if (wc == 1) {
-				double dv;
-				TIFFGetField(tif, fip->field_tag, &dv);
-				if (!TIFFWriteDoubleArray(tif, dir, &dv))
-					return 0;
-			} else {
-				double* dp;
-				TIFFGetField(tif, fip->field_tag, &dp);
-				if (!TIFFWriteDoubleArray(tif, dir, dp))
-					return 0;
-			}
-		}
-		break;
-	case TIFF_ASCII:
-		{ 
-                    char* cp;
-                    if (fip->field_passcount)
-                        TIFFGetField(tif, fip->field_tag, &wc, &cp);
-                    else
-                        TIFFGetField(tif, fip->field_tag, &cp);
-
-                    dir->tdir_count = (uint32) (strlen(cp) + 1);
-                    if (!TIFFWriteByteArray(tif, dir, cp))
-                        return (0);
-		}
-		break;
-
-        case TIFF_BYTE:
-        case TIFF_SBYTE:          
-		if (fip->field_passcount) {
-			char* cp;
-			if (wc == (uint16) TIFF_VARIABLE2) {
-				TIFFGetField(tif, fip->field_tag, &wc2, &cp);
-				dir->tdir_count = wc2;
-			} else {	/* Assume TIFF_VARIABLE */
-				TIFFGetField(tif, fip->field_tag, &wc, &cp);
-				dir->tdir_count = wc;
-			}
-			if (!TIFFWriteByteArray(tif, dir, cp))
-				return 0;
-		} else {
-			if (wc == 1) {
-				char cv;
-				TIFFGetField(tif, fip->field_tag, &cv);
-				if (!TIFFWriteByteArray(tif, dir, &cv))
-					return 0;
-			} else {
-				char* cp;
-				TIFFGetField(tif, fip->field_tag, &cp);
-				if (!TIFFWriteByteArray(tif, dir, cp))
-					return 0;
-			}
-		}
-                break;
-
-	case TIFF_UNDEFINED:
-		{ char* cp;
-		  if (wc == (unsigned short) TIFF_VARIABLE) {
-			TIFFGetField(tif, fip->field_tag, &wc, &cp);
-			dir->tdir_count = wc;
-		  } else if (wc == (unsigned short) TIFF_VARIABLE2) {
-			TIFFGetField(tif, fip->field_tag, &wc2, &cp);
-			dir->tdir_count = wc2;
-		  } else 
-			TIFFGetField(tif, fip->field_tag, &cp);
-		  if (!TIFFWriteByteArray(tif, dir, cp))
-			return (0);
-		}
-		break;
-
-        case TIFF_NOTYPE:
-                break;
-	}
-	return (1);
-}
-
-/*
- * Setup a directory entry with either a SHORT
- * or LONG type according to the value.
- */
-static void
-TIFFSetupShortLong(TIFF* tif, ttag_t tag, TIFFDirEntry* dir, uint32 v)
-{
-	dir->tdir_tag = (uint16) tag;
-	dir->tdir_count = 1;
-	if (v > 0xffffL) {
-		dir->tdir_type = (short) TIFF_LONG;
-		dir->tdir_offset = v;
-	} else {
-		dir->tdir_type = (short) TIFF_SHORT;
-		dir->tdir_offset = TIFFInsertData(tif, (int) TIFF_SHORT, v);
-	}
-}
-
-/*
- * Setup a SHORT directory entry
- */
-static void
-TIFFSetupShort(TIFF* tif, ttag_t tag, TIFFDirEntry* dir, uint16 v)
-{
-	dir->tdir_tag = (uint16) tag;
-	dir->tdir_count = 1;
-	dir->tdir_type = (short) TIFF_SHORT;
-	dir->tdir_offset = TIFFInsertData(tif, (int) TIFF_SHORT, v);
-}
-#undef MakeShortDirent
-
-#define	NITEMS(x)	(sizeof (x) / sizeof (x[0]))
-/*
- * Setup a directory entry that references a
- * samples/pixel array of SHORT values and
- * (potentially) write the associated indirect
- * values.
- */
-static int
-TIFFWritePerSampleShorts(TIFF* tif, ttag_t tag, TIFFDirEntry* dir)
-{
-	uint16 buf[10], v;
-	uint16* w = buf;
-	uint16 i, samples = tif->tif_dir.td_samplesperpixel;
-	int status;
-
-	if (samples > NITEMS(buf)) {
-		w = (uint16*) _TIFFmalloc(samples * sizeof (uint16));
-		if (w == NULL) {
-			TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-			    "No space to write per-sample shorts");
-			return (0);
-		}
-	}
-	TIFFGetField(tif, tag, &v);
-	for (i = 0; i < samples; i++)
-		w[i] = v;
-	
-	dir->tdir_tag = (uint16) tag;
-	dir->tdir_type = (uint16) TIFF_SHORT;
-	dir->tdir_count = samples;
-	status = TIFFWriteShortArray(tif, dir, w);
-	if (w != buf)
-		_TIFFfree((char*) w);
-	return (status);
-}
-
-/*
- * Setup a directory entry that references a samples/pixel array of ``type''
- * values and (potentially) write the associated indirect values.  The source
- * data from TIFFGetField() for the specified tag must be returned as double.
- */
-static int
-TIFFWritePerSampleAnys(TIFF* tif,
-    TIFFDataType type, ttag_t tag, TIFFDirEntry* dir)
-{
-	double buf[10], v;
-	double* w = buf;
-	uint16 i, samples = tif->tif_dir.td_samplesperpixel;
-	int status;
-
-	if (samples > NITEMS(buf)) {
-		w = (double*) _TIFFmalloc(samples * sizeof (double));
-		if (w == NULL) {
-			TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-			    "No space to write per-sample values");
-			return (0);
-		}
-	}
-	TIFFGetField(tif, tag, &v);
-	for (i = 0; i < samples; i++)
-		w[i] = v;
-	status = TIFFWriteAnyArray(tif, type, tag, dir, samples, w);
-	if (w != buf)
-		_TIFFfree(w);
-	return (status);
-}
-#undef NITEMS
-
-/*
- * Setup a pair of shorts that are returned by
- * value, rather than as a reference to an array.
- */
-static int
-TIFFSetupShortPair(TIFF* tif, ttag_t tag, TIFFDirEntry* dir)
-{
-	uint16 v[2];
-
-	TIFFGetField(tif, tag, &v[0], &v[1]);
-
-	dir->tdir_tag = (uint16) tag;
-	dir->tdir_type = (uint16) TIFF_SHORT;
-	dir->tdir_count = 2;
-	return (TIFFWriteShortArray(tif, dir, v));
-}
-
-/*
- * Setup a directory entry for an NxM table of shorts,
- * where M is known to be 2**bitspersample, and write
- * the associated indirect data.
- */
-static int
-TIFFWriteShortTable(TIFF* tif,
-    ttag_t tag, TIFFDirEntry* dir, uint32 n, uint16** table)
-{
-	uint32 i, off;
-
-	dir->tdir_tag = (uint16) tag;
-	dir->tdir_type = (short) TIFF_SHORT;
-	/* XXX -- yech, fool TIFFWriteData */
-	dir->tdir_count = (uint32) (1L<<tif->tif_dir.td_bitspersample);
-	off = tif->tif_dataoff;
-	for (i = 0; i < n; i++)
-		if (!TIFFWriteData(tif, dir, (char *)table[i]))
-			return (0);
-	dir->tdir_count *= n;
-	dir->tdir_offset = off;
-	return (1);
-}
-
-/*
- * Write/copy data associated with an ASCII or opaque tag value.
- */
-static int
-TIFFWriteByteArray(TIFF* tif, TIFFDirEntry* dir, char* cp)
-{
-	if (dir->tdir_count > 4) {
-		if (!TIFFWriteData(tif, dir, cp))
-			return (0);
-	} else
-		_TIFFmemcpy(&dir->tdir_offset, cp, dir->tdir_count);
-	return (1);
-}
-
-/*
- * Setup a directory entry of an array of SHORT
- * or SSHORT and write the associated indirect values.
- */
-static int
-TIFFWriteShortArray(TIFF* tif, TIFFDirEntry* dir, uint16* v)
-{
-	if (dir->tdir_count <= 2) {
-		if (tif->tif_header.tiff_magic == TIFF_BIGENDIAN) {
-			dir->tdir_offset = (uint32) ((long) v[0] << 16);
-			if (dir->tdir_count == 2)
-				dir->tdir_offset |= v[1] & 0xffff;
-		} else {
-			dir->tdir_offset = v[0] & 0xffff;
-			if (dir->tdir_count == 2)
-				dir->tdir_offset |= (long) v[1] << 16;
-		}
-		return (1);
-	} else
-		return (TIFFWriteData(tif, dir, (char*) v));
-}
-
-/*
- * Setup a directory entry of an array of LONG
- * or SLONG and write the associated indirect values.
- */
-static int
-TIFFWriteLongArray(TIFF* tif, TIFFDirEntry* dir, uint32* v)
-{
-	if (dir->tdir_count == 1) {
-		dir->tdir_offset = v[0];
-		return (1);
-	} else
-		return (TIFFWriteData(tif, dir, (char*) v));
-}
-
-/*
- * Setup a directory entry of an array of RATIONAL
- * or SRATIONAL and write the associated indirect values.
- */
-static int
-TIFFWriteRationalArray(TIFF* tif, TIFFDirEntry* dir, float* v)
-{
-	uint32 i;
-	uint32* t;
-	int status;
-
-	t = (uint32*) _TIFFmalloc(2 * dir->tdir_count * sizeof (uint32));
-	if (t == NULL) {
-		TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-		    "No space to write RATIONAL array");
-		return (0);
-	}
-	for (i = 0; i < dir->tdir_count; i++) {
-		float fv = v[i];
-		int sign = 1;
-		uint32 den;
-
-		if (fv < 0) {
-			if (dir->tdir_type == TIFF_RATIONAL) {
-				TIFFWarningExt(tif->tif_clientdata, tif->tif_name,
-	"\"%s\": Information lost writing value (%g) as (unsigned) RATIONAL",
-				_TIFFFieldWithTag(tif,dir->tdir_tag)->field_name,
-				fv);
-				fv = 0;
-			} else
-				fv = -fv, sign = -1;
-		}
-		den = 1L;
-		if (fv > 0) {
-			while (fv < 1L<<(31-3) && den < 1L<<(31-3))
-				fv *= 1<<3, den *= 1L<<3;
-		}
-		t[2*i+0] = (uint32) (sign * (fv + 0.5));
-		t[2*i+1] = den;
-	}
-	status = TIFFWriteData(tif, dir, (char *)t);
-	_TIFFfree((char*) t);
-	return (status);
-}
-
-static int
-TIFFWriteFloatArray(TIFF* tif, TIFFDirEntry* dir, float* v)
-{
-	TIFFCvtNativeToIEEEFloat(tif, dir->tdir_count, v);
-	if (dir->tdir_count == 1) {
-		dir->tdir_offset = *(uint32*) &v[0];
-		return (1);
-	} else
-		return (TIFFWriteData(tif, dir, (char*) v));
-}
-
-static int
-TIFFWriteDoubleArray(TIFF* tif, TIFFDirEntry* dir, double* v)
-{
-	TIFFCvtNativeToIEEEDouble(tif, dir->tdir_count, v);
-	return (TIFFWriteData(tif, dir, (char*) v));
-}
-
-/*
- * Write an array of ``type'' values for a specified tag (i.e. this is a tag
- * which is allowed to have different types, e.g. SMaxSampleType).
- * Internally the data values are represented as double since a double can
- * hold any of the TIFF tag types (yes, this should really be an abstract
- * type tany_t for portability).  The data is converted into the specified
- * type in a temporary buffer and then handed off to the appropriate array
- * writer.
- */
-static int
-TIFFWriteAnyArray(TIFF* tif,
-    TIFFDataType type, ttag_t tag, TIFFDirEntry* dir, uint32 n, double* v)
-{
-	char buf[10 * sizeof(double)];
-	char* w = buf;
-	int i, status = 0;
-
-	if (n * TIFFDataWidth(type) > sizeof buf) {
-		w = (char*) _TIFFmalloc(n * TIFFDataWidth(type));
-		if (w == NULL) {
-			TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-			    "No space to write array");
-			return (0);
-		}
-	}
-
-	dir->tdir_tag = (uint16) tag;
-	dir->tdir_type = (uint16) type;
-	dir->tdir_count = n;
-
-	switch (type) {
-	case TIFF_BYTE:
-		{ 
-			uint8* bp = (uint8*) w;
-			for (i = 0; i < (int) n; i++)
-				bp[i] = (uint8) v[i];
-			if (!TIFFWriteByteArray(tif, dir, (char*) bp))
-				goto out;
-		}
-		break;
-	case TIFF_SBYTE:
-		{ 
-			int8* bp = (int8*) w;
-			for (i = 0; i < (int) n; i++)
-				bp[i] = (int8) v[i];
-			if (!TIFFWriteByteArray(tif, dir, (char*) bp))
-				goto out;
-		}
-		break;
-	case TIFF_SHORT:
-		{
-			uint16* bp = (uint16*) w;
-			for (i = 0; i < (int) n; i++)
-				bp[i] = (uint16) v[i];
-			if (!TIFFWriteShortArray(tif, dir, (uint16*)bp))
-				goto out;
-		}
-		break;
-	case TIFF_SSHORT:
-		{ 
-			int16* bp = (int16*) w;
-			for (i = 0; i < (int) n; i++)
-				bp[i] = (int16) v[i];
-			if (!TIFFWriteShortArray(tif, dir, (uint16*)bp))
-				goto out;
-		}
-		break;
-	case TIFF_LONG:
-		{
-			uint32* bp = (uint32*) w;
-			for (i = 0; i < (int) n; i++)
-				bp[i] = (uint32) v[i];
-			if (!TIFFWriteLongArray(tif, dir, bp))
-				goto out;
-		}
-		break;
-	case TIFF_SLONG:
-		{
-			int32* bp = (int32*) w;
-			for (i = 0; i < (int) n; i++)
-				bp[i] = (int32) v[i];
-			if (!TIFFWriteLongArray(tif, dir, (uint32*) bp))
-				goto out;
-		}
-		break;
-	case TIFF_FLOAT:
-		{ 
-			float* bp = (float*) w;
-			for (i = 0; i < (int) n; i++)
-				bp[i] = (float) v[i];
-			if (!TIFFWriteFloatArray(tif, dir, bp))
-				goto out;
-		}
-		break;
-	case TIFF_DOUBLE:
-		return (TIFFWriteDoubleArray(tif, dir, v));
-	default:
-		/* TIFF_NOTYPE */
-		/* TIFF_ASCII */
-		/* TIFF_UNDEFINED */
-		/* TIFF_RATIONAL */
-		/* TIFF_SRATIONAL */
-		goto out;
-	}
-	status = 1;
- out:
-	if (w != buf)
-		_TIFFfree(w);
-	return (status);
-}
-
-static int
-TIFFWriteTransferFunction(TIFF* tif, TIFFDirEntry* dir)
-{
-	TIFFDirectory* td = &tif->tif_dir;
-	tsize_t n = (1L<<td->td_bitspersample) * sizeof (uint16);
-	uint16** tf = td->td_transferfunction;
-	int ncols;
-
-	/*
-	 * Check if the table can be written as a single column,
-	 * or if it must be written as 3 columns.  Note that we
-	 * write a 3-column tag if there are 2 samples/pixel and
-	 * a single column of data won't suffice--hmm.
-	 */
-	switch (td->td_samplesperpixel - td->td_extrasamples) {
-	default:	if (_TIFFmemcmp(tf[0], tf[2], n)) { ncols = 3; break; }
-	case 2:		if (_TIFFmemcmp(tf[0], tf[1], n)) { ncols = 3; break; }
-	case 1: case 0:	ncols = 1;
-	}
-	return (TIFFWriteShortTable(tif,
-	    TIFFTAG_TRANSFERFUNCTION, dir, ncols, tf));
-}
-
-static int
-TIFFWriteInkNames(TIFF* tif, TIFFDirEntry* dir)
-{
-	TIFFDirectory* td = &tif->tif_dir;
-
-	dir->tdir_tag = TIFFTAG_INKNAMES;
-	dir->tdir_type = (short) TIFF_ASCII;
-	dir->tdir_count = td->td_inknameslen;
-	return (TIFFWriteByteArray(tif, dir, td->td_inknames));
-}
-
-/*
- * Write a contiguous directory item.
- */
-static int
-TIFFWriteData(TIFF* tif, TIFFDirEntry* dir, char* cp)
-{
-	tsize_t cc;
-
-	if (tif->tif_flags & TIFF_SWAB) {
-		switch (dir->tdir_type) {
-		case TIFF_SHORT:
-		case TIFF_SSHORT:
-			TIFFSwabArrayOfShort((uint16*) cp, dir->tdir_count);
-			break;
-		case TIFF_LONG:
-		case TIFF_SLONG:
-		case TIFF_FLOAT:
-			TIFFSwabArrayOfLong((uint32*) cp, dir->tdir_count);
-			break;
-		case TIFF_RATIONAL:
-		case TIFF_SRATIONAL:
-			TIFFSwabArrayOfLong((uint32*) cp, 2*dir->tdir_count);
-			break;
-		case TIFF_DOUBLE:
-			TIFFSwabArrayOfDouble((double*) cp, dir->tdir_count);
-			break;
-		}
-	}
-	dir->tdir_offset = tif->tif_dataoff;
-	cc = dir->tdir_count * TIFFDataWidth((TIFFDataType) dir->tdir_type);
-	if (SeekOK(tif, dir->tdir_offset) &&
-	    WriteOK(tif, cp, cc)) {
-		tif->tif_dataoff += (cc + 1) & ~1;
-		return (1);
-	}
-	TIFFErrorExt(tif->tif_clientdata, tif->tif_name, "Error writing data for field \"%s\"",
-	    _TIFFFieldWithTag(tif, dir->tdir_tag)->field_name);
-	return (0);
-}
-
-/*
- * Similar to TIFFWriteDirectory(), but if the directory has already
- * been written once, it is relocated to the end of the file, in case it
- * has changed in size.  Note that this will result in the loss of the 
- * previously used directory space. 
- */ 
-
-int 
-TIFFRewriteDirectory( TIFF *tif )
-{
-    static const char module[] = "TIFFRewriteDirectory";
-
-    /* We don't need to do anything special if it hasn't been written. */
-    if( tif->tif_diroff == 0 )
-        return TIFFWriteDirectory( tif );
-
-    /*
-    ** Find and zero the pointer to this directory, so that TIFFLinkDirectory
-    ** will cause it to be added after this directories current pre-link.
-    */
-    
-    /* Is it the first directory in the file? */
-    if (tif->tif_header.tiff_diroff == tif->tif_diroff) 
-    {
-        tif->tif_header.tiff_diroff = 0;
-        tif->tif_diroff = 0;
-
-        TIFFSeekFile(tif, (toff_t)(TIFF_MAGIC_SIZE+TIFF_VERSION_SIZE),
-		     SEEK_SET);
-        if (!WriteOK(tif, &(tif->tif_header.tiff_diroff), 
-                     sizeof (tif->tif_diroff))) 
-        {
-			TIFFErrorExt(tif->tif_clientdata, tif->tif_name, "Error updating TIFF header");
-            return (0);
-        }
-    }
-    else
-    {
-        toff_t  nextdir, off;
-
-	nextdir = tif->tif_header.tiff_diroff;
-	do {
-		uint16 dircount;
-
-		if (!SeekOK(tif, nextdir) ||
-		    !ReadOK(tif, &dircount, sizeof (dircount))) {
-			TIFFErrorExt(tif->tif_clientdata, module, "Error fetching directory count");
-			return (0);
-		}
-		if (tif->tif_flags & TIFF_SWAB)
-			TIFFSwabShort(&dircount);
-		(void) TIFFSeekFile(tif,
-		    dircount * sizeof (TIFFDirEntry), SEEK_CUR);
-		if (!ReadOK(tif, &nextdir, sizeof (nextdir))) {
-			TIFFErrorExt(tif->tif_clientdata, module, "Error fetching directory link");
-			return (0);
-		}
-		if (tif->tif_flags & TIFF_SWAB)
-			TIFFSwabLong(&nextdir);
-	} while (nextdir != tif->tif_diroff && nextdir != 0);
-        off = TIFFSeekFile(tif, 0, SEEK_CUR); /* get current offset */
-        (void) TIFFSeekFile(tif, off - (toff_t)sizeof(nextdir), SEEK_SET);
-        tif->tif_diroff = 0;
-	if (!WriteOK(tif, &(tif->tif_diroff), sizeof (nextdir))) {
-		TIFFErrorExt(tif->tif_clientdata, module, "Error writing directory link");
-		return (0);
-	}
-    }
-
-    /*
-    ** Now use TIFFWriteDirectory() normally.
-    */
-
-    return TIFFWriteDirectory( tif );
-}
-
-
-/*
- * Link the current directory into the
- * directory chain for the file.
- */
-static int
-TIFFLinkDirectory(TIFF* tif)
-{
-	static const char module[] = "TIFFLinkDirectory";
-	toff_t nextdir;
-	toff_t diroff, off;
-
-	tif->tif_diroff = (TIFFSeekFile(tif, (toff_t) 0, SEEK_END)+1) &~ 1;
-	diroff = tif->tif_diroff;
-	if (tif->tif_flags & TIFF_SWAB)
-		TIFFSwabLong(&diroff);
-
-	/*
-	 * Handle SubIFDs
-	 */
-        if (tif->tif_flags & TIFF_INSUBIFD) {
-		(void) TIFFSeekFile(tif, tif->tif_subifdoff, SEEK_SET);
-		if (!WriteOK(tif, &diroff, sizeof (diroff))) {
-			TIFFErrorExt(tif->tif_clientdata, module,
-			    "%s: Error writing SubIFD directory link",
-			    tif->tif_name);
-			return (0);
-		}
-		/*
-		 * Advance to the next SubIFD or, if this is
-		 * the last one configured, revert back to the
-		 * normal directory linkage.
-		 */
-		if (--tif->tif_nsubifd)
-			tif->tif_subifdoff += sizeof (diroff);
-		else
-			tif->tif_flags &= ~TIFF_INSUBIFD;
-		return (1);
-	}
-
-	if (tif->tif_header.tiff_diroff == 0) {
-		/*
-		 * First directory, overwrite offset in header.
-		 */
-		tif->tif_header.tiff_diroff = tif->tif_diroff;
-		(void) TIFFSeekFile(tif,
-				    (toff_t)(TIFF_MAGIC_SIZE+TIFF_VERSION_SIZE),
-                                    SEEK_SET);
-		if (!WriteOK(tif, &diroff, sizeof (diroff))) {
-			TIFFErrorExt(tif->tif_clientdata, tif->tif_name, "Error writing TIFF header");
-			return (0);
-		}
-		return (1);
-	}
-	/*
-	 * Not the first directory, search to the last and append.
-	 */
-	nextdir = tif->tif_header.tiff_diroff;
-	do {
-		uint16 dircount;
-
-		if (!SeekOK(tif, nextdir) ||
-		    !ReadOK(tif, &dircount, sizeof (dircount))) {
-			TIFFErrorExt(tif->tif_clientdata, module, "Error fetching directory count");
-			return (0);
-		}
-		if (tif->tif_flags & TIFF_SWAB)
-			TIFFSwabShort(&dircount);
-		(void) TIFFSeekFile(tif,
-		    dircount * sizeof (TIFFDirEntry), SEEK_CUR);
-		if (!ReadOK(tif, &nextdir, sizeof (nextdir))) {
-			TIFFErrorExt(tif->tif_clientdata, module, "Error fetching directory link");
-			return (0);
-		}
-		if (tif->tif_flags & TIFF_SWAB)
-			TIFFSwabLong(&nextdir);
-	} while (nextdir != 0);
-        off = TIFFSeekFile(tif, 0, SEEK_CUR); /* get current offset */
-        (void) TIFFSeekFile(tif, off - (toff_t)sizeof(nextdir), SEEK_SET);
-	if (!WriteOK(tif, &diroff, sizeof (diroff))) {
-		TIFFErrorExt(tif->tif_clientdata, module, "Error writing directory link");
-		return (0);
-	}
-	return (1);
-}
-
-/* vim: set ts=8 sts=8 sw=8 noet: */
diff --git a/src/tiff/tif_dumpmode.c b/src/tiff/tif_dumpmode.c
deleted file mode 100644
index 480f6f4..0000000
--- a/src/tiff/tif_dumpmode.c
+++ /dev/null
@@ -1,117 +0,0 @@
-/* $Header$ */
-
-/*
- * Copyright (c) 1988-1997 Sam Leffler
- * Copyright (c) 1991-1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and 
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- * 
- * 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 SAM LEFFLER OR SILICON GRAPHICS 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.
- */
-
-/*
- * TIFF Library.
- *
- * "Null" Compression Algorithm Support.
- */
-#include "tiffiop.h"
-
-/*
- * Encode a hunk of pixels.
- */
-static int
-DumpModeEncode(TIFF* tif, tidata_t pp, tsize_t cc, tsample_t s)
-{
-	(void) s;
-	while (cc > 0) {
-		tsize_t n;
-
-		n = cc;
-		if (tif->tif_rawcc + n > tif->tif_rawdatasize)
-			n = tif->tif_rawdatasize - tif->tif_rawcc;
-
-                assert( n > 0 );
-                
-		/*
-		 * Avoid copy if client has setup raw
-		 * data buffer to avoid extra copy.
-		 */
-		if (tif->tif_rawcp != pp)
-			_TIFFmemcpy(tif->tif_rawcp, pp, n);
-		tif->tif_rawcp += n;
-		tif->tif_rawcc += n;
-		pp += n;
-		cc -= n;
-		if (tif->tif_rawcc >= tif->tif_rawdatasize &&
-		    !TIFFFlushData1(tif))
-			return (-1);
-	}
-	return (1);
-}
-
-/*
- * Decode a hunk of pixels.
- */
-static int
-DumpModeDecode(TIFF* tif, tidata_t buf, tsize_t cc, tsample_t s)
-{
-	(void) s;
-	if (tif->tif_rawcc < cc) {
-		TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-		    "DumpModeDecode: Not enough data for scanline %d",
-		    tif->tif_row);
-		return (0);
-	}
-	/*
-	 * Avoid copy if client has setup raw
-	 * data buffer to avoid extra copy.
-	 */
-	if (tif->tif_rawcp != buf)
-		_TIFFmemcpy(buf, tif->tif_rawcp, cc);
-	tif->tif_rawcp += cc;
-	tif->tif_rawcc -= cc;
-	return (1);
-}
-
-/*
- * Seek forwards nrows in the current strip.
- */
-static int
-DumpModeSeek(TIFF* tif, uint32 nrows)
-{
-	tif->tif_rawcp += nrows * tif->tif_scanlinesize;
-	tif->tif_rawcc -= nrows * tif->tif_scanlinesize;
-	return (1);
-}
-
-/*
- * Initialize dump mode.
- */
-int
-TIFFInitDumpMode(TIFF* tif, int scheme)
-{
-	(void) scheme;
-	tif->tif_decoderow = DumpModeDecode;
-	tif->tif_decodestrip = DumpModeDecode;
-	tif->tif_decodetile = DumpModeDecode;
-	tif->tif_encoderow = DumpModeEncode;
-	tif->tif_encodestrip = DumpModeEncode;
-	tif->tif_encodetile = DumpModeEncode;
-	tif->tif_seek = DumpModeSeek;
-	return (1);
-}
diff --git a/src/tiff/tif_error.c b/src/tiff/tif_error.c
deleted file mode 100644
index 0b8b39d..0000000
--- a/src/tiff/tif_error.c
+++ /dev/null
@@ -1,73 +0,0 @@
-/* $Header$ */
-
-/*
- * Copyright (c) 1988-1997 Sam Leffler
- * Copyright (c) 1991-1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and 
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- * 
- * 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 SAM LEFFLER OR SILICON GRAPHICS 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.
- */
-
-/*
- * TIFF Library.
- */
-#include "tiffiop.h"
-
-TIFFErrorHandlerExt _TIFFerrorHandlerExt = NULL;
-
-TIFFErrorHandler
-TIFFSetErrorHandler(TIFFErrorHandler handler)
-{
-	TIFFErrorHandler prev = _TIFFerrorHandler;
-	_TIFFerrorHandler = handler;
-	return (prev);
-}
-
-TIFFErrorHandlerExt
-TIFFSetErrorHandlerExt(TIFFErrorHandlerExt handler)
-{
-	TIFFErrorHandlerExt prev = _TIFFerrorHandlerExt;
-	_TIFFerrorHandlerExt = handler;
-	return (prev);
-}
-
-void
-TIFFError(const char* module, const char* fmt, ...)
-{
-	va_list ap;
-	va_start(ap, fmt);
-	if (_TIFFerrorHandler)
-		(*_TIFFerrorHandler)(module, fmt, ap);
-	if (_TIFFerrorHandlerExt)
-		(*_TIFFerrorHandlerExt)(0, module, fmt, ap);
-	va_end(ap);
-}
-
-void
-TIFFErrorExt(thandle_t fd, const char* module, const char* fmt, ...)
-{
-	va_list ap;
-	va_start(ap, fmt);
-	if (_TIFFerrorHandler)
-		(*_TIFFerrorHandler)(module, fmt, ap);
-	if (_TIFFerrorHandlerExt)
-		(*_TIFFerrorHandlerExt)(fd, module, fmt, ap);
-	va_end(ap);
-}
-
diff --git a/src/tiff/tif_extension.c b/src/tiff/tif_extension.c
deleted file mode 100644
index 41ff707..0000000
--- a/src/tiff/tif_extension.c
+++ /dev/null
@@ -1,111 +0,0 @@
-/* $Header$ */
-
-/*
- * Copyright (c) 1988-1997 Sam Leffler
- * Copyright (c) 1991-1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and 
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- * 
- * 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 SAM LEFFLER OR SILICON GRAPHICS 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.
- */
-
-/*
- * TIFF Library.
- *
- * Various routines support external extension of the tag set, and other
- * application extension capabilities. 
- */
-
-#include "tiffiop.h"
-
-int TIFFGetTagListCount( TIFF *tif )
-
-{
-    TIFFDirectory* td = &tif->tif_dir;
-    
-    return td->td_customValueCount;
-}
-
-ttag_t TIFFGetTagListEntry( TIFF *tif, int tag_index )
-
-{
-    TIFFDirectory* td = &tif->tif_dir;
-
-    if( tag_index < 0 || tag_index >= td->td_customValueCount )
-        return (ttag_t) -1;
-    else
-        return td->td_customValues[tag_index].info->field_tag;
-}
-
-/*
-** This provides read/write access to the TIFFTagMethods within the TIFF
-** structure to application code without giving access to the private
-** TIFF structure.
-*/
-TIFFTagMethods *TIFFAccessTagMethods( TIFF *tif )
-
-{
-    return &(tif->tif_tagmethods);
-}
-
-void *TIFFGetClientInfo( TIFF *tif, const char *name )
-
-{
-    TIFFClientInfoLink *link = tif->tif_clientinfo;
-
-    while( link != NULL && strcmp(link->name,name) != 0 )
-        link = link->next;
-
-    if( link != NULL )
-        return link->data;
-    else
-        return NULL;
-}
-
-void TIFFSetClientInfo( TIFF *tif, void *data, const char *name )
-
-{
-    TIFFClientInfoLink *link = tif->tif_clientinfo;
-
-    /*
-    ** Do we have an existing link with this name?  If so, just
-    ** set it.
-    */
-    while( link != NULL && strcmp(link->name,name) != 0 )
-        link = link->next;
-
-    if( link != NULL )
-    {
-        link->data = data;
-        return;
-    }
-
-    /*
-    ** Create a new link.
-    */
-
-    link = (TIFFClientInfoLink *) _TIFFmalloc(sizeof(TIFFClientInfoLink));
-    assert (link != NULL);
-    link->next = tif->tif_clientinfo;
-    link->name = (char *) _TIFFmalloc(strlen(name)+1);
-    assert (link->name != NULL);
-    strcpy(link->name, name);
-    link->data = data;
-
-    tif->tif_clientinfo = link;
-}
diff --git a/src/tiff/tif_fax3.c b/src/tiff/tif_fax3.c
deleted file mode 100644
index 58dd7eb..0000000
--- a/src/tiff/tif_fax3.c
+++ /dev/null
@@ -1,1566 +0,0 @@
-/* $Id: tif_fax3.c 4825 2006-08-16 13:01:53Z lubia $ */
-
-/*
- * Copyright (c) 1990-1997 Sam Leffler
- * Copyright (c) 1991-1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and 
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- * 
- * 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 SAM LEFFLER OR SILICON GRAPHICS 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.
- */
-
-#include "tiffiop.h"
-#ifdef CCITT_SUPPORT
-/*
- * TIFF Library.
- *
- * CCITT Group 3 (T.4) and Group 4 (T.6) Compression Support.
- *
- * This file contains support for decoding and encoding TIFF
- * compression algorithms 2, 3, 4, and 32771.
- *
- * Decoder support is derived, with permission, from the code
- * in Frank Cringle's viewfax program;
- *      Copyright (C) 1990, 1995  Frank D. Cringle.
- */
-#include "tif_fax3.h"
-#define	G3CODES
-#include "t4.h"
-#include <stdio.h>
-
-/*
- * Compression+decompression state blocks are
- * derived from this ``base state'' block.
- */
-typedef struct {
-        int     rw_mode;                /* O_RDONLY for decode, else encode */
-	int	mode;			/* operating mode */
-	uint32	rowbytes;		/* bytes in a decoded scanline */
-	uint32	rowpixels;		/* pixels in a scanline */
-
-	uint16	cleanfaxdata;		/* CleanFaxData tag */
-	uint32	badfaxrun;		/* BadFaxRun tag */
-	uint32	badfaxlines;		/* BadFaxLines tag */
-	uint32	groupoptions;		/* Group 3/4 options tag */
-	uint32	recvparams;		/* encoded Class 2 session params */
-	char*	subaddress;		/* subaddress string */
-	uint32	recvtime;		/* time spent receiving (secs) */
-	char*	faxdcs;			/* Table 2/T.30 encoded session params */
-	TIFFVGetMethod vgetparent;	/* super-class method */
-	TIFFVSetMethod vsetparent;	/* super-class method */
-} Fax3BaseState;
-#define	Fax3State(tif)		((Fax3BaseState*) (tif)->tif_data)
-
-typedef enum { G3_1D, G3_2D } Ttag;
-typedef struct {
-	Fax3BaseState b;
-
-	/* Decoder state info */
-	const unsigned char* bitmap;	/* bit reversal table */
-	uint32	data;			/* current i/o byte/word */
-	int	bit;			/* current i/o bit in byte */
-	int	EOLcnt;			/* count of EOL codes recognized */
-	TIFFFaxFillFunc fill;		/* fill routine */
-	uint32*	runs;			/* b&w runs for current/previous row */
-	uint32*	refruns;		/* runs for reference line */
-	uint32*	curruns;		/* runs for current line */
-
-	/* Encoder state info */
-	Ttag    tag;			/* encoding state */
-	unsigned char*	refline;	/* reference line for 2d decoding */
-	int	k;			/* #rows left that can be 2d encoded */
-	int	maxk;			/* max #rows that can be 2d encoded */
-} Fax3CodecState;
-#define	DecoderState(tif)	((Fax3CodecState*) Fax3State(tif))
-#define	EncoderState(tif)	((Fax3CodecState*) Fax3State(tif))
-
-#define	is2DEncoding(sp) \
-	(sp->b.groupoptions & GROUP3OPT_2DENCODING)
-#define	isAligned(p,t)	((((unsigned long)(p)) & (sizeof (t)-1)) == 0)
-
-/*
- * Group 3 and Group 4 Decoding.
- */
-
-/*
- * These macros glue the TIFF library state to
- * the state expected by Frank's decoder.
- */
-#define	DECLARE_STATE(tif, sp, mod)					\
-    static const char module[] = mod;					\
-    Fax3CodecState* sp = DecoderState(tif);				\
-    int a0;				/* reference element */		\
-    int lastx = sp->b.rowpixels;	/* last element in row */	\
-    uint32 BitAcc;			/* bit accumulator */		\
-    int BitsAvail;			/* # valid bits in BitAcc */	\
-    int RunLength;			/* length of current run */	\
-    unsigned char* cp;			/* next byte of input data */	\
-    unsigned char* ep;			/* end of input data */		\
-    uint32* pa;				/* place to stuff next run */	\
-    uint32* thisrun;			/* current row's run array */	\
-    int EOLcnt;				/* # EOL codes recognized */	\
-    const unsigned char* bitmap = sp->bitmap;	/* input data bit reverser */	\
-    const TIFFFaxTabEnt* TabEnt
-#define	DECLARE_STATE_2D(tif, sp, mod)					\
-    DECLARE_STATE(tif, sp, mod);					\
-    int b1;				/* next change on prev line */	\
-    uint32* pb				/* next run in reference line */\
-/*
- * Load any state that may be changed during decoding.
- */
-#define	CACHE_STATE(tif, sp) do {					\
-    BitAcc = sp->data;							\
-    BitsAvail = sp->bit;						\
-    EOLcnt = sp->EOLcnt;						\
-    cp = (unsigned char*) tif->tif_rawcp;				\
-    ep = cp + tif->tif_rawcc;						\
-} while (0)
-/*
- * Save state possibly changed during decoding.
- */
-#define	UNCACHE_STATE(tif, sp) do {					\
-    sp->bit = BitsAvail;						\
-    sp->data = BitAcc;							\
-    sp->EOLcnt = EOLcnt;						\
-    tif->tif_rawcc -= (tidata_t) cp - tif->tif_rawcp;			\
-    tif->tif_rawcp = (tidata_t) cp;					\
-} while (0)
-
-/*
- * Setup state for decoding a strip.
- */
-static int
-Fax3PreDecode(TIFF* tif, tsample_t s)
-{
-	Fax3CodecState* sp = DecoderState(tif);
-
-	(void) s;
-	assert(sp != NULL);
-	sp->bit = 0;			/* force initial read */
-	sp->data = 0;
-	sp->EOLcnt = 0;			/* force initial scan for EOL */
-	/*
-	 * Decoder assumes lsb-to-msb bit order.  Note that we select
-	 * this here rather than in Fax3SetupState so that viewers can
-	 * hold the image open, fiddle with the FillOrder tag value,
-	 * and then re-decode the image.  Otherwise they'd need to close
-	 * and open the image to get the state reset.
-	 */
-	sp->bitmap =
-	    TIFFGetBitRevTable(tif->tif_dir.td_fillorder != FILLORDER_LSB2MSB);
-	if (sp->refruns) {		/* init reference line to white */
-		sp->refruns[0] = (uint32) sp->b.rowpixels;
-		sp->refruns[1] = 0;
-	}
-	return (1);
-}
-
-/*
- * Routine for handling various errors/conditions.
- * Note how they are "glued into the decoder" by
- * overriding the definitions used by the decoder.
- */
-
-static void
-Fax3Unexpected(const char* module, TIFF* tif, uint32 line, uint32 a0)
-{
-	TIFFErrorExt(tif->tif_clientdata, module, "%s: Bad code word at line %lu of %s %lu (x %lu)",
-		tif->tif_name, (unsigned long) line, isTiled(tif) ? "tile" : "strip",
-	   (unsigned long) (isTiled(tif) ? tif->tif_curtile : tif->tif_curstrip),
-	   (unsigned long) a0);
-}
-#define	unexpected(table, a0)	Fax3Unexpected(module, tif, line, a0)
-
-static void
-Fax3Extension(const char* module, TIFF* tif, uint32 line, uint32 a0)
-{
-	TIFFErrorExt(tif->tif_clientdata, module,
-	    "%s: Uncompressed data (not supported) at line %lu of %s %lu (x %lu)",
-	    tif->tif_name, (unsigned long) line, isTiled(tif) ? "tile" : "strip",
-       (unsigned long) (isTiled(tif) ? tif->tif_curtile : tif->tif_curstrip),
-       (unsigned long) a0);
-}
-#define	extension(a0)	Fax3Extension(module, tif, line, a0)
-
-static void
-Fax3BadLength(const char* module, TIFF* tif, uint32 line, uint32 a0, uint32 lastx)
-{
-	TIFFWarningExt(tif->tif_clientdata, module, "%s: %s at line %lu of %s %lu (got %lu, expected %lu)",
-	    tif->tif_name,
-	    a0 < lastx ? "Premature EOL" : "Line length mismatch",
-	    (unsigned long) line, isTiled(tif) ? "tile" : "strip",
-        (unsigned long) (isTiled(tif) ? tif->tif_curtile : tif->tif_curstrip),
-        (unsigned long) a0, lastx);
-}
-#define	badlength(a0,lastx)	Fax3BadLength(module, tif, line, a0, lastx)
-
-static void
-Fax3PrematureEOF(const char* module, TIFF* tif, uint32 line, uint32 a0)
-{
-	TIFFWarningExt(tif->tif_clientdata, module, "%s: Premature EOF at line %lu of %s %lu (x %lu)",
-	    tif->tif_name,
-	    (unsigned long) line, isTiled(tif) ? "tile" : "strip",
-        (unsigned long) (isTiled(tif) ? tif->tif_curtile : tif->tif_curstrip),
-        (unsigned long) a0);
-}
-#define	prematureEOF(a0)	Fax3PrematureEOF(module, tif, line, a0)
-
-#define	Nop
-
-/*
- * Decode the requested amount of G3 1D-encoded data.
- */
-static int
-Fax3Decode1D(TIFF* tif, tidata_t buf, tsize_t occ, tsample_t s)
-{
-	DECLARE_STATE(tif, sp, "Fax3Decode1D");
-        int line = 0;
-
-	(void) s;
-	CACHE_STATE(tif, sp);
-	thisrun = sp->curruns;
-	while ((long)occ > 0) {
-		a0 = 0;
-		RunLength = 0;
-		pa = thisrun;
-#ifdef FAX3_DEBUG
-		printf("\nBitAcc=%08X, BitsAvail = %d\n", BitAcc, BitsAvail);
-		printf("-------------------- %d\n", tif->tif_row);
-		fflush(stdout);
-#endif
-		SYNC_EOL(EOF1D);
-		EXPAND1D(EOF1Da);
-		(*sp->fill)(buf, thisrun, pa, lastx);
-		buf += sp->b.rowbytes;
-		occ -= sp->b.rowbytes;
-                line++;
-		continue;
-	EOF1D:				/* premature EOF */
-		CLEANUP_RUNS();
-	EOF1Da:				/* premature EOF */
-		(*sp->fill)(buf, thisrun, pa, lastx);
-		UNCACHE_STATE(tif, sp);
-		return (-1);
-	}
-	UNCACHE_STATE(tif, sp);
-	return (1);
-}
-
-#define	SWAP(t,a,b)	{ t x; x = (a); (a) = (b); (b) = x; }
-/*
- * Decode the requested amount of G3 2D-encoded data.
- */
-static int
-Fax3Decode2D(TIFF* tif, tidata_t buf, tsize_t occ, tsample_t s)
-{
-	DECLARE_STATE_2D(tif, sp, "Fax3Decode2D");
-        int line = 0;
-	int is1D;			/* current line is 1d/2d-encoded */
-
-	(void) s;
-	CACHE_STATE(tif, sp);
-	while ((long)occ > 0) {
-		a0 = 0;
-		RunLength = 0;
-		pa = thisrun = sp->curruns;
-#ifdef FAX3_DEBUG
-		printf("\nBitAcc=%08X, BitsAvail = %d EOLcnt = %d",
-		    BitAcc, BitsAvail, EOLcnt);
-#endif
-		SYNC_EOL(EOF2D);
-		NeedBits8(1, EOF2D);
-		is1D = GetBits(1);	/* 1D/2D-encoding tag bit */
-		ClrBits(1);
-#ifdef FAX3_DEBUG
-		printf(" %s\n-------------------- %d\n",
-		    is1D ? "1D" : "2D", tif->tif_row);
-		fflush(stdout);
-#endif
-		pb = sp->refruns;
-		b1 = *pb++;
-		if (is1D)
-			EXPAND1D(EOF2Da);
-		else
-			EXPAND2D(EOF2Da);
-		(*sp->fill)(buf, thisrun, pa, lastx);
-		SETVALUE(0);		/* imaginary change for reference */
-		SWAP(uint32*, sp->curruns, sp->refruns);
-		buf += sp->b.rowbytes;
-		occ -= sp->b.rowbytes;
-                line++;
-		continue;
-	EOF2D:				/* premature EOF */
-		CLEANUP_RUNS();
-	EOF2Da:				/* premature EOF */
-		(*sp->fill)(buf, thisrun, pa, lastx);
-		UNCACHE_STATE(tif, sp);
-		return (-1);
-	}
-	UNCACHE_STATE(tif, sp);
-	return (1);
-}
-#undef SWAP
-
-/*
- * The ZERO & FILL macros must handle spans < 2*sizeof(long) bytes.
- * For machines with 64-bit longs this is <16 bytes; otherwise
- * this is <8 bytes.  We optimize the code here to reflect the
- * machine characteristics.
- */
-#if SIZEOF_LONG == 8
-# define FILL(n, cp)							    \
-    switch (n) {							    \
-    case 15:(cp)[14] = 0xff; case 14:(cp)[13] = 0xff; case 13: (cp)[12] = 0xff;\
-    case 12:(cp)[11] = 0xff; case 11:(cp)[10] = 0xff; case 10: (cp)[9] = 0xff;\
-    case  9: (cp)[8] = 0xff; case  8: (cp)[7] = 0xff; case  7: (cp)[6] = 0xff;\
-    case  6: (cp)[5] = 0xff; case  5: (cp)[4] = 0xff; case  4: (cp)[3] = 0xff;\
-    case  3: (cp)[2] = 0xff; case  2: (cp)[1] = 0xff;			      \
-    case  1: (cp)[0] = 0xff; (cp) += (n); case 0:  ;			      \
-    }
-# define ZERO(n, cp)							\
-    switch (n) {							\
-    case 15:(cp)[14] = 0; case 14:(cp)[13] = 0; case 13: (cp)[12] = 0;	\
-    case 12:(cp)[11] = 0; case 11:(cp)[10] = 0; case 10: (cp)[9] = 0;	\
-    case  9: (cp)[8] = 0; case  8: (cp)[7] = 0; case  7: (cp)[6] = 0;	\
-    case  6: (cp)[5] = 0; case  5: (cp)[4] = 0; case  4: (cp)[3] = 0;	\
-    case  3: (cp)[2] = 0; case  2: (cp)[1] = 0;				\
-    case  1: (cp)[0] = 0; (cp) += (n); case 0:  ;			\
-    }
-#else
-# define FILL(n, cp)							    \
-    switch (n) {							    \
-    case 7: (cp)[6] = 0xff; case 6: (cp)[5] = 0xff; case 5: (cp)[4] = 0xff; \
-    case 4: (cp)[3] = 0xff; case 3: (cp)[2] = 0xff; case 2: (cp)[1] = 0xff; \
-    case 1: (cp)[0] = 0xff; (cp) += (n); case 0:  ;			    \
-    }
-# define ZERO(n, cp)							\
-    switch (n) {							\
-    case 7: (cp)[6] = 0; case 6: (cp)[5] = 0; case 5: (cp)[4] = 0;	\
-    case 4: (cp)[3] = 0; case 3: (cp)[2] = 0; case 2: (cp)[1] = 0;	\
-    case 1: (cp)[0] = 0; (cp) += (n); case 0:  ;			\
-    }
-#endif
-
-/*
- * Bit-fill a row according to the white/black
- * runs generated during G3/G4 decoding.
- */
-void
-_TIFFFax3fillruns(unsigned char* buf, uint32* runs, uint32* erun, uint32 lastx)
-{
-	static const unsigned char _fillmasks[] =
-	    { 0x00, 0x80, 0xc0, 0xe0, 0xf0, 0xf8, 0xfc, 0xfe, 0xff };
-	unsigned char* cp;
-	uint32 x, bx, run;
-	int32 n, nw;
-	long* lp;
-
-	if ((erun-runs)&1)
-	    *erun++ = 0;
-	x = 0;
-	for (; runs < erun; runs += 2) {
-	    run = runs[0];
-	    if (x+run > lastx || run > lastx )
-		run = runs[0] = (uint32) (lastx - x);
-	    if (run) {
-		cp = buf + (x>>3);
-		bx = x&7;
-		if (run > 8-bx) {
-		    if (bx) {			/* align to byte boundary */
-			*cp++ &= 0xff << (8-bx);
-			run -= 8-bx;
-		    }
-		    if( (n = run >> 3) != 0 ) {	/* multiple bytes to fill */
-			if ((n/sizeof (long)) > 1) {
-			    /*
-			     * Align to longword boundary and fill.
-			     */
-			    for (; n && !isAligned(cp, long); n--)
-				    *cp++ = 0x00;
-			    lp = (long*) cp;
-			    nw = (int32)(n / sizeof (long));
-			    n -= nw * sizeof (long);
-			    do {
-				    *lp++ = 0L;
-			    } while (--nw);
-			    cp = (unsigned char*) lp;
-			}
-			ZERO(n, cp);
-			run &= 7;
-		    }
-		    if (run)
-			cp[0] &= 0xff >> run;
-		} else
-		    cp[0] &= ~(_fillmasks[run]>>bx);
-		x += runs[0];
-	    }
-	    run = runs[1];
-	    if (x+run > lastx || run > lastx )
-		run = runs[1] = lastx - x;
-	    if (run) {
-		cp = buf + (x>>3);
-		bx = x&7;
-		if (run > 8-bx) {
-		    if (bx) {			/* align to byte boundary */
-			*cp++ |= 0xff >> bx;
-			run -= 8-bx;
-		    }
-		    if( (n = run>>3) != 0 ) {	/* multiple bytes to fill */
-			if ((n/sizeof (long)) > 1) {
-			    /*
-			     * Align to longword boundary and fill.
-			     */
-			    for (; n && !isAligned(cp, long); n--)
-				*cp++ = 0xff;
-			    lp = (long*) cp;
-			    nw = (int32)(n / sizeof (long));
-			    n -= nw * sizeof (long);
-			    do {
-				*lp++ = -1L;
-			    } while (--nw);
-			    cp = (unsigned char*) lp;
-			}
-			FILL(n, cp);
-			run &= 7;
-		    }
-		    if (run)
-			cp[0] |= 0xff00 >> run;
-		} else
-		    cp[0] |= _fillmasks[run]>>bx;
-		x += runs[1];
-	    }
-	}
-	assert(x == lastx);
-}
-#undef	ZERO
-#undef	FILL
-
-/*
- * Setup G3/G4-related compression/decompression state
- * before data is processed.  This routine is called once
- * per image -- it sets up different state based on whether
- * or not decoding or encoding is being done and whether
- * 1D- or 2D-encoded data is involved.
- */
-static int
-Fax3SetupState(TIFF* tif)
-{
-	TIFFDirectory* td = &tif->tif_dir;
-	Fax3BaseState* sp = Fax3State(tif);
-	int needsRefLine;
-	Fax3CodecState* dsp = (Fax3CodecState*) Fax3State(tif);
-	uint32 rowbytes, rowpixels, nruns;
-
-	if (td->td_bitspersample != 1) {
-		TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-		    "Bits/sample must be 1 for Group 3/4 encoding/decoding");
-		return (0);
-	}
-	/*
-	 * Calculate the scanline/tile widths.
-	 */
-	if (isTiled(tif)) {
-		rowbytes = TIFFTileRowSize(tif);
-		rowpixels = td->td_tilewidth;
-	} else {
-		rowbytes = TIFFScanlineSize(tif);
-		rowpixels = td->td_imagewidth;
-	}
-	sp->rowbytes = (uint32) rowbytes;
-	sp->rowpixels = (uint32) rowpixels;
-	/*
-	 * Allocate any additional space required for decoding/encoding.
-	 */
-	needsRefLine = (
-	    (sp->groupoptions & GROUP3OPT_2DENCODING) ||
-	    td->td_compression == COMPRESSION_CCITTFAX4
-	);
-
-	nruns = needsRefLine ? 2*TIFFroundup(rowpixels,32) : rowpixels;
-
-	dsp->runs = (uint32*) _TIFFCheckMalloc(tif, 2*nruns+3, sizeof (uint32),
-					  "for Group 3/4 run arrays");
-	if (dsp->runs == NULL)
-		return (0);
-	dsp->curruns = dsp->runs;
-	if (needsRefLine)
-		dsp->refruns = dsp->runs + (nruns>>1);
-	else
-		dsp->refruns = NULL;
-	if (td->td_compression == COMPRESSION_CCITTFAX3
-	    && is2DEncoding(dsp)) {	/* NB: default is 1D routine */
-		tif->tif_decoderow = Fax3Decode2D;
-		tif->tif_decodestrip = Fax3Decode2D;
-		tif->tif_decodetile = Fax3Decode2D;
-	}
-
-	if (needsRefLine) {		/* 2d encoding */
-		Fax3CodecState* esp = EncoderState(tif);
-		/*
-		 * 2d encoding requires a scanline
-		 * buffer for the ``reference line''; the
-		 * scanline against which delta encoding
-		 * is referenced.  The reference line must
-		 * be initialized to be ``white'' (done elsewhere).
-		 */
-		esp->refline = (unsigned char*) _TIFFmalloc(rowbytes);
-		if (esp->refline == NULL) {
-			TIFFErrorExt(tif->tif_clientdata, "Fax3SetupState",
-			    "%s: No space for Group 3/4 reference line",
-			    tif->tif_name);
-			return (0);
-		}
-	} else					/* 1d encoding */
-		EncoderState(tif)->refline = NULL;
-
-	return (1);
-}
-
-/*
- * CCITT Group 3 FAX Encoding.
- */
-
-#define	Fax3FlushBits(tif, sp) {				\
-	if ((tif)->tif_rawcc >= (tif)->tif_rawdatasize)		\
-		(void) TIFFFlushData1(tif);			\
-	*(tif)->tif_rawcp++ = (tidataval_t) (sp)->data;		\
-	(tif)->tif_rawcc++;					\
-	(sp)->data = 0, (sp)->bit = 8;				\
-}
-#define	_FlushBits(tif) {					\
-	if ((tif)->tif_rawcc >= (tif)->tif_rawdatasize)		\
-		(void) TIFFFlushData1(tif);			\
-	*(tif)->tif_rawcp++ = (tidataval_t) data;		\
-	(tif)->tif_rawcc++;					\
-	data = 0, bit = 8;					\
-}
-static const int _msbmask[9] =
-    { 0x00, 0x01, 0x03, 0x07, 0x0f, 0x1f, 0x3f, 0x7f, 0xff };
-#define	_PutBits(tif, bits, length) {				\
-	while (length > bit) {					\
-		data |= bits >> (length - bit);			\
-		length -= bit;					\
-		_FlushBits(tif);				\
-	}							\
-	data |= (bits & _msbmask[length]) << (bit - length);	\
-	bit -= length;						\
-	if (bit == 0)						\
-		_FlushBits(tif);				\
-}
-	
-/*
- * Write a variable-length bit-value to
- * the output stream.  Values are
- * assumed to be at most 16 bits.
- */
-static void
-Fax3PutBits(TIFF* tif, unsigned int bits, unsigned int length)
-{
-	Fax3CodecState* sp = EncoderState(tif);
-	unsigned int bit = sp->bit;
-	int data = sp->data;
-
-	_PutBits(tif, bits, length);
-
-	sp->data = data;
-	sp->bit = bit;
-}
-
-/*
- * Write a code to the output stream.
- */
-#define putcode(tif, te)	Fax3PutBits(tif, (te)->code, (te)->length)
-
-#ifdef FAX3_DEBUG
-#define	DEBUG_COLOR(w) (tab == TIFFFaxWhiteCodes ? w "W" : w "B")
-#define	DEBUG_PRINT(what,len) {						\
-    int t;								\
-    printf("%08X/%-2d: %s%5d\t", data, bit, DEBUG_COLOR(what), len);	\
-    for (t = length-1; t >= 0; t--)					\
-	putchar(code & (1<<t) ? '1' : '0');				\
-    putchar('\n');							\
-}
-#endif
-
-/*
- * Write the sequence of codes that describes
- * the specified span of zero's or one's.  The
- * appropriate table that holds the make-up and
- * terminating codes is supplied.
- */
-static void
-putspan(TIFF* tif, int32 span, const tableentry* tab)
-{
-	Fax3CodecState* sp = EncoderState(tif);
-	unsigned int bit = sp->bit;
-	int data = sp->data;
-	unsigned int code, length;
-
-	while (span >= 2624) {
-		const tableentry* te = &tab[63 + (2560>>6)];
-		code = te->code, length = te->length;
-#ifdef FAX3_DEBUG
-		DEBUG_PRINT("MakeUp", te->runlen);
-#endif
-		_PutBits(tif, code, length);
-		span -= te->runlen;
-	}
-	if (span >= 64) {
-		const tableentry* te = &tab[63 + (span>>6)];
-		assert(te->runlen == 64*(span>>6));
-		code = te->code, length = te->length;
-#ifdef FAX3_DEBUG
-		DEBUG_PRINT("MakeUp", te->runlen);
-#endif
-		_PutBits(tif, code, length);
-		span -= te->runlen;
-	}
-	code = tab[span].code, length = tab[span].length;
-#ifdef FAX3_DEBUG
-	DEBUG_PRINT("  Term", tab[span].runlen);
-#endif
-	_PutBits(tif, code, length);
-
-	sp->data = data;
-	sp->bit = bit;
-}
-
-/*
- * Write an EOL code to the output stream.  The zero-fill
- * logic for byte-aligning encoded scanlines is handled
- * here.  We also handle writing the tag bit for the next
- * scanline when doing 2d encoding.
- */
-static void
-Fax3PutEOL(TIFF* tif)
-{
-	Fax3CodecState* sp = EncoderState(tif);
-	unsigned int bit = sp->bit;
-	int data = sp->data;
-	unsigned int code, length, tparm;
-
-	if (sp->b.groupoptions & GROUP3OPT_FILLBITS) {
-		/*
-		 * Force bit alignment so EOL will terminate on
-		 * a byte boundary.  That is, force the bit alignment
-		 * to 16-12 = 4 before putting out the EOL code.
-		 */
-		int align = 8 - 4;
-		if (align != sp->bit) {
-			if (align > sp->bit)
-				align = sp->bit + (8 - align);
-			else
-				align = sp->bit - align;
-			code = 0;
-			tparm=align; 
-			_PutBits(tif, 0, tparm);
-		}
-	}
-	code = EOL, length = 12;
-	if (is2DEncoding(sp))
-		code = (code<<1) | (sp->tag == G3_1D), length++;
-	_PutBits(tif, code, length);
-
-	sp->data = data;
-	sp->bit = bit;
-}
-
-/*
- * Reset encoding state at the start of a strip.
- */
-static int
-Fax3PreEncode(TIFF* tif, tsample_t s)
-{
-	Fax3CodecState* sp = EncoderState(tif);
-
-	(void) s;
-	assert(sp != NULL);
-	sp->bit = 8;
-	sp->data = 0;
-	sp->tag = G3_1D;
-	/*
-	 * This is necessary for Group 4; otherwise it isn't
-	 * needed because the first scanline of each strip ends
-	 * up being copied into the refline.
-	 */
-	if (sp->refline)
-		_TIFFmemset(sp->refline, 0x00, sp->b.rowbytes);
-	if (is2DEncoding(sp)) {
-		float res = tif->tif_dir.td_yresolution;
-		/*
-		 * The CCITT spec says that when doing 2d encoding, you
-		 * should only do it on K consecutive scanlines, where K
-		 * depends on the resolution of the image being encoded
-		 * (2 for <= 200 lpi, 4 for > 200 lpi).  Since the directory
-		 * code initializes td_yresolution to 0, this code will
-		 * select a K of 2 unless the YResolution tag is set
-		 * appropriately.  (Note also that we fudge a little here
-		 * and use 150 lpi to avoid problems with units conversion.)
-		 */
-		if (tif->tif_dir.td_resolutionunit == RESUNIT_CENTIMETER)
-			res *= 2.54f;		/* convert to inches */
-		sp->maxk = (res > 150 ? 4 : 2);
-		sp->k = sp->maxk-1;
-	} else
-		sp->k = sp->maxk = 0;
-	return (1);
-}
-
-static const unsigned char zeroruns[256] = {
-    8, 7, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 4, 4,	/* 0x00 - 0x0f */
-    3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,	/* 0x10 - 0x1f */
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,	/* 0x20 - 0x2f */
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,	/* 0x30 - 0x3f */
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,	/* 0x40 - 0x4f */
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,	/* 0x50 - 0x5f */
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,	/* 0x60 - 0x6f */
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,	/* 0x70 - 0x7f */
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	/* 0x80 - 0x8f */
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	/* 0x90 - 0x9f */
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	/* 0xa0 - 0xaf */
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	/* 0xb0 - 0xbf */
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	/* 0xc0 - 0xcf */
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	/* 0xd0 - 0xdf */
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	/* 0xe0 - 0xef */
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	/* 0xf0 - 0xff */
-};
-static const unsigned char oneruns[256] = {
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	/* 0x00 - 0x0f */
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	/* 0x10 - 0x1f */
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	/* 0x20 - 0x2f */
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	/* 0x30 - 0x3f */
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	/* 0x40 - 0x4f */
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	/* 0x50 - 0x5f */
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	/* 0x60 - 0x6f */
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	/* 0x70 - 0x7f */
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,	/* 0x80 - 0x8f */
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,	/* 0x90 - 0x9f */
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,	/* 0xa0 - 0xaf */
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,	/* 0xb0 - 0xbf */
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,	/* 0xc0 - 0xcf */
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,	/* 0xd0 - 0xdf */
-    3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,	/* 0xe0 - 0xef */
-    4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 7, 8,	/* 0xf0 - 0xff */
-};
-
-/*
- * On certain systems it pays to inline
- * the routines that find pixel spans.
- */
-#ifdef VAXC
-static	int32 find0span(unsigned char*, int32, int32);
-static	int32 find1span(unsigned char*, int32, int32);
-#pragma inline(find0span,find1span)
-#endif
-
-/*
- * Find a span of ones or zeros using the supplied
- * table.  The ``base'' of the bit string is supplied
- * along with the start+end bit indices.
- */
-inline static int32
-find0span(unsigned char* bp, int32 bs, int32 be)
-{
-	int32 bits = be - bs;
-	int32 n, span;
-
-	bp += bs>>3;
-	/*
-	 * Check partial byte on lhs.
-	 */
-	if (bits > 0 && (n = (bs & 7))) {
-		span = zeroruns[(*bp << n) & 0xff];
-		if (span > 8-n)		/* table value too generous */
-			span = 8-n;
-		if (span > bits)	/* constrain span to bit range */
-			span = bits;
-		if (n+span < 8)		/* doesn't extend to edge of byte */
-			return (span);
-		bits -= span;
-		bp++;
-	} else
-		span = 0;
-	if (bits >= (int32)(2 * 8 * sizeof(long))) {
-		long* lp;
-		/*
-		 * Align to longword boundary and check longwords.
-		 */
-		while (!isAligned(bp, long)) {
-			if (*bp != 0x00)
-				return (span + zeroruns[*bp]);
-			span += 8, bits -= 8;
-			bp++;
-		}
-		lp = (long*) bp;
-		while ((bits >= (int32)(8 * sizeof(long))) && (0 == *lp)) {
-			span += 8*sizeof (long), bits -= 8*sizeof (long);
-			lp++;
-		}
-		bp = (unsigned char*) lp;
-	}
-	/*
-	 * Scan full bytes for all 0's.
-	 */
-	while (bits >= 8) {
-		if (*bp != 0x00)	/* end of run */
-			return (span + zeroruns[*bp]);
-		span += 8, bits -= 8;
-		bp++;
-	}
-	/*
-	 * Check partial byte on rhs.
-	 */
-	if (bits > 0) {
-		n = zeroruns[*bp];
-		span += (n > bits ? bits : n);
-	}
-	return (span);
-}
-
-inline static int32
-find1span(unsigned char* bp, int32 bs, int32 be)
-{
-	int32 bits = be - bs;
-	int32 n, span;
-
-	bp += bs>>3;
-	/*
-	 * Check partial byte on lhs.
-	 */
-	if (bits > 0 && (n = (bs & 7))) {
-		span = oneruns[(*bp << n) & 0xff];
-		if (span > 8-n)		/* table value too generous */
-			span = 8-n;
-		if (span > bits)	/* constrain span to bit range */
-			span = bits;
-		if (n+span < 8)		/* doesn't extend to edge of byte */
-			return (span);
-		bits -= span;
-		bp++;
-	} else
-		span = 0;
-	if (bits >= (int32)(2 * 8 * sizeof(long))) {
-		long* lp;
-		/*
-		 * Align to longword boundary and check longwords.
-		 */
-		while (!isAligned(bp, long)) {
-			if (*bp != 0xff)
-				return (span + oneruns[*bp]);
-			span += 8, bits -= 8;
-			bp++;
-		}
-		lp = (long*) bp;
-		while ((bits >= (int32)(8 * sizeof(long))) && (~0 == *lp)) {
-			span += 8*sizeof (long), bits -= 8*sizeof (long);
-			lp++;
-		}
-		bp = (unsigned char*) lp;
-	}
-	/*
-	 * Scan full bytes for all 1's.
-	 */
-	while (bits >= 8) {
-		if (*bp != 0xff)	/* end of run */
-			return (span + oneruns[*bp]);
-		span += 8, bits -= 8;
-		bp++;
-	}
-	/*
-	 * Check partial byte on rhs.
-	 */
-	if (bits > 0) {
-		n = oneruns[*bp];
-		span += (n > bits ? bits : n);
-	}
-	return (span);
-}
-
-/*
- * Return the offset of the next bit in the range
- * [bs..be] that is different from the specified
- * color.  The end, be, is returned if no such bit
- * exists.
- */
-#define	finddiff(_cp, _bs, _be, _color)	\
-	(_bs + (_color ? find1span(_cp,_bs,_be) : find0span(_cp,_bs,_be)))
-/*
- * Like finddiff, but also check the starting bit
- * against the end in case start > end.
- */
-#define	finddiff2(_cp, _bs, _be, _color) \
-	(_bs < _be ? finddiff(_cp,_bs,_be,_color) : _be)
-
-/*
- * 1d-encode a row of pixels.  The encoding is
- * a sequence of all-white or all-black spans
- * of pixels encoded with Huffman codes.
- */
-static int
-Fax3Encode1DRow(TIFF* tif, unsigned char* bp, uint32 bits)
-{
-	Fax3CodecState* sp = EncoderState(tif);
-	int32 span;
-        uint32 bs = 0;
-
-	for (;;) {
-		span = find0span(bp, bs, bits);		/* white span */
-		putspan(tif, span, TIFFFaxWhiteCodes);
-		bs += span;
-		if (bs >= bits)
-			break;
-		span = find1span(bp, bs, bits);		/* black span */
-		putspan(tif, span, TIFFFaxBlackCodes);
-		bs += span;
-		if (bs >= bits)
-			break;
-	}
-	if (sp->b.mode & (FAXMODE_BYTEALIGN|FAXMODE_WORDALIGN)) {
-		if (sp->bit != 8)			/* byte-align */
-			Fax3FlushBits(tif, sp);
-		if ((sp->b.mode&FAXMODE_WORDALIGN) &&
-		    !isAligned(tif->tif_rawcp, uint16))
-			Fax3FlushBits(tif, sp);
-	}
-	return (1);
-}
-
-static const tableentry horizcode =
-    { 3, 0x1, 0 };	/* 001 */
-static const tableentry passcode =
-    { 4, 0x1, 0 };	/* 0001 */
-static const tableentry vcodes[7] = {
-    { 7, 0x03, 0 },	/* 0000 011 */
-    { 6, 0x03, 0 },	/* 0000 11 */
-    { 3, 0x03, 0 },	/* 011 */
-    { 1, 0x1, 0 },	/* 1 */
-    { 3, 0x2, 0 },	/* 010 */
-    { 6, 0x02, 0 },	/* 0000 10 */
-    { 7, 0x02, 0 }	/* 0000 010 */
-};
-
-/*
- * 2d-encode a row of pixels.  Consult the CCITT
- * documentation for the algorithm.
- */
-static int
-Fax3Encode2DRow(TIFF* tif, unsigned char* bp, unsigned char* rp, uint32 bits)
-{
-#define	PIXEL(buf,ix)	((((buf)[(ix)>>3]) >> (7-((ix)&7))) & 1)
-        uint32 a0 = 0;
-	uint32 a1 = (PIXEL(bp, 0) != 0 ? 0 : finddiff(bp, 0, bits, 0));
-	uint32 b1 = (PIXEL(rp, 0) != 0 ? 0 : finddiff(rp, 0, bits, 0));
-	uint32 a2, b2;
-
-	for (;;) {
-		b2 = finddiff2(rp, b1, bits, PIXEL(rp,b1));
-		if (b2 >= a1) {
-			int32 d = b1 - a1;
-			if (!(-3 <= d && d <= 3)) {	/* horizontal mode */
-				a2 = finddiff2(bp, a1, bits, PIXEL(bp,a1));
-				putcode(tif, &horizcode);
-				if (a0+a1 == 0 || PIXEL(bp, a0) == 0) {
-					putspan(tif, a1-a0, TIFFFaxWhiteCodes);
-					putspan(tif, a2-a1, TIFFFaxBlackCodes);
-				} else {
-					putspan(tif, a1-a0, TIFFFaxBlackCodes);
-					putspan(tif, a2-a1, TIFFFaxWhiteCodes);
-				}
-				a0 = a2;
-			} else {			/* vertical mode */
-				putcode(tif, &vcodes[d+3]);
-				a0 = a1;
-			}
-		} else {				/* pass mode */
-			putcode(tif, &passcode);
-			a0 = b2;
-		}
-		if (a0 >= bits)
-			break;
-		a1 = finddiff(bp, a0, bits, PIXEL(bp,a0));
-		b1 = finddiff(rp, a0, bits, !PIXEL(bp,a0));
-		b1 = finddiff(rp, b1, bits, PIXEL(bp,a0));
-	}
-	return (1);
-#undef PIXEL
-}
-
-/*
- * Encode a buffer of pixels.
- */
-static int
-Fax3Encode(TIFF* tif, tidata_t bp, tsize_t cc, tsample_t s)
-{
-	Fax3CodecState* sp = EncoderState(tif);
-
-	(void) s;
-	while ((long)cc > 0) {
-		if ((sp->b.mode & FAXMODE_NOEOL) == 0)
-			Fax3PutEOL(tif);
-		if (is2DEncoding(sp)) {
-			if (sp->tag == G3_1D) {
-				if (!Fax3Encode1DRow(tif, bp, sp->b.rowpixels))
-					return (0);
-				sp->tag = G3_2D;
-			} else {
-				if (!Fax3Encode2DRow(tif, bp, sp->refline,
-                                                     sp->b.rowpixels))
-					return (0);
-				sp->k--;
-			}
-			if (sp->k == 0) {
-				sp->tag = G3_1D;
-				sp->k = sp->maxk-1;
-			} else
-				_TIFFmemcpy(sp->refline, bp, sp->b.rowbytes);
-		} else {
-			if (!Fax3Encode1DRow(tif, bp, sp->b.rowpixels))
-				return (0);
-		}
-		bp += sp->b.rowbytes;
-		cc -= sp->b.rowbytes;
-	}
-	return (1);
-}
-
-static int
-Fax3PostEncode(TIFF* tif)
-{
-	Fax3CodecState* sp = EncoderState(tif);
-
-	if (sp->bit != 8)
-		Fax3FlushBits(tif, sp);
-	return (1);
-}
-
-static void
-Fax3Close(TIFF* tif)
-{
-	if ((Fax3State(tif)->mode & FAXMODE_NORTC) == 0) {
-		Fax3CodecState* sp = EncoderState(tif);
-		unsigned int code = EOL;
-		unsigned int length = 12;
-		int i;
-
-		if (is2DEncoding(sp))
-			code = (code<<1) | (sp->tag == G3_1D), length++;
-		for (i = 0; i < 6; i++)
-			Fax3PutBits(tif, code, length);
-		Fax3FlushBits(tif, sp);
-	}
-}
-
-static void
-Fax3Cleanup(TIFF* tif)
-{
-	Fax3CodecState* sp = DecoderState(tif);
-	
-	assert(sp != 0);
-
-	tif->tif_tagmethods.vgetfield = sp->b.vgetparent;
-	tif->tif_tagmethods.vsetfield = sp->b.vsetparent;
-
-	if (sp->runs)
-		_TIFFfree(sp->runs);
-	if (sp->refline)
-		_TIFFfree(sp->refline);
-
-	if (Fax3State(tif)->subaddress)
-		_TIFFfree(Fax3State(tif)->subaddress);
-	_TIFFfree(tif->tif_data);
-	tif->tif_data = NULL;
-
-	_TIFFSetDefaultCompressionState(tif);
-}
-
-#define	FIELD_BADFAXLINES	(FIELD_CODEC+0)
-#define	FIELD_CLEANFAXDATA	(FIELD_CODEC+1)
-#define	FIELD_BADFAXRUN		(FIELD_CODEC+2)
-#define	FIELD_RECVPARAMS	(FIELD_CODEC+3)
-#define	FIELD_SUBADDRESS	(FIELD_CODEC+4)
-#define	FIELD_RECVTIME		(FIELD_CODEC+5)
-#define	FIELD_FAXDCS		(FIELD_CODEC+6)
-
-#define	FIELD_OPTIONS		(FIELD_CODEC+7)
-
-static const TIFFFieldInfo faxFieldInfo[] = {
-    { TIFFTAG_FAXMODE,		 0, 0,	TIFF_ANY,	FIELD_PSEUDO,
-      FALSE,	FALSE,	"FaxMode" },
-    { TIFFTAG_FAXFILLFUNC,	 0, 0,	TIFF_ANY,	FIELD_PSEUDO,
-      FALSE,	FALSE,	"FaxFillFunc" },
-    { TIFFTAG_BADFAXLINES,	 1, 1,	TIFF_LONG,	FIELD_BADFAXLINES,
-      TRUE,	FALSE,	"BadFaxLines" },
-    { TIFFTAG_BADFAXLINES,	 1, 1,	TIFF_SHORT,	FIELD_BADFAXLINES,
-      TRUE,	FALSE,	"BadFaxLines" },
-    { TIFFTAG_CLEANFAXDATA,	 1, 1,	TIFF_SHORT,	FIELD_CLEANFAXDATA,
-      TRUE,	FALSE,	"CleanFaxData" },
-    { TIFFTAG_CONSECUTIVEBADFAXLINES,1,1, TIFF_LONG,	FIELD_BADFAXRUN,
-      TRUE,	FALSE,	"ConsecutiveBadFaxLines" },
-    { TIFFTAG_CONSECUTIVEBADFAXLINES,1,1, TIFF_SHORT,	FIELD_BADFAXRUN,
-      TRUE,	FALSE,	"ConsecutiveBadFaxLines" },
-    { TIFFTAG_FAXRECVPARAMS,	 1, 1, TIFF_LONG,	FIELD_RECVPARAMS,
-      TRUE,	FALSE,	"FaxRecvParams" },
-    { TIFFTAG_FAXSUBADDRESS,	-1,-1, TIFF_ASCII,	FIELD_SUBADDRESS,
-      TRUE,	FALSE,	"FaxSubAddress" },
-    { TIFFTAG_FAXRECVTIME,	 1, 1, TIFF_LONG,	FIELD_RECVTIME,
-      TRUE,	FALSE,	"FaxRecvTime" },
-    { TIFFTAG_FAXDCS,		-1,-1, TIFF_ASCII,	FIELD_FAXDCS,
-      TRUE,	FALSE,	"FaxDcs" },
-};
-static const TIFFFieldInfo fax3FieldInfo[] = {
-    { TIFFTAG_GROUP3OPTIONS,	 1, 1,	TIFF_LONG,	FIELD_OPTIONS,
-      FALSE,	FALSE,	"Group3Options" },
-};
-static const TIFFFieldInfo fax4FieldInfo[] = {
-    { TIFFTAG_GROUP4OPTIONS,	 1, 1,	TIFF_LONG,	FIELD_OPTIONS,
-      FALSE,	FALSE,	"Group4Options" },
-};
-#define	N(a)	(sizeof (a) / sizeof (a[0]))
-
-static int
-Fax3VSetField(TIFF* tif, ttag_t tag, va_list ap)
-{
-	Fax3BaseState* sp = Fax3State(tif);
-
-	assert(sp != 0);
-	assert(sp->vsetparent != 0);
-
-	switch (tag) {
-	case TIFFTAG_FAXMODE:
-		sp->mode = va_arg(ap, int);
-		return (1);			/* NB: pseudo tag */
-	case TIFFTAG_FAXFILLFUNC:
-		DecoderState(tif)->fill = va_arg(ap, TIFFFaxFillFunc);
-		return (1);			/* NB: pseudo tag */
-	case TIFFTAG_GROUP3OPTIONS:
-		/* XXX: avoid reading options if compression mismatches. */
-		if (tif->tif_dir.td_compression == COMPRESSION_CCITTFAX3)
-			sp->groupoptions = va_arg(ap, uint32);
-		break;
-	case TIFFTAG_GROUP4OPTIONS:
-		/* XXX: avoid reading options if compression mismatches. */
-		if (tif->tif_dir.td_compression == COMPRESSION_CCITTFAX4)
-			sp->groupoptions = va_arg(ap, uint32);
-		break;
-	case TIFFTAG_BADFAXLINES:
-		sp->badfaxlines = va_arg(ap, uint32);
-		break;
-	case TIFFTAG_CLEANFAXDATA:
-		sp->cleanfaxdata = (uint16) va_arg(ap, int);
-		break;
-	case TIFFTAG_CONSECUTIVEBADFAXLINES:
-		sp->badfaxrun = va_arg(ap, uint32);
-		break;
-	case TIFFTAG_FAXRECVPARAMS:
-		sp->recvparams = va_arg(ap, uint32);
-		break;
-	case TIFFTAG_FAXSUBADDRESS:
-		_TIFFsetString(&sp->subaddress, va_arg(ap, char*));
-		break;
-	case TIFFTAG_FAXRECVTIME:
-		sp->recvtime = va_arg(ap, uint32);
-		break;
-	case TIFFTAG_FAXDCS:
-		_TIFFsetString(&sp->faxdcs, va_arg(ap, char*));
-		break;
-	default:
-		return (*sp->vsetparent)(tif, tag, ap);
-	}
-	TIFFSetFieldBit(tif, _TIFFFieldWithTag(tif, tag)->field_bit);
-	tif->tif_flags |= TIFF_DIRTYDIRECT;
-	return (1);
-}
-
-static int
-Fax3VGetField(TIFF* tif, ttag_t tag, va_list ap)
-{
-	Fax3BaseState* sp = Fax3State(tif);
-
-	switch (tag) {
-	case TIFFTAG_FAXMODE:
-		*va_arg(ap, int*) = sp->mode;
-		break;
-	case TIFFTAG_FAXFILLFUNC:
-		*va_arg(ap, TIFFFaxFillFunc*) = DecoderState(tif)->fill;
-		break;
-	case TIFFTAG_GROUP3OPTIONS:
-	case TIFFTAG_GROUP4OPTIONS:
-		*va_arg(ap, uint32*) = sp->groupoptions;
-		break;
-	case TIFFTAG_BADFAXLINES:
-		*va_arg(ap, uint32*) = sp->badfaxlines;
-		break;
-	case TIFFTAG_CLEANFAXDATA:
-		*va_arg(ap, uint16*) = sp->cleanfaxdata;
-		break;
-	case TIFFTAG_CONSECUTIVEBADFAXLINES:
-		*va_arg(ap, uint32*) = sp->badfaxrun;
-		break;
-	case TIFFTAG_FAXRECVPARAMS:
-		*va_arg(ap, uint32*) = sp->recvparams;
-		break;
-	case TIFFTAG_FAXSUBADDRESS:
-		*va_arg(ap, char**) = sp->subaddress;
-		break;
-	case TIFFTAG_FAXRECVTIME:
-		*va_arg(ap, uint32*) = sp->recvtime;
-		break;
-	case TIFFTAG_FAXDCS:
-		*va_arg(ap, char**) = sp->faxdcs;
-		break;
-	default:
-		return (*sp->vgetparent)(tif, tag, ap);
-	}
-	return (1);
-}
-
-static void
-Fax3PrintDir(TIFF* tif, FILE* fd, long flags)
-{
-	Fax3BaseState* sp = Fax3State(tif);
-
-	(void) flags;
-	if (TIFFFieldSet(tif,FIELD_OPTIONS)) {
-		const char* sep = " ";
-		if (tif->tif_dir.td_compression == COMPRESSION_CCITTFAX4) {
-			fprintf(fd, "  Group 4 Options:");
-			if (sp->groupoptions & GROUP4OPT_UNCOMPRESSED)
-				fprintf(fd, "%suncompressed data", sep);
-		} else {
-
-			fprintf(fd, "  Group 3 Options:");
-			if (sp->groupoptions & GROUP3OPT_2DENCODING)
-				fprintf(fd, "%s2-d encoding", sep), sep = "+";
-			if (sp->groupoptions & GROUP3OPT_FILLBITS)
-				fprintf(fd, "%sEOL padding", sep), sep = "+";
-			if (sp->groupoptions & GROUP3OPT_UNCOMPRESSED)
-				fprintf(fd, "%suncompressed data", sep);
-		}
-		fprintf(fd, " (%lu = 0x%lx)\n",
-                        (unsigned long) sp->groupoptions,
-                        (unsigned long) sp->groupoptions);
-	}
-	if (TIFFFieldSet(tif,FIELD_CLEANFAXDATA)) {
-		fprintf(fd, "  Fax Data:");
-		switch (sp->cleanfaxdata) {
-		case CLEANFAXDATA_CLEAN:
-			fprintf(fd, " clean");
-			break;
-		case CLEANFAXDATA_REGENERATED:
-			fprintf(fd, " receiver regenerated");
-			break;
-		case CLEANFAXDATA_UNCLEAN:
-			fprintf(fd, " uncorrected errors");
-			break;
-		}
-		fprintf(fd, " (%u = 0x%x)\n",
-		    sp->cleanfaxdata, sp->cleanfaxdata);
-	}
-	if (TIFFFieldSet(tif,FIELD_BADFAXLINES))
-		fprintf(fd, "  Bad Fax Lines: %lu\n",
-                        (unsigned long) sp->badfaxlines);
-	if (TIFFFieldSet(tif,FIELD_BADFAXRUN))
-		fprintf(fd, "  Consecutive Bad Fax Lines: %lu\n",
-		    (unsigned long) sp->badfaxrun);
-	if (TIFFFieldSet(tif,FIELD_RECVPARAMS))
-		fprintf(fd, "  Fax Receive Parameters: %08lx\n",
-		   (unsigned long) sp->recvparams);
-	if (TIFFFieldSet(tif,FIELD_SUBADDRESS))
-		fprintf(fd, "  Fax SubAddress: %s\n", sp->subaddress);
-	if (TIFFFieldSet(tif,FIELD_RECVTIME))
-		fprintf(fd, "  Fax Receive Time: %lu secs\n",
-		    (unsigned long) sp->recvtime);
-	if (TIFFFieldSet(tif,FIELD_FAXDCS))
-		fprintf(fd, "  Fax DCS: %s\n", sp->faxdcs);
-}
-
-static int
-InitCCITTFax3(TIFF* tif)
-{
-	Fax3BaseState* sp;
-
-	/*
-	 * Allocate state block so tag methods have storage to record values.
-	 */
-	tif->tif_data = (tidata_t)
-		_TIFFmalloc(sizeof (Fax3CodecState));
-
-	if (tif->tif_data == NULL) {
-		TIFFErrorExt(tif->tif_clientdata, "TIFFInitCCITTFax3",
-		    "%s: No space for state block", tif->tif_name);
-		return (0);
-	}
-
-	sp = Fax3State(tif);
-        sp->rw_mode = tif->tif_mode;
-
-	/*
-	 * Merge codec-specific tag information and
-	 * override parent get/set field methods.
-	 */
-	_TIFFMergeFieldInfo(tif, faxFieldInfo, N(faxFieldInfo));
-	sp->vgetparent = tif->tif_tagmethods.vgetfield;
-	tif->tif_tagmethods.vgetfield = Fax3VGetField; /* hook for codec tags */
-	sp->vsetparent = tif->tif_tagmethods.vsetfield;
-	tif->tif_tagmethods.vsetfield = Fax3VSetField; /* hook for codec tags */
-	tif->tif_tagmethods.printdir = Fax3PrintDir;   /* hook for codec tags */
-	sp->groupoptions = 0;	
-	sp->recvparams = 0;
-	sp->subaddress = NULL;
-	sp->faxdcs = NULL;
-
-	if (sp->rw_mode == O_RDONLY) /* FIXME: improve for in place update */
-		tif->tif_flags |= TIFF_NOBITREV; /* decoder does bit reversal */
-	DecoderState(tif)->runs = NULL;
-	TIFFSetField(tif, TIFFTAG_FAXFILLFUNC, _TIFFFax3fillruns);
-	EncoderState(tif)->refline = NULL;
-
-	/*
-	 * Install codec methods.
-	 */
-	tif->tif_setupdecode = Fax3SetupState;
-	tif->tif_predecode = Fax3PreDecode;
-	tif->tif_decoderow = Fax3Decode1D;
-	tif->tif_decodestrip = Fax3Decode1D;
-	tif->tif_decodetile = Fax3Decode1D;
-	tif->tif_setupencode = Fax3SetupState;
-	tif->tif_preencode = Fax3PreEncode;
-	tif->tif_postencode = Fax3PostEncode;
-	tif->tif_encoderow = Fax3Encode;
-	tif->tif_encodestrip = Fax3Encode;
-	tif->tif_encodetile = Fax3Encode;
-	tif->tif_close = Fax3Close;
-	tif->tif_cleanup = Fax3Cleanup;
-
-	return (1);
-}
-
-int
-TIFFInitCCITTFax3(TIFF* tif, int scheme)
-{
-	(void) scheme;
-	if (InitCCITTFax3(tif)) {
-		_TIFFMergeFieldInfo(tif, fax3FieldInfo, N(fax3FieldInfo));
-
-		/*
-		 * The default format is Class/F-style w/o RTC.
-		 */
-		return TIFFSetField(tif, TIFFTAG_FAXMODE, FAXMODE_CLASSF);
-	} else
-		return (0);
-}
-
-/*
- * CCITT Group 4 (T.6) Facsimile-compatible
- * Compression Scheme Support.
- */
-
-#define	SWAP(t,a,b)	{ t x; x = (a); (a) = (b); (b) = x; }
-/*
- * Decode the requested amount of G4-encoded data.
- */
-static int
-Fax4Decode(TIFF* tif, tidata_t buf, tsize_t occ, tsample_t s)
-{
-	DECLARE_STATE_2D(tif, sp, "Fax4Decode");
-        int line = 0;
-
-	(void) s;
-	CACHE_STATE(tif, sp);
-	while ((long)occ > 0) {
-		a0 = 0;
-		RunLength = 0;
-		pa = thisrun = sp->curruns;
-		pb = sp->refruns;
-		b1 = *pb++;
-#ifdef FAX3_DEBUG
-		printf("\nBitAcc=%08X, BitsAvail = %d\n", BitAcc, BitsAvail);
-		printf("-------------------- %d\n", tif->tif_row);
-		fflush(stdout);
-#endif
-		EXPAND2D(EOFG4);
-                if (EOLcnt)
-                    goto EOFG4;
-		(*sp->fill)(buf, thisrun, pa, lastx);
-		SETVALUE(0);		/* imaginary change for reference */
-		SWAP(uint32*, sp->curruns, sp->refruns);
-		buf += sp->b.rowbytes;
-		occ -= sp->b.rowbytes;
-                line++;
-		continue;
-	EOFG4:
-                NeedBits16( 13, BADG4 );
-        BADG4:
-#ifdef FAX3_DEBUG
-                if( GetBits(13) != 0x1001 )
-                    fputs( "Bad RTC\n", stderr );
-#endif                
-                ClrBits( 13 );
-		(*sp->fill)(buf, thisrun, pa, lastx);
-		UNCACHE_STATE(tif, sp);
-		return (-1);
-	}
-	UNCACHE_STATE(tif, sp);
-	return (1);
-}
-#undef	SWAP
-
-/*
- * Encode the requested amount of data.
- */
-static int
-Fax4Encode(TIFF* tif, tidata_t bp, tsize_t cc, tsample_t s)
-{
-	Fax3CodecState *sp = EncoderState(tif);
-
-	(void) s;
-	while ((long)cc > 0) {
-		if (!Fax3Encode2DRow(tif, bp, sp->refline, sp->b.rowpixels))
-			return (0);
-		_TIFFmemcpy(sp->refline, bp, sp->b.rowbytes);
-		bp += sp->b.rowbytes;
-		cc -= sp->b.rowbytes;
-	}
-	return (1);
-}
-
-static int
-Fax4PostEncode(TIFF* tif)
-{
-	Fax3CodecState *sp = EncoderState(tif);
-
-	/* terminate strip w/ EOFB */
-	Fax3PutBits(tif, EOL, 12);
-	Fax3PutBits(tif, EOL, 12);
-	if (sp->bit != 8)
-		Fax3FlushBits(tif, sp);
-	return (1);
-}
-
-int
-TIFFInitCCITTFax4(TIFF* tif, int scheme)
-{
-	(void) scheme;
-	if (InitCCITTFax3(tif)) {		/* reuse G3 support */
-		_TIFFMergeFieldInfo(tif, fax4FieldInfo, N(fax4FieldInfo));
-
-		tif->tif_decoderow = Fax4Decode;
-		tif->tif_decodestrip = Fax4Decode;
-		tif->tif_decodetile = Fax4Decode;
-		tif->tif_encoderow = Fax4Encode;
-		tif->tif_encodestrip = Fax4Encode;
-		tif->tif_encodetile = Fax4Encode;
-		tif->tif_postencode = Fax4PostEncode;
-		/*
-		 * Suppress RTC at the end of each strip.
-		 */
-		return TIFFSetField(tif, TIFFTAG_FAXMODE, FAXMODE_NORTC);
-	} else
-		return (0);
-}
-
-/*
- * CCITT Group 3 1-D Modified Huffman RLE Compression Support.
- * (Compression algorithms 2 and 32771)
- */
-
-/*
- * Decode the requested amount of RLE-encoded data.
- */
-static int
-Fax3DecodeRLE(TIFF* tif, tidata_t buf, tsize_t occ, tsample_t s)
-{
-	DECLARE_STATE(tif, sp, "Fax3DecodeRLE");
-	int mode = sp->b.mode;
-        int line = 0;
-
-	(void) s;
-	CACHE_STATE(tif, sp);
-	thisrun = sp->curruns;
-	while ((long)occ > 0) {
-		a0 = 0;
-		RunLength = 0;
-		pa = thisrun;
-#ifdef FAX3_DEBUG
-		printf("\nBitAcc=%08X, BitsAvail = %d\n", BitAcc, BitsAvail);
-		printf("-------------------- %d\n", tif->tif_row);
-		fflush(stdout);
-#endif
-		EXPAND1D(EOFRLE);
-		(*sp->fill)(buf, thisrun, pa, lastx);
-		/*
-		 * Cleanup at the end of the row.
-		 */
-		if (mode & FAXMODE_BYTEALIGN) {
-			int n = BitsAvail - (BitsAvail &~ 7);
-			ClrBits(n);
-		} else if (mode & FAXMODE_WORDALIGN) {
-			int n = BitsAvail - (BitsAvail &~ 15);
-			ClrBits(n);
-			if (BitsAvail == 0 && !isAligned(cp, uint16))
-			    cp++;
-		}
-		buf += sp->b.rowbytes;
-		occ -= sp->b.rowbytes;
-                line++;
-		continue;
-	EOFRLE:				/* premature EOF */
-		(*sp->fill)(buf, thisrun, pa, lastx);
-		UNCACHE_STATE(tif, sp);
-		return (-1);
-	}
-	UNCACHE_STATE(tif, sp);
-	return (1);
-}
-
-int
-TIFFInitCCITTRLE(TIFF* tif, int scheme)
-{
-	(void) scheme;
-	if (InitCCITTFax3(tif)) {		/* reuse G3 support */
-		tif->tif_decoderow = Fax3DecodeRLE;
-		tif->tif_decodestrip = Fax3DecodeRLE;
-		tif->tif_decodetile = Fax3DecodeRLE;
-		/*
-		 * Suppress RTC+EOLs when encoding and byte-align data.
-		 */
-		return TIFFSetField(tif, TIFFTAG_FAXMODE,
-		    FAXMODE_NORTC|FAXMODE_NOEOL|FAXMODE_BYTEALIGN);
-	} else
-		return (0);
-}
-
-int
-TIFFInitCCITTRLEW(TIFF* tif, int scheme)
-{
-	(void) scheme;
-	if (InitCCITTFax3(tif)) {		/* reuse G3 support */
-		tif->tif_decoderow = Fax3DecodeRLE;
-		tif->tif_decodestrip = Fax3DecodeRLE;
-		tif->tif_decodetile = Fax3DecodeRLE;
-		/*
-		 * Suppress RTC+EOLs when encoding and word-align data.
-		 */
-		return TIFFSetField(tif, TIFFTAG_FAXMODE,
-		    FAXMODE_NORTC|FAXMODE_NOEOL|FAXMODE_WORDALIGN);
-	} else
-		return (0);
-}
-#endif /* CCITT_SUPPORT */
-
-/* vim: set ts=8 sts=8 sw=8 noet: */
diff --git a/src/tiff/tif_fax3.h b/src/tiff/tif_fax3.h
deleted file mode 100644
index e5e1b80..0000000
--- a/src/tiff/tif_fax3.h
+++ /dev/null
@@ -1,525 +0,0 @@
-/* $Id: tif_fax3.h 4825 2006-08-16 13:01:53Z lubia $ */
-
-/*
- * Copyright (c) 1990-1997 Sam Leffler
- * Copyright (c) 1991-1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and 
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- * 
- * 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 SAM LEFFLER OR SILICON GRAPHICS 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.
- */
-
-#ifndef _FAX3_
-#define	_FAX3_
-/*
- * TIFF Library.
- *
- * CCITT Group 3 (T.4) and Group 4 (T.6) Decompression Support.
- *
- * Decoder support is derived, with permission, from the code
- * in Frank Cringle's viewfax program;
- *      Copyright (C) 1990, 1995  Frank D. Cringle.
- */
-#include "tiff.h"
-
-/*
- * To override the default routine used to image decoded
- * spans one can use the pseduo tag TIFFTAG_FAXFILLFUNC.
- * The routine must have the type signature given below;
- * for example:
- *
- * fillruns(unsigned char* buf, uint32* runs, uint32* erun, uint32 lastx)
- *
- * where buf is place to set the bits, runs is the array of b&w run
- * lengths (white then black), erun is the last run in the array, and
- * lastx is the width of the row in pixels.  Fill routines can assume
- * the run array has room for at least lastx runs and can overwrite
- * data in the run array as needed (e.g. to append zero runs to bring
- * the count up to a nice multiple).
- */
-typedef	void (*TIFFFaxFillFunc)(unsigned char*, uint32*, uint32*, uint32);
-
-/*
- * The default run filler; made external for other decoders.
- */
-#if defined(__cplusplus)
-extern "C" {
-#endif
-extern	void _TIFFFax3fillruns(unsigned char*, uint32*, uint32*, uint32);
-#if defined(__cplusplus)
-}
-#endif
-
-
-/* finite state machine codes */
-#define S_Null		0
-#define S_Pass		1
-#define S_Horiz		2
-#define S_V0		3
-#define S_VR		4
-#define S_VL		5
-#define S_Ext		6
-#define S_TermW		7
-#define S_TermB		8
-#define S_MakeUpW	9
-#define S_MakeUpB	10
-#define S_MakeUp	11
-#define S_EOL		12
-
-typedef struct {		/* state table entry */
-	unsigned char State;	/* see above */
-	unsigned char Width;	/* width of code in bits */
-	uint32	Param;		/* unsigned 32-bit run length in bits */
-} TIFFFaxTabEnt;
-
-extern	const TIFFFaxTabEnt TIFFFaxMainTable[];
-extern	const TIFFFaxTabEnt TIFFFaxWhiteTable[];
-extern	const TIFFFaxTabEnt TIFFFaxBlackTable[];
-
-/*
- * The following macros define the majority of the G3/G4 decoder
- * algorithm using the state tables defined elsewhere.  To build
- * a decoder you need some setup code and some glue code. Note
- * that you may also need/want to change the way the NeedBits*
- * macros get input data if, for example, you know the data to be
- * decoded is properly aligned and oriented (doing so before running
- * the decoder can be a big performance win).
- *
- * Consult the decoder in the TIFF library for an idea of what you
- * need to define and setup to make use of these definitions.
- *
- * NB: to enable a debugging version of these macros define FAX3_DEBUG
- *     before including this file.  Trace output goes to stdout.
- */
-
-#ifndef EndOfData
-#define EndOfData()	(cp >= ep)
-#endif
-/*
- * Need <=8 or <=16 bits of input data.  Unlike viewfax we
- * cannot use/assume a word-aligned, properly bit swizzled
- * input data set because data may come from an arbitrarily
- * aligned, read-only source such as a memory-mapped file.
- * Note also that the viewfax decoder does not check for
- * running off the end of the input data buffer.  This is
- * possible for G3-encoded data because it prescans the input
- * data to count EOL markers, but can cause problems for G4
- * data.  In any event, we don't prescan and must watch for
- * running out of data since we can't permit the library to
- * scan past the end of the input data buffer.
- *
- * Finally, note that we must handle remaindered data at the end
- * of a strip specially.  The coder asks for a fixed number of
- * bits when scanning for the next code.  This may be more bits
- * than are actually present in the data stream.  If we appear
- * to run out of data but still have some number of valid bits
- * remaining then we makeup the requested amount with zeros and
- * return successfully.  If the returned data is incorrect then
- * we should be called again and get a premature EOF error;
- * otherwise we should get the right answer.
- */
-#ifndef NeedBits8
-#define NeedBits8(n,eoflab) do {					\
-    if (BitsAvail < (n)) {						\
-	if (EndOfData()) {						\
-	    if (BitsAvail == 0)			/* no valid bits */	\
-		goto eoflab;						\
-	    BitsAvail = (n);			/* pad with zeros */	\
-	} else {							\
-	    BitAcc |= ((uint32) bitmap[*cp++])<<BitsAvail;		\
-	    BitsAvail += 8;						\
-	}								\
-    }									\
-} while (0)
-#endif
-#ifndef NeedBits16
-#define NeedBits16(n,eoflab) do {					\
-    if (BitsAvail < (n)) {						\
-	if (EndOfData()) {						\
-	    if (BitsAvail == 0)			/* no valid bits */	\
-		goto eoflab;						\
-	    BitsAvail = (n);			/* pad with zeros */	\
-	} else {							\
-	    BitAcc |= ((uint32) bitmap[*cp++])<<BitsAvail;		\
-	    if ((BitsAvail += 8) < (n)) {				\
-		if (EndOfData()) {					\
-		    /* NB: we know BitsAvail is non-zero here */	\
-		    BitsAvail = (n);		/* pad with zeros */	\
-		} else {						\
-		    BitAcc |= ((uint32) bitmap[*cp++])<<BitsAvail;	\
-		    BitsAvail += 8;					\
-		}							\
-	    }								\
-	}								\
-    }									\
-} while (0)
-#endif
-#define GetBits(n)	(BitAcc & ((1<<(n))-1))
-#define ClrBits(n) do {							\
-    BitsAvail -= (n);							\
-    BitAcc >>= (n);							\
-} while (0)
-
-#ifdef FAX3_DEBUG
-static const char* StateNames[] = {
-    "Null   ",
-    "Pass   ",
-    "Horiz  ",
-    "V0     ",
-    "VR     ",
-    "VL     ",
-    "Ext    ",
-    "TermW  ",
-    "TermB  ",
-    "MakeUpW",
-    "MakeUpB",
-    "MakeUp ",
-    "EOL    ",
-};
-#define DEBUG_SHOW putchar(BitAcc & (1 << t) ? '1' : '0')
-#define LOOKUP8(wid,tab,eoflab) do {					\
-    int t;								\
-    NeedBits8(wid,eoflab);						\
-    TabEnt = tab + GetBits(wid);					\
-    printf("%08lX/%d: %s%5d\t", (long) BitAcc, BitsAvail,		\
-	   StateNames[TabEnt->State], TabEnt->Param);			\
-    for (t = 0; t < TabEnt->Width; t++)					\
-	DEBUG_SHOW;							\
-    putchar('\n');							\
-    fflush(stdout);							\
-    ClrBits(TabEnt->Width);						\
-} while (0)
-#define LOOKUP16(wid,tab,eoflab) do {					\
-    int t;								\
-    NeedBits16(wid,eoflab);						\
-    TabEnt = tab + GetBits(wid);					\
-    printf("%08lX/%d: %s%5d\t", (long) BitAcc, BitsAvail,		\
-	   StateNames[TabEnt->State], TabEnt->Param);			\
-    for (t = 0; t < TabEnt->Width; t++)					\
-	DEBUG_SHOW;							\
-    putchar('\n');							\
-    fflush(stdout);							\
-    ClrBits(TabEnt->Width);						\
-} while (0)
-
-#define SETVALUE(x) do {							\
-    *pa++ = RunLength + (x);						\
-    printf("SETVALUE: %d\t%d\n", RunLength + (x), a0);			\
-    a0 += x;								\
-    RunLength = 0;							\
-} while (0)
-#else
-#define LOOKUP8(wid,tab,eoflab) do {					\
-    NeedBits8(wid,eoflab);						\
-    TabEnt = tab + GetBits(wid);					\
-    ClrBits(TabEnt->Width);						\
-} while (0)
-#define LOOKUP16(wid,tab,eoflab) do {					\
-    NeedBits16(wid,eoflab);						\
-    TabEnt = tab + GetBits(wid);					\
-    ClrBits(TabEnt->Width);						\
-} while (0)
-
-/*
- * Append a run to the run length array for the
- * current row and reset decoding state.
- */
-#define SETVALUE(x) do {							\
-    *pa++ = RunLength + (x);						\
-    a0 += (x);								\
-    RunLength = 0;							\
-} while (0)
-#endif
-
-/*
- * Synchronize input decoding at the start of each
- * row by scanning for an EOL (if appropriate) and
- * skipping any trash data that might be present
- * after a decoding error.  Note that the decoding
- * done elsewhere that recognizes an EOL only consumes
- * 11 consecutive zero bits.  This means that if EOLcnt
- * is non-zero then we still need to scan for the final flag
- * bit that is part of the EOL code.
- */
-#define	SYNC_EOL(eoflab) do {						\
-    if (EOLcnt == 0) {							\
-	for (;;) {							\
-	    NeedBits16(11,eoflab);					\
-	    if (GetBits(11) == 0)					\
-		break;							\
-	    ClrBits(1);							\
-	}								\
-    }									\
-    for (;;) {								\
-	NeedBits8(8,eoflab);						\
-	if (GetBits(8))							\
-	    break;							\
-	ClrBits(8);							\
-    }									\
-    while (GetBits(1) == 0)						\
-	ClrBits(1);							\
-    ClrBits(1);				/* EOL bit */			\
-    EOLcnt = 0;				/* reset EOL counter/flag */	\
-} while (0)
-
-/*
- * Cleanup the array of runs after decoding a row.
- * We adjust final runs to insure the user buffer is not
- * overwritten and/or undecoded area is white filled.
- */
-#define	CLEANUP_RUNS() do {						\
-    if (RunLength)							\
-	SETVALUE(0);							\
-    if (a0 != lastx) {							\
-	badlength(a0, lastx);						\
-	while (a0 > lastx && pa > thisrun)				\
-	    a0 -= *--pa;						\
-	if (a0 < lastx) {						\
-	    if (a0 < 0)							\
-		a0 = 0;							\
-	    if ((pa-thisrun)&1)						\
-		SETVALUE(0);						\
-	    SETVALUE(lastx - a0);						\
-	} else if (a0 > lastx) {					\
-	    SETVALUE(lastx);						\
-	    SETVALUE(0);							\
-	}								\
-    }									\
-} while (0)
-
-/*
- * Decode a line of 1D-encoded data.
- *
- * The line expanders are written as macros so that they can be reused
- * but still have direct access to the local variables of the "calling"
- * function.
- *
- * Note that unlike the original version we have to explicitly test for
- * a0 >= lastx after each black/white run is decoded.  This is because
- * the original code depended on the input data being zero-padded to
- * insure the decoder recognized an EOL before running out of data.
- */
-#define EXPAND1D(eoflab) do {						\
-    for (;;) {								\
-	for (;;) {							\
-	    LOOKUP16(12, TIFFFaxWhiteTable, eof1d);			\
-	    switch (TabEnt->State) {					\
-	    case S_EOL:							\
-		EOLcnt = 1;						\
-		goto done1d;						\
-	    case S_TermW:						\
-		SETVALUE(TabEnt->Param);					\
-		goto doneWhite1d;					\
-	    case S_MakeUpW:						\
-	    case S_MakeUp:						\
-		a0 += TabEnt->Param;					\
-		RunLength += TabEnt->Param;				\
-		break;							\
-	    default:							\
-		unexpected("WhiteTable", a0);				\
-		goto done1d;						\
-	    }								\
-	}								\
-    doneWhite1d:							\
-	if (a0 >= lastx)						\
-	    goto done1d;						\
-	for (;;) {							\
-	    LOOKUP16(13, TIFFFaxBlackTable, eof1d);			\
-	    switch (TabEnt->State) {					\
-	    case S_EOL:							\
-		EOLcnt = 1;						\
-		goto done1d;						\
-	    case S_TermB:						\
-		SETVALUE(TabEnt->Param);					\
-		goto doneBlack1d;					\
-	    case S_MakeUpB:						\
-	    case S_MakeUp:						\
-		a0 += TabEnt->Param;					\
-		RunLength += TabEnt->Param;				\
-		break;							\
-	    default:							\
-		unexpected("BlackTable", a0);				\
-		goto done1d;						\
-	    }								\
-	}								\
-    doneBlack1d:							\
-	if (a0 >= lastx)						\
-	    goto done1d;						\
-        if( *(pa-1) == 0 && *(pa-2) == 0 )				\
-            pa -= 2;                                                    \
-    }									\
-eof1d:									\
-    prematureEOF(a0);							\
-    CLEANUP_RUNS();							\
-    goto eoflab;							\
-done1d:									\
-    CLEANUP_RUNS();							\
-} while (0)
-
-/*
- * Update the value of b1 using the array
- * of runs for the reference line.
- */
-#define CHECK_b1 do {							\
-    if (pa != thisrun) while (b1 <= a0 && b1 < lastx) {			\
-	b1 += pb[0] + pb[1];						\
-	pb += 2;							\
-    }									\
-} while (0)
-
-/*
- * Expand a row of 2D-encoded data.
- */
-#define EXPAND2D(eoflab) do {						\
-    while (a0 < lastx) {						\
-	LOOKUP8(7, TIFFFaxMainTable, eof2d);				\
-	switch (TabEnt->State) {					\
-	case S_Pass:							\
-	    CHECK_b1;							\
-	    b1 += *pb++;						\
-	    RunLength += b1 - a0;					\
-	    a0 = b1;							\
-	    b1 += *pb++;						\
-	    break;							\
-	case S_Horiz:							\
-	    if ((pa-thisrun)&1) {					\
-		for (;;) {	/* black first */			\
-		    LOOKUP16(13, TIFFFaxBlackTable, eof2d);		\
-		    switch (TabEnt->State) {				\
-		    case S_TermB:					\
-			SETVALUE(TabEnt->Param);				\
-			goto doneWhite2da;				\
-		    case S_MakeUpB:					\
-		    case S_MakeUp:					\
-			a0 += TabEnt->Param;				\
-			RunLength += TabEnt->Param;			\
-			break;						\
-		    default:						\
-			goto badBlack2d;				\
-		    }							\
-		}							\
-	    doneWhite2da:;						\
-		for (;;) {	/* then white */			\
-		    LOOKUP16(12, TIFFFaxWhiteTable, eof2d);		\
-		    switch (TabEnt->State) {				\
-		    case S_TermW:					\
-			SETVALUE(TabEnt->Param);				\
-			goto doneBlack2da;				\
-		    case S_MakeUpW:					\
-		    case S_MakeUp:					\
-			a0 += TabEnt->Param;				\
-			RunLength += TabEnt->Param;			\
-			break;						\
-		    default:						\
-			goto badWhite2d;				\
-		    }							\
-		}							\
-	    doneBlack2da:;						\
-	    } else {							\
-		for (;;) {	/* white first */			\
-		    LOOKUP16(12, TIFFFaxWhiteTable, eof2d);		\
-		    switch (TabEnt->State) {				\
-		    case S_TermW:					\
-			SETVALUE(TabEnt->Param);				\
-			goto doneWhite2db;				\
-		    case S_MakeUpW:					\
-		    case S_MakeUp:					\
-			a0 += TabEnt->Param;				\
-			RunLength += TabEnt->Param;			\
-			break;						\
-		    default:						\
-			goto badWhite2d;				\
-		    }							\
-		}							\
-	    doneWhite2db:;						\
-		for (;;) {	/* then black */			\
-		    LOOKUP16(13, TIFFFaxBlackTable, eof2d);		\
-		    switch (TabEnt->State) {				\
-		    case S_TermB:					\
-			SETVALUE(TabEnt->Param);				\
-			goto doneBlack2db;				\
-		    case S_MakeUpB:					\
-		    case S_MakeUp:					\
-			a0 += TabEnt->Param;				\
-			RunLength += TabEnt->Param;			\
-			break;						\
-		    default:						\
-			goto badBlack2d;				\
-		    }							\
-		}							\
-	    doneBlack2db:;						\
-	    }								\
-	    CHECK_b1;							\
-	    break;							\
-	case S_V0:							\
-	    CHECK_b1;							\
-	    SETVALUE(b1 - a0);						\
-	    b1 += *pb++;						\
-	    break;							\
-	case S_VR:							\
-	    CHECK_b1;							\
-	    SETVALUE(b1 - a0 + TabEnt->Param);				\
-	    b1 += *pb++;						\
-	    break;							\
-	case S_VL:							\
-	    CHECK_b1;							\
-	    SETVALUE(b1 - a0 - TabEnt->Param);				\
-	    b1 -= *--pb;						\
-	    break;							\
-	case S_Ext:							\
-	    *pa++ = lastx - a0;						\
-	    extension(a0);						\
-	    goto eol2d;							\
-	case S_EOL:							\
-	    *pa++ = lastx - a0;						\
-	    NeedBits8(4,eof2d);						\
-	    if (GetBits(4))						\
-		unexpected("EOL", a0);					\
-            ClrBits(4);                                                 \
-	    EOLcnt = 1;							\
-	    goto eol2d;							\
-	default:							\
-	badMain2d:							\
-	    unexpected("MainTable", a0);				\
-	    goto eol2d;							\
-	badBlack2d:							\
-	    unexpected("BlackTable", a0);				\
-	    goto eol2d;							\
-	badWhite2d:							\
-	    unexpected("WhiteTable", a0);				\
-	    goto eol2d;							\
-	eof2d:								\
-	    prematureEOF(a0);						\
-	    CLEANUP_RUNS();						\
-	    goto eoflab;						\
-	}								\
-    }									\
-    if (RunLength) {							\
-	if (RunLength + a0 < lastx) {					\
-	    /* expect a final V0 */					\
-	    NeedBits8(1,eof2d);						\
-	    if (!GetBits(1))						\
-		goto badMain2d;						\
-	    ClrBits(1);							\
-	}								\
-	SETVALUE(0);							\
-    }									\
-eol2d:									\
-    CLEANUP_RUNS();							\
-} while (0)
-#endif /* _FAX3_ */
diff --git a/src/tiff/tif_fax3sm.c b/src/tiff/tif_fax3sm.c
deleted file mode 100644
index 5f9bf3f..0000000
--- a/src/tiff/tif_fax3sm.c
+++ /dev/null
@@ -1,1253 +0,0 @@
-/* WARNING, this file was automatically generated by the
-    mkg3states program */
-#include "tiff.h"
-#include "tif_fax3.h"
- const TIFFFaxTabEnt TIFFFaxMainTable[128] = {
-{12,7,0},{3,1,0},{5,3,1},{3,1,0},{2,3,0},{3,1,0},{4,3,1},{3,1,0},{1,4,0},{3,1,0},
-{5,3,1},{3,1,0},{2,3,0},{3,1,0},{4,3,1},{3,1,0},{5,6,2},{3,1,0},{5,3,1},{3,1,0},
-{2,3,0},{3,1,0},{4,3,1},{3,1,0},{1,4,0},{3,1,0},{5,3,1},{3,1,0},{2,3,0},{3,1,0},
-{4,3,1},{3,1,0},{5,7,3},{3,1,0},{5,3,1},{3,1,0},{2,3,0},{3,1,0},{4,3,1},{3,1,0},
-{1,4,0},{3,1,0},{5,3,1},{3,1,0},{2,3,0},{3,1,0},{4,3,1},{3,1,0},{4,6,2},{3,1,0},
-{5,3,1},{3,1,0},{2,3,0},{3,1,0},{4,3,1},{3,1,0},{1,4,0},{3,1,0},{5,3,1},{3,1,0},
-{2,3,0},{3,1,0},{4,3,1},{3,1,0},{6,7,0},{3,1,0},{5,3,1},{3,1,0},{2,3,0},{3,1,0},
-{4,3,1},{3,1,0},{1,4,0},{3,1,0},{5,3,1},{3,1,0},{2,3,0},{3,1,0},{4,3,1},{3,1,0},
-{5,6,2},{3,1,0},{5,3,1},{3,1,0},{2,3,0},{3,1,0},{4,3,1},{3,1,0},{1,4,0},{3,1,0},
-{5,3,1},{3,1,0},{2,3,0},{3,1,0},{4,3,1},{3,1,0},{4,7,3},{3,1,0},{5,3,1},{3,1,0},
-{2,3,0},{3,1,0},{4,3,1},{3,1,0},{1,4,0},{3,1,0},{5,3,1},{3,1,0},{2,3,0},{3,1,0},
-{4,3,1},{3,1,0},{4,6,2},{3,1,0},{5,3,1},{3,1,0},{2,3,0},{3,1,0},{4,3,1},{3,1,0},
-{1,4,0},{3,1,0},{5,3,1},{3,1,0},{2,3,0},{3,1,0},{4,3,1},{3,1,0}
-};
- const TIFFFaxTabEnt TIFFFaxWhiteTable[4096] = {
-{12,11,0},{7,4,3},{7,5,11},{7,4,5},{7,6,12},{7,5,9},{9,6,1664},{7,4,6},{7,7,20},{9,5,128},
-{7,7,24},{7,6,14},{7,7,28},{7,4,4},{7,4,2},{7,4,7},{7,7,23},{7,4,3},{7,7,27},{7,4,5},
-{7,8,39},{7,6,16},{9,8,576},{7,4,6},{7,7,19},{7,5,8},{7,8,55},{9,5,64},{7,5,10},{7,4,4},
-{7,4,2},{7,4,7},{7,8,45},{7,4,3},{7,5,11},{7,4,5},{7,8,53},{7,5,9},{9,8,448},{7,4,6},
-{7,8,35},{9,5,128},{7,8,51},{7,6,15},{7,8,63},{7,4,4},{7,4,2},{7,4,7},{7,6,13},{7,4,3},
-{9,9,1472},{7,4,5},{7,8,43},{7,6,17},{9,9,1216},{7,4,6},{7,6,1},{7,5,8},{9,6,192},{9,5,64},
-{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,8,29},{7,4,3},{7,5,11},{7,4,5},{7,6,12},{7,5,9},
-{9,6,1664},{7,4,6},{7,8,33},{9,5,128},{7,8,49},{7,6,14},{7,8,61},{7,4,4},{7,4,2},{7,4,7},
-{7,8,47},{7,4,3},{7,8,59},{7,4,5},{7,8,41},{7,6,16},{9,9,960},{7,4,6},{7,8,31},{7,5,8},
-{7,8,57},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,7,22},{7,4,3},{7,5,11},{7,4,5},
-{7,7,26},{7,5,9},{9,9,704},{7,4,6},{7,8,37},{9,5,128},{7,7,25},{7,6,15},{9,8,320},{7,4,4},
-{7,4,2},{7,4,7},{7,6,13},{7,4,3},{7,7,18},{7,4,5},{7,7,21},{7,6,17},{9,7,256},{7,4,6},
-{7,6,1},{7,5,8},{9,6,192},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{11,11,1792},{7,4,3},
-{7,5,11},{7,4,5},{7,6,12},{7,5,9},{9,6,1664},{7,4,6},{7,7,20},{9,5,128},{7,7,24},{7,6,14},
-{7,7,28},{7,4,4},{7,4,2},{7,4,7},{7,7,23},{7,4,3},{7,7,27},{7,4,5},{7,8,40},{7,6,16},
-{9,9,832},{7,4,6},{7,7,19},{7,5,8},{7,8,56},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},
-{7,8,46},{7,4,3},{7,5,11},{7,4,5},{7,8,54},{7,5,9},{9,8,512},{7,4,6},{7,8,36},{9,5,128},
-{7,8,52},{7,6,15},{7,8,0},{7,4,4},{7,4,2},{7,4,7},{7,6,13},{7,4,3},{9,9,1600},{7,4,5},
-{7,8,44},{7,6,17},{9,9,1344},{7,4,6},{7,6,1},{7,5,8},{9,6,192},{9,5,64},{7,5,10},{7,4,4},
-{7,4,2},{7,4,7},{7,8,30},{7,4,3},{7,5,11},{7,4,5},{7,6,12},{7,5,9},{9,6,1664},{7,4,6},
-{7,8,34},{9,5,128},{7,8,50},{7,6,14},{7,8,62},{7,4,4},{7,4,2},{7,4,7},{7,8,48},{7,4,3},
-{7,8,60},{7,4,5},{7,8,42},{7,6,16},{9,9,1088},{7,4,6},{7,8,32},{7,5,8},{7,8,58},{9,5,64},
-{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,7,22},{7,4,3},{7,5,11},{7,4,5},{7,7,26},{7,5,9},
-{9,8,640},{7,4,6},{7,8,38},{9,5,128},{7,7,25},{7,6,15},{9,8,384},{7,4,4},{7,4,2},{7,4,7},
-{7,6,13},{7,4,3},{7,7,18},{7,4,5},{7,7,21},{7,6,17},{9,7,256},{7,4,6},{7,6,1},{7,5,8},
-{9,6,192},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{0,0,0},{7,4,3},{7,5,11},{7,4,5},
-{7,6,12},{7,5,9},{9,6,1664},{7,4,6},{7,7,20},{9,5,128},{7,7,24},{7,6,14},{7,7,28},{7,4,4},
-{7,4,2},{7,4,7},{7,7,23},{7,4,3},{7,7,27},{7,4,5},{7,8,39},{7,6,16},{9,8,576},{7,4,6},
-{7,7,19},{7,5,8},{7,8,55},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,8,45},{7,4,3},
-{7,5,11},{7,4,5},{7,8,53},{7,5,9},{9,8,448},{7,4,6},{7,8,35},{9,5,128},{7,8,51},{7,6,15},
-{7,8,63},{7,4,4},{7,4,2},{7,4,7},{7,6,13},{7,4,3},{9,9,1536},{7,4,5},{7,8,43},{7,6,17},
-{9,9,1280},{7,4,6},{7,6,1},{7,5,8},{9,6,192},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},
-{7,8,29},{7,4,3},{7,5,11},{7,4,5},{7,6,12},{7,5,9},{9,6,1664},{7,4,6},{7,8,33},{9,5,128},
-{7,8,49},{7,6,14},{7,8,61},{7,4,4},{7,4,2},{7,4,7},{7,8,47},{7,4,3},{7,8,59},{7,4,5},
-{7,8,41},{7,6,16},{9,9,1024},{7,4,6},{7,8,31},{7,5,8},{7,8,57},{9,5,64},{7,5,10},{7,4,4},
-{7,4,2},{7,4,7},{7,7,22},{7,4,3},{7,5,11},{7,4,5},{7,7,26},{7,5,9},{9,9,768},{7,4,6},
-{7,8,37},{9,5,128},{7,7,25},{7,6,15},{9,8,320},{7,4,4},{7,4,2},{7,4,7},{7,6,13},{7,4,3},
-{7,7,18},{7,4,5},{7,7,21},{7,6,17},{9,7,256},{7,4,6},{7,6,1},{7,5,8},{9,6,192},{9,5,64},
-{7,5,10},{7,4,4},{7,4,2},{7,4,7},{11,11,1856},{7,4,3},{7,5,11},{7,4,5},{7,6,12},{7,5,9},
-{9,6,1664},{7,4,6},{7,7,20},{9,5,128},{7,7,24},{7,6,14},{7,7,28},{7,4,4},{7,4,2},{7,4,7},
-{7,7,23},{7,4,3},{7,7,27},{7,4,5},{7,8,40},{7,6,16},{9,9,896},{7,4,6},{7,7,19},{7,5,8},
-{7,8,56},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,8,46},{7,4,3},{7,5,11},{7,4,5},
-{7,8,54},{7,5,9},{9,8,512},{7,4,6},{7,8,36},{9,5,128},{7,8,52},{7,6,15},{7,8,0},{7,4,4},
-{7,4,2},{7,4,7},{7,6,13},{7,4,3},{9,9,1728},{7,4,5},{7,8,44},{7,6,17},{9,9,1408},{7,4,6},
-{7,6,1},{7,5,8},{9,6,192},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,8,30},{7,4,3},
-{7,5,11},{7,4,5},{7,6,12},{7,5,9},{9,6,1664},{7,4,6},{7,8,34},{9,5,128},{7,8,50},{7,6,14},
-{7,8,62},{7,4,4},{7,4,2},{7,4,7},{7,8,48},{7,4,3},{7,8,60},{7,4,5},{7,8,42},{7,6,16},
-{9,9,1152},{7,4,6},{7,8,32},{7,5,8},{7,8,58},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},
-{7,7,22},{7,4,3},{7,5,11},{7,4,5},{7,7,26},{7,5,9},{9,8,640},{7,4,6},{7,8,38},{9,5,128},
-{7,7,25},{7,6,15},{9,8,384},{7,4,4},{7,4,2},{7,4,7},{7,6,13},{7,4,3},{7,7,18},{7,4,5},
-{7,7,21},{7,6,17},{9,7,256},{7,4,6},{7,6,1},{7,5,8},{9,6,192},{9,5,64},{7,5,10},{7,4,4},
-{7,4,2},{7,4,7},{0,0,0},{7,4,3},{7,5,11},{7,4,5},{7,6,12},{7,5,9},{9,6,1664},{7,4,6},
-{7,7,20},{9,5,128},{7,7,24},{7,6,14},{7,7,28},{7,4,4},{7,4,2},{7,4,7},{7,7,23},{7,4,3},
-{7,7,27},{7,4,5},{7,8,39},{7,6,16},{9,8,576},{7,4,6},{7,7,19},{7,5,8},{7,8,55},{9,5,64},
-{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,8,45},{7,4,3},{7,5,11},{7,4,5},{7,8,53},{7,5,9},
-{9,8,448},{7,4,6},{7,8,35},{9,5,128},{7,8,51},{7,6,15},{7,8,63},{7,4,4},{7,4,2},{7,4,7},
-{7,6,13},{7,4,3},{9,9,1472},{7,4,5},{7,8,43},{7,6,17},{9,9,1216},{7,4,6},{7,6,1},{7,5,8},
-{9,6,192},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,8,29},{7,4,3},{7,5,11},{7,4,5},
-{7,6,12},{7,5,9},{9,6,1664},{7,4,6},{7,8,33},{9,5,128},{7,8,49},{7,6,14},{7,8,61},{7,4,4},
-{7,4,2},{7,4,7},{7,8,47},{7,4,3},{7,8,59},{7,4,5},{7,8,41},{7,6,16},{9,9,960},{7,4,6},
-{7,8,31},{7,5,8},{7,8,57},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,7,22},{7,4,3},
-{7,5,11},{7,4,5},{7,7,26},{7,5,9},{9,9,704},{7,4,6},{7,8,37},{9,5,128},{7,7,25},{7,6,15},
-{9,8,320},{7,4,4},{7,4,2},{7,4,7},{7,6,13},{7,4,3},{7,7,18},{7,4,5},{7,7,21},{7,6,17},
-{9,7,256},{7,4,6},{7,6,1},{7,5,8},{9,6,192},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},
-{11,12,2112},{7,4,3},{7,5,11},{7,4,5},{7,6,12},{7,5,9},{9,6,1664},{7,4,6},{7,7,20},{9,5,128},
-{7,7,24},{7,6,14},{7,7,28},{7,4,4},{7,4,2},{7,4,7},{7,7,23},{7,4,3},{7,7,27},{7,4,5},
-{7,8,40},{7,6,16},{9,9,832},{7,4,6},{7,7,19},{7,5,8},{7,8,56},{9,5,64},{7,5,10},{7,4,4},
-{7,4,2},{7,4,7},{7,8,46},{7,4,3},{7,5,11},{7,4,5},{7,8,54},{7,5,9},{9,8,512},{7,4,6},
-{7,8,36},{9,5,128},{7,8,52},{7,6,15},{7,8,0},{7,4,4},{7,4,2},{7,4,7},{7,6,13},{7,4,3},
-{9,9,1600},{7,4,5},{7,8,44},{7,6,17},{9,9,1344},{7,4,6},{7,6,1},{7,5,8},{9,6,192},{9,5,64},
-{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,8,30},{7,4,3},{7,5,11},{7,4,5},{7,6,12},{7,5,9},
-{9,6,1664},{7,4,6},{7,8,34},{9,5,128},{7,8,50},{7,6,14},{7,8,62},{7,4,4},{7,4,2},{7,4,7},
-{7,8,48},{7,4,3},{7,8,60},{7,4,5},{7,8,42},{7,6,16},{9,9,1088},{7,4,6},{7,8,32},{7,5,8},
-{7,8,58},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,7,22},{7,4,3},{7,5,11},{7,4,5},
-{7,7,26},{7,5,9},{9,8,640},{7,4,6},{7,8,38},{9,5,128},{7,7,25},{7,6,15},{9,8,384},{7,4,4},
-{7,4,2},{7,4,7},{7,6,13},{7,4,3},{7,7,18},{7,4,5},{7,7,21},{7,6,17},{9,7,256},{7,4,6},
-{7,6,1},{7,5,8},{9,6,192},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{0,0,0},{7,4,3},
-{7,5,11},{7,4,5},{7,6,12},{7,5,9},{9,6,1664},{7,4,6},{7,7,20},{9,5,128},{7,7,24},{7,6,14},
-{7,7,28},{7,4,4},{7,4,2},{7,4,7},{7,7,23},{7,4,3},{7,7,27},{7,4,5},{7,8,39},{7,6,16},
-{9,8,576},{7,4,6},{7,7,19},{7,5,8},{7,8,55},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},
-{7,8,45},{7,4,3},{7,5,11},{7,4,5},{7,8,53},{7,5,9},{9,8,448},{7,4,6},{7,8,35},{9,5,128},
-{7,8,51},{7,6,15},{7,8,63},{7,4,4},{7,4,2},{7,4,7},{7,6,13},{7,4,3},{9,9,1536},{7,4,5},
-{7,8,43},{7,6,17},{9,9,1280},{7,4,6},{7,6,1},{7,5,8},{9,6,192},{9,5,64},{7,5,10},{7,4,4},
-{7,4,2},{7,4,7},{7,8,29},{7,4,3},{7,5,11},{7,4,5},{7,6,12},{7,5,9},{9,6,1664},{7,4,6},
-{7,8,33},{9,5,128},{7,8,49},{7,6,14},{7,8,61},{7,4,4},{7,4,2},{7,4,7},{7,8,47},{7,4,3},
-{7,8,59},{7,4,5},{7,8,41},{7,6,16},{9,9,1024},{7,4,6},{7,8,31},{7,5,8},{7,8,57},{9,5,64},
-{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,7,22},{7,4,3},{7,5,11},{7,4,5},{7,7,26},{7,5,9},
-{9,9,768},{7,4,6},{7,8,37},{9,5,128},{7,7,25},{7,6,15},{9,8,320},{7,4,4},{7,4,2},{7,4,7},
-{7,6,13},{7,4,3},{7,7,18},{7,4,5},{7,7,21},{7,6,17},{9,7,256},{7,4,6},{7,6,1},{7,5,8},
-{9,6,192},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{11,12,2368},{7,4,3},{7,5,11},{7,4,5},
-{7,6,12},{7,5,9},{9,6,1664},{7,4,6},{7,7,20},{9,5,128},{7,7,24},{7,6,14},{7,7,28},{7,4,4},
-{7,4,2},{7,4,7},{7,7,23},{7,4,3},{7,7,27},{7,4,5},{7,8,40},{7,6,16},{9,9,896},{7,4,6},
-{7,7,19},{7,5,8},{7,8,56},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,8,46},{7,4,3},
-{7,5,11},{7,4,5},{7,8,54},{7,5,9},{9,8,512},{7,4,6},{7,8,36},{9,5,128},{7,8,52},{7,6,15},
-{7,8,0},{7,4,4},{7,4,2},{7,4,7},{7,6,13},{7,4,3},{9,9,1728},{7,4,5},{7,8,44},{7,6,17},
-{9,9,1408},{7,4,6},{7,6,1},{7,5,8},{9,6,192},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},
-{7,8,30},{7,4,3},{7,5,11},{7,4,5},{7,6,12},{7,5,9},{9,6,1664},{7,4,6},{7,8,34},{9,5,128},
-{7,8,50},{7,6,14},{7,8,62},{7,4,4},{7,4,2},{7,4,7},{7,8,48},{7,4,3},{7,8,60},{7,4,5},
-{7,8,42},{7,6,16},{9,9,1152},{7,4,6},{7,8,32},{7,5,8},{7,8,58},{9,5,64},{7,5,10},{7,4,4},
-{7,4,2},{7,4,7},{7,7,22},{7,4,3},{7,5,11},{7,4,5},{7,7,26},{7,5,9},{9,8,640},{7,4,6},
-{7,8,38},{9,5,128},{7,7,25},{7,6,15},{9,8,384},{7,4,4},{7,4,2},{7,4,7},{7,6,13},{7,4,3},
-{7,7,18},{7,4,5},{7,7,21},{7,6,17},{9,7,256},{7,4,6},{7,6,1},{7,5,8},{9,6,192},{9,5,64},
-{7,5,10},{7,4,4},{7,4,2},{7,4,7},{0,0,0},{7,4,3},{7,5,11},{7,4,5},{7,6,12},{7,5,9},
-{9,6,1664},{7,4,6},{7,7,20},{9,5,128},{7,7,24},{7,6,14},{7,7,28},{7,4,4},{7,4,2},{7,4,7},
-{7,7,23},{7,4,3},{7,7,27},{7,4,5},{7,8,39},{7,6,16},{9,8,576},{7,4,6},{7,7,19},{7,5,8},
-{7,8,55},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,8,45},{7,4,3},{7,5,11},{7,4,5},
-{7,8,53},{7,5,9},{9,8,448},{7,4,6},{7,8,35},{9,5,128},{7,8,51},{7,6,15},{7,8,63},{7,4,4},
-{7,4,2},{7,4,7},{7,6,13},{7,4,3},{9,9,1472},{7,4,5},{7,8,43},{7,6,17},{9,9,1216},{7,4,6},
-{7,6,1},{7,5,8},{9,6,192},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,8,29},{7,4,3},
-{7,5,11},{7,4,5},{7,6,12},{7,5,9},{9,6,1664},{7,4,6},{7,8,33},{9,5,128},{7,8,49},{7,6,14},
-{7,8,61},{7,4,4},{7,4,2},{7,4,7},{7,8,47},{7,4,3},{7,8,59},{7,4,5},{7,8,41},{7,6,16},
-{9,9,960},{7,4,6},{7,8,31},{7,5,8},{7,8,57},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},
-{7,7,22},{7,4,3},{7,5,11},{7,4,5},{7,7,26},{7,5,9},{9,9,704},{7,4,6},{7,8,37},{9,5,128},
-{7,7,25},{7,6,15},{9,8,320},{7,4,4},{7,4,2},{7,4,7},{7,6,13},{7,4,3},{7,7,18},{7,4,5},
-{7,7,21},{7,6,17},{9,7,256},{7,4,6},{7,6,1},{7,5,8},{9,6,192},{9,5,64},{7,5,10},{7,4,4},
-{7,4,2},{7,4,7},{11,12,1984},{7,4,3},{7,5,11},{7,4,5},{7,6,12},{7,5,9},{9,6,1664},{7,4,6},
-{7,7,20},{9,5,128},{7,7,24},{7,6,14},{7,7,28},{7,4,4},{7,4,2},{7,4,7},{7,7,23},{7,4,3},
-{7,7,27},{7,4,5},{7,8,40},{7,6,16},{9,9,832},{7,4,6},{7,7,19},{7,5,8},{7,8,56},{9,5,64},
-{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,8,46},{7,4,3},{7,5,11},{7,4,5},{7,8,54},{7,5,9},
-{9,8,512},{7,4,6},{7,8,36},{9,5,128},{7,8,52},{7,6,15},{7,8,0},{7,4,4},{7,4,2},{7,4,7},
-{7,6,13},{7,4,3},{9,9,1600},{7,4,5},{7,8,44},{7,6,17},{9,9,1344},{7,4,6},{7,6,1},{7,5,8},
-{9,6,192},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,8,30},{7,4,3},{7,5,11},{7,4,5},
-{7,6,12},{7,5,9},{9,6,1664},{7,4,6},{7,8,34},{9,5,128},{7,8,50},{7,6,14},{7,8,62},{7,4,4},
-{7,4,2},{7,4,7},{7,8,48},{7,4,3},{7,8,60},{7,4,5},{7,8,42},{7,6,16},{9,9,1088},{7,4,6},
-{7,8,32},{7,5,8},{7,8,58},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,7,22},{7,4,3},
-{7,5,11},{7,4,5},{7,7,26},{7,5,9},{9,8,640},{7,4,6},{7,8,38},{9,5,128},{7,7,25},{7,6,15},
-{9,8,384},{7,4,4},{7,4,2},{7,4,7},{7,6,13},{7,4,3},{7,7,18},{7,4,5},{7,7,21},{7,6,17},
-{9,7,256},{7,4,6},{7,6,1},{7,5,8},{9,6,192},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},
-{0,0,0},{7,4,3},{7,5,11},{7,4,5},{7,6,12},{7,5,9},{9,6,1664},{7,4,6},{7,7,20},{9,5,128},
-{7,7,24},{7,6,14},{7,7,28},{7,4,4},{7,4,2},{7,4,7},{7,7,23},{7,4,3},{7,7,27},{7,4,5},
-{7,8,39},{7,6,16},{9,8,576},{7,4,6},{7,7,19},{7,5,8},{7,8,55},{9,5,64},{7,5,10},{7,4,4},
-{7,4,2},{7,4,7},{7,8,45},{7,4,3},{7,5,11},{7,4,5},{7,8,53},{7,5,9},{9,8,448},{7,4,6},
-{7,8,35},{9,5,128},{7,8,51},{7,6,15},{7,8,63},{7,4,4},{7,4,2},{7,4,7},{7,6,13},{7,4,3},
-{9,9,1536},{7,4,5},{7,8,43},{7,6,17},{9,9,1280},{7,4,6},{7,6,1},{7,5,8},{9,6,192},{9,5,64},
-{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,8,29},{7,4,3},{7,5,11},{7,4,5},{7,6,12},{7,5,9},
-{9,6,1664},{7,4,6},{7,8,33},{9,5,128},{7,8,49},{7,6,14},{7,8,61},{7,4,4},{7,4,2},{7,4,7},
-{7,8,47},{7,4,3},{7,8,59},{7,4,5},{7,8,41},{7,6,16},{9,9,1024},{7,4,6},{7,8,31},{7,5,8},
-{7,8,57},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,7,22},{7,4,3},{7,5,11},{7,4,5},
-{7,7,26},{7,5,9},{9,9,768},{7,4,6},{7,8,37},{9,5,128},{7,7,25},{7,6,15},{9,8,320},{7,4,4},
-{7,4,2},{7,4,7},{7,6,13},{7,4,3},{7,7,18},{7,4,5},{7,7,21},{7,6,17},{9,7,256},{7,4,6},
-{7,6,1},{7,5,8},{9,6,192},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{11,11,1920},{7,4,3},
-{7,5,11},{7,4,5},{7,6,12},{7,5,9},{9,6,1664},{7,4,6},{7,7,20},{9,5,128},{7,7,24},{7,6,14},
-{7,7,28},{7,4,4},{7,4,2},{7,4,7},{7,7,23},{7,4,3},{7,7,27},{7,4,5},{7,8,40},{7,6,16},
-{9,9,896},{7,4,6},{7,7,19},{7,5,8},{7,8,56},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},
-{7,8,46},{7,4,3},{7,5,11},{7,4,5},{7,8,54},{7,5,9},{9,8,512},{7,4,6},{7,8,36},{9,5,128},
-{7,8,52},{7,6,15},{7,8,0},{7,4,4},{7,4,2},{7,4,7},{7,6,13},{7,4,3},{9,9,1728},{7,4,5},
-{7,8,44},{7,6,17},{9,9,1408},{7,4,6},{7,6,1},{7,5,8},{9,6,192},{9,5,64},{7,5,10},{7,4,4},
-{7,4,2},{7,4,7},{7,8,30},{7,4,3},{7,5,11},{7,4,5},{7,6,12},{7,5,9},{9,6,1664},{7,4,6},
-{7,8,34},{9,5,128},{7,8,50},{7,6,14},{7,8,62},{7,4,4},{7,4,2},{7,4,7},{7,8,48},{7,4,3},
-{7,8,60},{7,4,5},{7,8,42},{7,6,16},{9,9,1152},{7,4,6},{7,8,32},{7,5,8},{7,8,58},{9,5,64},
-{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,7,22},{7,4,3},{7,5,11},{7,4,5},{7,7,26},{7,5,9},
-{9,8,640},{7,4,6},{7,8,38},{9,5,128},{7,7,25},{7,6,15},{9,8,384},{7,4,4},{7,4,2},{7,4,7},
-{7,6,13},{7,4,3},{7,7,18},{7,4,5},{7,7,21},{7,6,17},{9,7,256},{7,4,6},{7,6,1},{7,5,8},
-{9,6,192},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{0,0,0},{7,4,3},{7,5,11},{7,4,5},
-{7,6,12},{7,5,9},{9,6,1664},{7,4,6},{7,7,20},{9,5,128},{7,7,24},{7,6,14},{7,7,28},{7,4,4},
-{7,4,2},{7,4,7},{7,7,23},{7,4,3},{7,7,27},{7,4,5},{7,8,39},{7,6,16},{9,8,576},{7,4,6},
-{7,7,19},{7,5,8},{7,8,55},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,8,45},{7,4,3},
-{7,5,11},{7,4,5},{7,8,53},{7,5,9},{9,8,448},{7,4,6},{7,8,35},{9,5,128},{7,8,51},{7,6,15},
-{7,8,63},{7,4,4},{7,4,2},{7,4,7},{7,6,13},{7,4,3},{9,9,1472},{7,4,5},{7,8,43},{7,6,17},
-{9,9,1216},{7,4,6},{7,6,1},{7,5,8},{9,6,192},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},
-{7,8,29},{7,4,3},{7,5,11},{7,4,5},{7,6,12},{7,5,9},{9,6,1664},{7,4,6},{7,8,33},{9,5,128},
-{7,8,49},{7,6,14},{7,8,61},{7,4,4},{7,4,2},{7,4,7},{7,8,47},{7,4,3},{7,8,59},{7,4,5},
-{7,8,41},{7,6,16},{9,9,960},{7,4,6},{7,8,31},{7,5,8},{7,8,57},{9,5,64},{7,5,10},{7,4,4},
-{7,4,2},{7,4,7},{7,7,22},{7,4,3},{7,5,11},{7,4,5},{7,7,26},{7,5,9},{9,9,704},{7,4,6},
-{7,8,37},{9,5,128},{7,7,25},{7,6,15},{9,8,320},{7,4,4},{7,4,2},{7,4,7},{7,6,13},{7,4,3},
-{7,7,18},{7,4,5},{7,7,21},{7,6,17},{9,7,256},{7,4,6},{7,6,1},{7,5,8},{9,6,192},{9,5,64},
-{7,5,10},{7,4,4},{7,4,2},{7,4,7},{11,12,2240},{7,4,3},{7,5,11},{7,4,5},{7,6,12},{7,5,9},
-{9,6,1664},{7,4,6},{7,7,20},{9,5,128},{7,7,24},{7,6,14},{7,7,28},{7,4,4},{7,4,2},{7,4,7},
-{7,7,23},{7,4,3},{7,7,27},{7,4,5},{7,8,40},{7,6,16},{9,9,832},{7,4,6},{7,7,19},{7,5,8},
-{7,8,56},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,8,46},{7,4,3},{7,5,11},{7,4,5},
-{7,8,54},{7,5,9},{9,8,512},{7,4,6},{7,8,36},{9,5,128},{7,8,52},{7,6,15},{7,8,0},{7,4,4},
-{7,4,2},{7,4,7},{7,6,13},{7,4,3},{9,9,1600},{7,4,5},{7,8,44},{7,6,17},{9,9,1344},{7,4,6},
-{7,6,1},{7,5,8},{9,6,192},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,8,30},{7,4,3},
-{7,5,11},{7,4,5},{7,6,12},{7,5,9},{9,6,1664},{7,4,6},{7,8,34},{9,5,128},{7,8,50},{7,6,14},
-{7,8,62},{7,4,4},{7,4,2},{7,4,7},{7,8,48},{7,4,3},{7,8,60},{7,4,5},{7,8,42},{7,6,16},
-{9,9,1088},{7,4,6},{7,8,32},{7,5,8},{7,8,58},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},
-{7,7,22},{7,4,3},{7,5,11},{7,4,5},{7,7,26},{7,5,9},{9,8,640},{7,4,6},{7,8,38},{9,5,128},
-{7,7,25},{7,6,15},{9,8,384},{7,4,4},{7,4,2},{7,4,7},{7,6,13},{7,4,3},{7,7,18},{7,4,5},
-{7,7,21},{7,6,17},{9,7,256},{7,4,6},{7,6,1},{7,5,8},{9,6,192},{9,5,64},{7,5,10},{7,4,4},
-{7,4,2},{7,4,7},{0,0,0},{7,4,3},{7,5,11},{7,4,5},{7,6,12},{7,5,9},{9,6,1664},{7,4,6},
-{7,7,20},{9,5,128},{7,7,24},{7,6,14},{7,7,28},{7,4,4},{7,4,2},{7,4,7},{7,7,23},{7,4,3},
-{7,7,27},{7,4,5},{7,8,39},{7,6,16},{9,8,576},{7,4,6},{7,7,19},{7,5,8},{7,8,55},{9,5,64},
-{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,8,45},{7,4,3},{7,5,11},{7,4,5},{7,8,53},{7,5,9},
-{9,8,448},{7,4,6},{7,8,35},{9,5,128},{7,8,51},{7,6,15},{7,8,63},{7,4,4},{7,4,2},{7,4,7},
-{7,6,13},{7,4,3},{9,9,1536},{7,4,5},{7,8,43},{7,6,17},{9,9,1280},{7,4,6},{7,6,1},{7,5,8},
-{9,6,192},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,8,29},{7,4,3},{7,5,11},{7,4,5},
-{7,6,12},{7,5,9},{9,6,1664},{7,4,6},{7,8,33},{9,5,128},{7,8,49},{7,6,14},{7,8,61},{7,4,4},
-{7,4,2},{7,4,7},{7,8,47},{7,4,3},{7,8,59},{7,4,5},{7,8,41},{7,6,16},{9,9,1024},{7,4,6},
-{7,8,31},{7,5,8},{7,8,57},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,7,22},{7,4,3},
-{7,5,11},{7,4,5},{7,7,26},{7,5,9},{9,9,768},{7,4,6},{7,8,37},{9,5,128},{7,7,25},{7,6,15},
-{9,8,320},{7,4,4},{7,4,2},{7,4,7},{7,6,13},{7,4,3},{7,7,18},{7,4,5},{7,7,21},{7,6,17},
-{9,7,256},{7,4,6},{7,6,1},{7,5,8},{9,6,192},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},
-{11,12,2496},{7,4,3},{7,5,11},{7,4,5},{7,6,12},{7,5,9},{9,6,1664},{7,4,6},{7,7,20},{9,5,128},
-{7,7,24},{7,6,14},{7,7,28},{7,4,4},{7,4,2},{7,4,7},{7,7,23},{7,4,3},{7,7,27},{7,4,5},
-{7,8,40},{7,6,16},{9,9,896},{7,4,6},{7,7,19},{7,5,8},{7,8,56},{9,5,64},{7,5,10},{7,4,4},
-{7,4,2},{7,4,7},{7,8,46},{7,4,3},{7,5,11},{7,4,5},{7,8,54},{7,5,9},{9,8,512},{7,4,6},
-{7,8,36},{9,5,128},{7,8,52},{7,6,15},{7,8,0},{7,4,4},{7,4,2},{7,4,7},{7,6,13},{7,4,3},
-{9,9,1728},{7,4,5},{7,8,44},{7,6,17},{9,9,1408},{7,4,6},{7,6,1},{7,5,8},{9,6,192},{9,5,64},
-{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,8,30},{7,4,3},{7,5,11},{7,4,5},{7,6,12},{7,5,9},
-{9,6,1664},{7,4,6},{7,8,34},{9,5,128},{7,8,50},{7,6,14},{7,8,62},{7,4,4},{7,4,2},{7,4,7},
-{7,8,48},{7,4,3},{7,8,60},{7,4,5},{7,8,42},{7,6,16},{9,9,1152},{7,4,6},{7,8,32},{7,5,8},
-{7,8,58},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,7,22},{7,4,3},{7,5,11},{7,4,5},
-{7,7,26},{7,5,9},{9,8,640},{7,4,6},{7,8,38},{9,5,128},{7,7,25},{7,6,15},{9,8,384},{7,4,4},
-{7,4,2},{7,4,7},{7,6,13},{7,4,3},{7,7,18},{7,4,5},{7,7,21},{7,6,17},{9,7,256},{7,4,6},
-{7,6,1},{7,5,8},{9,6,192},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{12,11,0},{7,4,3},
-{7,5,11},{7,4,5},{7,6,12},{7,5,9},{9,6,1664},{7,4,6},{7,7,20},{9,5,128},{7,7,24},{7,6,14},
-{7,7,28},{7,4,4},{7,4,2},{7,4,7},{7,7,23},{7,4,3},{7,7,27},{7,4,5},{7,8,39},{7,6,16},
-{9,8,576},{7,4,6},{7,7,19},{7,5,8},{7,8,55},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},
-{7,8,45},{7,4,3},{7,5,11},{7,4,5},{7,8,53},{7,5,9},{9,8,448},{7,4,6},{7,8,35},{9,5,128},
-{7,8,51},{7,6,15},{7,8,63},{7,4,4},{7,4,2},{7,4,7},{7,6,13},{7,4,3},{9,9,1472},{7,4,5},
-{7,8,43},{7,6,17},{9,9,1216},{7,4,6},{7,6,1},{7,5,8},{9,6,192},{9,5,64},{7,5,10},{7,4,4},
-{7,4,2},{7,4,7},{7,8,29},{7,4,3},{7,5,11},{7,4,5},{7,6,12},{7,5,9},{9,6,1664},{7,4,6},
-{7,8,33},{9,5,128},{7,8,49},{7,6,14},{7,8,61},{7,4,4},{7,4,2},{7,4,7},{7,8,47},{7,4,3},
-{7,8,59},{7,4,5},{7,8,41},{7,6,16},{9,9,960},{7,4,6},{7,8,31},{7,5,8},{7,8,57},{9,5,64},
-{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,7,22},{7,4,3},{7,5,11},{7,4,5},{7,7,26},{7,5,9},
-{9,9,704},{7,4,6},{7,8,37},{9,5,128},{7,7,25},{7,6,15},{9,8,320},{7,4,4},{7,4,2},{7,4,7},
-{7,6,13},{7,4,3},{7,7,18},{7,4,5},{7,7,21},{7,6,17},{9,7,256},{7,4,6},{7,6,1},{7,5,8},
-{9,6,192},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{11,11,1792},{7,4,3},{7,5,11},{7,4,5},
-{7,6,12},{7,5,9},{9,6,1664},{7,4,6},{7,7,20},{9,5,128},{7,7,24},{7,6,14},{7,7,28},{7,4,4},
-{7,4,2},{7,4,7},{7,7,23},{7,4,3},{7,7,27},{7,4,5},{7,8,40},{7,6,16},{9,9,832},{7,4,6},
-{7,7,19},{7,5,8},{7,8,56},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,8,46},{7,4,3},
-{7,5,11},{7,4,5},{7,8,54},{7,5,9},{9,8,512},{7,4,6},{7,8,36},{9,5,128},{7,8,52},{7,6,15},
-{7,8,0},{7,4,4},{7,4,2},{7,4,7},{7,6,13},{7,4,3},{9,9,1600},{7,4,5},{7,8,44},{7,6,17},
-{9,9,1344},{7,4,6},{7,6,1},{7,5,8},{9,6,192},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},
-{7,8,30},{7,4,3},{7,5,11},{7,4,5},{7,6,12},{7,5,9},{9,6,1664},{7,4,6},{7,8,34},{9,5,128},
-{7,8,50},{7,6,14},{7,8,62},{7,4,4},{7,4,2},{7,4,7},{7,8,48},{7,4,3},{7,8,60},{7,4,5},
-{7,8,42},{7,6,16},{9,9,1088},{7,4,6},{7,8,32},{7,5,8},{7,8,58},{9,5,64},{7,5,10},{7,4,4},
-{7,4,2},{7,4,7},{7,7,22},{7,4,3},{7,5,11},{7,4,5},{7,7,26},{7,5,9},{9,8,640},{7,4,6},
-{7,8,38},{9,5,128},{7,7,25},{7,6,15},{9,8,384},{7,4,4},{7,4,2},{7,4,7},{7,6,13},{7,4,3},
-{7,7,18},{7,4,5},{7,7,21},{7,6,17},{9,7,256},{7,4,6},{7,6,1},{7,5,8},{9,6,192},{9,5,64},
-{7,5,10},{7,4,4},{7,4,2},{7,4,7},{0,0,0},{7,4,3},{7,5,11},{7,4,5},{7,6,12},{7,5,9},
-{9,6,1664},{7,4,6},{7,7,20},{9,5,128},{7,7,24},{7,6,14},{7,7,28},{7,4,4},{7,4,2},{7,4,7},
-{7,7,23},{7,4,3},{7,7,27},{7,4,5},{7,8,39},{7,6,16},{9,8,576},{7,4,6},{7,7,19},{7,5,8},
-{7,8,55},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,8,45},{7,4,3},{7,5,11},{7,4,5},
-{7,8,53},{7,5,9},{9,8,448},{7,4,6},{7,8,35},{9,5,128},{7,8,51},{7,6,15},{7,8,63},{7,4,4},
-{7,4,2},{7,4,7},{7,6,13},{7,4,3},{9,9,1536},{7,4,5},{7,8,43},{7,6,17},{9,9,1280},{7,4,6},
-{7,6,1},{7,5,8},{9,6,192},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,8,29},{7,4,3},
-{7,5,11},{7,4,5},{7,6,12},{7,5,9},{9,6,1664},{7,4,6},{7,8,33},{9,5,128},{7,8,49},{7,6,14},
-{7,8,61},{7,4,4},{7,4,2},{7,4,7},{7,8,47},{7,4,3},{7,8,59},{7,4,5},{7,8,41},{7,6,16},
-{9,9,1024},{7,4,6},{7,8,31},{7,5,8},{7,8,57},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},
-{7,7,22},{7,4,3},{7,5,11},{7,4,5},{7,7,26},{7,5,9},{9,9,768},{7,4,6},{7,8,37},{9,5,128},
-{7,7,25},{7,6,15},{9,8,320},{7,4,4},{7,4,2},{7,4,7},{7,6,13},{7,4,3},{7,7,18},{7,4,5},
-{7,7,21},{7,6,17},{9,7,256},{7,4,6},{7,6,1},{7,5,8},{9,6,192},{9,5,64},{7,5,10},{7,4,4},
-{7,4,2},{7,4,7},{11,11,1856},{7,4,3},{7,5,11},{7,4,5},{7,6,12},{7,5,9},{9,6,1664},{7,4,6},
-{7,7,20},{9,5,128},{7,7,24},{7,6,14},{7,7,28},{7,4,4},{7,4,2},{7,4,7},{7,7,23},{7,4,3},
-{7,7,27},{7,4,5},{7,8,40},{7,6,16},{9,9,896},{7,4,6},{7,7,19},{7,5,8},{7,8,56},{9,5,64},
-{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,8,46},{7,4,3},{7,5,11},{7,4,5},{7,8,54},{7,5,9},
-{9,8,512},{7,4,6},{7,8,36},{9,5,128},{7,8,52},{7,6,15},{7,8,0},{7,4,4},{7,4,2},{7,4,7},
-{7,6,13},{7,4,3},{9,9,1728},{7,4,5},{7,8,44},{7,6,17},{9,9,1408},{7,4,6},{7,6,1},{7,5,8},
-{9,6,192},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,8,30},{7,4,3},{7,5,11},{7,4,5},
-{7,6,12},{7,5,9},{9,6,1664},{7,4,6},{7,8,34},{9,5,128},{7,8,50},{7,6,14},{7,8,62},{7,4,4},
-{7,4,2},{7,4,7},{7,8,48},{7,4,3},{7,8,60},{7,4,5},{7,8,42},{7,6,16},{9,9,1152},{7,4,6},
-{7,8,32},{7,5,8},{7,8,58},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,7,22},{7,4,3},
-{7,5,11},{7,4,5},{7,7,26},{7,5,9},{9,8,640},{7,4,6},{7,8,38},{9,5,128},{7,7,25},{7,6,15},
-{9,8,384},{7,4,4},{7,4,2},{7,4,7},{7,6,13},{7,4,3},{7,7,18},{7,4,5},{7,7,21},{7,6,17},
-{9,7,256},{7,4,6},{7,6,1},{7,5,8},{9,6,192},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},
-{0,0,0},{7,4,3},{7,5,11},{7,4,5},{7,6,12},{7,5,9},{9,6,1664},{7,4,6},{7,7,20},{9,5,128},
-{7,7,24},{7,6,14},{7,7,28},{7,4,4},{7,4,2},{7,4,7},{7,7,23},{7,4,3},{7,7,27},{7,4,5},
-{7,8,39},{7,6,16},{9,8,576},{7,4,6},{7,7,19},{7,5,8},{7,8,55},{9,5,64},{7,5,10},{7,4,4},
-{7,4,2},{7,4,7},{7,8,45},{7,4,3},{7,5,11},{7,4,5},{7,8,53},{7,5,9},{9,8,448},{7,4,6},
-{7,8,35},{9,5,128},{7,8,51},{7,6,15},{7,8,63},{7,4,4},{7,4,2},{7,4,7},{7,6,13},{7,4,3},
-{9,9,1472},{7,4,5},{7,8,43},{7,6,17},{9,9,1216},{7,4,6},{7,6,1},{7,5,8},{9,6,192},{9,5,64},
-{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,8,29},{7,4,3},{7,5,11},{7,4,5},{7,6,12},{7,5,9},
-{9,6,1664},{7,4,6},{7,8,33},{9,5,128},{7,8,49},{7,6,14},{7,8,61},{7,4,4},{7,4,2},{7,4,7},
-{7,8,47},{7,4,3},{7,8,59},{7,4,5},{7,8,41},{7,6,16},{9,9,960},{7,4,6},{7,8,31},{7,5,8},
-{7,8,57},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,7,22},{7,4,3},{7,5,11},{7,4,5},
-{7,7,26},{7,5,9},{9,9,704},{7,4,6},{7,8,37},{9,5,128},{7,7,25},{7,6,15},{9,8,320},{7,4,4},
-{7,4,2},{7,4,7},{7,6,13},{7,4,3},{7,7,18},{7,4,5},{7,7,21},{7,6,17},{9,7,256},{7,4,6},
-{7,6,1},{7,5,8},{9,6,192},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{11,12,2176},{7,4,3},
-{7,5,11},{7,4,5},{7,6,12},{7,5,9},{9,6,1664},{7,4,6},{7,7,20},{9,5,128},{7,7,24},{7,6,14},
-{7,7,28},{7,4,4},{7,4,2},{7,4,7},{7,7,23},{7,4,3},{7,7,27},{7,4,5},{7,8,40},{7,6,16},
-{9,9,832},{7,4,6},{7,7,19},{7,5,8},{7,8,56},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},
-{7,8,46},{7,4,3},{7,5,11},{7,4,5},{7,8,54},{7,5,9},{9,8,512},{7,4,6},{7,8,36},{9,5,128},
-{7,8,52},{7,6,15},{7,8,0},{7,4,4},{7,4,2},{7,4,7},{7,6,13},{7,4,3},{9,9,1600},{7,4,5},
-{7,8,44},{7,6,17},{9,9,1344},{7,4,6},{7,6,1},{7,5,8},{9,6,192},{9,5,64},{7,5,10},{7,4,4},
-{7,4,2},{7,4,7},{7,8,30},{7,4,3},{7,5,11},{7,4,5},{7,6,12},{7,5,9},{9,6,1664},{7,4,6},
-{7,8,34},{9,5,128},{7,8,50},{7,6,14},{7,8,62},{7,4,4},{7,4,2},{7,4,7},{7,8,48},{7,4,3},
-{7,8,60},{7,4,5},{7,8,42},{7,6,16},{9,9,1088},{7,4,6},{7,8,32},{7,5,8},{7,8,58},{9,5,64},
-{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,7,22},{7,4,3},{7,5,11},{7,4,5},{7,7,26},{7,5,9},
-{9,8,640},{7,4,6},{7,8,38},{9,5,128},{7,7,25},{7,6,15},{9,8,384},{7,4,4},{7,4,2},{7,4,7},
-{7,6,13},{7,4,3},{7,7,18},{7,4,5},{7,7,21},{7,6,17},{9,7,256},{7,4,6},{7,6,1},{7,5,8},
-{9,6,192},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{0,0,0},{7,4,3},{7,5,11},{7,4,5},
-{7,6,12},{7,5,9},{9,6,1664},{7,4,6},{7,7,20},{9,5,128},{7,7,24},{7,6,14},{7,7,28},{7,4,4},
-{7,4,2},{7,4,7},{7,7,23},{7,4,3},{7,7,27},{7,4,5},{7,8,39},{7,6,16},{9,8,576},{7,4,6},
-{7,7,19},{7,5,8},{7,8,55},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,8,45},{7,4,3},
-{7,5,11},{7,4,5},{7,8,53},{7,5,9},{9,8,448},{7,4,6},{7,8,35},{9,5,128},{7,8,51},{7,6,15},
-{7,8,63},{7,4,4},{7,4,2},{7,4,7},{7,6,13},{7,4,3},{9,9,1536},{7,4,5},{7,8,43},{7,6,17},
-{9,9,1280},{7,4,6},{7,6,1},{7,5,8},{9,6,192},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},
-{7,8,29},{7,4,3},{7,5,11},{7,4,5},{7,6,12},{7,5,9},{9,6,1664},{7,4,6},{7,8,33},{9,5,128},
-{7,8,49},{7,6,14},{7,8,61},{7,4,4},{7,4,2},{7,4,7},{7,8,47},{7,4,3},{7,8,59},{7,4,5},
-{7,8,41},{7,6,16},{9,9,1024},{7,4,6},{7,8,31},{7,5,8},{7,8,57},{9,5,64},{7,5,10},{7,4,4},
-{7,4,2},{7,4,7},{7,7,22},{7,4,3},{7,5,11},{7,4,5},{7,7,26},{7,5,9},{9,9,768},{7,4,6},
-{7,8,37},{9,5,128},{7,7,25},{7,6,15},{9,8,320},{7,4,4},{7,4,2},{7,4,7},{7,6,13},{7,4,3},
-{7,7,18},{7,4,5},{7,7,21},{7,6,17},{9,7,256},{7,4,6},{7,6,1},{7,5,8},{9,6,192},{9,5,64},
-{7,5,10},{7,4,4},{7,4,2},{7,4,7},{11,12,2432},{7,4,3},{7,5,11},{7,4,5},{7,6,12},{7,5,9},
-{9,6,1664},{7,4,6},{7,7,20},{9,5,128},{7,7,24},{7,6,14},{7,7,28},{7,4,4},{7,4,2},{7,4,7},
-{7,7,23},{7,4,3},{7,7,27},{7,4,5},{7,8,40},{7,6,16},{9,9,896},{7,4,6},{7,7,19},{7,5,8},
-{7,8,56},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,8,46},{7,4,3},{7,5,11},{7,4,5},
-{7,8,54},{7,5,9},{9,8,512},{7,4,6},{7,8,36},{9,5,128},{7,8,52},{7,6,15},{7,8,0},{7,4,4},
-{7,4,2},{7,4,7},{7,6,13},{7,4,3},{9,9,1728},{7,4,5},{7,8,44},{7,6,17},{9,9,1408},{7,4,6},
-{7,6,1},{7,5,8},{9,6,192},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,8,30},{7,4,3},
-{7,5,11},{7,4,5},{7,6,12},{7,5,9},{9,6,1664},{7,4,6},{7,8,34},{9,5,128},{7,8,50},{7,6,14},
-{7,8,62},{7,4,4},{7,4,2},{7,4,7},{7,8,48},{7,4,3},{7,8,60},{7,4,5},{7,8,42},{7,6,16},
-{9,9,1152},{7,4,6},{7,8,32},{7,5,8},{7,8,58},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},
-{7,7,22},{7,4,3},{7,5,11},{7,4,5},{7,7,26},{7,5,9},{9,8,640},{7,4,6},{7,8,38},{9,5,128},
-{7,7,25},{7,6,15},{9,8,384},{7,4,4},{7,4,2},{7,4,7},{7,6,13},{7,4,3},{7,7,18},{7,4,5},
-{7,7,21},{7,6,17},{9,7,256},{7,4,6},{7,6,1},{7,5,8},{9,6,192},{9,5,64},{7,5,10},{7,4,4},
-{7,4,2},{7,4,7},{0,0,0},{7,4,3},{7,5,11},{7,4,5},{7,6,12},{7,5,9},{9,6,1664},{7,4,6},
-{7,7,20},{9,5,128},{7,7,24},{7,6,14},{7,7,28},{7,4,4},{7,4,2},{7,4,7},{7,7,23},{7,4,3},
-{7,7,27},{7,4,5},{7,8,39},{7,6,16},{9,8,576},{7,4,6},{7,7,19},{7,5,8},{7,8,55},{9,5,64},
-{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,8,45},{7,4,3},{7,5,11},{7,4,5},{7,8,53},{7,5,9},
-{9,8,448},{7,4,6},{7,8,35},{9,5,128},{7,8,51},{7,6,15},{7,8,63},{7,4,4},{7,4,2},{7,4,7},
-{7,6,13},{7,4,3},{9,9,1472},{7,4,5},{7,8,43},{7,6,17},{9,9,1216},{7,4,6},{7,6,1},{7,5,8},
-{9,6,192},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,8,29},{7,4,3},{7,5,11},{7,4,5},
-{7,6,12},{7,5,9},{9,6,1664},{7,4,6},{7,8,33},{9,5,128},{7,8,49},{7,6,14},{7,8,61},{7,4,4},
-{7,4,2},{7,4,7},{7,8,47},{7,4,3},{7,8,59},{7,4,5},{7,8,41},{7,6,16},{9,9,960},{7,4,6},
-{7,8,31},{7,5,8},{7,8,57},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,7,22},{7,4,3},
-{7,5,11},{7,4,5},{7,7,26},{7,5,9},{9,9,704},{7,4,6},{7,8,37},{9,5,128},{7,7,25},{7,6,15},
-{9,8,320},{7,4,4},{7,4,2},{7,4,7},{7,6,13},{7,4,3},{7,7,18},{7,4,5},{7,7,21},{7,6,17},
-{9,7,256},{7,4,6},{7,6,1},{7,5,8},{9,6,192},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},
-{11,12,2048},{7,4,3},{7,5,11},{7,4,5},{7,6,12},{7,5,9},{9,6,1664},{7,4,6},{7,7,20},{9,5,128},
-{7,7,24},{7,6,14},{7,7,28},{7,4,4},{7,4,2},{7,4,7},{7,7,23},{7,4,3},{7,7,27},{7,4,5},
-{7,8,40},{7,6,16},{9,9,832},{7,4,6},{7,7,19},{7,5,8},{7,8,56},{9,5,64},{7,5,10},{7,4,4},
-{7,4,2},{7,4,7},{7,8,46},{7,4,3},{7,5,11},{7,4,5},{7,8,54},{7,5,9},{9,8,512},{7,4,6},
-{7,8,36},{9,5,128},{7,8,52},{7,6,15},{7,8,0},{7,4,4},{7,4,2},{7,4,7},{7,6,13},{7,4,3},
-{9,9,1600},{7,4,5},{7,8,44},{7,6,17},{9,9,1344},{7,4,6},{7,6,1},{7,5,8},{9,6,192},{9,5,64},
-{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,8,30},{7,4,3},{7,5,11},{7,4,5},{7,6,12},{7,5,9},
-{9,6,1664},{7,4,6},{7,8,34},{9,5,128},{7,8,50},{7,6,14},{7,8,62},{7,4,4},{7,4,2},{7,4,7},
-{7,8,48},{7,4,3},{7,8,60},{7,4,5},{7,8,42},{7,6,16},{9,9,1088},{7,4,6},{7,8,32},{7,5,8},
-{7,8,58},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,7,22},{7,4,3},{7,5,11},{7,4,5},
-{7,7,26},{7,5,9},{9,8,640},{7,4,6},{7,8,38},{9,5,128},{7,7,25},{7,6,15},{9,8,384},{7,4,4},
-{7,4,2},{7,4,7},{7,6,13},{7,4,3},{7,7,18},{7,4,5},{7,7,21},{7,6,17},{9,7,256},{7,4,6},
-{7,6,1},{7,5,8},{9,6,192},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{0,0,0},{7,4,3},
-{7,5,11},{7,4,5},{7,6,12},{7,5,9},{9,6,1664},{7,4,6},{7,7,20},{9,5,128},{7,7,24},{7,6,14},
-{7,7,28},{7,4,4},{7,4,2},{7,4,7},{7,7,23},{7,4,3},{7,7,27},{7,4,5},{7,8,39},{7,6,16},
-{9,8,576},{7,4,6},{7,7,19},{7,5,8},{7,8,55},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},
-{7,8,45},{7,4,3},{7,5,11},{7,4,5},{7,8,53},{7,5,9},{9,8,448},{7,4,6},{7,8,35},{9,5,128},
-{7,8,51},{7,6,15},{7,8,63},{7,4,4},{7,4,2},{7,4,7},{7,6,13},{7,4,3},{9,9,1536},{7,4,5},
-{7,8,43},{7,6,17},{9,9,1280},{7,4,6},{7,6,1},{7,5,8},{9,6,192},{9,5,64},{7,5,10},{7,4,4},
-{7,4,2},{7,4,7},{7,8,29},{7,4,3},{7,5,11},{7,4,5},{7,6,12},{7,5,9},{9,6,1664},{7,4,6},
-{7,8,33},{9,5,128},{7,8,49},{7,6,14},{7,8,61},{7,4,4},{7,4,2},{7,4,7},{7,8,47},{7,4,3},
-{7,8,59},{7,4,5},{7,8,41},{7,6,16},{9,9,1024},{7,4,6},{7,8,31},{7,5,8},{7,8,57},{9,5,64},
-{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,7,22},{7,4,3},{7,5,11},{7,4,5},{7,7,26},{7,5,9},
-{9,9,768},{7,4,6},{7,8,37},{9,5,128},{7,7,25},{7,6,15},{9,8,320},{7,4,4},{7,4,2},{7,4,7},
-{7,6,13},{7,4,3},{7,7,18},{7,4,5},{7,7,21},{7,6,17},{9,7,256},{7,4,6},{7,6,1},{7,5,8},
-{9,6,192},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{11,11,1920},{7,4,3},{7,5,11},{7,4,5},
-{7,6,12},{7,5,9},{9,6,1664},{7,4,6},{7,7,20},{9,5,128},{7,7,24},{7,6,14},{7,7,28},{7,4,4},
-{7,4,2},{7,4,7},{7,7,23},{7,4,3},{7,7,27},{7,4,5},{7,8,40},{7,6,16},{9,9,896},{7,4,6},
-{7,7,19},{7,5,8},{7,8,56},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,8,46},{7,4,3},
-{7,5,11},{7,4,5},{7,8,54},{7,5,9},{9,8,512},{7,4,6},{7,8,36},{9,5,128},{7,8,52},{7,6,15},
-{7,8,0},{7,4,4},{7,4,2},{7,4,7},{7,6,13},{7,4,3},{9,9,1728},{7,4,5},{7,8,44},{7,6,17},
-{9,9,1408},{7,4,6},{7,6,1},{7,5,8},{9,6,192},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},
-{7,8,30},{7,4,3},{7,5,11},{7,4,5},{7,6,12},{7,5,9},{9,6,1664},{7,4,6},{7,8,34},{9,5,128},
-{7,8,50},{7,6,14},{7,8,62},{7,4,4},{7,4,2},{7,4,7},{7,8,48},{7,4,3},{7,8,60},{7,4,5},
-{7,8,42},{7,6,16},{9,9,1152},{7,4,6},{7,8,32},{7,5,8},{7,8,58},{9,5,64},{7,5,10},{7,4,4},
-{7,4,2},{7,4,7},{7,7,22},{7,4,3},{7,5,11},{7,4,5},{7,7,26},{7,5,9},{9,8,640},{7,4,6},
-{7,8,38},{9,5,128},{7,7,25},{7,6,15},{9,8,384},{7,4,4},{7,4,2},{7,4,7},{7,6,13},{7,4,3},
-{7,7,18},{7,4,5},{7,7,21},{7,6,17},{9,7,256},{7,4,6},{7,6,1},{7,5,8},{9,6,192},{9,5,64},
-{7,5,10},{7,4,4},{7,4,2},{7,4,7},{0,0,0},{7,4,3},{7,5,11},{7,4,5},{7,6,12},{7,5,9},
-{9,6,1664},{7,4,6},{7,7,20},{9,5,128},{7,7,24},{7,6,14},{7,7,28},{7,4,4},{7,4,2},{7,4,7},
-{7,7,23},{7,4,3},{7,7,27},{7,4,5},{7,8,39},{7,6,16},{9,8,576},{7,4,6},{7,7,19},{7,5,8},
-{7,8,55},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,8,45},{7,4,3},{7,5,11},{7,4,5},
-{7,8,53},{7,5,9},{9,8,448},{7,4,6},{7,8,35},{9,5,128},{7,8,51},{7,6,15},{7,8,63},{7,4,4},
-{7,4,2},{7,4,7},{7,6,13},{7,4,3},{9,9,1472},{7,4,5},{7,8,43},{7,6,17},{9,9,1216},{7,4,6},
-{7,6,1},{7,5,8},{9,6,192},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,8,29},{7,4,3},
-{7,5,11},{7,4,5},{7,6,12},{7,5,9},{9,6,1664},{7,4,6},{7,8,33},{9,5,128},{7,8,49},{7,6,14},
-{7,8,61},{7,4,4},{7,4,2},{7,4,7},{7,8,47},{7,4,3},{7,8,59},{7,4,5},{7,8,41},{7,6,16},
-{9,9,960},{7,4,6},{7,8,31},{7,5,8},{7,8,57},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},
-{7,7,22},{7,4,3},{7,5,11},{7,4,5},{7,7,26},{7,5,9},{9,9,704},{7,4,6},{7,8,37},{9,5,128},
-{7,7,25},{7,6,15},{9,8,320},{7,4,4},{7,4,2},{7,4,7},{7,6,13},{7,4,3},{7,7,18},{7,4,5},
-{7,7,21},{7,6,17},{9,7,256},{7,4,6},{7,6,1},{7,5,8},{9,6,192},{9,5,64},{7,5,10},{7,4,4},
-{7,4,2},{7,4,7},{11,12,2304},{7,4,3},{7,5,11},{7,4,5},{7,6,12},{7,5,9},{9,6,1664},{7,4,6},
-{7,7,20},{9,5,128},{7,7,24},{7,6,14},{7,7,28},{7,4,4},{7,4,2},{7,4,7},{7,7,23},{7,4,3},
-{7,7,27},{7,4,5},{7,8,40},{7,6,16},{9,9,832},{7,4,6},{7,7,19},{7,5,8},{7,8,56},{9,5,64},
-{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,8,46},{7,4,3},{7,5,11},{7,4,5},{7,8,54},{7,5,9},
-{9,8,512},{7,4,6},{7,8,36},{9,5,128},{7,8,52},{7,6,15},{7,8,0},{7,4,4},{7,4,2},{7,4,7},
-{7,6,13},{7,4,3},{9,9,1600},{7,4,5},{7,8,44},{7,6,17},{9,9,1344},{7,4,6},{7,6,1},{7,5,8},
-{9,6,192},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,8,30},{7,4,3},{7,5,11},{7,4,5},
-{7,6,12},{7,5,9},{9,6,1664},{7,4,6},{7,8,34},{9,5,128},{7,8,50},{7,6,14},{7,8,62},{7,4,4},
-{7,4,2},{7,4,7},{7,8,48},{7,4,3},{7,8,60},{7,4,5},{7,8,42},{7,6,16},{9,9,1088},{7,4,6},
-{7,8,32},{7,5,8},{7,8,58},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,7,22},{7,4,3},
-{7,5,11},{7,4,5},{7,7,26},{7,5,9},{9,8,640},{7,4,6},{7,8,38},{9,5,128},{7,7,25},{7,6,15},
-{9,8,384},{7,4,4},{7,4,2},{7,4,7},{7,6,13},{7,4,3},{7,7,18},{7,4,5},{7,7,21},{7,6,17},
-{9,7,256},{7,4,6},{7,6,1},{7,5,8},{9,6,192},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},
-{0,0,0},{7,4,3},{7,5,11},{7,4,5},{7,6,12},{7,5,9},{9,6,1664},{7,4,6},{7,7,20},{9,5,128},
-{7,7,24},{7,6,14},{7,7,28},{7,4,4},{7,4,2},{7,4,7},{7,7,23},{7,4,3},{7,7,27},{7,4,5},
-{7,8,39},{7,6,16},{9,8,576},{7,4,6},{7,7,19},{7,5,8},{7,8,55},{9,5,64},{7,5,10},{7,4,4},
-{7,4,2},{7,4,7},{7,8,45},{7,4,3},{7,5,11},{7,4,5},{7,8,53},{7,5,9},{9,8,448},{7,4,6},
-{7,8,35},{9,5,128},{7,8,51},{7,6,15},{7,8,63},{7,4,4},{7,4,2},{7,4,7},{7,6,13},{7,4,3},
-{9,9,1536},{7,4,5},{7,8,43},{7,6,17},{9,9,1280},{7,4,6},{7,6,1},{7,5,8},{9,6,192},{9,5,64},
-{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,8,29},{7,4,3},{7,5,11},{7,4,5},{7,6,12},{7,5,9},
-{9,6,1664},{7,4,6},{7,8,33},{9,5,128},{7,8,49},{7,6,14},{7,8,61},{7,4,4},{7,4,2},{7,4,7},
-{7,8,47},{7,4,3},{7,8,59},{7,4,5},{7,8,41},{7,6,16},{9,9,1024},{7,4,6},{7,8,31},{7,5,8},
-{7,8,57},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,7,22},{7,4,3},{7,5,11},{7,4,5},
-{7,7,26},{7,5,9},{9,9,768},{7,4,6},{7,8,37},{9,5,128},{7,7,25},{7,6,15},{9,8,320},{7,4,4},
-{7,4,2},{7,4,7},{7,6,13},{7,4,3},{7,7,18},{7,4,5},{7,7,21},{7,6,17},{9,7,256},{7,4,6},
-{7,6,1},{7,5,8},{9,6,192},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{11,12,2560},{7,4,3},
-{7,5,11},{7,4,5},{7,6,12},{7,5,9},{9,6,1664},{7,4,6},{7,7,20},{9,5,128},{7,7,24},{7,6,14},
-{7,7,28},{7,4,4},{7,4,2},{7,4,7},{7,7,23},{7,4,3},{7,7,27},{7,4,5},{7,8,40},{7,6,16},
-{9,9,896},{7,4,6},{7,7,19},{7,5,8},{7,8,56},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},
-{7,8,46},{7,4,3},{7,5,11},{7,4,5},{7,8,54},{7,5,9},{9,8,512},{7,4,6},{7,8,36},{9,5,128},
-{7,8,52},{7,6,15},{7,8,0},{7,4,4},{7,4,2},{7,4,7},{7,6,13},{7,4,3},{9,9,1728},{7,4,5},
-{7,8,44},{7,6,17},{9,9,1408},{7,4,6},{7,6,1},{7,5,8},{9,6,192},{9,5,64},{7,5,10},{7,4,4},
-{7,4,2},{7,4,7},{7,8,30},{7,4,3},{7,5,11},{7,4,5},{7,6,12},{7,5,9},{9,6,1664},{7,4,6},
-{7,8,34},{9,5,128},{7,8,50},{7,6,14},{7,8,62},{7,4,4},{7,4,2},{7,4,7},{7,8,48},{7,4,3},
-{7,8,60},{7,4,5},{7,8,42},{7,6,16},{9,9,1152},{7,4,6},{7,8,32},{7,5,8},{7,8,58},{9,5,64},
-{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,7,22},{7,4,3},{7,5,11},{7,4,5},{7,7,26},{7,5,9},
-{9,8,640},{7,4,6},{7,8,38},{9,5,128},{7,7,25},{7,6,15},{9,8,384},{7,4,4},{7,4,2},{7,4,7},
-{7,6,13},{7,4,3},{7,7,18},{7,4,5},{7,7,21},{7,6,17},{9,7,256},{7,4,6},{7,6,1},{7,5,8},
-{9,6,192},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7}
-};
- const TIFFFaxTabEnt TIFFFaxBlackTable[8192] = {
-{12,11,0},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,10},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,8,13},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,9,15},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,10,18},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,7,11},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,10,17},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,7,12},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{11,11,1792},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,10},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,11,23},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,11,20},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,11,25},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,11},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,8,14},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,7,12},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{0,0,0},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,7,10},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,8,13},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{10,12,128},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,12,56},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,11},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,12,30},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,12},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{11,11,1856},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,7,10},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,12,57},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,11,21},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,12,54},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,11},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,8,14},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,12},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{0,0,0},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,10},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,8,13},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,9,15},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,12,52},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,7,11},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,12,48},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,12},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{11,12,2112},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,10},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,12,44},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,12,36},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{10,12,384},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,7,11},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,8,14},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,7,12},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{0,0,0},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,10},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,8,13},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,12,28},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,12,60},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,11},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,12,40},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,7,12},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{11,12,2368},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,7,10},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,10,16},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,10,0},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{10,10,64},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,11},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,8,14},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,12},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{0,0,0},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,7,10},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,8,13},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,9,15},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,10,18},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,11},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,10,17},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,12},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{11,12,1984},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,10},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,12,50},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,12,34},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{10,13,1664},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,7,11},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,8,14},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,12},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{0,0,0},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,10},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,8,13},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,12,26},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{10,13,1408},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,7,11},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,12,32},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,7,12},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{11,11,1920},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,10},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,12,61},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,12,42},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{10,13,1024},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,11},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,8,14},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,7,12},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{0,0,0},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,7,10},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,8,13},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,9,15},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{10,13,768},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,11},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,12,62},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,12},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{11,12,2240},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,7,10},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,12,46},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,12,38},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{10,13,512},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,11},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,8,14},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,12},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{0,0,0},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,10},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,8,13},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,11,19},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,11,24},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,7,11},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,11,22},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,12},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{11,12,2496},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,10},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,10,16},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,10,0},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{10,10,64},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,7,11},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,8,14},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,7,12},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{12,11,0},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,10},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,8,13},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,9,15},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,10,18},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,11},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,10,17},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,7,12},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{11,11,1792},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,7,10},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,11,23},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,11,20},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,11,25},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,11},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,8,14},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,12},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{0,0,0},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,7,10},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,8,13},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{10,12,192},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{10,13,1280},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,11},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,12,31},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,12},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{11,11,1856},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,10},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,12,58},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,11,21},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{10,13,896},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,7,11},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,8,14},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,12},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{0,0,0},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,10},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,8,13},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,9,15},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{10,13,640},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,7,11},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,12,49},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,7,12},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{11,12,2176},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,10},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,12,45},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,12,37},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{10,12,448},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,11},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,8,14},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,7,12},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{0,0,0},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,7,10},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,8,13},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,12,29},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{10,13,1536},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,11},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,12,41},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,12},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{11,12,2432},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,7,10},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,10,16},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,10,0},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{10,10,64},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,11},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,8,14},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,12},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{0,0,0},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,10},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,8,13},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,9,15},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,10,18},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,7,11},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,10,17},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,12},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{11,12,2048},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,10},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,12,51},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,12,35},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{10,12,320},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,7,11},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,8,14},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,7,12},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{0,0,0},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,10},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,8,13},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,12,27},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,12,59},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,11},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,12,33},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,7,12},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{11,11,1920},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,7,10},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{10,12,256},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,12,43},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{10,13,1152},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,11},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,8,14},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,12},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{0,0,0},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,7,10},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,8,13},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,9,15},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,12,55},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,11},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,12,63},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,12},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{11,12,2304},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,10},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,12,47},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,12,39},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,12,53},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,7,11},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,8,14},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,12},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{0,0,0},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,10},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,8,13},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,11,19},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,11,24},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,7,11},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,11,22},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,7,12},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{11,12,2560},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,10},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,10,16},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,10,0},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{10,10,64},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,11},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,8,14},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,7,12},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{12,11,0},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,7,10},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,8,13},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,9,15},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,10,18},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,11},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,10,17},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,12},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{11,11,1792},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,7,10},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,11,23},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,11,20},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,11,25},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,11},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,8,14},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,12},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{0,0,0},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,10},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,8,13},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{10,12,128},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,12,56},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,7,11},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,12,30},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,12},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{11,11,1856},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,10},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,12,57},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,11,21},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,12,54},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,7,11},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,8,14},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,7,12},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{0,0,0},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,10},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,8,13},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,9,15},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,12,52},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,11},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,12,48},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,7,12},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{11,12,2112},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,7,10},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,12,44},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,12,36},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{10,12,384},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,11},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,8,14},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,12},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{0,0,0},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,7,10},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,8,13},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,12,28},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,12,60},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,11},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,12,40},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,12},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{11,12,2368},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,10},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,10,16},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,10,0},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{10,10,64},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,7,11},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,8,14},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,12},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{0,0,0},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,10},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,8,13},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,9,15},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,10,18},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,7,11},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,10,17},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,7,12},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{11,12,1984},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,10},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,12,50},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,12,34},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{10,13,1728},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,11},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,8,14},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,7,12},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{0,0,0},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,7,10},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,8,13},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,12,26},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{10,13,1472},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,11},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,12,32},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,12},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{11,11,1920},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,7,10},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,12,61},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,12,42},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{10,13,1088},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,11},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,8,14},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,12},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{0,0,0},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,10},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,8,13},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,9,15},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{10,13,832},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,7,11},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,12,62},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,12},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{11,12,2240},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,10},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,12,46},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,12,38},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{10,13,576},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,7,11},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,8,14},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,7,12},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{0,0,0},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,10},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,8,13},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,11,19},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,11,24},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,11},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,11,22},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,7,12},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{11,12,2496},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,7,10},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,10,16},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,10,0},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{10,10,64},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,11},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,8,14},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,12},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{12,11,0},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,7,10},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,8,13},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,9,15},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,10,18},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,11},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,10,17},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,12},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{11,11,1792},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,10},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,11,23},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,11,20},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,11,25},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,7,11},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,8,14},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,12},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{0,0,0},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,10},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,8,13},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{10,12,192},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{10,13,1344},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,7,11},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,12,31},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,7,12},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{11,11,1856},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,10},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,12,58},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,11,21},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{10,13,960},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,11},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,8,14},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,7,12},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{0,0,0},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,7,10},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,8,13},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,9,15},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{10,13,704},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,11},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,12,49},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,12},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{11,12,2176},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,7,10},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,12,45},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,12,37},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{10,12,448},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,11},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,8,14},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,12},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{0,0,0},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,10},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,8,13},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,12,29},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{10,13,1600},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,7,11},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,12,41},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,12},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{11,12,2432},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,10},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,10,16},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,10,0},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{10,10,64},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,7,11},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,8,14},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,7,12},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{0,0,0},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,10},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,8,13},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,9,15},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,10,18},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,11},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,10,17},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,7,12},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{11,12,2048},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,7,10},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,12,51},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,12,35},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{10,12,320},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,11},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,8,14},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,12},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{0,0,0},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,7,10},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,8,13},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,12,27},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,12,59},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,11},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,12,33},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,12},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{11,11,1920},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,10},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{10,12,256},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,12,43},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{10,13,1216},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,7,11},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,8,14},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,12},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{0,0,0},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,10},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,8,13},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,9,15},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,12,55},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,7,11},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,12,63},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,7,12},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{11,12,2304},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,10},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,12,47},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,12,39},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,12,53},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,11},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,8,14},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,7,12},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{0,0,0},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,7,10},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,8,13},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,11,19},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,11,24},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,11},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,11,22},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,12},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{11,12,2560},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,7,10},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,10,16},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,10,0},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{10,10,64},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,11},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,8,14},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,12},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2}
-};
diff --git a/src/tiff/tif_flush.c b/src/tiff/tif_flush.c
deleted file mode 100644
index f6bd33f..0000000
--- a/src/tiff/tif_flush.c
+++ /dev/null
@@ -1,67 +0,0 @@
-/* $Header$ */
-
-/*
- * Copyright (c) 1988-1997 Sam Leffler
- * Copyright (c) 1991-1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and 
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- * 
- * 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 SAM LEFFLER OR SILICON GRAPHICS 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.
- */
-
-/*
- * TIFF Library.
- */
-#include "tiffiop.h"
-
-int
-TIFFFlush(TIFF* tif)
-{
-
-	if (tif->tif_mode != O_RDONLY) {
-		if (!TIFFFlushData(tif))
-			return (0);
-		if ((tif->tif_flags & TIFF_DIRTYDIRECT) &&
-		    !TIFFWriteDirectory(tif))
-			return (0);
-	}
-	return (1);
-}
-
-/*
- * Flush buffered data to the file.
- *
- * Frank Warmerdam'2000: I modified this to return 1 if TIFF_BEENWRITING
- * is not set, so that TIFFFlush() will proceed to write out the directory.
- * The documentation says returning 1 is an error indicator, but not having
- * been writing isn't exactly a an error.  Hopefully this doesn't cause
- * problems for other people. 
- */
-int
-TIFFFlushData(TIFF* tif)
-{
-	if ((tif->tif_flags & TIFF_BEENWRITING) == 0)
-		return (0);
-	if (tif->tif_flags & TIFF_POSTENCODE) {
-		tif->tif_flags &= ~TIFF_POSTENCODE;
-		if (!(*tif->tif_postencode)(tif))
-			return (0);
-	}
-	return (TIFFFlushData1(tif));
-}
-
diff --git a/src/tiff/tif_getimage.c b/src/tiff/tif_getimage.c
deleted file mode 100644
index acc7ebb..0000000
--- a/src/tiff/tif_getimage.c
+++ /dev/null
@@ -1,2598 +0,0 @@
-/* $Id: tif_getimage.c 4825 2006-08-16 13:01:53Z lubia $ */
-
-/*
- * Copyright (c) 1991-1997 Sam Leffler
- * Copyright (c) 1991-1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and 
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- * 
- * 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 SAM LEFFLER OR SILICON GRAPHICS 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.
- */
-
-/*
- * TIFF Library
- *
- * Read and return a packed RGBA image.
- */
-#include "tiffiop.h"
-#include <stdio.h>
-
-static	int gtTileContig(TIFFRGBAImage*, uint32*, uint32, uint32);
-static	int gtTileSeparate(TIFFRGBAImage*, uint32*, uint32, uint32);
-static	int gtStripContig(TIFFRGBAImage*, uint32*, uint32, uint32);
-static	int gtStripSeparate(TIFFRGBAImage*, uint32*, uint32, uint32);
-static	int pickTileContigCase(TIFFRGBAImage*);
-static	int pickTileSeparateCase(TIFFRGBAImage*);
-
-static	const char photoTag[] = "PhotometricInterpretation";
-
-/* 
- * Helper constants used in Orientation tag handling
- */
-#define FLIP_VERTICALLY 0x01
-#define FLIP_HORIZONTALLY 0x02
-
-/*
- * Color conversion constants. We will define display types here.
- */
-
-TIFFDisplay display_sRGB = {
-	{			/* XYZ -> luminance matrix */
-		{  3.2410F, -1.5374F, -0.4986F },
-		{  -0.9692F, 1.8760F, 0.0416F },
-		{  0.0556F, -0.2040F, 1.0570F }
-	},	
-	100.0F, 100.0F, 100.0F,	/* Light o/p for reference white */
-	255, 255, 255,		/* Pixel values for ref. white */
-	1.0F, 1.0F, 1.0F,	/* Residual light o/p for black pixel */
-	2.4F, 2.4F, 2.4F,	/* Gamma values for the three guns */
-};
-
-/*
- * Check the image to see if TIFFReadRGBAImage can deal with it.
- * 1/0 is returned according to whether or not the image can
- * be handled.  If 0 is returned, emsg contains the reason
- * why it is being rejected.
- */
-int
-TIFFRGBAImageOK(TIFF* tif, char emsg[1024])
-{
-    TIFFDirectory* td = &tif->tif_dir;
-    uint16 photometric;
-    int colorchannels;
-
-    if (!tif->tif_decodestatus) {
-	sprintf(emsg, "Sorry, requested compression method is not configured");
-	return (0);
-    }
-    switch (td->td_bitspersample) {
-    case 1: case 2: case 4:
-    case 8: case 16:
-	break;
-    default:
-	sprintf(emsg, "Sorry, can not handle images with %d-bit samples",
-	    td->td_bitspersample);
-	return (0);
-    }
-    colorchannels = td->td_samplesperpixel - td->td_extrasamples;
-    if (!TIFFGetField(tif, TIFFTAG_PHOTOMETRIC, &photometric)) {
-	switch (colorchannels) {
-	case 1:
-	    photometric = PHOTOMETRIC_MINISBLACK;
-	    break;
-	case 3:
-	    photometric = PHOTOMETRIC_RGB;
-	    break;
-	default:
-	    sprintf(emsg, "Missing needed %s tag", photoTag);
-	    return (0);
-	}
-    }
-    switch (photometric) {
-    case PHOTOMETRIC_MINISWHITE:
-    case PHOTOMETRIC_MINISBLACK:
-    case PHOTOMETRIC_PALETTE:
-	if (td->td_planarconfig == PLANARCONFIG_CONTIG 
-            && td->td_samplesperpixel != 1
-            && td->td_bitspersample < 8 ) {
-	    sprintf(emsg,
-                    "Sorry, can not handle contiguous data with %s=%d, "
-                    "and %s=%d and Bits/Sample=%d",
-                    photoTag, photometric,
-                    "Samples/pixel", td->td_samplesperpixel,
-                    td->td_bitspersample);
-	    return (0);
-	}
-        /*
-        ** We should likely validate that any extra samples are either
-        ** to be ignored, or are alpha, and if alpha we should try to use
-        ** them.  But for now we won't bother with this. 
-        */
-	break;
-    case PHOTOMETRIC_YCBCR:
-	if (td->td_planarconfig != PLANARCONFIG_CONTIG) {
-	    sprintf(emsg, "Sorry, can not handle YCbCr images with %s=%d",
-		"Planarconfiguration", td->td_planarconfig);
-	    return (0);
-	}
-	break;
-    case PHOTOMETRIC_RGB: 
-	if (colorchannels < 3) {
-	    sprintf(emsg, "Sorry, can not handle RGB image with %s=%d",
-		"Color channels", colorchannels);
-	    return (0);
-	}
-	break;
-    case PHOTOMETRIC_SEPARATED:
-	{
-		uint16 inkset;
-		TIFFGetFieldDefaulted(tif, TIFFTAG_INKSET, &inkset);
-		if (inkset != INKSET_CMYK) {
-		    sprintf(emsg,
-			    "Sorry, can not handle separated image with %s=%d",
-			    "InkSet", inkset);
-		    return 0;
-		}
-		if (td->td_samplesperpixel < 4) {
-		    sprintf(emsg,
-			    "Sorry, can not handle separated image with %s=%d",
-			    "Samples/pixel", td->td_samplesperpixel);
-		    return 0;
-		}
-		break;
-	}
-    case PHOTOMETRIC_LOGL:
-	if (td->td_compression != COMPRESSION_SGILOG) {
-	    sprintf(emsg, "Sorry, LogL data must have %s=%d",
-		"Compression", COMPRESSION_SGILOG);
-	    return (0);
-	}
-	break;
-    case PHOTOMETRIC_LOGLUV:
-	if (td->td_compression != COMPRESSION_SGILOG &&
-		td->td_compression != COMPRESSION_SGILOG24) {
-	    sprintf(emsg, "Sorry, LogLuv data must have %s=%d or %d",
-		"Compression", COMPRESSION_SGILOG, COMPRESSION_SGILOG24);
-	    return (0);
-	}
-	if (td->td_planarconfig != PLANARCONFIG_CONTIG) {
-	    sprintf(emsg, "Sorry, can not handle LogLuv images with %s=%d",
-		"Planarconfiguration", td->td_planarconfig);
-	    return (0);
-	}
-	break;
-    case PHOTOMETRIC_CIELAB:
-	break;
-    default:
-	sprintf(emsg, "Sorry, can not handle image with %s=%d",
-	    photoTag, photometric);
-	return (0);
-    }
-    return (1);
-}
-
-void
-TIFFRGBAImageEnd(TIFFRGBAImage* img)
-{
-	if (img->Map)
-		_TIFFfree(img->Map), img->Map = NULL;
-	if (img->BWmap)
-		_TIFFfree(img->BWmap), img->BWmap = NULL;
-	if (img->PALmap)
-		_TIFFfree(img->PALmap), img->PALmap = NULL;
-	if (img->ycbcr)
-		_TIFFfree(img->ycbcr), img->ycbcr = NULL;
-	if (img->cielab)
-		_TIFFfree(img->cielab), img->cielab = NULL;
-
-	if( img->redcmap ) {
-		_TIFFfree( img->redcmap );
-		_TIFFfree( img->greencmap );
-		_TIFFfree( img->bluecmap );
-	}
-}
-
-static int
-isCCITTCompression(TIFF* tif)
-{
-    uint16 compress;
-    TIFFGetField(tif, TIFFTAG_COMPRESSION, &compress);
-    return (compress == COMPRESSION_CCITTFAX3 ||
-	    compress == COMPRESSION_CCITTFAX4 ||
-	    compress == COMPRESSION_CCITTRLE ||
-	    compress == COMPRESSION_CCITTRLEW);
-}
-
-int
-TIFFRGBAImageBegin(TIFFRGBAImage* img, TIFF* tif, int stop, char emsg[1024])
-{
-    uint16* sampleinfo;
-    uint16 extrasamples;
-    uint16 planarconfig;
-    uint16 compress;
-    int colorchannels;
-    uint16 *red_orig, *green_orig, *blue_orig;
-    int n_color;
-
-    /* Initialize to normal values */
-    img->row_offset = 0;
-    img->col_offset = 0;
-    img->redcmap = NULL;
-    img->greencmap = NULL;
-    img->bluecmap = NULL;
-    img->req_orientation = ORIENTATION_BOTLEFT;	    /* It is the default */
-    
-    img->tif = tif;
-    img->stoponerr = stop;
-    TIFFGetFieldDefaulted(tif, TIFFTAG_BITSPERSAMPLE, &img->bitspersample);
-    switch (img->bitspersample) {
-    case 1: case 2: case 4:
-    case 8: case 16:
-	break;
-    default:
-	sprintf(emsg, "Sorry, can not handle images with %d-bit samples",
-	    img->bitspersample);
-	return (0);
-    }
-    img->alpha = 0;
-    TIFFGetFieldDefaulted(tif, TIFFTAG_SAMPLESPERPIXEL, &img->samplesperpixel);
-    TIFFGetFieldDefaulted(tif, TIFFTAG_EXTRASAMPLES,
-	&extrasamples, &sampleinfo);
-    if (extrasamples >= 1)
-    {
-	switch (sampleinfo[0]) {
-	case EXTRASAMPLE_UNSPECIFIED:	/* Workaround for some images without */
-		if (img->samplesperpixel > 3)	/* correct info about alpha channel */
-			img->alpha = EXTRASAMPLE_ASSOCALPHA;
-		break;
-	case EXTRASAMPLE_ASSOCALPHA:	/* data is pre-multiplied */
-	case EXTRASAMPLE_UNASSALPHA:	/* data is not pre-multiplied */
-		img->alpha = sampleinfo[0];
-		break;
-	}
-    }
-
-#ifdef DEFAULT_EXTRASAMPLE_AS_ALPHA
-    if( !TIFFGetField(tif, TIFFTAG_PHOTOMETRIC, &img->photometric))
-        img->photometric = PHOTOMETRIC_MINISWHITE;
-
-    if( extrasamples == 0 
-        && img->samplesperpixel == 4 
-        && img->photometric == PHOTOMETRIC_RGB )
-    {
-        img->alpha = EXTRASAMPLE_ASSOCALPHA;
-        extrasamples = 1;
-    }
-#endif
-
-    colorchannels = img->samplesperpixel - extrasamples;
-    TIFFGetFieldDefaulted(tif, TIFFTAG_COMPRESSION, &compress);
-    TIFFGetFieldDefaulted(tif, TIFFTAG_PLANARCONFIG, &planarconfig);
-    if (!TIFFGetField(tif, TIFFTAG_PHOTOMETRIC, &img->photometric)) {
-	switch (colorchannels) {
-	case 1:
-	    if (isCCITTCompression(tif))
-		img->photometric = PHOTOMETRIC_MINISWHITE;
-	    else
-		img->photometric = PHOTOMETRIC_MINISBLACK;
-	    break;
-	case 3:
-	    img->photometric = PHOTOMETRIC_RGB;
-	    break;
-	default:
-	    sprintf(emsg, "Missing needed %s tag", photoTag);
-	    return (0);
-	}
-    }
-    switch (img->photometric) {
-    case PHOTOMETRIC_PALETTE:
-	if (!TIFFGetField(tif, TIFFTAG_COLORMAP,
-	    &red_orig, &green_orig, &blue_orig)) {
-	    sprintf(emsg, "Missing required \"Colormap\" tag");
-	    return (0);
-	}
-
-        /* copy the colormaps so we can modify them */
-        n_color = (1L << img->bitspersample);
-        img->redcmap = (uint16 *) _TIFFmalloc(sizeof(uint16)*n_color);
-        img->greencmap = (uint16 *) _TIFFmalloc(sizeof(uint16)*n_color);
-        img->bluecmap = (uint16 *) _TIFFmalloc(sizeof(uint16)*n_color);
-        if( !img->redcmap || !img->greencmap || !img->bluecmap ) {
-	    sprintf(emsg, "Out of memory for colormap copy");
-	    return (0);
-        }
-
-        _TIFFmemcpy( img->redcmap, red_orig, n_color * 2 );
-        _TIFFmemcpy( img->greencmap, green_orig, n_color * 2 );
-        _TIFFmemcpy( img->bluecmap, blue_orig, n_color * 2 );
-        
-	/* fall thru... */
-    case PHOTOMETRIC_MINISWHITE:
-    case PHOTOMETRIC_MINISBLACK:
-	if (planarconfig == PLANARCONFIG_CONTIG 
-            && img->samplesperpixel != 1
-            && img->bitspersample < 8 ) {
-	    sprintf(emsg,
-                    "Sorry, can not handle contiguous data with %s=%d, "
-                    "and %s=%d and Bits/Sample=%d",
-                    photoTag, img->photometric,
-                    "Samples/pixel", img->samplesperpixel,
-                    img->bitspersample);
-	    return (0);
-	}
-	break;
-    case PHOTOMETRIC_YCBCR:
-	if (planarconfig != PLANARCONFIG_CONTIG) {
-	    sprintf(emsg, "Sorry, can not handle YCbCr images with %s=%d",
-		"Planarconfiguration", planarconfig);
-	    return (0);
-	}
-	/* It would probably be nice to have a reality check here. */
-	if (planarconfig == PLANARCONFIG_CONTIG)
-	    /* can rely on libjpeg to convert to RGB */
-	    /* XXX should restore current state on exit */
-	    switch (compress) {
-		case COMPRESSION_OJPEG:
-		case COMPRESSION_JPEG:
-		    TIFFSetField(tif, TIFFTAG_JPEGCOLORMODE, JPEGCOLORMODE_RGB);
-		    img->photometric = PHOTOMETRIC_RGB;
-                    break;
-
-                default:
-                    /* do nothing */;
-                    break;
-	    }
-	break;
-    case PHOTOMETRIC_RGB: 
-	if (colorchannels < 3) {
-	    sprintf(emsg, "Sorry, can not handle RGB image with %s=%d",
-		"Color channels", colorchannels);
-	    return (0);
-	}
-	break;
-    case PHOTOMETRIC_SEPARATED: {
-	uint16 inkset;
-	TIFFGetFieldDefaulted(tif, TIFFTAG_INKSET, &inkset);
-	if (inkset != INKSET_CMYK) {
-	    sprintf(emsg, "Sorry, can not handle separated image with %s=%d",
-		"InkSet", inkset);
-	    return (0);
-	}
-	if (img->samplesperpixel < 4) {
-	    sprintf(emsg, "Sorry, can not handle separated image with %s=%d",
-		"Samples/pixel", img->samplesperpixel);
-	    return (0);
-	}
-	break;
-    }
-    case PHOTOMETRIC_LOGL:
-	if (compress != COMPRESSION_SGILOG) {
-	    sprintf(emsg, "Sorry, LogL data must have %s=%d",
-		"Compression", COMPRESSION_SGILOG);
-	    return (0);
-	}
-	TIFFSetField(tif, TIFFTAG_SGILOGDATAFMT, SGILOGDATAFMT_8BIT);
-	img->photometric = PHOTOMETRIC_MINISBLACK;	/* little white lie */
-	img->bitspersample = 8;
-	break;
-    case PHOTOMETRIC_LOGLUV:
-	if (compress != COMPRESSION_SGILOG && compress != COMPRESSION_SGILOG24) {
-	    sprintf(emsg, "Sorry, LogLuv data must have %s=%d or %d",
-		"Compression", COMPRESSION_SGILOG, COMPRESSION_SGILOG24);
-	    return (0);
-	}
-	if (planarconfig != PLANARCONFIG_CONTIG) {
-	    sprintf(emsg, "Sorry, can not handle LogLuv images with %s=%d",
-		"Planarconfiguration", planarconfig);
-	    return (0);
-	}
-	TIFFSetField(tif, TIFFTAG_SGILOGDATAFMT, SGILOGDATAFMT_8BIT);
-	img->photometric = PHOTOMETRIC_RGB;		/* little white lie */
-	img->bitspersample = 8;
-	break;
-    case PHOTOMETRIC_CIELAB:
-	break;
-    default:
-	sprintf(emsg, "Sorry, can not handle image with %s=%d",
-	    photoTag, img->photometric);
-	return (0);
-    }
-    img->Map = NULL;
-    img->BWmap = NULL;
-    img->PALmap = NULL;
-    img->ycbcr = NULL;
-    img->cielab = NULL;
-    TIFFGetField(tif, TIFFTAG_IMAGEWIDTH, &img->width);
-    TIFFGetField(tif, TIFFTAG_IMAGELENGTH, &img->height);
-    TIFFGetFieldDefaulted(tif, TIFFTAG_ORIENTATION, &img->orientation);
-    img->isContig =
-	!(planarconfig == PLANARCONFIG_SEPARATE && colorchannels > 1);
-    if (img->isContig) {
-	img->get = TIFFIsTiled(tif) ? gtTileContig : gtStripContig;
-	if (!pickTileContigCase(img)) {
-		sprintf(emsg, "Sorry, can not handle image");
-		return 0;
-	}
-    } else {
-	img->get = TIFFIsTiled(tif) ? gtTileSeparate : gtStripSeparate;
-	if (!pickTileSeparateCase(img)) {
-		sprintf(emsg, "Sorry, can not handle image");
-		return 0;
-	}
-    }
-    return 1;
-}
-
-int
-TIFFRGBAImageGet(TIFFRGBAImage* img, uint32* raster, uint32 w, uint32 h)
-{
-    if (img->get == NULL) {
-		TIFFErrorExt(img->tif->tif_clientdata, TIFFFileName(img->tif), "No \"get\" routine setup");
-		return (0);
-	}
-	if (img->put.any == NULL) {
-		TIFFErrorExt(img->tif->tif_clientdata, TIFFFileName(img->tif),
-		"No \"put\" routine setupl; probably can not handle image format");
-		return (0);
-    }
-    return (*img->get)(img, raster, w, h);
-}
-
-/*
- * Read the specified image into an ABGR-format rastertaking in account
- * specified orientation.
- */
-int
-TIFFReadRGBAImageOriented(TIFF* tif,
-			  uint32 rwidth, uint32 rheight, uint32* raster,
-			  int orientation, int stop)
-{
-    char emsg[1024] = "";
-    TIFFRGBAImage img;
-    int ok;
-
-	if (TIFFRGBAImageOK(tif, emsg) && TIFFRGBAImageBegin(&img, tif, stop, emsg)) {
-		img.req_orientation = orientation;
-		/* XXX verify rwidth and rheight against width and height */
-		ok = TIFFRGBAImageGet(&img, raster+(rheight-img.height)*rwidth,
-			rwidth, img.height);
-		TIFFRGBAImageEnd(&img);
-	} else {
-		TIFFErrorExt(tif->tif_clientdata, TIFFFileName(tif), emsg);
-		ok = 0;
-    }
-    return (ok);
-}
-
-/*
- * Read the specified image into an ABGR-format raster. Use bottom left
- * origin for raster by default.
- */
-int
-TIFFReadRGBAImage(TIFF* tif,
-		  uint32 rwidth, uint32 rheight, uint32* raster, int stop)
-{
-	return TIFFReadRGBAImageOriented(tif, rwidth, rheight, raster,
-					 ORIENTATION_BOTLEFT, stop);
-}
-
-static int 
-setorientation(TIFFRGBAImage* img)
-{
-	switch (img->orientation) {
-		case ORIENTATION_TOPLEFT:
-		case ORIENTATION_LEFTTOP:
-			if (img->req_orientation == ORIENTATION_TOPRIGHT ||
-			    img->req_orientation == ORIENTATION_RIGHTTOP)
-				return FLIP_HORIZONTALLY;
-			else if (img->req_orientation == ORIENTATION_BOTRIGHT ||
-			    img->req_orientation == ORIENTATION_RIGHTBOT)
-				return FLIP_HORIZONTALLY | FLIP_VERTICALLY;
-			else if (img->req_orientation == ORIENTATION_BOTLEFT ||
-			    img->req_orientation == ORIENTATION_LEFTBOT)
-				return FLIP_VERTICALLY;
-			else
-				return 0;
-		case ORIENTATION_TOPRIGHT:
-		case ORIENTATION_RIGHTTOP:
-			if (img->req_orientation == ORIENTATION_TOPLEFT ||
-			    img->req_orientation == ORIENTATION_LEFTTOP)
-				return FLIP_HORIZONTALLY;
-			else if (img->req_orientation == ORIENTATION_BOTRIGHT ||
-			    img->req_orientation == ORIENTATION_RIGHTBOT)
-				return FLIP_VERTICALLY;
-			else if (img->req_orientation == ORIENTATION_BOTLEFT ||
-			    img->req_orientation == ORIENTATION_LEFTBOT)
-				return FLIP_HORIZONTALLY | FLIP_VERTICALLY;
-			else
-				return 0;
-		case ORIENTATION_BOTRIGHT:
-		case ORIENTATION_RIGHTBOT:
-			if (img->req_orientation == ORIENTATION_TOPLEFT ||
-			    img->req_orientation == ORIENTATION_LEFTTOP)
-				return FLIP_HORIZONTALLY | FLIP_VERTICALLY;
-			else if (img->req_orientation == ORIENTATION_TOPRIGHT ||
-			    img->req_orientation == ORIENTATION_RIGHTTOP)
-				return FLIP_VERTICALLY;
-			else if (img->req_orientation == ORIENTATION_BOTLEFT ||
-			    img->req_orientation == ORIENTATION_LEFTBOT)
-				return FLIP_HORIZONTALLY;
-			else
-				return 0;
-		case ORIENTATION_BOTLEFT:
-		case ORIENTATION_LEFTBOT:
-			if (img->req_orientation == ORIENTATION_TOPLEFT ||
-			    img->req_orientation == ORIENTATION_LEFTTOP)
-				return FLIP_VERTICALLY;
-			else if (img->req_orientation == ORIENTATION_TOPRIGHT ||
-			    img->req_orientation == ORIENTATION_RIGHTTOP)
-				return FLIP_HORIZONTALLY | FLIP_VERTICALLY;
-			else if (img->req_orientation == ORIENTATION_BOTRIGHT ||
-			    img->req_orientation == ORIENTATION_RIGHTBOT)
-				return FLIP_HORIZONTALLY;
-			else
-				return 0;
-		default:	/* NOTREACHED */
-			return 0;
-	}
-}
-
-/*
- * Get an tile-organized image that has
- *	PlanarConfiguration contiguous if SamplesPerPixel > 1
- * or
- *	SamplesPerPixel == 1
- */	
-static int
-gtTileContig(TIFFRGBAImage* img, uint32* raster, uint32 w, uint32 h)
-{
-    TIFF* tif = img->tif;
-    tileContigRoutine put = img->put.contig;
-    uint32 col, row, y, rowstoread;
-    uint32 pos;
-    uint32 tw, th;
-    unsigned char* buf;
-    int32 fromskew, toskew;
-    uint32 nrow;
-    int ret = 1, flip;
-
-    buf = (unsigned char*) _TIFFmalloc(TIFFTileSize(tif));
-    if (buf == 0) {
-		TIFFErrorExt(tif->tif_clientdata, TIFFFileName(tif), "No space for tile buffer");
-		return (0);
-    }
-    _TIFFmemset(buf, 0, TIFFTileSize(tif));
-    TIFFGetField(tif, TIFFTAG_TILEWIDTH, &tw);
-    TIFFGetField(tif, TIFFTAG_TILELENGTH, &th);
-
-    flip = setorientation(img);
-    if (flip & FLIP_VERTICALLY) {
-	    y = h - 1;
-	    toskew = -(int32)(tw + w);
-    }
-    else {
-	    y = 0;
-	    toskew = -(int32)(tw - w);
-    }
-     
-    for (row = 0; row < h; row += nrow)
-    {
-        rowstoread = th - (row + img->row_offset) % th;
-    	nrow = (row + rowstoread > h ? h - row : rowstoread);
-	for (col = 0; col < w; col += tw) 
-        {
-            if (TIFFReadTile(tif, buf, col+img->col_offset,
-                             row+img->row_offset, 0, 0) < 0 && img->stoponerr)
-            {
-                ret = 0;
-                break;
-            }
-	    
-            pos = ((row+img->row_offset) % th) * TIFFTileRowSize(tif);
-
-    	    if (col + tw > w) 
-            {
-                /*
-                 * Tile is clipped horizontally.  Calculate
-                 * visible portion and skewing factors.
-                 */
-                uint32 npix = w - col;
-                fromskew = tw - npix;
-                (*put)(img, raster+y*w+col, col, y,
-                       npix, nrow, fromskew, toskew + fromskew, buf + pos);
-            }
-            else 
-            {
-                (*put)(img, raster+y*w+col, col, y, tw, nrow, 0, toskew, buf + pos);
-            }
-        }
-
-        y += (flip & FLIP_VERTICALLY ? -(int32) nrow : (int32) nrow);
-    }
-    _TIFFfree(buf);
-
-    if (flip & FLIP_HORIZONTALLY) {
-	    uint32 line;
-
-	    for (line = 0; line < h; line++) {
-		    uint32 *left = raster + (line * w);
-		    uint32 *right = left + w - 1;
-		    
-		    while ( left < right ) {
-			    uint32 temp = *left;
-			    *left = *right;
-			    *right = temp;
-			    left++, right--;
-		    }
-	    }
-    }
-
-    return (ret);
-}
-
-/*
- * Get an tile-organized image that has
- *	 SamplesPerPixel > 1
- *	 PlanarConfiguration separated
- * We assume that all such images are RGB.
- */	
-static int
-gtTileSeparate(TIFFRGBAImage* img, uint32* raster, uint32 w, uint32 h)
-{
-    TIFF* tif = img->tif;
-    tileSeparateRoutine put = img->put.separate;
-    uint32 col, row, y, rowstoread;
-    uint32 pos;
-    uint32 tw, th;
-    unsigned char* buf;
-    unsigned char* r;
-    unsigned char* g;
-    unsigned char* b;
-    unsigned char* a;
-    tsize_t tilesize;
-    int32 fromskew, toskew;
-    int alpha = img->alpha;
-    uint32 nrow;
-    int ret = 1, flip;
-
-    tilesize = TIFFTileSize(tif);
-    buf = (unsigned char*) _TIFFmalloc(4*tilesize);
-    if (buf == 0) {
-		TIFFErrorExt(tif->tif_clientdata, TIFFFileName(tif), "No space for tile buffer");
-		return (0);
-    }
-    _TIFFmemset(buf, 0, 4*tilesize);
-    r = buf;
-    g = r + tilesize;
-    b = g + tilesize;
-    a = b + tilesize;
-    if (!alpha)
-	_TIFFmemset(a, 0xff, tilesize);
-    TIFFGetField(tif, TIFFTAG_TILEWIDTH, &tw);
-    TIFFGetField(tif, TIFFTAG_TILELENGTH, &th);
-
-    flip = setorientation(img);
-    if (flip & FLIP_VERTICALLY) {
-	    y = h - 1;
-	    toskew = -(int32)(tw + w);
-    }
-    else {
-	    y = 0;
-	    toskew = -(int32)(tw - w);
-    }
-
-    for (row = 0; row < h; row += nrow) 
-    {
-        rowstoread = th - (row + img->row_offset) % th;
-    	nrow = (row + rowstoread > h ? h - row : rowstoread);
-        for (col = 0; col < w; col += tw) 
-        {
-            if (TIFFReadTile(tif, r, col+img->col_offset,
-                             row+img->row_offset,0,0) < 0 && img->stoponerr)
-            {
-                ret = 0;
-                break;
-            }
-            if (TIFFReadTile(tif, g, col+img->col_offset,
-                             row+img->row_offset,0,1) < 0 && img->stoponerr)
-            {
-                ret = 0;
-                break;
-            }
-            if (TIFFReadTile(tif, b, col+img->col_offset,
-                             row+img->row_offset,0,2) < 0 && img->stoponerr)
-            {
-                ret = 0;
-                break;
-            }
-            if (alpha && TIFFReadTile(tif,a,col+img->col_offset,
-                                      row+img->row_offset,0,3) < 0 && img->stoponerr)
-            {
-                ret = 0;
-                break;
-            }
-
-            pos = ((row+img->row_offset) % th) * TIFFTileRowSize(tif);
-
-            if (col + tw > w) 
-            {
-                /*
-                 * Tile is clipped horizontally.  Calculate
-                 * visible portion and skewing factors.
-                 */
-                uint32 npix = w - col;
-                fromskew = tw - npix;
-                (*put)(img, raster+y*w+col, col, y,
-                       npix, nrow, fromskew, toskew + fromskew, 
-                       r + pos, g + pos, b + pos, a + pos);
-            } else {
-                (*put)(img, raster+y*w+col, col, y,
-                       tw, nrow, 0, toskew, r + pos, g + pos, b + pos, a + pos);
-            }
-        }
-
-        y += (flip & FLIP_VERTICALLY ?-(int32) nrow : (int32) nrow);
-    }
-
-    if (flip & FLIP_HORIZONTALLY) {
-	    uint32 line;
-
-	    for (line = 0; line < h; line++) {
-		    uint32 *left = raster + (line * w);
-		    uint32 *right = left + w - 1;
-		    
-		    while ( left < right ) {
-			    uint32 temp = *left;
-			    *left = *right;
-			    *right = temp;
-			    left++, right--;
-		    }
-	    }
-    }
-
-    _TIFFfree(buf);
-    return (ret);
-}
-
-/*
- * Get a strip-organized image that has
- *	PlanarConfiguration contiguous if SamplesPerPixel > 1
- * or
- *	SamplesPerPixel == 1
- */	
-static int
-gtStripContig(TIFFRGBAImage* img, uint32* raster, uint32 w, uint32 h)
-{
-    TIFF* tif = img->tif;
-    tileContigRoutine put = img->put.contig;
-    uint32 row, y, nrow, rowstoread;
-    uint32 pos;
-    unsigned char* buf;
-    uint32 rowsperstrip;
-    uint32 imagewidth = img->width;
-    tsize_t scanline;
-    int32 fromskew, toskew;
-    int ret = 1, flip;
-
-    buf = (unsigned char*) _TIFFmalloc(TIFFStripSize(tif));
-    if (buf == 0) {
-		TIFFErrorExt(tif->tif_clientdata, TIFFFileName(tif), "No space for strip buffer");
-		return (0);
-    }
-    _TIFFmemset(buf, 0, TIFFStripSize(tif));
-
-    flip = setorientation(img);
-    if (flip & FLIP_VERTICALLY) {
-	    y = h - 1;
-	    toskew = -(int32)(w + w);
-    } else {
-	    y = 0;
-	    toskew = -(int32)(w - w);
-    }
-
-    TIFFGetFieldDefaulted(tif, TIFFTAG_ROWSPERSTRIP, &rowsperstrip);
-    scanline = TIFFScanlineSize(tif);
-    fromskew = (w < imagewidth ? imagewidth - w : 0);
-    for (row = 0; row < h; row += nrow) 
-    {
-        rowstoread = rowsperstrip - (row + img->row_offset) % rowsperstrip;
-        nrow = (row + rowstoread > h ? h - row : rowstoread);
-        if (TIFFReadEncodedStrip(tif,
-                                 TIFFComputeStrip(tif,row+img->row_offset, 0),
-                                 buf, 
-                                 ((row + img->row_offset)%rowsperstrip + nrow) * scanline) < 0
-            && img->stoponerr)
-        {
-            ret = 0;
-            break;
-        }
-
-        pos = ((row + img->row_offset) % rowsperstrip) * scanline;
-        (*put)(img, raster+y*w, 0, y, w, nrow, fromskew, toskew, buf + pos);
-        y += (flip & FLIP_VERTICALLY ? -(int32) nrow : (int32) nrow);
-    }
-
-    if (flip & FLIP_HORIZONTALLY) {
-	    uint32 line;
-
-	    for (line = 0; line < h; line++) {
-		    uint32 *left = raster + (line * w);
-		    uint32 *right = left + w - 1;
-		    
-		    while ( left < right ) {
-			    uint32 temp = *left;
-			    *left = *right;
-			    *right = temp;
-			    left++, right--;
-		    }
-	    }
-    }
-
-    _TIFFfree(buf);
-    return (ret);
-}
-
-/*
- * Get a strip-organized image with
- *	 SamplesPerPixel > 1
- *	 PlanarConfiguration separated
- * We assume that all such images are RGB.
- */
-static int
-gtStripSeparate(TIFFRGBAImage* img, uint32* raster, uint32 w, uint32 h)
-{
-    TIFF* tif = img->tif;
-    tileSeparateRoutine put = img->put.separate;
-    unsigned char *buf;
-    unsigned char *r, *g, *b, *a;
-    uint32 row, y, nrow, rowstoread;
-    uint32 pos;
-    tsize_t scanline;
-    uint32 rowsperstrip, offset_row;
-    uint32 imagewidth = img->width;
-    tsize_t stripsize;
-    int32 fromskew, toskew;
-    int alpha = img->alpha;
-    int	ret = 1, flip;
-
-    stripsize = TIFFStripSize(tif);
-    r = buf = (unsigned char *)_TIFFmalloc(4*stripsize);
-    if (buf == 0) {
-		TIFFErrorExt(tif->tif_clientdata, TIFFFileName(tif), "No space for tile buffer");
-		return (0);
-    }
-    _TIFFmemset(buf, 0, 4*stripsize);
-    g = r + stripsize;
-    b = g + stripsize;
-    a = b + stripsize;
-    if (!alpha)
-	_TIFFmemset(a, 0xff, stripsize);
-
-    flip = setorientation(img);
-    if (flip & FLIP_VERTICALLY) {
-	    y = h - 1;
-	    toskew = -(int32)(w + w);
-    }
-    else {
-	    y = 0;
-	    toskew = -(int32)(w - w);
-    }
-
-    TIFFGetFieldDefaulted(tif, TIFFTAG_ROWSPERSTRIP, &rowsperstrip);
-    scanline = TIFFScanlineSize(tif);
-    fromskew = (w < imagewidth ? imagewidth - w : 0);
-    for (row = 0; row < h; row += nrow) 
-    {
-        rowstoread = rowsperstrip - (row + img->row_offset) % rowsperstrip;    	
-        nrow = (row + rowstoread > h ? h - row : rowstoread);
-        offset_row = row + img->row_offset;
-    	if (TIFFReadEncodedStrip(tif, TIFFComputeStrip(tif, offset_row, 0),
-                                 r, ((row + img->row_offset)%rowsperstrip + nrow) * scanline) < 0 
-            && img->stoponerr)
-        {
-            ret = 0;
-            break;
-        }
-        if (TIFFReadEncodedStrip(tif, TIFFComputeStrip(tif, offset_row, 1),
-                                 g, ((row + img->row_offset)%rowsperstrip + nrow) * scanline) < 0 
-            && img->stoponerr)
-        {
-            ret = 0;
-            break;
-        }
-        if (TIFFReadEncodedStrip(tif, TIFFComputeStrip(tif, offset_row, 2),
-                                 b, ((row + img->row_offset)%rowsperstrip + nrow) * scanline) < 0 
-            && img->stoponerr)
-        {
-            ret = 0;
-            break;
-        }
-        if (alpha &&
-            (TIFFReadEncodedStrip(tif, TIFFComputeStrip(tif, offset_row, 3),
-                                  a, ((row + img->row_offset)%rowsperstrip + nrow) * scanline) < 0 
-             && img->stoponerr))
-        {
-            ret = 0;
-            break;
-        }
-
-        pos = ((row + img->row_offset) % rowsperstrip) * scanline;
-        (*put)(img, raster+y*w, 0, y, w, nrow, fromskew, toskew, r + pos, g + pos, 
-               b + pos, a + pos);
-        y += (flip & FLIP_VERTICALLY ? -(int32) nrow : (int32) nrow);
-    }
-
-    if (flip & FLIP_HORIZONTALLY) {
-	    uint32 line;
-
-	    for (line = 0; line < h; line++) {
-		    uint32 *left = raster + (line * w);
-		    uint32 *right = left + w - 1;
-		    
-		    while ( left < right ) {
-			    uint32 temp = *left;
-			    *left = *right;
-			    *right = temp;
-			    left++, right--;
-		    }
-	    }
-    }
-
-    _TIFFfree(buf);
-    return (ret);
-}
-
-/*
- * The following routines move decoded data returned
- * from the TIFF library into rasters filled with packed
- * ABGR pixels (i.e. suitable for passing to lrecwrite.)
- *
- * The routines have been created according to the most
- * important cases and optimized.  pickTileContigCase and
- * pickTileSeparateCase analyze the parameters and select
- * the appropriate "put" routine to use.
- */
-#define	REPEAT8(op)	REPEAT4(op); REPEAT4(op)
-#define	REPEAT4(op)	REPEAT2(op); REPEAT2(op)
-#define	REPEAT2(op)	op; op
-#define	CASE8(x,op)			\
-    switch (x) {			\
-    case 7: op; case 6: op; case 5: op;	\
-    case 4: op; case 3: op; case 2: op;	\
-    case 1: op;				\
-    }
-#define	CASE4(x,op)	switch (x) { case 3: op; case 2: op; case 1: op; }
-#define	NOP
-
-#define	UNROLL8(w, op1, op2) {		\
-    uint32 _x;				\
-    for (_x = w; _x >= 8; _x -= 8) {	\
-	op1;				\
-	REPEAT8(op2);			\
-    }					\
-    if (_x > 0) {			\
-	op1;				\
-	CASE8(_x,op2);			\
-    }					\
-}
-#define	UNROLL4(w, op1, op2) {		\
-    uint32 _x;				\
-    for (_x = w; _x >= 4; _x -= 4) {	\
-	op1;				\
-	REPEAT4(op2);			\
-    }					\
-    if (_x > 0) {			\
-	op1;				\
-	CASE4(_x,op2);			\
-    }					\
-}
-#define	UNROLL2(w, op1, op2) {		\
-    uint32 _x;				\
-    for (_x = w; _x >= 2; _x -= 2) {	\
-	op1;				\
-	REPEAT2(op2);			\
-    }					\
-    if (_x) {				\
-	op1;				\
-	op2;				\
-    }					\
-}
-    
-#define	SKEW(r,g,b,skew)	{ r += skew; g += skew; b += skew; }
-#define	SKEW4(r,g,b,a,skew)	{ r += skew; g += skew; b += skew; a+= skew; }
-
-#define A1 (((uint32)0xffL)<<24)
-#define	PACK(r,g,b)	\
-	((uint32)(r)|((uint32)(g)<<8)|((uint32)(b)<<16)|A1)
-#define	PACK4(r,g,b,a)	\
-	((uint32)(r)|((uint32)(g)<<8)|((uint32)(b)<<16)|((uint32)(a)<<24))
-#define W2B(v) (((v)>>8)&0xff)
-#define	PACKW(r,g,b)	\
-	((uint32)W2B(r)|((uint32)W2B(g)<<8)|((uint32)W2B(b)<<16)|A1)
-#define	PACKW4(r,g,b,a)	\
-	((uint32)W2B(r)|((uint32)W2B(g)<<8)|((uint32)W2B(b)<<16)|((uint32)W2B(a)<<24))
-
-#define	DECLAREContigPutFunc(name) \
-static void name(\
-    TIFFRGBAImage* img, \
-    uint32* cp, \
-    uint32 x, uint32 y, \
-    uint32 w, uint32 h, \
-    int32 fromskew, int32 toskew, \
-    unsigned char* pp \
-)
-
-/*
- * 8-bit palette => colormap/RGB
- */
-DECLAREContigPutFunc(put8bitcmaptile)
-{
-    uint32** PALmap = img->PALmap;
-    int samplesperpixel = img->samplesperpixel;
-
-    (void) y;
-    while (h-- > 0) {
-	for (x = w; x-- > 0;)
-        {
-	    *cp++ = PALmap[*pp][0];
-            pp += samplesperpixel;
-        }
-	cp += toskew;
-	pp += fromskew;
-    }
-}
-
-/*
- * 4-bit palette => colormap/RGB
- */
-DECLAREContigPutFunc(put4bitcmaptile)
-{
-    uint32** PALmap = img->PALmap;
-
-    (void) x; (void) y;
-    fromskew /= 2;
-    while (h-- > 0) {
-	uint32* bw;
-	UNROLL2(w, bw = PALmap[*pp++], *cp++ = *bw++);
-	cp += toskew;
-	pp += fromskew;
-    }
-}
-
-/*
- * 2-bit palette => colormap/RGB
- */
-DECLAREContigPutFunc(put2bitcmaptile)
-{
-    uint32** PALmap = img->PALmap;
-
-    (void) x; (void) y;
-    fromskew /= 4;
-    while (h-- > 0) {
-	uint32* bw;
-	UNROLL4(w, bw = PALmap[*pp++], *cp++ = *bw++);
-	cp += toskew;
-	pp += fromskew;
-    }
-}
-
-/*
- * 1-bit palette => colormap/RGB
- */
-DECLAREContigPutFunc(put1bitcmaptile)
-{
-    uint32** PALmap = img->PALmap;
-
-    (void) x; (void) y;
-    fromskew /= 8;
-    while (h-- > 0) {
-	uint32* bw;
-	UNROLL8(w, bw = PALmap[*pp++], *cp++ = *bw++);
-	cp += toskew;
-	pp += fromskew;
-    }
-}
-
-/*
- * 8-bit greyscale => colormap/RGB
- */
-DECLAREContigPutFunc(putgreytile)
-{
-    int samplesperpixel = img->samplesperpixel;
-    uint32** BWmap = img->BWmap;
-
-    (void) y;
-    while (h-- > 0) {
-	for (x = w; x-- > 0;)
-        {
-	    *cp++ = BWmap[*pp][0];
-            pp += samplesperpixel;
-        }
-	cp += toskew;
-	pp += fromskew;
-    }
-}
-
-/*
- * 16-bit greyscale => colormap/RGB
- */
-DECLAREContigPutFunc(put16bitbwtile)
-{
-    int samplesperpixel = img->samplesperpixel;
-    uint32** BWmap = img->BWmap;
-
-    (void) y;
-    while (h-- > 0) {
-        uint16 *wp = (uint16 *) pp;
-
-	for (x = w; x-- > 0;)
-        {
-            /* use high order byte of 16bit value */
-
-	    *cp++ = BWmap[*wp >> 8][0];
-            pp += 2 * samplesperpixel;
-            wp += samplesperpixel;
-        }
-	cp += toskew;
-	pp += fromskew;
-    }
-}
-
-/*
- * 1-bit bilevel => colormap/RGB
- */
-DECLAREContigPutFunc(put1bitbwtile)
-{
-    uint32** BWmap = img->BWmap;
-
-    (void) x; (void) y;
-    fromskew /= 8;
-    while (h-- > 0) {
-	uint32* bw;
-	UNROLL8(w, bw = BWmap[*pp++], *cp++ = *bw++);
-	cp += toskew;
-	pp += fromskew;
-    }
-}
-
-/*
- * 2-bit greyscale => colormap/RGB
- */
-DECLAREContigPutFunc(put2bitbwtile)
-{
-    uint32** BWmap = img->BWmap;
-
-    (void) x; (void) y;
-    fromskew /= 4;
-    while (h-- > 0) {
-	uint32* bw;
-	UNROLL4(w, bw = BWmap[*pp++], *cp++ = *bw++);
-	cp += toskew;
-	pp += fromskew;
-    }
-}
-
-/*
- * 4-bit greyscale => colormap/RGB
- */
-DECLAREContigPutFunc(put4bitbwtile)
-{
-    uint32** BWmap = img->BWmap;
-
-    (void) x; (void) y;
-    fromskew /= 2;
-    while (h-- > 0) {
-	uint32* bw;
-	UNROLL2(w, bw = BWmap[*pp++], *cp++ = *bw++);
-	cp += toskew;
-	pp += fromskew;
-    }
-}
-
-/*
- * 8-bit packed samples, no Map => RGB
- */
-DECLAREContigPutFunc(putRGBcontig8bittile)
-{
-    int samplesperpixel = img->samplesperpixel;
-
-    (void) x; (void) y;
-    fromskew *= samplesperpixel;
-    while (h-- > 0) {
-	UNROLL8(w, NOP,
-	    *cp++ = PACK(pp[0], pp[1], pp[2]);
-	    pp += samplesperpixel);
-	cp += toskew;
-	pp += fromskew;
-    }
-}
-
-/*
- * 8-bit packed samples, w/ Map => RGB
- */
-DECLAREContigPutFunc(putRGBcontig8bitMaptile)
-{
-    TIFFRGBValue* Map = img->Map;
-    int samplesperpixel = img->samplesperpixel;
-
-    (void) y;
-    fromskew *= samplesperpixel;
-    while (h-- > 0) {
-	for (x = w; x-- > 0;) {
-	    *cp++ = PACK(Map[pp[0]], Map[pp[1]], Map[pp[2]]);
-	    pp += samplesperpixel;
-	}
-	pp += fromskew;
-	cp += toskew;
-    }
-}
-
-/*
- * 8-bit packed samples => RGBA w/ associated alpha
- * (known to have Map == NULL)
- */
-DECLAREContigPutFunc(putRGBAAcontig8bittile)
-{
-    int samplesperpixel = img->samplesperpixel;
-
-    (void) x; (void) y;
-    fromskew *= samplesperpixel;
-    while (h-- > 0) {
-	UNROLL8(w, NOP,
-	    *cp++ = PACK4(pp[0], pp[1], pp[2], pp[3]);
-	    pp += samplesperpixel);
-	cp += toskew;
-	pp += fromskew;
-    }
-}
-
-/*
- * 8-bit packed samples => RGBA w/ unassociated alpha
- * (known to have Map == NULL)
- */
-DECLAREContigPutFunc(putRGBUAcontig8bittile)
-{
-    int samplesperpixel = img->samplesperpixel;
-
-    (void) y;
-    fromskew *= samplesperpixel;
-    while (h-- > 0) {
-	uint32 r, g, b, a;
-	for (x = w; x-- > 0;) {
-	    a = pp[3];
-	    r = (pp[0] * a) / 255;
-	    g = (pp[1] * a) / 255;
-	    b = (pp[2] * a) / 255;
-	    *cp++ = PACK4(r,g,b,a);
-	    pp += samplesperpixel;
-	}
-	cp += toskew;
-	pp += fromskew;
-    }
-}
-
-/*
- * 16-bit packed samples => RGB
- */
-DECLAREContigPutFunc(putRGBcontig16bittile)
-{
-    int samplesperpixel = img->samplesperpixel;
-    uint16 *wp = (uint16 *)pp;
-
-    (void) y;
-    fromskew *= samplesperpixel;
-    while (h-- > 0) {
-	for (x = w; x-- > 0;) {
-	    *cp++ = PACKW(wp[0], wp[1], wp[2]);
-	    wp += samplesperpixel;
-	}
-	cp += toskew;
-	wp += fromskew;
-    }
-}
-
-/*
- * 16-bit packed samples => RGBA w/ associated alpha
- * (known to have Map == NULL)
- */
-DECLAREContigPutFunc(putRGBAAcontig16bittile)
-{
-    int samplesperpixel = img->samplesperpixel;
-    uint16 *wp = (uint16 *)pp;
-
-    (void) y;
-    fromskew *= samplesperpixel;
-    while (h-- > 0) {
-	for (x = w; x-- > 0;) {
-	    *cp++ = PACKW4(wp[0], wp[1], wp[2], wp[3]);
-	    wp += samplesperpixel;
-	}
-	cp += toskew;
-	wp += fromskew;
-    }
-}
-
-/*
- * 16-bit packed samples => RGBA w/ unassociated alpha
- * (known to have Map == NULL)
- */
-DECLAREContigPutFunc(putRGBUAcontig16bittile)
-{
-    int samplesperpixel = img->samplesperpixel;
-    uint16 *wp = (uint16 *)pp;
-
-    (void) y;
-    fromskew *= samplesperpixel;
-    while (h-- > 0) {
-	uint32 r,g,b,a;
-	/*
-	 * We shift alpha down four bits just in case unsigned
-	 * arithmetic doesn't handle the full range.
-	 * We still have plenty of accuracy, since the output is 8 bits.
-	 * So we have (r * 0xffff) * (a * 0xfff)) = r*a * (0xffff*0xfff)
-	 * Since we want r*a * 0xff for eight bit output,
-	 * we divide by (0xffff * 0xfff) / 0xff == 0x10eff.
-	 */
-	for (x = w; x-- > 0;) {
-	    a = wp[3] >> 4; 
-	    r = (wp[0] * a) / 0x10eff;
-	    g = (wp[1] * a) / 0x10eff;
-	    b = (wp[2] * a) / 0x10eff;
-	    *cp++ = PACK4(r,g,b,a);
-	    wp += samplesperpixel;
-	}
-	cp += toskew;
-	wp += fromskew;
-    }
-}
-
-/*
- * 8-bit packed CMYK samples w/o Map => RGB
- *
- * NB: The conversion of CMYK->RGB is *very* crude.
- */
-DECLAREContigPutFunc(putRGBcontig8bitCMYKtile)
-{
-    int samplesperpixel = img->samplesperpixel;
-    uint16 r, g, b, k;
-
-    (void) x; (void) y;
-    fromskew *= samplesperpixel;
-    while (h-- > 0) {
-	UNROLL8(w, NOP,
-	    k = 255 - pp[3];
-	    r = (k*(255-pp[0]))/255;
-	    g = (k*(255-pp[1]))/255;
-	    b = (k*(255-pp[2]))/255;
-	    *cp++ = PACK(r, g, b);
-	    pp += samplesperpixel);
-	cp += toskew;
-	pp += fromskew;
-    }
-}
-
-/*
- * 8-bit packed CMYK samples w/Map => RGB
- *
- * NB: The conversion of CMYK->RGB is *very* crude.
- */
-DECLAREContigPutFunc(putRGBcontig8bitCMYKMaptile)
-{
-    int samplesperpixel = img->samplesperpixel;
-    TIFFRGBValue* Map = img->Map;
-    uint16 r, g, b, k;
-
-    (void) y;
-    fromskew *= samplesperpixel;
-    while (h-- > 0) {
-	for (x = w; x-- > 0;) {
-	    k = 255 - pp[3];
-	    r = (k*(255-pp[0]))/255;
-	    g = (k*(255-pp[1]))/255;
-	    b = (k*(255-pp[2]))/255;
-	    *cp++ = PACK(Map[r], Map[g], Map[b]);
-	    pp += samplesperpixel;
-	}
-	pp += fromskew;
-	cp += toskew;
-    }
-}
-
-#define	DECLARESepPutFunc(name) \
-static void name(\
-    TIFFRGBAImage* img,\
-    uint32* cp,\
-    uint32 x, uint32 y, \
-    uint32 w, uint32 h,\
-    int32 fromskew, int32 toskew,\
-    unsigned char* r, unsigned char* g, unsigned char* b, unsigned char* a\
-)
-
-/*
- * 8-bit unpacked samples => RGB
- */
-DECLARESepPutFunc(putRGBseparate8bittile)
-{
-    (void) img; (void) x; (void) y; (void) a;
-    while (h-- > 0) {
-	UNROLL8(w, NOP, *cp++ = PACK(*r++, *g++, *b++));
-	SKEW(r, g, b, fromskew);
-	cp += toskew;
-    }
-}
-
-/*
- * 8-bit unpacked samples => RGB
- */
-DECLARESepPutFunc(putRGBseparate8bitMaptile)
-{
-    TIFFRGBValue* Map = img->Map;
-
-    (void) y; (void) a;
-    while (h-- > 0) {
-	for (x = w; x > 0; x--)
-	    *cp++ = PACK(Map[*r++], Map[*g++], Map[*b++]);
-	SKEW(r, g, b, fromskew);
-	cp += toskew;
-    }
-}
-
-/*
- * 8-bit unpacked samples => RGBA w/ associated alpha
- */
-DECLARESepPutFunc(putRGBAAseparate8bittile)
-{
-    (void) img; (void) x; (void) y;
-    while (h-- > 0) {
-	UNROLL8(w, NOP, *cp++ = PACK4(*r++, *g++, *b++, *a++));
-	SKEW4(r, g, b, a, fromskew);
-	cp += toskew;
-    }
-}
-
-/*
- * 8-bit unpacked samples => RGBA w/ unassociated alpha
- */
-DECLARESepPutFunc(putRGBUAseparate8bittile)
-{
-    (void) img; (void) y;
-    while (h-- > 0) {
-	uint32 rv, gv, bv, av;
-	for (x = w; x-- > 0;) {
-	    av = *a++;
-	    rv = (*r++ * av) / 255;
-	    gv = (*g++ * av) / 255;
-	    bv = (*b++ * av) / 255;
-	    *cp++ = PACK4(rv,gv,bv,av);
-	}
-	SKEW4(r, g, b, a, fromskew);
-	cp += toskew;
-    }
-}
-
-/*
- * 16-bit unpacked samples => RGB
- */
-DECLARESepPutFunc(putRGBseparate16bittile)
-{
-    uint16 *wr = (uint16*) r;
-    uint16 *wg = (uint16*) g;
-    uint16 *wb = (uint16*) b;
-
-    (void) img; (void) y; (void) a;
-    while (h-- > 0) {
-	for (x = 0; x < w; x++)
-	    *cp++ = PACKW(*wr++, *wg++, *wb++);
-	SKEW(wr, wg, wb, fromskew);
-	cp += toskew;
-    }
-}
-
-/*
- * 16-bit unpacked samples => RGBA w/ associated alpha
- */
-DECLARESepPutFunc(putRGBAAseparate16bittile)
-{
-    uint16 *wr = (uint16*) r;
-    uint16 *wg = (uint16*) g;
-    uint16 *wb = (uint16*) b;
-    uint16 *wa = (uint16*) a;
-
-    (void) img; (void) y;
-    while (h-- > 0) {
-	for (x = 0; x < w; x++)
-	    *cp++ = PACKW4(*wr++, *wg++, *wb++, *wa++);
-	SKEW4(wr, wg, wb, wa, fromskew);
-	cp += toskew;
-    }
-}
-
-/*
- * 16-bit unpacked samples => RGBA w/ unassociated alpha
- */
-DECLARESepPutFunc(putRGBUAseparate16bittile)
-{
-    uint16 *wr = (uint16*) r;
-    uint16 *wg = (uint16*) g;
-    uint16 *wb = (uint16*) b;
-    uint16 *wa = (uint16*) a;
-
-    (void) img; (void) y;
-    while (h-- > 0) {
-	uint32 r,g,b,a;
-	/*
-	 * We shift alpha down four bits just in case unsigned
-	 * arithmetic doesn't handle the full range.
-	 * We still have plenty of accuracy, since the output is 8 bits.
-	 * So we have (r * 0xffff) * (a * 0xfff)) = r*a * (0xffff*0xfff)
-	 * Since we want r*a * 0xff for eight bit output,
-	 * we divide by (0xffff * 0xfff) / 0xff == 0x10eff.
-	 */
-	for (x = w; x-- > 0;) {
-	    a = *wa++ >> 4; 
-	    r = (*wr++ * a) / 0x10eff;
-	    g = (*wg++ * a) / 0x10eff;
-	    b = (*wb++ * a) / 0x10eff;
-	    *cp++ = PACK4(r,g,b,a);
-	}
-	SKEW4(wr, wg, wb, wa, fromskew);
-	cp += toskew;
-    }
-}
-
-/*
- * 8-bit packed CIE L*a*b 1976 samples => RGB
- */
-DECLAREContigPutFunc(putcontig8bitCIELab)
-{
-	float X, Y, Z;
-	uint32 r, g, b;
-	(void) y;
-	fromskew *= 3;
-	while (h-- > 0) {
-		for (x = w; x-- > 0;) {
-			TIFFCIELabToXYZ(img->cielab,
-					(unsigned char)pp[0],
-					(signed char)pp[1],
-					(signed char)pp[2],
-					&X, &Y, &Z);
-			TIFFXYZToRGB(img->cielab, X, Y, Z, &r, &g, &b);
-			*cp++ = PACK(r, g, b);
-			pp += 3;
-		}
-		cp += toskew;
-		pp += fromskew;
-	}
-}
-
-/*
- * YCbCr -> RGB conversion and packing routines.
- */
-
-#define	YCbCrtoRGB(dst, Y) {						\
-	uint32 r, g, b;							\
-	TIFFYCbCrtoRGB(img->ycbcr, (Y), Cb, Cr, &r, &g, &b);		\
-	dst = PACK(r, g, b);						\
-}
-
-/*
- * 8-bit packed YCbCr samples => RGB 
- * This function is generic for different sampling sizes, 
- * and can handle blocks sizes that aren't multiples of the
- * sampling size.  However, it is substantially less optimized
- * than the specific sampling cases.  It is used as a fallback
- * for difficult blocks.
- */
-#ifdef notdef
-static void putcontig8bitYCbCrGenericTile( 
-    TIFFRGBAImage* img, 
-    uint32* cp, 
-    uint32 x, uint32 y, 
-    uint32 w, uint32 h, 
-    int32 fromskew, int32 toskew, 
-    unsigned char* pp,
-    int h_group, 
-    int v_group )
-
-{
-    uint32* cp1 = cp+w+toskew;
-    uint32* cp2 = cp1+w+toskew;
-    uint32* cp3 = cp2+w+toskew;
-    int32 incr = 3*w+4*toskew;
-    int32   Cb, Cr;
-    int     group_size = v_group * h_group + 2;
-
-    (void) y;
-    fromskew = (fromskew * group_size) / h_group;
-
-    for( yy = 0; yy < h; yy++ )
-    {
-        unsigned char *pp_line;
-        int     y_line_group = yy / v_group;
-        int     y_remainder = yy - y_line_group * v_group;
-
-        pp_line = pp + v_line_group * 
-
-        
-        for( xx = 0; xx < w; xx++ )
-        {
-            Cb = pp
-        }
-    }
-    for (; h >= 4; h -= 4) {
-	x = w>>2;
-	do {
-	    Cb = pp[16];
-	    Cr = pp[17];
-
-	    YCbCrtoRGB(cp [0], pp[ 0]);
-	    YCbCrtoRGB(cp [1], pp[ 1]);
-	    YCbCrtoRGB(cp [2], pp[ 2]);
-	    YCbCrtoRGB(cp [3], pp[ 3]);
-	    YCbCrtoRGB(cp1[0], pp[ 4]);
-	    YCbCrtoRGB(cp1[1], pp[ 5]);
-	    YCbCrtoRGB(cp1[2], pp[ 6]);
-	    YCbCrtoRGB(cp1[3], pp[ 7]);
-	    YCbCrtoRGB(cp2[0], pp[ 8]);
-	    YCbCrtoRGB(cp2[1], pp[ 9]);
-	    YCbCrtoRGB(cp2[2], pp[10]);
-	    YCbCrtoRGB(cp2[3], pp[11]);
-	    YCbCrtoRGB(cp3[0], pp[12]);
-	    YCbCrtoRGB(cp3[1], pp[13]);
-	    YCbCrtoRGB(cp3[2], pp[14]);
-	    YCbCrtoRGB(cp3[3], pp[15]);
-
-	    cp += 4, cp1 += 4, cp2 += 4, cp3 += 4;
-	    pp += 18;
-	} while (--x);
-	cp += incr, cp1 += incr, cp2 += incr, cp3 += incr;
-	pp += fromskew;
-    }
-}
-#endif
-
-/*
- * 8-bit packed YCbCr samples w/ 4,4 subsampling => RGB
- */
-DECLAREContigPutFunc(putcontig8bitYCbCr44tile)
-{
-    uint32* cp1 = cp+w+toskew;
-    uint32* cp2 = cp1+w+toskew;
-    uint32* cp3 = cp2+w+toskew;
-    int32 incr = 3*w+4*toskew;
-
-    (void) y;
-    /* adjust fromskew */
-    fromskew = (fromskew * 18) / 4;
-    if ((h & 3) == 0 && (w & 3) == 0) {				        
-        for (; h >= 4; h -= 4) {
-            x = w>>2;
-            do {
-                int32 Cb = pp[16];
-                int32 Cr = pp[17];
-
-                YCbCrtoRGB(cp [0], pp[ 0]);
-                YCbCrtoRGB(cp [1], pp[ 1]);
-                YCbCrtoRGB(cp [2], pp[ 2]);
-                YCbCrtoRGB(cp [3], pp[ 3]);
-                YCbCrtoRGB(cp1[0], pp[ 4]);
-                YCbCrtoRGB(cp1[1], pp[ 5]);
-                YCbCrtoRGB(cp1[2], pp[ 6]);
-                YCbCrtoRGB(cp1[3], pp[ 7]);
-                YCbCrtoRGB(cp2[0], pp[ 8]);
-                YCbCrtoRGB(cp2[1], pp[ 9]);
-                YCbCrtoRGB(cp2[2], pp[10]);
-                YCbCrtoRGB(cp2[3], pp[11]);
-                YCbCrtoRGB(cp3[0], pp[12]);
-                YCbCrtoRGB(cp3[1], pp[13]);
-                YCbCrtoRGB(cp3[2], pp[14]);
-                YCbCrtoRGB(cp3[3], pp[15]);
-
-                cp += 4, cp1 += 4, cp2 += 4, cp3 += 4;
-                pp += 18;
-            } while (--x);
-            cp += incr, cp1 += incr, cp2 += incr, cp3 += incr;
-            pp += fromskew;
-        }
-    } else {
-        while (h > 0) {
-            for (x = w; x > 0;) {
-                int32 Cb = pp[16];
-                int32 Cr = pp[17];
-                switch (x) {
-                default:
-                    switch (h) {
-                    default: YCbCrtoRGB(cp3[3], pp[15]); /* FALLTHROUGH */
-                    case 3:  YCbCrtoRGB(cp2[3], pp[11]); /* FALLTHROUGH */
-                    case 2:  YCbCrtoRGB(cp1[3], pp[ 7]); /* FALLTHROUGH */
-                    case 1:  YCbCrtoRGB(cp [3], pp[ 3]); /* FALLTHROUGH */
-                    }                                    /* FALLTHROUGH */
-                case 3:
-                    switch (h) {
-                    default: YCbCrtoRGB(cp3[2], pp[14]); /* FALLTHROUGH */
-                    case 3:  YCbCrtoRGB(cp2[2], pp[10]); /* FALLTHROUGH */
-                    case 2:  YCbCrtoRGB(cp1[2], pp[ 6]); /* FALLTHROUGH */
-                    case 1:  YCbCrtoRGB(cp [2], pp[ 2]); /* FALLTHROUGH */
-                    }                                    /* FALLTHROUGH */
-                case 2:
-                    switch (h) {
-                    default: YCbCrtoRGB(cp3[1], pp[13]); /* FALLTHROUGH */
-                    case 3:  YCbCrtoRGB(cp2[1], pp[ 9]); /* FALLTHROUGH */
-                    case 2:  YCbCrtoRGB(cp1[1], pp[ 5]); /* FALLTHROUGH */
-                    case 1:  YCbCrtoRGB(cp [1], pp[ 1]); /* FALLTHROUGH */
-                    }                                    /* FALLTHROUGH */
-                case 1:
-                    switch (h) {
-                    default: YCbCrtoRGB(cp3[0], pp[12]); /* FALLTHROUGH */
-                    case 3:  YCbCrtoRGB(cp2[0], pp[ 8]); /* FALLTHROUGH */
-                    case 2:  YCbCrtoRGB(cp1[0], pp[ 4]); /* FALLTHROUGH */
-                    case 1:  YCbCrtoRGB(cp [0], pp[ 0]); /* FALLTHROUGH */
-                    }                                    /* FALLTHROUGH */
-                }
-                if (x < 4) {
-                    cp += x; cp1 += x; cp2 += x; cp3 += x;
-                    x = 0;
-                }
-                else {
-                    cp += 4; cp1 += 4; cp2 += 4; cp3 += 4;
-                    x -= 4;
-                }
-                pp += 18;
-            }
-            if (h <= 4)
-                break;
-            h -= 4;
-            cp += incr, cp1 += incr, cp2 += incr, cp3 += incr;
-            pp += fromskew;
-        }
-    }
-}
-
-/*
- * 8-bit packed YCbCr samples w/ 4,2 subsampling => RGB
- */
-DECLAREContigPutFunc(putcontig8bitYCbCr42tile)
-{
-    uint32* cp1 = cp+w+toskew;
-    int32 incr = 2*toskew+w;
-
-    (void) y;
-    fromskew = (fromskew * 10) / 4;
-    if ((h & 3) == 0 && (w & 1) == 0) {
-        for (; h >= 2; h -= 2) {
-            x = w>>2;
-            do {
-                int32 Cb = pp[8];
-                int32 Cr = pp[9];
-                
-                YCbCrtoRGB(cp [0], pp[0]);
-                YCbCrtoRGB(cp [1], pp[1]);
-                YCbCrtoRGB(cp [2], pp[2]);
-                YCbCrtoRGB(cp [3], pp[3]);
-                YCbCrtoRGB(cp1[0], pp[4]);
-                YCbCrtoRGB(cp1[1], pp[5]);
-                YCbCrtoRGB(cp1[2], pp[6]);
-                YCbCrtoRGB(cp1[3], pp[7]);
-                
-                cp += 4, cp1 += 4;
-                pp += 10;
-            } while (--x);
-            cp += incr, cp1 += incr;
-            pp += fromskew;
-        }
-    } else {
-        while (h > 0) {
-            for (x = w; x > 0;) {
-                int32 Cb = pp[8];
-                int32 Cr = pp[9];
-                switch (x) {
-                default:
-                    switch (h) {
-                    default: YCbCrtoRGB(cp1[3], pp[ 7]); /* FALLTHROUGH */
-                    case 1:  YCbCrtoRGB(cp [3], pp[ 3]); /* FALLTHROUGH */
-                    }                                    /* FALLTHROUGH */
-                case 3:
-                    switch (h) {
-                    default: YCbCrtoRGB(cp1[2], pp[ 6]); /* FALLTHROUGH */
-                    case 1:  YCbCrtoRGB(cp [2], pp[ 2]); /* FALLTHROUGH */
-                    }                                    /* FALLTHROUGH */
-                case 2:
-                    switch (h) {
-                    default: YCbCrtoRGB(cp1[1], pp[ 5]); /* FALLTHROUGH */
-                    case 1:  YCbCrtoRGB(cp [1], pp[ 1]); /* FALLTHROUGH */
-                    }                                    /* FALLTHROUGH */
-                case 1:
-                    switch (h) {
-                    default: YCbCrtoRGB(cp1[0], pp[ 4]); /* FALLTHROUGH */
-                    case 1:  YCbCrtoRGB(cp [0], pp[ 0]); /* FALLTHROUGH */
-                    }                                    /* FALLTHROUGH */
-                }
-                if (x < 4) {
-                    cp += x; cp1 += x;
-                    x = 0;
-                }
-                else {
-                    cp += 4; cp1 += 4;
-                    x -= 4;
-                }
-                pp += 10;
-            }
-            if (h <= 2)
-                break;
-            h -= 2;
-            cp += incr, cp1 += incr;
-            pp += fromskew;
-        }
-    }
-}
-
-/*
- * 8-bit packed YCbCr samples w/ 4,1 subsampling => RGB
- */
-DECLAREContigPutFunc(putcontig8bitYCbCr41tile)
-{
-    (void) y;
-    /* XXX adjust fromskew */
-    do {
-	x = w>>2;
-	do {
-	    int32 Cb = pp[4];
-	    int32 Cr = pp[5];
-
-	    YCbCrtoRGB(cp [0], pp[0]);
-	    YCbCrtoRGB(cp [1], pp[1]);
-	    YCbCrtoRGB(cp [2], pp[2]);
-	    YCbCrtoRGB(cp [3], pp[3]);
-
-	    cp += 4;
-	    pp += 6;
-	} while (--x);
-
-        if( (w&3) != 0 )
-        {
-	    int32 Cb = pp[4];
-	    int32 Cr = pp[5];
-
-            switch( (w&3) ) {
-              case 3: YCbCrtoRGB(cp [2], pp[2]);
-              case 2: YCbCrtoRGB(cp [1], pp[1]);
-              case 1: YCbCrtoRGB(cp [0], pp[0]);
-              case 0: break;
-            }
-
-            cp += (w&3);
-            pp += 6;
-        }
-
-	cp += toskew;
-	pp += fromskew;
-    } while (--h);
-
-}
-
-/*
- * 8-bit packed YCbCr samples w/ 2,2 subsampling => RGB
- */
-DECLAREContigPutFunc(putcontig8bitYCbCr22tile)
-{
-    uint32* cp1 = cp+w+toskew;
-    int32 incr = 2*toskew+w;
-
-    (void) y;
-    fromskew = (fromskew * 6) / 2;
-    if ((h & 1) == 0 && (w & 1) == 0) {
-        for (; h >= 2; h -= 2) {
-            x = w>>1;
-            do {
-                int32 Cb = pp[4];
-                int32 Cr = pp[5];
-
-                YCbCrtoRGB(cp [0], pp[0]);
-                YCbCrtoRGB(cp [1], pp[1]);
-                YCbCrtoRGB(cp1[0], pp[2]);
-                YCbCrtoRGB(cp1[1], pp[3]);
-
-                cp += 2, cp1 += 2;
-                pp += 6;
-            } while (--x);
-            cp += incr, cp1 += incr;
-            pp += fromskew;
-        }
-    } else {
-        while (h > 0) {
-            for (x = w; x > 0;) {
-                int32 Cb = pp[4];
-                int32 Cr = pp[5];
-                switch (x) {
-                default:
-                    switch (h) {
-                    default: YCbCrtoRGB(cp1[1], pp[ 3]); /* FALLTHROUGH */
-                    case 1:  YCbCrtoRGB(cp [1], pp[ 1]); /* FALLTHROUGH */
-                    }                                    /* FALLTHROUGH */
-                case 1:
-                    switch (h) {
-                    default: YCbCrtoRGB(cp1[0], pp[ 2]); /* FALLTHROUGH */
-                    case 1:  YCbCrtoRGB(cp [0], pp[ 0]); /* FALLTHROUGH */
-                    }                                    /* FALLTHROUGH */
-                }
-                if (x < 2) {
-                    cp += x; cp1 += x;
-                    x = 0;
-                }
-                else {
-                    cp += 2; cp1 += 2;
-                    x -= 2;
-                }
-                pp += 6;
-            }
-            if (h <= 2)
-                break;
-            h -= 2;
-            cp += incr, cp1 += incr;
-            pp += fromskew;
-        }
-    }
-}
-
-/*
- * 8-bit packed YCbCr samples w/ 2,1 subsampling => RGB
- */
-DECLAREContigPutFunc(putcontig8bitYCbCr21tile)
-{
-    (void) y;
-    fromskew = (fromskew * 4) / 2;
-    do {
-	x = w>>1;
-	do {
-	    int32 Cb = pp[2];
-	    int32 Cr = pp[3];
-
-	    YCbCrtoRGB(cp[0], pp[0]); 
-	    YCbCrtoRGB(cp[1], pp[1]);
-
-	    cp += 2;
-	    pp += 4;
-	} while (--x);
-
-        if( (w&1) != 0 )
-        {
-	    int32 Cb = pp[2];
-	    int32 Cr = pp[3];
-            
-            YCbCrtoRGB(cp [0], pp[0]);
-
-	    cp += 1;
-	    pp += 4;
-        }
-
-	cp += toskew;
-	pp += fromskew;
-    } while (--h);
-}
-
-/*
- * 8-bit packed YCbCr samples w/ no subsampling => RGB
- */
-DECLAREContigPutFunc(putcontig8bitYCbCr11tile)
-{
-    (void) y;
-    fromskew *= 3;
-    do {
-        x = w; /* was x = w>>1; patched 2000/09/25 warmerda at home.com */ 
-	do {
-	    int32 Cb = pp[1];
-	    int32 Cr = pp[2];
-
-	    YCbCrtoRGB(*cp++, pp[0]);
-
-	    pp += 3;
-	} while (--x);
-	cp += toskew;
-	pp += fromskew;
-    } while (--h);
-}
-#undef	YCbCrtoRGB
-
-static tileContigRoutine
-initYCbCrConversion(TIFFRGBAImage* img)
-{
-	static char module[] = "initCIELabConversion";
-
-	float *luma, *refBlackWhite;
-	uint16 hs, vs;
-
-	if (img->ycbcr == NULL) {
-	    img->ycbcr = (TIFFYCbCrToRGB*) _TIFFmalloc(
-		    TIFFroundup(sizeof (TIFFYCbCrToRGB), sizeof (long))
-		    + 4*256*sizeof (TIFFRGBValue)
-		    + 2*256*sizeof (int)
-		    + 3*256*sizeof (int32)
-	    );
-	    if (img->ycbcr == NULL) {
-			TIFFErrorExt(img->tif->tif_clientdata, module,
-			      "No space for YCbCr->RGB conversion state");
-		    return (NULL);
-	    }
-	}
-
-	TIFFGetFieldDefaulted(img->tif, TIFFTAG_YCBCRCOEFFICIENTS, &luma);
-	TIFFGetFieldDefaulted(img->tif, TIFFTAG_REFERENCEBLACKWHITE,
-			      &refBlackWhite);
-	if (TIFFYCbCrToRGBInit(img->ycbcr, luma, refBlackWhite) < 0)
-		return NULL;
-
-	/*
-	 * The 6.0 spec says that subsampling must be
-	 * one of 1, 2, or 4, and that vertical subsampling
-	 * must always be <= horizontal subsampling; so
-	 * there are only a few possibilities and we just
-	 * enumerate the cases.
-	 */
-	TIFFGetFieldDefaulted(img->tif, TIFFTAG_YCBCRSUBSAMPLING, &hs, &vs);
-	switch ((hs<<4)|vs) {
-		case 0x44: return (putcontig8bitYCbCr44tile);
-		case 0x42: return (putcontig8bitYCbCr42tile);
-		case 0x41: return (putcontig8bitYCbCr41tile);
-		case 0x22: return (putcontig8bitYCbCr22tile);
-		case 0x21: return (putcontig8bitYCbCr21tile);
-		case 0x11: return (putcontig8bitYCbCr11tile);
-	}
-
-	return (NULL);
-}
-
-static tileContigRoutine
-initCIELabConversion(TIFFRGBAImage* img)
-{
-	static char module[] = "initCIELabConversion";
-
-	float   *whitePoint;
-	float   refWhite[3];
-
-	if (!img->cielab) {
-		img->cielab = (TIFFCIELabToRGB *)
-			_TIFFmalloc(sizeof(TIFFCIELabToRGB));
-		if (!img->cielab) {
-			TIFFErrorExt(img->tif->tif_clientdata, module,
-			    "No space for CIE L*a*b*->RGB conversion state.");
-			return NULL;
-		}
-	}
-
-	TIFFGetFieldDefaulted(img->tif, TIFFTAG_WHITEPOINT, &whitePoint);
-	refWhite[1] = 100.0F;
-	refWhite[0] = whitePoint[0] / whitePoint[1] * refWhite[1];
-	refWhite[2] = (1.0F - whitePoint[0] - whitePoint[1])
-		      / whitePoint[1] * refWhite[1];
-	if (TIFFCIELabToRGBInit(img->cielab, &display_sRGB, refWhite) < 0) {
-		TIFFErrorExt(img->tif->tif_clientdata, module,
-		    "Failed to initialize CIE L*a*b*->RGB conversion state.");
-		_TIFFfree(img->cielab);
-		return NULL;
-	}
-
-	return putcontig8bitCIELab;
-}
-
-/*
- * Greyscale images with less than 8 bits/sample are handled
- * with a table to avoid lots of shifts and masks.  The table
- * is setup so that put*bwtile (below) can retrieve 8/bitspersample
- * pixel values simply by indexing into the table with one
- * number.
- */
-static int
-makebwmap(TIFFRGBAImage* img)
-{
-    TIFFRGBValue* Map = img->Map;
-    int bitspersample = img->bitspersample;
-    int nsamples = 8 / bitspersample;
-    int i;
-    uint32* p;
-
-    if( nsamples == 0 )
-        nsamples = 1;
-
-    img->BWmap = (uint32**) _TIFFmalloc(
-	256*sizeof (uint32 *)+(256*nsamples*sizeof(uint32)));
-    if (img->BWmap == NULL) {
-		TIFFErrorExt(img->tif->tif_clientdata, TIFFFileName(img->tif), "No space for B&W mapping table");
-		return (0);
-    }
-    p = (uint32*)(img->BWmap + 256);
-    for (i = 0; i < 256; i++) {
-	TIFFRGBValue c;
-	img->BWmap[i] = p;
-	switch (bitspersample) {
-#define	GREY(x)	c = Map[x]; *p++ = PACK(c,c,c);
-	case 1:
-	    GREY(i>>7);
-	    GREY((i>>6)&1);
-	    GREY((i>>5)&1);
-	    GREY((i>>4)&1);
-	    GREY((i>>3)&1);
-	    GREY((i>>2)&1);
-	    GREY((i>>1)&1);
-	    GREY(i&1);
-	    break;
-	case 2:
-	    GREY(i>>6);
-	    GREY((i>>4)&3);
-	    GREY((i>>2)&3);
-	    GREY(i&3);
-	    break;
-	case 4:
-	    GREY(i>>4);
-	    GREY(i&0xf);
-	    break;
-	case 8:
-        case 16:
-	    GREY(i);
-	    break;
-	}
-#undef	GREY
-    }
-    return (1);
-}
-
-/*
- * Construct a mapping table to convert from the range
- * of the data samples to [0,255] --for display.  This
- * process also handles inverting B&W images when needed.
- */ 
-static int
-setupMap(TIFFRGBAImage* img)
-{
-    int32 x, range;
-
-    range = (int32)((1L<<img->bitspersample)-1);
-    
-    /* treat 16 bit the same as eight bit */
-    if( img->bitspersample == 16 )
-        range = (int32) 255;
-
-    img->Map = (TIFFRGBValue*) _TIFFmalloc((range+1) * sizeof (TIFFRGBValue));
-    if (img->Map == NULL) {
-		TIFFErrorExt(img->tif->tif_clientdata, TIFFFileName(img->tif),
-			"No space for photometric conversion table");
-		return (0);
-    }
-    if (img->photometric == PHOTOMETRIC_MINISWHITE) {
-	for (x = 0; x <= range; x++)
-	    img->Map[x] = (TIFFRGBValue) (((range - x) * 255) / range);
-    } else {
-	for (x = 0; x <= range; x++)
-	    img->Map[x] = (TIFFRGBValue) ((x * 255) / range);
-    }
-    if (img->bitspersample <= 16 &&
-	(img->photometric == PHOTOMETRIC_MINISBLACK ||
-	 img->photometric == PHOTOMETRIC_MINISWHITE)) {
-	/*
-	 * Use photometric mapping table to construct
-	 * unpacking tables for samples <= 8 bits.
-	 */
-	if (!makebwmap(img))
-	    return (0);
-	/* no longer need Map, free it */
-	_TIFFfree(img->Map), img->Map = NULL;
-    }
-    return (1);
-}
-
-static int
-checkcmap(TIFFRGBAImage* img)
-{
-    uint16* r = img->redcmap;
-    uint16* g = img->greencmap;
-    uint16* b = img->bluecmap;
-    long n = 1L<<img->bitspersample;
-
-    while (n-- > 0)
-	if (*r++ >= 256 || *g++ >= 256 || *b++ >= 256)
-	    return (16);
-    return (8);
-}
-
-static void
-cvtcmap(TIFFRGBAImage* img)
-{
-    uint16* r = img->redcmap;
-    uint16* g = img->greencmap;
-    uint16* b = img->bluecmap;
-    long i;
-
-    for (i = (1L<<img->bitspersample)-1; i >= 0; i--) {
-#define	CVT(x)		((uint16)((x)>>8))
-	r[i] = CVT(r[i]);
-	g[i] = CVT(g[i]);
-	b[i] = CVT(b[i]);
-#undef	CVT
-    }
-}
-
-/*
- * Palette images with <= 8 bits/sample are handled
- * with a table to avoid lots of shifts and masks.  The table
- * is setup so that put*cmaptile (below) can retrieve 8/bitspersample
- * pixel values simply by indexing into the table with one
- * number.
- */
-static int
-makecmap(TIFFRGBAImage* img)
-{
-    int bitspersample = img->bitspersample;
-    int nsamples = 8 / bitspersample;
-    uint16* r = img->redcmap;
-    uint16* g = img->greencmap;
-    uint16* b = img->bluecmap;
-    uint32 *p;
-    int i;
-
-    img->PALmap = (uint32**) _TIFFmalloc(
-	256*sizeof (uint32 *)+(256*nsamples*sizeof(uint32)));
-    if (img->PALmap == NULL) {
-		TIFFErrorExt(img->tif->tif_clientdata, TIFFFileName(img->tif), "No space for Palette mapping table");
-		return (0);
-	}
-    p = (uint32*)(img->PALmap + 256);
-    for (i = 0; i < 256; i++) {
-	TIFFRGBValue c;
-	img->PALmap[i] = p;
-#define	CMAP(x)	c = (TIFFRGBValue) x; *p++ = PACK(r[c]&0xff, g[c]&0xff, b[c]&0xff);
-	switch (bitspersample) {
-	case 1:
-	    CMAP(i>>7);
-	    CMAP((i>>6)&1);
-	    CMAP((i>>5)&1);
-	    CMAP((i>>4)&1);
-	    CMAP((i>>3)&1);
-	    CMAP((i>>2)&1);
-	    CMAP((i>>1)&1);
-	    CMAP(i&1);
-	    break;
-	case 2:
-	    CMAP(i>>6);
-	    CMAP((i>>4)&3);
-	    CMAP((i>>2)&3);
-	    CMAP(i&3);
-	    break;
-	case 4:
-	    CMAP(i>>4);
-	    CMAP(i&0xf);
-	    break;
-	case 8:
-	    CMAP(i);
-	    break;
-	}
-#undef CMAP
-    }
-    return (1);
-}
-
-/* 
- * Construct any mapping table used
- * by the associated put routine.
- */
-static int
-buildMap(TIFFRGBAImage* img)
-{
-    switch (img->photometric) {
-    case PHOTOMETRIC_RGB:
-    case PHOTOMETRIC_YCBCR:
-    case PHOTOMETRIC_SEPARATED:
-	if (img->bitspersample == 8)
-	    break;
-	/* fall thru... */
-    case PHOTOMETRIC_MINISBLACK:
-    case PHOTOMETRIC_MINISWHITE:
-	if (!setupMap(img))
-	    return (0);
-	break;
-    case PHOTOMETRIC_PALETTE:
-	/*
-	 * Convert 16-bit colormap to 8-bit (unless it looks
-	 * like an old-style 8-bit colormap).
-	 */
-	if (checkcmap(img) == 16)
-	    cvtcmap(img);
-	else
-	    TIFFWarningExt(img->tif->tif_clientdata, TIFFFileName(img->tif), "Assuming 8-bit colormap");
-	/*
-	 * Use mapping table and colormap to construct
-	 * unpacking tables for samples < 8 bits.
-	 */
-	if (img->bitspersample <= 8 && !makecmap(img))
-	    return (0);
-	break;
-    }
-    return (1);
-}
-
-/*
- * Select the appropriate conversion routine for packed data.
- */
-static int
-pickTileContigCase(TIFFRGBAImage* img)
-{
-    tileContigRoutine put = 0;
-
-    if (buildMap(img)) {
-	switch (img->photometric) {
-	case PHOTOMETRIC_RGB:
-	    switch (img->bitspersample) {
-	    case 8:
-		if (!img->Map) {
-		    if (img->alpha == EXTRASAMPLE_ASSOCALPHA)
-			put = putRGBAAcontig8bittile;
-		    else if (img->alpha == EXTRASAMPLE_UNASSALPHA)
-			put = putRGBUAcontig8bittile;
-		    else
-			put = putRGBcontig8bittile;
-		} else
-		    put = putRGBcontig8bitMaptile;
-		break;
-	    case 16:
-		put = putRGBcontig16bittile;
-		if (!img->Map) {
-		    if (img->alpha == EXTRASAMPLE_ASSOCALPHA)
-			put = putRGBAAcontig16bittile;
-		    else if (img->alpha == EXTRASAMPLE_UNASSALPHA)
-			put = putRGBUAcontig16bittile;
-		}
-		break;
-	    }
-	    break;
-	case PHOTOMETRIC_SEPARATED:
-	    if (img->bitspersample == 8) {
-		if (!img->Map)
-		    put = putRGBcontig8bitCMYKtile;
-		else
-		    put = putRGBcontig8bitCMYKMaptile;
-	    }
-	    break;
-	case PHOTOMETRIC_PALETTE:
-	    switch (img->bitspersample) {
-	    case 8:	put = put8bitcmaptile; break;
-	    case 4: put = put4bitcmaptile; break;
-	    case 2: put = put2bitcmaptile; break;
-	    case 1: put = put1bitcmaptile; break;
-	    }
-	    break;
-	case PHOTOMETRIC_MINISWHITE:
-	case PHOTOMETRIC_MINISBLACK:
-	    switch (img->bitspersample) {
-            case 16: put = put16bitbwtile; break;
-	    case 8:  put = putgreytile; break;
-	    case 4:  put = put4bitbwtile; break;
-	    case 2:  put = put2bitbwtile; break;
-	    case 1:  put = put1bitbwtile; break;
-	    }
-	    break;
-	case PHOTOMETRIC_YCBCR:
-	    if (img->bitspersample == 8)
-		put = initYCbCrConversion(img);
-	    break;
-	case PHOTOMETRIC_CIELAB:
-	    if (img->bitspersample == 8)
-		put = initCIELabConversion(img);
-	    break;
-	}
-    }
-    return ((img->put.contig = put) != 0);
-}
-
-/*
- * Select the appropriate conversion routine for unpacked data.
- *
- * NB: we assume that unpacked single channel data is directed
- *	 to the "packed routines.
- */
-static int
-pickTileSeparateCase(TIFFRGBAImage* img)
-{
-    tileSeparateRoutine put = 0;
-
-    if (buildMap(img)) {
-	switch (img->photometric) {
-	case PHOTOMETRIC_RGB:
-	    switch (img->bitspersample) {
-	    case 8:
-		if (!img->Map) {
-		    if (img->alpha == EXTRASAMPLE_ASSOCALPHA)
-			put = putRGBAAseparate8bittile;
-		    else if (img->alpha == EXTRASAMPLE_UNASSALPHA)
-			put = putRGBUAseparate8bittile;
-		    else
-			put = putRGBseparate8bittile;
-		} else
-		    put = putRGBseparate8bitMaptile;
-		break;
-	    case 16:
-		put = putRGBseparate16bittile;
-		if (!img->Map) {
-		    if (img->alpha == EXTRASAMPLE_ASSOCALPHA)
-			put = putRGBAAseparate16bittile;
-		    else if (img->alpha == EXTRASAMPLE_UNASSALPHA)
-			put = putRGBUAseparate16bittile;
-		}
-		break;
-	    }
-	    break;
-	}
-    }
-    return ((img->put.separate = put) != 0);
-}
-
-/*
- * Read a whole strip off data from the file, and convert to RGBA form.
- * If this is the last strip, then it will only contain the portion of
- * the strip that is actually within the image space.  The result is
- * organized in bottom to top form.
- */
-
-
-int
-TIFFReadRGBAStrip(TIFF* tif, uint32 row, uint32 * raster )
-
-{
-    char 	emsg[1024] = "";
-    TIFFRGBAImage img;
-    int 	ok;
-    uint32	rowsperstrip, rows_to_read;
-
-    if( TIFFIsTiled( tif ) )
-    {
-		TIFFErrorExt(tif->tif_clientdata, TIFFFileName(tif),
-                  "Can't use TIFFReadRGBAStrip() with tiled file.");
-	return (0);
-    }
-    
-    TIFFGetFieldDefaulted(tif, TIFFTAG_ROWSPERSTRIP, &rowsperstrip);
-    if( (row % rowsperstrip) != 0 )
-    {
-		TIFFErrorExt(tif->tif_clientdata, TIFFFileName(tif),
-				"Row passed to TIFFReadRGBAStrip() must be first in a strip.");
-		return (0);
-    }
-
-    if (TIFFRGBAImageOK(tif, emsg) && TIFFRGBAImageBegin(&img, tif, 0, emsg)) {
-
-        img.row_offset = row;
-        img.col_offset = 0;
-
-        if( row + rowsperstrip > img.height )
-            rows_to_read = img.height - row;
-        else
-            rows_to_read = rowsperstrip;
-        
-	ok = TIFFRGBAImageGet(&img, raster, img.width, rows_to_read );
-        
-	TIFFRGBAImageEnd(&img);
-    } else {
-		TIFFErrorExt(tif->tif_clientdata, TIFFFileName(tif), emsg);
-		ok = 0;
-    }
-    
-    return (ok);
-}
-
-/*
- * Read a whole tile off data from the file, and convert to RGBA form.
- * The returned RGBA data is organized from bottom to top of tile,
- * and may include zeroed areas if the tile extends off the image.
- */
-
-int
-TIFFReadRGBATile(TIFF* tif, uint32 col, uint32 row, uint32 * raster)
-
-{
-    char 	emsg[1024] = "";
-    TIFFRGBAImage img;
-    int 	ok;
-    uint32	tile_xsize, tile_ysize;
-    uint32	read_xsize, read_ysize;
-    uint32	i_row;
-
-    /*
-     * Verify that our request is legal - on a tile file, and on a
-     * tile boundary.
-     */
-    
-    if( !TIFFIsTiled( tif ) )
-    {
-		TIFFErrorExt(tif->tif_clientdata, TIFFFileName(tif),
-				  "Can't use TIFFReadRGBATile() with stripped file.");
-		return (0);
-    }
-    
-    TIFFGetFieldDefaulted(tif, TIFFTAG_TILEWIDTH, &tile_xsize);
-    TIFFGetFieldDefaulted(tif, TIFFTAG_TILELENGTH, &tile_ysize);
-    if( (col % tile_xsize) != 0 || (row % tile_ysize) != 0 )
-    {
-		TIFFErrorExt(tif->tif_clientdata, TIFFFileName(tif),
-                  "Row/col passed to TIFFReadRGBATile() must be top"
-                  "left corner of a tile.");
-	return (0);
-    }
-
-    /*
-     * Setup the RGBA reader.
-     */
-    
-    if (!TIFFRGBAImageOK(tif, emsg) 
-	|| !TIFFRGBAImageBegin(&img, tif, 0, emsg)) {
-	    TIFFErrorExt(tif->tif_clientdata, TIFFFileName(tif), emsg);
-	    return( 0 );
-    }
-
-    /*
-     * The TIFFRGBAImageGet() function doesn't allow us to get off the
-     * edge of the image, even to fill an otherwise valid tile.  So we
-     * figure out how much we can read, and fix up the tile buffer to
-     * a full tile configuration afterwards.
-     */
-
-    if( row + tile_ysize > img.height )
-        read_ysize = img.height - row;
-    else
-        read_ysize = tile_ysize;
-    
-    if( col + tile_xsize > img.width )
-        read_xsize = img.width - col;
-    else
-        read_xsize = tile_xsize;
-
-    /*
-     * Read the chunk of imagery.
-     */
-    
-    img.row_offset = row;
-    img.col_offset = col;
-
-    ok = TIFFRGBAImageGet(&img, raster, read_xsize, read_ysize );
-        
-    TIFFRGBAImageEnd(&img);
-
-    /*
-     * If our read was incomplete we will need to fix up the tile by
-     * shifting the data around as if a full tile of data is being returned.
-     *
-     * This is all the more complicated because the image is organized in
-     * bottom to top format. 
-     */
-
-    if( read_xsize == tile_xsize && read_ysize == tile_ysize )
-        return( ok );
-
-    for( i_row = 0; i_row < read_ysize; i_row++ ) {
-        memmove( raster + (tile_ysize - i_row - 1) * tile_xsize,
-                 raster + (read_ysize - i_row - 1) * read_xsize,
-                 read_xsize * sizeof(uint32) );
-        _TIFFmemset( raster + (tile_ysize - i_row - 1) * tile_xsize+read_xsize,
-                     0, sizeof(uint32) * (tile_xsize - read_xsize) );
-    }
-
-    for( i_row = read_ysize; i_row < tile_ysize; i_row++ ) {
-        _TIFFmemset( raster + (tile_ysize - i_row - 1) * tile_xsize,
-                     0, sizeof(uint32) * tile_xsize );
-    }
-
-    return (ok);
-}
-
-/* vim: set ts=8 sts=8 sw=8 noet: */
diff --git a/src/tiff/tif_jpeg.c b/src/tiff/tif_jpeg.c
deleted file mode 100644
index 6d7ecc5..0000000
--- a/src/tiff/tif_jpeg.c
+++ /dev/null
@@ -1,1942 +0,0 @@
-/* $Id: tif_jpeg.c 4825 2006-08-16 13:01:53Z lubia $ */
-
-/*
- * Copyright (c) 1994-1997 Sam Leffler
- * Copyright (c) 1994-1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and 
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- * 
- * 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 SAM LEFFLER OR SILICON GRAPHICS 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.
- */
-
-#define WIN32_LEAN_AND_MEAN
-#define VC_EXTRALEAN
-
-#include "tiffiop.h"
-#ifdef JPEG_SUPPORT
-
-/*
- * TIFF Library
- *
- * JPEG Compression support per TIFF Technical Note #2
- * (*not* per the original TIFF 6.0 spec).
- *
- * This file is simply an interface to the libjpeg library written by
- * the Independent JPEG Group.  You need release 5 or later of the IJG
- * code, which you can find on the Internet at ftp.uu.net:/graphics/jpeg/.
- *
- * Contributed by Tom Lane <tgl at sss.pgh.pa.us>.
- */
-#include <setjmp.h>
-
-int TIFFFillStrip(TIFF*, tstrip_t);
-int TIFFFillTile(TIFF*, ttile_t);
-
-/* We undefine FAR to avoid conflict with JPEG definition */
-
-#ifdef FAR
-#undef FAR
-#endif
-
-/*
-  Libjpeg's jmorecfg.h defines INT16 and INT32, but only if XMD_H is
-  not defined.  Unfortunately, the MinGW and Borland compilers include
-  a typedef for INT32, which causes a conflict.  MSVC does not include
-  a conficting typedef given the headers which are included.
-*/
-#if defined(__BORLANDC__) || defined(__MINGW32__)
-# define XMD_H 1
-#endif
-
-/*
-   The windows RPCNDR.H file defines boolean, but defines it with the
-   unsigned char size.  You should compile JPEG library using appropriate
-   definitions in jconfig.h header, but many users compile library in wrong
-   way. That causes errors of the following type:
-
-   "JPEGLib: JPEG parameter struct mismatch: library thinks size is 432,
-   caller expects 464"
-
-   For such users we wil fix the problem here. See install.doc file from
-   the JPEG library distribution for details.
-*/
-
-/* Define "boolean" as unsigned char, not int, per Windows custom. */
-#if defined(WIN32) && !defined(__MINGW32__)
-# ifndef __RPCNDR_H__            /* don't conflict if rpcndr.h already read */
-   typedef unsigned char boolean;
-# endif
-# define HAVE_BOOLEAN            /* prevent jmorecfg.h from redefining it */
-#endif
-
-#include "jpeglib.h"
-#include "jerror.h"
-
-/*
- * We are using width_in_blocks which is supposed to be private to
- * libjpeg. Unfortunately, the libjpeg delivered with Cygwin has
- * renamed this member to width_in_data_units.  Since the header has
- * also renamed a define, use that unique define name in order to
- * detect the problem header and adjust to suit.
- */
-#if defined(D_MAX_DATA_UNITS_IN_MCU)
-#define width_in_blocks width_in_data_units
-#endif
-
-/*
- * On some machines it may be worthwhile to use _setjmp or sigsetjmp
- * in place of plain setjmp.  These macros will make it easier.
- */
-#define SETJMP(jbuf)		setjmp(jbuf)
-#define LONGJMP(jbuf,code)	longjmp(jbuf,code)
-#define JMP_BUF			jmp_buf
-
-typedef struct jpeg_destination_mgr jpeg_destination_mgr;
-typedef struct jpeg_source_mgr jpeg_source_mgr;
-typedef	struct jpeg_error_mgr jpeg_error_mgr;
-
-/*
- * State block for each open TIFF file using
- * libjpeg to do JPEG compression/decompression.
- *
- * libjpeg's visible state is either a jpeg_compress_struct
- * or jpeg_decompress_struct depending on which way we
- * are going.  comm can be used to refer to the fields
- * which are common to both.
- *
- * NB: cinfo is required to be the first member of JPEGState,
- *     so we can safely cast JPEGState* -> jpeg_xxx_struct*
- *     and vice versa!
- */
-typedef	struct {
-	union {
-		struct jpeg_compress_struct c;
-		struct jpeg_decompress_struct d;
-		struct jpeg_common_struct comm;
-	} cinfo;			/* NB: must be first */
-        int             cinfo_initialized;
-
-	jpeg_error_mgr	err;		/* libjpeg error manager */
-	JMP_BUF		exit_jmpbuf;	/* for catching libjpeg failures */
-	/*
-	 * The following two members could be a union, but
-	 * they're small enough that it's not worth the effort.
-	 */
-	jpeg_destination_mgr dest;	/* data dest for compression */
-	jpeg_source_mgr	src;		/* data source for decompression */
-					/* private state */
-	TIFF*		tif;		/* back link needed by some code */
-	uint16		photometric;	/* copy of PhotometricInterpretation */
-	uint16		h_sampling;	/* luminance sampling factors */
-	uint16		v_sampling;
-	tsize_t		bytesperline;	/* decompressed bytes per scanline */
-	/* pointers to intermediate buffers when processing downsampled data */
-	JSAMPARRAY	ds_buffer[MAX_COMPONENTS];
-	int		scancount;	/* number of "scanlines" accumulated */
-	int		samplesperclump;
-
-	TIFFVGetMethod	vgetparent;	/* super-class method */
-	TIFFVSetMethod	vsetparent;	/* super-class method */
-	TIFFStripMethod	defsparent;	/* super-class method */
-	TIFFTileMethod	deftparent;	/* super-class method */
-					/* pseudo-tag fields */
-	void*		jpegtables;	/* JPEGTables tag value, or NULL */
-	uint32		jpegtables_length; /* number of bytes in same */
-	int		jpegquality;	/* Compression quality level */
-	int		jpegcolormode;	/* Auto RGB<=>YCbCr convert? */
-	int		jpegtablesmode;	/* What to put in JPEGTables */
-
-        int             ycbcrsampling_fetched;
-	uint32		recvparams;	/* encoded Class 2 session params */
-	char*		subaddress;	/* subaddress string */
-	uint32		recvtime;	/* time spent receiving (secs) */
-	char*		faxdcs;		/* encoded fax parameters (DCS, Table 2/T.30) */
-} JPEGState;
-
-#define	JState(tif)	((JPEGState*)(tif)->tif_data)
-
-static	int JPEGDecode(TIFF*, tidata_t, tsize_t, tsample_t);
-static	int JPEGDecodeRaw(TIFF*, tidata_t, tsize_t, tsample_t);
-static	int JPEGEncode(TIFF*, tidata_t, tsize_t, tsample_t);
-static	int JPEGEncodeRaw(TIFF*, tidata_t, tsize_t, tsample_t);
-static  int JPEGInitializeLibJPEG( TIFF * tif,
-								   int force_encode, int force_decode );
-
-#define	FIELD_JPEGTABLES	(FIELD_CODEC+0)
-#define	FIELD_RECVPARAMS	(FIELD_CODEC+1)
-#define	FIELD_SUBADDRESS	(FIELD_CODEC+2)
-#define	FIELD_RECVTIME		(FIELD_CODEC+3)
-#define	FIELD_FAXDCS		(FIELD_CODEC+4)
-
-static const TIFFFieldInfo jpegFieldInfo[] = {
-    { TIFFTAG_JPEGTABLES,	 -3,-3,	TIFF_UNDEFINED,	FIELD_JPEGTABLES,
-      FALSE,	TRUE,	"JPEGTables" },
-    { TIFFTAG_JPEGQUALITY,	 0, 0,	TIFF_ANY,	FIELD_PSEUDO,
-      TRUE,	FALSE,	"" },
-    { TIFFTAG_JPEGCOLORMODE,	 0, 0,	TIFF_ANY,	FIELD_PSEUDO,
-      FALSE,	FALSE,	"" },
-    { TIFFTAG_JPEGTABLESMODE,	 0, 0,	TIFF_ANY,	FIELD_PSEUDO,
-      FALSE,	FALSE,	"" },
-    /* Specific for JPEG in faxes */
-    { TIFFTAG_FAXRECVPARAMS,	 1, 1, TIFF_LONG,	FIELD_RECVPARAMS,
-      TRUE,	FALSE,	"FaxRecvParams" },
-    { TIFFTAG_FAXSUBADDRESS,	-1,-1, TIFF_ASCII,	FIELD_SUBADDRESS,
-      TRUE,	FALSE,	"FaxSubAddress" },
-    { TIFFTAG_FAXRECVTIME,	 1, 1, TIFF_LONG,	FIELD_RECVTIME,
-      TRUE,	FALSE,	"FaxRecvTime" },
-    { TIFFTAG_FAXDCS,		-1, -1, TIFF_ASCII,	FIELD_FAXDCS,
-	  TRUE,	FALSE,	"FaxDcs" },
-};
-#define	N(a)	(sizeof (a) / sizeof (a[0]))
-
-/*
- * libjpeg interface layer.
- *
- * We use setjmp/longjmp to return control to libtiff
- * when a fatal error is encountered within the JPEG
- * library.  We also direct libjpeg error and warning
- * messages through the appropriate libtiff handlers.
- */
-
-/*
- * Error handling routines (these replace corresponding
- * IJG routines from jerror.c).  These are used for both
- * compression and decompression.
- */
-static void
-TIFFjpeg_error_exit(j_common_ptr cinfo)
-{
-	JPEGState *sp = (JPEGState *) cinfo;	/* NB: cinfo assumed first */
-	char buffer[JMSG_LENGTH_MAX];
-
-	(*cinfo->err->format_message) (cinfo, buffer);
-	TIFFErrorExt(sp->tif->tif_clientdata, "JPEGLib", buffer);		/* display the error message */
-	jpeg_abort(cinfo);			/* clean up libjpeg state */
-	LONGJMP(sp->exit_jmpbuf, 1);		/* return to libtiff caller */
-}
-
-/*
- * This routine is invoked only for warning messages,
- * since error_exit does its own thing and trace_level
- * is never set > 0.
- */
-static void
-TIFFjpeg_output_message(j_common_ptr cinfo)
-{
-	char buffer[JMSG_LENGTH_MAX];
-
-	(*cinfo->err->format_message) (cinfo, buffer);
-	TIFFWarningExt(((JPEGState *) cinfo)->tif->tif_clientdata, "JPEGLib", buffer);
-}
-
-/*
- * Interface routines.  This layer of routines exists
- * primarily to limit side-effects from using setjmp.
- * Also, normal/error returns are converted into return
- * values per libtiff practice.
- */
-#define	CALLJPEG(sp, fail, op)	(SETJMP((sp)->exit_jmpbuf) ? (fail) : (op))
-#define	CALLVJPEG(sp, op)	CALLJPEG(sp, 0, ((op),1))
-
-static int
-TIFFjpeg_create_compress(JPEGState* sp)
-{
-	/* initialize JPEG error handling */
-	sp->cinfo.c.err = jpeg_std_error(&sp->err);
-	sp->err.error_exit = TIFFjpeg_error_exit;
-	sp->err.output_message = TIFFjpeg_output_message;
-
-	return CALLVJPEG(sp, jpeg_create_compress(&sp->cinfo.c));
-}
-
-static int
-TIFFjpeg_create_decompress(JPEGState* sp)
-{
-	/* initialize JPEG error handling */
-	sp->cinfo.d.err = jpeg_std_error(&sp->err);
-	sp->err.error_exit = TIFFjpeg_error_exit;
-	sp->err.output_message = TIFFjpeg_output_message;
-
-	return CALLVJPEG(sp, jpeg_create_decompress(&sp->cinfo.d));
-}
-
-static int
-TIFFjpeg_set_defaults(JPEGState* sp)
-{
-	return CALLVJPEG(sp, jpeg_set_defaults(&sp->cinfo.c));
-}
-
-static int
-TIFFjpeg_set_colorspace(JPEGState* sp, J_COLOR_SPACE colorspace)
-{
-	return CALLVJPEG(sp, jpeg_set_colorspace(&sp->cinfo.c, colorspace));
-}
-
-static int
-TIFFjpeg_set_quality(JPEGState* sp, int quality, boolean force_baseline)
-{
-	return CALLVJPEG(sp,
-	    jpeg_set_quality(&sp->cinfo.c, quality, force_baseline));
-}
-
-static int
-TIFFjpeg_suppress_tables(JPEGState* sp, boolean suppress)
-{
-	return CALLVJPEG(sp, jpeg_suppress_tables(&sp->cinfo.c, suppress));
-}
-
-static int
-TIFFjpeg_start_compress(JPEGState* sp, boolean write_all_tables)
-{
-	return CALLVJPEG(sp,
-	    jpeg_start_compress(&sp->cinfo.c, write_all_tables));
-}
-
-static int
-TIFFjpeg_write_scanlines(JPEGState* sp, JSAMPARRAY scanlines, int num_lines)
-{
-	return CALLJPEG(sp, -1, (int) jpeg_write_scanlines(&sp->cinfo.c,
-	    scanlines, (JDIMENSION) num_lines));
-}
-
-static int
-TIFFjpeg_write_raw_data(JPEGState* sp, JSAMPIMAGE data, int num_lines)
-{
-	return CALLJPEG(sp, -1, (int) jpeg_write_raw_data(&sp->cinfo.c,
-	    data, (JDIMENSION) num_lines));
-}
-
-static int
-TIFFjpeg_finish_compress(JPEGState* sp)
-{
-	return CALLVJPEG(sp, jpeg_finish_compress(&sp->cinfo.c));
-}
-
-static int
-TIFFjpeg_write_tables(JPEGState* sp)
-{
-	return CALLVJPEG(sp, jpeg_write_tables(&sp->cinfo.c));
-}
-
-static int
-TIFFjpeg_read_header(JPEGState* sp, boolean require_image)
-{
-	return CALLJPEG(sp, -1, jpeg_read_header(&sp->cinfo.d, require_image));
-}
-
-static int
-TIFFjpeg_start_decompress(JPEGState* sp)
-{
-	return CALLVJPEG(sp, jpeg_start_decompress(&sp->cinfo.d));
-}
-
-static int
-TIFFjpeg_read_scanlines(JPEGState* sp, JSAMPARRAY scanlines, int max_lines)
-{
-	return CALLJPEG(sp, -1, (int) jpeg_read_scanlines(&sp->cinfo.d,
-	    scanlines, (JDIMENSION) max_lines));
-}
-
-static int
-TIFFjpeg_read_raw_data(JPEGState* sp, JSAMPIMAGE data, int max_lines)
-{
-	return CALLJPEG(sp, -1, (int) jpeg_read_raw_data(&sp->cinfo.d,
-	    data, (JDIMENSION) max_lines));
-}
-
-static int
-TIFFjpeg_finish_decompress(JPEGState* sp)
-{
-	return CALLJPEG(sp, -1, (int) jpeg_finish_decompress(&sp->cinfo.d));
-}
-
-static int
-TIFFjpeg_abort(JPEGState* sp)
-{
-	return CALLVJPEG(sp, jpeg_abort(&sp->cinfo.comm));
-}
-
-static int
-TIFFjpeg_destroy(JPEGState* sp)
-{
-	return CALLVJPEG(sp, jpeg_destroy(&sp->cinfo.comm));
-}
-
-static JSAMPARRAY
-TIFFjpeg_alloc_sarray(JPEGState* sp, int pool_id,
-		      JDIMENSION samplesperrow, JDIMENSION numrows)
-{
-	return CALLJPEG(sp, (JSAMPARRAY) NULL,
-	    (*sp->cinfo.comm.mem->alloc_sarray)
-		(&sp->cinfo.comm, pool_id, samplesperrow, numrows));
-}
-
-/*
- * JPEG library destination data manager.
- * These routines direct compressed data from libjpeg into the
- * libtiff output buffer.
- */
-
-static void
-std_init_destination(j_compress_ptr cinfo)
-{
-	JPEGState* sp = (JPEGState*) cinfo;
-	TIFF* tif = sp->tif;
-
-	sp->dest.next_output_byte = (JOCTET*) tif->tif_rawdata;
-	sp->dest.free_in_buffer = (size_t) tif->tif_rawdatasize;
-}
-
-static boolean
-std_empty_output_buffer(j_compress_ptr cinfo)
-{
-	JPEGState* sp = (JPEGState*) cinfo;
-	TIFF* tif = sp->tif;
-
-	/* the entire buffer has been filled */
-	tif->tif_rawcc = tif->tif_rawdatasize;
-	TIFFFlushData1(tif);
-	sp->dest.next_output_byte = (JOCTET*) tif->tif_rawdata;
-	sp->dest.free_in_buffer = (size_t) tif->tif_rawdatasize;
-
-	return (TRUE);
-}
-
-static void
-std_term_destination(j_compress_ptr cinfo)
-{
-	JPEGState* sp = (JPEGState*) cinfo;
-	TIFF* tif = sp->tif;
-
-	tif->tif_rawcp = (tidata_t) sp->dest.next_output_byte;
-	tif->tif_rawcc =
-	    tif->tif_rawdatasize - (tsize_t) sp->dest.free_in_buffer;
-	/* NB: libtiff does the final buffer flush */
-}
-
-static void
-TIFFjpeg_data_dest(JPEGState* sp, TIFF* tif)
-{
-	(void) tif;
-	sp->cinfo.c.dest = &sp->dest;
-	sp->dest.init_destination = std_init_destination;
-	sp->dest.empty_output_buffer = std_empty_output_buffer;
-	sp->dest.term_destination = std_term_destination;
-}
-
-/*
- * Alternate destination manager for outputting to JPEGTables field.
- */
-
-static void
-tables_init_destination(j_compress_ptr cinfo)
-{
-	JPEGState* sp = (JPEGState*) cinfo;
-
-	/* while building, jpegtables_length is allocated buffer size */
-	sp->dest.next_output_byte = (JOCTET*) sp->jpegtables;
-	sp->dest.free_in_buffer = (size_t) sp->jpegtables_length;
-}
-
-static boolean
-tables_empty_output_buffer(j_compress_ptr cinfo)
-{
-	JPEGState* sp = (JPEGState*) cinfo;
-	void* newbuf;
-
-	/* the entire buffer has been filled; enlarge it by 1000 bytes */
-	newbuf = _TIFFrealloc((tdata_t) sp->jpegtables,
-			      (tsize_t) (sp->jpegtables_length + 1000));
-	if (newbuf == NULL)
-		ERREXIT1(cinfo, JERR_OUT_OF_MEMORY, 100);
-	sp->dest.next_output_byte = (JOCTET*) newbuf + sp->jpegtables_length;
-	sp->dest.free_in_buffer = (size_t) 1000;
-	sp->jpegtables = newbuf;
-	sp->jpegtables_length += 1000;
-	return (TRUE);
-}
-
-static void
-tables_term_destination(j_compress_ptr cinfo)
-{
-	JPEGState* sp = (JPEGState*) cinfo;
-
-	/* set tables length to number of bytes actually emitted */
-	sp->jpegtables_length -= sp->dest.free_in_buffer;
-}
-
-static int
-TIFFjpeg_tables_dest(JPEGState* sp, TIFF* tif)
-{
-	(void) tif;
-	/*
-	 * Allocate a working buffer for building tables.
-	 * Initial size is 1000 bytes, which is usually adequate.
-	 */
-	if (sp->jpegtables)
-		_TIFFfree(sp->jpegtables);
-	sp->jpegtables_length = 1000;
-	sp->jpegtables = (void*) _TIFFmalloc((tsize_t) sp->jpegtables_length);
-	if (sp->jpegtables == NULL) {
-		sp->jpegtables_length = 0;
-		TIFFErrorExt(sp->tif->tif_clientdata, "TIFFjpeg_tables_dest", "No space for JPEGTables");
-		return (0);
-	}
-	sp->cinfo.c.dest = &sp->dest;
-	sp->dest.init_destination = tables_init_destination;
-	sp->dest.empty_output_buffer = tables_empty_output_buffer;
-	sp->dest.term_destination = tables_term_destination;
-	return (1);
-}
-
-/*
- * JPEG library source data manager.
- * These routines supply compressed data to libjpeg.
- */
-
-static void
-std_init_source(j_decompress_ptr cinfo)
-{
-	JPEGState* sp = (JPEGState*) cinfo;
-	TIFF* tif = sp->tif;
-
-	sp->src.next_input_byte = (const JOCTET*) tif->tif_rawdata;
-	sp->src.bytes_in_buffer = (size_t) tif->tif_rawcc;
-}
-
-static boolean
-std_fill_input_buffer(j_decompress_ptr cinfo)
-{
-	JPEGState* sp = (JPEGState* ) cinfo;
-	static const JOCTET dummy_EOI[2] = { 0xFF, JPEG_EOI };
-
-	/*
-	 * Should never get here since entire strip/tile is
-	 * read into memory before the decompressor is called,
-	 * and thus was supplied by init_source.
-	 */
-	WARNMS(cinfo, JWRN_JPEG_EOF);
-	/* insert a fake EOI marker */
-	sp->src.next_input_byte = dummy_EOI;
-	sp->src.bytes_in_buffer = 2;
-	return (TRUE);
-}
-
-static void
-std_skip_input_data(j_decompress_ptr cinfo, long num_bytes)
-{
-	JPEGState* sp = (JPEGState*) cinfo;
-
-	if (num_bytes > 0) {
-		if (num_bytes > (long) sp->src.bytes_in_buffer) {
-			/* oops, buffer overrun */
-			(void) std_fill_input_buffer(cinfo);
-		} else {
-			sp->src.next_input_byte += (size_t) num_bytes;
-			sp->src.bytes_in_buffer -= (size_t) num_bytes;
-		}
-	}
-}
-
-static void
-std_term_source(j_decompress_ptr cinfo)
-{
-	/* No work necessary here */
-	/* Or must we update tif->tif_rawcp, tif->tif_rawcc ??? */
-	/* (if so, need empty tables_term_source!) */
-	(void) cinfo;
-}
-
-static void
-TIFFjpeg_data_src(JPEGState* sp, TIFF* tif)
-{
-	(void) tif;
-	sp->cinfo.d.src = &sp->src;
-	sp->src.init_source = std_init_source;
-	sp->src.fill_input_buffer = std_fill_input_buffer;
-	sp->src.skip_input_data = std_skip_input_data;
-	sp->src.resync_to_restart = jpeg_resync_to_restart;
-	sp->src.term_source = std_term_source;
-	sp->src.bytes_in_buffer = 0;		/* for safety */
-	sp->src.next_input_byte = NULL;
-}
-
-/*
- * Alternate source manager for reading from JPEGTables.
- * We can share all the code except for the init routine.
- */
-
-static void
-tables_init_source(j_decompress_ptr cinfo)
-{
-	JPEGState* sp = (JPEGState*) cinfo;
-
-	sp->src.next_input_byte = (const JOCTET*) sp->jpegtables;
-	sp->src.bytes_in_buffer = (size_t) sp->jpegtables_length;
-}
-
-static void
-TIFFjpeg_tables_src(JPEGState* sp, TIFF* tif)
-{
-	TIFFjpeg_data_src(sp, tif);
-	sp->src.init_source = tables_init_source;
-}
-
-/*
- * Allocate downsampled-data buffers needed for downsampled I/O.
- * We use values computed in jpeg_start_compress or jpeg_start_decompress.
- * We use libjpeg's allocator so that buffers will be released automatically
- * when done with strip/tile.
- * This is also a handy place to compute samplesperclump, bytesperline.
- */
-static int
-alloc_downsampled_buffers(TIFF* tif, jpeg_component_info* comp_info,
-			  int num_components)
-{
-	JPEGState* sp = JState(tif);
-	int ci;
-	jpeg_component_info* compptr;
-	JSAMPARRAY buf;
-	int samples_per_clump = 0;
-
-	for (ci = 0, compptr = comp_info; ci < num_components;
-	     ci++, compptr++) {
-		samples_per_clump += compptr->h_samp_factor *
-			compptr->v_samp_factor;
-		buf = TIFFjpeg_alloc_sarray(sp, JPOOL_IMAGE,
-				compptr->width_in_blocks * DCTSIZE,
-				(JDIMENSION) (compptr->v_samp_factor*DCTSIZE));
-		if (buf == NULL)
-			return (0);
-		sp->ds_buffer[ci] = buf;
-	}
-	sp->samplesperclump = samples_per_clump;
-	return (1);
-}
-
-
-/*
- * JPEG Decoding.
- */
-
-static int
-JPEGSetupDecode(TIFF* tif)
-{
-	JPEGState* sp = JState(tif);
-	TIFFDirectory *td = &tif->tif_dir;
-
-        JPEGInitializeLibJPEG( tif, 0, 1 );
-
-	assert(sp != NULL);
-	assert(sp->cinfo.comm.is_decompressor);
-
-	/* Read JPEGTables if it is present */
-	if (TIFFFieldSet(tif,FIELD_JPEGTABLES)) {
-		TIFFjpeg_tables_src(sp, tif);
-		if(TIFFjpeg_read_header(sp,FALSE) != JPEG_HEADER_TABLES_ONLY) {
-			TIFFErrorExt(tif->tif_clientdata, "JPEGSetupDecode", "Bogus JPEGTables field");
-			return (0);
-		}
-	}
-
-	/* Grab parameters that are same for all strips/tiles */
-	sp->photometric = td->td_photometric;
-	switch (sp->photometric) {
-	case PHOTOMETRIC_YCBCR:
-		sp->h_sampling = td->td_ycbcrsubsampling[0];
-		sp->v_sampling = td->td_ycbcrsubsampling[1];
-		break;
-	default:
-		/* TIFF 6.0 forbids subsampling of all other color spaces */
-		sp->h_sampling = 1;
-		sp->v_sampling = 1;
-		break;
-	}
-
-	/* Set up for reading normal data */
-	TIFFjpeg_data_src(sp, tif);
-	tif->tif_postdecode = _TIFFNoPostDecode; /* override byte swapping */
-	return (1);
-}
-
-/*
- * Set up for decoding a strip or tile.
- */
-static int
-JPEGPreDecode(TIFF* tif, tsample_t s)
-{
-	JPEGState *sp = JState(tif);
-	TIFFDirectory *td = &tif->tif_dir;
-	static const char module[] = "JPEGPreDecode";
-	uint32 segment_width, segment_height;
-	int downsampled_output;
-	int ci;
-
-	assert(sp != NULL);
-	assert(sp->cinfo.comm.is_decompressor);
-	/*
-	 * Reset decoder state from any previous strip/tile,
-	 * in case application didn't read the whole strip.
-	 */
-	if (!TIFFjpeg_abort(sp))
-		return (0);
-	/*
-	 * Read the header for this strip/tile.
-	 */
-	if (TIFFjpeg_read_header(sp, TRUE) != JPEG_HEADER_OK)
-		return (0);
-	/*
-	 * Check image parameters and set decompression parameters.
-	 */
-	segment_width = td->td_imagewidth;
-	segment_height = td->td_imagelength - tif->tif_row;
-	if (isTiled(tif)) {
-                segment_width = td->td_tilewidth;
-                segment_height = td->td_tilelength;
-		sp->bytesperline = TIFFTileRowSize(tif);
-	} else {
-		if (segment_height > td->td_rowsperstrip)
-			segment_height = td->td_rowsperstrip;
-		sp->bytesperline = TIFFScanlineSize(tif);
-	}
-	if (td->td_planarconfig == PLANARCONFIG_SEPARATE && s > 0) {
-		/*
-		 * For PC 2, scale down the expected strip/tile size
-		 * to match a downsampled component
-		 */
-		segment_width = TIFFhowmany(segment_width, sp->h_sampling);
-		segment_height = TIFFhowmany(segment_height, sp->v_sampling);
-	}
-	if (sp->cinfo.d.image_width != segment_width ||
-	    sp->cinfo.d.image_height != segment_height) {
-		TIFFWarningExt(tif->tif_clientdata, module,
-                 "Improper JPEG strip/tile size, expected %dx%d, got %dx%d",
-                          segment_width, 
-                          segment_height,
-                          sp->cinfo.d.image_width, 
-                          sp->cinfo.d.image_height);
-	}
-	if (sp->cinfo.d.num_components !=
-	    (td->td_planarconfig == PLANARCONFIG_CONTIG ?
-	     td->td_samplesperpixel : 1)) {
-		TIFFErrorExt(tif->tif_clientdata, module, "Improper JPEG component count");
-		return (0);
-	}
-#ifdef JPEG_LIB_MK1
-	if (12 != td->td_bitspersample && 8 != td->td_bitspersample) {
-			TIFFErrorExt(tif->tif_clientdata, module, "Improper JPEG data precision");
-            return (0);
-	}
-        sp->cinfo.d.data_precision = td->td_bitspersample;
-        sp->cinfo.d.bits_in_jsample = td->td_bitspersample;
-#else
-	if (sp->cinfo.d.data_precision != td->td_bitspersample) {
-			TIFFErrorExt(tif->tif_clientdata, module, "Improper JPEG data precision");
-            return (0);
-	}
-#endif
-	if (td->td_planarconfig == PLANARCONFIG_CONTIG) {
-		/* Component 0 should have expected sampling factors */
-		if (sp->cinfo.d.comp_info[0].h_samp_factor != sp->h_sampling ||
-		    sp->cinfo.d.comp_info[0].v_samp_factor != sp->v_sampling) {
-				TIFFWarningExt(tif->tif_clientdata, module,
-                                    "Improper JPEG sampling factors %d,%d\n"
-                                    "Apparently should be %d,%d.",
-                                    sp->cinfo.d.comp_info[0].h_samp_factor,
-                                    sp->cinfo.d.comp_info[0].v_samp_factor,
-                                    sp->h_sampling, sp->v_sampling);
-
-			    /*
-			     * XXX: Files written by the Intergraph software
-			     * has different sampling factors stored in the
-			     * TIFF tags and in the JPEG structures. We will
-			     * try to deduce Intergraph files by the presense
-			     * of the tag 33918.
-			     */
-			    if (!_TIFFFindFieldInfo(tif, 33918, TIFF_ANY)) {
-					TIFFWarningExt(tif->tif_clientdata, module,
-					"Decompressor will try reading with "
-					"sampling %d,%d.",
-					sp->cinfo.d.comp_info[0].h_samp_factor,
-					sp->cinfo.d.comp_info[0].v_samp_factor);
-
-				    sp->h_sampling = (uint16)
-					sp->cinfo.d.comp_info[0].h_samp_factor;
-				    sp->v_sampling = (uint16)
-					sp->cinfo.d.comp_info[0].v_samp_factor;
-			    }
-		}
-		/* Rest should have sampling factors 1,1 */
-		for (ci = 1; ci < sp->cinfo.d.num_components; ci++) {
-			if (sp->cinfo.d.comp_info[ci].h_samp_factor != 1 ||
-			    sp->cinfo.d.comp_info[ci].v_samp_factor != 1) {
-				TIFFErrorExt(tif->tif_clientdata, module, "Improper JPEG sampling factors");
-				return (0);
-			}
-		}
-	} else {
-		/* PC 2's single component should have sampling factors 1,1 */
-		if (sp->cinfo.d.comp_info[0].h_samp_factor != 1 ||
-		    sp->cinfo.d.comp_info[0].v_samp_factor != 1) {
-			TIFFErrorExt(tif->tif_clientdata, module, "Improper JPEG sampling factors");
-			return (0);
-		}
-	}
-	downsampled_output = FALSE;
-	if (td->td_planarconfig == PLANARCONFIG_CONTIG &&
-	    sp->photometric == PHOTOMETRIC_YCBCR &&
-	    sp->jpegcolormode == JPEGCOLORMODE_RGB) {
-	/* Convert YCbCr to RGB */
-		sp->cinfo.d.jpeg_color_space = JCS_YCbCr;
-		sp->cinfo.d.out_color_space = JCS_RGB;
-	} else {
-			/* Suppress colorspace handling */
-		sp->cinfo.d.jpeg_color_space = JCS_UNKNOWN;
-		sp->cinfo.d.out_color_space = JCS_UNKNOWN;
-		if (td->td_planarconfig == PLANARCONFIG_CONTIG &&
-		    (sp->h_sampling != 1 || sp->v_sampling != 1))
-			downsampled_output = TRUE;
-		/* XXX what about up-sampling? */
-	}
-	if (downsampled_output) {
-		/* Need to use raw-data interface to libjpeg */
-		sp->cinfo.d.raw_data_out = TRUE;
-		tif->tif_decoderow = JPEGDecodeRaw;
-		tif->tif_decodestrip = JPEGDecodeRaw;
-		tif->tif_decodetile = JPEGDecodeRaw;
-	} else {
-		/* Use normal interface to libjpeg */
-		sp->cinfo.d.raw_data_out = FALSE;
-		tif->tif_decoderow = JPEGDecode;
-		tif->tif_decodestrip = JPEGDecode;
-		tif->tif_decodetile = JPEGDecode;
-	}
-	/* Start JPEG decompressor */
-	if (!TIFFjpeg_start_decompress(sp))
-		return (0);
-	/* Allocate downsampled-data buffers if needed */
-	if (downsampled_output) {
-		if (!alloc_downsampled_buffers(tif, sp->cinfo.d.comp_info,
-					       sp->cinfo.d.num_components))
-			return (0);
-		sp->scancount = DCTSIZE;	/* mark buffer empty */
-	}
-	return (1);
-}
-
-/*
- * Decode a chunk of pixels.
- * "Standard" case: returned data is not downsampled.
- */
-/*ARGSUSED*/ static int
-JPEGDecode(TIFF* tif, tidata_t buf, tsize_t cc, tsample_t s)
-{
-    JPEGState *sp = JState(tif);
-    tsize_t nrows;
-    (void) s;
-
-    nrows = cc / sp->bytesperline;
-    if (cc % sp->bytesperline)
-		TIFFWarningExt(tif->tif_clientdata, tif->tif_name, "fractional scanline not read");
-
-    if( nrows > (int) sp->cinfo.d.image_height )
-        nrows = sp->cinfo.d.image_height;
-
-    /* data is expected to be read in multiples of a scanline */
-    if (nrows)
-    {
-        JSAMPROW line_work_buf = NULL;
-
-        /*
-        ** For 6B, only use temporary buffer for 12 bit imagery. 
-        ** For Mk1 always use it. 
-        */
-#if !defined(JPEG_LIB_MK1)        
-        if( sp->cinfo.d.data_precision == 12 )
-#endif
-        {
-            line_work_buf = (JSAMPROW) 
-                _TIFFmalloc(sizeof(short) * sp->cinfo.d.output_width 
-                            * sp->cinfo.d.num_components );
-        }
-
-        do {
-            if( line_work_buf != NULL )
-            {
-                /* 
-                ** In the MK1 case, we aways read into a 16bit buffer, and then
-                ** pack down to 12bit or 8bit.  In 6B case we only read into 16
-                ** bit buffer for 12bit data, which we need to repack. 
-                */
-                if (TIFFjpeg_read_scanlines(sp, &line_work_buf, 1) != 1)
-                    return (0);
-
-                if( sp->cinfo.d.data_precision == 12 )
-                {
-                    int value_pairs = (sp->cinfo.d.output_width 
-                                       * sp->cinfo.d.num_components) / 2;
-                    int iPair;
-
-                    for( iPair = 0; iPair < value_pairs; iPair++ )
-                    {
-                        unsigned char *out_ptr = 
-                            ((unsigned char *) buf) + iPair * 3;
-                        JSAMPLE *in_ptr = line_work_buf + iPair * 2;
-
-                        out_ptr[0] = (in_ptr[0] & 0xff0) >> 4;
-                        out_ptr[1] = ((in_ptr[0] & 0xf) << 4)
-                            | ((in_ptr[1] & 0xf00) >> 8);
-                        out_ptr[2] = ((in_ptr[1] & 0xff) >> 0);
-                    }
-                }
-                else if( sp->cinfo.d.data_precision == 8 )
-                {
-                    int value_count = (sp->cinfo.d.output_width 
-                                       * sp->cinfo.d.num_components);
-                    int iValue;
-
-                    for( iValue = 0; iValue < value_count; iValue++ )
-                    {
-                        ((unsigned char *) buf)[iValue] = 
-                            line_work_buf[iValue] & 0xff;
-                    }
-                }
-            }
-            else
-            {
-                /*
-                ** In the libjpeg6b 8bit case.  We read directly into the 
-                ** TIFF buffer.
-                */
-                JSAMPROW bufptr = (JSAMPROW)buf;
-  
-                if (TIFFjpeg_read_scanlines(sp, &bufptr, 1) != 1)
-                    return (0);
-            }
-
-            ++tif->tif_row;
-            buf += sp->bytesperline;
-            cc -= sp->bytesperline;
-        } while (--nrows > 0);
-
-        if( line_work_buf != NULL )
-            _TIFFfree( line_work_buf );
-    }
-
-    /* Close down the decompressor if we've finished the strip or tile. */
-    return sp->cinfo.d.output_scanline < sp->cinfo.d.output_height
-        || TIFFjpeg_finish_decompress(sp);
-}
-
-/*
- * Decode a chunk of pixels.
- * Returned data is downsampled per sampling factors.
- */
-/*ARGSUSED*/ static int
-JPEGDecodeRaw(TIFF* tif, tidata_t buf, tsize_t cc, tsample_t s)
-{
-    JPEGState *sp = JState(tif);
-    tsize_t nrows;
-    (void) s;
-
-    /* data is expected to be read in multiples of a scanline */
-    if ( (nrows = sp->cinfo.d.image_height) ) {
-        /* Cb,Cr both have sampling factors 1, so this is correct */
-        JDIMENSION clumps_per_line = sp->cinfo.d.comp_info[1].downsampled_width;
-        int samples_per_clump = sp->samplesperclump;
-	
-#ifdef JPEG_LIB_MK1
-        unsigned short* tmpbuf = _TIFFmalloc(sizeof(unsigned short) *
-                                             sp->cinfo.d.output_width *
-                                             sp->cinfo.d.num_components);
-#endif
- 
-        do {
-            jpeg_component_info *compptr;
-            int ci, clumpoffset;
-
-            /* Reload downsampled-data buffer if needed */
-            if (sp->scancount >= DCTSIZE) {
-                int n = sp->cinfo.d.max_v_samp_factor * DCTSIZE;
-                if (TIFFjpeg_read_raw_data(sp, sp->ds_buffer, n)
-                    != n)
-                    return (0);
-                sp->scancount = 0;
-            }
-            /*
-             * Fastest way to unseparate data is to make one pass
-             * over the scanline for each row of each component.
-             */
-            clumpoffset = 0;	/* first sample in clump */
-            for (ci = 0, compptr = sp->cinfo.d.comp_info;
-                 ci < sp->cinfo.d.num_components;
-                 ci++, compptr++) {
-                int hsamp = compptr->h_samp_factor;
-                int vsamp = compptr->v_samp_factor;
-                int ypos;
-
-                for (ypos = 0; ypos < vsamp; ypos++) {
-                    JSAMPLE *inptr = sp->ds_buffer[ci][sp->scancount*vsamp + ypos];
-#ifdef JPEG_LIB_MK1
-                    JSAMPLE *outptr = (JSAMPLE*)tmpbuf + clumpoffset;
-#else
-                    JSAMPLE *outptr = (JSAMPLE*)buf + clumpoffset;
-#endif
-                    JDIMENSION nclump;
-
-                    if (hsamp == 1) {
-                        /* fast path for at least Cb and Cr */
-                        for (nclump = clumps_per_line; nclump-- > 0; ) {
-                            outptr[0] = *inptr++;
-                            outptr += samples_per_clump;
-                        }
-                    } else {
-                        int xpos;
-
-                        /* general case */
-                        for (nclump = clumps_per_line; nclump-- > 0; ) {
-                            for (xpos = 0; xpos < hsamp; xpos++)
-                                outptr[xpos] = *inptr++;
-                            outptr += samples_per_clump;
-                        }
-                    }
-                    clumpoffset += hsamp;
-                }
-            }
-
-#ifdef JPEG_LIB_MK1
-            {
-                if (sp->cinfo.d.data_precision == 8)
-                {
-                    int i=0;
-                    int len = sp->cinfo.d.output_width * sp->cinfo.d.num_components;
-                    for (i=0; i<len; i++)
-                    {
-                        ((unsigned char*)buf)[i] = tmpbuf[i] & 0xff;
-                    }
-                }
-                else
-                {         // 12-bit
-                    int value_pairs = (sp->cinfo.d.output_width
-                                       * sp->cinfo.d.num_components) / 2;
-                    int iPair;
-                    for( iPair = 0; iPair < value_pairs; iPair++ )
-                    {
-                        unsigned char *out_ptr = ((unsigned char *) buf) + iPair * 3;
-                        JSAMPLE *in_ptr = tmpbuf + iPair * 2;
-                        out_ptr[0] = (in_ptr[0] & 0xff0) >> 4;
-                        out_ptr[1] = ((in_ptr[0] & 0xf) << 4)
-                            | ((in_ptr[1] & 0xf00) >> 8);
-                        out_ptr[2] = ((in_ptr[1] & 0xff) >> 0);
-                    }
-                }
-            }
-#endif
-
-            ++sp->scancount;
-            ++tif->tif_row;
-            buf += sp->bytesperline;
-            cc -= sp->bytesperline;
-        } while (--nrows > 0);
-  
-#ifdef JPEG_LIB_MK1
-        _TIFFfree(tmpbuf);
-#endif
-
-    }
-
-    /* Close down the decompressor if done. */
-    return sp->cinfo.d.output_scanline < sp->cinfo.d.output_height
-        || TIFFjpeg_finish_decompress(sp);
-}
-
-
-/*
- * JPEG Encoding.
- */
-
-static void
-unsuppress_quant_table (JPEGState* sp, int tblno)
-{
-	JQUANT_TBL* qtbl;
-
-	if ((qtbl = sp->cinfo.c.quant_tbl_ptrs[tblno]) != NULL)
-		qtbl->sent_table = FALSE;
-}
-
-static void
-unsuppress_huff_table (JPEGState* sp, int tblno)
-{
-	JHUFF_TBL* htbl;
-
-	if ((htbl = sp->cinfo.c.dc_huff_tbl_ptrs[tblno]) != NULL)
-		htbl->sent_table = FALSE;
-	if ((htbl = sp->cinfo.c.ac_huff_tbl_ptrs[tblno]) != NULL)
-		htbl->sent_table = FALSE;
-}
-
-static int
-prepare_JPEGTables(TIFF* tif)
-{
-	JPEGState* sp = JState(tif);
-
-        JPEGInitializeLibJPEG( tif, 0, 0 );
-
-	/* Initialize quant tables for current quality setting */
-	if (!TIFFjpeg_set_quality(sp, sp->jpegquality, FALSE))
-		return (0);
-	/* Mark only the tables we want for output */
-	/* NB: chrominance tables are currently used only with YCbCr */
-	if (!TIFFjpeg_suppress_tables(sp, TRUE))
-		return (0);
-	if (sp->jpegtablesmode & JPEGTABLESMODE_QUANT) {
-		unsuppress_quant_table(sp, 0);
-		if (sp->photometric == PHOTOMETRIC_YCBCR)
-			unsuppress_quant_table(sp, 1);
-	}
-	if (sp->jpegtablesmode & JPEGTABLESMODE_HUFF) {
-		unsuppress_huff_table(sp, 0);
-		if (sp->photometric == PHOTOMETRIC_YCBCR)
-			unsuppress_huff_table(sp, 1);
-	}
-	/* Direct libjpeg output into jpegtables */
-	if (!TIFFjpeg_tables_dest(sp, tif))
-		return (0);
-	/* Emit tables-only datastream */
-	if (!TIFFjpeg_write_tables(sp))
-		return (0);
-
-	return (1);
-}
-
-static int
-JPEGSetupEncode(TIFF* tif)
-{
-	JPEGState* sp = JState(tif);
-	TIFFDirectory *td = &tif->tif_dir;
-	static const char module[] = "JPEGSetupEncode";
-
-        JPEGInitializeLibJPEG( tif, 1, 0 );
-
-	assert(sp != NULL);
-	assert(!sp->cinfo.comm.is_decompressor);
-
-	/*
-	 * Initialize all JPEG parameters to default values.
-	 * Note that jpeg_set_defaults needs legal values for
-	 * in_color_space and input_components.
-	 */
-	sp->cinfo.c.in_color_space = JCS_UNKNOWN;
-	sp->cinfo.c.input_components = 1;
-	if (!TIFFjpeg_set_defaults(sp))
-		return (0);
-	/* Set per-file parameters */
-	sp->photometric = td->td_photometric;
-	switch (sp->photometric) {
-	case PHOTOMETRIC_YCBCR:
-		sp->h_sampling = td->td_ycbcrsubsampling[0];
-		sp->v_sampling = td->td_ycbcrsubsampling[1];
-		/*
-		 * A ReferenceBlackWhite field *must* be present since the
-		 * default value is inappropriate for YCbCr.  Fill in the
-		 * proper value if application didn't set it.
-		 */
-		{
-			float *ref;
-			if (!TIFFGetField(tif, TIFFTAG_REFERENCEBLACKWHITE,
-					  &ref)) {
-				float refbw[6];
-				long top = 1L << td->td_bitspersample;
-				refbw[0] = 0;
-				refbw[1] = (float)(top-1L);
-				refbw[2] = (float)(top>>1);
-				refbw[3] = refbw[1];
-				refbw[4] = refbw[2];
-				refbw[5] = refbw[1];
-				TIFFSetField(tif, TIFFTAG_REFERENCEBLACKWHITE,
-					     refbw);
-			}
-		}
-		break;
-	case PHOTOMETRIC_PALETTE:		/* disallowed by Tech Note */
-	case PHOTOMETRIC_MASK:
-		TIFFErrorExt(tif->tif_clientdata, module,
-			  "PhotometricInterpretation %d not allowed for JPEG",
-			  (int) sp->photometric);
-		return (0);
-	default:
-		/* TIFF 6.0 forbids subsampling of all other color spaces */
-		sp->h_sampling = 1;
-		sp->v_sampling = 1;
-		break;
-	}
-
-	/* Verify miscellaneous parameters */
-
-	/*
-	 * This would need work if libtiff ever supports different
-	 * depths for different components, or if libjpeg ever supports
-	 * run-time selection of depth.  Neither is imminent.
-	 */
-#ifdef JPEG_LIB_MK1
-        /* BITS_IN_JSAMPLE now permits 8 and 12 --- dgilbert */
-	if (td->td_bitspersample != 8 && td->td_bitspersample != 12) 
-#else
-	if (td->td_bitspersample != BITS_IN_JSAMPLE ) 
-#endif
-        {
-		TIFFErrorExt(tif->tif_clientdata, module, "BitsPerSample %d not allowed for JPEG",
-			  (int) td->td_bitspersample);
-		return (0);
-	}
-	sp->cinfo.c.data_precision = td->td_bitspersample;
-#ifdef JPEG_LIB_MK1
-        sp->cinfo.c.bits_in_jsample = td->td_bitspersample;
-#endif
-	if (isTiled(tif)) {
-		if ((td->td_tilelength % (sp->v_sampling * DCTSIZE)) != 0) {
-			TIFFErrorExt(tif->tif_clientdata, module,
-				  "JPEG tile height must be multiple of %d",
-				  sp->v_sampling * DCTSIZE);
-			return (0);
-		}
-		if ((td->td_tilewidth % (sp->h_sampling * DCTSIZE)) != 0) {
-			TIFFErrorExt(tif->tif_clientdata, module,
-				  "JPEG tile width must be multiple of %d",
-				  sp->h_sampling * DCTSIZE);
-			return (0);
-		}
-	} else {
-		if (td->td_rowsperstrip < td->td_imagelength &&
-		    (td->td_rowsperstrip % (sp->v_sampling * DCTSIZE)) != 0) {
-			TIFFErrorExt(tif->tif_clientdata, module,
-				  "RowsPerStrip must be multiple of %d for JPEG",
-				  sp->v_sampling * DCTSIZE);
-			return (0);
-		}
-	}
-
-	/* Create a JPEGTables field if appropriate */
-	if (sp->jpegtablesmode & (JPEGTABLESMODE_QUANT|JPEGTABLESMODE_HUFF)) {
-		if (!prepare_JPEGTables(tif))
-			return (0);
-		/* Mark the field present */
-		/* Can't use TIFFSetField since BEENWRITING is already set! */
-		TIFFSetFieldBit(tif, FIELD_JPEGTABLES);
-		tif->tif_flags |= TIFF_DIRTYDIRECT;
-	} else {
-		/* We do not support application-supplied JPEGTables, */
-		/* so mark the field not present */
-		TIFFClrFieldBit(tif, FIELD_JPEGTABLES);
-	}
-
-	/* Direct libjpeg output to libtiff's output buffer */
-	TIFFjpeg_data_dest(sp, tif);
-
-	return (1);
-}
-
-/*
- * Set encoding state at the start of a strip or tile.
- */
-static int
-JPEGPreEncode(TIFF* tif, tsample_t s)
-{
-	JPEGState *sp = JState(tif);
-	TIFFDirectory *td = &tif->tif_dir;
-	static const char module[] = "JPEGPreEncode";
-	uint32 segment_width, segment_height;
-	int downsampled_input;
-
-	assert(sp != NULL);
-	assert(!sp->cinfo.comm.is_decompressor);
-	/*
-	 * Set encoding parameters for this strip/tile.
-	 */
-	if (isTiled(tif)) {
-		segment_width = td->td_tilewidth;
-		segment_height = td->td_tilelength;
-		sp->bytesperline = TIFFTileRowSize(tif);
-	} else {
-		segment_width = td->td_imagewidth;
-		segment_height = td->td_imagelength - tif->tif_row;
-		if (segment_height > td->td_rowsperstrip)
-			segment_height = td->td_rowsperstrip;
-		sp->bytesperline = TIFFScanlineSize(tif);
-	}
-	if (td->td_planarconfig == PLANARCONFIG_SEPARATE && s > 0) {
-		/* for PC 2, scale down the strip/tile size
-		 * to match a downsampled component
-		 */
-		segment_width = TIFFhowmany(segment_width, sp->h_sampling);
-		segment_height = TIFFhowmany(segment_height, sp->v_sampling);
-	}
-	if (segment_width > 65535 || segment_height > 65535) {
-		TIFFErrorExt(tif->tif_clientdata, module, "Strip/tile too large for JPEG");
-		return (0);
-	}
-	sp->cinfo.c.image_width = segment_width;
-	sp->cinfo.c.image_height = segment_height;
-	downsampled_input = FALSE;
-	if (td->td_planarconfig == PLANARCONFIG_CONTIG) {
-		sp->cinfo.c.input_components = td->td_samplesperpixel;
-		if (sp->photometric == PHOTOMETRIC_YCBCR) {
-			if (sp->jpegcolormode == JPEGCOLORMODE_RGB) {
-				sp->cinfo.c.in_color_space = JCS_RGB;
-			} else {
-				sp->cinfo.c.in_color_space = JCS_YCbCr;
-				if (sp->h_sampling != 1 || sp->v_sampling != 1)
-					downsampled_input = TRUE;
-			}
-			if (!TIFFjpeg_set_colorspace(sp, JCS_YCbCr))
-				return (0);
-			/*
-			 * Set Y sampling factors;
-			 * we assume jpeg_set_colorspace() set the rest to 1
-			 */
-			sp->cinfo.c.comp_info[0].h_samp_factor = sp->h_sampling;
-			sp->cinfo.c.comp_info[0].v_samp_factor = sp->v_sampling;
-		} else {
-			sp->cinfo.c.in_color_space = JCS_UNKNOWN;
-			if (!TIFFjpeg_set_colorspace(sp, JCS_UNKNOWN))
-				return (0);
-			/* jpeg_set_colorspace set all sampling factors to 1 */
-		}
-	} else {
-		sp->cinfo.c.input_components = 1;
-		sp->cinfo.c.in_color_space = JCS_UNKNOWN;
-		if (!TIFFjpeg_set_colorspace(sp, JCS_UNKNOWN))
-			return (0);
-		sp->cinfo.c.comp_info[0].component_id = s;
-		/* jpeg_set_colorspace() set sampling factors to 1 */
-		if (sp->photometric == PHOTOMETRIC_YCBCR && s > 0) {
-			sp->cinfo.c.comp_info[0].quant_tbl_no = 1;
-			sp->cinfo.c.comp_info[0].dc_tbl_no = 1;
-			sp->cinfo.c.comp_info[0].ac_tbl_no = 1;
-		}
-	}
-	/* ensure libjpeg won't write any extraneous markers */
-	sp->cinfo.c.write_JFIF_header = FALSE;
-	sp->cinfo.c.write_Adobe_marker = FALSE;
-	/* set up table handling correctly */
-	if (! (sp->jpegtablesmode & JPEGTABLESMODE_QUANT)) {
-		if (!TIFFjpeg_set_quality(sp, sp->jpegquality, FALSE))
-			return (0);
-		unsuppress_quant_table(sp, 0);
-		unsuppress_quant_table(sp, 1);
-	}
-	if (sp->jpegtablesmode & JPEGTABLESMODE_HUFF)
-		sp->cinfo.c.optimize_coding = FALSE;
-	else
-		sp->cinfo.c.optimize_coding = TRUE;
-	if (downsampled_input) {
-		/* Need to use raw-data interface to libjpeg */
-		sp->cinfo.c.raw_data_in = TRUE;
-		tif->tif_encoderow = JPEGEncodeRaw;
-		tif->tif_encodestrip = JPEGEncodeRaw;
-		tif->tif_encodetile = JPEGEncodeRaw;
-	} else {
-		/* Use normal interface to libjpeg */
-		sp->cinfo.c.raw_data_in = FALSE;
-		tif->tif_encoderow = JPEGEncode;
-		tif->tif_encodestrip = JPEGEncode;
-		tif->tif_encodetile = JPEGEncode;
-	}
-	/* Start JPEG compressor */
-	if (!TIFFjpeg_start_compress(sp, FALSE))
-		return (0);
-	/* Allocate downsampled-data buffers if needed */
-	if (downsampled_input) {
-		if (!alloc_downsampled_buffers(tif, sp->cinfo.c.comp_info,
-					       sp->cinfo.c.num_components))
-			return (0);
-	}
-	sp->scancount = 0;
-
-	return (1);
-}
-
-/*
- * Encode a chunk of pixels.
- * "Standard" case: incoming data is not downsampled.
- */
-static int
-JPEGEncode(TIFF* tif, tidata_t buf, tsize_t cc, tsample_t s)
-{
-	JPEGState *sp = JState(tif);
-	tsize_t nrows;
-	JSAMPROW bufptr[1];
-
-	(void) s;
-	assert(sp != NULL);
-	/* data is expected to be supplied in multiples of a scanline */
-	nrows = cc / sp->bytesperline;
-	if (cc % sp->bytesperline)
-		TIFFWarningExt(tif->tif_clientdata, tif->tif_name, "fractional scanline discarded");
-
-	while (nrows-- > 0) {
-		bufptr[0] = (JSAMPROW) buf;
-		if (TIFFjpeg_write_scanlines(sp, bufptr, 1) != 1)
-			return (0);
-		if (nrows > 0)
-			tif->tif_row++;
-		buf += sp->bytesperline;
-	}
-	return (1);
-}
-
-/*
- * Encode a chunk of pixels.
- * Incoming data is expected to be downsampled per sampling factors.
- */
-static int
-JPEGEncodeRaw(TIFF* tif, tidata_t buf, tsize_t cc, tsample_t s)
-{
-	JPEGState *sp = JState(tif);
-	JSAMPLE* inptr;
-	JSAMPLE* outptr;
-	tsize_t nrows;
-	JDIMENSION clumps_per_line, nclump;
-	int clumpoffset, ci, xpos, ypos;
-	jpeg_component_info* compptr;
-	int samples_per_clump = sp->samplesperclump;
-
-	(void) s;
-	assert(sp != NULL);
-	/* data is expected to be supplied in multiples of a scanline */
-	nrows = cc / sp->bytesperline;
-	if (cc % sp->bytesperline)
-		TIFFWarningExt(tif->tif_clientdata, tif->tif_name, "fractional scanline discarded");
-
-	/* Cb,Cr both have sampling factors 1, so this is correct */
-	clumps_per_line = sp->cinfo.c.comp_info[1].downsampled_width;
-
-	while (nrows-- > 0) {
-		/*
-		 * Fastest way to separate the data is to make one pass
-		 * over the scanline for each row of each component.
-		 */
-		clumpoffset = 0;		/* first sample in clump */
-		for (ci = 0, compptr = sp->cinfo.c.comp_info;
-		     ci < sp->cinfo.c.num_components;
-		     ci++, compptr++) {
-		    int hsamp = compptr->h_samp_factor;
-		    int vsamp = compptr->v_samp_factor;
-		    int padding = (int) (compptr->width_in_blocks * DCTSIZE -
-					 clumps_per_line * hsamp);
-		    for (ypos = 0; ypos < vsamp; ypos++) {
-			inptr = ((JSAMPLE*) buf) + clumpoffset;
-			outptr = sp->ds_buffer[ci][sp->scancount*vsamp + ypos];
-			if (hsamp == 1) {
-			    /* fast path for at least Cb and Cr */
-			    for (nclump = clumps_per_line; nclump-- > 0; ) {
-				*outptr++ = inptr[0];
-				inptr += samples_per_clump;
-			    }
-			} else {
-			    /* general case */
-			    for (nclump = clumps_per_line; nclump-- > 0; ) {
-				for (xpos = 0; xpos < hsamp; xpos++)
-				    *outptr++ = inptr[xpos];
-				inptr += samples_per_clump;
-			    }
-			}
-			/* pad each scanline as needed */
-			for (xpos = 0; xpos < padding; xpos++) {
-			    *outptr = outptr[-1];
-			    outptr++;
-			}
-			clumpoffset += hsamp;
-		    }
-		}
-		sp->scancount++;
-		if (sp->scancount >= DCTSIZE) {
-			int n = sp->cinfo.c.max_v_samp_factor * DCTSIZE;
-			if (TIFFjpeg_write_raw_data(sp, sp->ds_buffer, n) != n)
-				return (0);
-			sp->scancount = 0;
-		}
-		if (nrows > 0)
-			tif->tif_row++;
-		buf += sp->bytesperline;
-	}
-	return (1);
-}
-
-/*
- * Finish up at the end of a strip or tile.
- */
-static int
-JPEGPostEncode(TIFF* tif)
-{
-	JPEGState *sp = JState(tif);
-
-	if (sp->scancount > 0) {
-		/*
-		 * Need to emit a partial bufferload of downsampled data.
-		 * Pad the data vertically.
-		 */
-		int ci, ypos, n;
-		jpeg_component_info* compptr;
-
-		for (ci = 0, compptr = sp->cinfo.c.comp_info;
-		     ci < sp->cinfo.c.num_components;
-		     ci++, compptr++) {
-			int vsamp = compptr->v_samp_factor;
-			tsize_t row_width = compptr->width_in_blocks * DCTSIZE
-				* sizeof(JSAMPLE);
-			for (ypos = sp->scancount * vsamp;
-			     ypos < DCTSIZE * vsamp; ypos++) {
-				_TIFFmemcpy((tdata_t)sp->ds_buffer[ci][ypos],
-					    (tdata_t)sp->ds_buffer[ci][ypos-1],
-					    row_width);
-
-			}
-		}
-		n = sp->cinfo.c.max_v_samp_factor * DCTSIZE;
-		if (TIFFjpeg_write_raw_data(sp, sp->ds_buffer, n) != n)
-			return (0);
-	}
-
-	return (TIFFjpeg_finish_compress(JState(tif)));
-}
-
-static void
-JPEGCleanup(TIFF* tif)
-{
-	JPEGState *sp = JState(tif);
-	
-	assert(sp != 0);
-
-	tif->tif_tagmethods.vgetfield = sp->vgetparent;
-	tif->tif_tagmethods.vsetfield = sp->vsetparent;
-
-	if( sp->cinfo_initialized )
-	    TIFFjpeg_destroy(sp);	/* release libjpeg resources */
-	if (sp->jpegtables)		/* tag value */
-		_TIFFfree(sp->jpegtables);
-	_TIFFfree(tif->tif_data);	/* release local state */
-	tif->tif_data = NULL;
-
-	_TIFFSetDefaultCompressionState(tif);
-}
-
-static int
-JPEGVSetField(TIFF* tif, ttag_t tag, va_list ap)
-{
-	JPEGState* sp = JState(tif);
-	TIFFDirectory* td = &tif->tif_dir;
-	uint32 v32;
-
-	assert(sp != NULL);
-
-	switch (tag) {
-	case TIFFTAG_JPEGTABLES:
-		v32 = va_arg(ap, uint32);
-		if (v32 == 0) {
-			/* XXX */
-			return (0);
-		}
-		_TIFFsetByteArray(&sp->jpegtables, va_arg(ap, void*),
-		    (long) v32);
-		sp->jpegtables_length = v32;
-		TIFFSetFieldBit(tif, FIELD_JPEGTABLES);
-		break;
-	case TIFFTAG_JPEGQUALITY:
-		sp->jpegquality = va_arg(ap, int);
-		return (1);			/* pseudo tag */
-	case TIFFTAG_JPEGCOLORMODE:
-		sp->jpegcolormode = va_arg(ap, int);
-		/*
-		 * Mark whether returned data is up-sampled or not
-		 * so TIFFStripSize and TIFFTileSize return values
-		 * that reflect the true amount of data.
-		 */
-		tif->tif_flags &= ~TIFF_UPSAMPLED;
-		if (td->td_planarconfig == PLANARCONFIG_CONTIG) {
-		    if (td->td_photometric == PHOTOMETRIC_YCBCR &&
-		      sp->jpegcolormode == JPEGCOLORMODE_RGB) {
-			tif->tif_flags |= TIFF_UPSAMPLED;
-		    } else {
-			if (td->td_ycbcrsubsampling[0] != 1 ||
-			    td->td_ycbcrsubsampling[1] != 1)
-			    ; /* XXX what about up-sampling? */
-		    }
-		}
-		/*
-		 * Must recalculate cached tile size
-		 * in case sampling state changed.
-		 */
-		tif->tif_tilesize = isTiled(tif) ? TIFFTileSize(tif) : (tsize_t) -1;
-		return (1);			/* pseudo tag */
-	case TIFFTAG_JPEGTABLESMODE:
-		sp->jpegtablesmode = va_arg(ap, int);
-		return (1);			/* pseudo tag */
-	case TIFFTAG_YCBCRSUBSAMPLING:
-                /* mark the fact that we have a real ycbcrsubsampling! */
-		sp->ycbcrsampling_fetched = 1;
-		return (*sp->vsetparent)(tif, tag, ap);
-	case TIFFTAG_FAXRECVPARAMS:
-		sp->recvparams = va_arg(ap, uint32);
-		break;
-	case TIFFTAG_FAXSUBADDRESS:
-		_TIFFsetString(&sp->subaddress, va_arg(ap, char*));
-		break;
-	case TIFFTAG_FAXRECVTIME:
-		sp->recvtime = va_arg(ap, uint32);
-		break;
-	case TIFFTAG_FAXDCS:
-		_TIFFsetString(&sp->faxdcs, va_arg(ap, char*));
-		break;
-	default:
-		return (*sp->vsetparent)(tif, tag, ap);
-	}
-	TIFFSetFieldBit(tif, _TIFFFieldWithTag(tif, tag)->field_bit);
-	tif->tif_flags |= TIFF_DIRTYDIRECT;
-	return (1);
-}
-
-/*
- * Some JPEG-in-TIFF produces do not emit the YCBCRSUBSAMPLING values in
- * the TIFF tags, but still use non-default (2,2) values within the jpeg
- * data stream itself.  In order for TIFF applications to work properly
- * - for instance to get the strip buffer size right - it is imperative
- * that the subsampling be available before we start reading the image
- * data normally.  This function will attempt to load the first strip in
- * order to get the sampling values from the jpeg data stream.  Various
- * hacks are various places are done to ensure this function gets called
- * before the td_ycbcrsubsampling values are used from the directory structure,
- * including calling TIFFGetField() for the YCBCRSUBSAMPLING field from 
- * TIFFStripSize(), and the printing code in tif_print.c. 
- *
- * Note that JPEGPreDeocode() will produce a fairly loud warning when the
- * discovered sampling does not match the default sampling (2,2) or whatever
- * was actually in the tiff tags. 
- *
- * Problems:
- *  o This code will cause one whole strip/tile of compressed data to be
- *    loaded just to get the tags right, even if the imagery is never read.
- *    It would be more efficient to just load a bit of the header, and
- *    initialize things from that. 
- *
- * See the bug in bugzilla for details:
- *
- * http://bugzilla.remotesensing.org/show_bug.cgi?id=168
- *
- * Frank Warmerdam, July 2002
- */
-
-static void 
-JPEGFixupTestSubsampling( TIFF * tif )
-{
-#ifdef CHECK_JPEG_YCBCR_SUBSAMPLING
-    JPEGState *sp = JState(tif);
-    TIFFDirectory *td = &tif->tif_dir;
-
-    JPEGInitializeLibJPEG( tif, 0, 0 );
-
-    /*
-     * Some JPEG-in-TIFF files don't provide the ycbcrsampling tags, 
-     * and use a sampling schema other than the default 2,2.  To handle
-     * this we actually have to scan the header of a strip or tile of
-     * jpeg data to get the sampling.  
-     */
-    if( !sp->cinfo.comm.is_decompressor 
-        || sp->ycbcrsampling_fetched  
-        || td->td_photometric != PHOTOMETRIC_YCBCR )
-        return;
-
-    sp->ycbcrsampling_fetched = 1;
-    if( TIFFIsTiled( tif ) )
-    {
-        if( !TIFFFillTile( tif, 0 ) )
-			return;
-    }
-    else
-	{
-        if( !TIFFFillStrip( tif, 0 ) )
-            return;
-    }
-
-    TIFFSetField( tif, TIFFTAG_YCBCRSUBSAMPLING, 
-                  (uint16) sp->h_sampling, (uint16) sp->v_sampling );
-#endif /* CHECK_JPEG_YCBCR_SUBSAMPLING */
-}
-
-static int
-JPEGVGetField(TIFF* tif, ttag_t tag, va_list ap)
-{
-	JPEGState* sp = JState(tif);
-
-	assert(sp != NULL);
-
-	switch (tag) {
-		case TIFFTAG_JPEGTABLES:
-			*va_arg(ap, uint32*) = sp->jpegtables_length;
-			*va_arg(ap, void**) = sp->jpegtables;
-			break;
-		case TIFFTAG_JPEGQUALITY:
-			*va_arg(ap, int*) = sp->jpegquality;
-			break;
-		case TIFFTAG_JPEGCOLORMODE:
-			*va_arg(ap, int*) = sp->jpegcolormode;
-			break;
-		case TIFFTAG_JPEGTABLESMODE:
-			*va_arg(ap, int*) = sp->jpegtablesmode;
-			break;
-		case TIFFTAG_YCBCRSUBSAMPLING:
-			JPEGFixupTestSubsampling( tif );
-			return (*sp->vgetparent)(tif, tag, ap);
-			break;
-		case TIFFTAG_FAXRECVPARAMS:
-			*va_arg(ap, uint32*) = sp->recvparams;
-			break;
-		case TIFFTAG_FAXSUBADDRESS:
-			*va_arg(ap, char**) = sp->subaddress;
-			break;
-		case TIFFTAG_FAXRECVTIME:
-			*va_arg(ap, uint32*) = sp->recvtime;
-			break;
-		case TIFFTAG_FAXDCS:
-			*va_arg(ap, char**) = sp->faxdcs;
-			break;
-		default:
-			return (*sp->vgetparent)(tif, tag, ap);
-	}
-	return (1);
-}
-
-static void
-JPEGPrintDir(TIFF* tif, FILE* fd, long flags)
-{
-	JPEGState* sp = JState(tif);
-
-	assert(sp != NULL);
-
-	(void) flags;
-	if (TIFFFieldSet(tif,FIELD_JPEGTABLES))
-		fprintf(fd, "  JPEG Tables: (%lu bytes)\n",
-			(unsigned long) sp->jpegtables_length);
-        if (TIFFFieldSet(tif,FIELD_RECVPARAMS))
-                fprintf(fd, "  Fax Receive Parameters: %08lx\n",
-                   (unsigned long) sp->recvparams);
-        if (TIFFFieldSet(tif,FIELD_SUBADDRESS))
-                fprintf(fd, "  Fax SubAddress: %s\n", sp->subaddress);
-        if (TIFFFieldSet(tif,FIELD_RECVTIME))
-                fprintf(fd, "  Fax Receive Time: %lu secs\n",
-                    (unsigned long) sp->recvtime);
-        if (TIFFFieldSet(tif,FIELD_FAXDCS))
-                fprintf(fd, "  Fax DCS: %s\n", sp->faxdcs);
-}
-
-static uint32
-JPEGDefaultStripSize(TIFF* tif, uint32 s)
-{
-	JPEGState* sp = JState(tif);
-	TIFFDirectory *td = &tif->tif_dir;
-
-	s = (*sp->defsparent)(tif, s);
-	if (s < td->td_imagelength)
-		s = TIFFroundup(s, td->td_ycbcrsubsampling[1] * DCTSIZE);
-	return (s);
-}
-
-static void
-JPEGDefaultTileSize(TIFF* tif, uint32* tw, uint32* th)
-{
-	JPEGState* sp = JState(tif);
-	TIFFDirectory *td = &tif->tif_dir;
-
-	(*sp->deftparent)(tif, tw, th);
-	*tw = TIFFroundup(*tw, td->td_ycbcrsubsampling[0] * DCTSIZE);
-	*th = TIFFroundup(*th, td->td_ycbcrsubsampling[1] * DCTSIZE);
-}
-
-/*
- * The JPEG library initialized used to be done in TIFFInitJPEG(), but
- * now that we allow a TIFF file to be opened in update mode it is necessary
- * to have some way of deciding whether compression or decompression is
- * desired other than looking at tif->tif_mode.  We accomplish this by 
- * examining {TILE/STRIP}BYTECOUNTS to see if there is a non-zero entry.
- * If so, we assume decompression is desired. 
- *
- * This is tricky, because TIFFInitJPEG() is called while the directory is
- * being read, and generally speaking the BYTECOUNTS tag won't have been read
- * at that point.  So we try to defer jpeg library initialization till we
- * do have that tag ... basically any access that might require the compressor
- * or decompressor that occurs after the reading of the directory. 
- *
- * In an ideal world compressors or decompressors would be setup
- * at the point where a single tile or strip was accessed (for read or write)
- * so that stuff like update of missing tiles, or replacement of tiles could
- * be done. However, we aren't trying to crack that nut just yet ...
- *
- * NFW, Feb 3rd, 2003.
- */
-
-static int JPEGInitializeLibJPEG( TIFF * tif, int force_encode, int force_decode )
-{
-    JPEGState* sp = JState(tif);
-    uint32 *byte_counts = NULL;
-    int     data_is_empty = TRUE;
-    int     decompress;
-
-    if( sp->cinfo_initialized )
-        return 1;
-
-    /*
-     * Do we have tile data already?  Make sure we initialize the
-     * the state in decompressor mode if we have tile data, even if we
-     * are not in read-only file access mode. 
-     */
-    if( TIFFIsTiled( tif ) 
-        && TIFFGetField( tif, TIFFTAG_TILEBYTECOUNTS, &byte_counts ) 
-        && byte_counts != NULL )
-    {
-        data_is_empty = byte_counts[0] == 0;
-    }
-    if( !TIFFIsTiled( tif ) 
-        && TIFFGetField( tif, TIFFTAG_STRIPBYTECOUNTS, &byte_counts) 
-        && byte_counts != NULL )
-    {
-        data_is_empty = byte_counts[0] == 0;
-    }
-
-    if( force_decode )
-        decompress = 1;
-    else if( force_encode )
-        decompress = 0;
-    else if( tif->tif_mode == O_RDONLY )
-        decompress = 1;
-    else if( data_is_empty )
-        decompress = 0;
-    else
-        decompress = 1;
-
-    /*
-     * Initialize libjpeg.
-     */
-    if ( decompress ) {
-        if (!TIFFjpeg_create_decompress(sp))
-            return (0);
-
-    } else {
-        if (!TIFFjpeg_create_compress(sp))
-            return (0);
-    }
-
-    sp->cinfo_initialized = TRUE;
-
-    return 1;
-}
-
-int
-TIFFInitJPEG(TIFF* tif, int scheme)
-{
-	JPEGState* sp;
-
-	assert(scheme == COMPRESSION_JPEG);
-
-	/*
-	 * Allocate state block so tag methods have storage to record values.
-	 */
-	tif->tif_data = (tidata_t) _TIFFmalloc(sizeof (JPEGState));
-
-	if (tif->tif_data == NULL) {
-		TIFFErrorExt(tif->tif_clientdata, "TIFFInitJPEG", "No space for JPEG state block");
-		return (0);
-	}
-        _TIFFmemset( tif->tif_data, 0, sizeof(JPEGState));
-
-	sp = JState(tif);
-	sp->tif = tif;				/* back link */
-
-	/*
-	 * Merge codec-specific tag information and override parent get/set
-	 * field methods.
-	 */
-	_TIFFMergeFieldInfo(tif, jpegFieldInfo, N(jpegFieldInfo));
-	sp->vgetparent = tif->tif_tagmethods.vgetfield;
-	tif->tif_tagmethods.vgetfield = JPEGVGetField; /* hook for codec tags */
-	sp->vsetparent = tif->tif_tagmethods.vsetfield;
-	tif->tif_tagmethods.vsetfield = JPEGVSetField; /* hook for codec tags */
-	tif->tif_tagmethods.printdir = JPEGPrintDir;   /* hook for codec tags */
-
-	/* Default values for codec-specific fields */
-	sp->jpegtables = NULL;
-	sp->jpegtables_length = 0;
-	sp->jpegquality = 75;			/* Default IJG quality */
-	sp->jpegcolormode = JPEGCOLORMODE_RAW;
-	sp->jpegtablesmode = JPEGTABLESMODE_QUANT | JPEGTABLESMODE_HUFF;
-
-        sp->recvparams = 0;
-        sp->subaddress = NULL;
-        sp->faxdcs = NULL;
-
-        sp->ycbcrsampling_fetched = 0;
-
-	/*
-	 * Install codec methods.
-	 */
-	tif->tif_setupdecode = JPEGSetupDecode;
-	tif->tif_predecode = JPEGPreDecode;
-	tif->tif_decoderow = JPEGDecode;
-	tif->tif_decodestrip = JPEGDecode;
-	tif->tif_decodetile = JPEGDecode;
-	tif->tif_setupencode = JPEGSetupEncode;
-	tif->tif_preencode = JPEGPreEncode;
-	tif->tif_postencode = JPEGPostEncode;
-	tif->tif_encoderow = JPEGEncode;
-	tif->tif_encodestrip = JPEGEncode;
-	tif->tif_encodetile = JPEGEncode;
-	tif->tif_cleanup = JPEGCleanup;
-	sp->defsparent = tif->tif_defstripsize;
-	tif->tif_defstripsize = JPEGDefaultStripSize;
-	sp->deftparent = tif->tif_deftilesize;
-	tif->tif_deftilesize = JPEGDefaultTileSize;
-	tif->tif_flags |= TIFF_NOBITREV;	/* no bit reversal, please */
-
-        sp->cinfo_initialized = FALSE;
-
-	/*
-        ** Create a JPEGTables field if no directory has yet been created. 
-        ** We do this just to ensure that sufficient space is reserved for
-        ** the JPEGTables field.  It will be properly created the right
-        ** size later. 
-        */
-        if( tif->tif_diroff == 0 )
-        {
-#define SIZE_OF_JPEGTABLES 2000
-            TIFFSetFieldBit(tif, FIELD_JPEGTABLES);
-            sp->jpegtables_length = SIZE_OF_JPEGTABLES;
-            sp->jpegtables = (void *) _TIFFmalloc(sp->jpegtables_length);
-	    _TIFFmemset(sp->jpegtables, 0, SIZE_OF_JPEGTABLES);
-#undef SIZE_OF_JPEGTABLES
-        }
-
-        /*
-         * Mark the TIFFTAG_YCBCRSAMPLES as present even if it is not
-         * see: JPEGFixupTestSubsampling().
-         */
-        TIFFSetFieldBit( tif, FIELD_YCBCRSUBSAMPLING );
-
-	return 1;
-}
-#endif /* JPEG_SUPPORT */
-
-/* vim: set ts=8 sts=8 sw=8 noet: */
diff --git a/src/tiff/tif_luv.c b/src/tiff/tif_luv.c
deleted file mode 100644
index 73f40b8..0000000
--- a/src/tiff/tif_luv.c
+++ /dev/null
@@ -1,1606 +0,0 @@
-/* $Id: tif_luv.c 4825 2006-08-16 13:01:53Z lubia $ */
-
-/*
- * Copyright (c) 1997 Greg Ward Larson
- * Copyright (c) 1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and 
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler, Greg Larson and Silicon Graphics may not be used in any
- * advertising or publicity relating to the software without the specific,
- * prior written permission of Sam Leffler, Greg Larson and Silicon Graphics.
- * 
- * 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 SAM LEFFLER, GREG LARSON OR SILICON GRAPHICS 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.
- */
-
-#include "tiffiop.h"
-#ifdef LOGLUV_SUPPORT
-
-/*
- * TIFF Library.
- * LogLuv compression support for high dynamic range images.
- *
- * Contributed by Greg Larson.
- *
- * LogLuv image support uses the TIFF library to store 16 or 10-bit
- * log luminance values with 8 bits each of u and v or a 14-bit index.
- *
- * The codec can take as input and produce as output 32-bit IEEE float values 
- * as well as 16-bit integer values.  A 16-bit luminance is interpreted
- * as a sign bit followed by a 15-bit integer that is converted
- * to and from a linear magnitude using the transformation:
- *
- *	L = 2^( (Le+.5)/256 - 64 )		# real from 15-bit
- *
- *	Le = floor( 256*(log2(L) + 64) )	# 15-bit from real
- *
- * The actual conversion to world luminance units in candelas per sq. meter
- * requires an additional multiplier, which is stored in the TIFFTAG_STONITS.
- * This value is usually set such that a reasonable exposure comes from
- * clamping decoded luminances above 1 to 1 in the displayed image.
- *
- * The 16-bit values for u and v may be converted to real values by dividing
- * each by 32768.  (This allows for negative values, which aren't useful as
- * far as we know, but are left in case of future improvements in human
- * color vision.)
- *
- * Conversion from (u,v), which is actually the CIE (u',v') system for
- * you color scientists, is accomplished by the following transformation:
- *
- *	u = 4*x / (-2*x + 12*y + 3)
- *	v = 9*y / (-2*x + 12*y + 3)
- *
- *	x = 9*u / (6*u - 16*v + 12)
- *	y = 4*v / (6*u - 16*v + 12)
- *
- * This process is greatly simplified by passing 32-bit IEEE floats
- * for each of three CIE XYZ coordinates.  The codec then takes care
- * of conversion to and from LogLuv, though the application is still
- * responsible for interpreting the TIFFTAG_STONITS calibration factor.
- *
- * By definition, a CIE XYZ vector of [1 1 1] corresponds to a neutral white
- * point of (x,y)=(1/3,1/3).  However, most color systems assume some other
- * white point, such as D65, and an absolute color conversion to XYZ then
- * to another color space with a different white point may introduce an
- * unwanted color cast to the image.  It is often desirable, therefore, to
- * perform a white point conversion that maps the input white to [1 1 1]
- * in XYZ, then record the original white point using the TIFFTAG_WHITEPOINT
- * tag value.  A decoder that demands absolute color calibration may use
- * this white point tag to get back the original colors, but usually it
- * will be ignored and the new white point will be used instead that
- * matches the output color space.
- *
- * Pixel information is compressed into one of two basic encodings, depending
- * on the setting of the compression tag, which is one of COMPRESSION_SGILOG
- * or COMPRESSION_SGILOG24.  For COMPRESSION_SGILOG, greyscale data is
- * stored as:
- *
- *	 1       15
- *	|-+---------------|
- *
- * COMPRESSION_SGILOG color data is stored as:
- *
- *	 1       15           8        8
- *	|-+---------------|--------+--------|
- *	 S       Le           ue       ve
- *
- * For the 24-bit COMPRESSION_SGILOG24 color format, the data is stored as:
- *
- *	     10           14
- *	|----------|--------------|
- *	     Le'          Ce
- *
- * There is no sign bit in the 24-bit case, and the (u,v) chromaticity is
- * encoded as an index for optimal color resolution.  The 10 log bits are
- * defined by the following conversions:
- *
- *	L = 2^((Le'+.5)/64 - 12)		# real from 10-bit
- *
- *	Le' = floor( 64*(log2(L) + 12) )	# 10-bit from real
- *
- * The 10 bits of the smaller format may be converted into the 15 bits of
- * the larger format by multiplying by 4 and adding 13314.  Obviously,
- * a smaller range of magnitudes is covered (about 5 orders of magnitude
- * instead of 38), and the lack of a sign bit means that negative luminances
- * are not allowed.  (Well, they aren't allowed in the real world, either,
- * but they are useful for certain types of image processing.)
- *
- * The desired user format is controlled by the setting the internal
- * pseudo tag TIFFTAG_SGILOGDATAFMT to one of:
- *  SGILOGDATAFMT_FLOAT       = IEEE 32-bit float XYZ values
- *  SGILOGDATAFMT_16BIT	      = 16-bit integer encodings of logL, u and v
- * Raw data i/o is also possible using:
- *  SGILOGDATAFMT_RAW         = 32-bit unsigned integer with encoded pixel
- * In addition, the following decoding is provided for ease of display:
- *  SGILOGDATAFMT_8BIT        = 8-bit default RGB gamma-corrected values
- *
- * For grayscale images, we provide the following data formats:
- *  SGILOGDATAFMT_FLOAT       = IEEE 32-bit float Y values
- *  SGILOGDATAFMT_16BIT       = 16-bit integer w/ encoded luminance
- *  SGILOGDATAFMT_8BIT        = 8-bit gray monitor values
- *
- * Note that the COMPRESSION_SGILOG applies a simple run-length encoding
- * scheme by separating the logL, u and v bytes for each row and applying
- * a PackBits type of compression.  Since the 24-bit encoding is not
- * adaptive, the 32-bit color format takes less space in many cases.
- *
- * Further control is provided over the conversion from higher-resolution
- * formats to final encoded values through the pseudo tag
- * TIFFTAG_SGILOGENCODE:
- *  SGILOGENCODE_NODITHER     = do not dither encoded values
- *  SGILOGENCODE_RANDITHER    = apply random dithering during encoding
- *
- * The default value of this tag is SGILOGENCODE_NODITHER for
- * COMPRESSION_SGILOG to maximize run-length encoding and
- * SGILOGENCODE_RANDITHER for COMPRESSION_SGILOG24 to turn
- * quantization errors into noise.
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <math.h>
-
-/*
- * State block for each open TIFF
- * file using LogLuv compression/decompression.
- */
-typedef	struct logLuvState LogLuvState;
-
-struct logLuvState {
-	int			user_datafmt;	/* user data format */
-	int			encode_meth;	/* encoding method */
-	int			pixel_size;	/* bytes per pixel */
-
-	tidata_t*		tbuf;		/* translation buffer */
-	int			tbuflen;	/* buffer length */
-	void (*tfunc)(LogLuvState*, tidata_t, int);
-
-	TIFFVSetMethod		vgetparent;	/* super-class method */
-	TIFFVSetMethod		vsetparent;	/* super-class method */
-};
-
-#define	DecoderState(tif)	((LogLuvState*) (tif)->tif_data)
-#define	EncoderState(tif)	((LogLuvState*) (tif)->tif_data)
-
-#define SGILOGDATAFMT_UNKNOWN	-1
-
-#define MINRUN		4	/* minimum run length */
-
-/*
- * Decode a string of 16-bit gray pixels.
- */
-static int
-LogL16Decode(TIFF* tif, tidata_t op, tsize_t occ, tsample_t s)
-{
-	LogLuvState* sp = DecoderState(tif);
-	int shft, i, npixels;
-	unsigned char* bp;
-	int16* tp;
-	int16 b;
-	int cc, rc;
-
-	assert(s == 0);
-	assert(sp != NULL);
-
-	npixels = occ / sp->pixel_size;
-
-	if (sp->user_datafmt == SGILOGDATAFMT_16BIT)
-		tp = (int16*) op;
-	else {
-		assert(sp->tbuflen >= npixels);
-		tp = (int16*) sp->tbuf;
-	}
-	_TIFFmemset((tdata_t) tp, 0, npixels*sizeof (tp[0]));
-
-	bp = (unsigned char*) tif->tif_rawcp;
-	cc = tif->tif_rawcc;
-					/* get each byte string */
-	for (shft = 2*8; (shft -= 8) >= 0; ) {
-		for (i = 0; i < npixels && cc > 0; )
-			if (*bp >= 128) {		/* run */
-				rc = *bp++ + (2-128);
-				b = (int16)(*bp++ << shft);
-				cc -= 2;
-				while (rc-- && i < npixels)
-					tp[i++] |= b;
-			} else {			/* non-run */
-				rc = *bp++;		/* nul is noop */
-				while (--cc && rc-- && i < npixels)
-					tp[i++] |= (int16)*bp++ << shft;
-			}
-		if (i != npixels) {
-			TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-		"LogL16Decode: Not enough data at row %d (short %d pixels)",
-			    tif->tif_row, npixels - i);
-			tif->tif_rawcp = (tidata_t) bp;
-			tif->tif_rawcc = cc;
-			return (0);
-		}
-	}
-	(*sp->tfunc)(sp, op, npixels);
-	tif->tif_rawcp = (tidata_t) bp;
-	tif->tif_rawcc = cc;
-	return (1);
-}
-
-/*
- * Decode a string of 24-bit pixels.
- */
-static int
-LogLuvDecode24(TIFF* tif, tidata_t op, tsize_t occ, tsample_t s)
-{
-	LogLuvState* sp = DecoderState(tif);
-	int cc, i, npixels;
-	unsigned char* bp;
-	uint32* tp;
-
-	assert(s == 0);
-	assert(sp != NULL);
-
-	npixels = occ / sp->pixel_size;
-
-	if (sp->user_datafmt == SGILOGDATAFMT_RAW)
-		tp = (uint32 *)op;
-	else {
-		assert(sp->tbuflen >= npixels);
-		tp = (uint32 *) sp->tbuf;
-	}
-					/* copy to array of uint32 */
-	bp = (unsigned char*) tif->tif_rawcp;
-	cc = tif->tif_rawcc;
-	for (i = 0; i < npixels && cc > 0; i++) {
-		tp[i] = bp[0] << 16 | bp[1] << 8 | bp[2];
-		bp += 3;
-		cc -= 3;
-	}
-	tif->tif_rawcp = (tidata_t) bp;
-	tif->tif_rawcc = cc;
-	if (i != npixels) {
-		TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-	    "LogLuvDecode24: Not enough data at row %d (short %d pixels)",
-		    tif->tif_row, npixels - i);
-		return (0);
-	}
-	(*sp->tfunc)(sp, op, npixels);
-	return (1);
-}
-
-/*
- * Decode a string of 32-bit pixels.
- */
-static int
-LogLuvDecode32(TIFF* tif, tidata_t op, tsize_t occ, tsample_t s)
-{
-	LogLuvState* sp;
-	int shft, i, npixels;
-	unsigned char* bp;
-	uint32* tp;
-	uint32 b;
-	int cc, rc;
-
-	assert(s == 0);
-	sp = DecoderState(tif);
-	assert(sp != NULL);
-
-	npixels = occ / sp->pixel_size;
-
-	if (sp->user_datafmt == SGILOGDATAFMT_RAW)
-		tp = (uint32*) op;
-	else {
-		assert(sp->tbuflen >= npixels);
-		tp = (uint32*) sp->tbuf;
-	}
-	_TIFFmemset((tdata_t) tp, 0, npixels*sizeof (tp[0]));
-
-	bp = (unsigned char*) tif->tif_rawcp;
-	cc = tif->tif_rawcc;
-					/* get each byte string */
-	for (shft = 4*8; (shft -= 8) >= 0; ) {
-		for (i = 0; i < npixels && cc > 0; )
-			if (*bp >= 128) {		/* run */
-				rc = *bp++ + (2-128);
-				b = (uint32)*bp++ << shft;
-				cc -= 2;
-				while (rc-- && i < npixels)
-					tp[i++] |= b;
-			} else {			/* non-run */
-				rc = *bp++;		/* nul is noop */
-				while (--cc && rc-- && i < npixels)
-					tp[i++] |= (uint32)*bp++ << shft;
-			}
-		if (i != npixels) {
-			TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-		"LogLuvDecode32: Not enough data at row %d (short %d pixels)",
-			    tif->tif_row, npixels - i);
-			tif->tif_rawcp = (tidata_t) bp;
-			tif->tif_rawcc = cc;
-			return (0);
-		}
-	}
-	(*sp->tfunc)(sp, op, npixels);
-	tif->tif_rawcp = (tidata_t) bp;
-	tif->tif_rawcc = cc;
-	return (1);
-}
-
-/*
- * Decode a strip of pixels.  We break it into rows to
- * maintain synchrony with the encode algorithm, which
- * is row by row.
- */
-static int
-LogLuvDecodeStrip(TIFF* tif, tidata_t bp, tsize_t cc, tsample_t s)
-{
-	tsize_t rowlen = TIFFScanlineSize(tif);
-
-	assert(cc%rowlen == 0);
-	while (cc && (*tif->tif_decoderow)(tif, bp, rowlen, s))
-		bp += rowlen, cc -= rowlen;
-	return (cc == 0);
-}
-
-/*
- * Decode a tile of pixels.  We break it into rows to
- * maintain synchrony with the encode algorithm, which
- * is row by row.
- */
-static int
-LogLuvDecodeTile(TIFF* tif, tidata_t bp, tsize_t cc, tsample_t s)
-{
-	tsize_t rowlen = TIFFTileRowSize(tif);
-
-	assert(cc%rowlen == 0);
-	while (cc && (*tif->tif_decoderow)(tif, bp, rowlen, s))
-		bp += rowlen, cc -= rowlen;
-	return (cc == 0);
-}
-
-/*
- * Encode a row of 16-bit pixels.
- */
-static int
-LogL16Encode(TIFF* tif, tidata_t bp, tsize_t cc, tsample_t s)
-{
-	LogLuvState* sp = EncoderState(tif);
-	int shft, i, j, npixels;
-	tidata_t op;
-	int16* tp;
-	int16 b;
-	int occ, rc=0, mask, beg;
-
-	assert(s == 0);
-	assert(sp != NULL);
-	npixels = cc / sp->pixel_size;
-
-	if (sp->user_datafmt == SGILOGDATAFMT_16BIT)
-		tp = (int16*) bp;
-	else {
-		tp = (int16*) sp->tbuf;
-		assert(sp->tbuflen >= npixels);
-		(*sp->tfunc)(sp, bp, npixels);
-	}
-					/* compress each byte string */
-	op = tif->tif_rawcp;
-	occ = tif->tif_rawdatasize - tif->tif_rawcc;
-	for (shft = 2*8; (shft -= 8) >= 0; )
-		for (i = 0; i < npixels; i += rc) {
-			if (occ < 4) {
-				tif->tif_rawcp = op;
-				tif->tif_rawcc = tif->tif_rawdatasize - occ;
-				if (!TIFFFlushData1(tif))
-					return (-1);
-				op = tif->tif_rawcp;
-				occ = tif->tif_rawdatasize - tif->tif_rawcc;
-			}
-			mask = 0xff << shft;		/* find next run */
-			for (beg = i; beg < npixels; beg += rc) {
-				b = (int16) (tp[beg] & mask);
-				rc = 1;
-				while (rc < 127+2 && beg+rc < npixels &&
-						(tp[beg+rc] & mask) == b)
-					rc++;
-				if (rc >= MINRUN)
-					break;		/* long enough */
-			}
-			if (beg-i > 1 && beg-i < MINRUN) {
-				b = (int16) (tp[i] & mask);/*check short run */
-				j = i+1;
-				while ((tp[j++] & mask) == b)
-                                    if (j == beg) {
-                                        *op++ = (tidataval_t)(128-2+j-i);
-                                        *op++ = (tidataval_t) (b >> shft);
-                                        occ -= 2;
-                                        i = beg;
-                                        break;
-                                    }
-			}
-			while (i < beg) {		/* write out non-run */
-				if ((j = beg-i) > 127) j = 127;
-				if (occ < j+3) {
-                                    tif->tif_rawcp = op;
-                                    tif->tif_rawcc = tif->tif_rawdatasize - occ;
-                                    if (!TIFFFlushData1(tif))
-                                        return (-1);
-                                    op = tif->tif_rawcp;
-                                    occ = tif->tif_rawdatasize - tif->tif_rawcc;
-				}
-				*op++ = (tidataval_t) j; occ--;
-				while (j--) {
-					*op++ = (tidataval_t) (tp[i++] >> shft & 0xff);
-					occ--;
-				}
-			}
-			if (rc >= MINRUN) {		/* write out run */
-				*op++ = (tidataval_t) (128-2+rc);
-				*op++ = (tidataval_t) (tp[beg] >> shft & 0xff);
-				occ -= 2;
-			} else
-				rc = 0;
-		}
-	tif->tif_rawcp = op;
-	tif->tif_rawcc = tif->tif_rawdatasize - occ;
-
-	return (0);
-}
-
-/*
- * Encode a row of 24-bit pixels.
- */
-static int
-LogLuvEncode24(TIFF* tif, tidata_t bp, tsize_t cc, tsample_t s)
-{
-	LogLuvState* sp = EncoderState(tif);
-	int i, npixels, occ;
-	tidata_t op;
-	uint32* tp;
-
-	assert(s == 0);
-	assert(sp != NULL);
-	npixels = cc / sp->pixel_size;
-
-	if (sp->user_datafmt == SGILOGDATAFMT_RAW)
-		tp = (uint32*) bp;
-	else {
-		tp = (uint32*) sp->tbuf;
-		assert(sp->tbuflen >= npixels);
-		(*sp->tfunc)(sp, bp, npixels);
-	}
-					/* write out encoded pixels */
-	op = tif->tif_rawcp;
-	occ = tif->tif_rawdatasize - tif->tif_rawcc;
-	for (i = npixels; i--; ) {
-		if (occ < 3) {
-			tif->tif_rawcp = op;
-			tif->tif_rawcc = tif->tif_rawdatasize - occ;
-			if (!TIFFFlushData1(tif))
-				return (-1);
-			op = tif->tif_rawcp;
-			occ = tif->tif_rawdatasize - tif->tif_rawcc;
-		}
-		*op++ = (tidataval_t)(*tp >> 16);
-		*op++ = (tidataval_t)(*tp >> 8 & 0xff);
-		*op++ = (tidataval_t)(*tp++ & 0xff);
-		occ -= 3;
-	}
-	tif->tif_rawcp = op;
-	tif->tif_rawcc = tif->tif_rawdatasize - occ;
-
-	return (0);
-}
-
-/*
- * Encode a row of 32-bit pixels.
- */
-static int
-LogLuvEncode32(TIFF* tif, tidata_t bp, tsize_t cc, tsample_t s)
-{
-	LogLuvState* sp = EncoderState(tif);
-	int shft, i, j, npixels;
-	tidata_t op;
-	uint32* tp;
-	uint32 b;
-	int occ, rc=0, mask, beg;
-
-	assert(s == 0);
-	assert(sp != NULL);
-
-	npixels = cc / sp->pixel_size;
-
-	if (sp->user_datafmt == SGILOGDATAFMT_RAW)
-		tp = (uint32*) bp;
-	else {
-		tp = (uint32*) sp->tbuf;
-		assert(sp->tbuflen >= npixels);
-		(*sp->tfunc)(sp, bp, npixels);
-	}
-					/* compress each byte string */
-	op = tif->tif_rawcp;
-	occ = tif->tif_rawdatasize - tif->tif_rawcc;
-	for (shft = 4*8; (shft -= 8) >= 0; )
-		for (i = 0; i < npixels; i += rc) {
-			if (occ < 4) {
-				tif->tif_rawcp = op;
-				tif->tif_rawcc = tif->tif_rawdatasize - occ;
-				if (!TIFFFlushData1(tif))
-					return (-1);
-				op = tif->tif_rawcp;
-				occ = tif->tif_rawdatasize - tif->tif_rawcc;
-			}
-			mask = 0xff << shft;		/* find next run */
-			for (beg = i; beg < npixels; beg += rc) {
-				b = tp[beg] & mask;
-				rc = 1;
-				while (rc < 127+2 && beg+rc < npixels &&
-						(tp[beg+rc] & mask) == b)
-					rc++;
-				if (rc >= MINRUN)
-					break;		/* long enough */
-			}
-			if (beg-i > 1 && beg-i < MINRUN) {
-				b = tp[i] & mask;	/* check short run */
-				j = i+1;
-				while ((tp[j++] & mask) == b)
-					if (j == beg) {
-						*op++ = (tidataval_t)(128-2+j-i);
-						*op++ = (tidataval_t)(b >> shft);
-						occ -= 2;
-						i = beg;
-						break;
-					}
-			}
-			while (i < beg) {		/* write out non-run */
-				if ((j = beg-i) > 127) j = 127;
-				if (occ < j+3) {
-					tif->tif_rawcp = op;
-					tif->tif_rawcc = tif->tif_rawdatasize - occ;
-					if (!TIFFFlushData1(tif))
-						return (-1);
-					op = tif->tif_rawcp;
-					occ = tif->tif_rawdatasize - tif->tif_rawcc;
-				}
-				*op++ = (tidataval_t) j; occ--;
-				while (j--) {
-					*op++ = (tidataval_t)(tp[i++] >> shft & 0xff);
-					occ--;
-				}
-			}
-			if (rc >= MINRUN) {		/* write out run */
-				*op++ = (tidataval_t) (128-2+rc);
-				*op++ = (tidataval_t)(tp[beg] >> shft & 0xff);
-				occ -= 2;
-			} else
-				rc = 0;
-		}
-	tif->tif_rawcp = op;
-	tif->tif_rawcc = tif->tif_rawdatasize - occ;
-
-	return (0);
-}
-
-/*
- * Encode a strip of pixels.  We break it into rows to
- * avoid encoding runs across row boundaries.
- */
-static int
-LogLuvEncodeStrip(TIFF* tif, tidata_t bp, tsize_t cc, tsample_t s)
-{
-	tsize_t rowlen = TIFFScanlineSize(tif);
-
-	assert(cc%rowlen == 0);
-	while (cc && (*tif->tif_encoderow)(tif, bp, rowlen, s) == 0)
-		bp += rowlen, cc -= rowlen;
-	return (cc == 0);
-}
-
-/*
- * Encode a tile of pixels.  We break it into rows to
- * avoid encoding runs across row boundaries.
- */
-static int
-LogLuvEncodeTile(TIFF* tif, tidata_t bp, tsize_t cc, tsample_t s)
-{
-	tsize_t rowlen = TIFFTileRowSize(tif);
-
-	assert(cc%rowlen == 0);
-	while (cc && (*tif->tif_encoderow)(tif, bp, rowlen, s) == 0)
-		bp += rowlen, cc -= rowlen;
-	return (cc == 0);
-}
-
-/*
- * Encode/Decode functions for converting to and from user formats.
- */
-
-#include "uvcode.h"
-
-#ifndef UVSCALE
-#define U_NEU		0.210526316
-#define V_NEU		0.473684211
-#define UVSCALE		410.
-#endif
-
-#ifndef	M_LN2
-#define M_LN2		0.69314718055994530942
-#endif
-#ifndef M_PI
-#define M_PI		3.14159265358979323846
-#endif
-#define log2(x)		((1./M_LN2)*log(x))
-#define exp2(x)		exp(M_LN2*(x))
-
-#define itrunc(x,m)	((m)==SGILOGENCODE_NODITHER ? \
-				(int)(x) : \
-				(int)((x) + rand()*(1./RAND_MAX) - .5))
-
-#if !LOGLUV_PUBLIC
-static
-#endif
-double
-LogL16toY(int p16)		/* compute luminance from 16-bit LogL */
-{
-	int	Le = p16 & 0x7fff;
-	double	Y;
-
-	if (!Le)
-		return (0.);
-	Y = exp(M_LN2/256.*(Le+.5) - M_LN2*64.);
-	return (!(p16 & 0x8000) ? Y : -Y);
-}
-
-#if !LOGLUV_PUBLIC
-static
-#endif
-int
-LogL16fromY(double Y, int em)	/* get 16-bit LogL from Y */
-{
-	if (Y >= 1.8371976e19)
-		return (0x7fff);
-	if (Y <= -1.8371976e19)
-		return (0xffff);
-	if (Y > 5.4136769e-20)
-		return itrunc(256.*(log2(Y) + 64.), em);
-	if (Y < -5.4136769e-20)
-		return (~0x7fff | itrunc(256.*(log2(-Y) + 64.), em));
-	return (0);
-}
-
-static void
-L16toY(LogLuvState* sp, tidata_t op, int n)
-{
-	int16* l16 = (int16*) sp->tbuf;
-	float* yp = (float*) op;
-
-	while (n-- > 0)
-		*yp++ = (float)LogL16toY(*l16++);
-}
-
-static void
-L16toGry(LogLuvState* sp, tidata_t op, int n)
-{
-	int16* l16 = (int16*) sp->tbuf;
-	uint8* gp = (uint8*) op;
-
-	while (n-- > 0) {
-		double Y = LogL16toY(*l16++);
-		*gp++ = (uint8) ((Y <= 0.) ? 0 : (Y >= 1.) ? 255 : (int)(256.*sqrt(Y)));
-	}
-}
-
-static void
-L16fromY(LogLuvState* sp, tidata_t op, int n)
-{
-	int16* l16 = (int16*) sp->tbuf;
-	float* yp = (float*) op;
-
-	while (n-- > 0)
-		*l16++ = (int16) (LogL16fromY(*yp++, sp->encode_meth));
-}
-
-#if !LOGLUV_PUBLIC
-static
-#endif
-void
-XYZtoRGB24(float xyz[3], uint8 rgb[3])
-{
-	double	r, g, b;
-					/* assume CCIR-709 primaries */
-	r =  2.690*xyz[0] + -1.276*xyz[1] + -0.414*xyz[2];
-	g = -1.022*xyz[0] +  1.978*xyz[1] +  0.044*xyz[2];
-	b =  0.061*xyz[0] + -0.224*xyz[1] +  1.163*xyz[2];
-					/* assume 2.0 gamma for speed */
-	/* could use integer sqrt approx., but this is probably faster */
-	rgb[0] = (uint8)((r<=0.) ? 0 : (r >= 1.) ? 255 : (int)(256.*sqrt(r)));
-	rgb[1] = (uint8)((g<=0.) ? 0 : (g >= 1.) ? 255 : (int)(256.*sqrt(g)));
-	rgb[2] = (uint8)((b<=0.) ? 0 : (b >= 1.) ? 255 : (int)(256.*sqrt(b)));
-}
-
-#if !LOGLUV_PUBLIC
-static
-#endif
-double
-LogL10toY(int p10)		/* compute luminance from 10-bit LogL */
-{
-	if (p10 == 0)
-		return (0.);
-	return (exp(M_LN2/64.*(p10+.5) - M_LN2*12.));
-}
-
-#if !LOGLUV_PUBLIC
-static
-#endif
-int
-LogL10fromY(double Y, int em)	/* get 10-bit LogL from Y */
-{
-	if (Y >= 15.742)
-		return (0x3ff);
-	else if (Y <= .00024283)
-		return (0);
-	else
-		return itrunc(64.*(log2(Y) + 12.), em);
-}
-
-#define NANGLES		100
-#define uv2ang(u, v)	( (NANGLES*.499999999/M_PI) \
-				* atan2((v)-V_NEU,(u)-U_NEU) + .5*NANGLES )
-
-static int
-oog_encode(double u, double v)		/* encode out-of-gamut chroma */
-{
-	static int	oog_table[NANGLES];
-	static int	initialized = 0;
-	register int	i;
-	
-	if (!initialized) {		/* set up perimeter table */
-		double	eps[NANGLES], ua, va, ang, epsa;
-		int	ui, vi, ustep;
-		for (i = NANGLES; i--; )
-			eps[i] = 2.;
-		for (vi = UV_NVS; vi--; ) {
-			va = UV_VSTART + (vi+.5)*UV_SQSIZ;
-			ustep = uv_row[vi].nus-1;
-			if (vi == UV_NVS-1 || vi == 0 || ustep <= 0)
-				ustep = 1;
-			for (ui = uv_row[vi].nus-1; ui >= 0; ui -= ustep) {
-				ua = uv_row[vi].ustart + (ui+.5)*UV_SQSIZ;
-				ang = uv2ang(ua, va);
-                                i = (int) ang;
-				epsa = fabs(ang - (i+.5));
-				if (epsa < eps[i]) {
-					oog_table[i] = uv_row[vi].ncum + ui;
-					eps[i] = epsa;
-				}
-			}
-		}
-		for (i = NANGLES; i--; )	/* fill any holes */
-			if (eps[i] > 1.5) {
-				int	i1, i2;
-				for (i1 = 1; i1 < NANGLES/2; i1++)
-					if (eps[(i+i1)%NANGLES] < 1.5)
-						break;
-				for (i2 = 1; i2 < NANGLES/2; i2++)
-					if (eps[(i+NANGLES-i2)%NANGLES] < 1.5)
-						break;
-				if (i1 < i2)
-					oog_table[i] =
-						oog_table[(i+i1)%NANGLES];
-				else
-					oog_table[i] =
-						oog_table[(i+NANGLES-i2)%NANGLES];
-			}
-		initialized = 1;
-	}
-	i = (int) uv2ang(u, v);		/* look up hue angle */
-	return (oog_table[i]);
-}
-
-#undef uv2ang
-#undef NANGLES
-
-#if !LOGLUV_PUBLIC
-static
-#endif
-int
-uv_encode(double u, double v, int em)	/* encode (u',v') coordinates */
-{
-	register int	vi, ui;
-
-	if (v < UV_VSTART)
-		return oog_encode(u, v);
-	vi = itrunc((v - UV_VSTART)*(1./UV_SQSIZ), em);
-	if (vi >= UV_NVS)
-		return oog_encode(u, v);
-	if (u < uv_row[vi].ustart)
-		return oog_encode(u, v);
-	ui = itrunc((u - uv_row[vi].ustart)*(1./UV_SQSIZ), em);
-	if (ui >= uv_row[vi].nus)
-		return oog_encode(u, v);
-
-	return (uv_row[vi].ncum + ui);
-}
-
-#if !LOGLUV_PUBLIC
-static
-#endif
-int
-uv_decode(double *up, double *vp, int c)	/* decode (u',v') index */
-{
-	int	upper, lower;
-	register int	ui, vi;
-
-	if (c < 0 || c >= UV_NDIVS)
-		return (-1);
-	lower = 0;				/* binary search */
-	upper = UV_NVS;
-	while (upper - lower > 1) {
-		vi = (lower + upper) >> 1;
-		ui = c - uv_row[vi].ncum;
-		if (ui > 0)
-			lower = vi;
-		else if (ui < 0)
-			upper = vi;
-		else {
-			lower = vi;
-			break;
-		}
-	}
-	vi = lower;
-	ui = c - uv_row[vi].ncum;
-	*up = uv_row[vi].ustart + (ui+.5)*UV_SQSIZ;
-	*vp = UV_VSTART + (vi+.5)*UV_SQSIZ;
-	return (0);
-}
-
-#if !LOGLUV_PUBLIC
-static
-#endif
-void
-LogLuv24toXYZ(uint32 p, float XYZ[3])
-{
-	int	Ce;
-	double	L, u, v, s, x, y;
-					/* decode luminance */
-	L = LogL10toY(p>>14 & 0x3ff);
-	if (L <= 0.) {
-		XYZ[0] = XYZ[1] = XYZ[2] = 0.;
-		return;
-	}
-					/* decode color */
-	Ce = p & 0x3fff;
-	if (uv_decode(&u, &v, Ce) < 0) {
-		u = U_NEU; v = V_NEU;
-	}
-	s = 1./(6.*u - 16.*v + 12.);
-	x = 9.*u * s;
-	y = 4.*v * s;
-					/* convert to XYZ */
-	XYZ[0] = (float)(x/y * L);
-	XYZ[1] = (float)L;
-	XYZ[2] = (float)((1.-x-y)/y * L);
-}
-
-#if !LOGLUV_PUBLIC
-static
-#endif
-uint32
-LogLuv24fromXYZ(float XYZ[3], int em)
-{
-	int	Le, Ce;
-	double	u, v, s;
-					/* encode luminance */
-	Le = LogL10fromY(XYZ[1], em);
-					/* encode color */
-	s = XYZ[0] + 15.*XYZ[1] + 3.*XYZ[2];
-	if (!Le || s <= 0.) {
-		u = U_NEU;
-		v = V_NEU;
-	} else {
-		u = 4.*XYZ[0] / s;
-		v = 9.*XYZ[1] / s;
-	}
-	Ce = uv_encode(u, v, em);
-	if (Ce < 0)			/* never happens */
-		Ce = uv_encode(U_NEU, V_NEU, SGILOGENCODE_NODITHER);
-					/* combine encodings */
-	return (Le << 14 | Ce);
-}
-
-static void
-Luv24toXYZ(LogLuvState* sp, tidata_t op, int n)
-{
-	uint32* luv = (uint32*) sp->tbuf;
-	float* xyz = (float*) op;
-
-	while (n-- > 0) {
-		LogLuv24toXYZ(*luv, xyz);
-		xyz += 3;
-		luv++;
-	}
-}
-
-static void
-Luv24toLuv48(LogLuvState* sp, tidata_t op, int n)
-{
-	uint32* luv = (uint32*) sp->tbuf;
-	int16* luv3 = (int16*) op;
-
-	while (n-- > 0) {
-		double u, v;
-
-		*luv3++ = (int16)((*luv >> 12 & 0xffd) + 13314);
-		if (uv_decode(&u, &v, *luv&0x3fff) < 0) {
-			u = U_NEU;
-			v = V_NEU;
-		}
-		*luv3++ = (int16)(u * (1L<<15));
-		*luv3++ = (int16)(v * (1L<<15));
-		luv++;
-	}
-}
-
-static void
-Luv24toRGB(LogLuvState* sp, tidata_t op, int n)
-{
-	uint32* luv = (uint32*) sp->tbuf;
-	uint8* rgb = (uint8*) op;
-
-	while (n-- > 0) {
-		float xyz[3];
-
-		LogLuv24toXYZ(*luv++, xyz);
-		XYZtoRGB24(xyz, rgb);
-		rgb += 3;
-	}
-}
-
-static void
-Luv24fromXYZ(LogLuvState* sp, tidata_t op, int n)
-{
-	uint32* luv = (uint32*) sp->tbuf;
-	float* xyz = (float*) op;
-
-	while (n-- > 0) {
-		*luv++ = LogLuv24fromXYZ(xyz, sp->encode_meth);
-		xyz += 3;
-	}
-}
-
-static void
-Luv24fromLuv48(LogLuvState* sp, tidata_t op, int n)
-{
-	uint32* luv = (uint32*) sp->tbuf;
-	int16* luv3 = (int16*) op;
-
-	while (n-- > 0) {
-		int Le, Ce;
-
-		if (luv3[0] <= 0)
-			Le = 0;
-		else if (luv3[0] >= (1<<12)+3314)
-			Le = (1<<10) - 1;
-		else if (sp->encode_meth == SGILOGENCODE_NODITHER)
-			Le = (luv3[0]-3314) >> 2;
-		else
-			Le = itrunc(.25*(luv3[0]-3314.), sp->encode_meth);
-
-		Ce = uv_encode((luv3[1]+.5)/(1<<15), (luv3[2]+.5)/(1<<15),
-					sp->encode_meth);
-		if (Ce < 0)	/* never happens */
-			Ce = uv_encode(U_NEU, V_NEU, SGILOGENCODE_NODITHER);
-		*luv++ = (uint32)Le << 14 | Ce;
-		luv3 += 3;
-	}
-}
-
-#if !LOGLUV_PUBLIC
-static
-#endif
-void
-LogLuv32toXYZ(uint32 p, float XYZ[3])
-{
-	double	L, u, v, s, x, y;
-					/* decode luminance */
-	L = LogL16toY((int)p >> 16);
-	if (L <= 0.) {
-		XYZ[0] = XYZ[1] = XYZ[2] = 0.;
-		return;
-	}
-					/* decode color */
-	u = 1./UVSCALE * ((p>>8 & 0xff) + .5);
-	v = 1./UVSCALE * ((p & 0xff) + .5);
-	s = 1./(6.*u - 16.*v + 12.);
-	x = 9.*u * s;
-	y = 4.*v * s;
-					/* convert to XYZ */
-	XYZ[0] = (float)(x/y * L);
-	XYZ[1] = (float)L;
-	XYZ[2] = (float)((1.-x-y)/y * L);
-}
-
-#if !LOGLUV_PUBLIC
-static
-#endif
-uint32
-LogLuv32fromXYZ(float XYZ[3], int em)
-{
-	unsigned int	Le, ue, ve;
-	double	u, v, s;
-					/* encode luminance */
-	Le = (unsigned int)LogL16fromY(XYZ[1], em);
-					/* encode color */
-	s = XYZ[0] + 15.*XYZ[1] + 3.*XYZ[2];
-	if (!Le || s <= 0.) {
-		u = U_NEU;
-		v = V_NEU;
-	} else {
-		u = 4.*XYZ[0] / s;
-		v = 9.*XYZ[1] / s;
-	}
-	if (u <= 0.) ue = 0;
-	else ue = itrunc(UVSCALE*u, em);
-	if (ue > 255) ue = 255;
-	if (v <= 0.) ve = 0;
-	else ve = itrunc(UVSCALE*v, em);
-	if (ve > 255) ve = 255;
-					/* combine encodings */
-	return (Le << 16 | ue << 8 | ve);
-}
-
-static void
-Luv32toXYZ(LogLuvState* sp, tidata_t op, int n)
-{
-	uint32* luv = (uint32*) sp->tbuf;
-	float* xyz = (float*) op;
-
-	while (n-- > 0) {
-		LogLuv32toXYZ(*luv++, xyz);
-		xyz += 3;
-	}
-}
-
-static void
-Luv32toLuv48(LogLuvState* sp, tidata_t op, int n)
-{
-	uint32* luv = (uint32*) sp->tbuf;
-	int16* luv3 = (int16*) op;
-
-	while (n-- > 0) {
-		double u, v;
-
-		*luv3++ = (int16)(*luv >> 16);
-		u = 1./UVSCALE * ((*luv>>8 & 0xff) + .5);
-		v = 1./UVSCALE * ((*luv & 0xff) + .5);
-		*luv3++ = (int16)(u * (1L<<15));
-		*luv3++ = (int16)(v * (1L<<15));
-		luv++;
-	}
-}
-
-static void
-Luv32toRGB(LogLuvState* sp, tidata_t op, int n)
-{
-	uint32* luv = (uint32*) sp->tbuf;
-	uint8* rgb = (uint8*) op;
-
-	while (n-- > 0) {
-		float xyz[3];
-
-		LogLuv32toXYZ(*luv++, xyz);
-		XYZtoRGB24(xyz, rgb);
-		rgb += 3;
-	}
-}
-
-static void
-Luv32fromXYZ(LogLuvState* sp, tidata_t op, int n)
-{
-	uint32* luv = (uint32*) sp->tbuf;
-	float* xyz = (float*) op;
-
-	while (n-- > 0) {
-		*luv++ = LogLuv32fromXYZ(xyz, sp->encode_meth);
-		xyz += 3;
-	}
-}
-
-static void
-Luv32fromLuv48(LogLuvState* sp, tidata_t op, int n)
-{
-	uint32* luv = (uint32*) sp->tbuf;
-	int16* luv3 = (int16*) op;
-
-	if (sp->encode_meth == SGILOGENCODE_NODITHER) {
-		while (n-- > 0) {
-			*luv++ = (uint32)luv3[0] << 16 |
-				(luv3[1]*(uint32)(UVSCALE+.5) >> 7 & 0xff00) |
-				(luv3[2]*(uint32)(UVSCALE+.5) >> 15 & 0xff);
-			luv3 += 3;
-		}
-		return;
-	}
-	while (n-- > 0) {
-		*luv++ = (uint32)luv3[0] << 16 |
-	(itrunc(luv3[1]*(UVSCALE/(1<<15)), sp->encode_meth) << 8 & 0xff00) |
-		(itrunc(luv3[2]*(UVSCALE/(1<<15)), sp->encode_meth) & 0xff);
-		luv3 += 3;
-	}
-}
-
-static void
-_logLuvNop(LogLuvState* sp, tidata_t op, int n)
-{
-	(void) sp; (void) op; (void) n;
-}
-
-static int
-LogL16GuessDataFmt(TIFFDirectory *td)
-{
-#define	PACK(s,b,f)	(((b)<<6)|((s)<<3)|(f))
-	switch (PACK(td->td_samplesperpixel, td->td_bitspersample, td->td_sampleformat)) {
-	case PACK(1, 32, SAMPLEFORMAT_IEEEFP):
-		return (SGILOGDATAFMT_FLOAT);
-	case PACK(1, 16, SAMPLEFORMAT_VOID):
-	case PACK(1, 16, SAMPLEFORMAT_INT):
-	case PACK(1, 16, SAMPLEFORMAT_UINT):
-		return (SGILOGDATAFMT_16BIT);
-	case PACK(1,  8, SAMPLEFORMAT_VOID):
-	case PACK(1,  8, SAMPLEFORMAT_UINT):
-		return (SGILOGDATAFMT_8BIT);
-	}
-#undef PACK
-	return (SGILOGDATAFMT_UNKNOWN);
-}
-
-static uint32
-multiply(size_t m1, size_t m2)
-{
-	uint32	bytes = m1 * m2;
-
-	if (m1 && bytes / m1 != m2)
-		bytes = 0;
-
-	return bytes;
-}
-
-static int
-LogL16InitState(TIFF* tif)
-{
-	TIFFDirectory *td = &tif->tif_dir;
-	LogLuvState* sp = DecoderState(tif);
-	static const char module[] = "LogL16InitState";
-
-	assert(sp != NULL);
-	assert(td->td_photometric == PHOTOMETRIC_LOGL);
-
-	/* for some reason, we can't do this in TIFFInitLogL16 */
-	if (sp->user_datafmt == SGILOGDATAFMT_UNKNOWN)
-		sp->user_datafmt = LogL16GuessDataFmt(td);
-	switch (sp->user_datafmt) {
-	case SGILOGDATAFMT_FLOAT:
-		sp->pixel_size = sizeof (float);
-		break;
-	case SGILOGDATAFMT_16BIT:
-		sp->pixel_size = sizeof (int16);
-		break;
-	case SGILOGDATAFMT_8BIT:
-		sp->pixel_size = sizeof (uint8);
-		break;
-	default:
-		TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-		    "No support for converting user data format to LogL");
-		return (0);
-	}
-	sp->tbuflen = multiply(td->td_imagewidth, td->td_rowsperstrip);
-	if (multiply(sp->tbuflen, sizeof (int16)) == 0 ||
-	    (sp->tbuf = (tidata_t*) _TIFFmalloc(sp->tbuflen * sizeof (int16))) == NULL) {
-		TIFFErrorExt(tif->tif_clientdata, module, "%s: No space for SGILog translation buffer",
-		    tif->tif_name);
-		return (0);
-	}
-	return (1);
-}
-
-static int
-LogLuvGuessDataFmt(TIFFDirectory *td)
-{
-	int guess;
-
-	/*
-	 * If the user didn't tell us their datafmt,
-	 * take our best guess from the bitspersample.
-	 */
-#define	PACK(a,b)	(((a)<<3)|(b))
-	switch (PACK(td->td_bitspersample, td->td_sampleformat)) {
-	case PACK(32, SAMPLEFORMAT_IEEEFP):
-		guess = SGILOGDATAFMT_FLOAT;
-		break;
-	case PACK(32, SAMPLEFORMAT_VOID):
-	case PACK(32, SAMPLEFORMAT_UINT):
-	case PACK(32, SAMPLEFORMAT_INT):
-		guess = SGILOGDATAFMT_RAW;
-		break;
-	case PACK(16, SAMPLEFORMAT_VOID):
-	case PACK(16, SAMPLEFORMAT_INT):
-	case PACK(16, SAMPLEFORMAT_UINT):
-		guess = SGILOGDATAFMT_16BIT;
-		break;
-	case PACK( 8, SAMPLEFORMAT_VOID):
-	case PACK( 8, SAMPLEFORMAT_UINT):
-		guess = SGILOGDATAFMT_8BIT;
-		break;
-	default:
-		guess = SGILOGDATAFMT_UNKNOWN;
-		break;
-#undef PACK
-	}
-	/*
-	 * Double-check samples per pixel.
-	 */
-	switch (td->td_samplesperpixel) {
-	case 1:
-		if (guess != SGILOGDATAFMT_RAW)
-			guess = SGILOGDATAFMT_UNKNOWN;
-		break;
-	case 3:
-		if (guess == SGILOGDATAFMT_RAW)
-			guess = SGILOGDATAFMT_UNKNOWN;
-		break;
-	default:
-		guess = SGILOGDATAFMT_UNKNOWN;
-		break;
-	}
-	return (guess);
-}
-
-static int
-LogLuvInitState(TIFF* tif)
-{
-	TIFFDirectory* td = &tif->tif_dir;
-	LogLuvState* sp = DecoderState(tif);
-	static const char module[] = "LogLuvInitState";
-
-	assert(sp != NULL);
-	assert(td->td_photometric == PHOTOMETRIC_LOGLUV);
-
-	/* for some reason, we can't do this in TIFFInitLogLuv */
-	if (td->td_planarconfig != PLANARCONFIG_CONTIG) {
-		TIFFErrorExt(tif->tif_clientdata, module,
-		    "SGILog compression cannot handle non-contiguous data");
-		return (0);
-	}
-	if (sp->user_datafmt == SGILOGDATAFMT_UNKNOWN)
-		sp->user_datafmt = LogLuvGuessDataFmt(td);
-	switch (sp->user_datafmt) {
-	case SGILOGDATAFMT_FLOAT:
-		sp->pixel_size = 3*sizeof (float);
-		break;
-	case SGILOGDATAFMT_16BIT:
-		sp->pixel_size = 3*sizeof (int16);
-		break;
-	case SGILOGDATAFMT_RAW:
-		sp->pixel_size = sizeof (uint32);
-		break;
-	case SGILOGDATAFMT_8BIT:
-		sp->pixel_size = 3*sizeof (uint8);
-		break;
-	default:
-		TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-		    "No support for converting user data format to LogLuv");
-		return (0);
-	}
-	sp->tbuflen = multiply(td->td_imagewidth, td->td_rowsperstrip);
-	if (multiply(sp->tbuflen, sizeof (uint32)) == 0 ||
-	    (sp->tbuf = (tidata_t*) _TIFFmalloc(sp->tbuflen * sizeof (uint32))) == NULL) {
-		TIFFErrorExt(tif->tif_clientdata, module, "%s: No space for SGILog translation buffer",
-		    tif->tif_name);
-		return (0);
-	}
-	return (1);
-}
-
-static int
-LogLuvSetupDecode(TIFF* tif)
-{
-	LogLuvState* sp = DecoderState(tif);
-	TIFFDirectory* td = &tif->tif_dir;
-
-	tif->tif_postdecode = _TIFFNoPostDecode;
-	switch (td->td_photometric) {
-	case PHOTOMETRIC_LOGLUV:
-		if (!LogLuvInitState(tif))
-			break;
-		if (td->td_compression == COMPRESSION_SGILOG24) {
-			tif->tif_decoderow = LogLuvDecode24;
-			switch (sp->user_datafmt) {
-			case SGILOGDATAFMT_FLOAT:
-				sp->tfunc = Luv24toXYZ;
-				break;
-			case SGILOGDATAFMT_16BIT:
-				sp->tfunc = Luv24toLuv48;
-				break;
-			case SGILOGDATAFMT_8BIT:
-				sp->tfunc = Luv24toRGB;
-				break;
-			}
-		} else {
-			tif->tif_decoderow = LogLuvDecode32;
-			switch (sp->user_datafmt) {
-			case SGILOGDATAFMT_FLOAT:
-				sp->tfunc = Luv32toXYZ;
-				break;
-			case SGILOGDATAFMT_16BIT:
-				sp->tfunc = Luv32toLuv48;
-				break;
-			case SGILOGDATAFMT_8BIT:
-				sp->tfunc = Luv32toRGB;
-				break;
-			}
-		}
-		return (1);
-	case PHOTOMETRIC_LOGL:
-		if (!LogL16InitState(tif))
-			break;
-		tif->tif_decoderow = LogL16Decode;
-		switch (sp->user_datafmt) {
-		case SGILOGDATAFMT_FLOAT:
-			sp->tfunc = L16toY;
-			break;
-		case SGILOGDATAFMT_8BIT:
-			sp->tfunc = L16toGry;
-			break;
-		}
-		return (1);
-	default:
-		TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-    "Inappropriate photometric interpretation %d for SGILog compression; %s",
-		    td->td_photometric, "must be either LogLUV or LogL");
-		break;
-	}
-	return (0);
-}
-
-static int
-LogLuvSetupEncode(TIFF* tif)
-{
-	LogLuvState* sp = EncoderState(tif);
-	TIFFDirectory* td = &tif->tif_dir;
-
-	switch (td->td_photometric) {
-	case PHOTOMETRIC_LOGLUV:
-		if (!LogLuvInitState(tif))
-			break;
-		if (td->td_compression == COMPRESSION_SGILOG24) {
-			tif->tif_encoderow = LogLuvEncode24;
-			switch (sp->user_datafmt) {
-			case SGILOGDATAFMT_FLOAT:
-				sp->tfunc = Luv24fromXYZ;
-				break;
-			case SGILOGDATAFMT_16BIT:
-				sp->tfunc = Luv24fromLuv48;
-				break;
-			case SGILOGDATAFMT_RAW:
-				break;
-			default:
-				goto notsupported;
-			}
-		} else {
-			tif->tif_encoderow = LogLuvEncode32;
-			switch (sp->user_datafmt) {
-			case SGILOGDATAFMT_FLOAT:
-				sp->tfunc = Luv32fromXYZ;
-				break;
-			case SGILOGDATAFMT_16BIT:
-				sp->tfunc = Luv32fromLuv48;
-				break;
-			case SGILOGDATAFMT_RAW:
-				break;
-			default:
-				goto notsupported;
-			}
-		}
-		break;
-	case PHOTOMETRIC_LOGL:
-		if (!LogL16InitState(tif))
-			break;
-		tif->tif_encoderow = LogL16Encode;
-		switch (sp->user_datafmt) {
-		case SGILOGDATAFMT_FLOAT:
-			sp->tfunc = L16fromY;
-			break;
-		case SGILOGDATAFMT_16BIT:
-			break;
-		default:
-			goto notsupported;
-		}
-		break;
-	default:
-		TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-    "Inappropriate photometric interpretation %d for SGILog compression; %s",
-    		    td->td_photometric, "must be either LogLUV or LogL");
-		break;
-	}
-	return (1);
-notsupported:
-	TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-	    "SGILog compression supported only for %s, or raw data",
-	    td->td_photometric == PHOTOMETRIC_LOGL ? "Y, L" : "XYZ, Luv");
-	return (0);
-}
-
-static void
-LogLuvClose(TIFF* tif)
-{
-	TIFFDirectory *td = &tif->tif_dir;
-
-	/*
-	 * For consistency, we always want to write out the same
-	 * bitspersample and sampleformat for our TIFF file,
-	 * regardless of the data format being used by the application.
-	 * Since this routine is called after tags have been set but
-	 * before they have been recorded in the file, we reset them here.
-	 */
-	td->td_samplesperpixel =
-	    (td->td_photometric == PHOTOMETRIC_LOGL) ? 1 : 3;
-	td->td_bitspersample = 16;
-	td->td_sampleformat = SAMPLEFORMAT_INT;
-}
-
-static void
-LogLuvCleanup(TIFF* tif)
-{
-	LogLuvState* sp = (LogLuvState *)tif->tif_data;
-
-	assert(sp != 0);
-
-	tif->tif_tagmethods.vgetfield = sp->vgetparent;
-	tif->tif_tagmethods.vsetfield = sp->vsetparent;
-
-	if (sp->tbuf)
-		_TIFFfree(sp->tbuf);
-	_TIFFfree(sp);
-	tif->tif_data = NULL;
-
-	_TIFFSetDefaultCompressionState(tif);
-}
-
-static int
-LogLuvVSetField(TIFF* tif, ttag_t tag, va_list ap)
-{
-	LogLuvState* sp = DecoderState(tif);
-	int bps, fmt;
-
-	switch (tag) {
-	case TIFFTAG_SGILOGDATAFMT:
-		sp->user_datafmt = va_arg(ap, int);
-		/*
-		 * Tweak the TIFF header so that the rest of libtiff knows what
-		 * size of data will be passed between app and library, and
-		 * assume that the app knows what it is doing and is not
-		 * confused by these header manipulations...
-		 */
-		switch (sp->user_datafmt) {
-		case SGILOGDATAFMT_FLOAT:
-			bps = 32, fmt = SAMPLEFORMAT_IEEEFP;
-			break;
-		case SGILOGDATAFMT_16BIT:
-			bps = 16, fmt = SAMPLEFORMAT_INT;
-			break;
-		case SGILOGDATAFMT_RAW:
-			bps = 32, fmt = SAMPLEFORMAT_UINT;
-			TIFFSetField(tif, TIFFTAG_SAMPLESPERPIXEL, 1);
-			break;
-		case SGILOGDATAFMT_8BIT:
-			bps = 8, fmt = SAMPLEFORMAT_UINT;
-			break;
-		default:
-			TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-			    "Unknown data format %d for LogLuv compression",
-			    sp->user_datafmt);
-			return (0);
-		}
-		TIFFSetField(tif, TIFFTAG_BITSPERSAMPLE, bps);
-		TIFFSetField(tif, TIFFTAG_SAMPLEFORMAT, fmt);
-		/*
-		 * Must recalculate sizes should bits/sample change.
-		 */
-		tif->tif_tilesize = isTiled(tif) ? TIFFTileSize(tif) : (tsize_t) -1;
-		tif->tif_scanlinesize = TIFFScanlineSize(tif);
-		return (1);
-	case TIFFTAG_SGILOGENCODE:
-		sp->encode_meth = va_arg(ap, int);
-		if (sp->encode_meth != SGILOGENCODE_NODITHER &&
-				sp->encode_meth != SGILOGENCODE_RANDITHER) {
-			TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-				"Unknown encoding %d for LogLuv compression",
-				sp->encode_meth);
-			return (0);
-		}
-		return (1);
-	default:
-		return (*sp->vsetparent)(tif, tag, ap);
-	}
-}
-
-static int
-LogLuvVGetField(TIFF* tif, ttag_t tag, va_list ap)
-{
-	LogLuvState *sp = (LogLuvState *)tif->tif_data;
-
-	switch (tag) {
-	case TIFFTAG_SGILOGDATAFMT:
-		*va_arg(ap, int*) = sp->user_datafmt;
-		return (1);
-	default:
-		return (*sp->vgetparent)(tif, tag, ap);
-	}
-}
-
-static const TIFFFieldInfo LogLuvFieldInfo[] = {
-    { TIFFTAG_SGILOGDATAFMT,	  0, 0,	TIFF_SHORT,	FIELD_PSEUDO,
-      TRUE,	FALSE,	"SGILogDataFmt"},
-    { TIFFTAG_SGILOGENCODE,	  0, 0, TIFF_SHORT,	FIELD_PSEUDO,
-      TRUE,	FALSE,	"SGILogEncode"}
-};
-
-int
-TIFFInitSGILog(TIFF* tif, int scheme)
-{
-	static const char module[] = "TIFFInitSGILog";
-	LogLuvState* sp;
-
-	assert(scheme == COMPRESSION_SGILOG24 || scheme == COMPRESSION_SGILOG);
-
-	/*
-	 * Allocate state block so tag methods have storage to record values.
-	 */
-	tif->tif_data = (tidata_t) _TIFFmalloc(sizeof (LogLuvState));
-	if (tif->tif_data == NULL)
-		goto bad;
-	sp = (LogLuvState*) tif->tif_data;
-	_TIFFmemset((tdata_t)sp, 0, sizeof (*sp));
-	sp->user_datafmt = SGILOGDATAFMT_UNKNOWN;
-	sp->encode_meth = (scheme == COMPRESSION_SGILOG24) ?
-				SGILOGENCODE_RANDITHER : SGILOGENCODE_NODITHER;
-	sp->tfunc = _logLuvNop;
-
-	/*
-	 * Install codec methods.
-	 * NB: tif_decoderow & tif_encoderow are filled
-	 *     in at setup time.
-	 */
-	tif->tif_setupdecode = LogLuvSetupDecode;
-	tif->tif_decodestrip = LogLuvDecodeStrip;
-	tif->tif_decodetile = LogLuvDecodeTile;
-	tif->tif_setupencode = LogLuvSetupEncode;
-	tif->tif_encodestrip = LogLuvEncodeStrip;
-	tif->tif_encodetile = LogLuvEncodeTile;
-	tif->tif_close = LogLuvClose;
-	tif->tif_cleanup = LogLuvCleanup;
-
-	/* override SetField so we can handle our private pseudo-tag */
-	_TIFFMergeFieldInfo(tif, LogLuvFieldInfo,
-			    TIFFArrayCount(LogLuvFieldInfo));
-	sp->vgetparent = tif->tif_tagmethods.vgetfield;
-	tif->tif_tagmethods.vgetfield = LogLuvVGetField;   /* hook for codec tags */
-	sp->vsetparent = tif->tif_tagmethods.vsetfield;
-	tif->tif_tagmethods.vsetfield = LogLuvVSetField;   /* hook for codec tags */
-
-	return (1);
-bad:
-	TIFFErrorExt(tif->tif_clientdata, module,
-		     "%s: No space for LogLuv state block", tif->tif_name);
-	return (0);
-}
-#endif /* LOGLUV_SUPPORT */
-
-/* vim: set ts=8 sts=8 sw=8 noet: */
diff --git a/src/tiff/tif_lzw.c b/src/tiff/tif_lzw.c
deleted file mode 100644
index ad525cc..0000000
--- a/src/tiff/tif_lzw.c
+++ /dev/null
@@ -1,1084 +0,0 @@
-/* $Id: tif_lzw.c 4825 2006-08-16 13:01:53Z lubia $ */
-
-/*
- * Copyright (c) 1988-1997 Sam Leffler
- * Copyright (c) 1991-1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and 
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- * 
- * 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 SAM LEFFLER OR SILICON GRAPHICS 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.
- */
-
-#include "tiffiop.h"
-#ifdef LZW_SUPPORT
-/*
- * TIFF Library.
- * Rev 5.0 Lempel-Ziv & Welch Compression Support
- *
- * This code is derived from the compress program whose code is
- * derived from software contributed to Berkeley by James A. Woods,
- * derived from original work by Spencer Thomas and Joseph Orost.
- *
- * The original Berkeley copyright notice appears below in its entirety.
- */
-#include "tif_predict.h"
-
-#include <stdio.h>
-
-/*
- * NB: The 5.0 spec describes a different algorithm than Aldus
- *     implements.  Specifically, Aldus does code length transitions
- *     one code earlier than should be done (for real LZW).
- *     Earlier versions of this library implemented the correct
- *     LZW algorithm, but emitted codes in a bit order opposite
- *     to the TIFF spec.  Thus, to maintain compatibility w/ Aldus
- *     we interpret MSB-LSB ordered codes to be images written w/
- *     old versions of this library, but otherwise adhere to the
- *     Aldus "off by one" algorithm.
- *
- * Future revisions to the TIFF spec are expected to "clarify this issue".
- */
-#define	LZW_COMPAT		/* include backwards compatibility code */
-/*
- * Each strip of data is supposed to be terminated by a CODE_EOI.
- * If the following #define is included, the decoder will also
- * check for end-of-strip w/o seeing this code.  This makes the
- * library more robust, but also slower.
- */
-#define	LZW_CHECKEOS		/* include checks for strips w/o EOI code */
-
-#define MAXCODE(n)	((1L<<(n))-1)
-/*
- * The TIFF spec specifies that encoded bit
- * strings range from 9 to 12 bits.
- */
-#define	BITS_MIN	9		/* start with 9 bits */
-#define	BITS_MAX	12		/* max of 12 bit strings */
-/* predefined codes */
-#define	CODE_CLEAR	256		/* code to clear string table */
-#define	CODE_EOI	257		/* end-of-information code */
-#define CODE_FIRST	258		/* first free code entry */
-#define	CODE_MAX	MAXCODE(BITS_MAX)
-#define	HSIZE		9001L		/* 91% occupancy */
-#define	HSHIFT		(13-8)
-#ifdef LZW_COMPAT
-/* NB: +1024 is for compatibility with old files */
-#define	CSIZE		(MAXCODE(BITS_MAX)+1024L)
-#else
-#define	CSIZE		(MAXCODE(BITS_MAX)+1L)
-#endif
-
-/*
- * State block for each open TIFF file using LZW
- * compression/decompression.  Note that the predictor
- * state block must be first in this data structure.
- */
-typedef	struct {
-	TIFFPredictorState predict;	/* predictor super class */
-
-	unsigned short	nbits;		/* # of bits/code */
-	unsigned short	maxcode;	/* maximum code for lzw_nbits */
-	unsigned short	free_ent;	/* next free entry in hash table */
-	long		nextdata;	/* next bits of i/o */
-	long		nextbits;	/* # of valid bits in lzw_nextdata */
-
-        int             rw_mode;        /* preserve rw_mode from init */
-} LZWBaseState;
-
-#define	lzw_nbits	base.nbits
-#define	lzw_maxcode	base.maxcode
-#define	lzw_free_ent	base.free_ent
-#define	lzw_nextdata	base.nextdata
-#define	lzw_nextbits	base.nextbits
-
-/*
- * Encoding-specific state.
- */
-typedef uint16 hcode_t;			/* codes fit in 16 bits */
-typedef struct {
-	long	hash;
-	hcode_t	code;
-} hash_t;
-
-/*
- * Decoding-specific state.
- */
-typedef struct code_ent {
-	struct code_ent *next;
-	unsigned short	length;		/* string len, including this token */
-	unsigned char	value;		/* data value */
-	unsigned char	firstchar;	/* first token of string */
-} code_t;
-
-typedef	int (*decodeFunc)(TIFF*, tidata_t, tsize_t, tsample_t);
-
-typedef struct {
-	LZWBaseState base;
-
-	/* Decoding specific data */
-	long	dec_nbitsmask;		/* lzw_nbits 1 bits, right adjusted */
-	long	dec_restart;		/* restart count */
-#ifdef LZW_CHECKEOS
-	long	dec_bitsleft;		/* available bits in raw data */
-#endif
-	decodeFunc dec_decode;		/* regular or backwards compatible */
-	code_t*	dec_codep;		/* current recognized code */
-	code_t*	dec_oldcodep;		/* previously recognized code */
-	code_t*	dec_free_entp;		/* next free entry */
-	code_t*	dec_maxcodep;		/* max available entry */
-	code_t*	dec_codetab;		/* kept separate for small machines */
-
-	/* Encoding specific data */
-	int	enc_oldcode;		/* last code encountered */
-	long	enc_checkpoint;		/* point at which to clear table */
-#define CHECK_GAP	10000		/* enc_ratio check interval */
-	long	enc_ratio;		/* current compression ratio */
-	long	enc_incount;		/* (input) data bytes encoded */
-	long	enc_outcount;		/* encoded (output) bytes */
-	tidata_t enc_rawlimit;		/* bound on tif_rawdata buffer */
-	hash_t*	enc_hashtab;		/* kept separate for small machines */
-} LZWCodecState;
-
-#define	LZWState(tif)		((LZWBaseState*) (tif)->tif_data)
-#define	DecoderState(tif)	((LZWCodecState*) LZWState(tif))
-#define	EncoderState(tif)	((LZWCodecState*) LZWState(tif))
-
-static	int LZWDecode(TIFF*, tidata_t, tsize_t, tsample_t);
-#ifdef LZW_COMPAT
-static	int LZWDecodeCompat(TIFF*, tidata_t, tsize_t, tsample_t);
-#endif
-static  void cl_hash(LZWCodecState*);
-
-/*
- * LZW Decoder.
- */
-
-#ifdef LZW_CHECKEOS
-/*
- * This check shouldn't be necessary because each
- * strip is suppose to be terminated with CODE_EOI.
- */
-#define	NextCode(_tif, _sp, _bp, _code, _get) {				\
-	if ((_sp)->dec_bitsleft < nbits) {				\
-		TIFFWarningExt(_tif->tif_clientdata, _tif->tif_name,				\
-		    "LZWDecode: Strip %d not terminated with EOI code", \
-		    _tif->tif_curstrip);				\
-		_code = CODE_EOI;					\
-	} else {							\
-		_get(_sp,_bp,_code);					\
-		(_sp)->dec_bitsleft -= nbits;				\
-	}								\
-}
-#else
-#define	NextCode(tif, sp, bp, code, get) get(sp, bp, code)
-#endif
-
-static int
-LZWSetupDecode(TIFF* tif)
-{
-	LZWCodecState* sp = DecoderState(tif);
-	static const char module[] = " LZWSetupDecode";
-	int code;
-
-        if( sp == NULL )
-        {
-            /*
-             * Allocate state block so tag methods have storage to record 
-			 * values.
-             */
-            tif->tif_data = (tidata_t) _TIFFmalloc(sizeof(LZWCodecState));
-            if (tif->tif_data == NULL)
-            {
-				TIFFErrorExt(tif->tif_clientdata, "LZWPreDecode", "No space for LZW state block");
-                return (0);
-            }
-
-            DecoderState(tif)->dec_codetab = NULL;
-            DecoderState(tif)->dec_decode = NULL;
-            
-            /*
-             * Setup predictor setup.
-             */
-            (void) TIFFPredictorInit(tif);
-
-            sp = DecoderState(tif);
-        }
-            
-	assert(sp != NULL);
-
-	if (sp->dec_codetab == NULL) {
-		sp->dec_codetab = (code_t*)_TIFFmalloc(CSIZE*sizeof (code_t));
-		if (sp->dec_codetab == NULL) {
-			TIFFErrorExt(tif->tif_clientdata, module, "No space for LZW code table");
-			return (0);
-		}
-		/*
-		 * Pre-load the table.
-		 */
-                code = 255;
-                do {
-                    sp->dec_codetab[code].value = code;
-                    sp->dec_codetab[code].firstchar = code;
-                    sp->dec_codetab[code].length = 1;
-                    sp->dec_codetab[code].next = NULL;
-                } while (code--);
-	}
-	return (1);
-}
-
-/*
- * Setup state for decoding a strip.
- */
-static int
-LZWPreDecode(TIFF* tif, tsample_t s)
-{
-	LZWCodecState *sp = DecoderState(tif);
-
-	(void) s;
-	assert(sp != NULL);
-	/*
-	 * Check for old bit-reversed codes.
-	 */
-	if (tif->tif_rawdata[0] == 0 && (tif->tif_rawdata[1] & 0x1)) {
-#ifdef LZW_COMPAT
-		if (!sp->dec_decode) {
-			TIFFWarningExt(tif->tif_clientdata, tif->tif_name,
-			    "Old-style LZW codes, convert file");
-			/*
-			 * Override default decoding methods with
-			 * ones that deal with the old coding.
-			 * Otherwise the predictor versions set
-			 * above will call the compatibility routines
-			 * through the dec_decode method.
-			 */
-			tif->tif_decoderow = LZWDecodeCompat;
-			tif->tif_decodestrip = LZWDecodeCompat;
-			tif->tif_decodetile = LZWDecodeCompat;
-			/*
-			 * If doing horizontal differencing, must
-			 * re-setup the predictor logic since we
-			 * switched the basic decoder methods...
-			 */
-			(*tif->tif_setupdecode)(tif);
-			sp->dec_decode = LZWDecodeCompat;
-		}
-		sp->lzw_maxcode = MAXCODE(BITS_MIN);
-#else /* !LZW_COMPAT */
-		if (!sp->dec_decode) {
-			TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-			    "Old-style LZW codes not supported");
-			sp->dec_decode = LZWDecode;
-		}
-		return (0);
-#endif/* !LZW_COMPAT */
-	} else {
-		sp->lzw_maxcode = MAXCODE(BITS_MIN)-1;
-		sp->dec_decode = LZWDecode;
-	}
-	sp->lzw_nbits = BITS_MIN;
-	sp->lzw_nextbits = 0;
-	sp->lzw_nextdata = 0;
-
-	sp->dec_restart = 0;
-	sp->dec_nbitsmask = MAXCODE(BITS_MIN);
-#ifdef LZW_CHECKEOS
-	sp->dec_bitsleft = tif->tif_rawcc << 3;
-#endif
-	sp->dec_free_entp = sp->dec_codetab + CODE_FIRST;
-	/*
-	 * Zero entries that are not yet filled in.  We do
-	 * this to guard against bogus input data that causes
-	 * us to index into undefined entries.  If you can
-	 * come up with a way to safely bounds-check input codes
-	 * while decoding then you can remove this operation.
-	 */
-	_TIFFmemset(sp->dec_free_entp, 0, (CSIZE-CODE_FIRST)*sizeof (code_t));
-	sp->dec_oldcodep = &sp->dec_codetab[-1];
-	sp->dec_maxcodep = &sp->dec_codetab[sp->dec_nbitsmask-1];
-	return (1);
-}
-
-/*
- * Decode a "hunk of data".
- */
-#define	GetNextCode(sp, bp, code) {				\
-	nextdata = (nextdata<<8) | *(bp)++;			\
-	nextbits += 8;						\
-	if (nextbits < nbits) {					\
-		nextdata = (nextdata<<8) | *(bp)++;		\
-		nextbits += 8;					\
-	}							\
-	code = (hcode_t)((nextdata >> (nextbits-nbits)) & nbitsmask);	\
-	nextbits -= nbits;					\
-}
-
-static void
-codeLoop(TIFF* tif)
-{
-	TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-	    "LZWDecode: Bogus encoding, loop in the code table; scanline %d",
-	    tif->tif_row);
-}
-
-static int
-LZWDecode(TIFF* tif, tidata_t op0, tsize_t occ0, tsample_t s)
-{
-	LZWCodecState *sp = DecoderState(tif);
-	char *op = (char*) op0;
-	long occ = (long) occ0;
-	char *tp;
-	unsigned char *bp;
-	hcode_t code;
-	int len;
-	long nbits, nextbits, nextdata, nbitsmask;
-	code_t *codep, *free_entp, *maxcodep, *oldcodep;
-
-	(void) s;
-	assert(sp != NULL);
-	/*
-	 * Restart interrupted output operation.
-	 */
-	if (sp->dec_restart) {
-		long residue;
-
-		codep = sp->dec_codep;
-		residue = codep->length - sp->dec_restart;
-		if (residue > occ) {
-			/*
-			 * Residue from previous decode is sufficient
-			 * to satisfy decode request.  Skip to the
-			 * start of the decoded string, place decoded
-			 * values in the output buffer, and return.
-			 */
-			sp->dec_restart += occ;
-			do {
-				codep = codep->next;
-			} while (--residue > occ && codep);
-			if (codep) {
-				tp = op + occ;
-				do {
-					*--tp = codep->value;
-					codep = codep->next;
-				} while (--occ && codep);
-			}
-			return (1);
-		}
-		/*
-		 * Residue satisfies only part of the decode request.
-		 */
-		op += residue, occ -= residue;
-		tp = op;
-		do {
-			int t;
-			--tp;
-			t = codep->value;
-			codep = codep->next;
-			*tp = t;
-		} while (--residue && codep);
-		sp->dec_restart = 0;
-	}
-
-	bp = (unsigned char *)tif->tif_rawcp;
-	nbits = sp->lzw_nbits;
-	nextdata = sp->lzw_nextdata;
-	nextbits = sp->lzw_nextbits;
-	nbitsmask = sp->dec_nbitsmask;
-	oldcodep = sp->dec_oldcodep;
-	free_entp = sp->dec_free_entp;
-	maxcodep = sp->dec_maxcodep;
-
-	while (occ > 0) {
-		NextCode(tif, sp, bp, code, GetNextCode);
-		if (code == CODE_EOI)
-			break;
-		if (code == CODE_CLEAR) {
-			free_entp = sp->dec_codetab + CODE_FIRST;
-			nbits = BITS_MIN;
-			nbitsmask = MAXCODE(BITS_MIN);
-			maxcodep = sp->dec_codetab + nbitsmask-1;
-			NextCode(tif, sp, bp, code, GetNextCode);
-			if (code == CODE_EOI)
-				break;
-			*op++ = (char)code, occ--;
-			oldcodep = sp->dec_codetab + code;
-			continue;
-		}
-		codep = sp->dec_codetab + code;
-
-		/*
-	 	 * Add the new entry to the code table.
-	 	 */
-		if (free_entp < &sp->dec_codetab[0] ||
-			free_entp >= &sp->dec_codetab[CSIZE]) {
-			TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-			"LZWDecode: Corrupted LZW table at scanline %d",
-			tif->tif_row);
-			return (0);
-		}
-
-		free_entp->next = oldcodep;
-		if (free_entp->next < &sp->dec_codetab[0] ||
-			free_entp->next >= &sp->dec_codetab[CSIZE]) {
-			TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-			"LZWDecode: Corrupted LZW table at scanline %d",
-			tif->tif_row);
-			return (0);
-		}
-		free_entp->firstchar = free_entp->next->firstchar;
-		free_entp->length = free_entp->next->length+1;
-		free_entp->value = (codep < free_entp) ?
-		    codep->firstchar : free_entp->firstchar;
-		if (++free_entp > maxcodep) {
-			if (++nbits > BITS_MAX)		/* should not happen */
-				nbits = BITS_MAX;
-			nbitsmask = MAXCODE(nbits);
-			maxcodep = sp->dec_codetab + nbitsmask-1;
-		}
-		oldcodep = codep;
-		if (code >= 256) {
-			/*
-		 	 * Code maps to a string, copy string
-			 * value to output (written in reverse).
-		 	 */
-			if(codep->length == 0) {
-				TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-	    		    "LZWDecode: Wrong length of decoded string: "
-			    "data probably corrupted at scanline %d",
-			    tif->tif_row);	
-			    return (0);
-			}
-			if (codep->length > occ) {
-				/*
-				 * String is too long for decode buffer,
-				 * locate portion that will fit, copy to
-				 * the decode buffer, and setup restart
-				 * logic for the next decoding call.
-				 */
-				sp->dec_codep = codep;
-				do {
-					codep = codep->next;
-				} while (codep && codep->length > occ);
-				if (codep) {
-					sp->dec_restart = occ;
-					tp = op + occ;
-					do  {
-						*--tp = codep->value;
-						codep = codep->next;
-					}  while (--occ && codep);
-					if (codep)
-						codeLoop(tif);
-				}
-				break;
-			}
-			len = codep->length;
-			tp = op + len;
-			do {
-				int t;
-				--tp;
-				t = codep->value;
-				codep = codep->next;
-				*tp = t;
-			} while (codep && tp > op);
-			if (codep) {
-			    codeLoop(tif);
-			    break;
-			}
-			op += len, occ -= len;
-		} else
-			*op++ = (char)code, occ--;
-	}
-
-	tif->tif_rawcp = (tidata_t) bp;
-	sp->lzw_nbits = (unsigned short) nbits;
-	sp->lzw_nextdata = nextdata;
-	sp->lzw_nextbits = nextbits;
-	sp->dec_nbitsmask = nbitsmask;
-	sp->dec_oldcodep = oldcodep;
-	sp->dec_free_entp = free_entp;
-	sp->dec_maxcodep = maxcodep;
-
-	if (occ > 0) {
-		TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-		"LZWDecode: Not enough data at scanline %d (short %d bytes)",
-		    tif->tif_row, occ);
-		return (0);
-	}
-	return (1);
-}
-
-#ifdef LZW_COMPAT
-/*
- * Decode a "hunk of data" for old images.
- */
-#define	GetNextCodeCompat(sp, bp, code) {			\
-	nextdata |= (unsigned long) *(bp)++ << nextbits;	\
-	nextbits += 8;						\
-	if (nextbits < nbits) {					\
-		nextdata |= (unsigned long) *(bp)++ << nextbits;\
-		nextbits += 8;					\
-	}							\
-	code = (hcode_t)(nextdata & nbitsmask);			\
-	nextdata >>= nbits;					\
-	nextbits -= nbits;					\
-}
-
-static int
-LZWDecodeCompat(TIFF* tif, tidata_t op0, tsize_t occ0, tsample_t s)
-{
-	LZWCodecState *sp = DecoderState(tif);
-	char *op = (char*) op0;
-	long occ = (long) occ0;
-	char *tp;
-	unsigned char *bp;
-	int code, nbits;
-	long nextbits, nextdata, nbitsmask;
-	code_t *codep, *free_entp, *maxcodep, *oldcodep;
-
-	(void) s;
-	assert(sp != NULL);
-	/*
-	 * Restart interrupted output operation.
-	 */
-	if (sp->dec_restart) {
-		long residue;
-
-		codep = sp->dec_codep;
-		residue = codep->length - sp->dec_restart;
-		if (residue > occ) {
-			/*
-			 * Residue from previous decode is sufficient
-			 * to satisfy decode request.  Skip to the
-			 * start of the decoded string, place decoded
-			 * values in the output buffer, and return.
-			 */
-			sp->dec_restart += occ;
-			do {
-				codep = codep->next;
-			} while (--residue > occ);
-			tp = op + occ;
-			do {
-				*--tp = codep->value;
-				codep = codep->next;
-			} while (--occ);
-			return (1);
-		}
-		/*
-		 * Residue satisfies only part of the decode request.
-		 */
-		op += residue, occ -= residue;
-		tp = op;
-		do {
-			*--tp = codep->value;
-			codep = codep->next;
-		} while (--residue);
-		sp->dec_restart = 0;
-	}
-
-	bp = (unsigned char *)tif->tif_rawcp;
-	nbits = sp->lzw_nbits;
-	nextdata = sp->lzw_nextdata;
-	nextbits = sp->lzw_nextbits;
-	nbitsmask = sp->dec_nbitsmask;
-	oldcodep = sp->dec_oldcodep;
-	free_entp = sp->dec_free_entp;
-	maxcodep = sp->dec_maxcodep;
-
-	while (occ > 0) {
-		NextCode(tif, sp, bp, code, GetNextCodeCompat);
-		if (code == CODE_EOI)
-			break;
-		if (code == CODE_CLEAR) {
-			free_entp = sp->dec_codetab + CODE_FIRST;
-			nbits = BITS_MIN;
-			nbitsmask = MAXCODE(BITS_MIN);
-			maxcodep = sp->dec_codetab + nbitsmask;
-			NextCode(tif, sp, bp, code, GetNextCodeCompat);
-			if (code == CODE_EOI)
-				break;
-			*op++ = code, occ--;
-			oldcodep = sp->dec_codetab + code;
-			continue;
-		}
-		codep = sp->dec_codetab + code;
-
-		/*
-	 	 * Add the new entry to the code table.
-	 	 */
-		if (free_entp < &sp->dec_codetab[0] ||
-			free_entp >= &sp->dec_codetab[CSIZE]) {
-			TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-			"LZWDecodeCompat: Corrupted LZW table at scanline %d",
-			tif->tif_row);
-			return (0);
-		}
-
-		free_entp->next = oldcodep;
-		if (free_entp->next < &sp->dec_codetab[0] ||
-			free_entp->next >= &sp->dec_codetab[CSIZE]) {
-			TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-			"LZWDecodeCompat: Corrupted LZW table at scanline %d",
-			tif->tif_row);
-			return (0);
-		}
-		free_entp->firstchar = free_entp->next->firstchar;
-		free_entp->length = free_entp->next->length+1;
-		free_entp->value = (codep < free_entp) ?
-		    codep->firstchar : free_entp->firstchar;
-		if (++free_entp > maxcodep) {
-			if (++nbits > BITS_MAX)		/* should not happen */
-				nbits = BITS_MAX;
-			nbitsmask = MAXCODE(nbits);
-			maxcodep = sp->dec_codetab + nbitsmask;
-		}
-		oldcodep = codep;
-		if (code >= 256) {
-			/*
-		 	 * Code maps to a string, copy string
-			 * value to output (written in reverse).
-		 	 */
-			if(codep->length == 0) {
-				TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-	    		    "LZWDecodeCompat: Wrong length of decoded "
-			    "string: data probably corrupted at scanline %d",
-			    tif->tif_row);	
-			    return (0);
-			}
-			if (codep->length > occ) {
-				/*
-				 * String is too long for decode buffer,
-				 * locate portion that will fit, copy to
-				 * the decode buffer, and setup restart
-				 * logic for the next decoding call.
-				 */
-				sp->dec_codep = codep;
-				do {
-					codep = codep->next;
-				} while (codep->length > occ);
-				sp->dec_restart = occ;
-				tp = op + occ;
-				do  {
-					*--tp = codep->value;
-					codep = codep->next;
-				}  while (--occ);
-				break;
-			}
-			op += codep->length, occ -= codep->length;
-			tp = op;
-			do {
-				*--tp = codep->value;
-			} while( (codep = codep->next) != NULL);
-		} else
-			*op++ = code, occ--;
-	}
-
-	tif->tif_rawcp = (tidata_t) bp;
-	sp->lzw_nbits = nbits;
-	sp->lzw_nextdata = nextdata;
-	sp->lzw_nextbits = nextbits;
-	sp->dec_nbitsmask = nbitsmask;
-	sp->dec_oldcodep = oldcodep;
-	sp->dec_free_entp = free_entp;
-	sp->dec_maxcodep = maxcodep;
-
-	if (occ > 0) {
-		TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-	    "LZWDecodeCompat: Not enough data at scanline %d (short %d bytes)",
-		    tif->tif_row, occ);
-		return (0);
-	}
-	return (1);
-}
-#endif /* LZW_COMPAT */
-
-/*
- * LZW Encoding.
- */
-
-static int
-LZWSetupEncode(TIFF* tif)
-{
-	LZWCodecState* sp = EncoderState(tif);
-	static const char module[] = "LZWSetupEncode";
-
-	assert(sp != NULL);
-	sp->enc_hashtab = (hash_t*) _TIFFmalloc(HSIZE*sizeof (hash_t));
-	if (sp->enc_hashtab == NULL) {
-		TIFFErrorExt(tif->tif_clientdata, module, "No space for LZW hash table");
-		return (0);
-	}
-	return (1);
-}
-
-/*
- * Reset encoding state at the start of a strip.
- */
-static int
-LZWPreEncode(TIFF* tif, tsample_t s)
-{
-	LZWCodecState *sp = EncoderState(tif);
-
-	(void) s;
-	assert(sp != NULL);
-	sp->lzw_nbits = BITS_MIN;
-	sp->lzw_maxcode = MAXCODE(BITS_MIN);
-	sp->lzw_free_ent = CODE_FIRST;
-	sp->lzw_nextbits = 0;
-	sp->lzw_nextdata = 0;
-	sp->enc_checkpoint = CHECK_GAP;
-	sp->enc_ratio = 0;
-	sp->enc_incount = 0;
-	sp->enc_outcount = 0;
-	/*
-	 * The 4 here insures there is space for 2 max-sized
-	 * codes in LZWEncode and LZWPostDecode.
-	 */
-	sp->enc_rawlimit = tif->tif_rawdata + tif->tif_rawdatasize-1 - 4;
-	cl_hash(sp);		/* clear hash table */
-	sp->enc_oldcode = (hcode_t) -1;	/* generates CODE_CLEAR in LZWEncode */
-	return (1);
-}
-
-#define	CALCRATIO(sp, rat) {					\
-	if (incount > 0x007fffff) { /* NB: shift will overflow */\
-		rat = outcount >> 8;				\
-		rat = (rat == 0 ? 0x7fffffff : incount/rat);	\
-	} else							\
-		rat = (incount<<8) / outcount;			\
-}
-#define	PutNextCode(op, c) {					\
-	nextdata = (nextdata << nbits) | c;			\
-	nextbits += nbits;					\
-	*op++ = (unsigned char)(nextdata >> (nextbits-8));		\
-	nextbits -= 8;						\
-	if (nextbits >= 8) {					\
-		*op++ = (unsigned char)(nextdata >> (nextbits-8));	\
-		nextbits -= 8;					\
-	}							\
-	outcount += nbits;					\
-}
-
-/*
- * Encode a chunk of pixels.
- *
- * Uses an open addressing double hashing (no chaining) on the 
- * prefix code/next character combination.  We do a variant of
- * Knuth's algorithm D (vol. 3, sec. 6.4) along with G. Knott's
- * relatively-prime secondary probe.  Here, the modular division
- * first probe is gives way to a faster exclusive-or manipulation. 
- * Also do block compression with an adaptive reset, whereby the
- * code table is cleared when the compression ratio decreases,
- * but after the table fills.  The variable-length output codes
- * are re-sized at this point, and a CODE_CLEAR is generated
- * for the decoder. 
- */
-static int
-LZWEncode(TIFF* tif, tidata_t bp, tsize_t cc, tsample_t s)
-{
-	register LZWCodecState *sp = EncoderState(tif);
-	register long fcode;
-	register hash_t *hp;
-	register int h, c;
-	hcode_t ent;
-	long disp;
-	long incount, outcount, checkpoint;
-	long nextdata, nextbits;
-	int free_ent, maxcode, nbits;
-	tidata_t op, limit;
-
-	(void) s;
-	if (sp == NULL)
-		return (0);
-	/*
-	 * Load local state.
-	 */
-	incount = sp->enc_incount;
-	outcount = sp->enc_outcount;
-	checkpoint = sp->enc_checkpoint;
-	nextdata = sp->lzw_nextdata;
-	nextbits = sp->lzw_nextbits;
-	free_ent = sp->lzw_free_ent;
-	maxcode = sp->lzw_maxcode;
-	nbits = sp->lzw_nbits;
-	op = tif->tif_rawcp;
-	limit = sp->enc_rawlimit;
-	ent = sp->enc_oldcode;
-
-	if (ent == (hcode_t) -1 && cc > 0) {
-		/*
-		 * NB: This is safe because it can only happen
-		 *     at the start of a strip where we know there
-		 *     is space in the data buffer.
-		 */
-		PutNextCode(op, CODE_CLEAR);
-		ent = *bp++; cc--; incount++;
-	}
-	while (cc > 0) {
-		c = *bp++; cc--; incount++;
-		fcode = ((long)c << BITS_MAX) + ent;
-		h = (c << HSHIFT) ^ ent;	/* xor hashing */
-#ifdef _WINDOWS
-		/*
-		 * Check hash index for an overflow.
-		 */
-		if (h >= HSIZE)
-			h -= HSIZE;
-#endif
-		hp = &sp->enc_hashtab[h];
-		if (hp->hash == fcode) {
-			ent = hp->code;
-			continue;
-		}
-		if (hp->hash >= 0) {
-			/*
-			 * Primary hash failed, check secondary hash.
-			 */
-			disp = HSIZE - h;
-			if (h == 0)
-				disp = 1;
-			do {
-				/*
-				 * Avoid pointer arithmetic 'cuz of
-				 * wraparound problems with segments.
-				 */
-				if ((h -= disp) < 0)
-					h += HSIZE;
-				hp = &sp->enc_hashtab[h];
-				if (hp->hash == fcode) {
-					ent = hp->code;
-					goto hit;
-				}
-			} while (hp->hash >= 0);
-		}
-		/*
-		 * New entry, emit code and add to table.
-		 */
-		/*
-		 * Verify there is space in the buffer for the code
-		 * and any potential Clear code that might be emitted
-		 * below.  The value of limit is setup so that there
-		 * are at least 4 bytes free--room for 2 codes.
-		 */
-		if (op > limit) {
-			tif->tif_rawcc = (tsize_t)(op - tif->tif_rawdata);
-			TIFFFlushData1(tif);
-			op = tif->tif_rawdata;
-		}
-		PutNextCode(op, ent);
-		ent = c;
-		hp->code = free_ent++;
-		hp->hash = fcode;
-		if (free_ent == CODE_MAX-1) {
-			/* table is full, emit clear code and reset */
-			cl_hash(sp);
-			sp->enc_ratio = 0;
-			incount = 0;
-			outcount = 0;
-			free_ent = CODE_FIRST;
-			PutNextCode(op, CODE_CLEAR);
-			nbits = BITS_MIN;
-			maxcode = MAXCODE(BITS_MIN);
-		} else {
-			/*
-			 * If the next entry is going to be too big for
-			 * the code size, then increase it, if possible.
-			 */
-			if (free_ent > maxcode) {
-				nbits++;
-				assert(nbits <= BITS_MAX);
-				maxcode = (int) MAXCODE(nbits);
-			} else if (incount >= checkpoint) {
-				long rat;
-				/*
-				 * Check compression ratio and, if things seem
-				 * to be slipping, clear the hash table and
-				 * reset state.  The compression ratio is a
-				 * 24+8-bit fractional number.
-				 */
-				checkpoint = incount+CHECK_GAP;
-				CALCRATIO(sp, rat);
-				if (rat <= sp->enc_ratio) {
-					cl_hash(sp);
-					sp->enc_ratio = 0;
-					incount = 0;
-					outcount = 0;
-					free_ent = CODE_FIRST;
-					PutNextCode(op, CODE_CLEAR);
-					nbits = BITS_MIN;
-					maxcode = MAXCODE(BITS_MIN);
-				} else
-					sp->enc_ratio = rat;
-			}
-		}
-	hit:
-		;
-	}
-
-	/*
-	 * Restore global state.
-	 */
-	sp->enc_incount = incount;
-	sp->enc_outcount = outcount;
-	sp->enc_checkpoint = checkpoint;
-	sp->enc_oldcode = ent;
-	sp->lzw_nextdata = nextdata;
-	sp->lzw_nextbits = nextbits;
-	sp->lzw_free_ent = free_ent;
-	sp->lzw_maxcode = maxcode;
-	sp->lzw_nbits = nbits;
-	tif->tif_rawcp = op;
-	return (1);
-}
-
-/*
- * Finish off an encoded strip by flushing the last
- * string and tacking on an End Of Information code.
- */
-static int
-LZWPostEncode(TIFF* tif)
-{
-	register LZWCodecState *sp = EncoderState(tif);
-	tidata_t op = tif->tif_rawcp;
-	long nextbits = sp->lzw_nextbits;
-	long nextdata = sp->lzw_nextdata;
-	long outcount = sp->enc_outcount;
-	int nbits = sp->lzw_nbits;
-
-	if (op > sp->enc_rawlimit) {
-		tif->tif_rawcc = (tsize_t)(op - tif->tif_rawdata);
-		TIFFFlushData1(tif);
-		op = tif->tif_rawdata;
-	}
-	if (sp->enc_oldcode != (hcode_t) -1) {
-		PutNextCode(op, sp->enc_oldcode);
-		sp->enc_oldcode = (hcode_t) -1;
-	}
-	PutNextCode(op, CODE_EOI);
-	if (nextbits > 0) 
-		*op++ = (unsigned char)(nextdata << (8-nextbits));
-	tif->tif_rawcc = (tsize_t)(op - tif->tif_rawdata);
-	return (1);
-}
-
-/*
- * Reset encoding hash table.
- */
-static void
-cl_hash(LZWCodecState* sp)
-{
-	register hash_t *hp = &sp->enc_hashtab[HSIZE-1];
-	register long i = HSIZE-8;
-
- 	do {
-		i -= 8;
-		hp[-7].hash = -1;
-		hp[-6].hash = -1;
-		hp[-5].hash = -1;
-		hp[-4].hash = -1;
-		hp[-3].hash = -1;
-		hp[-2].hash = -1;
-		hp[-1].hash = -1;
-		hp[ 0].hash = -1;
-		hp -= 8;
-	} while (i >= 0);
-    	for (i += 8; i > 0; i--, hp--)
-		hp->hash = -1;
-}
-
-static void
-LZWCleanup(TIFF* tif)
-{
-	(void)TIFFPredictorCleanup(tif);
-
-	assert(tif->tif_data != 0);
-
-	if (DecoderState(tif)->dec_codetab)
-		_TIFFfree(DecoderState(tif)->dec_codetab);
-
-	if (EncoderState(tif)->enc_hashtab)
-		_TIFFfree(EncoderState(tif)->enc_hashtab);
-
-	_TIFFfree(tif->tif_data);
-	tif->tif_data = NULL;
-
-	_TIFFSetDefaultCompressionState(tif);
-}
-
-int
-TIFFInitLZW(TIFF* tif, int scheme)
-{
-	assert(scheme == COMPRESSION_LZW);
-	/*
-	 * Allocate state block so tag methods have storage to record values.
-	 */
-	tif->tif_data = (tidata_t) _TIFFmalloc(sizeof (LZWCodecState));
-	if (tif->tif_data == NULL)
-		goto bad;
-	DecoderState(tif)->dec_codetab = NULL;
-	DecoderState(tif)->dec_decode = NULL;
-	EncoderState(tif)->enc_hashtab = NULL;
-        LZWState(tif)->rw_mode = tif->tif_mode;
-
-	/*
-	 * Install codec methods.
-	 */
-	tif->tif_setupdecode = LZWSetupDecode;
-	tif->tif_predecode = LZWPreDecode;
-	tif->tif_decoderow = LZWDecode;
-	tif->tif_decodestrip = LZWDecode;
-	tif->tif_decodetile = LZWDecode;
-	tif->tif_setupencode = LZWSetupEncode;
-	tif->tif_preencode = LZWPreEncode;
-	tif->tif_postencode = LZWPostEncode;
-	tif->tif_encoderow = LZWEncode;
-	tif->tif_encodestrip = LZWEncode;
-	tif->tif_encodetile = LZWEncode;
-	tif->tif_cleanup = LZWCleanup;
-	/*
-	 * Setup predictor setup.
-	 */
-	(void) TIFFPredictorInit(tif);
-	return (1);
-bad:
-	TIFFErrorExt(tif->tif_clientdata, "TIFFInitLZW", 
-		     "No space for LZW state block");
-	return (0);
-}
-
-/*
- * Copyright (c) 1985, 1986 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * James A. Woods, derived from original work by Spencer Thomas
- * and Joseph Orost.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by the University of California, Berkeley.  The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-#endif /* LZW_SUPPORT */
-
-/* vim: set ts=8 sts=8 sw=8 noet: */
diff --git a/src/tiff/tif_machdep.c b/src/tiff/tif_machdep.c
deleted file mode 100644
index b824281..0000000
--- a/src/tiff/tif_machdep.c
+++ /dev/null
@@ -1,186 +0,0 @@
-#ifndef lint
-static char rcsid[] = "$Header$";
-#endif
-
-/*
- * Copyright (c) 1992 Sam Leffler
- * Copyright (c) 1992 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and 
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- * 
- * 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 SAM LEFFLER OR SILICON GRAPHICS 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.
- */
-
-/*
- * TIFF Library Machine Dependent Routines.
- */
-#include "tiffiop.h"
-
-#ifdef tahoe
-typedef	struct ieeedouble {
-	u_long	sign	: 1,
-		exp	: 11,
-		mant	: 20;
-	u_long	mant2;
-} ieeedouble;
-typedef	struct ieeefloat {
-	u_long	sign	: 1,
-		exp	: 8,
-		mant	: 23;
-} ieeefloat;
-
-typedef	struct {
-	u_long	sign	: 1,
-		exp	: 8,
-		mant	: 23;
-	u_long	mant2;
-} nativedouble;
-typedef	struct {
-	u_long	sign	: 1,
-		exp	: 8,
-		mant	: 23;
-} nativefloat;
-/*
- * Beware, over/under-flow in conversions will
- * result in garbage values -- handling it would
- * require a subroutine call or lots more code.
- */
-#define	NATIVE2IEEEFLOAT(fp) { \
-    if ((fp)->native.exp) \
-        (fp)->ieee.exp = (fp)->native.exp - 129 + 127;	/* alter bias */\
-}
-#define	IEEEFLOAT2NATIVE(fp) { \
-    if ((fp)->ieee.exp) \
-        (fp)->native.exp = (fp)->ieee.exp - 127 + 129; 	/* alter bias */\
-}
-#define	IEEEDOUBLE2NATIVE(dp) { \
-    if ((dp)->native.exp = (dp)->ieee.exp) \
-	(dp)->native.exp += -1023 + 129; \
-    (dp)->native.mant = ((dp)->ieee.mant<<3)|((dp)->native.mant2>>29); \
-    (dp)->native.mant2 <<= 3; \
-}
-#endif /* tahoe */
-
-#ifdef vax
-typedef	struct ieeedouble {
-	u_long	mant	: 20,
-		exp	: 11,
-		sign	: 1;
-	u_long	mant2;
-} ieeedouble;
-typedef	struct ieeefloat {
-	u_long	mant	: 23,
-		exp	: 8,
-		sign	: 1;
-} ieeefloat;
-
-typedef	struct {
-	u_long	mant1	: 7,
-		exp	: 8,
-		sign	: 1,
-		mant2	: 16;
-	u_long	mant3;
-} nativedouble;
-typedef	struct {
-	u_long	mant1	: 7,
-		exp	: 8,
-		sign	: 1,
-		mant2	: 16;
-} nativefloat;
-/*
- * Beware, these do not handle over/under-flow
- * during conversion from ieee to native format.
- */
-#define	NATIVE2IEEEFLOAT(fp) { \
-    float_t t; \
-    if (t.ieee.exp = (fp)->native.exp) \
-	t.ieee.exp += -129 + 127; \
-    t.ieee.sign = (fp)->native.sign; \
-    t.ieee.mant = ((fp)->native.mant1<<16)|(fp)->native.mant2; \
-    *(fp) = t; \
-}
-#define	IEEEFLOAT2NATIVE(fp) { \
-    float_t t; int v = (fp)->ieee.exp; \
-    if (v) v += -127 + 129;		/* alter bias of exponent */\
-    t.native.exp = v;			/* implicit truncation of exponent */\
-    t.native.sign = (fp)->ieee.sign; \
-    v = (fp)->ieee.mant; \
-    t.native.mant1 = v >> 16; \
-    t.native.mant2 = v;\
-    *(fp) = t; \
-}
-#define	IEEEDOUBLE2NATIVE(dp) { \
-    double_t t; int v = (dp)->ieee.exp; \
-    if (v) v += -1023 + 1025; 		/* if can alter bias of exponent */\
-    t.native.exp = v;			/* implicit truncation of exponent */\
-    v = (dp)->ieee.mant; \
-    t.native.sign = (dp)->ieee.sign; \
-    t.native.mant1 = v >> 16; \
-    t.native.mant2 = v;\
-    t.native.mant3 = (dp)->mant2; \
-    *(dp) = t; \
-}
-#endif /* vax */
-
-#if !HAVE_IEEEFP
-#if !defined(IEEEFLOAT2NATIVE) || !defined(NATIVE2IEEEFLOAT)
-"Help, you've configured the library to not have IEEE floating point,\
-but not defined how to convert between IEEE and native formats!"
-#endif
-
-/*
- * These unions are used during floating point
- * conversions.  The above macros define the
- * conversion operations.
- */
-typedef	union {
-	ieeedouble	ieee;
-	nativedouble	native;
-	char		b[8];
-	double		d;
-} double_t;
-
-typedef	union {
-	ieeefloat	ieee;
-	nativefloat	native;
-	char		b[4];
-	float		f;
-} float_t;
-
-void
-TIFFCvtIEEEFloatToNative(TIFF* tif, u_int n, float* f)
-{
-	float_t *fp = (float_t *)f;
-
-	while (n-- > 0) {
-		IEEEFLOAT2NATIVE(fp);
-		fp++;
-	}
-}
-
-void
-TIFFCvtNativeToIEEEFloat(TIFF* tif, u_int n, float* f)
-{
-	float_t *fp = (float_t *)f;
-
-	while (n-- > 0) {
-		NATIVE2IEEEFLOAT(fp);
-		fp++;
-	}
-}
-#endif
diff --git a/src/tiff/tif_next.c b/src/tiff/tif_next.c
deleted file mode 100644
index aa82055..0000000
--- a/src/tiff/tif_next.c
+++ /dev/null
@@ -1,144 +0,0 @@
-/* $Id: tif_next.c 4825 2006-08-16 13:01:53Z lubia $ */
-
-/*
- * Copyright (c) 1988-1997 Sam Leffler
- * Copyright (c) 1991-1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and 
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- * 
- * 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 SAM LEFFLER OR SILICON GRAPHICS 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.
- */
-
-#include "tiffiop.h"
-#ifdef NEXT_SUPPORT
-/*
- * TIFF Library.
- *
- * NeXT 2-bit Grey Scale Compression Algorithm Support
- */
-
-#define SETPIXEL(op, v) {			\
-	switch (npixels++ & 3) {		\
-	case 0:	op[0]  = (unsigned char) ((v) << 6); break;	\
-	case 1:	op[0] |= (v) << 4; break;	\
-	case 2:	op[0] |= (v) << 2; break;	\
-	case 3:	*op++ |= (v);	   break;	\
-	}					\
-}
-
-#define LITERALROW	0x00
-#define LITERALSPAN	0x40
-#define WHITE   	((1<<2)-1)
-
-static int
-NeXTDecode(TIFF* tif, tidata_t buf, tsize_t occ, tsample_t s)
-{
-	register unsigned char *bp, *op;
-	register tsize_t cc;
-	register int n;
-	tidata_t row;
-	tsize_t scanline;
-
-	(void) s;
-	/*
-	 * Each scanline is assumed to start off as all
-	 * white (we assume a PhotometricInterpretation
-	 * of ``min-is-black'').
-	 */
-	for (op = buf, cc = occ; cc-- > 0;)
-		*op++ = 0xff;
-
-	bp = (unsigned char *)tif->tif_rawcp;
-	cc = tif->tif_rawcc;
-	scanline = tif->tif_scanlinesize;
-	for (row = buf; (long)occ > 0; occ -= scanline, row += scanline) {
-		n = *bp++, cc--;
-		switch (n) {
-		case LITERALROW:
-			/*
-			 * The entire scanline is given as literal values.
-			 */
-			if (cc < scanline)
-				goto bad;
-			_TIFFmemcpy(row, bp, scanline);
-			bp += scanline;
-			cc -= scanline;
-			break;
-		case LITERALSPAN: {
-			int off;
-			/*
-			 * The scanline has a literal span
-			 * that begins at some offset.
-			 */
-			off = (bp[0] * 256) + bp[1];
-			n = (bp[2] * 256) + bp[3];
-			if (cc < 4+n || off+n > scanline)
-				goto bad;
-			_TIFFmemcpy(row+off, bp+4, n);
-			bp += 4+n;
-			cc -= 4+n;
-			break;
-		}
-		default: {
-			register int npixels = 0, grey;
-			unsigned long imagewidth = tif->tif_dir.td_imagewidth;
-
-			/*
-			 * The scanline is composed of a sequence
-			 * of constant color ``runs''.  We shift
-			 * into ``run mode'' and interpret bytes
-			 * as codes of the form <color><npixels>
-			 * until we've filled the scanline.
-			 */
-			op = row;
-			for (;;) {
-				grey = (n>>6) & 0x3;
-				n &= 0x3f;
-				while (n-- > 0)
-					SETPIXEL(op, grey);
-				if (npixels >= (int) imagewidth)
-					break;
-				if (cc == 0)
-					goto bad;
-				n = *bp++, cc--;
-			}
-			break;
-		}
-		}
-	}
-	tif->tif_rawcp = (tidata_t) bp;
-	tif->tif_rawcc = cc;
-	return (1);
-bad:
-	TIFFErrorExt(tif->tif_clientdata, tif->tif_name, "NeXTDecode: Not enough data for scanline %ld",
-	    (long) tif->tif_row);
-	return (0);
-}
-
-int
-TIFFInitNeXT(TIFF* tif, int scheme)
-{
-	(void) scheme;
-	tif->tif_decoderow = NeXTDecode;
-	tif->tif_decodestrip = NeXTDecode;
-	tif->tif_decodetile = NeXTDecode;
-	return (1);
-}
-#endif /* NEXT_SUPPORT */
-
-/* vim: set ts=8 sts=8 sw=8 noet: */
diff --git a/src/tiff/tif_open.c b/src/tiff/tif_open.c
deleted file mode 100644
index f222a33..0000000
--- a/src/tiff/tif_open.c
+++ /dev/null
@@ -1,683 +0,0 @@
-/* $Id: tif_open.c 4825 2006-08-16 13:01:53Z lubia $ */
-
-/*
- * Copyright (c) 1988-1997 Sam Leffler
- * Copyright (c) 1991-1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and 
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- * 
- * 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 SAM LEFFLER OR SILICON GRAPHICS 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.
- */
-
-/*
- * TIFF Library.
- */
-#include "tiffiop.h"
-
-static const long typemask[13] = {
-	(long)0L,		/* TIFF_NOTYPE */
-	(long)0x000000ffL,	/* TIFF_BYTE */
-	(long)0xffffffffL,	/* TIFF_ASCII */
-	(long)0x0000ffffL,	/* TIFF_SHORT */
-	(long)0xffffffffL,	/* TIFF_LONG */
-	(long)0xffffffffL,	/* TIFF_RATIONAL */
-	(long)0x000000ffL,	/* TIFF_SBYTE */
-	(long)0x000000ffL,	/* TIFF_UNDEFINED */
-	(long)0x0000ffffL,	/* TIFF_SSHORT */
-	(long)0xffffffffL,	/* TIFF_SLONG */
-	(long)0xffffffffL,	/* TIFF_SRATIONAL */
-	(long)0xffffffffL,	/* TIFF_FLOAT */
-	(long)0xffffffffL,	/* TIFF_DOUBLE */
-};
-static const int bigTypeshift[13] = {
-	0,		/* TIFF_NOTYPE */
-	24,		/* TIFF_BYTE */
-	0,		/* TIFF_ASCII */
-	16,		/* TIFF_SHORT */
-	0,		/* TIFF_LONG */
-	0,		/* TIFF_RATIONAL */
-	24,		/* TIFF_SBYTE */
-	24,		/* TIFF_UNDEFINED */
-	16,		/* TIFF_SSHORT */
-	0,		/* TIFF_SLONG */
-	0,		/* TIFF_SRATIONAL */
-	0,		/* TIFF_FLOAT */
-	0,		/* TIFF_DOUBLE */
-};
-static const int litTypeshift[13] = {
-	0,		/* TIFF_NOTYPE */
-	0,		/* TIFF_BYTE */
-	0,		/* TIFF_ASCII */
-	0,		/* TIFF_SHORT */
-	0,		/* TIFF_LONG */
-	0,		/* TIFF_RATIONAL */
-	0,		/* TIFF_SBYTE */
-	0,		/* TIFF_UNDEFINED */
-	0,		/* TIFF_SSHORT */
-	0,		/* TIFF_SLONG */
-	0,		/* TIFF_SRATIONAL */
-	0,		/* TIFF_FLOAT */
-	0,		/* TIFF_DOUBLE */
-};
-
-/*
- * Dummy functions to fill the omitted client procedures.
- */
-static int
-_tiffDummyMapProc(thandle_t fd, tdata_t* pbase, toff_t* psize)
-{
-	(void) fd; (void) pbase; (void) psize;
-	return (0);
-}
-
-static void
-_tiffDummyUnmapProc(thandle_t fd, tdata_t base, toff_t size)
-{
-	(void) fd; (void) base; (void) size;
-}
-
-/*
- * Initialize the shift & mask tables, and the
- * byte swapping state according to the file
- * contents and the machine architecture.
- */
-static void
-TIFFInitOrder(TIFF* tif, int magic)
-{
-	tif->tif_typemask = typemask;
-	if (magic == TIFF_BIGENDIAN) {
-		tif->tif_typeshift = bigTypeshift;
-#ifndef WORDS_BIGENDIAN
-		tif->tif_flags |= TIFF_SWAB;
-#endif
-	} else {
-		tif->tif_typeshift = litTypeshift;
-#ifdef WORDS_BIGENDIAN
-		tif->tif_flags |= TIFF_SWAB;
-#endif
-	}
-}
-
-int
-_TIFFgetMode(const char* mode, const char* module)
-{
-	int m = -1;
-
-	switch (mode[0]) {
-	case 'r':
-		m = O_RDONLY;
-		if (mode[1] == '+')
-			m = O_RDWR;
-		break;
-	case 'w':
-	case 'a':
-		m = O_RDWR|O_CREAT;
-		if (mode[0] == 'w')
-			m |= O_TRUNC;
-		break;
-	default:
-		TIFFErrorExt(0, module, "\"%s\": Bad mode", mode);
-		break;
-	}
-	return (m);
-}
-
-TIFF*
-TIFFClientOpen(
-	const char* name, const char* mode,
-	thandle_t clientdata,
-	TIFFReadWriteProc readproc,
-	TIFFReadWriteProc writeproc,
-	TIFFSeekProc seekproc,
-	TIFFCloseProc closeproc,
-	TIFFSizeProc sizeproc,
-	TIFFMapFileProc mapproc,
-	TIFFUnmapFileProc unmapproc
-)
-{
-	static const char module[] = "TIFFClientOpen";
-	TIFF *tif;
-	int m;
-	const char* cp;
-
-	m = _TIFFgetMode(mode, module);
-	if (m == -1)
-		goto bad2;
-	tif = (TIFF *)_TIFFmalloc(sizeof (TIFF) + strlen(name) + 1);
-	if (tif == NULL) {
-		TIFFErrorExt(clientdata, module, "%s: Out of memory (TIFF structure)", name);
-		goto bad2;
-	}
-	_TIFFmemset(tif, 0, sizeof (*tif));
-	tif->tif_name = (char *)tif + sizeof (TIFF);
-	strcpy(tif->tif_name, name);
-	tif->tif_mode = m &~ (O_CREAT|O_TRUNC);
-	tif->tif_curdir = (tdir_t) -1;		/* non-existent directory */
-	tif->tif_curoff = 0;
-	tif->tif_curstrip = (tstrip_t) -1;	/* invalid strip */
-	tif->tif_row = (uint32) -1;		/* read/write pre-increment */
-	tif->tif_clientdata = clientdata;
-	if (!readproc || !writeproc || !seekproc || !closeproc || !sizeproc) {
-		TIFFErrorExt(clientdata, module,
-			  "One of the client procedures is NULL pointer.");
-		goto bad2;
-	}
-	tif->tif_readproc = readproc;
-	tif->tif_writeproc = writeproc;
-	tif->tif_seekproc = seekproc;
-	tif->tif_closeproc = closeproc;
-	tif->tif_sizeproc = sizeproc;
-        if (mapproc)
-		tif->tif_mapproc = mapproc;
-	else
-		tif->tif_mapproc = _tiffDummyMapProc;
-	if (unmapproc)
-		tif->tif_unmapproc = unmapproc;
-	else
-		tif->tif_unmapproc = _tiffDummyUnmapProc;
-	_TIFFSetDefaultCompressionState(tif);	/* setup default state */
-	/*
-	 * Default is to return data MSB2LSB and enable the
-	 * use of memory-mapped files and strip chopping when
-	 * a file is opened read-only.
-	 */
-	tif->tif_flags = FILLORDER_MSB2LSB;
-	if (m == O_RDONLY )
-            tif->tif_flags |= TIFF_MAPPED;
-
-#ifdef STRIPCHOP_DEFAULT
-	if (m == O_RDONLY || m == O_RDWR)
-		tif->tif_flags |= STRIPCHOP_DEFAULT;
-#endif
-
-	/*
-	 * Process library-specific flags in the open mode string.
-	 * The following flags may be used to control intrinsic library
-	 * behaviour that may or may not be desirable (usually for
-	 * compatibility with some application that claims to support
-	 * TIFF but only supports some braindead idea of what the
-	 * vendor thinks TIFF is):
-	 *
-	 * 'l'		use little-endian byte order for creating a file
-	 * 'b'		use big-endian byte order for creating a file
-	 * 'L'		read/write information using LSB2MSB bit order
-	 * 'B'		read/write information using MSB2LSB bit order
-	 * 'H'		read/write information using host bit order
-	 * 'M'		enable use of memory-mapped files when supported
-	 * 'm'		disable use of memory-mapped files
-	 * 'C'		enable strip chopping support when reading
-	 * 'c'		disable strip chopping support
-	 * 'h'		read TIFF header only, do not load the first IFD
-	 *
-	 * The use of the 'l' and 'b' flags is strongly discouraged.
-	 * These flags are provided solely because numerous vendors,
-	 * typically on the PC, do not correctly support TIFF; they
-	 * only support the Intel little-endian byte order.  This
-	 * support is not configured by default because it supports
-	 * the violation of the TIFF spec that says that readers *MUST*
-	 * support both byte orders.  It is strongly recommended that
-	 * you not use this feature except to deal with busted apps
-	 * that write invalid TIFF.  And even in those cases you should
-	 * bang on the vendors to fix their software.
-	 *
-	 * The 'L', 'B', and 'H' flags are intended for applications
-	 * that can optimize operations on data by using a particular
-	 * bit order.  By default the library returns data in MSB2LSB
-	 * bit order for compatibiltiy with older versions of this
-	 * library.  Returning data in the bit order of the native cpu
-	 * makes the most sense but also requires applications to check
-	 * the value of the FillOrder tag; something they probably do
-	 * not do right now.
-	 *
-	 * The 'M' and 'm' flags are provided because some virtual memory
-	 * systems exhibit poor behaviour when large images are mapped.
-	 * These options permit clients to control the use of memory-mapped
-	 * files on a per-file basis.
-	 *
-	 * The 'C' and 'c' flags are provided because the library support
-	 * for chopping up large strips into multiple smaller strips is not
-	 * application-transparent and as such can cause problems.  The 'c'
-	 * option permits applications that only want to look at the tags,
-	 * for example, to get the unadulterated TIFF tag information.
-	 */
-	for (cp = mode; *cp; cp++)
-		switch (*cp) {
-		case 'b':
-#ifndef WORDS_BIGENDIAN
-		    if (m&O_CREAT)
-				tif->tif_flags |= TIFF_SWAB;
-#endif
-			break;
-		case 'l':
-#ifdef WORDS_BIGENDIAN
-			if ((m&O_CREAT))
-				tif->tif_flags |= TIFF_SWAB;
-#endif
-			break;
-		case 'B':
-			tif->tif_flags = (tif->tif_flags &~ TIFF_FILLORDER) |
-			    FILLORDER_MSB2LSB;
-			break;
-		case 'L':
-			tif->tif_flags = (tif->tif_flags &~ TIFF_FILLORDER) |
-			    FILLORDER_LSB2MSB;
-			break;
-		case 'H':
-			tif->tif_flags = (tif->tif_flags &~ TIFF_FILLORDER) |
-			    HOST_FILLORDER;
-			break;
-		case 'M':
-			if (m == O_RDONLY)
-				tif->tif_flags |= TIFF_MAPPED;
-			break;
-		case 'm':
-			if (m == O_RDONLY)
-				tif->tif_flags &= ~TIFF_MAPPED;
-			break;
-		case 'C':
-			if (m == O_RDONLY)
-				tif->tif_flags |= TIFF_STRIPCHOP;
-			break;
-		case 'c':
-			if (m == O_RDONLY)
-				tif->tif_flags &= ~TIFF_STRIPCHOP;
-			break;
-		case 'h':
-			tif->tif_flags |= TIFF_HEADERONLY;
-			break;
-		}
-	/*
-	 * Read in TIFF header.
-	 */
-	if (tif->tif_mode & O_TRUNC ||
-	    !ReadOK(tif, &tif->tif_header, sizeof (TIFFHeader))) {
-		if (tif->tif_mode == O_RDONLY) {
-			TIFFErrorExt(tif->tif_clientdata, name, "Cannot read TIFF header");
-			goto bad;
-		}
-		/*
-		 * Setup header and write.
-		 */
-#ifdef WORDS_BIGENDIAN
-		tif->tif_header.tiff_magic = tif->tif_flags & TIFF_SWAB
-		    ? TIFF_LITTLEENDIAN : TIFF_BIGENDIAN;
-#else
-		tif->tif_header.tiff_magic = tif->tif_flags & TIFF_SWAB
-		    ? TIFF_BIGENDIAN : TIFF_LITTLEENDIAN;
-#endif
-		tif->tif_header.tiff_version = TIFF_VERSION;
-		if (tif->tif_flags & TIFF_SWAB)
-			TIFFSwabShort(&tif->tif_header.tiff_version);
-		tif->tif_header.tiff_diroff = 0;	/* filled in later */
-
-
-                /*
-                 * The doc for "fopen" for some STD_C_LIBs says that if you 
-                 * open a file for modify ("+"), then you must fseek (or 
-                 * fflush?) between any freads and fwrites.  This is not
-                 * necessary on most systems, but has been shown to be needed
-                 * on Solaris. 
-                 */
-                TIFFSeekFile( tif, 0, SEEK_SET );
-               
-		if (!WriteOK(tif, &tif->tif_header, sizeof (TIFFHeader))) {
-			TIFFErrorExt(tif->tif_clientdata, name, "Error writing TIFF header");
-			goto bad;
-		}
-		/*
-		 * Setup the byte order handling.
-		 */
-		TIFFInitOrder(tif, tif->tif_header.tiff_magic);
-		/*
-		 * Setup default directory.
-		 */
-		if (!TIFFDefaultDirectory(tif))
-			goto bad;
-		tif->tif_diroff = 0;
-		tif->tif_dirlist = NULL;
-		tif->tif_dirnumber = 0;
-		return (tif);
-	}
-	/*
-	 * Setup the byte order handling.
-	 */
-	if (tif->tif_header.tiff_magic != TIFF_BIGENDIAN &&
-	    tif->tif_header.tiff_magic != TIFF_LITTLEENDIAN
-#if MDI_SUPPORT
-	    &&
-#if HOST_BIGENDIAN
-	    tif->tif_header.tiff_magic != MDI_BIGENDIAN
-#else
-	    tif->tif_header.tiff_magic != MDI_LITTLEENDIAN
-#endif
-	    ) {
-		TIFFErrorExt(tif->tif_clientdata, name,  "Not a TIFF or MDI file, bad magic number %d (0x%x)",
-#else
-	    ) {
-		TIFFErrorExt(tif->tif_clientdata, name,  "Not a TIFF file, bad magic number %d (0x%x)",
-#endif
-		    tif->tif_header.tiff_magic,
-		    tif->tif_header.tiff_magic);
-		goto bad;
-	}
-	TIFFInitOrder(tif, tif->tif_header.tiff_magic);
-	/*
-	 * Swap header if required.
-	 */
-	if (tif->tif_flags & TIFF_SWAB) {
-		TIFFSwabShort(&tif->tif_header.tiff_version);
-		TIFFSwabLong(&tif->tif_header.tiff_diroff);
-	}
-	/*
-	 * Now check version (if needed, it's been byte-swapped).
-	 * Note that this isn't actually a version number, it's a
-	 * magic number that doesn't change (stupid).
-	 */
-	if (tif->tif_header.tiff_version == TIFF_BIGTIFF_VERSION) {
-		TIFFErrorExt(tif->tif_clientdata, name,
-                          "This is a BigTIFF file.  This format not supported\n"
-                          "by this version of libtiff." );
-		goto bad;
-	}
-	if (tif->tif_header.tiff_version != TIFF_VERSION) {
-		TIFFErrorExt(tif->tif_clientdata, name,
-		    "Not a TIFF file, bad version number %d (0x%x)",
-		    tif->tif_header.tiff_version,
-		    tif->tif_header.tiff_version); 
-		goto bad;
-	}
-	tif->tif_flags |= TIFF_MYBUFFER;
-	tif->tif_rawcp = tif->tif_rawdata = 0;
-	tif->tif_rawdatasize = 0;
-
-	/*
-	 * Sometimes we do not want to read the first directory (for example,
-	 * it may be broken) and want to proceed to other directories. I this
-	 * case we use the TIFF_HEADERONLY flag to open file and return
-	 * immediately after reading TIFF header.
-	 */
-	if (tif->tif_flags & TIFF_HEADERONLY)
-		return (tif);
-
-	/*
-	 * Setup initial directory.
-	 */
-	switch (mode[0]) {
-	case 'r':
-		tif->tif_nextdiroff = tif->tif_header.tiff_diroff;
-		/*
-		 * Try to use a memory-mapped file if the client
-		 * has not explicitly suppressed usage with the
-		 * 'm' flag in the open mode (see above).
-		 */
-		if ((tif->tif_flags & TIFF_MAPPED) &&
-	!TIFFMapFileContents(tif, (tdata_t*) &tif->tif_base, &tif->tif_size))
-			tif->tif_flags &= ~TIFF_MAPPED;
-		if (TIFFReadDirectory(tif)) {
-			tif->tif_rawcc = -1;
-			tif->tif_flags |= TIFF_BUFFERSETUP;
-			return (tif);
-		}
-		break;
-	case 'a':
-		/*
-		 * New directories are automatically append
-		 * to the end of the directory chain when they
-		 * are written out (see TIFFWriteDirectory).
-		 */
-		if (!TIFFDefaultDirectory(tif))
-			goto bad;
-		return (tif);
-	}
-bad:
-	tif->tif_mode = O_RDONLY;	/* XXX avoid flush */
-        TIFFCleanup(tif);
-bad2:
-	return ((TIFF*)0);
-}
-
-/*
- * Query functions to access private data.
- */
-
-/*
- * Return open file's name.
- */
-const char *
-TIFFFileName(TIFF* tif)
-{
-	return (tif->tif_name);
-}
-
-/*
- * Set the file name.
- */
-const char *
-TIFFSetFileName(TIFF* tif, const char *name)
-{
-	const char* old_name = tif->tif_name;
-	tif->tif_name = (char *)name;
-	return (old_name);
-}
-
-/*
- * Return open file's I/O descriptor.
- */
-int
-TIFFFileno(TIFF* tif)
-{
-	return (tif->tif_fd);
-}
-
-/*
- * Set open file's I/O descriptor, and return previous value.
- */
-int
-TIFFSetFileno(TIFF* tif, int fd)
-{
-        int old_fd = tif->tif_fd;
-	tif->tif_fd = fd;
-	return old_fd;
-}
-
-/*
- * Return open file's clientdata.
- */
-thandle_t
-TIFFClientdata(TIFF* tif)
-{
-	return (tif->tif_clientdata);
-}
-
-/*
- * Set open file's clientdata, and return previous value.
- */
-thandle_t
-TIFFSetClientdata(TIFF* tif, thandle_t newvalue)
-{
-	thandle_t m = tif->tif_clientdata;
-	tif->tif_clientdata = newvalue;
-	return m;
-}
-
-/*
- * Return read/write mode.
- */
-int
-TIFFGetMode(TIFF* tif)
-{
-	return (tif->tif_mode);
-}
-
-/*
- * Return read/write mode.
- */
-int
-TIFFSetMode(TIFF* tif, int mode)
-{
-	int old_mode = tif->tif_mode;
-	tif->tif_mode = mode;
-	return (old_mode);
-}
-
-/*
- * Return nonzero if file is organized in
- * tiles; zero if organized as strips.
- */
-int
-TIFFIsTiled(TIFF* tif)
-{
-	return (isTiled(tif));
-}
-
-/*
- * Return current row being read/written.
- */
-uint32
-TIFFCurrentRow(TIFF* tif)
-{
-	return (tif->tif_row);
-}
-
-/*
- * Return index of the current directory.
- */
-tdir_t
-TIFFCurrentDirectory(TIFF* tif)
-{
-	return (tif->tif_curdir);
-}
-
-/*
- * Return current strip.
- */
-tstrip_t
-TIFFCurrentStrip(TIFF* tif)
-{
-	return (tif->tif_curstrip);
-}
-
-/*
- * Return current tile.
- */
-ttile_t
-TIFFCurrentTile(TIFF* tif)
-{
-	return (tif->tif_curtile);
-}
-
-/*
- * Return nonzero if the file has byte-swapped data.
- */
-int
-TIFFIsByteSwapped(TIFF* tif)
-{
-	return ((tif->tif_flags & TIFF_SWAB) != 0);
-}
-
-/*
- * Return nonzero if the data is returned up-sampled.
- */
-int
-TIFFIsUpSampled(TIFF* tif)
-{
-	return (isUpSampled(tif));
-}
-
-/*
- * Return nonzero if the data is returned in MSB-to-LSB bit order.
- */
-int
-TIFFIsMSB2LSB(TIFF* tif)
-{
-	return (isFillOrder(tif, FILLORDER_MSB2LSB));
-}
-
-/*
- * Return nonzero if given file was written in big-endian order.
- */
-int
-TIFFIsBigEndian(TIFF* tif)
-{
-	return (tif->tif_header.tiff_magic == TIFF_BIGENDIAN);
-}
-
-/*
- * Return pointer to file read method.
- */
-TIFFReadWriteProc
-TIFFGetReadProc(TIFF* tif)
-{
-	return (tif->tif_readproc);
-}
-
-/*
- * Return pointer to file write method.
- */
-TIFFReadWriteProc
-TIFFGetWriteProc(TIFF* tif)
-{
-	return (tif->tif_writeproc);
-}
-
-/*
- * Return pointer to file seek method.
- */
-TIFFSeekProc
-TIFFGetSeekProc(TIFF* tif)
-{
-	return (tif->tif_seekproc);
-}
-
-/*
- * Return pointer to file close method.
- */
-TIFFCloseProc
-TIFFGetCloseProc(TIFF* tif)
-{
-	return (tif->tif_closeproc);
-}
-
-/*
- * Return pointer to file size requesting method.
- */
-TIFFSizeProc
-TIFFGetSizeProc(TIFF* tif)
-{
-	return (tif->tif_sizeproc);
-}
-
-/*
- * Return pointer to memory mapping method.
- */
-TIFFMapFileProc
-TIFFGetMapFileProc(TIFF* tif)
-{
-	return (tif->tif_mapproc);
-}
-
-/*
- * Return pointer to memory unmapping method.
- */
-TIFFUnmapFileProc
-TIFFGetUnmapFileProc(TIFF* tif)
-{
-	return (tif->tif_unmapproc);
-}
-
-/* vim: set ts=8 sts=8 sw=8 noet: */
diff --git a/src/tiff/tif_packbits.c b/src/tiff/tif_packbits.c
deleted file mode 100644
index 13622e8..0000000
--- a/src/tiff/tif_packbits.c
+++ /dev/null
@@ -1,293 +0,0 @@
-/* $Id: tif_packbits.c 4825 2006-08-16 13:01:53Z lubia $ */
-
-/*
- * Copyright (c) 1988-1997 Sam Leffler
- * Copyright (c) 1991-1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and 
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- * 
- * 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 SAM LEFFLER OR SILICON GRAPHICS 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.
- */
-
-#include "tiffiop.h"
-#ifdef PACKBITS_SUPPORT
-/*
- * TIFF Library.
- *
- * PackBits Compression Algorithm Support
- */
-#include <stdio.h>
-
-static int
-PackBitsPreEncode(TIFF* tif, tsample_t s)
-{
-	(void) s;
-
-        if (!(tif->tif_data = (tidata_t)_TIFFmalloc(sizeof(tsize_t))))
-		return (0);
-	/*
-	 * Calculate the scanline/tile-width size in bytes.
-	 */
-	if (isTiled(tif))
-		*(tsize_t*)tif->tif_data = TIFFTileRowSize(tif);
-	else
-		*(tsize_t*)tif->tif_data = TIFFScanlineSize(tif);
-	return (1);
-}
-
-static int
-PackBitsPostEncode(TIFF* tif)
-{
-        if (tif->tif_data)
-            _TIFFfree(tif->tif_data);
-	return (1);
-}
-
-/*
- * NB: tidata is the type representing *(tidata_t);
- *     if tidata_t is made signed then this type must
- *     be adjusted accordingly.
- */
-typedef unsigned char tidata;
-
-/*
- * Encode a run of pixels.
- */
-static int
-PackBitsEncode(TIFF* tif, tidata_t buf, tsize_t cc, tsample_t s)
-{
-	unsigned char* bp = (unsigned char*) buf;
-	tidata_t op, ep, lastliteral;
-	long n, slop;
-	int b;
-	enum { BASE, LITERAL, RUN, LITERAL_RUN } state;
-
-	(void) s;
-	op = tif->tif_rawcp;
-	ep = tif->tif_rawdata + tif->tif_rawdatasize;
-	state = BASE;
-	lastliteral = 0;
-	while (cc > 0) {
-		/*
-		 * Find the longest string of identical bytes.
-		 */
-		b = *bp++, cc--, n = 1;
-		for (; cc > 0 && b == *bp; cc--, bp++)
-			n++;
-	again:
-		if (op + 2 >= ep) {		/* insure space for new data */
-			/*
-			 * Be careful about writing the last
-			 * literal.  Must write up to that point
-			 * and then copy the remainder to the
-			 * front of the buffer.
-			 */
-			if (state == LITERAL || state == LITERAL_RUN) {
-				slop = op - lastliteral;
-				tif->tif_rawcc += lastliteral - tif->tif_rawcp;
-				if (!TIFFFlushData1(tif))
-					return (-1);
-				op = tif->tif_rawcp;
-				while (slop-- > 0)
-					*op++ = *lastliteral++;
-				lastliteral = tif->tif_rawcp;
-			} else {
-				tif->tif_rawcc += op - tif->tif_rawcp;
-				if (!TIFFFlushData1(tif))
-					return (-1);
-				op = tif->tif_rawcp;
-			}
-		}
-		switch (state) {
-		case BASE:		/* initial state, set run/literal */
-			if (n > 1) {
-				state = RUN;
-				if (n > 128) {
-					*op++ = (tidata) -127;
-					*op++ = (tidataval_t) b;
-					n -= 128;
-					goto again;
-				}
-				*op++ = (tidataval_t)(-(n-1));
-				*op++ = (tidataval_t) b;
-			} else {
-				lastliteral = op;
-				*op++ = 0;
-				*op++ = (tidataval_t) b;
-				state = LITERAL;
-			}
-			break;
-		case LITERAL:		/* last object was literal string */
-			if (n > 1) {
-				state = LITERAL_RUN;
-				if (n > 128) {
-					*op++ = (tidata) -127;
-					*op++ = (tidataval_t) b;
-					n -= 128;
-					goto again;
-				}
-				*op++ = (tidataval_t)(-(n-1));	/* encode run */
-				*op++ = (tidataval_t) b;
-			} else {			/* extend literal */
-				if (++(*lastliteral) == 127)
-					state = BASE;
-				*op++ = (tidataval_t) b;
-			}
-			break;
-		case RUN:		/* last object was run */
-			if (n > 1) {
-				if (n > 128) {
-					*op++ = (tidata) -127;
-					*op++ = (tidataval_t) b;
-					n -= 128;
-					goto again;
-				}
-				*op++ = (tidataval_t)(-(n-1));
-				*op++ = (tidataval_t) b;
-			} else {
-				lastliteral = op;
-				*op++ = 0;
-				*op++ = (tidataval_t) b;
-				state = LITERAL;
-			}
-			break;
-		case LITERAL_RUN:	/* literal followed by a run */
-			/*
-			 * Check to see if previous run should
-			 * be converted to a literal, in which
-			 * case we convert literal-run-literal
-			 * to a single literal.
-			 */
-			if (n == 1 && op[-2] == (tidata) -1 &&
-			    *lastliteral < 126) {
-				state = (((*lastliteral) += 2) == 127 ?
-				    BASE : LITERAL);
-				op[-2] = op[-1];	/* replicate */
-			} else
-				state = RUN;
-			goto again;
-		}
-	}
-	tif->tif_rawcc += op - tif->tif_rawcp;
-	tif->tif_rawcp = op;
-	return (1);
-}
-
-/*
- * Encode a rectangular chunk of pixels.  We break it up
- * into row-sized pieces to insure that encoded runs do
- * not span rows.  Otherwise, there can be problems with
- * the decoder if data is read, for example, by scanlines
- * when it was encoded by strips.
- */
-static int
-PackBitsEncodeChunk(TIFF* tif, tidata_t bp, tsize_t cc, tsample_t s)
-{
-	tsize_t rowsize = *(tsize_t*)tif->tif_data;
-
-	while ((long)cc > 0) {
-		int	chunk = rowsize;
-		
-		if( cc < chunk )
-		    chunk = cc;
-
-		if (PackBitsEncode(tif, bp, chunk, s) < 0)
-		    return (-1);
-		bp += chunk;
-		cc -= chunk;
-	}
-	return (1);
-}
-
-static int
-PackBitsDecode(TIFF* tif, tidata_t op, tsize_t occ, tsample_t s)
-{
-	char *bp;
-	tsize_t cc;
-	long n;
-	int b;
-
-	(void) s;
-	bp = (char*) tif->tif_rawcp;
-	cc = tif->tif_rawcc;
-	while (cc > 0 && (long)occ > 0) {
-		n = (long) *bp++, cc--;
-		/*
-		 * Watch out for compilers that
-		 * don't sign extend chars...
-		 */
-		if (n >= 128)
-			n -= 256;
-		if (n < 0) {		/* replicate next byte -n+1 times */
-			if (n == -128)	/* nop */
-				continue;
-                        n = -n + 1;
-                        if( occ < n )
-                        {
-							TIFFWarningExt(tif->tif_clientdata, tif->tif_name,
-                                        "PackBitsDecode: discarding %d bytes "
-                                        "to avoid buffer overrun",
-                                        n - occ);
-                            n = occ;
-                        }
-			occ -= n;
-			b = *bp++, cc--;
-			while (n-- > 0)
-				*op++ = (tidataval_t) b;
-		} else {		/* copy next n+1 bytes literally */
-			if (occ < n + 1)
-                        {
-                            TIFFWarningExt(tif->tif_clientdata, tif->tif_name,
-                                        "PackBitsDecode: discarding %d bytes "
-                                        "to avoid buffer overrun",
-                                        n - occ + 1);
-                            n = occ - 1;
-                        }
-                        _TIFFmemcpy(op, bp, ++n);
-			op += n; occ -= n;
-			bp += n; cc -= n;
-		}
-	}
-	tif->tif_rawcp = (tidata_t) bp;
-	tif->tif_rawcc = cc;
-	if (occ > 0) {
-		TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-		    "PackBitsDecode: Not enough data for scanline %ld",
-		    (long) tif->tif_row);
-		return (0);
-	}
-	return (1);
-}
-
-int
-TIFFInitPackBits(TIFF* tif, int scheme)
-{
-	(void) scheme;
-	tif->tif_decoderow = PackBitsDecode;
-	tif->tif_decodestrip = PackBitsDecode;
-	tif->tif_decodetile = PackBitsDecode;
-	tif->tif_preencode = PackBitsPreEncode;
-        tif->tif_postencode = PackBitsPostEncode;
-	tif->tif_encoderow = PackBitsEncode;
-	tif->tif_encodestrip = PackBitsEncodeChunk;
-	tif->tif_encodetile = PackBitsEncodeChunk;
-	return (1);
-}
-#endif /* PACKBITS_SUPPORT */
-
-/* vim: set ts=8 sts=8 sw=8 noet: */
diff --git a/src/tiff/tif_pixarlog.c b/src/tiff/tif_pixarlog.c
deleted file mode 100644
index a35493a..0000000
--- a/src/tiff/tif_pixarlog.c
+++ /dev/null
@@ -1,1342 +0,0 @@
-/* $Id: tif_pixarlog.c 4825 2006-08-16 13:01:53Z lubia $ */
-
-/*
- * Copyright (c) 1996-1997 Sam Leffler
- * Copyright (c) 1996 Pixar
- *
- * Permission to use, copy, modify, distribute, and sell this software and 
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Pixar, Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Pixar, Sam Leffler and Silicon Graphics.
- * 
- * 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 PIXAR, SAM LEFFLER OR SILICON GRAPHICS 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.
- */
-
-#include "tiffiop.h"
-#ifdef PIXARLOG_SUPPORT
-
-/*
- * TIFF Library.
- * PixarLog Compression Support
- *
- * Contributed by Dan McCoy.
- *
- * PixarLog film support uses the TIFF library to store companded
- * 11 bit values into a tiff file, which are compressed using the 
- * zip compressor.  
- *
- * The codec can take as input and produce as output 32-bit IEEE float values 
- * as well as 16-bit or 8-bit unsigned integer values.
- *
- * On writing any of the above are converted into the internal
- * 11-bit log format.   In the case of  8 and 16 bit values, the
- * input is assumed to be unsigned linear color values that represent
- * the range 0-1.  In the case of IEEE values, the 0-1 range is assumed to
- * be the normal linear color range, in addition over 1 values are
- * accepted up to a value of about 25.0 to encode "hot" hightlights and such.
- * The encoding is lossless for 8-bit values, slightly lossy for the
- * other bit depths.  The actual color precision should be better
- * than the human eye can perceive with extra room to allow for
- * error introduced by further image computation.  As with any quantized
- * color format, it is possible to perform image calculations which
- * expose the quantization error. This format should certainly be less 
- * susceptable to such errors than standard 8-bit encodings, but more
- * susceptable than straight 16-bit or 32-bit encodings.
- *
- * On reading the internal format is converted to the desired output format.
- * The program can request which format it desires by setting the internal
- * pseudo tag TIFFTAG_PIXARLOGDATAFMT to one of these possible values:
- *  PIXARLOGDATAFMT_FLOAT     = provide IEEE float values.
- *  PIXARLOGDATAFMT_16BIT     = provide unsigned 16-bit integer values
- *  PIXARLOGDATAFMT_8BIT      = provide unsigned 8-bit integer values
- *
- * alternately PIXARLOGDATAFMT_8BITABGR provides unsigned 8-bit integer
- * values with the difference that if there are exactly three or four channels
- * (rgb or rgba) it swaps the channel order (bgr or abgr).
- *
- * PIXARLOGDATAFMT_11BITLOG provides the internal encoding directly
- * packed in 16-bit values.   However no tools are supplied for interpreting
- * these values.
- *
- * "hot" (over 1.0) areas written in floating point get clamped to
- * 1.0 in the integer data types.
- *
- * When the file is closed after writing, the bit depth and sample format
- * are set always to appear as if 8-bit data has been written into it.
- * That way a naive program unaware of the particulars of the encoding
- * gets the format it is most likely able to handle.
- *
- * The codec does it's own horizontal differencing step on the coded
- * values so the libraries predictor stuff should be turned off.
- * The codec also handle byte swapping the encoded values as necessary
- * since the library does not have the information necessary
- * to know the bit depth of the raw unencoded buffer.
- * 
- */
-
-#include "tif_predict.h"
-#include "zlib.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <math.h>
-
-/* Tables for converting to/from 11 bit coded values */
-
-#define  TSIZE	 2048		/* decode table size (11-bit tokens) */
-#define  TSIZEP1 2049		/* Plus one for slop */
-#define  ONE	 1250		/* token value of 1.0 exactly */
-#define  RATIO	 1.004		/* nominal ratio for log part */
-
-#define CODE_MASK 0x7ff         /* 11 bits. */
-
-static float  Fltsize;
-static float  LogK1, LogK2;
-
-#define REPEAT(n, op)   { int i; i=n; do { i--; op; } while (i>0); }
-
-static void
-horizontalAccumulateF(uint16 *wp, int n, int stride, float *op, 
-	float *ToLinearF)
-{
-    register unsigned int  cr, cg, cb, ca, mask;
-    register float  t0, t1, t2, t3;
-
-    if (n >= stride) {
-	mask = CODE_MASK;
-	if (stride == 3) {
-	    t0 = ToLinearF[cr = wp[0]];
-	    t1 = ToLinearF[cg = wp[1]];
-	    t2 = ToLinearF[cb = wp[2]];
-	    op[0] = t0;
-	    op[1] = t1;
-	    op[2] = t2;
-	    n -= 3;
-	    while (n > 0) {
-		wp += 3;
-		op += 3;
-		n -= 3;
-		t0 = ToLinearF[(cr += wp[0]) & mask];
-		t1 = ToLinearF[(cg += wp[1]) & mask];
-		t2 = ToLinearF[(cb += wp[2]) & mask];
-		op[0] = t0;
-		op[1] = t1;
-		op[2] = t2;
-	    }
-	} else if (stride == 4) {
-	    t0 = ToLinearF[cr = wp[0]];
-	    t1 = ToLinearF[cg = wp[1]];
-	    t2 = ToLinearF[cb = wp[2]];
-	    t3 = ToLinearF[ca = wp[3]];
-	    op[0] = t0;
-	    op[1] = t1;
-	    op[2] = t2;
-	    op[3] = t3;
-	    n -= 4;
-	    while (n > 0) {
-		wp += 4;
-		op += 4;
-		n -= 4;
-		t0 = ToLinearF[(cr += wp[0]) & mask];
-		t1 = ToLinearF[(cg += wp[1]) & mask];
-		t2 = ToLinearF[(cb += wp[2]) & mask];
-		t3 = ToLinearF[(ca += wp[3]) & mask];
-		op[0] = t0;
-		op[1] = t1;
-		op[2] = t2;
-		op[3] = t3;
-	    }
-	} else {
-	    REPEAT(stride, *op = ToLinearF[*wp&mask]; wp++; op++)
-	    n -= stride;
-	    while (n > 0) {
-		REPEAT(stride,
-		    wp[stride] += *wp; *op = ToLinearF[*wp&mask]; wp++; op++)
-		n -= stride;
-	    }
-	}
-    }
-}
-
-static void
-horizontalAccumulate12(uint16 *wp, int n, int stride, int16 *op,
-	float *ToLinearF)
-{
-    register unsigned int  cr, cg, cb, ca, mask;
-    register float  t0, t1, t2, t3;
-
-#define SCALE12 2048.0F
-#define CLAMP12(t) (((t) < 3071) ? (uint16) (t) : 3071)
-
-    if (n >= stride) {
-	mask = CODE_MASK;
-	if (stride == 3) {
-	    t0 = ToLinearF[cr = wp[0]] * SCALE12;
-	    t1 = ToLinearF[cg = wp[1]] * SCALE12;
-	    t2 = ToLinearF[cb = wp[2]] * SCALE12;
-	    op[0] = CLAMP12(t0);
-	    op[1] = CLAMP12(t1);
-	    op[2] = CLAMP12(t2);
-	    n -= 3;
-	    while (n > 0) {
-		wp += 3;
-		op += 3;
-		n -= 3;
-		t0 = ToLinearF[(cr += wp[0]) & mask] * SCALE12;
-		t1 = ToLinearF[(cg += wp[1]) & mask] * SCALE12;
-		t2 = ToLinearF[(cb += wp[2]) & mask] * SCALE12;
-		op[0] = CLAMP12(t0);
-		op[1] = CLAMP12(t1);
-		op[2] = CLAMP12(t2);
-	    }
-	} else if (stride == 4) {
-	    t0 = ToLinearF[cr = wp[0]] * SCALE12;
-	    t1 = ToLinearF[cg = wp[1]] * SCALE12;
-	    t2 = ToLinearF[cb = wp[2]] * SCALE12;
-	    t3 = ToLinearF[ca = wp[3]] * SCALE12;
-	    op[0] = CLAMP12(t0);
-	    op[1] = CLAMP12(t1);
-	    op[2] = CLAMP12(t2);
-	    op[3] = CLAMP12(t3);
-	    n -= 4;
-	    while (n > 0) {
-		wp += 4;
-		op += 4;
-		n -= 4;
-		t0 = ToLinearF[(cr += wp[0]) & mask] * SCALE12;
-		t1 = ToLinearF[(cg += wp[1]) & mask] * SCALE12;
-		t2 = ToLinearF[(cb += wp[2]) & mask] * SCALE12;
-		t3 = ToLinearF[(ca += wp[3]) & mask] * SCALE12;
-		op[0] = CLAMP12(t0);
-		op[1] = CLAMP12(t1);
-		op[2] = CLAMP12(t2);
-		op[3] = CLAMP12(t3);
-	    }
-	} else {
-	    REPEAT(stride, t0 = ToLinearF[*wp&mask] * SCALE12;
-                           *op = CLAMP12(t0); wp++; op++)
-	    n -= stride;
-	    while (n > 0) {
-		REPEAT(stride,
-		    wp[stride] += *wp; t0 = ToLinearF[wp[stride]&mask]*SCALE12;
-		    *op = CLAMP12(t0);  wp++; op++)
-		n -= stride;
-	    }
-	}
-    }
-}
-
-static void
-horizontalAccumulate16(uint16 *wp, int n, int stride, uint16 *op,
-	uint16 *ToLinear16)
-{
-    register unsigned int  cr, cg, cb, ca, mask;
-
-    if (n >= stride) {
-	mask = CODE_MASK;
-	if (stride == 3) {
-	    op[0] = ToLinear16[cr = wp[0]];
-	    op[1] = ToLinear16[cg = wp[1]];
-	    op[2] = ToLinear16[cb = wp[2]];
-	    n -= 3;
-	    while (n > 0) {
-		wp += 3;
-		op += 3;
-		n -= 3;
-		op[0] = ToLinear16[(cr += wp[0]) & mask];
-		op[1] = ToLinear16[(cg += wp[1]) & mask];
-		op[2] = ToLinear16[(cb += wp[2]) & mask];
-	    }
-	} else if (stride == 4) {
-	    op[0] = ToLinear16[cr = wp[0]];
-	    op[1] = ToLinear16[cg = wp[1]];
-	    op[2] = ToLinear16[cb = wp[2]];
-	    op[3] = ToLinear16[ca = wp[3]];
-	    n -= 4;
-	    while (n > 0) {
-		wp += 4;
-		op += 4;
-		n -= 4;
-		op[0] = ToLinear16[(cr += wp[0]) & mask];
-		op[1] = ToLinear16[(cg += wp[1]) & mask];
-		op[2] = ToLinear16[(cb += wp[2]) & mask];
-		op[3] = ToLinear16[(ca += wp[3]) & mask];
-	    }
-	} else {
-	    REPEAT(stride, *op = ToLinear16[*wp&mask]; wp++; op++)
-	    n -= stride;
-	    while (n > 0) {
-		REPEAT(stride,
-		    wp[stride] += *wp; *op = ToLinear16[*wp&mask]; wp++; op++)
-		n -= stride;
-	    }
-	}
-    }
-}
-
-/* 
- * Returns the log encoded 11-bit values with the horizontal
- * differencing undone.
- */
-static void
-horizontalAccumulate11(uint16 *wp, int n, int stride, uint16 *op)
-{
-    register unsigned int  cr, cg, cb, ca, mask;
-
-    if (n >= stride) {
-	mask = CODE_MASK;
-	if (stride == 3) {
-	    op[0] = cr = wp[0];  op[1] = cg = wp[1];  op[2] = cb = wp[2];
-	    n -= 3;
-	    while (n > 0) {
-		wp += 3;
-		op += 3;
-		n -= 3;
-		op[0] = (cr += wp[0]) & mask;
-		op[1] = (cg += wp[1]) & mask;
-		op[2] = (cb += wp[2]) & mask;
-	    }
-	} else if (stride == 4) {
-	    op[0] = cr = wp[0];  op[1] = cg = wp[1];
-	    op[2] = cb = wp[2];  op[3] = ca = wp[3];
-	    n -= 4;
-	    while (n > 0) {
-		wp += 4;
-		op += 4;
-		n -= 4;
-		op[0] = (cr += wp[0]) & mask;
-		op[1] = (cg += wp[1]) & mask;
-		op[2] = (cb += wp[2]) & mask;
-		op[3] = (ca += wp[3]) & mask;
-	    } 
-	} else {
-	    REPEAT(stride, *op = *wp&mask; wp++; op++)
-	    n -= stride;
-	    while (n > 0) {
-		REPEAT(stride,
-		    wp[stride] += *wp; *op = *wp&mask; wp++; op++)
-	    	n -= stride;
-	    }
-	}
-    }
-}
-
-static void
-horizontalAccumulate8(uint16 *wp, int n, int stride, unsigned char *op,
-	unsigned char *ToLinear8)
-{
-    register unsigned int  cr, cg, cb, ca, mask;
-
-    if (n >= stride) {
-	mask = CODE_MASK;
-	if (stride == 3) {
-	    op[0] = ToLinear8[cr = wp[0]];
-	    op[1] = ToLinear8[cg = wp[1]];
-	    op[2] = ToLinear8[cb = wp[2]];
-	    n -= 3;
-	    while (n > 0) {
-		n -= 3;
-		wp += 3;
-		op += 3;
-		op[0] = ToLinear8[(cr += wp[0]) & mask];
-		op[1] = ToLinear8[(cg += wp[1]) & mask];
-		op[2] = ToLinear8[(cb += wp[2]) & mask];
-	    }
-	} else if (stride == 4) {
-	    op[0] = ToLinear8[cr = wp[0]];
-	    op[1] = ToLinear8[cg = wp[1]];
-	    op[2] = ToLinear8[cb = wp[2]];
-	    op[3] = ToLinear8[ca = wp[3]];
-	    n -= 4;
-	    while (n > 0) {
-		n -= 4;
-		wp += 4;
-		op += 4;
-		op[0] = ToLinear8[(cr += wp[0]) & mask];
-		op[1] = ToLinear8[(cg += wp[1]) & mask];
-		op[2] = ToLinear8[(cb += wp[2]) & mask];
-		op[3] = ToLinear8[(ca += wp[3]) & mask];
-	    }
-	} else {
-	    REPEAT(stride, *op = ToLinear8[*wp&mask]; wp++; op++)
-	    n -= stride;
-	    while (n > 0) {
-		REPEAT(stride,
-		    wp[stride] += *wp; *op = ToLinear8[*wp&mask]; wp++; op++)
-		n -= stride;
-	    }
-	}
-    }
-}
-
-
-static void
-horizontalAccumulate8abgr(uint16 *wp, int n, int stride, unsigned char *op,
-	unsigned char *ToLinear8)
-{
-    register unsigned int  cr, cg, cb, ca, mask;
-    register unsigned char  t0, t1, t2, t3;
-
-    if (n >= stride) {
-	mask = CODE_MASK;
-	if (stride == 3) {
-	    op[0] = 0;
-	    t1 = ToLinear8[cb = wp[2]];
-	    t2 = ToLinear8[cg = wp[1]];
-	    t3 = ToLinear8[cr = wp[0]];
-	    op[1] = t1;
-	    op[2] = t2;
-	    op[3] = t3;
-	    n -= 3;
-	    while (n > 0) {
-		n -= 3;
-		wp += 3;
-		op += 4;
-		op[0] = 0;
-		t1 = ToLinear8[(cb += wp[2]) & mask];
-		t2 = ToLinear8[(cg += wp[1]) & mask];
-		t3 = ToLinear8[(cr += wp[0]) & mask];
-		op[1] = t1;
-		op[2] = t2;
-		op[3] = t3;
-	    }
-	} else if (stride == 4) {
-	    t0 = ToLinear8[ca = wp[3]];
-	    t1 = ToLinear8[cb = wp[2]];
-	    t2 = ToLinear8[cg = wp[1]];
-	    t3 = ToLinear8[cr = wp[0]];
-	    op[0] = t0;
-	    op[1] = t1;
-	    op[2] = t2;
-	    op[3] = t3;
-	    n -= 4;
-	    while (n > 0) {
-		n -= 4;
-		wp += 4;
-		op += 4;
-		t0 = ToLinear8[(ca += wp[3]) & mask];
-		t1 = ToLinear8[(cb += wp[2]) & mask];
-		t2 = ToLinear8[(cg += wp[1]) & mask];
-		t3 = ToLinear8[(cr += wp[0]) & mask];
-		op[0] = t0;
-		op[1] = t1;
-		op[2] = t2;
-		op[3] = t3;
-	    }
-	} else {
-	    REPEAT(stride, *op = ToLinear8[*wp&mask]; wp++; op++)
-	    n -= stride;
-	    while (n > 0) {
-		REPEAT(stride,
-		    wp[stride] += *wp; *op = ToLinear8[*wp&mask]; wp++; op++)
-		n -= stride;
-	    }
-	}
-    }
-}
-
-/*
- * State block for each open TIFF
- * file using PixarLog compression/decompression.
- */
-typedef	struct {
-	TIFFPredictorState	predict;
-	z_stream		stream;
-	uint16			*tbuf; 
-	uint16			stride;
-	int			state;
-	int			user_datafmt;
-	int			quality;
-#define PLSTATE_INIT 1
-
-	TIFFVSetMethod		vgetparent;	/* super-class method */
-	TIFFVSetMethod		vsetparent;	/* super-class method */
-
-	float *ToLinearF;
-	uint16 *ToLinear16;
-	unsigned char *ToLinear8;
-	uint16  *FromLT2;
-	uint16  *From14; /* Really for 16-bit data, but we shift down 2 */
-	uint16  *From8;
-	
-} PixarLogState;
-
-static int
-PixarLogMakeTables(PixarLogState *sp)
-{
-
-/*
- *    We make several tables here to convert between various external
- *    representations (float, 16-bit, and 8-bit) and the internal
- *    11-bit companded representation.  The 11-bit representation has two
- *    distinct regions.  A linear bottom end up through .018316 in steps
- *    of about .000073, and a region of constant ratio up to about 25.
- *    These floating point numbers are stored in the main table ToLinearF. 
- *    All other tables are derived from this one.  The tables (and the
- *    ratios) are continuous at the internal seam.
- */
-
-    int  nlin, lt2size;
-    int  i, j;
-    double  b, c, linstep, v;
-    float *ToLinearF;
-    uint16 *ToLinear16;
-    unsigned char *ToLinear8;
-    uint16  *FromLT2;
-    uint16  *From14; /* Really for 16-bit data, but we shift down 2 */
-    uint16  *From8;
-
-    c = log(RATIO);	
-    nlin = (int)(1./c);	/* nlin must be an integer */
-    c = 1./nlin;
-    b = exp(-c*ONE);	/* multiplicative scale factor [b*exp(c*ONE) = 1] */
-    linstep = b*c*exp(1.);
-
-    LogK1 = (float)(1./c);	/* if (v >= 2)  token = k1*log(v*k2) */
-    LogK2 = (float)(1./b);
-    lt2size = (int)(2./linstep) + 1;
-    FromLT2 = (uint16 *)_TIFFmalloc(lt2size*sizeof(uint16));
-    From14 = (uint16 *)_TIFFmalloc(16384*sizeof(uint16));
-    From8 = (uint16 *)_TIFFmalloc(256*sizeof(uint16));
-    ToLinearF = (float *)_TIFFmalloc(TSIZEP1 * sizeof(float));
-    ToLinear16 = (uint16 *)_TIFFmalloc(TSIZEP1 * sizeof(uint16));
-    ToLinear8 = (unsigned char *)_TIFFmalloc(TSIZEP1 * sizeof(unsigned char));
-    if (FromLT2 == NULL || From14  == NULL || From8   == NULL ||
-	 ToLinearF == NULL || ToLinear16 == NULL || ToLinear8 == NULL) {
-	if (FromLT2) _TIFFfree(FromLT2);
-	if (From14) _TIFFfree(From14);
-	if (From8) _TIFFfree(From8);
-	if (ToLinearF) _TIFFfree(ToLinearF);
-	if (ToLinear16) _TIFFfree(ToLinear16);
-	if (ToLinear8) _TIFFfree(ToLinear8);
-	sp->FromLT2 = NULL;
-	sp->From14 = NULL;
-	sp->From8 = NULL;
-	sp->ToLinearF = NULL;
-	sp->ToLinear16 = NULL;
-	sp->ToLinear8 = NULL;
-	return 0;
-    }
-
-    j = 0;
-
-    for (i = 0; i < nlin; i++)  {
-	v = i * linstep;
-	ToLinearF[j++] = (float)v;
-    }
-
-    for (i = nlin; i < TSIZE; i++)
-	ToLinearF[j++] = (float)(b*exp(c*i));
-
-    ToLinearF[2048] = ToLinearF[2047];
-
-    for (i = 0; i < TSIZEP1; i++)  {
-	v = ToLinearF[i]*65535.0 + 0.5;
-	ToLinear16[i] = (v > 65535.0) ? 65535 : (uint16)v;
-	v = ToLinearF[i]*255.0  + 0.5;
-	ToLinear8[i]  = (v > 255.0) ? 255 : (unsigned char)v;
-    }
-
-    j = 0;
-    for (i = 0; i < lt2size; i++)  {
-	if ((i*linstep)*(i*linstep) > ToLinearF[j]*ToLinearF[j+1])
-	    j++;
-	FromLT2[i] = j;
-    }
-
-    /*
-     * Since we lose info anyway on 16-bit data, we set up a 14-bit
-     * table and shift 16-bit values down two bits on input.
-     * saves a little table space.
-     */
-    j = 0;
-    for (i = 0; i < 16384; i++)  {
-	while ((i/16383.)*(i/16383.) > ToLinearF[j]*ToLinearF[j+1])
-	    j++;
-	From14[i] = j;
-    }
-
-    j = 0;
-    for (i = 0; i < 256; i++)  {
-	while ((i/255.)*(i/255.) > ToLinearF[j]*ToLinearF[j+1])
-	    j++;
-	From8[i] = j;
-    }
-
-    Fltsize = (float)(lt2size/2);
-
-    sp->ToLinearF = ToLinearF;
-    sp->ToLinear16 = ToLinear16;
-    sp->ToLinear8 = ToLinear8;
-    sp->FromLT2 = FromLT2;
-    sp->From14 = From14;
-    sp->From8 = From8;
-
-    return 1;
-}
-
-#define	DecoderState(tif)	((PixarLogState*) (tif)->tif_data)
-#define	EncoderState(tif)	((PixarLogState*) (tif)->tif_data)
-
-static	int PixarLogEncode(TIFF*, tidata_t, tsize_t, tsample_t);
-static	int PixarLogDecode(TIFF*, tidata_t, tsize_t, tsample_t);
-
-#define N(a)   (sizeof(a)/sizeof(a[0]))
-#define PIXARLOGDATAFMT_UNKNOWN	-1
-
-static int
-PixarLogGuessDataFmt(TIFFDirectory *td)
-{
-	int guess = PIXARLOGDATAFMT_UNKNOWN;
-	int format = td->td_sampleformat;
-
-	/* If the user didn't tell us his datafmt,
-	 * take our best guess from the bitspersample.
-	 */
-	switch (td->td_bitspersample) {
-	 case 32:
-		if (format == SAMPLEFORMAT_IEEEFP)
-			guess = PIXARLOGDATAFMT_FLOAT;
-		break;
-	 case 16:
-		if (format == SAMPLEFORMAT_VOID || format == SAMPLEFORMAT_UINT)
-			guess = PIXARLOGDATAFMT_16BIT;
-		break;
-	 case 12:
-		if (format == SAMPLEFORMAT_VOID || format == SAMPLEFORMAT_INT)
-			guess = PIXARLOGDATAFMT_12BITPICIO;
-		break;
-	 case 11:
-		if (format == SAMPLEFORMAT_VOID || format == SAMPLEFORMAT_UINT)
-			guess = PIXARLOGDATAFMT_11BITLOG;
-		break;
-	 case 8:
-		if (format == SAMPLEFORMAT_VOID || format == SAMPLEFORMAT_UINT)
-			guess = PIXARLOGDATAFMT_8BIT;
-		break;
-	}
-
-	return guess;
-}
-
-static uint32
-multiply(size_t m1, size_t m2)
-{
-	uint32	bytes = m1 * m2;
-
-	if (m1 && bytes / m1 != m2)
-		bytes = 0;
-
-	return bytes;
-}
-
-static int
-PixarLogSetupDecode(TIFF* tif)
-{
-	TIFFDirectory *td = &tif->tif_dir;
-	PixarLogState* sp = DecoderState(tif);
-	tsize_t tbuf_size;
-	static const char module[] = "PixarLogSetupDecode";
-
-	assert(sp != NULL);
-
-	/* Make sure no byte swapping happens on the data
-	 * after decompression. */
-	tif->tif_postdecode = _TIFFNoPostDecode;
-
-	/* for some reason, we can't do this in TIFFInitPixarLog */
-
-	sp->stride = (td->td_planarconfig == PLANARCONFIG_CONTIG ?
-	    td->td_samplesperpixel : 1);
-	tbuf_size = multiply(multiply(multiply(sp->stride, td->td_imagewidth),
-				      td->td_rowsperstrip), sizeof(uint16));
-	if (tbuf_size == 0)
-		return (0);
-	sp->tbuf = (uint16 *) _TIFFmalloc(tbuf_size);
-	if (sp->tbuf == NULL)
-		return (0);
-	if (sp->user_datafmt == PIXARLOGDATAFMT_UNKNOWN)
-		sp->user_datafmt = PixarLogGuessDataFmt(td);
-	if (sp->user_datafmt == PIXARLOGDATAFMT_UNKNOWN) {
-		TIFFErrorExt(tif->tif_clientdata, module,
-			"PixarLog compression can't handle bits depth/data format combination (depth: %d)", 
-			td->td_bitspersample);
-		return (0);
-	}
-
-	if (inflateInit(&sp->stream) != Z_OK) {
-		TIFFErrorExt(tif->tif_clientdata, module, "%s: %s", tif->tif_name, sp->stream.msg);
-		return (0);
-	} else {
-		sp->state |= PLSTATE_INIT;
-		return (1);
-	}
-}
-
-/*
- * Setup state for decoding a strip.
- */
-static int
-PixarLogPreDecode(TIFF* tif, tsample_t s)
-{
-	PixarLogState* sp = DecoderState(tif);
-
-	(void) s;
-	assert(sp != NULL);
-	sp->stream.next_in = tif->tif_rawdata;
-	sp->stream.avail_in = tif->tif_rawcc;
-	return (inflateReset(&sp->stream) == Z_OK);
-}
-
-static int
-PixarLogDecode(TIFF* tif, tidata_t op, tsize_t occ, tsample_t s)
-{
-	TIFFDirectory *td = &tif->tif_dir;
-	PixarLogState* sp = DecoderState(tif);
-	static const char module[] = "PixarLogDecode";
-	int i, nsamples, llen;
-	uint16 *up;
-
-	switch (sp->user_datafmt) {
-	case PIXARLOGDATAFMT_FLOAT:
-		nsamples = occ / sizeof(float);	/* XXX float == 32 bits */
-		break;
-	case PIXARLOGDATAFMT_16BIT:
-	case PIXARLOGDATAFMT_12BITPICIO:
-	case PIXARLOGDATAFMT_11BITLOG:
-		nsamples = occ / sizeof(uint16); /* XXX uint16 == 16 bits */
-		break;
-	case PIXARLOGDATAFMT_8BIT:
-	case PIXARLOGDATAFMT_8BITABGR:
-		nsamples = occ;
-		break;
-	default:
-		TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-			"%d bit input not supported in PixarLog",
-			td->td_bitspersample);
-		return 0;
-	}
-
-	llen = sp->stride * td->td_imagewidth;
-
-	(void) s;
-	assert(sp != NULL);
-	sp->stream.next_out = (unsigned char *) sp->tbuf;
-	sp->stream.avail_out = nsamples * sizeof(uint16);
-	do {
-		int state = inflate(&sp->stream, Z_PARTIAL_FLUSH);
-		if (state == Z_STREAM_END) {
-			break;			/* XXX */
-		}
-		if (state == Z_DATA_ERROR) {
-			TIFFErrorExt(tif->tif_clientdata, module,
-			    "%s: Decoding error at scanline %d, %s",
-			    tif->tif_name, tif->tif_row, sp->stream.msg);
-			if (inflateSync(&sp->stream) != Z_OK)
-				return (0);
-			continue;
-		}
-		if (state != Z_OK) {
-			TIFFErrorExt(tif->tif_clientdata, module, "%s: zlib error: %s",
-			    tif->tif_name, sp->stream.msg);
-			return (0);
-		}
-	} while (sp->stream.avail_out > 0);
-
-	/* hopefully, we got all the bytes we needed */
-	if (sp->stream.avail_out != 0) {
-		TIFFErrorExt(tif->tif_clientdata, module,
-		    "%s: Not enough data at scanline %d (short %d bytes)",
-		    tif->tif_name, tif->tif_row, sp->stream.avail_out);
-		return (0);
-	}
-
-	up = sp->tbuf;
-	/* Swap bytes in the data if from a different endian machine. */
-	if (tif->tif_flags & TIFF_SWAB)
-		TIFFSwabArrayOfShort(up, nsamples);
-
-	for (i = 0; i < nsamples; i += llen, up += llen) {
-		switch (sp->user_datafmt)  {
-		case PIXARLOGDATAFMT_FLOAT:
-			horizontalAccumulateF(up, llen, sp->stride,
-					(float *)op, sp->ToLinearF);
-			op += llen * sizeof(float);
-			break;
-		case PIXARLOGDATAFMT_16BIT:
-			horizontalAccumulate16(up, llen, sp->stride,
-					(uint16 *)op, sp->ToLinear16);
-			op += llen * sizeof(uint16);
-			break;
-		case PIXARLOGDATAFMT_12BITPICIO:
-			horizontalAccumulate12(up, llen, sp->stride,
-					(int16 *)op, sp->ToLinearF);
-			op += llen * sizeof(int16);
-			break;
-		case PIXARLOGDATAFMT_11BITLOG:
-			horizontalAccumulate11(up, llen, sp->stride,
-					(uint16 *)op);
-			op += llen * sizeof(uint16);
-			break;
-		case PIXARLOGDATAFMT_8BIT:
-			horizontalAccumulate8(up, llen, sp->stride,
-					(unsigned char *)op, sp->ToLinear8);
-			op += llen * sizeof(unsigned char);
-			break;
-		case PIXARLOGDATAFMT_8BITABGR:
-			horizontalAccumulate8abgr(up, llen, sp->stride,
-					(unsigned char *)op, sp->ToLinear8);
-			op += llen * sizeof(unsigned char);
-			break;
-		default:
-			TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-				  "PixarLogDecode: unsupported bits/sample: %d", 
-				  td->td_bitspersample);
-			return (0);
-		}
-	}
-
-	return (1);
-}
-
-static int
-PixarLogSetupEncode(TIFF* tif)
-{
-	TIFFDirectory *td = &tif->tif_dir;
-	PixarLogState* sp = EncoderState(tif);
-	tsize_t tbuf_size;
-	static const char module[] = "PixarLogSetupEncode";
-
-	assert(sp != NULL);
-
-	/* for some reason, we can't do this in TIFFInitPixarLog */
-
-	sp->stride = (td->td_planarconfig == PLANARCONFIG_CONTIG ?
-	    td->td_samplesperpixel : 1);
-	tbuf_size = multiply(multiply(multiply(sp->stride, td->td_imagewidth),
-				      td->td_rowsperstrip), sizeof(uint16));
-	if (tbuf_size == 0)
-		return (0);
-	sp->tbuf = (uint16 *) _TIFFmalloc(tbuf_size);
-	if (sp->tbuf == NULL)
-		return (0);
-	if (sp->user_datafmt == PIXARLOGDATAFMT_UNKNOWN)
-		sp->user_datafmt = PixarLogGuessDataFmt(td);
-	if (sp->user_datafmt == PIXARLOGDATAFMT_UNKNOWN) {
-		TIFFErrorExt(tif->tif_clientdata, module, "PixarLog compression can't handle %d bit linear encodings", td->td_bitspersample);
-		return (0);
-	}
-
-	if (deflateInit(&sp->stream, sp->quality) != Z_OK) {
-		TIFFErrorExt(tif->tif_clientdata, module, "%s: %s", tif->tif_name, sp->stream.msg);
-		return (0);
-	} else {
-		sp->state |= PLSTATE_INIT;
-		return (1);
-	}
-}
-
-/*
- * Reset encoding state at the start of a strip.
- */
-static int
-PixarLogPreEncode(TIFF* tif, tsample_t s)
-{
-	PixarLogState *sp = EncoderState(tif);
-
-	(void) s;
-	assert(sp != NULL);
-	sp->stream.next_out = tif->tif_rawdata;
-	sp->stream.avail_out = tif->tif_rawdatasize;
-	return (deflateReset(&sp->stream) == Z_OK);
-}
-
-static void
-horizontalDifferenceF(float *ip, int n, int stride, uint16 *wp, uint16 *FromLT2)
-{
-
-    int32 r1, g1, b1, a1, r2, g2, b2, a2, mask;
-    float fltsize = Fltsize;
-
-#define  CLAMP(v) ( (v<(float)0.)   ? 0				\
-		  : (v<(float)2.)   ? FromLT2[(int)(v*fltsize)]	\
-		  : (v>(float)24.2) ? 2047			\
-		  : LogK1*log(v*LogK2) + 0.5 )
-
-    mask = CODE_MASK;
-    if (n >= stride) {
-	if (stride == 3) {
-	    r2 = wp[0] = (uint16) CLAMP(ip[0]);
-	    g2 = wp[1] = (uint16) CLAMP(ip[1]);
-	    b2 = wp[2] = (uint16) CLAMP(ip[2]);
-	    n -= 3;
-	    while (n > 0) {
-		n -= 3;
-		wp += 3;
-		ip += 3;
-		r1 = (int32) CLAMP(ip[0]); wp[0] = (r1-r2) & mask; r2 = r1;
-		g1 = (int32) CLAMP(ip[1]); wp[1] = (g1-g2) & mask; g2 = g1;
-		b1 = (int32) CLAMP(ip[2]); wp[2] = (b1-b2) & mask; b2 = b1;
-	    }
-	} else if (stride == 4) {
-	    r2 = wp[0] = (uint16) CLAMP(ip[0]);
-	    g2 = wp[1] = (uint16) CLAMP(ip[1]);
-	    b2 = wp[2] = (uint16) CLAMP(ip[2]);
-	    a2 = wp[3] = (uint16) CLAMP(ip[3]);
-	    n -= 4;
-	    while (n > 0) {
-		n -= 4;
-		wp += 4;
-		ip += 4;
-		r1 = (int32) CLAMP(ip[0]); wp[0] = (r1-r2) & mask; r2 = r1;
-		g1 = (int32) CLAMP(ip[1]); wp[1] = (g1-g2) & mask; g2 = g1;
-		b1 = (int32) CLAMP(ip[2]); wp[2] = (b1-b2) & mask; b2 = b1;
-		a1 = (int32) CLAMP(ip[3]); wp[3] = (a1-a2) & mask; a2 = a1;
-	    }
-	} else {
-	    ip += n - 1;	/* point to last one */
-	    wp += n - 1;	/* point to last one */
-	    n -= stride;
-	    while (n > 0) {
-		REPEAT(stride, wp[0] = (uint16) CLAMP(ip[0]);
-				wp[stride] -= wp[0];
-				wp[stride] &= mask;
-				wp--; ip--)
-		n -= stride;
-	    }
-	    REPEAT(stride, wp[0] = (uint16) CLAMP(ip[0]); wp--; ip--)
-	}
-    }
-}
-
-static void
-horizontalDifference16(unsigned short *ip, int n, int stride, 
-	unsigned short *wp, uint16 *From14)
-{
-    register int  r1, g1, b1, a1, r2, g2, b2, a2, mask;
-
-/* assumption is unsigned pixel values */
-#undef   CLAMP
-#define  CLAMP(v) From14[(v) >> 2]
-
-    mask = CODE_MASK;
-    if (n >= stride) {
-	if (stride == 3) {
-	    r2 = wp[0] = CLAMP(ip[0]);  g2 = wp[1] = CLAMP(ip[1]);
-	    b2 = wp[2] = CLAMP(ip[2]);
-	    n -= 3;
-	    while (n > 0) {
-		n -= 3;
-		wp += 3;
-		ip += 3;
-		r1 = CLAMP(ip[0]); wp[0] = (r1-r2) & mask; r2 = r1;
-		g1 = CLAMP(ip[1]); wp[1] = (g1-g2) & mask; g2 = g1;
-		b1 = CLAMP(ip[2]); wp[2] = (b1-b2) & mask; b2 = b1;
-	    }
-	} else if (stride == 4) {
-	    r2 = wp[0] = CLAMP(ip[0]);  g2 = wp[1] = CLAMP(ip[1]);
-	    b2 = wp[2] = CLAMP(ip[2]);  a2 = wp[3] = CLAMP(ip[3]);
-	    n -= 4;
-	    while (n > 0) {
-		n -= 4;
-		wp += 4;
-		ip += 4;
-		r1 = CLAMP(ip[0]); wp[0] = (r1-r2) & mask; r2 = r1;
-		g1 = CLAMP(ip[1]); wp[1] = (g1-g2) & mask; g2 = g1;
-		b1 = CLAMP(ip[2]); wp[2] = (b1-b2) & mask; b2 = b1;
-		a1 = CLAMP(ip[3]); wp[3] = (a1-a2) & mask; a2 = a1;
-	    }
-	} else {
-	    ip += n - 1;	/* point to last one */
-	    wp += n - 1;	/* point to last one */
-	    n -= stride;
-	    while (n > 0) {
-		REPEAT(stride, wp[0] = CLAMP(ip[0]);
-				wp[stride] -= wp[0];
-				wp[stride] &= mask;
-				wp--; ip--)
-		n -= stride;
-	    }
-	    REPEAT(stride, wp[0] = CLAMP(ip[0]); wp--; ip--)
-	}
-    }
-}
-
-
-static void
-horizontalDifference8(unsigned char *ip, int n, int stride, 
-	unsigned short *wp, uint16 *From8)
-{
-    register int  r1, g1, b1, a1, r2, g2, b2, a2, mask;
-
-#undef	 CLAMP
-#define  CLAMP(v) (From8[(v)])
-
-    mask = CODE_MASK;
-    if (n >= stride) {
-	if (stride == 3) {
-	    r2 = wp[0] = CLAMP(ip[0]);  g2 = wp[1] = CLAMP(ip[1]);
-	    b2 = wp[2] = CLAMP(ip[2]);
-	    n -= 3;
-	    while (n > 0) {
-		n -= 3;
-		r1 = CLAMP(ip[3]); wp[3] = (r1-r2) & mask; r2 = r1;
-		g1 = CLAMP(ip[4]); wp[4] = (g1-g2) & mask; g2 = g1;
-		b1 = CLAMP(ip[5]); wp[5] = (b1-b2) & mask; b2 = b1;
-		wp += 3;
-		ip += 3;
-	    }
-	} else if (stride == 4) {
-	    r2 = wp[0] = CLAMP(ip[0]);  g2 = wp[1] = CLAMP(ip[1]);
-	    b2 = wp[2] = CLAMP(ip[2]);  a2 = wp[3] = CLAMP(ip[3]);
-	    n -= 4;
-	    while (n > 0) {
-		n -= 4;
-		r1 = CLAMP(ip[4]); wp[4] = (r1-r2) & mask; r2 = r1;
-		g1 = CLAMP(ip[5]); wp[5] = (g1-g2) & mask; g2 = g1;
-		b1 = CLAMP(ip[6]); wp[6] = (b1-b2) & mask; b2 = b1;
-		a1 = CLAMP(ip[7]); wp[7] = (a1-a2) & mask; a2 = a1;
-		wp += 4;
-		ip += 4;
-	    }
-	} else {
-	    wp += n + stride - 1;	/* point to last one */
-	    ip += n + stride - 1;	/* point to last one */
-	    n -= stride;
-	    while (n > 0) {
-		REPEAT(stride, wp[0] = CLAMP(ip[0]);
-				wp[stride] -= wp[0];
-				wp[stride] &= mask;
-				wp--; ip--)
-		n -= stride;
-	    }
-	    REPEAT(stride, wp[0] = CLAMP(ip[0]); wp--; ip--)
-	}
-    }
-}
-
-/*
- * Encode a chunk of pixels.
- */
-static int
-PixarLogEncode(TIFF* tif, tidata_t bp, tsize_t cc, tsample_t s)
-{
-	TIFFDirectory *td = &tif->tif_dir;
-	PixarLogState *sp = EncoderState(tif);
-	static const char module[] = "PixarLogEncode";
-	int 	i, n, llen;
-	unsigned short * up;
-
-	(void) s;
-
-	switch (sp->user_datafmt) {
-	case PIXARLOGDATAFMT_FLOAT:
-		n = cc / sizeof(float);		/* XXX float == 32 bits */
-		break;
-	case PIXARLOGDATAFMT_16BIT:
-	case PIXARLOGDATAFMT_12BITPICIO:
-	case PIXARLOGDATAFMT_11BITLOG:
-		n = cc / sizeof(uint16);	/* XXX uint16 == 16 bits */
-		break;
-	case PIXARLOGDATAFMT_8BIT:
-	case PIXARLOGDATAFMT_8BITABGR:
-		n = cc;
-		break;
-	default:
-		TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-			"%d bit input not supported in PixarLog",
-			td->td_bitspersample);
-		return 0;
-	}
-
-	llen = sp->stride * td->td_imagewidth;
-
-	for (i = 0, up = sp->tbuf; i < n; i += llen, up += llen) {
-		switch (sp->user_datafmt)  {
-		case PIXARLOGDATAFMT_FLOAT:
-			horizontalDifferenceF((float *)bp, llen, 
-				sp->stride, up, sp->FromLT2);
-			bp += llen * sizeof(float);
-			break;
-		case PIXARLOGDATAFMT_16BIT:
-			horizontalDifference16((uint16 *)bp, llen, 
-				sp->stride, up, sp->From14);
-			bp += llen * sizeof(uint16);
-			break;
-		case PIXARLOGDATAFMT_8BIT:
-			horizontalDifference8((unsigned char *)bp, llen, 
-				sp->stride, up, sp->From8);
-			bp += llen * sizeof(unsigned char);
-			break;
-		default:
-			TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-				"%d bit input not supported in PixarLog",
-				td->td_bitspersample);
-			return 0;
-		}
-	}
- 
-	sp->stream.next_in = (unsigned char *) sp->tbuf;
-	sp->stream.avail_in = n * sizeof(uint16);
-
-	do {
-		if (deflate(&sp->stream, Z_NO_FLUSH) != Z_OK) {
-			TIFFErrorExt(tif->tif_clientdata, module, "%s: Encoder error: %s",
-			    tif->tif_name, sp->stream.msg);
-			return (0);
-		}
-		if (sp->stream.avail_out == 0) {
-			tif->tif_rawcc = tif->tif_rawdatasize;
-			TIFFFlushData1(tif);
-			sp->stream.next_out = tif->tif_rawdata;
-			sp->stream.avail_out = tif->tif_rawdatasize;
-		}
-	} while (sp->stream.avail_in > 0);
-	return (1);
-}
-
-/*
- * Finish off an encoded strip by flushing the last
- * string and tacking on an End Of Information code.
- */
-
-static int
-PixarLogPostEncode(TIFF* tif)
-{
-	PixarLogState *sp = EncoderState(tif);
-	static const char module[] = "PixarLogPostEncode";
-	int state;
-
-	sp->stream.avail_in = 0;
-
-	do {
-		state = deflate(&sp->stream, Z_FINISH);
-		switch (state) {
-		case Z_STREAM_END:
-		case Z_OK:
-		    if (sp->stream.avail_out != (uint32)tif->tif_rawdatasize) {
-			    tif->tif_rawcc =
-				tif->tif_rawdatasize - sp->stream.avail_out;
-			    TIFFFlushData1(tif);
-			    sp->stream.next_out = tif->tif_rawdata;
-			    sp->stream.avail_out = tif->tif_rawdatasize;
-		    }
-		    break;
-		default:
-			TIFFErrorExt(tif->tif_clientdata, module, "%s: zlib error: %s",
-			tif->tif_name, sp->stream.msg);
-		    return (0);
-		}
-	} while (state != Z_STREAM_END);
-	return (1);
-}
-
-static void
-PixarLogClose(TIFF* tif)
-{
-	TIFFDirectory *td = &tif->tif_dir;
-
-	/* In a really sneaky maneuver, on close, we covertly modify both
-	 * bitspersample and sampleformat in the directory to indicate
-	 * 8-bit linear.  This way, the decode "just works" even for
-	 * readers that don't know about PixarLog, or how to set
-	 * the PIXARLOGDATFMT pseudo-tag.
-	 */
-	td->td_bitspersample = 8;
-	td->td_sampleformat = SAMPLEFORMAT_UINT;
-}
-
-static void
-PixarLogCleanup(TIFF* tif)
-{
-	PixarLogState* sp = (PixarLogState*) tif->tif_data;
-
-	assert(sp != 0);
-
-	(void)TIFFPredictorCleanup(tif);
-
-	tif->tif_tagmethods.vgetfield = sp->vgetparent;
-	tif->tif_tagmethods.vsetfield = sp->vsetparent;
-
-	if (sp->FromLT2) _TIFFfree(sp->FromLT2);
-	if (sp->From14) _TIFFfree(sp->From14);
-	if (sp->From8) _TIFFfree(sp->From8);
-	if (sp->ToLinearF) _TIFFfree(sp->ToLinearF);
-	if (sp->ToLinear16) _TIFFfree(sp->ToLinear16);
-	if (sp->ToLinear8) _TIFFfree(sp->ToLinear8);
-	if (sp->state&PLSTATE_INIT) {
-		if (tif->tif_mode == O_RDONLY)
-			inflateEnd(&sp->stream);
-		else
-			deflateEnd(&sp->stream);
-	}
-	if (sp->tbuf)
-		_TIFFfree(sp->tbuf);
-	_TIFFfree(sp);
-	tif->tif_data = NULL;
-
-	_TIFFSetDefaultCompressionState(tif);
-}
-
-static int
-PixarLogVSetField(TIFF* tif, ttag_t tag, va_list ap)
-{
-    PixarLogState *sp = (PixarLogState *)tif->tif_data;
-    int result;
-    static const char module[] = "PixarLogVSetField";
-
-    switch (tag) {
-     case TIFFTAG_PIXARLOGQUALITY:
-		sp->quality = va_arg(ap, int);
-		if (tif->tif_mode != O_RDONLY && (sp->state&PLSTATE_INIT)) {
-			if (deflateParams(&sp->stream,
-			    sp->quality, Z_DEFAULT_STRATEGY) != Z_OK) {
-				TIFFErrorExt(tif->tif_clientdata, module, "%s: zlib error: %s",
-					tif->tif_name, sp->stream.msg);
-				return (0);
-			}
-		}
-		return (1);
-     case TIFFTAG_PIXARLOGDATAFMT:
-	sp->user_datafmt = va_arg(ap, int);
-	/* Tweak the TIFF header so that the rest of libtiff knows what
-	 * size of data will be passed between app and library, and
-	 * assume that the app knows what it is doing and is not
-	 * confused by these header manipulations...
-	 */
-	switch (sp->user_datafmt) {
-	 case PIXARLOGDATAFMT_8BIT:
-	 case PIXARLOGDATAFMT_8BITABGR:
-	    TIFFSetField(tif, TIFFTAG_BITSPERSAMPLE, 8);
-	    TIFFSetField(tif, TIFFTAG_SAMPLEFORMAT, SAMPLEFORMAT_UINT);
-	    break;
-	 case PIXARLOGDATAFMT_11BITLOG:
-	    TIFFSetField(tif, TIFFTAG_BITSPERSAMPLE, 16);
-	    TIFFSetField(tif, TIFFTAG_SAMPLEFORMAT, SAMPLEFORMAT_UINT);
-	    break;
-	 case PIXARLOGDATAFMT_12BITPICIO:
-	    TIFFSetField(tif, TIFFTAG_BITSPERSAMPLE, 16);
-	    TIFFSetField(tif, TIFFTAG_SAMPLEFORMAT, SAMPLEFORMAT_INT);
-	    break;
-	 case PIXARLOGDATAFMT_16BIT:
-	    TIFFSetField(tif, TIFFTAG_BITSPERSAMPLE, 16);
-	    TIFFSetField(tif, TIFFTAG_SAMPLEFORMAT, SAMPLEFORMAT_UINT);
-	    break;
-	 case PIXARLOGDATAFMT_FLOAT:
-	    TIFFSetField(tif, TIFFTAG_BITSPERSAMPLE, 32);
-	    TIFFSetField(tif, TIFFTAG_SAMPLEFORMAT, SAMPLEFORMAT_IEEEFP);
-	    break;
-	}
-	/*
-	 * Must recalculate sizes should bits/sample change.
-	 */
-	tif->tif_tilesize = isTiled(tif) ? TIFFTileSize(tif) : (tsize_t) -1;
-	tif->tif_scanlinesize = TIFFScanlineSize(tif);
-	result = 1;		/* NB: pseudo tag */
-	break;
-     default:
-	result = (*sp->vsetparent)(tif, tag, ap);
-    }
-    return (result);
-}
-
-static int
-PixarLogVGetField(TIFF* tif, ttag_t tag, va_list ap)
-{
-    PixarLogState *sp = (PixarLogState *)tif->tif_data;
-
-    switch (tag) {
-     case TIFFTAG_PIXARLOGQUALITY:
-	*va_arg(ap, int*) = sp->quality;
-	break;
-     case TIFFTAG_PIXARLOGDATAFMT:
-	*va_arg(ap, int*) = sp->user_datafmt;
-	break;
-     default:
-	return (*sp->vgetparent)(tif, tag, ap);
-    }
-    return (1);
-}
-
-static const TIFFFieldInfo pixarlogFieldInfo[] = {
-    {TIFFTAG_PIXARLOGDATAFMT,0,0,TIFF_ANY,  FIELD_PSEUDO,FALSE,FALSE,""},
-    {TIFFTAG_PIXARLOGQUALITY,0,0,TIFF_ANY,  FIELD_PSEUDO,FALSE,FALSE,""}
-};
-
-int
-TIFFInitPixarLog(TIFF* tif, int scheme)
-{
-	PixarLogState* sp;
-
-	assert(scheme == COMPRESSION_PIXARLOG);
-
-	/*
-	 * Allocate state block so tag methods have storage to record values.
-	 */
-	tif->tif_data = (tidata_t) _TIFFmalloc(sizeof (PixarLogState));
-	if (tif->tif_data == NULL)
-		goto bad;
-	sp = (PixarLogState*) tif->tif_data;
-	_TIFFmemset(sp, 0, sizeof (*sp));
-	sp->stream.data_type = Z_BINARY;
-	sp->user_datafmt = PIXARLOGDATAFMT_UNKNOWN;
-
-	/*
-	 * Install codec methods.
-	 */
-	tif->tif_setupdecode = PixarLogSetupDecode;
-	tif->tif_predecode = PixarLogPreDecode;
-	tif->tif_decoderow = PixarLogDecode;
-	tif->tif_decodestrip = PixarLogDecode;
-	tif->tif_decodetile = PixarLogDecode;
-	tif->tif_setupencode = PixarLogSetupEncode;
-	tif->tif_preencode = PixarLogPreEncode;
-	tif->tif_postencode = PixarLogPostEncode;
-	tif->tif_encoderow = PixarLogEncode;
-	tif->tif_encodestrip = PixarLogEncode;
-	tif->tif_encodetile = PixarLogEncode;
-	tif->tif_close = PixarLogClose;
-	tif->tif_cleanup = PixarLogCleanup;
-
-	/* Override SetField so we can handle our private pseudo-tag */
-	_TIFFMergeFieldInfo(tif, pixarlogFieldInfo, N(pixarlogFieldInfo));
-	sp->vgetparent = tif->tif_tagmethods.vgetfield;
-	tif->tif_tagmethods.vgetfield = PixarLogVGetField;   /* hook for codec tags */
-	sp->vsetparent = tif->tif_tagmethods.vsetfield;
-	tif->tif_tagmethods.vsetfield = PixarLogVSetField;   /* hook for codec tags */
-
-	/* Default values for codec-specific fields */
-	sp->quality = Z_DEFAULT_COMPRESSION; /* default comp. level */
-	sp->state = 0;
-
-	/* we don't wish to use the predictor, 
-	 * the default is none, which predictor value 1
-	 */
-	(void) TIFFPredictorInit(tif);
-
-	/*
-	 * build the companding tables 
-	 */
-	PixarLogMakeTables(sp);
-
-	return (1);
-bad:
-	TIFFErrorExt(tif->tif_clientdata, "TIFFInitPixarLog",
-		     "No space for PixarLog state block");
-	return (0);
-}
-#endif /* PIXARLOG_SUPPORT */
-
-/* vim: set ts=8 sts=8 sw=8 noet: */
diff --git a/src/tiff/tif_predict.c b/src/tiff/tif_predict.c
deleted file mode 100644
index 32b58cd..0000000
--- a/src/tiff/tif_predict.c
+++ /dev/null
@@ -1,626 +0,0 @@
-/* $Id: tif_predict.c 4825 2006-08-16 13:01:53Z lubia $ */
-
-/*
- * Copyright (c) 1988-1997 Sam Leffler
- * Copyright (c) 1991-1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and 
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- * 
- * 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 SAM LEFFLER OR SILICON GRAPHICS 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.
- */
-
-/*
- * TIFF Library.
- *
- * Predictor Tag Support (used by multiple codecs).
- */
-#include "tiffiop.h"
-#include "tif_predict.h"
-
-#define	PredictorState(tif)	((TIFFPredictorState*) (tif)->tif_data)
-
-static	void horAcc8(TIFF*, tidata_t, tsize_t);
-static	void horAcc16(TIFF*, tidata_t, tsize_t);
-static	void swabHorAcc16(TIFF*, tidata_t, tsize_t);
-static	void horDiff8(TIFF*, tidata_t, tsize_t);
-static	void horDiff16(TIFF*, tidata_t, tsize_t);
-static	void fpAcc(TIFF*, tidata_t, tsize_t);
-static	void fpDiff(TIFF*, tidata_t, tsize_t);
-static	int PredictorDecodeRow(TIFF*, tidata_t, tsize_t, tsample_t);
-static	int PredictorDecodeTile(TIFF*, tidata_t, tsize_t, tsample_t);
-static	int PredictorEncodeRow(TIFF*, tidata_t, tsize_t, tsample_t);
-static	int PredictorEncodeTile(TIFF*, tidata_t, tsize_t, tsample_t);
-
-static int
-PredictorSetup(TIFF* tif)
-{
-	static const char module[] = "PredictorSetup";
-
-	TIFFPredictorState* sp = PredictorState(tif);
-	TIFFDirectory* td = &tif->tif_dir;
-
-	switch (sp->predictor)		/* no differencing */
-	{
-		case PREDICTOR_NONE:
-			return 1;
-		case PREDICTOR_HORIZONTAL:
-			if (td->td_bitspersample != 8
-			    && td->td_bitspersample != 16) {
-				TIFFErrorExt(tif->tif_clientdata, module,
-    "Horizontal differencing \"Predictor\" not supported with %d-bit samples",
-					  td->td_bitspersample);
-				return 0;
-			}
-			break;
-		case PREDICTOR_FLOATINGPOINT:
-			if (td->td_sampleformat != SAMPLEFORMAT_IEEEFP) {
-				TIFFErrorExt(tif->tif_clientdata, module,
-	"Floating point \"Predictor\" not supported with %d data format",
-					  td->td_sampleformat);
-				return 0;
-			}
-			break;
-		default:
-			TIFFErrorExt(tif->tif_clientdata, module,
-				  "\"Predictor\" value %d not supported",
-				  sp->predictor);
-			return 0;
-	}
-	sp->stride = (td->td_planarconfig == PLANARCONFIG_CONTIG ?
-	    td->td_samplesperpixel : 1);
-	/*
-	 * Calculate the scanline/tile-width size in bytes.
-	 */
-	if (isTiled(tif))
-		sp->rowsize = TIFFTileRowSize(tif);
-	else
-		sp->rowsize = TIFFScanlineSize(tif);
-
-	return 1;
-}
-
-static int
-PredictorSetupDecode(TIFF* tif)
-{
-	TIFFPredictorState* sp = PredictorState(tif);
-	TIFFDirectory* td = &tif->tif_dir;
-
-	if (!(*sp->setupdecode)(tif) || !PredictorSetup(tif))
-		return 0;
-
-	if (sp->predictor == 2) {
-		switch (td->td_bitspersample) {
-			case 8:  sp->pfunc = horAcc8; break;
-			case 16: sp->pfunc = horAcc16; break;
-		}
-		/*
-		 * Override default decoding method with one that does the
-		 * predictor stuff.
-		 */
-		sp->coderow = tif->tif_decoderow;
-		tif->tif_decoderow = PredictorDecodeRow;
-		sp->codestrip = tif->tif_decodestrip;
-		tif->tif_decodestrip = PredictorDecodeTile;
-		sp->codetile = tif->tif_decodetile;
-		tif->tif_decodetile = PredictorDecodeTile;
-		/*
-		 * If the data is horizontally differenced 16-bit data that
-		 * requires byte-swapping, then it must be byte swapped before
-		 * the accumulation step.  We do this with a special-purpose
-		 * routine and override the normal post decoding logic that
-		 * the library setup when the directory was read.
-		 */
-		if (tif->tif_flags & TIFF_SWAB) {
-			if (sp->pfunc == horAcc16) {
-				sp->pfunc = swabHorAcc16;
-				tif->tif_postdecode = _TIFFNoPostDecode;
-			} /* else handle 32-bit case... */
-		}
-	}
-
-	else if (sp->predictor == 3) {
-		sp->pfunc = fpAcc;
-		/*
-		 * Override default decoding method with one that does the
-		 * predictor stuff.
-		 */
-		sp->coderow = tif->tif_decoderow;
-		tif->tif_decoderow = PredictorDecodeRow;
-		sp->codestrip = tif->tif_decodestrip;
-		tif->tif_decodestrip = PredictorDecodeTile;
-		sp->codetile = tif->tif_decodetile;
-		tif->tif_decodetile = PredictorDecodeTile;
-		/*
-		 * The data should not be swapped outside of the floating
-		 * point predictor, the accumulation routine should return
-		 * byres in the native order.
-		 */
-		if (tif->tif_flags & TIFF_SWAB) {
-			tif->tif_postdecode = _TIFFNoPostDecode;
-		}
-		/*
-		 * Allocate buffer to keep the decoded bytes before
-		 * rearranging in the ight order
-		 */
-	}
-
-	return 1;
-}
-
-static int
-PredictorSetupEncode(TIFF* tif)
-{
-	TIFFPredictorState* sp = PredictorState(tif);
-	TIFFDirectory* td = &tif->tif_dir;
-
-	if (!(*sp->setupencode)(tif) || !PredictorSetup(tif))
-		return 0;
-
-	if (sp->predictor == 2) {
-		switch (td->td_bitspersample) {
-			case 8:  sp->pfunc = horDiff8; break;
-			case 16: sp->pfunc = horDiff16; break;
-		}
-		/*
-		 * Override default encoding method with one that does the
-		 * predictor stuff.
-		 */
-		sp->coderow = tif->tif_encoderow;
-		tif->tif_encoderow = PredictorEncodeRow;
-		sp->codestrip = tif->tif_encodestrip;
-		tif->tif_encodestrip = PredictorEncodeTile;
-		sp->codetile = tif->tif_encodetile;
-		tif->tif_encodetile = PredictorEncodeTile;
-	}
-	
-	else if (sp->predictor == 3) {
-		sp->pfunc = fpDiff;
-		/*
-		 * Override default encoding method with one that does the
-		 * predictor stuff.
-		 */
-		sp->coderow = tif->tif_encoderow;
-		tif->tif_encoderow = PredictorEncodeRow;
-		sp->codestrip = tif->tif_encodestrip;
-		tif->tif_encodestrip = PredictorEncodeTile;
-		sp->codetile = tif->tif_encodetile;
-		tif->tif_encodetile = PredictorEncodeTile;
-	}
-
-	return 1;
-}
-
-#define REPEAT4(n, op)		\
-    switch (n) {		\
-    default: { int i; for (i = n-4; i > 0; i--) { op; } } \
-    case 4:  op;		\
-    case 3:  op;		\
-    case 2:  op;		\
-    case 1:  op;		\
-    case 0:  ;			\
-    }
-
-static void
-horAcc8(TIFF* tif, tidata_t cp0, tsize_t cc)
-{
-	tsize_t stride = PredictorState(tif)->stride;
-
-	char* cp = (char*) cp0;
-	if (cc > stride) {
-		cc -= stride;
-		/*
-		 * Pipeline the most common cases.
-		 */
-		if (stride == 3)  {
-			unsigned int cr = cp[0];
-			unsigned int cg = cp[1];
-			unsigned int cb = cp[2];
-			do {
-				cc -= 3, cp += 3;
-				cp[0] = (char) (cr += cp[0]);
-				cp[1] = (char) (cg += cp[1]);
-				cp[2] = (char) (cb += cp[2]);
-			} while ((int32) cc > 0);
-		} else if (stride == 4)  {
-			unsigned int cr = cp[0];
-			unsigned int cg = cp[1];
-			unsigned int cb = cp[2];
-			unsigned int ca = cp[3];
-			do {
-				cc -= 4, cp += 4;
-				cp[0] = (char) (cr += cp[0]);
-				cp[1] = (char) (cg += cp[1]);
-				cp[2] = (char) (cb += cp[2]);
-				cp[3] = (char) (ca += cp[3]);
-			} while ((int32) cc > 0);
-		} else  {
-			do {
-				REPEAT4(stride, cp[stride] =
-					(char) (cp[stride] + *cp); cp++)
-				cc -= stride;
-			} while ((int32) cc > 0);
-		}
-	}
-}
-
-static void
-swabHorAcc16(TIFF* tif, tidata_t cp0, tsize_t cc)
-{
-	tsize_t stride = PredictorState(tif)->stride;
-	uint16* wp = (uint16*) cp0;
-	tsize_t wc = cc / 2;
-
-	if (wc > stride) {
-		TIFFSwabArrayOfShort(wp, wc);
-		wc -= stride;
-		do {
-			REPEAT4(stride, wp[stride] += wp[0]; wp++)
-			wc -= stride;
-		} while ((int32) wc > 0);
-	}
-}
-
-static void
-horAcc16(TIFF* tif, tidata_t cp0, tsize_t cc)
-{
-	tsize_t stride = PredictorState(tif)->stride;
-	uint16* wp = (uint16*) cp0;
-	tsize_t wc = cc / 2;
-
-	if (wc > stride) {
-		wc -= stride;
-		do {
-			REPEAT4(stride, wp[stride] += wp[0]; wp++)
-			wc -= stride;
-		} while ((int32) wc > 0);
-	}
-}
-
-/*
- * Floating point predictor accumulation routine.
- */
-static void
-fpAcc(TIFF* tif, tidata_t cp0, tsize_t cc)
-{
-	tsize_t stride = PredictorState(tif)->stride;
-	uint32 bps = tif->tif_dir.td_bitspersample / 8;
-	tsize_t wc = cc / bps;
-	tsize_t count = cc;
-	uint8 *cp = (uint8 *) cp0;
-	uint8 *tmp = (uint8 *)_TIFFmalloc(cc);
-
-	if (!tmp)
-		return;
-
-	while (count > stride) {
-		REPEAT4(stride, cp[stride] += cp[0]; cp++)
-		count -= stride;
-	}
-
-	_TIFFmemcpy(tmp, cp0, cc);
-	cp = (uint8 *) cp0;
-	for (count = 0; count < wc; count++) {
-		uint32 byte;
-		for (byte = 0; byte < bps; byte++) {
-#if WORDS_BIGENDIAN
-			cp[bps * count + byte] = tmp[byte * wc + count];
-#else
-			cp[bps * count + byte] =
-				tmp[(bps - byte - 1) * wc + count];
-#endif
-		}
-	}
-	_TIFFfree(tmp);
-}
-
-/*
- * Decode a scanline and apply the predictor routine.
- */
-static int
-PredictorDecodeRow(TIFF* tif, tidata_t op0, tsize_t occ0, tsample_t s)
-{
-	TIFFPredictorState *sp = PredictorState(tif);
-
-	assert(sp != NULL);
-	assert(sp->coderow != NULL);
-	assert(sp->pfunc != NULL);
-
-	if ((*sp->coderow)(tif, op0, occ0, s)) {
-		(*sp->pfunc)(tif, op0, occ0);
-		return 1;
-	} else
-		return 0;
-}
-
-/*
- * Decode a tile/strip and apply the predictor routine.
- * Note that horizontal differencing must be done on a
- * row-by-row basis.  The width of a "row" has already
- * been calculated at pre-decode time according to the
- * strip/tile dimensions.
- */
-static int
-PredictorDecodeTile(TIFF* tif, tidata_t op0, tsize_t occ0, tsample_t s)
-{
-	TIFFPredictorState *sp = PredictorState(tif);
-
-	assert(sp != NULL);
-	assert(sp->codetile != NULL);
-
-	if ((*sp->codetile)(tif, op0, occ0, s)) {
-		tsize_t rowsize = sp->rowsize;
-		assert(rowsize > 0);
-		assert(sp->pfunc != NULL);
-		while ((long)occ0 > 0) {
-			(*sp->pfunc)(tif, op0, (tsize_t) rowsize);
-			occ0 -= rowsize;
-			op0 += rowsize;
-		}
-		return 1;
-	} else
-		return 0;
-}
-
-static void
-horDiff8(TIFF* tif, tidata_t cp0, tsize_t cc)
-{
-	TIFFPredictorState* sp = PredictorState(tif);
-	tsize_t stride = sp->stride;
-	char* cp = (char*) cp0;
-
-	if (cc > stride) {
-		cc -= stride;
-		/*
-		 * Pipeline the most common cases.
-		 */
-		if (stride == 3) {
-			int r1, g1, b1;
-			int r2 = cp[0];
-			int g2 = cp[1];
-			int b2 = cp[2];
-			do {
-				r1 = cp[3]; cp[3] = r1-r2; r2 = r1;
-				g1 = cp[4]; cp[4] = g1-g2; g2 = g1;
-				b1 = cp[5]; cp[5] = b1-b2; b2 = b1;
-				cp += 3;
-			} while ((int32)(cc -= 3) > 0);
-		} else if (stride == 4) {
-			int r1, g1, b1, a1;
-			int r2 = cp[0];
-			int g2 = cp[1];
-			int b2 = cp[2];
-			int a2 = cp[3];
-			do {
-				r1 = cp[4]; cp[4] = r1-r2; r2 = r1;
-				g1 = cp[5]; cp[5] = g1-g2; g2 = g1;
-				b1 = cp[6]; cp[6] = b1-b2; b2 = b1;
-				a1 = cp[7]; cp[7] = a1-a2; a2 = a1;
-				cp += 4;
-			} while ((int32)(cc -= 4) > 0);
-		} else {
-			cp += cc - 1;
-			do {
-				REPEAT4(stride, cp[stride] -= cp[0]; cp--)
-			} while ((int32)(cc -= stride) > 0);
-		}
-	}
-}
-
-static void
-horDiff16(TIFF* tif, tidata_t cp0, tsize_t cc)
-{
-	TIFFPredictorState* sp = PredictorState(tif);
-	tsize_t stride = sp->stride;
-	int16 *wp = (int16*) cp0;
-	tsize_t wc = cc/2;
-
-	if (wc > stride) {
-		wc -= stride;
-		wp += wc - 1;
-		do {
-			REPEAT4(stride, wp[stride] -= wp[0]; wp--)
-			wc -= stride;
-		} while ((int32) wc > 0);
-	}
-}
-
-/*
- * Floating point predictor differencing routine.
- */
-static void
-fpDiff(TIFF* tif, tidata_t cp0, tsize_t cc)
-{
-	tsize_t stride = PredictorState(tif)->stride;
-	uint32 bps = tif->tif_dir.td_bitspersample / 8;
-	tsize_t wc = cc / bps;
-	tsize_t count;
-	uint8 *cp = (uint8 *) cp0;
-	uint8 *tmp = (uint8 *)_TIFFmalloc(cc);
-
-	if (!tmp)
-		return;
-
-	_TIFFmemcpy(tmp, cp0, cc);
-	for (count = 0; count < wc; count++) {
-		uint32 byte;
-		for (byte = 0; byte < bps; byte++) {
-#if WORDS_BIGENDIAN
-			cp[byte * wc + count] =	tmp[bps * count + byte];
-#else
-			cp[(bps - byte - 1) * wc + count] =
-				tmp[bps * count + byte];
-#endif
-		}
-	}
-	_TIFFfree(tmp);
-
-	cp = (uint8 *) cp0;
-	cp += cc - stride - 1;
-	for (count = cc; count > stride; count -= stride)
-		REPEAT4(stride, cp[stride] -= cp[0]; cp--)
-}
-
-static int
-PredictorEncodeRow(TIFF* tif, tidata_t bp, tsize_t cc, tsample_t s)
-{
-	TIFFPredictorState *sp = PredictorState(tif);
-
-	assert(sp != NULL);
-	assert(sp->pfunc != NULL);
-	assert(sp->coderow != NULL);
-
-	/* XXX horizontal differencing alters user's data XXX */
-	(*sp->pfunc)(tif, bp, cc);
-	return (*sp->coderow)(tif, bp, cc, s);
-}
-
-static int
-PredictorEncodeTile(TIFF* tif, tidata_t bp0, tsize_t cc0, tsample_t s)
-{
-	TIFFPredictorState *sp = PredictorState(tif);
-	tsize_t cc = cc0, rowsize;
-	unsigned char* bp = bp0;
-
-	assert(sp != NULL);
-	assert(sp->pfunc != NULL);
-	assert(sp->codetile != NULL);
-
-	rowsize = sp->rowsize;
-	assert(rowsize > 0);
-	while ((long)cc > 0) {
-		(*sp->pfunc)(tif, bp, (tsize_t) rowsize);
-		cc -= rowsize;
-		bp += rowsize;
-	}
-	return (*sp->codetile)(tif, bp0, cc0, s);
-}
-
-#define	FIELD_PREDICTOR	(FIELD_CODEC+0)		/* XXX */
-
-static const TIFFFieldInfo predictFieldInfo[] = {
-    { TIFFTAG_PREDICTOR,	 1, 1, TIFF_SHORT,	FIELD_PREDICTOR,
-      FALSE,	FALSE,	"Predictor" },
-};
-#define	N(a)	(sizeof (a) / sizeof (a[0]))
-
-static int
-PredictorVSetField(TIFF* tif, ttag_t tag, va_list ap)
-{
-	TIFFPredictorState *sp = PredictorState(tif);
-
-	assert(sp != NULL);
-	assert(sp->vsetparent != NULL);
-
-	switch (tag) {
-	case TIFFTAG_PREDICTOR:
-		sp->predictor = (uint16) va_arg(ap, int);
-		TIFFSetFieldBit(tif, FIELD_PREDICTOR);
-		break;
-	default:
-		return (*sp->vsetparent)(tif, tag, ap);
-	}
-	tif->tif_flags |= TIFF_DIRTYDIRECT;
-	return 1;
-}
-
-static int
-PredictorVGetField(TIFF* tif, ttag_t tag, va_list ap)
-{
-	TIFFPredictorState *sp = PredictorState(tif);
-
-	assert(sp != NULL);
-	assert(sp->vgetparent != NULL);
-
-	switch (tag) {
-	case TIFFTAG_PREDICTOR:
-		*va_arg(ap, uint16*) = sp->predictor;
-		break;
-	default:
-		return (*sp->vgetparent)(tif, tag, ap);
-	}
-	return 1;
-}
-
-static void
-PredictorPrintDir(TIFF* tif, FILE* fd, long flags)
-{
-	TIFFPredictorState* sp = PredictorState(tif);
-
-	(void) flags;
-	if (TIFFFieldSet(tif,FIELD_PREDICTOR)) {
-		fprintf(fd, "  Predictor: ");
-		switch (sp->predictor) {
-		case 1: fprintf(fd, "none "); break;
-		case 2: fprintf(fd, "horizontal differencing "); break;
-		case 3: fprintf(fd, "floating point predictor "); break;
-		}
-		fprintf(fd, "%u (0x%x)\n", sp->predictor, sp->predictor);
-	}
-	if (sp->printdir)
-		(*sp->printdir)(tif, fd, flags);
-}
-
-int
-TIFFPredictorInit(TIFF* tif)
-{
-	TIFFPredictorState* sp = PredictorState(tif);
-
-	assert(sp != 0);
-
-	/*
-	 * Merge codec-specific tag information and
-	 * override parent get/set field methods.
-	 */
-	_TIFFMergeFieldInfo(tif, predictFieldInfo, N(predictFieldInfo));
-	sp->vgetparent = tif->tif_tagmethods.vgetfield;
-	tif->tif_tagmethods.vgetfield =
-            PredictorVGetField;/* hook for predictor tag */
-	sp->vsetparent = tif->tif_tagmethods.vsetfield;
-	tif->tif_tagmethods.vsetfield =
-            PredictorVSetField;/* hook for predictor tag */
-	sp->printdir = tif->tif_tagmethods.printdir;
-	tif->tif_tagmethods.printdir =
-            PredictorPrintDir;	/* hook for predictor tag */
-
-	sp->setupdecode = tif->tif_setupdecode;
-	tif->tif_setupdecode = PredictorSetupDecode;
-	sp->setupencode = tif->tif_setupencode;
-	tif->tif_setupencode = PredictorSetupEncode;
-
-	sp->predictor = 1;			/* default value */
-	sp->pfunc = NULL;			/* no predictor routine */
-	return 1;
-}
-
-int
-TIFFPredictorCleanup(TIFF* tif)
-{
-	TIFFPredictorState* sp = PredictorState(tif);
-
-	assert(sp != 0);
-
-	tif->tif_tagmethods.vgetfield = sp->vgetparent;
-	tif->tif_tagmethods.vsetfield = sp->vsetparent;
-	tif->tif_tagmethods.printdir = sp->printdir;
-	tif->tif_setupdecode = sp->setupdecode;
-	tif->tif_setupencode = sp->setupencode;
-
-	return 1;
-}
-
-/* vim: set ts=8 sts=8 sw=8 noet: */
diff --git a/src/tiff/tif_predict.h b/src/tiff/tif_predict.h
deleted file mode 100644
index 0860d51..0000000
--- a/src/tiff/tif_predict.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/* $Id: tif_predict.h 4825 2006-08-16 13:01:53Z lubia $ */
-
-/*
- * Copyright (c) 1995-1997 Sam Leffler
- * Copyright (c) 1995-1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and 
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- * 
- * 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 SAM LEFFLER OR SILICON GRAPHICS 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.
- */
-
-#ifndef _TIFFPREDICT_
-#define	_TIFFPREDICT_
-/*
- * ``Library-private'' Support for the Predictor Tag
- */
-
-/*
- * Codecs that want to support the Predictor tag must place
- * this structure first in their private state block so that
- * the predictor code can cast tif_data to find its state.
- */
-typedef struct {
-	int		predictor;	/* predictor tag value */
-	int		stride;		/* sample stride over data */
-	tsize_t		rowsize;	/* tile/strip row size */
-
-	TIFFPostMethod	pfunc;		/* horizontal differencer/accumulator */
-	TIFFCodeMethod	coderow;	/* parent codec encode/decode row */
-	TIFFCodeMethod	codestrip;	/* parent codec encode/decode strip */
-	TIFFCodeMethod	codetile;	/* parent codec encode/decode tile */
-	TIFFVGetMethod	vgetparent;	/* super-class method */
-	TIFFVSetMethod	vsetparent;	/* super-class method */
-	TIFFPrintMethod	printdir;	/* super-class method */
-	TIFFBoolMethod	setupdecode;	/* super-class method */
-	TIFFBoolMethod	setupencode;	/* super-class method */
-} TIFFPredictorState;
-
-#if defined(__cplusplus)
-extern "C" {
-#endif
-extern	int TIFFPredictorInit(TIFF*);
-extern	int TIFFPredictorCleanup(TIFF*);
-#if defined(__cplusplus)
-}
-#endif
-#endif /* _TIFFPREDICT_ */
-
-/* vim: set ts=8 sts=8 sw=8 noet: */
diff --git a/src/tiff/tif_print.c b/src/tiff/tif_print.c
deleted file mode 100644
index 85c63af..0000000
--- a/src/tiff/tif_print.c
+++ /dev/null
@@ -1,639 +0,0 @@
-/* $Id: tif_print.c 4825 2006-08-16 13:01:53Z lubia $ */
-
-/*
- * Copyright (c) 1988-1997 Sam Leffler
- * Copyright (c) 1991-1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and 
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- * 
- * 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 SAM LEFFLER OR SILICON GRAPHICS 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.
- */
-
-/*
- * TIFF Library.
- *
- * Directory Printing Support
- */
-#include "tiffiop.h"
-#include <stdio.h>
-
-#include <ctype.h>
-
-static const char *photoNames[] = {
-    "min-is-white",				/* PHOTOMETRIC_MINISWHITE */
-    "min-is-black",				/* PHOTOMETRIC_MINISBLACK */
-    "RGB color",				/* PHOTOMETRIC_RGB */
-    "palette color (RGB from colormap)",	/* PHOTOMETRIC_PALETTE */
-    "transparency mask",			/* PHOTOMETRIC_MASK */
-    "separated",				/* PHOTOMETRIC_SEPARATED */
-    "YCbCr",					/* PHOTOMETRIC_YCBCR */
-    "7 (0x7)",
-    "CIE L*a*b*",				/* PHOTOMETRIC_CIELAB */
-};
-#define	NPHOTONAMES	(sizeof (photoNames) / sizeof (photoNames[0]))
-
-static const char *orientNames[] = {
-    "0 (0x0)",
-    "row 0 top, col 0 lhs",			/* ORIENTATION_TOPLEFT */
-    "row 0 top, col 0 rhs",			/* ORIENTATION_TOPRIGHT */
-    "row 0 bottom, col 0 rhs",			/* ORIENTATION_BOTRIGHT */
-    "row 0 bottom, col 0 lhs",			/* ORIENTATION_BOTLEFT */
-    "row 0 lhs, col 0 top",			/* ORIENTATION_LEFTTOP */
-    "row 0 rhs, col 0 top",			/* ORIENTATION_RIGHTTOP */
-    "row 0 rhs, col 0 bottom",			/* ORIENTATION_RIGHTBOT */
-    "row 0 lhs, col 0 bottom",			/* ORIENTATION_LEFTBOT */
-};
-#define	NORIENTNAMES	(sizeof (orientNames) / sizeof (orientNames[0]))
-
-static void
-_TIFFPrintField(FILE* fd, const TIFFFieldInfo *fip,
-		uint32 value_count, void *raw_data)
-{
-	uint32 j;
-		
-	fprintf(fd, "  %s: ", fip->field_name);
-
-	for(j = 0; j < value_count; j++) {
-		if(fip->field_type == TIFF_BYTE)
-			fprintf(fd, "%u", ((uint8 *) raw_data)[j]);
-		else if(fip->field_type == TIFF_UNDEFINED)
-			fprintf(fd, "0x%x",
-				(unsigned int) ((unsigned char *) raw_data)[j]);
-		else if(fip->field_type == TIFF_SBYTE)
-			fprintf(fd, "%d", ((int8 *) raw_data)[j]);
-		else if(fip->field_type == TIFF_SHORT)
-			fprintf(fd, "%u", ((uint16 *) raw_data)[j]);
-		else if(fip->field_type == TIFF_SSHORT)
-			fprintf(fd, "%d", ((int16 *) raw_data)[j]);
-		else if(fip->field_type == TIFF_LONG)
-			fprintf(fd, "%lu",
-				(unsigned long)((uint32 *) raw_data)[j]);
-		else if(fip->field_type == TIFF_SLONG)
-			fprintf(fd, "%ld", (long)((int32 *) raw_data)[j]);
-		else if(fip->field_type == TIFF_RATIONAL
-			|| fip->field_type == TIFF_SRATIONAL
-			|| fip->field_type == TIFF_FLOAT)
-			fprintf(fd, "%f", ((float *) raw_data)[j]);
-		else if(fip->field_type == TIFF_IFD)
-			fprintf(fd, "0x%ulx", ((uint32 *) raw_data)[j]);
-		else if(fip->field_type == TIFF_ASCII) {
-			fprintf(fd, "%s", (char *) raw_data);
-			break;
-		}
-		else if(fip->field_type == TIFF_DOUBLE)
-			fprintf(fd, "%f", ((double *) raw_data)[j]);
-		else if(fip->field_type == TIFF_FLOAT)
-			fprintf(fd, "%f", ((float *)raw_data)[j]);
-		else {
-			fprintf(fd, "<unsupported data type in TIFFPrint>");
-			break;
-		}
-
-		if(j < value_count - 1)
-			fprintf(fd, ",");
-	}
-
-	fprintf(fd, "\n");
-}
-
-static int
-_TIFFPrettyPrintField(TIFF* tif, FILE* fd, ttag_t tag,
-		      uint32 value_count, void *raw_data)
-{
-	TIFFDirectory *td = &tif->tif_dir;
-
-	switch (tag)
-	{
-		case TIFFTAG_INKSET:
-			fprintf(fd, "  Ink Set: ");
-			switch (*((uint16*)raw_data)) {
-				case INKSET_CMYK:
-					fprintf(fd, "CMYK\n");
-					break;
-				default:
-					fprintf(fd, "%u (0x%x)\n",
-						*((uint16*)raw_data),
-						*((uint16*)raw_data));
-					break;
-			}
-			return 1;
-		case TIFFTAG_DOTRANGE:
-			fprintf(fd, "  Dot Range: %u-%u\n",
-				((uint16*)raw_data)[0], ((uint16*)raw_data)[1]);
-			return 1;
-		case TIFFTAG_WHITEPOINT:
-			fprintf(fd, "  White Point: %g-%g\n",
-				((float *)raw_data)[0], ((float *)raw_data)[1]);			return 1;
-		case TIFFTAG_REFERENCEBLACKWHITE:
-		{
-			uint16 i;
-
-			fprintf(fd, "  Reference Black/White:\n");
-			for (i = 0; i < td->td_samplesperpixel; i++)
-			fprintf(fd, "    %2d: %5g %5g\n", i,
-				((float *)raw_data)[2*i+0],
-				((float *)raw_data)[2*i+1]);
-			return 1;
-		}
-		case TIFFTAG_XMLPACKET:
-		{
-			uint32 i;
-			
-			fprintf(fd, "  XMLPacket (XMP Metadata):\n" );
-			for(i = 0; i < value_count; i++)
-				fputc(((char *)raw_data)[i], fd);
-			fprintf( fd, "\n" );
-			return 1;
-		}
-		case TIFFTAG_RICHTIFFIPTC:
-			/*
-			 * XXX: for some weird reason RichTIFFIPTC tag
-			 * defined as array of LONG values.
-			 */
-			fprintf(fd,
-				"  RichTIFFIPTC Data: <present>, %lu bytes\n",
-				(unsigned long) value_count * 4);
-			return 1;
-		case TIFFTAG_PHOTOSHOP:
-			fprintf(fd, "  Photoshop Data: <present>, %lu bytes\n",
-				(unsigned long) value_count);
-			return 1;
-		case TIFFTAG_ICCPROFILE:
-			fprintf(fd, "  ICC Profile: <present>, %lu bytes\n",
-				(unsigned long) value_count);
-			return 1;
-		case TIFFTAG_STONITS:
-			fprintf(fd,
-				"  Sample to Nits conversion factor: %.4e\n",
-				*((double*)raw_data));
-			return 1;
-        }
-
-	return 0;
-}
-
-/*
- * Print the contents of the current directory
- * to the specified stdio file stream.
- */
-void
-TIFFPrintDirectory(TIFF* tif, FILE* fd, long flags)
-{
-	TIFFDirectory *td = &tif->tif_dir;
-	char *sep;
-	uint16 i;
-	long l, n;
-
-	fprintf(fd, "TIFF Directory at offset 0x%lx (%lu)\n",
-		(unsigned long)tif->tif_diroff, (unsigned long)tif->tif_diroff);
-	if (TIFFFieldSet(tif,FIELD_SUBFILETYPE)) {
-		fprintf(fd, "  Subfile Type:");
-		sep = " ";
-		if (td->td_subfiletype & FILETYPE_REDUCEDIMAGE) {
-			fprintf(fd, "%sreduced-resolution image", sep);
-			sep = "/";
-		}
-		if (td->td_subfiletype & FILETYPE_PAGE) {
-			fprintf(fd, "%smulti-page document", sep);
-			sep = "/";
-		}
-		if (td->td_subfiletype & FILETYPE_MASK)
-			fprintf(fd, "%stransparency mask", sep);
-		fprintf(fd, " (%lu = 0x%lx)\n",
-		    (long) td->td_subfiletype, (long) td->td_subfiletype);
-	}
-	if (TIFFFieldSet(tif,FIELD_IMAGEDIMENSIONS)) {
-		fprintf(fd, "  Image Width: %lu Image Length: %lu",
-		    (unsigned long) td->td_imagewidth, (unsigned long) td->td_imagelength);
-		if (TIFFFieldSet(tif,FIELD_IMAGEDEPTH))
-			fprintf(fd, " Image Depth: %lu",
-			    (unsigned long) td->td_imagedepth);
-		fprintf(fd, "\n");
-	}
-	if (TIFFFieldSet(tif,FIELD_TILEDIMENSIONS)) {
-		fprintf(fd, "  Tile Width: %lu Tile Length: %lu",
-		    (unsigned long) td->td_tilewidth, (unsigned long) td->td_tilelength);
-		if (TIFFFieldSet(tif,FIELD_TILEDEPTH))
-			fprintf(fd, " Tile Depth: %lu",
-			    (unsigned long) td->td_tiledepth);
-		fprintf(fd, "\n");
-	}
-	if (TIFFFieldSet(tif,FIELD_RESOLUTION)) {
-		fprintf(fd, "  Resolution: %g, %g",
-		    td->td_xresolution, td->td_yresolution);
-		if (TIFFFieldSet(tif,FIELD_RESOLUTIONUNIT)) {
-			switch (td->td_resolutionunit) {
-			case RESUNIT_NONE:
-				fprintf(fd, " (unitless)");
-				break;
-			case RESUNIT_INCH:
-				fprintf(fd, " pixels/inch");
-				break;
-			case RESUNIT_CENTIMETER:
-				fprintf(fd, " pixels/cm");
-				break;
-			default:
-				fprintf(fd, " (unit %u = 0x%x)",
-				    td->td_resolutionunit,
-				    td->td_resolutionunit);
-				break;
-			}
-		}
-		fprintf(fd, "\n");
-	}
-	if (TIFFFieldSet(tif,FIELD_POSITION))
-		fprintf(fd, "  Position: %g, %g\n",
-		    td->td_xposition, td->td_yposition);
-	if (TIFFFieldSet(tif,FIELD_BITSPERSAMPLE))
-		fprintf(fd, "  Bits/Sample: %u\n", td->td_bitspersample);
-	if (TIFFFieldSet(tif,FIELD_SAMPLEFORMAT)) {
-		fprintf(fd, "  Sample Format: ");
-		switch (td->td_sampleformat) {
-		case SAMPLEFORMAT_VOID:
-			fprintf(fd, "void\n");
-			break;
-		case SAMPLEFORMAT_INT:
-			fprintf(fd, "signed integer\n");
-			break;
-		case SAMPLEFORMAT_UINT:
-			fprintf(fd, "unsigned integer\n");
-			break;
-		case SAMPLEFORMAT_IEEEFP:
-			fprintf(fd, "IEEE floating point\n");
-			break;
-		case SAMPLEFORMAT_COMPLEXINT:
-			fprintf(fd, "complex signed integer\n");
-			break;
-		case SAMPLEFORMAT_COMPLEXIEEEFP:
-			fprintf(fd, "complex IEEE floating point\n");
-			break;
-		default:
-			fprintf(fd, "%u (0x%x)\n",
-			    td->td_sampleformat, td->td_sampleformat);
-			break;
-		}
-	}
-	if (TIFFFieldSet(tif,FIELD_COMPRESSION)) {
-		const TIFFCodec* c = TIFFFindCODEC(td->td_compression);
-		fprintf(fd, "  Compression Scheme: ");
-		if (c)
-			fprintf(fd, "%s\n", c->name);
-		else
-			fprintf(fd, "%u (0x%x)\n",
-			    td->td_compression, td->td_compression);
-	}
-	if (TIFFFieldSet(tif,FIELD_PHOTOMETRIC)) {
-		fprintf(fd, "  Photometric Interpretation: ");
-		if (td->td_photometric < NPHOTONAMES)
-			fprintf(fd, "%s\n", photoNames[td->td_photometric]);
-		else {
-			switch (td->td_photometric) {
-			case PHOTOMETRIC_LOGL:
-				fprintf(fd, "CIE Log2(L)\n");
-				break;
-			case PHOTOMETRIC_LOGLUV:
-				fprintf(fd, "CIE Log2(L) (u',v')\n");
-				break;
-			default:
-				fprintf(fd, "%u (0x%x)\n",
-				    td->td_photometric, td->td_photometric);
-				break;
-			}
-		}
-	}
-	if (TIFFFieldSet(tif,FIELD_EXTRASAMPLES) && td->td_extrasamples) {
-		fprintf(fd, "  Extra Samples: %u<", td->td_extrasamples);
-		sep = "";
-		for (i = 0; i < td->td_extrasamples; i++) {
-			switch (td->td_sampleinfo[i]) {
-			case EXTRASAMPLE_UNSPECIFIED:
-				fprintf(fd, "%sunspecified", sep);
-				break;
-			case EXTRASAMPLE_ASSOCALPHA:
-				fprintf(fd, "%sassoc-alpha", sep);
-				break;
-			case EXTRASAMPLE_UNASSALPHA:
-				fprintf(fd, "%sunassoc-alpha", sep);
-				break;
-			default:
-				fprintf(fd, "%s%u (0x%x)", sep,
-				    td->td_sampleinfo[i], td->td_sampleinfo[i]);
-				break;
-			}
-			sep = ", ";
-		}
-		fprintf(fd, ">\n");
-	}
-	if (TIFFFieldSet(tif,FIELD_INKNAMES)) {
-		char* cp;
-		fprintf(fd, "  Ink Names: ");
-		i = td->td_samplesperpixel;
-		sep = "";
-		for (cp = td->td_inknames; i > 0; cp = strchr(cp,'\0')+1, i--) {
-			fputs(sep, fd);
-			_TIFFprintAscii(fd, cp);
-			sep = ", ";
-		}
-                fputs("\n", fd);
-	}
-	if (TIFFFieldSet(tif,FIELD_THRESHHOLDING)) {
-		fprintf(fd, "  Thresholding: ");
-		switch (td->td_threshholding) {
-		case THRESHHOLD_BILEVEL:
-			fprintf(fd, "bilevel art scan\n");
-			break;
-		case THRESHHOLD_HALFTONE:
-			fprintf(fd, "halftone or dithered scan\n");
-			break;
-		case THRESHHOLD_ERRORDIFFUSE:
-			fprintf(fd, "error diffused\n");
-			break;
-		default:
-			fprintf(fd, "%u (0x%x)\n",
-			    td->td_threshholding, td->td_threshholding);
-			break;
-		}
-	}
-	if (TIFFFieldSet(tif,FIELD_FILLORDER)) {
-		fprintf(fd, "  FillOrder: ");
-		switch (td->td_fillorder) {
-		case FILLORDER_MSB2LSB:
-			fprintf(fd, "msb-to-lsb\n");
-			break;
-		case FILLORDER_LSB2MSB:
-			fprintf(fd, "lsb-to-msb\n");
-			break;
-		default:
-			fprintf(fd, "%u (0x%x)\n",
-			    td->td_fillorder, td->td_fillorder);
-			break;
-		}
-	}
-	if (TIFFFieldSet(tif,FIELD_YCBCRSUBSAMPLING))
-        {
-            /*
-             * For hacky reasons (see tif_jpeg.c - JPEGFixupTestSubsampling),
-             * we need to fetch this rather than trust what is in our
-             * structures.
-             */
-            uint16 subsampling[2];
-
-            TIFFGetField( tif, TIFFTAG_YCBCRSUBSAMPLING, 
-                          subsampling + 0, subsampling + 1 );
-		fprintf(fd, "  YCbCr Subsampling: %u, %u\n",
-                        subsampling[0], subsampling[1] );
-        }
-	if (TIFFFieldSet(tif,FIELD_YCBCRPOSITIONING)) {
-		fprintf(fd, "  YCbCr Positioning: ");
-		switch (td->td_ycbcrpositioning) {
-		case YCBCRPOSITION_CENTERED:
-			fprintf(fd, "centered\n");
-			break;
-		case YCBCRPOSITION_COSITED:
-			fprintf(fd, "cosited\n");
-			break;
-		default:
-			fprintf(fd, "%u (0x%x)\n",
-			    td->td_ycbcrpositioning, td->td_ycbcrpositioning);
-			break;
-		}
-	}
-	if (TIFFFieldSet(tif,FIELD_HALFTONEHINTS))
-		fprintf(fd, "  Halftone Hints: light %u dark %u\n",
-		    td->td_halftonehints[0], td->td_halftonehints[1]);
-	if (TIFFFieldSet(tif,FIELD_ORIENTATION)) {
-		fprintf(fd, "  Orientation: ");
-		if (td->td_orientation < NORIENTNAMES)
-			fprintf(fd, "%s\n", orientNames[td->td_orientation]);
-		else
-			fprintf(fd, "%u (0x%x)\n",
-			    td->td_orientation, td->td_orientation);
-	}
-	if (TIFFFieldSet(tif,FIELD_SAMPLESPERPIXEL))
-		fprintf(fd, "  Samples/Pixel: %u\n", td->td_samplesperpixel);
-	if (TIFFFieldSet(tif,FIELD_ROWSPERSTRIP)) {
-		fprintf(fd, "  Rows/Strip: ");
-		if (td->td_rowsperstrip == (uint32) -1)
-			fprintf(fd, "(infinite)\n");
-		else
-			fprintf(fd, "%lu\n", (unsigned long) td->td_rowsperstrip);
-	}
-	if (TIFFFieldSet(tif,FIELD_MINSAMPLEVALUE))
-		fprintf(fd, "  Min Sample Value: %u\n", td->td_minsamplevalue);
-	if (TIFFFieldSet(tif,FIELD_MAXSAMPLEVALUE))
-		fprintf(fd, "  Max Sample Value: %u\n", td->td_maxsamplevalue);
-	if (TIFFFieldSet(tif,FIELD_SMINSAMPLEVALUE))
-		fprintf(fd, "  SMin Sample Value: %g\n",
-		    td->td_sminsamplevalue);
-	if (TIFFFieldSet(tif,FIELD_SMAXSAMPLEVALUE))
-		fprintf(fd, "  SMax Sample Value: %g\n",
-		    td->td_smaxsamplevalue);
-	if (TIFFFieldSet(tif,FIELD_PLANARCONFIG)) {
-		fprintf(fd, "  Planar Configuration: ");
-		switch (td->td_planarconfig) {
-		case PLANARCONFIG_CONTIG:
-			fprintf(fd, "single image plane\n");
-			break;
-		case PLANARCONFIG_SEPARATE:
-			fprintf(fd, "separate image planes\n");
-			break;
-		default:
-			fprintf(fd, "%u (0x%x)\n",
-			    td->td_planarconfig, td->td_planarconfig);
-			break;
-		}
-	}
-	if (TIFFFieldSet(tif,FIELD_PAGENUMBER))
-		fprintf(fd, "  Page Number: %u-%u\n",
-		    td->td_pagenumber[0], td->td_pagenumber[1]);
-	if (TIFFFieldSet(tif,FIELD_COLORMAP)) {
-		fprintf(fd, "  Color Map: ");
-		if (flags & TIFFPRINT_COLORMAP) {
-			fprintf(fd, "\n");
-			n = 1L<<td->td_bitspersample;
-			for (l = 0; l < n; l++)
-				fprintf(fd, "   %5lu: %5u %5u %5u\n",
-				    l,
-				    td->td_colormap[0][l],
-				    td->td_colormap[1][l],
-				    td->td_colormap[2][l]);
-		} else
-			fprintf(fd, "(present)\n");
-	}
-	if (TIFFFieldSet(tif,FIELD_TRANSFERFUNCTION)) {
-		fprintf(fd, "  Transfer Function: ");
-		if (flags & TIFFPRINT_CURVES) {
-			fprintf(fd, "\n");
-			n = 1L<<td->td_bitspersample;
-			for (l = 0; l < n; l++) {
-				fprintf(fd, "    %2lu: %5u",
-				    l, td->td_transferfunction[0][l]);
-				for (i = 1; i < td->td_samplesperpixel; i++)
-					fprintf(fd, " %5u",
-					    td->td_transferfunction[i][l]);
-				fputc('\n', fd);
-			}
-		} else
-			fprintf(fd, "(present)\n");
-	}
-	if (TIFFFieldSet(tif, FIELD_SUBIFD)) {
-		fprintf(fd, "  SubIFD Offsets:");
-		for (i = 0; i < td->td_nsubifd; i++)
-			fprintf(fd, " %5lu", (long) td->td_subifd[i]);
-		fputc('\n', fd);
-	}
-
-        /*
-        ** Custom tag support.
-        */
-        {
-            int  i;
-            short count;
-
-            count = (short) TIFFGetTagListCount(tif);
-            for(i = 0; i < count; i++) {
-                ttag_t  tag = TIFFGetTagListEntry(tif, i);
-                const TIFFFieldInfo *fip;
-                uint16 value_count;
-                int mem_alloc = 0;
-                void *raw_data;
-
-                fip = TIFFFieldWithTag(tif, tag);
-                if(fip == NULL)
-			continue;
-
-		if(fip->field_passcount) {
-			if(TIFFGetField(tif, tag, &value_count, &raw_data) != 1)
-				continue;
-		} else {
-			if (fip->field_readcount == TIFF_VARIABLE
-			    || fip->field_readcount == TIFF_VARIABLE2)
-				value_count = 1;
-			else if (fip->field_readcount == TIFF_SPP)
-				value_count = td->td_samplesperpixel;
-			else
-				value_count = fip->field_readcount;
-			if ((fip->field_type == TIFF_ASCII
-			     || fip->field_readcount == TIFF_VARIABLE
-			     || fip->field_readcount == TIFF_VARIABLE2
-			     || fip->field_readcount == TIFF_SPP
-			     || value_count > 1)
-			    && fip->field_tag != TIFFTAG_PAGENUMBER
-			    && fip->field_tag != TIFFTAG_HALFTONEHINTS
-			    && fip->field_tag != TIFFTAG_YCBCRSUBSAMPLING
-			    && fip->field_tag != TIFFTAG_DOTRANGE) {
-				if(TIFFGetField(tif, tag, &raw_data) != 1)
-					continue;
-			} else if (fip->field_tag != TIFFTAG_PAGENUMBER
-				   && fip->field_tag != TIFFTAG_HALFTONEHINTS
-				   && fip->field_tag != TIFFTAG_YCBCRSUBSAMPLING
-				   && fip->field_tag != TIFFTAG_DOTRANGE) {
-				raw_data = _TIFFmalloc(
-					_TIFFDataSize(fip->field_type)
-					* value_count);
-				mem_alloc = 1;
-				if(TIFFGetField(tif, tag, raw_data) != 1) {
-					_TIFFfree(raw_data);
-					continue;
-				}
-			} else {
-				/* 
-				 * XXX: Should be fixed and removed, see the
-				 * notes related to TIFFTAG_PAGENUMBER,
-				 * TIFFTAG_HALFTONEHINTS,
-				 * TIFFTAG_YCBCRSUBSAMPLING and
-				 * TIFFTAG_DOTRANGE tags in tif_dir.c. */
-				char *tmp;
-				raw_data = _TIFFmalloc(
-					_TIFFDataSize(fip->field_type)
-					* value_count);
-				tmp = raw_data;
-				mem_alloc = 1;
-				if(TIFFGetField(tif, tag, tmp,
-				tmp + _TIFFDataSize(fip->field_type)) != 1) {
-					_TIFFfree(raw_data);
-					continue;
-				}
-			}
-		}
-
-		/*
-		 * Catch the tags which needs to be specially handled and
-		 * pretty print them. If tag not handled in
-		 * _TIFFPrettyPrintField() fall down and print it as any other
-		 * tag.
-		 */
-		if (_TIFFPrettyPrintField(tif, fd, tag, value_count, raw_data)) {
-			if(mem_alloc)
-				_TIFFfree(raw_data);
-			continue;
-		}
-		else
-			_TIFFPrintField(fd, fip, value_count, raw_data);
-
-		if(mem_alloc)
-			_TIFFfree(raw_data);
-            }
-        }
-        
-	if (tif->tif_tagmethods.printdir)
-		(*tif->tif_tagmethods.printdir)(tif, fd, flags);
-	if ((flags & TIFFPRINT_STRIPS) &&
-	    TIFFFieldSet(tif,FIELD_STRIPOFFSETS)) {
-		tstrip_t s;
-
-		fprintf(fd, "  %lu %s:\n",
-		    (long) td->td_nstrips,
-		    isTiled(tif) ? "Tiles" : "Strips");
-		for (s = 0; s < td->td_nstrips; s++)
-			fprintf(fd, "    %3lu: [%8lu, %8lu]\n",
-			    (unsigned long) s,
-			    (unsigned long) td->td_stripoffset[s],
-			    (unsigned long) td->td_stripbytecount[s]);
-	}
-}
-
-void
-_TIFFprintAscii(FILE* fd, const char* cp)
-{
-	for (; *cp != '\0'; cp++) {
-		const char* tp;
-
-		if (isprint((int)*cp)) {
-			fputc(*cp, fd);
-			continue;
-		}
-		for (tp = "\tt\bb\rr\nn\vv"; *tp; tp++)
-			if (*tp++ == *cp)
-				break;
-		if (*tp)
-			fprintf(fd, "\\%c", *tp);
-		else
-			fprintf(fd, "\\%03o", *cp & 0xff);
-	}
-}
-
-void
-_TIFFprintAsciiTag(FILE* fd, const char* name, const char* value)
-{
-	fprintf(fd, "  %s: \"", name);
-	_TIFFprintAscii(fd, value);
-	fprintf(fd, "\"\n");
-}
-
-/* vim: set ts=8 sts=8 sw=8 noet: */
diff --git a/src/tiff/tif_read.c b/src/tiff/tif_read.c
deleted file mode 100644
index 48a3e27..0000000
--- a/src/tiff/tif_read.c
+++ /dev/null
@@ -1,650 +0,0 @@
-/* $Id: tif_read.c 4825 2006-08-16 13:01:53Z lubia $ */
-
-/*
- * Copyright (c) 1988-1997 Sam Leffler
- * Copyright (c) 1991-1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and 
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- * 
- * 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 SAM LEFFLER OR SILICON GRAPHICS 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.
- */
-
-/*
- * TIFF Library.
- * Scanline-oriented Read Support
- */
-#include "tiffiop.h"
-#include <stdio.h>
-
-	int TIFFFillStrip(TIFF*, tstrip_t);
-	int TIFFFillTile(TIFF*, ttile_t);
-static	int TIFFStartStrip(TIFF*, tstrip_t);
-static	int TIFFStartTile(TIFF*, ttile_t);
-static	int TIFFCheckRead(TIFF*, int);
-
-#define	NOSTRIP	((tstrip_t) -1)			/* undefined state */
-#define	NOTILE	((ttile_t) -1)			/* undefined state */
-
-/*
- * Seek to a random row+sample in a file.
- */
-static int
-TIFFSeek(TIFF* tif, uint32 row, tsample_t sample)
-{
-	register TIFFDirectory *td = &tif->tif_dir;
-	tstrip_t strip;
-
-	if (row >= td->td_imagelength) {	/* out of range */
-		TIFFErrorExt(tif->tif_clientdata, tif->tif_name, "%lu: Row out of range, max %lu",
-		    (unsigned long) row, (unsigned long) td->td_imagelength);
-		return (0);
-	}
-	if (td->td_planarconfig == PLANARCONFIG_SEPARATE) {
-		if (sample >= td->td_samplesperpixel) {
-			TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-			    "%lu: Sample out of range, max %lu",
-			    (unsigned long) sample, (unsigned long) td->td_samplesperpixel);
-			return (0);
-		}
-		strip = sample*td->td_stripsperimage + row/td->td_rowsperstrip;
-	} else
-		strip = row / td->td_rowsperstrip;
-	if (strip != tif->tif_curstrip) { 	/* different strip, refill */
-		if (!TIFFFillStrip(tif, strip))
-			return (0);
-	} else if (row < tif->tif_row) {
-		/*
-		 * Moving backwards within the same strip: backup
-		 * to the start and then decode forward (below).
-		 *
-		 * NB: If you're planning on lots of random access within a
-		 * strip, it's better to just read and decode the entire
-		 * strip, and then access the decoded data in a random fashion.
-		 */
-		if (!TIFFStartStrip(tif, strip))
-			return (0);
-	}
-	if (row != tif->tif_row) {
-		/*
-		 * Seek forward to the desired row.
-		 */
-		if (!(*tif->tif_seek)(tif, row - tif->tif_row))
-			return (0);
-		tif->tif_row = row;
-	}
-	return (1);
-}
-
-int
-TIFFReadScanline(TIFF* tif, tdata_t buf, uint32 row, tsample_t sample)
-{
-	int e;
-
-	if (!TIFFCheckRead(tif, 0))
-		return (-1);
-	if( (e = TIFFSeek(tif, row, sample)) != 0) {
-		/*
-		 * Decompress desired row into user buffer.
-		 */
-		e = (*tif->tif_decoderow)
-		    (tif, (tidata_t) buf, tif->tif_scanlinesize, sample);
-
-                /* we are now poised at the beginning of the next row */
-                tif->tif_row = row + 1;
-
-		if (e)
-			(*tif->tif_postdecode)(tif, (tidata_t) buf,
-			    tif->tif_scanlinesize);
-	}
-	return (e > 0 ? 1 : -1);
-}
-
-/*
- * Read a strip of data and decompress the specified
- * amount into the user-supplied buffer.
- */
-tsize_t
-TIFFReadEncodedStrip(TIFF* tif, tstrip_t strip, tdata_t buf, tsize_t size)
-{
-	TIFFDirectory *td = &tif->tif_dir;
-	uint32 nrows;
-	tsize_t stripsize;
-        tstrip_t sep_strip, strips_per_sep;
-
-	if (!TIFFCheckRead(tif, 0))
-		return (-1);
-	if (strip >= td->td_nstrips) {
-		TIFFErrorExt(tif->tif_clientdata, tif->tif_name, "%ld: Strip out of range, max %ld",
-		    (long) strip, (long) td->td_nstrips);
-		return (-1);
-	}
-	/*
-	 * Calculate the strip size according to the number of
-	 * rows in the strip (check for truncated last strip on any
-         * of the separations).
-	 */
-        if( td->td_rowsperstrip >= td->td_imagelength )
-            strips_per_sep = 1;
-        else
-            strips_per_sep = (td->td_imagelength+td->td_rowsperstrip-1)
-                / td->td_rowsperstrip;
-
-        sep_strip = strip % strips_per_sep;
-
-	if (sep_strip != strips_per_sep-1 ||
-	    (nrows = td->td_imagelength % td->td_rowsperstrip) == 0)
-		nrows = td->td_rowsperstrip;
-
-	stripsize = TIFFVStripSize(tif, nrows);
-	if (size == (tsize_t) -1)
-		size = stripsize;
-	else if (size > stripsize)
-		size = stripsize;
-	if (TIFFFillStrip(tif, strip) 
-            && (*tif->tif_decodestrip)(tif, (tidata_t) buf, size, 
-                         (tsample_t)(strip / td->td_stripsperimage)) > 0 ) {
-		(*tif->tif_postdecode)(tif, (tidata_t) buf, size);
-		return (size);
-	} else
-		return ((tsize_t) -1);
-}
-
-static tsize_t
-TIFFReadRawStrip1(TIFF* tif,
-    tstrip_t strip, tdata_t buf, tsize_t size, const char* module)
-{
-	TIFFDirectory *td = &tif->tif_dir;
-
-	if (!isMapped(tif)) {
-		tsize_t cc;
-
-		if (!SeekOK(tif, td->td_stripoffset[strip])) {
-			TIFFErrorExt(tif->tif_clientdata, module,
-			    "%s: Seek error at scanline %lu, strip %lu",
-			    tif->tif_name,
-			    (unsigned long) tif->tif_row, (unsigned long) strip);
-			return (-1);
-		}
-		cc = TIFFReadFile(tif, buf, size);
-		if (cc != size) {
-			TIFFErrorExt(tif->tif_clientdata, module,
-		"%s: Read error at scanline %lu; got %lu bytes, expected %lu",
-			    tif->tif_name,
-			    (unsigned long) tif->tif_row,
-			    (unsigned long) cc,
-			    (unsigned long) size);
-			return (-1);
-		}
-	} else {
-		if (td->td_stripoffset[strip] + size > tif->tif_size) {
-			TIFFErrorExt(tif->tif_clientdata, module,
-    "%s: Read error at scanline %lu, strip %lu; got %lu bytes, expected %lu",
-			    tif->tif_name,
-			    (unsigned long) tif->tif_row,
-			    (unsigned long) strip,
-			    (unsigned long) tif->tif_size - td->td_stripoffset[strip],
-			    (unsigned long) size);
-			return (-1);
-		}
-		_TIFFmemcpy(buf, tif->tif_base + td->td_stripoffset[strip],
-                            size);
-	}
-	return (size);
-}
-
-/*
- * Read a strip of data from the file.
- */
-tsize_t
-TIFFReadRawStrip(TIFF* tif, tstrip_t strip, tdata_t buf, tsize_t size)
-{
-	static const char module[] = "TIFFReadRawStrip";
-	TIFFDirectory *td = &tif->tif_dir;
-	tsize_t bytecount;
-
-	if (!TIFFCheckRead(tif, 0))
-		return ((tsize_t) -1);
-	if (strip >= td->td_nstrips) {
-		TIFFErrorExt(tif->tif_clientdata, tif->tif_name, "%lu: Strip out of range, max %lu",
-		    (unsigned long) strip, (unsigned long) td->td_nstrips);
-		return ((tsize_t) -1);
-	}
-	bytecount = td->td_stripbytecount[strip];
-	if (bytecount <= 0) {
-		TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-		    "%lu: Invalid strip byte count, strip %lu",
-		    (unsigned long) bytecount, (unsigned long) strip);
-		return ((tsize_t) -1);
-	}
-	if (size != (tsize_t)-1 && size < bytecount)
-		bytecount = size;
-	return (TIFFReadRawStrip1(tif, strip, buf, bytecount, module));
-}
-
-/*
- * Read the specified strip and setup for decoding. 
- * The data buffer is expanded, as necessary, to
- * hold the strip's data.
- */
-int
-TIFFFillStrip(TIFF* tif, tstrip_t strip)
-{
-	static const char module[] = "TIFFFillStrip";
-	TIFFDirectory *td = &tif->tif_dir;
-	tsize_t bytecount;
-
-	bytecount = td->td_stripbytecount[strip];
-	if (bytecount <= 0) {
-		TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-		    "%lu: Invalid strip byte count, strip %lu",
-		    (unsigned long) bytecount, (unsigned long) strip);
-		return (0);
-	}
-	if (isMapped(tif) &&
-	    (isFillOrder(tif, td->td_fillorder)
-             || (tif->tif_flags & TIFF_NOBITREV))) {
-		/*
-		 * The image is mapped into memory and we either don't
-		 * need to flip bits or the compression routine is going
-		 * to handle this operation itself.  In this case, avoid
-		 * copying the raw data and instead just reference the
-		 * data from the memory mapped file image.  This assumes
-		 * that the decompression routines do not modify the
-		 * contents of the raw data buffer (if they try to,
-		 * the application will get a fault since the file is
-		 * mapped read-only).
-		 */
-		if ((tif->tif_flags & TIFF_MYBUFFER) && tif->tif_rawdata)
-			_TIFFfree(tif->tif_rawdata);
-		tif->tif_flags &= ~TIFF_MYBUFFER;
-		if ( td->td_stripoffset[strip] + bytecount > tif->tif_size) {
-			/*
-			 * This error message might seem strange, but it's
-			 * what would happen if a read were done instead.
-			 */
-			TIFFErrorExt(tif->tif_clientdata, module,
-		    "%s: Read error on strip %lu; got %lu bytes, expected %lu",
-			    tif->tif_name,
-			    (unsigned long) strip,
-			    (unsigned long) tif->tif_size - td->td_stripoffset[strip],
-			    (unsigned long) bytecount);
-			tif->tif_curstrip = NOSTRIP;
-			return (0);
-		}
-		tif->tif_rawdatasize = bytecount;
-		tif->tif_rawdata = tif->tif_base + td->td_stripoffset[strip];
-	} else {
-		/*
-		 * Expand raw data buffer, if needed, to
-		 * hold data strip coming from file
-		 * (perhaps should set upper bound on
-		 *  the size of a buffer we'll use?).
-		 */
-		if (bytecount > tif->tif_rawdatasize) {
-			tif->tif_curstrip = NOSTRIP;
-			if ((tif->tif_flags & TIFF_MYBUFFER) == 0) {
-				TIFFErrorExt(tif->tif_clientdata, module,
-				"%s: Data buffer too small to hold strip %lu",
-				    tif->tif_name, (unsigned long) strip);
-				return (0);
-			}
-			if (!TIFFReadBufferSetup(tif, 0,
-			    TIFFroundup(bytecount, 1024)))
-				return (0);
-		}
-		if (TIFFReadRawStrip1(tif, strip, (unsigned char *)tif->tif_rawdata,
-		    bytecount, module) != bytecount)
-			return (0);
-		if (!isFillOrder(tif, td->td_fillorder) &&
-		    (tif->tif_flags & TIFF_NOBITREV) == 0)
-			TIFFReverseBits(tif->tif_rawdata, bytecount);
-	}
-	return (TIFFStartStrip(tif, strip));
-}
-
-/*
- * Tile-oriented Read Support
- * Contributed by Nancy Cam (Silicon Graphics).
- */
-
-/*
- * Read and decompress a tile of data.  The
- * tile is selected by the (x,y,z,s) coordinates.
- */
-tsize_t
-TIFFReadTile(TIFF* tif,
-    tdata_t buf, uint32 x, uint32 y, uint32 z, tsample_t s)
-{
-	if (!TIFFCheckRead(tif, 1) || !TIFFCheckTile(tif, x, y, z, s))
-		return (-1);
-	return (TIFFReadEncodedTile(tif,
-	    TIFFComputeTile(tif, x, y, z, s), buf, (tsize_t) -1));
-}
-
-/*
- * Read a tile of data and decompress the specified
- * amount into the user-supplied buffer.
- */
-tsize_t
-TIFFReadEncodedTile(TIFF* tif, ttile_t tile, tdata_t buf, tsize_t size)
-{
-	TIFFDirectory *td = &tif->tif_dir;
-	tsize_t tilesize = tif->tif_tilesize;
-
-	if (!TIFFCheckRead(tif, 1))
-		return (-1);
-	if (tile >= td->td_nstrips) {
-		TIFFErrorExt(tif->tif_clientdata, tif->tif_name, "%ld: Tile out of range, max %ld",
-		    (long) tile, (unsigned long) td->td_nstrips);
-		return (-1);
-	}
-	if (size == (tsize_t) -1)
-		size = tilesize;
-	else if (size > tilesize)
-		size = tilesize;
-	if (TIFFFillTile(tif, tile) && (*tif->tif_decodetile)(tif,
-	    (tidata_t) buf, size, (tsample_t)(tile/td->td_stripsperimage))) {
-		(*tif->tif_postdecode)(tif, (tidata_t) buf, size);
-		return (size);
-	} else
-		return (-1);
-}
-
-static tsize_t
-TIFFReadRawTile1(TIFF* tif,
-    ttile_t tile, tdata_t buf, tsize_t size, const char* module)
-{
-	TIFFDirectory *td = &tif->tif_dir;
-
-	if (!isMapped(tif)) {
-		tsize_t cc;
-
-		if (!SeekOK(tif, td->td_stripoffset[tile])) {
-			TIFFErrorExt(tif->tif_clientdata, module,
-			    "%s: Seek error at row %ld, col %ld, tile %ld",
-			    tif->tif_name,
-			    (long) tif->tif_row,
-			    (long) tif->tif_col,
-			    (long) tile);
-			return ((tsize_t) -1);
-		}
-		cc = TIFFReadFile(tif, buf, size);
-		if (cc != size) {
-			TIFFErrorExt(tif->tif_clientdata, module,
-	    "%s: Read error at row %ld, col %ld; got %lu bytes, expected %lu",
-			    tif->tif_name,
-			    (long) tif->tif_row,
-			    (long) tif->tif_col,
-			    (unsigned long) cc,
-			    (unsigned long) size);
-			return ((tsize_t) -1);
-		}
-	} else {
-		if (td->td_stripoffset[tile] + size > tif->tif_size) {
-			TIFFErrorExt(tif->tif_clientdata, module,
-    "%s: Read error at row %ld, col %ld, tile %ld; got %lu bytes, expected %lu",
-			    tif->tif_name,
-			    (long) tif->tif_row,
-			    (long) tif->tif_col,
-			    (long) tile,
-			    (unsigned long) tif->tif_size - td->td_stripoffset[tile],
-			    (unsigned long) size);
-			return ((tsize_t) -1);
-		}
-		_TIFFmemcpy(buf, tif->tif_base + td->td_stripoffset[tile], size);
-	}
-	return (size);
-}
-
-/*
- * Read a tile of data from the file.
- */
-tsize_t
-TIFFReadRawTile(TIFF* tif, ttile_t tile, tdata_t buf, tsize_t size)
-{
-	static const char module[] = "TIFFReadRawTile";
-	TIFFDirectory *td = &tif->tif_dir;
-	tsize_t bytecount;
-
-	if (!TIFFCheckRead(tif, 1))
-		return ((tsize_t) -1);
-	if (tile >= td->td_nstrips) {
-		TIFFErrorExt(tif->tif_clientdata, tif->tif_name, "%lu: Tile out of range, max %lu",
-		    (unsigned long) tile, (unsigned long) td->td_nstrips);
-		return ((tsize_t) -1);
-	}
-	bytecount = td->td_stripbytecount[tile];
-	if (size != (tsize_t) -1 && size < bytecount)
-		bytecount = size;
-	return (TIFFReadRawTile1(tif, tile, buf, bytecount, module));
-}
-
-/*
- * Read the specified tile and setup for decoding. 
- * The data buffer is expanded, as necessary, to
- * hold the tile's data.
- */
-int
-TIFFFillTile(TIFF* tif, ttile_t tile)
-{
-	static const char module[] = "TIFFFillTile";
-	TIFFDirectory *td = &tif->tif_dir;
-	tsize_t bytecount;
-
-	bytecount = td->td_stripbytecount[tile];
-	if (bytecount <= 0) {
-		TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-		    "%lu: Invalid tile byte count, tile %lu",
-		    (unsigned long) bytecount, (unsigned long) tile);
-		return (0);
-	}
-	if (isMapped(tif) &&
-	    (isFillOrder(tif, td->td_fillorder)
-             || (tif->tif_flags & TIFF_NOBITREV))) {
-		/*
-		 * The image is mapped into memory and we either don't
-		 * need to flip bits or the compression routine is going
-		 * to handle this operation itself.  In this case, avoid
-		 * copying the raw data and instead just reference the
-		 * data from the memory mapped file image.  This assumes
-		 * that the decompression routines do not modify the
-		 * contents of the raw data buffer (if they try to,
-		 * the application will get a fault since the file is
-		 * mapped read-only).
-		 */
-		if ((tif->tif_flags & TIFF_MYBUFFER) && tif->tif_rawdata)
-			_TIFFfree(tif->tif_rawdata);
-		tif->tif_flags &= ~TIFF_MYBUFFER;
-		if ( td->td_stripoffset[tile] + bytecount > tif->tif_size) {
-			tif->tif_curtile = NOTILE;
-			return (0);
-		}
-		tif->tif_rawdatasize = bytecount;
-		tif->tif_rawdata = tif->tif_base + td->td_stripoffset[tile];
-	} else {
-		/*
-		 * Expand raw data buffer, if needed, to
-		 * hold data tile coming from file
-		 * (perhaps should set upper bound on
-		 *  the size of a buffer we'll use?).
-		 */
-		if (bytecount > tif->tif_rawdatasize) {
-			tif->tif_curtile = NOTILE;
-			if ((tif->tif_flags & TIFF_MYBUFFER) == 0) {
-				TIFFErrorExt(tif->tif_clientdata, module,
-				"%s: Data buffer too small to hold tile %ld",
-				    tif->tif_name, (long) tile);
-				return (0);
-			}
-			if (!TIFFReadBufferSetup(tif, 0,
-			    TIFFroundup(bytecount, 1024)))
-				return (0);
-		}
-		if (TIFFReadRawTile1(tif, tile,
-                                     (unsigned char *)tif->tif_rawdata,
-                                     bytecount, module) != bytecount)
-			return (0);
-		if (!isFillOrder(tif, td->td_fillorder) &&
-		    (tif->tif_flags & TIFF_NOBITREV) == 0)
-			TIFFReverseBits(tif->tif_rawdata, bytecount);
-	}
-	return (TIFFStartTile(tif, tile));
-}
-
-/*
- * Setup the raw data buffer in preparation for
- * reading a strip of raw data.  If the buffer
- * is specified as zero, then a buffer of appropriate
- * size is allocated by the library.  Otherwise,
- * the client must guarantee that the buffer is
- * large enough to hold any individual strip of
- * raw data.
- */
-int
-TIFFReadBufferSetup(TIFF* tif, tdata_t bp, tsize_t size)
-{
-	static const char module[] = "TIFFReadBufferSetup";
-
-	if (tif->tif_rawdata) {
-		if (tif->tif_flags & TIFF_MYBUFFER)
-			_TIFFfree(tif->tif_rawdata);
-		tif->tif_rawdata = NULL;
-	}
-	if (bp) {
-		tif->tif_rawdatasize = size;
-		tif->tif_rawdata = (tidata_t) bp;
-		tif->tif_flags &= ~TIFF_MYBUFFER;
-	} else {
-		tif->tif_rawdatasize = TIFFroundup(size, 1024);
-		tif->tif_rawdata = (tidata_t) _TIFFmalloc(tif->tif_rawdatasize);
-		tif->tif_flags |= TIFF_MYBUFFER;
-	}
-	if (tif->tif_rawdata == NULL) {
-		TIFFErrorExt(tif->tif_clientdata, module,
-		    "%s: No space for data buffer at scanline %ld",
-		    tif->tif_name, (long) tif->tif_row);
-		tif->tif_rawdatasize = 0;
-		return (0);
-	}
-	return (1);
-}
-
-/*
- * Set state to appear as if a
- * strip has just been read in.
- */
-static int
-TIFFStartStrip(TIFF* tif, tstrip_t strip)
-{
-	TIFFDirectory *td = &tif->tif_dir;
-
-	if ((tif->tif_flags & TIFF_CODERSETUP) == 0) {
-		if (!(*tif->tif_setupdecode)(tif))
-			return (0);
-		tif->tif_flags |= TIFF_CODERSETUP;
-	}
-	tif->tif_curstrip = strip;
-	tif->tif_row = (strip % td->td_stripsperimage) * td->td_rowsperstrip;
-	tif->tif_rawcp = tif->tif_rawdata;
-	tif->tif_rawcc = td->td_stripbytecount[strip];
-	return ((*tif->tif_predecode)(tif,
-			(tsample_t)(strip / td->td_stripsperimage)));
-}
-
-/*
- * Set state to appear as if a
- * tile has just been read in.
- */
-static int
-TIFFStartTile(TIFF* tif, ttile_t tile)
-{
-	TIFFDirectory *td = &tif->tif_dir;
-
-	if ((tif->tif_flags & TIFF_CODERSETUP) == 0) {
-		if (!(*tif->tif_setupdecode)(tif))
-			return (0);
-		tif->tif_flags |= TIFF_CODERSETUP;
-	}
-	tif->tif_curtile = tile;
-	tif->tif_row =
-	    (tile % TIFFhowmany(td->td_imagewidth, td->td_tilewidth)) *
-		td->td_tilelength;
-	tif->tif_col =
-	    (tile % TIFFhowmany(td->td_imagelength, td->td_tilelength)) *
-		td->td_tilewidth;
-	tif->tif_rawcp = tif->tif_rawdata;
-	tif->tif_rawcc = td->td_stripbytecount[tile];
-	return ((*tif->tif_predecode)(tif,
-			(tsample_t)(tile/td->td_stripsperimage)));
-}
-
-static int
-TIFFCheckRead(TIFF* tif, int tiles)
-{
-	if (tif->tif_mode == O_WRONLY) {
-		TIFFErrorExt(tif->tif_clientdata, tif->tif_name, "File not open for reading");
-		return (0);
-	}
-	if (tiles ^ isTiled(tif)) {
-		TIFFErrorExt(tif->tif_clientdata, tif->tif_name, tiles ?
-		    "Can not read tiles from a stripped image" :
-		    "Can not read scanlines from a tiled image");
-		return (0);
-	}
-	return (1);
-}
-
-void
-_TIFFNoPostDecode(TIFF* tif, tidata_t buf, tsize_t cc)
-{
-    (void) tif; (void) buf; (void) cc;
-}
-
-void
-_TIFFSwab16BitData(TIFF* tif, tidata_t buf, tsize_t cc)
-{
-    (void) tif;
-    assert((cc & 1) == 0);
-    TIFFSwabArrayOfShort((uint16*) buf, cc/2);
-}
-
-void
-_TIFFSwab24BitData(TIFF* tif, tidata_t buf, tsize_t cc)
-{
-    (void) tif;
-    assert((cc % 3) == 0);
-    TIFFSwabArrayOfTriples((uint8*) buf, cc/3);
-}
-
-void
-_TIFFSwab32BitData(TIFF* tif, tidata_t buf, tsize_t cc)
-{
-    (void) tif;
-    assert((cc & 3) == 0);
-    TIFFSwabArrayOfLong((uint32*) buf, cc/4);
-}
-
-void
-_TIFFSwab64BitData(TIFF* tif, tidata_t buf, tsize_t cc)
-{
-    (void) tif;
-    assert((cc & 7) == 0);
-    TIFFSwabArrayOfDouble((double*) buf, cc/8);
-}
-
-/* vim: set ts=8 sts=8 sw=8 noet: */
diff --git a/src/tiff/tif_strip.c b/src/tiff/tif_strip.c
deleted file mode 100644
index 799f5cf..0000000
--- a/src/tiff/tif_strip.c
+++ /dev/null
@@ -1,294 +0,0 @@
-/* $Id: tif_strip.c 4825 2006-08-16 13:01:53Z lubia $ */
-
-/*
- * Copyright (c) 1991-1997 Sam Leffler
- * Copyright (c) 1991-1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and 
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- * 
- * 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 SAM LEFFLER OR SILICON GRAPHICS 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.
- */
-
-/*
- * TIFF Library.
- *
- * Strip-organized Image Support Routines.
- */
-#include "tiffiop.h"
-
-static uint32
-summarize(TIFF* tif, size_t summand1, size_t summand2, const char* where)
-{
-	/*
-	 * XXX: We are using casting to uint32 here, bacause sizeof(size_t)
-	 * may be larger than sizeof(uint32) on 64-bit architectures.
-	 */
-	uint32	bytes = summand1 + summand2;
-
-	if (bytes - summand1 != summand2) {
-		TIFFErrorExt(tif->tif_clientdata, tif->tif_name, "Integer overflow in %s", where);
-		bytes = 0;
-	}
-
-	return (bytes);
-}
-
-static uint32
-multiply(TIFF* tif, size_t nmemb, size_t elem_size, const char* where)
-{
-	uint32	bytes = nmemb * elem_size;
-
-	if (elem_size && bytes / elem_size != nmemb) {
-		TIFFErrorExt(tif->tif_clientdata, tif->tif_name, "Integer overflow in %s", where);
-		bytes = 0;
-	}
-
-	return (bytes);
-}
-
-/*
- * Compute which strip a (row,sample) value is in.
- */
-tstrip_t
-TIFFComputeStrip(TIFF* tif, uint32 row, tsample_t sample)
-{
-	TIFFDirectory *td = &tif->tif_dir;
-	tstrip_t strip;
-
-	strip = row / td->td_rowsperstrip;
-	if (td->td_planarconfig == PLANARCONFIG_SEPARATE) {
-		if (sample >= td->td_samplesperpixel) {
-			TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-			    "%lu: Sample out of range, max %lu",
-			    (unsigned long) sample, (unsigned long) td->td_samplesperpixel);
-			return ((tstrip_t) 0);
-		}
-		strip += sample*td->td_stripsperimage;
-	}
-	return (strip);
-}
-
-/*
- * Compute how many strips are in an image.
- */
-tstrip_t
-TIFFNumberOfStrips(TIFF* tif)
-{
-	TIFFDirectory *td = &tif->tif_dir;
-	tstrip_t nstrips;
-
-	nstrips = (td->td_rowsperstrip == (uint32) -1 ? 1 :
-	     TIFFhowmany(td->td_imagelength, td->td_rowsperstrip));
-	if (td->td_planarconfig == PLANARCONFIG_SEPARATE)
-		nstrips = multiply(tif, nstrips, td->td_samplesperpixel,
-				   "TIFFNumberOfStrips");
-	return (nstrips);
-}
-
-/*
- * Compute the # bytes in a variable height, row-aligned strip.
- */
-tsize_t
-TIFFVStripSize(TIFF* tif, uint32 nrows)
-{
-	TIFFDirectory *td = &tif->tif_dir;
-
-	if (nrows == (uint32) -1)
-		nrows = td->td_imagelength;
-	if (td->td_planarconfig == PLANARCONFIG_CONTIG &&
-	    td->td_photometric == PHOTOMETRIC_YCBCR &&
-	    !isUpSampled(tif)) {
-		/*
-		 * Packed YCbCr data contain one Cb+Cr for every
-		 * HorizontalSampling*VerticalSampling Y values.
-		 * Must also roundup width and height when calculating
-		 * since images that are not a multiple of the
-		 * horizontal/vertical subsampling area include
-		 * YCbCr data for the extended image.
-		 */
-                uint16 ycbcrsubsampling[2];
-                tsize_t w, scanline, samplingarea;
-
-                TIFFGetField( tif, TIFFTAG_YCBCRSUBSAMPLING, 
-                              ycbcrsubsampling + 0, 
-                              ycbcrsubsampling + 1 );
-
-		samplingarea = ycbcrsubsampling[0]*ycbcrsubsampling[1];
-		if (samplingarea == 0) {
-			TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-				     "Invalid YCbCr subsampling");
-			return 0;
-		}
-
-		w = TIFFroundup(td->td_imagewidth, ycbcrsubsampling[0]);
-		scanline = TIFFhowmany8(multiply(tif, w, td->td_bitspersample,
-						 "TIFFVStripSize"));
-		nrows = TIFFroundup(nrows, ycbcrsubsampling[1]);
-		/* NB: don't need TIFFhowmany here 'cuz everything is rounded */
-		scanline = multiply(tif, nrows, scanline, "TIFFVStripSize");
-		return ((tsize_t)
-		    summarize(tif, scanline,
-			      multiply(tif, 2, scanline / samplingarea,
-				       "TIFFVStripSize"), "TIFFVStripSize"));
-	} else
-		return ((tsize_t) multiply(tif, nrows, TIFFScanlineSize(tif),
-					   "TIFFVStripSize"));
-}
-
-
-/*
- * Compute the # bytes in a raw strip.
- */
-tsize_t
-TIFFRawStripSize(TIFF* tif, tstrip_t strip)
-{
-	TIFFDirectory* td = &tif->tif_dir;
-	tsize_t bytecount = td->td_stripbytecount[strip];
-
-	if (bytecount <= 0) {
-		TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-			  "%lu: Invalid strip byte count, strip %lu",
-			  (unsigned long) bytecount, (unsigned long) strip);
-		bytecount = (tsize_t) -1;
-	}
-
-	return bytecount;
-}
-
-/*
- * Compute the # bytes in a (row-aligned) strip.
- *
- * Note that if RowsPerStrip is larger than the
- * recorded ImageLength, then the strip size is
- * truncated to reflect the actual space required
- * to hold the strip.
- */
-tsize_t
-TIFFStripSize(TIFF* tif)
-{
-	TIFFDirectory* td = &tif->tif_dir;
-	uint32 rps = td->td_rowsperstrip;
-	if (rps > td->td_imagelength)
-		rps = td->td_imagelength;
-	return (TIFFVStripSize(tif, rps));
-}
-
-/*
- * Compute a default strip size based on the image
- * characteristics and a requested value.  If the
- * request is <1 then we choose a strip size according
- * to certain heuristics.
- */
-uint32
-TIFFDefaultStripSize(TIFF* tif, uint32 request)
-{
-	return (*tif->tif_defstripsize)(tif, request);
-}
-
-uint32
-_TIFFDefaultStripSize(TIFF* tif, uint32 s)
-{
-	if ((int32) s < 1) {
-		/*
-		 * If RowsPerStrip is unspecified, try to break the
-		 * image up into strips that are approximately
-		 * STRIP_SIZE_DEFAULT bytes long.
-		 */
-		tsize_t scanline = TIFFScanlineSize(tif);
-		s = (uint32)STRIP_SIZE_DEFAULT / (scanline == 0 ? 1 : scanline);
-		if (s == 0)		/* very wide images */
-			s = 1;
-	}
-	return (s);
-}
-
-/*
- * Return the number of bytes to read/write in a call to
- * one of the scanline-oriented i/o routines.  Note that
- * this number may be 1/samples-per-pixel if data is
- * stored as separate planes.
- */
-tsize_t
-TIFFScanlineSize(TIFF* tif)
-{
-	TIFFDirectory *td = &tif->tif_dir;
-	tsize_t scanline;
-	
-	if (td->td_planarconfig == PLANARCONFIG_CONTIG) {
-		if (td->td_photometric == PHOTOMETRIC_YCBCR
-		    && !isUpSampled(tif)) {
-			uint16 ycbcrsubsampling[2];
-
-			TIFFGetField(tif, TIFFTAG_YCBCRSUBSAMPLING, 
-				     ycbcrsubsampling + 0,
-				     ycbcrsubsampling + 1);
-
-			if (ycbcrsubsampling[0] == 0) {
-				TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-					     "Invalid YCbCr subsampling");
-				return 0;
-			}
-
-			scanline = TIFFroundup(td->td_imagewidth,
-					       ycbcrsubsampling[0]);
-			scanline = TIFFhowmany8(multiply(tif, scanline,
-							 td->td_bitspersample,
-							 "TIFFScanlineSize"));
-			return ((tsize_t)
-				summarize(tif, scanline,
-					  multiply(tif, 2,
-						scanline / ycbcrsubsampling[0],
-						"TIFFVStripSize"),
-					  "TIFFVStripSize"));
-		} else {
-			scanline = multiply(tif, td->td_imagewidth,
-					    td->td_samplesperpixel,
-					    "TIFFScanlineSize");
-		}
-	} else
-		scanline = td->td_imagewidth;
-	return ((tsize_t) TIFFhowmany8(multiply(tif, scanline,
-						td->td_bitspersample,
-						"TIFFScanlineSize")));
-}
-
-/*
- * Return the number of bytes required to store a complete
- * decoded and packed raster scanline (as opposed to the
- * I/O size returned by TIFFScanlineSize which may be less
- * if data is store as separate planes).
- */
-tsize_t
-TIFFRasterScanlineSize(TIFF* tif)
-{
-	TIFFDirectory *td = &tif->tif_dir;
-	tsize_t scanline;
-	
-	scanline = multiply (tif, td->td_bitspersample, td->td_imagewidth,
-			     "TIFFRasterScanlineSize");
-	if (td->td_planarconfig == PLANARCONFIG_CONTIG) {
-		scanline = multiply (tif, scanline, td->td_samplesperpixel,
-				     "TIFFRasterScanlineSize");
-		return ((tsize_t) TIFFhowmany8(scanline));
-	} else
-		return ((tsize_t) multiply (tif, TIFFhowmany8(scanline),
-					    td->td_samplesperpixel,
-					    "TIFFRasterScanlineSize"));
-}
-
-/* vim: set ts=8 sts=8 sw=8 noet: */
diff --git a/src/tiff/tif_swab.c b/src/tiff/tif_swab.c
deleted file mode 100644
index fb0d396..0000000
--- a/src/tiff/tif_swab.c
+++ /dev/null
@@ -1,235 +0,0 @@
-/* $Id: tif_swab.c 4825 2006-08-16 13:01:53Z lubia $ */
-
-/*
- * Copyright (c) 1988-1997 Sam Leffler
- * Copyright (c) 1991-1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and 
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- * 
- * 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 SAM LEFFLER OR SILICON GRAPHICS 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.
- */
-
-/*
- * TIFF Library Bit & Byte Swapping Support.
- *
- * XXX We assume short = 16-bits and long = 32-bits XXX
- */
-#include "tiffiop.h"
-
-#ifndef TIFFSwabShort
-void
-TIFFSwabShort(uint16* wp)
-{
-	register unsigned char* cp = (unsigned char*) wp;
-	unsigned char t;
-
-	t = cp[1]; cp[1] = cp[0]; cp[0] = t;
-}
-#endif
-
-#ifndef TIFFSwabLong
-void
-TIFFSwabLong(uint32* lp)
-{
-	register unsigned char* cp = (unsigned char*) lp;
-	unsigned char t;
-
-	t = cp[3]; cp[3] = cp[0]; cp[0] = t;
-	t = cp[2]; cp[2] = cp[1]; cp[1] = t;
-}
-#endif
-
-#ifndef TIFFSwabArrayOfShort
-void
-TIFFSwabArrayOfShort(uint16* wp, register unsigned long n)
-{
-	register unsigned char* cp;
-	register unsigned char t;
-
-	/* XXX unroll loop some */
-	while (n-- > 0) {
-		cp = (unsigned char*) wp;
-		t = cp[1]; cp[1] = cp[0]; cp[0] = t;
-		wp++;
-	}
-}
-#endif
-
-#ifndef TIFFSwabArrayOfTriples
-void
-TIFFSwabArrayOfTriples(uint8* tp, unsigned long n)
-{
-	unsigned char* cp;
-	unsigned char t;
-
-	/* XXX unroll loop some */
-	while (n-- > 0) {
-		cp = (unsigned char*) tp;
-		t = cp[2]; cp[2] = cp[0]; cp[0] = t;
-		tp += 3;
-	}
-}
-#endif
-
-#ifndef TIFFSwabArrayOfLong
-void
-TIFFSwabArrayOfLong(register uint32* lp, register unsigned long n)
-{
-	register unsigned char *cp;
-	register unsigned char t;
-
-	/* XXX unroll loop some */
-	while (n-- > 0) {
-		cp = (unsigned char *)lp;
-		t = cp[3]; cp[3] = cp[0]; cp[0] = t;
-		t = cp[2]; cp[2] = cp[1]; cp[1] = t;
-		lp++;
-	}
-}
-#endif
-
-#ifndef TIFFSwabDouble
-void
-TIFFSwabDouble(double *dp)
-{
-        register uint32* lp = (uint32*) dp;
-        uint32 t;
-
-	TIFFSwabArrayOfLong(lp, 2);
-	t = lp[0]; lp[0] = lp[1]; lp[1] = t;
-}
-#endif
-
-#ifndef TIFFSwabArrayOfDouble
-void
-TIFFSwabArrayOfDouble(double* dp, register unsigned long n)
-{
-	register uint32* lp = (uint32*) dp;
-        register uint32 t;
-
-	TIFFSwabArrayOfLong(lp, n + n);
-        while (n-- > 0) {
-		t = lp[0]; lp[0] = lp[1]; lp[1] = t;
-                lp += 2;
-        }
-}
-#endif
-
-/*
- * Bit reversal tables.  TIFFBitRevTable[<byte>] gives
- * the bit reversed value of <byte>.  Used in various
- * places in the library when the FillOrder requires
- * bit reversal of byte values (e.g. CCITT Fax 3
- * encoding/decoding).  TIFFNoBitRevTable is provided
- * for algorithms that want an equivalent table that
- * do not reverse bit values.
- */
-static const unsigned char TIFFBitRevTable[256] = {
-    0x00, 0x80, 0x40, 0xc0, 0x20, 0xa0, 0x60, 0xe0,
-    0x10, 0x90, 0x50, 0xd0, 0x30, 0xb0, 0x70, 0xf0,
-    0x08, 0x88, 0x48, 0xc8, 0x28, 0xa8, 0x68, 0xe8,
-    0x18, 0x98, 0x58, 0xd8, 0x38, 0xb8, 0x78, 0xf8,
-    0x04, 0x84, 0x44, 0xc4, 0x24, 0xa4, 0x64, 0xe4,
-    0x14, 0x94, 0x54, 0xd4, 0x34, 0xb4, 0x74, 0xf4,
-    0x0c, 0x8c, 0x4c, 0xcc, 0x2c, 0xac, 0x6c, 0xec,
-    0x1c, 0x9c, 0x5c, 0xdc, 0x3c, 0xbc, 0x7c, 0xfc,
-    0x02, 0x82, 0x42, 0xc2, 0x22, 0xa2, 0x62, 0xe2,
-    0x12, 0x92, 0x52, 0xd2, 0x32, 0xb2, 0x72, 0xf2,
-    0x0a, 0x8a, 0x4a, 0xca, 0x2a, 0xaa, 0x6a, 0xea,
-    0x1a, 0x9a, 0x5a, 0xda, 0x3a, 0xba, 0x7a, 0xfa,
-    0x06, 0x86, 0x46, 0xc6, 0x26, 0xa6, 0x66, 0xe6,
-    0x16, 0x96, 0x56, 0xd6, 0x36, 0xb6, 0x76, 0xf6,
-    0x0e, 0x8e, 0x4e, 0xce, 0x2e, 0xae, 0x6e, 0xee,
-    0x1e, 0x9e, 0x5e, 0xde, 0x3e, 0xbe, 0x7e, 0xfe,
-    0x01, 0x81, 0x41, 0xc1, 0x21, 0xa1, 0x61, 0xe1,
-    0x11, 0x91, 0x51, 0xd1, 0x31, 0xb1, 0x71, 0xf1,
-    0x09, 0x89, 0x49, 0xc9, 0x29, 0xa9, 0x69, 0xe9,
-    0x19, 0x99, 0x59, 0xd9, 0x39, 0xb9, 0x79, 0xf9,
-    0x05, 0x85, 0x45, 0xc5, 0x25, 0xa5, 0x65, 0xe5,
-    0x15, 0x95, 0x55, 0xd5, 0x35, 0xb5, 0x75, 0xf5,
-    0x0d, 0x8d, 0x4d, 0xcd, 0x2d, 0xad, 0x6d, 0xed,
-    0x1d, 0x9d, 0x5d, 0xdd, 0x3d, 0xbd, 0x7d, 0xfd,
-    0x03, 0x83, 0x43, 0xc3, 0x23, 0xa3, 0x63, 0xe3,
-    0x13, 0x93, 0x53, 0xd3, 0x33, 0xb3, 0x73, 0xf3,
-    0x0b, 0x8b, 0x4b, 0xcb, 0x2b, 0xab, 0x6b, 0xeb,
-    0x1b, 0x9b, 0x5b, 0xdb, 0x3b, 0xbb, 0x7b, 0xfb,
-    0x07, 0x87, 0x47, 0xc7, 0x27, 0xa7, 0x67, 0xe7,
-    0x17, 0x97, 0x57, 0xd7, 0x37, 0xb7, 0x77, 0xf7,
-    0x0f, 0x8f, 0x4f, 0xcf, 0x2f, 0xaf, 0x6f, 0xef,
-    0x1f, 0x9f, 0x5f, 0xdf, 0x3f, 0xbf, 0x7f, 0xff
-};
-static const unsigned char TIFFNoBitRevTable[256] = {
-    0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 
-    0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 
-    0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 
-    0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 
-    0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 
-    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 
-    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 
-    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 
-    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 
-    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 
-    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 
-    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 
-    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 
-    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 
-    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 
-    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, 
-    0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 
-    0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 
-    0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 
-    0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, 
-    0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 
-    0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 
-    0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 
-    0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 
-    0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 
-    0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 
-    0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 
-    0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 
-    0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 
-    0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 
-    0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 
-    0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff, 
-};
-
-const unsigned char*
-TIFFGetBitRevTable(int reversed)
-{
-	return (reversed ? TIFFBitRevTable : TIFFNoBitRevTable);
-}
-
-void
-TIFFReverseBits(register unsigned char* cp, register unsigned long n)
-{
-	for (; n > 8; n -= 8) {
-		cp[0] = TIFFBitRevTable[cp[0]];
-		cp[1] = TIFFBitRevTable[cp[1]];
-		cp[2] = TIFFBitRevTable[cp[2]];
-		cp[3] = TIFFBitRevTable[cp[3]];
-		cp[4] = TIFFBitRevTable[cp[4]];
-		cp[5] = TIFFBitRevTable[cp[5]];
-		cp[6] = TIFFBitRevTable[cp[6]];
-		cp[7] = TIFFBitRevTable[cp[7]];
-		cp += 8;
-	}
-	while (n-- > 0)
-		*cp = TIFFBitRevTable[*cp], cp++;
-}
-
-/* vim: set ts=8 sts=8 sw=8 noet: */
diff --git a/src/tiff/tif_thunder.c b/src/tiff/tif_thunder.c
deleted file mode 100644
index 8fd5578..0000000
--- a/src/tiff/tif_thunder.c
+++ /dev/null
@@ -1,158 +0,0 @@
-/* $Id: tif_thunder.c 4825 2006-08-16 13:01:53Z lubia $ */
-
-/*
- * Copyright (c) 1988-1997 Sam Leffler
- * Copyright (c) 1991-1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and 
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- * 
- * 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 SAM LEFFLER OR SILICON GRAPHICS 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.
- */
-
-#include "tiffiop.h"
-#ifdef THUNDER_SUPPORT
-/*
- * TIFF Library.
- *
- * ThunderScan 4-bit Compression Algorithm Support
- */
-
-/*
- * ThunderScan uses an encoding scheme designed for
- * 4-bit pixel values.  Data is encoded in bytes, with
- * each byte split into a 2-bit code word and a 6-bit
- * data value.  The encoding gives raw data, runs of
- * pixels, or pixel values encoded as a delta from the
- * previous pixel value.  For the latter, either 2-bit
- * or 3-bit delta values are used, with the deltas packed
- * into a single byte.
- */
-#define	THUNDER_DATA		0x3f	/* mask for 6-bit data */
-#define	THUNDER_CODE		0xc0	/* mask for 2-bit code word */
-/* code values */
-#define	THUNDER_RUN		0x00	/* run of pixels w/ encoded count */
-#define	THUNDER_2BITDELTAS	0x40	/* 3 pixels w/ encoded 2-bit deltas */
-#define	    DELTA2_SKIP		2	/* skip code for 2-bit deltas */
-#define	THUNDER_3BITDELTAS	0x80	/* 2 pixels w/ encoded 3-bit deltas */
-#define	    DELTA3_SKIP		4	/* skip code for 3-bit deltas */
-#define	THUNDER_RAW		0xc0	/* raw data encoded */
-
-static const int twobitdeltas[4] = { 0, 1, 0, -1 };
-static const int threebitdeltas[8] = { 0, 1, 2, 3, 0, -3, -2, -1 };
-
-#define	SETPIXEL(op, v) { \
-	lastpixel = (v) & 0xf; \
-	if (npixels++ & 1) \
-	    *op++ |= lastpixel; \
-	else \
-	    op[0] = (tidataval_t) (lastpixel << 4); \
-}
-
-static int
-ThunderDecode(TIFF* tif, tidata_t op, tsize_t maxpixels)
-{
-	register unsigned char *bp;
-	register tsize_t cc;
-	unsigned int lastpixel;
-	tsize_t npixels;
-
-	bp = (unsigned char *)tif->tif_rawcp;
-	cc = tif->tif_rawcc;
-	lastpixel = 0;
-	npixels = 0;
-	while (cc > 0 && npixels < maxpixels) {
-		int n, delta;
-
-		n = *bp++, cc--;
-		switch (n & THUNDER_CODE) {
-		case THUNDER_RUN:		/* pixel run */
-			/*
-			 * Replicate the last pixel n times,
-			 * where n is the lower-order 6 bits.
-			 */
-			if (npixels & 1) {
-				op[0] |= lastpixel;
-				lastpixel = *op++; npixels++; n--;
-			} else
-				lastpixel |= lastpixel << 4;
-			npixels += n;
-			if (npixels < maxpixels) {
-				for (; n > 0; n -= 2)
-					*op++ = (tidataval_t) lastpixel;
-			}
-			if (n == -1)
-				*--op &= 0xf0;
-			lastpixel &= 0xf;
-			break;
-		case THUNDER_2BITDELTAS:	/* 2-bit deltas */
-			if ((delta = ((n >> 4) & 3)) != DELTA2_SKIP)
-				SETPIXEL(op, lastpixel + twobitdeltas[delta]);
-			if ((delta = ((n >> 2) & 3)) != DELTA2_SKIP)
-				SETPIXEL(op, lastpixel + twobitdeltas[delta]);
-			if ((delta = (n & 3)) != DELTA2_SKIP)
-				SETPIXEL(op, lastpixel + twobitdeltas[delta]);
-			break;
-		case THUNDER_3BITDELTAS:	/* 3-bit deltas */
-			if ((delta = ((n >> 3) & 7)) != DELTA3_SKIP)
-				SETPIXEL(op, lastpixel + threebitdeltas[delta]);
-			if ((delta = (n & 7)) != DELTA3_SKIP)
-				SETPIXEL(op, lastpixel + threebitdeltas[delta]);
-			break;
-		case THUNDER_RAW:		/* raw data */
-			SETPIXEL(op, n);
-			break;
-		}
-	}
-	tif->tif_rawcp = (tidata_t) bp;
-	tif->tif_rawcc = cc;
-	if (npixels != maxpixels) {
-		TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-		    "ThunderDecode: %s data at scanline %ld (%lu != %lu)",
-		    npixels < maxpixels ? "Not enough" : "Too much",
-		    (long) tif->tif_row, (long) npixels, (long) maxpixels);
-		return (0);
-	}
-	return (1);
-}
-
-static int
-ThunderDecodeRow(TIFF* tif, tidata_t buf, tsize_t occ, tsample_t s)
-{
-	tidata_t row = buf;
-	
-	(void) s;
-	while ((long)occ > 0) {
-		if (!ThunderDecode(tif, row, tif->tif_dir.td_imagewidth))
-			return (0);
-		occ -= tif->tif_scanlinesize;
-		row += tif->tif_scanlinesize;
-	}
-	return (1);
-}
-
-int
-TIFFInitThunderScan(TIFF* tif, int scheme)
-{
-	(void) scheme;
-	tif->tif_decoderow = ThunderDecodeRow;
-	tif->tif_decodestrip = ThunderDecodeRow;
-	return (1);
-}
-#endif /* THUNDER_SUPPORT */
-
-/* vim: set ts=8 sts=8 sw=8 noet: */
diff --git a/src/tiff/tif_tile.c b/src/tiff/tif_tile.c
deleted file mode 100644
index 7dad377..0000000
--- a/src/tiff/tif_tile.c
+++ /dev/null
@@ -1,273 +0,0 @@
-/* $Id: tif_tile.c 4825 2006-08-16 13:01:53Z lubia $ */
-
-/*
- * Copyright (c) 1991-1997 Sam Leffler
- * Copyright (c) 1991-1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and 
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- * 
- * 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 SAM LEFFLER OR SILICON GRAPHICS 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.
- */
-
-/*
- * TIFF Library.
- *
- * Tiled Image Support Routines.
- */
-#include "tiffiop.h"
-
-static uint32
-summarize(TIFF* tif, size_t summand1, size_t summand2, const char* where)
-{
-	/*
-	 * XXX: We are using casting to uint32 here, because sizeof(size_t)
-	 * may be larger than sizeof(uint32) on 64-bit architectures.
-	 */
-	uint32	bytes = summand1 + summand2;
-
-	if (bytes - summand1 != summand2) {
-		TIFFErrorExt(tif->tif_clientdata, tif->tif_name, "Integer overflow in %s", where);
-		bytes = 0;
-	}
-
-	return (bytes);
-}
-
-static uint32
-multiply(TIFF* tif, size_t nmemb, size_t elem_size, const char* where)
-{
-	uint32	bytes = nmemb * elem_size;
-
-	if (elem_size && bytes / elem_size != nmemb) {
-		TIFFErrorExt(tif->tif_clientdata, tif->tif_name, "Integer overflow in %s", where);
-		bytes = 0;
-	}
-
-	return (bytes);
-}
-
-/*
- * Compute which tile an (x,y,z,s) value is in.
- */
-ttile_t
-TIFFComputeTile(TIFF* tif, uint32 x, uint32 y, uint32 z, tsample_t s)
-{
-	TIFFDirectory *td = &tif->tif_dir;
-	uint32 dx = td->td_tilewidth;
-	uint32 dy = td->td_tilelength;
-	uint32 dz = td->td_tiledepth;
-	ttile_t tile = 1;
-
-	if (td->td_imagedepth == 1)
-		z = 0;
-	if (dx == (uint32) -1)
-		dx = td->td_imagewidth;
-	if (dy == (uint32) -1)
-		dy = td->td_imagelength;
-	if (dz == (uint32) -1)
-		dz = td->td_imagedepth;
-	if (dx != 0 && dy != 0 && dz != 0) {
-		uint32 xpt = TIFFhowmany(td->td_imagewidth, dx); 
-		uint32 ypt = TIFFhowmany(td->td_imagelength, dy); 
-		uint32 zpt = TIFFhowmany(td->td_imagedepth, dz); 
-
-		if (td->td_planarconfig == PLANARCONFIG_SEPARATE) 
-			tile = (xpt*ypt*zpt)*s +
-			     (xpt*ypt)*(z/dz) +
-			     xpt*(y/dy) +
-			     x/dx;
-		else
-			tile = (xpt*ypt)*(z/dz) + xpt*(y/dy) + x/dx;
-	}
-	return (tile);
-}
-
-/*
- * Check an (x,y,z,s) coordinate
- * against the image bounds.
- */
-int
-TIFFCheckTile(TIFF* tif, uint32 x, uint32 y, uint32 z, tsample_t s)
-{
-	TIFFDirectory *td = &tif->tif_dir;
-
-	if (x >= td->td_imagewidth) {
-		TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-			     "%lu: Col out of range, max %lu",
-			     (unsigned long) x,
-			     (unsigned long) (td->td_imagewidth - 1));
-		return (0);
-	}
-	if (y >= td->td_imagelength) {
-		TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-			     "%lu: Row out of range, max %lu",
-			     (unsigned long) y,
-			     (unsigned long) (td->td_imagelength - 1));
-		return (0);
-	}
-	if (z >= td->td_imagedepth) {
-		TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-			     "%lu: Depth out of range, max %lu",
-			     (unsigned long) z,
-			     (unsigned long) (td->td_imagedepth - 1));
-		return (0);
-	}
-	if (td->td_planarconfig == PLANARCONFIG_SEPARATE &&
-	    s >= td->td_samplesperpixel) {
-		TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-			     "%lu: Sample out of range, max %lu",
-			     (unsigned long) s,
-			     (unsigned long) (td->td_samplesperpixel - 1));
-		return (0);
-	}
-	return (1);
-}
-
-/*
- * Compute how many tiles are in an image.
- */
-ttile_t
-TIFFNumberOfTiles(TIFF* tif)
-{
-	TIFFDirectory *td = &tif->tif_dir;
-	uint32 dx = td->td_tilewidth;
-	uint32 dy = td->td_tilelength;
-	uint32 dz = td->td_tiledepth;
-	ttile_t ntiles;
-
-	if (dx == (uint32) -1)
-		dx = td->td_imagewidth;
-	if (dy == (uint32) -1)
-		dy = td->td_imagelength;
-	if (dz == (uint32) -1)
-		dz = td->td_imagedepth;
-	ntiles = (dx == 0 || dy == 0 || dz == 0) ? 0 :
-	    multiply(tif, multiply(tif, TIFFhowmany(td->td_imagewidth, dx),
-				   TIFFhowmany(td->td_imagelength, dy),
-				   "TIFFNumberOfTiles"),
-		     TIFFhowmany(td->td_imagedepth, dz), "TIFFNumberOfTiles");
-	if (td->td_planarconfig == PLANARCONFIG_SEPARATE)
-		ntiles = multiply(tif, ntiles, td->td_samplesperpixel,
-				  "TIFFNumberOfTiles");
-	return (ntiles);
-}
-
-/*
- * Compute the # bytes in each row of a tile.
- */
-tsize_t
-TIFFTileRowSize(TIFF* tif)
-{
-	TIFFDirectory *td = &tif->tif_dir;
-	tsize_t rowsize;
-	
-	if (td->td_tilelength == 0 || td->td_tilewidth == 0)
-		return ((tsize_t) 0);
-	rowsize = multiply(tif, td->td_bitspersample, td->td_tilewidth,
-			   "TIFFTileRowSize");
-	if (td->td_planarconfig == PLANARCONFIG_CONTIG)
-		rowsize = multiply(tif, rowsize, td->td_samplesperpixel,
-				   "TIFFTileRowSize");
-	return ((tsize_t) TIFFhowmany8(rowsize));
-}
-
-/*
- * Compute the # bytes in a variable length, row-aligned tile.
- */
-tsize_t
-TIFFVTileSize(TIFF* tif, uint32 nrows)
-{
-	TIFFDirectory *td = &tif->tif_dir;
-	tsize_t tilesize;
-
-	if (td->td_tilelength == 0 || td->td_tilewidth == 0 ||
-	    td->td_tiledepth == 0)
-		return ((tsize_t) 0);
-	if (td->td_planarconfig == PLANARCONFIG_CONTIG &&
-	    td->td_photometric == PHOTOMETRIC_YCBCR &&
-	    !isUpSampled(tif)) {
-		/*
-		 * Packed YCbCr data contain one Cb+Cr for every
-		 * HorizontalSampling*VerticalSampling Y values.
-		 * Must also roundup width and height when calculating
-		 * since images that are not a multiple of the
-		 * horizontal/vertical subsampling area include
-		 * YCbCr data for the extended image.
-		 */
-		tsize_t w =
-		    TIFFroundup(td->td_tilewidth, td->td_ycbcrsubsampling[0]);
-		tsize_t rowsize =
-		    TIFFhowmany8(multiply(tif, w, td->td_bitspersample,
-					  "TIFFVTileSize"));
-		tsize_t samplingarea =
-		    td->td_ycbcrsubsampling[0]*td->td_ycbcrsubsampling[1];
-		if (samplingarea == 0) {
-			TIFFErrorExt(tif->tif_clientdata, tif->tif_name, "Invalid YCbCr subsampling");
-			return 0;
-		}
-		nrows = TIFFroundup(nrows, td->td_ycbcrsubsampling[1]);
-		/* NB: don't need TIFFhowmany here 'cuz everything is rounded */
-		tilesize = multiply(tif, nrows, rowsize, "TIFFVTileSize");
-		tilesize = summarize(tif, tilesize,
-				     multiply(tif, 2, tilesize / samplingarea,
-					      "TIFFVTileSize"),
-				     "TIFFVTileSize");
-	} else
-		tilesize = multiply(tif, nrows, TIFFTileRowSize(tif),
-				    "TIFFVTileSize");
-	return ((tsize_t)
-	    multiply(tif, tilesize, td->td_tiledepth, "TIFFVTileSize"));
-}
-
-/*
- * Compute the # bytes in a row-aligned tile.
- */
-tsize_t
-TIFFTileSize(TIFF* tif)
-{
-	return (TIFFVTileSize(tif, tif->tif_dir.td_tilelength));
-}
-
-/*
- * Compute a default tile size based on the image
- * characteristics and a requested value.  If a
- * request is <1 then we choose a size according
- * to certain heuristics.
- */
-void
-TIFFDefaultTileSize(TIFF* tif, uint32* tw, uint32* th)
-{
-	(*tif->tif_deftilesize)(tif, tw, th);
-}
-
-void
-_TIFFDefaultTileSize(TIFF* tif, uint32* tw, uint32* th)
-{
-	(void) tif;
-	if (*(int32*) tw < 1)
-		*tw = 256;
-	if (*(int32*) th < 1)
-		*th = 256;
-	/* roundup to a multiple of 16 per the spec */
-	if (*tw & 0xf)
-		*tw = TIFFroundup(*tw, 16);
-	if (*th & 0xf)
-		*th = TIFFroundup(*th, 16);
-}
-
-/* vim: set ts=8 sts=8 sw=8 noet: */
diff --git a/src/tiff/tif_unix.c b/src/tiff/tif_unix.c
deleted file mode 100644
index 22b00d4..0000000
--- a/src/tiff/tif_unix.c
+++ /dev/null
@@ -1,293 +0,0 @@
-/* $Id: tif_unix.c 4831 2006-08-17 12:06:30Z castejon $ */
-
-/*
- * Copyright (c) 1988-1997 Sam Leffler
- * Copyright (c) 1991-1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and 
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- * 
- * 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 SAM LEFFLER OR SILICON GRAPHICS 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.
- */
-
-/*
- * TIFF Library UNIX-specific Routines. These are should also work with the
- * Windows Common RunTime Library.
- */
-#include "tif_config.h"
-
-#ifdef HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-
-#include <stdarg.h>
-#include <stdlib.h>
-#include <sys/stat.h>
-
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif
-
-#ifdef HAVE_FCNTL_H
-# include <fcntl.h>
-#endif
-
-#ifdef HAVE_IO_H
-# include <sys/io.h>
-#endif
-
-#include "tiffiop.h"
-
-static tsize_t
-_tiffReadProc(thandle_t fd, tdata_t buf, tsize_t size)
-{
-	return ((tsize_t) read((int) fd, buf, (size_t) size));
-}
-
-static tsize_t
-_tiffWriteProc(thandle_t fd, tdata_t buf, tsize_t size)
-{
-	return ((tsize_t) write((int) fd, buf, (size_t) size));
-}
-
-static toff_t
-_tiffSeekProc(thandle_t fd, toff_t off, int whence)
-{
-	return ((toff_t) lseek((int) fd, (off_t) off, whence));
-}
-
-static int
-_tiffCloseProc(thandle_t fd)
-{
-	return (close((int) fd));
-}
-
-
-static toff_t
-_tiffSizeProc(thandle_t fd)
-{
-#ifdef _AM29K
-	long fsize;
-	return ((fsize = lseek((int) fd, 0, SEEK_END)) < 0 ? 0 : fsize);
-#else
-	struct stat sb;
-	return (toff_t) (fstat((int) fd, &sb) < 0 ? 0 : sb.st_size);
-#endif
-}
-
-#ifdef HAVE_MMAP
-#include <sys/mman.h>
-
-static int
-_tiffMapProc(thandle_t fd, tdata_t* pbase, toff_t* psize)
-{
-	toff_t size = _tiffSizeProc(fd);
-	if (size != (toff_t) -1) {
-		*pbase = (tdata_t)
-		    mmap(0, size, PROT_READ, MAP_SHARED, (int) fd, 0);
-		if (*pbase != (tdata_t) -1) {
-			*psize = size;
-			return (1);
-		}
-	}
-	return (0);
-}
-
-static void
-_tiffUnmapProc(thandle_t fd, tdata_t base, toff_t size)
-{
-	(void) fd;
-	(void) munmap(base, (off_t) size);
-}
-#else /* !HAVE_MMAP */
-static int
-_tiffMapProc(thandle_t fd, tdata_t* pbase, toff_t* psize)
-{
-	(void) fd; (void) pbase; (void) psize;
-	return (0);
-}
-
-static void
-_tiffUnmapProc(thandle_t fd, tdata_t base, toff_t size)
-{
-	(void) fd; (void) base; (void) size;
-}
-#endif /* !HAVE_MMAP */
-
-/*
- * Open a TIFF file descriptor for read/writing.
- */
-TIFF*
-TIFFFdOpen(int fd, const char* name, const char* mode)
-{
-	TIFF* tif;
-
-	tif = TIFFClientOpen(name, mode,
-	    (thandle_t) fd,
-	    _tiffReadProc, _tiffWriteProc,
-	    _tiffSeekProc, _tiffCloseProc, _tiffSizeProc,
-	    _tiffMapProc, _tiffUnmapProc);
-	if (tif)
-		tif->tif_fd = fd;
-	return (tif);
-}
-
-/*
- * Open a TIFF file for read/writing.
- */
-TIFF*
-TIFFOpen(const char* name, const char* mode)
-{
-	static const char module[] = "TIFFOpen";
-	int m, fd;
-        TIFF* tif;
-
-	m = _TIFFgetMode(mode, module);
-	if (m == -1)
-		return ((TIFF*)0);
-
-/* for cygwin and mingw */        
-#ifdef O_BINARY
-        m |= O_BINARY;
-#endif        
-        
-#ifdef _AM29K
-	fd = open(name, m);
-#else
-	fd = open(name, m, 0666);
-#endif
-	if (fd < 0) {
-		TIFFErrorExt(0, module, "%s: Cannot open", name);
-		return ((TIFF *)0);
-	}
-
-	tif = TIFFFdOpen((int)fd, name, mode);
-	if(!tif)
-		close(fd);
-	return tif;
-}
-
-#ifdef __WIN32__
-#include <windows.h>
-/*
- * Open a TIFF file with a Unicode filename, for read/writing.
- */
-TIFF*
-TIFFOpenW(const wchar_t* name, const char* mode)
-{
-	static const char module[] = "TIFFOpenW";
-	int m, fd;
-	int mbsize;
-	char *mbname;
-	TIFF* tif;
-
-	m = _TIFFgetMode(mode, module);
-	if (m == -1)
-		return ((TIFF*)0);
-
-/* for cygwin and mingw */        
-#ifdef O_BINARY
-        m |= O_BINARY;
-#endif        
-        
-	fd = _wopen(name, m, 0666);
-	if (fd < 0) {
-		TIFFErrorExt(0, module, "%s: Cannot open", name);
-		return ((TIFF *)0);
-	}
-
-	mbname = NULL;
-	mbsize = WideCharToMultiByte(CP_ACP, 0, name, -1, NULL, 0, NULL, NULL);
-	if (mbsize > 0) {
-		mbname = _TIFFmalloc(mbsize);
-		if (!mbname) {
-			TIFFErrorExt(0, module,
-			"Can't allocate space for filename conversion buffer");
-			return ((TIFF*)0);
-		}
-
-		WideCharToMultiByte(CP_ACP, 0, name, -1, mbname, mbsize,
-				    NULL, NULL);
-	}
-
-	tif = TIFFFdOpen((int)fd, (mbname != NULL) ? mbname : "<unknown>",
-			 mode);
-	
-	_TIFFfree(mbname);
-	
-	if(!tif)
-		close(fd);
-	return tif;
-}
-#endif
-
-void*
-_TIFFmalloc(tsize_t s)
-{
-	return (malloc((size_t) s));
-}
-
-void
-_TIFFfree(tdata_t p)
-{
-	free(p);
-}
-
-void*
-_TIFFrealloc(tdata_t p, tsize_t s)
-{
-	return (realloc(p, (size_t) s));
-}
-
-void
-_TIFFmemset(tdata_t p, int v, tsize_t c)
-{
-	memset(p, v, (size_t) c);
-}
-
-void
-_TIFFmemcpy(tdata_t d, const tdata_t s, tsize_t c)
-{
-	memcpy(d, s, (size_t) c);
-}
-
-int
-_TIFFmemcmp(const tdata_t p1, const tdata_t p2, tsize_t c)
-{
-	return (memcmp(p1, p2, (size_t) c));
-}
-
-static void
-unixWarningHandler(const char* module, const char* fmt, va_list ap)
-{
-	if (module != NULL)
-		fprintf(stderr, "%s: ", module);
-	fprintf(stderr, "Warning, ");
-	vfprintf(stderr, fmt, ap);
-	fprintf(stderr, ".\n");
-}
-TIFFErrorHandler _TIFFwarningHandler = unixWarningHandler;
-
-static void
-unixErrorHandler(const char* module, const char* fmt, va_list ap)
-{
-	if (module != NULL)
-		fprintf(stderr, "%s: ", module);
-	vfprintf(stderr, fmt, ap);
-	fprintf(stderr, ".\n");
-}
-TIFFErrorHandler _TIFFerrorHandler = unixErrorHandler;
diff --git a/src/tiff/tif_version.c b/src/tiff/tif_version.c
deleted file mode 100644
index 3c5819d..0000000
--- a/src/tiff/tif_version.c
+++ /dev/null
@@ -1,33 +0,0 @@
-/* $Header$ */
-/*
- * Copyright (c) 1992-1997 Sam Leffler
- * Copyright (c) 1992-1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and 
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- * 
- * 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 SAM LEFFLER OR SILICON GRAPHICS 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.
- */
-#include "tiffiop.h"
-
-static const char TIFFVersion[] = TIFFLIB_VERSION_STR;
-
-const char*
-TIFFGetVersion(void)
-{
-	return (TIFFVersion);
-}
diff --git a/src/tiff/tif_warning.c b/src/tiff/tif_warning.c
deleted file mode 100644
index 569abbb..0000000
--- a/src/tiff/tif_warning.c
+++ /dev/null
@@ -1,74 +0,0 @@
-/* $Header$ */
-
-/*
- * Copyright (c) 1988-1997 Sam Leffler
- * Copyright (c) 1991-1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and 
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- * 
- * 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 SAM LEFFLER OR SILICON GRAPHICS 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.
- */
-
-/*
- * TIFF Library.
- */
-#include "tiffiop.h"
-
-TIFFErrorHandlerExt _TIFFwarningHandlerExt = NULL;
-
-TIFFErrorHandler
-TIFFSetWarningHandler(TIFFErrorHandler handler)
-{
-	TIFFErrorHandler prev = _TIFFwarningHandler;
-	_TIFFwarningHandler = handler;
-	return (prev);
-}
-
-TIFFErrorHandlerExt
-TIFFSetWarningHandlerExt(TIFFErrorHandlerExt handler)
-{
-	TIFFErrorHandlerExt prev = _TIFFwarningHandlerExt;
-	_TIFFwarningHandlerExt = handler;
-	return (prev);
-}
-
-void
-TIFFWarning(const char* module, const char* fmt, ...)
-{
-	va_list ap;
-	va_start(ap, fmt);
-	if (_TIFFwarningHandler)
-		(*_TIFFwarningHandler)(module, fmt, ap);
-	if (_TIFFwarningHandlerExt)
-		(*_TIFFwarningHandlerExt)(0, module, fmt, ap);
-	va_end(ap);
-}
-
-void
-TIFFWarningExt(thandle_t fd, const char* module, const char* fmt, ...)
-{
-	va_list ap;
-	va_start(ap, fmt);
-	if (_TIFFwarningHandler)
-		(*_TIFFwarningHandler)(module, fmt, ap);
-	if (_TIFFwarningHandlerExt)
-		(*_TIFFwarningHandlerExt)(fd, module, fmt, ap);
-	va_end(ap);
-}
-
-
diff --git a/src/tiff/tif_win32.c b/src/tiff/tif_win32.c
deleted file mode 100644
index f6bbc84..0000000
--- a/src/tiff/tif_win32.c
+++ /dev/null
@@ -1,393 +0,0 @@
-/* $Id: tif_win32.c 4825 2006-08-16 13:01:53Z lubia $ */
-
-/*
- * Copyright (c) 1988-1997 Sam Leffler
- * Copyright (c) 1991-1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and 
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- * 
- * 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 SAM LEFFLER OR SILICON GRAPHICS 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.
- */
-
-/*
- * TIFF Library Win32-specific Routines.  Adapted from tif_unix.c 4/5/95 by
- * Scott Wagner (wagner at itek.com), Itek Graphix, Rochester, NY USA
- */
-#include "tiffiop.h"
-#include "windows.h"
-
-static tsize_t
-_tiffReadProc(thandle_t fd, tdata_t buf, tsize_t size)
-{
-	DWORD dwSizeRead;
-	if (!ReadFile(fd, buf, size, &dwSizeRead, NULL))
-		return(0);
-	return ((tsize_t) dwSizeRead);
-}
-
-static tsize_t
-_tiffWriteProc(thandle_t fd, tdata_t buf, tsize_t size)
-{
-	DWORD dwSizeWritten;
-	if (!WriteFile(fd, buf, size, &dwSizeWritten, NULL))
-		return(0);
-	return ((tsize_t) dwSizeWritten);
-}
-
-static toff_t
-_tiffSeekProc(thandle_t fd, toff_t off, int whence)
-{
-	DWORD dwMoveMethod, dwMoveHigh;
-
-        /* we use this as a special code, so avoid accepting it */
-        if( off == 0xFFFFFFFF )
-            return 0xFFFFFFFF;
-        
-	switch(whence)
-	{
-	case SEEK_SET:
-		dwMoveMethod = FILE_BEGIN;
-		break;
-	case SEEK_CUR:
-		dwMoveMethod = FILE_CURRENT;
-		break;
-	case SEEK_END:
-		dwMoveMethod = FILE_END;
-		break;
-	default:
-		dwMoveMethod = FILE_BEGIN;
-		break;
-	}
-        dwMoveHigh = 0;
-	return ((toff_t)SetFilePointer(fd, (LONG) off, (PLONG)&dwMoveHigh,
-                                       dwMoveMethod));
-}
-
-static int
-_tiffCloseProc(thandle_t fd)
-{
-	return (CloseHandle(fd) ? 0 : -1);
-}
-
-static toff_t
-_tiffSizeProc(thandle_t fd)
-{
-	return ((toff_t)GetFileSize(fd, NULL));
-}
-
-#ifdef __BORLANDC__
-#pragma argsused
-#endif
-static int
-_tiffDummyMapProc(thandle_t fd, tdata_t* pbase, toff_t* psize)
-{
-	return (0);
-}
-
-/*
- * From "Hermann Josef Hill" <lhill at rhein-zeitung.de>:
- *
- * Windows uses both a handle and a pointer for file mapping,
- * but according to the SDK documentation and Richter's book
- * "Advanced Windows Programming" it is safe to free the handle
- * after obtaining the file mapping pointer
- *
- * This removes a nasty OS dependency and cures a problem
- * with Visual C++ 5.0
- */
-static int
-_tiffMapProc(thandle_t fd, tdata_t* pbase, toff_t* psize)
-{
-	toff_t size;
-	HANDLE hMapFile;
-
-	if ((size = _tiffSizeProc(fd)) == 0xFFFFFFFF)
-		return (0);
-	hMapFile = CreateFileMapping(fd, NULL, PAGE_READONLY, 0, size, NULL);
-	if (hMapFile == NULL)
-		return (0);
-	*pbase = MapViewOfFile(hMapFile, FILE_MAP_READ, 0, 0, 0);
-	CloseHandle(hMapFile);
-	if (*pbase == NULL)
-		return (0);
-	*psize = size;
-	return(1);
-}
-
-#ifdef __BORLANDC__
-#pragma argsused
-#endif
-static void
-_tiffDummyUnmapProc(thandle_t fd, tdata_t base, toff_t size)
-{
-}
-
-static void
-_tiffUnmapProc(thandle_t fd, tdata_t base, toff_t size)
-{
-	UnmapViewOfFile(base);
-}
-
-/*
- * Open a TIFF file descriptor for read/writing.
- * Note that TIFFFdOpen and TIFFOpen recognise the character 'u' in the mode
- * string, which forces the file to be opened unmapped.
- */
-TIFF*
-TIFFFdOpen(int ifd, const char* name, const char* mode)
-{
-	TIFF* tif;
-	BOOL fSuppressMap = (mode[1] == 'u' || (mode[1]!=0 && mode[2] == 'u'));
-
-	tif = TIFFClientOpen(name, mode, (thandle_t)ifd,
-			_tiffReadProc, _tiffWriteProc,
-			_tiffSeekProc, _tiffCloseProc, _tiffSizeProc,
-			fSuppressMap ? _tiffDummyMapProc : _tiffMapProc,
-			fSuppressMap ? _tiffDummyUnmapProc : _tiffUnmapProc);
-	if (tif)
-		tif->tif_fd = ifd;
-	return (tif);
-}
-
-/*
- * Open a TIFF file for read/writing.
- */
-TIFF*
-TIFFOpen(const char* name, const char* mode)
-{
-	static const char module[] = "TIFFOpen";
-	thandle_t fd;
-	int m;
-	DWORD dwMode;
-	TIFF* tif;
-
-	m = _TIFFgetMode(mode, module);
-
-	switch(m)
-	{
-	case O_RDONLY:
-		dwMode = OPEN_EXISTING;
-		break;
-	case O_RDWR:
-		dwMode = OPEN_ALWAYS;
-		break;
-	case O_RDWR|O_CREAT:
-		dwMode = OPEN_ALWAYS;
-		break;
-	case O_RDWR|O_TRUNC:
-		dwMode = CREATE_ALWAYS;
-		break;
-	case O_RDWR|O_CREAT|O_TRUNC:
-		dwMode = CREATE_ALWAYS;
-		break;
-	default:
-		return ((TIFF*)0);
-	}
-	fd = (thandle_t)CreateFileA(name,
-		(m == O_RDONLY)?GENERIC_READ:(GENERIC_READ | GENERIC_WRITE),
-		FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, dwMode,
-		(m == O_RDONLY)?FILE_ATTRIBUTE_READONLY:FILE_ATTRIBUTE_NORMAL,
-		NULL);
-	if (fd == INVALID_HANDLE_VALUE) {
-		TIFFErrorExt(0, module, "%s: Cannot open", name);
-		return ((TIFF *)0);
-	}
-
-	tif = TIFFFdOpen((int)fd, name, mode);
-	if(!tif)
-		CloseHandle(fd);
-	return tif;
-}
-
-/*
- * Open a TIFF file with a Unicode filename, for read/writing.
- */
-TIFF*
-TIFFOpenW(const wchar_t* name, const char* mode)
-{
-	static const char module[] = "TIFFOpenW";
-	thandle_t fd;
-	int m;
-	DWORD dwMode;
-	int mbsize;
-	char *mbname;
-	TIFF *tif;
-
-	m = _TIFFgetMode(mode, module);
-
-	switch(m) {
-		case O_RDONLY:			dwMode = OPEN_EXISTING; break;
-		case O_RDWR:			dwMode = OPEN_ALWAYS;   break;
-		case O_RDWR|O_CREAT:		dwMode = OPEN_ALWAYS;   break;
-		case O_RDWR|O_TRUNC:		dwMode = CREATE_ALWAYS; break;
-		case O_RDWR|O_CREAT|O_TRUNC:	dwMode = CREATE_ALWAYS; break;
-		default:			return ((TIFF*)0);
-	}
-
-	fd = (thandle_t)CreateFileW(name,
-		(m == O_RDONLY)?GENERIC_READ:(GENERIC_READ|GENERIC_WRITE),
-		FILE_SHARE_READ, NULL, dwMode,
-		(m == O_RDONLY)?FILE_ATTRIBUTE_READONLY:FILE_ATTRIBUTE_NORMAL,
-		NULL);
-	if (fd == INVALID_HANDLE_VALUE) {
-		TIFFErrorExt(0, module, "%S: Cannot open", name);
-		return ((TIFF *)0);
-	}
-
-	mbname = NULL;
-	mbsize = WideCharToMultiByte(CP_ACP, 0, name, -1, NULL, 0, NULL, NULL);
-	if (mbsize > 0) {
-		mbname = (char *)_TIFFmalloc(mbsize);
-		if (!mbname) {
-			TIFFErrorExt(0, module,
-			"Can't allocate space for filename conversion buffer");
-			return ((TIFF*)0);
-		}
-
-		WideCharToMultiByte(CP_ACP, 0, name, -1, mbname, mbsize,
-				    NULL, NULL);
-	}
-
-	tif = TIFFFdOpen((int)fd,
-			 (mbname != NULL) ? mbname : "<unknown>", mode);
-	if(!tif)
-		CloseHandle(fd);
-
-	_TIFFfree(mbname);
-
-	return tif;
-}
-
-tdata_t
-_TIFFmalloc(tsize_t s)
-{
-	return ((tdata_t)GlobalAlloc(GMEM_FIXED, s));
-}
-
-void
-_TIFFfree(tdata_t p)
-{
-	GlobalFree(p);
-	return;
-}
-
-tdata_t
-_TIFFrealloc(tdata_t p, tsize_t s)
-{
-        void* pvTmp;
-        tsize_t old;
-
-        if(p == NULL)
-                return ((tdata_t)GlobalAlloc(GMEM_FIXED, s));
-
-        old = GlobalSize(p);
-
-        if (old>=s) {
-                if ((pvTmp = GlobalAlloc(GMEM_FIXED, s)) != NULL) {
-	                CopyMemory(pvTmp, p, s);
-	                GlobalFree(p);
-                }
-        } else {
-                if ((pvTmp = GlobalAlloc(GMEM_FIXED, s)) != NULL) {
-	                CopyMemory(pvTmp, p, old);
-	                GlobalFree(p);
-                }
-        }
-        return ((tdata_t)pvTmp);
-}
-
-void
-_TIFFmemset(void* p, int v, tsize_t c)
-{
-	FillMemory(p, c, (BYTE)v);
-}
-
-void
-_TIFFmemcpy(void* d, const tdata_t s, tsize_t c)
-{
-	CopyMemory(d, s, c);
-}
-
-int
-_TIFFmemcmp(const tdata_t p1, const tdata_t p2, tsize_t c)
-{
-	register const BYTE *pb1 = (const BYTE *) p1;
-	register const BYTE *pb2 = (const BYTE *) p2;
-	register DWORD dwTmp = c;
-	register int iTmp;
-	for (iTmp = 0; dwTmp-- && !iTmp; iTmp = (int)*pb1++ - (int)*pb2++)
-		;
-	return (iTmp);
-}
-
-static void
-Win32WarningHandler(const char* module, const char* fmt, va_list ap)
-{
-#ifndef TIF_PLATFORM_CONSOLE
-	LPTSTR szTitle;
-	LPTSTR szTmp;
-	LPCTSTR szTitleText = "%s Warning";
-	LPCTSTR szDefaultModule = "LIBTIFF";
-	LPCTSTR szTmpModule = (module == NULL) ? szDefaultModule : module;
-	if ((szTitle = (LPTSTR)LocalAlloc(LMEM_FIXED, (strlen(szTmpModule) +
-		strlen(szTitleText) + strlen(fmt) + 128)*sizeof(char))) == NULL)
-		return;
-	sprintf(szTitle, szTitleText, szTmpModule);
-	szTmp = szTitle + (strlen(szTitle)+2)*sizeof(char);
-	vsprintf(szTmp, fmt, ap);
-	MessageBoxA(GetFocus(), szTmp, szTitle, MB_OK | MB_ICONINFORMATION);
-	LocalFree(szTitle);
-	return;
-#else
-	if (module != NULL)
-		fprintf(stderr, "%s: ", module);
-	fprintf(stderr, "Warning, ");
-	vfprintf(stderr, fmt, ap);
-	fprintf(stderr, ".\n");
-#endif        
-}
-TIFFErrorHandler _TIFFwarningHandler = Win32WarningHandler;
-
-static void
-Win32ErrorHandler(const char* module, const char* fmt, va_list ap)
-{
-#ifndef TIF_PLATFORM_CONSOLE
-	LPTSTR szTitle;
-	LPTSTR szTmp;
-	LPCTSTR szTitleText = "%s Error";
-	LPCTSTR szDefaultModule = "LIBTIFF";
-	LPCTSTR szTmpModule = (module == NULL) ? szDefaultModule : module;
-	if ((szTitle = (LPTSTR)LocalAlloc(LMEM_FIXED, (strlen(szTmpModule) +
-		strlen(szTitleText) + strlen(fmt) + 128)*sizeof(char))) == NULL)
-		return;
-	sprintf(szTitle, szTitleText, szTmpModule);
-	szTmp = szTitle + (strlen(szTitle)+2)*sizeof(char);
-	vsprintf(szTmp, fmt, ap);
-	MessageBoxA(GetFocus(), szTmp, szTitle, MB_OK | MB_ICONEXCLAMATION);
-	LocalFree(szTitle);
-	return;
-#else
-	if (module != NULL)
-		fprintf(stderr, "%s: ", module);
-	vfprintf(stderr, fmt, ap);
-	fprintf(stderr, ".\n");
-#endif        
-}
-TIFFErrorHandler _TIFFerrorHandler = Win32ErrorHandler;
-
-/* vim: set ts=8 sts=8 sw=8 noet: */
diff --git a/src/tiff/tif_write.c b/src/tiff/tif_write.c
deleted file mode 100644
index 8858a8e..0000000
--- a/src/tiff/tif_write.c
+++ /dev/null
@@ -1,725 +0,0 @@
-/* $Id: tif_write.c 4825 2006-08-16 13:01:53Z lubia $ */
-
-/*
- * Copyright (c) 1988-1997 Sam Leffler
- * Copyright (c) 1991-1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and 
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- * 
- * 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 SAM LEFFLER OR SILICON GRAPHICS 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.
- */
-
-/*
- * TIFF Library.
- *
- * Scanline-oriented Write Support
- */
-#include "tiffiop.h"
-#include <stdio.h>
-
-#define	STRIPINCR	20		/* expansion factor on strip array */
-
-#define	WRITECHECKSTRIPS(tif, module)				\
-	(((tif)->tif_flags&TIFF_BEENWRITING) || TIFFWriteCheck((tif),0,module))
-#define	WRITECHECKTILES(tif, module)				\
-	(((tif)->tif_flags&TIFF_BEENWRITING) || TIFFWriteCheck((tif),1,module))
-#define	BUFFERCHECK(tif)					\
-	((((tif)->tif_flags & TIFF_BUFFERSETUP) && tif->tif_rawdata) ||	\
-	    TIFFWriteBufferSetup((tif), NULL, (tsize_t) -1))
-
-static	int TIFFGrowStrips(TIFF*, int, const char*);
-static	int TIFFAppendToStrip(TIFF*, tstrip_t, tidata_t, tsize_t);
-
-int
-TIFFWriteScanline(TIFF* tif, tdata_t buf, uint32 row, tsample_t sample)
-{
-	static const char module[] = "TIFFWriteScanline";
-	register TIFFDirectory *td;
-	int status, imagegrew = 0;
-	tstrip_t strip;
-
-	if (!WRITECHECKSTRIPS(tif, module))
-		return (-1);
-	/*
-	 * Handle delayed allocation of data buffer.  This
-	 * permits it to be sized more intelligently (using
-	 * directory information).
-	 */
-	if (!BUFFERCHECK(tif))
-		return (-1);
-	td = &tif->tif_dir;
-	/*
-	 * Extend image length if needed
-	 * (but only for PlanarConfig=1).
-	 */
-	if (row >= td->td_imagelength) {	/* extend image */
-		if (td->td_planarconfig == PLANARCONFIG_SEPARATE) {
-			TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-		"Can not change \"ImageLength\" when using separate planes");
-			return (-1);
-		}
-		td->td_imagelength = row+1;
-		imagegrew = 1;
-	}
-	/*
-	 * Calculate strip and check for crossings.
-	 */
-	if (td->td_planarconfig == PLANARCONFIG_SEPARATE) {
-		if (sample >= td->td_samplesperpixel) {
-			TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-			    "%d: Sample out of range, max %d",
-			    sample, td->td_samplesperpixel);
-			return (-1);
-		}
-		strip = sample*td->td_stripsperimage + row/td->td_rowsperstrip;
-	} else
-		strip = row / td->td_rowsperstrip;
-	/*
-	 * Check strip array to make sure there's space. We don't support
-	 * dynamically growing files that have data organized in separate
-	 * bitplanes because it's too painful.  In that case we require that
-	 * the imagelength be set properly before the first write (so that the
-	 * strips array will be fully allocated above).
-	 */
-	if (strip >= td->td_nstrips && !TIFFGrowStrips(tif, 1, module))
-		return (-1);
-	if (strip != tif->tif_curstrip) {
-		/*
-		 * Changing strips -- flush any data present.
-		 */
-		if (!TIFFFlushData(tif))
-			return (-1);
-		tif->tif_curstrip = strip;
-		/*
-		 * Watch out for a growing image.  The value of strips/image
-		 * will initially be 1 (since it can't be deduced until the
-		 * imagelength is known).
-		 */
-		if (strip >= td->td_stripsperimage && imagegrew)
-			td->td_stripsperimage =
-			    TIFFhowmany(td->td_imagelength,td->td_rowsperstrip);
-		tif->tif_row =
-		    (strip % td->td_stripsperimage) * td->td_rowsperstrip;
-		if ((tif->tif_flags & TIFF_CODERSETUP) == 0) {
-			if (!(*tif->tif_setupencode)(tif))
-				return (-1);
-			tif->tif_flags |= TIFF_CODERSETUP;
-		}
-        
-		tif->tif_rawcc = 0;
-		tif->tif_rawcp = tif->tif_rawdata;
-
-		if( td->td_stripbytecount[strip] > 0 )
-		{
-			/* if we are writing over existing tiles, zero length */
-			td->td_stripbytecount[strip] = 0;
-
-			/* this forces TIFFAppendToStrip() to do a seek */
-			tif->tif_curoff = 0;
-		}
-
-		if (!(*tif->tif_preencode)(tif, sample))
-			return (-1);
-		tif->tif_flags |= TIFF_POSTENCODE;
-	}
-	/*
-	 * Ensure the write is either sequential or at the
-	 * beginning of a strip (or that we can randomly
-	 * access the data -- i.e. no encoding).
-	 */
-	if (row != tif->tif_row) {
-		if (row < tif->tif_row) {
-			/*
-			 * Moving backwards within the same strip:
-			 * backup to the start and then decode
-			 * forward (below).
-			 */
-			tif->tif_row = (strip % td->td_stripsperimage) *
-			    td->td_rowsperstrip;
-			tif->tif_rawcp = tif->tif_rawdata;
-		}
-		/*
-		 * Seek forward to the desired row.
-		 */
-		if (!(*tif->tif_seek)(tif, row - tif->tif_row))
-			return (-1);
-		tif->tif_row = row;
-	}
-
-        /* swab if needed - note that source buffer will be altered */
-        tif->tif_postdecode( tif, (tidata_t) buf, tif->tif_scanlinesize );
-
-	status = (*tif->tif_encoderow)(tif, (tidata_t) buf,
-	    tif->tif_scanlinesize, sample);
-
-        /* we are now poised at the beginning of the next row */
-	tif->tif_row = row + 1;
-	return (status);
-}
-
-/*
- * Encode the supplied data and write it to the
- * specified strip.
- *
- * NB: Image length must be setup before writing.
- */
-tsize_t
-TIFFWriteEncodedStrip(TIFF* tif, tstrip_t strip, tdata_t data, tsize_t cc)
-{
-	static const char module[] = "TIFFWriteEncodedStrip";
-	TIFFDirectory *td = &tif->tif_dir;
-	tsample_t sample;
-
-	if (!WRITECHECKSTRIPS(tif, module))
-		return ((tsize_t) -1);
-	/*
-	 * Check strip array to make sure there's space.
-	 * We don't support dynamically growing files that
-	 * have data organized in separate bitplanes because
-	 * it's too painful.  In that case we require that
-	 * the imagelength be set properly before the first
-	 * write (so that the strips array will be fully
-	 * allocated above).
-	 */
-	if (strip >= td->td_nstrips) {
-		if (td->td_planarconfig == PLANARCONFIG_SEPARATE) {
-			TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-		"Can not grow image by strips when using separate planes");
-			return ((tsize_t) -1);
-		}
-		if (!TIFFGrowStrips(tif, 1, module))
-			return ((tsize_t) -1);
-		td->td_stripsperimage =
-		    TIFFhowmany(td->td_imagelength, td->td_rowsperstrip);
-	}
-	/*
-	 * Handle delayed allocation of data buffer.  This
-	 * permits it to be sized according to the directory
-	 * info.
-	 */
-	if (!BUFFERCHECK(tif))
-		return ((tsize_t) -1);
-	tif->tif_curstrip = strip;
-	tif->tif_row = (strip % td->td_stripsperimage) * td->td_rowsperstrip;
-	if ((tif->tif_flags & TIFF_CODERSETUP) == 0) {
-		if (!(*tif->tif_setupencode)(tif))
-			return ((tsize_t) -1);
-		tif->tif_flags |= TIFF_CODERSETUP;
-	}
-        
-	tif->tif_rawcc = 0;
-	tif->tif_rawcp = tif->tif_rawdata;
-
-        if( td->td_stripbytecount[strip] > 0 )
-        {
-            /* if we are writing over existing tiles, zero length. */
-            td->td_stripbytecount[strip] = 0;
-
-            /* this forces TIFFAppendToStrip() to do a seek */
-            tif->tif_curoff = 0;
-        }
-        
-	tif->tif_flags &= ~TIFF_POSTENCODE;
-	sample = (tsample_t)(strip / td->td_stripsperimage);
-	if (!(*tif->tif_preencode)(tif, sample))
-		return ((tsize_t) -1);
-
-        /* swab if needed - note that source buffer will be altered */
-        tif->tif_postdecode( tif, (tidata_t) data, cc );
-
-	if (!(*tif->tif_encodestrip)(tif, (tidata_t) data, cc, sample))
-		return ((tsize_t) 0);
-	if (!(*tif->tif_postencode)(tif))
-		return ((tsize_t) -1);
-	if (!isFillOrder(tif, td->td_fillorder) &&
-	    (tif->tif_flags & TIFF_NOBITREV) == 0)
-		TIFFReverseBits(tif->tif_rawdata, tif->tif_rawcc);
-	if (tif->tif_rawcc > 0 &&
-	    !TIFFAppendToStrip(tif, strip, tif->tif_rawdata, tif->tif_rawcc))
-		return ((tsize_t) -1);
-	tif->tif_rawcc = 0;
-	tif->tif_rawcp = tif->tif_rawdata;
-	return (cc);
-}
-
-/*
- * Write the supplied data to the specified strip.
- *
- * NB: Image length must be setup before writing.
- */
-tsize_t
-TIFFWriteRawStrip(TIFF* tif, tstrip_t strip, tdata_t data, tsize_t cc)
-{
-	static const char module[] = "TIFFWriteRawStrip";
-	TIFFDirectory *td = &tif->tif_dir;
-
-	if (!WRITECHECKSTRIPS(tif, module))
-		return ((tsize_t) -1);
-	/*
-	 * Check strip array to make sure there's space.
-	 * We don't support dynamically growing files that
-	 * have data organized in separate bitplanes because
-	 * it's too painful.  In that case we require that
-	 * the imagelength be set properly before the first
-	 * write (so that the strips array will be fully
-	 * allocated above).
-	 */
-	if (strip >= td->td_nstrips) {
-		if (td->td_planarconfig == PLANARCONFIG_SEPARATE) {
-			TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-		"Can not grow image by strips when using separate planes");
-			return ((tsize_t) -1);
-		}
-		/*
-		 * Watch out for a growing image.  The value of
-		 * strips/image will initially be 1 (since it
-		 * can't be deduced until the imagelength is known).
-		 */
-		if (strip >= td->td_stripsperimage)
-			td->td_stripsperimage =
-			    TIFFhowmany(td->td_imagelength,td->td_rowsperstrip);
-		if (!TIFFGrowStrips(tif, 1, module))
-			return ((tsize_t) -1);
-	}
-	tif->tif_curstrip = strip;
-	tif->tif_row = (strip % td->td_stripsperimage) * td->td_rowsperstrip;
-	return (TIFFAppendToStrip(tif, strip, (tidata_t) data, cc) ?
-	    cc : (tsize_t) -1);
-}
-
-/*
- * Write and compress a tile of data.  The
- * tile is selected by the (x,y,z,s) coordinates.
- */
-tsize_t
-TIFFWriteTile(TIFF* tif,
-    tdata_t buf, uint32 x, uint32 y, uint32 z, tsample_t s)
-{
-	if (!TIFFCheckTile(tif, x, y, z, s))
-		return (-1);
-	/*
-	 * NB: A tile size of -1 is used instead of tif_tilesize knowing
-	 *     that TIFFWriteEncodedTile will clamp this to the tile size.
-	 *     This is done because the tile size may not be defined until
-	 *     after the output buffer is setup in TIFFWriteBufferSetup.
-	 */
-	return (TIFFWriteEncodedTile(tif,
-	    TIFFComputeTile(tif, x, y, z, s), buf, (tsize_t) -1));
-}
-
-/*
- * Encode the supplied data and write it to the
- * specified tile.  There must be space for the
- * data.  The function clamps individual writes
- * to a tile to the tile size, but does not (and
- * can not) check that multiple writes to the same
- * tile do not write more than tile size data.
- *
- * NB: Image length must be setup before writing; this
- *     interface does not support automatically growing
- *     the image on each write (as TIFFWriteScanline does).
- */
-tsize_t
-TIFFWriteEncodedTile(TIFF* tif, ttile_t tile, tdata_t data, tsize_t cc)
-{
-	static const char module[] = "TIFFWriteEncodedTile";
-	TIFFDirectory *td;
-	tsample_t sample;
-
-	if (!WRITECHECKTILES(tif, module))
-		return ((tsize_t) -1);
-	td = &tif->tif_dir;
-	if (tile >= td->td_nstrips) {
-		TIFFErrorExt(tif->tif_clientdata, module, "%s: Tile %lu out of range, max %lu",
-		    tif->tif_name, (unsigned long) tile, (unsigned long) td->td_nstrips);
-		return ((tsize_t) -1);
-	}
-	/*
-	 * Handle delayed allocation of data buffer.  This
-	 * permits it to be sized more intelligently (using
-	 * directory information).
-	 */
-	if (!BUFFERCHECK(tif))
-		return ((tsize_t) -1);
-	tif->tif_curtile = tile;
-
-	tif->tif_rawcc = 0;
-	tif->tif_rawcp = tif->tif_rawdata;
-
-        if( td->td_stripbytecount[tile] > 0 )
-        {
-            /* if we are writing over existing tiles, zero length. */
-            td->td_stripbytecount[tile] = 0;
-
-            /* this forces TIFFAppendToStrip() to do a seek */
-            tif->tif_curoff = 0;
-        }
-        
-	/* 
-	 * Compute tiles per row & per column to compute
-	 * current row and column
-	 */
-	tif->tif_row = (tile % TIFFhowmany(td->td_imagelength, td->td_tilelength))
-		* td->td_tilelength;
-	tif->tif_col = (tile % TIFFhowmany(td->td_imagewidth, td->td_tilewidth))
-		* td->td_tilewidth;
-
-	if ((tif->tif_flags & TIFF_CODERSETUP) == 0) {
-		if (!(*tif->tif_setupencode)(tif))
-			return ((tsize_t) -1);
-		tif->tif_flags |= TIFF_CODERSETUP;
-	}
-	tif->tif_flags &= ~TIFF_POSTENCODE;
-	sample = (tsample_t)(tile/td->td_stripsperimage);
-	if (!(*tif->tif_preencode)(tif, sample))
-		return ((tsize_t) -1);
-	/*
-	 * Clamp write amount to the tile size.  This is mostly
-	 * done so that callers can pass in some large number
-	 * (e.g. -1) and have the tile size used instead.
-	 */
-	if ( cc < 1 || cc > tif->tif_tilesize)
-		cc = tif->tif_tilesize;
-
-        /* swab if needed - note that source buffer will be altered */
-        tif->tif_postdecode( tif, (tidata_t) data, cc );
-
-	if (!(*tif->tif_encodetile)(tif, (tidata_t) data, cc, sample))
-		return ((tsize_t) 0);
-	if (!(*tif->tif_postencode)(tif))
-		return ((tsize_t) -1);
-	if (!isFillOrder(tif, td->td_fillorder) &&
-	    (tif->tif_flags & TIFF_NOBITREV) == 0)
-		TIFFReverseBits((unsigned char *)tif->tif_rawdata, tif->tif_rawcc);
-	if (tif->tif_rawcc > 0 && !TIFFAppendToStrip(tif, tile,
-	    tif->tif_rawdata, tif->tif_rawcc))
-		return ((tsize_t) -1);
-	tif->tif_rawcc = 0;
-	tif->tif_rawcp = tif->tif_rawdata;
-	return (cc);
-}
-
-/*
- * Write the supplied data to the specified strip.
- * There must be space for the data; we don't check
- * if strips overlap!
- *
- * NB: Image length must be setup before writing; this
- *     interface does not support automatically growing
- *     the image on each write (as TIFFWriteScanline does).
- */
-tsize_t
-TIFFWriteRawTile(TIFF* tif, ttile_t tile, tdata_t data, tsize_t cc)
-{
-	static const char module[] = "TIFFWriteRawTile";
-
-	if (!WRITECHECKTILES(tif, module))
-		return ((tsize_t) -1);
-	if (tile >= tif->tif_dir.td_nstrips) {
-		TIFFErrorExt(tif->tif_clientdata, module, "%s: Tile %lu out of range, max %lu",
-		    tif->tif_name, (unsigned long) tile,
-		    (unsigned long) tif->tif_dir.td_nstrips);
-		return ((tsize_t) -1);
-	}
-	return (TIFFAppendToStrip(tif, tile, (tidata_t) data, cc) ?
-	    cc : (tsize_t) -1);
-}
-
-#define	isUnspecified(tif, f) \
-    (TIFFFieldSet(tif,f) && (tif)->tif_dir.td_imagelength == 0)
-
-int
-TIFFSetupStrips(TIFF* tif)
-{
-	TIFFDirectory* td = &tif->tif_dir;
-
-	if (isTiled(tif))
-		td->td_stripsperimage =
-		    isUnspecified(tif, FIELD_TILEDIMENSIONS) ?
-			td->td_samplesperpixel : TIFFNumberOfTiles(tif);
-	else
-		td->td_stripsperimage =
-		    isUnspecified(tif, FIELD_ROWSPERSTRIP) ?
-			td->td_samplesperpixel : TIFFNumberOfStrips(tif);
-	td->td_nstrips = td->td_stripsperimage;
-	if (td->td_planarconfig == PLANARCONFIG_SEPARATE)
-		td->td_stripsperimage /= td->td_samplesperpixel;
-	td->td_stripoffset = (uint32 *)
-	    _TIFFmalloc(td->td_nstrips * sizeof (uint32));
-	td->td_stripbytecount = (uint32 *)
-	    _TIFFmalloc(td->td_nstrips * sizeof (uint32));
-	if (td->td_stripoffset == NULL || td->td_stripbytecount == NULL)
-		return (0);
-	/*
-	 * Place data at the end-of-file
-	 * (by setting offsets to zero).
-	 */
-	_TIFFmemset(td->td_stripoffset, 0, td->td_nstrips*sizeof (uint32));
-	_TIFFmemset(td->td_stripbytecount, 0, td->td_nstrips*sizeof (uint32));
-	TIFFSetFieldBit(tif, FIELD_STRIPOFFSETS);
-	TIFFSetFieldBit(tif, FIELD_STRIPBYTECOUNTS);
-	return (1);
-}
-#undef isUnspecified
-
-/*
- * Verify file is writable and that the directory
- * information is setup properly.  In doing the latter
- * we also "freeze" the state of the directory so
- * that important information is not changed.
- */
-int
-TIFFWriteCheck(TIFF* tif, int tiles, const char* module)
-{
-	if (tif->tif_mode == O_RDONLY) {
-		TIFFErrorExt(tif->tif_clientdata, module, "%s: File not open for writing",
-		    tif->tif_name);
-		return (0);
-	}
-	if (tiles ^ isTiled(tif)) {
-		TIFFErrorExt(tif->tif_clientdata, tif->tif_name, tiles ?
-		    "Can not write tiles to a stripped image" :
-		    "Can not write scanlines to a tiled image");
-		return (0);
-	}
-        
-	/*
-	 * On the first write verify all the required information
-	 * has been setup and initialize any data structures that
-	 * had to wait until directory information was set.
-	 * Note that a lot of our work is assumed to remain valid
-	 * because we disallow any of the important parameters
-	 * from changing after we start writing (i.e. once
-	 * TIFF_BEENWRITING is set, TIFFSetField will only allow
-	 * the image's length to be changed).
-	 */
-	if (!TIFFFieldSet(tif, FIELD_IMAGEDIMENSIONS)) {
-		TIFFErrorExt(tif->tif_clientdata, module,
-		    "%s: Must set \"ImageWidth\" before writing data",
-		    tif->tif_name);
-		return (0);
-	}
-	if (tif->tif_dir.td_samplesperpixel == 1) {
-		/* 
-		 * Planarconfiguration is irrelevant in case of single band
-		 * images and need not be included. We will set it anyway,
-		 * because this field is used in other parts of library even
-		 * in the single band case.
-		 */
-		tif->tif_dir.td_planarconfig = PLANARCONFIG_CONTIG;
-	} else {
-		if (!TIFFFieldSet(tif, FIELD_PLANARCONFIG)) {
-			TIFFErrorExt(tif->tif_clientdata, module,
-		    "%s: Must set \"PlanarConfiguration\" before writing data",
-			    tif->tif_name);
-			return (0);
-		}
-	}
-	if (tif->tif_dir.td_stripoffset == NULL && !TIFFSetupStrips(tif)) {
-		tif->tif_dir.td_nstrips = 0;
-		TIFFErrorExt(tif->tif_clientdata, module, "%s: No space for %s arrays",
-		    tif->tif_name, isTiled(tif) ? "tile" : "strip");
-		return (0);
-	}
-	tif->tif_tilesize = isTiled(tif) ? TIFFTileSize(tif) : (tsize_t) -1;
-	tif->tif_scanlinesize = TIFFScanlineSize(tif);
-	tif->tif_flags |= TIFF_BEENWRITING;
-	return (1);
-}
-
-/*
- * Setup the raw data buffer used for encoding.
- */
-int
-TIFFWriteBufferSetup(TIFF* tif, tdata_t bp, tsize_t size)
-{
-	static const char module[] = "TIFFWriteBufferSetup";
-
-	if (tif->tif_rawdata) {
-		if (tif->tif_flags & TIFF_MYBUFFER) {
-			_TIFFfree(tif->tif_rawdata);
-			tif->tif_flags &= ~TIFF_MYBUFFER;
-		}
-		tif->tif_rawdata = NULL;
-	}
-	if (size == (tsize_t) -1) {
-		size = (isTiled(tif) ?
-		    tif->tif_tilesize : TIFFStripSize(tif));
-		/*
-		 * Make raw data buffer at least 8K
-		 */
-		if (size < 8*1024)
-			size = 8*1024;
-		bp = NULL;			/* NB: force malloc */
-	}
-	if (bp == NULL) {
-		bp = _TIFFmalloc(size);
-		if (bp == NULL) {
-			TIFFErrorExt(tif->tif_clientdata, module, "%s: No space for output buffer",
-			    tif->tif_name);
-			return (0);
-		}
-		tif->tif_flags |= TIFF_MYBUFFER;
-	} else
-		tif->tif_flags &= ~TIFF_MYBUFFER;
-	tif->tif_rawdata = (tidata_t) bp;
-	tif->tif_rawdatasize = size;
-	tif->tif_rawcc = 0;
-	tif->tif_rawcp = tif->tif_rawdata;
-	tif->tif_flags |= TIFF_BUFFERSETUP;
-	return (1);
-}
-
-/*
- * Grow the strip data structures by delta strips.
- */
-static int
-TIFFGrowStrips(TIFF* tif, int delta, const char* module)
-{
-	TIFFDirectory	*td = &tif->tif_dir;
-	uint32		*new_stripoffset, *new_stripbytecount;
-
-	assert(td->td_planarconfig == PLANARCONFIG_CONTIG);
-	new_stripoffset = (uint32*)_TIFFrealloc(td->td_stripoffset,
-		(td->td_nstrips + delta) * sizeof (uint32));
-	new_stripbytecount = (uint32*)_TIFFrealloc(td->td_stripbytecount,
-		(td->td_nstrips + delta) * sizeof (uint32));
-	if (new_stripoffset == NULL || new_stripbytecount == NULL) {
-		if (new_stripoffset)
-			_TIFFfree(new_stripoffset);
-		if (new_stripbytecount)
-			_TIFFfree(new_stripbytecount);
-		td->td_nstrips = 0;
-		TIFFErrorExt(tif->tif_clientdata, module, "%s: No space to expand strip arrays",
-			  tif->tif_name);
-		return (0);
-	}
-	td->td_stripoffset = new_stripoffset;
-	td->td_stripbytecount = new_stripbytecount;
-	_TIFFmemset(td->td_stripoffset + td->td_nstrips,
-		    0, delta*sizeof (uint32));
-	_TIFFmemset(td->td_stripbytecount + td->td_nstrips,
-		    0, delta*sizeof (uint32));
-	td->td_nstrips += delta;
-	return (1);
-}
-
-/*
- * Append the data to the specified strip.
- */
-static int
-TIFFAppendToStrip(TIFF* tif, tstrip_t strip, tidata_t data, tsize_t cc)
-{
-	TIFFDirectory *td = &tif->tif_dir;
-	static const char module[] = "TIFFAppendToStrip";
-
-	if (td->td_stripoffset[strip] == 0 || tif->tif_curoff == 0) {
-		/*
-		 * No current offset, set the current strip.
-		 */
-		assert(td->td_nstrips > 0);
-		if (td->td_stripoffset[strip] != 0) {
-			/*
-			 * Prevent overlapping of the data chunks. We need
-                         * this to enable in place updating of the compressed
-                         * images. Larger blocks will be moved at the end of
-                         * the file without any optimization of the spare
-                         * space, so such scheme is not too much effective.
-			 */
-			if (td->td_stripbytecountsorted) {
-				if (strip == td->td_nstrips - 1
-				    || td->td_stripoffset[strip + 1] <
-					td->td_stripoffset[strip] + cc) {
-					td->td_stripoffset[strip] =
-						TIFFSeekFile(tif, (toff_t)0,
-							     SEEK_END);
-				}
-			} else {
-				tstrip_t i;
-				for (i = 0; i < td->td_nstrips; i++) {
-					if (td->td_stripoffset[i] > 
-						td->td_stripoffset[strip]
-					    && td->td_stripoffset[i] <
-						td->td_stripoffset[strip] + cc) {
-						td->td_stripoffset[strip] =
-							TIFFSeekFile(tif,
-								     (toff_t)0,
-								     SEEK_END);
-					}
-				}
-			}
-
-			if (!SeekOK(tif, td->td_stripoffset[strip])) {
-				TIFFErrorExt(tif->tif_clientdata, module,
-					  "%s: Seek error at scanline %lu",
-					  tif->tif_name,
-					  (unsigned long)tif->tif_row);
-				return (0);
-			}
-		} else
-			td->td_stripoffset[strip] =
-			    TIFFSeekFile(tif, (toff_t) 0, SEEK_END);
-		tif->tif_curoff = td->td_stripoffset[strip];
-	}
-
-	if (!WriteOK(tif, data, cc)) {
-		TIFFErrorExt(tif->tif_clientdata, module, "%s: Write error at scanline %lu",
-		    tif->tif_name, (unsigned long) tif->tif_row);
-		return (0);
-	}
-	tif->tif_curoff += cc;
-	td->td_stripbytecount[strip] += cc;
-	return (1);
-}
-
-/*
- * Internal version of TIFFFlushData that can be
- * called by ``encodestrip routines'' w/o concern
- * for infinite recursion.
- */
-int
-TIFFFlushData1(TIFF* tif)
-{
-	if (tif->tif_rawcc > 0) {
-		if (!isFillOrder(tif, tif->tif_dir.td_fillorder) &&
-		    (tif->tif_flags & TIFF_NOBITREV) == 0)
-			TIFFReverseBits((unsigned char *)tif->tif_rawdata,
-			    tif->tif_rawcc);
-		if (!TIFFAppendToStrip(tif,
-		    isTiled(tif) ? tif->tif_curtile : tif->tif_curstrip,
-		    tif->tif_rawdata, tif->tif_rawcc))
-			return (0);
-		tif->tif_rawcc = 0;
-		tif->tif_rawcp = tif->tif_rawdata;
-	}
-	return (1);
-}
-
-/*
- * Set the current write offset.  This should only be
- * used to set the offset to a known previous location
- * (very carefully), or to 0 so that the next write gets
- * appended to the end of the file.
- */
-void
-TIFFSetWriteOffset(TIFF* tif, toff_t off)
-{
-	tif->tif_curoff = off;
-}
-
-/* vim: set ts=8 sts=8 sw=8 noet: */
diff --git a/src/tiff/tif_zip.c b/src/tiff/tif_zip.c
deleted file mode 100644
index 1e05c4b..0000000
--- a/src/tiff/tif_zip.c
+++ /dev/null
@@ -1,378 +0,0 @@
-/* $Id: tif_zip.c 4825 2006-08-16 13:01:53Z lubia $ */
-
-/*
- * Copyright (c) 1995-1997 Sam Leffler
- * Copyright (c) 1995-1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and 
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- * 
- * 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 SAM LEFFLER OR SILICON GRAPHICS 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.
- */
-
-#include "tiffiop.h"
-#ifdef ZIP_SUPPORT
-/*
- * TIFF Library.
- *
- * ZIP (aka Deflate) Compression Support
- *
- * This file is simply an interface to the zlib library written by
- * Jean-loup Gailly and Mark Adler.  You must use version 1.0 or later
- * of the library: this code assumes the 1.0 API and also depends on
- * the ability to write the zlib header multiple times (one per strip)
- * which was not possible with versions prior to 0.95.  Note also that
- * older versions of this codec avoided this bug by supressing the header
- * entirely.  This means that files written with the old library cannot
- * be read; they should be converted to a different compression scheme
- * and then reconverted.
- *
- * The data format used by the zlib library is described in the files
- * zlib-3.1.doc, deflate-1.1.doc and gzip-4.1.doc, available in the
- * directory ftp://ftp.uu.net/pub/archiving/zip/doc.  The library was
- * last found at ftp://ftp.uu.net/pub/archiving/zip/zlib/zlib-0.99.tar.gz.
- */
-#include "tif_predict.h"
-#include "zlib.h"
-
-#include <stdio.h>
-
-/*
- * Sigh, ZLIB_VERSION is defined as a string so there's no
- * way to do a proper check here.  Instead we guess based
- * on the presence of #defines that were added between the
- * 0.95 and 1.0 distributions.
- */
-#if !defined(Z_NO_COMPRESSION) || !defined(Z_DEFLATED)
-#error "Antiquated ZLIB software; you must use version 1.0 or later"
-#endif
-
-/*
- * State block for each open TIFF
- * file using ZIP compression/decompression.
- */
-typedef	struct {
-	TIFFPredictorState predict;
-	z_stream	stream;
-	int		zipquality;		/* compression level */
-	int		state;			/* state flags */
-#define	ZSTATE_INIT	0x1		/* zlib setup successfully */
-
-	TIFFVGetMethod	vgetparent;		/* super-class method */
-	TIFFVSetMethod	vsetparent;		/* super-class method */
-} ZIPState;
-
-#define	ZState(tif)		((ZIPState*) (tif)->tif_data)
-#define	DecoderState(tif)	ZState(tif)
-#define	EncoderState(tif)	ZState(tif)
-
-static	int ZIPEncode(TIFF*, tidata_t, tsize_t, tsample_t);
-static	int ZIPDecode(TIFF*, tidata_t, tsize_t, tsample_t);
-
-static int
-ZIPSetupDecode(TIFF* tif)
-{
-	ZIPState* sp = DecoderState(tif);
-	static const char module[] = "ZIPSetupDecode";
-
-	assert(sp != NULL);
-	if (inflateInit(&sp->stream) != Z_OK) {
-		TIFFErrorExt(tif->tif_clientdata, module, "%s: %s", tif->tif_name, sp->stream.msg);
-		return (0);
-	} else {
-		sp->state |= ZSTATE_INIT;
-		return (1);
-	}
-}
-
-/*
- * Setup state for decoding a strip.
- */
-static int
-ZIPPreDecode(TIFF* tif, tsample_t s)
-{
-	ZIPState* sp = DecoderState(tif);
-
-	(void) s;
-	assert(sp != NULL);
-	sp->stream.next_in = tif->tif_rawdata;
-	sp->stream.avail_in = tif->tif_rawcc;
-	return (inflateReset(&sp->stream) == Z_OK);
-}
-
-static int
-ZIPDecode(TIFF* tif, tidata_t op, tsize_t occ, tsample_t s)
-{
-	ZIPState* sp = DecoderState(tif);
-	static const char module[] = "ZIPDecode";
-
-	(void) s;
-	assert(sp != NULL);
-	sp->stream.next_out = op;
-	sp->stream.avail_out = occ;
-	do {
-		int state = inflate(&sp->stream, Z_PARTIAL_FLUSH);
-		if (state == Z_STREAM_END)
-			break;
-		if (state == Z_DATA_ERROR) {
-			TIFFErrorExt(tif->tif_clientdata, module,
-			    "%s: Decoding error at scanline %d, %s",
-			    tif->tif_name, tif->tif_row, sp->stream.msg);
-			if (inflateSync(&sp->stream) != Z_OK)
-				return (0);
-			continue;
-		}
-		if (state != Z_OK) {
-			TIFFErrorExt(tif->tif_clientdata, module, "%s: zlib error: %s",
-			    tif->tif_name, sp->stream.msg);
-			return (0);
-		}
-	} while (sp->stream.avail_out > 0);
-	if (sp->stream.avail_out != 0) {
-		TIFFErrorExt(tif->tif_clientdata, module,
-		    "%s: Not enough data at scanline %d (short %d bytes)",
-		    tif->tif_name, tif->tif_row, sp->stream.avail_out);
-		return (0);
-	}
-	return (1);
-}
-
-static int
-ZIPSetupEncode(TIFF* tif)
-{
-	ZIPState* sp = EncoderState(tif);
-	static const char module[] = "ZIPSetupEncode";
-
-	assert(sp != NULL);
-	if (deflateInit(&sp->stream, sp->zipquality) != Z_OK) {
-		TIFFErrorExt(tif->tif_clientdata, module, "%s: %s", tif->tif_name, sp->stream.msg);
-		return (0);
-	} else {
-		sp->state |= ZSTATE_INIT;
-		return (1);
-	}
-}
-
-/*
- * Reset encoding state at the start of a strip.
- */
-static int
-ZIPPreEncode(TIFF* tif, tsample_t s)
-{
-	ZIPState *sp = EncoderState(tif);
-
-	(void) s;
-	assert(sp != NULL);
-	sp->stream.next_out = tif->tif_rawdata;
-	sp->stream.avail_out = tif->tif_rawdatasize;
-	return (deflateReset(&sp->stream) == Z_OK);
-}
-
-/*
- * Encode a chunk of pixels.
- */
-static int
-ZIPEncode(TIFF* tif, tidata_t bp, tsize_t cc, tsample_t s)
-{
-	ZIPState *sp = EncoderState(tif);
-	static const char module[] = "ZIPEncode";
-
-	(void) s;
-	sp->stream.next_in = bp;
-	sp->stream.avail_in = cc;
-	do {
-		if (deflate(&sp->stream, Z_NO_FLUSH) != Z_OK) {
-			TIFFErrorExt(tif->tif_clientdata, module, "%s: Encoder error: %s",
-			    tif->tif_name, sp->stream.msg);
-			return (0);
-		}
-		if (sp->stream.avail_out == 0) {
-			tif->tif_rawcc = tif->tif_rawdatasize;
-			TIFFFlushData1(tif);
-			sp->stream.next_out = tif->tif_rawdata;
-			sp->stream.avail_out = tif->tif_rawdatasize;
-		}
-	} while (sp->stream.avail_in > 0);
-	return (1);
-}
-
-/*
- * Finish off an encoded strip by flushing the last
- * string and tacking on an End Of Information code.
- */
-static int
-ZIPPostEncode(TIFF* tif)
-{
-	ZIPState *sp = EncoderState(tif);
-	static const char module[] = "ZIPPostEncode";
-	int state;
-
-	sp->stream.avail_in = 0;
-	do {
-		state = deflate(&sp->stream, Z_FINISH);
-		switch (state) {
-		case Z_STREAM_END:
-		case Z_OK:
-		    if ((int)sp->stream.avail_out != (int)tif->tif_rawdatasize)
-                    {
-			    tif->tif_rawcc =
-				tif->tif_rawdatasize - sp->stream.avail_out;
-			    TIFFFlushData1(tif);
-			    sp->stream.next_out = tif->tif_rawdata;
-			    sp->stream.avail_out = tif->tif_rawdatasize;
-		    }
-		    break;
-		default:
-			TIFFErrorExt(tif->tif_clientdata, module, "%s: zlib error: %s",
-			tif->tif_name, sp->stream.msg);
-		    return (0);
-		}
-	} while (state != Z_STREAM_END);
-	return (1);
-}
-
-static void
-ZIPCleanup(TIFF* tif)
-{
-	ZIPState* sp = ZState(tif);
-
-	assert(sp != 0);
-
-	(void)TIFFPredictorCleanup(tif);
-
-	tif->tif_tagmethods.vgetfield = sp->vgetparent;
-	tif->tif_tagmethods.vsetfield = sp->vsetparent;
-
-	if (sp->state&ZSTATE_INIT) {
-		/* NB: avoid problems in the library */
-		if (tif->tif_mode == O_RDONLY)
-			inflateEnd(&sp->stream);
-		else
-			deflateEnd(&sp->stream);
-	}
-	_TIFFfree(sp);
-	tif->tif_data = NULL;
-
-	_TIFFSetDefaultCompressionState(tif);
-}
-
-static int
-ZIPVSetField(TIFF* tif, ttag_t tag, va_list ap)
-{
-	ZIPState* sp = ZState(tif);
-	static const char module[] = "ZIPVSetField";
-
-	switch (tag) {
-	case TIFFTAG_ZIPQUALITY:
-		sp->zipquality = va_arg(ap, int);
-		if (tif->tif_mode != O_RDONLY && (sp->state&ZSTATE_INIT)) {
-			if (deflateParams(&sp->stream,
-			    sp->zipquality, Z_DEFAULT_STRATEGY) != Z_OK) {
-				TIFFErrorExt(tif->tif_clientdata, module, "%s: zlib error: %s",
-				    tif->tif_name, sp->stream.msg);
-				return (0);
-			}
-		}
-		return (1);
-	default:
-		return (*sp->vsetparent)(tif, tag, ap);
-	}
-	/*NOTREACHED*/
-}
-
-static int
-ZIPVGetField(TIFF* tif, ttag_t tag, va_list ap)
-{
-	ZIPState* sp = ZState(tif);
-
-	switch (tag) {
-	case TIFFTAG_ZIPQUALITY:
-		*va_arg(ap, int*) = sp->zipquality;
-		break;
-	default:
-		return (*sp->vgetparent)(tif, tag, ap);
-	}
-	return (1);
-}
-
-static const TIFFFieldInfo zipFieldInfo[] = {
-    { TIFFTAG_ZIPQUALITY,	 0, 0,	TIFF_ANY,	FIELD_PSEUDO,
-      TRUE,	FALSE,	"" },
-};
-
-int
-TIFFInitZIP(TIFF* tif, int scheme)
-{
-	ZIPState* sp;
-
-	assert( (scheme == COMPRESSION_DEFLATE)
-		|| (scheme == COMPRESSION_ADOBE_DEFLATE));
-
-	/*
-	 * Allocate state block so tag methods have storage to record values.
-	 */
-	tif->tif_data = (tidata_t) _TIFFmalloc(sizeof (ZIPState));
-	if (tif->tif_data == NULL)
-		goto bad;
-	sp = ZState(tif);
-	sp->stream.zalloc = NULL;
-	sp->stream.zfree = NULL;
-	sp->stream.opaque = NULL;
-	sp->stream.data_type = Z_BINARY;
-
-	/*
-	 * Merge codec-specific tag information and
-	 * override parent get/set field methods.
-	 */
-	_TIFFMergeFieldInfo(tif, zipFieldInfo, TIFFArrayCount(zipFieldInfo));
-	sp->vgetparent = tif->tif_tagmethods.vgetfield;
-	tif->tif_tagmethods.vgetfield = ZIPVGetField; /* hook for codec tags */
-	sp->vsetparent = tif->tif_tagmethods.vsetfield;
-	tif->tif_tagmethods.vsetfield = ZIPVSetField; /* hook for codec tags */
-
-	/* Default values for codec-specific fields */
-	sp->zipquality = Z_DEFAULT_COMPRESSION;	/* default comp. level */
-	sp->state = 0;
-
-	/*
-	 * Install codec methods.
-	 */
-	tif->tif_setupdecode = ZIPSetupDecode;
-	tif->tif_predecode = ZIPPreDecode;
-	tif->tif_decoderow = ZIPDecode;
-	tif->tif_decodestrip = ZIPDecode;
-	tif->tif_decodetile = ZIPDecode;
-	tif->tif_setupencode = ZIPSetupEncode;
-	tif->tif_preencode = ZIPPreEncode;
-	tif->tif_postencode = ZIPPostEncode;
-	tif->tif_encoderow = ZIPEncode;
-	tif->tif_encodestrip = ZIPEncode;
-	tif->tif_encodetile = ZIPEncode;
-	tif->tif_cleanup = ZIPCleanup;
-	/*
-	 * Setup predictor setup.
-	 */
-	(void) TIFFPredictorInit(tif);
-	return (1);
-bad:
-	TIFFErrorExt(tif->tif_clientdata, "TIFFInitZIP",
-		     "No space for ZIP state block");
-	return (0);
-}
-#endif /* ZIP_SUPORT */
-
-/* vim: set ts=8 sts=8 sw=8 noet: */
diff --git a/src/tiff/tiff.h b/src/tiff/tiff.h
deleted file mode 100644
index 994eae3..0000000
--- a/src/tiff/tiff.h
+++ /dev/null
@@ -1,647 +0,0 @@
-/* $Id: tiff.h 4825 2006-08-16 13:01:53Z lubia $ */
-
-/*
- * Copyright (c) 1988-1997 Sam Leffler
- * Copyright (c) 1991-1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and 
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- * 
- * 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 SAM LEFFLER OR SILICON GRAPHICS 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.
- */
-
-#ifndef _TIFF_
-#define	_TIFF_
-
-#include "tiffconf.h"
-
-/*
- * Tag Image File Format (TIFF)
- *
- * Based on Rev 6.0 from:
- *    Developer's Desk
- *    Aldus Corporation
- *    411 First Ave. South
- *    Suite 200
- *    Seattle, WA  98104
- *    206-622-5500
- *    
- *    (http://partners.adobe.com/asn/developer/PDFS/TN/TIFF6.pdf)
- *
- * For Big TIFF design notes see the following link
- *    http://gdal.maptools.org/twiki/bin/view/libtiff/BigTIFFDesign
- */
-#define	TIFF_VERSION	        42
-#define TIFF_BIGTIFF_VERSION    43
-
-#define	TIFF_BIGENDIAN		0x4d4d
-#define	TIFF_LITTLEENDIAN	0x4949
-#define	MDI_LITTLEENDIAN        0x5045
-#define	MDI_BIGENDIAN           0x4550
-/*
- * Intrinsic data types required by the file format:
- *
- * 8-bit quantities	int8/uint8
- * 16-bit quantities	int16/uint16
- * 32-bit quantities	int32/uint32
- * strings		unsigned char*
- */
-
-#ifndef HAVE_INT8
-typedef	signed char int8;	/* NB: non-ANSI compilers may not grok */
-#endif
-typedef	unsigned char uint8;
-#ifndef HAVE_INT16
-typedef	short int16;
-#endif
-typedef	unsigned short uint16;	/* sizeof (uint16) must == 2 */
-#if SIZEOF_INT == 4
-#ifndef HAVE_INT32
-typedef	int int32;
-#endif
-typedef	unsigned int uint32;	/* sizeof (uint32) must == 4 */
-#elif SIZEOF_LONG == 4
-#ifndef HAVE_INT32
-typedef	long int32;
-#endif
-typedef	unsigned long uint32;	/* sizeof (uint32) must == 4 */
-#endif
-
-/* For TIFFReassignTagToIgnore */
-enum TIFFIgnoreSense /* IGNORE tag table */
-{
-	TIS_STORE,
-	TIS_EXTRACT,
-	TIS_EMPTY
-};
-
-/*
- * TIFF header.
- */
-typedef	struct {
-	uint16	tiff_magic;	/* magic number (defines byte order) */
-#define TIFF_MAGIC_SIZE		2
-	uint16	tiff_version;	/* TIFF version number */
-#define TIFF_VERSION_SIZE	2
-	uint32	tiff_diroff;	/* byte offset to first directory */
-#define TIFF_DIROFFSET_SIZE	4
-} TIFFHeader;
-
-
-/*
- * TIFF Image File Directories are comprised of a table of field
- * descriptors of the form shown below.  The table is sorted in
- * ascending order by tag.  The values associated with each entry are
- * disjoint and may appear anywhere in the file (so long as they are
- * placed on a word boundary).
- *
- * If the value is 4 bytes or less, then it is placed in the offset
- * field to save space.  If the value is less than 4 bytes, it is
- * left-justified in the offset field.
- */
-typedef	struct {
-	uint16		tdir_tag;	/* see below */
-	uint16		tdir_type;	/* data type; see below */
-	uint32		tdir_count;	/* number of items; length in spec */
-	uint32		tdir_offset;	/* byte offset to field data */
-} TIFFDirEntry;
-
-/*
- * NB: In the comments below,
- *  - items marked with a + are obsoleted by revision 5.0,
- *  - items marked with a ! are introduced in revision 6.0.
- *  - items marked with a % are introduced post revision 6.0.
- *  - items marked with a $ are obsoleted by revision 6.0.
- *  - items marked with a & are introduced by Adobe DNG specification.
- */
-
-/*
- * Tag data type information.
- *
- * Note: RATIONALs are the ratio of two 32-bit integer values.
- */
-typedef	enum {
-	TIFF_NOTYPE	= 0,	/* placeholder */
-	TIFF_BYTE	= 1,	/* 8-bit unsigned integer */
-	TIFF_ASCII	= 2,	/* 8-bit bytes w/ last byte null */
-	TIFF_SHORT	= 3,	/* 16-bit unsigned integer */
-	TIFF_LONG	= 4,	/* 32-bit unsigned integer */
-	TIFF_RATIONAL	= 5,	/* 64-bit unsigned fraction */
-	TIFF_SBYTE	= 6,	/* !8-bit signed integer */
-	TIFF_UNDEFINED	= 7,	/* !8-bit untyped data */
-	TIFF_SSHORT	= 8,	/* !16-bit signed integer */
-	TIFF_SLONG	= 9,	/* !32-bit signed integer */
-	TIFF_SRATIONAL	= 10,	/* !64-bit signed fraction */
-	TIFF_FLOAT	= 11,	/* !32-bit IEEE floating point */
-	TIFF_DOUBLE	= 12,	/* !64-bit IEEE floating point */
-	TIFF_IFD	= 13	/* %32-bit unsigned integer (offset) */
-} TIFFDataType;
-
-/*
- * TIFF Tag Definitions.
- */
-#define	TIFFTAG_SUBFILETYPE		254	/* subfile data descriptor */
-#define	    FILETYPE_REDUCEDIMAGE	0x1	/* reduced resolution version */
-#define	    FILETYPE_PAGE		0x2	/* one page of many */
-#define	    FILETYPE_MASK		0x4	/* transparency mask */
-#define	TIFFTAG_OSUBFILETYPE		255	/* +kind of data in subfile */
-#define	    OFILETYPE_IMAGE		1	/* full resolution image data */
-#define	    OFILETYPE_REDUCEDIMAGE	2	/* reduced size image data */
-#define	    OFILETYPE_PAGE		3	/* one page of many */
-#define	TIFFTAG_IMAGEWIDTH		256	/* image width in pixels */
-#define	TIFFTAG_IMAGELENGTH		257	/* image height in pixels */
-#define	TIFFTAG_BITSPERSAMPLE		258	/* bits per channel (sample) */
-#define	TIFFTAG_COMPRESSION		259	/* data compression technique */
-#define	    COMPRESSION_NONE		1	/* dump mode */
-#define	    COMPRESSION_CCITTRLE	2	/* CCITT modified Huffman RLE */
-#define	    COMPRESSION_CCITTFAX3	3	/* CCITT Group 3 fax encoding */
-#define     COMPRESSION_CCITT_T4        3       /* CCITT T.4 (TIFF 6 name) */
-#define	    COMPRESSION_CCITTFAX4	4	/* CCITT Group 4 fax encoding */
-#define     COMPRESSION_CCITT_T6        4       /* CCITT T.6 (TIFF 6 name) */
-#define	    COMPRESSION_LZW		5       /* Lempel-Ziv  & Welch */
-#define	    COMPRESSION_OJPEG		6	/* !6.0 JPEG */
-#define	    COMPRESSION_JPEG		7	/* %JPEG DCT compression */
-#define	    COMPRESSION_NEXT		32766	/* NeXT 2-bit RLE */
-#define	    COMPRESSION_CCITTRLEW	32771	/* #1 w/ word alignment */
-#define	    COMPRESSION_PACKBITS	32773	/* Macintosh RLE */
-#define	    COMPRESSION_THUNDERSCAN	32809	/* ThunderScan RLE */
-/* codes 32895-32898 are reserved for ANSI IT8 TIFF/IT <dkelly at apago.com) */
-#define	    COMPRESSION_IT8CTPAD	32895   /* IT8 CT w/padding */
-#define	    COMPRESSION_IT8LW		32896   /* IT8 Linework RLE */
-#define	    COMPRESSION_IT8MP		32897   /* IT8 Monochrome picture */
-#define	    COMPRESSION_IT8BL		32898   /* IT8 Binary line art */
-/* compression codes 32908-32911 are reserved for Pixar */
-#define     COMPRESSION_PIXARFILM	32908   /* Pixar companded 10bit LZW */
-#define	    COMPRESSION_PIXARLOG	32909   /* Pixar companded 11bit ZIP */
-#define	    COMPRESSION_DEFLATE		32946	/* Deflate compression */
-#define     COMPRESSION_ADOBE_DEFLATE   8       /* Deflate compression,
-						   as recognized by Adobe */
-/* compression code 32947 is reserved for Oceana Matrix <dev at oceana.com> */
-#define     COMPRESSION_DCS             32947   /* Kodak DCS encoding */
-#define	    COMPRESSION_JBIG		34661	/* ISO JBIG */
-#define     COMPRESSION_SGILOG		34676	/* SGI Log Luminance RLE */
-#define     COMPRESSION_SGILOG24	34677	/* SGI Log 24-bit packed */
-#define     COMPRESSION_JP2000          34712   /* Leadtools JPEG2000 */
-#define	TIFFTAG_PHOTOMETRIC		262	/* photometric interpretation */
-#define	    PHOTOMETRIC_MINISWHITE	0	/* min value is white */
-#define	    PHOTOMETRIC_MINISBLACK	1	/* min value is black */
-#define	    PHOTOMETRIC_RGB		2	/* RGB color model */
-#define	    PHOTOMETRIC_PALETTE		3	/* color map indexed */
-#define	    PHOTOMETRIC_MASK		4	/* $holdout mask */
-#define	    PHOTOMETRIC_SEPARATED	5	/* !color separations */
-#define	    PHOTOMETRIC_YCBCR		6	/* !CCIR 601 */
-#define	    PHOTOMETRIC_CIELAB		8	/* !1976 CIE L*a*b* */
-#define	    PHOTOMETRIC_ICCLAB		9	/* ICC L*a*b* [Adobe TIFF Technote 4] */
-#define	    PHOTOMETRIC_ITULAB		10	/* ITU L*a*b* */
-#define     PHOTOMETRIC_LOGL		32844	/* CIE Log2(L) */
-#define     PHOTOMETRIC_LOGLUV		32845	/* CIE Log2(L) (u',v') */
-#define	TIFFTAG_THRESHHOLDING		263	/* +thresholding used on data */
-#define	    THRESHHOLD_BILEVEL		1	/* b&w art scan */
-#define	    THRESHHOLD_HALFTONE		2	/* or dithered scan */
-#define	    THRESHHOLD_ERRORDIFFUSE	3	/* usually floyd-steinberg */
-#define	TIFFTAG_CELLWIDTH		264	/* +dithering matrix width */
-#define	TIFFTAG_CELLLENGTH		265	/* +dithering matrix height */
-#define	TIFFTAG_FILLORDER		266	/* data order within a byte */
-#define	    FILLORDER_MSB2LSB		1	/* most significant -> least */
-#define	    FILLORDER_LSB2MSB		2	/* least significant -> most */
-#define	TIFFTAG_DOCUMENTNAME		269	/* name of doc. image is from */
-#define	TIFFTAG_IMAGEDESCRIPTION	270	/* info about image */
-#define	TIFFTAG_MAKE			271	/* scanner manufacturer name */
-#define	TIFFTAG_MODEL			272	/* scanner model name/number */
-#define	TIFFTAG_STRIPOFFSETS		273	/* offsets to data strips */
-#define	TIFFTAG_ORIENTATION		274	/* +image orientation */
-#define	    ORIENTATION_TOPLEFT		1	/* row 0 top, col 0 lhs */
-#define	    ORIENTATION_TOPRIGHT	2	/* row 0 top, col 0 rhs */
-#define	    ORIENTATION_BOTRIGHT	3	/* row 0 bottom, col 0 rhs */
-#define	    ORIENTATION_BOTLEFT		4	/* row 0 bottom, col 0 lhs */
-#define	    ORIENTATION_LEFTTOP		5	/* row 0 lhs, col 0 top */
-#define	    ORIENTATION_RIGHTTOP	6	/* row 0 rhs, col 0 top */
-#define	    ORIENTATION_RIGHTBOT	7	/* row 0 rhs, col 0 bottom */
-#define	    ORIENTATION_LEFTBOT		8	/* row 0 lhs, col 0 bottom */
-#define	TIFFTAG_SAMPLESPERPIXEL		277	/* samples per pixel */
-#define	TIFFTAG_ROWSPERSTRIP		278	/* rows per strip of data */
-#define	TIFFTAG_STRIPBYTECOUNTS		279	/* bytes counts for strips */
-#define	TIFFTAG_MINSAMPLEVALUE		280	/* +minimum sample value */
-#define	TIFFTAG_MAXSAMPLEVALUE		281	/* +maximum sample value */
-#define	TIFFTAG_XRESOLUTION		282	/* pixels/resolution in x */
-#define	TIFFTAG_YRESOLUTION		283	/* pixels/resolution in y */
-#define	TIFFTAG_PLANARCONFIG		284	/* storage organization */
-#define	    PLANARCONFIG_CONTIG		1	/* single image plane */
-#define	    PLANARCONFIG_SEPARATE	2	/* separate planes of data */
-#define	TIFFTAG_PAGENAME		285	/* page name image is from */
-#define	TIFFTAG_XPOSITION		286	/* x page offset of image lhs */
-#define	TIFFTAG_YPOSITION		287	/* y page offset of image lhs */
-#define	TIFFTAG_FREEOFFSETS		288	/* +byte offset to free block */
-#define	TIFFTAG_FREEBYTECOUNTS		289	/* +sizes of free blocks */
-#define	TIFFTAG_GRAYRESPONSEUNIT	290	/* $gray scale curve accuracy */
-#define	    GRAYRESPONSEUNIT_10S	1	/* tenths of a unit */
-#define	    GRAYRESPONSEUNIT_100S	2	/* hundredths of a unit */
-#define	    GRAYRESPONSEUNIT_1000S	3	/* thousandths of a unit */
-#define	    GRAYRESPONSEUNIT_10000S	4	/* ten-thousandths of a unit */
-#define	    GRAYRESPONSEUNIT_100000S	5	/* hundred-thousandths */
-#define	TIFFTAG_GRAYRESPONSECURVE	291	/* $gray scale response curve */
-#define	TIFFTAG_GROUP3OPTIONS		292	/* 32 flag bits */
-#define	TIFFTAG_T4OPTIONS		292	/* TIFF 6.0 proper name alias */
-#define	    GROUP3OPT_2DENCODING	0x1	/* 2-dimensional coding */
-#define	    GROUP3OPT_UNCOMPRESSED	0x2	/* data not compressed */
-#define	    GROUP3OPT_FILLBITS		0x4	/* fill to byte boundary */
-#define	TIFFTAG_GROUP4OPTIONS		293	/* 32 flag bits */
-#define TIFFTAG_T6OPTIONS               293     /* TIFF 6.0 proper name */
-#define	    GROUP4OPT_UNCOMPRESSED	0x2	/* data not compressed */
-#define	TIFFTAG_RESOLUTIONUNIT		296	/* units of resolutions */
-#define	    RESUNIT_NONE		1	/* no meaningful units */
-#define	    RESUNIT_INCH		2	/* english */
-#define	    RESUNIT_CENTIMETER		3	/* metric */
-#define	TIFFTAG_PAGENUMBER		297	/* page numbers of multi-page */
-#define	TIFFTAG_COLORRESPONSEUNIT	300	/* $color curve accuracy */
-#define	    COLORRESPONSEUNIT_10S	1	/* tenths of a unit */
-#define	    COLORRESPONSEUNIT_100S	2	/* hundredths of a unit */
-#define	    COLORRESPONSEUNIT_1000S	3	/* thousandths of a unit */
-#define	    COLORRESPONSEUNIT_10000S	4	/* ten-thousandths of a unit */
-#define	    COLORRESPONSEUNIT_100000S	5	/* hundred-thousandths */
-#define	TIFFTAG_TRANSFERFUNCTION	301	/* !colorimetry info */
-#define	TIFFTAG_SOFTWARE		305	/* name & release */
-#define	TIFFTAG_DATETIME		306	/* creation date and time */
-#define	TIFFTAG_ARTIST			315	/* creator of image */
-#define	TIFFTAG_HOSTCOMPUTER		316	/* machine where created */
-#define	TIFFTAG_PREDICTOR		317	/* prediction scheme w/ LZW */
-#define     PREDICTOR_NONE		1	/* no prediction scheme used */
-#define     PREDICTOR_HORIZONTAL	2	/* horizontal differencing */
-#define     PREDICTOR_FLOATINGPOINT	3	/* floating point predictor */
-#define	TIFFTAG_WHITEPOINT		318	/* image white point */
-#define	TIFFTAG_PRIMARYCHROMATICITIES	319	/* !primary chromaticities */
-#define	TIFFTAG_COLORMAP		320	/* RGB map for pallette image */
-#define	TIFFTAG_HALFTONEHINTS		321	/* !highlight+shadow info */
-#define	TIFFTAG_TILEWIDTH		322	/* !tile width in pixels */
-#define	TIFFTAG_TILELENGTH		323	/* !tile height in pixels */
-#define TIFFTAG_TILEOFFSETS		324	/* !offsets to data tiles */
-#define TIFFTAG_TILEBYTECOUNTS		325	/* !byte counts for tiles */
-#define	TIFFTAG_BADFAXLINES		326	/* lines w/ wrong pixel count */
-#define	TIFFTAG_CLEANFAXDATA		327	/* regenerated line info */
-#define	    CLEANFAXDATA_CLEAN		0	/* no errors detected */
-#define	    CLEANFAXDATA_REGENERATED	1	/* receiver regenerated lines */
-#define	    CLEANFAXDATA_UNCLEAN	2	/* uncorrected errors exist */
-#define	TIFFTAG_CONSECUTIVEBADFAXLINES	328	/* max consecutive bad lines */
-#define	TIFFTAG_SUBIFD			330	/* subimage descriptors */
-#define	TIFFTAG_INKSET			332	/* !inks in separated image */
-#define	    INKSET_CMYK			1	/* !cyan-magenta-yellow-black color */
-#define	    INKSET_MULTIINK		2	/* !multi-ink or hi-fi color */
-#define	TIFFTAG_INKNAMES		333	/* !ascii names of inks */
-#define	TIFFTAG_NUMBEROFINKS		334	/* !number of inks */
-#define	TIFFTAG_DOTRANGE		336	/* !0% and 100% dot codes */
-#define	TIFFTAG_TARGETPRINTER		337	/* !separation target */
-#define	TIFFTAG_EXTRASAMPLES		338	/* !info about extra samples */
-#define	    EXTRASAMPLE_UNSPECIFIED	0	/* !unspecified data */
-#define	    EXTRASAMPLE_ASSOCALPHA	1	/* !associated alpha data */
-#define	    EXTRASAMPLE_UNASSALPHA	2	/* !unassociated alpha data */
-#define	TIFFTAG_SAMPLEFORMAT		339	/* !data sample format */
-#define	    SAMPLEFORMAT_UINT		1	/* !unsigned integer data */
-#define	    SAMPLEFORMAT_INT		2	/* !signed integer data */
-#define	    SAMPLEFORMAT_IEEEFP		3	/* !IEEE floating point data */
-#define	    SAMPLEFORMAT_VOID		4	/* !untyped data */
-#define	    SAMPLEFORMAT_COMPLEXINT	5	/* !complex signed int */
-#define	    SAMPLEFORMAT_COMPLEXIEEEFP	6	/* !complex ieee floating */
-#define	TIFFTAG_SMINSAMPLEVALUE		340	/* !variable MinSampleValue */
-#define	TIFFTAG_SMAXSAMPLEVALUE		341	/* !variable MaxSampleValue */
-#define	TIFFTAG_CLIPPATH		343	/* %ClipPath
-						   [Adobe TIFF technote 2] */
-#define	TIFFTAG_XCLIPPATHUNITS		344	/* %XClipPathUnits
-						   [Adobe TIFF technote 2] */
-#define	TIFFTAG_YCLIPPATHUNITS		345	/* %YClipPathUnits
-						   [Adobe TIFF technote 2] */
-#define	TIFFTAG_INDEXED			346	/* %Indexed
-						   [Adobe TIFF Technote 3] */
-#define	TIFFTAG_JPEGTABLES		347	/* %JPEG table stream */
-#define	TIFFTAG_OPIPROXY		351	/* %OPI Proxy [Adobe TIFF technote] */
-/*
- * Tags 512-521 are obsoleted by Technical Note #2 which specifies a
- * revised JPEG-in-TIFF scheme.
- */
-#define	TIFFTAG_JPEGPROC		512	/* !JPEG processing algorithm */
-#define	    JPEGPROC_BASELINE		1	/* !baseline sequential */
-#define	    JPEGPROC_LOSSLESS		14	/* !Huffman coded lossless */
-#define	TIFFTAG_JPEGIFOFFSET		513	/* !pointer to SOI marker */
-#define	TIFFTAG_JPEGIFBYTECOUNT		514	/* !JFIF stream length */
-#define	TIFFTAG_JPEGRESTARTINTERVAL	515	/* !restart interval length */
-#define	TIFFTAG_JPEGLOSSLESSPREDICTORS	517	/* !lossless proc predictor */
-#define	TIFFTAG_JPEGPOINTTRANSFORM	518	/* !lossless point transform */
-#define	TIFFTAG_JPEGQTABLES		519	/* !Q matrice offsets */
-#define	TIFFTAG_JPEGDCTABLES		520	/* !DCT table offsets */
-#define	TIFFTAG_JPEGACTABLES		521	/* !AC coefficient offsets */
-#define	TIFFTAG_YCBCRCOEFFICIENTS	529	/* !RGB -> YCbCr transform */
-#define	TIFFTAG_YCBCRSUBSAMPLING	530	/* !YCbCr subsampling factors */
-#define	TIFFTAG_YCBCRPOSITIONING	531	/* !subsample positioning */
-#define	    YCBCRPOSITION_CENTERED	1	/* !as in PostScript Level 2 */
-#define	    YCBCRPOSITION_COSITED	2	/* !as in CCIR 601-1 */
-#define	TIFFTAG_REFERENCEBLACKWHITE	532	/* !colorimetry info */
-#define	TIFFTAG_XMLPACKET		700	/* %XML packet
-						   [Adobe XMP Specification,
-						   January 2004 */
-#define TIFFTAG_OPIIMAGEID		32781	/* %OPI ImageID
-						   [Adobe TIFF technote] */
-/* tags 32952-32956 are private tags registered to Island Graphics */
-#define TIFFTAG_REFPTS			32953	/* image reference points */
-#define TIFFTAG_REGIONTACKPOINT		32954	/* region-xform tack point */
-#define TIFFTAG_REGIONWARPCORNERS	32955	/* warp quadrilateral */
-#define TIFFTAG_REGIONAFFINE		32956	/* affine transformation mat */
-/* tags 32995-32999 are private tags registered to SGI */
-#define	TIFFTAG_MATTEING		32995	/* $use ExtraSamples */
-#define	TIFFTAG_DATATYPE		32996	/* $use SampleFormat */
-#define	TIFFTAG_IMAGEDEPTH		32997	/* z depth of image */
-#define	TIFFTAG_TILEDEPTH		32998	/* z depth/data tile */
-/* tags 33300-33309 are private tags registered to Pixar */
-/*
- * TIFFTAG_PIXAR_IMAGEFULLWIDTH and TIFFTAG_PIXAR_IMAGEFULLLENGTH
- * are set when an image has been cropped out of a larger image.  
- * They reflect the size of the original uncropped image.
- * The TIFFTAG_XPOSITION and TIFFTAG_YPOSITION can be used
- * to determine the position of the smaller image in the larger one.
- */
-#define TIFFTAG_PIXAR_IMAGEFULLWIDTH    33300   /* full image size in x */
-#define TIFFTAG_PIXAR_IMAGEFULLLENGTH   33301   /* full image size in y */
- /* Tags 33302-33306 are used to identify special image modes and data
-  * used by Pixar's texture formats.
-  */
-#define TIFFTAG_PIXAR_TEXTUREFORMAT	33302	/* texture map format */
-#define TIFFTAG_PIXAR_WRAPMODES		33303	/* s & t wrap modes */
-#define TIFFTAG_PIXAR_FOVCOT		33304	/* cotan(fov) for env. maps */
-#define TIFFTAG_PIXAR_MATRIX_WORLDTOSCREEN 33305
-#define TIFFTAG_PIXAR_MATRIX_WORLDTOCAMERA 33306
-/* tag 33405 is a private tag registered to Eastman Kodak */
-#define TIFFTAG_WRITERSERIALNUMBER      33405   /* device serial number */
-/* tag 33432 is listed in the 6.0 spec w/ unknown ownership */
-#define	TIFFTAG_COPYRIGHT		33432	/* copyright string */
-/* IPTC TAG from RichTIFF specifications */
-#define TIFFTAG_RICHTIFFIPTC		33723
-/* 34016-34029 are reserved for ANSI IT8 TIFF/IT <dkelly at apago.com) */
-#define TIFFTAG_IT8SITE			34016	/* site name */
-#define TIFFTAG_IT8COLORSEQUENCE	34017	/* color seq. [RGB,CMYK,etc] */
-#define TIFFTAG_IT8HEADER		34018	/* DDES Header */
-#define TIFFTAG_IT8RASTERPADDING	34019	/* raster scanline padding */
-#define TIFFTAG_IT8BITSPERRUNLENGTH	34020	/* # of bits in short run */
-#define TIFFTAG_IT8BITSPEREXTENDEDRUNLENGTH 34021/* # of bits in long run */
-#define TIFFTAG_IT8COLORTABLE		34022	/* LW colortable */
-#define TIFFTAG_IT8IMAGECOLORINDICATOR	34023	/* BP/BL image color switch */
-#define TIFFTAG_IT8BKGCOLORINDICATOR	34024	/* BP/BL bg color switch */
-#define TIFFTAG_IT8IMAGECOLORVALUE	34025	/* BP/BL image color value */
-#define TIFFTAG_IT8BKGCOLORVALUE	34026	/* BP/BL bg color value */
-#define TIFFTAG_IT8PIXELINTENSITYRANGE	34027	/* MP pixel intensity value */
-#define TIFFTAG_IT8TRANSPARENCYINDICATOR 34028	/* HC transparency switch */
-#define TIFFTAG_IT8COLORCHARACTERIZATION 34029	/* color character. table */
-#define TIFFTAG_IT8HCUSAGE		34030	/* HC usage indicator */
-#define TIFFTAG_IT8TRAPINDICATOR	34031	/* Trapping indicator
-						   (untrapped=0, trapped=1) */
-#define TIFFTAG_IT8CMYKEQUIVALENT	34032	/* CMYK color equivalents */
-/* tags 34232-34236 are private tags registered to Texas Instruments */
-#define TIFFTAG_FRAMECOUNT              34232   /* Sequence Frame Count */
-/* tag 34377 is private tag registered to Adobe for PhotoShop */
-#define TIFFTAG_PHOTOSHOP		34377 
-/* tags 34665, 34853 and 40965 are documented in EXIF specification */
-#define TIFFTAG_EXIFIFD			34665	/* Pointer to EXIF private directory */
-/* tag 34750 is a private tag registered to Adobe? */
-#define TIFFTAG_ICCPROFILE		34675	/* ICC profile data */
-/* tag 34750 is a private tag registered to Pixel Magic */
-#define	TIFFTAG_JBIGOPTIONS		34750	/* JBIG options */
-#define TIFFTAG_GPSIFD			34853	/* Pointer to GPS private directory */
-/* tags 34908-34914 are private tags registered to SGI */
-#define	TIFFTAG_FAXRECVPARAMS		34908	/* encoded Class 2 ses. parms */
-#define	TIFFTAG_FAXSUBADDRESS		34909	/* received SubAddr string */
-#define	TIFFTAG_FAXRECVTIME		34910	/* receive time (secs) */
-#define	TIFFTAG_FAXDCS			34911	/* encoded fax ses. params, Table 2/T.30 */
-/* tags 37439-37443 are registered to SGI <gregl at sgi.com> */
-#define TIFFTAG_STONITS			37439	/* Sample value to Nits */
-/* tag 34929 is a private tag registered to FedEx */
-#define	TIFFTAG_FEDEX_EDR		34929	/* unknown use */
-#define TIFFTAG_INTEROPERABILITYIFD	40965	/* Pointer to Interoperability private directory */
-/* Adobe Digital Negative (DNG) format tags */
-#define TIFFTAG_DNGVERSION		50706	/* &DNG version number */
-#define TIFFTAG_DNGBACKWARDVERSION	50707	/* &DNG compatibility version */
-#define TIFFTAG_UNIQUECAMERAMODEL	50708	/* &name for the camera model */
-#define TIFFTAG_LOCALIZEDCAMERAMODEL	50709	/* &localized camera model
-						   name */
-#define TIFFTAG_CFAPLANECOLOR		50710	/* &CFAPattern->LinearRaw space
-						   mapping */
-#define TIFFTAG_CFALAYOUT		50711	/* &spatial layout of the CFA */
-#define TIFFTAG_LINEARIZATIONTABLE	50712	/* &lookup table description */
-#define TIFFTAG_BLACKLEVELREPEATDIM	50713	/* &repeat pattern size for
-						   the BlackLevel tag */
-#define TIFFTAG_BLACKLEVEL		50714	/* &zero light encoding level */
-#define TIFFTAG_BLACKLEVELDELTAH	50715	/* &zero light encoding level
-						   differences (columns) */
-#define TIFFTAG_BLACKLEVELDELTAV	50716	/* &zero light encoding level
-						   differences (rows) */
-#define TIFFTAG_WHITELEVEL		50717	/* &fully saturated encoding
-						   level */
-#define TIFFTAG_DEFAULTSCALE		50718	/* &default scale factors */
-#define TIFFTAG_DEFAULTCROPORIGIN	50719	/* &origin of the final image
-						   area */
-#define TIFFTAG_DEFAULTCROPSIZE		50720	/* &size of the final image 
-						   area */
-#define TIFFTAG_COLORMATRIX1		50721	/* &XYZ->reference color space
-						   transformation matrix 1 */
-#define TIFFTAG_COLORMATRIX2		50722	/* &XYZ->reference color space
-						   transformation matrix 2 */
-#define TIFFTAG_CAMERACALIBRATION1	50723	/* &calibration matrix 1 */
-#define TIFFTAG_CAMERACALIBRATION2	50724	/* &calibration matrix 2 */
-#define TIFFTAG_REDUCTIONMATRIX1	50725	/* &dimensionality reduction
-						   matrix 1 */
-#define TIFFTAG_REDUCTIONMATRIX2	50726	/* &dimensionality reduction
-						   matrix 2 */
-#define TIFFTAG_ANALOGBALANCE		50727	/* &gain applied the stored raw
-						   values*/
-#define TIFFTAG_ASSHOTNEUTRAL		50728	/* &selected white balance in
-						   linear reference space */
-#define TIFFTAG_ASSHOTWHITEXY		50729	/* &selected white balance in
-						   x-y chromaticity
-						   coordinates */
-#define TIFFTAG_BASELINEEXPOSURE	50730	/* &how much to move the zero
-						   point */
-#define TIFFTAG_BASELINENOISE		50731	/* &relative noise level */
-#define TIFFTAG_BASELINESHARPNESS	50732	/* &relative amount of
-						   sharpening */
-#define TIFFTAG_BAYERGREENSPLIT		50733	/* &how closely the values of
-						   the green pixels in the
-						   blue/green rows track the
-						   values of the green pixels
-						   in the red/green rows */
-#define TIFFTAG_LINEARRESPONSELIMIT	50734	/* &non-linear encoding range */
-#define TIFFTAG_CAMERASERIALNUMBER	50735	/* &camera's serial number */
-#define TIFFTAG_LENSINFO		50736	/* info about the lens */
-#define TIFFTAG_CHROMABLURRADIUS	50737	/* &chroma blur radius */
-#define TIFFTAG_ANTIALIASSTRENGTH	50738	/* &relative strength of the
-						   camera's anti-alias filter */
-#define TIFFTAG_SHADOWSCALE		50739	/* &used by Adobe Camera Raw */
-#define TIFFTAG_DNGPRIVATEDATA		50740	/* &manufacturer's private data */
-#define TIFFTAG_MAKERNOTESAFETY		50741	/* &whether the EXIF MakerNote
-						   tag is safe to preserve
-						   along with the rest of the
-						   EXIF data */
-#define	TIFFTAG_CALIBRATIONILLUMINANT1	50778	/* &illuminant 1 */
-#define TIFFTAG_CALIBRATIONILLUMINANT2	50779	/* &illuminant 2 */
-#define TIFFTAG_BESTQUALITYSCALE	50780	/* &best quality multiplier */
-#define TIFFTAG_RAWDATAUNIQUEID		50781	/* &unique identifier for
-						   the raw image data */
-#define TIFFTAG_ORIGINALRAWFILENAME	50827	/* &file name of the original
-						   raw file */
-#define TIFFTAG_ORIGINALRAWFILEDATA	50828	/* &contents of the original
-						   raw file */
-#define TIFFTAG_ACTIVEAREA		50829	/* &active (non-masked) pixels
-						   of the sensor */
-#define TIFFTAG_MASKEDAREAS		50830	/* &list of coordinates
-						   of fully masked pixels */
-#define TIFFTAG_ASSHOTICCPROFILE	50831	/* &these two tags used to */
-#define TIFFTAG_ASSHOTPREPROFILEMATRIX	50832	/* map cameras's color space
-						   into ICC profile space */
-#define TIFFTAG_CURRENTICCPROFILE	50833	/* & */
-#define TIFFTAG_CURRENTPREPROFILEMATRIX	50834	/* & */
-/* tag 65535 is an undefined tag used by Eastman Kodak */
-#define TIFFTAG_DCSHUESHIFTVALUES       65535   /* hue shift correction data */
-
-/*
- * The following are ``pseudo tags'' that can be used to control
- * codec-specific functionality.  These tags are not written to file.
- * Note that these values start at 0xffff+1 so that they'll never
- * collide with Aldus-assigned tags.
- *
- * If you want your private pseudo tags ``registered'' (i.e. added to
- * this file), please post a bug report via the tracking system at
- * http://www.remotesensing.org/libtiff/bugs.html with the appropriate
- * C definitions to add.
- */
-#define	TIFFTAG_FAXMODE			65536	/* Group 3/4 format control */
-#define	    FAXMODE_CLASSIC	0x0000		/* default, include RTC */
-#define	    FAXMODE_NORTC	0x0001		/* no RTC at end of data */
-#define	    FAXMODE_NOEOL	0x0002		/* no EOL code at end of row */
-#define	    FAXMODE_BYTEALIGN	0x0004		/* byte align row */
-#define	    FAXMODE_WORDALIGN	0x0008		/* word align row */
-#define	    FAXMODE_CLASSF	FAXMODE_NORTC	/* TIFF Class F */
-#define	TIFFTAG_JPEGQUALITY		65537	/* Compression quality level */
-/* Note: quality level is on the IJG 0-100 scale.  Default value is 75 */
-#define	TIFFTAG_JPEGCOLORMODE		65538	/* Auto RGB<=>YCbCr convert? */
-#define	    JPEGCOLORMODE_RAW	0x0000		/* no conversion (default) */
-#define	    JPEGCOLORMODE_RGB	0x0001		/* do auto conversion */
-#define	TIFFTAG_JPEGTABLESMODE		65539	/* What to put in JPEGTables */
-#define	    JPEGTABLESMODE_QUANT 0x0001		/* include quantization tbls */
-#define	    JPEGTABLESMODE_HUFF	0x0002		/* include Huffman tbls */
-/* Note: default is JPEGTABLESMODE_QUANT | JPEGTABLESMODE_HUFF */
-#define	TIFFTAG_FAXFILLFUNC		65540	/* G3/G4 fill function */
-#define	TIFFTAG_PIXARLOGDATAFMT		65549	/* PixarLogCodec I/O data sz */
-#define	    PIXARLOGDATAFMT_8BIT	0	/* regular u_char samples */
-#define	    PIXARLOGDATAFMT_8BITABGR	1	/* ABGR-order u_chars */
-#define	    PIXARLOGDATAFMT_11BITLOG	2	/* 11-bit log-encoded (raw) */
-#define	    PIXARLOGDATAFMT_12BITPICIO	3	/* as per PICIO (1.0==2048) */
-#define	    PIXARLOGDATAFMT_16BIT	4	/* signed short samples */
-#define	    PIXARLOGDATAFMT_FLOAT	5	/* IEEE float samples */
-/* 65550-65556 are allocated to Oceana Matrix <dev at oceana.com> */
-#define TIFFTAG_DCSIMAGERTYPE           65550   /* imager model & filter */
-#define     DCSIMAGERMODEL_M3           0       /* M3 chip (1280 x 1024) */
-#define     DCSIMAGERMODEL_M5           1       /* M5 chip (1536 x 1024) */
-#define     DCSIMAGERMODEL_M6           2       /* M6 chip (3072 x 2048) */
-#define     DCSIMAGERFILTER_IR          0       /* infrared filter */
-#define     DCSIMAGERFILTER_MONO        1       /* monochrome filter */
-#define     DCSIMAGERFILTER_CFA         2       /* color filter array */
-#define     DCSIMAGERFILTER_OTHER       3       /* other filter */
-#define TIFFTAG_DCSINTERPMODE           65551   /* interpolation mode */
-#define     DCSINTERPMODE_NORMAL        0x0     /* whole image, default */
-#define     DCSINTERPMODE_PREVIEW       0x1     /* preview of image (384x256) */
-#define TIFFTAG_DCSBALANCEARRAY         65552   /* color balance values */
-#define TIFFTAG_DCSCORRECTMATRIX        65553   /* color correction values */
-#define TIFFTAG_DCSGAMMA                65554   /* gamma value */
-#define TIFFTAG_DCSTOESHOULDERPTS       65555   /* toe & shoulder points */
-#define TIFFTAG_DCSCALIBRATIONFD        65556   /* calibration file desc */
-/* Note: quality level is on the ZLIB 1-9 scale. Default value is -1 */
-#define	TIFFTAG_ZIPQUALITY		65557	/* compression quality level */
-#define	TIFFTAG_PIXARLOGQUALITY		65558	/* PixarLog uses same scale */
-/* 65559 is allocated to Oceana Matrix <dev at oceana.com> */
-#define TIFFTAG_DCSCLIPRECTANGLE	65559	/* area of image to acquire */
-#define TIFFTAG_SGILOGDATAFMT		65560	/* SGILog user data format */
-#define     SGILOGDATAFMT_FLOAT		0	/* IEEE float samples */
-#define     SGILOGDATAFMT_16BIT		1	/* 16-bit samples */
-#define     SGILOGDATAFMT_RAW		2	/* uninterpreted data */
-#define     SGILOGDATAFMT_8BIT		3	/* 8-bit RGB monitor values */
-#define TIFFTAG_SGILOGENCODE		65561 /* SGILog data encoding control*/
-#define     SGILOGENCODE_NODITHER	0     /* do not dither encoded values*/
-#define     SGILOGENCODE_RANDITHER	1     /* randomly dither encd values */
-
-/*
- * EXIF tags
- */
-#define EXIFTAG_EXPOSURETIME		33434	/* Exposure time */
-#define EXIFTAG_FNUMBER			33437	/* F number */
-#define EXIFTAG_EXPOSUREPROGRAM		34850	/* Exposure program */
-#define EXIFTAG_SPECTRALSENSITIVITY	34852	/* Spectral sensitivity */
-#define EXIFTAG_ISOSPEEDRATINGS		34855	/* ISO speed rating */
-#define EXIFTAG_OECF			34856	/* Optoelectric conversion
-						   factor */
-#define EXIFTAG_EXIFVERSION		36864	/* Exif version */
-#define EXIFTAG_DATETIMEORIGINAL	36867	/* Date and time of original
-						   data generation */
-#define EXIFTAG_DATETIMEDIGITIZED	36868	/* Date and time of digital
-						   data generation */
-#define EXIFTAG_COMPONENTSCONFIGURATION	37121	/* Meaning of each component */
-#define EXIFTAG_COMPRESSEDBITSPERPIXEL	37122	/* Image compression mode */
-#define EXIFTAG_SHUTTERSPEEDVALUE	37377	/* Shutter speed */
-#define EXIFTAG_APERTUREVALUE		37378	/* Aperture */
-#define EXIFTAG_BRIGHTNESSVALUE		37379	/* Brightness */
-#define EXIFTAG_EXPOSUREBIASVALUE	37380	/* Exposure bias */
-#define EXIFTAG_MAXAPERTUREVALUE	37381	/* Maximum lens aperture */
-#define EXIFTAG_SUBJECTDISTANCE		37382	/* Subject distance */
-#define EXIFTAG_METERINGMODE		37383	/* Metering mode */
-#define EXIFTAG_LIGHTSOURCE		37384	/* Light source */
-#define EXIFTAG_FLASH			37385	/* Flash */
-#define EXIFTAG_FOCALLENGTH		37386	/* Lens focal length */
-#define EXIFTAG_SUBJECTAREA		37396	/* Subject area */
-#define EXIFTAG_MAKERNOTE		37500	/* Manufacturer notes */
-#define EXIFTAG_USERCOMMENT		37510	/* User comments */
-#define EXIFTAG_SUBSECTIME		37520	/* DateTime subseconds */
-#define EXIFTAG_SUBSECTIMEORIGINAL	37521	/* DateTimeOriginal subseconds */
-#define EXIFTAG_SUBSECTIMEDIGITIZED	37522	/* DateTimeDigitized subseconds */
-#define EXIFTAG_FLASHPIXVERSION		40960	/* Supported Flashpix version */
-#define EXIFTAG_COLORSPACE		40961	/* Color space information */
-#define EXIFTAG_PIXELXDIMENSION		40962	/* Valid image width */
-#define EXIFTAG_PIXELYDIMENSION		40963	/* Valid image height */
-#define EXIFTAG_RELATEDSOUNDFILE	40964	/* Related audio file */
-#define EXIFTAG_FLASHENERGY		41483	/* Flash energy */
-#define EXIFTAG_SPATIALFREQUENCYRESPONSE 41484	/* Spatial frequency response */
-#define EXIFTAG_FOCALPLANEXRESOLUTION	41486	/* Focal plane X resolution */
-#define EXIFTAG_FOCALPLANEYRESOLUTION	41487	/* Focal plane Y resolution */
-#define EXIFTAG_FOCALPLANERESOLUTIONUNIT 41488	/* Focal plane resolution unit */
-#define EXIFTAG_SUBJECTLOCATION		41492	/* Subject location */
-#define EXIFTAG_EXPOSUREINDEX		41493	/* Exposure index */
-#define EXIFTAG_SENSINGMETHOD		41495	/* Sensing method */
-#define EXIFTAG_FILESOURCE		41728	/* File source */
-#define EXIFTAG_SCENETYPE		41729	/* Scene type */
-#define EXIFTAG_CFAPATTERN		41730	/* CFA pattern */
-#define EXIFTAG_CUSTOMRENDERED		41985	/* Custom image processing */
-#define EXIFTAG_EXPOSUREMODE		41986	/* Exposure mode */
-#define EXIFTAG_WHITEBALANCE		41987	/* White balance */
-#define EXIFTAG_DIGITALZOOMRATIO	41988	/* Digital zoom ratio */
-#define EXIFTAG_FOCALLENGTHIN35MMFILM	41989	/* Focal length in 35 mm film */
-#define EXIFTAG_SCENECAPTURETYPE	41990	/* Scene capture type */
-#define EXIFTAG_GAINCONTROL		41991	/* Gain control */
-#define EXIFTAG_CONTRAST		41992	/* Contrast */
-#define EXIFTAG_SATURATION		41993	/* Saturation */
-#define EXIFTAG_SHARPNESS		41994	/* Sharpness */
-#define EXIFTAG_DEVICESETTINGDESCRIPTION 41995	/* Device settings description */
-#define EXIFTAG_SUBJECTDISTANCERANGE	41996	/* Subject distance range */
-#define EXIFTAG_GAINCONTROL		41991	/* Gain control */
-#define EXIFTAG_GAINCONTROL		41991	/* Gain control */
-#define EXIFTAG_IMAGEUNIQUEID		42016	/* Unique image ID */
-
-#endif /* _TIFF_ */
-
-/* vim: set ts=8 sts=8 sw=8 noet: */
diff --git a/src/tiff/tiffcomp.h b/src/tiff/tiffcomp.h
deleted file mode 100644
index 5de3832..0000000
--- a/src/tiff/tiffcomp.h
+++ /dev/null
@@ -1,221 +0,0 @@
-/* $Header$ */
-
-/*
- * Copyright (c) 1990-1997 Sam Leffler
- * Copyright (c) 1991-1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and 
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- * 
- * 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 SAM LEFFLER OR SILICON GRAPHICS 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.
- */
-
-#ifndef _COMPAT_
-#define	_COMPAT_
-/*
- * This file contains a hodgepodge of definitions and
- * declarations that are needed to provide compatibility
- * between the native system and the base implementation
- * that the library assumes.
- *
- * NB: This file is a mess.
- */
-
-/*
- * Setup basic type definitions and function declaratations.
- */
-
-/*
- * Simplify Acorn RISC OS identifier (to avoid confusion with Acorn RISC iX
- * and with defunct Unix Risc OS)
- * No need to specify __arm - hey, Acorn might port the OS, no problem here!
- */
-#ifdef __acornriscos
-#undef __acornriscos
-#endif
-#if defined(__acorn) && defined(__riscos)
-#define __acornriscos
-#endif
-
-#if defined(__MWERKS__) || defined(THINK_C)
-#include <unix.h>
-#include <math.h>
-#endif
-
-#include <stdio.h>
-
-#if defined(__PPCC__) || defined(__SC__) || defined(__MRC__)
-#include <types.h>
-#elif !defined(__MWERKS__) && !defined(THINK_C) && !defined(__acornriscos) && !defined(applec)
-#include <sys/types.h>
-#endif
-
-#if defined(VMS)
-#include <file.h>
-#include <unixio.h>
-#elif !defined(__acornriscos)
-#include <fcntl.h>
-#endif
-
-/*
- * This maze of checks controls defines or not the
- * target system has BSD-style typdedefs declared in
- * an include file and/or whether or not to include
- * <unistd.h> to get the SEEK_* definitions.  Some
- * additional includes are also done to pull in the
- * appropriate definitions we're looking for.
- */
-#if defined(__MWERKS__) || defined(THINK_C) || defined(__PPCC__) || defined(__SC__) || defined(__MRC__)
-#include <stdlib.h>
-#define	BSDTYPES
-#define	HAVE_UNISTD_H	0
-#elif (defined(_WINDOWS) || defined(__WIN32__) || defined(_Windows) || defined(_WIN32)) && !defined(unix)
-#undef BSDTYPES
-#define	BSDTYPES
-#elif defined(OS2_16) || defined(OS2_32)
-#define	BSDTYPES
-#elif defined(__acornriscos)
-#include <stdlib.h>
-#define	BSDTYPES
-#define	HAVE_UNISTD_H	0
-#elif defined(VMS)
-#define	HAVE_UNISTD_H	0
-#else
-#define	HAVE_UNISTD_H	1
-#endif
-
-/*
- * The library uses the ANSI C/POSIX SEEK_*
- * definitions that should be defined in unistd.h
- * (except on system where they are in stdio.h and
- * there is no unistd.h).
- */
-#if !defined(SEEK_SET) && HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-
-/*
- * The library uses memset, memcpy, and memcmp.
- * ANSI C and System V define these in string.h.
- */
-#include <string.h>
-
-/*
- * The BSD typedefs are used throughout the library.
- * If your system doesn't have them in <sys/types.h>,
- * then define BSDTYPES in your Makefile.
- */
-#if defined(BSDTYPES)
-# ifndef _BSDTYPES_DEFINED
-#  ifndef __u_char_defined
-typedef	unsigned char u_char;
-typedef	unsigned short u_short;
-typedef	unsigned int u_int;
-typedef	unsigned long u_long;
-#   define __u_char_defined
-#  endif /* __u_char_defined */
-#  define _BSDTYPES_DEFINED
-# endif /* _BSDTYPES_DEFINED */
-#endif /* BSDTYPES */
-
-/*
- * dblparam_t is the type that a double precision
- * floating point value will have on the parameter
- * stack (when coerced by the compiler).
- */
-/* Note: on MacPowerPC "extended" is undefined. So only use it for 68K-Macs */
-#if defined(__SC__) || defined(THINK_C)
-typedef extended dblparam_t;
-#else
-typedef double dblparam_t;
-#endif
-
-/*
- * If your compiler supports inline functions, then
- * set INLINE appropriately to get the known hotspots
- * in the library expanded inline.
- */
-#if defined(__GNUC__)
-#if defined(__STRICT_ANSI__)
-#define	INLINE	__inline__
-#else
-#define	INLINE	inline
-#endif
-#else /* !__GNUC__ */
-#define	INLINE
-#endif
-
-/*
- * GLOBALDATA is a macro that is used to define global variables
- * private to the library.  We use this indirection to hide
- * brain-damage in VAXC (and GCC) under VAX/VMS.  In these
- * environments the macro places the variable in a non-shareable
- * program section, which ought to be done by default (sigh!)
- *
- * Apparently DEC are aware of the problem as this behaviour is the
- * default under VMS on AXP.
- *
- * The GNU C variant is untested.
- */
-#if defined(VAX) && defined(VMS)
-#if defined(VAXC)
-#define GLOBALDATA(TYPE,NAME)	extern noshare TYPE NAME
-#endif
-#if defined(__GNUC__)
-#define GLOBALDATA(TYPE,NAME)	extern TYPE NAME \
-	asm("_$$PsectAttributes_NOSHR$$" #NAME)
-#endif
-#else	/* !VAX/VMS */
-#define GLOBALDATA(TYPE,NAME)	extern TYPE NAME
-#endif
-
-#if defined(__acornriscos)
-/*
- * osfcn.h is part of C++Lib on Acorn C/C++, and as such can't be used
- * on C alone. For that reason, the relevant functions are
- * implemented in tif_acorn.c, and the elements from the header
- * file are included here.
- */
-#if defined(__cplusplus)
-#include <osfcn.h>
-#else
-#define	O_RDONLY	0
-#define	O_WRONLY	1
-#define	O_RDWR		2
-#define	O_APPEND	8
-#define	O_CREAT		0x200
-#define	O_TRUNC		0x400
-typedef long off_t;
-extern int open(const char *name, int flags, int mode);
-extern int close(int fd);
-extern int write(int fd, const char *buf, int nbytes);
-extern int read(int fd, char *buf, int nbytes);
-extern off_t lseek(int fd, off_t offset, int whence);
-extern int creat(const char *path, int mode);
-#endif /* __cplusplus */
-#endif /* __acornriscos */
-
-/* Bit and byte order, the default is MSB to LSB */
-#ifdef VMS
-#undef HOST_FILLORDER
-#undef HOST_BIGENDIAN
-#define HOST_FILLORDER FILLORDER_LSB2MSB
-#define HOST_BIGENDIAN	0
-#endif
-
-
-#endif /* _COMPAT_ */
diff --git a/src/tiff/tiffconf.h b/src/tiff/tiffconf.h
deleted file mode 100644
index f5b16cb..0000000
--- a/src/tiff/tiffconf.h
+++ /dev/null
@@ -1,101 +0,0 @@
-/* libtiff/tiffconf.h.  Generated by configure.  */
-/*
-  Configuration defines for installed libtiff.
-  This file maintained for backward compatibility. Do not use definitions
-  from this file in your programs.
-*/
-
-#ifndef _TIFFCONF_
-#define _TIFFCONF_
-
-/* Define to 1 if the system has the type `int16'. */
-/* #undef HAVE_INT16 */
-
-/* Define to 1 if the system has the type `int32'. */
-/* #undef HAVE_INT32 */
-
-/* Define to 1 if the system has the type `int8'. */
-/* #undef HAVE_INT8 */
-
-/* The size of a `int', as computed by sizeof. */
-#define SIZEOF_INT 4
-
-/* The size of a `long', as computed by sizeof. */
-#define SIZEOF_LONG 4
-
-/* Compatibility stuff. */
-
-/* Define as 0 or 1 according to the floating point format suported by the
-   machine */
-#define HAVE_IEEEFP 1
-
-/* Set the native cpu bit order (FILLORDER_LSB2MSB or FILLORDER_MSB2LSB) */
-#define HOST_FILLORDER FILLORDER_LSB2MSB
-
-/* Native cpu byte order: 1 if big-endian (Motorola) or 0 if little-endian
-   (Intel) */
-#define HOST_BIGENDIAN 0
-
-/* Support CCITT Group 3 & 4 algorithms */
-#define CCITT_SUPPORT 1
-
-/* Support JPEG compression (requires IJG JPEG library) */
-#define JPEG_SUPPORT 1
-
-/* Support LogLuv high dynamic range encoding */
-#define LOGLUV_SUPPORT 1
-
-/* Support LZW algorithm */
-#define LZW_SUPPORT 1
-
-/* Support NeXT 2-bit RLE algorithm */
-#define NEXT_SUPPORT 1
-
-/* Support Old JPEG compresson (read contrib/ojpeg/README first! Compilation
-   fails with unpatched IJG JPEG library) */
-/* #undef OJPEG_SUPPORT */
-
-/* Support Macintosh PackBits algorithm */
-#define PACKBITS_SUPPORT 1
-
-/* Support Pixar log-format algorithm (requires Zlib) */
-#define PIXARLOG_SUPPORT 1
-
-/* Support ThunderScan 4-bit RLE algorithm */
-#define THUNDER_SUPPORT 1
-
-/* Support Deflate compression */
-#define ZIP_SUPPORT 1
-
-/* Support strip chopping (whether or not to convert single-strip uncompressed
-   images to mutiple strips of ~8Kb to reduce memory usage) */
-#define STRIPCHOP_DEFAULT TIFF_STRIPCHOP
-
-/* Enable SubIFD tag (330) support */
-#define SUBIFD_SUPPORT 1
-
-/* Treat extra sample as alpha (default enabled). The RGBA interface will
-   treat a fourth sample with no EXTRASAMPLE_ value as being ASSOCALPHA. Many
-   packages produce RGBA files but don't mark the alpha properly. */
-#define DEFAULT_EXTRASAMPLE_AS_ALPHA 1
-
-/* Pick up YCbCr subsampling info from the JPEG data stream to support files
-   lacking the tag (default enabled). */
-#define CHECK_JPEG_YCBCR_SUBSAMPLING 1
-
-/* Support MS MDI magic number files as TIFF */
-#define MDI_SUPPORT 1
-
-/*
- * Feature support definitions.
- * XXX: These macros are obsoleted. Don't use them in your apps!
- * Macros stays here for backward compatibility and should be always defined.
- */
-#define COLORIMETRY_SUPPORT
-#define YCBCR_SUPPORT
-#define CMYK_SUPPORT
-#define ICC_SUPPORT
-#define PHOTOSHOP_SUPPORT
-#define IPTC_SUPPORT
-
-#endif /* _TIFFCONF_ */
diff --git a/src/tiff/tiffio.h b/src/tiff/tiffio.h
deleted file mode 100644
index 0fdccab..0000000
--- a/src/tiff/tiffio.h
+++ /dev/null
@@ -1,517 +0,0 @@
-/* $Id: tiffio.h 7870 2009-05-21 14:48:39Z castejon $ */
-
-/*
- * Copyright (c) 1988-1997 Sam Leffler
- * Copyright (c) 1991-1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and 
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- * 
- * 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 SAM LEFFLER OR SILICON GRAPHICS 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.
- */
-
-#ifndef _TIFFIO_
-#define	_TIFFIO_
-
-#include "geotiff.h"
-
-/*
- * TIFF I/O Library Definitions.
- */
-#include "tiff.h"
-#include "tiffvers.h"
-
-/*
- * TIFF is defined as an incomplete type to hide the
- * library's internal data structures from clients.
- */
-typedef	struct tiff TIFF;
-
-/*
- * The following typedefs define the intrinsic size of
- * data types used in the *exported* interfaces.  These
- * definitions depend on the proper definition of types
- * in tiff.h.  Note also that the varargs interface used
- * to pass tag types and values uses the types defined in
- * tiff.h directly.
- *
- * NB: ttag_t is unsigned int and not unsigned short because
- *     ANSI C requires that the type before the ellipsis be a
- *     promoted type (i.e. one of int, unsigned int, pointer,
- *     or double) and because we defined pseudo-tags that are
- *     outside the range of legal Aldus-assigned tags.
- * NB: tsize_t is int32 and not uint32 because some functions
- *     return -1.
- * NB: toff_t is not off_t for many reasons; TIFFs max out at
- *     32-bit file offsets being the most important, and to ensure
- *     that it is unsigned, rather than signed.
- */
-typedef	uint32 ttag_t;		/* directory tag */
-typedef	uint16 tdir_t;		/* directory index */
-typedef	uint16 tsample_t;	/* sample number */
-typedef	uint32 tstrip_t;	/* strip number */
-typedef uint32 ttile_t;		/* tile number */
-typedef	int32 tsize_t;		/* i/o size in bytes */
-typedef	void* tdata_t;		/* image data ref */
-typedef	uint32 toff_t;		/* file offset */
-
-#if !defined(__WIN32__) && (defined(_WIN32) || defined(WIN32))
-#define __WIN32__
-#endif
-
-/*
- * On windows you should define USE_WIN32_FILEIO if you are using tif_win32.c
- * or AVOID_WIN32_FILEIO if you are using something else (like tif_unix.c).
- *
- * By default tif_unix.c is assumed.
- */
-
-#if defined(_WINDOWS) || defined(__WIN32__) || defined(_Windows)
-#  if !defined(__CYGWIN) && !defined(AVOID_WIN32_FILEIO) && !defined(USE_WIN32_FILEIO)
-#    define AVOID_WIN32_FILEIO
-#  endif
-#endif
-
-#if defined(USE_WIN32_FILEIO)
-# define VC_EXTRALEAN
-# include <windows.h>
-# ifdef __WIN32__
-DECLARE_HANDLE(thandle_t);	/* Win32 file handle */
-# else
-typedef	HFILE thandle_t;	/* client data handle */
-# endif /* __WIN32__ */
-#else
-typedef	void* thandle_t;	/* client data handle */
-#endif /* USE_WIN32_FILEIO */
-
-#ifndef NULL
-# define NULL	(void *)0
-#endif
-
-/*
- * Flags to pass to TIFFPrintDirectory to control
- * printing of data structures that are potentially
- * very large.   Bit-or these flags to enable printing
- * multiple items.
- */
-#define	TIFFPRINT_NONE		0x0		/* no extra info */
-#define	TIFFPRINT_STRIPS	0x1		/* strips/tiles info */
-#define	TIFFPRINT_CURVES	0x2		/* color/gray response curves */
-#define	TIFFPRINT_COLORMAP	0x4		/* colormap */
-#define	TIFFPRINT_JPEGQTABLES	0x100		/* JPEG Q matrices */
-#define	TIFFPRINT_JPEGACTABLES	0x200		/* JPEG AC tables */
-#define	TIFFPRINT_JPEGDCTABLES	0x200		/* JPEG DC tables */
-
-/* 
- * Colour conversion stuff
- */
-
-/* reference white */
-#define D65_X0 (95.0470F)
-#define D65_Y0 (100.0F)
-#define D65_Z0 (108.8827F)
-
-#define D50_X0 (96.4250F)
-#define D50_Y0 (100.0F)
-#define D50_Z0 (82.4680F)
-
-/* Structure for holding information about a display device. */
-
-typedef	unsigned char TIFFRGBValue;		/* 8-bit samples */
-
-typedef struct {
-	float d_mat[3][3]; 		/* XYZ -> luminance matrix */
-	float d_YCR;			/* Light o/p for reference white */
-	float d_YCG;
-	float d_YCB;
-	uint32 d_Vrwr;			/* Pixel values for ref. white */
-	uint32 d_Vrwg;
-	uint32 d_Vrwb;
-	float d_Y0R;			/* Residual light for black pixel */
-	float d_Y0G;
-	float d_Y0B;
-	float d_gammaR;			/* Gamma values for the three guns */
-	float d_gammaG;
-	float d_gammaB;
-} TIFFDisplay;
-
-typedef struct {				/* YCbCr->RGB support */
-	TIFFRGBValue* clamptab;			/* range clamping table */
-	int*	Cr_r_tab;
-	int*	Cb_b_tab;
-	int32*	Cr_g_tab;
-	int32*	Cb_g_tab;
-        int32*  Y_tab;
-} TIFFYCbCrToRGB;
-
-typedef struct {				/* CIE Lab 1976->RGB support */
-	int	range;				/* Size of conversion table */
-#define CIELABTORGB_TABLE_RANGE 1500
-	float	rstep, gstep, bstep;
-	float	X0, Y0, Z0;			/* Reference white point */
-	TIFFDisplay display;
-	float	Yr2r[CIELABTORGB_TABLE_RANGE + 1];  /* Conversion of Yr to r */
-	float	Yg2g[CIELABTORGB_TABLE_RANGE + 1];  /* Conversion of Yg to g */
-	float	Yb2b[CIELABTORGB_TABLE_RANGE + 1];  /* Conversion of Yb to b */
-} TIFFCIELabToRGB;
-
-/*
- * RGBA-style image support.
- */
-typedef struct _TIFFRGBAImage TIFFRGBAImage;
-/*
- * The image reading and conversion routines invoke
- * ``put routines'' to copy/image/whatever tiles of
- * raw image data.  A default set of routines are 
- * provided to convert/copy raw image data to 8-bit
- * packed ABGR format rasters.  Applications can supply
- * alternate routines that unpack the data into a
- * different format or, for example, unpack the data
- * and draw the unpacked raster on the display.
- */
-typedef void (*tileContigRoutine)
-    (TIFFRGBAImage*, uint32*, uint32, uint32, uint32, uint32, int32, int32,
-	unsigned char*);
-typedef void (*tileSeparateRoutine)
-    (TIFFRGBAImage*, uint32*, uint32, uint32, uint32, uint32, int32, int32,
-	unsigned char*, unsigned char*, unsigned char*, unsigned char*);
-/*
- * RGBA-reader state.
- */
-struct _TIFFRGBAImage {
-	TIFF*	tif;				/* image handle */
-	int	stoponerr;			/* stop on read error */
-	int	isContig;			/* data is packed/separate */
-	int	alpha;				/* type of alpha data present */
-	uint32	width;				/* image width */
-	uint32	height;				/* image height */
-	uint16	bitspersample;			/* image bits/sample */
-	uint16	samplesperpixel;		/* image samples/pixel */
-	uint16	orientation;			/* image orientation */
-	uint16	req_orientation;		/* requested orientation */
-	uint16	photometric;			/* image photometric interp */
-	uint16*	redcmap;			/* colormap pallete */
-	uint16*	greencmap;
-	uint16*	bluecmap;
-						/* get image data routine */
-	int	(*get)(TIFFRGBAImage*, uint32*, uint32, uint32);
-	union {
-	    void (*any)(TIFFRGBAImage*);
-	    tileContigRoutine	contig;
-	    tileSeparateRoutine	separate;
-	} put;					/* put decoded strip/tile */
-	TIFFRGBValue* Map;			/* sample mapping array */
-	uint32** BWmap;				/* black&white map */
-	uint32** PALmap;			/* palette image map */
-	TIFFYCbCrToRGB* ycbcr;			/* YCbCr conversion state */
-        TIFFCIELabToRGB* cielab;		/* CIE L*a*b conversion state */
-
-        int	row_offset;
-        int     col_offset;
-};
-
-/*
- * Macros for extracting components from the
- * packed ABGR form returned by TIFFReadRGBAImage.
- */
-#define	TIFFGetR(abgr)	((abgr) & 0xff)
-#define	TIFFGetG(abgr)	(((abgr) >> 8) & 0xff)
-#define	TIFFGetB(abgr)	(((abgr) >> 16) & 0xff)
-#define	TIFFGetA(abgr)	(((abgr) >> 24) & 0xff)
-
-/*
- * A CODEC is a software package that implements decoding,
- * encoding, or decoding+encoding of a compression algorithm.
- * The library provides a collection of builtin codecs.
- * More codecs may be registered through calls to the library
- * and/or the builtin implementations may be overridden.
- */
-typedef	int (*TIFFInitMethod)(TIFF*, int);
-typedef struct {
-	char*		name;
-	uint16		scheme;
-	TIFFInitMethod	init;
-} TIFFCodec;
-
-#include <stdio.h>
-#include <stdarg.h>
-
-/* share internal LogLuv conversion routines? */
-#ifndef LOGLUV_PUBLIC
-#define LOGLUV_PUBLIC		1
-#endif
-
-#if defined(c_plusplus) || defined(__cplusplus)
-extern "C" {
-#endif
-typedef	void (*TIFFErrorHandler)(const char*, const char*, va_list);
-typedef	void (*TIFFErrorHandlerExt)(thandle_t, const char*, const char*, va_list);
-typedef	tsize_t (*TIFFReadWriteProc)(thandle_t, tdata_t, tsize_t);
-typedef	toff_t (*TIFFSeekProc)(thandle_t, toff_t, int);
-typedef	int (*TIFFCloseProc)(thandle_t);
-typedef	toff_t (*TIFFSizeProc)(thandle_t);
-typedef	int (*TIFFMapFileProc)(thandle_t, tdata_t*, toff_t*);
-typedef	void (*TIFFUnmapFileProc)(thandle_t, tdata_t, toff_t);
-typedef	void (*TIFFExtendProc)(TIFF*); 
-
-extern	const char* TIFFGetVersion(void);
-
-extern	const TIFFCodec* TIFFFindCODEC(uint16);
-extern	TIFFCodec* TIFFRegisterCODEC(uint16, const char*, TIFFInitMethod);
-extern	void CPL_DLL TIFFUnRegisterCODEC(TIFFCodec*);
-extern  int CPL_DLL TIFFIsCODECConfigured(uint16);
-extern	TIFFCodec* TIFFGetConfiguredCODECs(void);
-
-/*
- * Auxiliary functions.
- */
-
-extern	tdata_t CPL_DLL _TIFFmalloc(tsize_t);
-extern	tdata_t CPL_DLL _TIFFrealloc(tdata_t, tsize_t);
-extern	void CPL_DLL _TIFFmemset(tdata_t, int, tsize_t);
-extern	void CPL_DLL _TIFFmemcpy(tdata_t, const tdata_t, tsize_t);
-extern	int CPL_DLL _TIFFmemcmp(const tdata_t, const tdata_t, tsize_t);
-extern	void CPL_DLL _TIFFfree(tdata_t);
-
-/*
-** Stuff, related to tag handling and creating custom tags.
-*/
-extern  int  TIFFGetTagListCount( TIFF * );
-extern  ttag_t TIFFGetTagListEntry( TIFF *, int tag_index );
-    
-#define	TIFF_ANY	TIFF_NOTYPE	/* for field descriptor searching */
-#define	TIFF_VARIABLE	-1		/* marker for variable length tags */
-#define	TIFF_SPP	-2		/* marker for SamplesPerPixel tags */
-#define	TIFF_VARIABLE2	-3		/* marker for uint32 var-length tags */
-
-#define FIELD_CUSTOM    65    
-
-typedef	struct {
-	ttag_t	field_tag;		/* field's tag */
-	short	field_readcount;	/* read count/TIFF_VARIABLE/TIFF_SPP */
-	short	field_writecount;	/* write count/TIFF_VARIABLE */
-	TIFFDataType field_type;	/* type of associated data */
-        unsigned short field_bit;	/* bit in fieldsset bit vector */
-	unsigned char field_oktochange;	/* if true, can change while writing */
-	unsigned char field_passcount;	/* if true, pass dir count on set */
-	char	*field_name;		/* ASCII name */
-} TIFFFieldInfo;
-
-typedef struct _TIFFTagValue {
-    const TIFFFieldInfo  *info;
-    int             count;
-    void           *value;
-} TIFFTagValue;
-
-extern	void CPL_DLL TIFFMergeFieldInfo(TIFF*, const TIFFFieldInfo[], int);
-extern	const TIFFFieldInfo* TIFFFindFieldInfo(TIFF*, ttag_t, TIFFDataType);
-extern  const TIFFFieldInfo* TIFFFindFieldInfoByName(TIFF* , const char *,
-						     TIFFDataType);
-extern	const TIFFFieldInfo* TIFFFieldWithTag(TIFF*, ttag_t);
-extern	const TIFFFieldInfo* TIFFFieldWithName(TIFF*, const char *);
-
-typedef	int (*TIFFVSetMethod)(TIFF*, ttag_t, va_list);
-typedef	int (*TIFFVGetMethod)(TIFF*, ttag_t, va_list);
-typedef	void (*TIFFPrintMethod)(TIFF*, FILE*, long);
-    
-typedef struct {
-    TIFFVSetMethod	vsetfield;	/* tag set routine */
-    TIFFVGetMethod	vgetfield;	/* tag get routine */
-    TIFFPrintMethod	printdir;	/* directory print routine */
-} TIFFTagMethods;
-        
-extern  TIFFTagMethods CPL_DLL *TIFFAccessTagMethods( TIFF * );
-extern  void CPL_DLL *TIFFGetClientInfo( TIFF *, const char * );
-extern  void CPL_DLL TIFFSetClientInfo( TIFF *, void *, const char * );
-
-extern	void CPL_DLL TIFFCleanup(TIFF*);
-extern	void CPL_DLL TIFFClose(TIFF*);
-extern	int CPL_DLL TIFFFlush(TIFF*);
-extern	int CPL_DLL TIFFFlushData(TIFF*);
-extern	int CPL_DLL TIFFGetField(TIFF*, ttag_t, ...);
-extern	int CPL_DLL TIFFVGetField(TIFF*, ttag_t, va_list);
-extern	int CPL_DLL TIFFGetFieldDefaulted(TIFF*, ttag_t, ...);
-extern	int CPL_DLL TIFFVGetFieldDefaulted(TIFF*, ttag_t, va_list);
-extern	int CPL_DLL TIFFReadDirectory(TIFF*);
-extern	int CPL_DLL TIFFReadCustomDirectory(TIFF*, toff_t, const TIFFFieldInfo[],
-				    size_t);
-extern	int CPL_DLL TIFFReadEXIFDirectory(TIFF*, toff_t);
-extern	tsize_t CPL_DLL TIFFScanlineSize(TIFF*);
-extern	tsize_t CPL_DLL TIFFRasterScanlineSize(TIFF*);
-extern	tsize_t CPL_DLL TIFFStripSize(TIFF*);
-extern	tsize_t CPL_DLL TIFFRawStripSize(TIFF*, tstrip_t);
-extern	tsize_t CPL_DLL TIFFVStripSize(TIFF*, uint32);
-extern	tsize_t CPL_DLL TIFFTileRowSize(TIFF*);
-extern	tsize_t CPL_DLL TIFFTileSize(TIFF*);
-extern	tsize_t CPL_DLL TIFFVTileSize(TIFF*, uint32);
-extern	uint32 CPL_DLL TIFFDefaultStripSize(TIFF*, uint32);
-extern	void CPL_DLL TIFFDefaultTileSize(TIFF*, uint32*, uint32*);
-extern	int CPL_DLL TIFFFileno(TIFF*);
-extern  int CPL_DLL TIFFSetFileno(TIFF*, int);
-extern  thandle_t CPL_DLL TIFFClientdata(TIFF*);
-extern  thandle_t CPL_DLL TIFFSetClientdata(TIFF*, thandle_t);
-extern	int CPL_DLL TIFFGetMode(TIFF*);
-extern	int CPL_DLL TIFFSetMode(TIFF*, int);
-extern	int CPL_DLL TIFFIsTiled(TIFF*);
-extern	int CPL_DLL TIFFIsByteSwapped(TIFF*);
-extern	int CPL_DLL TIFFIsUpSampled(TIFF*);
-extern	int CPL_DLL TIFFIsMSB2LSB(TIFF*);
-extern	int CPL_DLL TIFFIsBigEndian(TIFF*);
-extern	TIFFReadWriteProc CPL_DLL TIFFGetReadProc(TIFF*);
-extern	TIFFReadWriteProc CPL_DLL TIFFGetWriteProc(TIFF*);
-extern	TIFFSeekProc CPL_DLL TIFFGetSeekProc(TIFF*);
-extern	TIFFCloseProc CPL_DLL TIFFGetCloseProc(TIFF*);
-extern	TIFFSizeProc CPL_DLL TIFFGetSizeProc(TIFF*);
-extern	TIFFMapFileProc CPL_DLL TIFFGetMapFileProc(TIFF*);
-extern	TIFFUnmapFileProc CPL_DLL TIFFGetUnmapFileProc(TIFF*);
-extern	uint32 CPL_DLL TIFFCurrentRow(TIFF*);
-extern	tdir_t CPL_DLL TIFFCurrentDirectory(TIFF*);
-extern	tdir_t CPL_DLL TIFFNumberOfDirectories(TIFF*);
-extern	uint32 CPL_DLL TIFFCurrentDirOffset(TIFF*);
-extern	tstrip_t CPL_DLL TIFFCurrentStrip(TIFF*);
-extern	ttile_t CPL_DLL TIFFCurrentTile(TIFF*);
-extern	int CPL_DLL TIFFReadBufferSetup(TIFF*, tdata_t, tsize_t);
-extern	int CPL_DLL TIFFWriteBufferSetup(TIFF*, tdata_t, tsize_t);
-extern	int CPL_DLL TIFFSetupStrips(TIFF *);
-extern  int CPL_DLL TIFFWriteCheck(TIFF*, int, const char *);
-extern	void CPL_DLL TIFFFreeDirectory(TIFF*);
-extern  int CPL_DLL TIFFCreateDirectory(TIFF*);
-extern	int CPL_DLL TIFFLastDirectory(TIFF*);
-extern	int CPL_DLL TIFFSetDirectory(TIFF*, tdir_t);
-extern	int CPL_DLL TIFFSetSubDirectory(TIFF*, uint32);
-extern	int CPL_DLL TIFFUnlinkDirectory(TIFF*, tdir_t);
-extern	int CPL_DLL TIFFSetField(TIFF*, ttag_t, ...);
-extern	int CPL_DLL TIFFVSetField(TIFF*, ttag_t, va_list);
-extern	int CPL_DLL TIFFWriteDirectory(TIFF *);
-extern	int CPL_DLL TIFFCheckpointDirectory(TIFF *);
-extern	int CPL_DLL TIFFRewriteDirectory(TIFF *);
-extern	int CPL_DLL TIFFReassignTagToIgnore(enum TIFFIgnoreSense, int);
-
-#if defined(c_plusplus) || defined(__cplusplus)
-extern	void CPL_DLL TIFFPrintDirectory(TIFF*, FILE*, long = 0);
-extern	int CPL_DLL TIFFReadScanline(TIFF*, tdata_t, uint32, tsample_t = 0);
-extern	int CPL_DLL TIFFWriteScanline(TIFF*, tdata_t, uint32, tsample_t = 0);
-extern	int CPL_DLL TIFFReadRGBAImage(TIFF*, uint32, uint32, uint32*, int = 0);
-extern	int CPL_DLL TIFFReadRGBAImageOriented(TIFF*, uint32, uint32, uint32*,
-				      int = ORIENTATION_BOTLEFT, int = 0);
-#else
-extern	void CPL_DLL TIFFPrintDirectory(TIFF*, FILE*, long);
-extern	int CPL_DLL TIFFReadScanline(TIFF*, tdata_t, uint32, tsample_t);
-extern	int CPL_DLL TIFFWriteScanline(TIFF*, tdata_t, uint32, tsample_t);
-extern	int CPL_DLL TIFFReadRGBAImage(TIFF*, uint32, uint32, uint32*, int);
-extern	int CPL_DLL TIFFReadRGBAImageOriented(TIFF*, uint32, uint32, uint32*, int, int);
-#endif
-
-extern	int CPL_DLL TIFFReadRGBAStrip(TIFF*, tstrip_t, uint32 * );
-extern	int CPL_DLL TIFFReadRGBATile(TIFF*, uint32, uint32, uint32 * );
-extern	int CPL_DLL TIFFRGBAImageOK(TIFF*, char [1024]);
-extern	int CPL_DLL TIFFRGBAImageBegin(TIFFRGBAImage*, TIFF*, int, char [1024]);
-extern	int CPL_DLL TIFFRGBAImageGet(TIFFRGBAImage*, uint32*, uint32, uint32);
-extern	void CPL_DLL TIFFRGBAImageEnd(TIFFRGBAImage*);
-extern	TIFF* TIFFOpen(const char*, const char*);
-# ifdef __WIN32__
-extern	TIFF* TIFFOpenW(const wchar_t*, const char*);
-# endif /* __WIN32__ */
-extern	TIFF* TIFFFdOpen(int, const char*, const char*);
-extern	TIFF* TIFFClientOpen(const char*, const char*,
-	    thandle_t,
-	    TIFFReadWriteProc, TIFFReadWriteProc,
-	    TIFFSeekProc, TIFFCloseProc,
-	    TIFFSizeProc,
-	    TIFFMapFileProc, TIFFUnmapFileProc);
-extern	const char* TIFFFileName(TIFF*);
-extern	const char* TIFFSetFileName(TIFF*, const char *);
-extern	void CPL_DLL TIFFError(const char*, const char*, ...);
-extern	void CPL_DLL TIFFErrorExt(thandle_t, const char*, const char*, ...);
-extern	void CPL_DLL TIFFWarning(const char*, const char*, ...);
-extern	void CPL_DLL TIFFWarningExt(thandle_t, const char*, const char*, ...);
-extern	TIFFErrorHandler CPL_DLL TIFFSetErrorHandler(TIFFErrorHandler);
-extern	TIFFErrorHandlerExt CPL_DLL TIFFSetErrorHandlerExt(TIFFErrorHandlerExt);
-extern	TIFFErrorHandler CPL_DLL TIFFSetWarningHandler(TIFFErrorHandler);
-extern	TIFFErrorHandlerExt CPL_DLL TIFFSetWarningHandlerExt(TIFFErrorHandlerExt);
-extern	TIFFExtendProc CPL_DLL TIFFSetTagExtender(TIFFExtendProc);
-extern	ttile_t CPL_DLL TIFFComputeTile(TIFF*, uint32, uint32, uint32, tsample_t);
-extern	int CPL_DLL TIFFCheckTile(TIFF*, uint32, uint32, uint32, tsample_t);
-extern	ttile_t CPL_DLL TIFFNumberOfTiles(TIFF*);
-extern	tsize_t CPL_DLL TIFFReadTile(TIFF*,
-	    tdata_t, uint32, uint32, uint32, tsample_t);
-extern	tsize_t CPL_DLL TIFFWriteTile(TIFF*,
-	    tdata_t, uint32, uint32, uint32, tsample_t);
-extern	tstrip_t CPL_DLL TIFFComputeStrip(TIFF*, uint32, tsample_t);
-extern	tstrip_t CPL_DLL TIFFNumberOfStrips(TIFF*);
-extern	tsize_t  CPL_DLL TIFFReadEncodedStrip(TIFF*, tstrip_t, tdata_t, tsize_t);
-extern	tsize_t CPL_DLL TIFFReadRawStrip(TIFF*, tstrip_t, tdata_t, tsize_t);
-extern	tsize_t CPL_DLL TIFFReadEncodedTile(TIFF*, ttile_t, tdata_t, tsize_t);
-extern	tsize_t CPL_DLL TIFFReadRawTile(TIFF*, ttile_t, tdata_t, tsize_t);
-extern	tsize_t CPL_DLL TIFFWriteEncodedStrip(TIFF*, tstrip_t, tdata_t, tsize_t);
-extern	tsize_t CPL_DLL TIFFWriteRawStrip(TIFF*, tstrip_t, tdata_t, tsize_t);
-extern	tsize_t CPL_DLL TIFFWriteEncodedTile(TIFF*, ttile_t, tdata_t, tsize_t);
-extern	tsize_t CPL_DLL TIFFWriteRawTile(TIFF*, ttile_t, tdata_t, tsize_t);
-extern	int CPL_DLL TIFFDataWidth(TIFFDataType);    /* table of tag datatype widths */
-extern	void CPL_DLL TIFFSetWriteOffset(TIFF*, toff_t);
-extern	void CPL_DLL TIFFSwabShort(uint16*);
-extern	void CPL_DLL TIFFSwabLong(uint32*);
-extern	void CPL_DLL TIFFSwabDouble(double*);
-extern	void CPL_DLL TIFFSwabArrayOfShort(uint16*, unsigned long);
-extern	void CPL_DLL TIFFSwabArrayOfTriples(uint8*, unsigned long);
-extern	void CPL_DLL TIFFSwabArrayOfLong(uint32*, unsigned long);
-extern	void CPL_DLL TIFFSwabArrayOfDouble(double*, unsigned long);
-extern	void CPL_DLL TIFFReverseBits(unsigned char *, unsigned long);
-extern	const unsigned char* TIFFGetBitRevTable(int);
-
-#ifdef LOGLUV_PUBLIC
-#define U_NEU		0.210526316
-#define V_NEU		0.473684211
-#define UVSCALE		410.
-extern	double LogL16toY(int);
-extern	double LogL10toY(int);
-extern	void XYZtoRGB24(float*, uint8*);
-extern	int uv_decode(double*, double*, int);
-extern	void LogLuv24toXYZ(uint32, float*);
-extern	void LogLuv32toXYZ(uint32, float*);
-#if defined(c_plusplus) || defined(__cplusplus)
-extern	int LogL16fromY(double, int = SGILOGENCODE_NODITHER);
-extern	int LogL10fromY(double, int = SGILOGENCODE_NODITHER);
-extern	int uv_encode(double, double, int = SGILOGENCODE_NODITHER);
-extern	uint32 LogLuv24fromXYZ(float*, int = SGILOGENCODE_NODITHER);
-extern	uint32 LogLuv32fromXYZ(float*, int = SGILOGENCODE_NODITHER);
-#else
-extern	int LogL16fromY(double, int);
-extern	int LogL10fromY(double, int);
-extern	int uv_encode(double, double, int);
-extern	uint32 LogLuv24fromXYZ(float*, int);
-extern	uint32 LogLuv32fromXYZ(float*, int);
-#endif
-#endif /* LOGLUV_PUBLIC */
-    
-extern int CPL_DLL TIFFCIELabToRGBInit(TIFFCIELabToRGB*, TIFFDisplay *, float*);
-extern void CPL_DLL TIFFCIELabToXYZ(TIFFCIELabToRGB *, uint32, int32, int32,
-			    float *, float *, float *);
-extern void CPL_DLL TIFFXYZToRGB(TIFFCIELabToRGB *, float, float, float,
-			 uint32 *, uint32 *, uint32 *);
-
-extern int CPL_DLL TIFFYCbCrToRGBInit(TIFFYCbCrToRGB*, float*, float*);
-extern void CPL_DLL TIFFYCbCrtoRGB(TIFFYCbCrToRGB *, uint32, int32, int32,
-			   uint32 *, uint32 *, uint32 *);
-
-#if defined(c_plusplus) || defined(__cplusplus)
-}
-#endif
-
-#endif /* _TIFFIO_ */
-
-/* vim: set ts=8 sts=8 sw=8 noet: */
diff --git a/src/tiff/tiffiop.h b/src/tiff/tiffiop.h
deleted file mode 100644
index 182eed8..0000000
--- a/src/tiff/tiffiop.h
+++ /dev/null
@@ -1,323 +0,0 @@
-/* $Id: tiffiop.h 4825 2006-08-16 13:01:53Z lubia $ */
-
-/*
- * Copyright (c) 1988-1997 Sam Leffler
- * Copyright (c) 1991-1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and 
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- * 
- * 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 SAM LEFFLER OR SILICON GRAPHICS 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.
- */
-
-#ifndef _TIFFIOP_
-#define	_TIFFIOP_
-/*
- * ``Library-private'' definitions.
- */
-
-#include "tif_config.h"
-
-#ifdef HAVE_FCNTL_H
-# include <fcntl.h>
-#endif
-
-#ifdef HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-
-#ifdef HAVE_STRING_H
-# include <string.h>
-#endif
-
-#ifdef HAVE_ASSERT_H
-# include <assert.h>
-#else
-# define assert(x) 
-#endif
-
-#ifdef HAVE_SEARCH_H
-# include <search.h>
-#else
-extern void *lfind(const void *, const void *, size_t *, size_t,
-		   int (*)(const void *, const void *));
-#endif
-
-#include "tiffio.h"
-#include "tif_dir.h"
-
-#ifndef STRIP_SIZE_DEFAULT
-# define STRIP_SIZE_DEFAULT 8192
-#endif
-
-#define    streq(a,b)      (strcmp(a,b) == 0)
-
-#ifndef TRUE
-#define	TRUE	1
-#define	FALSE	0
-#endif
-
-typedef struct client_info {
-    struct client_info *next;
-    void      *data;
-    char      *name;
-} TIFFClientInfoLink;
-
-/*
- * Typedefs for ``method pointers'' used internally.
- */
-typedef	unsigned char tidataval_t;	/* internal image data value type */
-typedef	tidataval_t* tidata_t;		/* reference to internal image data */
-
-typedef	void (*TIFFVoidMethod)(TIFF*);
-typedef	int (*TIFFBoolMethod)(TIFF*);
-typedef	int (*TIFFPreMethod)(TIFF*, tsample_t);
-typedef	int (*TIFFCodeMethod)(TIFF*, tidata_t, tsize_t, tsample_t);
-typedef	int (*TIFFSeekMethod)(TIFF*, uint32);
-typedef	void (*TIFFPostMethod)(TIFF*, tidata_t, tsize_t);
-typedef	uint32 (*TIFFStripMethod)(TIFF*, uint32);
-typedef	void (*TIFFTileMethod)(TIFF*, uint32*, uint32*);
-
-struct tiff {
-	char*		tif_name;	/* name of open file */
-	int		tif_fd;		/* open file descriptor */
-	int		tif_mode;	/* open mode (O_*) */
-	uint32		tif_flags;
-#define	TIFF_FILLORDER		0x0003	/* natural bit fill order for machine */
-#define	TIFF_DIRTYHEADER	0x0004	/* header must be written on close */
-#define	TIFF_DIRTYDIRECT	0x0008	/* current directory must be written */
-#define	TIFF_BUFFERSETUP	0x0010	/* data buffers setup */
-#define	TIFF_CODERSETUP		0x0020	/* encoder/decoder setup done */
-#define	TIFF_BEENWRITING	0x0040	/* written 1+ scanlines to file */
-#define	TIFF_SWAB		0x0080	/* byte swap file information */
-#define	TIFF_NOBITREV		0x0100	/* inhibit bit reversal logic */
-#define	TIFF_MYBUFFER		0x0200	/* my raw data buffer; free on close */
-#define	TIFF_ISTILED		0x0400	/* file is tile, not strip- based */
-#define	TIFF_MAPPED		0x0800	/* file is mapped into memory */
-#define	TIFF_POSTENCODE		0x1000	/* need call to postencode routine */
-#define	TIFF_INSUBIFD		0x2000	/* currently writing a subifd */
-#define	TIFF_UPSAMPLED		0x4000	/* library is doing data up-sampling */ 
-#define	TIFF_STRIPCHOP		0x8000	/* enable strip chopping support */
-#define	TIFF_HEADERONLY		0x10000	/* read header only, do not process */
-					/* the first directory */
-	toff_t		tif_diroff;	/* file offset of current directory */
-	toff_t		tif_nextdiroff;	/* file offset of following directory */
-	toff_t*		tif_dirlist;	/* list of offsets to already seen */
-					/* directories to prevent IFD looping */
-	uint16		tif_dirnumber;  /* number of already seen directories */
-	TIFFDirectory	tif_dir;	/* internal rep of current directory */
-	TIFFHeader	tif_header;	/* file's header block */
-	const int*	tif_typeshift;	/* data type shift counts */
-	const long*	tif_typemask;	/* data type masks */
-	uint32		tif_row;	/* current scanline */
-	tdir_t		tif_curdir;	/* current directory (index) */
-	tstrip_t	tif_curstrip;	/* current strip for read/write */
-	toff_t		tif_curoff;	/* current offset for read/write */
-	toff_t		tif_dataoff;	/* current offset for writing dir */
-/* SubIFD support */
-	uint16		tif_nsubifd;	/* remaining subifds to write */
-	toff_t		tif_subifdoff;	/* offset for patching SubIFD link */
-/* tiling support */
-	uint32 		tif_col;	/* current column (offset by row too) */
-	ttile_t		tif_curtile;	/* current tile for read/write */
-	tsize_t		tif_tilesize;	/* # of bytes in a tile */
-/* compression scheme hooks */
-	int		tif_decodestatus;
-	TIFFBoolMethod	tif_setupdecode;/* called once before predecode */
-	TIFFPreMethod	tif_predecode;	/* pre- row/strip/tile decoding */
-	TIFFBoolMethod	tif_setupencode;/* called once before preencode */
-	int		tif_encodestatus;
-	TIFFPreMethod	tif_preencode;	/* pre- row/strip/tile encoding */
-	TIFFBoolMethod	tif_postencode;	/* post- row/strip/tile encoding */
-	TIFFCodeMethod	tif_decoderow;	/* scanline decoding routine */
-	TIFFCodeMethod	tif_encoderow;	/* scanline encoding routine */
-	TIFFCodeMethod	tif_decodestrip;/* strip decoding routine */
-	TIFFCodeMethod	tif_encodestrip;/* strip encoding routine */
-	TIFFCodeMethod	tif_decodetile;	/* tile decoding routine */
-	TIFFCodeMethod	tif_encodetile;	/* tile encoding routine */
-	TIFFVoidMethod	tif_close;	/* cleanup-on-close routine */
-	TIFFSeekMethod	tif_seek;	/* position within a strip routine */
-	TIFFVoidMethod	tif_cleanup;	/* cleanup state routine */
-	TIFFStripMethod	tif_defstripsize;/* calculate/constrain strip size */
-	TIFFTileMethod	tif_deftilesize;/* calculate/constrain tile size */
-	tidata_t	tif_data;	/* compression scheme private data */
-/* input/output buffering */
-	tsize_t		tif_scanlinesize;/* # of bytes in a scanline */
-	tsize_t		tif_scanlineskew;/* scanline skew for reading strips */
-	tidata_t	tif_rawdata;	/* raw data buffer */
-	tsize_t		tif_rawdatasize;/* # of bytes in raw data buffer */
-	tidata_t	tif_rawcp;	/* current spot in raw buffer */
-	tsize_t		tif_rawcc;	/* bytes unread from raw buffer */
-/* memory-mapped file support */
-	tidata_t	tif_base;	/* base of mapped file */
-	toff_t		tif_size;	/* size of mapped file region (bytes) */
-	TIFFMapFileProc	tif_mapproc;	/* map file method */
-	TIFFUnmapFileProc tif_unmapproc;/* unmap file method */
-/* input/output callback methods */
-	thandle_t	tif_clientdata;	/* callback parameter */
-	TIFFReadWriteProc tif_readproc;	/* read method */
-	TIFFReadWriteProc tif_writeproc;/* write method */
-	TIFFSeekProc	tif_seekproc;	/* lseek method */
-	TIFFCloseProc	tif_closeproc;	/* close method */
-	TIFFSizeProc	tif_sizeproc;	/* filesize method */
-/* post-decoding support */
-	TIFFPostMethod	tif_postdecode;	/* post decoding routine */
-/* tag support */
-	TIFFFieldInfo**	tif_fieldinfo;	/* sorted table of registered tags */
-	size_t		tif_nfields;	/* # entries in registered tag table */
-	const TIFFFieldInfo *tif_foundfield;/* cached pointer to already found tag */
-        TIFFTagMethods  tif_tagmethods; /* tag get/set/print routines */
-        TIFFClientInfoLink *tif_clientinfo; /* extra client information. */
-};
-
-#define	isPseudoTag(t)	(t > 0xffff)	/* is tag value normal or pseudo */
-
-#define	isTiled(tif)	(((tif)->tif_flags & TIFF_ISTILED) != 0)
-#define	isMapped(tif)	(((tif)->tif_flags & TIFF_MAPPED) != 0)
-#define	isFillOrder(tif, o)	(((tif)->tif_flags & (o)) != 0)
-#define	isUpSampled(tif)	(((tif)->tif_flags & TIFF_UPSAMPLED) != 0)
-#define	TIFFReadFile(tif, buf, size) \
-	((*(tif)->tif_readproc)((tif)->tif_clientdata,buf,size))
-#define	TIFFWriteFile(tif, buf, size) \
-	((*(tif)->tif_writeproc)((tif)->tif_clientdata,buf,size))
-#define	TIFFSeekFile(tif, off, whence) \
-	((*(tif)->tif_seekproc)((tif)->tif_clientdata,(toff_t)(off),whence))
-#define	TIFFCloseFile(tif) \
-	((*(tif)->tif_closeproc)((tif)->tif_clientdata))
-#define	TIFFGetFileSize(tif) \
-	((*(tif)->tif_sizeproc)((tif)->tif_clientdata))
-#define	TIFFMapFileContents(tif, paddr, psize) \
-	((*(tif)->tif_mapproc)((tif)->tif_clientdata,paddr,psize))
-#define	TIFFUnmapFileContents(tif, addr, size) \
-	((*(tif)->tif_unmapproc)((tif)->tif_clientdata,addr,size))
-
-/*
- * Default Read/Seek/Write definitions.
- */
-#ifndef ReadOK
-#define	ReadOK(tif, buf, size) \
-	(TIFFReadFile(tif, (tdata_t) buf, (tsize_t)(size)) == (tsize_t)(size))
-#endif
-#ifndef SeekOK
-#define	SeekOK(tif, off) \
-	(TIFFSeekFile(tif, (toff_t) off, SEEK_SET) == (toff_t) off)
-#endif
-#ifndef WriteOK
-#define	WriteOK(tif, buf, size) \
-	(TIFFWriteFile(tif, (tdata_t) buf, (tsize_t) size) == (tsize_t) size)
-#endif
-
-/* NB: the uint32 casts are to silence certain ANSI-C compilers */
-#define TIFFhowmany(x, y) ((((uint32)(x))+(((uint32)(y))-1))/((uint32)(y)))
-#define TIFFhowmany8(x) (((x)&0x07)?((uint32)(x)>>3)+1:(uint32)(x)>>3)
-#define	TIFFroundup(x, y) (TIFFhowmany(x,y)*(y))
-
-#define TIFFmax(A,B) ((A)>(B)?(A):(B))
-#define TIFFmin(A,B) ((A)<(B)?(A):(B))
-
-#define TIFFArrayCount(a) (sizeof (a) / sizeof ((a)[0]))
-
-#if defined(__cplusplus)
-extern "C" {
-#endif
-extern	int _TIFFgetMode(const char*, const char*);
-extern	int _TIFFNoRowEncode(TIFF*, tidata_t, tsize_t, tsample_t);
-extern	int _TIFFNoStripEncode(TIFF*, tidata_t, tsize_t, tsample_t);
-extern	int _TIFFNoTileEncode(TIFF*, tidata_t, tsize_t, tsample_t);
-extern	int _TIFFNoRowDecode(TIFF*, tidata_t, tsize_t, tsample_t);
-extern	int _TIFFNoStripDecode(TIFF*, tidata_t, tsize_t, tsample_t);
-extern	int _TIFFNoTileDecode(TIFF*, tidata_t, tsize_t, tsample_t);
-extern	void _TIFFNoPostDecode(TIFF*, tidata_t, tsize_t);
-extern  int  _TIFFNoPreCode (TIFF*, tsample_t); 
-extern	int _TIFFNoSeek(TIFF*, uint32);
-extern	void _TIFFSwab16BitData(TIFF*, tidata_t, tsize_t);
-extern	void _TIFFSwab24BitData(TIFF*, tidata_t, tsize_t);
-extern	void _TIFFSwab32BitData(TIFF*, tidata_t, tsize_t);
-extern	void _TIFFSwab64BitData(TIFF*, tidata_t, tsize_t);
-extern	int TIFFFlushData1(TIFF*);
-extern	int TIFFDefaultDirectory(TIFF*);
-extern	void _TIFFSetDefaultCompressionState(TIFF*);
-extern	int TIFFSetCompressionScheme(TIFF*, int);
-extern	int TIFFSetDefaultCompressionState(TIFF*);
-extern	uint32 _TIFFDefaultStripSize(TIFF*, uint32);
-extern	void _TIFFDefaultTileSize(TIFF*, uint32*, uint32*);
-extern	int _TIFFDataSize(TIFFDataType);
-
-extern	void _TIFFsetByteArray(void**, void*, uint32);
-extern	void _TIFFsetString(char**, char*);
-extern	void _TIFFsetShortArray(uint16**, uint16*, uint32);
-extern	void _TIFFsetLongArray(uint32**, uint32*, uint32);
-extern	void _TIFFsetFloatArray(float**, float*, uint32);
-extern	void _TIFFsetDoubleArray(double**, double*, uint32);
-
-extern	void _TIFFprintAscii(FILE*, const char*);
-extern	void _TIFFprintAsciiTag(FILE*, const char*, const char*);
-
-extern	TIFFErrorHandler _TIFFwarningHandler;
-extern	TIFFErrorHandler _TIFFerrorHandler;
-extern	TIFFErrorHandlerExt _TIFFwarningHandlerExt;
-extern	TIFFErrorHandlerExt _TIFFerrorHandlerExt;
-
-extern	tdata_t _TIFFCheckMalloc(TIFF*, size_t, size_t, const char*);
-
-extern	int TIFFInitDumpMode(TIFF*, int);
-#ifdef PACKBITS_SUPPORT
-extern	int TIFFInitPackBits(TIFF*, int);
-#endif
-#ifdef CCITT_SUPPORT
-extern	int TIFFInitCCITTRLE(TIFF*, int), TIFFInitCCITTRLEW(TIFF*, int);
-extern	int TIFFInitCCITTFax3(TIFF*, int), TIFFInitCCITTFax4(TIFF*, int);
-#endif
-#ifdef THUNDER_SUPPORT
-extern	int TIFFInitThunderScan(TIFF*, int);
-#endif
-#ifdef NEXT_SUPPORT
-extern	int TIFFInitNeXT(TIFF*, int);
-#endif
-#ifdef LZW_SUPPORT
-extern	int TIFFInitLZW(TIFF*, int);
-#endif
-#ifdef OJPEG_SUPPORT
-extern	int TIFFInitOJPEG(TIFF*, int);
-#endif
-#ifdef JPEG_SUPPORT
-extern	int TIFFInitJPEG(TIFF*, int);
-#endif
-#ifdef JBIG_SUPPORT
-extern	int TIFFInitJBIG(TIFF*, int);
-#endif
-#ifdef ZIP_SUPPORT
-extern	int TIFFInitZIP(TIFF*, int);
-#endif
-#ifdef PIXARLOG_SUPPORT
-extern	int TIFFInitPixarLog(TIFF*, int);
-#endif
-#ifdef LOGLUV_SUPPORT
-extern	int TIFFInitSGILog(TIFF*, int);
-#endif
-#ifdef VMS
-extern	const TIFFCodec _TIFFBuiltinCODECS[];
-#else
-extern	TIFFCodec _TIFFBuiltinCODECS[];
-#endif
-
-#if defined(__cplusplus)
-}
-#endif
-#endif /* _TIFFIOP_ */
-
-/* vim: set ts=8 sts=8 sw=8 noet: */
diff --git a/src/tiff/tiffvers.h b/src/tiff/tiffvers.h
deleted file mode 100644
index deb6d97..0000000
--- a/src/tiff/tiffvers.h
+++ /dev/null
@@ -1,9 +0,0 @@
-#define TIFFLIB_VERSION_STR "LIBTIFF, Version 3.8.2\nCopyright (c) 1988-1996 Sam Leffler\nCopyright (c) 1991-1996 Silicon Graphics, Inc."
-/*
- * This define can be used in code that requires
- * compilation-related definitions specific to a
- * version or versions of the library.  Runtime
- * version checking should be done based on the
- * string returned by TIFFGetVersion.
- */
-#define TIFFLIB_VERSION 20060323
diff --git a/src/tiff/uvcode.h b/src/tiff/uvcode.h
deleted file mode 100644
index 68f9f18..0000000
--- a/src/tiff/uvcode.h
+++ /dev/null
@@ -1,173 +0,0 @@
-/* Version 1.0 generated April 7, 1997 by Greg Ward Larson, SGI */
-#define UV_SQSIZ	(float)0.003500
-#define UV_NDIVS	16289
-#define UV_VSTART	(float)0.016940
-#define UV_NVS		163
-static struct {
-	float	ustart;
-	short	nus, ncum;
-}	uv_row[UV_NVS] = {
-	{ (float)0.247663,	4,	0 },
-	{ (float)0.243779,	6,	4 },
-	{ (float)0.241684,	7,	10 },
-	{ (float)0.237874,	9,	17 },
-	{ (float)0.235906,	10,	26 },
-	{ (float)0.232153,	12,	36 },
-	{ (float)0.228352,	14,	48 },
-	{ (float)0.226259,	15,	62 },
-	{ (float)0.222371,	17,	77 },
-	{ (float)0.220410,	18,	94 },
-	{ (float)0.214710,	21,	112 },
-	{ (float)0.212714,	22,	133 },
-	{ (float)0.210721,	23,	155 },
-	{ (float)0.204976,	26,	178 },
-	{ (float)0.202986,	27,	204 },
-	{ (float)0.199245,	29,	231 },
-	{ (float)0.195525,	31,	260 },
-	{ (float)0.193560,	32,	291 },
-	{ (float)0.189878,	34,	323 },
-	{ (float)0.186216,	36,	357 },
-	{ (float)0.186216,	36,	393 },
-	{ (float)0.182592,	38,	429 },
-	{ (float)0.179003,	40,	467 },
-	{ (float)0.175466,	42,	507 },
-	{ (float)0.172001,	44,	549 },
-	{ (float)0.172001,	44,	593 },
-	{ (float)0.168612,	46,	637 },
-	{ (float)0.168612,	46,	683 },
-	{ (float)0.163575,	49,	729 },
-	{ (float)0.158642,	52,	778 },
-	{ (float)0.158642,	52,	830 },
-	{ (float)0.158642,	52,	882 },
-	{ (float)0.153815,	55,	934 },
-	{ (float)0.153815,	55,	989 },
-	{ (float)0.149097,	58,	1044 },
-	{ (float)0.149097,	58,	1102 },
-	{ (float)0.142746,	62,	1160 },
-	{ (float)0.142746,	62,	1222 },
-	{ (float)0.142746,	62,	1284 },
-	{ (float)0.138270,	65,	1346 },
-	{ (float)0.138270,	65,	1411 },
-	{ (float)0.138270,	65,	1476 },
-	{ (float)0.132166,	69,	1541 },
-	{ (float)0.132166,	69,	1610 },
-	{ (float)0.126204,	73,	1679 },
-	{ (float)0.126204,	73,	1752 },
-	{ (float)0.126204,	73,	1825 },
-	{ (float)0.120381,	77,	1898 },
-	{ (float)0.120381,	77,	1975 },
-	{ (float)0.120381,	77,	2052 },
-	{ (float)0.120381,	77,	2129 },
-	{ (float)0.112962,	82,	2206 },
-	{ (float)0.112962,	82,	2288 },
-	{ (float)0.112962,	82,	2370 },
-	{ (float)0.107450,	86,	2452 },
-	{ (float)0.107450,	86,	2538 },
-	{ (float)0.107450,	86,	2624 },
-	{ (float)0.107450,	86,	2710 },
-	{ (float)0.100343,	91,	2796 },
-	{ (float)0.100343,	91,	2887 },
-	{ (float)0.100343,	91,	2978 },
-	{ (float)0.095126,	95,	3069 },
-	{ (float)0.095126,	95,	3164 },
-	{ (float)0.095126,	95,	3259 },
-	{ (float)0.095126,	95,	3354 },
-	{ (float)0.088276,	100,	3449 },
-	{ (float)0.088276,	100,	3549 },
-	{ (float)0.088276,	100,	3649 },
-	{ (float)0.088276,	100,	3749 },
-	{ (float)0.081523,	105,	3849 },
-	{ (float)0.081523,	105,	3954 },
-	{ (float)0.081523,	105,	4059 },
-	{ (float)0.081523,	105,	4164 },
-	{ (float)0.074861,	110,	4269 },
-	{ (float)0.074861,	110,	4379 },
-	{ (float)0.074861,	110,	4489 },
-	{ (float)0.074861,	110,	4599 },
-	{ (float)0.068290,	115,	4709 },
-	{ (float)0.068290,	115,	4824 },
-	{ (float)0.068290,	115,	4939 },
-	{ (float)0.068290,	115,	5054 },
-	{ (float)0.063573,	119,	5169 },
-	{ (float)0.063573,	119,	5288 },
-	{ (float)0.063573,	119,	5407 },
-	{ (float)0.063573,	119,	5526 },
-	{ (float)0.057219,	124,	5645 },
-	{ (float)0.057219,	124,	5769 },
-	{ (float)0.057219,	124,	5893 },
-	{ (float)0.057219,	124,	6017 },
-	{ (float)0.050985,	129,	6141 },
-	{ (float)0.050985,	129,	6270 },
-	{ (float)0.050985,	129,	6399 },
-	{ (float)0.050985,	129,	6528 },
-	{ (float)0.050985,	129,	6657 },
-	{ (float)0.044859,	134,	6786 },
-	{ (float)0.044859,	134,	6920 },
-	{ (float)0.044859,	134,	7054 },
-	{ (float)0.044859,	134,	7188 },
-	{ (float)0.040571,	138,	7322 },
-	{ (float)0.040571,	138,	7460 },
-	{ (float)0.040571,	138,	7598 },
-	{ (float)0.040571,	138,	7736 },
-	{ (float)0.036339,	142,	7874 },
-	{ (float)0.036339,	142,	8016 },
-	{ (float)0.036339,	142,	8158 },
-	{ (float)0.036339,	142,	8300 },
-	{ (float)0.032139,	146,	8442 },
-	{ (float)0.032139,	146,	8588 },
-	{ (float)0.032139,	146,	8734 },
-	{ (float)0.032139,	146,	8880 },
-	{ (float)0.027947,	150,	9026 },
-	{ (float)0.027947,	150,	9176 },
-	{ (float)0.027947,	150,	9326 },
-	{ (float)0.023739,	154,	9476 },
-	{ (float)0.023739,	154,	9630 },
-	{ (float)0.023739,	154,	9784 },
-	{ (float)0.023739,	154,	9938 },
-	{ (float)0.019504,	158,	10092 },
-	{ (float)0.019504,	158,	10250 },
-	{ (float)0.019504,	158,	10408 },
-	{ (float)0.016976,	161,	10566 },
-	{ (float)0.016976,	161,	10727 },
-	{ (float)0.016976,	161,	10888 },
-	{ (float)0.016976,	161,	11049 },
-	{ (float)0.012639,	165,	11210 },
-	{ (float)0.012639,	165,	11375 },
-	{ (float)0.012639,	165,	11540 },
-	{ (float)0.009991,	168,	11705 },
-	{ (float)0.009991,	168,	11873 },
-	{ (float)0.009991,	168,	12041 },
-	{ (float)0.009016,	170,	12209 },
-	{ (float)0.009016,	170,	12379 },
-	{ (float)0.009016,	170,	12549 },
-	{ (float)0.006217,	173,	12719 },
-	{ (float)0.006217,	173,	12892 },
-	{ (float)0.005097,	175,	13065 },
-	{ (float)0.005097,	175,	13240 },
-	{ (float)0.005097,	175,	13415 },
-	{ (float)0.003909,	177,	13590 },
-	{ (float)0.003909,	177,	13767 },
-	{ (float)0.002340,	177,	13944 },
-	{ (float)0.002389,	170,	14121 },
-	{ (float)0.001068,	164,	14291 },
-	{ (float)0.001653,	157,	14455 },
-	{ (float)0.000717,	150,	14612 },
-	{ (float)0.001614,	143,	14762 },
-	{ (float)0.000270,	136,	14905 },
-	{ (float)0.000484,	129,	15041 },
-	{ (float)0.001103,	123,	15170 },
-	{ (float)0.001242,	115,	15293 },
-	{ (float)0.001188,	109,	15408 },
-	{ (float)0.001011,	103,	15517 },
-	{ (float)0.000709,	97,	15620 },
-	{ (float)0.000301,	89,	15717 },
-	{ (float)0.002416,	82,	15806 },
-	{ (float)0.003251,	76,	15888 },
-	{ (float)0.003246,	69,	15964 },
-	{ (float)0.004141,	62,	16033 },
-	{ (float)0.005963,	55,	16095 },
-	{ (float)0.008839,	47,	16150 },
-	{ (float)0.010490,	40,	16197 },
-	{ (float)0.016994,	31,	16237 },
-	{ (float)0.023659,	21,	16268 },
-};
diff --git a/src/tiff/xtiff.c b/src/tiff/xtiff.c
deleted file mode 100644
index b826175..0000000
--- a/src/tiff/xtiff.c
+++ /dev/null
@@ -1,198 +0,0 @@
-/*
- * xtiff.c
- *
- * Extended TIFF Directory GEO Tag Support.
- *
- *  You may use this file as a template to add your own
- *  extended tags to the library. Only the parts of the code
- *  marked with "XXX" require modification.
- *
- *  Author: Niles D. Ritter
- *
- *  Revisions:
- *    18 Sep 1995   -- Deprecated Integraph Matrix tag with new one.
- *                     Backward compatible support provided.  --NDR.
- */
- 
-#include "xtiffio.h"
-#include <stdio.h>
-
-/*  Tiff info structure.
- *
- *     Entry format:
- *        { TAGNUMBER, ReadCount, WriteCount, DataType, FIELDNUM, 
- *          OkToChange, PassDirCountOnSet, AsciiName }
- *
- *     For ReadCount, WriteCount, -1 = unknown.
- */
-
-static const TIFFFieldInfo xtiffFieldInfo[] = {
-  
-  /* XXX Insert Your tags here */
-    { TIFFTAG_GEOPIXELSCALE,	-1,-1, TIFF_DOUBLE,	FIELD_CUSTOM,
-      TRUE,	TRUE,	"GeoPixelScale" },
-    { TIFFTAG_INTERGRAPH_MATRIX,-1,-1, TIFF_DOUBLE,	FIELD_CUSTOM,
-      TRUE,	TRUE,	"Intergraph TransformationMatrix" },
-    { TIFFTAG_GEOTRANSMATRIX,	-1,-1, TIFF_DOUBLE,	FIELD_CUSTOM,
-      TRUE,	TRUE,	"GeoTransformationMatrix" },
-    { TIFFTAG_GEOTIEPOINTS,	-1,-1, TIFF_DOUBLE,	FIELD_CUSTOM,
-      TRUE,	TRUE,	"GeoTiePoints" },
-    { TIFFTAG_GEOKEYDIRECTORY,-1,-1, TIFF_SHORT,	FIELD_CUSTOM,
-      TRUE,	TRUE,	"GeoKeyDirectory" },
-    { TIFFTAG_GEODOUBLEPARAMS,	-1,-1, TIFF_DOUBLE,	FIELD_CUSTOM,
-      TRUE,	TRUE,	"GeoDoubleParams" },
-    { TIFFTAG_GEOASCIIPARAMS,	-1,-1, TIFF_ASCII,	FIELD_CUSTOM,
-      TRUE,	FALSE,	"GeoASCIIParams" },
-#ifdef JPL_TAG_SUPPORT
-    { TIFFTAG_JPL_CARTO_IFD,	 1, 1, TIFF_LONG,	FIELD_CUSTOM,
-      TRUE,	TRUE,	"JPL Carto IFD offset" },  /** Don't use this! **/
-#endif
-};
-
-#define	N(a)	(sizeof (a) / sizeof (a[0]))
-static void _XTIFFLocalDefaultDirectory(TIFF *tif)
-{
-    /* Install the extended Tag field info */
-    TIFFMergeFieldInfo(tif, xtiffFieldInfo, N(xtiffFieldInfo));
-}
-
-
-/**********************************************************************
- *    Nothing below this line should need to be changed.
- **********************************************************************/
-
-static TIFFExtendProc _ParentExtender;
-
-/*
- *  This is the callback procedure, and is
- *  called by the DefaultDirectory method
- *  every time a new TIFF directory is opened.
- */
-
-static void
-_XTIFFDefaultDirectory(TIFF *tif)
-{
-    /* set up our own defaults */
-    _XTIFFLocalDefaultDirectory(tif);
-
-    /* Since an XTIFF client module may have overridden
-     * the default directory method, we call it now to
-     * allow it to set up the rest of its own methods.
-     */
-
-    if (_ParentExtender) 
-        (*_ParentExtender)(tif);
-}
-
-/*
- *  XTIFF Initializer -- sets up the callback
- *   procedure for the TIFF module.
- */
-
-static
-void _XTIFFInitialize(void)
-{
-    static int first_time=1;
-	
-    if (! first_time) return; /* Been there. Done that. */
-    first_time = 0;
-	
-    /* Grab the inherited method and install */
-    _ParentExtender = TIFFSetTagExtender(_XTIFFDefaultDirectory);
-}
-
-
-/**
- * GeoTIFF compatible TIFF file open function.
- *
- * @param name The filename of a TIFF file to open.
- * @param mode The open mode ("r", "w" or "a").
- *
- * @return a TIFF * for the file, or NULL if the open failed.
- *
-This function is used to open GeoTIFF files instead of TIFFOpen() from
-libtiff.  Internally it calls TIFFOpen(), but sets up some extra hooks
-so that GeoTIFF tags can be extracted from the file.  If XTIFFOpen() isn't
-used, GTIFNew() won't work properly.  Files opened
-with XTIFFOpen() should be closed with XTIFFClose().
-
-The name of the file to be opened should be passed as <b>name</b>, and an
-opening mode ("r", "w" or "a") acceptable to TIFFOpen() should be passed as the
-<b>mode</b>.<p>
-
-If XTIFFOpen() fails it will return NULL.  Otherwise, normal TIFFOpen()
-error reporting steps will have already taken place.<p>
- */
-
-TIFF*
-XTIFFOpen(const char* name, const char* mode)
-{
-    TIFF *tif;
-
-    /* Set up the callback */
-    _XTIFFInitialize();	
-	
-    /* Open the file; the callback will set everything up
-     */
-    tif = TIFFOpen(name, mode);
-    if (!tif) return tif;
-	
-    return tif;
-}
-
-TIFF*
-XTIFFFdOpen(int fd, const char* name, const char* mode)
-{
-    TIFF *tif;
-
-    /* Set up the callback */
-    _XTIFFInitialize();	
-
-    /* Open the file; the callback will set everything up
-     */
-    tif = TIFFFdOpen(fd, name, mode);
-    if (!tif) return tif;
-	
-    return tif;
-}
-
-TIFF*
-XTIFFClientOpen(const char* name, const char* mode, thandle_t thehandle,
-	    TIFFReadWriteProc RWProc, TIFFReadWriteProc RWProc2,
-	    TIFFSeekProc SProc, TIFFCloseProc CProc,
-	    TIFFSizeProc SzProc,
-	    TIFFMapFileProc MFProvc, TIFFUnmapFileProc UMFProc )
-{
-    TIFF *tif;
-    
-    /* Set up the callback */
-    _XTIFFInitialize();	
-    
-    /* Open the file; the callback will set everything up
-     */
-    tif = TIFFClientOpen(name, mode, thehandle,
-                         RWProc, RWProc2,
-                         SProc, CProc,
-                         SzProc,
-                         MFProvc, UMFProc);
-    
-    if (!tif) return tif;
-    
-    return tif;
-}
-
-/**
- * Close a file opened with XTIFFOpen().
- *
- * @param tif The file handle returned by XTIFFOpen().
- * 
- * If a GTIF structure was created with GTIFNew()
- * for this file, it should be freed with GTIFFree()
- * <i>before</i> calling XTIFFClose().
-*/
-
-void
-XTIFFClose(TIFF *tif)
-{
-    TIFFClose(tif);
-}
diff --git a/src/tiff/xtiffio.h b/src/tiff/xtiffio.h
deleted file mode 100644
index f088c84..0000000
--- a/src/tiff/xtiffio.h
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- *  xtiffio.h -- Public interface to Extended GEO TIFF tags
- *
- *    written by: Niles D. Ritter
- */
-
-#ifndef __xtiffio_h
-#define __xtiffio_h
-
-#include "cpl_serv.h"
-#include "tiffio.h"
-
-/**
- * \file xtiffio.h
- *
- * Definitions relating GeoTIFF functions from geotiff.h to the TIFF
- * library (usually libtiff).
- */
-
-/* 
- *  Define public Tag names and values here 
- */
-
-/* tags 33550 is a private tag registered to SoftDesk, Inc */
-#define TIFFTAG_GEOPIXELSCALE       33550
-/* tags 33920-33921 are private tags registered to Intergraph, Inc */
-#define TIFFTAG_INTERGRAPH_MATRIX    33920   /* $use TIFFTAG_GEOTRANSMATRIX ! */
-#define TIFFTAG_GEOTIEPOINTS         33922
-/* tags 34263-34264 are private tags registered to NASA-JPL Carto Group */
-#ifdef JPL_TAG_SUPPORT
-#define TIFFTAG_JPL_CARTO_IFD        34263    /* $use GeoProjectionInfo ! */
-#endif
-#define TIFFTAG_GEOTRANSMATRIX       34264    /* New Matrix Tag replaces 33920 */
-/* tags 34735-3438 are private tags registered to SPOT Image, Inc */
-#define TIFFTAG_GEOKEYDIRECTORY      34735
-#define TIFFTAG_GEODOUBLEPARAMS      34736
-#define TIFFTAG_GEOASCIIPARAMS       34737
-
-/* 
- *  Define Printing method flags. These
- *  flags may be passed in to TIFFPrintDirectory() to
- *  indicate that those particular field values should
- *  be printed out in full, rather than just an indicator
- *  of whether they are present or not.
- */
-#define	TIFFPRINT_GEOKEYDIRECTORY	0x80000000
-#define	TIFFPRINT_GEOKEYPARAMS		0x40000000
-
-/**********************************************************************
- *    Nothing below this line should need to be changed by the user.
- **********************************************************************/
-
-#if defined(__cplusplus)
-extern "C" {
-#endif
-
-extern TIFF CPL_DLL * XTIFFOpen(const char* name, const char* mode);
-extern TIFF CPL_DLL * XTIFFFdOpen(int fd, const char* name, const char* mode);
-extern void CPL_DLL XTIFFClose(TIFF *tif);
-
-extern TIFF CPL_DLL * XTIFFClientOpen(const char* name, const char* mode, 
-                                      thandle_t thehandle,
-                                      TIFFReadWriteProc, TIFFReadWriteProc,
-                                      TIFFSeekProc, TIFFCloseProc,
-                                      TIFFSizeProc,
-                                      TIFFMapFileProc, TIFFUnmapFileProc);
-#if defined(__cplusplus)
-}
-#endif
-
-#endif /* __xtiffio_h */
-
diff --git a/src/tiff/xtiffiop.h b/src/tiff/xtiffiop.h
deleted file mode 100644
index 1408bf5..0000000
--- a/src/tiff/xtiffiop.h
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Private Extended TIFF library interface.
- *
- *  uses private LIBTIFF interface.
- *
- *  written by: Niles D. Ritter
- *
- *  Revisions:
- *    18 Sep 1995   -- Deprecated Integraph Matrix tag with new one.
- *                     Backward compatible support provided.  --NDR.
- *
- */
-
-#ifndef __xtiffiop_h
-#define __xtiffiop_h
-
-#include "tiffiop.h"
-#include "xtiffio.h"
-
-/**********************************************************************
- *               User Configuration
- **********************************************************************/
-
-/* Define number of extended tags here */
-#define NUM_XFIELD 8
-#define XFIELD_BASE (FIELD_LAST-NUM_XFIELD)
-
-/*  Define Fields here  */
-#define	FIELD_GEOPIXELSCALE     (XFIELD_BASE+0)
-#define	FIELD_INTERGRAPH_MATRIX (XFIELD_BASE+1)
-#define	FIELD_GEOTRANSMATRIX    (XFIELD_BASE+2)
-#define	FIELD_GEOTIEPOINTS      (XFIELD_BASE+3)
-#define	FIELD_GEOASCIIPARAMS    (XFIELD_BASE+4)
-#define	FIELD_GEOKEYDIRECTORY   (XFIELD_BASE+5)
-#define	FIELD_GEODOUBLEPARAMS   (XFIELD_BASE+6)
-#ifdef JPL_TAG_SUPPORT
-#define	FIELD_JPL_CARTO_IFD     (XFIELD_BASE+7)   /* unsupported */
-#endif
-
-/* Used for GEO tags having variable counts */
-typedef enum {
-	GEO_NUM_DIR=0,
-	GEO_NUM_DOUBLE,
-	GEO_NUM_TIEPOINT,
-	GEO_NUM_PIXELSCALE,
-	GEO_NUM_MATRIX,
-	GEO_NUM_IG_MATRIX,
-	GEO_NUM_TAGS
-} geo_count_t;
-
-/* Define Private directory structure here */
-struct XTIFFDirectory {
-	uint16	 xd_geodimensions[GEO_NUM_TAGS]; /* dir-count for the geo tags */
-	uint16*  xd_geokeydirectory;
-	double*  xd_geodoubleparams;
-	char*    xd_geoasciiparams;
-	double*  xd_geotiepoints;
-	double*  xd_geopixelscale;
-	double*  xd_geomatrix;
-	double*  xd_intergraph_matrix;
-#ifdef JPL_TAG_SUPPORT
-	uint32   xd_jpl_ifd_offset; /* dont use */
-#endif
-};
-typedef struct XTIFFDirectory XTIFFDirectory;
-
-/**********************************************************************
- *    Nothing below this line should need to be changed by the user.
- **********************************************************************/
-
-struct xtiff {
-	TIFF 		*xtif_tif;	/* parent TIFF pointer */
-	uint32		xtif_flags;
-#define       XTIFFP_PRINT   0x00000001
-	XTIFFDirectory	xtif_dir;	/* internal rep of current directory */
-	TIFFVSetMethod	xtif_vsetfield;	/* inherited tag set routine */
-	TIFFVGetMethod	xtif_vgetfield;	/* inherited tag get routine */
-	TIFFPrintMethod	xtif_printdir;  /* inherited dir print method */
-};
-typedef struct xtiff xtiff;
-
-
-#define PARENT(xt,pmember) ((xt)->xtif_ ## pmember) 
-#define TIFFMEMBER(tf,pmember) ((tf)->tif_ ## pmember) 
-#define XTIFFDIR(tif) ((xtiff *)TIFFMEMBER(tif,clientdir))
-	
-/* Extended TIFF flags */
-#define XTIFF_INITIALIZED 0x80000000
-	
-#endif /* __xtiffiop_h */
diff --git a/src/zlib/zconf.h b/src/zlib/zconf.h
deleted file mode 100644
index dfe938f..0000000
--- a/src/zlib/zconf.h
+++ /dev/null
@@ -1,332 +0,0 @@
-/* zconf.h -- configuration of the zlib compression library
- * Copyright (C) 1995-2005 Jean-loup Gailly.
- * For conditions of distribution and use, see copyright notice in zlib.h
- */
-
-/* @(#) $Id: zconf.h 4826 2006-08-16 13:11:54Z lubia $ */
-
-#ifndef ZCONF_H
-#define ZCONF_H
-
-/*
- * If you *really* need a unique prefix for all types and library functions,
- * compile with -DZ_PREFIX. The "standard" zlib should be compiled without it.
- */
-#ifdef Z_PREFIX
-#  define deflateInit_          z_deflateInit_
-#  define deflate               z_deflate
-#  define deflateEnd            z_deflateEnd
-#  define inflateInit_          z_inflateInit_
-#  define inflate               z_inflate
-#  define inflateEnd            z_inflateEnd
-#  define deflateInit2_         z_deflateInit2_
-#  define deflateSetDictionary  z_deflateSetDictionary
-#  define deflateCopy           z_deflateCopy
-#  define deflateReset          z_deflateReset
-#  define deflateParams         z_deflateParams
-#  define deflateBound          z_deflateBound
-#  define deflatePrime          z_deflatePrime
-#  define inflateInit2_         z_inflateInit2_
-#  define inflateSetDictionary  z_inflateSetDictionary
-#  define inflateSync           z_inflateSync
-#  define inflateSyncPoint      z_inflateSyncPoint
-#  define inflateCopy           z_inflateCopy
-#  define inflateReset          z_inflateReset
-#  define inflateBack           z_inflateBack
-#  define inflateBackEnd        z_inflateBackEnd
-#  define compress              z_compress
-#  define compress2             z_compress2
-#  define compressBound         z_compressBound
-#  define uncompress            z_uncompress
-#  define adler32               z_adler32
-#  define crc32                 z_crc32
-#  define get_crc_table         z_get_crc_table
-#  define zError                z_zError
-
-#  define alloc_func            z_alloc_func
-#  define free_func             z_free_func
-#  define in_func               z_in_func
-#  define out_func              z_out_func
-#  define Byte                  z_Byte
-#  define uInt                  z_uInt
-#  define uLong                 z_uLong
-#  define Bytef                 z_Bytef
-#  define charf                 z_charf
-#  define intf                  z_intf
-#  define uIntf                 z_uIntf
-#  define uLongf                z_uLongf
-#  define voidpf                z_voidpf
-#  define voidp                 z_voidp
-#endif
-
-#if defined(__MSDOS__) && !defined(MSDOS)
-#  define MSDOS
-#endif
-#if (defined(OS_2) || defined(__OS2__)) && !defined(OS2)
-#  define OS2
-#endif
-#if defined(_WINDOWS) && !defined(WINDOWS)
-#  define WINDOWS
-#endif
-#if defined(_WIN32) || defined(_WIN32_WCE) || defined(__WIN32__)
-#  ifndef WIN32
-#    define WIN32
-#  endif
-#endif
-#if (defined(MSDOS) || defined(OS2) || defined(WINDOWS)) && !defined(WIN32)
-#  if !defined(__GNUC__) && !defined(__FLAT__) && !defined(__386__)
-#    ifndef SYS16BIT
-#      define SYS16BIT
-#    endif
-#  endif
-#endif
-
-/*
- * Compile with -DMAXSEG_64K if the alloc function cannot allocate more
- * than 64k bytes at a time (needed on systems with 16-bit int).
- */
-#ifdef SYS16BIT
-#  define MAXSEG_64K
-#endif
-#ifdef MSDOS
-#  define UNALIGNED_OK
-#endif
-
-#ifdef __STDC_VERSION__
-#  ifndef STDC
-#    define STDC
-#  endif
-#  if __STDC_VERSION__ >= 199901L
-#    ifndef STDC99
-#      define STDC99
-#    endif
-#  endif
-#endif
-#if !defined(STDC) && (defined(__STDC__) || defined(__cplusplus))
-#  define STDC
-#endif
-#if !defined(STDC) && (defined(__GNUC__) || defined(__BORLANDC__))
-#  define STDC
-#endif
-#if !defined(STDC) && (defined(MSDOS) || defined(WINDOWS) || defined(WIN32))
-#  define STDC
-#endif
-#if !defined(STDC) && (defined(OS2) || defined(__HOS_AIX__))
-#  define STDC
-#endif
-
-#if defined(__OS400__) && !defined(STDC)    /* iSeries (formerly AS/400). */
-#  define STDC
-#endif
-
-#ifndef STDC
-#  ifndef const /* cannot use !defined(STDC) && !defined(const) on Mac */
-#    define const       /* note: need a more gentle solution here */
-#  endif
-#endif
-
-/* Some Mac compilers merge all .h files incorrectly: */
-#if defined(__MWERKS__)||defined(applec)||defined(THINK_C)||defined(__SC__)
-#  define NO_DUMMY_DECL
-#endif
-
-/* Maximum value for memLevel in deflateInit2 */
-#ifndef MAX_MEM_LEVEL
-#  ifdef MAXSEG_64K
-#    define MAX_MEM_LEVEL 8
-#  else
-#    define MAX_MEM_LEVEL 9
-#  endif
-#endif
-
-/* Maximum value for windowBits in deflateInit2 and inflateInit2.
- * WARNING: reducing MAX_WBITS makes minigzip unable to extract .gz files
- * created by gzip. (Files created by minigzip can still be extracted by
- * gzip.)
- */
-#ifndef MAX_WBITS
-#  define MAX_WBITS   15 /* 32K LZ77 window */
-#endif
-
-/* The memory requirements for deflate are (in bytes):
-            (1 << (windowBits+2)) +  (1 << (memLevel+9))
- that is: 128K for windowBits=15  +  128K for memLevel = 8  (default values)
- plus a few kilobytes for small objects. For example, if you want to reduce
- the default memory requirements from 256K to 128K, compile with
-     make CFLAGS="-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7"
- Of course this will generally degrade compression (there's no free lunch).
-
-   The memory requirements for inflate are (in bytes) 1 << windowBits
- that is, 32K for windowBits=15 (default value) plus a few kilobytes
- for small objects.
-*/
-
-                        /* Type declarations */
-
-#ifndef OF /* function prototypes */
-#  ifdef STDC
-#    define OF(args)  args
-#  else
-#    define OF(args)  ()
-#  endif
-#endif
-
-/* The following definitions for FAR are needed only for MSDOS mixed
- * model programming (small or medium model with some far allocations).
- * This was tested only with MSC; for other MSDOS compilers you may have
- * to define NO_MEMCPY in zutil.h.  If you don't need the mixed model,
- * just define FAR to be empty.
- */
-#ifdef SYS16BIT
-#  if defined(M_I86SM) || defined(M_I86MM)
-     /* MSC small or medium model */
-#    define SMALL_MEDIUM
-#    ifdef _MSC_VER
-#      define FAR _far
-#    else
-#      define FAR far
-#    endif
-#  endif
-#  if (defined(__SMALL__) || defined(__MEDIUM__))
-     /* Turbo C small or medium model */
-#    define SMALL_MEDIUM
-#    ifdef __BORLANDC__
-#      define FAR _far
-#    else
-#      define FAR far
-#    endif
-#  endif
-#endif
-
-#if defined(WINDOWS) || defined(WIN32)
-   /* If building or using zlib as a DLL, define ZLIB_DLL.
-    * This is not mandatory, but it offers a little performance increase.
-    */
-#  ifdef ZLIB_DLL
-#    if defined(WIN32) && (!defined(__BORLANDC__) || (__BORLANDC__ >= 0x500))
-#      ifdef ZLIB_INTERNAL
-#        define ZEXTERN extern __declspec(dllexport)
-#      else
-#        define ZEXTERN extern __declspec(dllimport)
-#      endif
-#    endif
-#  endif  /* ZLIB_DLL */
-   /* If building or using zlib with the WINAPI/WINAPIV calling convention,
-    * define ZLIB_WINAPI.
-    * Caution: the standard ZLIB1.DLL is NOT compiled using ZLIB_WINAPI.
-    */
-#  ifdef ZLIB_WINAPI
-#    ifdef FAR
-#      undef FAR
-#    endif
-#    include <windows.h>
-     /* No need for _export, use ZLIB.DEF instead. */
-     /* For complete Windows compatibility, use WINAPI, not __stdcall. */
-#    define ZEXPORT WINAPI
-#    ifdef WIN32
-#      define ZEXPORTVA WINAPIV
-#    else
-#      define ZEXPORTVA FAR CDECL
-#    endif
-#  endif
-#endif
-
-#if defined (__BEOS__)
-#  ifdef ZLIB_DLL
-#    ifdef ZLIB_INTERNAL
-#      define ZEXPORT   __declspec(dllexport)
-#      define ZEXPORTVA __declspec(dllexport)
-#    else
-#      define ZEXPORT   __declspec(dllimport)
-#      define ZEXPORTVA __declspec(dllimport)
-#    endif
-#  endif
-#endif
-
-#ifndef ZEXTERN
-#  define ZEXTERN extern
-#endif
-#ifndef ZEXPORT
-#  define ZEXPORT
-#endif
-#ifndef ZEXPORTVA
-#  define ZEXPORTVA
-#endif
-
-#ifndef FAR
-#  define FAR
-#endif
-
-#if !defined(__MACTYPES__)
-typedef unsigned char  Byte;  /* 8 bits */
-#endif
-typedef unsigned int   uInt;  /* 16 bits or more */
-typedef unsigned long  uLong; /* 32 bits or more */
-
-#ifdef SMALL_MEDIUM
-   /* Borland C/C++ and some old MSC versions ignore FAR inside typedef */
-#  define Bytef Byte FAR
-#else
-   typedef Byte  FAR Bytef;
-#endif
-typedef char  FAR charf;
-typedef int   FAR intf;
-typedef uInt  FAR uIntf;
-typedef uLong FAR uLongf;
-
-#ifdef STDC
-   typedef void const *voidpc;
-   typedef void FAR   *voidpf;
-   typedef void       *voidp;
-#else
-   typedef Byte const *voidpc;
-   typedef Byte FAR   *voidpf;
-   typedef Byte       *voidp;
-#endif
-
-#if 0           /* HAVE_UNISTD_H -- this line is updated by ./configure */
-#  include <sys/types.h> /* for off_t */
-#  include <unistd.h>    /* for SEEK_* and off_t */
-#  ifdef VMS
-#    include <unixio.h>   /* for off_t */
-#  endif
-#  define z_off_t off_t
-#endif
-#ifndef SEEK_SET
-#  define SEEK_SET        0       /* Seek from beginning of file.  */
-#  define SEEK_CUR        1       /* Seek from current position.  */
-#  define SEEK_END        2       /* Set file pointer to EOF plus "offset" */
-#endif
-#ifndef z_off_t
-#  define z_off_t long
-#endif
-
-#if defined(__OS400__)
-#  define NO_vsnprintf
-#endif
-
-#if defined(__MVS__)
-#  define NO_vsnprintf
-#  ifdef FAR
-#    undef FAR
-#  endif
-#endif
-
-/* MVS linker does not support external names larger than 8 bytes */
-#if defined(__MVS__)
-#   pragma map(deflateInit_,"DEIN")
-#   pragma map(deflateInit2_,"DEIN2")
-#   pragma map(deflateEnd,"DEEND")
-#   pragma map(deflateBound,"DEBND")
-#   pragma map(inflateInit_,"ININ")
-#   pragma map(inflateInit2_,"ININ2")
-#   pragma map(inflateEnd,"INEND")
-#   pragma map(inflateSync,"INSY")
-#   pragma map(inflateSetDictionary,"INSEDI")
-#   pragma map(compressBound,"CMBND")
-#   pragma map(inflate_table,"INTABL")
-#   pragma map(inflate_fast,"INFA")
-#   pragma map(inflate_copyright,"INCOPY")
-#endif
-
-#endif /* ZCONF_H */
diff --git a/src/zlib/zlib.h b/src/zlib/zlib.h
deleted file mode 100644
index 62d0e46..0000000
--- a/src/zlib/zlib.h
+++ /dev/null
@@ -1,1357 +0,0 @@
-/* zlib.h -- interface of the 'zlib' general purpose compression library
-  version 1.2.3, July 18th, 2005
-
-  Copyright (C) 1995-2005 Jean-loup Gailly and Mark Adler
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-
-  Jean-loup Gailly        Mark Adler
-  jloup at gzip.org          madler at alumni.caltech.edu
-
-
-  The data format used by the zlib library is described by RFCs (Request for
-  Comments) 1950 to 1952 in the files http://www.ietf.org/rfc/rfc1950.txt
-  (zlib format), rfc1951.txt (deflate format) and rfc1952.txt (gzip format).
-*/
-
-#ifndef ZLIB_H
-#define ZLIB_H
-
-#include "zconf.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define ZLIB_VERSION "1.2.3"
-#define ZLIB_VERNUM 0x1230
-
-/*
-     The 'zlib' compression library provides in-memory compression and
-  decompression functions, including integrity checks of the uncompressed
-  data.  This version of the library supports only one compression method
-  (deflation) but other algorithms will be added later and will have the same
-  stream interface.
-
-     Compression can be done in a single step if the buffers are large
-  enough (for example if an input file is mmap'ed), or can be done by
-  repeated calls of the compression function.  In the latter case, the
-  application must provide more input and/or consume the output
-  (providing more output space) before each call.
-
-     The compressed data format used by default by the in-memory functions is
-  the zlib format, which is a zlib wrapper documented in RFC 1950, wrapped
-  around a deflate stream, which is itself documented in RFC 1951.
-
-     The library also supports reading and writing files in gzip (.gz) format
-  with an interface similar to that of stdio using the functions that start
-  with "gz".  The gzip format is different from the zlib format.  gzip is a
-  gzip wrapper, documented in RFC 1952, wrapped around a deflate stream.
-
-     This library can optionally read and write gzip streams in memory as well.
-
-     The zlib format was designed to be compact and fast for use in memory
-  and on communications channels.  The gzip format was designed for single-
-  file compression on file systems, has a larger header than zlib to maintain
-  directory information, and uses a different, slower check method than zlib.
-
-     The library does not install any signal handler. The decoder checks
-  the consistency of the compressed data, so the library should never
-  crash even in case of corrupted input.
-*/
-
-typedef voidpf (*alloc_func) OF((voidpf opaque, uInt items, uInt size));
-typedef void   (*free_func)  OF((voidpf opaque, voidpf address));
-
-struct internal_state;
-
-typedef struct z_stream_s {
-    Bytef    *next_in;  /* next input byte */
-    uInt     avail_in;  /* number of bytes available at next_in */
-    uLong    total_in;  /* total nb of input bytes read so far */
-
-    Bytef    *next_out; /* next output byte should be put there */
-    uInt     avail_out; /* remaining free space at next_out */
-    uLong    total_out; /* total nb of bytes output so far */
-
-    char     *msg;      /* last error message, NULL if no error */
-    struct internal_state FAR *state; /* not visible by applications */
-
-    alloc_func zalloc;  /* used to allocate the internal state */
-    free_func  zfree;   /* used to free the internal state */
-    voidpf     opaque;  /* private data object passed to zalloc and zfree */
-
-    int     data_type;  /* best guess about the data type: binary or text */
-    uLong   adler;      /* adler32 value of the uncompressed data */
-    uLong   reserved;   /* reserved for future use */
-} z_stream;
-
-typedef z_stream FAR *z_streamp;
-
-/*
-     gzip header information passed to and from zlib routines.  See RFC 1952
-  for more details on the meanings of these fields.
-*/
-typedef struct gz_header_s {
-    int     text;       /* true if compressed data believed to be text */
-    uLong   time;       /* modification time */
-    int     xflags;     /* extra flags (not used when writing a gzip file) */
-    int     os;         /* operating system */
-    Bytef   *extra;     /* pointer to extra field or Z_NULL if none */
-    uInt    extra_len;  /* extra field length (valid if extra != Z_NULL) */
-    uInt    extra_max;  /* space at extra (only when reading header) */
-    Bytef   *name;      /* pointer to zero-terminated file name or Z_NULL */
-    uInt    name_max;   /* space at name (only when reading header) */
-    Bytef   *comment;   /* pointer to zero-terminated comment or Z_NULL */
-    uInt    comm_max;   /* space at comment (only when reading header) */
-    int     hcrc;       /* true if there was or will be a header crc */
-    int     done;       /* true when done reading gzip header (not used
-                           when writing a gzip file) */
-} gz_header;
-
-typedef gz_header FAR *gz_headerp;
-
-/*
-   The application must update next_in and avail_in when avail_in has
-   dropped to zero. It must update next_out and avail_out when avail_out
-   has dropped to zero. The application must initialize zalloc, zfree and
-   opaque before calling the init function. All other fields are set by the
-   compression library and must not be updated by the application.
-
-   The opaque value provided by the application will be passed as the first
-   parameter for calls of zalloc and zfree. This can be useful for custom
-   memory management. The compression library attaches no meaning to the
-   opaque value.
-
-   zalloc must return Z_NULL if there is not enough memory for the object.
-   If zlib is used in a multi-threaded application, zalloc and zfree must be
-   thread safe.
-
-   On 16-bit systems, the functions zalloc and zfree must be able to allocate
-   exactly 65536 bytes, but will not be required to allocate more than this
-   if the symbol MAXSEG_64K is defined (see zconf.h). WARNING: On MSDOS,
-   pointers returned by zalloc for objects of exactly 65536 bytes *must*
-   have their offset normalized to zero. The default allocation function
-   provided by this library ensures this (see zutil.c). To reduce memory
-   requirements and avoid any allocation of 64K objects, at the expense of
-   compression ratio, compile the library with -DMAX_WBITS=14 (see zconf.h).
-
-   The fields total_in and total_out can be used for statistics or
-   progress reports. After compression, total_in holds the total size of
-   the uncompressed data and may be saved for use in the decompressor
-   (particularly if the decompressor wants to decompress everything in
-   a single step).
-*/
-
-                        /* constants */
-
-#define Z_NO_FLUSH      0
-#define Z_PARTIAL_FLUSH 1 /* will be removed, use Z_SYNC_FLUSH instead */
-#define Z_SYNC_FLUSH    2
-#define Z_FULL_FLUSH    3
-#define Z_FINISH        4
-#define Z_BLOCK         5
-/* Allowed flush values; see deflate() and inflate() below for details */
-
-#define Z_OK            0
-#define Z_STREAM_END    1
-#define Z_NEED_DICT     2
-#define Z_ERRNO        (-1)
-#define Z_STREAM_ERROR (-2)
-#define Z_DATA_ERROR   (-3)
-#define Z_MEM_ERROR    (-4)
-#define Z_BUF_ERROR    (-5)
-#define Z_VERSION_ERROR (-6)
-/* Return codes for the compression/decompression functions. Negative
- * values are errors, positive values are used for special but normal events.
- */
-
-#define Z_NO_COMPRESSION         0
-#define Z_BEST_SPEED             1
-#define Z_BEST_COMPRESSION       9
-#define Z_DEFAULT_COMPRESSION  (-1)
-/* compression levels */
-
-#define Z_FILTERED            1
-#define Z_HUFFMAN_ONLY        2
-#define Z_RLE                 3
-#define Z_FIXED               4
-#define Z_DEFAULT_STRATEGY    0
-/* compression strategy; see deflateInit2() below for details */
-
-#define Z_BINARY   0
-#define Z_TEXT     1
-#define Z_ASCII    Z_TEXT   /* for compatibility with 1.2.2 and earlier */
-#define Z_UNKNOWN  2
-/* Possible values of the data_type field (though see inflate()) */
-
-#define Z_DEFLATED   8
-/* The deflate compression method (the only one supported in this version) */
-
-#define Z_NULL  0  /* for initializing zalloc, zfree, opaque */
-
-#define zlib_version zlibVersion()
-/* for compatibility with versions < 1.0.2 */
-
-                        /* basic functions */
-
-ZEXTERN const char * ZEXPORT zlibVersion OF((void));
-/* The application can compare zlibVersion and ZLIB_VERSION for consistency.
-   If the first character differs, the library code actually used is
-   not compatible with the zlib.h header file used by the application.
-   This check is automatically made by deflateInit and inflateInit.
- */
-
-/*
-ZEXTERN int ZEXPORT deflateInit OF((z_streamp strm, int level));
-
-     Initializes the internal stream state for compression. The fields
-   zalloc, zfree and opaque must be initialized before by the caller.
-   If zalloc and zfree are set to Z_NULL, deflateInit updates them to
-   use default allocation functions.
-
-     The compression level must be Z_DEFAULT_COMPRESSION, or between 0 and 9:
-   1 gives best speed, 9 gives best compression, 0 gives no compression at
-   all (the input data is simply copied a block at a time).
-   Z_DEFAULT_COMPRESSION requests a default compromise between speed and
-   compression (currently equivalent to level 6).
-
-     deflateInit returns Z_OK if success, Z_MEM_ERROR if there was not
-   enough memory, Z_STREAM_ERROR if level is not a valid compression level,
-   Z_VERSION_ERROR if the zlib library version (zlib_version) is incompatible
-   with the version assumed by the caller (ZLIB_VERSION).
-   msg is set to null if there is no error message.  deflateInit does not
-   perform any compression: this will be done by deflate().
-*/
-
-
-ZEXTERN int ZEXPORT deflate OF((z_streamp strm, int flush));
-/*
-    deflate compresses as much data as possible, and stops when the input
-  buffer becomes empty or the output buffer becomes full. It may introduce some
-  output latency (reading input without producing any output) except when
-  forced to flush.
-
-    The detailed semantics are as follows. deflate performs one or both of the
-  following actions:
-
-  - Compress more input starting at next_in and update next_in and avail_in
-    accordingly. If not all input can be processed (because there is not
-    enough room in the output buffer), next_in and avail_in are updated and
-    processing will resume at this point for the next call of deflate().
-
-  - Provide more output starting at next_out and update next_out and avail_out
-    accordingly. This action is forced if the parameter flush is non zero.
-    Forcing flush frequently degrades the compression ratio, so this parameter
-    should be set only when necessary (in interactive applications).
-    Some output may be provided even if flush is not set.
-
-  Before the call of deflate(), the application should ensure that at least
-  one of the actions is possible, by providing more input and/or consuming
-  more output, and updating avail_in or avail_out accordingly; avail_out
-  should never be zero before the call. The application can consume the
-  compressed output when it wants, for example when the output buffer is full
-  (avail_out == 0), or after each call of deflate(). If deflate returns Z_OK
-  and with zero avail_out, it must be called again after making room in the
-  output buffer because there might be more output pending.
-
-    Normally the parameter flush is set to Z_NO_FLUSH, which allows deflate to
-  decide how much data to accumualte before producing output, in order to
-  maximize compression.
-
-    If the parameter flush is set to Z_SYNC_FLUSH, all pending output is
-  flushed to the output buffer and the output is aligned on a byte boundary, so
-  that the decompressor can get all input data available so far. (In particular
-  avail_in is zero after the call if enough output space has been provided
-  before the call.)  Flushing may degrade compression for some compression
-  algorithms and so it should be used only when necessary.
-
-    If flush is set to Z_FULL_FLUSH, all output is flushed as with
-  Z_SYNC_FLUSH, and the compression state is reset so that decompression can
-  restart from this point if previous compressed data has been damaged or if
-  random access is desired. Using Z_FULL_FLUSH too often can seriously degrade
-  compression.
-
-    If deflate returns with avail_out == 0, this function must be called again
-  with the same value of the flush parameter and more output space (updated
-  avail_out), until the flush is complete (deflate returns with non-zero
-  avail_out). In the case of a Z_FULL_FLUSH or Z_SYNC_FLUSH, make sure that
-  avail_out is greater than six to avoid repeated flush markers due to
-  avail_out == 0 on return.
-
-    If the parameter flush is set to Z_FINISH, pending input is processed,
-  pending output is flushed and deflate returns with Z_STREAM_END if there
-  was enough output space; if deflate returns with Z_OK, this function must be
-  called again with Z_FINISH and more output space (updated avail_out) but no
-  more input data, until it returns with Z_STREAM_END or an error. After
-  deflate has returned Z_STREAM_END, the only possible operations on the
-  stream are deflateReset or deflateEnd.
-
-    Z_FINISH can be used immediately after deflateInit if all the compression
-  is to be done in a single step. In this case, avail_out must be at least
-  the value returned by deflateBound (see below). If deflate does not return
-  Z_STREAM_END, then it must be called again as described above.
-
-    deflate() sets strm->adler to the adler32 checksum of all input read
-  so far (that is, total_in bytes).
-
-    deflate() may update strm->data_type if it can make a good guess about
-  the input data type (Z_BINARY or Z_TEXT). In doubt, the data is considered
-  binary. This field is only for information purposes and does not affect
-  the compression algorithm in any manner.
-
-    deflate() returns Z_OK if some progress has been made (more input
-  processed or more output produced), Z_STREAM_END if all input has been
-  consumed and all output has been produced (only when flush is set to
-  Z_FINISH), Z_STREAM_ERROR if the stream state was inconsistent (for example
-  if next_in or next_out was NULL), Z_BUF_ERROR if no progress is possible
-  (for example avail_in or avail_out was zero). Note that Z_BUF_ERROR is not
-  fatal, and deflate() can be called again with more input and more output
-  space to continue compressing.
-*/
-
-
-ZEXTERN int ZEXPORT deflateEnd OF((z_streamp strm));
-/*
-     All dynamically allocated data structures for this stream are freed.
-   This function discards any unprocessed input and does not flush any
-   pending output.
-
-     deflateEnd returns Z_OK if success, Z_STREAM_ERROR if the
-   stream state was inconsistent, Z_DATA_ERROR if the stream was freed
-   prematurely (some input or output was discarded). In the error case,
-   msg may be set but then points to a static string (which must not be
-   deallocated).
-*/
-
-
-/*
-ZEXTERN int ZEXPORT inflateInit OF((z_streamp strm));
-
-     Initializes the internal stream state for decompression. The fields
-   next_in, avail_in, zalloc, zfree and opaque must be initialized before by
-   the caller. If next_in is not Z_NULL and avail_in is large enough (the exact
-   value depends on the compression method), inflateInit determines the
-   compression method from the zlib header and allocates all data structures
-   accordingly; otherwise the allocation will be deferred to the first call of
-   inflate.  If zalloc and zfree are set to Z_NULL, inflateInit updates them to
-   use default allocation functions.
-
-     inflateInit returns Z_OK if success, Z_MEM_ERROR if there was not enough
-   memory, Z_VERSION_ERROR if the zlib library version is incompatible with the
-   version assumed by the caller.  msg is set to null if there is no error
-   message. inflateInit does not perform any decompression apart from reading
-   the zlib header if present: this will be done by inflate().  (So next_in and
-   avail_in may be modified, but next_out and avail_out are unchanged.)
-*/
-
-
-ZEXTERN int ZEXPORT inflate OF((z_streamp strm, int flush));
-/*
-    inflate decompresses as much data as possible, and stops when the input
-  buffer becomes empty or the output buffer becomes full. It may introduce
-  some output latency (reading input without producing any output) except when
-  forced to flush.
-
-  The detailed semantics are as follows. inflate performs one or both of the
-  following actions:
-
-  - Decompress more input starting at next_in and update next_in and avail_in
-    accordingly. If not all input can be processed (because there is not
-    enough room in the output buffer), next_in is updated and processing
-    will resume at this point for the next call of inflate().
-
-  - Provide more output starting at next_out and update next_out and avail_out
-    accordingly.  inflate() provides as much output as possible, until there
-    is no more input data or no more space in the output buffer (see below
-    about the flush parameter).
-
-  Before the call of inflate(), the application should ensure that at least
-  one of the actions is possible, by providing more input and/or consuming
-  more output, and updating the next_* and avail_* values accordingly.
-  The application can consume the uncompressed output when it wants, for
-  example when the output buffer is full (avail_out == 0), or after each
-  call of inflate(). If inflate returns Z_OK and with zero avail_out, it
-  must be called again after making room in the output buffer because there
-  might be more output pending.
-
-    The flush parameter of inflate() can be Z_NO_FLUSH, Z_SYNC_FLUSH,
-  Z_FINISH, or Z_BLOCK. Z_SYNC_FLUSH requests that inflate() flush as much
-  output as possible to the output buffer. Z_BLOCK requests that inflate() stop
-  if and when it gets to the next deflate block boundary. When decoding the
-  zlib or gzip format, this will cause inflate() to return immediately after
-  the header and before the first block. When doing a raw inflate, inflate()
-  will go ahead and process the first block, and will return when it gets to
-  the end of that block, or when it runs out of data.
-
-    The Z_BLOCK option assists in appending to or combining deflate streams.
-  Also to assist in this, on return inflate() will set strm->data_type to the
-  number of unused bits in the last byte taken from strm->next_in, plus 64
-  if inflate() is currently decoding the last block in the deflate stream,
-  plus 128 if inflate() returned immediately after decoding an end-of-block
-  code or decoding the complete header up to just before the first byte of the
-  deflate stream. The end-of-block will not be indicated until all of the
-  uncompressed data from that block has been written to strm->next_out.  The
-  number of unused bits may in general be greater than seven, except when
-  bit 7 of data_type is set, in which case the number of unused bits will be
-  less than eight.
-
-    inflate() should normally be called until it returns Z_STREAM_END or an
-  error. However if all decompression is to be performed in a single step
-  (a single call of inflate), the parameter flush should be set to
-  Z_FINISH. In this case all pending input is processed and all pending
-  output is flushed; avail_out must be large enough to hold all the
-  uncompressed data. (The size of the uncompressed data may have been saved
-  by the compressor for this purpose.) The next operation on this stream must
-  be inflateEnd to deallocate the decompression state. The use of Z_FINISH
-  is never required, but can be used to inform inflate that a faster approach
-  may be used for the single inflate() call.
-
-     In this implementation, inflate() always flushes as much output as
-  possible to the output buffer, and always uses the faster approach on the
-  first call. So the only effect of the flush parameter in this implementation
-  is on the return value of inflate(), as noted below, or when it returns early
-  because Z_BLOCK is used.
-
-     If a preset dictionary is needed after this call (see inflateSetDictionary
-  below), inflate sets strm->adler to the adler32 checksum of the dictionary
-  chosen by the compressor and returns Z_NEED_DICT; otherwise it sets
-  strm->adler to the adler32 checksum of all output produced so far (that is,
-  total_out bytes) and returns Z_OK, Z_STREAM_END or an error code as described
-  below. At the end of the stream, inflate() checks that its computed adler32
-  checksum is equal to that saved by the compressor and returns Z_STREAM_END
-  only if the checksum is correct.
-
-    inflate() will decompress and check either zlib-wrapped or gzip-wrapped
-  deflate data.  The header type is detected automatically.  Any information
-  contained in the gzip header is not retained, so applications that need that
-  information should instead use raw inflate, see inflateInit2() below, or
-  inflateBack() and perform their own processing of the gzip header and
-  trailer.
-
-    inflate() returns Z_OK if some progress has been made (more input processed
-  or more output produced), Z_STREAM_END if the end of the compressed data has
-  been reached and all uncompressed output has been produced, Z_NEED_DICT if a
-  preset dictionary is needed at this point, Z_DATA_ERROR if the input data was
-  corrupted (input stream not conforming to the zlib format or incorrect check
-  value), Z_STREAM_ERROR if the stream structure was inconsistent (for example
-  if next_in or next_out was NULL), Z_MEM_ERROR if there was not enough memory,
-  Z_BUF_ERROR if no progress is possible or if there was not enough room in the
-  output buffer when Z_FINISH is used. Note that Z_BUF_ERROR is not fatal, and
-  inflate() can be called again with more input and more output space to
-  continue decompressing. If Z_DATA_ERROR is returned, the application may then
-  call inflateSync() to look for a good compression block if a partial recovery
-  of the data is desired.
-*/
-
-
-ZEXTERN int ZEXPORT inflateEnd OF((z_streamp strm));
-/*
-     All dynamically allocated data structures for this stream are freed.
-   This function discards any unprocessed input and does not flush any
-   pending output.
-
-     inflateEnd returns Z_OK if success, Z_STREAM_ERROR if the stream state
-   was inconsistent. In the error case, msg may be set but then points to a
-   static string (which must not be deallocated).
-*/
-
-                        /* Advanced functions */
-
-/*
-    The following functions are needed only in some special applications.
-*/
-
-/*
-ZEXTERN int ZEXPORT deflateInit2 OF((z_streamp strm,
-                                     int  level,
-                                     int  method,
-                                     int  windowBits,
-                                     int  memLevel,
-                                     int  strategy));
-
-     This is another version of deflateInit with more compression options. The
-   fields next_in, zalloc, zfree and opaque must be initialized before by
-   the caller.
-
-     The method parameter is the compression method. It must be Z_DEFLATED in
-   this version of the library.
-
-     The windowBits parameter is the base two logarithm of the window size
-   (the size of the history buffer). It should be in the range 8..15 for this
-   version of the library. Larger values of this parameter result in better
-   compression at the expense of memory usage. The default value is 15 if
-   deflateInit is used instead.
-
-     windowBits can also be -8..-15 for raw deflate. In this case, -windowBits
-   determines the window size. deflate() will then generate raw deflate data
-   with no zlib header or trailer, and will not compute an adler32 check value.
-
-     windowBits can also be greater than 15 for optional gzip encoding. Add
-   16 to windowBits to write a simple gzip header and trailer around the
-   compressed data instead of a zlib wrapper. The gzip header will have no
-   file name, no extra data, no comment, no modification time (set to zero),
-   no header crc, and the operating system will be set to 255 (unknown).  If a
-   gzip stream is being written, strm->adler is a crc32 instead of an adler32.
-
-     The memLevel parameter specifies how much memory should be allocated
-   for the internal compression state. memLevel=1 uses minimum memory but
-   is slow and reduces compression ratio; memLevel=9 uses maximum memory
-   for optimal speed. The default value is 8. See zconf.h for total memory
-   usage as a function of windowBits and memLevel.
-
-     The strategy parameter is used to tune the compression algorithm. Use the
-   value Z_DEFAULT_STRATEGY for normal data, Z_FILTERED for data produced by a
-   filter (or predictor), Z_HUFFMAN_ONLY to force Huffman encoding only (no
-   string match), or Z_RLE to limit match distances to one (run-length
-   encoding). Filtered data consists mostly of small values with a somewhat
-   random distribution. In this case, the compression algorithm is tuned to
-   compress them better. The effect of Z_FILTERED is to force more Huffman
-   coding and less string matching; it is somewhat intermediate between
-   Z_DEFAULT and Z_HUFFMAN_ONLY. Z_RLE is designed to be almost as fast as
-   Z_HUFFMAN_ONLY, but give better compression for PNG image data. The strategy
-   parameter only affects the compression ratio but not the correctness of the
-   compressed output even if it is not set appropriately.  Z_FIXED prevents the
-   use of dynamic Huffman codes, allowing for a simpler decoder for special
-   applications.
-
-      deflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough
-   memory, Z_STREAM_ERROR if a parameter is invalid (such as an invalid
-   method). msg is set to null if there is no error message.  deflateInit2 does
-   not perform any compression: this will be done by deflate().
-*/
-
-ZEXTERN int ZEXPORT deflateSetDictionary OF((z_streamp strm,
-                                             const Bytef *dictionary,
-                                             uInt  dictLength));
-/*
-     Initializes the compression dictionary from the given byte sequence
-   without producing any compressed output. This function must be called
-   immediately after deflateInit, deflateInit2 or deflateReset, before any
-   call of deflate. The compressor and decompressor must use exactly the same
-   dictionary (see inflateSetDictionary).
-
-     The dictionary should consist of strings (byte sequences) that are likely
-   to be encountered later in the data to be compressed, with the most commonly
-   used strings preferably put towards the end of the dictionary. Using a
-   dictionary is most useful when the data to be compressed is short and can be
-   predicted with good accuracy; the data can then be compressed better than
-   with the default empty dictionary.
-
-     Depending on the size of the compression data structures selected by
-   deflateInit or deflateInit2, a part of the dictionary may in effect be
-   discarded, for example if the dictionary is larger than the window size in
-   deflate or deflate2. Thus the strings most likely to be useful should be
-   put at the end of the dictionary, not at the front. In addition, the
-   current implementation of deflate will use at most the window size minus
-   262 bytes of the provided dictionary.
-
-     Upon return of this function, strm->adler is set to the adler32 value
-   of the dictionary; the decompressor may later use this value to determine
-   which dictionary has been used by the compressor. (The adler32 value
-   applies to the whole dictionary even if only a subset of the dictionary is
-   actually used by the compressor.) If a raw deflate was requested, then the
-   adler32 value is not computed and strm->adler is not set.
-
-     deflateSetDictionary returns Z_OK if success, or Z_STREAM_ERROR if a
-   parameter is invalid (such as NULL dictionary) or the stream state is
-   inconsistent (for example if deflate has already been called for this stream
-   or if the compression method is bsort). deflateSetDictionary does not
-   perform any compression: this will be done by deflate().
-*/
-
-ZEXTERN int ZEXPORT deflateCopy OF((z_streamp dest,
-                                    z_streamp source));
-/*
-     Sets the destination stream as a complete copy of the source stream.
-
-     This function can be useful when several compression strategies will be
-   tried, for example when there are several ways of pre-processing the input
-   data with a filter. The streams that will be discarded should then be freed
-   by calling deflateEnd.  Note that deflateCopy duplicates the internal
-   compression state which can be quite large, so this strategy is slow and
-   can consume lots of memory.
-
-     deflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not
-   enough memory, Z_STREAM_ERROR if the source stream state was inconsistent
-   (such as zalloc being NULL). msg is left unchanged in both source and
-   destination.
-*/
-
-ZEXTERN int ZEXPORT deflateReset OF((z_streamp strm));
-/*
-     This function is equivalent to deflateEnd followed by deflateInit,
-   but does not free and reallocate all the internal compression state.
-   The stream will keep the same compression level and any other attributes
-   that may have been set by deflateInit2.
-
-      deflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source
-   stream state was inconsistent (such as zalloc or state being NULL).
-*/
-
-ZEXTERN int ZEXPORT deflateParams OF((z_streamp strm,
-                                      int level,
-                                      int strategy));
-/*
-     Dynamically update the compression level and compression strategy.  The
-   interpretation of level and strategy is as in deflateInit2.  This can be
-   used to switch between compression and straight copy of the input data, or
-   to switch to a different kind of input data requiring a different
-   strategy. If the compression level is changed, the input available so far
-   is compressed with the old level (and may be flushed); the new level will
-   take effect only at the next call of deflate().
-
-     Before the call of deflateParams, the stream state must be set as for
-   a call of deflate(), since the currently available input may have to
-   be compressed and flushed. In particular, strm->avail_out must be non-zero.
-
-     deflateParams returns Z_OK if success, Z_STREAM_ERROR if the source
-   stream state was inconsistent or if a parameter was invalid, Z_BUF_ERROR
-   if strm->avail_out was zero.
-*/
-
-ZEXTERN int ZEXPORT deflateTune OF((z_streamp strm,
-                                    int good_length,
-                                    int max_lazy,
-                                    int nice_length,
-                                    int max_chain));
-/*
-     Fine tune deflate's internal compression parameters.  This should only be
-   used by someone who understands the algorithm used by zlib's deflate for
-   searching for the best matching string, and even then only by the most
-   fanatic optimizer trying to squeeze out the last compressed bit for their
-   specific input data.  Read the deflate.c source code for the meaning of the
-   max_lazy, good_length, nice_length, and max_chain parameters.
-
-     deflateTune() can be called after deflateInit() or deflateInit2(), and
-   returns Z_OK on success, or Z_STREAM_ERROR for an invalid deflate stream.
- */
-
-ZEXTERN uLong ZEXPORT deflateBound OF((z_streamp strm,
-                                       uLong sourceLen));
-/*
-     deflateBound() returns an upper bound on the compressed size after
-   deflation of sourceLen bytes.  It must be called after deflateInit()
-   or deflateInit2().  This would be used to allocate an output buffer
-   for deflation in a single pass, and so would be called before deflate().
-*/
-
-ZEXTERN int ZEXPORT deflatePrime OF((z_streamp strm,
-                                     int bits,
-                                     int value));
-/*
-     deflatePrime() inserts bits in the deflate output stream.  The intent
-  is that this function is used to start off the deflate output with the
-  bits leftover from a previous deflate stream when appending to it.  As such,
-  this function can only be used for raw deflate, and must be used before the
-  first deflate() call after a deflateInit2() or deflateReset().  bits must be
-  less than or equal to 16, and that many of the least significant bits of
-  value will be inserted in the output.
-
-      deflatePrime returns Z_OK if success, or Z_STREAM_ERROR if the source
-   stream state was inconsistent.
-*/
-
-ZEXTERN int ZEXPORT deflateSetHeader OF((z_streamp strm,
-                                         gz_headerp head));
-/*
-      deflateSetHeader() provides gzip header information for when a gzip
-   stream is requested by deflateInit2().  deflateSetHeader() may be called
-   after deflateInit2() or deflateReset() and before the first call of
-   deflate().  The text, time, os, extra field, name, and comment information
-   in the provided gz_header structure are written to the gzip header (xflag is
-   ignored -- the extra flags are set according to the compression level).  The
-   caller must assure that, if not Z_NULL, name and comment are terminated with
-   a zero byte, and that if extra is not Z_NULL, that extra_len bytes are
-   available there.  If hcrc is true, a gzip header crc is included.  Note that
-   the current versions of the command-line version of gzip (up through version
-   1.3.x) do not support header crc's, and will report that it is a "multi-part
-   gzip file" and give up.
-
-      If deflateSetHeader is not used, the default gzip header has text false,
-   the time set to zero, and os set to 255, with no extra, name, or comment
-   fields.  The gzip header is returned to the default state by deflateReset().
-
-      deflateSetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source
-   stream state was inconsistent.
-*/
-
-/*
-ZEXTERN int ZEXPORT inflateInit2 OF((z_streamp strm,
-                                     int  windowBits));
-
-     This is another version of inflateInit with an extra parameter. The
-   fields next_in, avail_in, zalloc, zfree and opaque must be initialized
-   before by the caller.
-
-     The windowBits parameter is the base two logarithm of the maximum window
-   size (the size of the history buffer).  It should be in the range 8..15 for
-   this version of the library. The default value is 15 if inflateInit is used
-   instead. windowBits must be greater than or equal to the windowBits value
-   provided to deflateInit2() while compressing, or it must be equal to 15 if
-   deflateInit2() was not used. If a compressed stream with a larger window
-   size is given as input, inflate() will return with the error code
-   Z_DATA_ERROR instead of trying to allocate a larger window.
-
-     windowBits can also be -8..-15 for raw inflate. In this case, -windowBits
-   determines the window size. inflate() will then process raw deflate data,
-   not looking for a zlib or gzip header, not generating a check value, and not
-   looking for any check values for comparison at the end of the stream. This
-   is for use with other formats that use the deflate compressed data format
-   such as zip.  Those formats provide their own check values. If a custom
-   format is developed using the raw deflate format for compressed data, it is
-   recommended that a check value such as an adler32 or a crc32 be applied to
-   the uncompressed data as is done in the zlib, gzip, and zip formats.  For
-   most applications, the zlib format should be used as is. Note that comments
-   above on the use in deflateInit2() applies to the magnitude of windowBits.
-
-     windowBits can also be greater than 15 for optional gzip decoding. Add
-   32 to windowBits to enable zlib and gzip decoding with automatic header
-   detection, or add 16 to decode only the gzip format (the zlib format will
-   return a Z_DATA_ERROR).  If a gzip stream is being decoded, strm->adler is
-   a crc32 instead of an adler32.
-
-     inflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough
-   memory, Z_STREAM_ERROR if a parameter is invalid (such as a null strm). msg
-   is set to null if there is no error message.  inflateInit2 does not perform
-   any decompression apart from reading the zlib header if present: this will
-   be done by inflate(). (So next_in and avail_in may be modified, but next_out
-   and avail_out are unchanged.)
-*/
-
-ZEXTERN int ZEXPORT inflateSetDictionary OF((z_streamp strm,
-                                             const Bytef *dictionary,
-                                             uInt  dictLength));
-/*
-     Initializes the decompression dictionary from the given uncompressed byte
-   sequence. This function must be called immediately after a call of inflate,
-   if that call returned Z_NEED_DICT. The dictionary chosen by the compressor
-   can be determined from the adler32 value returned by that call of inflate.
-   The compressor and decompressor must use exactly the same dictionary (see
-   deflateSetDictionary).  For raw inflate, this function can be called
-   immediately after inflateInit2() or inflateReset() and before any call of
-   inflate() to set the dictionary.  The application must insure that the
-   dictionary that was used for compression is provided.
-
-     inflateSetDictionary returns Z_OK if success, Z_STREAM_ERROR if a
-   parameter is invalid (such as NULL dictionary) or the stream state is
-   inconsistent, Z_DATA_ERROR if the given dictionary doesn't match the
-   expected one (incorrect adler32 value). inflateSetDictionary does not
-   perform any decompression: this will be done by subsequent calls of
-   inflate().
-*/
-
-ZEXTERN int ZEXPORT inflateSync OF((z_streamp strm));
-/*
-    Skips invalid compressed data until a full flush point (see above the
-  description of deflate with Z_FULL_FLUSH) can be found, or until all
-  available input is skipped. No output is provided.
-
-    inflateSync returns Z_OK if a full flush point has been found, Z_BUF_ERROR
-  if no more input was provided, Z_DATA_ERROR if no flush point has been found,
-  or Z_STREAM_ERROR if the stream structure was inconsistent. In the success
-  case, the application may save the current current value of total_in which
-  indicates where valid compressed data was found. In the error case, the
-  application may repeatedly call inflateSync, providing more input each time,
-  until success or end of the input data.
-*/
-
-ZEXTERN int ZEXPORT inflateCopy OF((z_streamp dest,
-                                    z_streamp source));
-/*
-     Sets the destination stream as a complete copy of the source stream.
-
-     This function can be useful when randomly accessing a large stream.  The
-   first pass through the stream can periodically record the inflate state,
-   allowing restarting inflate at those points when randomly accessing the
-   stream.
-
-     inflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not
-   enough memory, Z_STREAM_ERROR if the source stream state was inconsistent
-   (such as zalloc being NULL). msg is left unchanged in both source and
-   destination.
-*/
-
-ZEXTERN int ZEXPORT inflateReset OF((z_streamp strm));
-/*
-     This function is equivalent to inflateEnd followed by inflateInit,
-   but does not free and reallocate all the internal decompression state.
-   The stream will keep attributes that may have been set by inflateInit2.
-
-      inflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source
-   stream state was inconsistent (such as zalloc or state being NULL).
-*/
-
-ZEXTERN int ZEXPORT inflatePrime OF((z_streamp strm,
-                                     int bits,
-                                     int value));
-/*
-     This function inserts bits in the inflate input stream.  The intent is
-  that this function is used to start inflating at a bit position in the
-  middle of a byte.  The provided bits will be used before any bytes are used
-  from next_in.  This function should only be used with raw inflate, and
-  should be used before the first inflate() call after inflateInit2() or
-  inflateReset().  bits must be less than or equal to 16, and that many of the
-  least significant bits of value will be inserted in the input.
-
-      inflatePrime returns Z_OK if success, or Z_STREAM_ERROR if the source
-   stream state was inconsistent.
-*/
-
-ZEXTERN int ZEXPORT inflateGetHeader OF((z_streamp strm,
-                                         gz_headerp head));
-/*
-      inflateGetHeader() requests that gzip header information be stored in the
-   provided gz_header structure.  inflateGetHeader() may be called after
-   inflateInit2() or inflateReset(), and before the first call of inflate().
-   As inflate() processes the gzip stream, head->done is zero until the header
-   is completed, at which time head->done is set to one.  If a zlib stream is
-   being decoded, then head->done is set to -1 to indicate that there will be
-   no gzip header information forthcoming.  Note that Z_BLOCK can be used to
-   force inflate() to return immediately after header processing is complete
-   and before any actual data is decompressed.
-
-      The text, time, xflags, and os fields are filled in with the gzip header
-   contents.  hcrc is set to true if there is a header CRC.  (The header CRC
-   was valid if done is set to one.)  If extra is not Z_NULL, then extra_max
-   contains the maximum number of bytes to write to extra.  Once done is true,
-   extra_len contains the actual extra field length, and extra contains the
-   extra field, or that field truncated if extra_max is less than extra_len.
-   If name is not Z_NULL, then up to name_max characters are written there,
-   terminated with a zero unless the length is greater than name_max.  If
-   comment is not Z_NULL, then up to comm_max characters are written there,
-   terminated with a zero unless the length is greater than comm_max.  When
-   any of extra, name, or comment are not Z_NULL and the respective field is
-   not present in the header, then that field is set to Z_NULL to signal its
-   absence.  This allows the use of deflateSetHeader() with the returned
-   structure to duplicate the header.  However if those fields are set to
-   allocated memory, then the application will need to save those pointers
-   elsewhere so that they can be eventually freed.
-
-      If inflateGetHeader is not used, then the header information is simply
-   discarded.  The header is always checked for validity, including the header
-   CRC if present.  inflateReset() will reset the process to discard the header
-   information.  The application would need to call inflateGetHeader() again to
-   retrieve the header from the next gzip stream.
-
-      inflateGetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source
-   stream state was inconsistent.
-*/
-
-/*
-ZEXTERN int ZEXPORT inflateBackInit OF((z_streamp strm, int windowBits,
-                                        unsigned char FAR *window));
-
-     Initialize the internal stream state for decompression using inflateBack()
-   calls.  The fields zalloc, zfree and opaque in strm must be initialized
-   before the call.  If zalloc and zfree are Z_NULL, then the default library-
-   derived memory allocation routines are used.  windowBits is the base two
-   logarithm of the window size, in the range 8..15.  window is a caller
-   supplied buffer of that size.  Except for special applications where it is
-   assured that deflate was used with small window sizes, windowBits must be 15
-   and a 32K byte window must be supplied to be able to decompress general
-   deflate streams.
-
-     See inflateBack() for the usage of these routines.
-
-     inflateBackInit will return Z_OK on success, Z_STREAM_ERROR if any of
-   the paramaters are invalid, Z_MEM_ERROR if the internal state could not
-   be allocated, or Z_VERSION_ERROR if the version of the library does not
-   match the version of the header file.
-*/
-
-typedef unsigned (*in_func) OF((void FAR *, unsigned char FAR * FAR *));
-typedef int (*out_func) OF((void FAR *, unsigned char FAR *, unsigned));
-
-ZEXTERN int ZEXPORT inflateBack OF((z_streamp strm,
-                                    in_func in, void FAR *in_desc,
-                                    out_func out, void FAR *out_desc));
-/*
-     inflateBack() does a raw inflate with a single call using a call-back
-   interface for input and output.  This is more efficient than inflate() for
-   file i/o applications in that it avoids copying between the output and the
-   sliding window by simply making the window itself the output buffer.  This
-   function trusts the application to not change the output buffer passed by
-   the output function, at least until inflateBack() returns.
-
-     inflateBackInit() must be called first to allocate the internal state
-   and to initialize the state with the user-provided window buffer.
-   inflateBack() may then be used multiple times to inflate a complete, raw
-   deflate stream with each call.  inflateBackEnd() is then called to free
-   the allocated state.
-
-     A raw deflate stream is one with no zlib or gzip header or trailer.
-   This routine would normally be used in a utility that reads zip or gzip
-   files and writes out uncompressed files.  The utility would decode the
-   header and process the trailer on its own, hence this routine expects
-   only the raw deflate stream to decompress.  This is different from the
-   normal behavior of inflate(), which expects either a zlib or gzip header and
-   trailer around the deflate stream.
-
-     inflateBack() uses two subroutines supplied by the caller that are then
-   called by inflateBack() for input and output.  inflateBack() calls those
-   routines until it reads a complete deflate stream and writes out all of the
-   uncompressed data, or until it encounters an error.  The function's
-   parameters and return types are defined above in the in_func and out_func
-   typedefs.  inflateBack() will call in(in_desc, &buf) which should return the
-   number of bytes of provided input, and a pointer to that input in buf.  If
-   there is no input available, in() must return zero--buf is ignored in that
-   case--and inflateBack() will return a buffer error.  inflateBack() will call
-   out(out_desc, buf, len) to write the uncompressed data buf[0..len-1].  out()
-   should return zero on success, or non-zero on failure.  If out() returns
-   non-zero, inflateBack() will return with an error.  Neither in() nor out()
-   are permitted to change the contents of the window provided to
-   inflateBackInit(), which is also the buffer that out() uses to write from.
-   The length written by out() will be at most the window size.  Any non-zero
-   amount of input may be provided by in().
-
-     For convenience, inflateBack() can be provided input on the first call by
-   setting strm->next_in and strm->avail_in.  If that input is exhausted, then
-   in() will be called.  Therefore strm->next_in must be initialized before
-   calling inflateBack().  If strm->next_in is Z_NULL, then in() will be called
-   immediately for input.  If strm->next_in is not Z_NULL, then strm->avail_in
-   must also be initialized, and then if strm->avail_in is not zero, input will
-   initially be taken from strm->next_in[0 .. strm->avail_in - 1].
-
-     The in_desc and out_desc parameters of inflateBack() is passed as the
-   first parameter of in() and out() respectively when they are called.  These
-   descriptors can be optionally used to pass any information that the caller-
-   supplied in() and out() functions need to do their job.
-
-     On return, inflateBack() will set strm->next_in and strm->avail_in to
-   pass back any unused input that was provided by the last in() call.  The
-   return values of inflateBack() can be Z_STREAM_END on success, Z_BUF_ERROR
-   if in() or out() returned an error, Z_DATA_ERROR if there was a format
-   error in the deflate stream (in which case strm->msg is set to indicate the
-   nature of the error), or Z_STREAM_ERROR if the stream was not properly
-   initialized.  In the case of Z_BUF_ERROR, an input or output error can be
-   distinguished using strm->next_in which will be Z_NULL only if in() returned
-   an error.  If strm->next is not Z_NULL, then the Z_BUF_ERROR was due to
-   out() returning non-zero.  (in() will always be called before out(), so
-   strm->next_in is assured to be defined if out() returns non-zero.)  Note
-   that inflateBack() cannot return Z_OK.
-*/
-
-ZEXTERN int ZEXPORT inflateBackEnd OF((z_streamp strm));
-/*
-     All memory allocated by inflateBackInit() is freed.
-
-     inflateBackEnd() returns Z_OK on success, or Z_STREAM_ERROR if the stream
-   state was inconsistent.
-*/
-
-ZEXTERN uLong ZEXPORT zlibCompileFlags OF((void));
-/* Return flags indicating compile-time options.
-
-    Type sizes, two bits each, 00 = 16 bits, 01 = 32, 10 = 64, 11 = other:
-     1.0: size of uInt
-     3.2: size of uLong
-     5.4: size of voidpf (pointer)
-     7.6: size of z_off_t
-
-    Compiler, assembler, and debug options:
-     8: DEBUG
-     9: ASMV or ASMINF -- use ASM code
-     10: ZLIB_WINAPI -- exported functions use the WINAPI calling convention
-     11: 0 (reserved)
-
-    One-time table building (smaller code, but not thread-safe if true):
-     12: BUILDFIXED -- build static block decoding tables when needed
-     13: DYNAMIC_CRC_TABLE -- build CRC calculation tables when needed
-     14,15: 0 (reserved)
-
-    Library content (indicates missing functionality):
-     16: NO_GZCOMPRESS -- gz* functions cannot compress (to avoid linking
-                          deflate code when not needed)
-     17: NO_GZIP -- deflate can't write gzip streams, and inflate can't detect
-                    and decode gzip streams (to avoid linking crc code)
-     18-19: 0 (reserved)
-
-    Operation variations (changes in library functionality):
-     20: PKZIP_BUG_WORKAROUND -- slightly more permissive inflate
-     21: FASTEST -- deflate algorithm with only one, lowest compression level
-     22,23: 0 (reserved)
-
-    The sprintf variant used by gzprintf (zero is best):
-     24: 0 = vs*, 1 = s* -- 1 means limited to 20 arguments after the format
-     25: 0 = *nprintf, 1 = *printf -- 1 means gzprintf() not secure!
-     26: 0 = returns value, 1 = void -- 1 means inferred string length returned
-
-    Remainder:
-     27-31: 0 (reserved)
- */
-
-
-                        /* utility functions */
-
-/*
-     The following utility functions are implemented on top of the
-   basic stream-oriented functions. To simplify the interface, some
-   default options are assumed (compression level and memory usage,
-   standard memory allocation functions). The source code of these
-   utility functions can easily be modified if you need special options.
-*/
-
-ZEXTERN int ZEXPORT compress OF((Bytef *dest,   uLongf *destLen,
-                                 const Bytef *source, uLong sourceLen));
-/*
-     Compresses the source buffer into the destination buffer.  sourceLen is
-   the byte length of the source buffer. Upon entry, destLen is the total
-   size of the destination buffer, which must be at least the value returned
-   by compressBound(sourceLen). Upon exit, destLen is the actual size of the
-   compressed buffer.
-     This function can be used to compress a whole file at once if the
-   input file is mmap'ed.
-     compress returns Z_OK if success, Z_MEM_ERROR if there was not
-   enough memory, Z_BUF_ERROR if there was not enough room in the output
-   buffer.
-*/
-
-ZEXTERN int ZEXPORT compress2 OF((Bytef *dest,   uLongf *destLen,
-                                  const Bytef *source, uLong sourceLen,
-                                  int level));
-/*
-     Compresses the source buffer into the destination buffer. The level
-   parameter has the same meaning as in deflateInit.  sourceLen is the byte
-   length of the source buffer. Upon entry, destLen is the total size of the
-   destination buffer, which must be at least the value returned by
-   compressBound(sourceLen). Upon exit, destLen is the actual size of the
-   compressed buffer.
-
-     compress2 returns Z_OK if success, Z_MEM_ERROR if there was not enough
-   memory, Z_BUF_ERROR if there was not enough room in the output buffer,
-   Z_STREAM_ERROR if the level parameter is invalid.
-*/
-
-ZEXTERN uLong ZEXPORT compressBound OF((uLong sourceLen));
-/*
-     compressBound() returns an upper bound on the compressed size after
-   compress() or compress2() on sourceLen bytes.  It would be used before
-   a compress() or compress2() call to allocate the destination buffer.
-*/
-
-ZEXTERN int ZEXPORT uncompress OF((Bytef *dest,   uLongf *destLen,
-                                   const Bytef *source, uLong sourceLen));
-/*
-     Decompresses the source buffer into the destination buffer.  sourceLen is
-   the byte length of the source buffer. Upon entry, destLen is the total
-   size of the destination buffer, which must be large enough to hold the
-   entire uncompressed data. (The size of the uncompressed data must have
-   been saved previously by the compressor and transmitted to the decompressor
-   by some mechanism outside the scope of this compression library.)
-   Upon exit, destLen is the actual size of the compressed buffer.
-     This function can be used to decompress a whole file at once if the
-   input file is mmap'ed.
-
-     uncompress returns Z_OK if success, Z_MEM_ERROR if there was not
-   enough memory, Z_BUF_ERROR if there was not enough room in the output
-   buffer, or Z_DATA_ERROR if the input data was corrupted or incomplete.
-*/
-
-
-typedef voidp gzFile;
-
-ZEXTERN gzFile ZEXPORT gzopen  OF((const char *path, const char *mode));
-/*
-     Opens a gzip (.gz) file for reading or writing. The mode parameter
-   is as in fopen ("rb" or "wb") but can also include a compression level
-   ("wb9") or a strategy: 'f' for filtered data as in "wb6f", 'h' for
-   Huffman only compression as in "wb1h", or 'R' for run-length encoding
-   as in "wb1R". (See the description of deflateInit2 for more information
-   about the strategy parameter.)
-
-     gzopen can be used to read a file which is not in gzip format; in this
-   case gzread will directly read from the file without decompression.
-
-     gzopen returns NULL if the file could not be opened or if there was
-   insufficient memory to allocate the (de)compression state; errno
-   can be checked to distinguish the two cases (if errno is zero, the
-   zlib error is Z_MEM_ERROR).  */
-
-ZEXTERN gzFile ZEXPORT gzdopen  OF((int fd, const char *mode));
-/*
-     gzdopen() associates a gzFile with the file descriptor fd.  File
-   descriptors are obtained from calls like open, dup, creat, pipe or
-   fileno (in the file has been previously opened with fopen).
-   The mode parameter is as in gzopen.
-     The next call of gzclose on the returned gzFile will also close the
-   file descriptor fd, just like fclose(fdopen(fd), mode) closes the file
-   descriptor fd. If you want to keep fd open, use gzdopen(dup(fd), mode).
-     gzdopen returns NULL if there was insufficient memory to allocate
-   the (de)compression state.
-*/
-
-ZEXTERN int ZEXPORT gzsetparams OF((gzFile file, int level, int strategy));
-/*
-     Dynamically update the compression level or strategy. See the description
-   of deflateInit2 for the meaning of these parameters.
-     gzsetparams returns Z_OK if success, or Z_STREAM_ERROR if the file was not
-   opened for writing.
-*/
-
-ZEXTERN int ZEXPORT    gzread  OF((gzFile file, voidp buf, unsigned len));
-/*
-     Reads the given number of uncompressed bytes from the compressed file.
-   If the input file was not in gzip format, gzread copies the given number
-   of bytes into the buffer.
-     gzread returns the number of uncompressed bytes actually read (0 for
-   end of file, -1 for error). */
-
-ZEXTERN int ZEXPORT    gzwrite OF((gzFile file,
-                                   voidpc buf, unsigned len));
-/*
-     Writes the given number of uncompressed bytes into the compressed file.
-   gzwrite returns the number of uncompressed bytes actually written
-   (0 in case of error).
-*/
-
-ZEXTERN int ZEXPORTVA   gzprintf OF((gzFile file, const char *format, ...));
-/*
-     Converts, formats, and writes the args to the compressed file under
-   control of the format string, as in fprintf. gzprintf returns the number of
-   uncompressed bytes actually written (0 in case of error).  The number of
-   uncompressed bytes written is limited to 4095. The caller should assure that
-   this limit is not exceeded. If it is exceeded, then gzprintf() will return
-   return an error (0) with nothing written. In this case, there may also be a
-   buffer overflow with unpredictable consequences, which is possible only if
-   zlib was compiled with the insecure functions sprintf() or vsprintf()
-   because the secure snprintf() or vsnprintf() functions were not available.
-*/
-
-ZEXTERN int ZEXPORT gzputs OF((gzFile file, const char *s));
-/*
-      Writes the given null-terminated string to the compressed file, excluding
-   the terminating null character.
-      gzputs returns the number of characters written, or -1 in case of error.
-*/
-
-ZEXTERN char * ZEXPORT gzgets OF((gzFile file, char *buf, int len));
-/*
-      Reads bytes from the compressed file until len-1 characters are read, or
-   a newline character is read and transferred to buf, or an end-of-file
-   condition is encountered.  The string is then terminated with a null
-   character.
-      gzgets returns buf, or Z_NULL in case of error.
-*/
-
-ZEXTERN int ZEXPORT    gzputc OF((gzFile file, int c));
-/*
-      Writes c, converted to an unsigned char, into the compressed file.
-   gzputc returns the value that was written, or -1 in case of error.
-*/
-
-ZEXTERN int ZEXPORT    gzgetc OF((gzFile file));
-/*
-      Reads one byte from the compressed file. gzgetc returns this byte
-   or -1 in case of end of file or error.
-*/
-
-ZEXTERN int ZEXPORT    gzungetc OF((int c, gzFile file));
-/*
-      Push one character back onto the stream to be read again later.
-   Only one character of push-back is allowed.  gzungetc() returns the
-   character pushed, or -1 on failure.  gzungetc() will fail if a
-   character has been pushed but not read yet, or if c is -1. The pushed
-   character will be discarded if the stream is repositioned with gzseek()
-   or gzrewind().
-*/
-
-ZEXTERN int ZEXPORT    gzflush OF((gzFile file, int flush));
-/*
-     Flushes all pending output into the compressed file. The parameter
-   flush is as in the deflate() function. The return value is the zlib
-   error number (see function gzerror below). gzflush returns Z_OK if
-   the flush parameter is Z_FINISH and all output could be flushed.
-     gzflush should be called only when strictly necessary because it can
-   degrade compression.
-*/
-
-ZEXTERN z_off_t ZEXPORT    gzseek OF((gzFile file,
-                                      z_off_t offset, int whence));
-/*
-      Sets the starting position for the next gzread or gzwrite on the
-   given compressed file. The offset represents a number of bytes in the
-   uncompressed data stream. The whence parameter is defined as in lseek(2);
-   the value SEEK_END is not supported.
-     If the file is opened for reading, this function is emulated but can be
-   extremely slow. If the file is opened for writing, only forward seeks are
-   supported; gzseek then compresses a sequence of zeroes up to the new
-   starting position.
-
-      gzseek returns the resulting offset location as measured in bytes from
-   the beginning of the uncompressed stream, or -1 in case of error, in
-   particular if the file is opened for writing and the new starting position
-   would be before the current position.
-*/
-
-ZEXTERN int ZEXPORT    gzrewind OF((gzFile file));
-/*
-     Rewinds the given file. This function is supported only for reading.
-
-   gzrewind(file) is equivalent to (int)gzseek(file, 0L, SEEK_SET)
-*/
-
-ZEXTERN z_off_t ZEXPORT    gztell OF((gzFile file));
-/*
-     Returns the starting position for the next gzread or gzwrite on the
-   given compressed file. This position represents a number of bytes in the
-   uncompressed data stream.
-
-   gztell(file) is equivalent to gzseek(file, 0L, SEEK_CUR)
-*/
-
-ZEXTERN int ZEXPORT gzeof OF((gzFile file));
-/*
-     Returns 1 when EOF has previously been detected reading the given
-   input stream, otherwise zero.
-*/
-
-ZEXTERN int ZEXPORT gzdirect OF((gzFile file));
-/*
-     Returns 1 if file is being read directly without decompression, otherwise
-   zero.
-*/
-
-ZEXTERN int ZEXPORT    gzclose OF((gzFile file));
-/*
-     Flushes all pending output if necessary, closes the compressed file
-   and deallocates all the (de)compression state. The return value is the zlib
-   error number (see function gzerror below).
-*/
-
-ZEXTERN const char * ZEXPORT gzerror OF((gzFile file, int *errnum));
-/*
-     Returns the error message for the last error which occurred on the
-   given compressed file. errnum is set to zlib error number. If an
-   error occurred in the file system and not in the compression library,
-   errnum is set to Z_ERRNO and the application may consult errno
-   to get the exact error code.
-*/
-
-ZEXTERN void ZEXPORT gzclearerr OF((gzFile file));
-/*
-     Clears the error and end-of-file flags for file. This is analogous to the
-   clearerr() function in stdio. This is useful for continuing to read a gzip
-   file that is being written concurrently.
-*/
-
-                        /* checksum functions */
-
-/*
-     These functions are not related to compression but are exported
-   anyway because they might be useful in applications using the
-   compression library.
-*/
-
-ZEXTERN uLong ZEXPORT adler32 OF((uLong adler, const Bytef *buf, uInt len));
-/*
-     Update a running Adler-32 checksum with the bytes buf[0..len-1] and
-   return the updated checksum. If buf is NULL, this function returns
-   the required initial value for the checksum.
-   An Adler-32 checksum is almost as reliable as a CRC32 but can be computed
-   much faster. Usage example:
-
-     uLong adler = adler32(0L, Z_NULL, 0);
-
-     while (read_buffer(buffer, length) != EOF) {
-       adler = adler32(adler, buffer, length);
-     }
-     if (adler != original_adler) error();
-*/
-
-ZEXTERN uLong ZEXPORT adler32_combine OF((uLong adler1, uLong adler2,
-                                          z_off_t len2));
-/*
-     Combine two Adler-32 checksums into one.  For two sequences of bytes, seq1
-   and seq2 with lengths len1 and len2, Adler-32 checksums were calculated for
-   each, adler1 and adler2.  adler32_combine() returns the Adler-32 checksum of
-   seq1 and seq2 concatenated, requiring only adler1, adler2, and len2.
-*/
-
-ZEXTERN uLong ZEXPORT crc32   OF((uLong crc, const Bytef *buf, uInt len));
-/*
-     Update a running CRC-32 with the bytes buf[0..len-1] and return the
-   updated CRC-32. If buf is NULL, this function returns the required initial
-   value for the for the crc. Pre- and post-conditioning (one's complement) is
-   performed within this function so it shouldn't be done by the application.
-   Usage example:
-
-     uLong crc = crc32(0L, Z_NULL, 0);
-
-     while (read_buffer(buffer, length) != EOF) {
-       crc = crc32(crc, buffer, length);
-     }
-     if (crc != original_crc) error();
-*/
-
-ZEXTERN uLong ZEXPORT crc32_combine OF((uLong crc1, uLong crc2, z_off_t len2));
-
-/*
-     Combine two CRC-32 check values into one.  For two sequences of bytes,
-   seq1 and seq2 with lengths len1 and len2, CRC-32 check values were
-   calculated for each, crc1 and crc2.  crc32_combine() returns the CRC-32
-   check value of seq1 and seq2 concatenated, requiring only crc1, crc2, and
-   len2.
-*/
-
-
-                        /* various hacks, don't look :) */
-
-/* deflateInit and inflateInit are macros to allow checking the zlib version
- * and the compiler's view of z_stream:
- */
-ZEXTERN int ZEXPORT deflateInit_ OF((z_streamp strm, int level,
-                                     const char *version, int stream_size));
-ZEXTERN int ZEXPORT inflateInit_ OF((z_streamp strm,
-                                     const char *version, int stream_size));
-ZEXTERN int ZEXPORT deflateInit2_ OF((z_streamp strm, int  level, int  method,
-                                      int windowBits, int memLevel,
-                                      int strategy, const char *version,
-                                      int stream_size));
-ZEXTERN int ZEXPORT inflateInit2_ OF((z_streamp strm, int  windowBits,
-                                      const char *version, int stream_size));
-ZEXTERN int ZEXPORT inflateBackInit_ OF((z_streamp strm, int windowBits,
-                                         unsigned char FAR *window,
-                                         const char *version,
-                                         int stream_size));
-#define deflateInit(strm, level) \
-        deflateInit_((strm), (level),       ZLIB_VERSION, sizeof(z_stream))
-#define inflateInit(strm) \
-        inflateInit_((strm),                ZLIB_VERSION, sizeof(z_stream))
-#define deflateInit2(strm, level, method, windowBits, memLevel, strategy) \
-        deflateInit2_((strm),(level),(method),(windowBits),(memLevel),\
-                      (strategy),           ZLIB_VERSION, sizeof(z_stream))
-#define inflateInit2(strm, windowBits) \
-        inflateInit2_((strm), (windowBits), ZLIB_VERSION, sizeof(z_stream))
-#define inflateBackInit(strm, windowBits, window) \
-        inflateBackInit_((strm), (windowBits), (window), \
-        ZLIB_VERSION, sizeof(z_stream))
-
-
-#if !defined(ZUTIL_H) && !defined(NO_DUMMY_DECL)
-    struct internal_state {int dummy;}; /* hack for buggy compilers */
-#endif
-
-ZEXTERN const char   * ZEXPORT zError           OF((int));
-ZEXTERN int            ZEXPORT inflateSyncPoint OF((z_streamp z));
-ZEXTERN const uLongf * ZEXPORT get_crc_table    OF((void));
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* ZLIB_H */

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-grass/libterralib.git



More information about the Pkg-grass-devel mailing list